@kaelen-ai/cli 0.1.14 → 0.1.15
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 +307 -114
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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/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","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 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 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 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 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 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 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 { 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 voice_seconds: \"Voice Seconds\",\n compute_gb_sec: \"Compute (GB·s)\",\n storage_gb: \"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(18)} ${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 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 const payload = parseJsonObject(options.payload, \"payload\");\n const metadata = parseJsonObject(options.metadata, \"metadata\");\n\n const event = await client.emitSignal({\n signal,\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 { 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 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 .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/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"]}
|