@kaelen-ai/cli 0.1.15 → 0.1.17

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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/config/loader.ts","../src/build/scanner.ts","../src/build/channels.ts","../src/build/parser.ts","../src/build/resolver.ts","../src/build/validator.ts","../src/build/endpoint-validator.ts","../src/build/manifest-validator.ts","../src/build/splitter.ts","../src/build/transport-helpers.ts","../src/build/bundler.ts","../src/build/evaluator.ts","../src/build/manifest.ts","../src/build/compiled-target.ts","../src/build/pipeline.ts","../src/build/staging.ts","../src/commands/build.ts","../src/deploy/zip.ts","../src/deploy/diff.ts","../src/deploy/plan.ts","../src/auth/store.ts","../src/auth/refresh-error.ts","../src/auth/transport.ts","../src/build/stable-json.ts","../src/runtime-signal-name.ts","../src/api/client.ts","../src/commands/deploy.ts","../src/auth/callback.ts","../src/auth/pkce.ts","../src/commands/login.ts","../src/commands/logout.ts","../src/commands/whoami.ts","../src/commands/init.ts","../src/commands/projects.ts","../src/commands/secrets.ts","../src/commands/principals.ts","../src/commands/quota.ts","../src/api/subscription.ts","../src/activity/presentation.ts","../src/commands/logs.ts","../src/commands/signals.ts","../src/index.ts"],"names":["join","signals","readFile","extname","isRecord","stringField","walk2","out","acorn2","SDK_PACKAGES","acorn3","walk3","propertyName","resolvePath","sdkAliasPlugin","mkdir","build","writeFile","parseModule","acorn4","collectBindingNames","collectRefs","walk4","analyzeTopLevel","computeReachableNames","buildImportStatement","applyEdits","blankRegion","resolve","rm","dirname","chalk","appResources","resourceTools","relative","stat","readdir","stableStringify","EVENT_NAME_REGEX","normalizeRuntimeSignalName","message","authHeaders","projects","principals","basename","URL","randomBytes","createInterface","index","secrets","level","seenIds","seenOrder","removeSigintHandler"],"mappings":"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","file":"index.js","sourcesContent":["import type { SourceLocation } from \"./types\";\n\nexport class CliError extends Error {\n readonly code: string;\n\n constructor(message: string, code: string) {\n super(message);\n this.code = code;\n this.name = \"CliError\";\n }\n}\n\nexport class BuildError extends CliError {\n readonly location?: SourceLocation;\n\n constructor(message: string, location?: SourceLocation) {\n super(message, \"BUILD_ERROR\");\n this.location = location;\n this.name = \"BuildError\";\n }\n}\n\nexport class ValidationError extends CliError {\n readonly location?: SourceLocation;\n\n constructor(message: string, location?: SourceLocation) {\n super(message, \"VALIDATION_ERROR\");\n this.location = location;\n this.name = \"ValidationError\";\n }\n}\n\nexport class ConfigError extends CliError {\n constructor(message: string) {\n super(message, \"CONFIG_ERROR\");\n this.name = \"ConfigError\";\n }\n}\n\nexport class ApiError extends CliError {\n readonly statusCode: number;\n\n constructor(message: string, statusCode: number) {\n super(message, \"API_ERROR\");\n this.statusCode = statusCode;\n this.name = \"ApiError\";\n }\n}\n","import { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { CliConfig } from \"../types\";\nimport { ConfigError } from \"../errors\";\n\ninterface ConfigFileShape {\n dir?: string;\n apiUrl?: string;\n projectId?: string;\n}\n\nasync function readConfigFile(cwd: string): Promise<ConfigFileShape> {\n const configPath = join(cwd, \"io.config.json\");\n try {\n const raw = await readFile(configPath, \"utf-8\");\n return JSON.parse(raw) as ConfigFileShape;\n } catch (err: unknown) {\n if (err instanceof SyntaxError) {\n throw new ConfigError(`Malformed io.config.json: ${err.message}`);\n }\n return {};\n }\n}\n\nexport async function loadConfig(\n cliOptions: Partial<CliConfig> = {},\n cwd: string = process.cwd(),\n): Promise<CliConfig> {\n const file = await readConfigFile(cwd);\n\n return {\n dir: cliOptions.dir ?? file.dir ?? \"io\",\n apiUrl: cliOptions.apiUrl ?? process.env[\"IO_API_URL\"] ?? file.apiUrl ?? \"https://io.maix.ovh\",\n projectId:\n cliOptions.projectId ??\n process.env[\"IO_PROJECT_ID\"] ??\n file.projectId ??\n \"\",\n };\n}\n","import { readdir, stat } from \"node:fs/promises\";\nimport { join, extname } from \"node:path\";\nimport { BuildError } from \"../errors\";\n\nconst VALID_EXTENSIONS = new Set([\".js\", \".ts\"]);\n\nexport async function scan(dir: string): Promise<string[]> {\n try {\n await stat(dir);\n } catch {\n throw new BuildError(`Source directory '${dir}' does not exist`);\n }\n\n const entries = await readdir(dir, { recursive: true });\n\n const files = entries\n .filter((entry) => {\n const ext = extname(entry);\n if (!VALID_EXTENSIONS.has(ext)) return false;\n if (entry.endsWith(\".d.ts\")) return false;\n if (entry.includes(\"node_modules\")) return false;\n return true;\n })\n .map((entry) => join(dir, entry))\n .sort();\n\n if (files.length === 0) {\n throw new BuildError(`No .js or .ts files found in '${dir}/'`);\n }\n\n return files;\n}\n","const SIGNAL_NAMESPACES = new Set([\"trigger\", \"signal\", \"memory\", \"knowledge\"]);\nconst PATTERN_NAMESPACES = new Set([\n \"trigger\",\n \"signal\",\n \"memory\",\n \"knowledge\",\n \"session\",\n]);\nconst EVENT_NAME_REGEX = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;\nconst EVENT_WILDCARD_REGEX = /^[A-Za-z0-9][A-Za-z0-9._-]*\\.\\*$/;\n\nfunction splitRuntimeSignal(value: string): [string, string] | null {\n const trimmed = value.trim();\n const separator = trimmed.indexOf(\":\");\n\n if (separator <= 0 || separator === trimmed.length - 1) {\n return null;\n }\n\n return [trimmed.slice(0, separator).trim(), trimmed.slice(separator + 1).trim()];\n}\n\nfunction validEventName(value: string): boolean {\n return value !== \"\" && !value.includes(\":\") && EVENT_NAME_REGEX.test(value);\n}\n\nfunction validEventPattern(value: string): boolean {\n return value === \"*\" || validEventName(value) || EVENT_WILDCARD_REGEX.test(value);\n}\n\nexport function validRuntimeSignalName(value: string): boolean {\n const parts = splitRuntimeSignal(value);\n\n if (!parts) {\n return false;\n }\n\n const [namespace, eventName] = parts;\n return SIGNAL_NAMESPACES.has(namespace) && validEventName(eventName);\n}\n\nexport function normalizeRuntimeSignalName(value: string): string | null {\n const trimmed = value.trim();\n\n if (!trimmed) {\n return null;\n }\n\n if (validEventName(trimmed)) {\n return `signal:${trimmed}`;\n }\n\n return validRuntimeSignalName(trimmed) ? trimmed : null;\n}\n\nexport function validChannelPattern(value: string): boolean {\n if (value === \"*\") {\n return true;\n }\n\n const parts = splitRuntimeSignal(value);\n\n if (!parts) {\n return false;\n }\n\n const [namespace, eventName] = parts;\n return PATTERN_NAMESPACES.has(namespace) && validEventPattern(eventName);\n}\n","import { readFile } from \"node:fs/promises\";\nimport { extname } from \"node:path\";\nimport * as acorn from \"acorn\";\nimport * as walk from \"acorn-walk\";\nimport { transform } from \"esbuild\";\nimport { BuildError } from \"../errors\";\nimport { normalizeRuntimeSignalName } from \"./channels\";\nimport type {\n FileDiscoveryResult,\n DiscoveredBehavior,\n DiscoveredSignal,\n DiscoveredConversation,\n ExecutionConfig,\n OnFieldRaw,\n SourceLocation,\n} from \"../types\";\n\ntype AstNode = acorn.Node & Record<string, unknown>;\n\nconst SDK_PACKAGES = new Set([\"@io/sdk\", \"@kaelen-ai/sdk\", \"@eleven-am/sdk\"]);\n\nconst EXECUTION_KEYS = new Set([\"memory\", \"timeout\", \"retries\", \"concurrency\"]);\n\nfunction loc(node: AstNode, file: string): SourceLocation {\n const position = node.loc?.start as { line: number; column: number } | undefined;\n return {\n file,\n line: position?.line ?? 0,\n column: position?.column ?? 0,\n };\n}\n\nfunction extractStaticValue(node: AstNode, file: string): unknown {\n switch (node.type) {\n case \"Literal\":\n return node.value;\n\n case \"TemplateLiteral\":\n if ((node.expressions as AstNode[]).length === 0) {\n const quasis = node.quasis as AstNode[];\n return ((quasis[0]?.value as { cooked?: string } | undefined)?.cooked ?? \"\");\n }\n break;\n\n case \"UnaryExpression\": {\n const operator = node.operator as string;\n const argument = extractStaticValue(node.argument as AstNode, file);\n\n if (operator === \"-\" && typeof argument === \"number\") {\n return -argument;\n }\n\n if (operator === \"+\" && typeof argument === \"number\") {\n return argument;\n }\n\n if (operator === \"!\" && typeof argument === \"boolean\") {\n return !argument;\n }\n\n break;\n }\n\n case \"ArrayExpression\":\n return (node.elements as (AstNode | null)[]).map((element) => {\n if (!element) {\n throw new BuildError(`Unsupported sparse array value in ${file}`, loc(node, file));\n }\n\n return extractStaticValue(element, file);\n });\n\n case \"ObjectExpression\": {\n const entries: Record<string, unknown> = {};\n\n for (const property of node.properties as AstNode[]) {\n if (property.type === \"SpreadElement\") {\n throw new BuildError(\n `Unsupported spread syntax in static config in ${file}`,\n loc(property, file),\n );\n }\n\n const key = property.key as AstNode;\n const keyName =\n key.type === \"Identifier\"\n ? (key.name as string)\n : key.type === \"Literal\" && typeof key.value === \"string\"\n ? key.value\n : undefined;\n\n if (!keyName) {\n throw new BuildError(\n `Unsupported computed key in static config in ${file}`,\n loc(property, file),\n );\n }\n\n entries[keyName] = extractStaticValue(property.value as AstNode, file);\n }\n\n return entries;\n }\n }\n\n throw new BuildError(\n `Unsupported static expression type '${node.type}' in ${file}`,\n loc(node, file),\n );\n}\n\nfunction propertyName(prop: AstNode): string | undefined {\n const key = prop.key as AstNode | undefined;\n if (!key) {\n return undefined;\n }\n\n if (key.type === \"Identifier\") {\n return key.name as string;\n }\n\n if (key.type === \"Literal\" && typeof key.value === \"string\") {\n return key.value as string;\n }\n\n return undefined;\n}\n\nfunction findVariableDeclarator(ancestors: AstNode[]): string | undefined {\n for (let i = ancestors.length - 1; i >= 0; i--) {\n const node = ancestors[i];\n if (node.type === \"VariableDeclarator\") {\n const id = node.id as AstNode;\n if (id.type === \"Identifier\") {\n return id.name as string;\n }\n }\n }\n\n return undefined;\n}\n\nfunction findStatementBounds(ancestors: AstNode[]): { start: number; end: number } {\n for (let i = ancestors.length - 1; i >= 0; i--) {\n const node = ancestors[i];\n if (node.type === \"ExpressionStatement\" || node.type === \"VariableDeclaration\") {\n return { start: node.start as number, end: node.end as number };\n }\n }\n\n return { start: 0, end: 0 };\n}\n\nfunction buildSdkImportMap(ast: AstNode): Map<string, string> {\n const importMap = new Map<string, string>();\n\n walk.simple(ast as acorn.Node, {\n ImportDeclaration(node) {\n const n = node as unknown as AstNode;\n const source = n.source as AstNode;\n if (!SDK_PACKAGES.has(String(source.value))) {\n return;\n }\n\n for (const specifier of n.specifiers as AstNode[]) {\n if (specifier.type === \"ImportSpecifier\") {\n importMap.set(\n (specifier.local as AstNode).name as string,\n (specifier.imported as AstNode).name as string,\n );\n }\n }\n },\n });\n\n return importMap;\n}\n\nfunction extractOnField(\n propValue: AstNode,\n file: string,\n sdkImports: Map<string, string>,\n): OnFieldRaw {\n if (propValue.type === \"Literal\" && typeof propValue.value === \"string\") {\n return { type: \"literal\", value: propValue.value as string };\n }\n\n if (propValue.type === \"MemberExpression\") {\n const object = propValue.object as AstNode;\n const property = propValue.property as AstNode;\n\n if (object.type === \"Identifier\") {\n const sdkName = sdkImports.get(object.name as string);\n if (sdkName === \"memory\") {\n return {\n type: \"memory\",\n propertyName: (property.name as string) ?? \"\",\n };\n }\n }\n\n return {\n type: \"member\",\n objectName: (object.name as string) ?? \"\",\n propertyName: (property.name as string) ?? \"\",\n };\n }\n\n if (propValue.type === \"Identifier\") {\n return { type: \"identifier\", name: propValue.name as string };\n }\n\n throw new BuildError(\n `Unsupported 'on' field expression type '${propValue.type}' in ${file}`,\n loc(propValue, file),\n );\n}\n\nfunction extractExecutionConfig(properties: AstNode[]): ExecutionConfig | undefined {\n const config: Record<string, unknown> = {};\n\n for (const prop of properties) {\n if (prop.type === \"SpreadElement\") {\n continue;\n }\n\n const keyName = propertyName(prop);\n if (!keyName || !EXECUTION_KEYS.has(keyName)) {\n continue;\n }\n\n const value = prop.value as AstNode;\n if (value.type === \"Literal\") {\n config[keyName] = value.value;\n }\n }\n\n return Object.keys(config).length > 0 ? (config as ExecutionConfig) : undefined;\n}\n\nfunction extractSignalSchema(\n node: AstNode | undefined,\n file: string,\n sdkImports: Map<string, string>,\n): Record<string, unknown> | undefined {\n if (!node) {\n return undefined;\n }\n\n if (node.type !== \"CallExpression\") {\n throw new BuildError(`signal() schema must use ioSchema({...}) in ${file}`, loc(node, file));\n }\n\n const callee = node.callee as AstNode;\n if (callee.type !== \"Identifier\" || sdkImports.get(callee.name as string) !== \"ioSchema\") {\n throw new BuildError(`signal() schema must use ioSchema({...}) in ${file}`, loc(node, file));\n }\n\n const schema = extractStaticValue((node.arguments as AstNode[])[0] as AstNode, file);\n\n if (schema && typeof schema === \"object\" && !Array.isArray(schema)) {\n return schema as Record<string, unknown>;\n }\n\n throw new BuildError(`signal() schema must be a static object in ${file}`, loc(node, file));\n}\n\nfunction parseBehaviorCall(\n node: AstNode,\n args: AstNode[],\n ancestors: AstNode[],\n file: string,\n out: DiscoveredBehavior[],\n sdkImports: Map<string, string>,\n): void {\n if (\n args.length < 1 ||\n args[0].type !== \"Literal\" ||\n typeof args[0].value !== \"string\"\n ) {\n throw new BuildError(\n `behavior() requires a name as first argument in ${file}:${(node.loc as { start: { line: number } })?.start?.line ?? 0}`,\n loc(node, file),\n );\n }\n\n const name = args[0].value as string;\n const location = loc(node, file);\n\n if (args.length < 2 || args[1].type !== \"ObjectExpression\") {\n throw new BuildError(\n `behavior '${name}' is missing a spec object in ${file}:${location.line}`,\n location,\n );\n }\n\n const spec = args[1] as AstNode;\n const properties = spec.properties as AstNode[];\n let onRaw: OnFieldRaw | undefined;\n let hasRun = false;\n let messageHistory: number | undefined;\n\n for (const prop of properties) {\n if (prop.type === \"SpreadElement\") {\n continue;\n }\n\n const keyName = propertyName(prop);\n if (!keyName) {\n continue;\n }\n\n if (keyName === \"on\") {\n onRaw = extractOnField(prop.value as AstNode, file, sdkImports);\n } else if (keyName === \"run\") {\n hasRun = true;\n } else if (keyName === \"trackingId\") {\n const value = prop.value as AstNode;\n if (\n value.type !== \"ArrowFunctionExpression\" &&\n value.type !== \"FunctionExpression\"\n ) {\n throw new BuildError(\n `behavior '${name}' trackingId must be a function in ${file}:${location.line}`,\n location,\n );\n }\n } else if (keyName === \"messageHistory\") {\n const value = prop.value as AstNode;\n if (\n value.type !== \"Literal\" ||\n typeof value.value !== \"number\" ||\n !Number.isInteger(value.value) ||\n value.value <= 0\n ) {\n throw new BuildError(\n `behavior '${name}' messageHistory must be a positive integer literal in ${file}:${location.line}`,\n location,\n );\n }\n messageHistory = value.value;\n }\n }\n\n if (!onRaw) {\n throw new BuildError(`behavior '${name}' is missing an on field`, location);\n }\n\n if (!hasRun) {\n throw new BuildError(`behavior '${name}' is missing a run function`, location);\n }\n\n const execution = extractExecutionConfig(properties);\n const bounds = findStatementBounds(ancestors);\n\n out.push({\n name,\n onRaw,\n on: \"\",\n execution,\n messageHistory,\n location,\n statementStart: bounds.start,\n statementEnd: bounds.end,\n });\n}\n\nfunction parseSignalCall(\n args: AstNode[],\n ancestors: AstNode[],\n file: string,\n sdkImports: Map<string, string>,\n out: DiscoveredSignal[],\n): void {\n if (\n args.length < 1 ||\n args[0].type !== \"Literal\" ||\n typeof args[0].value !== \"string\"\n ) {\n return;\n }\n\n const rawName = args[0].value as string;\n const name = normalizeRuntimeSignalName(rawName) ?? rawName;\n const variableName = findVariableDeclarator(ancestors) ?? rawName;\n const schema = extractSignalSchema(args[2] as AstNode | undefined, file, sdkImports);\n\n out.push({\n name,\n variableName,\n schema,\n location: loc(args[0] as AstNode, file),\n });\n}\n\nfunction parseConversationCall(\n node: AstNode,\n args: AstNode[],\n ancestors: AstNode[],\n file: string,\n out: DiscoveredConversation[],\n): void {\n if (\n args.length < 1 ||\n args[0].type !== \"Literal\" ||\n typeof args[0].value !== \"string\"\n ) {\n throw new BuildError(\n `conversation() requires a name as first argument in ${file}:${(node.loc as { start: { line: number } })?.start?.line ?? 0}`,\n loc(node, file),\n );\n }\n\n const name = args[0].value as string;\n const location = loc(node, file);\n\n if (args.length < 2 || args[1].type !== \"ObjectExpression\") {\n throw new BuildError(\n `conversation '${name}' is missing a spec object in ${file}:${location.line}`,\n location,\n );\n }\n\n const spec = args[1] as AstNode;\n const properties = spec.properties as AstNode[];\n let transport = \"\";\n let hasOnStart = false;\n let hasOnMessage = false;\n let hasOnEnd = false;\n\n for (const prop of properties) {\n if (prop.type === \"SpreadElement\") {\n continue;\n }\n\n const keyName = propertyName(prop);\n if (!keyName) {\n continue;\n }\n\n if (keyName === \"transport\") {\n const value = prop.value as AstNode;\n if (value.type === \"Literal\" && typeof value.value === \"string\") {\n transport = value.value as string;\n }\n } else if (keyName === \"onStart\") {\n hasOnStart = true;\n } else if (keyName === \"onMessage\") {\n hasOnMessage = true;\n } else if (keyName === \"onEnd\") {\n hasOnEnd = true;\n }\n }\n\n if (!transport) {\n throw new BuildError(\n `conversation '${name}' is missing a transport field in ${file}:${location.line}`,\n location,\n );\n }\n\n if (transport !== \"voice\" && transport !== \"api\") {\n throw new BuildError(\n `conversation '${name}' transport must be \"voice\" or \"api\", got \"${transport}\" in ${file}:${location.line}`,\n location,\n );\n }\n\n if (!hasOnMessage) {\n throw new BuildError(\n `conversation '${name}' is missing an onMessage handler in ${file}:${location.line}`,\n location,\n );\n }\n\n const execution = extractExecutionConfig(properties);\n const bounds = findStatementBounds(ancestors);\n\n out.push({\n name,\n transport,\n execution,\n hasOnStart,\n hasOnMessage,\n hasOnEnd,\n location,\n statementStart: bounds.start,\n statementEnd: bounds.end,\n });\n}\n\nexport function parseSource(file: string, source: string): FileDiscoveryResult {\n const ast = acorn.parse(source, {\n ecmaVersion: \"latest\",\n sourceType: \"module\",\n locations: true,\n }) as unknown as AstNode;\n\n const sdkImports = buildSdkImportMap(ast);\n const behaviors: DiscoveredBehavior[] = [];\n const signals: DiscoveredSignal[] = [];\n const conversations: DiscoveredConversation[] = [];\n\n walk.ancestor(ast as acorn.Node, {\n CallExpression(node, _state, ancestors) {\n const n = node as unknown as AstNode;\n const anc = ancestors as unknown as AstNode[];\n const callee = n.callee as AstNode;\n\n if (callee.type !== \"Identifier\") {\n return;\n }\n\n const sdkName = sdkImports.get(callee.name as string);\n if (!sdkName) {\n return;\n }\n\n const args = n.arguments as AstNode[];\n\n if (sdkName === \"behavior\") {\n parseBehaviorCall(n, args, anc, file, behaviors, sdkImports);\n } else if (sdkName === \"signal\") {\n parseSignalCall(args, anc, file, sdkImports, signals);\n } else if (sdkName === \"conversation\") {\n parseConversationCall(n, args, anc, file, conversations);\n }\n },\n });\n\n return { file, source, behaviors, signals, conversations };\n}\n\nexport async function parseFile(file: string): Promise<FileDiscoveryResult> {\n const raw = await readFile(file, \"utf-8\");\n let source = raw;\n\n if (extname(file) === \".ts\") {\n const result = await transform(raw, { loader: \"ts\" });\n source = result.code;\n }\n\n return parseSource(file, source);\n}\n\nexport async function discoverAll(files: string[]): Promise<FileDiscoveryResult[]> {\n return Promise.all(files.map(parseFile));\n}\n","import { BuildError } from \"../errors\";\nimport type { FileDiscoveryResult, DiscoveryResult } from \"../types\";\n\nconst MEMORY_EVENT_MAP: Record<string, string> = {\n onCommitmentDueSoon: \"knowledge:commitment.due_soon\",\n onActionItemDueSoon: \"knowledge:action_item.due_soon\",\n onCommitmentBroken: \"knowledge:commitment.broken\",\n onActionItemOverdue: \"knowledge:action_item.overdue\",\n onIntentionTriggeredDetailed: \"knowledge:intention.triggered\",\n onIntentionExpiringSoon: \"knowledge:intention.expiring_soon\",\n onIntentionExpiredDetailed: \"knowledge:intention.expired\",\n onContradictionCreated: \"knowledge:contradiction.created\",\n onContradictionEscalated: \"knowledge:contradiction.escalated\",\n onTensionEmerged: \"knowledge:tension.emerged\",\n onTensionEscalated: \"knowledge:tension.escalated\",\n onTrajectoryDeteriorated: \"knowledge:trajectory.deteriorated\",\n onRoutineBroken: \"knowledge:routine.broken\",\n onContradiction: \"knowledge:contradiction\",\n onDeadlinePassed: \"knowledge:deadline_passed\",\n onIntentionExpired: \"knowledge:intention_expired\",\n onTemporalDueSoon: \"knowledge:temporal_due_soon\",\n};\n\nexport function resolveAll(files: FileDiscoveryResult[]): DiscoveryResult {\n const signalVarMap = new Map<string, string>();\n\n for (const file of files) {\n for (const signal of file.signals) {\n const existing = signalVarMap.get(signal.variableName);\n if (existing && existing !== signal.name) {\n throw new BuildError(\n `signal variable '${signal.variableName}' is used for both '${existing}' and '${signal.name}' across files`,\n signal.location,\n );\n }\n\n signalVarMap.set(signal.variableName, signal.name);\n }\n }\n\n const allBehaviors = [];\n const allSignals = [];\n const allConversations = [];\n\n for (const file of files) {\n for (const behavior of file.behaviors) {\n const raw = behavior.onRaw;\n\n if (raw.type === \"literal\") {\n behavior.on = raw.value!;\n } else if (raw.type === \"member\") {\n behavior.on = \"\";\n } else if (raw.type === \"memory\") {\n const eventType = MEMORY_EVENT_MAP[raw.propertyName!];\n if (!eventType) {\n throw new BuildError(\n `Unknown memory event 'memory.${raw.propertyName}' in ${behavior.location.file}:${behavior.location.line}`,\n behavior.location,\n );\n }\n\n behavior.on = eventType;\n } else if (raw.type === \"identifier\") {\n const signalName = signalVarMap.get(raw.name!);\n if (!signalName) {\n throw new BuildError(\n `Cannot resolve '${raw.name}' — it is not a known signal in ${behavior.location.file}:${behavior.location.line}`,\n behavior.location,\n );\n }\n\n behavior.on = signalName;\n }\n\n allBehaviors.push(behavior);\n }\n\n allSignals.push(...file.signals);\n allConversations.push(...file.conversations);\n }\n\n return { files, allBehaviors, allSignals, allConversations };\n}\n","import { ValidationError, BuildError } from \"../errors\";\nimport type { DiscoveryResult } from \"../types\";\nimport { validChannelPattern, validRuntimeSignalName } from \"./channels\";\n\nexport function validate(result: DiscoveryResult): void {\n const errors: ValidationError[] = [];\n\n const behaviorNames = new Map<string, string>();\n for (const behavior of result.allBehaviors) {\n if (behavior.on && !validChannelPattern(behavior.on)) {\n errors.push(\n new ValidationError(\n `behavior '${behavior.name}' channel must use signal:, memory:, knowledge:, or session: in ${behavior.location.file}:${behavior.location.line}`,\n behavior.location,\n ),\n );\n }\n\n const existing = behaviorNames.get(behavior.name);\n if (existing) {\n errors.push(\n new ValidationError(\n `behavior '${behavior.name}' defined in both ${existing} and ${behavior.location.file}:${behavior.location.line}`,\n behavior.location,\n ),\n );\n } else {\n behaviorNames.set(behavior.name, `${behavior.location.file}:${behavior.location.line}`);\n }\n }\n\n const signalNames = new Map<string, string>();\n for (const signal of result.allSignals) {\n if (!validRuntimeSignalName(signal.name)) {\n errors.push(\n new ValidationError(\n `signal '${signal.name}' must resolve to a valid signal:<name> runtime signal in ${signal.location.file}:${signal.location.line}`,\n signal.location,\n ),\n );\n }\n\n const existing = signalNames.get(signal.name);\n if (existing) {\n errors.push(\n new ValidationError(\n `signal '${signal.name}' defined in both ${existing} and ${signal.location.file}:${signal.location.line}`,\n signal.location,\n ),\n );\n } else {\n signalNames.set(signal.name, `${signal.location.file}:${signal.location.line}`);\n }\n }\n\n const conversationNames = new Map<string, string>();\n for (const conversation of result.allConversations) {\n if (!validChannelPattern(`session:${conversation.name}`)) {\n errors.push(\n new ValidationError(\n `conversation '${conversation.name}' name must resolve to a valid session:<name> channel in ${conversation.location.file}:${conversation.location.line}`,\n conversation.location,\n ),\n );\n }\n\n const existing = conversationNames.get(conversation.name);\n if (existing) {\n errors.push(\n new ValidationError(\n `conversation '${conversation.name}' defined in both ${existing} and ${conversation.location.file}:${conversation.location.line}`,\n conversation.location,\n ),\n );\n } else {\n conversationNames.set(conversation.name, `${conversation.location.file}:${conversation.location.line}`);\n }\n }\n\n if (errors.length > 0) {\n throw new BuildError(\n `Validation failed:\\n${errors.map((error) => error.message).join(\"\\n\")}`,\n );\n }\n}\n","type UnknownRecord = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction stringField(record: UnknownRecord, key: string): string | undefined {\n const value = record[key];\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction booleanField(record: UnknownRecord, key: string): boolean | undefined {\n const value = record[key];\n return typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction numberField(record: UnknownRecord, key: string): number | undefined {\n const value = record[key];\n return typeof value === \"number\" ? value : undefined;\n}\n\nfunction isLoopbackHost(host: string): boolean {\n if (host === \"localhost\" || host === \"::1\" || host === \"ip6-localhost\") {\n return true;\n }\n if (/^127\\.\\d+\\.\\d+\\.\\d+$/.test(host)) return true;\n if (host === \"::ffff:127.0.0.1\") return true;\n return false;\n}\n\nfunction isRfc1918(host: string): boolean {\n const ipv4 = /^(\\d+)\\.(\\d+)\\.\\d+\\.\\d+$/.exec(host);\n if (!ipv4) return false;\n const a = Number(ipv4[1]);\n const b = Number(ipv4[2]);\n if (a === 10) return true;\n if (a === 172 && b >= 16 && b <= 31) return true;\n if (a === 192 && b === 168) return true;\n return false;\n}\n\nfunction isLinkLocal(host: string): boolean {\n if (/^169\\.254\\.\\d+\\.\\d+$/.test(host)) return true;\n if (/^fe80:/i.test(host)) return true;\n return false;\n}\n\nfunction isClusterOrInternalSuffix(host: string): boolean {\n const lower = host.toLowerCase();\n if (lower === \"svc.cluster.local\" || lower === \"internal\" || lower === \"svc\") {\n return true;\n }\n if (lower.endsWith(\".svc.cluster.local\")) return true;\n if (lower.endsWith(\".internal\")) return true;\n if (lower.endsWith(\".svc\")) return true;\n return false;\n}\n\nexport function isPrivateHost(host: string): boolean {\n if (!host) return false;\n if (isLoopbackHost(host)) return true;\n if (isRfc1918(host)) return true;\n if (isLinkLocal(host)) return true;\n if (isClusterOrInternalSuffix(host)) return true;\n return false;\n}\n\nfunction unbracketHost(host: string): string {\n return host.startsWith(\"[\") && host.endsWith(\"]\")\n ? host.slice(1, -1)\n : host;\n}\n\nexport function validateEndpointEntry(\n entry: UnknownRecord,\n errors: string[],\n): string | undefined {\n const name = stringField(entry, \"name\");\n if (!name || !name.trim()) {\n errors.push(\"endpoint entry is missing a string name\");\n return undefined;\n }\n\n const baseUrl = stringField(entry, \"base_url\");\n if (!baseUrl || !baseUrl.trim()) {\n errors.push(`endpoint \"${name}\" is missing base_url`);\n return name;\n }\n\n let parsed: URL;\n try {\n parsed = new URL(baseUrl);\n } catch {\n errors.push(`endpoint \"${name}\" base_url \"${baseUrl}\" is not a valid absolute URL`);\n return name;\n }\n\n const rawScheme = parsed.protocol.replace(/:$/, \"\").toLowerCase();\n if (rawScheme !== \"http\" && rawScheme !== \"https\") {\n errors.push(`endpoint \"${name}\" scheme \"${rawScheme}\" is not supported (use http or https)`);\n }\n\n const persistedScheme = stringField(entry, \"scheme\");\n if (persistedScheme !== rawScheme) {\n errors.push(\n `endpoint \"${name}\" persisted scheme \"${persistedScheme ?? \"(missing)\"}\" does not match base_url scheme \"${rawScheme}\"`,\n );\n }\n\n const rawHost = unbracketHost(parsed.hostname.toLowerCase());\n if (!rawHost) {\n errors.push(`endpoint \"${name}\" base_url \"${baseUrl}\" is missing a host`);\n }\n\n const persistedHost = stringField(entry, \"host\");\n if (persistedHost !== rawHost) {\n errors.push(\n `endpoint \"${name}\" persisted host \"${persistedHost ?? \"(missing)\"}\" does not match base_url host \"${rawHost}\"`,\n );\n }\n\n const inferredPort =\n parsed.port !== \"\"\n ? Number(parsed.port)\n : rawScheme === \"https\"\n ? 443\n : 80;\n const persistedPort = numberField(entry, \"port\");\n if (\n persistedPort === undefined ||\n !Number.isInteger(persistedPort) ||\n persistedPort < 1 ||\n persistedPort > 65535\n ) {\n errors.push(\n `endpoint \"${name}\" port ${persistedPort ?? \"(missing)\"} is outside the valid range (1-65535)`,\n );\n } else if (persistedPort !== inferredPort) {\n errors.push(\n `endpoint \"${name}\" persisted port ${persistedPort} does not match base_url port ${inferredPort}`,\n );\n }\n\n const privateFlag = booleanField(entry, \"private\");\n if (privateFlag === undefined) {\n errors.push(`endpoint \"${name}\" must include a boolean \"private\" flag`);\n } else {\n const detectedPrivate = rawHost ? isPrivateHost(rawHost) : false;\n if (detectedPrivate && !privateFlag) {\n errors.push(\n `endpoint \"${name}\" host \"${rawHost}\" is a private/internal address but is not marked private: true`,\n );\n }\n if (!detectedPrivate && privateFlag && rawHost) {\n errors.push(\n `endpoint \"${name}\" host \"${rawHost}\" is not a recognized private address but is marked private: true`,\n );\n }\n }\n\n const allowSubdomains = booleanField(entry, \"allow_subdomains\");\n if (allowSubdomains === undefined) {\n errors.push(`endpoint \"${name}\" must include a boolean \"allow_subdomains\" flag`);\n }\n\n return name;\n}\n\nexport function validateEndpointsSection(\n endpoints: readonly unknown[],\n errors: string[],\n): Set<string> {\n const declared = new Set<string>();\n const seen = new Set<string>();\n for (const entry of endpoints) {\n if (!isRecord(entry)) {\n errors.push(\"endpoint entry must be an object\");\n continue;\n }\n const name = validateEndpointEntry(entry, errors);\n if (name) {\n if (seen.has(name)) {\n errors.push(`endpoint \"${name}\" is declared more than once`);\n }\n seen.add(name);\n declared.add(name);\n }\n }\n return declared;\n}\n","import { BuildError } from \"../errors\";\nimport type { Manifest } from \"../types\";\nimport { validateEndpointsSection } from \"./endpoint-validator\";\n\nconst RESERVED_BUNDLE_PREFIX = \"__kaelen.\";\nconst BINDING_SCOPES = new Set([\"project\", \"principal\"]);\nconst CREDENTIAL_SOURCES = new Set([\"none\", \"platform\", \"secret_bundle\"]);\n\ntype UnknownRecord = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction arrayField(record: UnknownRecord, key: string): unknown[] {\n const value = record[key];\n return Array.isArray(value) ? value : [];\n}\n\nfunction stringField(record: UnknownRecord, key: string): string | undefined {\n const value = record[key];\n return typeof value === \"string\" && value.trim() ? value : undefined;\n}\n\nfunction scopeListField(record: UnknownRecord, key: string): string[] | undefined {\n const value = record[key];\n if (value === undefined) return undefined;\n if (!Array.isArray(value)) return [];\n return value.flatMap((entry) => scopeEntryName(entry) ?? []);\n}\n\nfunction scopeEntryName(entry: unknown): string | undefined {\n if (typeof entry === \"string\" && entry.trim()) return entry;\n if (isRecord(entry)) return stringField(entry, \"name\");\n return undefined;\n}\n\nfunction duplicateNames(\n entries: readonly UnknownRecord[],\n label: string,\n errors: string[],\n): void {\n const seen = new Set<string>();\n for (const entry of entries) {\n const name = stringField(entry, \"name\");\n if (!name) {\n errors.push(`${label} entry is missing a string name`);\n continue;\n }\n if (seen.has(name)) {\n errors.push(`${label} \"${name}\" is declared more than once`);\n }\n seen.add(name);\n }\n}\n\nfunction validateScopeList(\n owner: string,\n field: string,\n value: unknown,\n errors: string[],\n): string[] {\n if (value === undefined) return [];\n if (!Array.isArray(value)) {\n errors.push(`${owner} ${field} must be an array of strings or objects with a string name`);\n return [];\n }\n\n const names: string[] = [];\n for (const entry of value) {\n const name = scopeEntryName(entry);\n if (!name) {\n errors.push(`${owner} ${field} entries must be non-empty strings or objects with a string name`);\n continue;\n }\n names.push(name);\n }\n return names;\n}\n\nfunction validateTargetExecution(\n target: UnknownRecord,\n declaredApps: Set<string>,\n declaredEndpoints: Set<string>,\n errors: string[],\n): void {\n const name = stringField(target, \"name\") ?? \"(unnamed)\";\n const owner = `target \"${name}\"`;\n const execution = target.execution;\n\n if (execution !== undefined && !isRecord(execution)) {\n errors.push(`${owner} execution must be an object`);\n return;\n }\n\n const executionRecord = isRecord(execution) ? execution : {};\n const applicationRefs = validateScopeList(\n owner,\n \"execution.applications\",\n executionRecord.applications,\n errors,\n );\n for (const ref of applicationRefs) {\n if (!declaredApps.has(ref)) {\n errors.push(`${owner} references undeclared application \"${ref}\"`);\n }\n }\n\n const endpointRefs = validateScopeList(\n owner,\n \"execution.endpoints\",\n executionRecord.endpoints,\n errors,\n );\n for (const ref of endpointRefs) {\n if (!declaredEndpoints.has(ref)) {\n errors.push(`${owner} references undeclared endpoint \"${ref}\"`);\n }\n }\n\n for (const field of [\"secret_names\", \"raw_secrets\"]) {\n const refs = validateScopeList(owner, `execution.${field}`, executionRecord[field], errors);\n\n for (const ref of refs) {\n if (ref.startsWith(RESERVED_BUNDLE_PREFIX)) {\n errors.push(\n `${owner} execution.${field} entry \"${ref}\" uses the reserved \"${RESERVED_BUNDLE_PREFIX}\" prefix`,\n );\n }\n }\n }\n\n const legacyEndpointRefs = scopeListField(target, \"endpoints\");\n if (target.endpoints !== undefined && legacyEndpointRefs === undefined) {\n errors.push(`${owner} endpoints must be an array of strings`);\n } else if (target.endpoints !== undefined) {\n if (endpointRefs.length === 0) {\n errors.push(`${owner} must declare endpoint scope under execution.endpoints`);\n }\n for (const ref of legacyEndpointRefs ?? []) {\n if (!declaredEndpoints.has(ref)) {\n errors.push(`${owner} references undeclared endpoint \"${ref}\"`);\n }\n if (endpointRefs.length > 0 && !endpointRefs.includes(ref)) {\n errors.push(`${owner} legacy endpoints entry \"${ref}\" is missing from execution.endpoints`);\n }\n }\n }\n}\n\nfunction capabilityId(\n applicationName: string,\n resourceName: string,\n toolName: string,\n): string {\n return `${applicationName}.${resourceName}.${toolName}`;\n}\n\nfunction validateToolCapability(\n appName: string,\n resourceName: string,\n tool: UnknownRecord,\n errors: string[],\n seenCapabilities: Set<string>,\n): void {\n const toolName = stringField(tool, \"name\");\n if (!toolName) {\n errors.push(`resource \"${appName}/${resourceName}\" has a tool without a string name`);\n return;\n }\n\n const mode = stringField(tool, \"mode\");\n if (mode !== \"read\" && mode !== \"write\") {\n errors.push(`tool \"${appName}/${resourceName}/${toolName}\" mode must be read or write`);\n }\n\n const capability = tool.capability;\n if (!isRecord(capability)) {\n errors.push(`tool \"${appName}/${resourceName}/${toolName}\" is missing tool-access metadata`);\n return;\n }\n\n const expected = capabilityId(appName, resourceName, toolName);\n if (stringField(capability, \"application_name\") !== appName) {\n errors.push(`tool \"${expected}\" capability application_name does not match its app`);\n }\n if (stringField(capability, \"resource_name\") !== resourceName) {\n errors.push(`tool \"${expected}\" capability resource_name does not match its resource`);\n }\n if (stringField(capability, \"tool_name\") !== toolName) {\n errors.push(`tool \"${expected}\" capability tool_name does not match its name`);\n }\n if (stringField(capability, \"capability_id\") !== expected) {\n errors.push(`tool \"${expected}\" capability_id must be \"${expected}\"`);\n }\n if (stringField(capability, \"mode\") !== mode) {\n errors.push(`tool \"${expected}\" capability mode does not match the tool mode`);\n }\n\n const audit = stringField(capability, \"audit\");\n if (mode === \"write\" && audit !== \"sync\") {\n errors.push(`write tool \"${expected}\" must use sync audit`);\n }\n if (mode === \"read\" && audit !== \"async\") {\n errors.push(`read tool \"${expected}\" must use async audit`);\n }\n\n const exposure = stringField(capability, \"credential_exposure\");\n if (exposure !== \"none\" && exposure !== \"stdlib\") {\n errors.push(`tool \"${expected}\" credential_exposure must be none or stdlib`);\n }\n\n if (!stringField(capability, \"provider_kind\")) {\n errors.push(`tool \"${expected}\" capability is missing provider_kind`);\n }\n if (!stringField(capability, \"backend_kind\")) {\n errors.push(`tool \"${expected}\" capability is missing backend_kind`);\n }\n\n if (seenCapabilities.has(expected)) {\n errors.push(`capability \"${expected}\" is declared more than once`);\n }\n seenCapabilities.add(expected);\n}\n\nfunction validateResourceCapability(\n appName: string,\n resourceName: string,\n capability: UnknownRecord,\n errors: string[],\n): void {\n const path = `${appName}/${resourceName}`;\n if (stringField(capability, \"application_name\") !== appName) {\n errors.push(`resource \"${path}\" capability application_name does not match`);\n }\n if (stringField(capability, \"resource_name\") !== resourceName) {\n errors.push(`resource \"${path}\" capability resource_name does not match`);\n }\n if (!stringField(capability, \"kind\")) {\n errors.push(`resource \"${path}\" capability is missing kind`);\n }\n if (!stringField(capability, \"provider_kind\")) {\n errors.push(`resource \"${path}\" capability is missing provider_kind`);\n }\n if (!stringField(capability, \"backend_kind\")) {\n errors.push(`resource \"${path}\" capability is missing backend_kind`);\n }\n const bindingScope = stringField(capability, \"binding_scope\");\n if (!bindingScope || !BINDING_SCOPES.has(bindingScope)) {\n errors.push(`resource \"${path}\" capability binding_scope must be project or principal`);\n }\n const credentialSource = stringField(capability, \"credential_source\");\n if (!credentialSource || !CREDENTIAL_SOURCES.has(credentialSource)) {\n errors.push(\n `resource \"${path}\" capability credential_source must be none, platform, or secret_bundle`,\n );\n }\n if (typeof capability.requires_binding !== \"boolean\") {\n errors.push(`resource \"${path}\" capability requires_binding must be a boolean`);\n }\n}\n\nexport function validateManifest(manifest: Manifest): void {\n const root = isRecord(manifest) ? manifest : {};\n const errors: string[] = [];\n const seenCapabilities = new Set<string>();\n\n if (root.contract_version !== \"io.invocation.v1\") {\n errors.push(\"contract_version must be io.invocation.v1\");\n }\n\n if (root.snapshot_version !== \"io_runtime.snapshot.v1\") {\n errors.push(\"snapshot_version must be io_runtime.snapshot.v1\");\n }\n\n const secretBundles = arrayField(root, \"secret_bundles\").filter(isRecord);\n duplicateNames(secretBundles, \"secret bundle\", errors);\n for (const bundle of secretBundles) {\n const bundleName = stringField(bundle, \"name\");\n if (bundleName && bundleName.startsWith(RESERVED_BUNDLE_PREFIX)) {\n errors.push(\n `secret bundle \"${bundleName}\" uses the reserved \"${RESERVED_BUNDLE_PREFIX}\" prefix; platform-owned bundles must not be declared by user manifests`,\n );\n }\n }\n const secretNames = new Set(\n secretBundles\n .map((entry) => stringField(entry, \"name\"))\n .filter((name): name is string => !!name),\n );\n\n const declaredEndpoints = validateEndpointsSection(\n arrayField(root, \"endpoints\"),\n errors,\n );\n const apps = arrayField(root, \"apps\").filter(isRecord);\n const declaredApps = new Set(\n apps\n .map((entry) => stringField(entry, \"name\"))\n .filter((name): name is string => !!name),\n );\n\n const targets = arrayField(root, \"targets\").filter(isRecord);\n duplicateNames(targets, \"target\", errors);\n const targetKeys = new Set<string>();\n for (const target of targets) {\n const kind = stringField(target, \"kind\");\n const name = stringField(target, \"name\");\n if (kind !== \"behavior\" && kind !== \"conversation\") {\n errors.push(`target \"${name ?? \"(unnamed)\"}\" kind must be behavior or conversation`);\n }\n if (kind && name) targetKeys.add(`${kind}:${name}`);\n validateTargetExecution(target, declaredApps, declaredEndpoints, errors);\n }\n\n duplicateNames(apps, \"app\", errors);\n for (const app of apps) {\n const appName = stringField(app, \"name\");\n if (!appName) continue;\n\n const resources = arrayField(app, \"resources\").filter(isRecord);\n duplicateNames(resources, `app \"${appName}\" resource`, errors);\n for (const resource of resources) {\n const resourceName = stringField(resource, \"name\");\n if (!resourceName) continue;\n\n const signals = arrayField(resource, \"signals\");\n const toolEntries = arrayField(resource, \"tools\");\n if (signals.length === 0 && toolEntries.length === 0) {\n errors.push(\n `resource \"${appName}/${resourceName}\" has no signals and no tools`,\n );\n }\n\n const secretBundle = stringField(resource, \"secret_bundle\");\n if (\n secretBundle &&\n !secretBundle.startsWith(RESERVED_BUNDLE_PREFIX) &&\n !secretNames.has(secretBundle)\n ) {\n errors.push(`resource \"${appName}/${resourceName}\" references missing secret bundle \"${secretBundle}\"`);\n }\n\n const capability = resource.capability;\n if (!isRecord(capability)) {\n errors.push(`resource \"${appName}/${resourceName}\" is missing tool-access metadata`);\n } else {\n validateResourceCapability(appName, resourceName, capability, errors);\n }\n\n const tools = toolEntries.filter(isRecord);\n duplicateNames(tools, `resource \"${appName}/${resourceName}\" tool`, errors);\n for (const tool of tools) {\n validateToolCapability(\n appName,\n resourceName,\n tool,\n errors,\n seenCapabilities,\n );\n }\n }\n }\n\n const subscriptions = arrayField(root, \"subscriptions\").filter(isRecord);\n duplicateNames(subscriptions, \"subscription\", errors);\n for (const subscription of subscriptions) {\n const targetKind = stringField(subscription, \"target_kind\");\n const targetName = stringField(subscription, \"target_name\");\n if (targetKind !== \"behavior\" && targetKind !== \"conversation\") {\n errors.push(`subscription \"${stringField(subscription, \"name\") ?? \"(unnamed)\"}\" target_kind must be behavior or conversation`);\n }\n if (targetKind && targetName && !targetKeys.has(`${targetKind}:${targetName}`)) {\n errors.push(`subscription \"${stringField(subscription, \"name\") ?? \"(unnamed)\"}\" targets missing ${targetKind} \"${targetName}\"`);\n }\n }\n\n if (errors.length > 0) {\n throw new BuildError(\n `Manifest validation failed:\\n${errors.map((error) => `- ${error}`).join(\"\\n\")}`,\n );\n }\n}\n","import * as acorn from \"acorn\";\nimport * as walk from \"acorn-walk\";\n\ntype AstNode = acorn.Node & Record<string, unknown>;\n\ninterface SplittableEntity {\n name: string;\n statementStart: number;\n statementEnd: number;\n}\n\ninterface TopLevelDecl {\n names: Set<string>;\n refs: Set<string>;\n start: number;\n end: number;\n}\n\ninterface ImportInfo {\n specifiers: { local: string; imported: string; kind: \"default\" | \"namespace\" | \"named\" }[];\n source: string;\n start: number;\n end: number;\n}\n\ninterface TextEdit {\n start: number;\n end: number;\n text: string;\n}\n\nfunction collectBindingNames(pattern: AstNode, out: Set<string>): void {\n switch (pattern.type) {\n case \"Identifier\":\n out.add(pattern.name as string);\n break;\n case \"ObjectPattern\":\n for (const prop of pattern.properties as AstNode[]) {\n collectBindingNames(\n (prop.type === \"RestElement\"\n ? prop.argument\n : prop.value) as AstNode,\n out,\n );\n }\n break;\n case \"ArrayPattern\":\n for (const elem of pattern.elements as (AstNode | null)[]) {\n if (elem) collectBindingNames(elem, out);\n }\n break;\n case \"AssignmentPattern\":\n collectBindingNames(pattern.left as AstNode, out);\n break;\n case \"RestElement\":\n collectBindingNames(pattern.argument as AstNode, out);\n break;\n }\n}\n\nfunction collectRefs(node: acorn.Node): Set<string> {\n const refs = new Set<string>();\n walk.ancestor(node, {\n Identifier(n: acorn.Node, _state: unknown, ancestors: acorn.Node[]) {\n const id = n as unknown as AstNode;\n const parent = (ancestors as unknown as AstNode[])[\n ancestors.length - 2\n ];\n if (\n parent?.type === \"MemberExpression\" &&\n !parent.computed &&\n parent.property === (n as unknown)\n ) {\n return;\n }\n if (\n parent?.type === \"Property\" &&\n !parent.computed &&\n parent.key === (n as unknown) &&\n !parent.shorthand\n ) {\n return;\n }\n refs.add(id.name as string);\n },\n });\n return refs;\n}\n\nfunction analyzeTopLevel(\n body: AstNode[],\n entityStarts: Set<number>,\n): { decls: TopLevelDecl[]; imports: ImportInfo[] } {\n const decls: TopLevelDecl[] = [];\n const imports: ImportInfo[] = [];\n\n for (const stmt of body) {\n if (entityStarts.has(stmt.start as number)) continue;\n\n if (\n stmt.type === \"ExportNamedDeclaration\" ||\n stmt.type === \"ExportDefaultDeclaration\" ||\n stmt.type === \"ExportAllDeclaration\"\n ) {\n continue;\n }\n\n if (stmt.type === \"ImportDeclaration\") {\n const specifiers = stmt.specifiers as AstNode[];\n if (specifiers.length === 0) continue;\n\n const info: ImportInfo = {\n specifiers: [],\n source: (stmt.source as AstNode).value as string,\n start: stmt.start as number,\n end: stmt.end as number,\n };\n\n for (const spec of specifiers) {\n const local = (spec.local as AstNode).name as string;\n if (spec.type === \"ImportDefaultSpecifier\") {\n info.specifiers.push({ local, imported: \"default\", kind: \"default\" });\n } else if (spec.type === \"ImportNamespaceSpecifier\") {\n info.specifiers.push({ local, imported: \"*\", kind: \"namespace\" });\n } else {\n const imported = (spec.imported as AstNode).name as string;\n info.specifiers.push({ local, imported, kind: \"named\" });\n }\n }\n\n imports.push(info);\n continue;\n }\n\n const names = new Set<string>();\n\n if (stmt.type === \"VariableDeclaration\") {\n for (const d of stmt.declarations as AstNode[]) {\n collectBindingNames(d.id as AstNode, names);\n }\n } else if (\n stmt.type === \"FunctionDeclaration\" ||\n stmt.type === \"ClassDeclaration\"\n ) {\n const id = stmt.id as AstNode | null;\n if (id?.type === \"Identifier\") names.add(id.name as string);\n } else {\n continue;\n }\n\n if (names.size === 0) continue;\n\n const refs = collectRefs(stmt as acorn.Node);\n for (const name of names) refs.delete(name);\n\n decls.push({\n names,\n refs,\n start: stmt.start as number,\n end: stmt.end as number,\n });\n }\n\n return { decls, imports };\n}\n\nfunction computeReachableNames(\n seeds: Set<string>,\n decls: TopLevelDecl[],\n _imports: ImportInfo[],\n): Set<string> {\n const declByName = new Map<string, TopLevelDecl>();\n for (const d of decls) {\n for (const n of d.names) declByName.set(n, d);\n }\n\n const reachableNames = new Set<string>();\n const reachedDecls = new Set<TopLevelDecl>();\n const queue = [...seeds];\n\n while (queue.length > 0) {\n const name = queue.pop()!;\n if (reachableNames.has(name)) continue;\n reachableNames.add(name);\n\n const d = declByName.get(name);\n if (!d || reachedDecls.has(d)) continue;\n\n reachedDecls.add(d);\n for (const r of d.refs) {\n if (!reachableNames.has(r)) queue.push(r);\n }\n }\n\n return reachableNames;\n}\n\nfunction buildImportStatement(\n kept: ImportInfo[\"specifiers\"],\n source: string,\n): string {\n const defaultSpec = kept.find((s) => s.kind === \"default\");\n const nsSpec = kept.find((s) => s.kind === \"namespace\");\n const named = kept.filter((s) => s.kind === \"named\");\n\n const parts: string[] = [];\n\n if (defaultSpec) {\n parts.push(defaultSpec.local);\n }\n\n if (nsSpec) {\n parts.push(`* as ${nsSpec.local}`);\n }\n\n if (named.length > 0) {\n const specs = named.map((s) =>\n s.local === s.imported ? s.local : `${s.imported} as ${s.local}`,\n );\n parts.push(`{ ${specs.join(\", \")} }`);\n }\n\n return `import ${parts.join(\", \")} from \"${source}\"`;\n}\n\nfunction applyEdits(source: string, edits: TextEdit[]): string {\n const sorted = [...edits].sort((a, b) => b.start - a.start);\n let result = source;\n for (const { start, end, text } of sorted) {\n result = result.slice(0, start) + text + result.slice(end);\n }\n return result;\n}\n\nfunction blankRegion(source: string, start: number, end: number): string {\n const newlines = (source.slice(start, end).match(/\\n/g) || []).length;\n return \"\\n\".repeat(newlines);\n}\n\nexport function splitEntities(\n source: string,\n entities: SplittableEntity[],\n): Map<string, string> {\n if (entities.length <= 1) {\n const out = new Map<string, string>();\n for (const e of entities) out.set(e.name, source);\n return out;\n }\n\n let ast: AstNode;\n try {\n ast = acorn.parse(source, {\n ecmaVersion: \"latest\",\n sourceType: \"module\",\n }) as unknown as AstNode;\n } catch {\n return simpleSplit(source, entities);\n }\n\n const entityStarts = new Set(entities.map((e) => e.statementStart));\n const { decls, imports } = analyzeTopLevel(ast.body as AstNode[], entityStarts);\n\n const declByName = new Map<string, TopLevelDecl>();\n for (const d of decls) {\n for (const n of d.names) declByName.set(n, d);\n }\n\n const out = new Map<string, string>();\n\n for (const keep of entities) {\n const edits: TextEdit[] = [];\n\n for (const other of entities) {\n if (other !== keep) {\n edits.push({\n start: other.statementStart,\n end: other.statementEnd,\n text: blankRegion(source, other.statementStart, other.statementEnd),\n });\n }\n }\n\n const stmt = (ast.body as AstNode[]).find(\n (s) => (s.start as number) === keep.statementStart,\n );\n\n if (stmt) {\n const entityRefs = collectRefs(stmt as acorn.Node);\n const reachable = computeReachableNames(entityRefs, decls, imports);\n\n for (const d of decls) {\n const used = [...d.names].some((n) => reachable.has(n));\n if (!used) {\n edits.push({\n start: d.start,\n end: d.end,\n text: blankRegion(source, d.start, d.end),\n });\n }\n }\n\n for (const imp of imports) {\n const kept = imp.specifiers.filter((s) => reachable.has(s.local));\n\n if (kept.length === 0) {\n edits.push({\n start: imp.start,\n end: imp.end,\n text: blankRegion(source, imp.start, imp.end),\n });\n } else if (kept.length < imp.specifiers.length) {\n edits.push({\n start: imp.start,\n end: imp.end,\n text: buildImportStatement(kept, imp.source),\n });\n }\n }\n }\n\n out.set(keep.name, applyEdits(source, edits));\n }\n\n return out;\n}\n\nfunction simpleSplit(\n source: string,\n entities: SplittableEntity[],\n): Map<string, string> {\n const out = new Map<string, string>();\n for (const keep of entities) {\n const edits: TextEdit[] = entities\n .filter((e) => e !== keep)\n .map((e) => ({\n start: e.statementStart,\n end: e.statementEnd,\n text: blankRegion(source, e.statementStart, e.statementEnd),\n }));\n out.set(keep.name, applyEdits(source, edits));\n }\n return out;\n}\n","type RuntimeTriggerType = \"webhook\" | \"schedule\" | \"streaming\";\n\ninterface TransportHelperDefinition {\n readonly type: string;\n readonly runtimeType: RuntimeTriggerType;\n readonly supportsReceive: boolean;\n readonly supportsRespond: boolean;\n readonly manifestReceiveType?: string;\n readonly manifestRespondType?: string;\n readonly [toolName: string]:\n | string\n | boolean\n | RuntimeTriggerType\n | ToolDescriptor\n | undefined;\n}\n\ninterface ToolDescriptor {\n readonly name: string;\n readonly mode: \"read\" | \"write\";\n}\n\nexport const TRANSPORT_HELPERS = {\n webhook: {\n type: \"webhook\",\n runtimeType: \"webhook\",\n supportsReceive: true,\n supportsRespond: true,\n respond: { name: \"respond\", mode: \"write\" },\n },\n schedule: {\n type: \"schedule\",\n runtimeType: \"schedule\",\n supportsReceive: true,\n supportsRespond: false,\n },\n email: {\n type: \"email\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n manifestReceiveType: \"imap\",\n manifestRespondType: \"email\",\n search: { name: \"search\", mode: \"read\" },\n get: { name: \"get\", mode: \"read\" },\n listMailboxes: { name: \"listMailboxes\", mode: \"read\" },\n listAttachments: { name: \"listAttachments\", mode: \"read\" },\n getAttachment: { name: \"getAttachment\", mode: \"read\" },\n send: { name: \"send\", mode: \"write\" },\n draft: { name: \"draft\", mode: \"write\" },\n listDrafts: { name: \"listDrafts\", mode: \"write\" },\n updateDraft: { name: \"updateDraft\", mode: \"write\" },\n deleteDraft: { name: \"deleteDraft\", mode: \"write\" },\n modify: { name: \"modify\", mode: \"write\" },\n delete: { name: \"delete\", mode: \"write\" },\n },\n kafka: {\n type: \"kafka\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n publish: { name: \"publish\", mode: \"write\" },\n },\n rabbitmq: {\n type: \"rabbitmq\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n publish: { name: \"publish\", mode: \"write\" },\n },\n redis: {\n type: \"redis\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n publish: { name: \"publish\", mode: \"write\" },\n },\n pubsub: {\n type: \"pubsub\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n publish: { name: \"publish\", mode: \"write\" },\n },\n sqs: {\n type: \"sqs\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n publish: { name: \"publish\", mode: \"write\" },\n },\n websocket: {\n type: \"websocket\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n publish: { name: \"publish\", mode: \"write\" },\n },\n rss: {\n type: \"rss\",\n runtimeType: \"schedule\",\n supportsReceive: true,\n supportsRespond: false,\n },\n graphql: {\n type: \"graphql\",\n runtimeType: \"schedule\",\n supportsReceive: true,\n supportsRespond: false,\n query: { name: \"query\", mode: \"read\" },\n },\n http: {\n type: \"http\",\n runtimeType: \"schedule\",\n supportsReceive: true,\n supportsRespond: false,\n fetch: { name: \"fetch\", mode: \"read\" },\n },\n calendar: {\n type: \"calendar\",\n runtimeType: \"schedule\",\n supportsReceive: true,\n supportsRespond: false,\n list: { name: \"list\", mode: \"read\" },\n get: { name: \"get\", mode: \"read\" },\n create: { name: \"create\", mode: \"write\" },\n update: { name: \"update\", mode: \"write\" },\n delete: { name: \"delete\", mode: \"write\" },\n },\n contacts: {\n type: \"contacts\",\n runtimeType: \"schedule\",\n supportsReceive: true,\n supportsRespond: false,\n list: { name: \"list\", mode: \"read\" },\n get: { name: \"get\", mode: \"read\" },\n create: { name: \"create\", mode: \"write\" },\n update: { name: \"update\", mode: \"write\" },\n delete: { name: \"delete\", mode: \"write\" },\n },\n} as const satisfies Record<string, TransportHelperDefinition>;\n\nexport type TransportHelperName = keyof typeof TRANSPORT_HELPERS;\n\nexport function runtimeTransportHelpers(): Record<string, TransportHelperDefinition> {\n return TRANSPORT_HELPERS;\n}\n","import { build, type BuildResult, type Plugin } from \"esbuild\";\nimport { mkdir, readFile } from \"node:fs/promises\";\nimport { join, dirname, resolve as resolvePath } from \"node:path\";\nimport * as acorn from \"acorn\";\nimport * as walk from \"acorn-walk\";\nimport { BuildError } from \"../errors\";\nimport { runtimeTransportHelpers } from \"./transport-helpers\";\n\nconst NODE_BUILTINS = new Set([\n \"assert\", \"assert/strict\", \"async_hooks\", \"buffer\", \"child_process\",\n \"cluster\", \"console\", \"constants\", \"crypto\", \"dgram\",\n \"diagnostics_channel\", \"dns\", \"dns/promises\", \"domain\", \"events\",\n \"fs\", \"fs/promises\", \"http\", \"http2\", \"https\", \"inspector\",\n \"inspector/promises\", \"module\", \"net\", \"os\", \"path\", \"path/posix\",\n \"path/win32\", \"perf_hooks\", \"process\", \"punycode\", \"querystring\",\n \"readline\", \"readline/promises\", \"repl\", \"stream\", \"stream/consumers\",\n \"stream/promises\", \"stream/web\", \"string_decoder\", \"sys\", \"test\",\n \"timers\", \"timers/promises\", \"tls\", \"trace_events\", \"tty\", \"url\",\n \"util\", \"util/types\", \"v8\", \"vm\", \"wasi\", \"worker_threads\", \"zlib\",\n]);\n\nconst SCHEMA_STUB_NAMESPACE = \"io-schema-stub\";\nconst RUNTIME_SDK_NAMESPACE = \"io-runtime-sdk\";\nconst RUNTIME_SDK_PATH = \"runtime-sdk\";\n\nconst SDK_PACKAGES = [\"@io/sdk\", \"@kaelen-ai/sdk\", \"@eleven-am/sdk\"];\nconst SCHEMA_PACKAGES = new Set([\"zod\", ...SDK_PACKAGES.map((pkg) => `${pkg}/zod`)]);\ntype AstNode = acorn.Node & Record<string, unknown>;\nconst RUNTIME_TRANSPORT_HELPERS = runtimeTransportHelpers();\n\ntype RuntimeSdkTransportExport = keyof typeof RUNTIME_TRANSPORT_HELPERS;\ntype RuntimeSdkExport =\n | \"ioSchema\"\n | \"zodSchema\"\n | \"signal\"\n | \"memory\"\n | \"application\"\n | \"secret\"\n | RuntimeSdkTransportExport;\ntype RuntimeMemoryExport = keyof typeof RUNTIME_MEMORY_SIGNALS;\n\nconst RUNTIME_MEMORY_SIGNALS = {\n onCommitmentDueSoon: \"knowledge:commitment.due_soon\",\n onActionItemDueSoon: \"knowledge:action_item.due_soon\",\n onCommitmentBroken: \"knowledge:commitment.broken\",\n onActionItemOverdue: \"knowledge:action_item.overdue\",\n onIntentionTriggeredDetailed: \"knowledge:intention.triggered\",\n onIntentionExpiringSoon: \"knowledge:intention.expiring_soon\",\n onIntentionExpiredDetailed: \"knowledge:intention.expired\",\n onContradictionCreated: \"knowledge:contradiction.created\",\n onContradictionEscalated: \"knowledge:contradiction.escalated\",\n onTensionEmerged: \"knowledge:tension.emerged\",\n onTensionEscalated: \"knowledge:tension.escalated\",\n onTrajectoryDeteriorated: \"knowledge:trajectory.deteriorated\",\n onRoutineBroken: \"knowledge:routine.broken\",\n} as const satisfies Record<string, string>;\n\nconst RUNTIME_SDK_EXPORTS = new Set<RuntimeSdkExport>([\n \"ioSchema\",\n \"zodSchema\",\n \"signal\",\n \"memory\",\n \"application\",\n \"secret\",\n \"webhook\",\n \"schedule\",\n \"email\",\n \"kafka\",\n \"rabbitmq\",\n \"redis\",\n \"pubsub\",\n \"sqs\",\n \"websocket\",\n \"rss\",\n \"graphql\",\n \"http\",\n \"calendar\",\n \"contacts\",\n]);\n\nconst COMPILED_AWAY_EXPORTS = new Set([\"behavior\", \"conversation\"]);\n\ninterface RuntimeSdkUsage {\n exports: Set<RuntimeSdkExport>;\n includeFullMemory: boolean;\n memoryProperties: Set<RuntimeMemoryExport>;\n}\n\ninterface RuntimeSdkModuleAnalysis extends RuntimeSdkUsage {\n relativeImports: string[];\n}\n\nfunction normalizeSdkSpecifier(specifier: string): string {\n if (specifier === \"@kaelen-ai/sdk\" || specifier === \"@eleven-am/sdk\") {\n return \"@io/sdk\";\n }\n if (specifier === \"@kaelen-ai/sdk/zod\" || specifier === \"@eleven-am/sdk/zod\") {\n return \"@io/sdk/zod\";\n }\n return specifier;\n}\n\nfunction parseModule(source: string, name: string): AstNode {\n try {\n return acorn.parse(source, {\n ecmaVersion: \"latest\",\n sourceType: \"module\",\n }) as unknown as AstNode;\n } catch (error) {\n throw new BuildError(\n `failed to parse compiled bundle source for '${name}': ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction analyzeRuntimeSdkUsage(source: string, name: string): RuntimeSdkModuleAnalysis {\n const ast = parseModule(source, name);\n const usage: RuntimeSdkModuleAnalysis = {\n exports: new Set<RuntimeSdkExport>(),\n includeFullMemory: false,\n memoryProperties: new Set<RuntimeMemoryExport>(),\n relativeImports: [],\n };\n const memoryLocals = new Set<string>();\n\n walk.ancestor(ast as acorn.Node, {\n ImportDeclaration(node) {\n const n = node as unknown as AstNode;\n const sourceNode = n.source as AstNode;\n const packageName = String(sourceNode.value);\n if (SDK_PACKAGES.includes(packageName)) {\n for (const spec of n.specifiers as AstNode[]) {\n if (spec.type !== \"ImportSpecifier\") {\n throw new BuildError(\n `compiled bundle '${name}' cannot use default or namespace SDK imports`,\n );\n }\n\n const imported = (((spec.imported as unknown as AstNode).name ?? \"\") as string);\n const local = (((spec.local as unknown as AstNode).name ?? \"\") as string);\n\n if (COMPILED_AWAY_EXPORTS.has(imported)) {\n throw new BuildError(\n `${imported}() should be compiled away before bundling '${name}'`,\n );\n }\n\n if (!RUNTIME_SDK_EXPORTS.has(imported as RuntimeSdkExport)) {\n throw new BuildError(\n `compiled bundle '${name}' references unsupported runtime SDK export '${imported}'`,\n );\n }\n\n usage.exports.add(imported as RuntimeSdkExport);\n if (imported === \"memory\") {\n memoryLocals.add(local);\n }\n }\n return;\n }\n\n if (packageName.startsWith(\".\")) {\n usage.relativeImports.push(packageName);\n }\n },\n Identifier(node, _state, ancestors) {\n const n = node as unknown as AstNode;\n const localName = (n.name ?? \"\") as string;\n if (!memoryLocals.has(localName)) {\n return;\n }\n\n const parent = ancestors[ancestors.length - 2] as AstNode | undefined;\n\n if (parent?.type === \"ImportSpecifier\" || parent?.type === \"ImportDeclaration\") {\n return;\n }\n\n if (parent?.type === \"MemberExpression\" && parent.object === (node as unknown)) {\n const property = parent.property as AstNode;\n\n if (!parent.computed && property?.type === \"Identifier\") {\n const propertyName = String(property.name ?? \"\");\n if (propertyName in RUNTIME_MEMORY_SIGNALS) {\n usage.memoryProperties.add(propertyName as RuntimeMemoryExport);\n } else {\n usage.includeFullMemory = true;\n }\n return;\n }\n\n if (\n parent.computed &&\n property?.type === \"Literal\" &&\n typeof property.value === \"string\"\n ) {\n if (property.value in RUNTIME_MEMORY_SIGNALS) {\n usage.memoryProperties.add(property.value as RuntimeMemoryExport);\n } else {\n usage.includeFullMemory = true;\n }\n return;\n }\n }\n\n usage.includeFullMemory = true;\n },\n });\n\n if (usage.exports.has(\"memory\") && usage.memoryProperties.size === 0) {\n usage.includeFullMemory = true;\n }\n\n return usage;\n}\n\nfunction mergeRuntimeSdkUsage(target: RuntimeSdkUsage, source: RuntimeSdkUsage): void {\n for (const sdkExport of source.exports) {\n target.exports.add(sdkExport);\n }\n\n if (source.includeFullMemory) {\n target.includeFullMemory = true;\n }\n\n for (const property of source.memoryProperties) {\n target.memoryProperties.add(property);\n }\n}\n\nasync function resolveLocalModule(\n importerDir: string,\n specifier: string,\n): Promise<{ path: string; source: string } | null> {\n const base = resolvePath(importerDir, specifier);\n const candidates = [\n base,\n `${base}.ts`,\n `${base}.tsx`,\n `${base}.js`,\n `${base}.jsx`,\n `${base}.mts`,\n `${base}.cts`,\n join(base, \"index.ts\"),\n join(base, \"index.tsx\"),\n join(base, \"index.js\"),\n join(base, \"index.jsx\"),\n join(base, \"index.mts\"),\n join(base, \"index.cts\"),\n ];\n\n for (const candidate of candidates) {\n try {\n return {\n path: candidate,\n source: await readFile(candidate, \"utf-8\"),\n };\n } catch {\n continue;\n }\n }\n\n return null;\n}\n\nasync function analyzeRuntimeSdkUsageGraph(\n source: string,\n sourceDir: string,\n name: string,\n): Promise<RuntimeSdkUsage> {\n const aggregate: RuntimeSdkUsage = {\n exports: new Set<RuntimeSdkExport>(),\n includeFullMemory: false,\n memoryProperties: new Set<RuntimeMemoryExport>(),\n };\n const visited = new Set<string>();\n\n const visit = async (\n moduleSource: string,\n moduleName: string,\n moduleDir: string,\n ): Promise<void> => {\n const visitKey = `${moduleName}:${moduleDir}`;\n if (visited.has(visitKey)) {\n return;\n }\n visited.add(visitKey);\n\n const analysis = analyzeRuntimeSdkUsage(moduleSource, moduleName);\n mergeRuntimeSdkUsage(aggregate, analysis);\n\n for (const specifier of analysis.relativeImports) {\n const resolved = await resolveLocalModule(moduleDir, specifier);\n if (!resolved) {\n continue;\n }\n\n await visit(resolved.source, resolved.path, dirname(resolved.path));\n }\n };\n\n await visit(source, name, sourceDir);\n return aggregate;\n}\n\nfunction buildRuntimeSdkSource(usage: RuntimeSdkUsage): string {\n const lines: string[] = [];\n\n if (usage.exports.has(\"signal\") || usage.exports.has(\"application\") || usage.exports.has(\"secret\")) {\n lines.push(\n `function ensureNonEmptyString(value, label) {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new Error(\\`\\${label} must be a non-empty string\\`);\n }\n}`,\n );\n }\n\n if (usage.exports.has(\"ioSchema\")) {\n lines.push(\n `function isObjectRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}`,\n `export function ioSchema(jsonSchema) {\n if (!isObjectRecord(jsonSchema)) {\n throw new Error(\"ioSchema() requires a JSON schema object\");\n }\n return Object.freeze({ jsonSchema });\n}`,\n );\n }\n\n if (usage.exports.has(\"zodSchema\")) {\n lines.push(\n `export function zodSchema(schema) {\n return Object.freeze({\n jsonSchema:\n schema && typeof schema === \"object\" && \"jsonSchema\" in schema ? schema.jsonSchema : {},\n });\n}`,\n );\n }\n\n if (usage.exports.has(\"signal\")) {\n lines.push(\n `export function signal(name, _defaultValue, _schema) {\n ensureNonEmptyString(name, \"signal() name\");\n const trimmed = String(name).trim();\n return Object.freeze({\n name: trimmed.startsWith(\"signal:\") ? trimmed : \\`signal:\\${trimmed}\\`,\n });\n}`,\n );\n }\n\n if (usage.exports.has(\"application\")) {\n lines.push(\n `export function application(name, featureMap) {\n ensureNonEmptyString(name, \"application() name\");\n if (!featureMap || typeof featureMap !== \"object\" || Array.isArray(featureMap)) {\n throw new Error(\"application() requires a feature map object\");\n }\n return Object.freeze({ name: String(name).trim(), ...featureMap });\n}`,\n );\n }\n\n if (usage.exports.has(\"secret\")) {\n lines.push(\n `export function secret(name, values = {}, flow = \"none\") {\n ensureNonEmptyString(name, \"secret() name\");\n const slots =\n values && typeof values === \"object\" && !Array.isArray(values)\n ? Object.freeze({ ...values })\n : Object.freeze({});\n return Object.freeze({\n name: String(name).trim(),\n flow,\n slots,\n });\n}`,\n );\n }\n\n if (usage.exports.has(\"memory\")) {\n const entries = usage.includeFullMemory\n ? Object.entries(RUNTIME_MEMORY_SIGNALS)\n : [...usage.memoryProperties].sort().map((key) => [key, RUNTIME_MEMORY_SIGNALS[key]] as const);\n\n lines.push(\n `export const memory = Object.freeze({\n${entries.map(([key, value]) => ` ${key}: Object.freeze({ name: ${JSON.stringify(value)} }),`).join(\"\\n\")}\n});`,\n );\n }\n\n for (const [helperName, helperValue] of Object.entries(RUNTIME_TRANSPORT_HELPERS)) {\n if (!usage.exports.has(helperName as RuntimeSdkExport)) {\n continue;\n }\n\n lines.push(\n `export function ${helperName}(..._args) {\n return Object.freeze(${JSON.stringify(helperValue)});\n}`,\n );\n }\n\n return lines.join(\"\\n\\n\");\n}\n\nfunction sdkAliasPlugin(): Plugin {\n return {\n name: \"sdk-alias\",\n setup(pluginBuild) {\n pluginBuild.onResolve({ filter: /^@(?:io|kaelen-ai|eleven-am)\\/sdk$/ }, () => ({\n path: RUNTIME_SDK_PATH,\n namespace: RUNTIME_SDK_NAMESPACE,\n }));\n },\n };\n}\n\nfunction runtimeSdkPlugin(usage: RuntimeSdkUsage): Plugin {\n return {\n name: \"runtime-sdk\",\n setup(pluginBuild) {\n pluginBuild.onResolve({ filter: /^@(?:io|kaelen-ai|eleven-am)\\/sdk$/ }, () => ({\n path: RUNTIME_SDK_PATH,\n namespace: RUNTIME_SDK_NAMESPACE,\n }));\n\n pluginBuild.onLoad({ filter: /.*/, namespace: RUNTIME_SDK_NAMESPACE }, () => ({\n contents: buildRuntimeSdkSource(usage),\n loader: \"js\",\n }));\n },\n };\n}\n\nfunction schemaStubPlugin(): Plugin {\n return {\n name: \"schema-stub\",\n setup(pluginBuild) {\n pluginBuild.onResolve({ filter: /.*/ }, (args) => {\n const normalizedPath = normalizeSdkSpecifier(args.path);\n if (SCHEMA_PACKAGES.has(normalizedPath)) {\n return {\n path: normalizedPath === \"zod\" ? \"zod-runtime\" : \"sdk-zod-runtime\",\n namespace: SCHEMA_STUB_NAMESPACE,\n };\n }\n return undefined;\n });\n\n pluginBuild.onLoad({ filter: /.*/, namespace: SCHEMA_STUB_NAMESPACE }, (args) => {\n if (args.path === \"zod-runtime\") {\n return {\n contents: [\n \"const noop = () => proxy;\",\n \"const proxy = new Proxy(noop, { get: () => proxy, apply: () => proxy });\",\n \"export const z = proxy;\",\n \"export default proxy;\",\n ].join(\"\\n\"),\n loader: \"js\",\n };\n }\n\n return {\n contents: \"export function zodSchema(schema) { return { jsonSchema: schema && typeof schema === 'object' && 'jsonSchema' in schema ? schema.jsonSchema : {} }; }\",\n loader: \"js\",\n };\n });\n },\n };\n}\n\nfunction isolateGuardPlugin(): Plugin {\n return {\n name: \"isolate-guard\",\n setup(pluginBuild) {\n pluginBuild.onResolve({ filter: /^node:/ }, (args) => ({\n errors: [{\n text: `Node.js module \"${args.path}\" is not available in the isolate runtime`,\n }],\n }));\n\n pluginBuild.onResolve({ filter: /^[a-z]/ }, (args) => {\n if (NODE_BUILTINS.has(args.path)) {\n return {\n errors: [{\n text: `Node.js module \"${args.path}\" is not available in the isolate runtime`,\n }],\n };\n }\n return undefined;\n });\n },\n };\n}\n\ninterface BundleInput {\n name: string;\n source: string;\n sourceDir: string;\n}\n\nexport interface BundleOutput {\n name: string;\n outFile: string;\n size: number;\n}\n\nexport async function bundleEntity(\n input: BundleInput,\n outDir: string,\n subDir: string = \"behaviors\",\n minify: boolean = false,\n): Promise<BundleOutput> {\n const runtimeSdkUsage = await analyzeRuntimeSdkUsageGraph(\n input.source,\n input.sourceDir,\n input.name,\n );\n const outFile = join(outDir, subDir, `${input.name}.js`);\n\n await mkdir(dirname(outFile), { recursive: true });\n\n let result: BuildResult;\n try {\n result = await build({\n stdin: {\n contents: input.source,\n resolveDir: input.sourceDir,\n loader: \"js\",\n },\n bundle: true,\n format: \"esm\",\n platform: \"neutral\",\n conditions: [\"worker\", \"browser\"],\n treeShaking: true,\n minify,\n plugins: [sdkAliasPlugin(), runtimeSdkPlugin(runtimeSdkUsage), schemaStubPlugin(), isolateGuardPlugin()],\n outfile: outFile,\n logLevel: \"silent\",\n metafile: true,\n write: true,\n });\n } catch (err: unknown) {\n const message =\n err instanceof Error ? err.message : String(err);\n throw new BuildError(\n `esbuild failed for ${subDir.replace(/s$/, \"\")} '${input.name}': ${message}`,\n );\n }\n\n if (result.errors.length > 0) {\n const errText = result.errors\n .map((e) => `${e.text} (${e.location?.file}:${e.location?.line})`)\n .join(\"\\n\");\n throw new BuildError(\n `esbuild errors for ${subDir.replace(/s$/, \"\")} '${input.name}':\\n${errText}`,\n );\n }\n\n let size = 0;\n if (result.metafile) {\n for (const output of Object.values(result.metafile.outputs)) {\n size += output.bytes;\n }\n }\n\n return { name: input.name, outFile, size };\n}\n\nexport async function bundleAll(\n splitSources: Map<string, { source: string; sourceDir: string }>,\n outDir: string,\n subDir: string = \"behaviors\",\n minify: boolean = false,\n): Promise<BundleOutput[]> {\n const tasks = [...splitSources.entries()].map(([name, { source, sourceDir }]) =>\n bundleEntity({ name, source, sourceDir }, outDir, subDir, minify),\n );\n\n return Promise.all(tasks);\n}\n","import { build, type Plugin } from \"esbuild\";\nimport { mkdir, writeFile, rm } from \"node:fs/promises\";\nimport { spawn } from \"node:child_process\";\nimport { createRequire } from \"node:module\";\nimport { join, basename, extname, relative, isAbsolute, resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { BuildError } from \"../errors\";\n\nexport interface EvaluatorInput {\n readonly cwd: string;\n readonly outDir: string;\n readonly userFiles: readonly string[];\n readonly entrypoints: { readonly [name: string]: string };\n}\n\nconst SDK_PACKAGE = \"@kaelen-ai/sdk\";\nconst SDK_ALIASES = new Set([\"@io/sdk\", \"@eleven-am/sdk\"]);\n\nfunction resolveSdkEntry(cwd: string): string {\n const requireFromCwd = createRequire(join(cwd, \"__io_cli_sdk_resolver__.cjs\"));\n const resolved = requireFromCwd.resolve(SDK_PACKAGE);\n\n if (resolved.endsWith(\"/dist/index.js\")) {\n return resolved.replace(/\\/dist\\/index\\.js$/, \"/dist/index.mjs\");\n }\n\n if (resolved.endsWith(\"\\\\dist\\\\index.js\")) {\n return resolved.replace(/\\\\dist\\\\index\\.js$/, \"\\\\dist\\\\index.mjs\");\n }\n\n return resolved;\n}\n\nfunction resolveSdkPackageRoot(cwd: string): string {\n const sdkEntry = resolveSdkEntry(cwd);\n return resolve(sdkEntry, \"..\", \"..\");\n}\n\nfunction sdkAliasPlugin(): Plugin {\n return {\n name: \"evaluator-sdk-alias\",\n setup(pluginBuild) {\n pluginBuild.onResolve({ filter: /^@(?:io|eleven-am)\\/sdk$/ }, () => ({\n path: SDK_PACKAGE,\n external: true,\n }));\n pluginBuild.onResolve({ filter: /^@kaelen-ai\\/sdk$/ }, () => ({\n path: SDK_PACKAGE,\n external: true,\n }));\n pluginBuild.onResolve({ filter: /^@kaelen-ai\\/sdk\\/zod$/ }, () => ({\n path: `${SDK_PACKAGE}/zod`,\n external: true,\n }));\n },\n };\n}\n\nexport async function evaluateAndEmitManifest(\n input: EvaluatorInput,\n): Promise<unknown> {\n void SDK_ALIASES;\n const sdkRoot = resolveSdkPackageRoot(input.cwd);\n const userBundlesDir = join(input.outDir, \"user-modules\");\n await mkdir(userBundlesDir, { recursive: true });\n await writeSdkProxy(input.outDir, sdkRoot);\n\n const bundledPaths: string[] = [];\n for (const file of input.userFiles) {\n const stem = basename(file, extname(file));\n const outFile = join(userBundlesDir, `${stem}.mjs`);\n await build({\n entryPoints: [file],\n bundle: true,\n format: \"esm\",\n platform: \"node\",\n target: \"node18\",\n plugins: [sdkAliasPlugin()],\n outfile: outFile,\n logLevel: \"silent\",\n write: true,\n }).catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n throw new BuildError(`failed to bundle '${file}' for evaluation: ${msg}`);\n });\n bundledPaths.push(outFile);\n }\n\n const runnerPath = join(input.outDir, \"runner.mjs\");\n const runnerSource = buildRunnerSource(bundledPaths, runnerPath);\n await writeFile(runnerPath, runnerSource, \"utf-8\");\n\n const manifestJson = await runRunner(runnerPath, input.cwd, input.entrypoints);\n try {\n return JSON.parse(manifestJson);\n } catch (err) {\n throw new BuildError(\n `runner produced invalid JSON manifest: ${err instanceof Error ? err.message : String(err)}\\n--- stdout ---\\n${manifestJson}`,\n );\n }\n}\n\nfunction buildRunnerSource(bundledPaths: string[], runnerPath: string): string {\n const importLines = bundledPaths\n .map((p, i) => {\n const rel = toRelativeImport(runnerPath, p);\n return `import * as mod${i} from ${JSON.stringify(rel)};\\nvoid mod${i};`;\n })\n .join(\"\\n\");\n\n return `${importLines}\nimport { manifest } from \"@kaelen-ai/sdk\";\n\nconst entrypoints = JSON.parse(process.env.IO_CLI_ENTRYPOINTS || \"{}\");\nconst m = manifest({ entrypoints });\nprocess.stdout.write(JSON.stringify(m));\n`;\n}\n\nasync function writeSdkProxy(outDir: string, sdkRoot: string): Promise<void> {\n const proxyDir = join(outDir, \"node_modules\", \"@kaelen-ai\", \"sdk\");\n const distDir = join(sdkRoot, \"dist\");\n\n await rm(proxyDir, { recursive: true, force: true });\n await mkdir(proxyDir, { recursive: true });\n\n const rootImport = pathToFileURL(join(distDir, \"index.mjs\")).href;\n const zodImport = pathToFileURL(join(distDir, \"schema-zod.mjs\")).href;\n\n await writeFile(\n join(proxyDir, \"package.json\"),\n JSON.stringify(\n {\n name: \"@kaelen-ai/sdk\",\n type: \"module\",\n exports: {\n \".\": {\n import: \"./index.mjs\",\n },\n \"./zod\": {\n import: \"./schema-zod.mjs\",\n },\n },\n },\n null,\n 2,\n ),\n \"utf-8\",\n );\n\n await writeFile(\n join(proxyDir, \"index.mjs\"),\n `export * from ${JSON.stringify(rootImport)};\\n`,\n \"utf-8\",\n );\n\n await writeFile(\n join(proxyDir, \"schema-zod.mjs\"),\n `export * from ${JSON.stringify(zodImport)};\\n`,\n \"utf-8\",\n );\n}\n\nfunction toRelativeImport(fromFile: string, toFile: string): string {\n const fromDir = resolve(fromFile, \"..\");\n let rel = relative(fromDir, toFile).split(\"\\\\\").join(\"/\");\n if (!rel.startsWith(\".\") && !isAbsolute(rel)) {\n rel = `./${rel}`;\n }\n return rel;\n}\n\nfunction runRunner(\n runnerPath: string,\n cwd: string,\n entrypoints: { readonly [name: string]: string },\n): Promise<string> {\n return new Promise((resolveResult, rejectResult) => {\n const child = spawn(process.execPath, [runnerPath], {\n cwd,\n env: {\n ...process.env,\n IO_CLI_ENTRYPOINTS: JSON.stringify(entrypoints),\n },\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n let stdout = \"\";\n let stderr = \"\";\n child.stdout.on(\"data\", (chunk) => {\n stdout += chunk.toString(\"utf-8\");\n });\n child.stderr.on(\"data\", (chunk) => {\n stderr += chunk.toString(\"utf-8\");\n });\n\n child.on(\"error\", (err) => {\n rejectResult(\n new BuildError(`runner failed to start: ${err.message}`),\n );\n });\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolveResult(stdout);\n return;\n }\n rejectResult(\n new BuildError(\n `runner exited with code ${code}\\n--- stderr ---\\n${stderr || \"(empty)\"}\\n--- stdout ---\\n${stdout || \"(empty)\"}`,\n ),\n );\n });\n });\n}\n","import { writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { evaluateAndEmitManifest } from \"./evaluator\";\n\nexport type Manifest = Record<string, unknown>;\n\nexport interface BundleRef {\n readonly name: string;\n readonly outFile: string;\n}\n\nexport interface ManifestEmissionInput {\n readonly cwd: string;\n readonly userFiles: readonly string[];\n readonly outDir: string;\n readonly behaviorBundles: readonly BundleRef[];\n readonly conversationBundles: readonly BundleRef[];\n}\n\nexport async function generateManifest(\n input: ManifestEmissionInput,\n): Promise<Manifest> {\n const entrypoints: Record<string, string> = {};\n for (const b of input.behaviorBundles) {\n entrypoints[b.name] = `behaviors/${b.name}.js`;\n }\n for (const c of input.conversationBundles) {\n entrypoints[c.name] = `conversations/${c.name}.js`;\n }\n\n const m = (await evaluateAndEmitManifest({\n cwd: input.cwd,\n outDir: input.outDir,\n userFiles: input.userFiles,\n entrypoints,\n })) as Manifest;\n\n await writeFile(\n join(input.outDir, \"manifest.json\"),\n JSON.stringify(m, null, 2),\n \"utf-8\",\n );\n\n return m;\n}\n","import * as acorn from \"acorn\";\nimport * as walk from \"acorn-walk\";\nimport { BuildError } from \"../errors\";\nimport type {\n DiscoveredBehavior,\n DiscoveredConversation,\n ExecutionConfig,\n} from \"../types\";\n\ntype AstNode = acorn.Node & Record<string, unknown>;\n\nconst INTERNAL_CONFIG = \"__io_cli_compiled_config\";\nconst INTERNAL_RUN = \"__io_cli_compiled_run\";\nconst INTERNAL_TRACKING_ID = \"__io_cli_compiled_tracking_id\";\nconst INTERNAL_ON_START = \"__io_cli_compiled_on_start\";\nconst INTERNAL_ON_MESSAGE = \"__io_cli_compiled_on_message\";\nconst INTERNAL_ON_END = \"__io_cli_compiled_on_end\";\nconst INTERNAL_APPLICATIONS = \"__io_cli_compiled_applications\";\n\nfunction conversationChannel(name: string): string {\n return `session:${name}`;\n}\n\nfunction parseModule(source: string): AstNode {\n return acorn.parse(source, {\n ecmaVersion: \"latest\",\n sourceType: \"module\",\n }) as unknown as AstNode;\n}\n\ninterface TopLevelDecl {\n names: Set<string>;\n refs: Set<string>;\n start: number;\n end: number;\n}\n\ninterface ImportInfo {\n specifiers: { local: string; imported: string; kind: \"default\" | \"namespace\" | \"named\" }[];\n source: string;\n start: number;\n end: number;\n}\n\ninterface RootCallInfo {\n start: number;\n end: number;\n}\n\ninterface TextEdit {\n start: number;\n end: number;\n text: string;\n}\n\ninterface CompiledReplacement {\n replacement: string;\n refs: Set<string>;\n}\n\nfunction rootStatementFor(\n source: string,\n statementStart: number,\n kind: \"behavior\" | \"conversation\",\n name: string,\n): AstNode {\n let ast: AstNode;\n try {\n ast = parseModule(source);\n } catch (error) {\n throw new BuildError(\n `failed to parse compiled target source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n\n const body = ast.body as AstNode[];\n const stmt = body.find(\n (candidate) => (candidate.start as number) === statementStart,\n );\n\n if (stmt) {\n return stmt;\n }\n\n const fallback = body.find((candidate) => {\n if (candidate.type !== \"ExpressionStatement\") {\n return false;\n }\n\n const expression = candidate.expression as AstNode;\n if (expression.type !== \"CallExpression\") {\n return false;\n }\n\n const args = expression.arguments as AstNode[];\n if (args.length < 2 || args[0]?.type !== \"Literal\" || args[1]?.type !== \"ObjectExpression\") {\n return false;\n }\n\n const callee = expression.callee as AstNode;\n if (callee.type !== \"Identifier\") {\n return false;\n }\n\n return callee.name === kind && args[0].value === name;\n });\n\n if (!fallback) {\n throw new BuildError(\n `failed to locate compiled ${kind} root '${name}' at byte offset ${statementStart}`,\n );\n }\n\n return fallback;\n}\n\nfunction rootSpecNode(stmt: AstNode): AstNode {\n if (stmt.type !== \"ExpressionStatement\") {\n throw new BuildError(\"compiled target root must be an expression statement\");\n }\n\n const expression = stmt.expression as AstNode;\n if (expression.type !== \"CallExpression\") {\n throw new BuildError(\"compiled target root must be a call expression\");\n }\n\n const args = expression.arguments as AstNode[];\n if (args.length < 2 || args[1].type !== \"ObjectExpression\") {\n throw new BuildError(\"compiled target root must have a spec object as its second argument\");\n }\n\n return args[1] as AstNode;\n}\n\nfunction propertyName(prop: AstNode): string | undefined {\n const key = prop.key as AstNode | undefined;\n if (!key) {\n return undefined;\n }\n\n if (key.type === \"Identifier\") {\n return key.name as string;\n }\n\n if (key.type === \"Literal\" && typeof key.value === \"string\") {\n return key.value as string;\n }\n\n return undefined;\n}\n\nfunction findProperty(spec: AstNode, name: string): AstNode | undefined {\n return (spec.properties as AstNode[]).find((prop) => {\n if (prop.type === \"SpreadElement\") {\n return false;\n }\n\n return propertyName(prop) === name;\n });\n}\n\nfunction functionSourceFromProperty(source: string, prop: AstNode, label: string): string {\n const value = prop.value as AstNode | undefined;\n if (!value) {\n throw new BuildError(`compiled target is missing ${label} handler`);\n }\n\n if (\n prop.method === true &&\n (value.type === \"FunctionExpression\" || value.type === \"ArrowFunctionExpression\")\n ) {\n const paramsStart = value.start as number;\n const body = value.body as AstNode;\n const paramsSource = source.slice(paramsStart, body.start as number);\n const bodySource = source.slice(body.start as number, body.end as number);\n const asyncPrefix = value.async ? \"async \" : \"\";\n const generatorSuffix = value.generator ? \"*\" : \"\";\n return `${asyncPrefix}function${generatorSuffix}${paramsSource}${bodySource}`;\n }\n\n return source.slice(value.start as number, value.end as number);\n}\n\nfunction expressionSourceFromProperty(source: string, prop: AstNode, label: string): string {\n const value = prop.value as AstNode | undefined;\n if (!value) {\n throw new BuildError(`compiled target is missing ${label} value`);\n }\n\n return source.slice(value.start as number, value.end as number);\n}\n\nfunction replaceRange(source: string, start: number, end: number, text: string): string {\n return `${source.slice(0, start)}${text}${source.slice(end)}`;\n}\n\nfunction collectBindingNames(pattern: AstNode, out: Set<string>): void {\n switch (pattern.type) {\n case \"Identifier\":\n out.add(pattern.name as string);\n break;\n case \"ObjectPattern\":\n for (const prop of pattern.properties as AstNode[]) {\n collectBindingNames(\n (prop.type === \"RestElement\" ? prop.argument : prop.value) as AstNode,\n out,\n );\n }\n break;\n case \"ArrayPattern\":\n for (const elem of pattern.elements as (AstNode | null)[]) {\n if (elem) {\n collectBindingNames(elem, out);\n }\n }\n break;\n case \"AssignmentPattern\":\n collectBindingNames(pattern.left as AstNode, out);\n break;\n case \"RestElement\":\n collectBindingNames(pattern.argument as AstNode, out);\n break;\n }\n}\n\nfunction collectRefs(node: acorn.Node): Set<string> {\n const refs = new Set<string>();\n walk.ancestor(node, {\n Identifier(n: acorn.Node, _state: unknown, ancestors: acorn.Node[]) {\n const id = n as AstNode;\n const parent = ancestors[ancestors.length - 2] as AstNode | undefined;\n if (\n parent?.type === \"MemberExpression\" &&\n !parent.computed &&\n parent.property === (n as unknown)\n ) {\n return;\n }\n if (\n parent?.type === \"Property\" &&\n !parent.computed &&\n parent.key === (n as unknown) &&\n !parent.shorthand\n ) {\n return;\n }\n refs.add(id.name as string);\n },\n });\n return refs;\n}\n\nfunction isRootTargetCall(stmt: AstNode): boolean {\n if (stmt.type !== \"ExpressionStatement\") {\n return false;\n }\n\n const expression = stmt.expression as AstNode;\n if (expression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = expression.callee as AstNode;\n return callee.type === \"Identifier\" && (callee.name === \"behavior\" || callee.name === \"conversation\");\n}\n\nfunction analyzeTopLevel(\n body: AstNode[],\n): { decls: TopLevelDecl[]; imports: ImportInfo[]; rootCalls: RootCallInfo[] } {\n const decls: TopLevelDecl[] = [];\n const imports: ImportInfo[] = [];\n const rootCalls: RootCallInfo[] = [];\n\n for (const stmt of body) {\n let candidate = stmt;\n if (stmt.type === \"ExportNamedDeclaration\") {\n const declaration = stmt.declaration as AstNode | null | undefined;\n if (!declaration) {\n continue;\n }\n candidate = declaration;\n } else if (\n stmt.type === \"ExportDefaultDeclaration\" ||\n stmt.type === \"ExportAllDeclaration\"\n ) {\n continue;\n }\n\n if (candidate.type === \"ImportDeclaration\") {\n const specifiers = candidate.specifiers as AstNode[];\n if (specifiers.length === 0) {\n continue;\n }\n\n const info: ImportInfo = {\n specifiers: [],\n source: (candidate.source as AstNode).value as string,\n start: candidate.start as number,\n end: candidate.end as number,\n };\n\n for (const spec of specifiers) {\n const local = (spec.local as AstNode).name as string;\n if (spec.type === \"ImportDefaultSpecifier\") {\n info.specifiers.push({ local, imported: \"default\", kind: \"default\" });\n } else if (spec.type === \"ImportNamespaceSpecifier\") {\n info.specifiers.push({ local, imported: \"*\", kind: \"namespace\" });\n } else {\n const imported = (spec.imported as AstNode).name as string;\n info.specifiers.push({ local, imported, kind: \"named\" });\n }\n }\n\n imports.push(info);\n continue;\n }\n\n if (isRootTargetCall(candidate)) {\n rootCalls.push({\n start: candidate.start as number,\n end: candidate.end as number,\n });\n continue;\n }\n\n const names = new Set<string>();\n\n if (candidate.type === \"VariableDeclaration\") {\n for (const declaration of candidate.declarations as AstNode[]) {\n collectBindingNames(declaration.id as AstNode, names);\n }\n } else if (candidate.type === \"FunctionDeclaration\" || candidate.type === \"ClassDeclaration\") {\n const id = candidate.id as AstNode | null;\n if (id?.type === \"Identifier\") {\n names.add(id.name as string);\n }\n } else {\n continue;\n }\n\n if (names.size === 0) {\n continue;\n }\n\n const refs = collectRefs(candidate as acorn.Node);\n for (const name of names) {\n refs.delete(name);\n }\n\n decls.push({\n names,\n refs,\n start: stmt.start as number,\n end: stmt.end as number,\n });\n }\n\n return { decls, imports, rootCalls };\n}\n\nfunction computeReachableNames(seeds: Set<string>, decls: TopLevelDecl[]): Set<string> {\n const declByName = new Map<string, TopLevelDecl>();\n for (const decl of decls) {\n for (const name of decl.names) {\n declByName.set(name, decl);\n }\n }\n\n const reachableNames = new Set<string>();\n const reachedDecls = new Set<TopLevelDecl>();\n const queue = [...seeds];\n\n while (queue.length > 0) {\n const name = queue.pop()!;\n if (reachableNames.has(name)) {\n continue;\n }\n reachableNames.add(name);\n\n const decl = declByName.get(name);\n if (!decl || reachedDecls.has(decl)) {\n continue;\n }\n\n reachedDecls.add(decl);\n for (const ref of decl.refs) {\n if (!reachableNames.has(ref)) {\n queue.push(ref);\n }\n }\n }\n\n return reachableNames;\n}\n\nfunction buildImportStatement(\n kept: ImportInfo[\"specifiers\"],\n source: string,\n): string {\n const defaultSpec = kept.find((s) => s.kind === \"default\");\n const namespaceSpec = kept.find((s) => s.kind === \"namespace\");\n const named = kept.filter((s) => s.kind === \"named\");\n const parts: string[] = [];\n\n if (defaultSpec) {\n parts.push(defaultSpec.local);\n }\n\n if (namespaceSpec) {\n parts.push(`* as ${namespaceSpec.local}`);\n }\n\n if (named.length > 0) {\n const specs = named.map((s) => (s.local === s.imported ? s.local : `${s.imported} as ${s.local}`));\n parts.push(`{ ${specs.join(\", \")} }`);\n }\n\n return `import ${parts.join(\", \")} from \"${source}\"`;\n}\n\nfunction applyEdits(source: string, edits: TextEdit[]): string {\n const sorted = [...edits].sort((a, b) => b.start - a.start);\n let result = source;\n for (const edit of sorted) {\n result = `${result.slice(0, edit.start)}${edit.text}${result.slice(edit.end)}`;\n }\n return result;\n}\n\nfunction blankRegion(source: string, start: number, end: number): string {\n const newlines = (source.slice(start, end).match(/\\n/g) || []).length;\n return \"\\n\".repeat(newlines);\n}\n\nfunction refsFromExpressionSource(source: string): Set<string> {\n const ast = parseModule(`(${source});`);\n const stmt = (ast.body as AstNode[])[0];\n const expression = stmt.expression as AstNode;\n return collectRefs(expression as acorn.Node);\n}\n\nfunction pruneUnusedTopLevel(source: string, seeds: Set<string>): string {\n let ast: AstNode;\n try {\n ast = parseModule(source);\n } catch {\n return source;\n }\n\n const { decls, imports, rootCalls } = analyzeTopLevel(ast.body as AstNode[]);\n const reachable = computeReachableNames(seeds, decls);\n const edits: TextEdit[] = [];\n\n for (const decl of decls) {\n const used = [...decl.names].some((name) => reachable.has(name));\n if (!used) {\n edits.push({\n start: decl.start,\n end: decl.end,\n text: blankRegion(source, decl.start, decl.end),\n });\n }\n }\n\n for (const imp of imports) {\n const kept = imp.specifiers.filter((specifier) => reachable.has(specifier.local));\n if (kept.length === 0) {\n edits.push({\n start: imp.start,\n end: imp.end,\n text: blankRegion(source, imp.start, imp.end),\n });\n } else if (kept.length < imp.specifiers.length) {\n edits.push({\n start: imp.start,\n end: imp.end,\n text: buildImportStatement(kept, imp.source),\n });\n }\n }\n\n for (const rootCall of rootCalls) {\n edits.push({\n start: rootCall.start,\n end: rootCall.end,\n text: blankRegion(source, rootCall.start, rootCall.end),\n });\n }\n\n return applyEdits(source, edits);\n}\n\nfunction compactExecution(execution?: ExecutionConfig): ExecutionConfig | undefined {\n if (!execution) {\n return undefined;\n }\n\n const compact = Object.fromEntries(\n Object.entries(execution).filter(([, value]) => value !== undefined),\n ) as ExecutionConfig;\n\n return Object.keys(compact).length > 0 ? compact : undefined;\n}\n\nfunction buildBehaviorReplacement(\n source: string,\n spec: AstNode,\n behavior: DiscoveredBehavior,\n): CompiledReplacement {\n const run = findProperty(spec, \"run\");\n if (!run) {\n throw new BuildError(`behavior '${behavior.name}' is missing a run handler`, behavior.location);\n }\n\n const execution = compactExecution(behavior.execution);\n const runSource = functionSourceFromProperty(source, run, \"run\");\n const trackingId = findProperty(spec, \"trackingId\");\n const trackingIdSource = trackingId\n ? functionSourceFromProperty(source, trackingId, \"trackingId\")\n : undefined;\n const applications = findProperty(spec, \"applications\");\n const applicationsSource = applications\n ? expressionSourceFromProperty(source, applications, \"applications\")\n : undefined;\n const configEntries = [\n `kind: \"behavior\"`,\n `name: ${JSON.stringify(behavior.name)}`,\n `channel: ${JSON.stringify(behavior.on)}`,\n ];\n\n if (execution) {\n configEntries.push(`execution: ${JSON.stringify(execution)}`);\n }\n\n if (behavior.messageHistory !== undefined) {\n configEntries.push(`messageHistory: ${JSON.stringify(behavior.messageHistory)}`);\n }\n\n if (applicationsSource) {\n configEntries.push(`applications: ${INTERNAL_APPLICATIONS}`);\n }\n\n const configSource = `Object.freeze({ ${configEntries.join(\", \")} })`;\n\n return {\n replacement: [\n ...(applicationsSource\n ? [`const ${INTERNAL_APPLICATIONS} = ${applicationsSource};`]\n : []),\n `const ${INTERNAL_CONFIG} = ${configSource};`,\n `const ${INTERNAL_TRACKING_ID} = ${trackingIdSource ?? \"undefined\"};`,\n `const ${INTERNAL_RUN} = ${runSource};`,\n `export { ${INTERNAL_CONFIG} as config, ${INTERNAL_TRACKING_ID} as trackingId, ${INTERNAL_RUN} as run };`,\n ].join(\"\\n\"),\n refs: new Set<string>([\n INTERNAL_CONFIG,\n INTERNAL_TRACKING_ID,\n INTERNAL_RUN,\n ...(applicationsSource ? [INTERNAL_APPLICATIONS] : []),\n ...refsFromExpressionSource(runSource),\n ...(trackingIdSource ? refsFromExpressionSource(trackingIdSource) : []),\n ...(applicationsSource ? refsFromExpressionSource(applicationsSource) : []),\n ]),\n };\n}\n\nfunction buildConversationReplacement(\n source: string,\n spec: AstNode,\n conversation: DiscoveredConversation,\n): CompiledReplacement {\n const onMessage = findProperty(spec, \"onMessage\");\n if (!onMessage) {\n throw new BuildError(\n `conversation '${conversation.name}' is missing an onMessage handler`,\n conversation.location,\n );\n }\n\n const execution = compactExecution(conversation.execution);\n const onStart = findProperty(spec, \"onStart\");\n const onEnd = findProperty(spec, \"onEnd\");\n const applications = findProperty(spec, \"applications\");\n\n const onMessageSource = functionSourceFromProperty(source, onMessage, \"onMessage\");\n const onStartSource = onStart ? functionSourceFromProperty(source, onStart, \"onStart\") : undefined;\n const onEndSource = onEnd ? functionSourceFromProperty(source, onEnd, \"onEnd\") : undefined;\n const applicationsSource = applications\n ? expressionSourceFromProperty(source, applications, \"applications\")\n : undefined;\n const configEntries = [\n `kind: \"conversation\"`,\n `name: ${JSON.stringify(conversation.name)}`,\n `channel: ${JSON.stringify(conversationChannel(conversation.name))}`,\n `transport: ${JSON.stringify(conversation.transport)}`,\n ];\n\n if (execution) {\n configEntries.push(`execution: ${JSON.stringify(execution)}`);\n }\n\n if (applicationsSource) {\n configEntries.push(`applications: ${INTERNAL_APPLICATIONS}`);\n }\n\n const configSource = `Object.freeze({ ${configEntries.join(\", \")} })`;\n const refs = new Set<string>([\n INTERNAL_CONFIG,\n INTERNAL_ON_START,\n INTERNAL_ON_MESSAGE,\n INTERNAL_ON_END,\n ...(applicationsSource ? [INTERNAL_APPLICATIONS] : []),\n ...refsFromExpressionSource(onMessageSource),\n ...(onStartSource ? refsFromExpressionSource(onStartSource) : []),\n ...(onEndSource ? refsFromExpressionSource(onEndSource) : []),\n ...(applicationsSource ? refsFromExpressionSource(applicationsSource) : []),\n ]);\n\n return {\n replacement: [\n ...(applicationsSource\n ? [`const ${INTERNAL_APPLICATIONS} = ${applicationsSource};`]\n : []),\n `const ${INTERNAL_CONFIG} = ${configSource};`,\n `const ${INTERNAL_ON_START} = ${onStartSource ?? \"undefined\"};`,\n `const ${INTERNAL_ON_MESSAGE} = ${onMessageSource};`,\n `const ${INTERNAL_ON_END} = ${onEndSource ?? \"undefined\"};`,\n `export { ${INTERNAL_CONFIG} as config, ${INTERNAL_ON_START} as onStart, ${INTERNAL_ON_MESSAGE} as onMessage, ${INTERNAL_ON_END} as onEnd };`,\n ].join(\"\\n\"),\n refs,\n };\n}\n\nexport function compileBehaviorSource(\n source: string,\n behavior: DiscoveredBehavior,\n): string {\n const stmt = rootStatementFor(source, behavior.statementStart, \"behavior\", behavior.name);\n const spec = rootSpecNode(stmt);\n const { replacement, refs } = buildBehaviorReplacement(source, spec, behavior);\n const compiled = replaceRange(\n source,\n stmt.start as number,\n stmt.end as number,\n replacement,\n );\n return pruneUnusedTopLevel(compiled, refs);\n}\n\nexport function compileConversationSource(\n source: string,\n conversation: DiscoveredConversation,\n): string {\n const stmt = rootStatementFor(\n source,\n conversation.statementStart,\n \"conversation\",\n conversation.name,\n );\n const spec = rootSpecNode(stmt);\n const { replacement, refs } = buildConversationReplacement(source, spec, conversation);\n const compiled = replaceRange(\n source,\n stmt.start as number,\n stmt.end as number,\n replacement,\n );\n return pruneUnusedTopLevel(compiled, refs);\n}\n","import { resolve } from \"node:path\";\nimport { rm, mkdir } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\nimport type { CliConfig } from \"../types\";\nimport { scan } from \"./scanner\";\nimport { discoverAll } from \"./parser\";\nimport { resolveAll } from \"./resolver\";\nimport { validate } from \"./validator\";\nimport { validateManifest } from \"./manifest-validator\";\nimport { splitEntities } from \"./splitter\";\nimport { bundleAll } from \"./bundler\";\nimport { generateManifest, type Manifest } from \"./manifest\";\nimport {\n compileBehaviorSource,\n compileConversationSource,\n} from \"./compiled-target\";\n\nexport interface BuildResult {\n manifest: Manifest;\n outDir: string;\n}\n\nexport async function buildPipeline(\n config: CliConfig,\n cwd: string = process.cwd(),\n minify: boolean = false,\n buildDir: string = \".io\",\n): Promise<BuildResult> {\n const dir = resolve(cwd, config.dir);\n const outDir = resolve(cwd, buildDir);\n\n await rm(outDir, { recursive: true, force: true });\n await mkdir(outDir, { recursive: true });\n\n const files = await scan(dir);\n const fileResults = await discoverAll(files);\n const resolved = resolveAll(fileResults);\n validate(resolved);\n\n const allBehaviorSources = new Map<string, { source: string; sourceDir: string }>();\n const allConversationSources = new Map<string, { source: string; sourceDir: string }>();\n\n for (const file of resolved.files) {\n const sourceDir = dirname(file.file);\n\n if (file.behaviors.length > 0) {\n const splits = splitEntities(file.source, file.behaviors);\n for (const behavior of file.behaviors) {\n const source = splits.get(behavior.name);\n if (!source) {\n continue;\n }\n allBehaviorSources.set(behavior.name, {\n source: compileBehaviorSource(source, behavior),\n sourceDir,\n });\n }\n }\n\n if (file.conversations.length > 0) {\n const splits = splitEntities(file.source, file.conversations);\n for (const conversation of file.conversations) {\n const source = splits.get(conversation.name);\n if (!source) {\n continue;\n }\n allConversationSources.set(conversation.name, {\n source: compileConversationSource(source, conversation),\n sourceDir,\n });\n }\n }\n }\n\n const [behaviorBundles, conversationBundles] = await Promise.all([\n bundleAll(allBehaviorSources, outDir, \"behaviors\", minify),\n bundleAll(allConversationSources, outDir, \"conversations\", minify),\n ]);\n\n const manifest = await generateManifest({\n cwd,\n userFiles: files,\n outDir,\n behaviorBundles,\n conversationBundles,\n });\n validateManifest(manifest);\n\n return { manifest, outDir };\n}\n","import { mkdtemp, rm } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { tmpdir } from \"node:os\";\n\nexport async function createStagingDir(): Promise<string> {\n return mkdtemp(join(tmpdir(), \"io-cli-\"));\n}\n\nexport async function cleanupStagingDir(path?: string): Promise<void> {\n if (!path) {\n return;\n }\n\n await rm(path, { recursive: true, force: true }).catch(() => {});\n}\n","import chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { buildPipeline } from \"../build/pipeline\";\nimport { cleanupStagingDir, createStagingDir } from \"../build/staging\";\nimport { CliError } from \"../errors\";\n\ninterface BuildOptions {\n dir?: string;\n minify?: boolean;\n}\n\nexport async function buildCommand(options: BuildOptions): Promise<void> {\n let stagingDir: string | undefined;\n\n try {\n const config = await loadConfig({\n dir: options.dir,\n });\n\n console.log(chalk.gray(\"Validating deployment...\"));\n\n stagingDir = await createStagingDir();\n\n const { manifest } = await buildPipeline(\n config,\n process.cwd(),\n options.minify,\n stagingDir,\n );\n\n const apps = (manifest.apps as unknown[] | undefined) ?? [];\n const resources = apps.flatMap((app) => {\n if (!app || typeof app !== \"object\") return [];\n const appResources = (app as { resources?: unknown }).resources;\n return Array.isArray(appResources) ? appResources : [];\n });\n const tools = resources.flatMap((resource) => {\n if (!resource || typeof resource !== \"object\") return [];\n const resourceTools = (resource as { tools?: unknown }).tools;\n return Array.isArray(resourceTools) ? resourceTools : [];\n });\n const targets = (manifest.targets as unknown[] | undefined) ?? [];\n const subscriptions = (manifest.subscriptions as unknown[] | undefined) ?? [];\n const secretBundles = (manifest.secret_bundles as unknown[] | undefined) ?? [];\n\n const parts = [\n `${apps.length} app${apps.length === 1 ? \"\" : \"s\"}`,\n `${resources.length} resource${resources.length === 1 ? \"\" : \"s\"}`,\n `${tools.length} tool capabilit${tools.length === 1 ? \"y\" : \"ies\"}`,\n `${targets.length} target${targets.length === 1 ? \"\" : \"s\"}`,\n `${subscriptions.length} subscription${subscriptions.length === 1 ? \"\" : \"s\"}`,\n `${secretBundles.length} secret bundle${secretBundles.length === 1 ? \"\" : \"s\"}`,\n ];\n\n console.log(chalk.green(`\\u2713 Build succeeded (${parts.join(\", \")})`));\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n } finally {\n await cleanupStagingDir(stagingDir);\n }\n}\n","import { createWriteStream } from \"node:fs\";\nimport { readdir, stat } from \"node:fs/promises\";\nimport { join, relative, resolve } from \"node:path\";\nimport archiver from \"archiver\";\n\nexport async function zipBuildOutput(\n buildDir: string,\n outPath: string,\n): Promise<{ path: string; size: number }> {\n const output = createWriteStream(outPath);\n const archive = archiver(\"zip\", { zlib: { level: 9 } });\n\n const done = new Promise<void>((resolve, reject) => {\n output.on(\"close\", resolve);\n archive.on(\"error\", reject);\n });\n\n archive.pipe(output);\n\n const skipRelativePath = relative(resolve(buildDir), resolve(outPath));\n await addDirectory(archive, buildDir, \"\", skipRelativePath);\n\n await archive.finalize();\n await done;\n\n const info = await stat(outPath);\n return { path: outPath, size: info.size };\n}\n\nasync function addDirectory(\n archive: archiver.Archiver,\n baseDir: string,\n prefix: string,\n skipRelativePath?: string,\n): Promise<void> {\n const entries = await readdir(join(baseDir, prefix), {\n withFileTypes: true,\n });\n\n for (const entry of entries) {\n const entryPath = prefix ? `${prefix}/${entry.name}` : entry.name;\n\n if (skipRelativePath && entryPath === skipRelativePath) {\n continue;\n }\n\n if (entry.isDirectory()) {\n await addDirectory(archive, baseDir, entryPath, skipRelativePath);\n } else {\n archive.file(join(baseDir, entryPath), { name: entryPath });\n }\n }\n}\n","import type { Manifest } from \"../types\";\n\nexport type ChangeKind = \"added\" | \"changed\" | \"removed\";\n\nexport interface DiffEntry {\n name: string;\n kind: ChangeKind;\n}\n\nexport interface ManifestDiff {\n apps: DiffEntry[];\n resources: DiffEntry[];\n tools: DiffEntry[];\n capabilities: DiffEntry[];\n secret_bundles: DiffEntry[];\n targets: DiffEntry[];\n subscriptions: DiffEntry[];\n hasChanges: boolean;\n}\n\ninterface NamedEntry {\n readonly name?: unknown;\n}\n\ninterface IndexedEntry {\n readonly name: string;\n readonly value: unknown;\n}\n\nfunction stableStringify(value: unknown): string {\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(\",\")}]`;\n }\n if (value && typeof value === \"object\") {\n const record = value as Record<string, unknown>;\n return `{${Object.keys(record)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`)\n .join(\",\")}}`;\n }\n return JSON.stringify(value);\n}\n\nfunction namedEntries(field: unknown): IndexedEntry[] {\n if (!Array.isArray(field)) {\n return [];\n }\n const entries: IndexedEntry[] = [];\n for (const entry of field) {\n if (entry && typeof entry === \"object\" && \"name\" in entry) {\n const candidate = (entry as NamedEntry).name;\n if (typeof candidate === \"string\" && candidate.length > 0) {\n entries.push({ name: candidate, value: entry });\n }\n }\n }\n return entries;\n}\n\nfunction diffEntries(local: IndexedEntry[], remote: IndexedEntry[]): DiffEntry[] {\n const remoteMap = new Map(remote.map((entry) => [entry.name, entry.value]));\n const localMap = new Map(local.map((entry) => [entry.name, entry.value]));\n const entries: DiffEntry[] = [];\n for (const { name, value } of local) {\n if (!remoteMap.has(name)) {\n entries.push({ name, kind: \"added\" });\n } else if (stableStringify(value) !== stableStringify(remoteMap.get(name))) {\n entries.push({ name, kind: \"changed\" });\n }\n }\n for (const { name } of remote) {\n if (!localMap.has(name)) entries.push({ name, kind: \"removed\" });\n }\n return entries;\n}\n\nfunction appEntries(manifest: Manifest): IndexedEntry[] {\n return namedEntries(manifest.apps).map((app) => {\n const appRecord = app.value as Record<string, unknown>;\n return {\n name: app.name,\n value: Object.fromEntries(\n Object.entries(appRecord).filter(([key]) => key !== \"resources\"),\n ),\n };\n });\n}\n\nfunction appResources(manifest: Manifest): IndexedEntry[] {\n const apps = namedEntries(manifest.apps);\n const entries: IndexedEntry[] = [];\n for (const app of apps) {\n const appRecord = app.value as Record<string, unknown>;\n for (const resource of namedEntries(appRecord.resources)) {\n const resourceRecord = resource.value as Record<string, unknown>;\n const resourceValue = Object.fromEntries(\n Object.entries(resourceRecord).filter(([key]) => key !== \"tools\"),\n );\n entries.push({\n name: `${app.name}/${resource.name}`,\n value: resourceValue,\n });\n }\n }\n return entries;\n}\n\nfunction resourceTools(manifest: Manifest): IndexedEntry[] {\n const apps = namedEntries(manifest.apps);\n const entries: IndexedEntry[] = [];\n for (const app of apps) {\n const appRecord = app.value as Record<string, unknown>;\n for (const resource of namedEntries(appRecord.resources)) {\n const resourceRecord = resource.value as Record<string, unknown>;\n for (const tool of namedEntries(resourceRecord.tools)) {\n entries.push({\n name: `${app.name}/${resource.name}/${tool.name}`,\n value: tool.value,\n });\n }\n }\n }\n return entries;\n}\n\nfunction capabilityEntries(manifest: Manifest): IndexedEntry[] {\n const apps = namedEntries(manifest.apps);\n const entries: IndexedEntry[] = [];\n for (const app of apps) {\n const appRecord = app.value as Record<string, unknown>;\n for (const resource of namedEntries(appRecord.resources)) {\n const resourceRecord = resource.value as Record<string, unknown>;\n if (resourceRecord.capability) {\n entries.push({\n name: `resource:${app.name}/${resource.name}`,\n value: resourceRecord.capability,\n });\n }\n for (const tool of namedEntries(resourceRecord.tools)) {\n const toolRecord = tool.value as Record<string, unknown>;\n if (toolRecord.capability) {\n entries.push({\n name: `tool:${app.name}/${resource.name}/${tool.name}`,\n value: toolRecord.capability,\n });\n }\n }\n }\n }\n return entries;\n}\n\nexport function diffManifests(local: Manifest, remote: Manifest): ManifestDiff {\n const apps = diffEntries(appEntries(local), appEntries(remote));\n const resources = diffEntries(appResources(local), appResources(remote));\n const tools = diffEntries(resourceTools(local), resourceTools(remote));\n const capabilities = diffEntries(\n capabilityEntries(local),\n capabilityEntries(remote),\n );\n const secret_bundles = diffEntries(\n namedEntries(local.secret_bundles),\n namedEntries(remote.secret_bundles),\n );\n const targets = diffEntries(\n namedEntries(local.targets),\n namedEntries(remote.targets),\n );\n const subscriptions = diffEntries(\n namedEntries(local.subscriptions),\n namedEntries(remote.subscriptions),\n );\n\n const hasChanges =\n apps.length > 0 ||\n resources.length > 0 ||\n tools.length > 0 ||\n capabilities.length > 0 ||\n secret_bundles.length > 0 ||\n targets.length > 0 ||\n subscriptions.length > 0;\n\n return {\n apps,\n resources,\n tools,\n capabilities,\n secret_bundles,\n targets,\n subscriptions,\n hasChanges,\n };\n}\n","import chalk from \"chalk\";\nimport { createInterface } from \"node:readline\";\nimport type { ManifestDiff, DiffEntry } from \"./diff\";\n\nconst SYMBOLS: Record<string, string> = {\n added: chalk.green(\"+ \"),\n changed: chalk.yellow(\"~ \"),\n removed: chalk.red(\"- \"),\n};\n\nconst LABELS: Record<string, string> = {\n added: \"new\",\n changed: \"changed\",\n removed: \"removed\",\n};\n\nconst SECTIONS = [\n { key: \"apps\" as const, label: \"Apps\" },\n { key: \"resources\" as const, label: \"Resources\" },\n { key: \"tools\" as const, label: \"Tools\" },\n { key: \"capabilities\" as const, label: \"Tool access\" },\n { key: \"secret_bundles\" as const, label: \"Secret bundles\" },\n { key: \"targets\" as const, label: \"Targets\" },\n { key: \"subscriptions\" as const, label: \"Subscriptions\" },\n];\n\nexport function formatPlan(diff: ManifestDiff): string {\n const lines: string[] = [];\n\n for (const { key, label } of SECTIONS) {\n const entries: DiffEntry[] = diff[key];\n lines.push(` ${label}:`);\n if (entries.length === 0) {\n lines.push(chalk.gray(\" (no changes)\"));\n } else {\n for (const e of entries) {\n lines.push(\n ` ${SYMBOLS[e.kind]}${e.name} ${chalk.gray(`(${LABELS[e.kind]})`)}`,\n );\n }\n }\n }\n\n return lines.join(\"\\n\");\n}\n\nexport async function confirmPlan(skip: boolean): Promise<boolean> {\n if (skip) return true;\n\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(\"\\nApply these changes? (y/n) \", (answer) => {\n rl.close();\n resolve(answer.trim().toLowerCase() === \"y\");\n });\n });\n}\n","import { readFile, writeFile, rm, mkdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\n\nexport interface Credentials {\n token: string;\n refreshToken?: string;\n expiresAt?: number;\n userId?: string;\n organizationId?: string;\n apiKey?: boolean;\n}\n\nfunction credentialsDir(): string {\n return join(homedir(), \".io\");\n}\n\nfunction credentialsFile(): string {\n return join(credentialsDir(), \"credentials.json\");\n}\n\nexport async function saveCredentials(creds: {\n token: string;\n refreshToken?: string;\n expiresIn?: number;\n expiresAt?: number;\n userId?: string;\n organizationId?: string;\n apiKey?: boolean;\n}): Promise<void> {\n const dir = credentialsDir();\n await mkdir(dir, { recursive: true });\n const data: Credentials = {\n token: creds.token,\n refreshToken: creds.refreshToken,\n expiresAt:\n creds.expiresIn !== undefined\n ? Date.now() + creds.expiresIn * 1000\n : creds.expiresAt,\n userId: creds.userId,\n organizationId: creds.organizationId,\n apiKey: creds.apiKey,\n };\n await writeFile(credentialsFile(), JSON.stringify(data, null, 2), \"utf-8\");\n}\n\nexport async function loadCredentials(): Promise<Credentials | null> {\n try {\n const raw = await readFile(credentialsFile(), \"utf-8\");\n const data = JSON.parse(raw) as Credentials;\n return data.token ? data : null;\n } catch {\n return null;\n }\n}\n\nexport function isExpired(creds: Credentials): boolean {\n if (!creds.expiresAt) return false;\n return Date.now() >= creds.expiresAt - 30_000;\n}\n\nexport async function saveToken(token: string, apiKey = false): Promise<void> {\n await saveCredentials({ token, apiKey });\n}\n\nexport async function loadToken(): Promise<string | null> {\n const creds = await loadCredentials();\n return creds?.token ?? null;\n}\n\nexport async function clearToken(): Promise<void> {\n try {\n await rm(credentialsFile());\n } catch {\n }\n}\n","const LOGIN_AGAIN = \"Session refresh failed. Run `io login` again.\";\n\nexport function refreshSessionErrorMessage(reason?: string): string {\n const normalized = reason?.trim();\n\n if (!normalized || normalized.toLowerCase() === \"unknown\") {\n return LOGIN_AGAIN;\n }\n\n return `${LOGIN_AGAIN} (${normalized})`;\n}\n","import type { Credentials } from \"./store\";\n\ntype AuthCredentials = Pick<Credentials, \"token\" | \"apiKey\">;\n\nexport function authHeaders(creds: AuthCredentials): Record<string, string> {\n if (creds.apiKey) {\n return { \"X-API-Key\": creds.token };\n }\n\n return { Authorization: `Bearer ${creds.token}` };\n}\n\nexport function socketAuthParams(\n creds: AuthCredentials,\n): Record<string, string> {\n if (creds.apiKey) {\n return { apiKey: creds.token };\n }\n\n return { authorization: `Bearer ${creds.token}` };\n}\n","export function stableStringify(value: unknown, indent?: number): string {\n return JSON.stringify(canonicalize(value), null, indent);\n}\n\nfunction canonicalize(value: unknown): unknown {\n if (value === null) return null;\n if (Array.isArray(value)) {\n return value.map(canonicalize);\n }\n if (typeof value === \"object\") {\n const obj = value as Record<string, unknown>;\n const sorted: Record<string, unknown> = {};\n for (const key of Object.keys(obj).sort()) {\n sorted[key] = canonicalize(obj[key]);\n }\n return sorted;\n }\n return value;\n}\n","const EVENT_NAME_REGEX = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;\nconst SIGNAL_NAME_REGEX = /^signal:[A-Za-z0-9][A-Za-z0-9._-]*$/;\n\nexport function normalizeRuntimeSignalName(value: string): string | null {\n const trimmed = value.trim();\n\n if (EVENT_NAME_REGEX.test(trimmed)) {\n return `signal:${trimmed}`;\n }\n\n if (SIGNAL_NAME_REGEX.test(trimmed)) {\n return trimmed;\n }\n\n return null;\n}\n","import { readFile, stat } from \"node:fs/promises\";\nimport { basename } from \"node:path\";\nimport {\n loadCredentials,\n saveCredentials,\n isExpired,\n type Credentials,\n} from \"../auth/store\";\nimport { refreshSessionErrorMessage } from \"../auth/refresh-error\";\nimport { authHeaders } from \"../auth/transport\";\nimport { ApiError, ConfigError } from \"../errors\";\nimport { stableStringify } from \"../build/stable-json\";\nimport type { Manifest } from \"../types\";\nimport { normalizeRuntimeSignalName } from \"../runtime-signal-name\";\n\nexport type ApiClient = ReturnType<typeof createClient>;\n\ninterface ClientConfig {\n apiUrl: string;\n projectId: string;\n}\n\ninterface GraphQLErrorShape {\n message?: string;\n}\n\ninterface GraphQLResponse<T> {\n data?: T;\n errors?: unknown;\n}\n\nexport interface AuthSessionPayload {\n accessToken?: string;\n activeOrgId?: string;\n email: string;\n expiresIn?: number;\n name?: string;\n organizationId?: string;\n organizationIds: string[];\n refreshToken?: string;\n roles: string[];\n sessionId?: string;\n tokenType?: string;\n userId: string;\n}\n\nexport interface OrganizationSummary {\n id: string;\n name: string;\n slug: string;\n}\n\nexport interface ProjectSummary {\n description?: string | null;\n id: string;\n name: string;\n organizationId: string;\n slug: string;\n}\n\nexport interface PrincipalSummary {\n id: string;\n externalId: string;\n state: \"active\" | \"inactive\" | \"archived\";\n metadata: Record<string, unknown>;\n projectId: string;\n insertedAt?: string | null;\n updatedAt?: string | null;\n}\n\nexport interface SecretSummary {\n name: string;\n projectId: string;\n hasValue: boolean;\n insertedAt: string;\n updatedAt: string;\n}\n\nexport interface DeploymentRevision {\n id: string;\n projectId: string;\n revision: number;\n bundleHash: string;\n status: string;\n activatedAt: string | null;\n insertedAt: string;\n updatedAt: string;\n}\n\nexport interface RuntimeEvent {\n id: string;\n projectId: string;\n principalId?: string | null;\n kind: string;\n name: string;\n sourceName?: string | null;\n correlationId?: string | null;\n causationId?: string | null;\n dispatchStatus?: string | null;\n occurredAt?: string | null;\n insertedAt?: string | null;\n}\n\nexport interface EmitSignalInput {\n projectId?: string;\n principalId: string;\n signal: string;\n payload?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n correlationId?: string;\n causationId?: string;\n idempotencyKey?: string;\n sourceName?: string;\n}\n\nexport interface BundleArtifactUpload {\n bundleHash: string;\n sizeBytes: number;\n entryCount: number;\n}\n\nexport interface QuotaStatus {\n meter: string;\n used: number;\n limit: number;\n remaining: number;\n percentageUsed: number;\n enforcement: string;\n}\n\nexport interface ActivityEvent {\n id: string;\n eventType: string;\n targetKind?: string | null;\n targetName?: string | null;\n principalId?: string | null;\n level?: string | null;\n message?: string | null;\n payload?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n displayCategory?: string | null;\n displayStatus?: string | null;\n displayName?: string | null;\n displayDetail?: string | null;\n occurredAt: string;\n durationMs?: number | null;\n}\n\nexport interface ActivityEventFilterInput {\n eventTypes?: string[];\n level?: string;\n limit?: number;\n principalId?: string;\n since?: string;\n targetKind?: string;\n targetName?: string;\n until?: string;\n}\n\ninterface RestEnvelope<T> {\n data?: T;\n error?: string;\n}\n\ninterface AuthSessionPayloadWire {\n accessToken?: string;\n access_token?: string;\n activeOrgId?: string;\n active_org_id?: string;\n email?: string;\n expiresIn?: number | string;\n expires_in?: number | string;\n name?: string;\n organizationId?: string;\n organization_id?: string;\n organizationIds?: string[];\n organization_ids?: string[];\n refreshToken?: string;\n refresh_token?: string;\n roles?: string[];\n sessionId?: string;\n session_id?: string;\n tokenType?: string;\n token_type?: string;\n userId?: string;\n user_id?: string;\n}\n\nconst REFRESH_MUTATION = `\n mutation Refresh($input: RefreshAuthInput!) {\n refresh(input: $input) {\n accessToken\n activeOrgId\n email\n expiresIn\n name\n organizationId\n organizationIds\n refreshToken\n roles\n sessionId\n tokenType\n userId\n }\n }\n`;\n\nconst ME_QUERY = `\n query Me {\n me {\n id\n email\n name\n activeOrganizationId\n }\n }\n`;\n\nfunction parseExpiresIn(value: unknown): number | undefined {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === \"string\") {\n const parsed = Number.parseInt(value, 10);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n return undefined;\n}\n\nfunction normalizeAuthSessionPayload(payload: AuthSessionPayloadWire): AuthSessionPayload {\n return {\n accessToken: payload.accessToken ?? payload.access_token,\n activeOrgId: payload.activeOrgId ?? payload.active_org_id,\n email: payload.email ?? \"\",\n expiresIn: parseExpiresIn(payload.expiresIn ?? payload.expires_in),\n name: payload.name,\n organizationId: payload.organizationId ?? payload.organization_id,\n organizationIds: payload.organizationIds ?? payload.organization_ids ?? [],\n refreshToken: payload.refreshToken ?? payload.refresh_token,\n roles: payload.roles ?? [],\n sessionId: payload.sessionId ?? payload.session_id,\n tokenType: payload.tokenType ?? payload.token_type,\n userId: payload.userId ?? payload.user_id ?? \"\",\n };\n}\n\nfunction trimBaseUrl(apiUrl: string): string {\n return apiUrl.replace(/\\/+$/, \"\");\n}\n\nfunction requireApiUrl(config: ClientConfig): string {\n if (!config.apiUrl) {\n throw new ConfigError(\n \"No apiUrl configured. Set it in io.config.json or IO_API_URL env var.\",\n );\n }\n return config.apiUrl;\n}\n\nfunction requireProjectId(config: ClientConfig): string {\n if (!config.projectId) {\n throw new ConfigError(\n \"No projectId configured. Set it in io.config.json or IO_PROJECT_ID env var.\",\n );\n }\n return config.projectId;\n}\n\nfunction apiErrorFromGraphQL(\n statusCode: number,\n payload?: GraphQLResponse<unknown>,\n): ApiError {\n const message = graphqlErrorMessage(payload?.errors) || `Request failed (${statusCode})`;\n\n return new ApiError(message, statusCode);\n}\n\nfunction graphqlErrorMessage(errors: unknown): string | null {\n if (Array.isArray(errors)) {\n const message = errors\n .map((error) => {\n if (error && typeof error === \"object\" && \"message\" in error) {\n const value = (error as GraphQLErrorShape).message;\n return typeof value === \"string\" ? value : null;\n }\n\n return typeof error === \"string\" ? error : null;\n })\n .filter((message): message is string => Boolean(message))\n .join(\"; \");\n\n return message || null;\n }\n\n if (typeof errors === \"string\" && errors.trim() !== \"\") {\n return errors;\n }\n\n if (errors && typeof errors === \"object\" && \"message\" in errors) {\n const value = (errors as GraphQLErrorShape).message;\n return typeof value === \"string\" && value.trim() !== \"\" ? value : null;\n }\n\n return null;\n}\n\nfunction isMissingSnapshotJsonFieldError(error: unknown): boolean {\n return (\n error instanceof ApiError &&\n error.message.includes(\"snapshotJson\") &&\n error.message.includes(\"Cannot query field\")\n );\n}\n\nfunction parseRemoteManifest(snapshotJson: string): Manifest {\n let parsed: unknown;\n try {\n parsed = JSON.parse(snapshotJson);\n } catch (err: unknown) {\n throw new ConfigError(\n `Remote deployment snapshot was not valid JSON: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new ConfigError(\"Remote deployment snapshot was not a JSON object.\");\n }\n\n return parsed as Manifest;\n}\n\nasync function executeGraphQLUnauth<T>(\n apiUrl: string,\n query: string,\n variables?: Record<string, unknown>,\n headers: Record<string, string> = {},\n): Promise<T> {\n const response = await fetch(`${trimBaseUrl(apiUrl)}/graphql`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n body: JSON.stringify({ query, variables }),\n });\n\n const payload = (await response.json()) as GraphQLResponse<T>;\n\n if (!response.ok || graphqlErrorMessage(payload.errors)) {\n throw apiErrorFromGraphQL(response.status, payload);\n }\n\n if (payload.data === undefined) {\n throw new ApiError(\"GraphQL response did not include data.\", response.status);\n }\n\n return payload.data;\n}\n\nasync function refreshAndSave(\n apiUrl: string,\n refreshToken: string,\n): Promise<Credentials> {\n let data: { refresh: AuthSessionPayload };\n\n try {\n data = await executeGraphQLUnauth<{ refresh: AuthSessionPayload }>(\n apiUrl,\n REFRESH_MUTATION,\n { input: { refreshToken } },\n );\n } catch (err: unknown) {\n const reason = err instanceof Error ? err.message : undefined;\n throw new ConfigError(refreshSessionErrorMessage(reason));\n }\n\n const issued = data.refresh;\n const accessToken = issued.accessToken ?? \"\";\n const expiresIn = parseExpiresIn(issued.expiresIn);\n\n if (!accessToken) {\n throw new ConfigError(refreshSessionErrorMessage());\n }\n\n const organizationId = issued.organizationId ?? issued.activeOrgId;\n\n const newCreds: Credentials = {\n token: accessToken,\n refreshToken: issued.refreshToken ?? refreshToken,\n userId: issued.userId,\n organizationId,\n expiresAt: expiresIn ? Date.now() + expiresIn * 1000 : undefined,\n };\n\n await saveCredentials({\n token: newCreds.token,\n refreshToken: newCreds.refreshToken,\n userId: newCreds.userId,\n organizationId: newCreds.organizationId,\n expiresIn,\n });\n\n return newCreds;\n}\n\nasync function getCredentials(apiUrl: string): Promise<Credentials> {\n const creds = await loadCredentials();\n if (!creds) {\n throw new ConfigError(\"Not authenticated. Run `io login` first.\");\n }\n\n if (!creds.apiKey && isExpired(creds) && creds.refreshToken) {\n return refreshAndSave(apiUrl, creds.refreshToken);\n }\n\n return creds;\n}\n\nasync function executeGraphQL<T>(\n apiUrl: string,\n query: string,\n variables?: Record<string, unknown>,\n): Promise<T> {\n const creds = await getCredentials(apiUrl);\n\n try {\n return await executeGraphQLUnauth<T>(apiUrl, query, variables, authHeaders(creds));\n } catch (err: unknown) {\n if (\n err instanceof ApiError &&\n err.statusCode == 401 &&\n !creds.apiKey &&\n creds.refreshToken\n ) {\n const refreshed = await refreshAndSave(apiUrl, creds.refreshToken);\n return executeGraphQLUnauth<T>(apiUrl, query, variables, authHeaders(refreshed));\n }\n\n throw err;\n }\n}\n\nasync function uploadBundleUnauth(\n apiUrl: string,\n projectId: string,\n bundle: Buffer,\n filename: string,\n authHeaders: Record<string, string>,\n): Promise<BundleArtifactUpload> {\n const form = new FormData();\n form.append(\"project_id\", projectId);\n form.append(\"bundle\", new Blob([new Uint8Array(bundle)]), filename);\n\n const response = await fetch(`${trimBaseUrl(apiUrl)}/api/v1/bundles`, {\n method: \"POST\",\n headers: { ...authHeaders },\n body: form,\n });\n\n const text = await response.text();\n let payload: { data?: BundleArtifactUploadWire; error?: string } = {};\n try {\n payload = text ? JSON.parse(text) : {};\n } catch {\n throw new ApiError(`bundle upload returned non-JSON: ${text || \"(empty)\"}`, response.status);\n }\n\n if (!response.ok || payload.error) {\n throw new ApiError(payload.error ?? `bundle upload failed (${response.status})`, response.status);\n }\n\n if (!payload.data) {\n throw new ApiError(\"bundle upload returned no data\", response.status);\n }\n\n return {\n bundleHash: payload.data.bundle_hash,\n sizeBytes: payload.data.size_bytes,\n entryCount: payload.data.entry_count,\n };\n}\n\ninterface BundleArtifactUploadWire {\n bundle_hash: string;\n size_bytes: number;\n entry_count: number;\n}\n\nasync function uploadBundleArtifact(\n apiUrl: string,\n projectId: string,\n bundle: Buffer,\n filename: string,\n): Promise<BundleArtifactUpload> {\n const creds = await getCredentials(apiUrl);\n\n try {\n return await uploadBundleUnauth(apiUrl, projectId, bundle, filename, authHeaders(creds));\n } catch (err: unknown) {\n if (\n err instanceof ApiError &&\n err.statusCode === 401 &&\n !creds.apiKey &&\n creds.refreshToken\n ) {\n const refreshed = await refreshAndSave(apiUrl, creds.refreshToken);\n return uploadBundleUnauth(apiUrl, projectId, bundle, filename, authHeaders(refreshed));\n }\n\n throw err;\n }\n}\n\n\nfunction slugify(name: string): string {\n const slug = name\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n\n return slug || \"project\";\n}\n\nexport function buildCliBrowserLoginUrl(\n apiUrl: string,\n callbackUrl: string,\n state: string,\n codeChallenge: string,\n): string {\n const query = new URLSearchParams({\n callback_url: callbackUrl,\n state,\n code_challenge: codeChallenge,\n });\n\n return `${trimBaseUrl(apiUrl)}/api/v1/auth/cli?${query.toString()}`;\n}\n\nexport async function exchangeCliCode(\n apiUrl: string,\n code: string,\n state: string,\n codeVerifier: string,\n): Promise<AuthSessionPayload> {\n const response = await fetch(`${trimBaseUrl(apiUrl)}/api/v1/auth/cli/exchange`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code, state, code_verifier: codeVerifier }),\n });\n\n const payload = (await response.json()) as RestEnvelope<AuthSessionPayloadWire>;\n\n if (!response.ok || !payload.data) {\n throw new ApiError(payload.error || `Request failed (${response.status})`, response.status);\n }\n\n return normalizeAuthSessionPayload(payload.data);\n}\n\nexport function createClient(config: ClientConfig) {\n const apiUrl = requireApiUrl(config);\n\n async function graphql<T>(\n query: string,\n variables?: Record<string, unknown>,\n ): Promise<T> {\n return executeGraphQL<T>(apiUrl, query, variables);\n }\n\n function projectId(): string {\n return requireProjectId(config);\n }\n\n async function me(): Promise<AuthSessionPayload | null> {\n const data = await graphql<{\n me: {\n id: string;\n email: string;\n name?: string | null;\n activeOrganizationId?: string | null;\n } | null;\n }>(ME_QUERY);\n\n const user = data.me;\n if (!user) return null;\n\n return {\n userId: user.id,\n email: user.email,\n name: user.name ?? undefined,\n activeOrgId: user.activeOrganizationId ?? undefined,\n organizationId: user.activeOrganizationId ?? undefined,\n organizationIds: user.activeOrganizationId ? [user.activeOrganizationId] : [],\n roles: [],\n };\n }\n\n async function organizations(): Promise<OrganizationSummary[]> {\n const data = await graphql<{ organizations: OrganizationSummary[] }>(`\n query Organizations {\n organizations {\n id\n name\n slug\n }\n }\n `);\n\n return data.organizations ?? [];\n }\n\n async function projects(organizationId: string): Promise<ProjectSummary[]> {\n const data = await graphql<{ projects: ProjectSummary[] }>(\n `\n query Projects($organizationId: ID!) {\n projects(organizationId: $organizationId) {\n id\n name\n slug\n description\n organizationId\n }\n }\n `,\n { organizationId },\n );\n\n return data.projects ?? [];\n }\n\n async function createProject(\n organizationId: string,\n name: string,\n ): Promise<ProjectSummary> {\n const data = await graphql<{ createProject: ProjectSummary }>(\n `\n mutation CreateProject($organizationId: ID!, $input: CreateProjectInput!) {\n createProject(organizationId: $organizationId, input: $input) {\n id\n name\n slug\n description\n organizationId\n }\n }\n `,\n {\n organizationId,\n input: {\n name,\n slug: slugify(name),\n description: \"\",\n },\n },\n );\n\n return data.createProject;\n }\n\n async function principals(projectIdValue: string): Promise<PrincipalSummary[]> {\n const data = await graphql<{ principals: PrincipalSummary[] }>(\n `\n query Principals($projectId: ID!) {\n principals(projectId: $projectId) {\n id\n externalId\n state\n metadata\n projectId\n insertedAt\n updatedAt\n }\n }\n `,\n { projectId: projectIdValue },\n );\n\n return data.principals ?? [];\n }\n\n async function createPrincipal(\n projectIdValue: string,\n input: {\n externalId: string;\n state?: \"active\" | \"inactive\" | \"archived\";\n metadata?: Record<string, unknown>;\n },\n ): Promise<PrincipalSummary> {\n const data = await graphql<{ createPrincipal: PrincipalSummary }>(\n `\n mutation CreatePrincipal($projectId: ID!, $input: CreatePrincipalInput!) {\n createPrincipal(projectId: $projectId, input: $input) {\n id\n externalId\n state\n metadata\n projectId\n insertedAt\n updatedAt\n }\n }\n `,\n { projectId: projectIdValue, input },\n );\n\n return data.createPrincipal;\n }\n\n async function updatePrincipal(\n projectIdValue: string,\n id: string,\n input: {\n externalId?: string;\n state?: \"active\" | \"inactive\" | \"archived\";\n metadata?: Record<string, unknown>;\n },\n ): Promise<PrincipalSummary | null> {\n const data = await graphql<{ updatePrincipal: PrincipalSummary | null }>(\n `\n mutation UpdatePrincipal($projectId: ID!, $id: ID!, $input: UpdatePrincipalInput!) {\n updatePrincipal(projectId: $projectId, id: $id, input: $input) {\n id\n externalId\n state\n metadata\n projectId\n insertedAt\n updatedAt\n }\n }\n `,\n { projectId: projectIdValue, id, input },\n );\n\n return data.updatePrincipal ?? null;\n }\n\n async function deletePrincipal(projectIdValue: string, id: string): Promise<PrincipalSummary | null> {\n const data = await graphql<{ deletePrincipal: PrincipalSummary | null }>(\n `\n mutation DeletePrincipal($projectId: ID!, $id: ID!) {\n deletePrincipal(projectId: $projectId, id: $id) {\n id\n externalId\n state\n metadata\n projectId\n insertedAt\n updatedAt\n }\n }\n `,\n { projectId: projectIdValue, id },\n );\n\n return data.deletePrincipal ?? null;\n }\n\n async function listSecrets(projectIdValue: string): Promise<SecretSummary[]> {\n const data = await graphql<{ secrets: SecretSummary[] }>(\n `\n query Secrets($projectId: ID!) {\n secrets(projectId: $projectId) {\n name\n projectId\n hasValue\n insertedAt\n updatedAt\n }\n }\n `,\n { projectId: projectIdValue },\n );\n\n return data.secrets ?? [];\n }\n\n async function putSecret(\n projectIdValue: string,\n input: { name: string; value: string; metadataJson?: string },\n ): Promise<SecretSummary> {\n const data = await graphql<{ putSecret: SecretSummary }>(\n `\n mutation PutSecret($input: PutSecretInput!) {\n putSecret(input: $input) {\n name\n projectId\n hasValue\n insertedAt\n updatedAt\n }\n }\n `,\n {\n input: {\n projectId: projectIdValue,\n name: input.name,\n plaintext: input.value,\n metadataJson: input.metadataJson,\n },\n },\n );\n\n return data.putSecret;\n }\n\n async function deleteSecret(\n projectIdValue: string,\n name: string,\n ): Promise<boolean> {\n const data = await graphql<{ deleteSecret: boolean | null }>(\n `\n mutation DeleteSecret($input: DeleteSecretInput!) {\n deleteSecret(input: $input)\n }\n `,\n { input: { projectId: projectIdValue, name } },\n );\n\n return data.deleteSecret === true;\n }\n\n async function fetchRemoteManifest(projectIdValue: string): Promise<Manifest> {\n let data: {\n activeDeployment: {\n snapshotJson?: string | null;\n } | null;\n };\n\n try {\n data = await graphql<{\n activeDeployment: {\n snapshotJson?: string | null;\n } | null;\n }>(\n `\n query ActiveDeploymentSnapshot($projectId: ID!) {\n activeDeployment(projectId: $projectId) {\n snapshotJson\n }\n }\n `,\n { projectId: projectIdValue },\n );\n } catch (err: unknown) {\n if (isMissingSnapshotJsonFieldError(err)) {\n return {};\n }\n throw err;\n }\n\n const snapshotJson = data.activeDeployment?.snapshotJson;\n return typeof snapshotJson === \"string\" && snapshotJson.trim() !== \"\"\n ? parseRemoteManifest(snapshotJson)\n : {};\n }\n\n async function deployBundle(\n bundlePath: string,\n manifest: Manifest,\n ): Promise<DeploymentRevision> {\n const MAX_BUNDLE_BYTES = 100 * 1024 * 1024;\n const fileStat = await stat(bundlePath);\n if (fileStat.size > MAX_BUNDLE_BYTES) {\n throw new ConfigError(\n `bundle size (${(fileStat.size / 1024 / 1024).toFixed(1)}MB) exceeds maximum allowed (${MAX_BUNDLE_BYTES / 1024 / 1024}MB)`,\n );\n }\n\n const zipBuffer = await readFile(bundlePath);\n const projectIdValue = projectId();\n\n const upload = await uploadBundleArtifact(\n apiUrl,\n projectIdValue,\n zipBuffer,\n basename(bundlePath),\n );\n\n const active = await activeRevision(projectIdValue);\n const nextRevision = (active?.revision ?? 0) + 1;\n\n const data = await graphql<{\n deployBundle: DeploymentRevision;\n }>(\n `\n mutation DeployBundle($input: DeployBundleInput!) {\n deployBundle(input: $input) {\n id\n projectId\n revision\n bundleHash\n status\n activatedAt\n insertedAt\n updatedAt\n }\n }\n `,\n {\n input: {\n projectId: projectIdValue,\n bundleHash: upload.bundleHash,\n revision: nextRevision,\n snapshotJson: stableStringify(manifest),\n },\n },\n );\n\n return data.deployBundle;\n }\n\n async function emitSignal(input: EmitSignalInput): Promise<RuntimeEvent> {\n const projectIdValue = input.projectId ?? projectId();\n if (!input.principalId || input.principalId.trim() === \"\") {\n throw new ConfigError(\"principalId is required to emit a signal\");\n }\n const eventName = normalizeRuntimeSignalName(input.signal);\n if (!eventName) {\n throw new ConfigError(\n \"signal name must be a bare event name like smoke.start or use the signal: namespace\",\n );\n }\n const data = await graphql<{ emitSignal: RuntimeEvent }>(\n `\n mutation EmitSignal($input: EmitSignalInput!) {\n emitSignal(input: $input) {\n id\n projectId\n principalId\n kind\n name\n sourceName\n correlationId\n causationId\n dispatchStatus\n occurredAt\n insertedAt\n }\n }\n `,\n {\n input: {\n projectId: projectIdValue,\n principalId: input.principalId,\n eventName,\n payloadJson: JSON.stringify(input.payload ?? {}),\n metadataJson: JSON.stringify(input.metadata ?? {}),\n correlationId: input.correlationId,\n causationId: input.causationId,\n idempotencyKey: input.idempotencyKey,\n sourceName: input.sourceName,\n },\n },\n );\n\n return data.emitSignal;\n }\n\n async function activeRevision(\n projectIdValue: string,\n ): Promise<{ revision: number } | null> {\n const data = await graphql<{\n activeRevision: { revision: number } | null;\n }>(\n `\n query ActiveRevision($projectId: ID!) {\n activeRevision(projectId: $projectId) {\n revision\n }\n }\n `,\n { projectId: projectIdValue },\n );\n\n return data.activeRevision;\n }\n\n async function quotaStatuses(): Promise<QuotaStatus[]> {\n const data = await graphql<{ allQuotaStatuses: QuotaStatus[] }>(\n `\n query AllQuotaStatuses {\n allQuotaStatuses {\n meter\n used\n limit\n remaining\n percentageUsed\n enforcement\n }\n }\n `,\n );\n\n return data.allQuotaStatuses ?? [];\n }\n\n async function projectEvents(\n projectIdValue: string,\n input?: ActivityEventFilterInput,\n ): Promise<ActivityEvent[]> {\n const data = await graphql<{ projectEvents: ActivityEvent[] }>(\n `\n query ProjectEvents($projectId: ID!, $input: ActivityEventFilterInput) {\n projectEvents(projectId: $projectId, input: $input) {\n id\n eventType\n targetKind\n targetName\n principalId\n level\n message\n payload\n metadata\n displayCategory\n displayStatus\n displayName\n displayDetail\n occurredAt\n durationMs\n }\n }\n `,\n { projectId: projectIdValue, input },\n );\n\n return data.projectEvents ?? [];\n }\n\n return {\n graphql,\n projectId,\n me,\n organizations,\n projects,\n createProject,\n principals,\n createPrincipal,\n updatePrincipal,\n deletePrincipal,\n listSecrets,\n putSecret,\n deleteSecret,\n fetchRemoteManifest,\n deployBundle,\n emitSignal,\n quotaStatuses,\n projectEvents,\n };\n}\n","import { join } from \"node:path\";\nimport chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { buildPipeline } from \"../build/pipeline\";\nimport { cleanupStagingDir, createStagingDir } from \"../build/staging\";\nimport { zipBuildOutput } from \"../deploy/zip\";\nimport { diffManifests } from \"../deploy/diff\";\nimport { formatPlan, confirmPlan } from \"../deploy/plan\";\nimport { createClient } from \"../api/client\";\nimport { CliError } from \"../errors\";\nimport type { Manifest } from \"../types\";\n\ninterface DeployOptions {\n dir?: string;\n minify?: boolean;\n yes?: boolean;\n}\n\nexport async function deployCommand(options: DeployOptions): Promise<void> {\n let stagingDir: string | undefined;\n\n try {\n const config = await loadConfig({\n dir: options.dir,\n });\n\n console.log(chalk.gray(\"Planning deployment...\"));\n\n stagingDir = await createStagingDir();\n\n const { manifest } = await buildPipeline(\n config,\n process.cwd(),\n options.minify ?? true,\n stagingDir,\n );\n\n if (!config.apiUrl || !config.projectId) {\n console.log(\n chalk.yellow(\n \"\\nNo apiUrl or projectId configured. Skipping upload.\",\n ),\n );\n return;\n }\n\n const client = createClient({\n apiUrl: config.apiUrl,\n projectId: config.projectId,\n });\n\n console.log(chalk.gray(\"\\nComparing with remote...\"));\n\n const remoteManifest: Manifest = await client.fetchRemoteManifest(client.projectId());\n\n const diff = diffManifests(manifest, remoteManifest);\n\n if (!diff.hasChanges) {\n console.log(chalk.green(\"\\n\\u2713 No changes to deploy.\"));\n return;\n }\n\n console.log(\"\\n\" + formatPlan(diff));\n\n const confirmed = await confirmPlan(options.yes ?? false);\n if (!confirmed) {\n console.log(chalk.yellow(\"Deploy cancelled.\"));\n return;\n }\n\n console.log(chalk.gray(\"\\nApplying deployment...\"));\n\n const zipPath = join(stagingDir, \"deploy.zip\");\n await zipBuildOutput(stagingDir, zipPath);\n\n const revision = await client.deployBundle(zipPath, manifest);\n\n console.log(\n chalk.green(`\\n\\u2713 Deployment complete (revision ${revision.revision}, ${revision.status})`),\n );\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n } finally {\n await cleanupStagingDir(stagingDir);\n }\n}\n","import { createServer, type Server } from \"node:http\";\nimport { randomBytes } from \"node:crypto\";\nimport { URL } from \"node:url\";\n\nconst SUCCESS_HTML = `<!DOCTYPE html>\n<html>\n<head><title>IO CLI</title><style>\nbody{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;background:#fafafa}\n.card{text-align:center;padding:2rem}\nh1{font-size:1.5rem;margin-bottom:0.5rem}\np{color:#666}\n</style></head>\n<body><div class=\"card\"><h1>Authenticated</h1><p>You can close this tab and return to the terminal.</p></div></body>\n</html>`;\n\nconst ERROR_HTML = `<!DOCTYPE html>\n<html>\n<head><title>IO CLI</title><style>\nbody{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;background:#fafafa}\n.card{text-align:center;padding:2rem}\nh1{font-size:1.5rem;margin-bottom:0.5rem;color:#c00}\np{color:#666}\n</style></head>\n<body><div class=\"card\"><h1>Authentication Failed</h1><p>State mismatch. Please try again.</p></div></body>\n</html>`;\n\nexport interface CallbackResult {\n code?: string;\n expiresIn?: number;\n}\n\nexport interface CallbackServer {\n port: number;\n state: string;\n url: string;\n wait(): Promise<CallbackResult>;\n close(): void;\n}\n\nexport function startCallbackServer(): Promise<CallbackServer> {\n const state = randomBytes(16).toString(\"hex\");\n\n return new Promise((resolveServer, rejectServer) => {\n let tokenResolve: (result: CallbackResult) => void;\n let tokenReject: (err: Error) => void;\n\n const tokenPromise = new Promise<CallbackResult>((res, rej) => {\n tokenResolve = res;\n tokenReject = rej;\n });\n\n tokenPromise.catch(() => {});\n\n const server: Server = createServer((req, res) => {\n if (!req.url) {\n res.writeHead(404);\n res.end();\n return;\n }\n\n const parsed = new URL(req.url, `http://localhost`);\n\n if (parsed.pathname !== \"/callback\") {\n res.writeHead(404);\n res.end();\n return;\n }\n\n const returnedState = parsed.searchParams.get(\"state\");\n if (returnedState !== state) {\n res.writeHead(400, { \"Content-Type\": \"text/html\" });\n res.end(ERROR_HTML);\n tokenReject(new Error(\"State mismatch — possible CSRF attack\"));\n return;\n }\n\n const errorParam = parsed.searchParams.get(\"error\");\n if (errorParam) {\n res.writeHead(400, { \"Content-Type\": \"text/html\" });\n res.end(ERROR_HTML);\n tokenReject(new Error(errorParam));\n return;\n }\n\n const code = parsed.searchParams.get(\"code\") ?? undefined;\n if (!code) {\n res.writeHead(400, { \"Content-Type\": \"text/html\" });\n res.end(ERROR_HTML);\n tokenReject(new Error(\"No auth code received\"));\n return;\n }\n\n const expiresInRaw = parsed.searchParams.get(\"expiresIn\");\n const expiresIn = expiresInRaw ? Number.parseInt(expiresInRaw, 10) : undefined;\n\n res.writeHead(200, { \"Content-Type\": \"text/html\" });\n res.end(SUCCESS_HTML);\n tokenResolve({\n code,\n expiresIn: Number.isFinite(expiresIn) ? expiresIn : undefined,\n });\n });\n\n server.listen(0, \"127.0.0.1\", () => {\n const addr = server.address();\n if (!addr || typeof addr === \"string\") {\n rejectServer(new Error(\"Failed to start callback server\"));\n return;\n }\n\n const port = addr.port;\n const url = `http://127.0.0.1:${port}/callback`;\n\n resolveServer({\n port,\n state,\n url,\n wait: () => tokenPromise,\n close: () => server.close(),\n });\n });\n\n server.on(\"error\", rejectServer);\n });\n}\n","import { createHash, randomBytes } from \"node:crypto\";\n\nexport interface PkcePair {\n verifier: string;\n challenge: string;\n}\n\nexport function generatePkcePair(): PkcePair {\n const verifier = randomBytes(32).toString(\"base64url\");\n const challenge = createHash(\"sha256\").update(verifier).digest(\"base64url\");\n\n return { verifier, challenge };\n}\n","import chalk from \"chalk\";\nimport open from \"open\";\nimport { startCallbackServer } from \"../auth/callback\";\nimport { generatePkcePair } from \"../auth/pkce\";\nimport { loadConfig } from \"../config/loader\";\nimport { saveToken, saveCredentials, loadToken } from \"../auth/store\";\nimport { buildCliBrowserLoginUrl, exchangeCliCode } from \"../api/client\";\nimport { CliError, ConfigError } from \"../errors\";\n\ninterface LoginOptions {\n token?: string;\n}\n\nexport async function loginCommand(options: LoginOptions): Promise<void> {\n try {\n if (options.token) {\n await saveToken(options.token, true);\n console.log(chalk.green(\"\\u2713 API key saved\"));\n return;\n }\n\n const config = await loadConfig();\n\n if (!config.apiUrl) {\n throw new ConfigError(\n \"No apiUrl configured. Set it in io.config.json or IO_API_URL env var.\",\n );\n }\n\n const existing = await loadToken();\n if (existing) {\n console.log(chalk.gray(\"Existing session found. Re-authenticating...\"));\n }\n\n const callbackServer = await startCallbackServer();\n const pkce = generatePkcePair();\n const authorizationUrl = buildCliBrowserLoginUrl(\n config.apiUrl,\n callbackServer.url,\n callbackServer.state,\n pkce.challenge,\n );\n\n console.log(chalk.gray(\"Opening your browser for sign-in...\"));\n\n try {\n await open(authorizationUrl);\n } catch {\n console.log(chalk.yellow(\"Could not open the browser automatically.\"));\n console.log(chalk.gray(`Open this URL manually:\\n${authorizationUrl}`));\n }\n\n try {\n const callback = await callbackServer.wait();\n const session = await exchangeCliCode(\n config.apiUrl,\n callback.code ?? \"\",\n callbackServer.state,\n pkce.verifier,\n );\n\n if (!session.accessToken) {\n throw new ConfigError(\"Authentication succeeded but no access token was returned.\");\n }\n\n await saveCredentials({\n token: session.accessToken,\n refreshToken: session.refreshToken,\n userId: session.userId,\n organizationId:\n session.organizationId ??\n session.activeOrgId ??\n session.organizationIds?.[0],\n expiresIn: session.expiresIn,\n });\n } finally {\n callbackServer.close();\n }\n\n console.log(chalk.green(\"\\n\\u2713 Authenticated successfully\"));\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import chalk from \"chalk\";\nimport { clearToken, loadCredentials } from \"../auth/store\";\n\nexport async function logoutCommand(): Promise<void> {\n const creds = await loadCredentials();\n await clearToken();\n\n if (!creds) {\n console.log(chalk.yellow(\"Not logged in.\"));\n return;\n }\n\n console.log(chalk.green(\"\\u2713 Logged out\"));\n}\n","import chalk from \"chalk\";\nimport { loadCredentials, saveCredentials } from \"../auth/store\";\nimport { loadConfig } from \"../config/loader\";\nimport { createClient } from \"../api/client\";\n\nasync function hydrateIdentity() {\n const creds = await loadCredentials();\n let sessionName: string | undefined;\n let sessionEmail: string | undefined;\n\n if (!creds) {\n return { creds: null, sessionEmail, sessionName };\n }\n\n try {\n const config = await loadConfig();\n if (!config.apiUrl) {\n return { creds, sessionEmail, sessionName };\n }\n\n const client = createClient({ apiUrl: config.apiUrl, projectId: config.projectId });\n const session = await client.me();\n\n sessionName = session?.name;\n sessionEmail = session?.email;\n\n const organizationId =\n session?.organizationId ??\n session?.activeOrgId ??\n session?.organizationIds?.[0];\n const userId = session?.userId ?? creds.userId;\n\n if (!organizationId && !userId) {\n return { creds, sessionEmail, sessionName };\n }\n\n const nextCreds = {\n ...creds,\n organizationId: organizationId ?? creds.organizationId,\n userId,\n };\n\n await saveCredentials({\n token: nextCreds.token,\n refreshToken: nextCreds.refreshToken,\n expiresAt: nextCreds.expiresAt,\n userId: nextCreds.userId,\n organizationId: nextCreds.organizationId,\n apiKey: nextCreds.apiKey,\n });\n\n return { creds: nextCreds, sessionEmail, sessionName };\n } catch {\n return { creds, sessionEmail, sessionName };\n }\n}\n\nexport async function whoamiCommand(): Promise<void> {\n const { creds, sessionName, sessionEmail } = await hydrateIdentity();\n\n if (!creds) {\n console.log(chalk.yellow(\"Not logged in. Run `io login` to authenticate.\"));\n return;\n }\n\n console.log(chalk.green(\"\\u2713 Logged in\"));\n\n const displayUser = sessionName ?? sessionEmail ?? creds.userId;\n\n if (displayUser) {\n console.log(chalk.gray(` User: ${displayUser}`));\n }\n\n if (sessionEmail && sessionEmail !== displayUser) {\n console.log(chalk.gray(` Email: ${sessionEmail}`));\n }\n\n if (creds.organizationId) {\n console.log(chalk.gray(` Organization: ${creds.organizationId}`));\n }\n\n if (creds.apiKey) {\n console.log(chalk.gray(\" Session: API key\"));\n } else if (creds.refreshToken) {\n console.log(chalk.gray(\" Session: refresh token stored\"));\n } else {\n console.log(chalk.gray(\" Session: token only (no refresh)\"));\n }\n}\n","import { readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { createInterface } from \"node:readline\";\nimport chalk from \"chalk\";\nimport { loadCredentials } from \"../auth/store\";\nimport { createClient, type OrganizationSummary } from \"../api/client\";\nimport { CliError, ConfigError } from \"../errors\";\n\nconst CONFIG_FILE = \"io.config.json\";\n\nasync function prompt(question: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\nasync function readExistingConfig(cwd: string): Promise<Record<string, unknown>> {\n try {\n const raw = await readFile(join(cwd, CONFIG_FILE), \"utf-8\");\n return JSON.parse(raw) as Record<string, unknown>;\n } catch {\n return {};\n }\n}\n\nasync function selectOrganization(\n organizations: OrganizationSummary[],\n preferredId?: string,\n): Promise<OrganizationSummary | null> {\n if (organizations.length === 0) return null;\n\n if (preferredId) {\n const preferred = organizations.find((organization) => organization.id === preferredId);\n if (preferred) return preferred;\n }\n\n if (organizations.length === 1) {\n return organizations[0];\n }\n\n console.log(chalk.gray(\"\\nAvailable organizations:\"));\n organizations.forEach((organization, index) => {\n console.log(\n ` ${chalk.green(String(index + 1))}. ${organization.name} ${chalk.gray(organization.id)}`,\n );\n });\n\n const choice = await prompt(chalk.gray(\"\\nSelect an organization (number or ID): \"));\n const index = Number(choice);\n\n if (index > 0 && index <= organizations.length) {\n return organizations[index - 1];\n }\n\n return organizations.find((organization) => organization.id === choice) ?? null;\n}\n\nexport async function initCommand(options: { yes?: boolean }): Promise<void> {\n try {\n const cwd = process.cwd();\n const existing = await readExistingConfig(cwd);\n\n if (existing.projectId && !options.yes) {\n const overwrite = await prompt(\n chalk.yellow(`io.config.json already has projectId \"${existing.projectId}\". Overwrite? (y/n) `),\n );\n if (overwrite.toLowerCase() !== \"y\") {\n console.log(chalk.gray(\"Cancelled.\"));\n return;\n }\n }\n\n const config: Record<string, unknown> = { ...existing };\n\n if (!config.apiUrl) {\n const apiUrl = await prompt(chalk.gray(\"API URL (leave blank for default): \"));\n if (apiUrl) {\n config.apiUrl = apiUrl;\n }\n }\n\n const creds = await loadCredentials();\n if (creds) {\n const apiUrl = (config.apiUrl as string) || process.env[\"IO_API_URL\"] || \"\";\n\n if (!apiUrl) {\n throw new ConfigError(\"No apiUrl configured. Set it before selecting a project.\");\n }\n\n const client = createClient({ apiUrl, projectId: \"\" });\n\n let organizations: OrganizationSummary[] = [];\n let activeOrgId: string | undefined;\n\n try {\n const session = await client.me();\n activeOrgId =\n session?.activeOrgId ??\n session?.organizationId ??\n session?.organizationIds?.[0];\n } catch {\n }\n\n try {\n organizations = await client.organizations();\n } catch {\n console.log(chalk.yellow(\"Could not fetch organizations. Enter project ID manually.\"));\n }\n\n const selectedOrganization = await selectOrganization(\n organizations,\n activeOrgId ?? creds.organizationId,\n );\n\n if (selectedOrganization) {\n const projects = await client.projects(selectedOrganization.id);\n\n if (projects.length > 0) {\n console.log(chalk.gray(\"\\nAvailable projects:\"));\n projects.forEach((project, index) => {\n console.log(\n ` ${chalk.green(String(index + 1))}. ${project.name} ${chalk.gray(project.id)}`,\n );\n });\n\n const choice = await prompt(\n chalk.gray(\"\\nSelect a project (number) or enter a project ID: \"),\n );\n const index = Number(choice);\n\n if (index > 0 && index <= projects.length) {\n config.projectId = projects[index - 1].id;\n } else if (choice) {\n config.projectId = choice;\n }\n } else {\n const createNew = await prompt(\n chalk.gray(\"No projects found. Create one? (y/n) \"),\n );\n if (createNew.toLowerCase() === \"y\") {\n const name = await prompt(chalk.gray(\"Project name: \"));\n if (name) {\n const project = await client.createProject(selectedOrganization.id, name);\n config.projectId = project.id;\n console.log(chalk.green(`\\u2713 Created project: ${project.name}`));\n }\n }\n }\n } else {\n const projectId = await prompt(chalk.gray(\"Project ID (or leave blank): \"));\n if (projectId) {\n config.projectId = projectId;\n }\n }\n } else {\n console.log(chalk.yellow(\"Not logged in. Run `io login` first to select a project.\"));\n const projectId = await prompt(chalk.gray(\"Project ID (or leave blank): \"));\n if (projectId) {\n config.projectId = projectId;\n }\n }\n\n await writeFile(\n join(cwd, CONFIG_FILE),\n JSON.stringify(config, null, 2) + \"\\n\",\n \"utf-8\",\n );\n\n console.log(chalk.green(`\\n\\u2713 Wrote ${CONFIG_FILE}`));\n\n if (config.projectId) {\n console.log(chalk.gray(` Project: ${config.projectId}`));\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { createClient } from \"../api/client\";\nimport { CliError, ConfigError } from \"../errors\";\n\nasync function resolveOrganizationId(client: ReturnType<typeof createClient>): Promise<string> {\n try {\n const session = await client.me();\n const organizationId =\n session?.activeOrgId ??\n session?.organizationId ??\n session?.organizationIds?.[0];\n\n if (organizationId) {\n return organizationId;\n }\n } catch {\n }\n\n const organizations = await client.organizations();\n\n if (organizations.length === 1) {\n return organizations[0].id;\n }\n\n throw new ConfigError(\"No active organization available for this account.\");\n}\n\nexport async function projectsListCommand(): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const organizationId = await resolveOrganizationId(client);\n const projects = await client.projects(organizationId);\n\n if (!projects || projects.length === 0) {\n console.log(chalk.gray(\"No projects found. Create one with `io projects create <name>`.\"));\n return;\n }\n\n for (const p of projects) {\n const current = p.id === config.projectId ? chalk.green(\" (current)\") : \"\";\n console.log(` ${p.name} ${chalk.gray(p.id)}${current}`);\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n\nexport async function projectsCreateCommand(name: string): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const organizationId = await resolveOrganizationId(client);\n const project = await client.createProject(organizationId, name);\n\n console.log(chalk.green(`\\u2713 Created project: ${project.name}`));\n console.log(chalk.gray(` ID: ${project.id}`));\n console.log(\n chalk.gray(\n `\\n Add to io.config.json:\\n { \"projectId\": \"${project.id}\" }`,\n ),\n );\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { createClient } from \"../api/client\";\nimport { CliError } from \"../errors\";\n\nexport async function secretsSetCommand(\n name: string,\n value: string,\n): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const pid = client.projectId();\n\n await client.putSecret(pid, { name, value });\n console.log(chalk.green(`✓ Set secret: ${name}`));\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n\nexport async function secretsListCommand(): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const secrets = await client.listSecrets(client.projectId());\n\n if (!secrets || secrets.length === 0) {\n console.log(chalk.gray(\"No secrets configured.\"));\n return;\n }\n\n for (const s of secrets) {\n const value = s.hasValue ? \"\" : chalk.gray(\" (no value)\");\n console.log(` ${s.name}${value}`);\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n\nexport async function secretsRemoveCommand(name: string): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const removed = await client.deleteSecret(client.projectId(), name);\n\n if (!removed) {\n console.log(chalk.yellow(`Secret \"${name}\" not found.`));\n return;\n }\n\n console.log(chalk.green(`✓ Removed secret: ${name}`));\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import chalk from \"chalk\";\nimport { createClient } from \"../api/client\";\nimport { loadConfig } from \"../config/loader\";\nimport { CliError, ConfigError } from \"../errors\";\n\ntype PrincipalState = \"active\" | \"inactive\" | \"archived\";\n\ninterface PrincipalProjectOptions {\n projectId?: string;\n}\n\ninterface PrincipalCreateOptions extends PrincipalProjectOptions {\n state?: string;\n metadata?: string;\n}\n\ninterface PrincipalUpdateOptions extends PrincipalProjectOptions {\n externalId?: string;\n state?: string;\n metadata?: string;\n}\n\nfunction parseMetadata(input: string | undefined): Record<string, unknown> | undefined {\n if (!input) return undefined;\n\n try {\n const parsed = JSON.parse(input) as unknown;\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n return parsed as Record<string, unknown>;\n }\n } catch {\n }\n\n throw new ConfigError(\"metadata must be a JSON object\");\n}\n\nfunction validateState(state: string | undefined): PrincipalState | undefined {\n if (!state) return undefined;\n if (state === \"active\" || state === \"inactive\" || state === \"archived\") return state;\n throw new ConfigError(\"state must be active, inactive, or archived\");\n}\n\nasync function withClient(options: PrincipalProjectOptions) {\n const config = await loadConfig({ projectId: options.projectId });\n const client = createClient(config);\n return { client, projectId: client.projectId() };\n}\n\nfunction handleError(err: unknown): never {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n}\n\nexport async function principalsListCommand(options: PrincipalProjectOptions): Promise<void> {\n try {\n const { client, projectId } = await withClient(options);\n const principals = await client.principals(projectId);\n\n if (principals.length === 0) {\n console.log(chalk.gray(\"No principals found. Create one with `io principals create <external-id>`.\"));\n return;\n }\n\n for (const principal of principals) {\n console.log(\n ` ${principal.externalId} ${chalk.gray(principal.id)} ${chalk.gray(principal.state)}`,\n );\n }\n } catch (err: unknown) {\n handleError(err);\n }\n}\n\nexport async function principalsCreateCommand(\n externalId: string,\n options: PrincipalCreateOptions,\n): Promise<void> {\n try {\n const { client, projectId } = await withClient(options);\n const principal = await client.createPrincipal(projectId, {\n externalId,\n state: validateState(options.state),\n metadata: parseMetadata(options.metadata),\n });\n\n console.log(chalk.green(`✓ Created principal: ${principal.externalId}`));\n console.log(chalk.gray(` ID: ${principal.id}`));\n console.log(chalk.gray(` Project: ${principal.projectId}`));\n console.log(chalk.gray(` State: ${principal.state}`));\n } catch (err: unknown) {\n handleError(err);\n }\n}\n\nexport async function principalsUpdateCommand(\n id: string,\n options: PrincipalUpdateOptions,\n): Promise<void> {\n try {\n const { client, projectId } = await withClient(options);\n const input = {\n externalId: options.externalId,\n state: validateState(options.state),\n metadata: parseMetadata(options.metadata),\n };\n\n if (!input.externalId && !input.state && !input.metadata) {\n throw new ConfigError(\"nothing to update; pass --external-id, --state, or --metadata\");\n }\n\n const principal = await client.updatePrincipal(projectId, id, input);\n if (!principal) {\n console.log(chalk.yellow(`Principal \"${id}\" not found.`));\n return;\n }\n\n console.log(chalk.green(`✓ Updated principal: ${principal.externalId}`));\n console.log(chalk.gray(` ID: ${principal.id}`));\n console.log(chalk.gray(` Project: ${principal.projectId}`));\n console.log(chalk.gray(` State: ${principal.state}`));\n } catch (err: unknown) {\n handleError(err);\n }\n}\n\nexport async function principalsDeleteCommand(\n id: string,\n options: PrincipalProjectOptions,\n): Promise<void> {\n try {\n const { client, projectId } = await withClient(options);\n const principal = await client.deletePrincipal(projectId, id);\n\n if (!principal) {\n console.log(chalk.yellow(`Principal \"${id}\" not found.`));\n return;\n }\n\n console.log(chalk.green(`✓ Deleted principal: ${principal.externalId}`));\n } catch (err: unknown) {\n handleError(err);\n }\n}\n","import chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { createClient } from \"../api/client\";\nimport { CliError } from \"../errors\";\n\nfunction meterBar(used: number, limit: number, width = 20): string {\n if (limit === 0) return chalk.gray(\"░\".repeat(width));\n const ratio = Math.min(used / limit, 1);\n const filled = Math.round(ratio * width);\n const empty = width - filled;\n const color = ratio >= 0.9 ? chalk.red : ratio >= 0.7 ? chalk.yellow : chalk.green;\n return color(\"█\".repeat(filled)) + chalk.gray(\"░\".repeat(empty));\n}\n\nfunction formatNumber(n: number): string {\n if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;\n if (n >= 1_000) return `${(n / 1_000).toFixed(1)}K`;\n return n.toLocaleString();\n}\n\nconst METER_LABELS: Record<string, string> = {\n events: \"Events\",\n ingest_tokens: \"Ingest Tokens\",\n query_tokens: \"Query Tokens\",\n voice_seconds: \"Voice Seconds\",\n compute_gb_sec: \"Compute (GB·s)\",\n storage_gb: \"Memory Storage (GB)\",\n artifact_storage_gb: \"Artifact Storage (GB)\",\n};\n\nexport async function quotaCommand(): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const statuses = await client.quotaStatuses();\n\n if (statuses.length === 0) {\n console.log(chalk.gray(\"No quota data available.\"));\n return;\n }\n\n console.log(chalk.bold(\"\\nQuota Usage\\n\"));\n\n for (const status of statuses) {\n const label = METER_LABELS[status.meter] ?? status.meter;\n const bar = meterBar(status.used, status.limit);\n const pct = status.limit > 0 ? `${status.percentageUsed.toFixed(1)}%` : \"—\";\n const usage = `${formatNumber(status.used)} / ${formatNumber(status.limit)}`;\n const enforcement = status.enforcement === \"hard_cap\" ? chalk.red(\"hard\") : chalk.yellow(\"soft\");\n\n console.log(` ${label.padEnd(22)} ${bar} ${usage.padStart(16)} ${pct.padStart(6)} ${enforcement}`);\n }\n\n console.log();\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import WebSocket from \"ws\";\nimport { Socket } from \"phoenix\";\nimport * as AbsintheSocket from \"@absinthe/socket\";\nimport type { ActivityEvent, ActivityEventFilterInput } from \"./client\";\nimport type { Credentials } from \"../auth/store\";\nimport { socketAuthParams } from \"../auth/transport\";\nimport { ConfigError } from \"../errors\";\n\nObject.assign(globalThis, { WebSocket });\n\nconst ACTIVITY_SUBSCRIPTION = `\n subscription ActivityEventReceived($projectId: ID!, $input: ActivityEventFilterInput) {\n activityEventReceived(projectId: $projectId, input: $input) {\n id\n eventType\n targetKind\n targetName\n principalId\n level\n message\n payload\n metadata\n displayCategory\n displayStatus\n displayName\n displayDetail\n occurredAt\n durationMs\n }\n }\n`;\n\nexport interface SubscriptionOptions {\n apiUrl: string;\n credentials: Pick<Credentials, \"token\" | \"apiKey\">;\n projectId: string;\n input?: ActivityEventFilterInput;\n onEvent: (event: ActivityEvent) => void;\n onError?: (error: Error) => void;\n onConnected?: () => void;\n}\n\nexport function buildActivityEventsSocketUrl(apiUrl: string): string {\n const url = new URL(apiUrl);\n const basePath = url.pathname.replace(/\\/+$/, \"\");\n const socketBase = basePath.endsWith(\"/graphql\")\n ? basePath.slice(0, -\"/graphql\".length)\n : basePath;\n\n url.protocol = url.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n url.pathname = `${socketBase === \"/\" ? \"\" : socketBase}/socket`;\n url.search = \"\";\n url.hash = \"\";\n\n return url.toString();\n}\n\nexport function subscribeToActivityEvents(options: SubscriptionOptions): () => void {\n if (!options.credentials.apiKey) {\n throw new ConfigError(\n \"Live activity subscriptions require API key authentication on the current io_beam socket contract.\",\n );\n }\n\n const phoenixSocket = new Socket(buildActivityEventsSocketUrl(options.apiUrl), {\n params: socketAuthParams(options.credentials),\n timeout: 10_000,\n });\n\n const absintheSocket = AbsintheSocket.create(phoenixSocket);\n\n const notifier = AbsintheSocket.send(absintheSocket, {\n operation: ACTIVITY_SUBSCRIPTION,\n variables: { projectId: options.projectId, input: options.input },\n });\n\n const observer = {\n onAbort: (error: Error) => {\n options.onError?.(error);\n },\n onCancel: () => {},\n onError: (error: Error) => {\n options.onError?.(error);\n },\n onResult: (result: { data?: { activityEventReceived?: ActivityEvent } }) => {\n const event = result.data?.activityEventReceived;\n if (event) {\n options.onEvent(event);\n }\n },\n onStart: () => {\n options.onConnected?.();\n },\n };\n\n AbsintheSocket.observe(absintheSocket, notifier, observer);\n phoenixSocket.connect();\n\n return () => {\n phoenixSocket.disconnect();\n };\n}\n","import type { ActivityEvent } from \"../api/client\";\n\nconst DISPLAY_NAME_NAMESPACES = new Set([\n \"trigger\",\n \"signal\",\n \"memory\",\n \"knowledge\",\n \"session\",\n]);\n\ntype EventStatusKey =\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"scheduled\";\n\ntype EventPresentation = {\n detail: string;\n name: string;\n targetName: string;\n};\n\nfunction toLower(value: string | undefined | null): string {\n return (value ?? \"\").toLowerCase();\n}\n\nfunction eventPayload(event: Pick<ActivityEvent, \"payload\">): Record<string, unknown> {\n const payload = event.payload ?? {};\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) {\n return {};\n }\n\n return payload as Record<string, unknown>;\n}\n\nfunction payloadString(\n payload: Record<string, unknown>,\n keys: string[],\n): string | undefined {\n for (const key of keys) {\n const value = payload[key];\n if (typeof value === \"string\" && value.trim()) {\n return value;\n }\n }\n\n return undefined;\n}\n\nfunction eventContext(\n event: Pick<ActivityEvent, \"payload\" | \"metadata\">,\n): Record<string, unknown> {\n const payload = eventPayload(event);\n const attributes = payload.attributes;\n\n return {\n ...((event.metadata as Record<string, unknown> | undefined) ?? {}),\n ...payload,\n ...(attributes && typeof attributes === \"object\" && !Array.isArray(attributes)\n ? (attributes as Record<string, unknown>)\n : {}),\n };\n}\n\nfunction displayIdentifier(value: string | undefined | null): string {\n const normalized = (value ?? \"\").trim();\n if (!normalized) return \"\";\n\n const parts = normalized.split(\":\", 2);\n if (parts.length === 2) {\n const [namespace, eventName] = parts;\n if (DISPLAY_NAME_NAMESPACES.has(namespace.trim()) && eventName.trim()) {\n return eventName.trim();\n }\n }\n\n return normalized;\n}\n\nfunction isConsoleRuntimeEvent(\n event: Pick<ActivityEvent, \"eventType\" | \"payload\" | \"metadata\">,\n): boolean {\n const type = toLower(event.eventType);\n if (type.startsWith(\"sprite.console.\")) return true;\n if (type === \"behavior.log\" || type === \"conversation.log\") return true;\n\n const context = eventContext(event);\n if (toLower(payloadString(context, [\"runtime.kind\", \"runtime_kind\"]) ?? \"\") === \"console\") {\n return true;\n }\n\n return !!payloadString(context, [\n \"console.message\",\n \"console_message\",\n \"console.level\",\n \"console_level\",\n ]);\n}\n\nfunction consoleRuntimeLabel(\n event: Pick<ActivityEvent, \"eventType\" | \"payload\" | \"metadata\">,\n): string {\n const type = toLower(event.eventType);\n if (type.startsWith(\"sprite.console.\")) {\n const parts = type.split(\".\");\n const level = parts[parts.length - 1];\n return `console.${level || \"log\"}`;\n }\n\n const context = eventContext(event);\n const level = toLower(payloadString(context, [\"console.level\", \"console_level\", \"level\"]) ?? \"log\");\n if (level === \"warning\") return \"console.warn\";\n if (level) return `console.${level}`;\n return \"console.log\";\n}\n\nfunction isToolAuditEvent(\n event: Pick<ActivityEvent, \"eventType\" | \"payload\" | \"metadata\">,\n): boolean {\n const type = toLower(event.eventType);\n if (type.startsWith(\"sprite.tool_\") || type.startsWith(\"sprite.tool.\")) {\n return true;\n }\n if (type.startsWith(\"tool.\")) return true;\n\n const context = eventContext(event);\n return !!payloadString(context, [\n \"tool.name\",\n \"tool_name\",\n \"tool.capability_id\",\n \"capability_id\",\n \"tool.error_code\",\n \"error_code\",\n ]);\n}\n\nfunction toolAuditLabel(\n event: Pick<ActivityEvent, \"eventType\" | \"payload\" | \"metadata\">,\n): string {\n const type = toLower(event.eventType);\n if (type.includes(\"started\")) return \"tool started\";\n if (type.includes(\"finished\")) return \"tool finished\";\n if (type.includes(\"failed\")) return \"tool failed\";\n return \"tool call\";\n}\n\nfunction toolAuditDetail(\n event: Pick<ActivityEvent, \"payload\" | \"metadata\">,\n): string {\n const context = eventContext(event);\n const capability = payloadString(context, [\n \"tool.capability_id\",\n \"capability_id\",\n ]);\n const tuple = [\n payloadString(context, [\"tool.application_name\", \"application_name\"]),\n payloadString(context, [\"tool.resource_name\", \"resource_name\"]),\n payloadString(context, [\"tool.tool_name\", \"tool_name\", \"tool.name\"]),\n ]\n .filter((part): part is string => !!part)\n .join(\".\");\n const errorCode = payloadString(context, [\n \"tool.error_code\",\n \"error_code\",\n \"errorCode\",\n ]);\n\n return [capability || tuple, errorCode].filter(Boolean).join(\" \");\n}\n\nfunction trimStructuredConsoleSuffix(message: string): string {\n const normalized = message.trim();\n if (!normalized) return normalized;\n\n const objectSuffixAt = normalized.search(/\\s+\\{(?:\"|\\\\\")/);\n if (objectSuffixAt > 0) {\n return normalized.slice(0, objectSuffixAt).trim();\n }\n\n const arraySuffixAt = normalized.search(/\\s+\\[(?:\\{|\"|\\\\\")/);\n if (arraySuffixAt > 0) {\n return normalized.slice(0, arraySuffixAt).trim();\n }\n\n if (normalized.startsWith(\"{\")) return normalized;\n if (normalized.startsWith(\"[{\") || normalized.startsWith(\"[\\\"\")) return normalized;\n\n return normalized;\n}\n\nfunction firstTargetCandidate(\n event: Pick<ActivityEvent, \"targetName\" | \"payload\" | \"metadata\">,\n): string {\n const context = eventContext(event);\n return (\n displayIdentifier(event.targetName) ||\n payloadString(context, [\n \"targetName\",\n \"target_name\",\n \"triggerName\",\n \"trigger_name\",\n \"behaviorName\",\n \"behavior_name\",\n \"signalName\",\n \"signal_name\",\n \"conversationName\",\n \"conversation_name\",\n \"channel\",\n \"name\",\n ]) ||\n \"\"\n );\n}\n\nfunction fallbackActionLabel(type: string | undefined): string {\n const normalized = toLower(type);\n switch (normalized) {\n case \"trigger.received\":\n return \"Trigger received\";\n case \"trigger.fired\":\n case \"flow.trigger.fired\":\n return \"Trigger fired\";\n case \"trigger.failed\":\n case \"flow.trigger.failed\":\n return \"Trigger failed\";\n case \"behavior.started\":\n case \"flow.execution.started\":\n return \"invocation started\";\n case \"behavior.finished\":\n case \"behavior.completed\":\n case \"behavior.executed\":\n case \"flow.execution.completed\":\n return \"invocation succeeded\";\n case \"behavior.failed\":\n case \"flow.execution.failed\":\n return \"invocation failed\";\n case \"signal.delivered\":\n return \"Signal delivered\";\n case \"signal.emitted\":\n case \"flow.signal.emitted\":\n return \"Signal emitted\";\n case \"conversation.started\":\n case \"flow.session.started\":\n return \"Conversation started\";\n case \"conversation.finished\":\n case \"conversation.ended\":\n case \"flow.session.closed\":\n return \"Conversation ended\";\n case \"conversation.message\":\n case \"conversation.runtime\":\n case \"flow.session.message\":\n return \"Conversation message\";\n default:\n return \"\";\n }\n}\n\nfunction inferEventPresentation(\n event: Pick<ActivityEvent, \"eventType\" | \"targetName\" | \"payload\" | \"message\" | \"metadata\">,\n): EventPresentation {\n const targetName = displayIdentifier(firstTargetCandidate(event));\n const message = event.message ?? \"\";\n\n if (isConsoleRuntimeEvent(event)) {\n const context = eventContext(event);\n const consoleMessage =\n payloadString(context, [\"console.message\", \"console_message\"]) ?? message;\n\n return {\n name: consoleRuntimeLabel(event),\n detail: trimStructuredConsoleSuffix(consoleMessage),\n targetName,\n };\n }\n\n if (isToolAuditEvent(event)) {\n return {\n name: toolAuditLabel(event),\n detail: toolAuditDetail(event),\n targetName,\n };\n }\n\n const messageLabel = message.trim();\n const actionLabel = messageLabel || fallbackActionLabel(event.eventType);\n\n if (actionLabel) {\n return {\n name: actionLabel,\n detail:\n targetName && toLower(targetName) !== toLower(actionLabel)\n ? targetName\n : \"\",\n targetName,\n };\n }\n\n if (targetName) {\n return {\n name: targetName,\n detail: \"\",\n targetName,\n };\n }\n\n const fallbackType = displayIdentifier(event.eventType);\n return {\n name: fallbackType || \"unknown\",\n detail: \"\",\n targetName: \"\",\n };\n}\n\nexport function inferActivityEventName(event: ActivityEvent): string {\n if (typeof event.displayName === \"string\" && event.displayName.trim()) {\n return event.displayName.trim();\n }\n\n return inferEventPresentation(event).name;\n}\n\nexport function inferActivityEventDetail(event: ActivityEvent): string {\n if (typeof event.displayDetail === \"string\") {\n return event.displayDetail.trim();\n }\n\n return inferEventPresentation(event).detail;\n}\n\nexport function inferActivityEventCategory(event: ActivityEvent): string {\n const displayCategory = event.displayCategory?.trim();\n if (displayCategory) return displayCategory;\n\n const raw = event.eventType ?? \"\";\n const normalized = toLower(raw);\n if (isToolAuditEvent(event)) return \"tool\";\n if (normalized.startsWith(\"sprite.tool\") || normalized.startsWith(\"tool.\")) return \"tool\";\n if (normalized.startsWith(\"flow.execution.\")) return \"behavior\";\n if (normalized.startsWith(\"flow.trigger.\")) return \"trigger\";\n if (normalized.startsWith(\"flow.session.\")) return \"conversation\";\n if (normalized.startsWith(\"flow.signal.\")) return \"signal\";\n\n const prefix = normalized.includes(\":\")\n ? normalized.split(\":\")[0]\n : normalized.split(\".\")[0];\n\n if (\n [\n \"trigger\",\n \"signal\",\n \"behavior\",\n \"conversation\",\n \"memory\",\n \"tool\",\n \"entity\",\n \"session\",\n ].includes(prefix)\n ) {\n return prefix;\n }\n\n return raw || \"unknown\";\n}\n\nexport function inferActivityEventStatus(event: ActivityEvent): EventStatusKey {\n const displayStatus = toLower(event.displayStatus);\n if (\n displayStatus === \"success\" ||\n displayStatus === \"error\" ||\n displayStatus === \"warning\" ||\n displayStatus === \"info\" ||\n displayStatus === \"scheduled\"\n ) {\n return displayStatus;\n }\n\n const level = toLower(event.level);\n if (level === \"error\") return \"error\";\n if (level === \"warning\") return \"warning\";\n\n const payload = eventPayload(event);\n if (payload.success === false) return \"error\";\n const context = eventContext(event);\n const toolStatus = toLower(payloadString(context, [\n \"tool.status\",\n \"status\",\n ]));\n if (\n toolStatus === \"failed\" ||\n toolStatus === \"error\" ||\n !!payloadString(context, [\"tool.error_code\", \"error_code\", \"errorCode\"])\n ) {\n return \"error\";\n }\n if (toolStatus === \"started\" || toolStatus === \"running\") return \"info\";\n if (toolStatus === \"succeeded\" || toolStatus === \"success\") return \"success\";\n\n const type = toLower(event.eventType);\n if (type.endsWith(\".failed\")) return \"error\";\n if (type.endsWith(\".scheduled\")) return \"scheduled\";\n if (type.endsWith(\".started\")) return \"info\";\n if (\n type.endsWith(\".finished\") ||\n type.endsWith(\".completed\") ||\n type.endsWith(\".executed\") ||\n type.endsWith(\".closed\") ||\n type.endsWith(\".ended\") ||\n type.endsWith(\".delivered\") ||\n type.endsWith(\".emitted\")\n ) {\n return \"success\";\n }\n\n return \"info\";\n}\n\nexport function inferActivityPrincipalLabel(event: ActivityEvent): string {\n const merged = {\n ...((event.metadata as Record<string, unknown> | undefined) ?? {}),\n ...eventPayload(event),\n };\n\n return (\n payloadString(merged, [\n \"principalExternalId\",\n \"principal_external_id\",\n \"entityExternalId\",\n \"entity_external_id\",\n \"externalId\",\n \"external_id\",\n ]) ??\n event.principalId ??\n \"\"\n );\n}\n","import chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport {\n createClient,\n type ActivityEvent,\n type ActivityEventFilterInput,\n type ApiClient,\n} from \"../api/client\";\nimport { subscribeToActivityEvents } from \"../api/subscription\";\nimport { loadCredentials } from \"../auth/store\";\nimport { CliError, ConfigError } from \"../errors\";\nimport {\n inferActivityEventCategory,\n inferActivityEventDetail,\n inferActivityEventName,\n inferActivityEventStatus,\n inferActivityPrincipalLabel,\n} from \"../activity/presentation\";\n\ninterface LogsOptions {\n limit?: string;\n type?: string[];\n since?: string;\n follow?: boolean;\n}\n\nconst LEVEL_COLORS: Record<string, (text: string) => string> = {\n error: chalk.red,\n warning: chalk.yellow,\n info: chalk.blue,\n success: chalk.green,\n scheduled: chalk.magenta,\n};\n\nconst FOLLOW_POLL_INTERVAL_MS = 2_000;\nconst FOLLOW_SEEN_ID_LIMIT = 1_000;\nconst FOLLOW_BATCH_LIMIT = 200;\n\nfunction colorLevel(level: string | null | undefined): string {\n if (!level) return chalk.gray(\"—\");\n const colorFn = LEVEL_COLORS[level] ?? chalk.gray;\n return colorFn(level.padEnd(7));\n}\n\nfunction pad(value: string, width: number): string {\n if (value.length >= width) return value;\n return value.padEnd(width);\n}\n\nfunction formatTime(isoString: string): string {\n const date = new Date(isoString);\n return date.toLocaleTimeString(\"en-GB\", { hour12: false });\n}\n\nfunction formatDuration(ms: number | null | undefined): string {\n if (ms == null) return \"\";\n if (ms < 1000) return chalk.gray(`${ms}ms`);\n return chalk.gray(`${(ms / 1000).toFixed(1)}s`);\n}\n\nfunction truncate(value: string, width: number): string {\n if (value.length <= width) return value;\n if (width <= 1) return value.slice(0, width);\n return `${value.slice(0, width - 1)}…`;\n}\n\nfunction formatHeader(): string {\n return [\n ` ${chalk.gray(pad(\"TIME\", 10))}`,\n chalk.gray(pad(\"STATUS\", 9)),\n chalk.gray(pad(\"CATEGORY\", 14)),\n chalk.gray(pad(\"NAME\", 24)),\n chalk.gray(pad(\"DURATION\", 10)),\n chalk.gray(\"DETAIL\"),\n ].join(\" \");\n}\n\nfunction formatEvent(event: ActivityEvent): string {\n const time = chalk.gray(formatTime(event.occurredAt));\n const statusKey = inferActivityEventStatus(event);\n const status = colorLevel(statusKey);\n const category = chalk.cyan(pad(inferActivityEventCategory(event), 14));\n const name = pad(truncate(inferActivityEventName(event), 24), 24);\n const duration = formatDuration(event.durationMs);\n const detail =\n inferActivityEventDetail(event) ||\n inferActivityPrincipalLabel(event) ||\n \"\";\n\n return [\n ` ${time}`,\n status,\n category,\n name,\n pad(duration || \"\", 10),\n detail ? chalk.gray(detail) : \"\",\n ].join(\" \").trimEnd();\n}\n\nfunction latestOccurredAt(events: ActivityEvent[], fallback: string): string {\n return events.reduce((latest, event) => {\n return event.occurredAt > latest ? event.occurredAt : latest;\n }, fallback);\n}\n\nfunction trimSeenIds(seenIds: Set<string>, order: string[]): void {\n while (order.length > FOLLOW_SEEN_ID_LIMIT) {\n const evicted = order.shift();\n if (evicted) {\n seenIds.delete(evicted);\n }\n }\n}\n\nfunction orderEvents(events: ActivityEvent[]): ActivityEvent[] {\n return [...events].sort((left, right) => {\n if (left.occurredAt === right.occurredAt) {\n return left.id.localeCompare(right.id);\n }\n\n return left.occurredAt.localeCompare(right.occurredAt);\n });\n}\n\nfunction wait(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\nfunction followBatchInput(\n input: ActivityEventFilterInput | undefined,\n since: string,\n): ActivityEventFilterInput {\n return {\n ...input,\n since,\n limit: Math.max(input?.limit ?? 0, FOLLOW_BATCH_LIMIT),\n };\n}\n\nasync function drainFollowEvents(\n client: ApiClient,\n projectId: string,\n input: ActivityEventFilterInput | undefined,\n since: string,\n seenIds: Set<string>,\n seenOrder: string[],\n): Promise<{ events: ActivityEvent[]; since: string }> {\n let cursor = since;\n const events: ActivityEvent[] = [];\n\n for (let i = 0; i < 10; i += 1) {\n const batch = orderEvents(\n await client.projectEvents(projectId, followBatchInput(input, cursor)),\n );\n\n const unseen = batch.filter((event) => !seenIds.has(event.id));\n\n if (unseen.length === 0) {\n return { events, since: cursor };\n }\n\n events.push(...unseen);\n cursor = latestOccurredAt(unseen, cursor);\n\n for (const event of unseen) {\n seenIds.add(event.id);\n seenOrder.push(event.id);\n }\n\n trimSeenIds(seenIds, seenOrder);\n\n if (batch.length < FOLLOW_BATCH_LIMIT) {\n return { events, since: cursor };\n }\n }\n\n return { events, since: cursor };\n}\n\nfunction installSigintHandler(onExit: () => void): () => void {\n const handleSigint = () => {\n console.log(chalk.gray(\"\\n Disconnected.\"));\n onExit();\n process.exit(0);\n };\n\n process.once(\"SIGINT\", handleSigint);\n\n return () => {\n process.removeListener(\"SIGINT\", handleSigint);\n };\n}\n\nexport async function logsCommand(options: LogsOptions): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const pid = client.projectId();\n const limit = options.limit ? parseInt(options.limit, 10) : 50;\n const followStartedAt = options.follow ? new Date().toISOString() : undefined;\n\n const input: ActivityEventFilterInput = { limit };\n\n if (options.type && options.type.length > 0) {\n input.eventTypes = options.type;\n }\n\n if (options.since) {\n const since = parseSince(options.since);\n if (since) input.since = since;\n }\n\n const events = await client.projectEvents(pid, input);\n\n if (events.length === 0 && !options.follow) {\n console.log(chalk.gray(\"No events found.\"));\n return;\n }\n\n if (events.length > 0) {\n console.log(chalk.bold(`\\nActivity Log — ${events.length} events\\n`));\n console.log(formatHeader());\n console.log(chalk.gray(` ${\"─\".repeat(92)}`));\n\n for (const event of events) {\n console.log(formatEvent(event));\n }\n }\n\n if (options.follow) {\n await tailEvents(\n config.apiUrl,\n client,\n pid,\n input,\n events,\n followStartedAt ?? new Date().toISOString(),\n );\n } else {\n console.log();\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n\nasync function tailEvents(\n apiUrl: string,\n client: ApiClient,\n projectId: string,\n input: ActivityEventFilterInput | undefined,\n initialEvents: ActivityEvent[],\n followStartedAt: string,\n): Promise<void> {\n const creds = await loadCredentials();\n\n if (!creds || !creds.token) {\n throw new ConfigError(\"Not authenticated. Run `io login` first.\");\n }\n\n console.log(chalk.gray(\"\\n Waiting for events... (Ctrl+C to stop)\\n\"));\n\n if (creds.apiKey) {\n return new Promise((_resolve, reject) => {\n let disconnect: (() => void) | undefined;\n const seenIds = new Set(initialEvents.map((event) => event.id));\n const seenOrder = initialEvents.map((event) => event.id);\n const removeSigintHandler = installSigintHandler(() => {\n disconnect?.();\n });\n\n disconnect = subscribeToActivityEvents({\n apiUrl,\n credentials: creds,\n projectId,\n input,\n onEvent: (event) => {\n if (seenIds.has(event.id)) {\n return;\n }\n\n console.log(formatEvent(event));\n seenIds.add(event.id);\n seenOrder.push(event.id);\n trimSeenIds(seenIds, seenOrder);\n },\n onConnected: () => {\n console.log(chalk.green(\" ● Connected — tailing live events\\n\"));\n\n void drainFollowEvents(\n client,\n projectId,\n input,\n followStartedAt,\n seenIds,\n seenOrder,\n )\n .then(({ events }) => {\n for (const event of events) {\n console.log(formatEvent(event));\n }\n })\n .catch((error: Error) => {\n console.error(chalk.red(`\\n Connection error: ${error.message}`));\n removeSigintHandler();\n disconnect?.();\n reject(error);\n });\n },\n onError: (error) => {\n console.error(chalk.red(`\\n Connection error: ${error.message}`));\n removeSigintHandler();\n disconnect?.();\n reject(error);\n },\n });\n });\n }\n\n console.log(\n chalk.green(\" ● Connected — polling for live events with your authenticated session\\n\"),\n );\n\n const seenIds = new Set(initialEvents.map((event) => event.id));\n const seenOrder = initialEvents.map((event) => event.id);\n let since = latestOccurredAt(initialEvents, followStartedAt);\n const removeSigintHandler = installSigintHandler(() => {});\n\n try {\n for (;;) {\n const batch = await drainFollowEvents(\n client,\n projectId,\n input,\n since,\n seenIds,\n seenOrder,\n );\n const nextEvents = batch.events;\n\n for (const event of nextEvents) {\n console.log(formatEvent(event));\n }\n\n if (nextEvents.length > 0) {\n since = batch.since;\n }\n\n await wait(FOLLOW_POLL_INTERVAL_MS);\n }\n } finally {\n removeSigintHandler();\n }\n}\n\nfunction parseSince(value: string): string | null {\n const match = value.match(/^(\\d+)([mhd])$/);\n if (!match) return value;\n\n const amount = parseInt(match[1], 10);\n const unit = match[2];\n const now = Date.now();\n\n const ms: Record<string, number> = {\n m: 60 * 1000,\n h: 60 * 60 * 1000,\n d: 24 * 60 * 60 * 1000,\n };\n\n return new Date(now - amount * (ms[unit] ?? 0)).toISOString();\n}\n","import chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { createClient } from \"../api/client\";\nimport { CliError, ConfigError } from \"../errors\";\nimport { normalizeRuntimeSignalName } from \"../runtime-signal-name\";\n\ninterface SignalEmitOptions {\n payload?: string;\n metadata?: string;\n projectId?: string;\n principalId?: string;\n correlationId?: string;\n causationId?: string;\n idempotencyKey?: string;\n sourceName?: string;\n json?: boolean;\n}\n\nfunction parseJsonObject(input: string | undefined, label: string): Record<string, unknown> {\n if (!input) {\n return {};\n }\n\n try {\n const parsed = JSON.parse(input) as unknown;\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n return parsed as Record<string, unknown>;\n }\n } catch {\n }\n\n throw new ConfigError(`${label} must be a JSON object`);\n}\n\nexport async function signalEmitCommand(\n name: string,\n options: SignalEmitOptions,\n): Promise<void> {\n try {\n const config = await loadConfig({ projectId: options.projectId });\n const client = createClient(config);\n const signal = normalizeRuntimeSignalName(name);\n if (!signal) {\n throw new ConfigError(\n \"signal name must be a bare event name like smoke.start or use the signal: namespace\",\n );\n }\n if (!options.principalId || options.principalId.trim() === \"\") {\n throw new ConfigError(\"signals emit requires --principal-id <id>\");\n }\n const payload = parseJsonObject(options.payload, \"payload\");\n const metadata = parseJsonObject(options.metadata, \"metadata\");\n\n const event = await client.emitSignal({\n signal,\n principalId: options.principalId,\n payload,\n metadata,\n correlationId: options.correlationId,\n causationId: options.causationId,\n idempotencyKey: options.idempotencyKey,\n sourceName: options.sourceName,\n });\n\n if (options.json) {\n console.log(JSON.stringify(event, null, 2));\n return;\n }\n\n console.log(chalk.green(`\\u2713 Emitted ${event.name}`));\n console.log(chalk.gray(` Event: ${event.id}`));\n console.log(chalk.gray(` Project: ${event.projectId}`));\n\n if (event.dispatchStatus) {\n console.log(chalk.gray(` Dispatch: ${event.dispatchStatus}`));\n }\n\n if (event.occurredAt) {\n console.log(chalk.gray(` At: ${event.occurredAt}`));\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import { Command } from \"commander\";\nimport { buildCommand } from \"./commands/build\";\nimport { deployCommand } from \"./commands/deploy\";\nimport { loginCommand } from \"./commands/login\";\nimport { logoutCommand } from \"./commands/logout\";\nimport { whoamiCommand } from \"./commands/whoami\";\nimport { initCommand } from \"./commands/init\";\nimport {\n projectsListCommand,\n projectsCreateCommand,\n} from \"./commands/projects\";\nimport {\n secretsSetCommand,\n secretsListCommand,\n secretsRemoveCommand,\n} from \"./commands/secrets\";\nimport {\n principalsCreateCommand,\n principalsDeleteCommand,\n principalsListCommand,\n principalsUpdateCommand,\n} from \"./commands/principals\";\nimport { quotaCommand } from \"./commands/quota\";\nimport { logsCommand } from \"./commands/logs\";\nimport { signalEmitCommand } from \"./commands/signals\";\n\ndeclare const __CLI_VERSION__: string;\n\nconst program = new Command();\n\nprogram\n .name(\"io\")\n .description(\"IO CLI — build and deploy behaviors\")\n .version(__CLI_VERSION__);\n\nprogram\n .command(\"init\")\n .description(\"Initialize io.config.json for the current project\")\n .option(\"--yes\", \"Overwrite existing config without prompting\")\n .action(initCommand);\n\nprogram\n .command(\"build\")\n .description(\"Build behaviors from the io/ directory\")\n .option(\"--dir <path>\", \"Source directory\", \"io\")\n .option(\"--minify\", \"Minify bundles\", false)\n .action(buildCommand);\n\nprogram\n .command(\"deploy\")\n .description(\"Build and package for deployment\")\n .option(\"--dir <path>\", \"Source directory\", \"io\")\n .option(\"--no-minify\", \"Skip minification\")\n .option(\"--yes\", \"Skip confirmation prompt\")\n .action(deployCommand);\n\nprogram\n .command(\"login\")\n .description(\"Authenticate with the IO platform\")\n .option(\"--token <value>\", \"API token for CI/CD environments\")\n .action(loginCommand);\n\nprogram\n .command(\"logout\")\n .description(\"Remove stored credentials\")\n .action(logoutCommand);\n\nprogram\n .command(\"whoami\")\n .description(\"Show current authentication status\")\n .action(whoamiCommand);\n\nconst projects = program\n .command(\"projects\")\n .description(\"Manage projects\");\n\nprojects\n .command(\"list\")\n .description(\"List all projects\")\n .action(projectsListCommand);\n\nprojects\n .command(\"create <name>\")\n .description(\"Create a new project\")\n .action(projectsCreateCommand);\n\nconst secrets = program\n .command(\"secrets\")\n .description(\"Manage project secrets\");\n\nsecrets\n .command(\"set <name> <value>\")\n .description(\"Set a secret value\")\n .option(\"--target <targets...>\", \"Restrict to specific targets\")\n .action(secretsSetCommand);\n\nsecrets\n .command(\"list\")\n .description(\"List all secrets\")\n .action(secretsListCommand);\n\nsecrets\n .command(\"remove <name>\")\n .description(\"Remove a secret\")\n .action(secretsRemoveCommand);\n\nconst principals = program\n .command(\"principals\")\n .description(\"Manage project principals\");\n\nprincipals\n .command(\"list\")\n .description(\"List principals in the active project\")\n .option(\"--project-id <id>\", \"Override the configured project ID\")\n .action(principalsListCommand);\n\nprincipals\n .command(\"create <external-id>\")\n .description(\"Create a principal in the active project\")\n .option(\"--project-id <id>\", \"Override the configured project ID\")\n .option(\"--state <state>\", \"Principal state: active, inactive, or archived\")\n .option(\"--metadata <json>\", \"Principal metadata as a JSON object\")\n .action(principalsCreateCommand);\n\nprincipals\n .command(\"update <id>\")\n .description(\"Update a principal\")\n .option(\"--project-id <id>\", \"Override the configured project ID\")\n .option(\"--external-id <external-id>\", \"Replace the external ID\")\n .option(\"--state <state>\", \"Principal state: active, inactive, or archived\")\n .option(\"--metadata <json>\", \"Replace principal metadata with a JSON object\")\n .action(principalsUpdateCommand);\n\nprincipals\n .command(\"delete <id>\")\n .description(\"Delete a principal\")\n .option(\"--project-id <id>\", \"Override the configured project ID\")\n .action(principalsDeleteCommand);\n\nconst signals = program\n .command(\"signals\")\n .description(\"Emit runtime signals\");\n\nsignals\n .command(\"emit <name>\")\n .description(\"Emit a signal into the active project's event stream\")\n .option(\"--payload <json>\", \"Signal payload as a JSON object\", \"{}\")\n .option(\"--metadata <json>\", \"Signal metadata as a JSON object\", \"{}\")\n .option(\"--project-id <id>\", \"Override the configured project ID\")\n .requiredOption(\"--principal-id <id>\", \"Project principal ID for the emitted signal\")\n .option(\"--correlation-id <id>\", \"Correlation ID to attach to the signal\")\n .option(\"--causation-id <id>\", \"Causation ID to attach to the signal\")\n .option(\"--idempotency-key <key>\", \"Optional idempotency key\")\n .option(\"--source-name <name>\", \"Optional source name for the emitted signal\")\n .option(\"--json\", \"Print the raw emitted event as JSON\", false)\n .action(signalEmitCommand);\n\nprogram\n .command(\"quota\")\n .description(\"Show current quota usage for the active organization\")\n .action(quotaCommand);\n\nprogram\n .command(\"logs\")\n .description(\"Show recent activity events\")\n .option(\"--limit <count>\", \"Number of events to show\", \"50\")\n .option(\"--type <types...>\", \"Filter by event types\")\n .option(\"--since <duration>\", \"Show events since (e.g. 15m, 1h, 7d)\")\n .option(\"--follow\", \"Tail events in real-time\")\n .action(logsCommand);\n\nprogram.parse();\n"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/config/loader.ts","../src/build/scanner.ts","../src/build/channels.ts","../src/build/parser.ts","../src/build/resolver.ts","../src/build/validator.ts","../src/build/endpoint-validator.ts","../src/build/manifest-validator.ts","../src/build/splitter.ts","../src/build/transport-helpers.ts","../src/build/bundler.ts","../src/build/evaluator.ts","../src/build/manifest.ts","../src/build/stable-json.ts","../src/build/catalog.ts","../src/build/compiled-target.ts","../src/build/pipeline.ts","../src/build/staging.ts","../src/commands/build.ts","../src/deploy/zip.ts","../src/deploy/diff.ts","../src/deploy/catalog-diff.ts","../src/deploy/plan.ts","../src/auth/store.ts","../src/auth/refresh-error.ts","../src/auth/transport.ts","../src/api/client.ts","../src/api/socket.ts","../src/api/watcher.ts","../src/commands/deploy.ts","../src/auth/callback.ts","../src/auth/pkce.ts","../src/commands/login.ts","../src/commands/logout.ts","../src/commands/whoami.ts","../src/commands/init.ts","../src/commands/projects.ts","../src/commands/secrets.ts","../src/commands/principals.ts","../src/commands/quota.ts","../src/api/subscription.ts","../src/activity/presentation.ts","../src/commands/logs.ts","../src/commands/signals.ts","../src/commands/reconcile.ts","../src/commands/catalog.ts","../src/index.ts"],"names":["join","signals","readFile","extname","isRecord","stringField","walk2","out","acorn2","SDK_PACKAGES","acorn3","walk3","propertyName","resolvePath","sdkAliasPlugin","mkdir","build","writeFile","countPlaceholders","appResources","resourceTools","parseModule","acorn4","collectBindingNames","collectRefs","walk4","analyzeTopLevel","computeReachableNames","buildImportStatement","applyEdits","blankRegion","resolve","rm","dirname","catalog","chalk","relative","stat","readdir","stableStringify","message","authHeaders","projects","principals","basename","PhoenixSocket","URL","randomBytes","createHash","createInterface","index","secrets","level","formatEvent","isCatalogShape"],"mappings":"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","file":"index.js","sourcesContent":["import type { SourceLocation } from \"./types\";\n\nexport class CliError extends Error {\n readonly code: string;\n\n constructor(message: string, code: string) {\n super(message);\n this.code = code;\n this.name = \"CliError\";\n }\n}\n\nexport class BuildError extends CliError {\n readonly location?: SourceLocation;\n\n constructor(message: string, location?: SourceLocation) {\n super(message, \"BUILD_ERROR\");\n this.location = location;\n this.name = \"BuildError\";\n }\n}\n\nexport class ValidationError extends CliError {\n readonly location?: SourceLocation;\n\n constructor(message: string, location?: SourceLocation) {\n super(message, \"VALIDATION_ERROR\");\n this.location = location;\n this.name = \"ValidationError\";\n }\n}\n\nexport class ConfigError extends CliError {\n constructor(message: string) {\n super(message, \"CONFIG_ERROR\");\n this.name = \"ConfigError\";\n }\n}\n\nexport class ApiError extends CliError {\n readonly statusCode: number;\n\n constructor(message: string, statusCode: number) {\n super(message, \"API_ERROR\");\n this.statusCode = statusCode;\n this.name = \"ApiError\";\n }\n}\n","import { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { CliConfig } from \"../types\";\nimport { ConfigError } from \"../errors\";\n\ninterface ConfigFileShape {\n dir?: string;\n apiUrl?: string;\n projectId?: string;\n}\n\nasync function readConfigFile(cwd: string): Promise<ConfigFileShape> {\n const configPath = join(cwd, \"io.config.json\");\n try {\n const raw = await readFile(configPath, \"utf-8\");\n return JSON.parse(raw) as ConfigFileShape;\n } catch (err: unknown) {\n if (err instanceof SyntaxError) {\n throw new ConfigError(`Malformed io.config.json: ${err.message}`);\n }\n return {};\n }\n}\n\nexport async function loadConfig(\n cliOptions: Partial<CliConfig> = {},\n cwd: string = process.cwd(),\n): Promise<CliConfig> {\n const file = await readConfigFile(cwd);\n\n return {\n dir: cliOptions.dir ?? file.dir ?? \"io\",\n apiUrl: cliOptions.apiUrl ?? process.env[\"IO_API_URL\"] ?? file.apiUrl ?? \"https://io.maix.ovh\",\n projectId:\n cliOptions.projectId ??\n process.env[\"IO_PROJECT_ID\"] ??\n file.projectId ??\n \"\",\n };\n}\n","import { readdir, stat } from \"node:fs/promises\";\nimport { join, extname } from \"node:path\";\nimport { BuildError } from \"../errors\";\n\nconst VALID_EXTENSIONS = new Set([\".js\", \".ts\"]);\n\nexport async function scan(dir: string): Promise<string[]> {\n try {\n await stat(dir);\n } catch {\n throw new BuildError(`Source directory '${dir}' does not exist`);\n }\n\n const entries = await readdir(dir, { recursive: true });\n\n const files = entries\n .filter((entry) => {\n const ext = extname(entry);\n if (!VALID_EXTENSIONS.has(ext)) return false;\n if (entry.endsWith(\".d.ts\")) return false;\n if (entry.includes(\"node_modules\")) return false;\n return true;\n })\n .map((entry) => join(dir, entry))\n .sort();\n\n if (files.length === 0) {\n throw new BuildError(`No .js or .ts files found in '${dir}/'`);\n }\n\n return files;\n}\n","const SIGNAL_NAMESPACES = new Set([\"trigger\", \"signal\", \"memory\", \"knowledge\"]);\nconst PATTERN_NAMESPACES = new Set([\n \"trigger\",\n \"signal\",\n \"memory\",\n \"knowledge\",\n \"session\",\n]);\nconst EVENT_NAME_REGEX = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;\nconst EVENT_WILDCARD_REGEX = /^[A-Za-z0-9][A-Za-z0-9._-]*\\.\\*$/;\n\nfunction splitRuntimeSignal(value: string): [string, string] | null {\n const trimmed = value.trim();\n const separator = trimmed.indexOf(\":\");\n\n if (separator <= 0 || separator === trimmed.length - 1) {\n return null;\n }\n\n return [trimmed.slice(0, separator).trim(), trimmed.slice(separator + 1).trim()];\n}\n\nfunction validEventName(value: string): boolean {\n return value !== \"\" && !value.includes(\":\") && EVENT_NAME_REGEX.test(value);\n}\n\nfunction validEventPattern(value: string): boolean {\n return value === \"*\" || validEventName(value) || EVENT_WILDCARD_REGEX.test(value);\n}\n\nexport function validRuntimeSignalName(value: string): boolean {\n const parts = splitRuntimeSignal(value);\n\n if (!parts) {\n return false;\n }\n\n const [namespace, eventName] = parts;\n return SIGNAL_NAMESPACES.has(namespace) && validEventName(eventName);\n}\n\nexport function normalizeRuntimeSignalName(value: string): string | null {\n const trimmed = value.trim();\n\n if (!trimmed) {\n return null;\n }\n\n if (validEventName(trimmed)) {\n return `signal:${trimmed}`;\n }\n\n return validRuntimeSignalName(trimmed) ? trimmed : null;\n}\n\nexport function validChannelPattern(value: string): boolean {\n if (value === \"*\") {\n return true;\n }\n\n const parts = splitRuntimeSignal(value);\n\n if (!parts) {\n return false;\n }\n\n const [namespace, eventName] = parts;\n return PATTERN_NAMESPACES.has(namespace) && validEventPattern(eventName);\n}\n","import { readFile } from \"node:fs/promises\";\nimport { extname } from \"node:path\";\nimport * as acorn from \"acorn\";\nimport * as walk from \"acorn-walk\";\nimport { transform } from \"esbuild\";\nimport { BuildError } from \"../errors\";\nimport { normalizeRuntimeSignalName } from \"./channels\";\nimport type {\n FileDiscoveryResult,\n DiscoveredBehavior,\n DiscoveredSignal,\n DiscoveredConversation,\n ExecutionConfig,\n OnFieldRaw,\n SourceLocation,\n} from \"../types\";\n\ntype AstNode = acorn.Node & Record<string, unknown>;\n\nconst SDK_PACKAGES = new Set([\"@io/sdk\", \"@kaelen-ai/sdk\", \"@eleven-am/sdk\"]);\n\nconst EXECUTION_KEYS = new Set([\n \"memory\",\n \"timeout\",\n \"maxToolCalls\",\n \"rateBudget\",\n \"retries\",\n \"concurrency\",\n]);\n\nfunction loc(node: AstNode, file: string): SourceLocation {\n const position = node.loc?.start as { line: number; column: number } | undefined;\n return {\n file,\n line: position?.line ?? 0,\n column: position?.column ?? 0,\n };\n}\n\nfunction extractStaticValue(node: AstNode, file: string): unknown {\n switch (node.type) {\n case \"Literal\":\n return node.value;\n\n case \"TemplateLiteral\":\n if ((node.expressions as AstNode[]).length === 0) {\n const quasis = node.quasis as AstNode[];\n return ((quasis[0]?.value as { cooked?: string } | undefined)?.cooked ?? \"\");\n }\n break;\n\n case \"UnaryExpression\": {\n const operator = node.operator as string;\n const argument = extractStaticValue(node.argument as AstNode, file);\n\n if (operator === \"-\" && typeof argument === \"number\") {\n return -argument;\n }\n\n if (operator === \"+\" && typeof argument === \"number\") {\n return argument;\n }\n\n if (operator === \"!\" && typeof argument === \"boolean\") {\n return !argument;\n }\n\n break;\n }\n\n case \"ArrayExpression\":\n return (node.elements as (AstNode | null)[]).map((element) => {\n if (!element) {\n throw new BuildError(`Unsupported sparse array value in ${file}`, loc(node, file));\n }\n\n return extractStaticValue(element, file);\n });\n\n case \"ObjectExpression\": {\n const entries: Record<string, unknown> = {};\n\n for (const property of node.properties as AstNode[]) {\n if (property.type === \"SpreadElement\") {\n throw new BuildError(\n `Unsupported spread syntax in static config in ${file}`,\n loc(property, file),\n );\n }\n\n const key = property.key as AstNode;\n const keyName =\n key.type === \"Identifier\"\n ? (key.name as string)\n : key.type === \"Literal\" && typeof key.value === \"string\"\n ? key.value\n : undefined;\n\n if (!keyName) {\n throw new BuildError(\n `Unsupported computed key in static config in ${file}`,\n loc(property, file),\n );\n }\n\n entries[keyName] = extractStaticValue(property.value as AstNode, file);\n }\n\n return entries;\n }\n }\n\n throw new BuildError(\n `Unsupported static expression type '${node.type}' in ${file}`,\n loc(node, file),\n );\n}\n\nfunction propertyName(prop: AstNode): string | undefined {\n const key = prop.key as AstNode | undefined;\n if (!key) {\n return undefined;\n }\n\n if (key.type === \"Identifier\") {\n return key.name as string;\n }\n\n if (key.type === \"Literal\" && typeof key.value === \"string\") {\n return key.value as string;\n }\n\n return undefined;\n}\n\nfunction findVariableDeclarator(ancestors: AstNode[]): string | undefined {\n for (let i = ancestors.length - 1; i >= 0; i--) {\n const node = ancestors[i];\n if (node.type === \"VariableDeclarator\") {\n const id = node.id as AstNode;\n if (id.type === \"Identifier\") {\n return id.name as string;\n }\n }\n }\n\n return undefined;\n}\n\nfunction findStatementBounds(ancestors: AstNode[]): { start: number; end: number } {\n for (let i = ancestors.length - 1; i >= 0; i--) {\n const node = ancestors[i];\n if (node.type === \"ExpressionStatement\" || node.type === \"VariableDeclaration\") {\n return { start: node.start as number, end: node.end as number };\n }\n }\n\n return { start: 0, end: 0 };\n}\n\nfunction buildSdkImportMap(ast: AstNode): Map<string, string> {\n const importMap = new Map<string, string>();\n\n walk.simple(ast as acorn.Node, {\n ImportDeclaration(node) {\n const n = node as unknown as AstNode;\n const source = n.source as AstNode;\n if (!SDK_PACKAGES.has(String(source.value))) {\n return;\n }\n\n for (const specifier of n.specifiers as AstNode[]) {\n if (specifier.type === \"ImportSpecifier\") {\n importMap.set(\n (specifier.local as AstNode).name as string,\n (specifier.imported as AstNode).name as string,\n );\n }\n }\n },\n });\n\n return importMap;\n}\n\nfunction extractOnField(\n propValue: AstNode,\n file: string,\n sdkImports: Map<string, string>,\n): OnFieldRaw {\n if (propValue.type === \"Literal\" && typeof propValue.value === \"string\") {\n return { type: \"literal\", value: propValue.value as string };\n }\n\n if (propValue.type === \"MemberExpression\") {\n const object = propValue.object as AstNode;\n const property = propValue.property as AstNode;\n\n if (object.type === \"Identifier\") {\n const sdkName = sdkImports.get(object.name as string);\n if (sdkName === \"memory\") {\n return {\n type: \"memory\",\n propertyName: (property.name as string) ?? \"\",\n };\n }\n }\n\n return {\n type: \"member\",\n objectName: (object.name as string) ?? \"\",\n propertyName: (property.name as string) ?? \"\",\n };\n }\n\n if (propValue.type === \"Identifier\") {\n return { type: \"identifier\", name: propValue.name as string };\n }\n\n throw new BuildError(\n `Unsupported 'on' field expression type '${propValue.type}' in ${file}`,\n loc(propValue, file),\n );\n}\n\nfunction extractExecutionConfig(properties: AstNode[], file: string): ExecutionConfig | undefined {\n const config: Record<string, unknown> = {};\n\n for (const prop of properties) {\n if (prop.type === \"SpreadElement\") {\n continue;\n }\n\n const keyName = propertyName(prop);\n if (!keyName || !EXECUTION_KEYS.has(keyName)) {\n continue;\n }\n\n config[keyName] = extractStaticValue(prop.value as AstNode, file);\n }\n\n return Object.keys(config).length > 0 ? (config as ExecutionConfig) : undefined;\n}\n\nfunction extractSignalSchema(\n node: AstNode | undefined,\n file: string,\n sdkImports: Map<string, string>,\n): Record<string, unknown> | undefined {\n if (!node) {\n return undefined;\n }\n\n if (node.type !== \"CallExpression\") {\n throw new BuildError(`signal() schema must use ioSchema({...}) in ${file}`, loc(node, file));\n }\n\n const callee = node.callee as AstNode;\n if (callee.type !== \"Identifier\" || sdkImports.get(callee.name as string) !== \"ioSchema\") {\n throw new BuildError(`signal() schema must use ioSchema({...}) in ${file}`, loc(node, file));\n }\n\n const schema = extractStaticValue((node.arguments as AstNode[])[0] as AstNode, file);\n\n if (schema && typeof schema === \"object\" && !Array.isArray(schema)) {\n return schema as Record<string, unknown>;\n }\n\n throw new BuildError(`signal() schema must be a static object in ${file}`, loc(node, file));\n}\n\nfunction parseBehaviorCall(\n node: AstNode,\n args: AstNode[],\n ancestors: AstNode[],\n file: string,\n out: DiscoveredBehavior[],\n sdkImports: Map<string, string>,\n): void {\n if (\n args.length < 1 ||\n args[0].type !== \"Literal\" ||\n typeof args[0].value !== \"string\"\n ) {\n throw new BuildError(\n `behavior() requires a name as first argument in ${file}:${(node.loc as { start: { line: number } })?.start?.line ?? 0}`,\n loc(node, file),\n );\n }\n\n const name = args[0].value as string;\n const location = loc(node, file);\n\n if (args.length < 2 || args[1].type !== \"ObjectExpression\") {\n throw new BuildError(\n `behavior '${name}' is missing a spec object in ${file}:${location.line}`,\n location,\n );\n }\n\n const spec = args[1] as AstNode;\n const properties = spec.properties as AstNode[];\n let onRaw: OnFieldRaw | undefined;\n let hasRun = false;\n\n for (const prop of properties) {\n if (prop.type === \"SpreadElement\") {\n continue;\n }\n\n const keyName = propertyName(prop);\n if (!keyName) {\n continue;\n }\n\n if (keyName === \"on\") {\n onRaw = extractOnField(prop.value as AstNode, file, sdkImports);\n } else if (keyName === \"run\") {\n hasRun = true;\n }\n }\n\n if (!onRaw) {\n throw new BuildError(`behavior '${name}' is missing an on field`, location);\n }\n\n if (!hasRun) {\n throw new BuildError(`behavior '${name}' is missing a run function`, location);\n }\n\n const execution = extractExecutionConfig(properties, file);\n const bounds = findStatementBounds(ancestors);\n\n out.push({\n name,\n onRaw,\n on: \"\",\n execution,\n location,\n statementStart: bounds.start,\n statementEnd: bounds.end,\n });\n}\n\nfunction parseSignalCall(\n args: AstNode[],\n ancestors: AstNode[],\n file: string,\n sdkImports: Map<string, string>,\n out: DiscoveredSignal[],\n): void {\n if (\n args.length < 1 ||\n args[0].type !== \"Literal\" ||\n typeof args[0].value !== \"string\"\n ) {\n return;\n }\n\n const rawName = args[0].value as string;\n const name = normalizeRuntimeSignalName(rawName) ?? rawName;\n const variableName = findVariableDeclarator(ancestors) ?? rawName;\n const schema = extractSignalSchema(args[2] as AstNode | undefined, file, sdkImports);\n\n out.push({\n name,\n variableName,\n schema,\n location: loc(args[0] as AstNode, file),\n });\n}\n\nfunction parseConversationCall(\n node: AstNode,\n args: AstNode[],\n ancestors: AstNode[],\n file: string,\n out: DiscoveredConversation[],\n): void {\n if (\n args.length < 1 ||\n args[0].type !== \"Literal\" ||\n typeof args[0].value !== \"string\"\n ) {\n throw new BuildError(\n `conversation() requires a name as first argument in ${file}:${(node.loc as { start: { line: number } })?.start?.line ?? 0}`,\n loc(node, file),\n );\n }\n\n const name = args[0].value as string;\n const location = loc(node, file);\n\n if (args.length < 2 || args[1].type !== \"ObjectExpression\") {\n throw new BuildError(\n `conversation '${name}' is missing a spec object in ${file}:${location.line}`,\n location,\n );\n }\n\n const spec = args[1] as AstNode;\n const properties = spec.properties as AstNode[];\n let transport = \"\";\n let hasOnStart = false;\n let hasOnMessage = false;\n let hasOnEnd = false;\n\n for (const prop of properties) {\n if (prop.type === \"SpreadElement\") {\n continue;\n }\n\n const keyName = propertyName(prop);\n if (!keyName) {\n continue;\n }\n\n if (keyName === \"transport\") {\n const value = prop.value as AstNode;\n if (value.type === \"Literal\" && typeof value.value === \"string\") {\n transport = value.value as string;\n }\n } else if (keyName === \"onStart\") {\n hasOnStart = true;\n } else if (keyName === \"onMessage\") {\n hasOnMessage = true;\n } else if (keyName === \"onEnd\") {\n hasOnEnd = true;\n }\n }\n\n if (!transport) {\n throw new BuildError(\n `conversation '${name}' is missing a transport field in ${file}:${location.line}`,\n location,\n );\n }\n\n if (transport !== \"voice\" && transport !== \"api\") {\n throw new BuildError(\n `conversation '${name}' transport must be \"voice\" or \"api\", got \"${transport}\" in ${file}:${location.line}`,\n location,\n );\n }\n\n if (!hasOnMessage) {\n throw new BuildError(\n `conversation '${name}' is missing an onMessage handler in ${file}:${location.line}`,\n location,\n );\n }\n\n const execution = extractExecutionConfig(properties, file);\n const bounds = findStatementBounds(ancestors);\n\n out.push({\n name,\n transport,\n execution,\n hasOnStart,\n hasOnMessage,\n hasOnEnd,\n location,\n statementStart: bounds.start,\n statementEnd: bounds.end,\n });\n}\n\nexport function parseSource(file: string, source: string): FileDiscoveryResult {\n const ast = acorn.parse(source, {\n ecmaVersion: \"latest\",\n sourceType: \"module\",\n locations: true,\n }) as unknown as AstNode;\n\n const sdkImports = buildSdkImportMap(ast);\n const behaviors: DiscoveredBehavior[] = [];\n const signals: DiscoveredSignal[] = [];\n const conversations: DiscoveredConversation[] = [];\n\n walk.ancestor(ast as acorn.Node, {\n CallExpression(node, _state, ancestors) {\n const n = node as unknown as AstNode;\n const anc = ancestors as unknown as AstNode[];\n const callee = n.callee as AstNode;\n\n if (callee.type !== \"Identifier\") {\n return;\n }\n\n const sdkName = sdkImports.get(callee.name as string);\n if (!sdkName) {\n return;\n }\n\n const args = n.arguments as AstNode[];\n\n if (sdkName === \"behavior\") {\n parseBehaviorCall(n, args, anc, file, behaviors, sdkImports);\n } else if (sdkName === \"signal\") {\n parseSignalCall(args, anc, file, sdkImports, signals);\n } else if (sdkName === \"conversation\") {\n parseConversationCall(n, args, anc, file, conversations);\n }\n },\n });\n\n return { file, source, behaviors, signals, conversations };\n}\n\nexport async function parseFile(file: string): Promise<FileDiscoveryResult> {\n const raw = await readFile(file, \"utf-8\");\n let source = raw;\n\n if (extname(file) === \".ts\") {\n const result = await transform(raw, { loader: \"ts\" });\n source = result.code;\n }\n\n return parseSource(file, source);\n}\n\nexport async function discoverAll(files: string[]): Promise<FileDiscoveryResult[]> {\n return Promise.all(files.map(parseFile));\n}\n","import { BuildError } from \"../errors\";\nimport type { FileDiscoveryResult, DiscoveryResult } from \"../types\";\n\nconst MEMORY_EVENT_MAP: Record<string, string> = {\n onCommitmentDueSoon: \"knowledge:commitment.due_soon\",\n onActionItemDueSoon: \"knowledge:action_item.due_soon\",\n onCommitmentBroken: \"knowledge:commitment.broken\",\n onActionItemOverdue: \"knowledge:action_item.overdue\",\n onIntentionTriggeredDetailed: \"knowledge:intention.triggered\",\n onIntentionExpiringSoon: \"knowledge:intention.expiring_soon\",\n onIntentionExpiredDetailed: \"knowledge:intention.expired\",\n onContradictionCreated: \"knowledge:contradiction.created\",\n onContradictionEscalated: \"knowledge:contradiction.escalated\",\n onTensionEmerged: \"knowledge:tension.emerged\",\n onTensionEscalated: \"knowledge:tension.escalated\",\n onTrajectoryDeteriorated: \"knowledge:trajectory.deteriorated\",\n onRoutineBroken: \"knowledge:routine.broken\",\n};\n\nexport function resolveAll(files: FileDiscoveryResult[]): DiscoveryResult {\n const signalVarMap = new Map<string, string>();\n\n for (const file of files) {\n for (const signal of file.signals) {\n const existing = signalVarMap.get(signal.variableName);\n if (existing && existing !== signal.name) {\n throw new BuildError(\n `signal variable '${signal.variableName}' is used for both '${existing}' and '${signal.name}' across files`,\n signal.location,\n );\n }\n\n signalVarMap.set(signal.variableName, signal.name);\n }\n }\n\n const allBehaviors = [];\n const allSignals = [];\n const allConversations = [];\n\n for (const file of files) {\n for (const behavior of file.behaviors) {\n const raw = behavior.onRaw;\n\n if (raw.type === \"literal\") {\n behavior.on = raw.value!;\n } else if (raw.type === \"member\") {\n behavior.on = \"\";\n } else if (raw.type === \"memory\") {\n const eventType = MEMORY_EVENT_MAP[raw.propertyName!];\n if (!eventType) {\n throw new BuildError(\n `Unknown memory event 'memory.${raw.propertyName}' in ${behavior.location.file}:${behavior.location.line}`,\n behavior.location,\n );\n }\n\n behavior.on = eventType;\n } else if (raw.type === \"identifier\") {\n const signalName = signalVarMap.get(raw.name!);\n if (!signalName) {\n throw new BuildError(\n `Cannot resolve '${raw.name}' — it is not a known signal in ${behavior.location.file}:${behavior.location.line}`,\n behavior.location,\n );\n }\n\n behavior.on = signalName;\n }\n\n allBehaviors.push(behavior);\n }\n\n allSignals.push(...file.signals);\n allConversations.push(...file.conversations);\n }\n\n return { files, allBehaviors, allSignals, allConversations };\n}\n","import { ValidationError, BuildError } from \"../errors\";\nimport type { DiscoveryResult } from \"../types\";\nimport { validChannelPattern, validRuntimeSignalName } from \"./channels\";\n\nexport function validate(result: DiscoveryResult): void {\n const errors: ValidationError[] = [];\n\n const behaviorNames = new Map<string, string>();\n for (const behavior of result.allBehaviors) {\n if (behavior.on && !validChannelPattern(behavior.on)) {\n errors.push(\n new ValidationError(\n `behavior '${behavior.name}' channel must use signal:, memory:, knowledge:, or session: in ${behavior.location.file}:${behavior.location.line}`,\n behavior.location,\n ),\n );\n }\n\n const existing = behaviorNames.get(behavior.name);\n if (existing) {\n errors.push(\n new ValidationError(\n `behavior '${behavior.name}' defined in both ${existing} and ${behavior.location.file}:${behavior.location.line}`,\n behavior.location,\n ),\n );\n } else {\n behaviorNames.set(behavior.name, `${behavior.location.file}:${behavior.location.line}`);\n }\n }\n\n const signalNames = new Map<string, string>();\n for (const signal of result.allSignals) {\n if (!validRuntimeSignalName(signal.name)) {\n errors.push(\n new ValidationError(\n `signal '${signal.name}' must resolve to a valid signal:<name> runtime signal in ${signal.location.file}:${signal.location.line}`,\n signal.location,\n ),\n );\n }\n\n const existing = signalNames.get(signal.name);\n if (existing) {\n errors.push(\n new ValidationError(\n `signal '${signal.name}' defined in both ${existing} and ${signal.location.file}:${signal.location.line}`,\n signal.location,\n ),\n );\n } else {\n signalNames.set(signal.name, `${signal.location.file}:${signal.location.line}`);\n }\n }\n\n const conversationNames = new Map<string, string>();\n for (const conversation of result.allConversations) {\n if (!validChannelPattern(`session:${conversation.name}`)) {\n errors.push(\n new ValidationError(\n `conversation '${conversation.name}' name must resolve to a valid session:<name> channel in ${conversation.location.file}:${conversation.location.line}`,\n conversation.location,\n ),\n );\n }\n\n const existing = conversationNames.get(conversation.name);\n if (existing) {\n errors.push(\n new ValidationError(\n `conversation '${conversation.name}' defined in both ${existing} and ${conversation.location.file}:${conversation.location.line}`,\n conversation.location,\n ),\n );\n } else {\n conversationNames.set(conversation.name, `${conversation.location.file}:${conversation.location.line}`);\n }\n }\n\n if (errors.length > 0) {\n throw new BuildError(\n `Validation failed:\\n${errors.map((error) => error.message).join(\"\\n\")}`,\n );\n }\n}\n","type UnknownRecord = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction stringField(record: UnknownRecord, key: string): string | undefined {\n const value = record[key];\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction booleanField(record: UnknownRecord, key: string): boolean | undefined {\n const value = record[key];\n return typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction numberField(record: UnknownRecord, key: string): number | undefined {\n const value = record[key];\n return typeof value === \"number\" ? value : undefined;\n}\n\nfunction isLoopbackHost(host: string): boolean {\n if (host === \"localhost\" || host === \"::1\" || host === \"ip6-localhost\") {\n return true;\n }\n if (/^127\\.\\d+\\.\\d+\\.\\d+$/.test(host)) return true;\n if (host === \"::ffff:127.0.0.1\") return true;\n return false;\n}\n\nfunction isRfc1918(host: string): boolean {\n const ipv4 = /^(\\d+)\\.(\\d+)\\.\\d+\\.\\d+$/.exec(host);\n if (!ipv4) return false;\n const a = Number(ipv4[1]);\n const b = Number(ipv4[2]);\n if (a === 10) return true;\n if (a === 172 && b >= 16 && b <= 31) return true;\n if (a === 192 && b === 168) return true;\n return false;\n}\n\nfunction isLinkLocal(host: string): boolean {\n if (/^169\\.254\\.\\d+\\.\\d+$/.test(host)) return true;\n if (/^fe80:/i.test(host)) return true;\n return false;\n}\n\nfunction isClusterOrInternalSuffix(host: string): boolean {\n const lower = host.toLowerCase();\n if (lower === \"svc.cluster.local\" || lower === \"internal\" || lower === \"svc\") {\n return true;\n }\n if (lower.endsWith(\".svc.cluster.local\")) return true;\n if (lower.endsWith(\".internal\")) return true;\n if (lower.endsWith(\".svc\")) return true;\n return false;\n}\n\nexport function isPrivateHost(host: string): boolean {\n if (!host) return false;\n if (isLoopbackHost(host)) return true;\n if (isRfc1918(host)) return true;\n if (isLinkLocal(host)) return true;\n if (isClusterOrInternalSuffix(host)) return true;\n return false;\n}\n\nfunction unbracketHost(host: string): string {\n return host.startsWith(\"[\") && host.endsWith(\"]\")\n ? host.slice(1, -1)\n : host;\n}\n\nexport function validateEndpointEntry(\n entry: UnknownRecord,\n errors: string[],\n): string | undefined {\n const name = stringField(entry, \"name\");\n if (!name || !name.trim()) {\n errors.push(\"endpoint entry is missing a string name\");\n return undefined;\n }\n\n const baseUrl = stringField(entry, \"base_url\");\n if (!baseUrl || !baseUrl.trim()) {\n errors.push(`endpoint \"${name}\" is missing base_url`);\n return name;\n }\n\n let parsed: URL;\n try {\n parsed = new URL(baseUrl);\n } catch {\n errors.push(`endpoint \"${name}\" base_url \"${baseUrl}\" is not a valid absolute URL`);\n return name;\n }\n\n const rawScheme = parsed.protocol.replace(/:$/, \"\").toLowerCase();\n if (rawScheme !== \"http\" && rawScheme !== \"https\") {\n errors.push(`endpoint \"${name}\" scheme \"${rawScheme}\" is not supported (use http or https)`);\n }\n\n const persistedScheme = stringField(entry, \"scheme\");\n if (persistedScheme !== rawScheme) {\n errors.push(\n `endpoint \"${name}\" persisted scheme \"${persistedScheme ?? \"(missing)\"}\" does not match base_url scheme \"${rawScheme}\"`,\n );\n }\n\n const rawHost = unbracketHost(parsed.hostname.toLowerCase());\n if (!rawHost) {\n errors.push(`endpoint \"${name}\" base_url \"${baseUrl}\" is missing a host`);\n }\n\n const persistedHost = stringField(entry, \"host\");\n if (persistedHost !== rawHost) {\n errors.push(\n `endpoint \"${name}\" persisted host \"${persistedHost ?? \"(missing)\"}\" does not match base_url host \"${rawHost}\"`,\n );\n }\n\n const inferredPort =\n parsed.port !== \"\"\n ? Number(parsed.port)\n : rawScheme === \"https\"\n ? 443\n : 80;\n const persistedPort = numberField(entry, \"port\");\n if (\n persistedPort === undefined ||\n !Number.isInteger(persistedPort) ||\n persistedPort < 1 ||\n persistedPort > 65535\n ) {\n errors.push(\n `endpoint \"${name}\" port ${persistedPort ?? \"(missing)\"} is outside the valid range (1-65535)`,\n );\n } else if (persistedPort !== inferredPort) {\n errors.push(\n `endpoint \"${name}\" persisted port ${persistedPort} does not match base_url port ${inferredPort}`,\n );\n }\n\n const privateFlag = booleanField(entry, \"private\");\n if (privateFlag === undefined) {\n errors.push(`endpoint \"${name}\" must include a boolean \"private\" flag`);\n } else {\n const detectedPrivate = rawHost ? isPrivateHost(rawHost) : false;\n if (detectedPrivate && !privateFlag) {\n errors.push(\n `endpoint \"${name}\" host \"${rawHost}\" is a private/internal address but is not marked private: true`,\n );\n }\n if (!detectedPrivate && privateFlag && rawHost) {\n errors.push(\n `endpoint \"${name}\" host \"${rawHost}\" is not a recognized private address but is marked private: true`,\n );\n }\n }\n\n const allowSubdomains = booleanField(entry, \"allow_subdomains\");\n if (allowSubdomains === undefined) {\n errors.push(`endpoint \"${name}\" must include a boolean \"allow_subdomains\" flag`);\n }\n\n return name;\n}\n\nexport function validateEndpointsSection(\n endpoints: readonly unknown[],\n errors: string[],\n): Set<string> {\n const declared = new Set<string>();\n const seen = new Set<string>();\n for (const entry of endpoints) {\n if (!isRecord(entry)) {\n errors.push(\"endpoint entry must be an object\");\n continue;\n }\n const name = validateEndpointEntry(entry, errors);\n if (name) {\n if (seen.has(name)) {\n errors.push(`endpoint \"${name}\" is declared more than once`);\n }\n seen.add(name);\n declared.add(name);\n }\n }\n return declared;\n}\n","import { BuildError } from \"../errors\";\nimport { validateEndpointsSection } from \"./endpoint-validator\";\n\nconst RESERVED_BUNDLE_PREFIX = \"__kaelen.\";\nconst BINDING_SCOPES = new Set([\"project\", \"principal\"]);\nconst CREDENTIAL_SOURCES = new Set([\"none\", \"platform\", \"secret_bundle\"]);\nconst TARGET_EXECUTION_KEYS = new Set([\n \"applications\",\n \"endpoints\",\n \"secret_names\",\n \"timeout_ms\",\n \"memory_mb\",\n \"max_tool_calls\",\n \"rate_budget\",\n]);\n\nconst SECRET_HEADER_NAMES = new Set([\n \"authorization\",\n \"proxy-authorization\",\n \"proxy-authenticate\",\n \"www-authenticate\",\n \"cookie\",\n \"set-cookie\",\n \"x-api-key\",\n \"x-auth-token\",\n \"x-access-token\",\n \"x-secret\",\n \"x-secret-key\",\n \"x-amz-security-token\",\n]);\n\nconst HTTP_LIKE_KINDS = new Set([\"http\", \"graphql\", \"httpApi\", \"graphqlApi\"]);\nconst OP_RESOURCE_KINDS = new Set([\"httpApi\", \"graphqlApi\"]);\n\nfunction countPlaceholders(format: string): number {\n let count = 0;\n let idx = 0;\n while ((idx = format.indexOf(\"{}\", idx)) !== -1) {\n count++;\n idx += 2;\n }\n return count;\n}\n\nfunction validateStaticHeaders(\n owner: string,\n headers: unknown,\n errors: string[],\n): void {\n if (headers === undefined) return;\n if (!isRecord(headers)) {\n errors.push(`${owner} headers must be an object`);\n return;\n }\n for (const name of Object.keys(headers)) {\n if (SECRET_HEADER_NAMES.has(name.toLowerCase())) {\n errors.push(\n `${owner} headers entry \"${name}\" is secret-bearing; declare it via credentialHeaders instead`,\n );\n }\n }\n}\n\nfunction validateCredentialHeadersBlock(\n owner: string,\n declared: unknown,\n errors: string[],\n secretBundleNames: ReadonlySet<string>,\n resourceSecretBundle: string | undefined,\n secretBundleSlots: ReadonlyMap<string, ReadonlySet<string>>,\n): void {\n if (declared === undefined) return;\n if (!Array.isArray(declared)) {\n errors.push(`${owner} credentialHeaders must be an array`);\n return;\n }\n for (const entry of declared) {\n if (!isRecord(entry)) {\n errors.push(`${owner} credentialHeaders entry must be an object`);\n continue;\n }\n const name = stringField(entry, \"name\");\n if (!name) {\n errors.push(`${owner} credentialHeaders entry is missing a string name`);\n continue;\n }\n if (SECRET_HEADER_NAMES.has(name.toLowerCase())) {\n // expected — credential headers are exactly where the secret-bearing names live\n }\n const source = entry.source;\n if (!isRecord(source)) {\n errors.push(\n `${owner} credentialHeaders \"${name}\" source must be an object`,\n );\n continue;\n }\n const kind = stringField(source, \"kind\");\n if (kind === \"credential\") {\n const field = stringField(source, \"field\");\n if (!field) {\n errors.push(\n `${owner} credentialHeaders \"${name}\" credential source missing field`,\n );\n continue;\n }\n if (resourceSecretBundle === undefined) {\n errors.push(\n `${owner} credentialHeaders \"${name}\" uses credential source but resource declares no auth/secret_bundle`,\n );\n } else if (!resourceSecretBundle.startsWith(RESERVED_BUNDLE_PREFIX)) {\n const slots = secretBundleSlots.get(resourceSecretBundle);\n if (slots && !slots.has(field)) {\n errors.push(\n `${owner} credentialHeaders \"${name}\" credential field \"${field}\" is not declared in secret bundle \"${resourceSecretBundle}\"`,\n );\n }\n }\n } else if (kind === \"rawSecret\" || kind === \"raw_secret\") {\n const secretName = stringField(source, \"name\");\n if (!secretName) {\n errors.push(\n `${owner} credentialHeaders \"${name}\" raw_secret source missing name`,\n );\n continue;\n }\n if (\n !secretName.startsWith(RESERVED_BUNDLE_PREFIX) &&\n !secretBundleNames.has(secretName)\n ) {\n errors.push(\n `${owner} credentialHeaders \"${name}\" references unknown raw_secret \"${secretName}\"`,\n );\n }\n } else {\n errors.push(\n `${owner} credentialHeaders \"${name}\" source.kind must be credential or rawSecret`,\n );\n continue;\n }\n const format = entry.format;\n if (format !== undefined) {\n if (typeof format !== \"string\" || countPlaceholders(format) !== 1) {\n errors.push(\n `${owner} credentialHeaders \"${name}\" format must contain exactly one {} placeholder`,\n );\n }\n }\n }\n}\n\nfunction validateRequestMappingBlock(\n owner: string,\n declared: unknown,\n errors: string[],\n): void {\n if (declared === undefined) return;\n if (!isRecord(declared)) {\n errors.push(`${owner} requestMapping must be an object`);\n return;\n }\n for (const key of [\"pathParams\", \"query\"] as const) {\n const value = declared[key];\n if (value === undefined) continue;\n if (!Array.isArray(value)) {\n errors.push(`${owner} requestMapping.${key} must be an array`);\n continue;\n }\n for (const entry of value) {\n if (typeof entry === \"string\") {\n if (!entry.trim()) {\n errors.push(\n `${owner} requestMapping.${key} entries must be non-empty strings or {from, as?} objects`,\n );\n }\n continue;\n }\n if (isRecord(entry)) {\n if (!stringField(entry, \"from\")) {\n errors.push(\n `${owner} requestMapping.${key} entry.from must be a non-empty string`,\n );\n continue;\n }\n if (\n entry.as !== undefined &&\n (typeof entry.as !== \"string\" || !entry.as.trim())\n ) {\n errors.push(\n `${owner} requestMapping.${key} entry.as must be a non-empty string when provided`,\n );\n }\n continue;\n }\n errors.push(\n `${owner} requestMapping.${key} entries must be strings or {from, as?} objects`,\n );\n }\n }\n if (\n declared.body !== undefined &&\n typeof declared.body !== \"string\" &&\n declared.body !== null\n ) {\n errors.push(`${owner} requestMapping.body must be a string or null`);\n }\n}\n\nfunction validateHttpLikeConfig(\n appName: string,\n resourceName: string,\n resourceKind: string,\n config: unknown,\n secretBundleNames: ReadonlySet<string>,\n resourceSecretBundle: string | undefined,\n secretBundleSlots: ReadonlyMap<string, ReadonlySet<string>>,\n errors: string[],\n): void {\n if (!HTTP_LIKE_KINDS.has(resourceKind)) return;\n if (!isRecord(config)) return;\n\n const base = `resource \"${appName}/${resourceName}\"`;\n validateStaticHeaders(base, config.headers, errors);\n validateCredentialHeadersBlock(\n base,\n config.credentialHeaders,\n errors,\n secretBundleNames,\n resourceSecretBundle,\n secretBundleSlots,\n );\n if (resourceKind === \"http\") {\n validateRequestMappingBlock(base, config.requestMapping, errors);\n }\n if (resourceKind === \"graphql\") {\n if (\n config.variablesMapping !== undefined &&\n typeof config.variablesMapping !== \"string\"\n ) {\n errors.push(`${base} variablesMapping must be a string`);\n }\n }\n if (OP_RESOURCE_KINDS.has(resourceKind)) {\n const ops = config.operations;\n if (ops !== undefined && !isRecord(ops)) {\n errors.push(`${base} operations must be an object`);\n return;\n }\n if (isRecord(ops)) {\n for (const [opName, opSpec] of Object.entries(ops)) {\n const owner = `${base} operation \"${opName}\"`;\n if (!isRecord(opSpec)) {\n errors.push(`${owner} must be an object`);\n continue;\n }\n validateStaticHeaders(owner, opSpec.headers, errors);\n validateCredentialHeadersBlock(\n owner,\n opSpec.credentialHeaders,\n errors,\n secretBundleNames,\n resourceSecretBundle,\n secretBundleSlots,\n );\n if (resourceKind === \"httpApi\") {\n validateRequestMappingBlock(owner, opSpec.requestMapping, errors);\n }\n if (resourceKind === \"graphqlApi\") {\n if (\n opSpec.variablesMapping !== undefined &&\n typeof opSpec.variablesMapping !== \"string\"\n ) {\n errors.push(`${owner} variablesMapping must be a string`);\n }\n }\n }\n }\n }\n}\n\ntype UnknownRecord = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction arrayField(record: UnknownRecord, key: string): unknown[] {\n const value = record[key];\n return Array.isArray(value) ? value : [];\n}\n\nfunction stringField(record: UnknownRecord, key: string): string | undefined {\n const value = record[key];\n return typeof value === \"string\" && value.trim() ? value : undefined;\n}\n\nfunction scopeEntryName(entry: unknown): string | undefined {\n if (typeof entry === \"string\" && entry.trim()) return entry;\n if (isRecord(entry)) return stringField(entry, \"name\");\n return undefined;\n}\n\nfunction duplicateNames(\n entries: readonly UnknownRecord[],\n label: string,\n errors: string[],\n): void {\n const seen = new Set<string>();\n for (const entry of entries) {\n const name = stringField(entry, \"name\");\n if (!name) {\n errors.push(`${label} entry is missing a string name`);\n continue;\n }\n if (seen.has(name)) {\n errors.push(`${label} \"${name}\" is declared more than once`);\n }\n seen.add(name);\n }\n}\n\nfunction validateScopeList(\n owner: string,\n field: string,\n value: unknown,\n errors: string[],\n): string[] {\n if (value === undefined) return [];\n if (!Array.isArray(value)) {\n errors.push(`${owner} ${field} must be an array of strings or objects with a string name`);\n return [];\n }\n\n const names: string[] = [];\n for (const entry of value) {\n const name = scopeEntryName(entry);\n if (!name) {\n errors.push(`${owner} ${field} entries must be non-empty strings or objects with a string name`);\n continue;\n }\n names.push(name);\n }\n return names;\n}\n\nfunction validateTargetExecution(\n target: UnknownRecord,\n declaredApps: Set<string>,\n declaredEndpoints: Set<string>,\n errors: string[],\n): void {\n const name = stringField(target, \"name\") ?? \"(unnamed)\";\n const owner = `target \"${name}\"`;\n const execution = target.execution;\n\n if (execution !== undefined && !isRecord(execution)) {\n errors.push(`${owner} execution must be an object`);\n return;\n }\n\n const executionRecord = isRecord(execution) ? execution : {};\n for (const key of Object.keys(executionRecord)) {\n if (!TARGET_EXECUTION_KEYS.has(key)) {\n errors.push(`${owner} execution contains unsupported key \"${key}\"`);\n }\n }\n\n const applicationRefs = validateScopeList(\n owner,\n \"execution.applications\",\n executionRecord.applications,\n errors,\n );\n for (const ref of applicationRefs) {\n if (!declaredApps.has(ref)) {\n errors.push(`${owner} references undeclared application \"${ref}\"`);\n }\n }\n\n const endpointRefs = validateScopeList(\n owner,\n \"execution.endpoints\",\n executionRecord.endpoints,\n errors,\n );\n for (const ref of endpointRefs) {\n if (!declaredEndpoints.has(ref)) {\n errors.push(`${owner} references undeclared endpoint \"${ref}\"`);\n }\n }\n\n const secretRefs = validateScopeList(\n owner,\n \"execution.secret_names\",\n executionRecord.secret_names,\n errors,\n );\n\n for (const ref of secretRefs) {\n if (ref.startsWith(RESERVED_BUNDLE_PREFIX)) {\n errors.push(\n `${owner} execution.secret_names entry \"${ref}\" uses the reserved \"${RESERVED_BUNDLE_PREFIX}\" prefix`,\n );\n }\n }\n\n validatePositiveInteger(owner, \"execution.timeout_ms\", executionRecord.timeout_ms, errors);\n validatePositiveInteger(owner, \"execution.memory_mb\", executionRecord.memory_mb, errors);\n validateNonNegativeInteger(owner, \"execution.max_tool_calls\", executionRecord.max_tool_calls, errors);\n validateRateBudget(owner, executionRecord.rate_budget, errors);\n\n if (target.endpoints !== undefined) {\n errors.push(`${owner} endpoints is no longer supported; use execution.endpoints`);\n }\n}\n\nfunction validateRateBudget(\n owner: string,\n value: unknown,\n errors: string[],\n): void {\n if (value === undefined) return;\n if (!isRecord(value)) {\n errors.push(`${owner} execution.rate_budget must be an object`);\n return;\n }\n validateBudgetMap(owner, \"execution.rate_budget.per_application\", value.per_application, errors);\n validateBudgetMap(owner, \"execution.rate_budget.per_capability\", value.per_capability, errors);\n}\n\nfunction validateBudgetMap(\n owner: string,\n field: string,\n value: unknown,\n errors: string[],\n): void {\n if (value === undefined) return;\n if (!isRecord(value)) {\n errors.push(`${owner} ${field} must be an object`);\n return;\n }\n for (const [key, budget] of Object.entries(value)) {\n if (!key.trim()) {\n errors.push(`${owner} ${field} keys must be non-empty strings`);\n continue;\n }\n validateNonNegativeInteger(owner, `${field}.${key}`, budget, errors);\n }\n}\n\nfunction validatePositiveInteger(\n owner: string,\n field: string,\n value: unknown,\n errors: string[],\n): void {\n if (value === undefined) return;\n if (!Number.isInteger(value) || (value as number) <= 0) {\n errors.push(`${owner} ${field} must be a positive integer`);\n }\n}\n\nfunction validateNonNegativeInteger(\n owner: string,\n field: string,\n value: unknown,\n errors: string[],\n): void {\n if (value === undefined) return;\n if (!Number.isInteger(value) || (value as number) < 0) {\n errors.push(`${owner} ${field} must be a non-negative integer`);\n }\n}\n\nfunction capabilityId(\n applicationName: string,\n resourceName: string,\n toolName: string,\n): string {\n return `${applicationName}.${resourceName}.${toolName}`;\n}\n\nfunction validateToolCapability(\n appName: string,\n resourceName: string,\n tool: UnknownRecord,\n errors: string[],\n seenCapabilities: Set<string>,\n): void {\n const toolName = stringField(tool, \"name\");\n if (!toolName) {\n errors.push(`resource \"${appName}/${resourceName}\" has a tool without a string name`);\n return;\n }\n\n const mode = stringField(tool, \"mode\");\n if (mode !== \"read\" && mode !== \"write\") {\n errors.push(`tool \"${appName}/${resourceName}/${toolName}\" mode must be read or write`);\n }\n\n const capability = tool.capability;\n if (!isRecord(capability)) {\n errors.push(`tool \"${appName}/${resourceName}/${toolName}\" is missing tool-access metadata`);\n return;\n }\n\n const expected = capabilityId(appName, resourceName, toolName);\n if (stringField(capability, \"application_name\") !== appName) {\n errors.push(`tool \"${expected}\" capability application_name does not match its app`);\n }\n if (stringField(capability, \"resource_name\") !== resourceName) {\n errors.push(`tool \"${expected}\" capability resource_name does not match its resource`);\n }\n if (stringField(capability, \"tool_name\") !== toolName) {\n errors.push(`tool \"${expected}\" capability tool_name does not match its name`);\n }\n if (stringField(capability, \"capability_id\") !== expected) {\n errors.push(`tool \"${expected}\" capability_id must be \"${expected}\"`);\n }\n if (stringField(capability, \"mode\") !== mode) {\n errors.push(`tool \"${expected}\" capability mode does not match the tool mode`);\n }\n\n const audit = stringField(capability, \"audit\");\n if (audit !== \"finish_only\" && audit !== \"pre_call\") {\n errors.push(`tool \"${expected}\" capability audit must be finish_only or pre_call`);\n }\n if (mode === \"write\" && audit !== \"pre_call\") {\n errors.push(`write tool \"${expected}\" must use pre_call audit`);\n }\n if (mode === \"read\" && audit !== \"finish_only\") {\n errors.push(`read tool \"${expected}\" must use finish_only audit`);\n }\n\n const exposure = stringField(capability, \"credential_exposure\");\n if (exposure !== \"none\" && exposure !== \"stdlib\") {\n errors.push(`tool \"${expected}\" credential_exposure must be none or stdlib`);\n }\n\n if (!stringField(capability, \"provider_kind\")) {\n errors.push(`tool \"${expected}\" capability is missing provider_kind`);\n }\n if (!stringField(capability, \"backend_kind\")) {\n errors.push(`tool \"${expected}\" capability is missing backend_kind`);\n }\n\n if (seenCapabilities.has(expected)) {\n errors.push(`capability \"${expected}\" is declared more than once`);\n }\n seenCapabilities.add(expected);\n}\n\nfunction validateResourceCapability(\n appName: string,\n resourceName: string,\n capability: UnknownRecord,\n errors: string[],\n): void {\n const path = `${appName}/${resourceName}`;\n if (stringField(capability, \"application_name\") !== appName) {\n errors.push(`resource \"${path}\" capability application_name does not match`);\n }\n if (stringField(capability, \"resource_name\") !== resourceName) {\n errors.push(`resource \"${path}\" capability resource_name does not match`);\n }\n if (!stringField(capability, \"kind\")) {\n errors.push(`resource \"${path}\" capability is missing kind`);\n }\n if (!stringField(capability, \"provider_kind\")) {\n errors.push(`resource \"${path}\" capability is missing provider_kind`);\n }\n if (!stringField(capability, \"backend_kind\")) {\n errors.push(`resource \"${path}\" capability is missing backend_kind`);\n }\n const bindingScope = stringField(capability, \"binding_scope\");\n if (!bindingScope || !BINDING_SCOPES.has(bindingScope)) {\n errors.push(`resource \"${path}\" capability binding_scope must be project or principal`);\n }\n const credentialSource = stringField(capability, \"credential_source\");\n if (!credentialSource || !CREDENTIAL_SOURCES.has(credentialSource)) {\n errors.push(\n `resource \"${path}\" capability credential_source must be none, platform, or secret_bundle`,\n );\n }\n if (typeof capability.requires_binding !== \"boolean\") {\n errors.push(`resource \"${path}\" capability requires_binding must be a boolean`);\n }\n}\n\nexport function validateManifest(manifest: unknown): void {\n const root = isRecord(manifest) ? manifest : {};\n const errors: string[] = [];\n const seenCapabilities = new Set<string>();\n\n if (root.contract_version !== \"io.invocation.v2\") {\n errors.push(\"contract_version must be io.invocation.v2\");\n }\n\n if (root.snapshot_version !== \"io_runtime.snapshot.v2\") {\n errors.push(\"snapshot_version must be io_runtime.snapshot.v2\");\n }\n\n const secretBundles = arrayField(root, \"secret_bundles\").filter(isRecord);\n duplicateNames(secretBundles, \"secret bundle\", errors);\n for (const bundle of secretBundles) {\n const bundleName = stringField(bundle, \"name\");\n if (bundleName && bundleName.startsWith(RESERVED_BUNDLE_PREFIX)) {\n errors.push(\n `secret bundle \"${bundleName}\" uses the reserved \"${RESERVED_BUNDLE_PREFIX}\" prefix; platform-owned bundles must not be declared by user manifests`,\n );\n }\n }\n const secretNames = new Set(\n secretBundles\n .map((entry) => stringField(entry, \"name\"))\n .filter((name): name is string => !!name),\n );\n const secretBundleSlots = new Map<string, ReadonlySet<string>>();\n for (const bundle of secretBundles) {\n const bundleName = stringField(bundle, \"name\");\n if (!bundleName) continue;\n const slots = bundle.slots;\n if (!isRecord(slots)) continue;\n secretBundleSlots.set(bundleName, new Set(Object.keys(slots)));\n }\n\n const declaredEndpoints = validateEndpointsSection(\n arrayField(root, \"endpoints\"),\n errors,\n );\n const apps = arrayField(root, \"apps\").filter(isRecord);\n const declaredApps = new Set(\n apps\n .map((entry) => stringField(entry, \"name\"))\n .filter((name): name is string => !!name),\n );\n\n const targets = arrayField(root, \"targets\").filter(isRecord);\n duplicateNames(targets, \"target\", errors);\n const targetKeys = new Set<string>();\n for (const target of targets) {\n const kind = stringField(target, \"kind\");\n const name = stringField(target, \"name\");\n if (kind !== \"behavior\" && kind !== \"conversation\") {\n errors.push(`target \"${name ?? \"(unnamed)\"}\" kind must be behavior or conversation`);\n }\n if (kind && name) targetKeys.add(`${kind}:${name}`);\n validateTargetExecution(target, declaredApps, declaredEndpoints, errors);\n }\n\n duplicateNames(apps, \"app\", errors);\n for (const app of apps) {\n const appName = stringField(app, \"name\");\n if (!appName) continue;\n\n const resources = arrayField(app, \"resources\").filter(isRecord);\n duplicateNames(resources, `app \"${appName}\" resource`, errors);\n for (const resource of resources) {\n const resourceName = stringField(resource, \"name\");\n if (!resourceName) continue;\n\n const signals = arrayField(resource, \"signals\");\n const toolEntries = arrayField(resource, \"tools\");\n if (signals.length === 0 && toolEntries.length === 0) {\n errors.push(\n `resource \"${appName}/${resourceName}\" has no signals and no tools`,\n );\n }\n\n const secretBundle = stringField(resource, \"secret_bundle\");\n if (\n secretBundle &&\n !secretBundle.startsWith(RESERVED_BUNDLE_PREFIX) &&\n !secretNames.has(secretBundle)\n ) {\n errors.push(`resource \"${appName}/${resourceName}\" references missing secret bundle \"${secretBundle}\"`);\n }\n\n const capability = resource.capability;\n if (!isRecord(capability)) {\n errors.push(`resource \"${appName}/${resourceName}\" is missing tool-access metadata`);\n } else {\n validateResourceCapability(appName, resourceName, capability, errors);\n }\n\n const resourceKindForConfig = stringField(resource, \"kind\") ?? \"\";\n validateHttpLikeConfig(\n appName,\n resourceName,\n resourceKindForConfig,\n resource.config,\n secretNames,\n secretBundle,\n secretBundleSlots,\n errors,\n );\n\n const tools = toolEntries.filter(isRecord);\n duplicateNames(tools, `resource \"${appName}/${resourceName}\" tool`, errors);\n for (const tool of tools) {\n validateToolCapability(\n appName,\n resourceName,\n tool,\n errors,\n seenCapabilities,\n );\n }\n }\n }\n\n const subscriptions = arrayField(root, \"subscriptions\").filter(isRecord);\n duplicateNames(subscriptions, \"subscription\", errors);\n for (const subscription of subscriptions) {\n const targetKind = stringField(subscription, \"target_kind\");\n const targetName = stringField(subscription, \"target_name\");\n if (targetKind !== \"behavior\" && targetKind !== \"conversation\") {\n errors.push(`subscription \"${stringField(subscription, \"name\") ?? \"(unnamed)\"}\" target_kind must be behavior or conversation`);\n }\n if (targetKind && targetName && !targetKeys.has(`${targetKind}:${targetName}`)) {\n errors.push(`subscription \"${stringField(subscription, \"name\") ?? \"(unnamed)\"}\" targets missing ${targetKind} \"${targetName}\"`);\n }\n }\n\n if (errors.length > 0) {\n throw new BuildError(\n `Manifest validation failed:\\n${errors.map((error) => `- ${error}`).join(\"\\n\")}`,\n );\n }\n}\n","import * as acorn from \"acorn\";\nimport * as walk from \"acorn-walk\";\n\ntype AstNode = acorn.Node & Record<string, unknown>;\n\ninterface SplittableEntity {\n name: string;\n statementStart: number;\n statementEnd: number;\n}\n\ninterface TopLevelDecl {\n names: Set<string>;\n refs: Set<string>;\n start: number;\n end: number;\n}\n\ninterface ImportInfo {\n specifiers: { local: string; imported: string; kind: \"default\" | \"namespace\" | \"named\" }[];\n source: string;\n start: number;\n end: number;\n}\n\ninterface TextEdit {\n start: number;\n end: number;\n text: string;\n}\n\nfunction collectBindingNames(pattern: AstNode, out: Set<string>): void {\n switch (pattern.type) {\n case \"Identifier\":\n out.add(pattern.name as string);\n break;\n case \"ObjectPattern\":\n for (const prop of pattern.properties as AstNode[]) {\n collectBindingNames(\n (prop.type === \"RestElement\"\n ? prop.argument\n : prop.value) as AstNode,\n out,\n );\n }\n break;\n case \"ArrayPattern\":\n for (const elem of pattern.elements as (AstNode | null)[]) {\n if (elem) collectBindingNames(elem, out);\n }\n break;\n case \"AssignmentPattern\":\n collectBindingNames(pattern.left as AstNode, out);\n break;\n case \"RestElement\":\n collectBindingNames(pattern.argument as AstNode, out);\n break;\n }\n}\n\nfunction collectRefs(node: acorn.Node): Set<string> {\n const refs = new Set<string>();\n walk.ancestor(node, {\n Identifier(n: acorn.Node, _state: unknown, ancestors: acorn.Node[]) {\n const id = n as unknown as AstNode;\n const parent = (ancestors as unknown as AstNode[])[\n ancestors.length - 2\n ];\n if (\n parent?.type === \"MemberExpression\" &&\n !parent.computed &&\n parent.property === (n as unknown)\n ) {\n return;\n }\n if (\n parent?.type === \"Property\" &&\n !parent.computed &&\n parent.key === (n as unknown) &&\n !parent.shorthand\n ) {\n return;\n }\n refs.add(id.name as string);\n },\n });\n return refs;\n}\n\nfunction analyzeTopLevel(\n body: AstNode[],\n entityStarts: Set<number>,\n): { decls: TopLevelDecl[]; imports: ImportInfo[] } {\n const decls: TopLevelDecl[] = [];\n const imports: ImportInfo[] = [];\n\n for (const stmt of body) {\n if (entityStarts.has(stmt.start as number)) continue;\n\n if (\n stmt.type === \"ExportNamedDeclaration\" ||\n stmt.type === \"ExportDefaultDeclaration\" ||\n stmt.type === \"ExportAllDeclaration\"\n ) {\n continue;\n }\n\n if (stmt.type === \"ImportDeclaration\") {\n const specifiers = stmt.specifiers as AstNode[];\n if (specifiers.length === 0) continue;\n\n const info: ImportInfo = {\n specifiers: [],\n source: (stmt.source as AstNode).value as string,\n start: stmt.start as number,\n end: stmt.end as number,\n };\n\n for (const spec of specifiers) {\n const local = (spec.local as AstNode).name as string;\n if (spec.type === \"ImportDefaultSpecifier\") {\n info.specifiers.push({ local, imported: \"default\", kind: \"default\" });\n } else if (spec.type === \"ImportNamespaceSpecifier\") {\n info.specifiers.push({ local, imported: \"*\", kind: \"namespace\" });\n } else {\n const imported = (spec.imported as AstNode).name as string;\n info.specifiers.push({ local, imported, kind: \"named\" });\n }\n }\n\n imports.push(info);\n continue;\n }\n\n const names = new Set<string>();\n\n if (stmt.type === \"VariableDeclaration\") {\n for (const d of stmt.declarations as AstNode[]) {\n collectBindingNames(d.id as AstNode, names);\n }\n } else if (\n stmt.type === \"FunctionDeclaration\" ||\n stmt.type === \"ClassDeclaration\"\n ) {\n const id = stmt.id as AstNode | null;\n if (id?.type === \"Identifier\") names.add(id.name as string);\n } else {\n continue;\n }\n\n if (names.size === 0) continue;\n\n const refs = collectRefs(stmt as acorn.Node);\n for (const name of names) refs.delete(name);\n\n decls.push({\n names,\n refs,\n start: stmt.start as number,\n end: stmt.end as number,\n });\n }\n\n return { decls, imports };\n}\n\nfunction computeReachableNames(\n seeds: Set<string>,\n decls: TopLevelDecl[],\n _imports: ImportInfo[],\n): Set<string> {\n const declByName = new Map<string, TopLevelDecl>();\n for (const d of decls) {\n for (const n of d.names) declByName.set(n, d);\n }\n\n const reachableNames = new Set<string>();\n const reachedDecls = new Set<TopLevelDecl>();\n const queue = [...seeds];\n\n while (queue.length > 0) {\n const name = queue.pop()!;\n if (reachableNames.has(name)) continue;\n reachableNames.add(name);\n\n const d = declByName.get(name);\n if (!d || reachedDecls.has(d)) continue;\n\n reachedDecls.add(d);\n for (const r of d.refs) {\n if (!reachableNames.has(r)) queue.push(r);\n }\n }\n\n return reachableNames;\n}\n\nfunction buildImportStatement(\n kept: ImportInfo[\"specifiers\"],\n source: string,\n): string {\n const defaultSpec = kept.find((s) => s.kind === \"default\");\n const nsSpec = kept.find((s) => s.kind === \"namespace\");\n const named = kept.filter((s) => s.kind === \"named\");\n\n const parts: string[] = [];\n\n if (defaultSpec) {\n parts.push(defaultSpec.local);\n }\n\n if (nsSpec) {\n parts.push(`* as ${nsSpec.local}`);\n }\n\n if (named.length > 0) {\n const specs = named.map((s) =>\n s.local === s.imported ? s.local : `${s.imported} as ${s.local}`,\n );\n parts.push(`{ ${specs.join(\", \")} }`);\n }\n\n return `import ${parts.join(\", \")} from \"${source}\"`;\n}\n\nfunction applyEdits(source: string, edits: TextEdit[]): string {\n const sorted = [...edits].sort((a, b) => b.start - a.start);\n let result = source;\n for (const { start, end, text } of sorted) {\n result = result.slice(0, start) + text + result.slice(end);\n }\n return result;\n}\n\nfunction blankRegion(source: string, start: number, end: number): string {\n const newlines = (source.slice(start, end).match(/\\n/g) || []).length;\n return \"\\n\".repeat(newlines);\n}\n\nexport function splitEntities(\n source: string,\n entities: SplittableEntity[],\n): Map<string, string> {\n if (entities.length <= 1) {\n const out = new Map<string, string>();\n for (const e of entities) out.set(e.name, source);\n return out;\n }\n\n let ast: AstNode;\n try {\n ast = acorn.parse(source, {\n ecmaVersion: \"latest\",\n sourceType: \"module\",\n }) as unknown as AstNode;\n } catch {\n return simpleSplit(source, entities);\n }\n\n const entityStarts = new Set(entities.map((e) => e.statementStart));\n const { decls, imports } = analyzeTopLevel(ast.body as AstNode[], entityStarts);\n\n const declByName = new Map<string, TopLevelDecl>();\n for (const d of decls) {\n for (const n of d.names) declByName.set(n, d);\n }\n\n const out = new Map<string, string>();\n\n for (const keep of entities) {\n const edits: TextEdit[] = [];\n\n for (const other of entities) {\n if (other !== keep) {\n edits.push({\n start: other.statementStart,\n end: other.statementEnd,\n text: blankRegion(source, other.statementStart, other.statementEnd),\n });\n }\n }\n\n const stmt = (ast.body as AstNode[]).find(\n (s) => (s.start as number) === keep.statementStart,\n );\n\n if (stmt) {\n const entityRefs = collectRefs(stmt as acorn.Node);\n const reachable = computeReachableNames(entityRefs, decls, imports);\n\n for (const d of decls) {\n const used = [...d.names].some((n) => reachable.has(n));\n if (!used) {\n edits.push({\n start: d.start,\n end: d.end,\n text: blankRegion(source, d.start, d.end),\n });\n }\n }\n\n for (const imp of imports) {\n const kept = imp.specifiers.filter((s) => reachable.has(s.local));\n\n if (kept.length === 0) {\n edits.push({\n start: imp.start,\n end: imp.end,\n text: blankRegion(source, imp.start, imp.end),\n });\n } else if (kept.length < imp.specifiers.length) {\n edits.push({\n start: imp.start,\n end: imp.end,\n text: buildImportStatement(kept, imp.source),\n });\n }\n }\n }\n\n out.set(keep.name, applyEdits(source, edits));\n }\n\n return out;\n}\n\nfunction simpleSplit(\n source: string,\n entities: SplittableEntity[],\n): Map<string, string> {\n const out = new Map<string, string>();\n for (const keep of entities) {\n const edits: TextEdit[] = entities\n .filter((e) => e !== keep)\n .map((e) => ({\n start: e.statementStart,\n end: e.statementEnd,\n text: blankRegion(source, e.statementStart, e.statementEnd),\n }));\n out.set(keep.name, applyEdits(source, edits));\n }\n return out;\n}\n","type RuntimeTriggerType = \"webhook\" | \"schedule\" | \"streaming\";\n\ninterface TransportHelperDefinition {\n readonly type: string;\n readonly runtimeType: RuntimeTriggerType;\n readonly supportsReceive: boolean;\n readonly supportsRespond: boolean;\n readonly manifestReceiveType?: string;\n readonly manifestRespondType?: string;\n readonly [toolName: string]:\n | string\n | boolean\n | RuntimeTriggerType\n | ToolDescriptor\n | undefined;\n}\n\ninterface ToolDescriptor {\n readonly name: string;\n readonly mode: \"read\" | \"write\";\n}\n\nexport const TRANSPORT_HELPERS = {\n webhook: {\n type: \"webhook\",\n runtimeType: \"webhook\",\n supportsReceive: true,\n supportsRespond: true,\n respond: { name: \"respond\", mode: \"write\" },\n },\n schedule: {\n type: \"schedule\",\n runtimeType: \"schedule\",\n supportsReceive: true,\n supportsRespond: false,\n },\n email: {\n type: \"email\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n manifestReceiveType: \"imap\",\n manifestRespondType: \"email\",\n search: { name: \"search\", mode: \"read\" },\n get: { name: \"get\", mode: \"read\" },\n listMailboxes: { name: \"listMailboxes\", mode: \"read\" },\n listAttachments: { name: \"listAttachments\", mode: \"read\" },\n getAttachment: { name: \"getAttachment\", mode: \"read\" },\n send: { name: \"send\", mode: \"write\" },\n draft: { name: \"draft\", mode: \"write\" },\n listDrafts: { name: \"listDrafts\", mode: \"write\" },\n updateDraft: { name: \"updateDraft\", mode: \"write\" },\n deleteDraft: { name: \"deleteDraft\", mode: \"write\" },\n modify: { name: \"modify\", mode: \"write\" },\n delete: { name: \"delete\", mode: \"write\" },\n },\n kafka: {\n type: \"kafka\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n publish: { name: \"publish\", mode: \"write\" },\n },\n rabbitmq: {\n type: \"rabbitmq\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n publish: { name: \"publish\", mode: \"write\" },\n },\n redis: {\n type: \"redis\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n publish: { name: \"publish\", mode: \"write\" },\n },\n pubsub: {\n type: \"pubsub\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n publish: { name: \"publish\", mode: \"write\" },\n },\n sqs: {\n type: \"sqs\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n publish: { name: \"publish\", mode: \"write\" },\n },\n websocket: {\n type: \"websocket\",\n runtimeType: \"streaming\",\n supportsReceive: true,\n supportsRespond: true,\n publish: { name: \"publish\", mode: \"write\" },\n },\n rss: {\n type: \"rss\",\n runtimeType: \"schedule\",\n supportsReceive: true,\n supportsRespond: false,\n },\n graphql: {\n type: \"graphql\",\n runtimeType: \"schedule\",\n supportsReceive: true,\n supportsRespond: false,\n query: { name: \"query\", mode: \"read\" },\n },\n http: {\n type: \"http\",\n runtimeType: \"schedule\",\n supportsReceive: true,\n supportsRespond: false,\n fetch: { name: \"fetch\", mode: \"read\" },\n },\n calendar: {\n type: \"calendar\",\n runtimeType: \"schedule\",\n supportsReceive: true,\n supportsRespond: false,\n list: { name: \"list\", mode: \"read\" },\n get: { name: \"get\", mode: \"read\" },\n create: { name: \"create\", mode: \"write\" },\n update: { name: \"update\", mode: \"write\" },\n delete: { name: \"delete\", mode: \"write\" },\n },\n contacts: {\n type: \"contacts\",\n runtimeType: \"schedule\",\n supportsReceive: true,\n supportsRespond: false,\n list: { name: \"list\", mode: \"read\" },\n get: { name: \"get\", mode: \"read\" },\n create: { name: \"create\", mode: \"write\" },\n update: { name: \"update\", mode: \"write\" },\n delete: { name: \"delete\", mode: \"write\" },\n },\n} as const satisfies Record<string, TransportHelperDefinition>;\n\nexport type TransportHelperName = keyof typeof TRANSPORT_HELPERS;\n\nexport function runtimeTransportHelpers(): Record<string, TransportHelperDefinition> {\n return TRANSPORT_HELPERS;\n}\n","import { build, type BuildResult, type Plugin } from \"esbuild\";\nimport { mkdir, readFile } from \"node:fs/promises\";\nimport { join, dirname, resolve as resolvePath } from \"node:path\";\nimport * as acorn from \"acorn\";\nimport * as walk from \"acorn-walk\";\nimport { BuildError } from \"../errors\";\nimport { runtimeTransportHelpers } from \"./transport-helpers\";\n\nconst NODE_BUILTINS = new Set([\n \"assert\", \"assert/strict\", \"async_hooks\", \"buffer\", \"child_process\",\n \"cluster\", \"console\", \"constants\", \"crypto\", \"dgram\",\n \"diagnostics_channel\", \"dns\", \"dns/promises\", \"domain\", \"events\",\n \"fs\", \"fs/promises\", \"http\", \"http2\", \"https\", \"inspector\",\n \"inspector/promises\", \"module\", \"net\", \"os\", \"path\", \"path/posix\",\n \"path/win32\", \"perf_hooks\", \"process\", \"punycode\", \"querystring\",\n \"readline\", \"readline/promises\", \"repl\", \"stream\", \"stream/consumers\",\n \"stream/promises\", \"stream/web\", \"string_decoder\", \"sys\", \"test\",\n \"timers\", \"timers/promises\", \"tls\", \"trace_events\", \"tty\", \"url\",\n \"util\", \"util/types\", \"v8\", \"vm\", \"wasi\", \"worker_threads\", \"zlib\",\n]);\n\nconst SCHEMA_STUB_NAMESPACE = \"io-schema-stub\";\nconst RUNTIME_SDK_NAMESPACE = \"io-runtime-sdk\";\nconst RUNTIME_SDK_PATH = \"runtime-sdk\";\n\nconst SDK_PACKAGES = [\"@io/sdk\", \"@kaelen-ai/sdk\", \"@eleven-am/sdk\"];\nconst SCHEMA_PACKAGES = new Set([\"zod\", ...SDK_PACKAGES.map((pkg) => `${pkg}/zod`)]);\ntype AstNode = acorn.Node & Record<string, unknown>;\nconst RUNTIME_TRANSPORT_HELPERS = runtimeTransportHelpers();\n\ntype RuntimeSdkTransportExport = keyof typeof RUNTIME_TRANSPORT_HELPERS;\ntype RuntimeSdkPassthroughExport =\n | \"google\"\n | \"microsoft\"\n | \"httpApi\"\n | \"graphqlApi\";\ntype RuntimeSdkExport =\n | \"ioSchema\"\n | \"zodSchema\"\n | \"signal\"\n | \"memory\"\n | \"application\"\n | \"secret\"\n | RuntimeSdkPassthroughExport\n | RuntimeSdkTransportExport;\ntype RuntimeMemoryExport = keyof typeof RUNTIME_MEMORY_SIGNALS;\n\nconst RUNTIME_MEMORY_SIGNALS = {\n onCommitmentDueSoon: \"knowledge:commitment.due_soon\",\n onActionItemDueSoon: \"knowledge:action_item.due_soon\",\n onCommitmentBroken: \"knowledge:commitment.broken\",\n onActionItemOverdue: \"knowledge:action_item.overdue\",\n onIntentionTriggeredDetailed: \"knowledge:intention.triggered\",\n onIntentionExpiringSoon: \"knowledge:intention.expiring_soon\",\n onIntentionExpiredDetailed: \"knowledge:intention.expired\",\n onContradictionCreated: \"knowledge:contradiction.created\",\n onContradictionEscalated: \"knowledge:contradiction.escalated\",\n onTensionEmerged: \"knowledge:tension.emerged\",\n onTensionEscalated: \"knowledge:tension.escalated\",\n onTrajectoryDeteriorated: \"knowledge:trajectory.deteriorated\",\n onRoutineBroken: \"knowledge:routine.broken\",\n} as const satisfies Record<string, string>;\n\nconst RUNTIME_SDK_PASSTHROUGH_EXPORTS: ReadonlySet<RuntimeSdkPassthroughExport> = new Set([\n \"google\",\n \"microsoft\",\n \"httpApi\",\n \"graphqlApi\",\n]);\n\nconst RUNTIME_SDK_EXPORTS = new Set<RuntimeSdkExport>([\n \"ioSchema\",\n \"zodSchema\",\n \"signal\",\n \"memory\",\n \"application\",\n \"secret\",\n \"webhook\",\n \"schedule\",\n \"email\",\n \"kafka\",\n \"rabbitmq\",\n \"redis\",\n \"pubsub\",\n \"sqs\",\n \"websocket\",\n \"rss\",\n \"graphql\",\n \"http\",\n \"calendar\",\n \"contacts\",\n ...RUNTIME_SDK_PASSTHROUGH_EXPORTS,\n]);\n\nconst COMPILED_AWAY_EXPORTS = new Set([\"behavior\", \"conversation\"]);\n\ninterface RuntimeSdkUsage {\n exports: Set<RuntimeSdkExport>;\n includeFullMemory: boolean;\n memoryProperties: Set<RuntimeMemoryExport>;\n}\n\ninterface RuntimeSdkModuleAnalysis extends RuntimeSdkUsage {\n relativeImports: string[];\n}\n\nfunction normalizeSdkSpecifier(specifier: string): string {\n if (specifier === \"@kaelen-ai/sdk\" || specifier === \"@eleven-am/sdk\") {\n return \"@io/sdk\";\n }\n if (specifier === \"@kaelen-ai/sdk/zod\" || specifier === \"@eleven-am/sdk/zod\") {\n return \"@io/sdk/zod\";\n }\n return specifier;\n}\n\nfunction parseModule(source: string, name: string): AstNode {\n try {\n return acorn.parse(source, {\n ecmaVersion: \"latest\",\n sourceType: \"module\",\n }) as unknown as AstNode;\n } catch (error) {\n throw new BuildError(\n `failed to parse compiled bundle source for '${name}': ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction analyzeRuntimeSdkUsage(source: string, name: string): RuntimeSdkModuleAnalysis {\n const ast = parseModule(source, name);\n const usage: RuntimeSdkModuleAnalysis = {\n exports: new Set<RuntimeSdkExport>(),\n includeFullMemory: false,\n memoryProperties: new Set<RuntimeMemoryExport>(),\n relativeImports: [],\n };\n const memoryLocals = new Set<string>();\n\n walk.ancestor(ast as acorn.Node, {\n ImportDeclaration(node) {\n const n = node as unknown as AstNode;\n const sourceNode = n.source as AstNode;\n const packageName = String(sourceNode.value);\n if (SDK_PACKAGES.includes(packageName)) {\n for (const spec of n.specifiers as AstNode[]) {\n if (spec.type !== \"ImportSpecifier\") {\n throw new BuildError(\n `compiled bundle '${name}' cannot use default or namespace SDK imports`,\n );\n }\n\n const imported = (((spec.imported as unknown as AstNode).name ?? \"\") as string);\n const local = (((spec.local as unknown as AstNode).name ?? \"\") as string);\n\n if (COMPILED_AWAY_EXPORTS.has(imported)) {\n throw new BuildError(\n `${imported}() should be compiled away before bundling '${name}'`,\n );\n }\n\n if (!RUNTIME_SDK_EXPORTS.has(imported as RuntimeSdkExport)) {\n throw new BuildError(\n `compiled bundle '${name}' references unsupported runtime SDK export '${imported}'`,\n );\n }\n\n usage.exports.add(imported as RuntimeSdkExport);\n if (imported === \"memory\") {\n memoryLocals.add(local);\n }\n }\n return;\n }\n\n if (packageName.startsWith(\".\")) {\n usage.relativeImports.push(packageName);\n }\n },\n Identifier(node, _state, ancestors) {\n const n = node as unknown as AstNode;\n const localName = (n.name ?? \"\") as string;\n if (!memoryLocals.has(localName)) {\n return;\n }\n\n const parent = ancestors[ancestors.length - 2] as AstNode | undefined;\n\n if (parent?.type === \"ImportSpecifier\" || parent?.type === \"ImportDeclaration\") {\n return;\n }\n\n if (parent?.type === \"MemberExpression\" && parent.object === (node as unknown)) {\n const property = parent.property as AstNode;\n\n if (!parent.computed && property?.type === \"Identifier\") {\n const propertyName = String(property.name ?? \"\");\n if (propertyName in RUNTIME_MEMORY_SIGNALS) {\n usage.memoryProperties.add(propertyName as RuntimeMemoryExport);\n } else {\n usage.includeFullMemory = true;\n }\n return;\n }\n\n if (\n parent.computed &&\n property?.type === \"Literal\" &&\n typeof property.value === \"string\"\n ) {\n if (property.value in RUNTIME_MEMORY_SIGNALS) {\n usage.memoryProperties.add(property.value as RuntimeMemoryExport);\n } else {\n usage.includeFullMemory = true;\n }\n return;\n }\n }\n\n usage.includeFullMemory = true;\n },\n });\n\n if (usage.exports.has(\"memory\") && usage.memoryProperties.size === 0) {\n usage.includeFullMemory = true;\n }\n\n return usage;\n}\n\nfunction mergeRuntimeSdkUsage(target: RuntimeSdkUsage, source: RuntimeSdkUsage): void {\n for (const sdkExport of source.exports) {\n target.exports.add(sdkExport);\n }\n\n if (source.includeFullMemory) {\n target.includeFullMemory = true;\n }\n\n for (const property of source.memoryProperties) {\n target.memoryProperties.add(property);\n }\n}\n\nasync function resolveLocalModule(\n importerDir: string,\n specifier: string,\n): Promise<{ path: string; source: string } | null> {\n const base = resolvePath(importerDir, specifier);\n const candidates = [\n base,\n `${base}.ts`,\n `${base}.tsx`,\n `${base}.js`,\n `${base}.jsx`,\n `${base}.mts`,\n `${base}.cts`,\n join(base, \"index.ts\"),\n join(base, \"index.tsx\"),\n join(base, \"index.js\"),\n join(base, \"index.jsx\"),\n join(base, \"index.mts\"),\n join(base, \"index.cts\"),\n ];\n\n for (const candidate of candidates) {\n try {\n return {\n path: candidate,\n source: await readFile(candidate, \"utf-8\"),\n };\n } catch {\n continue;\n }\n }\n\n return null;\n}\n\nasync function analyzeRuntimeSdkUsageGraph(\n source: string,\n sourceDir: string,\n name: string,\n): Promise<RuntimeSdkUsage> {\n const aggregate: RuntimeSdkUsage = {\n exports: new Set<RuntimeSdkExport>(),\n includeFullMemory: false,\n memoryProperties: new Set<RuntimeMemoryExport>(),\n };\n const visited = new Set<string>();\n\n const visit = async (\n moduleSource: string,\n moduleName: string,\n moduleDir: string,\n ): Promise<void> => {\n const visitKey = `${moduleName}:${moduleDir}`;\n if (visited.has(visitKey)) {\n return;\n }\n visited.add(visitKey);\n\n const analysis = analyzeRuntimeSdkUsage(moduleSource, moduleName);\n mergeRuntimeSdkUsage(aggregate, analysis);\n\n for (const specifier of analysis.relativeImports) {\n const resolved = await resolveLocalModule(moduleDir, specifier);\n if (!resolved) {\n continue;\n }\n\n await visit(resolved.source, resolved.path, dirname(resolved.path));\n }\n };\n\n await visit(source, name, sourceDir);\n return aggregate;\n}\n\nfunction buildRuntimeSdkSource(usage: RuntimeSdkUsage): string {\n const lines: string[] = [];\n\n if (usage.exports.has(\"signal\") || usage.exports.has(\"application\") || usage.exports.has(\"secret\")) {\n lines.push(\n `function ensureNonEmptyString(value, label) {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new Error(\\`\\${label} must be a non-empty string\\`);\n }\n}`,\n );\n }\n\n if (usage.exports.has(\"ioSchema\")) {\n lines.push(\n `function isObjectRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}`,\n `export function ioSchema(jsonSchema) {\n if (!isObjectRecord(jsonSchema)) {\n throw new Error(\"ioSchema() requires a JSON schema object\");\n }\n return Object.freeze({ jsonSchema });\n}`,\n );\n }\n\n if (usage.exports.has(\"zodSchema\")) {\n lines.push(\n `export function zodSchema(schema) {\n return Object.freeze({\n jsonSchema:\n schema && typeof schema === \"object\" && \"jsonSchema\" in schema ? schema.jsonSchema : {},\n });\n}`,\n );\n }\n\n if (usage.exports.has(\"signal\")) {\n lines.push(\n `export function signal(name, _defaultValue, _schema) {\n ensureNonEmptyString(name, \"signal() name\");\n const trimmed = String(name).trim();\n return Object.freeze({\n name: trimmed.startsWith(\"signal:\") ? trimmed : \\`signal:\\${trimmed}\\`,\n });\n}`,\n );\n }\n\n if (usage.exports.has(\"application\")) {\n lines.push(\n `export function application(name, featureMap) {\n ensureNonEmptyString(name, \"application() name\");\n if (!featureMap || typeof featureMap !== \"object\" || Array.isArray(featureMap)) {\n throw new Error(\"application() requires a feature map object\");\n }\n return Object.freeze({ name: String(name).trim(), ...featureMap });\n}`,\n );\n }\n\n if (usage.exports.has(\"secret\")) {\n lines.push(\n `export function secret(name, values = {}, flow = \"none\") {\n ensureNonEmptyString(name, \"secret() name\");\n const slots =\n values && typeof values === \"object\" && !Array.isArray(values)\n ? Object.freeze({ ...values })\n : Object.freeze({});\n return Object.freeze({\n name: String(name).trim(),\n flow,\n slots,\n });\n}`,\n );\n }\n\n if (usage.exports.has(\"memory\")) {\n const entries = usage.includeFullMemory\n ? Object.entries(RUNTIME_MEMORY_SIGNALS)\n : [...usage.memoryProperties].sort().map((key) => [key, RUNTIME_MEMORY_SIGNALS[key]] as const);\n\n lines.push(\n `export const memory = Object.freeze({\n${entries.map(([key, value]) => ` ${key}: Object.freeze({ name: ${JSON.stringify(value)} }),`).join(\"\\n\")}\n});`,\n );\n }\n\n for (const [helperName, helperValue] of Object.entries(RUNTIME_TRANSPORT_HELPERS)) {\n if (!usage.exports.has(helperName as RuntimeSdkExport)) {\n continue;\n }\n\n lines.push(\n `export function ${helperName}(..._args) {\n return Object.freeze(${JSON.stringify(helperValue)});\n}`,\n );\n }\n\n const needsPassthroughHelper = [...RUNTIME_SDK_PASSTHROUGH_EXPORTS].some(\n (name) => usage.exports.has(name),\n );\n\n if (needsPassthroughHelper) {\n lines.push(\n `function passthroughFrozen(options) {\n if (options && typeof options === \"object\" && !Array.isArray(options)) {\n return Object.freeze({ ...options });\n }\n return Object.freeze({});\n}`,\n );\n\n for (const passthrough of RUNTIME_SDK_PASSTHROUGH_EXPORTS) {\n if (!usage.exports.has(passthrough)) {\n continue;\n }\n lines.push(\n `export function ${passthrough}(options) {\n return passthroughFrozen(options);\n}`,\n );\n }\n }\n\n return lines.join(\"\\n\\n\");\n}\n\nfunction sdkAliasPlugin(): Plugin {\n return {\n name: \"sdk-alias\",\n setup(pluginBuild) {\n pluginBuild.onResolve({ filter: /^@(?:io|kaelen-ai|eleven-am)\\/sdk$/ }, () => ({\n path: RUNTIME_SDK_PATH,\n namespace: RUNTIME_SDK_NAMESPACE,\n }));\n },\n };\n}\n\nfunction runtimeSdkPlugin(usage: RuntimeSdkUsage): Plugin {\n return {\n name: \"runtime-sdk\",\n setup(pluginBuild) {\n pluginBuild.onResolve({ filter: /^@(?:io|kaelen-ai|eleven-am)\\/sdk$/ }, () => ({\n path: RUNTIME_SDK_PATH,\n namespace: RUNTIME_SDK_NAMESPACE,\n }));\n\n pluginBuild.onLoad({ filter: /.*/, namespace: RUNTIME_SDK_NAMESPACE }, () => ({\n contents: buildRuntimeSdkSource(usage),\n loader: \"js\",\n }));\n },\n };\n}\n\nfunction schemaStubPlugin(): Plugin {\n return {\n name: \"schema-stub\",\n setup(pluginBuild) {\n pluginBuild.onResolve({ filter: /.*/ }, (args) => {\n const normalizedPath = normalizeSdkSpecifier(args.path);\n if (SCHEMA_PACKAGES.has(normalizedPath)) {\n return {\n path: normalizedPath === \"zod\" ? \"zod-runtime\" : \"sdk-zod-runtime\",\n namespace: SCHEMA_STUB_NAMESPACE,\n };\n }\n return undefined;\n });\n\n pluginBuild.onLoad({ filter: /.*/, namespace: SCHEMA_STUB_NAMESPACE }, (args) => {\n if (args.path === \"zod-runtime\") {\n return {\n contents: [\n \"const noop = () => proxy;\",\n \"const proxy = new Proxy(noop, { get: () => proxy, apply: () => proxy });\",\n \"export const z = proxy;\",\n \"export default proxy;\",\n ].join(\"\\n\"),\n loader: \"js\",\n };\n }\n\n return {\n contents: \"export function zodSchema(schema) { return { jsonSchema: schema && typeof schema === 'object' && 'jsonSchema' in schema ? schema.jsonSchema : {} }; }\",\n loader: \"js\",\n };\n });\n },\n };\n}\n\nfunction isolateGuardPlugin(): Plugin {\n return {\n name: \"isolate-guard\",\n setup(pluginBuild) {\n pluginBuild.onResolve({ filter: /^node:/ }, (args) => ({\n errors: [{\n text: `Node.js module \"${args.path}\" is not available in the isolate runtime`,\n }],\n }));\n\n pluginBuild.onResolve({ filter: /^[a-z]/ }, (args) => {\n if (NODE_BUILTINS.has(args.path)) {\n return {\n errors: [{\n text: `Node.js module \"${args.path}\" is not available in the isolate runtime`,\n }],\n };\n }\n return undefined;\n });\n },\n };\n}\n\ninterface BundleInput {\n name: string;\n source: string;\n sourceDir: string;\n}\n\nexport interface BundleOutput {\n name: string;\n outFile: string;\n size: number;\n}\n\nexport async function bundleEntity(\n input: BundleInput,\n outDir: string,\n subDir: string = \"behaviors\",\n minify: boolean = false,\n): Promise<BundleOutput> {\n const runtimeSdkUsage = await analyzeRuntimeSdkUsageGraph(\n input.source,\n input.sourceDir,\n input.name,\n );\n const outFile = join(outDir, subDir, `${input.name}.js`);\n\n await mkdir(dirname(outFile), { recursive: true });\n\n let result: BuildResult;\n try {\n result = await build({\n stdin: {\n contents: input.source,\n resolveDir: input.sourceDir,\n loader: \"js\",\n },\n bundle: true,\n format: \"esm\",\n platform: \"neutral\",\n conditions: [\"worker\", \"browser\"],\n treeShaking: true,\n minify,\n plugins: [sdkAliasPlugin(), runtimeSdkPlugin(runtimeSdkUsage), schemaStubPlugin(), isolateGuardPlugin()],\n outfile: outFile,\n logLevel: \"silent\",\n metafile: true,\n write: true,\n });\n } catch (err: unknown) {\n const message =\n err instanceof Error ? err.message : String(err);\n throw new BuildError(\n `esbuild failed for ${subDir.replace(/s$/, \"\")} '${input.name}': ${message}`,\n );\n }\n\n if (result.errors.length > 0) {\n const errText = result.errors\n .map((e) => `${e.text} (${e.location?.file}:${e.location?.line})`)\n .join(\"\\n\");\n throw new BuildError(\n `esbuild errors for ${subDir.replace(/s$/, \"\")} '${input.name}':\\n${errText}`,\n );\n }\n\n let size = 0;\n if (result.metafile) {\n for (const output of Object.values(result.metafile.outputs)) {\n size += output.bytes;\n }\n }\n\n return { name: input.name, outFile, size };\n}\n\nexport async function bundleAll(\n splitSources: Map<string, { source: string; sourceDir: string }>,\n outDir: string,\n subDir: string = \"behaviors\",\n minify: boolean = false,\n): Promise<BundleOutput[]> {\n const tasks = [...splitSources.entries()].map(([name, { source, sourceDir }]) =>\n bundleEntity({ name, source, sourceDir }, outDir, subDir, minify),\n );\n\n return Promise.all(tasks);\n}\n","import { build, type Plugin } from \"esbuild\";\nimport { mkdir, writeFile, rm } from \"node:fs/promises\";\nimport { spawn } from \"node:child_process\";\nimport { createRequire } from \"node:module\";\nimport { join, basename, extname, relative, isAbsolute, resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { BuildError } from \"../errors\";\n\nexport interface EvaluatorInput {\n readonly cwd: string;\n readonly outDir: string;\n readonly userFiles: readonly string[];\n readonly entrypoints: { readonly [name: string]: string };\n}\n\nconst SDK_PACKAGE = \"@kaelen-ai/sdk\";\nconst SDK_ALIASES = new Set([\"@io/sdk\", \"@eleven-am/sdk\"]);\n\nfunction resolveSdkEntry(cwd: string): string {\n const requireFromCwd = createRequire(join(cwd, \"__io_cli_sdk_resolver__.cjs\"));\n const resolved = requireFromCwd.resolve(SDK_PACKAGE);\n\n if (resolved.endsWith(\"/dist/index.js\")) {\n return resolved.replace(/\\/dist\\/index\\.js$/, \"/dist/index.mjs\");\n }\n\n if (resolved.endsWith(\"\\\\dist\\\\index.js\")) {\n return resolved.replace(/\\\\dist\\\\index\\.js$/, \"\\\\dist\\\\index.mjs\");\n }\n\n return resolved;\n}\n\nfunction resolveSdkPackageRoot(cwd: string): string {\n const sdkEntry = resolveSdkEntry(cwd);\n return resolve(sdkEntry, \"..\", \"..\");\n}\n\nfunction sdkAliasPlugin(): Plugin {\n return {\n name: \"evaluator-sdk-alias\",\n setup(pluginBuild) {\n pluginBuild.onResolve({ filter: /^@(?:io|eleven-am)\\/sdk$/ }, () => ({\n path: SDK_PACKAGE,\n external: true,\n }));\n pluginBuild.onResolve({ filter: /^@kaelen-ai\\/sdk$/ }, () => ({\n path: SDK_PACKAGE,\n external: true,\n }));\n pluginBuild.onResolve({ filter: /^@kaelen-ai\\/sdk\\/zod$/ }, () => ({\n path: `${SDK_PACKAGE}/zod`,\n external: true,\n }));\n },\n };\n}\n\nexport async function evaluateAndEmitManifest(\n input: EvaluatorInput,\n): Promise<unknown> {\n void SDK_ALIASES;\n const sdkRoot = resolveSdkPackageRoot(input.cwd);\n const userBundlesDir = join(input.outDir, \"user-modules\");\n await mkdir(userBundlesDir, { recursive: true });\n await writeSdkProxy(input.outDir, sdkRoot);\n\n const bundledPaths: string[] = [];\n for (const file of input.userFiles) {\n const stem = basename(file, extname(file));\n const outFile = join(userBundlesDir, `${stem}.mjs`);\n await build({\n entryPoints: [file],\n bundle: true,\n format: \"esm\",\n platform: \"node\",\n target: \"node18\",\n plugins: [sdkAliasPlugin()],\n outfile: outFile,\n logLevel: \"silent\",\n write: true,\n }).catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n throw new BuildError(`failed to bundle '${file}' for evaluation: ${msg}`);\n });\n bundledPaths.push(outFile);\n }\n\n const runnerPath = join(input.outDir, \"runner.mjs\");\n const runnerSource = buildRunnerSource(bundledPaths, runnerPath);\n await writeFile(runnerPath, runnerSource, \"utf-8\");\n\n const manifestJson = await runRunner(runnerPath, input.cwd, input.entrypoints);\n try {\n return JSON.parse(manifestJson);\n } catch (err) {\n throw new BuildError(\n `runner produced invalid JSON manifest: ${err instanceof Error ? err.message : String(err)}\\n--- stdout ---\\n${manifestJson}`,\n );\n }\n}\n\nfunction buildRunnerSource(bundledPaths: string[], runnerPath: string): string {\n const importLines = bundledPaths\n .map((p, i) => {\n const rel = toRelativeImport(runnerPath, p);\n return `import * as mod${i} from ${JSON.stringify(rel)};\\nvoid mod${i};`;\n })\n .join(\"\\n\");\n\n return `${importLines}\nimport { manifest } from \"@kaelen-ai/sdk\";\n\nconst entrypoints = JSON.parse(process.env.IO_CLI_ENTRYPOINTS || \"{}\");\nconst m = manifest({ entrypoints });\nprocess.stdout.write(JSON.stringify(m));\n`;\n}\n\nasync function writeSdkProxy(outDir: string, sdkRoot: string): Promise<void> {\n const proxyDir = join(outDir, \"node_modules\", \"@kaelen-ai\", \"sdk\");\n const distDir = join(sdkRoot, \"dist\");\n\n await rm(proxyDir, { recursive: true, force: true });\n await mkdir(proxyDir, { recursive: true });\n\n const rootImport = pathToFileURL(join(distDir, \"index.mjs\")).href;\n const zodImport = pathToFileURL(join(distDir, \"schema-zod.mjs\")).href;\n\n await writeFile(\n join(proxyDir, \"package.json\"),\n JSON.stringify(\n {\n name: \"@kaelen-ai/sdk\",\n type: \"module\",\n exports: {\n \".\": {\n import: \"./index.mjs\",\n },\n \"./zod\": {\n import: \"./schema-zod.mjs\",\n },\n },\n },\n null,\n 2,\n ),\n \"utf-8\",\n );\n\n await writeFile(\n join(proxyDir, \"index.mjs\"),\n `export * from ${JSON.stringify(rootImport)};\\n`,\n \"utf-8\",\n );\n\n await writeFile(\n join(proxyDir, \"schema-zod.mjs\"),\n `export * from ${JSON.stringify(zodImport)};\\n`,\n \"utf-8\",\n );\n}\n\nfunction toRelativeImport(fromFile: string, toFile: string): string {\n const fromDir = resolve(fromFile, \"..\");\n let rel = relative(fromDir, toFile).split(\"\\\\\").join(\"/\");\n if (!rel.startsWith(\".\") && !isAbsolute(rel)) {\n rel = `./${rel}`;\n }\n return rel;\n}\n\nfunction runRunner(\n runnerPath: string,\n cwd: string,\n entrypoints: { readonly [name: string]: string },\n): Promise<string> {\n return new Promise((resolveResult, rejectResult) => {\n const child = spawn(process.execPath, [runnerPath], {\n cwd,\n env: {\n ...process.env,\n IO_CLI_ENTRYPOINTS: JSON.stringify(entrypoints),\n },\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n let stdout = \"\";\n let stderr = \"\";\n child.stdout.on(\"data\", (chunk) => {\n stdout += chunk.toString(\"utf-8\");\n });\n child.stderr.on(\"data\", (chunk) => {\n stderr += chunk.toString(\"utf-8\");\n });\n\n child.on(\"error\", (err) => {\n rejectResult(\n new BuildError(`runner failed to start: ${err.message}`),\n );\n });\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolveResult(stdout);\n return;\n }\n rejectResult(\n new BuildError(\n `runner exited with code ${code}\\n--- stderr ---\\n${stderr || \"(empty)\"}\\n--- stdout ---\\n${stdout || \"(empty)\"}`,\n ),\n );\n });\n });\n}\n","import { writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { evaluateAndEmitManifest } from \"./evaluator\";\n\nexport type Manifest = Record<string, unknown>;\n\nexport interface BundleRef {\n readonly name: string;\n readonly outFile: string;\n}\n\nexport interface ManifestEmissionInput {\n readonly cwd: string;\n readonly userFiles: readonly string[];\n readonly outDir: string;\n readonly behaviorBundles: readonly BundleRef[];\n readonly conversationBundles: readonly BundleRef[];\n}\n\nexport async function generateManifest(\n input: ManifestEmissionInput,\n): Promise<Manifest> {\n const entrypoints: Record<string, string> = {};\n for (const b of input.behaviorBundles) {\n entrypoints[b.name] = `behaviors/${b.name}.js`;\n }\n for (const c of input.conversationBundles) {\n entrypoints[c.name] = `conversations/${c.name}.js`;\n }\n\n const m = (await evaluateAndEmitManifest({\n cwd: input.cwd,\n outDir: input.outDir,\n userFiles: input.userFiles,\n entrypoints,\n })) as Manifest;\n\n await writeFile(\n join(input.outDir, \"manifest.json\"),\n JSON.stringify(m, null, 2),\n \"utf-8\",\n );\n\n return m;\n}\n","export function stableStringify(value: unknown, indent?: number): string {\n return JSON.stringify(canonicalize(value), null, indent);\n}\n\nfunction canonicalize(value: unknown): unknown {\n if (value === null) return null;\n if (Array.isArray(value)) {\n return value.map(canonicalize);\n }\n if (typeof value === \"object\") {\n const obj = value as Record<string, unknown>;\n const sorted: Record<string, unknown> = {};\n for (const key of Object.keys(obj).sort()) {\n sorted[key] = canonicalize(obj[key]);\n }\n return sorted;\n }\n return value;\n}\n","import { createHash } from \"node:crypto\";\nimport { stableStringify } from \"./stable-json\";\nimport type { Manifest } from \"./manifest\";\n\nexport const CATALOG_CONTRACT_VERSION = \"io.catalog.v1\" as const;\nexport const CATALOG_SNAPSHOT_VERSION = \"io_runtime.snapshot.v2\" as const;\n\nconst WEBHOOK_RESOURCE_KIND = \"webhook\" as const;\n\nconst PLATFORM_TOOL_KINDS = new Set([\"email\", \"calendar\", \"contacts\"]);\nconst STREAM_PUBLISH_KINDS = new Set([\n \"kafka\",\n \"rabbitmq\",\n \"redis\",\n \"pubsub\",\n \"sqs\",\n \"websocket\",\n]);\n\nexport interface ResourceDescriptor {\n readonly id: string;\n readonly application_name: string;\n readonly resource_name: string;\n readonly resource_kind: string;\n readonly provider_kind: string;\n readonly backend_kind: string;\n readonly binding_scope: string;\n readonly credential_source: string;\n readonly credential_exposure: string;\n readonly config_ref: string;\n readonly signals: readonly string[];\n readonly tools: readonly string[];\n}\n\nexport interface SignalDescriptor {\n readonly id: string;\n readonly resource_id: string;\n readonly name: string;\n readonly event_name: string;\n readonly scope: \"project\" | \"principal\";\n readonly mode: string;\n readonly schema_ref: string;\n}\n\nexport type CredentialHeaderSourceCatalog =\n | { readonly kind: \"credential\"; readonly resource_id: string; readonly field: string }\n | { readonly kind: \"raw_secret\"; readonly name: string };\n\nexport interface CredentialHeaderCatalog {\n readonly name: string;\n readonly source: CredentialHeaderSourceCatalog;\n readonly format: string;\n}\n\nexport type RequestMappingCatalogValue =\n | string\n | { readonly from: string; readonly as?: string };\n\nexport interface RequestMappingCatalog {\n readonly path_params: readonly RequestMappingCatalogValue[];\n readonly query: readonly RequestMappingCatalogValue[];\n readonly body?: string | null;\n}\n\nexport type ExecutorDescriptor =\n | PlatformToolExecutor\n | StreamPublishExecutor\n | WebhookResponseExecutor\n | HttpRequestExecutor\n | GraphQlRequestExecutor\n | HttpOperationExecutor\n | GraphQlOperationExecutor\n | UnsupportedExecutor;\n\nexport interface PlatformToolExecutor {\n readonly kind: \"platform_tool\";\n readonly provider_kind: string;\n readonly backend_kind: string;\n readonly operation: string;\n}\n\nexport interface StreamPublishExecutor {\n readonly kind: \"stream_publish\";\n readonly provider_kind: string;\n readonly backend_kind: string;\n readonly destination_ref: string;\n}\n\nexport interface WebhookResponseExecutor {\n readonly kind: \"webhook_response\";\n}\n\nexport interface HttpRequestExecutor {\n readonly kind: \"http_request\";\n readonly url: string;\n readonly method: string;\n readonly headers_ref: string;\n readonly credential_headers: readonly CredentialHeaderCatalog[];\n readonly query_params_ref: string;\n readonly body_ref: string;\n readonly timeout_seconds: number | null;\n}\n\nexport interface GraphQlRequestExecutor {\n readonly kind: \"graphql_request\";\n readonly endpoint: string;\n readonly query_ref: string;\n readonly operation_name: string | null;\n readonly variables_ref: string;\n readonly headers_ref: string;\n readonly credential_headers: readonly CredentialHeaderCatalog[];\n readonly timeout_seconds: number | null;\n}\n\nexport interface HttpOperationExecutor {\n readonly kind: \"http_operation\";\n readonly base_url: string;\n readonly method: string;\n readonly path: string;\n readonly headers_ref: string;\n readonly credential_headers: readonly CredentialHeaderCatalog[];\n readonly timeout_seconds: number | null;\n readonly request_mapping: RequestMappingCatalog;\n}\n\nexport interface GraphQlOperationExecutor {\n readonly kind: \"graphql_operation\";\n readonly endpoint: string;\n readonly query_ref: string;\n readonly operation_name: string | null;\n readonly headers_ref: string;\n readonly credential_headers: readonly CredentialHeaderCatalog[];\n readonly timeout_seconds: number | null;\n readonly variables_mapping: string;\n}\n\nexport interface UnsupportedExecutor {\n readonly kind: \"unsupported\";\n readonly reason: string;\n}\n\nexport interface ToolDescriptor {\n readonly id: string;\n readonly resource_id: string;\n readonly name: string;\n readonly effect: \"read\" | \"write\";\n readonly audit_requirement: \"pre_call\" | \"finish_only\" | \"none\";\n readonly credential_exposure: string;\n readonly args_schema_ref: string;\n readonly result_schema_ref: string;\n readonly executor: ExecutorDescriptor;\n}\n\nexport interface Catalog {\n readonly contract_version: typeof CATALOG_CONTRACT_VERSION;\n readonly snapshot_version: typeof CATALOG_SNAPSHOT_VERSION;\n readonly catalog_hash: string;\n readonly resources: { readonly [id: string]: ResourceDescriptor };\n readonly signals: { readonly [id: string]: SignalDescriptor };\n readonly tools: { readonly [id: string]: ToolDescriptor };\n readonly schemas: { readonly [hash: string]: unknown };\n}\n\nexport interface CatalogGenerationResult {\n readonly catalog: Catalog;\n readonly warnings: readonly string[];\n}\n\nexport function sha256Hex(value: unknown): string {\n return `sha256:${createHash(\"sha256\").update(stableStringify(value)).digest(\"hex\")}`;\n}\n\ntype UnknownRecord = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction getString(record: UnknownRecord, key: string): string | undefined {\n const value = record[key];\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction getRecord(record: UnknownRecord, key: string): UnknownRecord | undefined {\n const value = record[key];\n return isRecord(value) ? value : undefined;\n}\n\nfunction getArray(record: UnknownRecord, key: string): unknown[] {\n const value = record[key];\n return Array.isArray(value) ? value : [];\n}\n\nfunction getNumber(record: UnknownRecord, key: string): number | undefined {\n const value = record[key];\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nfunction countPlaceholders(format: string): number {\n let count = 0;\n let idx = 0;\n while ((idx = format.indexOf(\"{}\", idx)) !== -1) {\n count++;\n idx += 2;\n }\n return count;\n}\n\nfunction deriveAuditRequirement(effect: \"read\" | \"write\"): \"pre_call\" | \"finish_only\" {\n return effect === \"write\" ? \"pre_call\" : \"finish_only\";\n}\n\nfunction deriveEffect(toolMode: unknown): \"read\" | \"write\" {\n return toolMode === \"read\" ? \"read\" : \"write\";\n}\n\nfunction normalizeCredentialHeaders(\n declared: unknown,\n resourceId: string,\n context: string,\n warnings: string[],\n): readonly CredentialHeaderCatalog[] {\n if (!Array.isArray(declared)) return [];\n const out: CredentialHeaderCatalog[] = [];\n for (const entry of declared) {\n if (!isRecord(entry)) {\n warnings.push(`${context}: skipped non-object credential header entry`);\n continue;\n }\n const name = getString(entry, \"name\");\n if (!name) {\n warnings.push(`${context}: credential header missing name`);\n continue;\n }\n const source = getRecord(entry, \"source\");\n if (!source) {\n warnings.push(`${context}: credential header \"${name}\" missing source`);\n continue;\n }\n const sourceKind = getString(source, \"kind\");\n let normalizedSource: CredentialHeaderSourceCatalog | undefined;\n if (sourceKind === \"credential\") {\n const field = getString(source, \"field\");\n if (!field) {\n warnings.push(\n `${context}: credential header \"${name}\" credential source missing field`,\n );\n continue;\n }\n normalizedSource = { kind: \"credential\", resource_id: resourceId, field };\n } else if (sourceKind === \"rawSecret\" || sourceKind === \"raw_secret\") {\n const secretName = getString(source, \"name\");\n if (!secretName) {\n warnings.push(\n `${context}: credential header \"${name}\" raw_secret source missing name`,\n );\n continue;\n }\n normalizedSource = { kind: \"raw_secret\", name: secretName };\n } else {\n warnings.push(\n `${context}: credential header \"${name}\" has unsupported source kind \"${sourceKind}\"`,\n );\n continue;\n }\n const format = getString(entry, \"format\") ?? \"{}\";\n if (countPlaceholders(format) !== 1) {\n warnings.push(\n `${context}: credential header \"${name}\" format must contain exactly one {} placeholder`,\n );\n continue;\n }\n out.push({ name, source: normalizedSource, format });\n }\n return out;\n}\n\nfunction normalizeRequestMapping(declared: unknown): RequestMappingCatalog {\n if (!isRecord(declared)) {\n return { path_params: [], query: [] };\n }\n const pathParams = collectMappingValues(declared[\"pathParams\"]);\n const query = collectMappingValues(declared[\"query\"]);\n const body = declared[\"body\"];\n const bodyValue =\n typeof body === \"string\" ? body : body === null ? null : undefined;\n return {\n path_params: pathParams,\n query,\n ...(bodyValue !== undefined ? { body: bodyValue } : {}),\n };\n}\n\nfunction collectMappingValues(value: unknown): readonly RequestMappingCatalogValue[] {\n if (!Array.isArray(value)) return [];\n const out: RequestMappingCatalogValue[] = [];\n for (const entry of value) {\n if (typeof entry === \"string\" && entry.trim()) {\n out.push(entry);\n } else if (isRecord(entry)) {\n const from = getString(entry, \"from\");\n if (!from?.trim()) continue;\n const alias = getString(entry, \"as\");\n out.push(alias?.trim() ? { from, as: alias } : from);\n }\n }\n return out;\n}\n\ninterface ExecutorContext {\n readonly resourceId: string;\n readonly resourceKind: string;\n readonly providerKind: string;\n readonly backendKind: string;\n readonly toolName: string;\n readonly resourceConfig: UnknownRecord;\n readonly configHash: string;\n readonly registerBlob: (value: unknown) => string;\n readonly warnings: string[];\n}\n\nfunction buildExecutor(ctx: ExecutorContext): ExecutorDescriptor {\n if (PLATFORM_TOOL_KINDS.has(ctx.resourceKind)) {\n return {\n kind: \"platform_tool\",\n provider_kind: ctx.providerKind,\n backend_kind: ctx.backendKind,\n operation: ctx.toolName,\n };\n }\n if (ctx.resourceKind === WEBHOOK_RESOURCE_KIND && ctx.toolName === \"respond\") {\n return { kind: \"webhook_response\" };\n }\n if (STREAM_PUBLISH_KINDS.has(ctx.resourceKind)) {\n return {\n kind: \"stream_publish\",\n provider_kind: ctx.providerKind,\n backend_kind: ctx.backendKind,\n destination_ref: ctx.configHash,\n };\n }\n if (ctx.resourceKind === \"http\") {\n return buildHttpRequestExecutor(ctx);\n }\n if (ctx.resourceKind === \"graphql\") {\n return buildGraphQlRequestExecutor(ctx);\n }\n if (ctx.resourceKind === \"httpApi\") {\n return buildHttpOperationExecutor(ctx);\n }\n if (ctx.resourceKind === \"graphqlApi\") {\n return buildGraphQlOperationExecutor(ctx);\n }\n return {\n kind: \"unsupported\",\n reason: `unknown_resource_kind:${ctx.resourceKind}`,\n };\n}\n\nfunction buildHttpRequestExecutor(ctx: ExecutorContext): HttpRequestExecutor {\n const config = ctx.resourceConfig;\n const url = getString(config, \"url\") ?? \"\";\n const method = (getString(config, \"method\") ?? \"GET\").toUpperCase();\n const headers = getRecord(config, \"headers\") ?? {};\n const queryParams = getRecord(config, \"queryParams\") ?? {};\n const body = config[\"body\"];\n const credentialHeaders = normalizeCredentialHeaders(\n config[\"credentialHeaders\"],\n ctx.resourceId,\n `tool \"${ctx.resourceId}.${ctx.toolName}\"`,\n ctx.warnings,\n );\n return {\n kind: \"http_request\",\n url,\n method,\n headers_ref: ctx.registerBlob(headers),\n credential_headers: credentialHeaders,\n query_params_ref: ctx.registerBlob(queryParams),\n body_ref: ctx.registerBlob(body ?? null),\n timeout_seconds: getNumber(config, \"timeoutSeconds\") ?? null,\n };\n}\n\nfunction buildGraphQlRequestExecutor(ctx: ExecutorContext): GraphQlRequestExecutor {\n const config = ctx.resourceConfig;\n const endpoint = getString(config, \"endpoint\") ?? \"\";\n const query = getString(config, \"query\") ?? \"\";\n const headers = getRecord(config, \"headers\") ?? {};\n const variables = getRecord(config, \"variables\") ?? {};\n const operationName = getString(config, \"operationName\") ?? null;\n const credentialHeaders = normalizeCredentialHeaders(\n config[\"credentialHeaders\"],\n ctx.resourceId,\n `tool \"${ctx.resourceId}.${ctx.toolName}\"`,\n ctx.warnings,\n );\n return {\n kind: \"graphql_request\",\n endpoint,\n query_ref: ctx.registerBlob(query),\n operation_name: operationName,\n variables_ref: ctx.registerBlob(variables),\n headers_ref: ctx.registerBlob(headers),\n credential_headers: credentialHeaders,\n timeout_seconds: getNumber(config, \"timeoutSeconds\") ?? null,\n };\n}\n\nfunction buildHttpOperationExecutor(\n ctx: ExecutorContext,\n): HttpOperationExecutor | UnsupportedExecutor {\n const config = ctx.resourceConfig;\n const ops = getRecord(config, \"operations\") ?? {};\n const opSpec = getRecord(ops, ctx.toolName);\n if (!opSpec) {\n ctx.warnings.push(\n `tool \"${ctx.resourceId}.${ctx.toolName}\" has no matching operation in resource config`,\n );\n return {\n kind: \"unsupported\",\n reason: `httpApi_missing_op:${ctx.toolName}`,\n };\n }\n const baseUrl = getString(config, \"baseUrl\") ?? \"\";\n const resourceHeaders = getRecord(config, \"headers\") ?? {};\n const opHeaders = getRecord(opSpec, \"headers\") ?? {};\n const mergedHeaders = { ...resourceHeaders, ...opHeaders };\n const opCredentialHeaders = opSpec[\"credentialHeaders\"];\n const resourceCredentialHeaders = config[\"credentialHeaders\"];\n const credentialHeaders = normalizeCredentialHeaders(\n opCredentialHeaders ?? resourceCredentialHeaders,\n ctx.resourceId,\n `tool \"${ctx.resourceId}.${ctx.toolName}\"`,\n ctx.warnings,\n );\n const method = (getString(opSpec, \"method\") ?? \"GET\").toUpperCase();\n const path = getString(opSpec, \"path\") ?? \"\";\n const timeoutSeconds =\n getNumber(opSpec, \"timeoutSeconds\") ?? getNumber(config, \"timeoutSeconds\") ?? null;\n return {\n kind: \"http_operation\",\n base_url: baseUrl,\n method,\n path,\n headers_ref: ctx.registerBlob(mergedHeaders),\n credential_headers: credentialHeaders,\n timeout_seconds: timeoutSeconds,\n request_mapping: normalizeRequestMapping(opSpec[\"requestMapping\"]),\n };\n}\n\nfunction buildGraphQlOperationExecutor(\n ctx: ExecutorContext,\n): GraphQlOperationExecutor | UnsupportedExecutor {\n const config = ctx.resourceConfig;\n const ops = getRecord(config, \"operations\") ?? {};\n const opSpec = getRecord(ops, ctx.toolName);\n if (!opSpec) {\n ctx.warnings.push(\n `tool \"${ctx.resourceId}.${ctx.toolName}\" has no matching operation in resource config`,\n );\n return {\n kind: \"unsupported\",\n reason: `graphqlApi_missing_op:${ctx.toolName}`,\n };\n }\n const endpoint = getString(config, \"endpoint\") ?? \"\";\n const resourceHeaders = getRecord(config, \"headers\") ?? {};\n const opHeaders = getRecord(opSpec, \"headers\") ?? {};\n const mergedHeaders = { ...resourceHeaders, ...opHeaders };\n const opCredentialHeaders = opSpec[\"credentialHeaders\"];\n const resourceCredentialHeaders = config[\"credentialHeaders\"];\n const credentialHeaders = normalizeCredentialHeaders(\n opCredentialHeaders ?? resourceCredentialHeaders,\n ctx.resourceId,\n `tool \"${ctx.resourceId}.${ctx.toolName}\"`,\n ctx.warnings,\n );\n const query = getString(opSpec, \"query\") ?? \"\";\n const operationName = getString(opSpec, \"operationName\") ?? null;\n const variablesMapping = getString(opSpec, \"variablesMapping\") ?? \"input\";\n const timeoutSeconds =\n getNumber(opSpec, \"timeoutSeconds\") ?? getNumber(config, \"timeoutSeconds\") ?? null;\n return {\n kind: \"graphql_operation\",\n endpoint,\n query_ref: ctx.registerBlob(query),\n operation_name: operationName,\n headers_ref: ctx.registerBlob(mergedHeaders),\n credential_headers: credentialHeaders,\n timeout_seconds: timeoutSeconds,\n variables_mapping: variablesMapping,\n };\n}\n\nexport function generateCatalog(manifest: Manifest): CatalogGenerationResult {\n const warnings: string[] = [];\n const resources: Record<string, ResourceDescriptor> = {};\n const signals: Record<string, SignalDescriptor> = {};\n const tools: Record<string, ToolDescriptor> = {};\n const schemas: Record<string, unknown> = {};\n\n const registerBlob = (value: unknown): string => {\n const hash = sha256Hex(value ?? {});\n if (!(hash in schemas)) {\n schemas[hash] = value ?? {};\n }\n return hash;\n };\n\n const apps = getArray(manifest as UnknownRecord, \"apps\").filter(isRecord);\n\n for (const app of apps) {\n const appName = getString(app, \"name\");\n if (!appName) continue;\n\n const appResources = getArray(app, \"resources\").filter(isRecord);\n\n for (const resource of appResources) {\n const resourceName = getString(resource, \"name\");\n const resourceKind = getString(resource, \"kind\") ?? \"\";\n const backend = getString(resource, \"backend\") ?? \"\";\n const providerKind = getString(resource, \"provider_kind\") ?? resourceKind;\n if (!resourceName) continue;\n\n const resourceId = `${appName}.${resourceName}`;\n const config = getRecord(resource, \"config\") ?? {};\n const configHash = registerBlob(config);\n\n const capability = getRecord(resource, \"capability\") ?? {};\n const bindingScope = getString(capability, \"binding_scope\") ?? \"project\";\n const credentialSource = getString(capability, \"credential_source\") ?? \"none\";\n const requiresBindingValue = capability.requires_binding;\n const credentialExposure =\n requiresBindingValue === true ? \"stdlib\" : \"none\";\n\n const resourceSignals = getArray(resource, \"signals\").filter(isRecord);\n const resourceTools = getArray(resource, \"tools\").filter(isRecord);\n\n const emittedSignalIds: string[] = [];\n for (const signal of resourceSignals) {\n const signalName = getString(signal, \"name\");\n if (!signalName) continue;\n const signalId = `${resourceId}.${signalName}`;\n const signalScope =\n getString(signal, \"scope\") === \"principal\" ? \"principal\" : \"project\";\n const signalSchema = getRecord(signal, \"schema\") ?? {};\n const schemaRef = registerBlob(signalSchema);\n\n signals[signalId] = {\n id: signalId,\n resource_id: resourceId,\n name: signalName,\n event_name: getString(signal, \"event_name\") ?? \"\",\n scope: signalScope,\n mode: getString(signal, \"mode\") ?? \"\",\n schema_ref: schemaRef,\n };\n emittedSignalIds.push(signalId);\n }\n\n const emittedToolIds: string[] = [];\n for (const tool of resourceTools) {\n const toolName = getString(tool, \"name\");\n if (!toolName) continue;\n const toolId = `${resourceId}.${toolName}`;\n const effect = deriveEffect(tool.mode);\n const toolCapability = getRecord(tool, \"capability\") ?? {};\n const toolBackendKind =\n getString(toolCapability, \"backend_kind\") ?? backend;\n const toolProviderKind =\n getString(toolCapability, \"provider_kind\") ?? providerKind;\n const toolCredentialExposure =\n getString(toolCapability, \"credential_exposure\") ?? \"none\";\n const argsSchemaRef = registerBlob(\n getRecord(tool, \"args_schema\") ?? {},\n );\n const resultSchemaRef = registerBlob(\n getRecord(tool, \"result_schema\") ?? {},\n );\n const executor = buildExecutor({\n resourceId,\n resourceKind,\n providerKind: toolProviderKind,\n backendKind: toolBackendKind,\n toolName,\n resourceConfig: config,\n configHash,\n registerBlob,\n warnings,\n });\n\n if (executor.kind === \"unsupported\") {\n warnings.push(\n `tool \"${toolId}\" executor deferred: ${executor.reason}`,\n );\n }\n\n tools[toolId] = {\n id: toolId,\n resource_id: resourceId,\n name: toolName,\n effect,\n audit_requirement: deriveAuditRequirement(effect),\n credential_exposure: toolCredentialExposure,\n args_schema_ref: argsSchemaRef,\n result_schema_ref: resultSchemaRef,\n executor,\n };\n emittedToolIds.push(toolId);\n }\n\n resources[resourceId] = {\n id: resourceId,\n application_name: appName,\n resource_name: resourceName,\n resource_kind: resourceKind,\n provider_kind: providerKind,\n backend_kind: backend,\n binding_scope: bindingScope,\n credential_source: credentialSource,\n credential_exposure: credentialExposure,\n config_ref: configHash,\n signals: emittedSignalIds,\n tools: emittedToolIds,\n };\n }\n }\n\n const catalogBody = {\n contract_version: CATALOG_CONTRACT_VERSION,\n snapshot_version: CATALOG_SNAPSHOT_VERSION,\n resources,\n signals,\n tools,\n schemas,\n };\n const catalogHash = sha256Hex(catalogBody);\n\n return {\n catalog: {\n ...catalogBody,\n catalog_hash: catalogHash,\n },\n warnings,\n };\n}\n","import * as acorn from \"acorn\";\nimport * as walk from \"acorn-walk\";\nimport { BuildError } from \"../errors\";\nimport type {\n DiscoveredBehavior,\n DiscoveredConversation,\n ExecutionConfig,\n} from \"../types\";\n\ntype AstNode = acorn.Node & Record<string, unknown>;\n\nconst INTERNAL_CONFIG = \"__io_cli_compiled_config\";\nconst INTERNAL_RUN = \"__io_cli_compiled_run\";\nconst INTERNAL_ON_START = \"__io_cli_compiled_on_start\";\nconst INTERNAL_ON_MESSAGE = \"__io_cli_compiled_on_message\";\nconst INTERNAL_ON_END = \"__io_cli_compiled_on_end\";\nconst INTERNAL_APPLICATIONS = \"__io_cli_compiled_applications\";\n\nfunction conversationChannel(name: string): string {\n return `session:${name}`;\n}\n\nfunction parseModule(source: string): AstNode {\n return acorn.parse(source, {\n ecmaVersion: \"latest\",\n sourceType: \"module\",\n }) as unknown as AstNode;\n}\n\ninterface TopLevelDecl {\n names: Set<string>;\n refs: Set<string>;\n start: number;\n end: number;\n}\n\ninterface ImportInfo {\n specifiers: { local: string; imported: string; kind: \"default\" | \"namespace\" | \"named\" }[];\n source: string;\n start: number;\n end: number;\n}\n\ninterface RootCallInfo {\n start: number;\n end: number;\n}\n\ninterface TextEdit {\n start: number;\n end: number;\n text: string;\n}\n\ninterface CompiledReplacement {\n replacement: string;\n refs: Set<string>;\n}\n\nfunction rootStatementFor(\n source: string,\n statementStart: number,\n kind: \"behavior\" | \"conversation\",\n name: string,\n): AstNode {\n let ast: AstNode;\n try {\n ast = parseModule(source);\n } catch (error) {\n throw new BuildError(\n `failed to parse compiled target source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n\n const body = ast.body as AstNode[];\n const stmt = body.find(\n (candidate) => (candidate.start as number) === statementStart,\n );\n\n if (stmt) {\n return stmt;\n }\n\n const fallback = body.find((candidate) => {\n if (candidate.type !== \"ExpressionStatement\") {\n return false;\n }\n\n const expression = candidate.expression as AstNode;\n if (expression.type !== \"CallExpression\") {\n return false;\n }\n\n const args = expression.arguments as AstNode[];\n if (args.length < 2 || args[0]?.type !== \"Literal\" || args[1]?.type !== \"ObjectExpression\") {\n return false;\n }\n\n const callee = expression.callee as AstNode;\n if (callee.type !== \"Identifier\") {\n return false;\n }\n\n return callee.name === kind && args[0].value === name;\n });\n\n if (!fallback) {\n throw new BuildError(\n `failed to locate compiled ${kind} root '${name}' at byte offset ${statementStart}`,\n );\n }\n\n return fallback;\n}\n\nfunction rootSpecNode(stmt: AstNode): AstNode {\n if (stmt.type !== \"ExpressionStatement\") {\n throw new BuildError(\"compiled target root must be an expression statement\");\n }\n\n const expression = stmt.expression as AstNode;\n if (expression.type !== \"CallExpression\") {\n throw new BuildError(\"compiled target root must be a call expression\");\n }\n\n const args = expression.arguments as AstNode[];\n if (args.length < 2 || args[1].type !== \"ObjectExpression\") {\n throw new BuildError(\"compiled target root must have a spec object as its second argument\");\n }\n\n return args[1] as AstNode;\n}\n\nfunction propertyName(prop: AstNode): string | undefined {\n const key = prop.key as AstNode | undefined;\n if (!key) {\n return undefined;\n }\n\n if (key.type === \"Identifier\") {\n return key.name as string;\n }\n\n if (key.type === \"Literal\" && typeof key.value === \"string\") {\n return key.value as string;\n }\n\n return undefined;\n}\n\nfunction findProperty(spec: AstNode, name: string): AstNode | undefined {\n return (spec.properties as AstNode[]).find((prop) => {\n if (prop.type === \"SpreadElement\") {\n return false;\n }\n\n return propertyName(prop) === name;\n });\n}\n\nfunction functionSourceFromProperty(source: string, prop: AstNode, label: string): string {\n const value = prop.value as AstNode | undefined;\n if (!value) {\n throw new BuildError(`compiled target is missing ${label} handler`);\n }\n\n if (\n prop.method === true &&\n (value.type === \"FunctionExpression\" || value.type === \"ArrowFunctionExpression\")\n ) {\n const paramsStart = value.start as number;\n const body = value.body as AstNode;\n const paramsSource = source.slice(paramsStart, body.start as number);\n const bodySource = source.slice(body.start as number, body.end as number);\n const asyncPrefix = value.async ? \"async \" : \"\";\n const generatorSuffix = value.generator ? \"*\" : \"\";\n return `${asyncPrefix}function${generatorSuffix}${paramsSource}${bodySource}`;\n }\n\n return source.slice(value.start as number, value.end as number);\n}\n\nfunction expressionSourceFromProperty(source: string, prop: AstNode, label: string): string {\n const value = prop.value as AstNode | undefined;\n if (!value) {\n throw new BuildError(`compiled target is missing ${label} value`);\n }\n\n return source.slice(value.start as number, value.end as number);\n}\n\nfunction replaceRange(source: string, start: number, end: number, text: string): string {\n return `${source.slice(0, start)}${text}${source.slice(end)}`;\n}\n\nfunction collectBindingNames(pattern: AstNode, out: Set<string>): void {\n switch (pattern.type) {\n case \"Identifier\":\n out.add(pattern.name as string);\n break;\n case \"ObjectPattern\":\n for (const prop of pattern.properties as AstNode[]) {\n collectBindingNames(\n (prop.type === \"RestElement\" ? prop.argument : prop.value) as AstNode,\n out,\n );\n }\n break;\n case \"ArrayPattern\":\n for (const elem of pattern.elements as (AstNode | null)[]) {\n if (elem) {\n collectBindingNames(elem, out);\n }\n }\n break;\n case \"AssignmentPattern\":\n collectBindingNames(pattern.left as AstNode, out);\n break;\n case \"RestElement\":\n collectBindingNames(pattern.argument as AstNode, out);\n break;\n }\n}\n\nfunction collectRefs(node: acorn.Node): Set<string> {\n const refs = new Set<string>();\n walk.ancestor(node, {\n Identifier(n: acorn.Node, _state: unknown, ancestors: acorn.Node[]) {\n const id = n as AstNode;\n const parent = ancestors[ancestors.length - 2] as AstNode | undefined;\n if (\n parent?.type === \"MemberExpression\" &&\n !parent.computed &&\n parent.property === (n as unknown)\n ) {\n return;\n }\n if (\n parent?.type === \"Property\" &&\n !parent.computed &&\n parent.key === (n as unknown) &&\n !parent.shorthand\n ) {\n return;\n }\n refs.add(id.name as string);\n },\n });\n return refs;\n}\n\nfunction isRootTargetCall(stmt: AstNode): boolean {\n if (stmt.type !== \"ExpressionStatement\") {\n return false;\n }\n\n const expression = stmt.expression as AstNode;\n if (expression.type !== \"CallExpression\") {\n return false;\n }\n\n const callee = expression.callee as AstNode;\n return callee.type === \"Identifier\" && (callee.name === \"behavior\" || callee.name === \"conversation\");\n}\n\nfunction analyzeTopLevel(\n body: AstNode[],\n): { decls: TopLevelDecl[]; imports: ImportInfo[]; rootCalls: RootCallInfo[] } {\n const decls: TopLevelDecl[] = [];\n const imports: ImportInfo[] = [];\n const rootCalls: RootCallInfo[] = [];\n\n for (const stmt of body) {\n let candidate = stmt;\n if (stmt.type === \"ExportNamedDeclaration\") {\n const declaration = stmt.declaration as AstNode | null | undefined;\n if (!declaration) {\n continue;\n }\n candidate = declaration;\n } else if (\n stmt.type === \"ExportDefaultDeclaration\" ||\n stmt.type === \"ExportAllDeclaration\"\n ) {\n continue;\n }\n\n if (candidate.type === \"ImportDeclaration\") {\n const specifiers = candidate.specifiers as AstNode[];\n if (specifiers.length === 0) {\n continue;\n }\n\n const info: ImportInfo = {\n specifiers: [],\n source: (candidate.source as AstNode).value as string,\n start: candidate.start as number,\n end: candidate.end as number,\n };\n\n for (const spec of specifiers) {\n const local = (spec.local as AstNode).name as string;\n if (spec.type === \"ImportDefaultSpecifier\") {\n info.specifiers.push({ local, imported: \"default\", kind: \"default\" });\n } else if (spec.type === \"ImportNamespaceSpecifier\") {\n info.specifiers.push({ local, imported: \"*\", kind: \"namespace\" });\n } else {\n const imported = (spec.imported as AstNode).name as string;\n info.specifiers.push({ local, imported, kind: \"named\" });\n }\n }\n\n imports.push(info);\n continue;\n }\n\n if (isRootTargetCall(candidate)) {\n rootCalls.push({\n start: candidate.start as number,\n end: candidate.end as number,\n });\n continue;\n }\n\n const names = new Set<string>();\n\n if (candidate.type === \"VariableDeclaration\") {\n for (const declaration of candidate.declarations as AstNode[]) {\n collectBindingNames(declaration.id as AstNode, names);\n }\n } else if (candidate.type === \"FunctionDeclaration\" || candidate.type === \"ClassDeclaration\") {\n const id = candidate.id as AstNode | null;\n if (id?.type === \"Identifier\") {\n names.add(id.name as string);\n }\n } else {\n continue;\n }\n\n if (names.size === 0) {\n continue;\n }\n\n const refs = collectRefs(candidate as acorn.Node);\n for (const name of names) {\n refs.delete(name);\n }\n\n decls.push({\n names,\n refs,\n start: stmt.start as number,\n end: stmt.end as number,\n });\n }\n\n return { decls, imports, rootCalls };\n}\n\nfunction computeReachableNames(seeds: Set<string>, decls: TopLevelDecl[]): Set<string> {\n const declByName = new Map<string, TopLevelDecl>();\n for (const decl of decls) {\n for (const name of decl.names) {\n declByName.set(name, decl);\n }\n }\n\n const reachableNames = new Set<string>();\n const reachedDecls = new Set<TopLevelDecl>();\n const queue = [...seeds];\n\n while (queue.length > 0) {\n const name = queue.pop()!;\n if (reachableNames.has(name)) {\n continue;\n }\n reachableNames.add(name);\n\n const decl = declByName.get(name);\n if (!decl || reachedDecls.has(decl)) {\n continue;\n }\n\n reachedDecls.add(decl);\n for (const ref of decl.refs) {\n if (!reachableNames.has(ref)) {\n queue.push(ref);\n }\n }\n }\n\n return reachableNames;\n}\n\nfunction buildImportStatement(\n kept: ImportInfo[\"specifiers\"],\n source: string,\n): string {\n const defaultSpec = kept.find((s) => s.kind === \"default\");\n const namespaceSpec = kept.find((s) => s.kind === \"namespace\");\n const named = kept.filter((s) => s.kind === \"named\");\n const parts: string[] = [];\n\n if (defaultSpec) {\n parts.push(defaultSpec.local);\n }\n\n if (namespaceSpec) {\n parts.push(`* as ${namespaceSpec.local}`);\n }\n\n if (named.length > 0) {\n const specs = named.map((s) => (s.local === s.imported ? s.local : `${s.imported} as ${s.local}`));\n parts.push(`{ ${specs.join(\", \")} }`);\n }\n\n return `import ${parts.join(\", \")} from \"${source}\"`;\n}\n\nfunction applyEdits(source: string, edits: TextEdit[]): string {\n const sorted = [...edits].sort((a, b) => b.start - a.start);\n let result = source;\n for (const edit of sorted) {\n result = `${result.slice(0, edit.start)}${edit.text}${result.slice(edit.end)}`;\n }\n return result;\n}\n\nfunction blankRegion(source: string, start: number, end: number): string {\n const newlines = (source.slice(start, end).match(/\\n/g) || []).length;\n return \"\\n\".repeat(newlines);\n}\n\nfunction refsFromExpressionSource(source: string): Set<string> {\n const ast = parseModule(`(${source});`);\n const stmt = (ast.body as AstNode[])[0];\n const expression = stmt.expression as AstNode;\n return collectRefs(expression as acorn.Node);\n}\n\nfunction pruneUnusedTopLevel(source: string, seeds: Set<string>): string {\n let ast: AstNode;\n try {\n ast = parseModule(source);\n } catch {\n return source;\n }\n\n const { decls, imports, rootCalls } = analyzeTopLevel(ast.body as AstNode[]);\n const reachable = computeReachableNames(seeds, decls);\n const edits: TextEdit[] = [];\n\n for (const decl of decls) {\n const used = [...decl.names].some((name) => reachable.has(name));\n if (!used) {\n edits.push({\n start: decl.start,\n end: decl.end,\n text: blankRegion(source, decl.start, decl.end),\n });\n }\n }\n\n for (const imp of imports) {\n const kept = imp.specifiers.filter((specifier) => reachable.has(specifier.local));\n if (kept.length === 0) {\n edits.push({\n start: imp.start,\n end: imp.end,\n text: blankRegion(source, imp.start, imp.end),\n });\n } else if (kept.length < imp.specifiers.length) {\n edits.push({\n start: imp.start,\n end: imp.end,\n text: buildImportStatement(kept, imp.source),\n });\n }\n }\n\n for (const rootCall of rootCalls) {\n edits.push({\n start: rootCall.start,\n end: rootCall.end,\n text: blankRegion(source, rootCall.start, rootCall.end),\n });\n }\n\n return applyEdits(source, edits);\n}\n\ninterface CanonicalExecutionConfig {\n readonly timeout_ms?: number;\n readonly memory_mb?: number;\n readonly max_tool_calls?: number;\n readonly rate_budget?: {\n readonly per_application?: Record<string, number>;\n readonly per_capability?: Record<string, number>;\n };\n}\n\nfunction parseDurationMs(value: unknown): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === \"number\") {\n if (Number.isInteger(value) && value > 0) return value;\n throw new BuildError(\"execution.timeout must be a positive integer number of milliseconds\");\n }\n if (typeof value !== \"string\") {\n throw new BuildError(\"execution.timeout must be a duration string or milliseconds\");\n }\n const match = value.trim().toLowerCase().match(/^(\\d+)\\s*(ms|s|m|h)$/);\n if (!match) {\n throw new BuildError(\"execution.timeout must use ms, s, m, or h units\");\n }\n const amount = Number(match[1]);\n const unit = match[2];\n const multiplier =\n unit === \"ms\" ? 1 : unit === \"s\" ? 1_000 : unit === \"m\" ? 60_000 : 3_600_000;\n return amount * multiplier;\n}\n\nfunction parseMemoryMb(value: unknown): number | undefined {\n if (value === undefined) return undefined;\n if (typeof value === \"number\") {\n if (Number.isInteger(value) && value > 0) return value;\n throw new BuildError(\"execution.memory must be a positive integer number of megabytes\");\n }\n if (typeof value !== \"string\") {\n throw new BuildError(\"execution.memory must be a size string or megabytes\");\n }\n const match = value.trim().toLowerCase().match(/^(\\d+)\\s*(mb|m|gb|g)$/);\n if (!match) {\n throw new BuildError(\"execution.memory must use mb or gb units\");\n }\n const amount = Number(match[1]);\n const unit = match[2];\n return unit === \"gb\" || unit === \"g\" ? amount * 1024 : amount;\n}\n\nfunction nonNegativeInteger(value: unknown, field: string): number | undefined {\n if (value === undefined) return undefined;\n if (Number.isInteger(value) && (value as number) >= 0) return value as number;\n throw new BuildError(`${field} must be a non-negative integer`);\n}\n\nfunction normalizeBudgetMap(\n value: unknown,\n field: string,\n): Record<string, number> | undefined {\n if (value === undefined) return undefined;\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new BuildError(`${field} must be an object`);\n }\n const out: Record<string, number> = {};\n for (const [key, budget] of Object.entries(value as Record<string, unknown>)) {\n if (!key.trim()) {\n throw new BuildError(`${field} keys must be non-empty strings`);\n }\n out[key] = nonNegativeInteger(budget, `${field}.${key}`) as number;\n }\n return out;\n}\n\nfunction normalizeRateBudget(\n rateBudget: ExecutionConfig[\"rateBudget\"],\n): CanonicalExecutionConfig[\"rate_budget\"] | undefined {\n if (rateBudget === undefined) return undefined;\n const perApplication = normalizeBudgetMap(\n rateBudget.perApplication,\n \"execution.rateBudget.perApplication\",\n );\n const perCapability = normalizeBudgetMap(\n rateBudget.perCapability,\n \"execution.rateBudget.perCapability\",\n );\n const out = {\n ...(perApplication ? { per_application: perApplication } : {}),\n ...(perCapability ? { per_capability: perCapability } : {}),\n };\n return Object.keys(out).length > 0 ? out : undefined;\n}\n\nfunction compactExecution(execution?: ExecutionConfig): CanonicalExecutionConfig | undefined {\n if (!execution) {\n return undefined;\n }\n\n const timeoutMs = parseDurationMs(execution.timeout);\n const memoryMb = parseMemoryMb(execution.memory);\n const maxToolCalls = nonNegativeInteger(execution.maxToolCalls, \"execution.maxToolCalls\");\n const rateBudget = normalizeRateBudget(execution.rateBudget);\n\n const compact: CanonicalExecutionConfig = {\n ...(timeoutMs !== undefined ? { timeout_ms: timeoutMs } : {}),\n ...(memoryMb !== undefined ? { memory_mb: memoryMb } : {}),\n ...(maxToolCalls !== undefined ? { max_tool_calls: maxToolCalls } : {}),\n ...(rateBudget !== undefined ? { rate_budget: rateBudget } : {}),\n };\n\n return Object.keys(compact).length > 0 ? compact : undefined;\n}\n\nfunction buildBehaviorReplacement(\n source: string,\n spec: AstNode,\n behavior: DiscoveredBehavior,\n): CompiledReplacement {\n const run = findProperty(spec, \"run\");\n if (!run) {\n throw new BuildError(`behavior '${behavior.name}' is missing a run handler`, behavior.location);\n }\n\n const execution = compactExecution(behavior.execution);\n const runSource = functionSourceFromProperty(source, run, \"run\");\n const applications = findProperty(spec, \"applications\");\n const applicationsSource = applications\n ? expressionSourceFromProperty(source, applications, \"applications\")\n : undefined;\n const configEntries = [\n `kind: \"behavior\"`,\n `name: ${JSON.stringify(behavior.name)}`,\n `channel: ${JSON.stringify(behavior.on)}`,\n ];\n\n if (execution) {\n configEntries.push(`execution: ${JSON.stringify(execution)}`);\n }\n\n if (applicationsSource) {\n configEntries.push(`applications: ${INTERNAL_APPLICATIONS}`);\n }\n\n const configSource = `Object.freeze({ ${configEntries.join(\", \")} })`;\n\n return {\n replacement: [\n ...(applicationsSource\n ? [`const ${INTERNAL_APPLICATIONS} = ${applicationsSource};`]\n : []),\n `const ${INTERNAL_CONFIG} = ${configSource};`,\n `const ${INTERNAL_RUN} = ${runSource};`,\n `export { ${INTERNAL_CONFIG} as config, ${INTERNAL_RUN} as run };`,\n ].join(\"\\n\"),\n refs: new Set<string>([\n INTERNAL_CONFIG,\n INTERNAL_RUN,\n ...(applicationsSource ? [INTERNAL_APPLICATIONS] : []),\n ...refsFromExpressionSource(runSource),\n ...(applicationsSource ? refsFromExpressionSource(applicationsSource) : []),\n ]),\n };\n}\n\nfunction buildConversationReplacement(\n source: string,\n spec: AstNode,\n conversation: DiscoveredConversation,\n): CompiledReplacement {\n const onMessage = findProperty(spec, \"onMessage\");\n if (!onMessage) {\n throw new BuildError(\n `conversation '${conversation.name}' is missing an onMessage handler`,\n conversation.location,\n );\n }\n\n const execution = compactExecution(conversation.execution);\n const onStart = findProperty(spec, \"onStart\");\n const onEnd = findProperty(spec, \"onEnd\");\n const applications = findProperty(spec, \"applications\");\n\n const onMessageSource = functionSourceFromProperty(source, onMessage, \"onMessage\");\n const onStartSource = onStart ? functionSourceFromProperty(source, onStart, \"onStart\") : undefined;\n const onEndSource = onEnd ? functionSourceFromProperty(source, onEnd, \"onEnd\") : undefined;\n const applicationsSource = applications\n ? expressionSourceFromProperty(source, applications, \"applications\")\n : undefined;\n const configEntries = [\n `kind: \"conversation\"`,\n `name: ${JSON.stringify(conversation.name)}`,\n `channel: ${JSON.stringify(conversationChannel(conversation.name))}`,\n `transport: ${JSON.stringify(conversation.transport)}`,\n ];\n\n if (execution) {\n configEntries.push(`execution: ${JSON.stringify(execution)}`);\n }\n\n if (applicationsSource) {\n configEntries.push(`applications: ${INTERNAL_APPLICATIONS}`);\n }\n\n const configSource = `Object.freeze({ ${configEntries.join(\", \")} })`;\n const refs = new Set<string>([\n INTERNAL_CONFIG,\n INTERNAL_ON_START,\n INTERNAL_ON_MESSAGE,\n INTERNAL_ON_END,\n ...(applicationsSource ? [INTERNAL_APPLICATIONS] : []),\n ...refsFromExpressionSource(onMessageSource),\n ...(onStartSource ? refsFromExpressionSource(onStartSource) : []),\n ...(onEndSource ? refsFromExpressionSource(onEndSource) : []),\n ...(applicationsSource ? refsFromExpressionSource(applicationsSource) : []),\n ]);\n\n return {\n replacement: [\n ...(applicationsSource\n ? [`const ${INTERNAL_APPLICATIONS} = ${applicationsSource};`]\n : []),\n `const ${INTERNAL_CONFIG} = ${configSource};`,\n `const ${INTERNAL_ON_START} = ${onStartSource ?? \"undefined\"};`,\n `const ${INTERNAL_ON_MESSAGE} = ${onMessageSource};`,\n `const ${INTERNAL_ON_END} = ${onEndSource ?? \"undefined\"};`,\n `export { ${INTERNAL_CONFIG} as config, ${INTERNAL_ON_START} as onStart, ${INTERNAL_ON_MESSAGE} as onMessage, ${INTERNAL_ON_END} as onEnd };`,\n ].join(\"\\n\"),\n refs,\n };\n}\n\nexport function compileBehaviorSource(\n source: string,\n behavior: DiscoveredBehavior,\n): string {\n const stmt = rootStatementFor(source, behavior.statementStart, \"behavior\", behavior.name);\n const spec = rootSpecNode(stmt);\n const { replacement, refs } = buildBehaviorReplacement(source, spec, behavior);\n const compiled = replaceRange(\n source,\n stmt.start as number,\n stmt.end as number,\n replacement,\n );\n return pruneUnusedTopLevel(compiled, refs);\n}\n\nexport function compileConversationSource(\n source: string,\n conversation: DiscoveredConversation,\n): string {\n const stmt = rootStatementFor(\n source,\n conversation.statementStart,\n \"conversation\",\n conversation.name,\n );\n const spec = rootSpecNode(stmt);\n const { replacement, refs } = buildConversationReplacement(source, spec, conversation);\n const compiled = replaceRange(\n source,\n stmt.start as number,\n stmt.end as number,\n replacement,\n );\n return pruneUnusedTopLevel(compiled, refs);\n}\n","import { resolve } from \"node:path\";\nimport { rm, mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\nimport type { CliConfig } from \"../types\";\nimport { BuildError } from \"../errors\";\nimport { scan } from \"./scanner\";\nimport { discoverAll } from \"./parser\";\nimport { resolveAll } from \"./resolver\";\nimport { validate } from \"./validator\";\nimport { validateManifest } from \"./manifest-validator\";\nimport { splitEntities } from \"./splitter\";\nimport { bundleAll } from \"./bundler\";\nimport { generateManifest, type Manifest } from \"./manifest\";\nimport { generateCatalog, type Catalog } from \"./catalog\";\nimport { stableStringify } from \"./stable-json\";\nimport {\n compileBehaviorSource,\n compileConversationSource,\n} from \"./compiled-target\";\n\nexport interface BuildResult {\n manifest: Manifest;\n catalog: Catalog;\n outDir: string;\n}\n\nexport async function buildPipeline(\n config: CliConfig,\n cwd: string = process.cwd(),\n minify: boolean = false,\n buildDir: string = \".io\",\n): Promise<BuildResult> {\n const dir = resolve(cwd, config.dir);\n const outDir = resolve(cwd, buildDir);\n\n await rm(outDir, { recursive: true, force: true });\n await mkdir(outDir, { recursive: true });\n\n const files = await scan(dir);\n const fileResults = await discoverAll(files);\n const resolved = resolveAll(fileResults);\n validate(resolved);\n\n const allBehaviorSources = new Map<string, { source: string; sourceDir: string }>();\n const allConversationSources = new Map<string, { source: string; sourceDir: string }>();\n\n for (const file of resolved.files) {\n const sourceDir = dirname(file.file);\n\n if (file.behaviors.length > 0) {\n const splits = splitEntities(file.source, file.behaviors);\n for (const behavior of file.behaviors) {\n const source = splits.get(behavior.name);\n if (!source) {\n continue;\n }\n allBehaviorSources.set(behavior.name, {\n source: compileBehaviorSource(source, behavior),\n sourceDir,\n });\n }\n }\n\n if (file.conversations.length > 0) {\n const splits = splitEntities(file.source, file.conversations);\n for (const conversation of file.conversations) {\n const source = splits.get(conversation.name);\n if (!source) {\n continue;\n }\n allConversationSources.set(conversation.name, {\n source: compileConversationSource(source, conversation),\n sourceDir,\n });\n }\n }\n }\n\n const [behaviorBundles, conversationBundles] = await Promise.all([\n bundleAll(allBehaviorSources, outDir, \"behaviors\", minify),\n bundleAll(allConversationSources, outDir, \"conversations\", minify),\n ]);\n\n const manifest = await generateManifest({\n cwd,\n userFiles: files,\n outDir,\n behaviorBundles,\n conversationBundles,\n });\n validateManifest(manifest);\n\n const { catalog, warnings } = generateCatalog(manifest);\n if (warnings.length > 0) {\n throw new BuildError(\n `Catalog generation produced ${warnings.length} unrecoverable issue${warnings.length === 1 ? \"\" : \"s\"} — refusing to ship a partial catalog:\\n${warnings\n .map((w) => ` - ${w}`)\n .join(\"\\n\")}`,\n );\n }\n await writeFile(join(outDir, \"catalog.json\"), stableStringify(catalog, 2), \"utf-8\");\n\n return { manifest, catalog, outDir };\n}\n","import { mkdtemp, rm } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { tmpdir } from \"node:os\";\n\nexport async function createStagingDir(): Promise<string> {\n return mkdtemp(join(tmpdir(), \"io-cli-\"));\n}\n\nexport async function cleanupStagingDir(path?: string): Promise<void> {\n if (!path) {\n return;\n }\n\n await rm(path, { recursive: true, force: true }).catch(() => {});\n}\n","import chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { buildPipeline } from \"../build/pipeline\";\nimport { cleanupStagingDir, createStagingDir } from \"../build/staging\";\nimport { CliError } from \"../errors\";\n\ninterface BuildOptions {\n dir?: string;\n minify?: boolean;\n}\n\nexport async function buildCommand(options: BuildOptions): Promise<void> {\n let stagingDir: string | undefined;\n\n try {\n const config = await loadConfig({\n dir: options.dir,\n });\n\n console.log(chalk.gray(\"Validating deployment...\"));\n\n stagingDir = await createStagingDir();\n\n const { manifest } = await buildPipeline(\n config,\n process.cwd(),\n options.minify,\n stagingDir,\n );\n\n const apps = (manifest.apps as unknown[] | undefined) ?? [];\n const resources = apps.flatMap((app) => {\n if (!app || typeof app !== \"object\") return [];\n const appResources = (app as { resources?: unknown }).resources;\n return Array.isArray(appResources) ? appResources : [];\n });\n const tools = resources.flatMap((resource) => {\n if (!resource || typeof resource !== \"object\") return [];\n const resourceTools = (resource as { tools?: unknown }).tools;\n return Array.isArray(resourceTools) ? resourceTools : [];\n });\n const targets = (manifest.targets as unknown[] | undefined) ?? [];\n const subscriptions = (manifest.subscriptions as unknown[] | undefined) ?? [];\n const secretBundles = (manifest.secret_bundles as unknown[] | undefined) ?? [];\n\n const parts = [\n `${apps.length} app${apps.length === 1 ? \"\" : \"s\"}`,\n `${resources.length} resource${resources.length === 1 ? \"\" : \"s\"}`,\n `${tools.length} tool capabilit${tools.length === 1 ? \"y\" : \"ies\"}`,\n `${targets.length} target${targets.length === 1 ? \"\" : \"s\"}`,\n `${subscriptions.length} subscription${subscriptions.length === 1 ? \"\" : \"s\"}`,\n `${secretBundles.length} secret bundle${secretBundles.length === 1 ? \"\" : \"s\"}`,\n ];\n\n console.log(chalk.green(`\\u2713 Build succeeded (${parts.join(\", \")})`));\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n } finally {\n await cleanupStagingDir(stagingDir);\n }\n}\n","import { createWriteStream } from \"node:fs\";\nimport { readdir, stat } from \"node:fs/promises\";\nimport { join, relative, resolve } from \"node:path\";\nimport archiver from \"archiver\";\n\nexport async function zipBuildOutput(\n buildDir: string,\n outPath: string,\n): Promise<{ path: string; size: number }> {\n const output = createWriteStream(outPath);\n const archive = archiver(\"zip\", { zlib: { level: 9 } });\n\n const done = new Promise<void>((resolve, reject) => {\n output.on(\"close\", resolve);\n archive.on(\"error\", reject);\n });\n\n archive.pipe(output);\n\n const skipRelativePath = relative(resolve(buildDir), resolve(outPath));\n await addDirectory(archive, buildDir, \"\", skipRelativePath);\n\n await archive.finalize();\n await done;\n\n const info = await stat(outPath);\n return { path: outPath, size: info.size };\n}\n\nasync function addDirectory(\n archive: archiver.Archiver,\n baseDir: string,\n prefix: string,\n skipRelativePath?: string,\n): Promise<void> {\n const entries = await readdir(join(baseDir, prefix), {\n withFileTypes: true,\n });\n\n for (const entry of entries) {\n const entryPath = prefix ? `${prefix}/${entry.name}` : entry.name;\n\n if (skipRelativePath && entryPath === skipRelativePath) {\n continue;\n }\n\n if (entry.isDirectory()) {\n await addDirectory(archive, baseDir, entryPath, skipRelativePath);\n } else {\n archive.file(join(baseDir, entryPath), { name: entryPath });\n }\n }\n}\n","import type { Manifest } from \"../types\";\n\nexport type ChangeKind = \"added\" | \"changed\" | \"removed\";\n\nexport interface DiffEntry {\n name: string;\n kind: ChangeKind;\n}\n\nexport interface ManifestDiff {\n apps: DiffEntry[];\n resources: DiffEntry[];\n tools: DiffEntry[];\n capabilities: DiffEntry[];\n secret_bundles: DiffEntry[];\n targets: DiffEntry[];\n subscriptions: DiffEntry[];\n hasChanges: boolean;\n}\n\ninterface NamedEntry {\n readonly name?: unknown;\n}\n\ninterface IndexedEntry {\n readonly name: string;\n readonly value: unknown;\n}\n\nfunction stableStringify(value: unknown): string {\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(\",\")}]`;\n }\n if (value && typeof value === \"object\") {\n const record = value as Record<string, unknown>;\n return `{${Object.keys(record)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`)\n .join(\",\")}}`;\n }\n return JSON.stringify(value);\n}\n\nfunction namedEntries(field: unknown): IndexedEntry[] {\n if (!Array.isArray(field)) {\n return [];\n }\n const entries: IndexedEntry[] = [];\n for (const entry of field) {\n if (entry && typeof entry === \"object\" && \"name\" in entry) {\n const candidate = (entry as NamedEntry).name;\n if (typeof candidate === \"string\" && candidate.length > 0) {\n entries.push({ name: candidate, value: entry });\n }\n }\n }\n return entries;\n}\n\nfunction diffEntries(local: IndexedEntry[], remote: IndexedEntry[]): DiffEntry[] {\n const remoteMap = new Map(remote.map((entry) => [entry.name, entry.value]));\n const localMap = new Map(local.map((entry) => [entry.name, entry.value]));\n const entries: DiffEntry[] = [];\n for (const { name, value } of local) {\n if (!remoteMap.has(name)) {\n entries.push({ name, kind: \"added\" });\n } else if (stableStringify(value) !== stableStringify(remoteMap.get(name))) {\n entries.push({ name, kind: \"changed\" });\n }\n }\n for (const { name } of remote) {\n if (!localMap.has(name)) entries.push({ name, kind: \"removed\" });\n }\n return entries;\n}\n\nfunction appEntries(manifest: Manifest): IndexedEntry[] {\n return namedEntries(manifest.apps).map((app) => {\n const appRecord = app.value as Record<string, unknown>;\n return {\n name: app.name,\n value: Object.fromEntries(\n Object.entries(appRecord).filter(([key]) => key !== \"resources\"),\n ),\n };\n });\n}\n\nfunction appResources(manifest: Manifest): IndexedEntry[] {\n const apps = namedEntries(manifest.apps);\n const entries: IndexedEntry[] = [];\n for (const app of apps) {\n const appRecord = app.value as Record<string, unknown>;\n for (const resource of namedEntries(appRecord.resources)) {\n const resourceRecord = resource.value as Record<string, unknown>;\n const resourceValue = Object.fromEntries(\n Object.entries(resourceRecord).filter(([key]) => key !== \"tools\"),\n );\n entries.push({\n name: `${app.name}/${resource.name}`,\n value: resourceValue,\n });\n }\n }\n return entries;\n}\n\nfunction resourceTools(manifest: Manifest): IndexedEntry[] {\n const apps = namedEntries(manifest.apps);\n const entries: IndexedEntry[] = [];\n for (const app of apps) {\n const appRecord = app.value as Record<string, unknown>;\n for (const resource of namedEntries(appRecord.resources)) {\n const resourceRecord = resource.value as Record<string, unknown>;\n for (const tool of namedEntries(resourceRecord.tools)) {\n entries.push({\n name: `${app.name}/${resource.name}/${tool.name}`,\n value: tool.value,\n });\n }\n }\n }\n return entries;\n}\n\nfunction capabilityEntries(manifest: Manifest): IndexedEntry[] {\n const apps = namedEntries(manifest.apps);\n const entries: IndexedEntry[] = [];\n for (const app of apps) {\n const appRecord = app.value as Record<string, unknown>;\n for (const resource of namedEntries(appRecord.resources)) {\n const resourceRecord = resource.value as Record<string, unknown>;\n if (resourceRecord.capability) {\n entries.push({\n name: `resource:${app.name}/${resource.name}`,\n value: resourceRecord.capability,\n });\n }\n for (const tool of namedEntries(resourceRecord.tools)) {\n const toolRecord = tool.value as Record<string, unknown>;\n if (toolRecord.capability) {\n entries.push({\n name: `tool:${app.name}/${resource.name}/${tool.name}`,\n value: toolRecord.capability,\n });\n }\n }\n }\n }\n return entries;\n}\n\nexport function diffManifests(local: Manifest, remote: Manifest): ManifestDiff {\n const apps = diffEntries(appEntries(local), appEntries(remote));\n const resources = diffEntries(appResources(local), appResources(remote));\n const tools = diffEntries(resourceTools(local), resourceTools(remote));\n const capabilities = diffEntries(\n capabilityEntries(local),\n capabilityEntries(remote),\n );\n const secret_bundles = diffEntries(\n namedEntries(local.secret_bundles),\n namedEntries(remote.secret_bundles),\n );\n const targets = diffEntries(\n namedEntries(local.targets),\n namedEntries(remote.targets),\n );\n const subscriptions = diffEntries(\n namedEntries(local.subscriptions),\n namedEntries(remote.subscriptions),\n );\n\n const hasChanges =\n apps.length > 0 ||\n resources.length > 0 ||\n tools.length > 0 ||\n capabilities.length > 0 ||\n secret_bundles.length > 0 ||\n targets.length > 0 ||\n subscriptions.length > 0;\n\n return {\n apps,\n resources,\n tools,\n capabilities,\n secret_bundles,\n targets,\n subscriptions,\n hasChanges,\n };\n}\n","import type { Catalog } from \"../build/catalog\";\n\nexport type CatalogChangeKind = \"added\" | \"changed\" | \"removed\";\n\nexport interface CatalogDiffEntry {\n readonly id: string;\n readonly kind: CatalogChangeKind;\n}\n\nexport interface CatalogDiff {\n readonly hashChanged: boolean;\n readonly resources: readonly CatalogDiffEntry[];\n readonly signals: readonly CatalogDiffEntry[];\n readonly tools: readonly CatalogDiffEntry[];\n readonly schemas: { readonly added: number; readonly removed: number };\n readonly hasChanges: boolean;\n}\n\ntype SectionMap = { readonly [id: string]: unknown };\n\nfunction stableStringify(value: unknown): string {\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(\",\")}]`;\n }\n if (value && typeof value === \"object\") {\n const record = value as Record<string, unknown>;\n return `{${Object.keys(record)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`)\n .join(\",\")}}`;\n }\n return JSON.stringify(value);\n}\n\nfunction diffSection(\n local: SectionMap | undefined,\n remote: SectionMap | undefined,\n): CatalogDiffEntry[] {\n const localMap = local ?? {};\n const remoteMap = remote ?? {};\n const entries: CatalogDiffEntry[] = [];\n const seen = new Set<string>();\n for (const id of Object.keys(localMap).sort()) {\n seen.add(id);\n if (!(id in remoteMap)) {\n entries.push({ id, kind: \"added\" });\n } else if (stableStringify(localMap[id]) !== stableStringify(remoteMap[id])) {\n entries.push({ id, kind: \"changed\" });\n }\n }\n for (const id of Object.keys(remoteMap).sort()) {\n if (!seen.has(id) && !(id in localMap)) {\n entries.push({ id, kind: \"removed\" });\n }\n }\n return entries;\n}\n\nfunction schemaDiffCounts(\n local: SectionMap | undefined,\n remote: SectionMap | undefined,\n): { added: number; removed: number } {\n const localKeys = new Set(Object.keys(local ?? {}));\n const remoteKeys = new Set(Object.keys(remote ?? {}));\n let added = 0;\n let removed = 0;\n for (const k of localKeys) {\n if (!remoteKeys.has(k)) added++;\n }\n for (const k of remoteKeys) {\n if (!localKeys.has(k)) removed++;\n }\n return { added, removed };\n}\n\nexport function diffCatalogs(\n local: Catalog | null,\n remote: Catalog | null,\n): CatalogDiff {\n const localResources = (local?.resources ?? {}) as SectionMap;\n const remoteResources = (remote?.resources ?? {}) as SectionMap;\n const localSignals = (local?.signals ?? {}) as SectionMap;\n const remoteSignals = (remote?.signals ?? {}) as SectionMap;\n const localTools = (local?.tools ?? {}) as SectionMap;\n const remoteTools = (remote?.tools ?? {}) as SectionMap;\n const localSchemas = (local?.schemas ?? {}) as SectionMap;\n const remoteSchemas = (remote?.schemas ?? {}) as SectionMap;\n\n const resources = diffSection(localResources, remoteResources);\n const signals = diffSection(localSignals, remoteSignals);\n const tools = diffSection(localTools, remoteTools);\n const schemas = schemaDiffCounts(localSchemas, remoteSchemas);\n\n const localHash = local?.catalog_hash ?? null;\n const remoteHash = remote?.catalog_hash ?? null;\n const hashChanged = (localHash ?? remoteHash) !== null && localHash !== remoteHash;\n\n const hasChanges =\n resources.length > 0 ||\n signals.length > 0 ||\n tools.length > 0 ||\n schemas.added > 0 ||\n schemas.removed > 0 ||\n hashChanged;\n\n return {\n hashChanged,\n resources,\n signals,\n tools,\n schemas,\n hasChanges,\n };\n}\n","import chalk from \"chalk\";\nimport { createInterface } from \"node:readline\";\nimport type { ManifestDiff, DiffEntry } from \"./diff\";\nimport type { CatalogDiff, CatalogDiffEntry } from \"./catalog-diff\";\n\nconst SYMBOLS: Record<string, string> = {\n added: chalk.green(\"+ \"),\n changed: chalk.yellow(\"~ \"),\n removed: chalk.red(\"- \"),\n};\n\nconst LABELS: Record<string, string> = {\n added: \"new\",\n changed: \"changed\",\n removed: \"removed\",\n};\n\nconst SECTIONS = [\n { key: \"apps\" as const, label: \"Apps\" },\n { key: \"resources\" as const, label: \"Resources\" },\n { key: \"tools\" as const, label: \"Tools\" },\n { key: \"capabilities\" as const, label: \"Tool access\" },\n { key: \"secret_bundles\" as const, label: \"Secret bundles\" },\n { key: \"targets\" as const, label: \"Targets\" },\n { key: \"subscriptions\" as const, label: \"Subscriptions\" },\n];\n\nconst CATALOG_SECTIONS = [\n { key: \"resources\" as const, label: \"Catalog resources\" },\n { key: \"signals\" as const, label: \"Catalog signals\" },\n { key: \"tools\" as const, label: \"Catalog tools\" },\n];\n\nexport function formatPlan(\n diff: ManifestDiff,\n catalogDiff?: CatalogDiff,\n): string {\n const lines: string[] = [];\n\n for (const { key, label } of SECTIONS) {\n const entries: DiffEntry[] = diff[key];\n lines.push(` ${label}:`);\n if (entries.length === 0) {\n lines.push(chalk.gray(\" (no changes)\"));\n } else {\n for (const e of entries) {\n lines.push(\n ` ${SYMBOLS[e.kind]}${e.name} ${chalk.gray(`(${LABELS[e.kind]})`)}`,\n );\n }\n }\n }\n\n if (catalogDiff) {\n lines.push(\"\");\n lines.push(\n chalk.bold(\n catalogDiff.hashChanged\n ? \" Catalog (hash changed):\"\n : \" Catalog:\",\n ),\n );\n for (const { key, label } of CATALOG_SECTIONS) {\n const entries: readonly CatalogDiffEntry[] = catalogDiff[key];\n lines.push(` ${label}:`);\n if (entries.length === 0) {\n lines.push(chalk.gray(\" (no changes)\"));\n } else {\n for (const e of entries) {\n lines.push(\n ` ${SYMBOLS[e.kind]}${e.id} ${chalk.gray(`(${LABELS[e.kind]})`)}`,\n );\n }\n }\n }\n const schemaLine = catalogDiff.schemas;\n if (schemaLine.added > 0 || schemaLine.removed > 0) {\n lines.push(\n ` ${chalk.gray(\"Schemas:\")} ${chalk.green(`+${schemaLine.added}`)} ${chalk.red(`-${schemaLine.removed}`)}`,\n );\n } else {\n lines.push(` ${chalk.gray(\"Schemas: (no changes)\")}`);\n }\n }\n\n return lines.join(\"\\n\");\n}\n\nexport async function confirmPlan(skip: boolean): Promise<boolean> {\n if (skip) return true;\n\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(\"\\nApply these changes? (y/n) \", (answer) => {\n rl.close();\n resolve(answer.trim().toLowerCase() === \"y\");\n });\n });\n}\n","import { readFile, writeFile, rm, mkdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\n\nexport interface Credentials {\n token: string;\n refreshToken?: string;\n expiresAt?: number;\n userId?: string;\n organizationId?: string;\n apiKey?: boolean;\n}\n\nfunction credentialsDir(): string {\n return join(homedir(), \".io\");\n}\n\nfunction credentialsFile(): string {\n return join(credentialsDir(), \"credentials.json\");\n}\n\nexport async function saveCredentials(creds: {\n token: string;\n refreshToken?: string;\n expiresIn?: number;\n expiresAt?: number;\n userId?: string;\n organizationId?: string;\n apiKey?: boolean;\n}): Promise<void> {\n const dir = credentialsDir();\n await mkdir(dir, { recursive: true });\n const data: Credentials = {\n token: creds.token,\n refreshToken: creds.refreshToken,\n expiresAt:\n creds.expiresIn !== undefined\n ? Date.now() + creds.expiresIn * 1000\n : creds.expiresAt,\n userId: creds.userId,\n organizationId: creds.organizationId,\n apiKey: creds.apiKey,\n };\n await writeFile(credentialsFile(), JSON.stringify(data, null, 2), \"utf-8\");\n}\n\nexport async function loadCredentials(): Promise<Credentials | null> {\n try {\n const raw = await readFile(credentialsFile(), \"utf-8\");\n const data = JSON.parse(raw) as Credentials;\n return data.token ? data : null;\n } catch {\n return null;\n }\n}\n\nexport function isExpired(creds: Credentials): boolean {\n if (!creds.expiresAt) return false;\n return Date.now() >= creds.expiresAt - 30_000;\n}\n\nexport async function saveToken(token: string, apiKey = false): Promise<void> {\n await saveCredentials({ token, apiKey });\n}\n\nexport async function loadToken(): Promise<string | null> {\n const creds = await loadCredentials();\n return creds?.token ?? null;\n}\n\nexport async function clearToken(): Promise<void> {\n try {\n await rm(credentialsFile());\n } catch {\n }\n}\n","const LOGIN_AGAIN = \"Session refresh failed. Run `io login` again.\";\n\nexport function refreshSessionErrorMessage(reason?: string): string {\n const normalized = reason?.trim();\n\n if (!normalized || normalized.toLowerCase() === \"unknown\") {\n return LOGIN_AGAIN;\n }\n\n return `${LOGIN_AGAIN} (${normalized})`;\n}\n","import type { Credentials } from \"./store\";\n\ntype AuthCredentials = Pick<Credentials, \"token\" | \"apiKey\">;\n\nexport function authHeaders(creds: AuthCredentials): Record<string, string> {\n if (creds.apiKey) {\n return { \"X-API-Key\": creds.token };\n }\n\n return { Authorization: `Bearer ${creds.token}` };\n}\n\nexport function socketAuthParams(\n creds: AuthCredentials,\n): Record<string, string> {\n if (creds.apiKey) {\n return { apiKey: creds.token };\n }\n\n return { authorization: `Bearer ${creds.token}` };\n}\n","import { readFile, stat } from \"node:fs/promises\";\nimport { basename } from \"node:path\";\nimport {\n loadCredentials,\n saveCredentials,\n isExpired,\n type Credentials,\n} from \"../auth/store\";\nimport { refreshSessionErrorMessage } from \"../auth/refresh-error\";\nimport { authHeaders } from \"../auth/transport\";\nimport { ApiError, ConfigError } from \"../errors\";\nimport { stableStringify } from \"../build/stable-json\";\nimport type { Catalog } from \"../build/catalog\";\nimport type { Manifest } from \"../types\";\nimport { normalizeRuntimeSignalName } from \"../build/channels\";\n\nexport type ApiClient = ReturnType<typeof createClient>;\n\ninterface ClientConfig {\n apiUrl: string;\n projectId: string;\n}\n\ninterface GraphQLErrorShape {\n message?: string;\n}\n\ninterface GraphQLResponse<T> {\n data?: T;\n errors?: unknown;\n}\n\nexport interface AuthSessionPayload {\n accessToken?: string;\n activeOrgId?: string;\n email: string;\n expiresIn?: number;\n name?: string;\n organizationId?: string;\n organizationIds: string[];\n refreshToken?: string;\n roles: string[];\n sessionId?: string;\n tokenType?: string;\n userId: string;\n}\n\nexport interface OrganizationSummary {\n id: string;\n name: string;\n slug: string;\n}\n\nexport interface ProjectSummary {\n description?: string | null;\n id: string;\n name: string;\n organizationId: string;\n slug: string;\n}\n\nexport interface PrincipalSummary {\n id: string;\n externalId: string;\n state: \"active\" | \"inactive\" | \"archived\";\n metadata: Record<string, unknown>;\n projectId: string;\n insertedAt?: string | null;\n updatedAt?: string | null;\n}\n\nexport interface SecretSummary {\n name: string;\n projectId: string;\n hasValue: boolean;\n insertedAt: string;\n updatedAt: string;\n}\n\nexport interface DeploymentRevision {\n id: string;\n projectId: string;\n revision: number;\n bundleHash: string;\n status: string;\n activatedAt: string | null;\n insertedAt: string;\n updatedAt: string;\n}\n\nexport interface RuntimeEvent {\n id: string;\n projectId: string;\n principalId?: string | null;\n kind: string;\n name: string;\n sourceName?: string | null;\n correlationId?: string | null;\n causationId?: string | null;\n dispatchStatus?: string | null;\n occurredAt?: string | null;\n insertedAt?: string | null;\n}\n\nexport interface EmitSignalInput {\n projectId?: string;\n principalId: string;\n signal: string;\n payload?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n causationId?: string;\n idempotencyKey?: string;\n sourceName?: string;\n}\n\nexport interface BundleArtifactUpload {\n bundleHash: string;\n sizeBytes: number;\n entryCount: number;\n}\n\nexport interface QuotaStatus {\n meter: string;\n used: number;\n limit: number;\n remaining: number;\n percentageUsed: number;\n enforcement: string;\n}\n\nexport interface ActivityEvent {\n id: string;\n eventType: string;\n targetKind?: string | null;\n targetName?: string | null;\n principalId?: string | null;\n level?: string | null;\n message?: string | null;\n payload?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n displayCategory?: string | null;\n displayStatus?: string | null;\n displayName?: string | null;\n displayDetail?: string | null;\n occurredAt: string;\n durationMs?: number | null;\n}\n\nexport interface ActivityEventFilterInput {\n eventTypes?: string[];\n level?: string;\n limit?: number;\n principalId?: string;\n since?: string;\n targetKind?: string;\n targetName?: string;\n until?: string;\n}\n\ninterface RestEnvelope<T> {\n data?: T;\n error?: string;\n}\n\ninterface AuthSessionPayloadWire {\n accessToken?: string;\n access_token?: string;\n activeOrgId?: string;\n active_org_id?: string;\n email?: string;\n expiresIn?: number | string;\n expires_in?: number | string;\n name?: string;\n organizationId?: string;\n organization_id?: string;\n organizationIds?: string[];\n organization_ids?: string[];\n refreshToken?: string;\n refresh_token?: string;\n roles?: string[];\n sessionId?: string;\n session_id?: string;\n tokenType?: string;\n token_type?: string;\n userId?: string;\n user_id?: string;\n}\n\nconst REFRESH_MUTATION = `\n mutation Refresh($input: RefreshAuthInput!) {\n refresh(input: $input) {\n accessToken\n activeOrgId\n email\n expiresIn\n name\n organizationId\n organizationIds\n refreshToken\n roles\n sessionId\n tokenType\n userId\n }\n }\n`;\n\nconst ME_QUERY = `\n query Me {\n me {\n id\n email\n name\n activeOrganizationId\n }\n }\n`;\n\nfunction parseExpiresIn(value: unknown): number | undefined {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n if (typeof value === \"string\") {\n const parsed = Number.parseInt(value, 10);\n if (Number.isFinite(parsed)) {\n return parsed;\n }\n }\n return undefined;\n}\n\nfunction normalizeAuthSessionPayload(payload: AuthSessionPayloadWire): AuthSessionPayload {\n return {\n accessToken: payload.accessToken ?? payload.access_token,\n activeOrgId: payload.activeOrgId ?? payload.active_org_id,\n email: payload.email ?? \"\",\n expiresIn: parseExpiresIn(payload.expiresIn ?? payload.expires_in),\n name: payload.name,\n organizationId: payload.organizationId ?? payload.organization_id,\n organizationIds: payload.organizationIds ?? payload.organization_ids ?? [],\n refreshToken: payload.refreshToken ?? payload.refresh_token,\n roles: payload.roles ?? [],\n sessionId: payload.sessionId ?? payload.session_id,\n tokenType: payload.tokenType ?? payload.token_type,\n userId: payload.userId ?? payload.user_id ?? \"\",\n };\n}\n\nfunction trimBaseUrl(apiUrl: string): string {\n return apiUrl.replace(/\\/+$/, \"\");\n}\n\nfunction requireApiUrl(config: ClientConfig): string {\n if (!config.apiUrl) {\n throw new ConfigError(\n \"No apiUrl configured. Set it in io.config.json or IO_API_URL env var.\",\n );\n }\n return config.apiUrl;\n}\n\nfunction requireProjectId(config: ClientConfig): string {\n if (!config.projectId) {\n throw new ConfigError(\n \"No projectId configured. Set it in io.config.json or IO_PROJECT_ID env var.\",\n );\n }\n return config.projectId;\n}\n\nfunction apiErrorFromGraphQL(\n statusCode: number,\n payload?: GraphQLResponse<unknown>,\n): ApiError {\n const message = graphqlErrorMessage(payload?.errors) || `Request failed (${statusCode})`;\n\n return new ApiError(message, statusCode);\n}\n\nfunction graphqlErrorMessage(errors: unknown): string | null {\n if (Array.isArray(errors)) {\n const message = errors\n .map((error) => {\n if (error && typeof error === \"object\" && \"message\" in error) {\n const value = (error as GraphQLErrorShape).message;\n return typeof value === \"string\" ? value : null;\n }\n\n return typeof error === \"string\" ? error : null;\n })\n .filter((message): message is string => Boolean(message))\n .join(\"; \");\n\n return message || null;\n }\n\n if (typeof errors === \"string\" && errors.trim() !== \"\") {\n return errors;\n }\n\n if (errors && typeof errors === \"object\" && \"message\" in errors) {\n const value = (errors as GraphQLErrorShape).message;\n return typeof value === \"string\" && value.trim() !== \"\" ? value : null;\n }\n\n return null;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isCatalogShape(value: unknown): value is Catalog {\n if (!isPlainObject(value)) return false;\n return (\n value.contract_version === \"io.catalog.v1\" &&\n value.snapshot_version === \"io_runtime.snapshot.v2\" &&\n typeof value.catalog_hash === \"string\" &&\n isPlainObject(value.resources) &&\n isPlainObject(value.signals) &&\n isPlainObject(value.tools) &&\n isPlainObject(value.schemas)\n );\n}\n\nfunction isManifestShape(value: unknown): value is Manifest {\n if (!isPlainObject(value)) return false;\n return (\n value.contract_version === \"io.invocation.v2\" &&\n value.snapshot_version === \"io_runtime.snapshot.v2\" &&\n Array.isArray(value.secret_bundles) &&\n Array.isArray(value.apps) &&\n Array.isArray(value.endpoints) &&\n Array.isArray(value.targets) &&\n Array.isArray(value.subscriptions)\n );\n}\n\nfunction parseRemoteCatalog(catalogJson: string): Catalog {\n let parsed: unknown;\n try {\n parsed = JSON.parse(catalogJson);\n } catch (err: unknown) {\n throw new ConfigError(\n `Remote deployment catalog was not valid JSON: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n if (!isCatalogShape(parsed)) {\n throw new ConfigError(\n \"Remote deployment catalog does not match the io.catalog.v1 catalog shape.\",\n );\n }\n return parsed;\n}\n\nfunction parseRemoteManifest(snapshotJson: string): Manifest {\n let parsed: unknown;\n try {\n parsed = JSON.parse(snapshotJson);\n } catch (err: unknown) {\n throw new ConfigError(\n `Remote deployment snapshot was not valid JSON: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n if (!isManifestShape(parsed)) {\n throw new ConfigError(\n \"Remote deployment snapshot does not match the io_runtime.snapshot.v2 manifest shape.\",\n );\n }\n return parsed;\n}\n\nconst EMPTY_MANIFEST: Manifest = {\n contract_version: \"io.invocation.v2\",\n snapshot_version: \"io_runtime.snapshot.v2\",\n secret_bundles: [],\n apps: [],\n endpoints: [],\n targets: [],\n subscriptions: [],\n};\n\nasync function executeGraphQLUnauth<T>(\n apiUrl: string,\n query: string,\n variables?: Record<string, unknown>,\n headers: Record<string, string> = {},\n): Promise<T> {\n const response = await fetch(`${trimBaseUrl(apiUrl)}/graphql`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n body: JSON.stringify({ query, variables }),\n });\n\n const payload = (await response.json()) as GraphQLResponse<T>;\n\n if (!response.ok || graphqlErrorMessage(payload.errors)) {\n throw apiErrorFromGraphQL(response.status, payload);\n }\n\n if (payload.data === undefined) {\n throw new ApiError(\"GraphQL response did not include data.\", response.status);\n }\n\n return payload.data;\n}\n\ninterface PrincipalInputWire {\n readonly externalId?: string;\n readonly state?: \"ACTIVE\" | \"INACTIVE\" | \"ARCHIVED\";\n readonly metadata?: Record<string, unknown>;\n}\n\nfunction serializePrincipalInput(input: {\n externalId?: string;\n state?: \"active\" | \"inactive\" | \"archived\";\n metadata?: Record<string, unknown>;\n}): PrincipalInputWire {\n return {\n ...(input.externalId !== undefined ? { externalId: input.externalId } : {}),\n ...(input.state !== undefined\n ? {\n state: input.state.toUpperCase() as \"ACTIVE\" | \"INACTIVE\" | \"ARCHIVED\",\n }\n : {}),\n ...(input.metadata !== undefined ? { metadata: input.metadata } : {}),\n };\n}\n\nasync function refreshAndSave(\n apiUrl: string,\n refreshToken: string,\n): Promise<Credentials> {\n let data: { refresh: AuthSessionPayload };\n\n try {\n data = await executeGraphQLUnauth<{ refresh: AuthSessionPayload }>(\n apiUrl,\n REFRESH_MUTATION,\n { input: { refreshToken } },\n );\n } catch (err: unknown) {\n const reason = err instanceof Error ? err.message : undefined;\n throw new ConfigError(refreshSessionErrorMessage(reason));\n }\n\n const issued = data.refresh;\n const accessToken = issued.accessToken ?? \"\";\n const expiresIn = parseExpiresIn(issued.expiresIn);\n\n if (!accessToken) {\n throw new ConfigError(refreshSessionErrorMessage());\n }\n\n const organizationId = issued.organizationId ?? issued.activeOrgId;\n\n const newCreds: Credentials = {\n token: accessToken,\n refreshToken: issued.refreshToken ?? refreshToken,\n userId: issued.userId,\n organizationId,\n expiresAt: expiresIn ? Date.now() + expiresIn * 1000 : undefined,\n };\n\n await saveCredentials({\n token: newCreds.token,\n refreshToken: newCreds.refreshToken,\n userId: newCreds.userId,\n organizationId: newCreds.organizationId,\n expiresIn,\n });\n\n return newCreds;\n}\n\nasync function getCredentials(apiUrl: string): Promise<Credentials> {\n const creds = await loadCredentials();\n if (!creds) {\n throw new ConfigError(\"Not authenticated. Run `io login` first.\");\n }\n\n if (!creds.apiKey && isExpired(creds) && creds.refreshToken) {\n return refreshAndSave(apiUrl, creds.refreshToken);\n }\n\n return creds;\n}\n\nasync function executeGraphQL<T>(\n apiUrl: string,\n query: string,\n variables?: Record<string, unknown>,\n): Promise<T> {\n const creds = await getCredentials(apiUrl);\n\n try {\n return await executeGraphQLUnauth<T>(apiUrl, query, variables, authHeaders(creds));\n } catch (err: unknown) {\n if (\n err instanceof ApiError &&\n err.statusCode == 401 &&\n !creds.apiKey &&\n creds.refreshToken\n ) {\n const refreshed = await refreshAndSave(apiUrl, creds.refreshToken);\n return executeGraphQLUnauth<T>(apiUrl, query, variables, authHeaders(refreshed));\n }\n\n throw err;\n }\n}\n\nasync function uploadBundleUnauth(\n apiUrl: string,\n projectId: string,\n bundle: Buffer,\n filename: string,\n authHeaders: Record<string, string>,\n): Promise<BundleArtifactUpload> {\n const form = new FormData();\n form.append(\"project_id\", projectId);\n form.append(\"bundle\", new Blob([new Uint8Array(bundle)]), filename);\n\n const response = await fetch(`${trimBaseUrl(apiUrl)}/api/v1/bundles`, {\n method: \"POST\",\n headers: { ...authHeaders },\n body: form,\n });\n\n const text = await response.text();\n let payload: { data?: BundleArtifactUploadWire; error?: string } = {};\n try {\n payload = text ? JSON.parse(text) : {};\n } catch {\n throw new ApiError(`bundle upload returned non-JSON: ${text || \"(empty)\"}`, response.status);\n }\n\n if (!response.ok || payload.error) {\n throw new ApiError(payload.error ?? `bundle upload failed (${response.status})`, response.status);\n }\n\n if (!payload.data) {\n throw new ApiError(\"bundle upload returned no data\", response.status);\n }\n\n return {\n bundleHash: payload.data.bundle_hash,\n sizeBytes: payload.data.size_bytes,\n entryCount: payload.data.entry_count,\n };\n}\n\ninterface BundleArtifactUploadWire {\n bundle_hash: string;\n size_bytes: number;\n entry_count: number;\n}\n\nasync function uploadBundleArtifact(\n apiUrl: string,\n projectId: string,\n bundle: Buffer,\n filename: string,\n): Promise<BundleArtifactUpload> {\n const creds = await getCredentials(apiUrl);\n\n try {\n return await uploadBundleUnauth(apiUrl, projectId, bundle, filename, authHeaders(creds));\n } catch (err: unknown) {\n if (\n err instanceof ApiError &&\n err.statusCode === 401 &&\n !creds.apiKey &&\n creds.refreshToken\n ) {\n const refreshed = await refreshAndSave(apiUrl, creds.refreshToken);\n return uploadBundleUnauth(apiUrl, projectId, bundle, filename, authHeaders(refreshed));\n }\n\n throw err;\n }\n}\n\n\nfunction slugify(name: string): string {\n const slug = name\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n\n return slug || \"project\";\n}\n\nexport function buildCliBrowserLoginUrl(\n apiUrl: string,\n callbackUrl: string,\n state: string,\n codeChallenge: string,\n): string {\n const query = new URLSearchParams({\n callback_url: callbackUrl,\n state,\n code_challenge: codeChallenge,\n });\n\n return `${trimBaseUrl(apiUrl)}/api/v1/auth/cli?${query.toString()}`;\n}\n\nexport async function exchangeCliCode(\n apiUrl: string,\n code: string,\n state: string,\n codeVerifier: string,\n): Promise<AuthSessionPayload> {\n const response = await fetch(`${trimBaseUrl(apiUrl)}/api/v1/auth/cli/exchange`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code, state, code_verifier: codeVerifier }),\n });\n\n const payload = (await response.json()) as RestEnvelope<AuthSessionPayloadWire>;\n\n if (!response.ok || !payload.data) {\n throw new ApiError(payload.error || `Request failed (${response.status})`, response.status);\n }\n\n return normalizeAuthSessionPayload(payload.data);\n}\n\nexport function createClient(config: ClientConfig) {\n const apiUrl = requireApiUrl(config);\n\n async function graphql<T>(\n query: string,\n variables?: Record<string, unknown>,\n ): Promise<T> {\n return executeGraphQL<T>(apiUrl, query, variables);\n }\n\n function projectId(): string {\n return requireProjectId(config);\n }\n\n async function me(): Promise<AuthSessionPayload | null> {\n const data = await graphql<{\n me: {\n id: string;\n email: string;\n name?: string | null;\n activeOrganizationId?: string | null;\n } | null;\n }>(ME_QUERY);\n\n const user = data.me;\n if (!user) return null;\n\n return {\n userId: user.id,\n email: user.email,\n name: user.name ?? undefined,\n activeOrgId: user.activeOrganizationId ?? undefined,\n organizationId: user.activeOrganizationId ?? undefined,\n organizationIds: user.activeOrganizationId ? [user.activeOrganizationId] : [],\n roles: [],\n };\n }\n\n async function organizations(): Promise<OrganizationSummary[]> {\n const data = await graphql<{ organizations: OrganizationSummary[] }>(`\n query Organizations {\n organizations {\n id\n name\n slug\n }\n }\n `);\n\n return data.organizations ?? [];\n }\n\n async function projects(organizationId: string): Promise<ProjectSummary[]> {\n const data = await graphql<{ projects: ProjectSummary[] }>(\n `\n query Projects($organizationId: ID!) {\n projects(organizationId: $organizationId) {\n id\n name\n slug\n description\n organizationId\n }\n }\n `,\n { organizationId },\n );\n\n return data.projects ?? [];\n }\n\n async function createProject(\n organizationId: string,\n name: string,\n ): Promise<ProjectSummary> {\n const data = await graphql<{ createProject: ProjectSummary }>(\n `\n mutation CreateProject($organizationId: ID!, $input: CreateProjectInput!) {\n createProject(organizationId: $organizationId, input: $input) {\n id\n name\n slug\n description\n organizationId\n }\n }\n `,\n {\n organizationId,\n input: {\n name,\n slug: slugify(name),\n description: \"\",\n },\n },\n );\n\n return data.createProject;\n }\n\n async function deleteProject(\n organizationId: string,\n projectIdValue: string,\n ): Promise<ProjectSummary> {\n const data = await graphql<{ deleteProject: ProjectSummary }>(\n `\n mutation DeleteProject($organizationId: ID!, $id: ID!) {\n deleteProject(organizationId: $organizationId, id: $id) {\n id\n name\n slug\n description\n organizationId\n }\n }\n `,\n { organizationId, id: projectIdValue },\n );\n return data.deleteProject;\n }\n\n async function principals(projectIdValue: string): Promise<PrincipalSummary[]> {\n const data = await graphql<{ principals: PrincipalSummary[] }>(\n `\n query Principals($projectId: ID!) {\n principals(projectId: $projectId) {\n id\n externalId\n state\n metadata\n projectId\n insertedAt\n updatedAt\n }\n }\n `,\n { projectId: projectIdValue },\n );\n\n return data.principals ?? [];\n }\n\n async function createPrincipal(\n projectIdValue: string,\n input: {\n externalId: string;\n state?: \"active\" | \"inactive\" | \"archived\";\n metadata?: Record<string, unknown>;\n },\n ): Promise<PrincipalSummary> {\n const data = await graphql<{ createPrincipal: PrincipalSummary }>(\n `\n mutation CreatePrincipal($projectId: ID!, $input: CreatePrincipalInput!) {\n createPrincipal(projectId: $projectId, input: $input) {\n id\n externalId\n state\n metadata\n projectId\n insertedAt\n updatedAt\n }\n }\n `,\n {\n projectId: projectIdValue,\n input: serializePrincipalInput(input),\n },\n );\n\n return data.createPrincipal;\n }\n\n async function updatePrincipal(\n projectIdValue: string,\n id: string,\n input: {\n externalId?: string;\n state?: \"active\" | \"inactive\" | \"archived\";\n metadata?: Record<string, unknown>;\n },\n ): Promise<PrincipalSummary | null> {\n const data = await graphql<{ updatePrincipal: PrincipalSummary | null }>(\n `\n mutation UpdatePrincipal($projectId: ID!, $id: ID!, $input: UpdatePrincipalInput!) {\n updatePrincipal(projectId: $projectId, id: $id, input: $input) {\n id\n externalId\n state\n metadata\n projectId\n insertedAt\n updatedAt\n }\n }\n `,\n {\n projectId: projectIdValue,\n id,\n input: serializePrincipalInput(input),\n },\n );\n\n return data.updatePrincipal ?? null;\n }\n\n async function deletePrincipal(projectIdValue: string, id: string): Promise<PrincipalSummary | null> {\n const data = await graphql<{ deletePrincipal: PrincipalSummary | null }>(\n `\n mutation DeletePrincipal($projectId: ID!, $id: ID!) {\n deletePrincipal(projectId: $projectId, id: $id) {\n id\n externalId\n state\n metadata\n projectId\n insertedAt\n updatedAt\n }\n }\n `,\n { projectId: projectIdValue, id },\n );\n\n return data.deletePrincipal ?? null;\n }\n\n async function listSecrets(projectIdValue: string): Promise<SecretSummary[]> {\n const data = await graphql<{ secrets: SecretSummary[] }>(\n `\n query Secrets($projectId: ID!) {\n secrets(projectId: $projectId) {\n name\n projectId\n hasValue\n insertedAt\n updatedAt\n }\n }\n `,\n { projectId: projectIdValue },\n );\n\n return data.secrets ?? [];\n }\n\n async function putSecret(\n projectIdValue: string,\n input: { name: string; value: string; metadataJson?: string },\n ): Promise<SecretSummary> {\n const data = await graphql<{ putSecret: SecretSummary }>(\n `\n mutation PutSecret($input: PutSecretInput!) {\n putSecret(input: $input) {\n name\n projectId\n hasValue\n insertedAt\n updatedAt\n }\n }\n `,\n {\n input: {\n projectId: projectIdValue,\n name: input.name,\n plaintext: input.value,\n metadataJson: input.metadataJson,\n },\n },\n );\n\n return data.putSecret;\n }\n\n async function deleteSecret(\n projectIdValue: string,\n name: string,\n ): Promise<boolean> {\n const data = await graphql<{ deleteSecret: boolean | null }>(\n `\n mutation DeleteSecret($input: DeleteSecretInput!) {\n deleteSecret(input: $input)\n }\n `,\n { input: { projectId: projectIdValue, name } },\n );\n\n return data.deleteSecret === true;\n }\n\n async function fetchRemoteManifest(projectIdValue: string): Promise<Manifest> {\n const data = await graphql<{\n activeDeployment: {\n snapshotJson?: string | null;\n } | null;\n }>(\n `\n query ActiveDeploymentSnapshot($projectId: ID!) {\n activeDeployment(projectId: $projectId) {\n snapshotJson\n }\n }\n `,\n { projectId: projectIdValue },\n );\n\n const snapshotJson = data.activeDeployment?.snapshotJson;\n return typeof snapshotJson === \"string\" && snapshotJson.trim() !== \"\"\n ? parseRemoteManifest(snapshotJson)\n : EMPTY_MANIFEST;\n }\n\n async function fetchRemoteCatalog(\n projectIdValue: string,\n ): Promise<Catalog | null> {\n const data = await graphql<{\n activeDeployment: {\n catalogJson?: string | null;\n } | null;\n }>(\n `\n query ActiveDeploymentCatalog($projectId: ID!) {\n activeDeployment(projectId: $projectId) {\n catalogJson\n }\n }\n `,\n { projectId: projectIdValue },\n );\n const catalogJson = data.activeDeployment?.catalogJson;\n return typeof catalogJson === \"string\" && catalogJson.trim() !== \"\"\n ? parseRemoteCatalog(catalogJson)\n : null;\n }\n\n async function deployBundle(\n bundlePath: string,\n manifest: Manifest,\n catalog: Catalog,\n ): Promise<DeploymentRevision> {\n const MAX_BUNDLE_BYTES = 100 * 1024 * 1024;\n const fileStat = await stat(bundlePath);\n if (fileStat.size > MAX_BUNDLE_BYTES) {\n throw new ConfigError(\n `bundle size (${(fileStat.size / 1024 / 1024).toFixed(1)}MB) exceeds maximum allowed (${MAX_BUNDLE_BYTES / 1024 / 1024}MB)`,\n );\n }\n\n const zipBuffer = await readFile(bundlePath);\n const projectIdValue = projectId();\n\n const upload = await uploadBundleArtifact(\n apiUrl,\n projectIdValue,\n zipBuffer,\n basename(bundlePath),\n );\n\n const active = await activeRevision(projectIdValue);\n const nextRevision = (active?.revision ?? 0) + 1;\n\n const data = await graphql<{ deployBundle: DeploymentRevision }>(\n `\n mutation DeployBundle($input: DeployBundleInput!) {\n deployBundle(input: $input) {\n id\n projectId\n revision\n bundleHash\n status\n activatedAt\n insertedAt\n updatedAt\n }\n }\n `,\n {\n input: {\n projectId: projectIdValue,\n bundleHash: upload.bundleHash,\n revision: nextRevision,\n snapshotJson: stableStringify(manifest),\n catalogJson: stableStringify(catalog),\n },\n },\n );\n return data.deployBundle;\n }\n\n async function emitSignal(input: EmitSignalInput): Promise<RuntimeEvent> {\n const projectIdValue = input.projectId ?? projectId();\n if (!input.principalId || input.principalId.trim() === \"\") {\n throw new ConfigError(\"principalId is required to emit a signal\");\n }\n const eventName = normalizeRuntimeSignalName(input.signal);\n if (!eventName) {\n throw new ConfigError(\n \"signal name must be a bare event name like smoke.start or use the signal: namespace\",\n );\n }\n const data = await graphql<{ emitSignal: RuntimeEvent }>(\n `\n mutation EmitSignal($input: EmitSignalInput!) {\n emitSignal(input: $input) {\n id\n projectId\n principalId\n kind\n name\n sourceName\n correlationId\n causationId\n dispatchStatus\n occurredAt\n insertedAt\n }\n }\n `,\n {\n input: {\n projectId: projectIdValue,\n principalId: input.principalId,\n eventName,\n payloadJson: JSON.stringify(input.payload ?? {}),\n metadataJson: JSON.stringify(input.metadata ?? {}),\n causationId: input.causationId,\n idempotencyKey: input.idempotencyKey,\n sourceName: input.sourceName,\n },\n },\n );\n\n return data.emitSignal;\n }\n\n async function activeRevision(\n projectIdValue: string,\n ): Promise<{ revision: number } | null> {\n const data = await graphql<{\n activeRevision: { revision: number } | null;\n }>(\n `\n query ActiveRevision($projectId: ID!) {\n activeRevision(projectId: $projectId) {\n revision\n }\n }\n `,\n { projectId: projectIdValue },\n );\n\n return data.activeRevision;\n }\n\n async function reconcileProject(projectIdValue: string): Promise<boolean> {\n const data = await graphql<{ reconcileProject: boolean }>(\n `\n mutation ReconcileProject($projectId: ID!) {\n reconcileProject(projectId: $projectId)\n }\n `,\n { projectId: projectIdValue },\n );\n return data.reconcileProject === true;\n }\n\n async function deploymentStatus(\n projectIdValue: string,\n revision: number,\n ): Promise<DeploymentRevision | null> {\n const data = await graphql<{\n deploymentStatus: DeploymentRevision | null;\n }>(\n `\n query DeploymentStatus($projectId: ID!, $revision: Int!) {\n deploymentStatus(projectId: $projectId, revision: $revision) {\n id\n projectId\n revision\n bundleHash\n status\n activatedAt\n insertedAt\n updatedAt\n }\n }\n `,\n { projectId: projectIdValue, revision },\n );\n return data.deploymentStatus;\n }\n\n async function quotaStatuses(): Promise<QuotaStatus[]> {\n const data = await graphql<{ allQuotaStatuses: QuotaStatus[] }>(\n `\n query AllQuotaStatuses {\n allQuotaStatuses {\n meter\n used\n limit\n remaining\n percentageUsed\n enforcement\n }\n }\n `,\n );\n\n return data.allQuotaStatuses ?? [];\n }\n\n async function projectEvents(\n projectIdValue: string,\n input?: ActivityEventFilterInput,\n ): Promise<ActivityEvent[]> {\n const data = await graphql<{ projectEvents: ActivityEvent[] }>(\n `\n query ProjectEvents($projectId: ID!, $input: ActivityEventFilterInput) {\n projectEvents(projectId: $projectId, input: $input) {\n id\n eventType\n targetKind\n targetName\n principalId\n level\n message\n payload\n metadata\n displayCategory\n displayStatus\n displayName\n displayDetail\n occurredAt\n durationMs\n }\n }\n `,\n { projectId: projectIdValue, input },\n );\n\n return data.projectEvents ?? [];\n }\n\n return {\n graphql,\n projectId,\n me,\n organizations,\n projects,\n createProject,\n deleteProject,\n principals,\n createPrincipal,\n updatePrincipal,\n deletePrincipal,\n listSecrets,\n putSecret,\n deleteSecret,\n fetchRemoteManifest,\n fetchRemoteCatalog,\n deployBundle,\n deploymentStatus,\n reconcileProject,\n emitSignal,\n quotaStatuses,\n projectEvents,\n };\n}\n","import WebSocket from \"ws\";\nimport { Socket as PhoenixSocket } from \"phoenix\";\nimport * as AbsintheSocket from \"@absinthe/socket\";\nimport type { Credentials } from \"../auth/store\";\nimport { socketAuthParams } from \"../auth/transport\";\n\nObject.assign(globalThis, { WebSocket });\n\nexport class SessionTokenNotSupportedError extends Error {\n constructor(message?: string) {\n super(\n message ??\n \"WebSocket subscriptions require API key authentication on the current io_runtime socket contract.\",\n );\n this.name = \"SessionTokenNotSupportedError\";\n }\n}\n\nexport interface SubscribeObserver<T> {\n readonly onResult?: (result: { data?: T; errors?: ReadonlyArray<unknown> }) => void;\n readonly onStart?: () => void;\n readonly onError?: (err: Error) => void;\n readonly onAbort?: (err: Error) => void;\n}\n\nexport interface SocketClient {\n subscribe<T>(\n operation: string,\n variables: Record<string, unknown>,\n observer: SubscribeObserver<T>,\n ): () => void;\n close(): void;\n}\n\nexport interface SocketClientOptions {\n readonly apiUrl: string;\n readonly credentials: Pick<Credentials, \"token\" | \"apiKey\">;\n readonly timeoutMs?: number;\n}\n\nexport function buildSocketUrl(apiUrl: string): string {\n const url = new URL(apiUrl);\n const basePath = url.pathname.replace(/\\/+$/, \"\");\n const socketBase = basePath.endsWith(\"/graphql\")\n ? basePath.slice(0, -\"/graphql\".length)\n : basePath;\n\n url.protocol = url.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n url.pathname = `${socketBase === \"/\" ? \"\" : socketBase}/socket`;\n url.search = \"\";\n url.hash = \"\";\n return url.toString();\n}\n\ntype PhoenixSocketInstance = InstanceType<typeof PhoenixSocket>;\ntype AbsintheNotifier = ReturnType<typeof AbsintheSocket.send>;\ntype AbsintheSocketInstance = ReturnType<typeof AbsintheSocket.create>;\n\nexport function createSocketClient(options: SocketClientOptions): SocketClient {\n let phoenixSocket: PhoenixSocketInstance | null = null;\n let absintheSocket: AbsintheSocketInstance | null = null;\n const notifiers = new Set<AbsintheNotifier>();\n\n function ensureConnection(): { absintheSocket: AbsintheSocketInstance } {\n if (!options.credentials.apiKey) {\n throw new SessionTokenNotSupportedError();\n }\n if (!phoenixSocket || !absintheSocket) {\n phoenixSocket = new PhoenixSocket(buildSocketUrl(options.apiUrl), {\n params: socketAuthParams(options.credentials),\n timeout: options.timeoutMs ?? 10_000,\n });\n absintheSocket = AbsintheSocket.create(phoenixSocket);\n phoenixSocket.connect();\n }\n return { absintheSocket };\n }\n\n function tearDownIfIdle(): void {\n if (notifiers.size === 0 && phoenixSocket) {\n phoenixSocket.disconnect();\n phoenixSocket = null;\n absintheSocket = null;\n }\n }\n\n return {\n subscribe<T>(\n operation: string,\n variables: Record<string, unknown>,\n observer: SubscribeObserver<T>,\n ): () => void {\n const conn = ensureConnection();\n const notifier = AbsintheSocket.send(conn.absintheSocket, {\n operation,\n variables,\n });\n notifiers.add(notifier);\n\n AbsintheSocket.observe(conn.absintheSocket, notifier, {\n onAbort: (err: Error) => {\n notifiers.delete(notifier);\n if (observer.onAbort) {\n observer.onAbort(err);\n } else {\n observer.onError?.(err);\n }\n tearDownIfIdle();\n },\n onCancel: () => {\n notifiers.delete(notifier);\n tearDownIfIdle();\n },\n onError: (err: Error) => {\n observer.onError?.(err);\n },\n onResult: (result: { data?: T; errors?: ReadonlyArray<unknown> }) => {\n observer.onResult?.(result);\n },\n onStart: () => {\n observer.onStart?.();\n },\n });\n\n return () => {\n if (!notifiers.has(notifier)) return;\n notifiers.delete(notifier);\n try {\n AbsintheSocket.cancel(conn.absintheSocket, notifier);\n } catch {\n // best-effort cancel — phoenix socket disconnect below covers cleanup\n }\n tearDownIfIdle();\n };\n },\n\n close(): void {\n notifiers.clear();\n if (phoenixSocket) {\n phoenixSocket.disconnect();\n }\n phoenixSocket = null;\n absintheSocket = null;\n },\n };\n}\n","import { SessionTokenNotSupportedError } from \"./socket\";\n\nexport type WatchMode = \"subscription\" | \"polling\";\n\nexport interface WatchHandlers<TEvent> {\n readonly onEvent: (event: TEvent) => void;\n readonly onConnected?: (mode: WatchMode) => void;\n readonly onError?: (err: Error) => void;\n}\n\nexport interface WatchSubscribeHandle {\n readonly unsubscribe: () => void;\n}\n\nexport interface WatchPlan<TEvent> {\n readonly snapshot?: () => Promise<readonly TEvent[]>;\n readonly subscribe?: (\n onEvent: (event: TEvent) => void,\n onError: (err: Error) => void,\n onConnected: () => void,\n ) => WatchSubscribeHandle;\n readonly poll?: (since: string) => Promise<readonly TEvent[]>;\n readonly pollIntervalMs?: number;\n readonly initialSince?: string;\n readonly getId: (event: TEvent) => string;\n readonly getCursor?: (event: TEvent) => string;\n readonly isTerminal?: (event: TEvent) => boolean;\n readonly seenIdLimit?: number;\n readonly pollBatchSafetyLoops?: number;\n}\n\nconst DEFAULT_POLL_INTERVAL_MS = 2_000;\nconst DEFAULT_SEEN_ID_LIMIT = 1_000;\nconst DEFAULT_POLL_SAFETY_LOOPS = 10;\n\nfunction installSigintHandler(onTerminate: () => void): () => void {\n const handler = () => {\n onTerminate();\n };\n process.once(\"SIGINT\", handler);\n return () => {\n process.removeListener(\"SIGINT\", handler);\n };\n}\n\nexport async function watch<TEvent>(\n plan: WatchPlan<TEvent>,\n handlers: WatchHandlers<TEvent>,\n): Promise<void> {\n const seenIds = new Set<string>();\n const seenOrder: string[] = [];\n const seenLimit = plan.seenIdLimit ?? DEFAULT_SEEN_ID_LIMIT;\n\n function rememberId(id: string): void {\n if (seenIds.has(id)) return;\n seenIds.add(id);\n seenOrder.push(id);\n while (seenOrder.length > seenLimit) {\n const evicted = seenOrder.shift();\n if (evicted) seenIds.delete(evicted);\n }\n }\n\n function handle(event: TEvent): boolean {\n const id = plan.getId(event);\n if (seenIds.has(id)) return false;\n rememberId(id);\n handlers.onEvent(event);\n return true;\n }\n\n let cursor = plan.initialSince ?? new Date().toISOString();\n function advanceCursor(event: TEvent): void {\n if (!plan.getCursor) return;\n const next = plan.getCursor(event);\n if (next > cursor) cursor = next;\n }\n\n if (plan.snapshot) {\n const initial = await plan.snapshot();\n for (const event of initial) {\n handle(event);\n advanceCursor(event);\n if (plan.isTerminal?.(event)) return;\n }\n }\n\n return new Promise<void>((resolve, reject) => {\n let cleanupSigint: (() => void) | undefined;\n let subscribeHandle: WatchSubscribeHandle | undefined;\n let pollTimer: ReturnType<typeof setTimeout> | undefined;\n let terminated = false;\n\n function finalize(action: () => void): void {\n if (terminated) return;\n terminated = true;\n subscribeHandle?.unsubscribe();\n if (pollTimer) clearTimeout(pollTimer);\n cleanupSigint?.();\n action();\n }\n\n cleanupSigint = installSigintHandler(() => {\n finalize(() => resolve());\n });\n\n function processLiveEvent(event: TEvent): void {\n const accepted = handle(event);\n if (accepted) advanceCursor(event);\n if (plan.isTerminal?.(event)) finalize(() => resolve());\n }\n\n async function startPolling(): Promise<void> {\n if (!plan.poll) {\n finalize(() => reject(new Error(\"No polling fallback configured for this watch.\")));\n return;\n }\n handlers.onConnected?.(\"polling\");\n\n const interval = plan.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;\n const safetyLoops = plan.pollBatchSafetyLoops ?? DEFAULT_POLL_SAFETY_LOOPS;\n\n const loop = async (): Promise<void> => {\n if (terminated) return;\n try {\n for (let i = 0; i < safetyLoops; i += 1) {\n const batch = await plan.poll!(cursor);\n let anyNew = false;\n for (const event of batch) {\n if (handle(event)) anyNew = true;\n advanceCursor(event);\n if (plan.isTerminal?.(event)) {\n finalize(() => resolve());\n return;\n }\n }\n if (!anyNew) break;\n }\n } catch (err) {\n finalize(() =>\n reject(err instanceof Error ? err : new Error(String(err))),\n );\n return;\n }\n pollTimer = setTimeout(loop, interval);\n };\n\n void loop();\n }\n\n if (!plan.subscribe) {\n void startPolling();\n return;\n }\n\n try {\n subscribeHandle = plan.subscribe(\n processLiveEvent,\n (err) => {\n if (err instanceof SessionTokenNotSupportedError && plan.poll) {\n subscribeHandle = undefined;\n void startPolling();\n return;\n }\n finalize(() => reject(err));\n },\n () => handlers.onConnected?.(\"subscription\"),\n );\n } catch (err) {\n if (err instanceof SessionTokenNotSupportedError && plan.poll) {\n void startPolling();\n return;\n }\n finalize(() => reject(err instanceof Error ? err : new Error(String(err))));\n }\n });\n}\n","import { join } from \"node:path\";\nimport chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { buildPipeline } from \"../build/pipeline\";\nimport { cleanupStagingDir, createStagingDir } from \"../build/staging\";\nimport { zipBuildOutput } from \"../deploy/zip\";\nimport { diffManifests } from \"../deploy/diff\";\nimport { diffCatalogs } from \"../deploy/catalog-diff\";\nimport { formatPlan, confirmPlan } from \"../deploy/plan\";\nimport {\n createClient,\n type ApiClient,\n type DeploymentRevision,\n} from \"../api/client\";\nimport { watch } from \"../api/watcher\";\nimport { CliError } from \"../errors\";\nimport type { Manifest } from \"../types\";\n\ninterface DeployOptions {\n dir?: string;\n minify?: boolean;\n yes?: boolean;\n watch?: boolean;\n}\n\nconst TERMINAL_STATUSES = new Set([\"active\", \"failed\", \"superseded\"]);\nconst WATCH_POLL_INTERVAL_MS = 2_000;\nconst WATCH_DEADLINE_MS = 5 * 60_000;\n\nexport async function deployCommand(options: DeployOptions): Promise<void> {\n let stagingDir: string | undefined;\n\n try {\n const config = await loadConfig({\n dir: options.dir,\n });\n\n console.log(chalk.gray(\"Planning deployment...\"));\n\n stagingDir = await createStagingDir();\n\n const { manifest, catalog } = await buildPipeline(\n config,\n process.cwd(),\n options.minify ?? true,\n stagingDir,\n );\n\n if (!config.apiUrl || !config.projectId) {\n console.log(\n chalk.yellow(\n \"\\nNo apiUrl or projectId configured. Skipping upload.\",\n ),\n );\n return;\n }\n\n const client = createClient({\n apiUrl: config.apiUrl,\n projectId: config.projectId,\n });\n\n console.log(chalk.gray(\"\\nComparing with remote...\"));\n\n const remoteManifest: Manifest = await client.fetchRemoteManifest(\n client.projectId(),\n );\n const remoteCatalog = await client.fetchRemoteCatalog(client.projectId());\n\n const diff = diffManifests(manifest, remoteManifest);\n const catalogDiff = diffCatalogs(catalog, remoteCatalog);\n\n if (!diff.hasChanges && !catalogDiff.hasChanges) {\n console.log(chalk.green(\"\\n✓ No changes to deploy.\"));\n return;\n }\n\n console.log(\"\\n\" + formatPlan(diff, catalogDiff));\n\n const confirmed = await confirmPlan(options.yes ?? false);\n if (!confirmed) {\n console.log(chalk.yellow(\"Deploy cancelled.\"));\n return;\n }\n\n console.log(chalk.gray(\"\\nApplying deployment...\"));\n\n const zipPath = join(stagingDir, \"deploy.zip\");\n await zipBuildOutput(stagingDir, zipPath);\n\n const revision = await client.deployBundle(zipPath, manifest, catalog);\n\n console.log(\n chalk.green(`\\n✓ Deployment submitted (revision ${revision.revision}, ${revision.status})`),\n );\n\n if (options.watch) {\n await watchDeployment(client, revision);\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n } finally {\n await cleanupStagingDir(stagingDir);\n }\n}\n\nfunction colorStatus(status: string): string {\n switch (status) {\n case \"active\":\n return chalk.green(status);\n case \"failed\":\n return chalk.red(status);\n case \"superseded\":\n return chalk.yellow(status);\n case \"staged\":\n return chalk.cyan(status);\n case \"draft\":\n default:\n return chalk.gray(status);\n }\n}\n\nasync function watchDeployment(\n client: ApiClient,\n initial: DeploymentRevision,\n): Promise<void> {\n if (TERMINAL_STATUSES.has(initial.status)) {\n return;\n }\n\n console.log(chalk.gray(`\\nWatching revision ${initial.revision}…`));\n let lastStatus = initial.status;\n const startedAt = Date.now();\n\n await watch<DeploymentRevision>(\n {\n poll: async (): Promise<readonly DeploymentRevision[]> => {\n if (Date.now() - startedAt > WATCH_DEADLINE_MS) {\n throw new Error(\n `Deployment did not reach a terminal status within ${WATCH_DEADLINE_MS / 1000}s.`,\n );\n }\n const next = await client.deploymentStatus(\n client.projectId(),\n initial.revision,\n );\n return next ? [next] : [];\n },\n pollIntervalMs: WATCH_POLL_INTERVAL_MS,\n getId: (rev) => `${rev.revision}:${rev.status}:${rev.updatedAt}`,\n isTerminal: (rev) => TERMINAL_STATUSES.has(rev.status),\n },\n {\n onEvent: (rev) => {\n if (rev.status !== lastStatus) {\n console.log(\n ` revision ${rev.revision} → ${colorStatus(rev.status)}`,\n );\n lastStatus = rev.status;\n }\n },\n },\n );\n\n if (lastStatus === \"active\") {\n console.log(chalk.green(`\\n✓ Deployment active (revision ${initial.revision}).`));\n } else if (lastStatus === \"failed\") {\n console.log(chalk.red(`\\n✗ Deployment failed (revision ${initial.revision}).`));\n process.exit(1);\n } else if (lastStatus === \"superseded\") {\n console.log(\n chalk.yellow(`\\n! Revision ${initial.revision} was superseded by a later deploy.`),\n );\n }\n}\n","import { createServer, type Server } from \"node:http\";\nimport { randomBytes } from \"node:crypto\";\nimport { URL } from \"node:url\";\n\nconst SUCCESS_HTML = `<!DOCTYPE html>\n<html>\n<head><title>IO CLI</title><style>\nbody{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;background:#fafafa}\n.card{text-align:center;padding:2rem}\nh1{font-size:1.5rem;margin-bottom:0.5rem}\np{color:#666}\n</style></head>\n<body><div class=\"card\"><h1>Authenticated</h1><p>You can close this tab and return to the terminal.</p></div></body>\n</html>`;\n\nconst ERROR_HTML = `<!DOCTYPE html>\n<html>\n<head><title>IO CLI</title><style>\nbody{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;background:#fafafa}\n.card{text-align:center;padding:2rem}\nh1{font-size:1.5rem;margin-bottom:0.5rem;color:#c00}\np{color:#666}\n</style></head>\n<body><div class=\"card\"><h1>Authentication Failed</h1><p>State mismatch. Please try again.</p></div></body>\n</html>`;\n\nexport interface CallbackResult {\n code?: string;\n expiresIn?: number;\n}\n\nexport interface CallbackServer {\n port: number;\n state: string;\n url: string;\n wait(): Promise<CallbackResult>;\n close(): void;\n}\n\nexport function startCallbackServer(): Promise<CallbackServer> {\n const state = randomBytes(16).toString(\"hex\");\n\n return new Promise((resolveServer, rejectServer) => {\n let tokenResolve: (result: CallbackResult) => void;\n let tokenReject: (err: Error) => void;\n\n const tokenPromise = new Promise<CallbackResult>((res, rej) => {\n tokenResolve = res;\n tokenReject = rej;\n });\n\n tokenPromise.catch(() => {});\n\n const server: Server = createServer((req, res) => {\n if (!req.url) {\n res.writeHead(404);\n res.end();\n return;\n }\n\n const parsed = new URL(req.url, `http://localhost`);\n\n if (parsed.pathname !== \"/callback\") {\n res.writeHead(404);\n res.end();\n return;\n }\n\n const returnedState = parsed.searchParams.get(\"state\");\n if (returnedState !== state) {\n res.writeHead(400, { \"Content-Type\": \"text/html\" });\n res.end(ERROR_HTML);\n tokenReject(new Error(\"State mismatch — possible CSRF attack\"));\n return;\n }\n\n const errorParam = parsed.searchParams.get(\"error\");\n if (errorParam) {\n res.writeHead(400, { \"Content-Type\": \"text/html\" });\n res.end(ERROR_HTML);\n tokenReject(new Error(errorParam));\n return;\n }\n\n const code = parsed.searchParams.get(\"code\") ?? undefined;\n if (!code) {\n res.writeHead(400, { \"Content-Type\": \"text/html\" });\n res.end(ERROR_HTML);\n tokenReject(new Error(\"No auth code received\"));\n return;\n }\n\n const expiresInRaw = parsed.searchParams.get(\"expiresIn\");\n const expiresIn = expiresInRaw ? Number.parseInt(expiresInRaw, 10) : undefined;\n\n res.writeHead(200, { \"Content-Type\": \"text/html\" });\n res.end(SUCCESS_HTML);\n tokenResolve({\n code,\n expiresIn: Number.isFinite(expiresIn) ? expiresIn : undefined,\n });\n });\n\n server.listen(0, \"127.0.0.1\", () => {\n const addr = server.address();\n if (!addr || typeof addr === \"string\") {\n rejectServer(new Error(\"Failed to start callback server\"));\n return;\n }\n\n const port = addr.port;\n const url = `http://127.0.0.1:${port}/callback`;\n\n resolveServer({\n port,\n state,\n url,\n wait: () => tokenPromise,\n close: () => server.close(),\n });\n });\n\n server.on(\"error\", rejectServer);\n });\n}\n","import { createHash, randomBytes } from \"node:crypto\";\n\nexport interface PkcePair {\n verifier: string;\n challenge: string;\n}\n\nexport function generatePkcePair(): PkcePair {\n const verifier = randomBytes(32).toString(\"base64url\");\n const challenge = createHash(\"sha256\").update(verifier).digest(\"base64url\");\n\n return { verifier, challenge };\n}\n","import chalk from \"chalk\";\nimport open from \"open\";\nimport { startCallbackServer } from \"../auth/callback\";\nimport { generatePkcePair } from \"../auth/pkce\";\nimport { loadConfig } from \"../config/loader\";\nimport { saveToken, saveCredentials, loadToken } from \"../auth/store\";\nimport { buildCliBrowserLoginUrl, exchangeCliCode } from \"../api/client\";\nimport { CliError, ConfigError } from \"../errors\";\n\ninterface LoginOptions {\n token?: string;\n}\n\nexport async function loginCommand(options: LoginOptions): Promise<void> {\n try {\n if (options.token) {\n await saveToken(options.token, true);\n console.log(chalk.green(\"\\u2713 API key saved\"));\n return;\n }\n\n const config = await loadConfig();\n\n if (!config.apiUrl) {\n throw new ConfigError(\n \"No apiUrl configured. Set it in io.config.json or IO_API_URL env var.\",\n );\n }\n\n const existing = await loadToken();\n if (existing) {\n console.log(chalk.gray(\"Existing session found. Re-authenticating...\"));\n }\n\n const callbackServer = await startCallbackServer();\n const pkce = generatePkcePair();\n const authorizationUrl = buildCliBrowserLoginUrl(\n config.apiUrl,\n callbackServer.url,\n callbackServer.state,\n pkce.challenge,\n );\n\n console.log(chalk.gray(\"Opening your browser for sign-in...\"));\n\n try {\n await open(authorizationUrl);\n } catch {\n console.log(chalk.yellow(\"Could not open the browser automatically.\"));\n console.log(chalk.gray(`Open this URL manually:\\n${authorizationUrl}`));\n }\n\n try {\n const callback = await callbackServer.wait();\n const session = await exchangeCliCode(\n config.apiUrl,\n callback.code ?? \"\",\n callbackServer.state,\n pkce.verifier,\n );\n\n if (!session.accessToken) {\n throw new ConfigError(\"Authentication succeeded but no access token was returned.\");\n }\n\n await saveCredentials({\n token: session.accessToken,\n refreshToken: session.refreshToken,\n userId: session.userId,\n organizationId:\n session.organizationId ??\n session.activeOrgId ??\n session.organizationIds?.[0],\n expiresIn: session.expiresIn,\n });\n } finally {\n callbackServer.close();\n }\n\n console.log(chalk.green(\"\\n\\u2713 Authenticated successfully\"));\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import chalk from \"chalk\";\nimport { clearToken, loadCredentials } from \"../auth/store\";\n\nexport async function logoutCommand(): Promise<void> {\n const creds = await loadCredentials();\n await clearToken();\n\n if (!creds) {\n console.log(chalk.yellow(\"Not logged in.\"));\n return;\n }\n\n console.log(chalk.green(\"\\u2713 Logged out\"));\n}\n","import chalk from \"chalk\";\nimport { loadCredentials, saveCredentials } from \"../auth/store\";\nimport { loadConfig } from \"../config/loader\";\nimport { createClient } from \"../api/client\";\n\nasync function hydrateIdentity() {\n const creds = await loadCredentials();\n let sessionName: string | undefined;\n let sessionEmail: string | undefined;\n\n if (!creds) {\n return { creds: null, sessionEmail, sessionName };\n }\n\n try {\n const config = await loadConfig();\n if (!config.apiUrl) {\n return { creds, sessionEmail, sessionName };\n }\n\n const client = createClient({ apiUrl: config.apiUrl, projectId: config.projectId });\n const session = await client.me();\n\n sessionName = session?.name;\n sessionEmail = session?.email;\n\n const organizationId =\n session?.organizationId ??\n session?.activeOrgId ??\n session?.organizationIds?.[0];\n const userId = session?.userId ?? creds.userId;\n\n if (!organizationId && !userId) {\n return { creds, sessionEmail, sessionName };\n }\n\n const nextCreds = {\n ...creds,\n organizationId: organizationId ?? creds.organizationId,\n userId,\n };\n\n await saveCredentials({\n token: nextCreds.token,\n refreshToken: nextCreds.refreshToken,\n expiresAt: nextCreds.expiresAt,\n userId: nextCreds.userId,\n organizationId: nextCreds.organizationId,\n apiKey: nextCreds.apiKey,\n });\n\n return { creds: nextCreds, sessionEmail, sessionName };\n } catch {\n return { creds, sessionEmail, sessionName };\n }\n}\n\nexport async function whoamiCommand(): Promise<void> {\n const { creds, sessionName, sessionEmail } = await hydrateIdentity();\n\n if (!creds) {\n console.log(chalk.yellow(\"Not logged in. Run `io login` to authenticate.\"));\n return;\n }\n\n console.log(chalk.green(\"\\u2713 Logged in\"));\n\n const displayUser = sessionName ?? sessionEmail ?? creds.userId;\n\n if (displayUser) {\n console.log(chalk.gray(` User: ${displayUser}`));\n }\n\n if (sessionEmail && sessionEmail !== displayUser) {\n console.log(chalk.gray(` Email: ${sessionEmail}`));\n }\n\n if (creds.organizationId) {\n console.log(chalk.gray(` Organization: ${creds.organizationId}`));\n }\n\n if (creds.apiKey) {\n console.log(chalk.gray(\" Session: API key\"));\n } else if (creds.refreshToken) {\n console.log(chalk.gray(\" Session: refresh token stored\"));\n } else {\n console.log(chalk.gray(\" Session: token only (no refresh)\"));\n }\n}\n","import { readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { createInterface } from \"node:readline\";\nimport chalk from \"chalk\";\nimport { loadCredentials } from \"../auth/store\";\nimport { createClient, type OrganizationSummary } from \"../api/client\";\nimport { CliError, ConfigError } from \"../errors\";\n\nconst CONFIG_FILE = \"io.config.json\";\n\nasync function prompt(question: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim());\n });\n });\n}\n\nasync function readExistingConfig(cwd: string): Promise<Record<string, unknown>> {\n try {\n const raw = await readFile(join(cwd, CONFIG_FILE), \"utf-8\");\n return JSON.parse(raw) as Record<string, unknown>;\n } catch {\n return {};\n }\n}\n\nasync function selectOrganization(\n organizations: OrganizationSummary[],\n preferredId?: string,\n): Promise<OrganizationSummary | null> {\n if (organizations.length === 0) return null;\n\n if (preferredId) {\n const preferred = organizations.find((organization) => organization.id === preferredId);\n if (preferred) return preferred;\n }\n\n if (organizations.length === 1) {\n return organizations[0];\n }\n\n console.log(chalk.gray(\"\\nAvailable organizations:\"));\n organizations.forEach((organization, index) => {\n console.log(\n ` ${chalk.green(String(index + 1))}. ${organization.name} ${chalk.gray(organization.id)}`,\n );\n });\n\n const choice = await prompt(chalk.gray(\"\\nSelect an organization (number or ID): \"));\n const index = Number(choice);\n\n if (index > 0 && index <= organizations.length) {\n return organizations[index - 1];\n }\n\n return organizations.find((organization) => organization.id === choice) ?? null;\n}\n\nexport async function initCommand(options: { yes?: boolean }): Promise<void> {\n try {\n const cwd = process.cwd();\n const existing = await readExistingConfig(cwd);\n\n if (existing.projectId && !options.yes) {\n const overwrite = await prompt(\n chalk.yellow(`io.config.json already has projectId \"${existing.projectId}\". Overwrite? (y/n) `),\n );\n if (overwrite.toLowerCase() !== \"y\") {\n console.log(chalk.gray(\"Cancelled.\"));\n return;\n }\n }\n\n const config: Record<string, unknown> = { ...existing };\n\n if (!config.apiUrl) {\n const apiUrl = await prompt(chalk.gray(\"API URL (leave blank for default): \"));\n if (apiUrl) {\n config.apiUrl = apiUrl;\n }\n }\n\n const creds = await loadCredentials();\n if (creds) {\n const apiUrl = (config.apiUrl as string) || process.env[\"IO_API_URL\"] || \"\";\n\n if (!apiUrl) {\n throw new ConfigError(\"No apiUrl configured. Set it before selecting a project.\");\n }\n\n const client = createClient({ apiUrl, projectId: \"\" });\n\n let organizations: OrganizationSummary[] = [];\n let activeOrgId: string | undefined;\n\n try {\n const session = await client.me();\n activeOrgId =\n session?.activeOrgId ??\n session?.organizationId ??\n session?.organizationIds?.[0];\n } catch {\n }\n\n try {\n organizations = await client.organizations();\n } catch {\n console.log(chalk.yellow(\"Could not fetch organizations. Enter project ID manually.\"));\n }\n\n const selectedOrganization = await selectOrganization(\n organizations,\n activeOrgId ?? creds.organizationId,\n );\n\n if (selectedOrganization) {\n const projects = await client.projects(selectedOrganization.id);\n\n if (projects.length > 0) {\n console.log(chalk.gray(\"\\nAvailable projects:\"));\n projects.forEach((project, index) => {\n console.log(\n ` ${chalk.green(String(index + 1))}. ${project.name} ${chalk.gray(project.id)}`,\n );\n });\n\n const choice = await prompt(\n chalk.gray(\"\\nSelect a project (number) or enter a project ID: \"),\n );\n const index = Number(choice);\n\n if (index > 0 && index <= projects.length) {\n config.projectId = projects[index - 1].id;\n } else if (choice) {\n config.projectId = choice;\n }\n } else {\n const createNew = await prompt(\n chalk.gray(\"No projects found. Create one? (y/n) \"),\n );\n if (createNew.toLowerCase() === \"y\") {\n const name = await prompt(chalk.gray(\"Project name: \"));\n if (name) {\n const project = await client.createProject(selectedOrganization.id, name);\n config.projectId = project.id;\n console.log(chalk.green(`\\u2713 Created project: ${project.name}`));\n }\n }\n }\n } else {\n const projectId = await prompt(chalk.gray(\"Project ID (or leave blank): \"));\n if (projectId) {\n config.projectId = projectId;\n }\n }\n } else {\n console.log(chalk.yellow(\"Not logged in. Run `io login` first to select a project.\"));\n const projectId = await prompt(chalk.gray(\"Project ID (or leave blank): \"));\n if (projectId) {\n config.projectId = projectId;\n }\n }\n\n await writeFile(\n join(cwd, CONFIG_FILE),\n JSON.stringify(config, null, 2) + \"\\n\",\n \"utf-8\",\n );\n\n console.log(chalk.green(`\\n\\u2713 Wrote ${CONFIG_FILE}`));\n\n if (config.projectId) {\n console.log(chalk.gray(` Project: ${config.projectId}`));\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import chalk from \"chalk\";\nimport { createInterface } from \"node:readline\";\nimport { loadConfig } from \"../config/loader\";\nimport { createClient } from \"../api/client\";\nimport { CliError, ConfigError } from \"../errors\";\n\nasync function resolveOrganizationId(client: ReturnType<typeof createClient>): Promise<string> {\n try {\n const session = await client.me();\n const organizationId =\n session?.activeOrgId ??\n session?.organizationId ??\n session?.organizationIds?.[0];\n\n if (organizationId) {\n return organizationId;\n }\n } catch {\n }\n\n const organizations = await client.organizations();\n\n if (organizations.length === 1) {\n return organizations[0].id;\n }\n\n throw new ConfigError(\"No active organization available for this account.\");\n}\n\nexport async function projectsListCommand(): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const organizationId = await resolveOrganizationId(client);\n const projects = await client.projects(organizationId);\n\n if (!projects || projects.length === 0) {\n console.log(chalk.gray(\"No projects found. Create one with `io projects create <name>`.\"));\n return;\n }\n\n for (const p of projects) {\n const current = p.id === config.projectId ? chalk.green(\" (current)\") : \"\";\n console.log(` ${p.name} ${chalk.gray(p.id)}${current}`);\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n\ninterface ProjectsDeleteOptions {\n yes?: boolean;\n organizationId?: string;\n}\n\nasync function confirmDelete(projectName: string, projectId: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((resolve) => {\n rl.question(\n `Delete project \"${projectName}\" (${projectId})? Type the project name to confirm: `,\n (answer) => {\n rl.close();\n resolve(answer.trim() === projectName);\n },\n );\n });\n}\n\nexport async function projectsDeleteCommand(\n id: string,\n options: ProjectsDeleteOptions = {},\n): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const organizationId =\n options.organizationId ?? (await resolveOrganizationId(client));\n const projects = await client.projects(organizationId);\n const target = projects.find((p) => p.id === id);\n if (!target) {\n throw new ConfigError(\n `Project \"${id}\" not found under organization ${organizationId}.`,\n );\n }\n\n if (!options.yes) {\n const confirmed = await confirmDelete(target.name, target.id);\n if (!confirmed) {\n console.log(chalk.yellow(\"Delete cancelled (name did not match).\"));\n return;\n }\n }\n\n const deleted = await client.deleteProject(organizationId, target.id);\n console.log(chalk.green(`✓ Deleted project: ${deleted.name}`));\n console.log(chalk.gray(` ID: ${deleted.id}`));\n\n if (config.projectId === deleted.id) {\n console.log(\n chalk.yellow(\n \"\\n io.config.json still references this project — clear the projectId field before redeploying.\",\n ),\n );\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n\nexport async function projectsCreateCommand(name: string): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const organizationId = await resolveOrganizationId(client);\n const project = await client.createProject(organizationId, name);\n\n console.log(chalk.green(`\\u2713 Created project: ${project.name}`));\n console.log(chalk.gray(` ID: ${project.id}`));\n console.log(\n chalk.gray(\n `\\n Add to io.config.json:\\n { \"projectId\": \"${project.id}\" }`,\n ),\n );\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { createClient } from \"../api/client\";\nimport { CliError } from \"../errors\";\n\nexport async function secretsSetCommand(\n name: string,\n value: string,\n): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const pid = client.projectId();\n\n await client.putSecret(pid, { name, value });\n console.log(chalk.green(`✓ Set secret: ${name}`));\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n\nexport async function secretsListCommand(): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const secrets = await client.listSecrets(client.projectId());\n\n if (!secrets || secrets.length === 0) {\n console.log(chalk.gray(\"No secrets configured.\"));\n return;\n }\n\n for (const s of secrets) {\n const value = s.hasValue ? \"\" : chalk.gray(\" (no value)\");\n console.log(` ${s.name}${value}`);\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n\nexport async function secretsRemoveCommand(name: string): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const removed = await client.deleteSecret(client.projectId(), name);\n\n if (!removed) {\n console.log(chalk.yellow(`Secret \"${name}\" not found.`));\n return;\n }\n\n console.log(chalk.green(`✓ Removed secret: ${name}`));\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import chalk from \"chalk\";\nimport { createClient } from \"../api/client\";\nimport { loadConfig } from \"../config/loader\";\nimport { CliError, ConfigError } from \"../errors\";\n\ntype PrincipalState = \"active\" | \"inactive\" | \"archived\";\n\ninterface PrincipalProjectOptions {\n projectId?: string;\n}\n\ninterface PrincipalCreateOptions extends PrincipalProjectOptions {\n state?: string;\n metadata?: string;\n}\n\ninterface PrincipalUpdateOptions extends PrincipalProjectOptions {\n externalId?: string;\n state?: string;\n metadata?: string;\n}\n\nfunction parseMetadata(input: string | undefined): Record<string, unknown> | undefined {\n if (!input) return undefined;\n\n try {\n const parsed = JSON.parse(input) as unknown;\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n return parsed as Record<string, unknown>;\n }\n } catch {\n }\n\n throw new ConfigError(\"metadata must be a JSON object\");\n}\n\nfunction validateState(state: string | undefined): PrincipalState | undefined {\n if (!state) return undefined;\n if (state === \"active\" || state === \"inactive\" || state === \"archived\") return state;\n throw new ConfigError(\"state must be active, inactive, or archived\");\n}\n\nasync function withClient(options: PrincipalProjectOptions) {\n const config = await loadConfig({ projectId: options.projectId });\n const client = createClient(config);\n return { client, projectId: client.projectId() };\n}\n\nfunction handleError(err: unknown): never {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n}\n\nexport async function principalsListCommand(options: PrincipalProjectOptions): Promise<void> {\n try {\n const { client, projectId } = await withClient(options);\n const principals = await client.principals(projectId);\n\n if (principals.length === 0) {\n console.log(chalk.gray(\"No principals found. Create one with `io principals create <external-id>`.\"));\n return;\n }\n\n for (const principal of principals) {\n console.log(\n ` ${principal.externalId} ${chalk.gray(principal.id)} ${chalk.gray(principal.state)}`,\n );\n }\n } catch (err: unknown) {\n handleError(err);\n }\n}\n\nexport async function principalsCreateCommand(\n externalId: string,\n options: PrincipalCreateOptions,\n): Promise<void> {\n try {\n const { client, projectId } = await withClient(options);\n const principal = await client.createPrincipal(projectId, {\n externalId,\n state: validateState(options.state),\n metadata: parseMetadata(options.metadata),\n });\n\n console.log(chalk.green(`✓ Created principal: ${principal.externalId}`));\n console.log(chalk.gray(` ID: ${principal.id}`));\n console.log(chalk.gray(` Project: ${principal.projectId}`));\n console.log(chalk.gray(` State: ${principal.state}`));\n } catch (err: unknown) {\n handleError(err);\n }\n}\n\nexport async function principalsUpdateCommand(\n id: string,\n options: PrincipalUpdateOptions,\n): Promise<void> {\n try {\n const { client, projectId } = await withClient(options);\n const input = {\n externalId: options.externalId,\n state: validateState(options.state),\n metadata: parseMetadata(options.metadata),\n };\n\n if (!input.externalId && !input.state && !input.metadata) {\n throw new ConfigError(\"nothing to update; pass --external-id, --state, or --metadata\");\n }\n\n const principal = await client.updatePrincipal(projectId, id, input);\n if (!principal) {\n console.log(chalk.yellow(`Principal \"${id}\" not found.`));\n return;\n }\n\n console.log(chalk.green(`✓ Updated principal: ${principal.externalId}`));\n console.log(chalk.gray(` ID: ${principal.id}`));\n console.log(chalk.gray(` Project: ${principal.projectId}`));\n console.log(chalk.gray(` State: ${principal.state}`));\n } catch (err: unknown) {\n handleError(err);\n }\n}\n\nexport async function principalsDeleteCommand(\n id: string,\n options: PrincipalProjectOptions,\n): Promise<void> {\n try {\n const { client, projectId } = await withClient(options);\n const principal = await client.deletePrincipal(projectId, id);\n\n if (!principal) {\n console.log(chalk.yellow(`Principal \"${id}\" not found.`));\n return;\n }\n\n console.log(chalk.green(`✓ Deleted principal: ${principal.externalId}`));\n } catch (err: unknown) {\n handleError(err);\n }\n}\n","import chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { createClient } from \"../api/client\";\nimport { CliError } from \"../errors\";\n\nfunction meterBar(used: number, limit: number, width = 20): string {\n if (limit === 0) return chalk.gray(\"░\".repeat(width));\n const ratio = Math.min(used / limit, 1);\n const filled = Math.round(ratio * width);\n const empty = width - filled;\n const color = ratio >= 0.9 ? chalk.red : ratio >= 0.7 ? chalk.yellow : chalk.green;\n return color(\"█\".repeat(filled)) + chalk.gray(\"░\".repeat(empty));\n}\n\nfunction formatNumber(n: number): string {\n if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;\n if (n >= 1_000) return `${(n / 1_000).toFixed(1)}K`;\n return n.toLocaleString();\n}\n\nconst METER_LABELS: Record<string, string> = {\n events: \"Events\",\n ingest_tokens: \"Ingest Tokens\",\n query_tokens: \"Query Tokens\",\n voice_seconds: \"Voice Seconds\",\n compute_gb_sec: \"Compute (GB·s)\",\n storage_gb: \"Memory Storage (GB)\",\n artifact_storage_gb: \"Artifact Storage (GB)\",\n};\n\nexport async function quotaCommand(): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const statuses = await client.quotaStatuses();\n\n if (statuses.length === 0) {\n console.log(chalk.gray(\"No quota data available.\"));\n return;\n }\n\n console.log(chalk.bold(\"\\nQuota Usage\\n\"));\n\n for (const status of statuses) {\n const label = METER_LABELS[status.meter] ?? status.meter;\n const bar = meterBar(status.used, status.limit);\n const pct = status.limit > 0 ? `${status.percentageUsed.toFixed(1)}%` : \"—\";\n const usage = `${formatNumber(status.used)} / ${formatNumber(status.limit)}`;\n const enforcement = status.enforcement === \"hard_cap\" ? chalk.red(\"hard\") : chalk.yellow(\"soft\");\n\n console.log(` ${label.padEnd(22)} ${bar} ${usage.padStart(16)} ${pct.padStart(6)} ${enforcement}`);\n }\n\n console.log();\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import type { ActivityEvent, ActivityEventFilterInput } from \"./client\";\nimport type { Credentials } from \"../auth/store\";\nimport { createSocketClient, type SocketClient } from \"./socket\";\n\nexport { buildSocketUrl as buildActivityEventsSocketUrl } from \"./socket\";\nexport { SessionTokenNotSupportedError } from \"./socket\";\n\nexport const ACTIVITY_EVENT_SUBSCRIPTION = `\n subscription ActivityEventReceived($projectId: ID!, $input: ActivityEventFilterInput) {\n activityEventReceived(projectId: $projectId, input: $input) {\n id\n eventType\n targetKind\n targetName\n principalId\n level\n message\n payload\n metadata\n displayCategory\n displayStatus\n displayName\n displayDetail\n occurredAt\n durationMs\n }\n }\n`;\n\nexport interface ActivitySubscriptionOptions {\n readonly apiUrl: string;\n readonly credentials: Pick<Credentials, \"token\" | \"apiKey\">;\n readonly projectId: string;\n readonly input?: ActivityEventFilterInput;\n readonly onEvent: (event: ActivityEvent) => void;\n readonly onConnected?: () => void;\n readonly onError?: (error: Error) => void;\n}\n\nexport function subscribeToActivityEvents(\n options: ActivitySubscriptionOptions,\n): () => void {\n const client: SocketClient = createSocketClient({\n apiUrl: options.apiUrl,\n credentials: options.credentials,\n });\n\n const unsubscribe = client.subscribe<{ activityEventReceived?: ActivityEvent }>(\n ACTIVITY_EVENT_SUBSCRIPTION,\n { projectId: options.projectId, input: options.input },\n {\n onStart: () => options.onConnected?.(),\n onResult: (result) => {\n const event = result.data?.activityEventReceived;\n if (event) options.onEvent(event);\n },\n onError: (err) => options.onError?.(err),\n onAbort: (err) => options.onError?.(err),\n },\n );\n\n return () => {\n unsubscribe();\n client.close();\n };\n}\n","import type { ActivityEvent } from \"../api/client\";\n\nconst DISPLAY_NAME_NAMESPACES = new Set([\n \"trigger\",\n \"signal\",\n \"memory\",\n \"knowledge\",\n \"session\",\n]);\n\ntype EventStatusKey =\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"scheduled\";\n\ntype EventPresentation = {\n detail: string;\n name: string;\n targetName: string;\n};\n\nfunction toLower(value: string | undefined | null): string {\n return (value ?? \"\").toLowerCase();\n}\n\nfunction eventPayload(event: Pick<ActivityEvent, \"payload\">): Record<string, unknown> {\n const payload = event.payload ?? {};\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) {\n return {};\n }\n\n return payload as Record<string, unknown>;\n}\n\nfunction payloadString(\n payload: Record<string, unknown>,\n keys: string[],\n): string | undefined {\n for (const key of keys) {\n const value = payload[key];\n if (typeof value === \"string\" && value.trim()) {\n return value;\n }\n }\n\n return undefined;\n}\n\nfunction eventContext(\n event: Pick<ActivityEvent, \"payload\" | \"metadata\">,\n): Record<string, unknown> {\n const payload = eventPayload(event);\n const attributes = payload.attributes;\n\n return {\n ...((event.metadata as Record<string, unknown> | undefined) ?? {}),\n ...payload,\n ...(attributes && typeof attributes === \"object\" && !Array.isArray(attributes)\n ? (attributes as Record<string, unknown>)\n : {}),\n };\n}\n\nfunction displayIdentifier(value: string | undefined | null): string {\n const normalized = (value ?? \"\").trim();\n if (!normalized) return \"\";\n\n const parts = normalized.split(\":\", 2);\n if (parts.length === 2) {\n const [namespace, eventName] = parts;\n if (DISPLAY_NAME_NAMESPACES.has(namespace.trim()) && eventName.trim()) {\n return eventName.trim();\n }\n }\n\n return normalized;\n}\n\nfunction isConsoleRuntimeEvent(\n event: Pick<ActivityEvent, \"eventType\" | \"payload\" | \"metadata\">,\n): boolean {\n const type = toLower(event.eventType);\n if (type.startsWith(\"sprite.console.\")) return true;\n if (type === \"behavior.log\" || type === \"conversation.log\") return true;\n\n const context = eventContext(event);\n if (toLower(payloadString(context, [\"runtime.kind\", \"runtime_kind\"]) ?? \"\") === \"console\") {\n return true;\n }\n\n return !!payloadString(context, [\n \"console.message\",\n \"console_message\",\n \"console.level\",\n \"console_level\",\n ]);\n}\n\nfunction consoleRuntimeLabel(\n event: Pick<ActivityEvent, \"eventType\" | \"payload\" | \"metadata\">,\n): string {\n const type = toLower(event.eventType);\n if (type.startsWith(\"sprite.console.\")) {\n const parts = type.split(\".\");\n const level = parts[parts.length - 1];\n return `console.${level || \"log\"}`;\n }\n\n const context = eventContext(event);\n const level = toLower(payloadString(context, [\"console.level\", \"console_level\", \"level\"]) ?? \"log\");\n if (level === \"warning\") return \"console.warn\";\n if (level) return `console.${level}`;\n return \"console.log\";\n}\n\nfunction isToolAuditEvent(\n event: Pick<ActivityEvent, \"eventType\" | \"payload\" | \"metadata\">,\n): boolean {\n const type = toLower(event.eventType);\n if (type.startsWith(\"sprite.tool_\") || type.startsWith(\"sprite.tool.\")) {\n return true;\n }\n if (type.startsWith(\"tool.\")) return true;\n\n const context = eventContext(event);\n return !!payloadString(context, [\n \"tool.name\",\n \"tool_name\",\n \"tool.capability_id\",\n \"capability_id\",\n \"tool.error_code\",\n \"error_code\",\n ]);\n}\n\nfunction toolAuditLabel(\n event: Pick<ActivityEvent, \"eventType\" | \"payload\" | \"metadata\">,\n): string {\n const type = toLower(event.eventType);\n if (type.includes(\"started\")) return \"tool started\";\n if (type.includes(\"finished\")) return \"tool finished\";\n if (type.includes(\"failed\")) return \"tool failed\";\n return \"tool call\";\n}\n\nfunction toolAuditDetail(\n event: Pick<ActivityEvent, \"payload\" | \"metadata\">,\n): string {\n const context = eventContext(event);\n const capability = payloadString(context, [\n \"tool.capability_id\",\n \"capability_id\",\n ]);\n const tuple = [\n payloadString(context, [\"tool.application_name\", \"application_name\"]),\n payloadString(context, [\"tool.resource_name\", \"resource_name\"]),\n payloadString(context, [\"tool.tool_name\", \"tool_name\", \"tool.name\"]),\n ]\n .filter((part): part is string => !!part)\n .join(\".\");\n const errorCode = payloadString(context, [\n \"tool.error_code\",\n \"error_code\",\n \"errorCode\",\n ]);\n\n return [capability || tuple, errorCode].filter(Boolean).join(\" \");\n}\n\nfunction trimStructuredConsoleSuffix(message: string): string {\n const normalized = message.trim();\n if (!normalized) return normalized;\n\n const objectSuffixAt = normalized.search(/\\s+\\{(?:\"|\\\\\")/);\n if (objectSuffixAt > 0) {\n return normalized.slice(0, objectSuffixAt).trim();\n }\n\n const arraySuffixAt = normalized.search(/\\s+\\[(?:\\{|\"|\\\\\")/);\n if (arraySuffixAt > 0) {\n return normalized.slice(0, arraySuffixAt).trim();\n }\n\n if (normalized.startsWith(\"{\")) return normalized;\n if (normalized.startsWith(\"[{\") || normalized.startsWith(\"[\\\"\")) return normalized;\n\n return normalized;\n}\n\nfunction firstTargetCandidate(\n event: Pick<ActivityEvent, \"targetName\" | \"payload\" | \"metadata\">,\n): string {\n const context = eventContext(event);\n return (\n displayIdentifier(event.targetName) ||\n payloadString(context, [\n \"targetName\",\n \"target_name\",\n \"triggerName\",\n \"trigger_name\",\n \"behaviorName\",\n \"behavior_name\",\n \"signalName\",\n \"signal_name\",\n \"conversationName\",\n \"conversation_name\",\n \"channel\",\n \"name\",\n ]) ||\n \"\"\n );\n}\n\nfunction fallbackActionLabel(type: string | undefined): string {\n const normalized = toLower(type);\n switch (normalized) {\n case \"trigger.received\":\n return \"Trigger received\";\n case \"trigger.fired\":\n case \"flow.trigger.fired\":\n return \"Trigger fired\";\n case \"trigger.failed\":\n case \"flow.trigger.failed\":\n return \"Trigger failed\";\n case \"behavior.started\":\n case \"flow.execution.started\":\n return \"invocation started\";\n case \"behavior.finished\":\n case \"behavior.completed\":\n case \"behavior.executed\":\n case \"flow.execution.completed\":\n return \"invocation succeeded\";\n case \"behavior.failed\":\n case \"flow.execution.failed\":\n return \"invocation failed\";\n case \"signal.delivered\":\n return \"Signal delivered\";\n case \"signal.emitted\":\n case \"flow.signal.emitted\":\n return \"Signal emitted\";\n case \"conversation.started\":\n case \"flow.session.started\":\n return \"Conversation started\";\n case \"conversation.finished\":\n case \"conversation.ended\":\n case \"flow.session.closed\":\n return \"Conversation ended\";\n case \"conversation.message\":\n case \"conversation.runtime\":\n case \"flow.session.message\":\n return \"Conversation message\";\n default:\n return \"\";\n }\n}\n\nfunction inferEventPresentation(\n event: Pick<ActivityEvent, \"eventType\" | \"targetName\" | \"payload\" | \"message\" | \"metadata\">,\n): EventPresentation {\n const targetName = displayIdentifier(firstTargetCandidate(event));\n const message = event.message ?? \"\";\n\n if (isConsoleRuntimeEvent(event)) {\n const context = eventContext(event);\n const consoleMessage =\n payloadString(context, [\"console.message\", \"console_message\"]) ?? message;\n\n return {\n name: consoleRuntimeLabel(event),\n detail: trimStructuredConsoleSuffix(consoleMessage),\n targetName,\n };\n }\n\n if (isToolAuditEvent(event)) {\n return {\n name: toolAuditLabel(event),\n detail: toolAuditDetail(event),\n targetName,\n };\n }\n\n const messageLabel = message.trim();\n const actionLabel = messageLabel || fallbackActionLabel(event.eventType);\n\n if (actionLabel) {\n return {\n name: actionLabel,\n detail:\n targetName && toLower(targetName) !== toLower(actionLabel)\n ? targetName\n : \"\",\n targetName,\n };\n }\n\n if (targetName) {\n return {\n name: targetName,\n detail: \"\",\n targetName,\n };\n }\n\n const fallbackType = displayIdentifier(event.eventType);\n return {\n name: fallbackType || \"unknown\",\n detail: \"\",\n targetName: \"\",\n };\n}\n\nexport function inferActivityEventName(event: ActivityEvent): string {\n if (typeof event.displayName === \"string\" && event.displayName.trim()) {\n return event.displayName.trim();\n }\n\n return inferEventPresentation(event).name;\n}\n\nexport function inferActivityEventDetail(event: ActivityEvent): string {\n if (typeof event.displayDetail === \"string\") {\n return event.displayDetail.trim();\n }\n\n return inferEventPresentation(event).detail;\n}\n\nexport function inferActivityEventCategory(event: ActivityEvent): string {\n const displayCategory = event.displayCategory?.trim();\n if (displayCategory) return displayCategory;\n\n const raw = event.eventType ?? \"\";\n const normalized = toLower(raw);\n if (isToolAuditEvent(event)) return \"tool\";\n if (normalized.startsWith(\"sprite.tool\") || normalized.startsWith(\"tool.\")) return \"tool\";\n if (normalized.startsWith(\"flow.execution.\")) return \"behavior\";\n if (normalized.startsWith(\"flow.trigger.\")) return \"trigger\";\n if (normalized.startsWith(\"flow.session.\")) return \"conversation\";\n if (normalized.startsWith(\"flow.signal.\")) return \"signal\";\n\n const prefix = normalized.includes(\":\")\n ? normalized.split(\":\")[0]\n : normalized.split(\".\")[0];\n\n if (\n [\n \"trigger\",\n \"signal\",\n \"behavior\",\n \"conversation\",\n \"memory\",\n \"tool\",\n \"entity\",\n \"session\",\n ].includes(prefix)\n ) {\n return prefix;\n }\n\n return raw || \"unknown\";\n}\n\nexport function inferActivityEventStatus(event: ActivityEvent): EventStatusKey {\n const displayStatus = toLower(event.displayStatus);\n if (\n displayStatus === \"success\" ||\n displayStatus === \"error\" ||\n displayStatus === \"warning\" ||\n displayStatus === \"info\" ||\n displayStatus === \"scheduled\"\n ) {\n return displayStatus;\n }\n\n const level = toLower(event.level);\n if (level === \"error\") return \"error\";\n if (level === \"warning\") return \"warning\";\n\n const payload = eventPayload(event);\n if (payload.success === false) return \"error\";\n const context = eventContext(event);\n const toolStatus = toLower(payloadString(context, [\n \"tool.status\",\n \"status\",\n ]));\n if (\n toolStatus === \"failed\" ||\n toolStatus === \"error\" ||\n !!payloadString(context, [\"tool.error_code\", \"error_code\", \"errorCode\"])\n ) {\n return \"error\";\n }\n if (toolStatus === \"started\" || toolStatus === \"running\") return \"info\";\n if (toolStatus === \"succeeded\" || toolStatus === \"success\") return \"success\";\n\n const type = toLower(event.eventType);\n if (type.endsWith(\".failed\")) return \"error\";\n if (type.endsWith(\".scheduled\")) return \"scheduled\";\n if (type.endsWith(\".started\")) return \"info\";\n if (\n type.endsWith(\".finished\") ||\n type.endsWith(\".completed\") ||\n type.endsWith(\".executed\") ||\n type.endsWith(\".closed\") ||\n type.endsWith(\".ended\") ||\n type.endsWith(\".delivered\") ||\n type.endsWith(\".emitted\")\n ) {\n return \"success\";\n }\n\n return \"info\";\n}\n\nexport function inferActivityPrincipalLabel(event: ActivityEvent): string {\n const merged = {\n ...((event.metadata as Record<string, unknown> | undefined) ?? {}),\n ...eventPayload(event),\n };\n\n return (\n payloadString(merged, [\n \"principalExternalId\",\n \"principal_external_id\",\n \"entityExternalId\",\n \"entity_external_id\",\n \"externalId\",\n \"external_id\",\n ]) ??\n event.principalId ??\n \"\"\n );\n}\n","import chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport {\n createClient,\n type ActivityEvent,\n type ActivityEventFilterInput,\n type ApiClient,\n} from \"../api/client\";\nimport {\n ACTIVITY_EVENT_SUBSCRIPTION,\n type ActivitySubscriptionOptions,\n} from \"../api/subscription\";\nimport { createSocketClient } from \"../api/socket\";\nimport { watch, type WatchSubscribeHandle } from \"../api/watcher\";\nimport { loadCredentials } from \"../auth/store\";\nimport { CliError, ConfigError } from \"../errors\";\nimport {\n inferActivityEventCategory,\n inferActivityEventDetail,\n inferActivityEventName,\n inferActivityEventStatus,\n inferActivityPrincipalLabel,\n} from \"../activity/presentation\";\n\ninterface LogsOptions {\n limit?: string;\n type?: string[];\n since?: string;\n follow?: boolean;\n}\n\nconst LEVEL_COLORS: Record<string, (text: string) => string> = {\n error: chalk.red,\n warning: chalk.yellow,\n info: chalk.blue,\n success: chalk.green,\n scheduled: chalk.magenta,\n};\n\nconst FOLLOW_POLL_INTERVAL_MS = 2_000;\nconst FOLLOW_BATCH_LIMIT = 200;\n\nfunction colorLevel(level: string | null | undefined): string {\n if (!level) return chalk.gray(\"—\");\n const colorFn = LEVEL_COLORS[level] ?? chalk.gray;\n return colorFn(level.padEnd(7));\n}\n\nfunction pad(value: string, width: number): string {\n if (value.length >= width) return value;\n return value.padEnd(width);\n}\n\nfunction formatTime(isoString: string): string {\n const date = new Date(isoString);\n return date.toLocaleTimeString(\"en-GB\", { hour12: false });\n}\n\nfunction formatDuration(ms: number | null | undefined): string {\n if (ms == null) return \"\";\n if (ms < 1000) return chalk.gray(`${ms}ms`);\n return chalk.gray(`${(ms / 1000).toFixed(1)}s`);\n}\n\nfunction truncate(value: string, width: number): string {\n if (value.length <= width) return value;\n if (width <= 1) return value.slice(0, width);\n return `${value.slice(0, width - 1)}…`;\n}\n\nfunction formatHeader(): string {\n return [\n ` ${chalk.gray(pad(\"TIME\", 10))}`,\n chalk.gray(pad(\"STATUS\", 9)),\n chalk.gray(pad(\"CATEGORY\", 14)),\n chalk.gray(pad(\"NAME\", 24)),\n chalk.gray(pad(\"DURATION\", 10)),\n chalk.gray(\"DETAIL\"),\n ].join(\" \");\n}\n\nfunction formatEvent(event: ActivityEvent): string {\n const time = chalk.gray(formatTime(event.occurredAt));\n const statusKey = inferActivityEventStatus(event);\n const status = colorLevel(statusKey);\n const category = chalk.cyan(pad(inferActivityEventCategory(event), 14));\n const name = pad(truncate(inferActivityEventName(event), 24), 24);\n const duration = formatDuration(event.durationMs);\n const detail =\n inferActivityEventDetail(event) ||\n inferActivityPrincipalLabel(event) ||\n \"\";\n\n return [\n ` ${time}`,\n status,\n category,\n name,\n pad(duration || \"\", 10),\n detail ? chalk.gray(detail) : \"\",\n ].join(\" \").trimEnd();\n}\n\nfunction followPollInput(\n input: ActivityEventFilterInput | undefined,\n since: string,\n): ActivityEventFilterInput {\n return {\n ...input,\n since,\n limit: Math.max(input?.limit ?? 0, FOLLOW_BATCH_LIMIT),\n };\n}\n\nexport async function logsCommand(options: LogsOptions): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const pid = client.projectId();\n const limit = options.limit ? parseInt(options.limit, 10) : 50;\n const followStartedAt = options.follow ? new Date().toISOString() : undefined;\n\n const input: ActivityEventFilterInput = { limit };\n\n if (options.type && options.type.length > 0) {\n input.eventTypes = options.type;\n }\n\n if (options.since) {\n const since = parseSince(options.since);\n if (since) input.since = since;\n }\n\n const initialEvents = await client.projectEvents(pid, input);\n\n if (initialEvents.length === 0 && !options.follow) {\n console.log(chalk.gray(\"No events found.\"));\n return;\n }\n\n if (initialEvents.length > 0) {\n console.log(chalk.bold(`\\nActivity Log — ${initialEvents.length} events\\n`));\n console.log(formatHeader());\n console.log(chalk.gray(` ${\"─\".repeat(92)}`));\n\n for (const event of initialEvents) {\n console.log(formatEvent(event));\n }\n }\n\n if (options.follow) {\n await tailEvents(\n config.apiUrl,\n client,\n pid,\n input,\n initialEvents,\n followStartedAt ?? new Date().toISOString(),\n );\n } else {\n console.log();\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n\nasync function tailEvents(\n apiUrl: string,\n client: ApiClient,\n projectId: string,\n input: ActivityEventFilterInput | undefined,\n initialEvents: ActivityEvent[],\n followStartedAt: string,\n): Promise<void> {\n const creds = await loadCredentials();\n if (!creds || !creds.token) {\n throw new ConfigError(\"Not authenticated. Run `io login` first.\");\n }\n\n console.log(chalk.gray(\"\\n Waiting for events... (Ctrl+C to stop)\\n\"));\n\n const initialSince = initialEvents.reduce(\n (latest, event) => (event.occurredAt > latest ? event.occurredAt : latest),\n followStartedAt,\n );\n\n const socketClient = createSocketClient({ apiUrl, credentials: creds });\n const subscriptionVars: ActivitySubscriptionOptions[\"input\"] = input;\n let liveStarted = false;\n\n try {\n await watch<ActivityEvent>(\n {\n subscribe: (onEvent, onError, onConnected): WatchSubscribeHandle => {\n const unsubscribe = socketClient.subscribe<{\n activityEventReceived?: ActivityEvent;\n }>(\n ACTIVITY_EVENT_SUBSCRIPTION,\n { projectId, input: subscriptionVars },\n {\n onStart: onConnected,\n onResult: (result) => {\n const event = result.data?.activityEventReceived;\n if (event) onEvent(event);\n },\n onError,\n onAbort: onError,\n },\n );\n return { unsubscribe };\n },\n poll: async (since): Promise<readonly ActivityEvent[]> => {\n return client.projectEvents(projectId, followPollInput(input, since));\n },\n pollIntervalMs: FOLLOW_POLL_INTERVAL_MS,\n initialSince,\n getId: (event) => event.id,\n getCursor: (event) => event.occurredAt,\n seenIdLimit: 1_000,\n },\n {\n onEvent: (event) => {\n if (!liveStarted) {\n liveStarted = true;\n }\n console.log(formatEvent(event));\n },\n onConnected: (mode) => {\n if (mode === \"subscription\") {\n console.log(chalk.green(\" ● Connected — tailing live events\\n\"));\n } else {\n console.log(\n chalk.green(\n \" ● Connected — polling for live events with your authenticated session\\n\",\n ),\n );\n }\n },\n onError: (err) => {\n console.error(chalk.red(`\\n Connection error: ${err.message}`));\n },\n },\n );\n console.log(chalk.gray(\"\\n Disconnected.\"));\n } finally {\n socketClient.close();\n }\n}\n\nfunction parseSince(value: string): string | null {\n const match = value.match(/^(\\d+)([mhd])$/);\n if (!match) return value;\n\n const amount = parseInt(match[1], 10);\n const unit = match[2];\n const now = Date.now();\n\n const ms: Record<string, number> = {\n m: 60 * 1000,\n h: 60 * 60 * 1000,\n d: 24 * 60 * 60 * 1000,\n };\n\n return new Date(now - amount * (ms[unit] ?? 0)).toISOString();\n}\n","import chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { createClient } from \"../api/client\";\nimport { CliError, ConfigError } from \"../errors\";\nimport { normalizeRuntimeSignalName } from \"../build/channels\";\n\ninterface SignalEmitOptions {\n payload?: string;\n metadata?: string;\n projectId?: string;\n principalId?: string;\n causationId?: string;\n idempotencyKey?: string;\n sourceName?: string;\n json?: boolean;\n}\n\nfunction parseJsonObject(input: string | undefined, label: string): Record<string, unknown> {\n if (!input) {\n return {};\n }\n\n try {\n const parsed = JSON.parse(input) as unknown;\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n return parsed as Record<string, unknown>;\n }\n } catch {\n }\n\n throw new ConfigError(`${label} must be a JSON object`);\n}\n\nexport async function signalEmitCommand(\n name: string,\n options: SignalEmitOptions,\n): Promise<void> {\n try {\n const config = await loadConfig({ projectId: options.projectId });\n const client = createClient(config);\n const signal = normalizeRuntimeSignalName(name);\n if (!signal) {\n throw new ConfigError(\n \"signal name must be a bare event name like smoke.start or use the signal: namespace\",\n );\n }\n if (!options.principalId || options.principalId.trim() === \"\") {\n throw new ConfigError(\"signals emit requires --principal-id <id>\");\n }\n const payload = parseJsonObject(options.payload, \"payload\");\n const metadata = parseJsonObject(options.metadata, \"metadata\");\n\n const event = await client.emitSignal({\n signal,\n principalId: options.principalId,\n payload,\n metadata,\n causationId: options.causationId,\n idempotencyKey: options.idempotencyKey,\n sourceName: options.sourceName,\n });\n\n if (options.json) {\n console.log(JSON.stringify(event, null, 2));\n return;\n }\n\n console.log(chalk.green(`\\u2713 Emitted ${event.name}`));\n console.log(chalk.gray(` Event: ${event.id}`));\n console.log(chalk.gray(` Project: ${event.projectId}`));\n\n if (event.dispatchStatus) {\n console.log(chalk.gray(` Dispatch: ${event.dispatchStatus}`));\n }\n\n if (event.occurredAt) {\n console.log(chalk.gray(` At: ${event.occurredAt}`));\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { createClient, type ActivityEvent } from \"../api/client\";\nimport { createSocketClient } from \"../api/socket\";\nimport { ACTIVITY_EVENT_SUBSCRIPTION } from \"../api/subscription\";\nimport { watch, type WatchSubscribeHandle } from \"../api/watcher\";\nimport { loadCredentials } from \"../auth/store\";\nimport { CliError, ConfigError } from \"../errors\";\nimport {\n inferActivityEventCategory,\n inferActivityEventDetail,\n inferActivityEventName,\n inferActivityEventStatus,\n} from \"../activity/presentation\";\n\ninterface ReconcileOptions {\n watch?: boolean;\n projectId?: string;\n}\n\nconst POLL_INTERVAL_MS = 2_000;\nconst POLL_BATCH_LIMIT = 200;\n\nfunction formatEvent(event: ActivityEvent): string {\n const time = new Date(event.occurredAt).toLocaleTimeString(\"en-GB\", {\n hour12: false,\n });\n const status = inferActivityEventStatus(event);\n const category = inferActivityEventCategory(event);\n const name = inferActivityEventName(event);\n const detail = inferActivityEventDetail(event) ?? \"\";\n return ` ${chalk.gray(time)} ${chalk.cyan(category)} ${name}${\n detail ? ` ${chalk.gray(detail)}` : \"\"\n }${status ? ` ${chalk.gray(`(${status})`)}` : \"\"}`;\n}\n\nexport async function reconcileCommand(options: ReconcileOptions): Promise<void> {\n try {\n const config = await loadConfig();\n const client = createClient(config);\n const projectId = options.projectId ?? client.projectId();\n\n console.log(chalk.gray(`Requesting reconciliation for project ${projectId}…`));\n const accepted = await client.reconcileProject(projectId);\n if (!accepted) {\n throw new CliError(\n \"Runtime rejected the reconcile request.\",\n \"RECONCILE_REJECTED\",\n );\n }\n console.log(chalk.green(\"✓ Reconcile requested.\"));\n\n if (!options.watch) {\n return;\n }\n\n const creds = await loadCredentials();\n if (!creds?.token) {\n throw new ConfigError(\"Not authenticated. Run `io login` first.\");\n }\n\n console.log(\n chalk.gray(\"\\nTailing activity for this project (Ctrl+C to stop)…\\n\"),\n );\n\n const socketClient = createSocketClient({\n apiUrl: config.apiUrl,\n credentials: creds,\n });\n const initialSince = new Date().toISOString();\n\n try {\n await watch<ActivityEvent>(\n {\n subscribe: (onEvent, onError, onConnected): WatchSubscribeHandle => {\n const unsubscribe = socketClient.subscribe<{\n activityEventReceived?: ActivityEvent;\n }>(\n ACTIVITY_EVENT_SUBSCRIPTION,\n { projectId, input: { limit: POLL_BATCH_LIMIT } },\n {\n onStart: onConnected,\n onResult: (result) => {\n const event = result.data?.activityEventReceived;\n if (event) onEvent(event);\n },\n onError,\n onAbort: onError,\n },\n );\n return { unsubscribe };\n },\n poll: async (since): Promise<readonly ActivityEvent[]> => {\n return client.projectEvents(projectId, {\n since,\n limit: POLL_BATCH_LIMIT,\n });\n },\n pollIntervalMs: POLL_INTERVAL_MS,\n initialSince,\n getId: (event) => event.id,\n getCursor: (event) => event.occurredAt,\n },\n {\n onEvent: (event) => console.log(formatEvent(event)),\n onConnected: (mode) => {\n if (mode === \"subscription\") {\n console.log(chalk.green(\" ● Connected — tailing live events\\n\"));\n } else {\n console.log(\n chalk.green(\n \" ● Connected — polling for live events with your authenticated session\\n\",\n ),\n );\n }\n },\n },\n );\n console.log(chalk.gray(\"\\nDisconnected.\"));\n } finally {\n socketClient.close();\n }\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import { readFile } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\nimport chalk from \"chalk\";\nimport { loadConfig } from \"../config/loader\";\nimport { createClient } from \"../api/client\";\nimport { stableStringify } from \"../build/stable-json\";\nimport type {\n Catalog,\n ResourceDescriptor,\n SignalDescriptor,\n ToolDescriptor,\n ExecutorDescriptor,\n} from \"../build/catalog\";\nimport { CliError } from \"../errors\";\n\ninterface CatalogShowOptions {\n remote?: boolean;\n json?: boolean;\n buildDir?: string;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isCatalogShape(value: unknown): value is Catalog {\n if (!isRecord(value)) return false;\n return (\n value.contract_version === \"io.catalog.v1\" &&\n value.snapshot_version === \"io_runtime.snapshot.v2\" &&\n typeof value.catalog_hash === \"string\" &&\n isRecord(value.resources) &&\n isRecord(value.signals) &&\n isRecord(value.tools) &&\n isRecord(value.schemas)\n );\n}\n\nasync function readLocalCatalog(buildDir: string): Promise<Catalog> {\n const path = resolve(process.cwd(), buildDir, \"catalog.json\");\n let raw: string;\n try {\n raw = await readFile(path, \"utf-8\");\n } catch (err: unknown) {\n if (\n err instanceof Error &&\n \"code\" in err &&\n (err as NodeJS.ErrnoException).code === \"ENOENT\"\n ) {\n throw new CliError(\n `Local catalog not found at ${path}. Run \\`io build\\` or \\`io deploy\\` first.`,\n \"CATALOG_NOT_FOUND\",\n );\n }\n throw err;\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch (err: unknown) {\n throw new CliError(\n `Local catalog at ${path} is not valid JSON: ${\n err instanceof Error ? err.message : String(err)\n }`,\n \"CATALOG_INVALID_JSON\",\n );\n }\n if (!isCatalogShape(parsed)) {\n throw new CliError(\n `Local catalog at ${path} does not match the io.catalog.v1 catalog shape.`,\n \"CATALOG_SHAPE_MISMATCH\",\n );\n }\n return parsed;\n}\n\nfunction describeExecutor(executor: ExecutorDescriptor): string {\n switch (executor.kind) {\n case \"platform_tool\":\n return `${executor.provider_kind}.${executor.backend_kind}.${executor.operation}`;\n case \"stream_publish\":\n return `${executor.provider_kind}.${executor.backend_kind} → ${executor.destination_ref.slice(0, 19)}…`;\n case \"webhook_response\":\n return \"webhook response\";\n case \"http_request\":\n return `${executor.method} ${executor.url}`;\n case \"graphql_request\":\n return `POST ${executor.endpoint}${executor.operation_name ? ` (${executor.operation_name})` : \"\"}`;\n case \"http_operation\":\n return `${executor.method} ${executor.base_url}${executor.path}`;\n case \"graphql_operation\":\n return `POST ${executor.endpoint}${executor.operation_name ? ` (${executor.operation_name})` : \"\"}`;\n case \"unsupported\":\n return chalk.red(`unsupported (${executor.reason})`);\n }\n}\n\nfunction formatCatalog(catalog: Catalog, label: string): string {\n const lines: string[] = [];\n lines.push(chalk.bold(`\\nCatalog (${label})`));\n lines.push(\n ` ${chalk.gray(\"contract_version:\")} ${catalog.contract_version}`,\n );\n lines.push(\n ` ${chalk.gray(\"snapshot_version:\")} ${catalog.snapshot_version}`,\n );\n lines.push(` ${chalk.gray(\"catalog_hash: \")} ${catalog.catalog_hash}`);\n lines.push(\"\");\n lines.push(chalk.bold(\" Counts\"));\n lines.push(` resources: ${Object.keys(catalog.resources).length}`);\n lines.push(` signals: ${Object.keys(catalog.signals).length}`);\n lines.push(` tools: ${Object.keys(catalog.tools).length}`);\n lines.push(` schemas: ${Object.keys(catalog.schemas).length}`);\n\n const resourceIds = Object.keys(catalog.resources).sort();\n if (resourceIds.length > 0) {\n lines.push(\"\");\n lines.push(chalk.bold(\" Resources\"));\n for (const id of resourceIds) {\n const resource: ResourceDescriptor = catalog.resources[id]!;\n lines.push(\n ` ${chalk.cyan(resource.id)} ${chalk.gray(\n `${resource.resource_kind}/${resource.backend_kind} scope=${resource.binding_scope} cred=${resource.credential_source}`,\n )}`,\n );\n for (const signalId of resource.signals) {\n const signal: SignalDescriptor | undefined = catalog.signals[signalId];\n if (!signal) continue;\n lines.push(\n ` ${chalk.magenta(\"signal\")} ${signal.name} ${chalk.gray(\n `(${signal.mode}, scope=${signal.scope})`,\n )}`,\n );\n }\n for (const toolId of resource.tools) {\n const tool: ToolDescriptor | undefined = catalog.tools[toolId];\n if (!tool) continue;\n lines.push(\n ` ${chalk.yellow(\"tool \")} ${tool.name} ${chalk.gray(\n `(${tool.effect}, audit=${tool.audit_requirement}) ${describeExecutor(tool.executor)}`,\n )}`,\n );\n }\n }\n }\n lines.push(\"\");\n return lines.join(\"\\n\");\n}\n\nexport async function catalogShowCommand(\n options: CatalogShowOptions,\n): Promise<void> {\n try {\n let catalog: Catalog;\n let label: string;\n\n if (options.remote) {\n const config = await loadConfig();\n if (!config.apiUrl || !config.projectId) {\n throw new CliError(\n \"No apiUrl or projectId configured. Run `io login` and set a project first.\",\n \"CONFIG_MISSING\",\n );\n }\n const client = createClient(config);\n const remote = await client.fetchRemoteCatalog(client.projectId());\n if (!remote) {\n console.log(\n chalk.gray(\"No active deployment catalog for this project yet.\"),\n );\n return;\n }\n catalog = remote;\n label = `remote: project ${client.projectId()}`;\n } else {\n const buildDir = options.buildDir ?? \".io\";\n catalog = await readLocalCatalog(buildDir);\n label = `local: ${join(buildDir, \"catalog.json\")}`;\n }\n\n if (options.json) {\n process.stdout.write(stableStringify(catalog, 2));\n process.stdout.write(\"\\n\");\n return;\n }\n\n process.stdout.write(formatCatalog(catalog, label));\n } catch (err: unknown) {\n if (err instanceof CliError) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n throw err;\n }\n}\n","import { Command } from \"commander\";\nimport { buildCommand } from \"./commands/build\";\nimport { deployCommand } from \"./commands/deploy\";\nimport { loginCommand } from \"./commands/login\";\nimport { logoutCommand } from \"./commands/logout\";\nimport { whoamiCommand } from \"./commands/whoami\";\nimport { initCommand } from \"./commands/init\";\nimport {\n projectsListCommand,\n projectsCreateCommand,\n projectsDeleteCommand,\n} from \"./commands/projects\";\nimport {\n secretsSetCommand,\n secretsListCommand,\n secretsRemoveCommand,\n} from \"./commands/secrets\";\nimport {\n principalsCreateCommand,\n principalsDeleteCommand,\n principalsListCommand,\n principalsUpdateCommand,\n} from \"./commands/principals\";\nimport { quotaCommand } from \"./commands/quota\";\nimport { logsCommand } from \"./commands/logs\";\nimport { signalEmitCommand } from \"./commands/signals\";\nimport { reconcileCommand } from \"./commands/reconcile\";\nimport { catalogShowCommand } from \"./commands/catalog\";\n\ndeclare const __CLI_VERSION__: string;\n\nconst program = new Command();\n\nprogram\n .name(\"io\")\n .description(\"IO CLI — build and deploy behaviors\")\n .version(__CLI_VERSION__);\n\nprogram\n .command(\"init\")\n .description(\"Initialize io.config.json for the current project\")\n .option(\"--yes\", \"Overwrite existing config without prompting\")\n .action(initCommand);\n\nprogram\n .command(\"build\")\n .description(\"Build behaviors from the io/ directory\")\n .option(\"--dir <path>\", \"Source directory\", \"io\")\n .option(\"--minify\", \"Minify bundles\", false)\n .action(buildCommand);\n\nprogram\n .command(\"deploy\")\n .description(\"Build and package for deployment\")\n .option(\"--dir <path>\", \"Source directory\", \"io\")\n .option(\"--no-minify\", \"Skip minification\")\n .option(\"--yes\", \"Skip confirmation prompt\")\n .option(\"--watch\", \"Tail deployment status until it reaches a terminal state\")\n .action(deployCommand);\n\nprogram\n .command(\"login\")\n .description(\"Authenticate with the IO platform\")\n .option(\"--token <value>\", \"API token for CI/CD environments\")\n .action(loginCommand);\n\nprogram\n .command(\"logout\")\n .description(\"Remove stored credentials\")\n .action(logoutCommand);\n\nprogram\n .command(\"whoami\")\n .description(\"Show current authentication status\")\n .action(whoamiCommand);\n\nconst projects = program\n .command(\"projects\")\n .description(\"Manage projects\");\n\nprojects\n .command(\"list\")\n .description(\"List all projects\")\n .action(projectsListCommand);\n\nprojects\n .command(\"create <name>\")\n .description(\"Create a new project\")\n .action(projectsCreateCommand);\n\nprojects\n .command(\"delete <id>\")\n .description(\"Delete a project (requires typing the project name)\")\n .option(\"--yes\", \"Skip the name confirmation prompt\")\n .option(\"--organization-id <id>\", \"Organization that owns the project\")\n .action(projectsDeleteCommand);\n\nconst secrets = program\n .command(\"secrets\")\n .description(\"Manage project secrets\");\n\nsecrets\n .command(\"set <name> <value>\")\n .description(\"Set a secret value\")\n .option(\"--target <targets...>\", \"Restrict to specific targets\")\n .action(secretsSetCommand);\n\nsecrets\n .command(\"list\")\n .description(\"List all secrets\")\n .action(secretsListCommand);\n\nsecrets\n .command(\"remove <name>\")\n .description(\"Remove a secret\")\n .action(secretsRemoveCommand);\n\nconst principals = program\n .command(\"principals\")\n .description(\"Manage project principals\");\n\nprincipals\n .command(\"list\")\n .description(\"List principals in the active project\")\n .option(\"--project-id <id>\", \"Override the configured project ID\")\n .action(principalsListCommand);\n\nprincipals\n .command(\"create <external-id>\")\n .description(\"Create a principal in the active project\")\n .option(\"--project-id <id>\", \"Override the configured project ID\")\n .option(\"--state <state>\", \"Principal state: active, inactive, or archived\")\n .option(\"--metadata <json>\", \"Principal metadata as a JSON object\")\n .action(principalsCreateCommand);\n\nprincipals\n .command(\"update <id>\")\n .description(\"Update a principal\")\n .option(\"--project-id <id>\", \"Override the configured project ID\")\n .option(\"--external-id <external-id>\", \"Replace the external ID\")\n .option(\"--state <state>\", \"Principal state: active, inactive, or archived\")\n .option(\"--metadata <json>\", \"Replace principal metadata with a JSON object\")\n .action(principalsUpdateCommand);\n\nprincipals\n .command(\"delete <id>\")\n .description(\"Delete a principal\")\n .option(\"--project-id <id>\", \"Override the configured project ID\")\n .action(principalsDeleteCommand);\n\nconst signals = program\n .command(\"signals\")\n .description(\"Emit runtime signals\");\n\nsignals\n .command(\"emit <name>\")\n .description(\"Emit a signal into the active project's event stream\")\n .option(\"--payload <json>\", \"Signal payload as a JSON object\", \"{}\")\n .option(\"--metadata <json>\", \"Signal metadata as a JSON object\", \"{}\")\n .option(\"--project-id <id>\", \"Override the configured project ID\")\n .requiredOption(\"--principal-id <id>\", \"Project principal ID for the emitted signal\")\n .option(\"--causation-id <id>\", \"Causation ID to attach to the signal\")\n .option(\"--idempotency-key <key>\", \"Optional idempotency key\")\n .option(\"--source-name <name>\", \"Optional source name for the emitted signal\")\n .option(\"--json\", \"Print the raw emitted event as JSON\", false)\n .action(signalEmitCommand);\n\nprogram\n .command(\"quota\")\n .description(\"Show current quota usage for the active organization\")\n .action(quotaCommand);\n\nprogram\n .command(\"logs\")\n .description(\"Show recent activity events\")\n .option(\"--limit <count>\", \"Number of events to show\", \"50\")\n .option(\"--type <types...>\", \"Filter by event types\")\n .option(\"--since <duration>\", \"Show events since (e.g. 15m, 1h, 7d)\")\n .option(\"--follow\", \"Tail events in real-time\")\n .action(logsCommand);\n\nprogram\n .command(\"reconcile\")\n .description(\"Force runtime to reconcile resources for the active project\")\n .option(\"--project-id <id>\", \"Override the configured project ID\")\n .option(\"--watch\", \"Tail activity events after the reconcile request\")\n .action(reconcileCommand);\n\nconst catalog = program\n .command(\"catalog\")\n .description(\"Inspect the v2 deployment catalog\");\n\ncatalog\n .command(\"show\")\n .description(\"Print the local or remote deployment catalog\")\n .option(\"--remote\", \"Show the active deployment catalog from runtime\")\n .option(\"--json\", \"Print the raw catalog JSON\")\n .option(\"--build-dir <path>\", \"Local build directory\", \".io\")\n .action(catalogShowCommand);\n\nprogram.parse();\n"]}