@perstack/core 0.0.39 → 0.0.41

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.
@@ -1040,6 +1040,11 @@ declare const providerToolOptionsSchema: z.ZodOptional<z.ZodObject<{
1040
1040
  type ProviderToolOptions = z.infer<typeof providerToolOptionsSchema>;
1041
1041
  declare function hasCustomProviderSkills(skills?: AnthropicProviderSkill[]): boolean;
1042
1042
 
1043
+ type RuntimeVersion = "v1.0";
1044
+ declare const runtimeVersionSchema: z.ZodEnum<{
1045
+ "v1.0": "v1.0";
1046
+ }>;
1047
+
1043
1048
  /** MCP skill using stdio transport */
1044
1049
  interface McpStdioSkill {
1045
1050
  type: "mcpStdioSkill";
@@ -1210,6 +1215,8 @@ interface Expert {
1210
1215
  delegates: string[];
1211
1216
  /** Tags for categorization and discovery */
1212
1217
  tags: string[];
1218
+ /** Minimum runtime version required to run this Expert */
1219
+ minRuntimeVersion: RuntimeVersion;
1213
1220
  /** Provider-specific tool names to enable (e.g., "webSearch", "codeExecution") */
1214
1221
  providerTools?: string[];
1215
1222
  /** Anthropic Agent Skills configuration */
@@ -1324,6 +1331,9 @@ declare const expertSchema: z.ZodObject<{
1324
1331
  }>>>;
1325
1332
  delegates: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
1326
1333
  tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
1334
+ minRuntimeVersion: z.ZodDefault<z.ZodEnum<{
1335
+ "v1.0": "v1.0";
1336
+ }>>;
1327
1337
  providerTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
1328
1338
  providerSkills: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1329
1339
  type: z.ZodLiteral<"builtin">;
@@ -1521,7 +1531,7 @@ interface PerstackConfigExpert {
1521
1531
  /** Semantic version */
1522
1532
  version?: string;
1523
1533
  /** Minimum runtime version required */
1524
- minRuntimeVersion?: string;
1534
+ minRuntimeVersion?: RuntimeVersion;
1525
1535
  /** Description of the Expert */
1526
1536
  description?: string;
1527
1537
  /** System instruction */
@@ -1663,7 +1673,9 @@ declare const perstackConfigSchema: z.ZodObject<{
1663
1673
  timeout: z.ZodOptional<z.ZodNumber>;
1664
1674
  experts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1665
1675
  version: z.ZodOptional<z.ZodString>;
1666
- minRuntimeVersion: z.ZodOptional<z.ZodString>;
1676
+ minRuntimeVersion: z.ZodOptional<z.ZodEnum<{
1677
+ "v1.0": "v1.0";
1678
+ }>>;
1667
1679
  description: z.ZodOptional<z.ZodString>;
1668
1680
  instruction: z.ZodString;
1669
1681
  skills: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -2581,6 +2593,9 @@ declare const runSettingSchema: z.ZodObject<{
2581
2593
  }>>>;
2582
2594
  delegates: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
2583
2595
  tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
2596
+ minRuntimeVersion: z.ZodDefault<z.ZodEnum<{
2597
+ "v1.0": "v1.0";
2598
+ }>>;
2584
2599
  providerTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
2585
2600
  providerSkills: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2586
2601
  type: z.ZodLiteral<"builtin">;
@@ -2810,6 +2825,9 @@ declare const runParamsSchema: z.ZodObject<{
2810
2825
  }>>>;
2811
2826
  delegates: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
2812
2827
  tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
2828
+ minRuntimeVersion: z.ZodDefault<z.ZodEnum<{
2829
+ "v1.0": "v1.0";
2830
+ }>>;
2813
2831
  providerTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
2814
2832
  providerSkills: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2815
2833
  type: z.ZodLiteral<"builtin">;
@@ -2867,6 +2885,7 @@ declare const runParamsSchema: z.ZodObject<{
2867
2885
  };
2868
2886
  delegates: string[];
2869
2887
  tags: string[];
2888
+ minRuntimeVersion: "v1.0";
2870
2889
  description?: string | undefined;
2871
2890
  providerTools?: string[] | undefined;
2872
2891
  providerSkills?: ({
@@ -2932,6 +2951,7 @@ declare const runParamsSchema: z.ZodObject<{
2932
2951
  };
2933
2952
  delegates: string[];
2934
2953
  tags: string[];
2954
+ minRuntimeVersion: "v1.0";
2935
2955
  description?: string | undefined;
2936
2956
  providerToolOptions?: {
2937
2957
  webSearch?: {
@@ -6247,6 +6267,7 @@ interface Job {
6247
6267
  id: string;
6248
6268
  status: JobStatus;
6249
6269
  coordinatorExpertKey: string;
6270
+ runtimeVersion: RuntimeVersion;
6250
6271
  totalSteps: number;
6251
6272
  maxSteps?: number;
6252
6273
  usage: Usage;
@@ -6263,6 +6284,9 @@ declare const jobSchema: z.ZodObject<{
6263
6284
  stoppedByMaxSteps: "stoppedByMaxSteps";
6264
6285
  }>;
6265
6286
  coordinatorExpertKey: z.ZodString;
6287
+ runtimeVersion: z.ZodEnum<{
6288
+ "v1.0": "v1.0";
6289
+ }>;
6266
6290
  totalSteps: z.ZodNumber;
6267
6291
  maxSteps: z.ZodOptional<z.ZodNumber>;
6268
6292
  usage: z.ZodObject<{
@@ -6738,4 +6762,4 @@ declare function createFilteredEventListener(listener: (event: PerstackEvent) =>
6738
6762
  declare function formatZodError(error: ZodError): string;
6739
6763
  declare function parseWithFriendlyError<T>(schema: ZodSchema<T>, data: unknown, context?: string): T;
6740
6764
 
6741
- export { type Activity, type ActivityOrGroup, type ActivityType, type AdapterRunParams, type AdapterRunResult, type AmazonBedrockProviderConfig, type AnthropicProviderConfig, type AnthropicProviderSkill, type AnthropicProviderToolName, type AppendTextFileActivity, type AttemptCompletionActivity, type AzureOpenAIProviderToolName, type AzureOpenAiProviderConfig, BASE_SKILL_PREFIX, type BaseEvent, type BasePart, type BuiltinAnthropicSkill, type CallToolResultContent, type Checkpoint, type CheckpointStatus, type ClearTodoActivity, type CommandOptions, type CompleteActivity, type CreateCheckpointParams, type CreateDirectoryActivity, type CustomAnthropicSkill, type DeepseekProviderConfig, type DelegateActivity, type DelegateSkillManagerParams, type DelegationCompleteActivity, type DelegationTarget, type DeleteDirectoryActivity, type DeleteFileActivity, type EditTextFileActivity, type ErrorActivity, type EventForType, type EventMeta, type EventType, type ExecActivity, type Expert, type ExpertMessage, type ExpertStateEvent, type ExpertStateEventType, type FileBinaryPart, type FileInlinePart, type FileUrlPart, type GeneralToolActivity, type GetActivitiesParams, type GetFileInfoActivity, type GoogleGenerativeAiProviderConfig, type GoogleProviderToolName, type GoogleVertexProviderConfig, type Headers, type ImageBinaryPart, type ImageInlinePart, type ImageUrlPart, type InstructionMessage, type InteractiveSkill, type InteractiveSkillManagerParams, type InteractiveTool, type InteractiveToolActivity, type Job, type JobStatus, type ListDirectoryActivity, type Lockfile, type LockfileExpert, type LockfileToolDefinition, type McpSkillManagerParams, type McpSseSkill, type McpStdioSkill, type Message, type MessagePart, type MoveFileActivity, type OllamaProviderConfig, type OpenAIProviderToolName, type OpenAiProviderConfig, type ParallelActivitiesGroup, type PerstackConfig, type PerstackConfigExpert, type PerstackConfigSkill, type PerstackEvent, type PrerequisiteError, type PrerequisiteResult, type ProviderConfig, type ProviderName, type ProviderTable, type ProviderToolOptions, type QueryActivity, type ReadImageFileActivity, type ReadPdfFileActivity, type ReadTextFileActivity, type ReasoningBudget, type Resource, type RetryActivity, type RunCommandInput, type RunEvent, type RunInput, type RunParams, type RunParamsInput, type RunSetting, type RuntimeAdapter, type RuntimeEvent, type RuntimeEventForType, type RuntimeEventType, type RuntimeExpertConfig, type RuntimeName, SAFE_ENV_VARS, type Skill, type SkillManagerParams, type SkillType, type StartCommandInput, type Step, type Storage, type StreamingEvent, type StreamingEventType, type TextPart, type ThinkingPart, type TodoActivity, type ToolCall, type ToolCallPart, type ToolDefinition, type ToolMessage, type ToolResult, type ToolResultPart, type Usage, type UserMessage, type VertexProviderToolName, type WriteTextFileActivity, activityOrGroupSchema, activitySchema, amazonBedrockProviderConfigSchema, anthropicProviderConfigSchema, anthropicProviderSkillSchema, anthropicProviderToolNameSchema, appendTextFileActivitySchema, attemptCompletion, attemptCompletionActivitySchema, azureOpenAIProviderToolNameSchema, azureOpenAiProviderConfigSchema, basePartSchema, builtinAnthropicSkillSchema, callTools, checkpointSchema, checkpointStatusSchema, clearTodoActivitySchema, completeActivitySchema, completeRun, continueToNextStep, createBaseToolActivity, createCallToolsEvent, createCompleteRunEvent, createDirectoryActivitySchema, createEmptyUsage, createEvent, createFilteredEventListener, createGeneralToolActivity, createNormalizedCheckpoint, createResolveToolResultsEvent, createRuntimeEvent, createRuntimeInitEvent, createStartRunEvent, createStreamingEvent, createToolMessage, customAnthropicSkillSchema, deepseekProviderConfigSchema, defaultMaxRetries, defaultMaxSteps, defaultPerstackApiBaseUrl, defaultReasoningBudget, defaultTimeout, delegateActivitySchema, delegationCompleteActivitySchema, delegationTargetSchema, deleteDirectoryActivitySchema, deleteFileActivitySchema, domainPatternSchema, editTextFileActivitySchema, envNameRegex, errorActivitySchema, execActivitySchema, expertKeyRegex, expertMessageSchema, expertNameRegex, expertSchema, expertVersionRegex, fileBinaryPartSchema, fileInlinePartSchema, fileSearchOptionsSchema, fileUrlPartSchema, finishMcpTools, finishToolCall, formatZodError, generalToolActivitySchema, getActivities, getAdapter, getFileInfoActivitySchema, getFilteredEnv, getRegisteredRuntimes, googleGenerativeAiProviderConfigSchema, googleProviderToolNameSchema, googleVertexProviderConfigSchema, hasCustomProviderSkills, headersSchema, imageBinaryPartSchema, imageInlinePartSchema, imageUrlPartSchema, instructionMessageSchema, interactiveSkillSchema, interactiveToolActivitySchema, interactiveToolSchema, isAdapterAvailable, isValidEventType, isValidRuntimeEventType, jobSchema, jobStatusSchema, knownModels, listDirectoryActivitySchema, lockfileExpertSchema, lockfileSchema, lockfileToolDefinitionSchema, maxApplicationNameLength, maxCheckpointToolCallIdLength, maxEnvNameLength, maxExpertDelegateItems, maxExpertDescriptionLength, maxExpertInstructionLength, maxExpertJobFileNameLength, maxExpertJobQueryLength, maxExpertKeyLength, maxExpertNameLength, maxExpertSkillItems, maxExpertTagItems, maxExpertVersionTagLength, maxOrganizationNameLength, maxSkillDescriptionLength, maxSkillEndpointLength, maxSkillInputJsonSchemaLength, maxSkillNameLength, maxSkillPickOmitItems, maxSkillRequiredEnvItems, maxSkillRuleLength, maxSkillToolItems, maxSkillToolNameLength, mcpSseSkillSchema, mcpStdioSkillSchema, messagePartSchema, messageSchema, moveFileActivitySchema, ollamaProviderConfigSchema, openAiProviderConfigSchema, openaiProviderToolNameSchema, organizationNameRegex, packageWithVersionRegex, parallelActivitiesGroupSchema, parseExpertKey, parseWithFriendlyError, perstackConfigSchema, proceedToInteractiveTools, providerConfigSchema, providerNameSchema, providerTableSchema, providerToolOptionsSchema, queryActivitySchema, readImageFileActivitySchema, readPdfFileActivitySchema, readTextFileActivitySchema, reasoningBudgetSchema, registerAdapter, resolveToolResults, resumeFromStop, resumeToolCalls, retry, retryActivitySchema, runCommandInputSchema, runParamsSchema, runSettingSchema, runtimeNameSchema, skillSchema, skipDelegates, startCommandInputSchema, startGeneration, startRun, stepSchema, stopRunByDelegate, stopRunByError, stopRunByExceededMaxSteps, stopRunByInteractiveTool, tagNameRegex, textPartSchema, thinkingPartSchema, todoActivitySchema, toolCallPartSchema, toolCallSchema, toolMessageSchema, toolResultPartSchema, toolResultSchema, urlSafeRegex, usageSchema, userMessageSchema, validateEventFilter, vertexProviderToolNameSchema, webFetchOptionsSchema, webSearchOptionsSchema, writeTextFileActivitySchema };
6765
+ export { type Activity, type ActivityOrGroup, type ActivityType, type AdapterRunParams, type AdapterRunResult, type AmazonBedrockProviderConfig, type AnthropicProviderConfig, type AnthropicProviderSkill, type AnthropicProviderToolName, type AppendTextFileActivity, type AttemptCompletionActivity, type AzureOpenAIProviderToolName, type AzureOpenAiProviderConfig, BASE_SKILL_PREFIX, type BaseEvent, type BasePart, type BuiltinAnthropicSkill, type CallToolResultContent, type Checkpoint, type CheckpointStatus, type ClearTodoActivity, type CommandOptions, type CompleteActivity, type CreateCheckpointParams, type CreateDirectoryActivity, type CustomAnthropicSkill, type DeepseekProviderConfig, type DelegateActivity, type DelegateSkillManagerParams, type DelegationCompleteActivity, type DelegationTarget, type DeleteDirectoryActivity, type DeleteFileActivity, type EditTextFileActivity, type ErrorActivity, type EventForType, type EventMeta, type EventType, type ExecActivity, type Expert, type ExpertMessage, type ExpertStateEvent, type ExpertStateEventType, type FileBinaryPart, type FileInlinePart, type FileUrlPart, type GeneralToolActivity, type GetActivitiesParams, type GetFileInfoActivity, type GoogleGenerativeAiProviderConfig, type GoogleProviderToolName, type GoogleVertexProviderConfig, type Headers, type ImageBinaryPart, type ImageInlinePart, type ImageUrlPart, type InstructionMessage, type InteractiveSkill, type InteractiveSkillManagerParams, type InteractiveTool, type InteractiveToolActivity, type Job, type JobStatus, type ListDirectoryActivity, type Lockfile, type LockfileExpert, type LockfileToolDefinition, type McpSkillManagerParams, type McpSseSkill, type McpStdioSkill, type Message, type MessagePart, type MoveFileActivity, type OllamaProviderConfig, type OpenAIProviderToolName, type OpenAiProviderConfig, type ParallelActivitiesGroup, type PerstackConfig, type PerstackConfigExpert, type PerstackConfigSkill, type PerstackEvent, type PrerequisiteError, type PrerequisiteResult, type ProviderConfig, type ProviderName, type ProviderTable, type ProviderToolOptions, type QueryActivity, type ReadImageFileActivity, type ReadPdfFileActivity, type ReadTextFileActivity, type ReasoningBudget, type Resource, type RetryActivity, type RunCommandInput, type RunEvent, type RunInput, type RunParams, type RunParamsInput, type RunSetting, type RuntimeAdapter, type RuntimeEvent, type RuntimeEventForType, type RuntimeEventType, type RuntimeExpertConfig, type RuntimeName, type RuntimeVersion, SAFE_ENV_VARS, type Skill, type SkillManagerParams, type SkillType, type StartCommandInput, type Step, type Storage, type StreamingEvent, type StreamingEventType, type TextPart, type ThinkingPart, type TodoActivity, type ToolCall, type ToolCallPart, type ToolDefinition, type ToolMessage, type ToolResult, type ToolResultPart, type Usage, type UserMessage, type VertexProviderToolName, type WriteTextFileActivity, activityOrGroupSchema, activitySchema, amazonBedrockProviderConfigSchema, anthropicProviderConfigSchema, anthropicProviderSkillSchema, anthropicProviderToolNameSchema, appendTextFileActivitySchema, attemptCompletion, attemptCompletionActivitySchema, azureOpenAIProviderToolNameSchema, azureOpenAiProviderConfigSchema, basePartSchema, builtinAnthropicSkillSchema, callTools, checkpointSchema, checkpointStatusSchema, clearTodoActivitySchema, completeActivitySchema, completeRun, continueToNextStep, createBaseToolActivity, createCallToolsEvent, createCompleteRunEvent, createDirectoryActivitySchema, createEmptyUsage, createEvent, createFilteredEventListener, createGeneralToolActivity, createNormalizedCheckpoint, createResolveToolResultsEvent, createRuntimeEvent, createRuntimeInitEvent, createStartRunEvent, createStreamingEvent, createToolMessage, customAnthropicSkillSchema, deepseekProviderConfigSchema, defaultMaxRetries, defaultMaxSteps, defaultPerstackApiBaseUrl, defaultReasoningBudget, defaultTimeout, delegateActivitySchema, delegationCompleteActivitySchema, delegationTargetSchema, deleteDirectoryActivitySchema, deleteFileActivitySchema, domainPatternSchema, editTextFileActivitySchema, envNameRegex, errorActivitySchema, execActivitySchema, expertKeyRegex, expertMessageSchema, expertNameRegex, expertSchema, expertVersionRegex, fileBinaryPartSchema, fileInlinePartSchema, fileSearchOptionsSchema, fileUrlPartSchema, finishMcpTools, finishToolCall, formatZodError, generalToolActivitySchema, getActivities, getAdapter, getFileInfoActivitySchema, getFilteredEnv, getRegisteredRuntimes, googleGenerativeAiProviderConfigSchema, googleProviderToolNameSchema, googleVertexProviderConfigSchema, hasCustomProviderSkills, headersSchema, imageBinaryPartSchema, imageInlinePartSchema, imageUrlPartSchema, instructionMessageSchema, interactiveSkillSchema, interactiveToolActivitySchema, interactiveToolSchema, isAdapterAvailable, isValidEventType, isValidRuntimeEventType, jobSchema, jobStatusSchema, knownModels, listDirectoryActivitySchema, lockfileExpertSchema, lockfileSchema, lockfileToolDefinitionSchema, maxApplicationNameLength, maxCheckpointToolCallIdLength, maxEnvNameLength, maxExpertDelegateItems, maxExpertDescriptionLength, maxExpertInstructionLength, maxExpertJobFileNameLength, maxExpertJobQueryLength, maxExpertKeyLength, maxExpertNameLength, maxExpertSkillItems, maxExpertTagItems, maxExpertVersionTagLength, maxOrganizationNameLength, maxSkillDescriptionLength, maxSkillEndpointLength, maxSkillInputJsonSchemaLength, maxSkillNameLength, maxSkillPickOmitItems, maxSkillRequiredEnvItems, maxSkillRuleLength, maxSkillToolItems, maxSkillToolNameLength, mcpSseSkillSchema, mcpStdioSkillSchema, messagePartSchema, messageSchema, moveFileActivitySchema, ollamaProviderConfigSchema, openAiProviderConfigSchema, openaiProviderToolNameSchema, organizationNameRegex, packageWithVersionRegex, parallelActivitiesGroupSchema, parseExpertKey, parseWithFriendlyError, perstackConfigSchema, proceedToInteractiveTools, providerConfigSchema, providerNameSchema, providerTableSchema, providerToolOptionsSchema, queryActivitySchema, readImageFileActivitySchema, readPdfFileActivitySchema, readTextFileActivitySchema, reasoningBudgetSchema, registerAdapter, resolveToolResults, resumeFromStop, resumeToolCalls, retry, retryActivitySchema, runCommandInputSchema, runParamsSchema, runSettingSchema, runtimeNameSchema, runtimeVersionSchema, skillSchema, skipDelegates, startCommandInputSchema, startGeneration, startRun, stepSchema, stopRunByDelegate, stopRunByError, stopRunByExceededMaxSteps, stopRunByInteractiveTool, tagNameRegex, textPartSchema, thinkingPartSchema, todoActivitySchema, toolCallPartSchema, toolCallSchema, toolMessageSchema, toolResultPartSchema, toolResultSchema, urlSafeRegex, usageSchema, userMessageSchema, validateEventFilter, vertexProviderToolNameSchema, webFetchOptionsSchema, webSearchOptionsSchema, writeTextFileActivitySchema };
package/dist/src/index.js CHANGED
@@ -831,6 +831,7 @@ var providerToolOptionsSchema = z.object({
831
831
  function hasCustomProviderSkills(skills) {
832
832
  return skills?.some((skill) => skill.type === "custom") ?? false;
833
833
  }
834
+ var runtimeVersionSchema = z.enum(["v1.0"]);
834
835
  function isPrivateOrLocalIP(hostname) {
835
836
  if (hostname === "localhost" || hostname === "127.0.0.1" || hostname === "::1" || hostname === "0.0.0.0") {
836
837
  return true;
@@ -957,6 +958,7 @@ var expertSchema = z.object({
957
958
  }),
958
959
  delegates: z.array(z.string().regex(expertKeyRegex).min(1)).optional().default([]),
959
960
  tags: z.array(z.string().regex(tagNameRegex).min(1)).optional().default([]),
961
+ minRuntimeVersion: runtimeVersionSchema.default("v1.0"),
960
962
  providerTools: z.array(z.string()).optional(),
961
963
  providerSkills: z.array(anthropicProviderSkillSchema).optional(),
962
964
  providerToolOptions: providerToolOptionsSchema
@@ -972,6 +974,7 @@ var jobSchema = z.object({
972
974
  id: z.string(),
973
975
  status: jobStatusSchema,
974
976
  coordinatorExpertKey: z.string(),
977
+ runtimeVersion: runtimeVersionSchema,
975
978
  totalSteps: z.number(),
976
979
  maxSteps: z.number().optional(),
977
980
  usage: usageSchema,
@@ -1218,7 +1221,7 @@ var perstackConfigSchema = z.object({
1218
1221
  z.string(),
1219
1222
  z.object({
1220
1223
  version: z.string().optional(),
1221
- minRuntimeVersion: z.string().optional(),
1224
+ minRuntimeVersion: runtimeVersionSchema.optional(),
1222
1225
  description: z.string().optional(),
1223
1226
  instruction: z.string(),
1224
1227
  skills: z.record(
@@ -2070,6 +2073,6 @@ function parseWithFriendlyError(schema, data, context) {
2070
2073
  throw new Error(`${prefix}${formatZodError(result.error)}`);
2071
2074
  }
2072
2075
 
2073
- export { BASE_SKILL_PREFIX, SAFE_ENV_VARS, activityOrGroupSchema, activitySchema, amazonBedrockProviderConfigSchema, anthropicProviderConfigSchema, anthropicProviderSkillSchema, anthropicProviderToolNameSchema, appendTextFileActivitySchema, attemptCompletion, attemptCompletionActivitySchema, azureOpenAIProviderToolNameSchema, azureOpenAiProviderConfigSchema, basePartSchema, builtinAnthropicSkillSchema, callTools, checkpointSchema, checkpointStatusSchema, clearTodoActivitySchema, completeActivitySchema, completeRun, continueToNextStep, createBaseToolActivity, createCallToolsEvent, createCompleteRunEvent, createDirectoryActivitySchema, createEmptyUsage, createEvent, createFilteredEventListener, createGeneralToolActivity, createNormalizedCheckpoint, createResolveToolResultsEvent, createRuntimeEvent, createRuntimeInitEvent, createStartRunEvent, createStreamingEvent, createToolMessage, customAnthropicSkillSchema, deepseekProviderConfigSchema, defaultMaxRetries, defaultMaxSteps, defaultPerstackApiBaseUrl, defaultReasoningBudget, defaultTimeout, delegateActivitySchema, delegationCompleteActivitySchema, delegationTargetSchema, deleteDirectoryActivitySchema, deleteFileActivitySchema, domainPatternSchema, editTextFileActivitySchema, envNameRegex, errorActivitySchema, execActivitySchema, expertKeyRegex, expertMessageSchema, expertNameRegex, expertSchema, expertVersionRegex, fileBinaryPartSchema, fileInlinePartSchema, fileSearchOptionsSchema, fileUrlPartSchema, finishMcpTools, finishToolCall, formatZodError, generalToolActivitySchema, getActivities, getAdapter, getFileInfoActivitySchema, getFilteredEnv, getRegisteredRuntimes, googleGenerativeAiProviderConfigSchema, googleProviderToolNameSchema, googleVertexProviderConfigSchema, hasCustomProviderSkills, headersSchema, imageBinaryPartSchema, imageInlinePartSchema, imageUrlPartSchema, instructionMessageSchema, interactiveSkillSchema, interactiveToolActivitySchema, interactiveToolSchema, isAdapterAvailable, isValidEventType, isValidRuntimeEventType, jobSchema, jobStatusSchema, knownModels, listDirectoryActivitySchema, lockfileExpertSchema, lockfileSchema, lockfileToolDefinitionSchema, maxApplicationNameLength, maxCheckpointToolCallIdLength, maxEnvNameLength, maxExpertDelegateItems, maxExpertDescriptionLength, maxExpertInstructionLength, maxExpertJobFileNameLength, maxExpertJobQueryLength, maxExpertKeyLength, maxExpertNameLength, maxExpertSkillItems, maxExpertTagItems, maxExpertVersionTagLength, maxOrganizationNameLength, maxSkillDescriptionLength, maxSkillEndpointLength, maxSkillInputJsonSchemaLength, maxSkillNameLength, maxSkillPickOmitItems, maxSkillRequiredEnvItems, maxSkillRuleLength, maxSkillToolItems, maxSkillToolNameLength, mcpSseSkillSchema, mcpStdioSkillSchema, messagePartSchema, messageSchema, moveFileActivitySchema, ollamaProviderConfigSchema, openAiProviderConfigSchema, openaiProviderToolNameSchema, organizationNameRegex, packageWithVersionRegex, parallelActivitiesGroupSchema, parseExpertKey, parseWithFriendlyError, perstackConfigSchema, proceedToInteractiveTools, providerConfigSchema, providerNameSchema, providerTableSchema, providerToolOptionsSchema, queryActivitySchema, readImageFileActivitySchema, readPdfFileActivitySchema, readTextFileActivitySchema, reasoningBudgetSchema, registerAdapter, resolveToolResults, resumeFromStop, resumeToolCalls, retry, retryActivitySchema, runCommandInputSchema, runParamsSchema, runSettingSchema, runtimeNameSchema, skillSchema, skipDelegates, startCommandInputSchema, startGeneration, startRun, stepSchema, stopRunByDelegate, stopRunByError, stopRunByExceededMaxSteps, stopRunByInteractiveTool, tagNameRegex, textPartSchema, thinkingPartSchema, todoActivitySchema, toolCallPartSchema, toolCallSchema, toolMessageSchema, toolResultPartSchema, toolResultSchema, urlSafeRegex, usageSchema, userMessageSchema, validateEventFilter, vertexProviderToolNameSchema, webFetchOptionsSchema, webSearchOptionsSchema, writeTextFileActivitySchema };
2076
+ export { BASE_SKILL_PREFIX, SAFE_ENV_VARS, activityOrGroupSchema, activitySchema, amazonBedrockProviderConfigSchema, anthropicProviderConfigSchema, anthropicProviderSkillSchema, anthropicProviderToolNameSchema, appendTextFileActivitySchema, attemptCompletion, attemptCompletionActivitySchema, azureOpenAIProviderToolNameSchema, azureOpenAiProviderConfigSchema, basePartSchema, builtinAnthropicSkillSchema, callTools, checkpointSchema, checkpointStatusSchema, clearTodoActivitySchema, completeActivitySchema, completeRun, continueToNextStep, createBaseToolActivity, createCallToolsEvent, createCompleteRunEvent, createDirectoryActivitySchema, createEmptyUsage, createEvent, createFilteredEventListener, createGeneralToolActivity, createNormalizedCheckpoint, createResolveToolResultsEvent, createRuntimeEvent, createRuntimeInitEvent, createStartRunEvent, createStreamingEvent, createToolMessage, customAnthropicSkillSchema, deepseekProviderConfigSchema, defaultMaxRetries, defaultMaxSteps, defaultPerstackApiBaseUrl, defaultReasoningBudget, defaultTimeout, delegateActivitySchema, delegationCompleteActivitySchema, delegationTargetSchema, deleteDirectoryActivitySchema, deleteFileActivitySchema, domainPatternSchema, editTextFileActivitySchema, envNameRegex, errorActivitySchema, execActivitySchema, expertKeyRegex, expertMessageSchema, expertNameRegex, expertSchema, expertVersionRegex, fileBinaryPartSchema, fileInlinePartSchema, fileSearchOptionsSchema, fileUrlPartSchema, finishMcpTools, finishToolCall, formatZodError, generalToolActivitySchema, getActivities, getAdapter, getFileInfoActivitySchema, getFilteredEnv, getRegisteredRuntimes, googleGenerativeAiProviderConfigSchema, googleProviderToolNameSchema, googleVertexProviderConfigSchema, hasCustomProviderSkills, headersSchema, imageBinaryPartSchema, imageInlinePartSchema, imageUrlPartSchema, instructionMessageSchema, interactiveSkillSchema, interactiveToolActivitySchema, interactiveToolSchema, isAdapterAvailable, isValidEventType, isValidRuntimeEventType, jobSchema, jobStatusSchema, knownModels, listDirectoryActivitySchema, lockfileExpertSchema, lockfileSchema, lockfileToolDefinitionSchema, maxApplicationNameLength, maxCheckpointToolCallIdLength, maxEnvNameLength, maxExpertDelegateItems, maxExpertDescriptionLength, maxExpertInstructionLength, maxExpertJobFileNameLength, maxExpertJobQueryLength, maxExpertKeyLength, maxExpertNameLength, maxExpertSkillItems, maxExpertTagItems, maxExpertVersionTagLength, maxOrganizationNameLength, maxSkillDescriptionLength, maxSkillEndpointLength, maxSkillInputJsonSchemaLength, maxSkillNameLength, maxSkillPickOmitItems, maxSkillRequiredEnvItems, maxSkillRuleLength, maxSkillToolItems, maxSkillToolNameLength, mcpSseSkillSchema, mcpStdioSkillSchema, messagePartSchema, messageSchema, moveFileActivitySchema, ollamaProviderConfigSchema, openAiProviderConfigSchema, openaiProviderToolNameSchema, organizationNameRegex, packageWithVersionRegex, parallelActivitiesGroupSchema, parseExpertKey, parseWithFriendlyError, perstackConfigSchema, proceedToInteractiveTools, providerConfigSchema, providerNameSchema, providerTableSchema, providerToolOptionsSchema, queryActivitySchema, readImageFileActivitySchema, readPdfFileActivitySchema, readTextFileActivitySchema, reasoningBudgetSchema, registerAdapter, resolveToolResults, resumeFromStop, resumeToolCalls, retry, retryActivitySchema, runCommandInputSchema, runParamsSchema, runSettingSchema, runtimeNameSchema, runtimeVersionSchema, skillSchema, skipDelegates, startCommandInputSchema, startGeneration, startRun, stepSchema, stopRunByDelegate, stopRunByError, stopRunByExceededMaxSteps, stopRunByInteractiveTool, tagNameRegex, textPartSchema, thinkingPartSchema, todoActivitySchema, toolCallPartSchema, toolCallSchema, toolMessageSchema, toolResultPartSchema, toolResultSchema, urlSafeRegex, usageSchema, userMessageSchema, validateEventFilter, vertexProviderToolNameSchema, webFetchOptionsSchema, webSearchOptionsSchema, writeTextFileActivitySchema };
2074
2077
  //# sourceMappingURL=index.js.map
2075
2078
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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","result","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 .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 // Generate QueryActivity for first step (parity with processRunEventToActivity)\n let queryActivity: ActivityOrGroup | undefined\n if (stepNumber === 1 && step.inputMessages) {\n const userMessage = step.inputMessages.find((m) => m.type === \"userMessage\")\n if (userMessage) {\n const textPart = userMessage.contents.find((c) => c.type === \"textPart\")\n if (textPart && \"text\" in textPart) {\n queryActivity = {\n type: \"query\",\n id: \"\",\n expertKey,\n runId,\n text: textPart.text,\n }\n }\n }\n }\n\n const prependQuery = (result: ActivityOrGroup[]): ActivityOrGroup[] =>\n queryActivity ? [queryActivity, ...result] : result\n\n // Error status - use checkpoint error information\n if (status === \"stoppedByError\") {\n return prependQuery([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 prependQuery([\n createRetryActivity(\n step.newMessages,\n reasoning,\n \"Delegate status but no delegation targets\",\n ),\n ])\n }\n const delegateActivities = delegateTo.map((d) => createDelegateActivity(d, reasoning))\n return prependQuery(\n wrapInGroupIfParallel(delegateActivities, reasoning, expertKey, runId, stepNumber),\n )\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 prependQuery([createRetryActivity(step.newMessages, reasoning)])\n }\n const interactiveActivities = toolCalls.map((tc) =>\n createInteractiveToolActivity(tc.skillName, tc.toolName, tc, reasoning),\n )\n return prependQuery(\n wrapInGroupIfParallel(interactiveActivities, reasoning, expertKey, runId, stepNumber),\n )\n }\n\n // Normal tool activities - may be parallel\n const toolCalls = step.toolCalls ?? []\n const toolResults = step.toolResults ?? []\n\n // For completed status with no tool calls, return CompleteActivity only\n if (toolCalls.length === 0) {\n if (status === \"completed\") {\n return prependQuery([createCompleteActivity(step.newMessages, reasoning)])\n }\n return prependQuery([createRetryActivity(step.newMessages, reasoning)])\n }\n\n const toolActivities: 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 toolActivities.push(createBaseToolActivity(toolName, toolCall, toolResult, reasoning))\n } else {\n toolActivities.push(\n createGeneralToolActivity(skillName, toolName, toolCall, toolResult, reasoning),\n )\n }\n }\n\n if (toolActivities.length === 0) {\n if (status === \"completed\") {\n return prependQuery([createCompleteActivity(step.newMessages, reasoning)])\n }\n return prependQuery([createRetryActivity(step.newMessages, reasoning)])\n }\n\n const result = wrapInGroupIfParallel(toolActivities, reasoning, expertKey, runId, stepNumber)\n\n // Append CompleteActivity for completed status\n if (status === \"completed\") {\n result.push(createCompleteActivity(step.newMessages, undefined))\n }\n\n return prependQuery(result)\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/runtime-version.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","result","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\nexport type RuntimeVersion = \"v1.0\"\n\nexport const runtimeVersionSchema = z.enum([\"v1.0\"])\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 { RuntimeVersion } from \"./runtime-version.js\"\nimport { runtimeVersionSchema } from \"./runtime-version.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 /** Minimum runtime version required to run this Expert */\n minRuntimeVersion: RuntimeVersion\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 .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 minRuntimeVersion: runtimeVersionSchema.default(\"v1.0\"),\n providerTools: z.array(z.string()).optional(),\n providerSkills: z.array(anthropicProviderSkillSchema).optional(),\n providerToolOptions: providerToolOptionsSchema,\n})\n","import { z } from \"zod\"\nimport type { RuntimeVersion } from \"./runtime-version.js\"\nimport { runtimeVersionSchema } from \"./runtime-version.js\"\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 runtimeVersion: RuntimeVersion\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 runtimeVersion: runtimeVersionSchema,\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\"\nimport type { RuntimeVersion } from \"./runtime-version.js\"\nimport { runtimeVersionSchema } from \"./runtime-version.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?: RuntimeVersion\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: runtimeVersionSchema.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 // Generate QueryActivity for first step (parity with processRunEventToActivity)\n let queryActivity: ActivityOrGroup | undefined\n if (stepNumber === 1 && step.inputMessages) {\n const userMessage = step.inputMessages.find((m) => m.type === \"userMessage\")\n if (userMessage) {\n const textPart = userMessage.contents.find((c) => c.type === \"textPart\")\n if (textPart && \"text\" in textPart) {\n queryActivity = {\n type: \"query\",\n id: \"\",\n expertKey,\n runId,\n text: textPart.text,\n }\n }\n }\n }\n\n const prependQuery = (result: ActivityOrGroup[]): ActivityOrGroup[] =>\n queryActivity ? [queryActivity, ...result] : result\n\n // Error status - use checkpoint error information\n if (status === \"stoppedByError\") {\n return prependQuery([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 prependQuery([\n createRetryActivity(\n step.newMessages,\n reasoning,\n \"Delegate status but no delegation targets\",\n ),\n ])\n }\n const delegateActivities = delegateTo.map((d) => createDelegateActivity(d, reasoning))\n return prependQuery(\n wrapInGroupIfParallel(delegateActivities, reasoning, expertKey, runId, stepNumber),\n )\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 prependQuery([createRetryActivity(step.newMessages, reasoning)])\n }\n const interactiveActivities = toolCalls.map((tc) =>\n createInteractiveToolActivity(tc.skillName, tc.toolName, tc, reasoning),\n )\n return prependQuery(\n wrapInGroupIfParallel(interactiveActivities, reasoning, expertKey, runId, stepNumber),\n )\n }\n\n // Normal tool activities - may be parallel\n const toolCalls = step.toolCalls ?? []\n const toolResults = step.toolResults ?? []\n\n // For completed status with no tool calls, return CompleteActivity only\n if (toolCalls.length === 0) {\n if (status === \"completed\") {\n return prependQuery([createCompleteActivity(step.newMessages, reasoning)])\n }\n return prependQuery([createRetryActivity(step.newMessages, reasoning)])\n }\n\n const toolActivities: 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 toolActivities.push(createBaseToolActivity(toolName, toolCall, toolResult, reasoning))\n } else {\n toolActivities.push(\n createGeneralToolActivity(skillName, toolName, toolCall, toolResult, reasoning),\n )\n }\n }\n\n if (toolActivities.length === 0) {\n if (status === \"completed\") {\n return prependQuery([createCompleteActivity(step.newMessages, reasoning)])\n }\n return prependQuery([createRetryActivity(step.newMessages, reasoning)])\n }\n\n const result = wrapInGroupIfParallel(toolActivities, reasoning, expertKey, runId, stepNumber)\n\n // Append CompleteActivity for completed status\n if (status === \"completed\") {\n result.push(createCompleteActivity(step.newMessages, undefined))\n }\n\n return prependQuery(result)\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perstack/core",
3
- "version": "0.0.39",
3
+ "version": "0.0.41",
4
4
  "description": "Perstack Core",
5
5
  "author": "Wintermute Technologies, Inc.",
6
6
  "license": "Apache-2.0",