@perstack/core 0.0.34 → 0.0.36
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/src/index.d.ts +955 -970
- package/dist/src/index.js +2 -56
- package/dist/src/index.js.map +1 -1
- package/package.json +1 -1
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/adapters/base-adapter.ts","../../src/adapters/event-creators.ts","../../src/adapters/registry.ts","../../src/constants/constants.ts","../../src/known-models/index.ts","../../src/schemas/message-part.ts","../../src/schemas/activity.ts","../../src/schemas/message.ts","../../src/schemas/runtime-name.ts","../../src/schemas/tool-call.ts","../../src/schemas/tool-result.ts","../../src/schemas/usage.ts","../../src/schemas/checkpoint.ts","../../src/schemas/provider-tools.ts","../../src/schemas/skill.ts","../../src/schemas/expert.ts","../../src/schemas/job.ts","../../src/schemas/lockfile.ts","../../src/schemas/provider-config.ts","../../src/schemas/perstack-toml.ts","../../src/schemas/run-command.ts","../../src/schemas/runtime.ts","../../src/schemas/step.ts","../../src/utils/activity.ts","../../src/utils/env-filter.ts","../../src/utils/event-filter.ts","../../src/utils/zod-error.ts"],"names":["z","isPrivateOrLocalIP","sseEndpointSchema","createId","activities","toolCalls"],"mappings":"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","file":"index.js","sourcesContent":["import type { ChildProcess } from \"node:child_process\"\nimport { spawn } from \"node:child_process\"\nimport type { Expert } from \"../schemas/expert.js\"\nimport type {\n AdapterRunParams,\n AdapterRunResult,\n PrerequisiteResult,\n RuntimeAdapter,\n RuntimeExpertConfig,\n} from \"./types.js\"\n\nexport type ExecResult = {\n stdout: string\n stderr: string\n exitCode: number\n}\n\nexport abstract class BaseAdapter implements RuntimeAdapter {\n abstract readonly name: string\n abstract checkPrerequisites(): Promise<PrerequisiteResult>\n abstract run(params: AdapterRunParams): Promise<AdapterRunResult>\n\n convertExpert(expert: Expert): RuntimeExpertConfig {\n return { instruction: expert.instruction }\n }\n\n protected execCommand(args: string[]): Promise<ExecResult> {\n return new Promise((resolve) => {\n const [cmd, ...cmdArgs] = args\n if (!cmd) {\n resolve({ stdout: \"\", stderr: \"\", exitCode: 127 })\n return\n }\n const proc = spawn(cmd, cmdArgs, { cwd: process.cwd(), stdio: [\"pipe\", \"pipe\", \"pipe\"] })\n let stdout = \"\"\n let stderr = \"\"\n proc.stdout.on(\"data\", (data) => {\n stdout += data.toString()\n })\n proc.stderr.on(\"data\", (data) => {\n stderr += data.toString()\n })\n proc.on(\"close\", (code) => {\n resolve({ stdout, stderr, exitCode: code ?? 127 })\n })\n proc.on(\"error\", () => {\n resolve({ stdout: \"\", stderr: \"\", exitCode: 127 })\n })\n })\n }\n\n protected executeWithTimeout(proc: ChildProcess, timeout: number): Promise<ExecResult> {\n return new Promise((resolve, reject) => {\n let stdout = \"\"\n let stderr = \"\"\n const timer = setTimeout(() => {\n proc.kill(\"SIGTERM\")\n reject(new Error(`${this.name} timed out after ${timeout}ms`))\n }, timeout)\n proc.stdout?.on(\"data\", (data) => {\n stdout += data.toString()\n })\n proc.stderr?.on(\"data\", (data) => {\n stderr += data.toString()\n })\n proc.on(\"close\", (code) => {\n clearTimeout(timer)\n resolve({ stdout, stderr, exitCode: code ?? 127 })\n })\n proc.on(\"error\", (err) => {\n clearTimeout(timer)\n reject(err)\n })\n })\n }\n}\n","import { createId } from \"@paralleldrive/cuid2\"\nimport type { Checkpoint } from \"../schemas/checkpoint.js\"\nimport type { ExpertMessage, ToolMessage } from \"../schemas/message.js\"\nimport type { RunEvent, RuntimeEvent } from \"../schemas/runtime.js\"\nimport type { RuntimeName } from \"../schemas/runtime-name.js\"\nimport type { ToolCall } from \"../schemas/tool-call.js\"\nimport type { ToolResult } from \"../schemas/tool-result.js\"\nimport type { Usage } from \"../schemas/usage.js\"\n\nexport function createEmptyUsage(): Usage {\n return {\n inputTokens: 0,\n outputTokens: 0,\n reasoningTokens: 0,\n totalTokens: 0,\n cachedInputTokens: 0,\n }\n}\n\nexport type CreateCheckpointParams = {\n jobId: string\n runId: string\n expertKey: string\n expert: { key: string; name: string; version: string }\n output: string\n runtime: RuntimeName\n}\n\nexport function createNormalizedCheckpoint(params: CreateCheckpointParams): Checkpoint {\n const { jobId, runId, expert, output, runtime } = params\n const checkpointId = createId()\n const expertMessage: ExpertMessage = {\n id: createId(),\n type: \"expertMessage\",\n contents: [{ type: \"textPart\", id: createId(), text: output }],\n }\n return {\n id: checkpointId,\n jobId,\n runId,\n status: \"completed\",\n stepNumber: 1,\n messages: [expertMessage],\n expert: { key: expert.key, name: expert.name, version: expert.version },\n usage: createEmptyUsage(),\n metadata: { runtime },\n }\n}\n\nexport function createStartRunEvent(\n jobId: string,\n runId: string,\n expertKey: string,\n checkpoint: Checkpoint,\n): RunEvent {\n return {\n type: \"startRun\",\n id: createId(),\n expertKey,\n timestamp: Date.now(),\n jobId,\n runId,\n stepNumber: checkpoint.stepNumber,\n initialCheckpoint: checkpoint,\n inputMessages: [],\n }\n}\n\nexport function createRuntimeInitEvent(\n jobId: string,\n runId: string,\n expertName: string,\n runtime: RuntimeName,\n version: string,\n query?: string,\n): RuntimeEvent {\n return {\n type: \"initializeRuntime\",\n id: createId(),\n timestamp: Date.now(),\n jobId,\n runId,\n runtimeVersion: version,\n runtime,\n expertName,\n experts: [],\n model: `${runtime}:default`,\n maxRetries: 0,\n timeout: 0,\n query,\n }\n}\n\nexport function createCompleteRunEvent(\n jobId: string,\n runId: string,\n expertKey: string,\n checkpoint: Checkpoint,\n output: string,\n startedAt?: number,\n): RunEvent {\n const lastMessage = checkpoint.messages[checkpoint.messages.length - 1]\n return {\n type: \"completeRun\",\n id: createId(),\n expertKey,\n timestamp: Date.now(),\n jobId,\n runId,\n stepNumber: checkpoint.stepNumber,\n checkpoint,\n step: {\n stepNumber: checkpoint.stepNumber,\n newMessages: lastMessage ? [lastMessage] : [],\n usage: createEmptyUsage(),\n startedAt: startedAt ?? Date.now(),\n },\n text: output,\n usage: createEmptyUsage(),\n }\n}\n\nexport function createCallToolsEvent(\n jobId: string,\n runId: string,\n expertKey: string,\n stepNumber: number,\n toolCalls: ToolCall[],\n _checkpoint: Checkpoint,\n): RunEvent {\n const expertMessage: ExpertMessage = {\n id: createId(),\n type: \"expertMessage\",\n contents: [],\n }\n return {\n type: \"callTools\",\n id: createId(),\n expertKey,\n timestamp: Date.now(),\n jobId,\n runId,\n stepNumber,\n newMessage: expertMessage,\n toolCalls,\n usage: createEmptyUsage(),\n }\n}\n\nexport function createResolveToolResultsEvent(\n jobId: string,\n runId: string,\n expertKey: string,\n stepNumber: number,\n toolResults: ToolResult[],\n): RunEvent {\n return {\n type: \"resolveToolResults\",\n id: createId(),\n expertKey,\n timestamp: Date.now(),\n jobId,\n runId,\n stepNumber,\n toolResults,\n }\n}\n\nexport function createToolMessage(\n toolCallId: string,\n toolName: string,\n resultText: string,\n): ToolMessage {\n return {\n id: createId(),\n type: \"toolMessage\",\n contents: [\n {\n type: \"toolResultPart\",\n id: createId(),\n toolCallId,\n toolName,\n contents: [{ type: \"textPart\", id: createId(), text: resultText }],\n },\n ],\n }\n}\n","import type { RuntimeName } from \"../schemas/runtime-name.js\"\nimport type { RuntimeAdapter } from \"./types.js\"\n\nconst adapters: Map<RuntimeName, () => RuntimeAdapter> = new Map()\n\nexport function registerAdapter(runtime: RuntimeName, factory: () => RuntimeAdapter): void {\n adapters.set(runtime, factory)\n}\n\nexport function getAdapter(runtime: RuntimeName): RuntimeAdapter {\n const factory = adapters.get(runtime)\n if (!factory) {\n throw new Error(\n `Runtime \"${runtime}\" is not registered. Available runtimes: ${Array.from(adapters.keys()).join(\", \")}`,\n )\n }\n return factory()\n}\n\nexport function isAdapterAvailable(runtime: RuntimeName): boolean {\n return adapters.has(runtime)\n}\n\nexport function getRegisteredRuntimes(): RuntimeName[] {\n return Array.from(adapters.keys())\n}\n","export const defaultPerstackApiBaseUrl = \"https://api.perstack.ai\"\n\n// Organization\nexport const organizationNameRegex = /^[a-z0-9][a-z0-9_.-]*$/\nexport const maxOrganizationNameLength = 128\n\n// Application\nexport const maxApplicationNameLength = 255\n\n// Expert\nexport const expertKeyRegex =\n /^((?:@[a-z0-9][a-z0-9_.-]*\\/)?[a-z0-9][a-z0-9_.-]*)(?:@((?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[\\w.-]+)?(?:\\+[\\w.-]+)?)|@([a-z0-9][a-z0-9_.-]*))?$/\nexport const expertNameRegex = /^(@[a-z0-9][a-z0-9_-]*\\/)?[a-z0-9][a-z0-9_-]*$/\nexport const expertVersionRegex =\n /^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[\\w.-]+)?(?:\\+[\\w.-]+)?$/\nexport const tagNameRegex = /^[a-z0-9][a-z0-9_-]*$/\nexport const maxExpertNameLength = 255\nexport const maxExpertVersionTagLength = 255\nexport const maxExpertKeyLength = 511\nexport const maxExpertDescriptionLength = 1024 * 2\nexport const maxExpertInstructionLength = 1024 * 20\nexport const maxExpertSkillItems = 255\nexport const maxExpertDelegateItems = 255\nexport const maxExpertTagItems = 8\nexport const defaultMaxSteps = 100\nexport const defaultMaxRetries = 5\nexport const defaultTimeout = 5 * 1000 * 60\n\n// ExpertJob\nexport const maxExpertJobQueryLength = 1024 * 20\nexport const maxExpertJobFileNameLength = 1024 * 10\n\n// Skill\nexport const packageWithVersionRegex =\n /^(?:@[a-z0-9][a-z0-9_.-]*\\/)?[a-z0-9][a-z0-9_.-]*(?:@(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[\\w.-]+)?(?:\\+[\\w.-]+)?|@[a-z0-9][a-z0-9_.-]*)?$/\nexport const urlSafeRegex = /^[a-z0-9][a-z0-9_-]*$/\nexport const maxSkillNameLength = 255\nexport const maxSkillDescriptionLength = 1024 * 2\nexport const maxSkillRuleLength = 1024 * 2\nexport const maxSkillPickOmitItems = 255\nexport const maxSkillRequiredEnvItems = 255\nexport const maxSkillToolNameLength = 255\nexport const maxSkillEndpointLength = 1024 * 2\nexport const maxSkillInputJsonSchemaLength = 1024 * 20\nexport const maxSkillToolItems = 255\n\n// Checkpoint\nexport const maxCheckpointToolCallIdLength = 255\n\n// Workspace\nexport const envNameRegex = /^[a-zA-Z0-9][a-zA-Z0-9_-]*$/\nexport const maxEnvNameLength = 255\n","export const knownModels = [\n {\n provider: \"anthropic\",\n models: [\n // https://docs.claude.com/en/docs/about-claude/models/overview#model-comparison-table\n {\n name: \"claude-opus-4-5\",\n contextWindow: 200_000,\n maxOutputTokens: 32_000,\n },\n {\n name: \"claude-opus-4-1\",\n contextWindow: 200_000,\n maxOutputTokens: 32_000,\n },\n {\n name: \"claude-opus-4-20250514\",\n contextWindow: 200_000,\n maxOutputTokens: 32_000,\n },\n {\n name: \"claude-sonnet-4-5\",\n contextWindow: 200_000,\n maxOutputTokens: 64_000,\n },\n {\n name: \"claude-sonnet-4-20250514\",\n contextWindow: 200_000,\n maxOutputTokens: 64_000,\n },\n {\n name: \"claude-3-7-sonnet-20250219\",\n contextWindow: 200_000,\n maxOutputTokens: 64_000,\n },\n {\n name: \"claude-haiku-4-5\",\n contextWindow: 200_000,\n maxOutputTokens: 8_192,\n },\n {\n name: \"claude-3-5-haiku-latest\",\n contextWindow: 200_000,\n maxOutputTokens: 8_192,\n },\n ],\n },\n {\n provider: \"google\",\n models: [\n // https://ai.google.dev/gemini-api/docs/models#gemini-3-pro\n {\n name: \"gemini-3-pro-preview\",\n contextWindow: 1_048_576,\n maxOutputTokens: 65_536,\n },\n // https://ai.google.dev/gemini-api/docs/models#gemini-2.5-pro\n {\n name: \"gemini-2.5-pro\",\n contextWindow: 1_048_576,\n maxOutputTokens: 65_536,\n },\n // https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash\n {\n name: \"gemini-2.5-flash\",\n contextWindow: 1_048_576,\n maxOutputTokens: 65_536,\n },\n // https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-lite\n {\n name: \"gemini-2.5-flash-lite\",\n contextWindow: 1_048_576,\n maxOutputTokens: 65_536,\n },\n ],\n },\n {\n provider: \"openai\",\n models: [\n // https://platform.openai.com/docs/models/gpt-5\n {\n name: \"gpt-5\",\n contextWindow: 400_000,\n maxOutputTokens: 128_000,\n },\n // https://platform.openai.com/docs/models/gpt-5-mini\n {\n name: \"gpt-5-mini\",\n contextWindow: 400_000,\n maxOutputTokens: 128_000,\n },\n // https://platform.openai.com/docs/models/gpt-5-nano\n {\n name: \"gpt-5-nano\",\n contextWindow: 400_000,\n maxOutputTokens: 128_000,\n },\n // https://platform.openai.com/docs/models/gpt-5-chat-latest\n {\n name: \"gpt-5-chat-latest\",\n contextWindow: 128_000,\n maxOutputTokens: 16_384,\n },\n // https://platform.openai.com/docs/models/o4-mini\n {\n name: \"o4-mini\",\n contextWindow: 200_000,\n maxOutputTokens: 100_000,\n },\n // https://platform.openai.com/docs/models/o3\n {\n name: \"o3\",\n contextWindow: 200_000,\n maxOutputTokens: 10_000,\n },\n // https://platform.openai.com/docs/models/o3-mini\n {\n name: \"o3-mini\",\n contextWindow: 200_000,\n maxOutputTokens: 10_000,\n },\n // https://platform.openai.com/docs/models/gpt-4.1\n {\n name: \"gpt-4.1\",\n contextWindow: 1_047_576,\n maxOutputTokens: 32_768,\n },\n ],\n },\n {\n provider: \"deepseek\",\n models: [\n {\n name: \"deepseek-chat\",\n contextWindow: 128_000,\n maxOutputTokens: 8_192,\n },\n {\n name: \"deepseek-reasoner\",\n contextWindow: 128_000,\n maxOutputTokens: 64_000,\n },\n ],\n },\n {\n provider: \"ollama\",\n models: [\n // https://platform.openai.com/docs/models/gpt-oss-20b\n {\n name: \"gpt-oss:20b\",\n contextWindow: 131_072,\n maxOutputTokens: 131_072,\n },\n // https://platform.openai.com/docs/models/gpt-oss-120b\n {\n name: \"gpt-oss:120b\",\n contextWindow: 131_072,\n maxOutputTokens: 131_072,\n },\n // https://ai.google.dev/gemma/docs/core/model_card_3\n {\n name: \"gemma3:1b\",\n contextWindow: 32_000,\n maxOutputTokens: 32_000,\n },\n // https://ai.google.dev/gemma/docs/core/model_card_3\n {\n name: \"gemma3:4b\",\n contextWindow: 128_000,\n maxOutputTokens: 128_000,\n },\n // https://ai.google.dev/gemma/docs/core/model_card_3\n {\n name: \"gemma3:12b\",\n contextWindow: 128_000,\n maxOutputTokens: 128_000,\n },\n // https://ai.google.dev/gemma/docs/core/model_card_3\n {\n name: \"gemma3:27b\",\n contextWindow: 128_000,\n maxOutputTokens: 128_000,\n },\n ],\n },\n]\n","import { z } from \"zod\"\n\n/** Base properties shared by all message parts */\nexport interface BasePart {\n /** Unique identifier for this part */\n id: string\n}\n\nexport const basePartSchema = z.object({\n id: z.string(),\n})\nbasePartSchema satisfies z.ZodType<BasePart>\n\n/** Plain text content */\nexport interface TextPart extends BasePart {\n type: \"textPart\"\n /** The text content */\n text: string\n}\n\nexport const textPartSchema = basePartSchema.extend({\n type: z.literal(\"textPart\"),\n text: z.string(),\n})\ntextPartSchema satisfies z.ZodType<TextPart>\n\n/** Image referenced by URL */\nexport interface ImageUrlPart extends BasePart {\n type: \"imageUrlPart\"\n /** URL to the image */\n url: string\n /** MIME type of the image */\n mimeType: string\n}\n\nexport const imageUrlPartSchema = basePartSchema.extend({\n type: z.literal(\"imageUrlPart\"),\n url: z.url(),\n mimeType: z.string(),\n})\nimageUrlPartSchema satisfies z.ZodType<ImageUrlPart>\n\n/** Image with base64-encoded inline data */\nexport interface ImageInlinePart extends BasePart {\n type: \"imageInlinePart\"\n /** Base64-encoded image data */\n encodedData: string\n /** MIME type of the image */\n mimeType: string\n}\n\nexport const imageInlinePartSchema = basePartSchema.extend({\n type: z.literal(\"imageInlinePart\"),\n encodedData: z.string(),\n mimeType: z.string(),\n})\nimageInlinePartSchema satisfies z.ZodType<ImageInlinePart>\n\n/** Image with binary data (internal use) */\nexport interface ImageBinaryPart extends BasePart {\n type: \"imageBinaryPart\"\n /** Binary data as string */\n data: string\n /** MIME type of the image */\n mimeType: string\n}\n\nexport const imageBinaryPartSchema = basePartSchema.extend({\n type: z.literal(\"imageBinaryPart\"),\n data: z.string(),\n mimeType: z.string(),\n})\nimageBinaryPartSchema satisfies z.ZodType<ImageBinaryPart>\n\n/** File referenced by URL */\nexport interface FileUrlPart extends BasePart {\n type: \"fileUrlPart\"\n /** URL to the file */\n url: string\n /** MIME type of the file */\n mimeType: string\n}\n\nexport const fileUrlPartSchema = basePartSchema.extend({\n type: z.literal(\"fileUrlPart\"),\n url: z.string().url(),\n mimeType: z.string(),\n})\nfileUrlPartSchema satisfies z.ZodType<FileUrlPart>\n\n/** File with base64-encoded inline data */\nexport interface FileInlinePart extends BasePart {\n type: \"fileInlinePart\"\n /** Base64-encoded file data */\n encodedData: string\n /** MIME type of the file */\n mimeType: string\n}\n\nexport const fileInlinePartSchema = basePartSchema.extend({\n type: z.literal(\"fileInlinePart\"),\n encodedData: z.string(),\n mimeType: z.string(),\n})\nfileInlinePartSchema satisfies z.ZodType<FileInlinePart>\n\n/** File with binary data (internal use) */\nexport interface FileBinaryPart extends BasePart {\n type: \"fileBinaryPart\"\n /** Binary data as string */\n data: string\n /** MIME type of the file */\n mimeType: string\n}\n\nexport const fileBinaryPartSchema = basePartSchema.extend({\n type: z.literal(\"fileBinaryPart\"),\n data: z.string(),\n mimeType: z.string(),\n})\nfileBinaryPartSchema satisfies z.ZodType<FileBinaryPart>\n\n/** A tool call request from the Expert */\nexport interface ToolCallPart extends BasePart {\n type: \"toolCallPart\"\n /** Unique identifier for this tool call */\n toolCallId: string\n /** Name of the tool to call */\n toolName: string\n /** Arguments to pass to the tool */\n args: unknown\n}\n\nexport const toolCallPartSchema = basePartSchema.extend({\n type: z.literal(\"toolCallPart\"),\n toolCallId: z.string(),\n toolName: z.string(),\n args: z.unknown(),\n})\ntoolCallPartSchema satisfies z.ZodType<ToolCallPart>\n\n/** Thinking block from extended thinking / reasoning models */\nexport interface ThinkingPart extends BasePart {\n type: \"thinkingPart\"\n /** The thinking content */\n thinking: string\n /** Signature for redacted thinking blocks (Anthropic) */\n signature?: string\n}\n\nexport const thinkingPartSchema = basePartSchema.extend({\n type: z.literal(\"thinkingPart\"),\n thinking: z.string(),\n signature: z.string().optional(),\n})\nthinkingPartSchema satisfies z.ZodType<ThinkingPart>\n\n/** Result of a tool call */\nexport interface ToolResultPart extends BasePart {\n type: \"toolResultPart\"\n /** ID of the tool call this result corresponds to */\n toolCallId: string\n /** Name of the tool that was called */\n toolName: string\n /** Content of the tool result */\n contents: (TextPart | ImageInlinePart | FileInlinePart)[]\n /** Whether the tool call resulted in an error */\n isError?: boolean\n}\n\nexport const toolResultPartSchema = basePartSchema.extend({\n type: z.literal(\"toolResultPart\"),\n toolCallId: z.string(),\n toolName: z.string(),\n contents: z.array(z.union([textPartSchema, imageInlinePartSchema, fileInlinePartSchema])),\n isError: z.boolean().optional(),\n})\ntoolResultPartSchema satisfies z.ZodType<ToolResultPart>\n\n/** All possible message part types */\nexport type MessagePart =\n | TextPart\n | ImageUrlPart\n | ImageInlinePart\n | ImageBinaryPart\n | FileUrlPart\n | FileInlinePart\n | FileBinaryPart\n | ToolCallPart\n | ToolResultPart\n | ThinkingPart\n\nexport const messagePartSchema = z.discriminatedUnion(\"type\", [\n textPartSchema,\n imageUrlPartSchema,\n imageInlinePartSchema,\n imageBinaryPartSchema,\n fileUrlPartSchema,\n fileInlinePartSchema,\n fileBinaryPartSchema,\n toolCallPartSchema,\n toolResultPartSchema,\n thinkingPartSchema,\n])\n","import { z } from \"zod\"\nimport type { MessagePart } from \"./message-part.js\"\nimport { messagePartSchema } from \"./message-part.js\"\n\n/** Base fields shared by all activities */\ninterface BaseActivity {\n /** Unique activity ID */\n id: string\n /** Expert key that executed this activity */\n expertKey: string\n /** Run ID this activity belongs to */\n runId: string\n /** Previous activity ID for daisy chain within the same run */\n previousActivityId?: string\n /** Delegation info if this run was delegated from another */\n delegatedBy?: {\n expertKey: string\n runId: string\n }\n /** LLM's reasoning/thinking process before executing this action */\n reasoning?: string\n}\n\nconst baseActivitySchema = z.object({\n id: z.string(),\n expertKey: z.string(),\n runId: z.string(),\n previousActivityId: z.string().optional(),\n delegatedBy: z\n .object({\n expertKey: z.string(),\n runId: z.string(),\n })\n .optional(),\n reasoning: z.string().optional(),\n})\n\n/** Query activity - User input that starts a run */\nexport interface QueryActivity extends BaseActivity {\n type: \"query\"\n text: string\n}\n\nexport const queryActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"query\"),\n text: z.string(),\n})\nqueryActivitySchema satisfies z.ZodType<QueryActivity>\n\n/** Retry activity - generation failed and will be retried */\nexport interface RetryActivity extends BaseActivity {\n type: \"retry\"\n error: string\n message: string\n}\n\nexport const retryActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"retry\"),\n error: z.string(),\n message: z.string(),\n})\nretryActivitySchema satisfies z.ZodType<RetryActivity>\n\n/** Complete activity - Run completed successfully with final result */\nexport interface CompleteActivity extends BaseActivity {\n type: \"complete\"\n text: string\n}\n\nexport const completeActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"complete\"),\n text: z.string(),\n})\ncompleteActivitySchema satisfies z.ZodType<CompleteActivity>\n\n/** Error activity - When run stopped by error */\nexport interface ErrorActivity extends BaseActivity {\n type: \"error\"\n error?: string\n errorName?: string\n isRetryable?: boolean\n}\n\nexport const errorActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"error\"),\n error: z.string().optional(),\n errorName: z.string().optional(),\n isRetryable: z.boolean().optional(),\n})\nerrorActivitySchema satisfies z.ZodType<ErrorActivity>\n\n/** Attempt completion activity - Expert signaling task completion */\nexport interface AttemptCompletionActivity extends BaseActivity {\n type: \"attemptCompletion\"\n remainingTodos?: Array<{ id: number; title: string; completed: boolean }>\n error?: string\n}\n\nexport const attemptCompletionActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"attemptCompletion\"),\n remainingTodos: z\n .array(z.object({ id: z.number(), title: z.string(), completed: z.boolean() }))\n .optional(),\n error: z.string().optional(),\n})\nattemptCompletionActivitySchema satisfies z.ZodType<AttemptCompletionActivity>\n\n/** Todo activity - Expert managing todo list */\nexport interface TodoActivity extends BaseActivity {\n type: \"todo\"\n newTodos?: string[]\n completedTodos?: number[]\n todos: Array<{ id: number; title: string; completed: boolean }>\n error?: string\n}\n\nexport const todoActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"todo\"),\n newTodos: z.array(z.string()).optional(),\n completedTodos: z.array(z.number()).optional(),\n todos: z.array(z.object({ id: z.number(), title: z.string(), completed: z.boolean() })),\n error: z.string().optional(),\n})\ntodoActivitySchema satisfies z.ZodType<TodoActivity>\n\n/** Clear todo activity - Expert clearing the todo list */\nexport interface ClearTodoActivity extends BaseActivity {\n type: \"clearTodo\"\n error?: string\n}\n\nexport const clearTodoActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"clearTodo\"),\n error: z.string().optional(),\n})\nclearTodoActivitySchema satisfies z.ZodType<ClearTodoActivity>\n\n/** Read image file activity */\nexport interface ReadImageFileActivity extends BaseActivity {\n type: \"readImageFile\"\n path: string\n mimeType?: string\n size?: number\n error?: string\n}\n\nexport const readImageFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"readImageFile\"),\n path: z.string(),\n mimeType: z.string().optional(),\n size: z.number().optional(),\n error: z.string().optional(),\n})\nreadImageFileActivitySchema satisfies z.ZodType<ReadImageFileActivity>\n\n/** Read PDF file activity */\nexport interface ReadPdfFileActivity extends BaseActivity {\n type: \"readPdfFile\"\n path: string\n mimeType?: string\n size?: number\n error?: string\n}\n\nexport const readPdfFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"readPdfFile\"),\n path: z.string(),\n mimeType: z.string().optional(),\n size: z.number().optional(),\n error: z.string().optional(),\n})\nreadPdfFileActivitySchema satisfies z.ZodType<ReadPdfFileActivity>\n\n/** Read text file activity */\nexport interface ReadTextFileActivity extends BaseActivity {\n type: \"readTextFile\"\n path: string\n content?: string\n from?: number\n to?: number\n error?: string\n}\n\nexport const readTextFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"readTextFile\"),\n path: z.string(),\n content: z.string().optional(),\n from: z.number().optional(),\n to: z.number().optional(),\n error: z.string().optional(),\n})\nreadTextFileActivitySchema satisfies z.ZodType<ReadTextFileActivity>\n\n/** Edit text file activity */\nexport interface EditTextFileActivity extends BaseActivity {\n type: \"editTextFile\"\n path: string\n newText: string\n oldText: string\n error?: string\n}\n\nexport const editTextFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"editTextFile\"),\n path: z.string(),\n newText: z.string(),\n oldText: z.string(),\n error: z.string().optional(),\n})\neditTextFileActivitySchema satisfies z.ZodType<EditTextFileActivity>\n\n/** Append text file activity */\nexport interface AppendTextFileActivity extends BaseActivity {\n type: \"appendTextFile\"\n path: string\n text: string\n error?: string\n}\n\nexport const appendTextFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"appendTextFile\"),\n path: z.string(),\n text: z.string(),\n error: z.string().optional(),\n})\nappendTextFileActivitySchema satisfies z.ZodType<AppendTextFileActivity>\n\n/** Write text file activity */\nexport interface WriteTextFileActivity extends BaseActivity {\n type: \"writeTextFile\"\n path: string\n text: string\n error?: string\n}\n\nexport const writeTextFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"writeTextFile\"),\n path: z.string(),\n text: z.string(),\n error: z.string().optional(),\n})\nwriteTextFileActivitySchema satisfies z.ZodType<WriteTextFileActivity>\n\n/** Delete file activity */\nexport interface DeleteFileActivity extends BaseActivity {\n type: \"deleteFile\"\n path: string\n error?: string\n}\n\nexport const deleteFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"deleteFile\"),\n path: z.string(),\n error: z.string().optional(),\n})\ndeleteFileActivitySchema satisfies z.ZodType<DeleteFileActivity>\n\n/** Delete directory activity */\nexport interface DeleteDirectoryActivity extends BaseActivity {\n type: \"deleteDirectory\"\n path: string\n recursive?: boolean\n error?: string\n}\n\nexport const deleteDirectoryActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"deleteDirectory\"),\n path: z.string(),\n recursive: z.boolean().optional(),\n error: z.string().optional(),\n})\ndeleteDirectoryActivitySchema satisfies z.ZodType<DeleteDirectoryActivity>\n\n/** Move file activity */\nexport interface MoveFileActivity extends BaseActivity {\n type: \"moveFile\"\n source: string\n destination: string\n error?: string\n}\n\nexport const moveFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"moveFile\"),\n source: z.string(),\n destination: z.string(),\n error: z.string().optional(),\n})\nmoveFileActivitySchema satisfies z.ZodType<MoveFileActivity>\n\n/** Get file info activity */\nexport interface GetFileInfoActivity extends BaseActivity {\n type: \"getFileInfo\"\n path: string\n info?: {\n exists: boolean\n name: string\n directory: string\n extension: string | null\n type: \"file\" | \"directory\"\n mimeType: string | null\n size: number\n sizeFormatted: string\n created: string\n modified: string\n accessed: string\n }\n error?: string\n}\n\nexport const getFileInfoActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"getFileInfo\"),\n path: z.string(),\n info: z\n .object({\n exists: z.boolean(),\n name: z.string(),\n directory: z.string(),\n extension: z.string().nullable(),\n type: z.enum([\"file\", \"directory\"]),\n mimeType: z.string().nullable(),\n size: z.number(),\n sizeFormatted: z.string(),\n created: z.string(),\n modified: z.string(),\n accessed: z.string(),\n })\n .optional(),\n error: z.string().optional(),\n})\ngetFileInfoActivitySchema satisfies z.ZodType<GetFileInfoActivity>\n\n/** Create directory activity */\nexport interface CreateDirectoryActivity extends BaseActivity {\n type: \"createDirectory\"\n path: string\n error?: string\n}\n\nexport const createDirectoryActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"createDirectory\"),\n path: z.string(),\n error: z.string().optional(),\n})\ncreateDirectoryActivitySchema satisfies z.ZodType<CreateDirectoryActivity>\n\n/** List directory activity */\nexport interface ListDirectoryActivity extends BaseActivity {\n type: \"listDirectory\"\n path: string\n items?: Array<{\n name: string\n path: string\n type: \"file\" | \"directory\"\n size: number\n modified: string\n }>\n error?: string\n}\n\nexport const listDirectoryActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"listDirectory\"),\n path: z.string(),\n items: z\n .array(\n z.object({\n name: z.string(),\n path: z.string(),\n type: z.enum([\"file\", \"directory\"]),\n size: z.number(),\n modified: z.string(),\n }),\n )\n .optional(),\n error: z.string().optional(),\n})\nlistDirectoryActivitySchema satisfies z.ZodType<ListDirectoryActivity>\n\n/** Exec activity - Command execution */\nexport interface ExecActivity extends BaseActivity {\n type: \"exec\"\n command: string\n args: string[]\n cwd: string\n output?: string\n error?: string\n stdout?: string\n stderr?: string\n}\n\nexport const execActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"exec\"),\n command: z.string(),\n args: z.array(z.string()),\n cwd: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n stdout: z.string().optional(),\n stderr: z.string().optional(),\n})\nexecActivitySchema satisfies z.ZodType<ExecActivity>\n\n/** Delegate activity - Expert delegating to another Expert */\nexport interface DelegateActivity extends BaseActivity {\n type: \"delegate\"\n delegateExpertKey: string\n query: string\n}\n\nexport const delegateActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"delegate\"),\n delegateExpertKey: z.string(),\n query: z.string(),\n})\ndelegateActivitySchema satisfies z.ZodType<DelegateActivity>\n\n/** Delegation complete activity - All delegated experts have returned */\nexport interface DelegationCompleteActivity extends BaseActivity {\n type: \"delegationComplete\"\n count: number\n}\n\nexport const delegationCompleteActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"delegationComplete\"),\n count: z.number(),\n})\ndelegationCompleteActivitySchema satisfies z.ZodType<DelegationCompleteActivity>\n\n/** Interactive tool activity - Tool requiring user interaction */\nexport interface InteractiveToolActivity extends BaseActivity {\n type: \"interactiveTool\"\n skillName: string\n toolName: string\n args: Record<string, unknown>\n}\n\nexport const interactiveToolActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"interactiveTool\"),\n skillName: z.string(),\n toolName: z.string(),\n args: z.record(z.string(), z.unknown()),\n})\ninteractiveToolActivitySchema satisfies z.ZodType<InteractiveToolActivity>\n\n/** General tool activity - Any other tool call */\nexport interface GeneralToolActivity extends BaseActivity {\n type: \"generalTool\"\n skillName: string\n toolName: string\n args: Record<string, unknown>\n result?: MessagePart[]\n error?: string\n}\n\nexport const generalToolActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"generalTool\"),\n skillName: z.string(),\n toolName: z.string(),\n args: z.record(z.string(), z.unknown()),\n result: z.array(messagePartSchema).optional(),\n error: z.string().optional(),\n})\ngeneralToolActivitySchema satisfies z.ZodType<GeneralToolActivity>\n\n/** Union of all activity types */\nexport type Activity =\n | QueryActivity\n | RetryActivity\n | CompleteActivity\n | ErrorActivity\n | AttemptCompletionActivity\n | TodoActivity\n | ClearTodoActivity\n | ReadImageFileActivity\n | ReadPdfFileActivity\n | ReadTextFileActivity\n | EditTextFileActivity\n | AppendTextFileActivity\n | WriteTextFileActivity\n | DeleteFileActivity\n | DeleteDirectoryActivity\n | MoveFileActivity\n | GetFileInfoActivity\n | CreateDirectoryActivity\n | ListDirectoryActivity\n | ExecActivity\n | DelegateActivity\n | DelegationCompleteActivity\n | InteractiveToolActivity\n | GeneralToolActivity\n\nexport const activitySchema = z.discriminatedUnion(\"type\", [\n queryActivitySchema,\n retryActivitySchema,\n completeActivitySchema,\n errorActivitySchema,\n attemptCompletionActivitySchema,\n todoActivitySchema,\n clearTodoActivitySchema,\n readImageFileActivitySchema,\n readPdfFileActivitySchema,\n readTextFileActivitySchema,\n editTextFileActivitySchema,\n appendTextFileActivitySchema,\n writeTextFileActivitySchema,\n deleteFileActivitySchema,\n deleteDirectoryActivitySchema,\n moveFileActivitySchema,\n getFileInfoActivitySchema,\n createDirectoryActivitySchema,\n listDirectoryActivitySchema,\n execActivitySchema,\n delegateActivitySchema,\n delegationCompleteActivitySchema,\n interactiveToolActivitySchema,\n generalToolActivitySchema,\n])\nactivitySchema satisfies z.ZodType<Activity>\n\n/** Activity type discriminator */\nexport type ActivityType = Activity[\"type\"]\n\n/** Group of parallel activities sharing the same reasoning */\nexport interface ParallelActivitiesGroup {\n type: \"parallelGroup\"\n /** Unique group ID */\n id: string\n /** Expert key that executed these activities */\n expertKey: string\n /** Run ID these activities belong to */\n runId: string\n /** Shared reasoning for all activities in the group */\n reasoning?: string\n /** Activities in this parallel group (without individual reasoning) */\n activities: Activity[]\n}\n\nexport const parallelActivitiesGroupSchema = z.object({\n type: z.literal(\"parallelGroup\"),\n id: z.string(),\n expertKey: z.string(),\n runId: z.string(),\n reasoning: z.string().optional(),\n activities: z.array(activitySchema),\n})\nparallelActivitiesGroupSchema satisfies z.ZodType<ParallelActivitiesGroup>\n\n/** Activity or group of parallel activities */\nexport type ActivityOrGroup = Activity | ParallelActivitiesGroup\n\nexport const activityOrGroupSchema = z.union([activitySchema, parallelActivitiesGroupSchema])\nactivityOrGroupSchema satisfies z.ZodType<ActivityOrGroup>\n","import { z } from \"zod\"\nimport type {\n FileBinaryPart,\n FileInlinePart,\n FileUrlPart,\n ImageBinaryPart,\n ImageInlinePart,\n ImageUrlPart,\n TextPart,\n ThinkingPart,\n ToolCallPart,\n ToolResultPart,\n} from \"./message-part.js\"\nimport {\n fileBinaryPartSchema,\n fileInlinePartSchema,\n fileUrlPartSchema,\n imageBinaryPartSchema,\n imageInlinePartSchema,\n imageUrlPartSchema,\n textPartSchema,\n thinkingPartSchema,\n toolCallPartSchema,\n toolResultPartSchema,\n} from \"./message-part.js\"\n\n/** Base properties shared by all messages */\ninterface BaseMessage {\n /** Unique identifier for this message */\n id: string\n}\n\nconst baseMessageSchema = z.object({\n id: z.string(),\n})\n\n/** System instruction message sent at the start of a conversation */\nexport interface InstructionMessage extends BaseMessage {\n type: \"instructionMessage\"\n /** Text content of the instruction */\n contents: TextPart[]\n /** Whether to cache this message for prompt caching */\n cache?: boolean\n}\n\nexport const instructionMessageSchema = baseMessageSchema.extend({\n type: z.literal(\"instructionMessage\"),\n contents: z.array(textPartSchema),\n cache: z.boolean().optional(),\n})\ninstructionMessageSchema satisfies z.ZodType<InstructionMessage>\n\n/** Message from the user (human or system providing input) */\nexport interface UserMessage extends BaseMessage {\n type: \"userMessage\"\n /** Content of the user message (text, images, or files) */\n contents: (\n | TextPart\n | ImageUrlPart\n | ImageInlinePart\n | ImageBinaryPart\n | FileUrlPart\n | FileInlinePart\n | FileBinaryPart\n )[]\n /** Whether to cache this message for prompt caching */\n cache?: boolean\n}\n\nexport const userMessageSchema = baseMessageSchema.extend({\n type: z.literal(\"userMessage\"),\n contents: z.array(\n z.union([\n textPartSchema,\n imageUrlPartSchema,\n imageInlinePartSchema,\n imageBinaryPartSchema,\n fileUrlPartSchema,\n fileInlinePartSchema,\n fileBinaryPartSchema,\n ]),\n ),\n cache: z.boolean().optional(),\n})\nuserMessageSchema satisfies z.ZodType<UserMessage>\n\n/** Message generated by the Expert (LLM response) */\nexport interface ExpertMessage extends BaseMessage {\n type: \"expertMessage\"\n /** Content generated by the Expert (text, tool calls, or thinking) */\n contents: (TextPart | ToolCallPart | ThinkingPart)[]\n /** Whether to cache this message for prompt caching */\n cache?: boolean\n}\n\nexport const expertMessageSchema = baseMessageSchema.extend({\n type: z.literal(\"expertMessage\"),\n contents: z.array(z.union([textPartSchema, toolCallPartSchema, thinkingPartSchema])),\n cache: z.boolean().optional(),\n})\nexpertMessageSchema satisfies z.ZodType<ExpertMessage>\n\n/** Message containing tool execution results */\nexport interface ToolMessage extends BaseMessage {\n type: \"toolMessage\"\n /** Tool result contents */\n contents: ToolResultPart[]\n /** Whether to cache this message for prompt caching */\n cache?: boolean\n}\n\nexport const toolMessageSchema = baseMessageSchema.extend({\n type: z.literal(\"toolMessage\"),\n contents: z.array(toolResultPartSchema),\n cache: z.boolean().optional(),\n})\ntoolMessageSchema satisfies z.ZodType<ToolMessage>\n\n/** All possible message types */\nexport type Message = InstructionMessage | UserMessage | ExpertMessage | ToolMessage\n\nexport const messageSchema = z.union([\n instructionMessageSchema,\n userMessageSchema,\n expertMessageSchema,\n toolMessageSchema,\n])\n","import { z } from \"zod\"\n\nexport type RuntimeName = \"local\" | \"cursor\" | \"claude-code\" | \"gemini\" | \"docker\"\n\nexport const runtimeNameSchema = z.enum([\"local\", \"cursor\", \"claude-code\", \"gemini\", \"docker\"])\n","import { z } from \"zod\"\nimport { maxSkillNameLength, maxSkillToolNameLength } from \"../constants/constants.js\"\n\n/** A tool call made by an Expert during execution */\nexport interface ToolCall {\n /** Unique identifier for this tool call */\n id: string\n /** Name of the skill providing the tool */\n skillName: string\n /** Name of the tool being called */\n toolName: string\n /** Arguments passed to the tool */\n args: Record<string, unknown>\n}\n\nexport const toolCallSchema = z.object({\n id: z.string().min(1).max(255),\n skillName: z.string().min(1).max(maxSkillNameLength),\n toolName: z.string().min(1).max(maxSkillToolNameLength),\n args: z.record(z.string().min(1), z.unknown()),\n})\ntoolCallSchema satisfies z.ZodType<ToolCall>\n","import { z } from \"zod\"\nimport { maxSkillNameLength, maxSkillToolNameLength } from \"../constants/constants.js\"\nimport type { MessagePart } from \"./message-part.js\"\nimport { messagePartSchema } from \"./message-part.js\"\n\n/** Result returned from a tool call */\nexport interface ToolResult {\n /** Unique identifier for this result */\n id: string\n /** Name of the skill that provided the tool */\n skillName: string\n /** Name of the tool that was called */\n toolName: string\n /** Content parts returned by the tool */\n result: MessagePart[]\n}\n\nexport const toolResultSchema = z.object({\n id: z.string().min(1).max(255),\n skillName: z.string().min(1).max(maxSkillNameLength),\n toolName: z.string().min(1).max(maxSkillToolNameLength),\n result: z.array(messagePartSchema),\n})\ntoolResultSchema satisfies z.ZodType<ToolResult>\n","import { z } from \"zod\"\n\n/** Token usage statistics for a single step or run */\nexport interface Usage {\n /** Number of tokens in the input prompt */\n inputTokens: number\n /** Number of tokens generated in the response */\n outputTokens: number\n /** Number of tokens used for reasoning (extended thinking) */\n reasoningTokens: number\n /** Total tokens (input + output) */\n totalTokens: number\n /** Number of input tokens served from cache */\n cachedInputTokens: number\n}\n\nexport const usageSchema = z.object({\n inputTokens: z.number(),\n outputTokens: z.number(),\n reasoningTokens: z.number(),\n totalTokens: z.number(),\n cachedInputTokens: z.number(),\n})\nusageSchema satisfies z.ZodType<Usage>\n","import { z } from \"zod\"\nimport type { Message } from \"./message.js\"\nimport { messageSchema } from \"./message.js\"\nimport type { RuntimeName } from \"./runtime-name.js\"\nimport { runtimeNameSchema } from \"./runtime-name.js\"\nimport type { ToolCall } from \"./tool-call.js\"\nimport { toolCallSchema } from \"./tool-call.js\"\nimport type { ToolResult } from \"./tool-result.js\"\nimport { toolResultSchema } from \"./tool-result.js\"\nimport type { Usage } from \"./usage.js\"\nimport { usageSchema } from \"./usage.js\"\n\n/** Status of a checkpoint in the execution lifecycle */\nexport type CheckpointStatus =\n | \"init\"\n | \"proceeding\"\n | \"completed\"\n | \"stoppedByInteractiveTool\"\n | \"stoppedByDelegate\"\n | \"stoppedByExceededMaxSteps\"\n | \"stoppedByError\"\n\nexport const checkpointStatusSchema = z.enum([\n \"init\",\n \"proceeding\",\n \"completed\",\n \"stoppedByInteractiveTool\",\n \"stoppedByDelegate\",\n \"stoppedByExceededMaxSteps\",\n \"stoppedByError\",\n])\n\n/** Information about a delegation target */\nexport interface DelegationTarget {\n expert: {\n key: string\n name: string\n version: string\n }\n toolCallId: string\n toolName: string\n query: string\n}\n\n/**\n * A checkpoint represents a point-in-time snapshot of an Expert's execution state.\n * Used for resuming, debugging, and observability.\n */\nexport interface Checkpoint {\n /** Unique identifier for this checkpoint */\n id: string\n /** Job ID this checkpoint belongs to */\n jobId: string\n /** Run ID this checkpoint belongs to */\n runId: string\n /** Current execution status */\n status: CheckpointStatus\n /** Current step number within this Run */\n stepNumber: number\n /** All messages in the conversation so far */\n messages: Message[]\n /** Expert executing this checkpoint */\n expert: {\n /** Expert key (e.g., \"my-expert@1.0.0\") */\n key: string\n /** Expert name */\n name: string\n /** Expert version */\n version: string\n }\n /** If delegating, information about the target Expert(s) - supports parallel delegation */\n delegateTo?: DelegationTarget[]\n /** If delegated, information about the parent Expert */\n delegatedBy?: {\n /** The parent Expert that delegated */\n expert: {\n key: string\n name: string\n version: string\n }\n /** Tool call ID from the parent */\n toolCallId: string\n /** Name of the delegation tool */\n toolName: string\n /** Checkpoint ID of the parent */\n checkpointId: string\n /** Run ID of the parent */\n runId: string\n }\n /** Accumulated token usage */\n usage: Usage\n /** Model's context window size in tokens */\n contextWindow?: number\n /** Context window usage ratio (0-1) */\n contextWindowUsage?: number\n /** Tool calls waiting to be processed (for resume after delegate/interactive) */\n pendingToolCalls?: ToolCall[]\n /** Partial tool results collected before stopping (for resume) */\n partialToolResults?: ToolResult[]\n /** Optional metadata for runtime-specific information */\n metadata?: {\n /** Runtime that executed this checkpoint */\n runtime?: RuntimeName\n /** Additional runtime-specific data */\n [key: string]: unknown\n }\n /** Error information when status is stoppedByError */\n error?: {\n name: string\n message: string\n statusCode?: number\n isRetryable: boolean\n }\n /** Consecutive retry count for current generation (reset on success) */\n retryCount?: number\n}\n\nexport const delegationTargetSchema = z.object({\n expert: z.object({\n key: z.string(),\n name: z.string(),\n version: z.string(),\n }),\n toolCallId: z.string(),\n toolName: z.string(),\n query: z.string(),\n})\ndelegationTargetSchema satisfies z.ZodType<DelegationTarget>\n\nexport const checkpointSchema = z.object({\n id: z.string(),\n jobId: z.string(),\n runId: z.string(),\n status: checkpointStatusSchema,\n stepNumber: z.number(),\n messages: z.array(messageSchema),\n expert: z.object({\n key: z.string(),\n name: z.string(),\n version: z.string(),\n }),\n delegateTo: z.array(delegationTargetSchema).optional(),\n delegatedBy: z\n .object({\n expert: z.object({\n key: z.string(),\n name: z.string(),\n version: z.string(),\n }),\n toolCallId: z.string(),\n toolName: z.string(),\n checkpointId: z.string(),\n runId: z.string(),\n })\n .optional(),\n usage: usageSchema,\n contextWindow: z.number().optional(),\n contextWindowUsage: z.number().optional(),\n pendingToolCalls: z.array(toolCallSchema).optional(),\n partialToolResults: z.array(toolResultSchema).optional(),\n metadata: z\n .object({\n runtime: runtimeNameSchema.optional(),\n })\n .passthrough()\n .optional(),\n error: z\n .object({\n name: z.string(),\n message: z.string(),\n statusCode: z.number().optional(),\n isRetryable: z.boolean(),\n })\n .optional(),\n retryCount: z.number().optional(),\n})\ncheckpointSchema satisfies z.ZodType<Checkpoint>\n","import { z } from \"zod\"\n\nexport const anthropicProviderToolNameSchema = z.enum([\"webSearch\", \"webFetch\", \"codeExecution\"])\nexport type AnthropicProviderToolName = z.infer<typeof anthropicProviderToolNameSchema>\n\nexport const builtinAnthropicSkillSchema = z.object({\n type: z.literal(\"builtin\"),\n skillId: z.enum([\"pdf\", \"docx\", \"pptx\", \"xlsx\"]),\n})\nexport type BuiltinAnthropicSkill = z.infer<typeof builtinAnthropicSkillSchema>\n\nexport const customAnthropicSkillSchema = z.object({\n type: z.literal(\"custom\"),\n name: z.string().min(1),\n definition: z.string().min(1),\n})\nexport type CustomAnthropicSkill = z.infer<typeof customAnthropicSkillSchema>\n\nexport const anthropicProviderSkillSchema = z.discriminatedUnion(\"type\", [\n builtinAnthropicSkillSchema,\n customAnthropicSkillSchema,\n])\nexport type AnthropicProviderSkill = z.infer<typeof anthropicProviderSkillSchema>\n\nexport const openaiProviderToolNameSchema = z.enum([\n \"webSearch\",\n \"fileSearch\",\n \"codeInterpreter\",\n \"imageGeneration\",\n])\nexport type OpenAIProviderToolName = z.infer<typeof openaiProviderToolNameSchema>\n\nexport const googleProviderToolNameSchema = z.enum([\n \"googleSearch\",\n \"codeExecution\",\n \"urlContext\",\n \"fileSearch\",\n \"googleMaps\",\n])\nexport type GoogleProviderToolName = z.infer<typeof googleProviderToolNameSchema>\n\nexport const azureOpenAIProviderToolNameSchema = z.enum([\n \"webSearchPreview\",\n \"fileSearch\",\n \"codeInterpreter\",\n \"imageGeneration\",\n])\nexport type AzureOpenAIProviderToolName = z.infer<typeof azureOpenAIProviderToolNameSchema>\n\nexport const vertexProviderToolNameSchema = z.enum([\n \"codeExecution\",\n \"urlContext\",\n \"googleSearch\",\n \"enterpriseWebSearch\",\n \"googleMaps\",\n])\nexport type VertexProviderToolName = z.infer<typeof vertexProviderToolNameSchema>\n\nexport const webSearchOptionsSchema = z.object({\n maxUses: z.number().int().positive().optional(),\n allowedDomains: z.array(z.string()).optional(),\n})\n\nexport const webFetchOptionsSchema = z.object({\n maxUses: z.number().int().positive().optional(),\n})\n\nexport const fileSearchOptionsSchema = z.object({\n vectorStoreIds: z.array(z.string()).optional(),\n maxNumResults: z.number().int().positive().optional(),\n})\n\nexport const providerToolOptionsSchema = z\n .object({\n webSearch: webSearchOptionsSchema.optional(),\n webFetch: webFetchOptionsSchema.optional(),\n fileSearch: fileSearchOptionsSchema.optional(),\n })\n .optional()\nexport type ProviderToolOptions = z.infer<typeof providerToolOptionsSchema>\n\nexport function hasCustomProviderSkills(skills?: AnthropicProviderSkill[]): boolean {\n return skills?.some((skill) => skill.type === \"custom\") ?? false\n}\n","import { z } from \"zod\"\n\nfunction isPrivateOrLocalIP(hostname: string): boolean {\n if (\n hostname === \"localhost\" ||\n hostname === \"127.0.0.1\" ||\n hostname === \"::1\" ||\n hostname === \"0.0.0.0\"\n ) {\n return true\n }\n const ipv4Match = hostname.match(/^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$/)\n if (ipv4Match) {\n const a = Number(ipv4Match[1])\n const b = Number(ipv4Match[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 if (a === 169 && b === 254) return true\n if (a === 127) return true\n }\n if (hostname.includes(\":\")) {\n if (hostname.startsWith(\"fe80:\") || hostname.startsWith(\"fc\") || hostname.startsWith(\"fd\")) {\n return true\n }\n }\n if (hostname.startsWith(\"::ffff:\")) {\n const ipv4Part = hostname.slice(7)\n if (isPrivateOrLocalIP(ipv4Part)) {\n return true\n }\n }\n return false\n}\nconst sseEndpointSchema = z\n .string()\n .url()\n .refine(\n (url) => {\n try {\n const parsed = new URL(url)\n if (parsed.protocol !== \"https:\") return false\n if (isPrivateOrLocalIP(parsed.hostname)) return false\n return true\n } catch {\n return false\n }\n },\n { message: \"Endpoint must be a public HTTPS URL\" },\n )\n\n/** MCP skill using stdio transport */\nexport interface McpStdioSkill {\n type: \"mcpStdioSkill\"\n /** Skill name (derived from key) */\n name: string\n /** Human-readable description */\n description?: string\n /** Usage rules for the LLM */\n rule?: string\n /** Tool names to include (whitelist) */\n pick: string[]\n /** Tool names to exclude (blacklist) */\n omit: string[]\n /** Command to execute (e.g., \"npx\") */\n command: string\n /** Package name for npx/uvx */\n packageName?: string\n /** Additional arguments */\n args: string[]\n /** Environment variables required by this skill */\n requiredEnv: string[]\n /** Whether to delay initialization until first use */\n lazyInit: boolean\n}\n\nexport const mcpStdioSkillSchema = z.object({\n type: z.literal(\"mcpStdioSkill\"),\n name: z.string(),\n description: z.string().optional(),\n rule: z.string().optional(),\n pick: z.array(z.string()).optional().default([]),\n omit: z.array(z.string()).optional().default([]),\n command: z.string(),\n packageName: z.string().optional(),\n args: z.array(z.string()).optional().default([]),\n requiredEnv: z.array(z.string()).optional().default([]),\n lazyInit: z.boolean().optional().default(false),\n})\nmcpStdioSkillSchema satisfies z.ZodType<McpStdioSkill>\n\n/** MCP skill using SSE transport */\nexport interface McpSseSkill {\n type: \"mcpSseSkill\"\n /** Skill name (derived from key) */\n name: string\n /** Human-readable description */\n description?: string\n /** Usage rules for the LLM */\n rule?: string\n /** Tool names to include (whitelist) */\n pick: string[]\n /** Tool names to exclude (blacklist) */\n omit: string[]\n /** SSE endpoint URL */\n endpoint: string\n}\n\nexport const mcpSseSkillSchema = z.object({\n type: z.literal(\"mcpSseSkill\"),\n name: z.string(),\n description: z.string().optional(),\n rule: z.string().optional(),\n pick: z.array(z.string()).optional().default([]),\n omit: z.array(z.string()).optional().default([]),\n endpoint: sseEndpointSchema,\n})\nmcpSseSkillSchema satisfies z.ZodType<McpSseSkill>\n\n/** Definition of an interactive tool within an interactive skill */\nexport interface InteractiveTool {\n /** Tool name */\n name: string\n /** Human-readable description */\n description?: string\n /** JSON Schema for tool input as a string */\n inputJsonSchema: string\n}\n\nexport const interactiveToolSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n inputJsonSchema: z.string(),\n})\ninteractiveToolSchema satisfies z.ZodType<InteractiveTool>\n\n/** Skill that requires human interaction to complete tool calls */\nexport interface InteractiveSkill {\n type: \"interactiveSkill\"\n /** Skill name (derived from key) */\n name: string\n /** Human-readable description */\n description?: string\n /** Usage rules for the LLM */\n rule?: string\n /** Map of tool name to tool definition */\n tools: Record<string, InteractiveTool>\n}\n\nexport const interactiveSkillSchema = z.object({\n type: z.literal(\"interactiveSkill\"),\n name: z.string(),\n description: z.string().optional(),\n rule: z.string().optional(),\n tools: z.record(z.string(), interactiveToolSchema.omit({ name: true })).transform((tools) => {\n return Object.fromEntries(\n Object.entries(tools).map(([key, toolWithoutName]) => [\n key,\n interactiveToolSchema.parse({ ...toolWithoutName, name: key }),\n ]),\n )\n }),\n})\n\n/** All possible skill types */\nexport type Skill = McpStdioSkill | McpSseSkill | InteractiveSkill\n\nexport const skillSchema = z.discriminatedUnion(\"type\", [\n mcpStdioSkillSchema,\n mcpSseSkillSchema,\n interactiveSkillSchema,\n])\n","import { z } from \"zod\"\nimport {\n expertKeyRegex,\n expertNameRegex,\n expertVersionRegex,\n maxExpertNameLength,\n tagNameRegex,\n} from \"../constants/constants.js\"\nimport type { AnthropicProviderSkill, ProviderToolOptions } from \"./provider-tools.js\"\nimport { anthropicProviderSkillSchema, providerToolOptionsSchema } from \"./provider-tools.js\"\nimport type { InteractiveSkill, McpSseSkill, McpStdioSkill, Skill } from \"./skill.js\"\nimport { interactiveSkillSchema, mcpSseSkillSchema, mcpStdioSkillSchema } from \"./skill.js\"\n\n/**\n * An Expert definition - an AI agent with specific skills and instructions.\n * Experts can delegate to other Experts and use MCP tools.\n */\nexport interface Expert {\n /** Unique key identifying this Expert (e.g., \"my-expert\" or \"my-expert@1.0.0\") */\n key: string\n /** Display name for the Expert */\n name: string\n /** Semantic version string */\n version: string\n /** Human-readable description of what this Expert does */\n description?: string\n /** System instruction defining the Expert's behavior */\n instruction: string\n /** Map of skill name to skill configuration */\n skills: Record<string, Skill>\n /** List of Expert keys this Expert can delegate to */\n delegates: string[]\n /** Tags for categorization and discovery */\n tags: string[]\n /** Provider-specific tool names to enable (e.g., \"webSearch\", \"codeExecution\") */\n providerTools?: string[]\n /** Anthropic Agent Skills configuration */\n providerSkills?: AnthropicProviderSkill[]\n /** Provider tool options (e.g., webSearch maxUses, allowedDomains) */\n providerToolOptions?: ProviderToolOptions\n}\n\ntype SkillWithoutName =\n | Omit<McpStdioSkill, \"name\">\n | Omit<McpSseSkill, \"name\">\n | Omit<InteractiveSkill, \"name\">\n\nexport const expertSchema = z.object({\n key: z.string().regex(expertKeyRegex).min(1),\n name: z.string().regex(expertNameRegex).min(1).max(maxExpertNameLength),\n version: z.string().regex(expertVersionRegex),\n description: z\n .string()\n .min(1)\n .max(1024 * 2)\n .optional(),\n instruction: z\n .string()\n .min(1)\n .max(1024 * 20),\n skills: z\n .record(\n z.string(),\n z.discriminatedUnion(\"type\", [\n mcpStdioSkillSchema.omit({ name: true }),\n mcpSseSkillSchema.omit({ name: true }),\n interactiveSkillSchema.omit({ name: true }),\n ]),\n )\n .optional()\n .default({\n \"@perstack/base\": {\n type: \"mcpStdioSkill\",\n description: \"Base skill\",\n command: \"npx\",\n args: [\"-y\", \"@perstack/base\"],\n pick: [],\n omit: [],\n requiredEnv: [],\n lazyInit: false,\n } satisfies SkillWithoutName,\n })\n .transform((skills) => {\n return Object.fromEntries(\n Object.entries(skills).map(([key, skillWithoutName]) => [\n key,\n z\n .discriminatedUnion(\"type\", [\n mcpStdioSkillSchema,\n mcpSseSkillSchema,\n interactiveSkillSchema,\n ])\n .parse({ ...skillWithoutName, name: key }),\n ]),\n )\n }),\n delegates: z.array(z.string().regex(expertKeyRegex).min(1)).optional().default([]),\n tags: z.array(z.string().regex(tagNameRegex).min(1)).optional().default([]),\n providerTools: z.array(z.string()).optional(),\n providerSkills: z.array(anthropicProviderSkillSchema).optional(),\n providerToolOptions: providerToolOptionsSchema,\n})\n","import { z } from \"zod\"\nimport type { Usage } from \"./usage.js\"\nimport { usageSchema } from \"./usage.js\"\n\nexport type JobStatus =\n | \"running\"\n | \"completed\"\n | \"stoppedByMaxSteps\"\n | \"stoppedByInteractiveTool\"\n | \"stoppedByError\"\n\nexport const jobStatusSchema = z.enum([\n \"running\",\n \"completed\",\n \"stoppedByMaxSteps\",\n \"stoppedByInteractiveTool\",\n \"stoppedByError\",\n])\n\nexport interface Job {\n id: string\n status: JobStatus\n coordinatorExpertKey: string\n totalSteps: number\n maxSteps?: number\n usage: Usage\n startedAt: number\n finishedAt?: number\n}\n\nexport const jobSchema = z.object({\n id: z.string(),\n status: jobStatusSchema,\n coordinatorExpertKey: z.string(),\n totalSteps: z.number(),\n maxSteps: z.number().optional(),\n usage: usageSchema,\n startedAt: z.number(),\n finishedAt: z.number().optional(),\n})\njobSchema satisfies z.ZodType<Job>\n","import { z } from \"zod\"\nimport type { Skill } from \"./skill.js\"\nimport { skillSchema } from \"./skill.js\"\n\nexport interface LockfileToolDefinition {\n skillName: string\n name: string\n description?: string\n inputSchema: Record<string, unknown>\n}\n\nexport const lockfileToolDefinitionSchema = z.object({\n skillName: z.string(),\n name: z.string(),\n description: z.string().optional(),\n inputSchema: z.record(z.string(), z.unknown()),\n})\n\nexport interface LockfileExpert {\n key: string\n name: string\n version: string\n description?: string\n instruction: string\n skills: Record<string, Skill>\n delegates: string[]\n tags: string[]\n toolDefinitions: LockfileToolDefinition[]\n}\n\nexport const lockfileExpertSchema = z.object({\n key: z.string(),\n name: z.string(),\n version: z.string(),\n description: z.string().optional(),\n instruction: z.string(),\n skills: z.record(z.string(), skillSchema),\n delegates: z.array(z.string()),\n tags: z.array(z.string()),\n toolDefinitions: z.array(lockfileToolDefinitionSchema),\n})\n\nexport interface Lockfile {\n version: \"1\"\n generatedAt: number\n configPath: string\n experts: Record<string, LockfileExpert>\n}\n\nexport const lockfileSchema = z.object({\n version: z.literal(\"1\"),\n generatedAt: z.number(),\n configPath: z.string(),\n experts: z.record(z.string(), lockfileExpertSchema),\n})\n","import { z } from \"zod\"\n\n/** HTTP headers for API requests */\nexport type Headers = Record<string, string> | undefined\n\nexport const headersSchema = z.record(z.string(), z.string()).optional()\n\n/** Supported LLM provider names */\nexport type ProviderName =\n | \"anthropic\"\n | \"google\"\n | \"openai\"\n | \"ollama\"\n | \"azure-openai\"\n | \"amazon-bedrock\"\n | \"google-vertex\"\n | \"deepseek\"\n\nexport const providerNameSchema = z.enum([\n \"anthropic\",\n \"google\",\n \"openai\",\n \"ollama\",\n \"azure-openai\",\n \"amazon-bedrock\",\n \"google-vertex\",\n \"deepseek\",\n])\n\n/** Anthropic provider configuration */\nexport interface AnthropicProviderConfig {\n providerName: \"anthropic\"\n /** API key for Anthropic */\n apiKey: string\n /** Custom base URL */\n baseUrl?: string\n /** Custom headers */\n headers?: Headers\n}\n\nexport const anthropicProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum.anthropic),\n apiKey: z.string(),\n baseUrl: z.string().optional(),\n headers: headersSchema,\n})\nanthropicProviderConfigSchema satisfies z.ZodType<AnthropicProviderConfig>\n\n/** Google Generative AI provider configuration */\nexport interface GoogleGenerativeAiProviderConfig {\n providerName: \"google\"\n /** API key for Google */\n apiKey: string\n /** Custom base URL */\n baseUrl?: string\n /** Custom headers */\n headers?: Headers\n}\n\nexport const googleGenerativeAiProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum.google),\n apiKey: z.string(),\n baseUrl: z.string().optional(),\n headers: headersSchema,\n})\ngoogleGenerativeAiProviderConfigSchema satisfies z.ZodType<GoogleGenerativeAiProviderConfig>\n\n/** OpenAI provider configuration */\nexport interface OpenAiProviderConfig {\n providerName: \"openai\"\n /** API key for OpenAI */\n apiKey: string\n /** Custom base URL */\n baseUrl?: string\n /** Organization ID */\n organization?: string\n /** Project ID */\n project?: string\n /** Custom name for the provider instance */\n name?: string\n /** Custom headers */\n headers?: Headers\n}\n\nexport const openAiProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum.openai),\n apiKey: z.string(),\n baseUrl: z.string().optional(),\n organization: z.string().optional(),\n project: z.string().optional(),\n name: z.string().optional(),\n headers: headersSchema,\n})\nopenAiProviderConfigSchema satisfies z.ZodType<OpenAiProviderConfig>\n\n/** Ollama provider configuration */\nexport interface OllamaProviderConfig {\n providerName: \"ollama\"\n /** Custom base URL (defaults to localhost) */\n baseUrl?: string\n /** Custom headers */\n headers?: Headers\n}\n\nexport const ollamaProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum.ollama),\n baseUrl: z.string().optional(),\n headers: headersSchema,\n})\nollamaProviderConfigSchema satisfies z.ZodType<OllamaProviderConfig>\n\n/** Azure OpenAI provider configuration */\nexport interface AzureOpenAiProviderConfig {\n providerName: \"azure-openai\"\n /** API key for Azure */\n apiKey: string\n /** Azure resource name */\n resourceName?: string\n /** API version */\n apiVersion?: string\n /** Custom base URL */\n baseUrl?: string\n /** Custom headers */\n headers?: Headers\n /** Use deployment-based URLs */\n useDeploymentBasedUrls?: boolean\n}\n\nexport const azureOpenAiProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum[\"azure-openai\"]),\n apiKey: z.string(),\n resourceName: z.string().optional(),\n apiVersion: z.string().optional(),\n baseUrl: z.string().optional(),\n headers: headersSchema,\n useDeploymentBasedUrls: z.boolean().optional(),\n})\nazureOpenAiProviderConfigSchema satisfies z.ZodType<AzureOpenAiProviderConfig>\n\n/** Amazon Bedrock provider configuration */\nexport interface AmazonBedrockProviderConfig {\n providerName: \"amazon-bedrock\"\n /** AWS access key ID */\n accessKeyId: string\n /** AWS secret access key */\n secretAccessKey: string\n /** AWS region */\n region: string\n /** AWS session token (for temporary credentials) */\n sessionToken?: string\n}\n\nexport const amazonBedrockProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum[\"amazon-bedrock\"]),\n accessKeyId: z.string(),\n secretAccessKey: z.string(),\n region: z.string(),\n sessionToken: z.string().optional(),\n})\namazonBedrockProviderConfigSchema satisfies z.ZodType<AmazonBedrockProviderConfig>\n\n/** Google Vertex AI provider configuration */\nexport interface GoogleVertexProviderConfig {\n providerName: \"google-vertex\"\n /** GCP project ID */\n project?: string\n /** GCP location */\n location?: string\n /** Custom base URL */\n baseUrl?: string\n /** Custom headers */\n headers?: Headers\n}\n\nexport const googleVertexProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum[\"google-vertex\"]),\n project: z.string().optional(),\n location: z.string().optional(),\n baseUrl: z.string().optional(),\n headers: headersSchema,\n})\ngoogleVertexProviderConfigSchema satisfies z.ZodType<GoogleVertexProviderConfig>\n\n/** DeepSeek provider configuration */\nexport interface DeepseekProviderConfig {\n providerName: \"deepseek\"\n /** API key for DeepSeek */\n apiKey: string\n /** Custom base URL */\n baseUrl?: string\n /** Custom headers */\n headers?: Headers\n}\n\nexport const deepseekProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum.deepseek),\n apiKey: z.string(),\n baseUrl: z.string().optional(),\n headers: headersSchema,\n})\ndeepseekProviderConfigSchema satisfies z.ZodType<DeepseekProviderConfig>\n\n/** Union of all provider configurations */\nexport type ProviderConfig =\n | AnthropicProviderConfig\n | GoogleGenerativeAiProviderConfig\n | OpenAiProviderConfig\n | OllamaProviderConfig\n | AzureOpenAiProviderConfig\n | AmazonBedrockProviderConfig\n | GoogleVertexProviderConfig\n | DeepseekProviderConfig\n\nexport const providerConfigSchema = z.discriminatedUnion(\"providerName\", [\n anthropicProviderConfigSchema,\n googleGenerativeAiProviderConfigSchema,\n openAiProviderConfigSchema,\n ollamaProviderConfigSchema,\n azureOpenAiProviderConfigSchema,\n amazonBedrockProviderConfigSchema,\n googleVertexProviderConfigSchema,\n deepseekProviderConfigSchema,\n])\n","import { z } from \"zod\"\nimport { headersSchema } from \"./provider-config.js\"\nimport { anthropicProviderSkillSchema, providerToolOptionsSchema } from \"./provider-tools.js\"\nimport type { RuntimeName } from \"./runtime-name.js\"\nimport { runtimeNameSchema } from \"./runtime-name.js\"\n\n/** Reasoning budget for native LLM reasoning (extended thinking / test-time scaling) */\nexport type ReasoningBudget = \"none\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | number\n\n/** Default reasoning budget - enables extended thinking by default */\nexport const defaultReasoningBudget: ReasoningBudget = \"low\"\n\nexport const reasoningBudgetSchema = z.union([\n z.enum([\"none\", \"minimal\", \"low\", \"medium\", \"high\"]),\n z\n .number()\n .int()\n .nonnegative(), // 0 disables reasoning (same as \"none\")\n])\n\nconst domainPatternRegex =\n /^(\\*\\.)?[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)*$/\nconst punycodeRegex = /(?:^|\\.)(xn--)/i\nexport const domainPatternSchema = z\n .string()\n .regex(domainPatternRegex, {\n message:\n \"Invalid domain pattern. Use exact domain (example.com) or wildcard prefix (*.example.com)\",\n })\n .refine((domain) => !punycodeRegex.test(domain), {\n message:\n \"Punycode domains (xn--) are not allowed to prevent homograph attacks. Use ASCII domains only.\",\n })\n\nfunction isPrivateOrLocalIP(hostname: string): boolean {\n if (\n hostname === \"localhost\" ||\n hostname === \"127.0.0.1\" ||\n hostname === \"::1\" ||\n hostname === \"0.0.0.0\"\n ) {\n return true\n }\n const ipv4Match = hostname.match(/^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$/)\n if (ipv4Match) {\n const a = Number(ipv4Match[1])\n const b = Number(ipv4Match[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 if (a === 169 && b === 254) return true\n if (a === 127) return true\n }\n if (hostname.includes(\":\")) {\n if (hostname.startsWith(\"fe80:\") || hostname.startsWith(\"fc\") || hostname.startsWith(\"fd\")) {\n return true\n }\n }\n if (hostname.startsWith(\"::ffff:\")) {\n const ipv4Part = hostname.slice(7)\n if (isPrivateOrLocalIP(ipv4Part)) {\n return true\n }\n }\n return false\n}\n\nconst sseEndpointSchema = z\n .string()\n .url()\n .refine(\n (url) => {\n try {\n const parsed = new URL(url)\n if (parsed.protocol !== \"https:\") return false\n if (isPrivateOrLocalIP(parsed.hostname)) return false\n return true\n } catch {\n return false\n }\n },\n { message: \"SSE endpoint must be a public HTTPS URL\" },\n )\n\nconst httpsUrlSchema = z\n .string()\n .url()\n .refine((url) => url.startsWith(\"https://\"), { message: \"URL must use HTTPS\" })\n\nconst anthropicSettingSchema = z.object({\n baseUrl: httpsUrlSchema.optional(),\n headers: headersSchema,\n})\n\nconst googleSettingSchema = z.object({\n baseUrl: httpsUrlSchema.optional(),\n headers: headersSchema,\n})\n\nconst openAiSettingSchema = z.object({\n baseUrl: httpsUrlSchema.optional(),\n organization: z.string().optional(),\n project: z.string().optional(),\n name: z.string().optional(),\n headers: headersSchema,\n})\n\nconst ollamaSettingSchema = z.object({\n baseUrl: z.string().optional(),\n headers: headersSchema,\n})\n\nconst azureOpenAiSettingSchema = z.object({\n resourceName: z.string().optional(),\n apiVersion: z.string().optional(),\n baseUrl: httpsUrlSchema.optional(),\n headers: headersSchema,\n useDeploymentBasedUrls: z.boolean().optional(),\n})\n\nconst amazonBedrockSettingSchema = z.object({\n region: z.string().optional(),\n})\n\nconst googleVertexSettingSchema = z.object({\n project: z.string().optional(),\n location: z.string().optional(),\n baseUrl: httpsUrlSchema.optional(),\n headers: headersSchema,\n})\n\nconst deepseekSettingSchema = z.object({\n baseUrl: httpsUrlSchema.optional(),\n headers: headersSchema,\n})\n\n/** Provider configuration in perstack.toml */\nexport type ProviderTable =\n | { providerName: \"anthropic\"; setting?: z.infer<typeof anthropicSettingSchema> }\n | { providerName: \"google\"; setting?: z.infer<typeof googleSettingSchema> }\n | { providerName: \"openai\"; setting?: z.infer<typeof openAiSettingSchema> }\n | { providerName: \"ollama\"; setting?: z.infer<typeof ollamaSettingSchema> }\n | { providerName: \"azure-openai\"; setting?: z.infer<typeof azureOpenAiSettingSchema> }\n | { providerName: \"amazon-bedrock\"; setting?: z.infer<typeof amazonBedrockSettingSchema> }\n | { providerName: \"google-vertex\"; setting?: z.infer<typeof googleVertexSettingSchema> }\n | { providerName: \"deepseek\"; setting?: z.infer<typeof deepseekSettingSchema> }\n\nexport const providerTableSchema = z.discriminatedUnion(\"providerName\", [\n z.object({\n providerName: z.literal(\"anthropic\"),\n setting: anthropicSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"google\"),\n setting: googleSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"openai\"),\n setting: openAiSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"ollama\"),\n setting: ollamaSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"azure-openai\"),\n setting: azureOpenAiSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"amazon-bedrock\"),\n setting: amazonBedrockSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"google-vertex\"),\n setting: googleVertexSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"deepseek\"),\n setting: deepseekSettingSchema.optional(),\n }),\n])\n\n/** Skill configuration in perstack.toml */\nexport type PerstackConfigSkill =\n | {\n type: \"mcpStdioSkill\"\n description?: string\n rule?: string\n pick?: string[]\n omit?: string[]\n command: string\n packageName?: string\n args?: string[]\n requiredEnv?: string[]\n allowedDomains?: string[]\n lazyInit?: boolean\n }\n | {\n type: \"mcpSseSkill\"\n description?: string\n rule?: string\n pick?: string[]\n omit?: string[]\n endpoint: string\n allowedDomains?: string[]\n }\n | {\n type: \"interactiveSkill\"\n description?: string\n rule?: string\n tools: Record<string, { description?: string; inputJsonSchema: string }>\n }\n\n/** Expert definition in perstack.toml (simplified from full Expert) */\nexport interface PerstackConfigExpert {\n /** Semantic version */\n version?: string\n /** Minimum runtime version required */\n minRuntimeVersion?: string\n /** Description of the Expert */\n description?: string\n /** System instruction */\n instruction: string\n /** Skills configuration */\n skills?: Record<string, PerstackConfigSkill>\n /** Delegates list */\n delegates?: string[]\n /** Tags for categorization */\n tags?: string[]\n /** Provider-specific tool names to enable */\n providerTools?: string[]\n /** Anthropic Agent Skills configuration */\n providerSkills?: Array<\n | { type: \"builtin\"; skillId: \"pdf\" | \"docx\" | \"pptx\" | \"xlsx\" }\n | { type: \"custom\"; name: string; definition: string }\n >\n /** Provider tool options */\n providerToolOptions?: {\n webSearch?: { maxUses?: number; allowedDomains?: string[] }\n webFetch?: { maxUses?: number }\n fileSearch?: { vectorStoreIds?: string[]; maxNumResults?: number }\n }\n}\n\n/**\n * Configuration loaded from perstack.toml.\n * This is the primary configuration file for Perstack projects.\n */\nexport interface PerstackConfig {\n /** Default provider configuration */\n provider?: ProviderTable\n /** Default model name */\n model?: string\n /** Reasoning budget for native LLM reasoning (extended thinking) */\n reasoningBudget?: ReasoningBudget\n /** Default execution runtime */\n runtime?: RuntimeName\n /** Maximum steps per run */\n maxSteps?: number\n /** Maximum retries on generation failure */\n maxRetries?: number\n /** Timeout per generation in milliseconds */\n timeout?: number\n /** Expert definitions */\n experts?: Record<string, PerstackConfigExpert>\n /** Custom Perstack API base URL */\n perstackApiBaseUrl?: string\n /** Custom command for @perstack/base skill */\n perstackBaseSkillCommand?: string[]\n /** Paths to .env files */\n envPath?: string[]\n}\n\nexport const perstackConfigSchema = z.object({\n provider: providerTableSchema.optional(),\n model: z.string().optional(),\n reasoningBudget: reasoningBudgetSchema.optional(),\n runtime: runtimeNameSchema.optional(),\n maxSteps: z.number().optional(),\n maxRetries: z.number().optional(),\n timeout: z.number().optional(),\n experts: z\n .record(\n z.string(),\n z.object({\n version: z.string().optional(),\n minRuntimeVersion: z.string().optional(),\n description: z.string().optional(),\n instruction: z.string(),\n skills: z\n .record(\n z.string(),\n z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"mcpStdioSkill\"),\n description: z.string().optional(),\n rule: z.string().optional(),\n pick: z.array(z.string()).optional(),\n omit: z.array(z.string()).optional(),\n command: z.string(),\n packageName: z.string().optional(),\n args: z.array(z.string()).optional(),\n requiredEnv: z.array(z.string()).optional(),\n allowedDomains: z.array(domainPatternSchema).optional(),\n lazyInit: z.boolean().optional().default(false),\n }),\n z.object({\n type: z.literal(\"mcpSseSkill\"),\n description: z.string().optional(),\n rule: z.string().optional(),\n pick: z.array(z.string()).optional(),\n omit: z.array(z.string()).optional(),\n endpoint: sseEndpointSchema,\n allowedDomains: z.array(domainPatternSchema).optional(),\n }),\n z.object({\n type: z.literal(\"interactiveSkill\"),\n description: z.string().optional(),\n rule: z.string().optional(),\n tools: z.record(\n z.string(),\n z.object({\n description: z.string().optional(),\n inputJsonSchema: z.string(),\n }),\n ),\n }),\n ]),\n )\n .optional(),\n delegates: z.array(z.string()).optional(),\n tags: z.array(z.string()).optional(),\n providerTools: z.array(z.string()).optional(),\n providerSkills: z.array(anthropicProviderSkillSchema).optional(),\n providerToolOptions: providerToolOptionsSchema,\n }),\n )\n .optional(),\n perstackApiBaseUrl: z\n .url()\n .refine((url) => url.startsWith(\"https://\"), { message: \"perstackApiBaseUrl must use HTTPS\" })\n .optional(),\n perstackBaseSkillCommand: z.array(z.string()).optional(),\n envPath: z.array(z.string()).optional(),\n})\n","import { z } from \"zod\"\nimport type { ReasoningBudget } from \"./perstack-toml.js\"\nimport { reasoningBudgetSchema } from \"./perstack-toml.js\"\nimport type { ProviderName } from \"./provider-config.js\"\nimport { providerNameSchema } from \"./provider-config.js\"\nimport type { RuntimeName } from \"./runtime-name.js\"\nimport { runtimeNameSchema } from \"./runtime-name.js\"\n\n/** Parsed command options after transformation */\nexport interface CommandOptions {\n /** Path to perstack.toml config file */\n config?: string\n /** LLM provider to use */\n provider?: ProviderName\n /** Model name */\n model?: string\n /** Reasoning budget for native LLM reasoning (extended thinking) */\n reasoningBudget?: ReasoningBudget\n /** Maximum steps */\n maxSteps?: number\n /** Maximum retries */\n maxRetries?: number\n /** Timeout in milliseconds */\n timeout?: number\n /** Custom job ID */\n jobId?: string\n /** Custom run ID */\n runId?: string\n /** Paths to .env files */\n envPath?: string[]\n /** Environment variable names to pass to Docker runtime */\n env?: string[]\n /** Enable verbose logging */\n verbose?: boolean\n /** Continue most recent job */\n continue?: boolean\n /** Continue specific job by ID */\n continueJob?: string\n /** Resume from specific checkpoint (requires --continue or --continue-job) */\n resumeFrom?: string\n /** Query is interactive tool call result */\n interactiveToolCallResult?: boolean\n /** Execution runtime */\n runtime?: RuntimeName\n /** Workspace directory for Docker runtime */\n workspace?: string\n /** Additional volume mounts for Docker runtime (format: hostPath:containerPath:mode) */\n volume?: string[]\n /** Event types to filter (e.g., completeRun,stopRunByError) */\n filter?: string[]\n}\n\nconst commandOptionsSchema = z.object({\n config: z.string().optional(),\n provider: providerNameSchema.optional(),\n model: z.string().optional(),\n reasoningBudget: z\n .string()\n .optional()\n .transform((value) => {\n if (value === undefined) return undefined\n // Check if it's a named level (including \"none\" to disable reasoning)\n if ([\"none\", \"minimal\", \"low\", \"medium\", \"high\"].includes(value)) {\n return value as ReasoningBudget\n }\n // Try to parse as number\n const parsedValue = Number.parseInt(value, 10)\n if (Number.isNaN(parsedValue)) return undefined\n return parsedValue\n })\n .pipe(reasoningBudgetSchema.optional()),\n maxSteps: z\n .string()\n .optional()\n .transform((value) => {\n if (value === undefined) return undefined\n const parsedValue = Number.parseInt(value, 10)\n if (Number.isNaN(parsedValue)) return undefined\n return parsedValue\n }),\n maxRetries: z\n .string()\n .optional()\n .transform((value) => {\n if (value === undefined) return undefined\n const parsedValue = Number.parseInt(value, 10)\n if (Number.isNaN(parsedValue)) return undefined\n return parsedValue\n }),\n timeout: z\n .string()\n .optional()\n .transform((value) => {\n if (value === undefined) return undefined\n const parsedValue = Number.parseInt(value, 10)\n if (Number.isNaN(parsedValue)) return undefined\n return parsedValue\n }),\n jobId: z.string().optional(),\n runId: z.string().optional(),\n envPath: z\n .array(z.string())\n .optional()\n .transform((value) => (value && value.length > 0 ? value : undefined)),\n env: z\n .array(z.string())\n .optional()\n .transform((value) => (value && value.length > 0 ? value : undefined)),\n verbose: z.boolean().optional(),\n continue: z.boolean().optional(),\n continueJob: z.string().optional(),\n resumeFrom: z.string().optional(),\n interactiveToolCallResult: z.boolean().optional(),\n runtime: runtimeNameSchema.optional(),\n workspace: z.string().optional(),\n volume: z\n .array(z.string())\n .optional()\n .transform((value) => (value && value.length > 0 ? value : undefined)),\n filter: z\n .string()\n .optional()\n .transform((value) => {\n if (value === undefined) return undefined\n // Split by comma and trim whitespace, filter out empty strings\n return value\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length > 0)\n })\n .pipe(z.array(z.string()).optional()),\n})\n\n/** Input for the `perstack run` command */\nexport interface RunCommandInput {\n /** Expert key to run */\n expertKey: string\n /** Query or prompt */\n query: string\n /** Command options */\n options: CommandOptions\n}\n\nexport const runCommandInputSchema = z.object({\n expertKey: z.string(),\n query: z.string(),\n options: commandOptionsSchema,\n})\n\n/** Input for the `perstack start` command */\nexport interface StartCommandInput {\n /** Expert key to run (optional, prompts if not provided) */\n expertKey?: string\n /** Query or prompt (optional, prompts if not provided) */\n query?: string\n /** Command options */\n options: CommandOptions\n}\n\nexport const startCommandInputSchema = z.object({\n expertKey: z.string().optional(),\n query: z.string().optional(),\n options: commandOptionsSchema,\n})\n","import { createId } from \"@paralleldrive/cuid2\"\nimport { z } from \"zod\"\nimport {\n defaultMaxRetries,\n defaultMaxSteps,\n defaultPerstackApiBaseUrl,\n defaultTimeout,\n expertKeyRegex,\n} from \"../constants/constants.js\"\nimport type { Checkpoint } from \"./checkpoint.js\"\nimport { checkpointSchema } from \"./checkpoint.js\"\nimport type { Expert } from \"./expert.js\"\nimport { expertSchema } from \"./expert.js\"\nimport type {\n ExpertMessage,\n InstructionMessage,\n Message,\n ToolMessage,\n UserMessage,\n} from \"./message.js\"\nimport type { PerstackConfigSkill, ReasoningBudget } from \"./perstack-toml.js\"\nimport { defaultReasoningBudget, reasoningBudgetSchema } from \"./perstack-toml.js\"\nimport type { ProviderConfig } from \"./provider-config.js\"\nimport { providerConfigSchema } from \"./provider-config.js\"\nimport type { Step } from \"./step.js\"\nimport type { ToolCall } from \"./tool-call.js\"\nimport type { ToolResult } from \"./tool-result.js\"\nimport type { Usage } from \"./usage.js\"\n\n/** Parse an expert key into its components */\nexport function parseExpertKey(expertKey: string): {\n key: string\n name: string\n version?: string\n tag?: string\n} {\n const match = expertKey.match(expertKeyRegex)\n if (!match) {\n throw new Error(`Invalid expert key format: ${expertKey}`)\n }\n const [key, name, version, tag] = match\n if (!name) {\n throw new Error(`Invalid expert key format: ${expertKey}`)\n }\n return { key, name, version, tag }\n}\n\n/** Input for a run (text or interactive tool call result) */\nexport interface RunInput {\n /** Text query */\n text?: string\n /** Interactive tool call result (when continuing from interactive tool) */\n interactiveToolCallResult?: {\n toolCallId: string\n toolName: string\n skillName: string\n text: string\n }\n}\n\n/** Runtime settings for an Expert run */\nexport interface RunSetting {\n /** Model name to use */\n model: string\n /** Provider configuration */\n providerConfig: ProviderConfig\n /** Job ID this run belongs to */\n jobId: string\n /** Unique run identifier */\n runId: string\n /** Expert key to run */\n expertKey: string\n /** Input for the run */\n input: RunInput\n /** Map of expert keys to Expert definitions */\n experts: Record<string, Expert>\n /** Reasoning budget for native LLM reasoning (extended thinking). Defaults to \"low\". Use \"none\" or 0 to disable. */\n reasoningBudget: ReasoningBudget\n /** Maximum steps before stopping (applies to Job's totalSteps) */\n maxSteps: number\n /** Maximum retries on generation failure */\n maxRetries: number\n /** Timeout per generation in milliseconds */\n timeout: number\n /** Unix timestamp when run started */\n startedAt: number\n /** Unix timestamp of last update */\n updatedAt: number\n /** Perstack API base URL */\n perstackApiBaseUrl: string\n /** Perstack API key */\n perstackApiKey?: string\n /** Custom command for @perstack/base */\n perstackBaseSkillCommand?: string[]\n /** Environment variables to pass to skills */\n env: Record<string, string>\n /** HTTP proxy URL for API requests */\n proxyUrl?: string\n /** Enable verbose output for build processes */\n verbose?: boolean\n}\n\n/** Parameters for starting a run */\nexport interface RunParams {\n /** Run settings */\n setting: RunSetting\n /** Optional checkpoint to resume from */\n checkpoint?: Checkpoint\n}\n\n/** Expert input type before schema transformation (skills without name, optional fields) */\ntype ExpertInput = {\n name: string\n version: string\n description?: string\n instruction: string\n skills?: Record<string, PerstackConfigSkill>\n delegates?: string[]\n tags?: string[]\n}\n\n/** Input type for runParamsSchema (before defaults/transforms) */\nexport type RunParamsInput = {\n setting: {\n model: string\n providerConfig: ProviderConfig\n jobId?: string\n runId?: string\n expertKey: string\n input: RunInput\n experts?: Record<string, ExpertInput>\n reasoningBudget?: ReasoningBudget\n maxSteps?: number\n maxRetries?: number\n timeout?: number\n startedAt?: number\n updatedAt?: number\n perstackApiBaseUrl?: string\n perstackApiKey?: string\n perstackBaseSkillCommand?: string[]\n env?: Record<string, string>\n proxyUrl?: string\n verbose?: boolean\n }\n checkpoint?: Checkpoint\n}\n\nexport const runSettingSchema = z.object({\n model: z.string(),\n providerConfig: providerConfigSchema,\n jobId: z.string(),\n runId: z.string(),\n expertKey: z.string().min(1).regex(expertKeyRegex),\n input: z.object({\n text: z.string().optional(),\n interactiveToolCallResult: z\n .object({\n toolCallId: z.string(),\n toolName: z.string(),\n skillName: z.string(),\n text: z.string(),\n })\n .optional(),\n }),\n experts: z.record(z.string(), expertSchema),\n reasoningBudget: reasoningBudgetSchema.default(defaultReasoningBudget),\n maxSteps: z.number().min(1).optional().default(defaultMaxSteps),\n maxRetries: z.number().min(0),\n timeout: z.number().min(0),\n startedAt: z.number(),\n updatedAt: z.number(),\n perstackApiBaseUrl: z.string().url(),\n perstackApiKey: z.string().optional(),\n perstackBaseSkillCommand: z.array(z.string()).optional(),\n env: z.record(z.string(), z.string()),\n proxyUrl: z.string().optional(),\n verbose: z.boolean().optional(),\n})\n\nexport const runParamsSchema = z.object({\n setting: z.object({\n model: z.string(),\n providerConfig: providerConfigSchema,\n jobId: z\n .string()\n .optional()\n .default(() => createId()),\n runId: z\n .string()\n .optional()\n .default(() => createId()),\n expertKey: z.string().min(1).regex(expertKeyRegex),\n input: z.object({\n text: z.string().optional(),\n interactiveToolCallResult: z\n .object({\n toolCallId: z.string(),\n toolName: z.string(),\n skillName: z.string(),\n text: z.string(),\n })\n .optional(),\n }),\n experts: z\n .record(z.string().min(1).regex(expertKeyRegex), expertSchema.omit({ key: true }))\n .optional()\n .default({})\n .transform((experts) =>\n Object.fromEntries(\n Object.entries(experts).map(([key, expertWithoutKey]) => [\n key,\n expertSchema.parse({\n ...expertWithoutKey,\n key,\n }),\n ]),\n ),\n ),\n reasoningBudget: reasoningBudgetSchema.optional().default(defaultReasoningBudget),\n maxSteps: z.number().min(1).optional().default(defaultMaxSteps),\n maxRetries: z.number().min(0).optional().default(defaultMaxRetries),\n timeout: z.number().min(0).optional().default(defaultTimeout),\n startedAt: z.number().optional().default(Date.now()),\n updatedAt: z.number().optional().default(Date.now()),\n perstackApiBaseUrl: z.url().optional().default(defaultPerstackApiBaseUrl),\n perstackApiKey: z.string().optional(),\n perstackBaseSkillCommand: z.array(z.string()).optional(),\n env: z.record(z.string(), z.string()).optional().default({}),\n proxyUrl: z.string().optional(),\n verbose: z.boolean().optional(),\n }),\n checkpoint: checkpointSchema.optional(),\n})\n\n/**\n * Expert state events - state machine transitions during execution.\n * All events contain deeply serializable properties for checkpoint storage.\n */\ntype ExpertStatePayloads = {\n startRun: {\n initialCheckpoint: Checkpoint\n inputMessages: (InstructionMessage | UserMessage | ToolMessage)[]\n }\n /** Resume from stoppedByDelegate or stoppedByInteractiveTool */\n resumeFromStop: {\n checkpoint: Checkpoint\n }\n /** Proceed to CallingInteractiveTools from ResumingFromStop */\n proceedToInteractiveTools: {\n pendingToolCalls: ToolCall[]\n partialToolResults: ToolResult[]\n }\n startGeneration: {\n messages: Message[]\n }\n retry: {\n reason: string\n newMessages: (UserMessage | ExpertMessage | ToolMessage)[]\n toolCalls?: ToolCall[]\n toolResults?: ToolResult[]\n usage: Usage\n }\n callTools: {\n newMessage: ExpertMessage\n toolCalls: ToolCall[]\n usage: Usage\n }\n /** Internal: MCP tools finished, proceed to delegates */\n finishMcpTools: {\n partialToolResults: ToolResult[]\n pendingToolCalls: ToolCall[]\n }\n /** Internal: No delegates, proceed to interactive tools */\n skipDelegates: object\n resolveToolResults: {\n toolResults: ToolResult[]\n }\n attemptCompletion: {\n toolResult: ToolResult\n }\n finishToolCall: {\n newMessages: (UserMessage | ToolMessage)[]\n }\n resumeToolCalls: {\n pendingToolCalls: ToolCall[]\n partialToolResults: ToolResult[]\n }\n continueToNextStep: {\n checkpoint: Checkpoint\n step: Step\n nextCheckpoint: Checkpoint\n }\n stopRunByInteractiveTool: {\n checkpoint: Checkpoint\n step: Step\n }\n stopRunByDelegate: {\n checkpoint: Checkpoint\n step: Step\n }\n stopRunByExceededMaxSteps: {\n checkpoint: Checkpoint\n step: Step\n }\n stopRunByError: {\n checkpoint: Checkpoint\n step: Step\n error: {\n name: string\n message: string\n statusCode?: number\n isRetryable: boolean\n }\n }\n completeRun: {\n checkpoint: Checkpoint\n step: Step\n text: string\n usage: Usage\n }\n}\n\n/**\n * Streaming events - reasoning/result streaming during LLM generation.\n * Moved from RuntimeEvent to RunEvent to support proper attribution in parallel runs.\n */\ntype StreamingPayloads = {\n /** Start of reasoning stream (display hint) */\n startStreamingReasoning: object\n /** Streaming reasoning delta */\n streamReasoning: {\n delta: string\n }\n /** Reasoning stream completion (extended thinking / test-time scaling) */\n completeStreamingReasoning: {\n text: string\n }\n /** Start of run result stream (display hint) */\n startStreamingRunResult: object\n /** Streaming run result delta */\n streamRunResult: {\n delta: string\n }\n /** Run result stream completion */\n completeStreamingRunResult: {\n text: string\n }\n}\n\n/** Base properties for all run events (both state and streaming) */\nexport interface BaseEvent {\n /** Unique event ID */\n id: string\n /** Expert key that emitted this event */\n expertKey: string\n /** Unix timestamp when event was emitted */\n timestamp: number\n /** Job ID this event belongs to */\n jobId: string\n /** Run ID this event belongs to */\n runId: string\n /** Step number when event was emitted */\n stepNumber: number\n}\n\n/** Expert state event types (state machine transitions) */\nexport type ExpertStateEventType = keyof ExpertStatePayloads\n\n/** Streaming event types */\nexport type StreamingEventType = keyof StreamingPayloads\n\n/** All run event types (state + streaming) */\nexport type EventType = ExpertStateEventType | StreamingEventType\n\n/** Union type of expert state events */\nexport type ExpertStateEvent = {\n [K in ExpertStateEventType]: BaseEvent & { type: K } & ExpertStatePayloads[K]\n}[ExpertStateEventType]\n\n/** Union type of streaming events */\nexport type StreamingEvent = {\n [K in StreamingEventType]: BaseEvent & { type: K } & StreamingPayloads[K]\n}[StreamingEventType]\n\n/** Union type of all run events (state machine + streaming) */\nexport type RunEvent = ExpertStateEvent | StreamingEvent\n\n/** Extract a specific event type */\nexport type EventForType<T extends EventType> = Extract<RunEvent, { type: T }>\n\n/** Factory function to create expert state events */\nexport function createEvent<T extends ExpertStateEventType>(type: T) {\n return (\n setting: RunSetting,\n checkpoint: Checkpoint,\n data: Omit<\n Extract<ExpertStateEvent, { type: T }>,\n \"type\" | \"id\" | \"expertKey\" | \"timestamp\" | \"jobId\" | \"runId\" | \"stepNumber\"\n >,\n ): Extract<ExpertStateEvent, { type: T }> => {\n return {\n type,\n id: createId(),\n expertKey: checkpoint.expert.key,\n timestamp: Date.now(),\n jobId: setting.jobId,\n runId: setting.runId,\n stepNumber: checkpoint.stepNumber,\n ...data,\n } as Extract<ExpertStateEvent, { type: T }>\n }\n}\n\n/** Factory function to create streaming events */\nexport function createStreamingEvent<T extends StreamingEventType>(\n type: T,\n setting: RunSetting,\n checkpoint: Checkpoint,\n data: Omit<\n Extract<StreamingEvent, { type: T }>,\n \"type\" | \"id\" | \"expertKey\" | \"timestamp\" | \"jobId\" | \"runId\" | \"stepNumber\"\n >,\n): Extract<StreamingEvent, { type: T }> {\n return {\n type,\n id: createId(),\n expertKey: checkpoint.expert.key,\n timestamp: Date.now(),\n jobId: setting.jobId,\n runId: setting.runId,\n stepNumber: checkpoint.stepNumber,\n ...data,\n } as Extract<StreamingEvent, { type: T }>\n}\n\nexport const startRun = createEvent(\"startRun\")\nexport const resumeFromStop = createEvent(\"resumeFromStop\")\nexport const proceedToInteractiveTools = createEvent(\"proceedToInteractiveTools\")\nexport const startGeneration = createEvent(\"startGeneration\")\nexport const retry = createEvent(\"retry\")\nexport const callTools = createEvent(\"callTools\")\nexport const finishMcpTools = createEvent(\"finishMcpTools\")\nexport const skipDelegates = createEvent(\"skipDelegates\")\nexport const resolveToolResults = createEvent(\"resolveToolResults\")\nexport const attemptCompletion = createEvent(\"attemptCompletion\")\nexport const finishToolCall = createEvent(\"finishToolCall\")\nexport const resumeToolCalls = createEvent(\"resumeToolCalls\")\nexport const completeRun = createEvent(\"completeRun\")\nexport const stopRunByInteractiveTool = createEvent(\"stopRunByInteractiveTool\")\nexport const stopRunByDelegate = createEvent(\"stopRunByDelegate\")\nexport const stopRunByExceededMaxSteps = createEvent(\"stopRunByExceededMaxSteps\")\nexport const stopRunByError = createEvent(\"stopRunByError\")\nexport const continueToNextStep = createEvent(\"continueToNextStep\")\n\n/** Base properties for runtime events (infrastructure-level, no expertKey) */\ninterface BaseRuntimeEvent {\n /** Unique event ID */\n id: string\n /** Unix timestamp */\n timestamp: number\n /** Job ID */\n jobId: string\n /** Run ID */\n runId: string\n}\n\n/** Runtime event payloads (infrastructure-level events only) */\ntype RuntimeEventPayloads = {\n initializeRuntime: {\n runtimeVersion: string\n runtime?: string\n expertName: string\n experts: string[]\n model: string\n maxSteps?: number\n maxRetries: number\n timeout: number\n query?: string\n interactiveToolCall?: {\n toolName: string\n toolCallId: string\n text: string\n }\n }\n skillStarting: {\n skillName: string\n command: string\n args: string[]\n }\n skillConnected: {\n skillName: string\n serverInfo?: {\n name: string\n version: string\n }\n connectDurationMs?: number\n totalDurationMs?: number\n spawnDurationMs?: number\n handshakeDurationMs?: number\n toolDiscoveryDurationMs?: number\n }\n skillStderr: {\n skillName: string\n message: string\n }\n skillDisconnected: {\n skillName: string\n }\n /** Docker build progress event */\n dockerBuildProgress: {\n stage: \"pulling\" | \"building\" | \"complete\" | \"error\"\n service: string\n message: string\n progress?: number\n }\n /** Docker container status event */\n dockerContainerStatus: {\n status: \"starting\" | \"running\" | \"healthy\" | \"unhealthy\" | \"stopped\" | \"error\"\n service: string\n message?: string\n }\n /** Proxy access event (allow/block) */\n proxyAccess: {\n action: \"allowed\" | \"blocked\"\n domain: string\n port: number\n reason?: string\n }\n}\n\n/** All runtime event types */\nexport type RuntimeEventType = keyof RuntimeEventPayloads\n\n/** Union type of all runtime events */\nexport type RuntimeEvent = {\n [K in RuntimeEventType]: BaseRuntimeEvent & { type: K } & RuntimeEventPayloads[K]\n}[RuntimeEventType]\n\n/** Extract a specific runtime event type */\nexport type RuntimeEventForType<T extends RuntimeEventType> = Extract<RuntimeEvent, { type: T }>\n\n/** Factory function to create runtime events */\nexport function createRuntimeEvent<T extends RuntimeEventType>(\n type: T,\n jobId: string,\n runId: string,\n data: Omit<RuntimeEventForType<T>, \"type\" | \"id\" | \"timestamp\" | \"jobId\" | \"runId\">,\n): RuntimeEventForType<T> {\n return {\n type,\n id: createId(),\n timestamp: Date.now(),\n jobId,\n runId,\n ...data,\n } as RuntimeEventForType<T>\n}\n\n/** Union of all Perstack events (RunEvent for state machine, RuntimeEvent for environment) */\nexport type PerstackEvent = RunEvent | RuntimeEvent\n\n/**\n * Valid expert state event types (state machine transitions)\n */\nconst EXPERT_STATE_EVENT_TYPES = new Set<string>([\n \"startRun\",\n \"resumeFromStop\",\n \"proceedToInteractiveTools\",\n \"startGeneration\",\n \"retry\",\n \"callTools\",\n \"finishMcpTools\",\n \"skipDelegates\",\n \"resolveToolResults\",\n \"attemptCompletion\",\n \"finishToolCall\",\n \"resumeToolCalls\",\n \"continueToNextStep\",\n \"stopRunByInteractiveTool\",\n \"stopRunByDelegate\",\n \"stopRunByExceededMaxSteps\",\n \"stopRunByError\",\n \"completeRun\",\n])\n\n/**\n * Valid streaming event types\n */\nconst STREAMING_EVENT_TYPES = new Set<string>([\n \"startStreamingReasoning\",\n \"streamReasoning\",\n \"completeStreamingReasoning\",\n \"startStreamingRunResult\",\n \"streamRunResult\",\n \"completeStreamingRunResult\",\n])\n\n/**\n * Valid runtime event types (infrastructure-level events)\n */\nconst RUNTIME_EVENT_TYPES = new Set<string>([\n \"initializeRuntime\",\n \"skillStarting\",\n \"skillConnected\",\n \"skillStderr\",\n \"skillDisconnected\",\n \"dockerBuildProgress\",\n \"dockerContainerStatus\",\n \"proxyAccess\",\n])\n\n/** Validate if a string is a valid RunEvent type (ExpertStateEvent or StreamingEvent) */\nexport function isValidEventType(type: string): type is EventType {\n return EXPERT_STATE_EVENT_TYPES.has(type) || STREAMING_EVENT_TYPES.has(type)\n}\n\n/** Validate if a string is a valid RuntimeEvent type */\nexport function isValidRuntimeEventType(type: string): type is RuntimeEventType {\n return RUNTIME_EVENT_TYPES.has(type)\n}\n","import { z } from \"zod\"\nimport type { InstructionMessage, Message, ToolMessage, UserMessage } from \"./message.js\"\nimport {\n instructionMessageSchema,\n messageSchema,\n toolMessageSchema,\n userMessageSchema,\n} from \"./message.js\"\nimport type { ToolCall } from \"./tool-call.js\"\nimport { toolCallSchema } from \"./tool-call.js\"\nimport type { ToolResult } from \"./tool-result.js\"\nimport { toolResultSchema } from \"./tool-result.js\"\nimport type { Usage } from \"./usage.js\"\nimport { usageSchema } from \"./usage.js\"\n\n/**\n * A single execution step in an Expert run.\n * Each step represents one LLM generation cycle, optionally followed by tool calls.\n */\nexport interface Step {\n /** Sequential step number (1-indexed) */\n stepNumber: number\n /** Messages sent to the LLM for this step */\n inputMessages?: (InstructionMessage | UserMessage | ToolMessage)[]\n /** Messages generated during this step */\n newMessages: Message[]\n /** Tool calls made during this step, if any */\n toolCalls?: ToolCall[]\n /** Results of the tool calls, if any */\n toolResults?: ToolResult[]\n /** Tool calls waiting to be processed (sorted: MCP → Delegate → Interactive) */\n pendingToolCalls?: ToolCall[]\n /** Partial tool results collected so far (used during mixed tool call processing) */\n partialToolResults?: ToolResult[]\n /** Token usage for this step */\n usage: Usage\n /** Unix timestamp (ms) when step started */\n startedAt: number\n /** Unix timestamp (ms) when step finished */\n finishedAt?: number\n}\n\nexport const stepSchema = z.object({\n stepNumber: z.number(),\n inputMessages: z\n .array(z.union([instructionMessageSchema, userMessageSchema, toolMessageSchema]))\n .optional(),\n newMessages: z.array(messageSchema),\n toolCalls: z.array(toolCallSchema).optional(),\n toolResults: z.array(toolResultSchema).optional(),\n pendingToolCalls: z.array(toolCallSchema).optional(),\n partialToolResults: z.array(toolResultSchema).optional(),\n usage: usageSchema,\n startedAt: z.number(),\n finishedAt: z.number().optional(),\n})\nstepSchema satisfies z.ZodType<Step>\n","import type { Activity, ActivityOrGroup, ParallelActivitiesGroup } from \"../schemas/activity.js\"\nimport type { Checkpoint, DelegationTarget } from \"../schemas/checkpoint.js\"\nimport type { Message } from \"../schemas/message.js\"\nimport type { MessagePart, ThinkingPart } from \"../schemas/message-part.js\"\nimport type { Step } from \"../schemas/step.js\"\nimport type { ToolCall } from \"../schemas/tool-call.js\"\nimport type { ToolResult } from \"../schemas/tool-result.js\"\n\nexport const BASE_SKILL_PREFIX = \"@perstack/base\"\n\nexport type GetActivitiesParams = {\n checkpoint: Checkpoint\n step: Step\n}\n\n/**\n * Extracts reasoning from Step.newMessages by finding thinkingParts.\n */\nfunction extractReasoning(newMessages: Message[]): string | undefined {\n const thinkingParts: ThinkingPart[] = []\n for (const message of newMessages) {\n for (const content of message.contents) {\n if (content.type === \"thinkingPart\") {\n thinkingParts.push(content)\n }\n }\n }\n if (thinkingParts.length === 0) return undefined\n return thinkingParts.map((p) => p.thinking).join(\"\\n\\n\")\n}\n\n/**\n * Wraps multiple activities into a ParallelActivitiesGroup when they share reasoning.\n * Single activities are returned as-is.\n */\nfunction wrapInGroupIfParallel(\n activities: Activity[],\n reasoning: string | undefined,\n expertKey: string,\n runId: string,\n stepNumber: number,\n): ActivityOrGroup[] {\n if (activities.length <= 1) {\n // Single activity - return as-is with reasoning\n return activities\n }\n\n // Multiple activities - wrap in a group with shared reasoning\n // Remove reasoning from individual activities since it's on the group\n const activitiesWithoutReasoning = activities.map((a) => {\n const { reasoning: _, ...rest } = a\n return rest as Activity\n })\n\n const group: ParallelActivitiesGroup = {\n type: \"parallelGroup\",\n id: `parallel-${runId}-step${stepNumber}`,\n expertKey,\n runId,\n reasoning,\n activities: activitiesWithoutReasoning,\n }\n\n return [group]\n}\n\n/**\n * Computes activities from a checkpoint and step.\n * Returns an array of activities or activity groups, supporting parallel tool calls and delegations.\n * When multiple activities are produced from a single step, they are wrapped in a ParallelActivitiesGroup\n * with shared reasoning.\n */\nexport function getActivities(params: GetActivitiesParams): ActivityOrGroup[] {\n const { checkpoint, step } = params\n const { status, delegateTo, runId, stepNumber } = checkpoint\n const expertKey = checkpoint.expert.key\n const reasoning = extractReasoning(step.newMessages)\n\n // Completed run - final result generation (after attemptCompletion)\n if (status === \"completed\") {\n return [createCompleteActivity(step.newMessages, reasoning)]\n }\n\n // Error status - use checkpoint error information\n if (status === \"stoppedByError\") {\n return [createErrorActivity(checkpoint, reasoning)]\n }\n\n // Parallel delegate activities - each delegation becomes a separate activity\n if (status === \"stoppedByDelegate\") {\n if (!delegateTo || delegateTo.length === 0) {\n return [\n createRetryActivity(\n step.newMessages,\n reasoning,\n \"Delegate status but no delegation targets\",\n ),\n ]\n }\n const activities = delegateTo.map((d) => createDelegateActivity(d, reasoning))\n return wrapInGroupIfParallel(activities, reasoning, expertKey, runId, stepNumber)\n }\n\n // Interactive tool activities - may be parallel\n if (status === \"stoppedByInteractiveTool\") {\n const toolCalls = step.toolCalls ?? []\n if (toolCalls.length === 0) {\n return [createRetryActivity(step.newMessages, reasoning)]\n }\n const activities = toolCalls.map((tc) =>\n createInteractiveToolActivity(tc.skillName, tc.toolName, tc, reasoning),\n )\n return wrapInGroupIfParallel(activities, reasoning, expertKey, runId, stepNumber)\n }\n\n // Normal tool activities - may be parallel\n const toolCalls = step.toolCalls ?? []\n const toolResults = step.toolResults ?? []\n\n if (toolCalls.length === 0) {\n return [createRetryActivity(step.newMessages, reasoning)]\n }\n\n const activities: Activity[] = []\n for (const toolCall of toolCalls) {\n const toolResult = toolResults.find((tr) => tr.id === toolCall.id)\n if (!toolResult) {\n // No result yet for this tool call, skip\n continue\n }\n const { skillName, toolName } = toolCall\n if (skillName.startsWith(BASE_SKILL_PREFIX)) {\n activities.push(createBaseToolActivity(toolName, toolCall, toolResult, reasoning))\n } else {\n activities.push(\n createGeneralToolActivity(skillName, toolName, toolCall, toolResult, reasoning),\n )\n }\n }\n\n if (activities.length === 0) {\n return [createRetryActivity(step.newMessages, reasoning)]\n }\n\n return wrapInGroupIfParallel(activities, reasoning, expertKey, runId, stepNumber)\n}\n\nfunction createCompleteActivity(newMessages: Message[], reasoning: string | undefined): Activity {\n // Extract final text from the last expertMessage's textPart\n const lastExpertMessage = [...newMessages].reverse().find((m) => m.type === \"expertMessage\")\n const textPart = lastExpertMessage?.contents.find((c) => c.type === \"textPart\")\n return {\n type: \"complete\",\n id: \"\",\n expertKey: \"\",\n runId: \"\",\n reasoning,\n text: textPart?.text ?? \"\",\n }\n}\n\nfunction createDelegateActivity(\n delegate: DelegationTarget,\n reasoning: string | undefined,\n): Activity {\n return {\n type: \"delegate\",\n id: \"\",\n expertKey: \"\",\n runId: \"\",\n reasoning,\n delegateExpertKey: delegate.expert.key,\n query: delegate.query,\n }\n}\n\nfunction createInteractiveToolActivity(\n skillName: string,\n toolName: string,\n toolCall: ToolCall,\n reasoning: string | undefined,\n): Activity {\n return {\n type: \"interactiveTool\",\n id: \"\",\n expertKey: \"\",\n runId: \"\",\n reasoning,\n skillName,\n toolName,\n args: toolCall.args,\n }\n}\n\nfunction createRetryActivity(\n newMessages: Message[],\n reasoning: string | undefined,\n customError?: string,\n): Activity {\n const lastMessage = newMessages[newMessages.length - 1]\n const textPart = lastMessage?.contents.find((c) => c.type === \"textPart\")\n return {\n type: \"retry\",\n id: \"\",\n expertKey: \"\",\n runId: \"\",\n reasoning,\n error: customError ?? \"No tool call or result found\",\n message: textPart?.text ?? \"\",\n }\n}\n\nfunction createErrorActivity(checkpoint: Checkpoint, reasoning: string | undefined): Activity {\n const error = checkpoint.error\n return {\n type: \"error\",\n id: \"\",\n expertKey: \"\",\n runId: \"\",\n reasoning,\n error: error?.message ?? \"Unknown error\",\n errorName: error?.name,\n isRetryable: error?.isRetryable,\n }\n}\n\nexport function createBaseToolActivity(\n toolName: string,\n toolCall: ToolCall,\n toolResult: ToolResult,\n reasoning: string | undefined,\n): Activity {\n const args = toolCall.args as Record<string, unknown>\n const resultContents = toolResult.result\n const errorText = getErrorFromResult(resultContents)\n const baseFields = { id: \"\", expertKey: \"\", runId: \"\", reasoning }\n\n switch (toolName) {\n case \"attemptCompletion\": {\n const remainingTodos = parseRemainingTodosFromResult(resultContents)\n return {\n type: \"attemptCompletion\",\n ...baseFields,\n remainingTodos,\n error: errorText,\n }\n }\n\n case \"todo\": {\n const todos = parseTodosFromResult(resultContents)\n return {\n type: \"todo\",\n ...baseFields,\n newTodos: Array.isArray(args[\"newTodos\"]) ? args[\"newTodos\"].map(String) : undefined,\n completedTodos: Array.isArray(args[\"completedTodos\"])\n ? args[\"completedTodos\"].map(Number)\n : undefined,\n todos,\n error: errorText,\n }\n }\n\n case \"clearTodo\":\n return {\n type: \"clearTodo\",\n ...baseFields,\n error: errorText,\n }\n\n case \"readImageFile\":\n return {\n type: \"readImageFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n mimeType: parseStringField(resultContents, \"mimeType\"),\n size: parseNumberField(resultContents, \"size\"),\n error: errorText,\n }\n\n case \"readPdfFile\":\n return {\n type: \"readPdfFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n mimeType: parseStringField(resultContents, \"mimeType\"),\n size: parseNumberField(resultContents, \"size\"),\n error: errorText,\n }\n\n case \"readTextFile\":\n return {\n type: \"readTextFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n content: parseStringField(resultContents, \"content\"),\n from: typeof args[\"from\"] === \"number\" ? args[\"from\"] : undefined,\n to: typeof args[\"to\"] === \"number\" ? args[\"to\"] : undefined,\n error: errorText,\n }\n\n case \"editTextFile\":\n return {\n type: \"editTextFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n newText: String(args[\"newText\"] ?? \"\"),\n oldText: String(args[\"oldText\"] ?? \"\"),\n error: errorText,\n }\n\n case \"appendTextFile\":\n return {\n type: \"appendTextFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n text: String(args[\"text\"] ?? \"\"),\n error: errorText,\n }\n\n case \"writeTextFile\":\n return {\n type: \"writeTextFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n text: String(args[\"text\"] ?? \"\"),\n error: errorText,\n }\n\n case \"deleteFile\":\n return {\n type: \"deleteFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n error: errorText,\n }\n\n case \"deleteDirectory\":\n return {\n type: \"deleteDirectory\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n recursive: typeof args[\"recursive\"] === \"boolean\" ? args[\"recursive\"] : undefined,\n error: errorText,\n }\n\n case \"moveFile\":\n return {\n type: \"moveFile\",\n ...baseFields,\n source: String(args[\"source\"] ?? \"\"),\n destination: String(args[\"destination\"] ?? \"\"),\n error: errorText,\n }\n\n case \"getFileInfo\":\n return {\n type: \"getFileInfo\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n info: parseFileInfoFromResult(resultContents),\n error: errorText,\n }\n\n case \"createDirectory\":\n return {\n type: \"createDirectory\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n error: errorText,\n }\n\n case \"listDirectory\":\n return {\n type: \"listDirectory\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n items: parseListDirectoryFromResult(resultContents),\n error: errorText,\n }\n\n case \"exec\":\n return {\n type: \"exec\",\n ...baseFields,\n command: String(args[\"command\"] ?? \"\"),\n args: Array.isArray(args[\"args\"]) ? args[\"args\"].map(String) : [],\n cwd: String(args[\"cwd\"] ?? \"\"),\n output: parseStringField(resultContents, \"output\"),\n error: errorText,\n stdout: parseStringField(resultContents, \"stdout\"),\n stderr: parseStringField(resultContents, \"stderr\"),\n }\n\n default:\n // Use actual skillName from toolCall, not the constant\n return createGeneralToolActivity(\n toolCall.skillName,\n toolName,\n toolCall,\n toolResult,\n reasoning,\n )\n }\n}\n\nexport function createGeneralToolActivity(\n skillName: string,\n toolName: string,\n toolCall: ToolCall,\n toolResult: ToolResult,\n reasoning: string | undefined,\n): Activity {\n const errorText = getErrorFromResult(toolResult.result)\n return {\n type: \"generalTool\",\n id: \"\",\n expertKey: \"\",\n runId: \"\",\n reasoning,\n skillName,\n toolName,\n args: toolCall.args as Record<string, unknown>,\n result: toolResult.result,\n error: errorText,\n }\n}\n\nfunction getErrorFromResult(result: MessagePart[]): string | undefined {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return undefined\n try {\n const parsed = JSON.parse(textPart.text)\n if (typeof parsed.error === \"string\") {\n return parsed.error\n }\n } catch {\n // Not JSON - only treat as error if it starts with \"Error:\" or \"error:\"\n // This avoids false positives from text containing \"error\" in other contexts\n const trimmed = textPart.text.trim()\n if (trimmed.toLowerCase().startsWith(\"error:\") || trimmed.toLowerCase().startsWith(\"error \")) {\n return textPart.text\n }\n }\n return undefined\n}\n\nfunction parseStringField(result: MessagePart[], field: string): string | undefined {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return undefined\n try {\n const parsed = JSON.parse(textPart.text)\n return typeof parsed[field] === \"string\" ? parsed[field] : undefined\n } catch {\n return undefined\n }\n}\n\nfunction parseNumberField(result: MessagePart[], field: string): number | undefined {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return undefined\n try {\n const parsed = JSON.parse(textPart.text)\n return typeof parsed[field] === \"number\" ? parsed[field] : undefined\n } catch {\n return undefined\n }\n}\n\nfunction parseRemainingTodosFromResult(\n result: MessagePart[],\n): Array<{ id: number; title: string; completed: boolean }> | undefined {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return undefined\n try {\n const parsed = JSON.parse(textPart.text)\n if (Array.isArray(parsed.remainingTodos)) {\n return parsed.remainingTodos.map(\n (t: { id?: number; title?: string; completed?: boolean }, i: number) => ({\n id: typeof t.id === \"number\" ? t.id : i,\n title: typeof t.title === \"string\" ? t.title : \"\",\n completed: typeof t.completed === \"boolean\" ? t.completed : false,\n }),\n )\n }\n } catch {\n // Ignore parse errors\n }\n return undefined\n}\n\nfunction parseTodosFromResult(\n result: MessagePart[],\n): Array<{ id: number; title: string; completed: boolean }> {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return []\n try {\n const parsed = JSON.parse(textPart.text)\n if (Array.isArray(parsed.todos)) {\n return parsed.todos.map(\n (t: { id?: number; title?: string; completed?: boolean }, i: number) => ({\n id: typeof t.id === \"number\" ? t.id : i,\n title: typeof t.title === \"string\" ? t.title : \"\",\n completed: typeof t.completed === \"boolean\" ? t.completed : false,\n }),\n )\n }\n } catch {\n // Ignore parse errors\n }\n return []\n}\n\nfunction parseFileInfoFromResult(result: MessagePart[]):\n | {\n exists: boolean\n name: string\n directory: string\n extension: string | null\n type: \"file\" | \"directory\"\n mimeType: string | null\n size: number\n sizeFormatted: string\n created: string\n modified: string\n accessed: string\n }\n | undefined {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return undefined\n try {\n const parsed = JSON.parse(textPart.text)\n return {\n exists: typeof parsed.exists === \"boolean\" ? parsed.exists : true,\n name: String(parsed.name ?? \"\"),\n directory: String(parsed.directory ?? \"\"),\n extension: typeof parsed.extension === \"string\" ? parsed.extension : null,\n type: parsed.type === \"directory\" ? \"directory\" : \"file\",\n mimeType: typeof parsed.mimeType === \"string\" ? parsed.mimeType : null,\n size: typeof parsed.size === \"number\" ? parsed.size : 0,\n sizeFormatted: String(parsed.sizeFormatted ?? \"\"),\n created: String(parsed.created ?? \"\"),\n modified: String(parsed.modified ?? \"\"),\n accessed: String(parsed.accessed ?? \"\"),\n }\n } catch {\n return undefined\n }\n}\n\nfunction parseListDirectoryFromResult(result: MessagePart[]):\n | Array<{\n name: string\n path: string\n type: \"file\" | \"directory\"\n size: number\n modified: string\n }>\n | undefined {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return undefined\n try {\n const parsed = JSON.parse(textPart.text)\n if (!Array.isArray(parsed.items)) return undefined\n return parsed.items.map(\n (item: {\n name?: string\n path?: string\n type?: string\n size?: number\n modified?: string\n }) => ({\n name: String(item.name ?? \"\"),\n path: String(item.path ?? \"\"),\n type: item.type === \"directory\" ? \"directory\" : \"file\",\n size: typeof item.size === \"number\" ? item.size : 0,\n modified: String(item.modified ?? \"\"),\n }),\n )\n } catch {\n return undefined\n }\n}\n","const SAFE_ENV_VARS = [\n // System\n \"PATH\",\n \"HOME\",\n \"SHELL\",\n \"TERM\",\n \"NODE_PATH\",\n // Proxy\n \"HTTP_PROXY\",\n \"HTTPS_PROXY\",\n \"http_proxy\",\n \"https_proxy\",\n \"NO_PROXY\",\n \"no_proxy\",\n \"PERSTACK_PROXY_URL\",\n \"NPM_CONFIG_PROXY\",\n \"NPM_CONFIG_HTTPS_PROXY\",\n]\nconst PROTECTED_ENV_VARS = new Set([\n \"PATH\",\n \"HOME\",\n \"SHELL\",\n \"NODE_PATH\",\n \"LD_PRELOAD\",\n \"LD_LIBRARY_PATH\",\n \"DYLD_INSERT_LIBRARIES\",\n \"DYLD_LIBRARY_PATH\",\n \"NODE_OPTIONS\",\n \"PYTHONPATH\",\n \"PERL5LIB\",\n \"RUBYLIB\",\n])\nexport function getFilteredEnv(additional?: Record<string, string>): Record<string, string> {\n const filtered: Record<string, string> = {}\n for (const key of SAFE_ENV_VARS) {\n if (process.env[key]) {\n filtered[key] = process.env[key]\n }\n }\n if (additional) {\n for (const [key, value] of Object.entries(additional)) {\n if (!PROTECTED_ENV_VARS.has(key.toUpperCase())) {\n filtered[key] = value\n }\n }\n }\n return filtered\n}\nexport { SAFE_ENV_VARS }\n","import type { PerstackEvent } from \"../schemas/runtime.js\"\nimport { isValidEventType, isValidRuntimeEventType } from \"../schemas/runtime.js\"\n\n/**\n * Validate and parse event filter option\n * @param filter - Array of event type strings to validate\n * @returns The validated filter array\n * @throws Error if any event type is invalid\n */\nexport function validateEventFilter(filter: string[]): string[] {\n const invalid = filter.filter((type) => !isValidEventType(type) && !isValidRuntimeEventType(type))\n\n if (invalid.length > 0) {\n throw new Error(\n `Invalid event type(s): ${invalid.join(\", \")}. ` +\n \"Valid event types are: startRun, completeRun, stopRunByError, callTools, etc. \" +\n \"See documentation for full list.\",\n )\n }\n\n return filter\n}\n\n/**\n * Create a filtered event listener that only emits events of allowed types\n * @param listener - The original event listener to wrap\n * @param allowedTypes - Set of event types to allow through\n * @returns A filtered event listener\n */\nexport function createFilteredEventListener(\n listener: (event: PerstackEvent) => void,\n allowedTypes: Set<string>,\n): (event: PerstackEvent) => void {\n return (event: PerstackEvent) => {\n if (allowedTypes.has(event.type)) {\n listener(event)\n }\n }\n}\n","import type { ZodError, ZodSchema } from \"zod\"\n\nexport function formatZodError(error: ZodError): string {\n const issues = error.issues.map((issue) => {\n const path = issue.path.length > 0 ? `${issue.path.join(\".\")}: ` : \"\"\n return ` - ${path}${issue.message}`\n })\n return `Validation failed:\\n${issues.join(\"\\n\")}`\n}\n\nexport function parseWithFriendlyError<T>(\n schema: ZodSchema<T>,\n data: unknown,\n context?: string,\n): T {\n const result = schema.safeParse(data)\n if (result.success) {\n return result.data\n }\n const prefix = context ? `${context}: ` : \"\"\n throw new Error(`${prefix}${formatZodError(result.error)}`)\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/adapters/event-creators.ts","../../src/adapters/registry.ts","../../src/constants/constants.ts","../../src/known-models/index.ts","../../src/schemas/message-part.ts","../../src/schemas/activity.ts","../../src/schemas/message.ts","../../src/schemas/runtime-name.ts","../../src/schemas/tool-call.ts","../../src/schemas/tool-result.ts","../../src/schemas/usage.ts","../../src/schemas/checkpoint.ts","../../src/schemas/provider-tools.ts","../../src/schemas/skill.ts","../../src/schemas/expert.ts","../../src/schemas/job.ts","../../src/schemas/lockfile.ts","../../src/schemas/provider-config.ts","../../src/schemas/perstack-toml.ts","../../src/schemas/run-command.ts","../../src/schemas/runtime.ts","../../src/schemas/step.ts","../../src/utils/activity.ts","../../src/utils/env-filter.ts","../../src/utils/event-filter.ts","../../src/utils/zod-error.ts"],"names":["z","isPrivateOrLocalIP","sseEndpointSchema","createId","activities","toolCalls"],"mappings":"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","file":"index.js","sourcesContent":["import { createId } from \"@paralleldrive/cuid2\"\nimport type { Checkpoint } from \"../schemas/checkpoint.js\"\nimport type { ExpertMessage, ToolMessage } from \"../schemas/message.js\"\nimport type { RunEvent, RuntimeEvent } from \"../schemas/runtime.js\"\nimport type { RuntimeName } from \"../schemas/runtime-name.js\"\nimport type { ToolCall } from \"../schemas/tool-call.js\"\nimport type { ToolResult } from \"../schemas/tool-result.js\"\nimport type { Usage } from \"../schemas/usage.js\"\n\nexport function createEmptyUsage(): Usage {\n return {\n inputTokens: 0,\n outputTokens: 0,\n reasoningTokens: 0,\n totalTokens: 0,\n cachedInputTokens: 0,\n }\n}\n\nexport type CreateCheckpointParams = {\n jobId: string\n runId: string\n expertKey: string\n expert: { key: string; name: string; version: string }\n output: string\n runtime: RuntimeName\n}\n\nexport function createNormalizedCheckpoint(params: CreateCheckpointParams): Checkpoint {\n const { jobId, runId, expert, output, runtime } = params\n const checkpointId = createId()\n const expertMessage: ExpertMessage = {\n id: createId(),\n type: \"expertMessage\",\n contents: [{ type: \"textPart\", id: createId(), text: output }],\n }\n return {\n id: checkpointId,\n jobId,\n runId,\n status: \"completed\",\n stepNumber: 1,\n messages: [expertMessage],\n expert: { key: expert.key, name: expert.name, version: expert.version },\n usage: createEmptyUsage(),\n metadata: { runtime },\n }\n}\n\nexport function createStartRunEvent(\n jobId: string,\n runId: string,\n expertKey: string,\n checkpoint: Checkpoint,\n): RunEvent {\n return {\n type: \"startRun\",\n id: createId(),\n expertKey,\n timestamp: Date.now(),\n jobId,\n runId,\n stepNumber: checkpoint.stepNumber,\n initialCheckpoint: checkpoint,\n inputMessages: [],\n }\n}\n\nexport function createRuntimeInitEvent(\n jobId: string,\n runId: string,\n expertName: string,\n runtime: RuntimeName,\n version: string,\n query?: string,\n): RuntimeEvent {\n return {\n type: \"initializeRuntime\",\n id: createId(),\n timestamp: Date.now(),\n jobId,\n runId,\n runtimeVersion: version,\n runtime,\n expertName,\n experts: [],\n model: `${runtime}:default`,\n maxRetries: 0,\n timeout: 0,\n query,\n }\n}\n\nexport function createCompleteRunEvent(\n jobId: string,\n runId: string,\n expertKey: string,\n checkpoint: Checkpoint,\n output: string,\n startedAt?: number,\n): RunEvent {\n const lastMessage = checkpoint.messages[checkpoint.messages.length - 1]\n return {\n type: \"completeRun\",\n id: createId(),\n expertKey,\n timestamp: Date.now(),\n jobId,\n runId,\n stepNumber: checkpoint.stepNumber,\n checkpoint,\n step: {\n stepNumber: checkpoint.stepNumber,\n newMessages: lastMessage ? [lastMessage] : [],\n usage: createEmptyUsage(),\n startedAt: startedAt ?? Date.now(),\n },\n text: output,\n usage: createEmptyUsage(),\n }\n}\n\nexport function createCallToolsEvent(\n jobId: string,\n runId: string,\n expertKey: string,\n stepNumber: number,\n toolCalls: ToolCall[],\n _checkpoint: Checkpoint,\n): RunEvent {\n const expertMessage: ExpertMessage = {\n id: createId(),\n type: \"expertMessage\",\n contents: [],\n }\n return {\n type: \"callTools\",\n id: createId(),\n expertKey,\n timestamp: Date.now(),\n jobId,\n runId,\n stepNumber,\n newMessage: expertMessage,\n toolCalls,\n usage: createEmptyUsage(),\n }\n}\n\nexport function createResolveToolResultsEvent(\n jobId: string,\n runId: string,\n expertKey: string,\n stepNumber: number,\n toolResults: ToolResult[],\n): RunEvent {\n return {\n type: \"resolveToolResults\",\n id: createId(),\n expertKey,\n timestamp: Date.now(),\n jobId,\n runId,\n stepNumber,\n toolResults,\n }\n}\n\nexport function createToolMessage(\n toolCallId: string,\n toolName: string,\n resultText: string,\n): ToolMessage {\n return {\n id: createId(),\n type: \"toolMessage\",\n contents: [\n {\n type: \"toolResultPart\",\n id: createId(),\n toolCallId,\n toolName,\n contents: [{ type: \"textPart\", id: createId(), text: resultText }],\n },\n ],\n }\n}\n","import type { RuntimeName } from \"../schemas/runtime-name.js\"\nimport type { RuntimeAdapter } from \"./types.js\"\n\nconst adapters: Map<RuntimeName, () => RuntimeAdapter> = new Map()\n\nexport function registerAdapter(runtime: RuntimeName, factory: () => RuntimeAdapter): void {\n adapters.set(runtime, factory)\n}\n\nexport function getAdapter(runtime: RuntimeName): RuntimeAdapter {\n const factory = adapters.get(runtime)\n if (!factory) {\n throw new Error(\n `Runtime \"${runtime}\" is not registered. Available runtimes: ${Array.from(adapters.keys()).join(\", \")}`,\n )\n }\n return factory()\n}\n\nexport function isAdapterAvailable(runtime: RuntimeName): boolean {\n return adapters.has(runtime)\n}\n\nexport function getRegisteredRuntimes(): RuntimeName[] {\n return Array.from(adapters.keys())\n}\n","export const defaultPerstackApiBaseUrl = \"https://api.perstack.ai\"\n\n// Organization\nexport const organizationNameRegex = /^[a-z0-9][a-z0-9_.-]*$/\nexport const maxOrganizationNameLength = 128\n\n// Application\nexport const maxApplicationNameLength = 255\n\n// Expert\nexport const expertKeyRegex =\n /^((?:@[a-z0-9][a-z0-9_.-]*\\/)?[a-z0-9][a-z0-9_.-]*)(?:@((?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[\\w.-]+)?(?:\\+[\\w.-]+)?)|@([a-z0-9][a-z0-9_.-]*))?$/\nexport const expertNameRegex = /^(@[a-z0-9][a-z0-9_-]*\\/)?[a-z0-9][a-z0-9_-]*$/\nexport const expertVersionRegex =\n /^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[\\w.-]+)?(?:\\+[\\w.-]+)?$/\nexport const tagNameRegex = /^[a-z0-9][a-z0-9_-]*$/\nexport const maxExpertNameLength = 255\nexport const maxExpertVersionTagLength = 255\nexport const maxExpertKeyLength = 511\nexport const maxExpertDescriptionLength = 1024 * 2\nexport const maxExpertInstructionLength = 1024 * 20\nexport const maxExpertSkillItems = 255\nexport const maxExpertDelegateItems = 255\nexport const maxExpertTagItems = 8\nexport const defaultMaxSteps = 100\nexport const defaultMaxRetries = 5\nexport const defaultTimeout = 5 * 1000 * 60\n\n// ExpertJob\nexport const maxExpertJobQueryLength = 1024 * 20\nexport const maxExpertJobFileNameLength = 1024 * 10\n\n// Skill\nexport const packageWithVersionRegex =\n /^(?:@[a-z0-9][a-z0-9_.-]*\\/)?[a-z0-9][a-z0-9_.-]*(?:@(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[\\w.-]+)?(?:\\+[\\w.-]+)?|@[a-z0-9][a-z0-9_.-]*)?$/\nexport const urlSafeRegex = /^[a-z0-9][a-z0-9_-]*$/\nexport const maxSkillNameLength = 255\nexport const maxSkillDescriptionLength = 1024 * 2\nexport const maxSkillRuleLength = 1024 * 2\nexport const maxSkillPickOmitItems = 255\nexport const maxSkillRequiredEnvItems = 255\nexport const maxSkillToolNameLength = 255\nexport const maxSkillEndpointLength = 1024 * 2\nexport const maxSkillInputJsonSchemaLength = 1024 * 20\nexport const maxSkillToolItems = 255\n\n// Checkpoint\nexport const maxCheckpointToolCallIdLength = 255\n\n// Workspace\nexport const envNameRegex = /^[a-zA-Z0-9][a-zA-Z0-9_-]*$/\nexport const maxEnvNameLength = 255\n","export const knownModels = [\n {\n provider: \"anthropic\",\n models: [\n // https://docs.claude.com/en/docs/about-claude/models/overview#model-comparison-table\n {\n name: \"claude-opus-4-5\",\n contextWindow: 200_000,\n maxOutputTokens: 32_000,\n },\n {\n name: \"claude-opus-4-1\",\n contextWindow: 200_000,\n maxOutputTokens: 32_000,\n },\n {\n name: \"claude-opus-4-20250514\",\n contextWindow: 200_000,\n maxOutputTokens: 32_000,\n },\n {\n name: \"claude-sonnet-4-5\",\n contextWindow: 200_000,\n maxOutputTokens: 64_000,\n },\n {\n name: \"claude-sonnet-4-20250514\",\n contextWindow: 200_000,\n maxOutputTokens: 64_000,\n },\n {\n name: \"claude-3-7-sonnet-20250219\",\n contextWindow: 200_000,\n maxOutputTokens: 64_000,\n },\n {\n name: \"claude-haiku-4-5\",\n contextWindow: 200_000,\n maxOutputTokens: 8_192,\n },\n {\n name: \"claude-3-5-haiku-latest\",\n contextWindow: 200_000,\n maxOutputTokens: 8_192,\n },\n ],\n },\n {\n provider: \"google\",\n models: [\n // https://ai.google.dev/gemini-api/docs/models#gemini-3-pro\n {\n name: \"gemini-3-pro-preview\",\n contextWindow: 1_048_576,\n maxOutputTokens: 65_536,\n },\n // https://ai.google.dev/gemini-api/docs/models#gemini-2.5-pro\n {\n name: \"gemini-2.5-pro\",\n contextWindow: 1_048_576,\n maxOutputTokens: 65_536,\n },\n // https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash\n {\n name: \"gemini-2.5-flash\",\n contextWindow: 1_048_576,\n maxOutputTokens: 65_536,\n },\n // https://ai.google.dev/gemini-api/docs/models#gemini-2.5-flash-lite\n {\n name: \"gemini-2.5-flash-lite\",\n contextWindow: 1_048_576,\n maxOutputTokens: 65_536,\n },\n ],\n },\n {\n provider: \"openai\",\n models: [\n // https://platform.openai.com/docs/models/gpt-5\n {\n name: \"gpt-5\",\n contextWindow: 400_000,\n maxOutputTokens: 128_000,\n },\n // https://platform.openai.com/docs/models/gpt-5-mini\n {\n name: \"gpt-5-mini\",\n contextWindow: 400_000,\n maxOutputTokens: 128_000,\n },\n // https://platform.openai.com/docs/models/gpt-5-nano\n {\n name: \"gpt-5-nano\",\n contextWindow: 400_000,\n maxOutputTokens: 128_000,\n },\n // https://platform.openai.com/docs/models/gpt-5-chat-latest\n {\n name: \"gpt-5-chat-latest\",\n contextWindow: 128_000,\n maxOutputTokens: 16_384,\n },\n // https://platform.openai.com/docs/models/o4-mini\n {\n name: \"o4-mini\",\n contextWindow: 200_000,\n maxOutputTokens: 100_000,\n },\n // https://platform.openai.com/docs/models/o3\n {\n name: \"o3\",\n contextWindow: 200_000,\n maxOutputTokens: 10_000,\n },\n // https://platform.openai.com/docs/models/o3-mini\n {\n name: \"o3-mini\",\n contextWindow: 200_000,\n maxOutputTokens: 10_000,\n },\n // https://platform.openai.com/docs/models/gpt-4.1\n {\n name: \"gpt-4.1\",\n contextWindow: 1_047_576,\n maxOutputTokens: 32_768,\n },\n ],\n },\n {\n provider: \"deepseek\",\n models: [\n {\n name: \"deepseek-chat\",\n contextWindow: 128_000,\n maxOutputTokens: 8_192,\n },\n {\n name: \"deepseek-reasoner\",\n contextWindow: 128_000,\n maxOutputTokens: 64_000,\n },\n ],\n },\n {\n provider: \"ollama\",\n models: [\n // https://platform.openai.com/docs/models/gpt-oss-20b\n {\n name: \"gpt-oss:20b\",\n contextWindow: 131_072,\n maxOutputTokens: 131_072,\n },\n // https://platform.openai.com/docs/models/gpt-oss-120b\n {\n name: \"gpt-oss:120b\",\n contextWindow: 131_072,\n maxOutputTokens: 131_072,\n },\n // https://ai.google.dev/gemma/docs/core/model_card_3\n {\n name: \"gemma3:1b\",\n contextWindow: 32_000,\n maxOutputTokens: 32_000,\n },\n // https://ai.google.dev/gemma/docs/core/model_card_3\n {\n name: \"gemma3:4b\",\n contextWindow: 128_000,\n maxOutputTokens: 128_000,\n },\n // https://ai.google.dev/gemma/docs/core/model_card_3\n {\n name: \"gemma3:12b\",\n contextWindow: 128_000,\n maxOutputTokens: 128_000,\n },\n // https://ai.google.dev/gemma/docs/core/model_card_3\n {\n name: \"gemma3:27b\",\n contextWindow: 128_000,\n maxOutputTokens: 128_000,\n },\n ],\n },\n]\n","import { z } from \"zod\"\n\n/** Base properties shared by all message parts */\nexport interface BasePart {\n /** Unique identifier for this part */\n id: string\n}\n\nexport const basePartSchema = z.object({\n id: z.string(),\n})\nbasePartSchema satisfies z.ZodType<BasePart>\n\n/** Plain text content */\nexport interface TextPart extends BasePart {\n type: \"textPart\"\n /** The text content */\n text: string\n}\n\nexport const textPartSchema = basePartSchema.extend({\n type: z.literal(\"textPart\"),\n text: z.string(),\n})\ntextPartSchema satisfies z.ZodType<TextPart>\n\n/** Image referenced by URL */\nexport interface ImageUrlPart extends BasePart {\n type: \"imageUrlPart\"\n /** URL to the image */\n url: string\n /** MIME type of the image */\n mimeType: string\n}\n\nexport const imageUrlPartSchema = basePartSchema.extend({\n type: z.literal(\"imageUrlPart\"),\n url: z.url(),\n mimeType: z.string(),\n})\nimageUrlPartSchema satisfies z.ZodType<ImageUrlPart>\n\n/** Image with base64-encoded inline data */\nexport interface ImageInlinePart extends BasePart {\n type: \"imageInlinePart\"\n /** Base64-encoded image data */\n encodedData: string\n /** MIME type of the image */\n mimeType: string\n}\n\nexport const imageInlinePartSchema = basePartSchema.extend({\n type: z.literal(\"imageInlinePart\"),\n encodedData: z.string(),\n mimeType: z.string(),\n})\nimageInlinePartSchema satisfies z.ZodType<ImageInlinePart>\n\n/** Image with binary data (internal use) */\nexport interface ImageBinaryPart extends BasePart {\n type: \"imageBinaryPart\"\n /** Binary data as string */\n data: string\n /** MIME type of the image */\n mimeType: string\n}\n\nexport const imageBinaryPartSchema = basePartSchema.extend({\n type: z.literal(\"imageBinaryPart\"),\n data: z.string(),\n mimeType: z.string(),\n})\nimageBinaryPartSchema satisfies z.ZodType<ImageBinaryPart>\n\n/** File referenced by URL */\nexport interface FileUrlPart extends BasePart {\n type: \"fileUrlPart\"\n /** URL to the file */\n url: string\n /** MIME type of the file */\n mimeType: string\n}\n\nexport const fileUrlPartSchema = basePartSchema.extend({\n type: z.literal(\"fileUrlPart\"),\n url: z.string().url(),\n mimeType: z.string(),\n})\nfileUrlPartSchema satisfies z.ZodType<FileUrlPart>\n\n/** File with base64-encoded inline data */\nexport interface FileInlinePart extends BasePart {\n type: \"fileInlinePart\"\n /** Base64-encoded file data */\n encodedData: string\n /** MIME type of the file */\n mimeType: string\n}\n\nexport const fileInlinePartSchema = basePartSchema.extend({\n type: z.literal(\"fileInlinePart\"),\n encodedData: z.string(),\n mimeType: z.string(),\n})\nfileInlinePartSchema satisfies z.ZodType<FileInlinePart>\n\n/** File with binary data (internal use) */\nexport interface FileBinaryPart extends BasePart {\n type: \"fileBinaryPart\"\n /** Binary data as string */\n data: string\n /** MIME type of the file */\n mimeType: string\n}\n\nexport const fileBinaryPartSchema = basePartSchema.extend({\n type: z.literal(\"fileBinaryPart\"),\n data: z.string(),\n mimeType: z.string(),\n})\nfileBinaryPartSchema satisfies z.ZodType<FileBinaryPart>\n\n/** A tool call request from the Expert */\nexport interface ToolCallPart extends BasePart {\n type: \"toolCallPart\"\n /** Unique identifier for this tool call */\n toolCallId: string\n /** Name of the tool to call */\n toolName: string\n /** Arguments to pass to the tool */\n args: unknown\n}\n\nexport const toolCallPartSchema = basePartSchema.extend({\n type: z.literal(\"toolCallPart\"),\n toolCallId: z.string(),\n toolName: z.string(),\n args: z.unknown(),\n})\ntoolCallPartSchema satisfies z.ZodType<ToolCallPart>\n\n/** Thinking block from extended thinking / reasoning models */\nexport interface ThinkingPart extends BasePart {\n type: \"thinkingPart\"\n /** The thinking content */\n thinking: string\n /** Signature for redacted thinking blocks (Anthropic) */\n signature?: string\n}\n\nexport const thinkingPartSchema = basePartSchema.extend({\n type: z.literal(\"thinkingPart\"),\n thinking: z.string(),\n signature: z.string().optional(),\n})\nthinkingPartSchema satisfies z.ZodType<ThinkingPart>\n\n/** Result of a tool call */\nexport interface ToolResultPart extends BasePart {\n type: \"toolResultPart\"\n /** ID of the tool call this result corresponds to */\n toolCallId: string\n /** Name of the tool that was called */\n toolName: string\n /** Content of the tool result */\n contents: (TextPart | ImageInlinePart | FileInlinePart)[]\n /** Whether the tool call resulted in an error */\n isError?: boolean\n}\n\nexport const toolResultPartSchema = basePartSchema.extend({\n type: z.literal(\"toolResultPart\"),\n toolCallId: z.string(),\n toolName: z.string(),\n contents: z.array(z.union([textPartSchema, imageInlinePartSchema, fileInlinePartSchema])),\n isError: z.boolean().optional(),\n})\ntoolResultPartSchema satisfies z.ZodType<ToolResultPart>\n\n/** All possible message part types */\nexport type MessagePart =\n | TextPart\n | ImageUrlPart\n | ImageInlinePart\n | ImageBinaryPart\n | FileUrlPart\n | FileInlinePart\n | FileBinaryPart\n | ToolCallPart\n | ToolResultPart\n | ThinkingPart\n\nexport const messagePartSchema = z.discriminatedUnion(\"type\", [\n textPartSchema,\n imageUrlPartSchema,\n imageInlinePartSchema,\n imageBinaryPartSchema,\n fileUrlPartSchema,\n fileInlinePartSchema,\n fileBinaryPartSchema,\n toolCallPartSchema,\n toolResultPartSchema,\n thinkingPartSchema,\n])\n","import { z } from \"zod\"\nimport type { MessagePart } from \"./message-part.js\"\nimport { messagePartSchema } from \"./message-part.js\"\n\n/** Base fields shared by all activities */\ninterface BaseActivity {\n /** Unique activity ID */\n id: string\n /** Expert key that executed this activity */\n expertKey: string\n /** Run ID this activity belongs to */\n runId: string\n /** Previous activity ID for daisy chain within the same run */\n previousActivityId?: string\n /** Delegation info if this run was delegated from another */\n delegatedBy?: {\n expertKey: string\n runId: string\n }\n /** LLM's reasoning/thinking process before executing this action */\n reasoning?: string\n}\n\nconst baseActivitySchema = z.object({\n id: z.string(),\n expertKey: z.string(),\n runId: z.string(),\n previousActivityId: z.string().optional(),\n delegatedBy: z\n .object({\n expertKey: z.string(),\n runId: z.string(),\n })\n .optional(),\n reasoning: z.string().optional(),\n})\n\n/** Query activity - User input that starts a run */\nexport interface QueryActivity extends BaseActivity {\n type: \"query\"\n text: string\n}\n\nexport const queryActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"query\"),\n text: z.string(),\n})\nqueryActivitySchema satisfies z.ZodType<QueryActivity>\n\n/** Retry activity - generation failed and will be retried */\nexport interface RetryActivity extends BaseActivity {\n type: \"retry\"\n error: string\n message: string\n}\n\nexport const retryActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"retry\"),\n error: z.string(),\n message: z.string(),\n})\nretryActivitySchema satisfies z.ZodType<RetryActivity>\n\n/** Complete activity - Run completed successfully with final result */\nexport interface CompleteActivity extends BaseActivity {\n type: \"complete\"\n text: string\n}\n\nexport const completeActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"complete\"),\n text: z.string(),\n})\ncompleteActivitySchema satisfies z.ZodType<CompleteActivity>\n\n/** Error activity - When run stopped by error */\nexport interface ErrorActivity extends BaseActivity {\n type: \"error\"\n error?: string\n errorName?: string\n isRetryable?: boolean\n}\n\nexport const errorActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"error\"),\n error: z.string().optional(),\n errorName: z.string().optional(),\n isRetryable: z.boolean().optional(),\n})\nerrorActivitySchema satisfies z.ZodType<ErrorActivity>\n\n/** Attempt completion activity - Expert signaling task completion */\nexport interface AttemptCompletionActivity extends BaseActivity {\n type: \"attemptCompletion\"\n remainingTodos?: Array<{ id: number; title: string; completed: boolean }>\n error?: string\n}\n\nexport const attemptCompletionActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"attemptCompletion\"),\n remainingTodos: z\n .array(z.object({ id: z.number(), title: z.string(), completed: z.boolean() }))\n .optional(),\n error: z.string().optional(),\n})\nattemptCompletionActivitySchema satisfies z.ZodType<AttemptCompletionActivity>\n\n/** Todo activity - Expert managing todo list */\nexport interface TodoActivity extends BaseActivity {\n type: \"todo\"\n newTodos?: string[]\n completedTodos?: number[]\n todos: Array<{ id: number; title: string; completed: boolean }>\n error?: string\n}\n\nexport const todoActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"todo\"),\n newTodos: z.array(z.string()).optional(),\n completedTodos: z.array(z.number()).optional(),\n todos: z.array(z.object({ id: z.number(), title: z.string(), completed: z.boolean() })),\n error: z.string().optional(),\n})\ntodoActivitySchema satisfies z.ZodType<TodoActivity>\n\n/** Clear todo activity - Expert clearing the todo list */\nexport interface ClearTodoActivity extends BaseActivity {\n type: \"clearTodo\"\n error?: string\n}\n\nexport const clearTodoActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"clearTodo\"),\n error: z.string().optional(),\n})\nclearTodoActivitySchema satisfies z.ZodType<ClearTodoActivity>\n\n/** Read image file activity */\nexport interface ReadImageFileActivity extends BaseActivity {\n type: \"readImageFile\"\n path: string\n mimeType?: string\n size?: number\n error?: string\n}\n\nexport const readImageFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"readImageFile\"),\n path: z.string(),\n mimeType: z.string().optional(),\n size: z.number().optional(),\n error: z.string().optional(),\n})\nreadImageFileActivitySchema satisfies z.ZodType<ReadImageFileActivity>\n\n/** Read PDF file activity */\nexport interface ReadPdfFileActivity extends BaseActivity {\n type: \"readPdfFile\"\n path: string\n mimeType?: string\n size?: number\n error?: string\n}\n\nexport const readPdfFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"readPdfFile\"),\n path: z.string(),\n mimeType: z.string().optional(),\n size: z.number().optional(),\n error: z.string().optional(),\n})\nreadPdfFileActivitySchema satisfies z.ZodType<ReadPdfFileActivity>\n\n/** Read text file activity */\nexport interface ReadTextFileActivity extends BaseActivity {\n type: \"readTextFile\"\n path: string\n content?: string\n from?: number\n to?: number\n error?: string\n}\n\nexport const readTextFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"readTextFile\"),\n path: z.string(),\n content: z.string().optional(),\n from: z.number().optional(),\n to: z.number().optional(),\n error: z.string().optional(),\n})\nreadTextFileActivitySchema satisfies z.ZodType<ReadTextFileActivity>\n\n/** Edit text file activity */\nexport interface EditTextFileActivity extends BaseActivity {\n type: \"editTextFile\"\n path: string\n newText: string\n oldText: string\n error?: string\n}\n\nexport const editTextFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"editTextFile\"),\n path: z.string(),\n newText: z.string(),\n oldText: z.string(),\n error: z.string().optional(),\n})\neditTextFileActivitySchema satisfies z.ZodType<EditTextFileActivity>\n\n/** Append text file activity */\nexport interface AppendTextFileActivity extends BaseActivity {\n type: \"appendTextFile\"\n path: string\n text: string\n error?: string\n}\n\nexport const appendTextFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"appendTextFile\"),\n path: z.string(),\n text: z.string(),\n error: z.string().optional(),\n})\nappendTextFileActivitySchema satisfies z.ZodType<AppendTextFileActivity>\n\n/** Write text file activity */\nexport interface WriteTextFileActivity extends BaseActivity {\n type: \"writeTextFile\"\n path: string\n text: string\n error?: string\n}\n\nexport const writeTextFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"writeTextFile\"),\n path: z.string(),\n text: z.string(),\n error: z.string().optional(),\n})\nwriteTextFileActivitySchema satisfies z.ZodType<WriteTextFileActivity>\n\n/** Delete file activity */\nexport interface DeleteFileActivity extends BaseActivity {\n type: \"deleteFile\"\n path: string\n error?: string\n}\n\nexport const deleteFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"deleteFile\"),\n path: z.string(),\n error: z.string().optional(),\n})\ndeleteFileActivitySchema satisfies z.ZodType<DeleteFileActivity>\n\n/** Delete directory activity */\nexport interface DeleteDirectoryActivity extends BaseActivity {\n type: \"deleteDirectory\"\n path: string\n recursive?: boolean\n error?: string\n}\n\nexport const deleteDirectoryActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"deleteDirectory\"),\n path: z.string(),\n recursive: z.boolean().optional(),\n error: z.string().optional(),\n})\ndeleteDirectoryActivitySchema satisfies z.ZodType<DeleteDirectoryActivity>\n\n/** Move file activity */\nexport interface MoveFileActivity extends BaseActivity {\n type: \"moveFile\"\n source: string\n destination: string\n error?: string\n}\n\nexport const moveFileActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"moveFile\"),\n source: z.string(),\n destination: z.string(),\n error: z.string().optional(),\n})\nmoveFileActivitySchema satisfies z.ZodType<MoveFileActivity>\n\n/** Get file info activity */\nexport interface GetFileInfoActivity extends BaseActivity {\n type: \"getFileInfo\"\n path: string\n info?: {\n exists: boolean\n name: string\n directory: string\n extension: string | null\n type: \"file\" | \"directory\"\n mimeType: string | null\n size: number\n sizeFormatted: string\n created: string\n modified: string\n accessed: string\n }\n error?: string\n}\n\nexport const getFileInfoActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"getFileInfo\"),\n path: z.string(),\n info: z\n .object({\n exists: z.boolean(),\n name: z.string(),\n directory: z.string(),\n extension: z.string().nullable(),\n type: z.enum([\"file\", \"directory\"]),\n mimeType: z.string().nullable(),\n size: z.number(),\n sizeFormatted: z.string(),\n created: z.string(),\n modified: z.string(),\n accessed: z.string(),\n })\n .optional(),\n error: z.string().optional(),\n})\ngetFileInfoActivitySchema satisfies z.ZodType<GetFileInfoActivity>\n\n/** Create directory activity */\nexport interface CreateDirectoryActivity extends BaseActivity {\n type: \"createDirectory\"\n path: string\n error?: string\n}\n\nexport const createDirectoryActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"createDirectory\"),\n path: z.string(),\n error: z.string().optional(),\n})\ncreateDirectoryActivitySchema satisfies z.ZodType<CreateDirectoryActivity>\n\n/** List directory activity */\nexport interface ListDirectoryActivity extends BaseActivity {\n type: \"listDirectory\"\n path: string\n items?: Array<{\n name: string\n path: string\n type: \"file\" | \"directory\"\n size: number\n modified: string\n }>\n error?: string\n}\n\nexport const listDirectoryActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"listDirectory\"),\n path: z.string(),\n items: z\n .array(\n z.object({\n name: z.string(),\n path: z.string(),\n type: z.enum([\"file\", \"directory\"]),\n size: z.number(),\n modified: z.string(),\n }),\n )\n .optional(),\n error: z.string().optional(),\n})\nlistDirectoryActivitySchema satisfies z.ZodType<ListDirectoryActivity>\n\n/** Exec activity - Command execution */\nexport interface ExecActivity extends BaseActivity {\n type: \"exec\"\n command: string\n args: string[]\n cwd: string\n output?: string\n error?: string\n stdout?: string\n stderr?: string\n}\n\nexport const execActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"exec\"),\n command: z.string(),\n args: z.array(z.string()),\n cwd: z.string(),\n output: z.string().optional(),\n error: z.string().optional(),\n stdout: z.string().optional(),\n stderr: z.string().optional(),\n})\nexecActivitySchema satisfies z.ZodType<ExecActivity>\n\n/** Delegate activity - Expert delegating to another Expert */\nexport interface DelegateActivity extends BaseActivity {\n type: \"delegate\"\n delegateExpertKey: string\n query: string\n}\n\nexport const delegateActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"delegate\"),\n delegateExpertKey: z.string(),\n query: z.string(),\n})\ndelegateActivitySchema satisfies z.ZodType<DelegateActivity>\n\n/** Delegation complete activity - All delegated experts have returned */\nexport interface DelegationCompleteActivity extends BaseActivity {\n type: \"delegationComplete\"\n count: number\n}\n\nexport const delegationCompleteActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"delegationComplete\"),\n count: z.number(),\n})\ndelegationCompleteActivitySchema satisfies z.ZodType<DelegationCompleteActivity>\n\n/** Interactive tool activity - Tool requiring user interaction */\nexport interface InteractiveToolActivity extends BaseActivity {\n type: \"interactiveTool\"\n skillName: string\n toolName: string\n args: Record<string, unknown>\n}\n\nexport const interactiveToolActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"interactiveTool\"),\n skillName: z.string(),\n toolName: z.string(),\n args: z.record(z.string(), z.unknown()),\n})\ninteractiveToolActivitySchema satisfies z.ZodType<InteractiveToolActivity>\n\n/** General tool activity - Any other tool call */\nexport interface GeneralToolActivity extends BaseActivity {\n type: \"generalTool\"\n skillName: string\n toolName: string\n args: Record<string, unknown>\n result?: MessagePart[]\n error?: string\n}\n\nexport const generalToolActivitySchema = baseActivitySchema.extend({\n type: z.literal(\"generalTool\"),\n skillName: z.string(),\n toolName: z.string(),\n args: z.record(z.string(), z.unknown()),\n result: z.array(messagePartSchema).optional(),\n error: z.string().optional(),\n})\ngeneralToolActivitySchema satisfies z.ZodType<GeneralToolActivity>\n\n/** Union of all activity types */\nexport type Activity =\n | QueryActivity\n | RetryActivity\n | CompleteActivity\n | ErrorActivity\n | AttemptCompletionActivity\n | TodoActivity\n | ClearTodoActivity\n | ReadImageFileActivity\n | ReadPdfFileActivity\n | ReadTextFileActivity\n | EditTextFileActivity\n | AppendTextFileActivity\n | WriteTextFileActivity\n | DeleteFileActivity\n | DeleteDirectoryActivity\n | MoveFileActivity\n | GetFileInfoActivity\n | CreateDirectoryActivity\n | ListDirectoryActivity\n | ExecActivity\n | DelegateActivity\n | DelegationCompleteActivity\n | InteractiveToolActivity\n | GeneralToolActivity\n\nexport const activitySchema = z.discriminatedUnion(\"type\", [\n queryActivitySchema,\n retryActivitySchema,\n completeActivitySchema,\n errorActivitySchema,\n attemptCompletionActivitySchema,\n todoActivitySchema,\n clearTodoActivitySchema,\n readImageFileActivitySchema,\n readPdfFileActivitySchema,\n readTextFileActivitySchema,\n editTextFileActivitySchema,\n appendTextFileActivitySchema,\n writeTextFileActivitySchema,\n deleteFileActivitySchema,\n deleteDirectoryActivitySchema,\n moveFileActivitySchema,\n getFileInfoActivitySchema,\n createDirectoryActivitySchema,\n listDirectoryActivitySchema,\n execActivitySchema,\n delegateActivitySchema,\n delegationCompleteActivitySchema,\n interactiveToolActivitySchema,\n generalToolActivitySchema,\n])\nactivitySchema satisfies z.ZodType<Activity>\n\n/** Activity type discriminator */\nexport type ActivityType = Activity[\"type\"]\n\n/** Group of parallel activities sharing the same reasoning */\nexport interface ParallelActivitiesGroup {\n type: \"parallelGroup\"\n /** Unique group ID */\n id: string\n /** Expert key that executed these activities */\n expertKey: string\n /** Run ID these activities belong to */\n runId: string\n /** Shared reasoning for all activities in the group */\n reasoning?: string\n /** Activities in this parallel group (without individual reasoning) */\n activities: Activity[]\n}\n\nexport const parallelActivitiesGroupSchema = z.object({\n type: z.literal(\"parallelGroup\"),\n id: z.string(),\n expertKey: z.string(),\n runId: z.string(),\n reasoning: z.string().optional(),\n activities: z.array(activitySchema),\n})\nparallelActivitiesGroupSchema satisfies z.ZodType<ParallelActivitiesGroup>\n\n/** Activity or group of parallel activities */\nexport type ActivityOrGroup = Activity | ParallelActivitiesGroup\n\nexport const activityOrGroupSchema = z.union([activitySchema, parallelActivitiesGroupSchema])\nactivityOrGroupSchema satisfies z.ZodType<ActivityOrGroup>\n","import { z } from \"zod\"\nimport type {\n FileBinaryPart,\n FileInlinePart,\n FileUrlPart,\n ImageBinaryPart,\n ImageInlinePart,\n ImageUrlPart,\n TextPart,\n ThinkingPart,\n ToolCallPart,\n ToolResultPart,\n} from \"./message-part.js\"\nimport {\n fileBinaryPartSchema,\n fileInlinePartSchema,\n fileUrlPartSchema,\n imageBinaryPartSchema,\n imageInlinePartSchema,\n imageUrlPartSchema,\n textPartSchema,\n thinkingPartSchema,\n toolCallPartSchema,\n toolResultPartSchema,\n} from \"./message-part.js\"\n\n/** Base properties shared by all messages */\ninterface BaseMessage {\n /** Unique identifier for this message */\n id: string\n}\n\nconst baseMessageSchema = z.object({\n id: z.string(),\n})\n\n/** System instruction message sent at the start of a conversation */\nexport interface InstructionMessage extends BaseMessage {\n type: \"instructionMessage\"\n /** Text content of the instruction */\n contents: TextPart[]\n /** Whether to cache this message for prompt caching */\n cache?: boolean\n}\n\nexport const instructionMessageSchema = baseMessageSchema.extend({\n type: z.literal(\"instructionMessage\"),\n contents: z.array(textPartSchema),\n cache: z.boolean().optional(),\n})\ninstructionMessageSchema satisfies z.ZodType<InstructionMessage>\n\n/** Message from the user (human or system providing input) */\nexport interface UserMessage extends BaseMessage {\n type: \"userMessage\"\n /** Content of the user message (text, images, or files) */\n contents: (\n | TextPart\n | ImageUrlPart\n | ImageInlinePart\n | ImageBinaryPart\n | FileUrlPart\n | FileInlinePart\n | FileBinaryPart\n )[]\n /** Whether to cache this message for prompt caching */\n cache?: boolean\n}\n\nexport const userMessageSchema = baseMessageSchema.extend({\n type: z.literal(\"userMessage\"),\n contents: z.array(\n z.union([\n textPartSchema,\n imageUrlPartSchema,\n imageInlinePartSchema,\n imageBinaryPartSchema,\n fileUrlPartSchema,\n fileInlinePartSchema,\n fileBinaryPartSchema,\n ]),\n ),\n cache: z.boolean().optional(),\n})\nuserMessageSchema satisfies z.ZodType<UserMessage>\n\n/** Message generated by the Expert (LLM response) */\nexport interface ExpertMessage extends BaseMessage {\n type: \"expertMessage\"\n /** Content generated by the Expert (text, tool calls, or thinking) */\n contents: (TextPart | ToolCallPart | ThinkingPart)[]\n /** Whether to cache this message for prompt caching */\n cache?: boolean\n}\n\nexport const expertMessageSchema = baseMessageSchema.extend({\n type: z.literal(\"expertMessage\"),\n contents: z.array(z.union([textPartSchema, toolCallPartSchema, thinkingPartSchema])),\n cache: z.boolean().optional(),\n})\nexpertMessageSchema satisfies z.ZodType<ExpertMessage>\n\n/** Message containing tool execution results */\nexport interface ToolMessage extends BaseMessage {\n type: \"toolMessage\"\n /** Tool result contents */\n contents: ToolResultPart[]\n /** Whether to cache this message for prompt caching */\n cache?: boolean\n}\n\nexport const toolMessageSchema = baseMessageSchema.extend({\n type: z.literal(\"toolMessage\"),\n contents: z.array(toolResultPartSchema),\n cache: z.boolean().optional(),\n})\ntoolMessageSchema satisfies z.ZodType<ToolMessage>\n\n/** All possible message types */\nexport type Message = InstructionMessage | UserMessage | ExpertMessage | ToolMessage\n\nexport const messageSchema = z.union([\n instructionMessageSchema,\n userMessageSchema,\n expertMessageSchema,\n toolMessageSchema,\n])\n","import { z } from \"zod\"\n\nexport type RuntimeName = \"local\" | \"cursor\" | \"claude-code\" | \"gemini\" | \"docker\"\n\nexport const runtimeNameSchema = z.enum([\"local\", \"cursor\", \"claude-code\", \"gemini\", \"docker\"])\n","import { z } from \"zod\"\nimport { maxSkillNameLength, maxSkillToolNameLength } from \"../constants/constants.js\"\n\n/** A tool call made by an Expert during execution */\nexport interface ToolCall {\n /** Unique identifier for this tool call */\n id: string\n /** Name of the skill providing the tool */\n skillName: string\n /** Name of the tool being called */\n toolName: string\n /** Arguments passed to the tool */\n args: Record<string, unknown>\n}\n\nexport const toolCallSchema = z.object({\n id: z.string().min(1).max(255),\n skillName: z.string().min(1).max(maxSkillNameLength),\n toolName: z.string().min(1).max(maxSkillToolNameLength),\n args: z.record(z.string().min(1), z.unknown()),\n})\ntoolCallSchema satisfies z.ZodType<ToolCall>\n","import { z } from \"zod\"\nimport { maxSkillNameLength, maxSkillToolNameLength } from \"../constants/constants.js\"\nimport type { MessagePart } from \"./message-part.js\"\nimport { messagePartSchema } from \"./message-part.js\"\n\n/** Result returned from a tool call */\nexport interface ToolResult {\n /** Unique identifier for this result */\n id: string\n /** Name of the skill that provided the tool */\n skillName: string\n /** Name of the tool that was called */\n toolName: string\n /** Content parts returned by the tool */\n result: MessagePart[]\n}\n\nexport const toolResultSchema = z.object({\n id: z.string().min(1).max(255),\n skillName: z.string().min(1).max(maxSkillNameLength),\n toolName: z.string().min(1).max(maxSkillToolNameLength),\n result: z.array(messagePartSchema),\n})\ntoolResultSchema satisfies z.ZodType<ToolResult>\n","import { z } from \"zod\"\n\n/** Token usage statistics for a single step or run */\nexport interface Usage {\n /** Number of tokens in the input prompt */\n inputTokens: number\n /** Number of tokens generated in the response */\n outputTokens: number\n /** Number of tokens used for reasoning (extended thinking) */\n reasoningTokens: number\n /** Total tokens (input + output) */\n totalTokens: number\n /** Number of input tokens served from cache */\n cachedInputTokens: number\n}\n\nexport const usageSchema = z.object({\n inputTokens: z.number(),\n outputTokens: z.number(),\n reasoningTokens: z.number(),\n totalTokens: z.number(),\n cachedInputTokens: z.number(),\n})\nusageSchema satisfies z.ZodType<Usage>\n","import { z } from \"zod\"\nimport type { Message } from \"./message.js\"\nimport { messageSchema } from \"./message.js\"\nimport type { RuntimeName } from \"./runtime-name.js\"\nimport { runtimeNameSchema } from \"./runtime-name.js\"\nimport type { ToolCall } from \"./tool-call.js\"\nimport { toolCallSchema } from \"./tool-call.js\"\nimport type { ToolResult } from \"./tool-result.js\"\nimport { toolResultSchema } from \"./tool-result.js\"\nimport type { Usage } from \"./usage.js\"\nimport { usageSchema } from \"./usage.js\"\n\n/** Status of a checkpoint in the execution lifecycle */\nexport type CheckpointStatus =\n | \"init\"\n | \"proceeding\"\n | \"completed\"\n | \"stoppedByInteractiveTool\"\n | \"stoppedByDelegate\"\n | \"stoppedByExceededMaxSteps\"\n | \"stoppedByError\"\n\nexport const checkpointStatusSchema = z.enum([\n \"init\",\n \"proceeding\",\n \"completed\",\n \"stoppedByInteractiveTool\",\n \"stoppedByDelegate\",\n \"stoppedByExceededMaxSteps\",\n \"stoppedByError\",\n])\n\n/** Information about a delegation target */\nexport interface DelegationTarget {\n expert: {\n key: string\n name: string\n version: string\n }\n toolCallId: string\n toolName: string\n query: string\n}\n\n/**\n * A checkpoint represents a point-in-time snapshot of an Expert's execution state.\n * Used for resuming, debugging, and observability.\n */\nexport interface Checkpoint {\n /** Unique identifier for this checkpoint */\n id: string\n /** Job ID this checkpoint belongs to */\n jobId: string\n /** Run ID this checkpoint belongs to */\n runId: string\n /** Current execution status */\n status: CheckpointStatus\n /** Current step number within this Run */\n stepNumber: number\n /** All messages in the conversation so far */\n messages: Message[]\n /** Expert executing this checkpoint */\n expert: {\n /** Expert key (e.g., \"my-expert@1.0.0\") */\n key: string\n /** Expert name */\n name: string\n /** Expert version */\n version: string\n }\n /** If delegating, information about the target Expert(s) - supports parallel delegation */\n delegateTo?: DelegationTarget[]\n /** If delegated, information about the parent Expert */\n delegatedBy?: {\n /** The parent Expert that delegated */\n expert: {\n key: string\n name: string\n version: string\n }\n /** Tool call ID from the parent */\n toolCallId: string\n /** Name of the delegation tool */\n toolName: string\n /** Checkpoint ID of the parent */\n checkpointId: string\n /** Run ID of the parent */\n runId: string\n }\n /** Accumulated token usage */\n usage: Usage\n /** Model's context window size in tokens */\n contextWindow?: number\n /** Context window usage ratio (0-1) */\n contextWindowUsage?: number\n /** Tool calls waiting to be processed (for resume after delegate/interactive) */\n pendingToolCalls?: ToolCall[]\n /** Partial tool results collected before stopping (for resume) */\n partialToolResults?: ToolResult[]\n /** Optional metadata for runtime-specific information */\n metadata?: {\n /** Runtime that executed this checkpoint */\n runtime?: RuntimeName\n /** Additional runtime-specific data */\n [key: string]: unknown\n }\n /** Error information when status is stoppedByError */\n error?: {\n name: string\n message: string\n statusCode?: number\n isRetryable: boolean\n }\n /** Consecutive retry count for current generation (reset on success) */\n retryCount?: number\n}\n\nexport const delegationTargetSchema = z.object({\n expert: z.object({\n key: z.string(),\n name: z.string(),\n version: z.string(),\n }),\n toolCallId: z.string(),\n toolName: z.string(),\n query: z.string(),\n})\ndelegationTargetSchema satisfies z.ZodType<DelegationTarget>\n\nexport const checkpointSchema = z.object({\n id: z.string(),\n jobId: z.string(),\n runId: z.string(),\n status: checkpointStatusSchema,\n stepNumber: z.number(),\n messages: z.array(messageSchema),\n expert: z.object({\n key: z.string(),\n name: z.string(),\n version: z.string(),\n }),\n delegateTo: z.array(delegationTargetSchema).optional(),\n delegatedBy: z\n .object({\n expert: z.object({\n key: z.string(),\n name: z.string(),\n version: z.string(),\n }),\n toolCallId: z.string(),\n toolName: z.string(),\n checkpointId: z.string(),\n runId: z.string(),\n })\n .optional(),\n usage: usageSchema,\n contextWindow: z.number().optional(),\n contextWindowUsage: z.number().optional(),\n pendingToolCalls: z.array(toolCallSchema).optional(),\n partialToolResults: z.array(toolResultSchema).optional(),\n metadata: z\n .object({\n runtime: runtimeNameSchema.optional(),\n })\n .passthrough()\n .optional(),\n error: z\n .object({\n name: z.string(),\n message: z.string(),\n statusCode: z.number().optional(),\n isRetryable: z.boolean(),\n })\n .optional(),\n retryCount: z.number().optional(),\n})\ncheckpointSchema satisfies z.ZodType<Checkpoint>\n","import { z } from \"zod\"\n\nexport const anthropicProviderToolNameSchema = z.enum([\"webSearch\", \"webFetch\", \"codeExecution\"])\nexport type AnthropicProviderToolName = z.infer<typeof anthropicProviderToolNameSchema>\n\nexport const builtinAnthropicSkillSchema = z.object({\n type: z.literal(\"builtin\"),\n skillId: z.enum([\"pdf\", \"docx\", \"pptx\", \"xlsx\"]),\n})\nexport type BuiltinAnthropicSkill = z.infer<typeof builtinAnthropicSkillSchema>\n\nexport const customAnthropicSkillSchema = z.object({\n type: z.literal(\"custom\"),\n name: z.string().min(1),\n definition: z.string().min(1),\n})\nexport type CustomAnthropicSkill = z.infer<typeof customAnthropicSkillSchema>\n\nexport const anthropicProviderSkillSchema = z.discriminatedUnion(\"type\", [\n builtinAnthropicSkillSchema,\n customAnthropicSkillSchema,\n])\nexport type AnthropicProviderSkill = z.infer<typeof anthropicProviderSkillSchema>\n\nexport const openaiProviderToolNameSchema = z.enum([\n \"webSearch\",\n \"fileSearch\",\n \"codeInterpreter\",\n \"imageGeneration\",\n])\nexport type OpenAIProviderToolName = z.infer<typeof openaiProviderToolNameSchema>\n\nexport const googleProviderToolNameSchema = z.enum([\n \"googleSearch\",\n \"codeExecution\",\n \"urlContext\",\n \"fileSearch\",\n \"googleMaps\",\n])\nexport type GoogleProviderToolName = z.infer<typeof googleProviderToolNameSchema>\n\nexport const azureOpenAIProviderToolNameSchema = z.enum([\n \"webSearchPreview\",\n \"fileSearch\",\n \"codeInterpreter\",\n \"imageGeneration\",\n])\nexport type AzureOpenAIProviderToolName = z.infer<typeof azureOpenAIProviderToolNameSchema>\n\nexport const vertexProviderToolNameSchema = z.enum([\n \"codeExecution\",\n \"urlContext\",\n \"googleSearch\",\n \"enterpriseWebSearch\",\n \"googleMaps\",\n])\nexport type VertexProviderToolName = z.infer<typeof vertexProviderToolNameSchema>\n\nexport const webSearchOptionsSchema = z.object({\n maxUses: z.number().int().positive().optional(),\n allowedDomains: z.array(z.string()).optional(),\n})\n\nexport const webFetchOptionsSchema = z.object({\n maxUses: z.number().int().positive().optional(),\n})\n\nexport const fileSearchOptionsSchema = z.object({\n vectorStoreIds: z.array(z.string()).optional(),\n maxNumResults: z.number().int().positive().optional(),\n})\n\nexport const providerToolOptionsSchema = z\n .object({\n webSearch: webSearchOptionsSchema.optional(),\n webFetch: webFetchOptionsSchema.optional(),\n fileSearch: fileSearchOptionsSchema.optional(),\n })\n .optional()\nexport type ProviderToolOptions = z.infer<typeof providerToolOptionsSchema>\n\nexport function hasCustomProviderSkills(skills?: AnthropicProviderSkill[]): boolean {\n return skills?.some((skill) => skill.type === \"custom\") ?? false\n}\n","import { z } from \"zod\"\n\nfunction isPrivateOrLocalIP(hostname: string): boolean {\n if (\n hostname === \"localhost\" ||\n hostname === \"127.0.0.1\" ||\n hostname === \"::1\" ||\n hostname === \"0.0.0.0\"\n ) {\n return true\n }\n const ipv4Match = hostname.match(/^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$/)\n if (ipv4Match) {\n const a = Number(ipv4Match[1])\n const b = Number(ipv4Match[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 if (a === 169 && b === 254) return true\n if (a === 127) return true\n }\n if (hostname.includes(\":\")) {\n if (hostname.startsWith(\"fe80:\") || hostname.startsWith(\"fc\") || hostname.startsWith(\"fd\")) {\n return true\n }\n }\n if (hostname.startsWith(\"::ffff:\")) {\n const ipv4Part = hostname.slice(7)\n if (isPrivateOrLocalIP(ipv4Part)) {\n return true\n }\n }\n return false\n}\nconst sseEndpointSchema = z\n .string()\n .url()\n .refine(\n (url) => {\n try {\n const parsed = new URL(url)\n if (parsed.protocol !== \"https:\") return false\n if (isPrivateOrLocalIP(parsed.hostname)) return false\n return true\n } catch {\n return false\n }\n },\n { message: \"Endpoint must be a public HTTPS URL\" },\n )\n\n/** MCP skill using stdio transport */\nexport interface McpStdioSkill {\n type: \"mcpStdioSkill\"\n /** Skill name (derived from key) */\n name: string\n /** Human-readable description */\n description?: string\n /** Usage rules for the LLM */\n rule?: string\n /** Tool names to include (whitelist) */\n pick: string[]\n /** Tool names to exclude (blacklist) */\n omit: string[]\n /** Command to execute (e.g., \"npx\") */\n command: string\n /** Package name for npx/uvx */\n packageName?: string\n /** Additional arguments */\n args: string[]\n /** Environment variables required by this skill */\n requiredEnv: string[]\n /** Whether to delay initialization until first use */\n lazyInit: boolean\n}\n\nexport const mcpStdioSkillSchema = z.object({\n type: z.literal(\"mcpStdioSkill\"),\n name: z.string(),\n description: z.string().optional(),\n rule: z.string().optional(),\n pick: z.array(z.string()).optional().default([]),\n omit: z.array(z.string()).optional().default([]),\n command: z.string(),\n packageName: z.string().optional(),\n args: z.array(z.string()).optional().default([]),\n requiredEnv: z.array(z.string()).optional().default([]),\n lazyInit: z.boolean().optional().default(false),\n})\nmcpStdioSkillSchema satisfies z.ZodType<McpStdioSkill>\n\n/** MCP skill using SSE transport */\nexport interface McpSseSkill {\n type: \"mcpSseSkill\"\n /** Skill name (derived from key) */\n name: string\n /** Human-readable description */\n description?: string\n /** Usage rules for the LLM */\n rule?: string\n /** Tool names to include (whitelist) */\n pick: string[]\n /** Tool names to exclude (blacklist) */\n omit: string[]\n /** SSE endpoint URL */\n endpoint: string\n}\n\nexport const mcpSseSkillSchema = z.object({\n type: z.literal(\"mcpSseSkill\"),\n name: z.string(),\n description: z.string().optional(),\n rule: z.string().optional(),\n pick: z.array(z.string()).optional().default([]),\n omit: z.array(z.string()).optional().default([]),\n endpoint: sseEndpointSchema,\n})\nmcpSseSkillSchema satisfies z.ZodType<McpSseSkill>\n\n/** Definition of an interactive tool within an interactive skill */\nexport interface InteractiveTool {\n /** Tool name */\n name: string\n /** Human-readable description */\n description?: string\n /** JSON Schema for tool input as a string */\n inputJsonSchema: string\n}\n\nexport const interactiveToolSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n inputJsonSchema: z.string(),\n})\ninteractiveToolSchema satisfies z.ZodType<InteractiveTool>\n\n/** Skill that requires human interaction to complete tool calls */\nexport interface InteractiveSkill {\n type: \"interactiveSkill\"\n /** Skill name (derived from key) */\n name: string\n /** Human-readable description */\n description?: string\n /** Usage rules for the LLM */\n rule?: string\n /** Map of tool name to tool definition */\n tools: Record<string, InteractiveTool>\n}\n\nexport const interactiveSkillSchema = z.object({\n type: z.literal(\"interactiveSkill\"),\n name: z.string(),\n description: z.string().optional(),\n rule: z.string().optional(),\n tools: z.record(z.string(), interactiveToolSchema.omit({ name: true })).transform((tools) => {\n return Object.fromEntries(\n Object.entries(tools).map(([key, toolWithoutName]) => [\n key,\n interactiveToolSchema.parse({ ...toolWithoutName, name: key }),\n ]),\n )\n }),\n})\n\n/** All possible skill types */\nexport type Skill = McpStdioSkill | McpSseSkill | InteractiveSkill\n\nexport const skillSchema = z.discriminatedUnion(\"type\", [\n mcpStdioSkillSchema,\n mcpSseSkillSchema,\n interactiveSkillSchema,\n])\n","import { z } from \"zod\"\nimport {\n expertKeyRegex,\n expertNameRegex,\n expertVersionRegex,\n maxExpertNameLength,\n tagNameRegex,\n} from \"../constants/constants.js\"\nimport type { AnthropicProviderSkill, ProviderToolOptions } from \"./provider-tools.js\"\nimport { anthropicProviderSkillSchema, providerToolOptionsSchema } from \"./provider-tools.js\"\nimport type { InteractiveSkill, McpSseSkill, McpStdioSkill, Skill } from \"./skill.js\"\nimport { interactiveSkillSchema, mcpSseSkillSchema, mcpStdioSkillSchema } from \"./skill.js\"\n\n/**\n * An Expert definition - an AI agent with specific skills and instructions.\n * Experts can delegate to other Experts and use MCP tools.\n */\nexport interface Expert {\n /** Unique key identifying this Expert (e.g., \"my-expert\" or \"my-expert@1.0.0\") */\n key: string\n /** Display name for the Expert */\n name: string\n /** Semantic version string */\n version: string\n /** Human-readable description of what this Expert does */\n description?: string\n /** System instruction defining the Expert's behavior */\n instruction: string\n /** Map of skill name to skill configuration */\n skills: Record<string, Skill>\n /** List of Expert keys this Expert can delegate to */\n delegates: string[]\n /** Tags for categorization and discovery */\n tags: string[]\n /** Provider-specific tool names to enable (e.g., \"webSearch\", \"codeExecution\") */\n providerTools?: string[]\n /** Anthropic Agent Skills configuration */\n providerSkills?: AnthropicProviderSkill[]\n /** Provider tool options (e.g., webSearch maxUses, allowedDomains) */\n providerToolOptions?: ProviderToolOptions\n}\n\ntype SkillWithoutName =\n | Omit<McpStdioSkill, \"name\">\n | Omit<McpSseSkill, \"name\">\n | Omit<InteractiveSkill, \"name\">\n\nexport const expertSchema = z.object({\n key: z.string().regex(expertKeyRegex).min(1),\n name: z.string().regex(expertNameRegex).min(1).max(maxExpertNameLength),\n version: z.string().regex(expertVersionRegex),\n description: z\n .string()\n .min(1)\n .max(1024 * 2)\n .optional(),\n instruction: z\n .string()\n .min(1)\n .max(1024 * 20),\n skills: z\n .record(\n z.string(),\n z.discriminatedUnion(\"type\", [\n mcpStdioSkillSchema.omit({ name: true }),\n mcpSseSkillSchema.omit({ name: true }),\n interactiveSkillSchema.omit({ name: true }),\n ]),\n )\n .optional()\n .default({\n \"@perstack/base\": {\n type: \"mcpStdioSkill\",\n description: \"Base skill\",\n command: \"npx\",\n args: [\"-y\", \"@perstack/base\"],\n pick: [],\n omit: [],\n requiredEnv: [],\n lazyInit: false,\n } satisfies SkillWithoutName,\n })\n .transform((skills) => {\n return Object.fromEntries(\n Object.entries(skills).map(([key, skillWithoutName]) => [\n key,\n z\n .discriminatedUnion(\"type\", [\n mcpStdioSkillSchema,\n mcpSseSkillSchema,\n interactiveSkillSchema,\n ])\n .parse({ ...skillWithoutName, name: key }),\n ]),\n )\n }),\n delegates: z.array(z.string().regex(expertKeyRegex).min(1)).optional().default([]),\n tags: z.array(z.string().regex(tagNameRegex).min(1)).optional().default([]),\n providerTools: z.array(z.string()).optional(),\n providerSkills: z.array(anthropicProviderSkillSchema).optional(),\n providerToolOptions: providerToolOptionsSchema,\n})\n","import { z } from \"zod\"\nimport type { Usage } from \"./usage.js\"\nimport { usageSchema } from \"./usage.js\"\n\nexport type JobStatus =\n | \"running\"\n | \"completed\"\n | \"stoppedByMaxSteps\"\n | \"stoppedByInteractiveTool\"\n | \"stoppedByError\"\n\nexport const jobStatusSchema = z.enum([\n \"running\",\n \"completed\",\n \"stoppedByMaxSteps\",\n \"stoppedByInteractiveTool\",\n \"stoppedByError\",\n])\n\nexport interface Job {\n id: string\n status: JobStatus\n coordinatorExpertKey: string\n totalSteps: number\n maxSteps?: number\n usage: Usage\n startedAt: number\n finishedAt?: number\n}\n\nexport const jobSchema = z.object({\n id: z.string(),\n status: jobStatusSchema,\n coordinatorExpertKey: z.string(),\n totalSteps: z.number(),\n maxSteps: z.number().optional(),\n usage: usageSchema,\n startedAt: z.number(),\n finishedAt: z.number().optional(),\n})\njobSchema satisfies z.ZodType<Job>\n","import { z } from \"zod\"\nimport type { Skill } from \"./skill.js\"\nimport { skillSchema } from \"./skill.js\"\n\nexport interface LockfileToolDefinition {\n skillName: string\n name: string\n description?: string\n inputSchema: Record<string, unknown>\n}\n\nexport const lockfileToolDefinitionSchema = z.object({\n skillName: z.string(),\n name: z.string(),\n description: z.string().optional(),\n inputSchema: z.record(z.string(), z.unknown()),\n})\n\nexport interface LockfileExpert {\n key: string\n name: string\n version: string\n description?: string\n instruction: string\n skills: Record<string, Skill>\n delegates: string[]\n tags: string[]\n toolDefinitions: LockfileToolDefinition[]\n}\n\nexport const lockfileExpertSchema = z.object({\n key: z.string(),\n name: z.string(),\n version: z.string(),\n description: z.string().optional(),\n instruction: z.string(),\n skills: z.record(z.string(), skillSchema),\n delegates: z.array(z.string()),\n tags: z.array(z.string()),\n toolDefinitions: z.array(lockfileToolDefinitionSchema),\n})\n\nexport interface Lockfile {\n version: \"1\"\n generatedAt: number\n configPath: string\n experts: Record<string, LockfileExpert>\n}\n\nexport const lockfileSchema = z.object({\n version: z.literal(\"1\"),\n generatedAt: z.number(),\n configPath: z.string(),\n experts: z.record(z.string(), lockfileExpertSchema),\n})\n","import { z } from \"zod\"\n\n/** HTTP headers for API requests */\nexport type Headers = Record<string, string> | undefined\n\nexport const headersSchema = z.record(z.string(), z.string()).optional()\n\n/** Supported LLM provider names */\nexport type ProviderName =\n | \"anthropic\"\n | \"google\"\n | \"openai\"\n | \"ollama\"\n | \"azure-openai\"\n | \"amazon-bedrock\"\n | \"google-vertex\"\n | \"deepseek\"\n\nexport const providerNameSchema = z.enum([\n \"anthropic\",\n \"google\",\n \"openai\",\n \"ollama\",\n \"azure-openai\",\n \"amazon-bedrock\",\n \"google-vertex\",\n \"deepseek\",\n])\n\n/** Anthropic provider configuration */\nexport interface AnthropicProviderConfig {\n providerName: \"anthropic\"\n /** API key for Anthropic */\n apiKey: string\n /** Custom base URL */\n baseUrl?: string\n /** Custom headers */\n headers?: Headers\n}\n\nexport const anthropicProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum.anthropic),\n apiKey: z.string(),\n baseUrl: z.string().optional(),\n headers: headersSchema,\n})\nanthropicProviderConfigSchema satisfies z.ZodType<AnthropicProviderConfig>\n\n/** Google Generative AI provider configuration */\nexport interface GoogleGenerativeAiProviderConfig {\n providerName: \"google\"\n /** API key for Google */\n apiKey: string\n /** Custom base URL */\n baseUrl?: string\n /** Custom headers */\n headers?: Headers\n}\n\nexport const googleGenerativeAiProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum.google),\n apiKey: z.string(),\n baseUrl: z.string().optional(),\n headers: headersSchema,\n})\ngoogleGenerativeAiProviderConfigSchema satisfies z.ZodType<GoogleGenerativeAiProviderConfig>\n\n/** OpenAI provider configuration */\nexport interface OpenAiProviderConfig {\n providerName: \"openai\"\n /** API key for OpenAI */\n apiKey: string\n /** Custom base URL */\n baseUrl?: string\n /** Organization ID */\n organization?: string\n /** Project ID */\n project?: string\n /** Custom name for the provider instance */\n name?: string\n /** Custom headers */\n headers?: Headers\n}\n\nexport const openAiProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum.openai),\n apiKey: z.string(),\n baseUrl: z.string().optional(),\n organization: z.string().optional(),\n project: z.string().optional(),\n name: z.string().optional(),\n headers: headersSchema,\n})\nopenAiProviderConfigSchema satisfies z.ZodType<OpenAiProviderConfig>\n\n/** Ollama provider configuration */\nexport interface OllamaProviderConfig {\n providerName: \"ollama\"\n /** Custom base URL (defaults to localhost) */\n baseUrl?: string\n /** Custom headers */\n headers?: Headers\n}\n\nexport const ollamaProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum.ollama),\n baseUrl: z.string().optional(),\n headers: headersSchema,\n})\nollamaProviderConfigSchema satisfies z.ZodType<OllamaProviderConfig>\n\n/** Azure OpenAI provider configuration */\nexport interface AzureOpenAiProviderConfig {\n providerName: \"azure-openai\"\n /** API key for Azure */\n apiKey: string\n /** Azure resource name */\n resourceName?: string\n /** API version */\n apiVersion?: string\n /** Custom base URL */\n baseUrl?: string\n /** Custom headers */\n headers?: Headers\n /** Use deployment-based URLs */\n useDeploymentBasedUrls?: boolean\n}\n\nexport const azureOpenAiProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum[\"azure-openai\"]),\n apiKey: z.string(),\n resourceName: z.string().optional(),\n apiVersion: z.string().optional(),\n baseUrl: z.string().optional(),\n headers: headersSchema,\n useDeploymentBasedUrls: z.boolean().optional(),\n})\nazureOpenAiProviderConfigSchema satisfies z.ZodType<AzureOpenAiProviderConfig>\n\n/** Amazon Bedrock provider configuration */\nexport interface AmazonBedrockProviderConfig {\n providerName: \"amazon-bedrock\"\n /** AWS access key ID */\n accessKeyId: string\n /** AWS secret access key */\n secretAccessKey: string\n /** AWS region */\n region: string\n /** AWS session token (for temporary credentials) */\n sessionToken?: string\n}\n\nexport const amazonBedrockProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum[\"amazon-bedrock\"]),\n accessKeyId: z.string(),\n secretAccessKey: z.string(),\n region: z.string(),\n sessionToken: z.string().optional(),\n})\namazonBedrockProviderConfigSchema satisfies z.ZodType<AmazonBedrockProviderConfig>\n\n/** Google Vertex AI provider configuration */\nexport interface GoogleVertexProviderConfig {\n providerName: \"google-vertex\"\n /** GCP project ID */\n project?: string\n /** GCP location */\n location?: string\n /** Custom base URL */\n baseUrl?: string\n /** Custom headers */\n headers?: Headers\n}\n\nexport const googleVertexProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum[\"google-vertex\"]),\n project: z.string().optional(),\n location: z.string().optional(),\n baseUrl: z.string().optional(),\n headers: headersSchema,\n})\ngoogleVertexProviderConfigSchema satisfies z.ZodType<GoogleVertexProviderConfig>\n\n/** DeepSeek provider configuration */\nexport interface DeepseekProviderConfig {\n providerName: \"deepseek\"\n /** API key for DeepSeek */\n apiKey: string\n /** Custom base URL */\n baseUrl?: string\n /** Custom headers */\n headers?: Headers\n}\n\nexport const deepseekProviderConfigSchema = z.object({\n providerName: z.literal(providerNameSchema.enum.deepseek),\n apiKey: z.string(),\n baseUrl: z.string().optional(),\n headers: headersSchema,\n})\ndeepseekProviderConfigSchema satisfies z.ZodType<DeepseekProviderConfig>\n\n/** Union of all provider configurations */\nexport type ProviderConfig =\n | AnthropicProviderConfig\n | GoogleGenerativeAiProviderConfig\n | OpenAiProviderConfig\n | OllamaProviderConfig\n | AzureOpenAiProviderConfig\n | AmazonBedrockProviderConfig\n | GoogleVertexProviderConfig\n | DeepseekProviderConfig\n\nexport const providerConfigSchema = z.discriminatedUnion(\"providerName\", [\n anthropicProviderConfigSchema,\n googleGenerativeAiProviderConfigSchema,\n openAiProviderConfigSchema,\n ollamaProviderConfigSchema,\n azureOpenAiProviderConfigSchema,\n amazonBedrockProviderConfigSchema,\n googleVertexProviderConfigSchema,\n deepseekProviderConfigSchema,\n])\n","import { z } from \"zod\"\nimport { headersSchema } from \"./provider-config.js\"\nimport { anthropicProviderSkillSchema, providerToolOptionsSchema } from \"./provider-tools.js\"\nimport type { RuntimeName } from \"./runtime-name.js\"\nimport { runtimeNameSchema } from \"./runtime-name.js\"\n\n/** Reasoning budget for native LLM reasoning (extended thinking / test-time scaling) */\nexport type ReasoningBudget = \"none\" | \"minimal\" | \"low\" | \"medium\" | \"high\" | number\n\n/** Default reasoning budget - enables extended thinking by default */\nexport const defaultReasoningBudget: ReasoningBudget = \"low\"\n\nexport const reasoningBudgetSchema = z.union([\n z.enum([\"none\", \"minimal\", \"low\", \"medium\", \"high\"]),\n z\n .number()\n .int()\n .nonnegative(), // 0 disables reasoning (same as \"none\")\n])\n\nconst domainPatternRegex =\n /^(\\*\\.)?[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?)*$/\nconst punycodeRegex = /(?:^|\\.)(xn--)/i\nexport const domainPatternSchema = z\n .string()\n .regex(domainPatternRegex, {\n message:\n \"Invalid domain pattern. Use exact domain (example.com) or wildcard prefix (*.example.com)\",\n })\n .refine((domain) => !punycodeRegex.test(domain), {\n message:\n \"Punycode domains (xn--) are not allowed to prevent homograph attacks. Use ASCII domains only.\",\n })\n\nfunction isPrivateOrLocalIP(hostname: string): boolean {\n if (\n hostname === \"localhost\" ||\n hostname === \"127.0.0.1\" ||\n hostname === \"::1\" ||\n hostname === \"0.0.0.0\"\n ) {\n return true\n }\n const ipv4Match = hostname.match(/^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$/)\n if (ipv4Match) {\n const a = Number(ipv4Match[1])\n const b = Number(ipv4Match[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 if (a === 169 && b === 254) return true\n if (a === 127) return true\n }\n if (hostname.includes(\":\")) {\n if (hostname.startsWith(\"fe80:\") || hostname.startsWith(\"fc\") || hostname.startsWith(\"fd\")) {\n return true\n }\n }\n if (hostname.startsWith(\"::ffff:\")) {\n const ipv4Part = hostname.slice(7)\n if (isPrivateOrLocalIP(ipv4Part)) {\n return true\n }\n }\n return false\n}\n\nconst sseEndpointSchema = z\n .string()\n .url()\n .refine(\n (url) => {\n try {\n const parsed = new URL(url)\n if (parsed.protocol !== \"https:\") return false\n if (isPrivateOrLocalIP(parsed.hostname)) return false\n return true\n } catch {\n return false\n }\n },\n { message: \"SSE endpoint must be a public HTTPS URL\" },\n )\n\nconst httpsUrlSchema = z\n .string()\n .url()\n .refine((url) => url.startsWith(\"https://\"), { message: \"URL must use HTTPS\" })\n\nconst anthropicSettingSchema = z.object({\n baseUrl: httpsUrlSchema.optional(),\n headers: headersSchema,\n})\n\nconst googleSettingSchema = z.object({\n baseUrl: httpsUrlSchema.optional(),\n headers: headersSchema,\n})\n\nconst openAiSettingSchema = z.object({\n baseUrl: httpsUrlSchema.optional(),\n organization: z.string().optional(),\n project: z.string().optional(),\n name: z.string().optional(),\n headers: headersSchema,\n})\n\nconst ollamaSettingSchema = z.object({\n baseUrl: z.string().optional(),\n headers: headersSchema,\n})\n\nconst azureOpenAiSettingSchema = z.object({\n resourceName: z.string().optional(),\n apiVersion: z.string().optional(),\n baseUrl: httpsUrlSchema.optional(),\n headers: headersSchema,\n useDeploymentBasedUrls: z.boolean().optional(),\n})\n\nconst amazonBedrockSettingSchema = z.object({\n region: z.string().optional(),\n})\n\nconst googleVertexSettingSchema = z.object({\n project: z.string().optional(),\n location: z.string().optional(),\n baseUrl: httpsUrlSchema.optional(),\n headers: headersSchema,\n})\n\nconst deepseekSettingSchema = z.object({\n baseUrl: httpsUrlSchema.optional(),\n headers: headersSchema,\n})\n\n/** Provider configuration in perstack.toml */\nexport type ProviderTable =\n | { providerName: \"anthropic\"; setting?: z.infer<typeof anthropicSettingSchema> }\n | { providerName: \"google\"; setting?: z.infer<typeof googleSettingSchema> }\n | { providerName: \"openai\"; setting?: z.infer<typeof openAiSettingSchema> }\n | { providerName: \"ollama\"; setting?: z.infer<typeof ollamaSettingSchema> }\n | { providerName: \"azure-openai\"; setting?: z.infer<typeof azureOpenAiSettingSchema> }\n | { providerName: \"amazon-bedrock\"; setting?: z.infer<typeof amazonBedrockSettingSchema> }\n | { providerName: \"google-vertex\"; setting?: z.infer<typeof googleVertexSettingSchema> }\n | { providerName: \"deepseek\"; setting?: z.infer<typeof deepseekSettingSchema> }\n\nexport const providerTableSchema = z.discriminatedUnion(\"providerName\", [\n z.object({\n providerName: z.literal(\"anthropic\"),\n setting: anthropicSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"google\"),\n setting: googleSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"openai\"),\n setting: openAiSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"ollama\"),\n setting: ollamaSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"azure-openai\"),\n setting: azureOpenAiSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"amazon-bedrock\"),\n setting: amazonBedrockSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"google-vertex\"),\n setting: googleVertexSettingSchema.optional(),\n }),\n z.object({\n providerName: z.literal(\"deepseek\"),\n setting: deepseekSettingSchema.optional(),\n }),\n])\n\n/** Skill configuration in perstack.toml */\nexport type PerstackConfigSkill =\n | {\n type: \"mcpStdioSkill\"\n description?: string\n rule?: string\n pick?: string[]\n omit?: string[]\n command: string\n packageName?: string\n args?: string[]\n requiredEnv?: string[]\n allowedDomains?: string[]\n lazyInit?: boolean\n }\n | {\n type: \"mcpSseSkill\"\n description?: string\n rule?: string\n pick?: string[]\n omit?: string[]\n endpoint: string\n allowedDomains?: string[]\n }\n | {\n type: \"interactiveSkill\"\n description?: string\n rule?: string\n tools: Record<string, { description?: string; inputJsonSchema: string }>\n }\n\n/** Expert definition in perstack.toml (simplified from full Expert) */\nexport interface PerstackConfigExpert {\n /** Semantic version */\n version?: string\n /** Minimum runtime version required */\n minRuntimeVersion?: string\n /** Description of the Expert */\n description?: string\n /** System instruction */\n instruction: string\n /** Skills configuration */\n skills?: Record<string, PerstackConfigSkill>\n /** Delegates list */\n delegates?: string[]\n /** Tags for categorization */\n tags?: string[]\n /** Provider-specific tool names to enable */\n providerTools?: string[]\n /** Anthropic Agent Skills configuration */\n providerSkills?: Array<\n | { type: \"builtin\"; skillId: \"pdf\" | \"docx\" | \"pptx\" | \"xlsx\" }\n | { type: \"custom\"; name: string; definition: string }\n >\n /** Provider tool options */\n providerToolOptions?: {\n webSearch?: { maxUses?: number; allowedDomains?: string[] }\n webFetch?: { maxUses?: number }\n fileSearch?: { vectorStoreIds?: string[]; maxNumResults?: number }\n }\n}\n\n/**\n * Configuration loaded from perstack.toml.\n * This is the primary configuration file for Perstack projects.\n */\nexport interface PerstackConfig {\n /** Default provider configuration */\n provider?: ProviderTable\n /** Default model name */\n model?: string\n /** Reasoning budget for native LLM reasoning (extended thinking) */\n reasoningBudget?: ReasoningBudget\n /** Default execution runtime */\n runtime?: RuntimeName\n /** Maximum steps per run */\n maxSteps?: number\n /** Maximum retries on generation failure */\n maxRetries?: number\n /** Timeout per generation in milliseconds */\n timeout?: number\n /** Expert definitions */\n experts?: Record<string, PerstackConfigExpert>\n /** Custom Perstack API base URL */\n perstackApiBaseUrl?: string\n /** Custom command for @perstack/base skill */\n perstackBaseSkillCommand?: string[]\n /** Paths to .env files */\n envPath?: string[]\n}\n\nexport const perstackConfigSchema = z.object({\n provider: providerTableSchema.optional(),\n model: z.string().optional(),\n reasoningBudget: reasoningBudgetSchema.optional(),\n runtime: runtimeNameSchema.optional(),\n maxSteps: z.number().optional(),\n maxRetries: z.number().optional(),\n timeout: z.number().optional(),\n experts: z\n .record(\n z.string(),\n z.object({\n version: z.string().optional(),\n minRuntimeVersion: z.string().optional(),\n description: z.string().optional(),\n instruction: z.string(),\n skills: z\n .record(\n z.string(),\n z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"mcpStdioSkill\"),\n description: z.string().optional(),\n rule: z.string().optional(),\n pick: z.array(z.string()).optional(),\n omit: z.array(z.string()).optional(),\n command: z.string(),\n packageName: z.string().optional(),\n args: z.array(z.string()).optional(),\n requiredEnv: z.array(z.string()).optional(),\n allowedDomains: z.array(domainPatternSchema).optional(),\n lazyInit: z.boolean().optional().default(false),\n }),\n z.object({\n type: z.literal(\"mcpSseSkill\"),\n description: z.string().optional(),\n rule: z.string().optional(),\n pick: z.array(z.string()).optional(),\n omit: z.array(z.string()).optional(),\n endpoint: sseEndpointSchema,\n allowedDomains: z.array(domainPatternSchema).optional(),\n }),\n z.object({\n type: z.literal(\"interactiveSkill\"),\n description: z.string().optional(),\n rule: z.string().optional(),\n tools: z.record(\n z.string(),\n z.object({\n description: z.string().optional(),\n inputJsonSchema: z.string(),\n }),\n ),\n }),\n ]),\n )\n .optional(),\n delegates: z.array(z.string()).optional(),\n tags: z.array(z.string()).optional(),\n providerTools: z.array(z.string()).optional(),\n providerSkills: z.array(anthropicProviderSkillSchema).optional(),\n providerToolOptions: providerToolOptionsSchema,\n }),\n )\n .optional(),\n perstackApiBaseUrl: z\n .url()\n .refine((url) => url.startsWith(\"https://\"), { message: \"perstackApiBaseUrl must use HTTPS\" })\n .optional(),\n perstackBaseSkillCommand: z.array(z.string()).optional(),\n envPath: z.array(z.string()).optional(),\n})\n","import { z } from \"zod\"\nimport type { ReasoningBudget } from \"./perstack-toml.js\"\nimport { reasoningBudgetSchema } from \"./perstack-toml.js\"\nimport type { ProviderName } from \"./provider-config.js\"\nimport { providerNameSchema } from \"./provider-config.js\"\nimport type { RuntimeName } from \"./runtime-name.js\"\nimport { runtimeNameSchema } from \"./runtime-name.js\"\n\n/** Parsed command options after transformation */\nexport interface CommandOptions {\n /** Path to perstack.toml config file */\n config?: string\n /** LLM provider to use */\n provider?: ProviderName\n /** Model name */\n model?: string\n /** Reasoning budget for native LLM reasoning (extended thinking) */\n reasoningBudget?: ReasoningBudget\n /** Maximum steps */\n maxSteps?: number\n /** Maximum retries */\n maxRetries?: number\n /** Timeout in milliseconds */\n timeout?: number\n /** Custom job ID */\n jobId?: string\n /** Custom run ID */\n runId?: string\n /** Paths to .env files */\n envPath?: string[]\n /** Environment variable names to pass to Docker runtime */\n env?: string[]\n /** Enable verbose logging */\n verbose?: boolean\n /** Continue most recent job */\n continue?: boolean\n /** Continue specific job by ID */\n continueJob?: string\n /** Resume from specific checkpoint (requires --continue or --continue-job) */\n resumeFrom?: string\n /** Query is interactive tool call result */\n interactiveToolCallResult?: boolean\n /** Execution runtime */\n runtime?: RuntimeName\n /** Workspace directory for Docker runtime */\n workspace?: string\n /** Additional volume mounts for Docker runtime (format: hostPath:containerPath:mode) */\n volume?: string[]\n /** Event types to filter (e.g., completeRun,stopRunByError) */\n filter?: string[]\n}\n\nconst commandOptionsSchema = z.object({\n config: z.string().optional(),\n provider: providerNameSchema.optional(),\n model: z.string().optional(),\n reasoningBudget: z\n .string()\n .optional()\n .transform((value) => {\n if (value === undefined) return undefined\n // Check if it's a named level (including \"none\" to disable reasoning)\n if ([\"none\", \"minimal\", \"low\", \"medium\", \"high\"].includes(value)) {\n return value as ReasoningBudget\n }\n // Try to parse as number\n const parsedValue = Number.parseInt(value, 10)\n if (Number.isNaN(parsedValue)) return undefined\n return parsedValue\n })\n .pipe(reasoningBudgetSchema.optional()),\n maxSteps: z\n .string()\n .optional()\n .transform((value) => {\n if (value === undefined) return undefined\n const parsedValue = Number.parseInt(value, 10)\n if (Number.isNaN(parsedValue)) return undefined\n return parsedValue\n }),\n maxRetries: z\n .string()\n .optional()\n .transform((value) => {\n if (value === undefined) return undefined\n const parsedValue = Number.parseInt(value, 10)\n if (Number.isNaN(parsedValue)) return undefined\n return parsedValue\n }),\n timeout: z\n .string()\n .optional()\n .transform((value) => {\n if (value === undefined) return undefined\n const parsedValue = Number.parseInt(value, 10)\n if (Number.isNaN(parsedValue)) return undefined\n return parsedValue\n }),\n jobId: z.string().optional(),\n runId: z.string().optional(),\n envPath: z\n .array(z.string())\n .optional()\n .transform((value) => (value && value.length > 0 ? value : undefined)),\n env: z\n .array(z.string())\n .optional()\n .transform((value) => (value && value.length > 0 ? value : undefined)),\n verbose: z.boolean().optional(),\n continue: z.boolean().optional(),\n continueJob: z.string().optional(),\n resumeFrom: z.string().optional(),\n interactiveToolCallResult: z.boolean().optional(),\n runtime: runtimeNameSchema.optional(),\n workspace: z.string().optional(),\n volume: z\n .array(z.string())\n .optional()\n .transform((value) => (value && value.length > 0 ? value : undefined)),\n filter: z\n .string()\n .optional()\n .transform((value) => {\n if (value === undefined) return undefined\n // Split by comma and trim whitespace, filter out empty strings\n return value\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length > 0)\n })\n .pipe(z.array(z.string()).optional()),\n})\n\n/** Input for the `perstack run` command */\nexport interface RunCommandInput {\n /** Expert key to run */\n expertKey: string\n /** Query or prompt */\n query: string\n /** Command options */\n options: CommandOptions\n}\n\nexport const runCommandInputSchema = z.object({\n expertKey: z.string(),\n query: z.string(),\n options: commandOptionsSchema,\n})\n\n/** Input for the `perstack start` command */\nexport interface StartCommandInput {\n /** Expert key to run (optional, prompts if not provided) */\n expertKey?: string\n /** Query or prompt (optional, prompts if not provided) */\n query?: string\n /** Command options */\n options: CommandOptions\n}\n\nexport const startCommandInputSchema = z.object({\n expertKey: z.string().optional(),\n query: z.string().optional(),\n options: commandOptionsSchema,\n})\n","import { createId } from \"@paralleldrive/cuid2\"\nimport { z } from \"zod\"\nimport {\n defaultMaxRetries,\n defaultMaxSteps,\n defaultPerstackApiBaseUrl,\n defaultTimeout,\n expertKeyRegex,\n} from \"../constants/constants.js\"\nimport type { Checkpoint } from \"./checkpoint.js\"\nimport { checkpointSchema } from \"./checkpoint.js\"\nimport type { Expert } from \"./expert.js\"\nimport { expertSchema } from \"./expert.js\"\nimport type {\n ExpertMessage,\n InstructionMessage,\n Message,\n ToolMessage,\n UserMessage,\n} from \"./message.js\"\nimport type { PerstackConfigSkill, ReasoningBudget } from \"./perstack-toml.js\"\nimport { defaultReasoningBudget, reasoningBudgetSchema } from \"./perstack-toml.js\"\nimport type { ProviderConfig } from \"./provider-config.js\"\nimport { providerConfigSchema } from \"./provider-config.js\"\nimport type { Step } from \"./step.js\"\nimport type { ToolCall } from \"./tool-call.js\"\nimport type { ToolResult } from \"./tool-result.js\"\nimport type { Usage } from \"./usage.js\"\n\n/** Parse an expert key into its components */\nexport function parseExpertKey(expertKey: string): {\n key: string\n name: string\n version?: string\n tag?: string\n} {\n const match = expertKey.match(expertKeyRegex)\n if (!match) {\n throw new Error(`Invalid expert key format: ${expertKey}`)\n }\n const [key, name, version, tag] = match\n if (!name) {\n throw new Error(`Invalid expert key format: ${expertKey}`)\n }\n return { key, name, version, tag }\n}\n\n/** Input for a run (text or interactive tool call result) */\nexport interface RunInput {\n /** Text query */\n text?: string\n /** Interactive tool call result (when continuing from interactive tool) */\n interactiveToolCallResult?: {\n toolCallId: string\n toolName: string\n skillName: string\n text: string\n }\n}\n\n/** Runtime settings for an Expert run */\nexport interface RunSetting {\n /** Model name to use */\n model: string\n /** Provider configuration */\n providerConfig: ProviderConfig\n /** Job ID this run belongs to */\n jobId: string\n /** Unique run identifier */\n runId: string\n /** Expert key to run */\n expertKey: string\n /** Input for the run */\n input: RunInput\n /** Map of expert keys to Expert definitions */\n experts: Record<string, Expert>\n /** Reasoning budget for native LLM reasoning (extended thinking). Defaults to \"low\". Use \"none\" or 0 to disable. */\n reasoningBudget: ReasoningBudget\n /** Maximum steps before stopping (applies to Job's totalSteps) */\n maxSteps: number\n /** Maximum retries on generation failure */\n maxRetries: number\n /** Timeout per generation in milliseconds */\n timeout: number\n /** Unix timestamp when run started */\n startedAt: number\n /** Unix timestamp of last update */\n updatedAt: number\n /** Perstack API base URL */\n perstackApiBaseUrl: string\n /** Perstack API key */\n perstackApiKey?: string\n /** Custom command for @perstack/base */\n perstackBaseSkillCommand?: string[]\n /** Environment variables to pass to skills */\n env: Record<string, string>\n /** HTTP proxy URL for API requests */\n proxyUrl?: string\n /** Enable verbose output for build processes */\n verbose?: boolean\n}\n\n/** Parameters for starting a run */\nexport interface RunParams {\n /** Run settings */\n setting: RunSetting\n /** Optional checkpoint to resume from */\n checkpoint?: Checkpoint\n}\n\n/** Expert input type before schema transformation (skills without name, optional fields) */\ntype ExpertInput = {\n name: string\n version: string\n description?: string\n instruction: string\n skills?: Record<string, PerstackConfigSkill>\n delegates?: string[]\n tags?: string[]\n}\n\n/** Input type for runParamsSchema (before defaults/transforms) */\nexport type RunParamsInput = {\n setting: {\n model: string\n providerConfig: ProviderConfig\n jobId?: string\n runId?: string\n expertKey: string\n input: RunInput\n experts?: Record<string, ExpertInput>\n reasoningBudget?: ReasoningBudget\n maxSteps?: number\n maxRetries?: number\n timeout?: number\n startedAt?: number\n updatedAt?: number\n perstackApiBaseUrl?: string\n perstackApiKey?: string\n perstackBaseSkillCommand?: string[]\n env?: Record<string, string>\n proxyUrl?: string\n verbose?: boolean\n }\n checkpoint?: Checkpoint\n}\n\nexport const runSettingSchema = z.object({\n model: z.string(),\n providerConfig: providerConfigSchema,\n jobId: z.string(),\n runId: z.string(),\n expertKey: z.string().min(1).regex(expertKeyRegex),\n input: z.object({\n text: z.string().optional(),\n interactiveToolCallResult: z\n .object({\n toolCallId: z.string(),\n toolName: z.string(),\n skillName: z.string(),\n text: z.string(),\n })\n .optional(),\n }),\n experts: z.record(z.string(), expertSchema),\n reasoningBudget: reasoningBudgetSchema.default(defaultReasoningBudget),\n maxSteps: z.number().min(1).optional().default(defaultMaxSteps),\n maxRetries: z.number().min(0),\n timeout: z.number().min(0),\n startedAt: z.number(),\n updatedAt: z.number(),\n perstackApiBaseUrl: z.string().url(),\n perstackApiKey: z.string().optional(),\n perstackBaseSkillCommand: z.array(z.string()).optional(),\n env: z.record(z.string(), z.string()),\n proxyUrl: z.string().optional(),\n verbose: z.boolean().optional(),\n})\n\nexport const runParamsSchema = z.object({\n setting: z.object({\n model: z.string(),\n providerConfig: providerConfigSchema,\n jobId: z\n .string()\n .optional()\n .default(() => createId()),\n runId: z\n .string()\n .optional()\n .default(() => createId()),\n expertKey: z.string().min(1).regex(expertKeyRegex),\n input: z.object({\n text: z.string().optional(),\n interactiveToolCallResult: z\n .object({\n toolCallId: z.string(),\n toolName: z.string(),\n skillName: z.string(),\n text: z.string(),\n })\n .optional(),\n }),\n experts: z\n .record(z.string().min(1).regex(expertKeyRegex), expertSchema.omit({ key: true }))\n .optional()\n .default({})\n .transform((experts) =>\n Object.fromEntries(\n Object.entries(experts).map(([key, expertWithoutKey]) => [\n key,\n expertSchema.parse({\n ...expertWithoutKey,\n key,\n }),\n ]),\n ),\n ),\n reasoningBudget: reasoningBudgetSchema.optional().default(defaultReasoningBudget),\n maxSteps: z.number().min(1).optional().default(defaultMaxSteps),\n maxRetries: z.number().min(0).optional().default(defaultMaxRetries),\n timeout: z.number().min(0).optional().default(defaultTimeout),\n startedAt: z.number().optional().default(Date.now()),\n updatedAt: z.number().optional().default(Date.now()),\n perstackApiBaseUrl: z.url().optional().default(defaultPerstackApiBaseUrl),\n perstackApiKey: z.string().optional(),\n perstackBaseSkillCommand: z.array(z.string()).optional(),\n env: z.record(z.string(), z.string()).optional().default({}),\n proxyUrl: z.string().optional(),\n verbose: z.boolean().optional(),\n }),\n checkpoint: checkpointSchema.optional(),\n})\n\n/**\n * Expert state events - state machine transitions during execution.\n * All events contain deeply serializable properties for checkpoint storage.\n */\ntype ExpertStatePayloads = {\n startRun: {\n initialCheckpoint: Checkpoint\n inputMessages: (InstructionMessage | UserMessage | ToolMessage)[]\n }\n /** Resume from stoppedByDelegate or stoppedByInteractiveTool */\n resumeFromStop: {\n checkpoint: Checkpoint\n }\n /** Proceed to CallingInteractiveTools from ResumingFromStop */\n proceedToInteractiveTools: {\n pendingToolCalls: ToolCall[]\n partialToolResults: ToolResult[]\n }\n startGeneration: {\n messages: Message[]\n }\n retry: {\n reason: string\n newMessages: (UserMessage | ExpertMessage | ToolMessage)[]\n toolCalls?: ToolCall[]\n toolResults?: ToolResult[]\n usage: Usage\n }\n callTools: {\n newMessage: ExpertMessage\n toolCalls: ToolCall[]\n usage: Usage\n }\n /** Internal: MCP tools finished, proceed to delegates */\n finishMcpTools: {\n partialToolResults: ToolResult[]\n pendingToolCalls: ToolCall[]\n }\n /** Internal: No delegates, proceed to interactive tools */\n skipDelegates: object\n resolveToolResults: {\n toolResults: ToolResult[]\n }\n attemptCompletion: {\n toolResult: ToolResult\n }\n finishToolCall: {\n newMessages: (UserMessage | ToolMessage)[]\n }\n resumeToolCalls: {\n pendingToolCalls: ToolCall[]\n partialToolResults: ToolResult[]\n }\n continueToNextStep: {\n checkpoint: Checkpoint\n step: Step\n nextCheckpoint: Checkpoint\n }\n stopRunByInteractiveTool: {\n checkpoint: Checkpoint\n step: Step\n }\n stopRunByDelegate: {\n checkpoint: Checkpoint\n step: Step\n }\n stopRunByExceededMaxSteps: {\n checkpoint: Checkpoint\n step: Step\n }\n stopRunByError: {\n checkpoint: Checkpoint\n step: Step\n error: {\n name: string\n message: string\n statusCode?: number\n isRetryable: boolean\n }\n }\n completeRun: {\n checkpoint: Checkpoint\n step: Step\n text: string\n usage: Usage\n }\n}\n\n/**\n * Streaming events - reasoning/result streaming during LLM generation.\n * Moved from RuntimeEvent to RunEvent to support proper attribution in parallel runs.\n */\ntype StreamingPayloads = {\n /** Start of reasoning stream (display hint) */\n startStreamingReasoning: object\n /** Streaming reasoning delta */\n streamReasoning: {\n delta: string\n }\n /** Reasoning stream completion (extended thinking / test-time scaling) */\n completeStreamingReasoning: {\n text: string\n }\n /** Start of run result stream (display hint) */\n startStreamingRunResult: object\n /** Streaming run result delta */\n streamRunResult: {\n delta: string\n }\n /** Run result stream completion */\n completeStreamingRunResult: {\n text: string\n }\n}\n\n/** Base properties for all run events (both state and streaming) */\nexport interface BaseEvent {\n /** Unique event ID */\n id: string\n /** Expert key that emitted this event */\n expertKey: string\n /** Unix timestamp when event was emitted */\n timestamp: number\n /** Job ID this event belongs to */\n jobId: string\n /** Run ID this event belongs to */\n runId: string\n /** Step number when event was emitted */\n stepNumber: number\n}\n\n/** Expert state event types (state machine transitions) */\nexport type ExpertStateEventType = keyof ExpertStatePayloads\n\n/** Streaming event types */\nexport type StreamingEventType = keyof StreamingPayloads\n\n/** All run event types (state + streaming) */\nexport type EventType = ExpertStateEventType | StreamingEventType\n\n/** Union type of expert state events */\nexport type ExpertStateEvent = {\n [K in ExpertStateEventType]: BaseEvent & { type: K } & ExpertStatePayloads[K]\n}[ExpertStateEventType]\n\n/** Union type of streaming events */\nexport type StreamingEvent = {\n [K in StreamingEventType]: BaseEvent & { type: K } & StreamingPayloads[K]\n}[StreamingEventType]\n\n/** Union type of all run events (state machine + streaming) */\nexport type RunEvent = ExpertStateEvent | StreamingEvent\n\n/** Extract a specific event type */\nexport type EventForType<T extends EventType> = Extract<RunEvent, { type: T }>\n\n/** Factory function to create expert state events */\nexport function createEvent<T extends ExpertStateEventType>(type: T) {\n return (\n setting: RunSetting,\n checkpoint: Checkpoint,\n data: Omit<\n Extract<ExpertStateEvent, { type: T }>,\n \"type\" | \"id\" | \"expertKey\" | \"timestamp\" | \"jobId\" | \"runId\" | \"stepNumber\"\n >,\n ): Extract<ExpertStateEvent, { type: T }> => {\n return {\n type,\n id: createId(),\n expertKey: checkpoint.expert.key,\n timestamp: Date.now(),\n jobId: setting.jobId,\n runId: setting.runId,\n stepNumber: checkpoint.stepNumber,\n ...data,\n } as Extract<ExpertStateEvent, { type: T }>\n }\n}\n\n/** Factory function to create streaming events */\nexport function createStreamingEvent<T extends StreamingEventType>(\n type: T,\n setting: RunSetting,\n checkpoint: Checkpoint,\n data: Omit<\n Extract<StreamingEvent, { type: T }>,\n \"type\" | \"id\" | \"expertKey\" | \"timestamp\" | \"jobId\" | \"runId\" | \"stepNumber\"\n >,\n): Extract<StreamingEvent, { type: T }> {\n return {\n type,\n id: createId(),\n expertKey: checkpoint.expert.key,\n timestamp: Date.now(),\n jobId: setting.jobId,\n runId: setting.runId,\n stepNumber: checkpoint.stepNumber,\n ...data,\n } as Extract<StreamingEvent, { type: T }>\n}\n\nexport const startRun = createEvent(\"startRun\")\nexport const resumeFromStop = createEvent(\"resumeFromStop\")\nexport const proceedToInteractiveTools = createEvent(\"proceedToInteractiveTools\")\nexport const startGeneration = createEvent(\"startGeneration\")\nexport const retry = createEvent(\"retry\")\nexport const callTools = createEvent(\"callTools\")\nexport const finishMcpTools = createEvent(\"finishMcpTools\")\nexport const skipDelegates = createEvent(\"skipDelegates\")\nexport const resolveToolResults = createEvent(\"resolveToolResults\")\nexport const attemptCompletion = createEvent(\"attemptCompletion\")\nexport const finishToolCall = createEvent(\"finishToolCall\")\nexport const resumeToolCalls = createEvent(\"resumeToolCalls\")\nexport const completeRun = createEvent(\"completeRun\")\nexport const stopRunByInteractiveTool = createEvent(\"stopRunByInteractiveTool\")\nexport const stopRunByDelegate = createEvent(\"stopRunByDelegate\")\nexport const stopRunByExceededMaxSteps = createEvent(\"stopRunByExceededMaxSteps\")\nexport const stopRunByError = createEvent(\"stopRunByError\")\nexport const continueToNextStep = createEvent(\"continueToNextStep\")\n\n/** Base properties for runtime events (infrastructure-level, no expertKey) */\ninterface BaseRuntimeEvent {\n /** Unique event ID */\n id: string\n /** Unix timestamp */\n timestamp: number\n /** Job ID */\n jobId: string\n /** Run ID */\n runId: string\n}\n\n/** Runtime event payloads (infrastructure-level events only) */\ntype RuntimeEventPayloads = {\n initializeRuntime: {\n runtimeVersion: string\n runtime?: string\n expertName: string\n experts: string[]\n model: string\n maxSteps?: number\n maxRetries: number\n timeout: number\n query?: string\n interactiveToolCall?: {\n toolName: string\n toolCallId: string\n text: string\n }\n }\n skillStarting: {\n skillName: string\n command: string\n args: string[]\n }\n skillConnected: {\n skillName: string\n serverInfo?: {\n name: string\n version: string\n }\n connectDurationMs?: number\n totalDurationMs?: number\n spawnDurationMs?: number\n handshakeDurationMs?: number\n toolDiscoveryDurationMs?: number\n }\n skillStderr: {\n skillName: string\n message: string\n }\n skillDisconnected: {\n skillName: string\n }\n /** Docker build progress event */\n dockerBuildProgress: {\n stage: \"pulling\" | \"building\" | \"complete\" | \"error\"\n service: string\n message: string\n progress?: number\n }\n /** Docker container status event */\n dockerContainerStatus: {\n status: \"starting\" | \"running\" | \"healthy\" | \"unhealthy\" | \"stopped\" | \"error\"\n service: string\n message?: string\n }\n /** Proxy access event (allow/block) */\n proxyAccess: {\n action: \"allowed\" | \"blocked\"\n domain: string\n port: number\n reason?: string\n }\n}\n\n/** All runtime event types */\nexport type RuntimeEventType = keyof RuntimeEventPayloads\n\n/** Union type of all runtime events */\nexport type RuntimeEvent = {\n [K in RuntimeEventType]: BaseRuntimeEvent & { type: K } & RuntimeEventPayloads[K]\n}[RuntimeEventType]\n\n/** Extract a specific runtime event type */\nexport type RuntimeEventForType<T extends RuntimeEventType> = Extract<RuntimeEvent, { type: T }>\n\n/** Factory function to create runtime events */\nexport function createRuntimeEvent<T extends RuntimeEventType>(\n type: T,\n jobId: string,\n runId: string,\n data: Omit<RuntimeEventForType<T>, \"type\" | \"id\" | \"timestamp\" | \"jobId\" | \"runId\">,\n): RuntimeEventForType<T> {\n return {\n type,\n id: createId(),\n timestamp: Date.now(),\n jobId,\n runId,\n ...data,\n } as RuntimeEventForType<T>\n}\n\n/** Union of all Perstack events (RunEvent for state machine, RuntimeEvent for environment) */\nexport type PerstackEvent = RunEvent | RuntimeEvent\n\n/**\n * Valid expert state event types (state machine transitions)\n */\nconst EXPERT_STATE_EVENT_TYPES = new Set<string>([\n \"startRun\",\n \"resumeFromStop\",\n \"proceedToInteractiveTools\",\n \"startGeneration\",\n \"retry\",\n \"callTools\",\n \"finishMcpTools\",\n \"skipDelegates\",\n \"resolveToolResults\",\n \"attemptCompletion\",\n \"finishToolCall\",\n \"resumeToolCalls\",\n \"continueToNextStep\",\n \"stopRunByInteractiveTool\",\n \"stopRunByDelegate\",\n \"stopRunByExceededMaxSteps\",\n \"stopRunByError\",\n \"completeRun\",\n])\n\n/**\n * Valid streaming event types\n */\nconst STREAMING_EVENT_TYPES = new Set<string>([\n \"startStreamingReasoning\",\n \"streamReasoning\",\n \"completeStreamingReasoning\",\n \"startStreamingRunResult\",\n \"streamRunResult\",\n \"completeStreamingRunResult\",\n])\n\n/**\n * Valid runtime event types (infrastructure-level events)\n */\nconst RUNTIME_EVENT_TYPES = new Set<string>([\n \"initializeRuntime\",\n \"skillStarting\",\n \"skillConnected\",\n \"skillStderr\",\n \"skillDisconnected\",\n \"dockerBuildProgress\",\n \"dockerContainerStatus\",\n \"proxyAccess\",\n])\n\n/** Validate if a string is a valid RunEvent type (ExpertStateEvent or StreamingEvent) */\nexport function isValidEventType(type: string): type is EventType {\n return EXPERT_STATE_EVENT_TYPES.has(type) || STREAMING_EVENT_TYPES.has(type)\n}\n\n/** Validate if a string is a valid RuntimeEvent type */\nexport function isValidRuntimeEventType(type: string): type is RuntimeEventType {\n return RUNTIME_EVENT_TYPES.has(type)\n}\n","import { z } from \"zod\"\nimport type { InstructionMessage, Message, ToolMessage, UserMessage } from \"./message.js\"\nimport {\n instructionMessageSchema,\n messageSchema,\n toolMessageSchema,\n userMessageSchema,\n} from \"./message.js\"\nimport type { ToolCall } from \"./tool-call.js\"\nimport { toolCallSchema } from \"./tool-call.js\"\nimport type { ToolResult } from \"./tool-result.js\"\nimport { toolResultSchema } from \"./tool-result.js\"\nimport type { Usage } from \"./usage.js\"\nimport { usageSchema } from \"./usage.js\"\n\n/**\n * A single execution step in an Expert run.\n * Each step represents one LLM generation cycle, optionally followed by tool calls.\n */\nexport interface Step {\n /** Sequential step number (1-indexed) */\n stepNumber: number\n /** Messages sent to the LLM for this step */\n inputMessages?: (InstructionMessage | UserMessage | ToolMessage)[]\n /** Messages generated during this step */\n newMessages: Message[]\n /** Tool calls made during this step, if any */\n toolCalls?: ToolCall[]\n /** Results of the tool calls, if any */\n toolResults?: ToolResult[]\n /** Tool calls waiting to be processed (sorted: MCP → Delegate → Interactive) */\n pendingToolCalls?: ToolCall[]\n /** Partial tool results collected so far (used during mixed tool call processing) */\n partialToolResults?: ToolResult[]\n /** Token usage for this step */\n usage: Usage\n /** Unix timestamp (ms) when step started */\n startedAt: number\n /** Unix timestamp (ms) when step finished */\n finishedAt?: number\n}\n\nexport const stepSchema = z.object({\n stepNumber: z.number(),\n inputMessages: z\n .array(z.union([instructionMessageSchema, userMessageSchema, toolMessageSchema]))\n .optional(),\n newMessages: z.array(messageSchema),\n toolCalls: z.array(toolCallSchema).optional(),\n toolResults: z.array(toolResultSchema).optional(),\n pendingToolCalls: z.array(toolCallSchema).optional(),\n partialToolResults: z.array(toolResultSchema).optional(),\n usage: usageSchema,\n startedAt: z.number(),\n finishedAt: z.number().optional(),\n})\nstepSchema satisfies z.ZodType<Step>\n","import type { Activity, ActivityOrGroup, ParallelActivitiesGroup } from \"../schemas/activity.js\"\nimport type { Checkpoint, DelegationTarget } from \"../schemas/checkpoint.js\"\nimport type { Message } from \"../schemas/message.js\"\nimport type { MessagePart, ThinkingPart } from \"../schemas/message-part.js\"\nimport type { Step } from \"../schemas/step.js\"\nimport type { ToolCall } from \"../schemas/tool-call.js\"\nimport type { ToolResult } from \"../schemas/tool-result.js\"\n\nexport const BASE_SKILL_PREFIX = \"@perstack/base\"\n\nexport type GetActivitiesParams = {\n checkpoint: Checkpoint\n step: Step\n}\n\n/**\n * Extracts reasoning from Step.newMessages by finding thinkingParts.\n */\nfunction extractReasoning(newMessages: Message[]): string | undefined {\n const thinkingParts: ThinkingPart[] = []\n for (const message of newMessages) {\n for (const content of message.contents) {\n if (content.type === \"thinkingPart\") {\n thinkingParts.push(content)\n }\n }\n }\n if (thinkingParts.length === 0) return undefined\n return thinkingParts.map((p) => p.thinking).join(\"\\n\\n\")\n}\n\n/**\n * Wraps multiple activities into a ParallelActivitiesGroup when they share reasoning.\n * Single activities are returned as-is.\n */\nfunction wrapInGroupIfParallel(\n activities: Activity[],\n reasoning: string | undefined,\n expertKey: string,\n runId: string,\n stepNumber: number,\n): ActivityOrGroup[] {\n if (activities.length <= 1) {\n // Single activity - return as-is with reasoning\n return activities\n }\n\n // Multiple activities - wrap in a group with shared reasoning\n // Remove reasoning from individual activities since it's on the group\n const activitiesWithoutReasoning = activities.map((a) => {\n const { reasoning: _, ...rest } = a\n return rest as Activity\n })\n\n const group: ParallelActivitiesGroup = {\n type: \"parallelGroup\",\n id: `parallel-${runId}-step${stepNumber}`,\n expertKey,\n runId,\n reasoning,\n activities: activitiesWithoutReasoning,\n }\n\n return [group]\n}\n\n/**\n * Computes activities from a checkpoint and step.\n * Returns an array of activities or activity groups, supporting parallel tool calls and delegations.\n * When multiple activities are produced from a single step, they are wrapped in a ParallelActivitiesGroup\n * with shared reasoning.\n */\nexport function getActivities(params: GetActivitiesParams): ActivityOrGroup[] {\n const { checkpoint, step } = params\n const { status, delegateTo, runId, stepNumber } = checkpoint\n const expertKey = checkpoint.expert.key\n const reasoning = extractReasoning(step.newMessages)\n\n // Completed run - final result generation (after attemptCompletion)\n if (status === \"completed\") {\n return [createCompleteActivity(step.newMessages, reasoning)]\n }\n\n // Error status - use checkpoint error information\n if (status === \"stoppedByError\") {\n return [createErrorActivity(checkpoint, reasoning)]\n }\n\n // Parallel delegate activities - each delegation becomes a separate activity\n if (status === \"stoppedByDelegate\") {\n if (!delegateTo || delegateTo.length === 0) {\n return [\n createRetryActivity(\n step.newMessages,\n reasoning,\n \"Delegate status but no delegation targets\",\n ),\n ]\n }\n const activities = delegateTo.map((d) => createDelegateActivity(d, reasoning))\n return wrapInGroupIfParallel(activities, reasoning, expertKey, runId, stepNumber)\n }\n\n // Interactive tool activities - may be parallel\n if (status === \"stoppedByInteractiveTool\") {\n const toolCalls = step.toolCalls ?? []\n if (toolCalls.length === 0) {\n return [createRetryActivity(step.newMessages, reasoning)]\n }\n const activities = toolCalls.map((tc) =>\n createInteractiveToolActivity(tc.skillName, tc.toolName, tc, reasoning),\n )\n return wrapInGroupIfParallel(activities, reasoning, expertKey, runId, stepNumber)\n }\n\n // Normal tool activities - may be parallel\n const toolCalls = step.toolCalls ?? []\n const toolResults = step.toolResults ?? []\n\n if (toolCalls.length === 0) {\n return [createRetryActivity(step.newMessages, reasoning)]\n }\n\n const activities: Activity[] = []\n for (const toolCall of toolCalls) {\n const toolResult = toolResults.find((tr) => tr.id === toolCall.id)\n if (!toolResult) {\n // No result yet for this tool call, skip\n continue\n }\n const { skillName, toolName } = toolCall\n if (skillName.startsWith(BASE_SKILL_PREFIX)) {\n activities.push(createBaseToolActivity(toolName, toolCall, toolResult, reasoning))\n } else {\n activities.push(\n createGeneralToolActivity(skillName, toolName, toolCall, toolResult, reasoning),\n )\n }\n }\n\n if (activities.length === 0) {\n return [createRetryActivity(step.newMessages, reasoning)]\n }\n\n return wrapInGroupIfParallel(activities, reasoning, expertKey, runId, stepNumber)\n}\n\nfunction createCompleteActivity(newMessages: Message[], reasoning: string | undefined): Activity {\n // Extract final text from the last expertMessage's textPart\n const lastExpertMessage = [...newMessages].reverse().find((m) => m.type === \"expertMessage\")\n const textPart = lastExpertMessage?.contents.find((c) => c.type === \"textPart\")\n return {\n type: \"complete\",\n id: \"\",\n expertKey: \"\",\n runId: \"\",\n reasoning,\n text: textPart?.text ?? \"\",\n }\n}\n\nfunction createDelegateActivity(\n delegate: DelegationTarget,\n reasoning: string | undefined,\n): Activity {\n return {\n type: \"delegate\",\n id: \"\",\n expertKey: \"\",\n runId: \"\",\n reasoning,\n delegateExpertKey: delegate.expert.key,\n query: delegate.query,\n }\n}\n\nfunction createInteractiveToolActivity(\n skillName: string,\n toolName: string,\n toolCall: ToolCall,\n reasoning: string | undefined,\n): Activity {\n return {\n type: \"interactiveTool\",\n id: \"\",\n expertKey: \"\",\n runId: \"\",\n reasoning,\n skillName,\n toolName,\n args: toolCall.args,\n }\n}\n\nfunction createRetryActivity(\n newMessages: Message[],\n reasoning: string | undefined,\n customError?: string,\n): Activity {\n const lastMessage = newMessages[newMessages.length - 1]\n const textPart = lastMessage?.contents.find((c) => c.type === \"textPart\")\n return {\n type: \"retry\",\n id: \"\",\n expertKey: \"\",\n runId: \"\",\n reasoning,\n error: customError ?? \"No tool call or result found\",\n message: textPart?.text ?? \"\",\n }\n}\n\nfunction createErrorActivity(checkpoint: Checkpoint, reasoning: string | undefined): Activity {\n const error = checkpoint.error\n return {\n type: \"error\",\n id: \"\",\n expertKey: \"\",\n runId: \"\",\n reasoning,\n error: error?.message ?? \"Unknown error\",\n errorName: error?.name,\n isRetryable: error?.isRetryable,\n }\n}\n\nexport function createBaseToolActivity(\n toolName: string,\n toolCall: ToolCall,\n toolResult: ToolResult,\n reasoning: string | undefined,\n): Activity {\n const args = toolCall.args as Record<string, unknown>\n const resultContents = toolResult.result\n const errorText = getErrorFromResult(resultContents)\n const baseFields = { id: \"\", expertKey: \"\", runId: \"\", reasoning }\n\n switch (toolName) {\n case \"attemptCompletion\": {\n const remainingTodos = parseRemainingTodosFromResult(resultContents)\n return {\n type: \"attemptCompletion\",\n ...baseFields,\n remainingTodos,\n error: errorText,\n }\n }\n\n case \"todo\": {\n const todos = parseTodosFromResult(resultContents)\n return {\n type: \"todo\",\n ...baseFields,\n newTodos: Array.isArray(args[\"newTodos\"]) ? args[\"newTodos\"].map(String) : undefined,\n completedTodos: Array.isArray(args[\"completedTodos\"])\n ? args[\"completedTodos\"].map(Number)\n : undefined,\n todos,\n error: errorText,\n }\n }\n\n case \"clearTodo\":\n return {\n type: \"clearTodo\",\n ...baseFields,\n error: errorText,\n }\n\n case \"readImageFile\":\n return {\n type: \"readImageFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n mimeType: parseStringField(resultContents, \"mimeType\"),\n size: parseNumberField(resultContents, \"size\"),\n error: errorText,\n }\n\n case \"readPdfFile\":\n return {\n type: \"readPdfFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n mimeType: parseStringField(resultContents, \"mimeType\"),\n size: parseNumberField(resultContents, \"size\"),\n error: errorText,\n }\n\n case \"readTextFile\":\n return {\n type: \"readTextFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n content: parseStringField(resultContents, \"content\"),\n from: typeof args[\"from\"] === \"number\" ? args[\"from\"] : undefined,\n to: typeof args[\"to\"] === \"number\" ? args[\"to\"] : undefined,\n error: errorText,\n }\n\n case \"editTextFile\":\n return {\n type: \"editTextFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n newText: String(args[\"newText\"] ?? \"\"),\n oldText: String(args[\"oldText\"] ?? \"\"),\n error: errorText,\n }\n\n case \"appendTextFile\":\n return {\n type: \"appendTextFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n text: String(args[\"text\"] ?? \"\"),\n error: errorText,\n }\n\n case \"writeTextFile\":\n return {\n type: \"writeTextFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n text: String(args[\"text\"] ?? \"\"),\n error: errorText,\n }\n\n case \"deleteFile\":\n return {\n type: \"deleteFile\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n error: errorText,\n }\n\n case \"deleteDirectory\":\n return {\n type: \"deleteDirectory\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n recursive: typeof args[\"recursive\"] === \"boolean\" ? args[\"recursive\"] : undefined,\n error: errorText,\n }\n\n case \"moveFile\":\n return {\n type: \"moveFile\",\n ...baseFields,\n source: String(args[\"source\"] ?? \"\"),\n destination: String(args[\"destination\"] ?? \"\"),\n error: errorText,\n }\n\n case \"getFileInfo\":\n return {\n type: \"getFileInfo\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n info: parseFileInfoFromResult(resultContents),\n error: errorText,\n }\n\n case \"createDirectory\":\n return {\n type: \"createDirectory\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n error: errorText,\n }\n\n case \"listDirectory\":\n return {\n type: \"listDirectory\",\n ...baseFields,\n path: String(args[\"path\"] ?? \"\"),\n items: parseListDirectoryFromResult(resultContents),\n error: errorText,\n }\n\n case \"exec\":\n return {\n type: \"exec\",\n ...baseFields,\n command: String(args[\"command\"] ?? \"\"),\n args: Array.isArray(args[\"args\"]) ? args[\"args\"].map(String) : [],\n cwd: String(args[\"cwd\"] ?? \"\"),\n output: parseStringField(resultContents, \"output\"),\n error: errorText,\n stdout: parseStringField(resultContents, \"stdout\"),\n stderr: parseStringField(resultContents, \"stderr\"),\n }\n\n default:\n // Use actual skillName from toolCall, not the constant\n return createGeneralToolActivity(\n toolCall.skillName,\n toolName,\n toolCall,\n toolResult,\n reasoning,\n )\n }\n}\n\nexport function createGeneralToolActivity(\n skillName: string,\n toolName: string,\n toolCall: ToolCall,\n toolResult: ToolResult,\n reasoning: string | undefined,\n): Activity {\n const errorText = getErrorFromResult(toolResult.result)\n return {\n type: \"generalTool\",\n id: \"\",\n expertKey: \"\",\n runId: \"\",\n reasoning,\n skillName,\n toolName,\n args: toolCall.args as Record<string, unknown>,\n result: toolResult.result,\n error: errorText,\n }\n}\n\nfunction getErrorFromResult(result: MessagePart[]): string | undefined {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return undefined\n try {\n const parsed = JSON.parse(textPart.text)\n if (typeof parsed.error === \"string\") {\n return parsed.error\n }\n } catch {\n // Not JSON - only treat as error if it starts with \"Error:\" or \"error:\"\n // This avoids false positives from text containing \"error\" in other contexts\n const trimmed = textPart.text.trim()\n if (trimmed.toLowerCase().startsWith(\"error:\") || trimmed.toLowerCase().startsWith(\"error \")) {\n return textPart.text\n }\n }\n return undefined\n}\n\nfunction parseStringField(result: MessagePart[], field: string): string | undefined {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return undefined\n try {\n const parsed = JSON.parse(textPart.text)\n return typeof parsed[field] === \"string\" ? parsed[field] : undefined\n } catch {\n return undefined\n }\n}\n\nfunction parseNumberField(result: MessagePart[], field: string): number | undefined {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return undefined\n try {\n const parsed = JSON.parse(textPart.text)\n return typeof parsed[field] === \"number\" ? parsed[field] : undefined\n } catch {\n return undefined\n }\n}\n\nfunction parseRemainingTodosFromResult(\n result: MessagePart[],\n): Array<{ id: number; title: string; completed: boolean }> | undefined {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return undefined\n try {\n const parsed = JSON.parse(textPart.text)\n if (Array.isArray(parsed.remainingTodos)) {\n return parsed.remainingTodos.map(\n (t: { id?: number; title?: string; completed?: boolean }, i: number) => ({\n id: typeof t.id === \"number\" ? t.id : i,\n title: typeof t.title === \"string\" ? t.title : \"\",\n completed: typeof t.completed === \"boolean\" ? t.completed : false,\n }),\n )\n }\n } catch {\n // Ignore parse errors\n }\n return undefined\n}\n\nfunction parseTodosFromResult(\n result: MessagePart[],\n): Array<{ id: number; title: string; completed: boolean }> {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return []\n try {\n const parsed = JSON.parse(textPart.text)\n if (Array.isArray(parsed.todos)) {\n return parsed.todos.map(\n (t: { id?: number; title?: string; completed?: boolean }, i: number) => ({\n id: typeof t.id === \"number\" ? t.id : i,\n title: typeof t.title === \"string\" ? t.title : \"\",\n completed: typeof t.completed === \"boolean\" ? t.completed : false,\n }),\n )\n }\n } catch {\n // Ignore parse errors\n }\n return []\n}\n\nfunction parseFileInfoFromResult(result: MessagePart[]):\n | {\n exists: boolean\n name: string\n directory: string\n extension: string | null\n type: \"file\" | \"directory\"\n mimeType: string | null\n size: number\n sizeFormatted: string\n created: string\n modified: string\n accessed: string\n }\n | undefined {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return undefined\n try {\n const parsed = JSON.parse(textPart.text)\n return {\n exists: typeof parsed.exists === \"boolean\" ? parsed.exists : true,\n name: String(parsed.name ?? \"\"),\n directory: String(parsed.directory ?? \"\"),\n extension: typeof parsed.extension === \"string\" ? parsed.extension : null,\n type: parsed.type === \"directory\" ? \"directory\" : \"file\",\n mimeType: typeof parsed.mimeType === \"string\" ? parsed.mimeType : null,\n size: typeof parsed.size === \"number\" ? parsed.size : 0,\n sizeFormatted: String(parsed.sizeFormatted ?? \"\"),\n created: String(parsed.created ?? \"\"),\n modified: String(parsed.modified ?? \"\"),\n accessed: String(parsed.accessed ?? \"\"),\n }\n } catch {\n return undefined\n }\n}\n\nfunction parseListDirectoryFromResult(result: MessagePart[]):\n | Array<{\n name: string\n path: string\n type: \"file\" | \"directory\"\n size: number\n modified: string\n }>\n | undefined {\n const textPart = result.find((p) => p.type === \"textPart\")\n if (!textPart?.text) return undefined\n try {\n const parsed = JSON.parse(textPart.text)\n if (!Array.isArray(parsed.items)) return undefined\n return parsed.items.map(\n (item: {\n name?: string\n path?: string\n type?: string\n size?: number\n modified?: string\n }) => ({\n name: String(item.name ?? \"\"),\n path: String(item.path ?? \"\"),\n type: item.type === \"directory\" ? \"directory\" : \"file\",\n size: typeof item.size === \"number\" ? item.size : 0,\n modified: String(item.modified ?? \"\"),\n }),\n )\n } catch {\n return undefined\n }\n}\n","const SAFE_ENV_VARS = [\n // System\n \"PATH\",\n \"HOME\",\n \"SHELL\",\n \"TERM\",\n \"NODE_PATH\",\n // Proxy\n \"HTTP_PROXY\",\n \"HTTPS_PROXY\",\n \"http_proxy\",\n \"https_proxy\",\n \"NO_PROXY\",\n \"no_proxy\",\n \"PERSTACK_PROXY_URL\",\n \"NPM_CONFIG_PROXY\",\n \"NPM_CONFIG_HTTPS_PROXY\",\n]\nconst PROTECTED_ENV_VARS = new Set([\n \"PATH\",\n \"HOME\",\n \"SHELL\",\n \"NODE_PATH\",\n \"LD_PRELOAD\",\n \"LD_LIBRARY_PATH\",\n \"DYLD_INSERT_LIBRARIES\",\n \"DYLD_LIBRARY_PATH\",\n \"NODE_OPTIONS\",\n \"PYTHONPATH\",\n \"PERL5LIB\",\n \"RUBYLIB\",\n])\nexport function getFilteredEnv(additional?: Record<string, string>): Record<string, string> {\n const filtered: Record<string, string> = {}\n for (const key of SAFE_ENV_VARS) {\n if (process.env[key]) {\n filtered[key] = process.env[key]\n }\n }\n if (additional) {\n for (const [key, value] of Object.entries(additional)) {\n if (!PROTECTED_ENV_VARS.has(key.toUpperCase())) {\n filtered[key] = value\n }\n }\n }\n return filtered\n}\nexport { SAFE_ENV_VARS }\n","import type { PerstackEvent } from \"../schemas/runtime.js\"\nimport { isValidEventType, isValidRuntimeEventType } from \"../schemas/runtime.js\"\n\n/**\n * Validate and parse event filter option\n * @param filter - Array of event type strings to validate\n * @returns The validated filter array\n * @throws Error if any event type is invalid\n */\nexport function validateEventFilter(filter: string[]): string[] {\n const invalid = filter.filter((type) => !isValidEventType(type) && !isValidRuntimeEventType(type))\n\n if (invalid.length > 0) {\n throw new Error(\n `Invalid event type(s): ${invalid.join(\", \")}. ` +\n \"Valid event types are: startRun, completeRun, stopRunByError, callTools, etc. \" +\n \"See documentation for full list.\",\n )\n }\n\n return filter\n}\n\n/**\n * Create a filtered event listener that only emits events of allowed types\n * @param listener - The original event listener to wrap\n * @param allowedTypes - Set of event types to allow through\n * @returns A filtered event listener\n */\nexport function createFilteredEventListener(\n listener: (event: PerstackEvent) => void,\n allowedTypes: Set<string>,\n): (event: PerstackEvent) => void {\n return (event: PerstackEvent) => {\n if (allowedTypes.has(event.type)) {\n listener(event)\n }\n }\n}\n","import type { ZodError, ZodSchema } from \"zod\"\n\nexport function formatZodError(error: ZodError): string {\n const issues = error.issues.map((issue) => {\n const path = issue.path.length > 0 ? `${issue.path.join(\".\")}: ` : \"\"\n return ` - ${path}${issue.message}`\n })\n return `Validation failed:\\n${issues.join(\"\\n\")}`\n}\n\nexport function parseWithFriendlyError<T>(\n schema: ZodSchema<T>,\n data: unknown,\n context?: string,\n): T {\n const result = schema.safeParse(data)\n if (result.success) {\n return result.data\n }\n const prefix = context ? `${context}: ` : \"\"\n throw new Error(`${prefix}${formatZodError(result.error)}`)\n}\n"]}
|