@octavus/core 2.3.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -192,6 +192,10 @@ interface ToolCallInfo {
192
192
  status: ToolCallStatus;
193
193
  result?: unknown;
194
194
  error?: string;
195
+ /** Google Gemini 3 thought signature - required for tool call continuation */
196
+ thoughtSignature?: string;
197
+ /** Display mode from tool definition - controls what data flows to UIMessage */
198
+ display?: DisplayMode;
195
199
  }
196
200
  /** Signals the start of a response message */
197
201
  interface StartEvent {
@@ -427,6 +431,8 @@ interface PendingToolCall {
427
431
  thread?: string;
428
432
  /** Worker ID if this tool call originated from a worker execution */
429
433
  workerId?: string;
434
+ /** Google Gemini 3 thought signature - required for tool call continuation */
435
+ thoughtSignature?: string;
430
436
  }
431
437
  /**
432
438
  * When this event is received, the stream will close.
@@ -701,6 +707,12 @@ interface UIReasoningPart {
701
707
  status: UIPartStatus;
702
708
  /** Thread name (undefined or 'main' for main thread) */
703
709
  thread?: string;
710
+ /**
711
+ * Provider-specific metadata for this reasoning block.
712
+ * Used to preserve cryptographic signatures across session restore.
713
+ * e.g. `{ anthropic: { signature: "..." } }`
714
+ */
715
+ providerMetadata?: Record<string, unknown>;
704
716
  }
705
717
  /**
706
718
  * Tool call status for UI
@@ -721,6 +733,12 @@ interface UIToolCallPart {
721
733
  status: UIToolCallStatus;
722
734
  /** Thread name (undefined or 'main' for main thread) */
723
735
  thread?: string;
736
+ /**
737
+ * Provider-specific metadata for this tool call.
738
+ * Used to preserve cryptographic signatures across session restore.
739
+ * e.g. `{ google: { thoughtSignature: "..." } }`
740
+ */
741
+ providerMetadata?: Record<string, unknown>;
724
742
  }
725
743
  /**
726
744
  * Operation status for UI
@@ -999,6 +1017,13 @@ declare const chatMessageSchema: z.ZodObject<{
999
1017
  }>;
1000
1018
  result: z.ZodOptional<z.ZodUnknown>;
1001
1019
  error: z.ZodOptional<z.ZodString>;
1020
+ thoughtSignature: z.ZodOptional<z.ZodString>;
1021
+ display: z.ZodOptional<z.ZodEnum<{
1022
+ name: "name";
1023
+ hidden: "hidden";
1024
+ description: "description";
1025
+ stream: "stream";
1026
+ }>>;
1002
1027
  }, z.core.$strip>>;
1003
1028
  operation: z.ZodOptional<z.ZodObject<{
1004
1029
  id: z.ZodString;
@@ -1059,6 +1084,13 @@ declare const chatMessageSchema: z.ZodObject<{
1059
1084
  }>;
1060
1085
  result: z.ZodOptional<z.ZodUnknown>;
1061
1086
  error: z.ZodOptional<z.ZodString>;
1087
+ thoughtSignature: z.ZodOptional<z.ZodString>;
1088
+ display: z.ZodOptional<z.ZodEnum<{
1089
+ name: "name";
1090
+ hidden: "hidden";
1091
+ description: "description";
1092
+ stream: "stream";
1093
+ }>>;
1062
1094
  }, z.core.$strip>>;
1063
1095
  operation: z.ZodOptional<z.ZodObject<{
1064
1096
  id: z.ZodString;
@@ -1113,6 +1145,13 @@ declare const chatMessageSchema: z.ZodObject<{
1113
1145
  }>;
1114
1146
  result: z.ZodOptional<z.ZodUnknown>;
1115
1147
  error: z.ZodOptional<z.ZodString>;
1148
+ thoughtSignature: z.ZodOptional<z.ZodString>;
1149
+ display: z.ZodOptional<z.ZodEnum<{
1150
+ name: "name";
1151
+ hidden: "hidden";
1152
+ description: "description";
1153
+ stream: "stream";
1154
+ }>>;
1116
1155
  }, z.core.$strip>>>;
1117
1156
  reasoning: z.ZodOptional<z.ZodString>;
1118
1157
  reasoningSignature: z.ZodOptional<z.ZodString>;
@@ -1143,6 +1182,7 @@ declare const uiWorkerPartSchema: z.ZodObject<{
1143
1182
  done: "done";
1144
1183
  }>;
1145
1184
  thread: z.ZodOptional<z.ZodString>;
1185
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1146
1186
  }, z.core.$strip>, z.ZodObject<{
1147
1187
  type: z.ZodLiteral<"tool-call">;
1148
1188
  toolCallId: z.ZodString;
@@ -1158,6 +1198,7 @@ declare const uiWorkerPartSchema: z.ZodObject<{
1158
1198
  running: "running";
1159
1199
  }>;
1160
1200
  thread: z.ZodOptional<z.ZodString>;
1201
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1161
1202
  }, z.core.$strip>, z.ZodObject<{
1162
1203
  type: z.ZodLiteral<"operation">;
1163
1204
  operationId: z.ZodString;
@@ -1230,6 +1271,7 @@ declare const uiMessagePartSchema: z.ZodUnion<readonly [z.ZodObject<{
1230
1271
  done: "done";
1231
1272
  }>;
1232
1273
  thread: z.ZodOptional<z.ZodString>;
1274
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1233
1275
  }, z.core.$strip>, z.ZodObject<{
1234
1276
  type: z.ZodLiteral<"tool-call">;
1235
1277
  toolCallId: z.ZodString;
@@ -1245,6 +1287,7 @@ declare const uiMessagePartSchema: z.ZodUnion<readonly [z.ZodObject<{
1245
1287
  running: "running";
1246
1288
  }>;
1247
1289
  thread: z.ZodOptional<z.ZodString>;
1290
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1248
1291
  }, z.core.$strip>, z.ZodObject<{
1249
1292
  type: z.ZodLiteral<"operation">;
1250
1293
  operationId: z.ZodString;
@@ -1313,6 +1356,7 @@ declare const uiMessagePartSchema: z.ZodUnion<readonly [z.ZodObject<{
1313
1356
  done: "done";
1314
1357
  }>;
1315
1358
  thread: z.ZodOptional<z.ZodString>;
1359
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1316
1360
  }, z.core.$strip>, z.ZodObject<{
1317
1361
  type: z.ZodLiteral<"tool-call">;
1318
1362
  toolCallId: z.ZodString;
@@ -1328,6 +1372,7 @@ declare const uiMessagePartSchema: z.ZodUnion<readonly [z.ZodObject<{
1328
1372
  running: "running";
1329
1373
  }>;
1330
1374
  thread: z.ZodOptional<z.ZodString>;
1375
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1331
1376
  }, z.core.$strip>, z.ZodObject<{
1332
1377
  type: z.ZodLiteral<"operation">;
1333
1378
  operationId: z.ZodString;
@@ -1406,6 +1451,7 @@ declare const uiMessageSchema: z.ZodObject<{
1406
1451
  done: "done";
1407
1452
  }>;
1408
1453
  thread: z.ZodOptional<z.ZodString>;
1454
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1409
1455
  }, z.core.$strip>, z.ZodObject<{
1410
1456
  type: z.ZodLiteral<"tool-call">;
1411
1457
  toolCallId: z.ZodString;
@@ -1421,6 +1467,7 @@ declare const uiMessageSchema: z.ZodObject<{
1421
1467
  running: "running";
1422
1468
  }>;
1423
1469
  thread: z.ZodOptional<z.ZodString>;
1470
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1424
1471
  }, z.core.$strip>, z.ZodObject<{
1425
1472
  type: z.ZodLiteral<"operation">;
1426
1473
  operationId: z.ZodString;
@@ -1489,6 +1536,7 @@ declare const uiMessageSchema: z.ZodObject<{
1489
1536
  done: "done";
1490
1537
  }>;
1491
1538
  thread: z.ZodOptional<z.ZodString>;
1539
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1492
1540
  }, z.core.$strip>, z.ZodObject<{
1493
1541
  type: z.ZodLiteral<"tool-call">;
1494
1542
  toolCallId: z.ZodString;
@@ -1504,6 +1552,7 @@ declare const uiMessageSchema: z.ZodObject<{
1504
1552
  running: "running";
1505
1553
  }>;
1506
1554
  thread: z.ZodOptional<z.ZodString>;
1555
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1507
1556
  }, z.core.$strip>, z.ZodObject<{
1508
1557
  type: z.ZodLiteral<"operation">;
1509
1558
  operationId: z.ZodString;
@@ -1769,6 +1818,7 @@ declare function safeParseUIMessage(data: unknown): z.ZodSafeParseResult<{
1769
1818
  text: string;
1770
1819
  status: "streaming" | "done";
1771
1820
  thread?: string | undefined;
1821
+ providerMetadata?: Record<string, unknown> | undefined;
1772
1822
  } | {
1773
1823
  type: "tool-call";
1774
1824
  toolCallId: string;
@@ -1779,6 +1829,7 @@ declare function safeParseUIMessage(data: unknown): z.ZodSafeParseResult<{
1779
1829
  result?: unknown;
1780
1830
  error?: string | undefined;
1781
1831
  thread?: string | undefined;
1832
+ providerMetadata?: Record<string, unknown> | undefined;
1782
1833
  } | {
1783
1834
  type: "operation";
1784
1835
  operationId: string;
@@ -1833,6 +1884,7 @@ declare function safeParseUIMessage(data: unknown): z.ZodSafeParseResult<{
1833
1884
  text: string;
1834
1885
  status: "streaming" | "done";
1835
1886
  thread?: string | undefined;
1887
+ providerMetadata?: Record<string, unknown> | undefined;
1836
1888
  } | {
1837
1889
  type: "tool-call";
1838
1890
  toolCallId: string;
@@ -1843,6 +1895,7 @@ declare function safeParseUIMessage(data: unknown): z.ZodSafeParseResult<{
1843
1895
  result?: unknown;
1844
1896
  error?: string | undefined;
1845
1897
  thread?: string | undefined;
1898
+ providerMetadata?: Record<string, unknown> | undefined;
1846
1899
  } | {
1847
1900
  type: "operation";
1848
1901
  operationId: string;
@@ -1905,6 +1958,7 @@ declare function safeParseUIMessages(data: unknown): z.ZodSafeParseResult<{
1905
1958
  text: string;
1906
1959
  status: "streaming" | "done";
1907
1960
  thread?: string | undefined;
1961
+ providerMetadata?: Record<string, unknown> | undefined;
1908
1962
  } | {
1909
1963
  type: "tool-call";
1910
1964
  toolCallId: string;
@@ -1915,6 +1969,7 @@ declare function safeParseUIMessages(data: unknown): z.ZodSafeParseResult<{
1915
1969
  result?: unknown;
1916
1970
  error?: string | undefined;
1917
1971
  thread?: string | undefined;
1972
+ providerMetadata?: Record<string, unknown> | undefined;
1918
1973
  } | {
1919
1974
  type: "operation";
1920
1975
  operationId: string;
@@ -1969,6 +2024,7 @@ declare function safeParseUIMessages(data: unknown): z.ZodSafeParseResult<{
1969
2024
  text: string;
1970
2025
  status: "streaming" | "done";
1971
2026
  thread?: string | undefined;
2027
+ providerMetadata?: Record<string, unknown> | undefined;
1972
2028
  } | {
1973
2029
  type: "tool-call";
1974
2030
  toolCallId: string;
@@ -1979,6 +2035,7 @@ declare function safeParseUIMessages(data: unknown): z.ZodSafeParseResult<{
1979
2035
  result?: unknown;
1980
2036
  error?: string | undefined;
1981
2037
  thread?: string | undefined;
2038
+ providerMetadata?: Record<string, unknown> | undefined;
1982
2039
  } | {
1983
2040
  type: "operation";
1984
2041
  operationId: string;
@@ -2023,10 +2080,58 @@ declare function isFileReference(value: unknown): value is z.infer<typeof fileRe
2023
2080
  declare function isFileReferenceArray(value: unknown): value is z.infer<typeof fileReferenceSchema>[];
2024
2081
 
2025
2082
  /**
2026
- * Octavus skill tool names
2083
+ * Internal Octavus tool definitions.
2084
+ *
2085
+ * These tools are reserved by Octavus and executed server-side.
2086
+ * User-defined tools and workers cannot use the "octavus_" prefix.
2087
+ */
2088
+ /**
2089
+ * Prefix reserved for internal Octavus tools.
2090
+ * User-defined tools/workers cannot use this prefix.
2091
+ */
2092
+ declare const OCTAVUS_INTERNAL_PREFIX = "octavus_";
2093
+ /**
2094
+ * All internal Octavus tool names.
2027
2095
  *
2028
- * These are internal tools executed in E2B sandboxes.
2029
- * Use these constants to filter skill tool events from external tool call events.
2096
+ * These are tools that are executed server-side by the Octavus runtime.
2097
+ * They should never be sent to client handlers.
2098
+ */
2099
+ declare const OCTAVUS_INTERNAL_TOOLS: {
2100
+ /** Read skill documentation (SKILL.md) */
2101
+ readonly SKILL_READ: "octavus_skill_read";
2102
+ /** List available scripts in a skill */
2103
+ readonly SKILL_LIST: "octavus_skill_list";
2104
+ /** Execute a pre-built skill script */
2105
+ readonly SKILL_RUN: "octavus_skill_run";
2106
+ /** Execute Python/Bash code in sandbox */
2107
+ readonly CODE_RUN: "octavus_code_run";
2108
+ /** Create/write files in sandbox */
2109
+ readonly FILE_WRITE: "octavus_file_write";
2110
+ /** Read files from sandbox */
2111
+ readonly FILE_READ: "octavus_file_read";
2112
+ /** Generate images using AI models */
2113
+ readonly GENERATE_IMAGE: "octavus_generate_image";
2114
+ };
2115
+ type OctavusInternalToolName = (typeof OCTAVUS_INTERNAL_TOOLS)[keyof typeof OCTAVUS_INTERNAL_TOOLS];
2116
+ /**
2117
+ * Check if a tool name is an internal Octavus tool.
2118
+ *
2119
+ * Internal tools are reserved by Octavus and executed server-side.
2120
+ * User-defined tools cannot start with "octavus_".
2121
+ *
2122
+ * @example
2123
+ * ```typescript
2124
+ * if (isOctavusInternalTool(toolName)) {
2125
+ * // This is an internal Octavus tool, skip client handling
2126
+ * }
2127
+ * ```
2128
+ */
2129
+ declare function isOctavusInternalTool(toolName: string): boolean;
2130
+ /**
2131
+ * Skill tool names (subset of internal tools).
2132
+ *
2133
+ * Use this for skill-specific filtering. For checking if any tool is internal,
2134
+ * use `isOctavusInternalTool()` instead.
2030
2135
  */
2031
2136
  declare const OCTAVUS_SKILL_TOOLS: {
2032
2137
  readonly SKILL_READ: "octavus_skill_read";
@@ -2038,21 +2143,28 @@ declare const OCTAVUS_SKILL_TOOLS: {
2038
2143
  };
2039
2144
  type OctavusSkillToolName = (typeof OCTAVUS_SKILL_TOOLS)[keyof typeof OCTAVUS_SKILL_TOOLS];
2040
2145
  /**
2041
- * Check if a tool name is an Octavus skill tool
2146
+ * Check if a tool name is an Octavus skill tool.
2147
+ *
2148
+ * Skill tools are a subset of internal tools that execute in E2B sandboxes.
2042
2149
  *
2043
2150
  * @example
2044
2151
  * ```typescript
2045
2152
  * if (isOctavusSkillTool(event.toolName)) {
2046
2153
  * // This is a skill tool, executed in E2B sandbox
2047
2154
  * const skillSlug = event.input?.skill;
2048
- * } else {
2049
- * // This is an external tool, executed on consumer's server
2050
2155
  * }
2051
2156
  * ```
2052
2157
  */
2053
2158
  declare function isOctavusSkillTool(toolName: string): toolName is OctavusSkillToolName;
2159
+
2160
+ /**
2161
+ * Skill-specific utilities.
2162
+ *
2163
+ * For internal tool definitions and checking, see internal-tools.ts
2164
+ */
2165
+
2054
2166
  /**
2055
- * Extract skill slug from skill tool arguments
2167
+ * Extract skill slug from skill tool arguments.
2056
2168
  *
2057
2169
  * Most skill tools include a `skill` parameter with the skill slug.
2058
2170
  * Returns undefined if the tool is not a skill tool or if the skill slug is not present.
@@ -2067,4 +2179,4 @@ declare function isOctavusSkillTool(toolName: string): toolName is OctavusSkillT
2067
2179
  */
2068
2180
  declare function getSkillSlugFromToolCall(toolName: string, args: Record<string, unknown> | undefined): string | undefined;
2069
2181
 
2070
- export { AppError, type BlockEndEvent, type BlockStartEvent, type ChatMessage, type ClientToolRequestEvent, ConflictError, type CreateErrorEventOptions, type DisplayMode, type ErrorEvent, type ErrorSource, type ErrorType, type FileAvailableEvent, type FileInfo, type FileReference, type FinishEvent, type FinishReason, ForbiddenError, type GeneratedFile, MAIN_THREAD, type MessagePart, type MessagePartType, type MessageRole, NotFoundError, OCTAVUS_SKILL_TOOLS, type ObjectInfo, OctavusError, type OctavusErrorOptions, type OctavusSkillToolName, type OperationInfo, type PendingToolCall, type ProviderErrorInfo, type ReasoningDeltaEvent, type ReasoningEndEvent, type ReasoningStartEvent, type ResourceUpdateEvent, type ResourceUpdateHandler, type SourceDocumentEvent, type SourceDocumentInfo, type SourceEvent, type SourceInfo, type SourceUrlEvent, type SourceUrlInfo, type StartEvent, type StreamEvent, type TextDeltaEvent, type TextEndEvent, type TextStartEvent, type ToolCallInfo, type ToolCallStatus, type ToolErrorInfo, type ToolHandler, type ToolHandlers, type ToolInputAvailableEvent, type ToolInputDeltaEvent, type ToolInputEndEvent, type ToolInputStartEvent, type ToolOutputAvailableEvent, type ToolOutputErrorEvent, type ToolRequestEvent, type ToolResult, type ToolResultEntry, type UIFilePart, type UIMessage, type UIMessagePart, type UIMessageStatus, type UIObjectPart, type UIObjectStatus, type UIOperationPart, type UIOperationStatus, type UIPartStatus, type UIReasoningPart, type UISourceDocumentPart, type UISourcePart, type UISourceUrlPart, type UITextPart, type UIToolCallPart, type UIToolCallStatus, type UIWorkerPart, type UIWorkerStatus, ValidationError, type WorkerPartInfo, type WorkerResultEvent, type WorkerStartEvent, chatMessageSchema, createApiErrorEvent, createErrorEvent, createInternalErrorEvent, errorToStreamEvent, fileReferenceSchema, generateId, getSkillSlugFromToolCall, isAbortError, isAuthenticationError, isFileReference, isFileReferenceArray, isMainThread, isOctavusSkillTool, isOtherThread, isProviderError, isRateLimitError, isRetryableError, isToolError, isValidationError, resolveThread, safeParseStreamEvent, safeParseUIMessage, safeParseUIMessages, threadForPart, toolResultSchema, uiMessagePartSchema, uiMessageSchema, uiWorkerPartSchema, uiWorkerStatusSchema };
2182
+ export { AppError, type BlockEndEvent, type BlockStartEvent, type ChatMessage, type ClientToolRequestEvent, ConflictError, type CreateErrorEventOptions, type DisplayMode, type ErrorEvent, type ErrorSource, type ErrorType, type FileAvailableEvent, type FileInfo, type FileReference, type FinishEvent, type FinishReason, ForbiddenError, type GeneratedFile, MAIN_THREAD, type MessagePart, type MessagePartType, type MessageRole, NotFoundError, OCTAVUS_INTERNAL_PREFIX, OCTAVUS_INTERNAL_TOOLS, OCTAVUS_SKILL_TOOLS, type ObjectInfo, OctavusError, type OctavusErrorOptions, type OctavusInternalToolName, type OctavusSkillToolName, type OperationInfo, type PendingToolCall, type ProviderErrorInfo, type ReasoningDeltaEvent, type ReasoningEndEvent, type ReasoningStartEvent, type ResourceUpdateEvent, type ResourceUpdateHandler, type SourceDocumentEvent, type SourceDocumentInfo, type SourceEvent, type SourceInfo, type SourceUrlEvent, type SourceUrlInfo, type StartEvent, type StreamEvent, type TextDeltaEvent, type TextEndEvent, type TextStartEvent, type ToolCallInfo, type ToolCallStatus, type ToolErrorInfo, type ToolHandler, type ToolHandlers, type ToolInputAvailableEvent, type ToolInputDeltaEvent, type ToolInputEndEvent, type ToolInputStartEvent, type ToolOutputAvailableEvent, type ToolOutputErrorEvent, type ToolRequestEvent, type ToolResult, type ToolResultEntry, type UIFilePart, type UIMessage, type UIMessagePart, type UIMessageStatus, type UIObjectPart, type UIObjectStatus, type UIOperationPart, type UIOperationStatus, type UIPartStatus, type UIReasoningPart, type UISourceDocumentPart, type UISourcePart, type UISourceUrlPart, type UITextPart, type UIToolCallPart, type UIToolCallStatus, type UIWorkerPart, type UIWorkerStatus, ValidationError, type WorkerPartInfo, type WorkerResultEvent, type WorkerStartEvent, chatMessageSchema, createApiErrorEvent, createErrorEvent, createInternalErrorEvent, errorToStreamEvent, fileReferenceSchema, generateId, getSkillSlugFromToolCall, isAbortError, isAuthenticationError, isFileReference, isFileReferenceArray, isMainThread, isOctavusInternalTool, isOctavusSkillTool, isOtherThread, isProviderError, isRateLimitError, isRetryableError, isToolError, isValidationError, resolveThread, safeParseStreamEvent, safeParseUIMessage, safeParseUIMessages, threadForPart, toolResultSchema, uiMessagePartSchema, uiMessageSchema, uiWorkerPartSchema, uiWorkerStatusSchema };
package/dist/index.js CHANGED
@@ -224,7 +224,9 @@ var toolCallInfoSchema = z.object({
224
224
  arguments: z.record(z.string(), z.unknown()),
225
225
  status: toolCallStatusSchema,
226
226
  result: z.unknown().optional(),
227
- error: z.string().optional()
227
+ error: z.string().optional(),
228
+ thoughtSignature: z.string().optional(),
229
+ display: displayModeSchema.optional()
228
230
  });
229
231
  var startEventSchema = z.object({
230
232
  type: z.literal("start"),
@@ -582,7 +584,8 @@ var uiReasoningPartSchema = z.object({
582
584
  type: z.literal("reasoning"),
583
585
  text: z.string(),
584
586
  status: uiPartStatusSchema,
585
- thread: z.string().optional()
587
+ thread: z.string().optional(),
588
+ providerMetadata: z.record(z.string(), z.unknown()).optional()
586
589
  });
587
590
  var uiToolCallPartSchema = z.object({
588
591
  type: z.literal("tool-call"),
@@ -593,7 +596,8 @@ var uiToolCallPartSchema = z.object({
593
596
  result: z.unknown().optional(),
594
597
  error: z.string().optional(),
595
598
  status: uiToolCallStatusSchema,
596
- thread: z.string().optional()
599
+ thread: z.string().optional(),
600
+ providerMetadata: z.record(z.string(), z.unknown()).optional()
597
601
  });
598
602
  var uiOperationStatusSchema = z.enum(["running", "done"]);
599
603
  var uiOperationPartSchema = z.object({
@@ -700,18 +704,42 @@ function isFileReferenceArray(value) {
700
704
  return z.array(fileReferenceSchema).safeParse(value).success;
701
705
  }
702
706
 
703
- // src/skills.ts
704
- var OCTAVUS_SKILL_TOOLS = {
707
+ // src/internal-tools.ts
708
+ var OCTAVUS_INTERNAL_PREFIX = "octavus_";
709
+ var OCTAVUS_INTERNAL_TOOLS = {
710
+ // === Skill Tools (executed in E2B sandboxes) ===
711
+ /** Read skill documentation (SKILL.md) */
705
712
  SKILL_READ: "octavus_skill_read",
713
+ /** List available scripts in a skill */
706
714
  SKILL_LIST: "octavus_skill_list",
715
+ /** Execute a pre-built skill script */
707
716
  SKILL_RUN: "octavus_skill_run",
717
+ /** Execute Python/Bash code in sandbox */
708
718
  CODE_RUN: "octavus_code_run",
719
+ /** Create/write files in sandbox */
709
720
  FILE_WRITE: "octavus_file_write",
710
- FILE_READ: "octavus_file_read"
721
+ /** Read files from sandbox */
722
+ FILE_READ: "octavus_file_read",
723
+ // === Image Generation ===
724
+ /** Generate images using AI models */
725
+ GENERATE_IMAGE: "octavus_generate_image"
726
+ };
727
+ function isOctavusInternalTool(toolName) {
728
+ return toolName.startsWith(OCTAVUS_INTERNAL_PREFIX);
729
+ }
730
+ var OCTAVUS_SKILL_TOOLS = {
731
+ SKILL_READ: OCTAVUS_INTERNAL_TOOLS.SKILL_READ,
732
+ SKILL_LIST: OCTAVUS_INTERNAL_TOOLS.SKILL_LIST,
733
+ SKILL_RUN: OCTAVUS_INTERNAL_TOOLS.SKILL_RUN,
734
+ CODE_RUN: OCTAVUS_INTERNAL_TOOLS.CODE_RUN,
735
+ FILE_WRITE: OCTAVUS_INTERNAL_TOOLS.FILE_WRITE,
736
+ FILE_READ: OCTAVUS_INTERNAL_TOOLS.FILE_READ
711
737
  };
712
738
  function isOctavusSkillTool(toolName) {
713
739
  return Object.values(OCTAVUS_SKILL_TOOLS).includes(toolName);
714
740
  }
741
+
742
+ // src/skills.ts
715
743
  function getSkillSlugFromToolCall(toolName, args) {
716
744
  if (!isOctavusSkillTool(toolName) || !args) {
717
745
  return void 0;
@@ -727,6 +755,8 @@ export {
727
755
  ForbiddenError,
728
756
  MAIN_THREAD,
729
757
  NotFoundError,
758
+ OCTAVUS_INTERNAL_PREFIX,
759
+ OCTAVUS_INTERNAL_TOOLS,
730
760
  OCTAVUS_SKILL_TOOLS,
731
761
  OctavusError,
732
762
  ValidationError,
@@ -743,6 +773,7 @@ export {
743
773
  isFileReference,
744
774
  isFileReferenceArray,
745
775
  isMainThread,
776
+ isOctavusInternalTool,
746
777
  isOctavusSkillTool,
747
778
  isOtherThread,
748
779
  isProviderError,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/errors/octavus-error.ts","../src/errors/helpers.ts","../src/utils.ts","../src/thread.ts","../src/stream/schemas.ts","../src/skills.ts"],"sourcesContent":["export class AppError extends Error {\n constructor(\n message: string,\n public code: string,\n public statusCode = 500,\n ) {\n super(message);\n this.name = 'AppError';\n }\n}\n\nexport class NotFoundError extends AppError {\n constructor(resource: string, id: string) {\n super(`${resource} not found: ${id}`, 'NOT_FOUND', 404);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ValidationError extends AppError {\n constructor(\n message: string,\n public issues?: unknown[],\n ) {\n super(message, 'VALIDATION_ERROR', 400);\n this.name = 'ValidationError';\n }\n}\n\nexport class ConflictError extends AppError {\n constructor(resource: string, identifier: string) {\n super(`${resource} already exists: ${identifier}`, 'CONFLICT', 409);\n this.name = 'ConflictError';\n }\n}\n\nexport class ForbiddenError extends AppError {\n constructor(message = 'Access denied') {\n super(message, 'FORBIDDEN', 403);\n this.name = 'ForbiddenError';\n }\n}\n","import type {\n ErrorType,\n ErrorSource,\n ProviderErrorInfo,\n ToolErrorInfo,\n OctavusErrorOptions,\n} from './types';\n\n/**\n * Marker key for OctavusError identification.\n * Enables reliable instanceof checks across package versions.\n */\nconst MARKER_KEY = 'octavus.error';\n\n/**\n * Base error class for Octavus streaming errors.\n *\n * Provides structured error information including:\n * - Error type classification for UI handling\n * - Source information (platform, provider, tool)\n * - Retryability flag and retry delay\n * - Provider/tool details when applicable\n *\n * @example\n * ```typescript\n * const error = new OctavusError({\n * errorType: 'rate_limit_error',\n * message: 'Rate limit exceeded. Please try again later.',\n * source: 'provider',\n * retryable: true,\n * retryAfter: 60,\n * provider: {\n * name: 'anthropic',\n * statusCode: 429,\n * requestId: 'req_xxx',\n * },\n * });\n * ```\n */\nexport class OctavusError extends Error {\n /** @internal Marker for cross-version instanceof checks */\n readonly __octavusErrorMarker = MARKER_KEY;\n\n /** Error type classification */\n readonly errorType: ErrorType;\n\n /** Where the error originated */\n readonly source: ErrorSource;\n\n /** Whether automatic retry is possible */\n readonly retryable: boolean;\n\n /** Suggested retry delay in seconds (from provider headers) */\n readonly retryAfter?: number;\n\n /** Machine-readable error code */\n readonly code?: string;\n\n /** Provider details (when source === 'provider') */\n readonly provider?: ProviderErrorInfo;\n\n /** Tool details (when source === 'tool') */\n readonly tool?: ToolErrorInfo;\n\n constructor(options: OctavusErrorOptions) {\n super(options.message);\n this.name = 'OctavusError';\n this.errorType = options.errorType;\n this.source = options.source;\n this.retryable = options.retryable ?? false;\n this.retryAfter = options.retryAfter;\n this.code = options.code;\n this.provider = options.provider;\n this.tool = options.tool;\n\n // Preserve original error stack if available\n if (options.cause instanceof Error && options.cause.stack) {\n this.stack = `${this.stack}\\nCaused by: ${options.cause.stack}`;\n }\n }\n\n /**\n * Check if an unknown value is an OctavusError.\n * Works reliably across package versions using marker property.\n */\n static isInstance(error: unknown): error is OctavusError {\n return (\n typeof error === 'object' &&\n error !== null &&\n '__octavusErrorMarker' in error &&\n (error as { __octavusErrorMarker: string }).__octavusErrorMarker === MARKER_KEY\n );\n }\n\n /**\n * Convert error to plain object for serialization.\n * Used for streaming error events.\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n errorType: this.errorType,\n source: this.source,\n retryable: this.retryable,\n retryAfter: this.retryAfter,\n code: this.code,\n provider: this.provider,\n tool: this.tool,\n };\n }\n}\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\n/**\n * Check if an error is a rate limit error.\n */\nexport function isRateLimitError(error: unknown): error is OctavusError {\n return (\n OctavusError.isInstance(error) &&\n (error.errorType === 'rate_limit_error' || error.errorType === 'quota_exceeded_error')\n );\n}\n\n/**\n * Check if an error is an authentication error.\n */\nexport function isAuthenticationError(error: unknown): error is OctavusError {\n return (\n OctavusError.isInstance(error) &&\n (error.errorType === 'authentication_error' || error.errorType === 'permission_error')\n );\n}\n\n/**\n * Check if an error is a provider error.\n */\nexport function isProviderError(error: unknown): error is OctavusError {\n return OctavusError.isInstance(error) && error.source === 'provider';\n}\n\n/**\n * Check if an error is a tool error.\n */\nexport function isToolError(error: unknown): error is OctavusError {\n return (\n OctavusError.isInstance(error) && (error.source === 'tool' || error.errorType === 'tool_error')\n );\n}\n\n/**\n * Check if an error is retryable.\n */\nexport function isRetryableError(error: unknown): boolean {\n if (OctavusError.isInstance(error)) {\n return error.retryable;\n }\n return false;\n}\n\n/**\n * Check if an error is a validation error (non-retryable request issue).\n */\nexport function isValidationError(error: unknown): error is OctavusError {\n return OctavusError.isInstance(error) && error.errorType === 'validation_error';\n}\n","import type { ErrorEvent } from '@/stream/types';\nimport type { ErrorType, ErrorSource, ProviderErrorInfo, ToolErrorInfo } from './types';\nimport type { OctavusError } from './octavus-error';\n\n/**\n * Options for creating an error event.\n */\nexport interface CreateErrorEventOptions {\n errorType: ErrorType;\n message: string;\n source: ErrorSource;\n retryable?: boolean;\n retryAfter?: number;\n code?: string;\n provider?: ProviderErrorInfo;\n tool?: ToolErrorInfo;\n}\n\n/**\n * Create an ErrorEvent from options.\n * Use this for constructing error events in streaming responses.\n */\nexport function createErrorEvent(options: CreateErrorEventOptions): ErrorEvent {\n return {\n type: 'error',\n errorType: options.errorType,\n message: options.message,\n source: options.source,\n retryable: options.retryable ?? false,\n retryAfter: options.retryAfter,\n code: options.code,\n provider: options.provider,\n tool: options.tool,\n };\n}\n\n/**\n * Create an ErrorEvent from an OctavusError.\n */\nexport function errorToStreamEvent(error: OctavusError): ErrorEvent {\n return createErrorEvent({\n errorType: error.errorType,\n message: error.message,\n source: error.source,\n retryable: error.retryable,\n retryAfter: error.retryAfter,\n code: error.code,\n provider: error.provider,\n tool: error.tool,\n });\n}\n\n/**\n * Create an internal error event.\n * Convenience function for platform-level errors.\n */\nexport function createInternalErrorEvent(message: string): ErrorEvent {\n return createErrorEvent({\n errorType: 'internal_error',\n message,\n source: 'platform',\n retryable: false,\n });\n}\n\n/**\n * Map HTTP status code to error type.\n */\nfunction mapStatusCodeToErrorType(statusCode: number): ErrorType {\n switch (statusCode) {\n case 400:\n return 'validation_error';\n case 401:\n return 'authentication_error';\n case 403:\n return 'permission_error';\n case 404:\n return 'not_found_error';\n case 429:\n return 'rate_limit_error';\n case 503:\n return 'provider_overloaded';\n case 504:\n return 'provider_timeout';\n default:\n return statusCode >= 500 ? 'internal_error' : 'unknown_error';\n }\n}\n\n/**\n * Create an error event from an API response.\n * Maps HTTP status codes to appropriate error types.\n *\n * Use this when handling errors from API responses (before streaming starts).\n *\n * @param statusCode - HTTP status code from the response\n * @param message - Error message to display\n */\nexport function createApiErrorEvent(statusCode: number, message: string): ErrorEvent {\n const errorType = mapStatusCodeToErrorType(statusCode);\n // Rate limit and server errors are typically retryable\n const retryable = statusCode === 429 || statusCode >= 500;\n\n return createErrorEvent({\n errorType,\n message,\n source: 'platform',\n retryable,\n });\n}\n","/**\n * Generate a unique ID for messages, tool calls, etc.\n * Format: timestamp-random (e.g., \"1702345678901-abc123def\")\n */\nexport function generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n}\n\n/**\n * Check if an error is an abort error.\n *\n * This handles the various ways abort errors can manifest across different\n * environments (browsers, Node.js, Next.js, etc.).\n *\n * @param error - The error to check\n * @returns True if the error is an abort error\n */\nexport function isAbortError(error: unknown): error is Error {\n return (\n (error instanceof Error || error instanceof DOMException) &&\n (error.name === 'AbortError' ||\n error.name === 'ResponseAborted' || // Next.js\n error.name === 'TimeoutError')\n );\n}\n","/**\n * Default thread name when none is specified.\n */\nexport const MAIN_THREAD = 'main' as const;\n\n/**\n * Resolve a thread name, defaulting to main thread.\n */\nexport function resolveThread(thread: string | undefined): string {\n return thread ?? MAIN_THREAD;\n}\n\n/**\n * Check if a thread is the main thread.\n */\nexport function isMainThread(thread: string | undefined): boolean {\n return thread === undefined || thread === MAIN_THREAD;\n}\n\n/**\n * Normalize thread for storage in message parts.\n * Main thread is stored as undefined to save space.\n */\nexport function threadForPart(thread: string | undefined): string | undefined {\n return isMainThread(thread) ? undefined : thread;\n}\n\n/**\n * Check if a message part belongs to a non-main thread.\n * Non-main thread content (e.g., \"summary\") is typically displayed differently.\n */\nexport function isOtherThread(part: { thread?: string }): boolean {\n return !isMainThread(part.thread);\n}\n","/**\n * Zod schemas for stream events.\n *\n * Schemas are organized into two categories:\n * - Standard Events (====): Common streaming patterns for AI agents\n * - Octavus Events (----): Octavus-specific protocol events\n */\n\nimport { z } from 'zod';\n\nexport const displayModeSchema = z.enum(['hidden', 'name', 'description', 'stream']);\nexport const messageRoleSchema = z.enum(['user', 'assistant', 'system']);\nexport const toolCallStatusSchema = z.enum(['pending', 'streaming', 'available', 'error']);\nexport const finishReasonSchema = z.enum([\n 'stop',\n 'tool-calls',\n 'client-tool-calls',\n 'length',\n 'content-filter',\n 'error',\n 'other',\n]);\n\nexport const toolCallInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n arguments: z.record(z.string(), z.unknown()),\n status: toolCallStatusSchema,\n result: z.unknown().optional(),\n error: z.string().optional(),\n});\n\n// =============================================================================\n// STANDARD EVENTS\n// =============================================================================\n\n// ============================== Lifecycle ====================================\n\nexport const startEventSchema = z.object({\n type: z.literal('start'),\n messageId: z.string().optional(),\n executionId: z.string().optional(),\n});\n\nexport const finishEventSchema = z.object({\n type: z.literal('finish'),\n finishReason: finishReasonSchema,\n executionId: z.string().optional(),\n});\n\nconst errorTypeSchema = z.enum([\n 'authentication_error',\n 'permission_error',\n 'validation_error',\n 'not_found_error',\n 'rate_limit_error',\n 'quota_exceeded_error',\n 'provider_error',\n 'provider_overloaded',\n 'provider_timeout',\n 'execution_error',\n 'tool_error',\n 'protocol_error',\n 'internal_error',\n 'unknown_error',\n]);\n\nconst errorSourceSchema = z.enum(['platform', 'provider', 'tool', 'client']);\n\nconst providerErrorInfoSchema = z.object({\n name: z.string(),\n model: z.string().optional(),\n statusCode: z.number().optional(),\n errorType: z.string().optional(),\n requestId: z.string().optional(),\n});\n\nconst toolErrorInfoSchema = z.object({\n name: z.string(),\n callId: z.string().optional(),\n});\n\nexport const errorEventSchema = z.object({\n type: z.literal('error'),\n errorType: errorTypeSchema,\n message: z.string(),\n retryable: z.boolean(),\n source: errorSourceSchema,\n retryAfter: z.number().optional(),\n code: z.string().optional(),\n provider: providerErrorInfoSchema.optional(),\n tool: toolErrorInfoSchema.optional(),\n});\n\n// ================================= Text ======================================\n\nexport const textStartEventSchema = z.object({\n type: z.literal('text-start'),\n id: z.string(),\n responseType: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const textDeltaEventSchema = z.object({\n type: z.literal('text-delta'),\n id: z.string(),\n delta: z.string(),\n workerId: z.string().optional(),\n});\n\nexport const textEndEventSchema = z.object({\n type: z.literal('text-end'),\n id: z.string(),\n workerId: z.string().optional(),\n});\n\n// =============================== Reasoning ===================================\n\nexport const reasoningStartEventSchema = z.object({\n type: z.literal('reasoning-start'),\n id: z.string(),\n workerId: z.string().optional(),\n});\n\nexport const reasoningDeltaEventSchema = z.object({\n type: z.literal('reasoning-delta'),\n id: z.string(),\n delta: z.string(),\n workerId: z.string().optional(),\n});\n\nexport const reasoningEndEventSchema = z.object({\n type: z.literal('reasoning-end'),\n id: z.string(),\n workerId: z.string().optional(),\n});\n\n// ================================= Tool ======================================\n\nexport const toolInputStartEventSchema = z.object({\n type: z.literal('tool-input-start'),\n toolCallId: z.string(),\n toolName: z.string(),\n title: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const toolInputDeltaEventSchema = z.object({\n type: z.literal('tool-input-delta'),\n toolCallId: z.string(),\n inputTextDelta: z.string(),\n workerId: z.string().optional(),\n});\n\nexport const toolInputEndEventSchema = z.object({\n type: z.literal('tool-input-end'),\n toolCallId: z.string(),\n workerId: z.string().optional(),\n});\n\nexport const toolInputAvailableEventSchema = z.object({\n type: z.literal('tool-input-available'),\n toolCallId: z.string(),\n toolName: z.string(),\n input: z.unknown(),\n workerId: z.string().optional(),\n});\n\nexport const toolOutputAvailableEventSchema = z.object({\n type: z.literal('tool-output-available'),\n toolCallId: z.string(),\n output: z.unknown(),\n workerId: z.string().optional(),\n});\n\nexport const toolOutputErrorEventSchema = z.object({\n type: z.literal('tool-output-error'),\n toolCallId: z.string(),\n error: z.string(),\n workerId: z.string().optional(),\n});\n\n// ================================ Source =====================================\n\nexport const sourceUrlEventSchema = z.object({\n type: z.literal('source'),\n sourceType: z.literal('url'),\n id: z.string(),\n url: z.string(),\n title: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const sourceDocumentEventSchema = z.object({\n type: z.literal('source'),\n sourceType: z.literal('document'),\n id: z.string(),\n mediaType: z.string(),\n title: z.string(),\n filename: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const sourceEventSchema = z.discriminatedUnion('sourceType', [\n sourceUrlEventSchema,\n sourceDocumentEventSchema,\n]);\n\n// =============================================================================\n// OCTAVUS EVENTS (protocol-specific)\n// =============================================================================\n\n// --------------------------------- Block -------------------------------------\n\nexport const blockStartEventSchema = z.object({\n type: z.literal('block-start'),\n blockId: z.string(),\n blockName: z.string(),\n blockType: z.string(),\n display: displayModeSchema,\n description: z.string().optional(),\n outputToChat: z.boolean().optional(),\n thread: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const blockEndEventSchema = z.object({\n type: z.literal('block-end'),\n blockId: z.string(),\n summary: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const resourceUpdateEventSchema = z.object({\n type: z.literal('resource-update'),\n name: z.string(),\n value: z.unknown(),\n});\n\nexport const pendingToolCallSchema = z.object({\n toolCallId: z.string(),\n toolName: z.string(),\n args: z.record(z.string(), z.unknown()),\n source: z.enum(['llm', 'block']).optional(),\n outputVariable: z.string().optional(),\n blockIndex: z.number().optional(),\n thread: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const toolResultSchema = z.object({\n toolCallId: z.string(),\n toolName: z.string().optional(),\n result: z.unknown().optional(),\n error: z.string().optional(),\n outputVariable: z.string().optional(),\n blockIndex: z.number().optional(),\n thread: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const toolRequestEventSchema = z.object({\n type: z.literal('tool-request'),\n toolCalls: z.array(pendingToolCallSchema),\n workerId: z.string().optional(),\n});\n\nexport const clientToolRequestEventSchema = z.object({\n type: z.literal('client-tool-request'),\n executionId: z.string(),\n toolCalls: z.array(pendingToolCallSchema),\n serverToolResults: z.array(toolResultSchema).optional(),\n});\n\n// --------------------------------- File --------------------------------------\n\n/**\n * Schema for file references used in trigger input and user messages.\n */\nexport const fileReferenceSchema = z.object({\n id: z.string(),\n mediaType: z.string(),\n url: z.string(),\n filename: z.string().optional(),\n size: z.number().optional(),\n});\n\nexport const fileAvailableEventSchema = z.object({\n type: z.literal('file-available'),\n id: z.string(),\n mediaType: z.string(),\n url: z.string(),\n filename: z.string().optional(),\n size: z.number().optional(),\n toolCallId: z.string().optional(),\n workerId: z.string().optional(),\n});\n\n// --------------------------------- Worker ------------------------------------\n\nexport const workerStartEventSchema = z.object({\n type: z.literal('worker-start'),\n workerId: z.string(),\n workerSlug: z.string(),\n description: z.string().optional(),\n});\n\nexport const workerResultEventSchema = z.object({\n type: z.literal('worker-result'),\n workerId: z.string(),\n output: z.unknown().optional(),\n error: z.string().optional(),\n});\n\n// =============================================================================\n// Union of all stream events\n// =============================================================================\n\n// Note: We use z.union here because source events share type: 'source' but\n// differ by sourceType. z.discriminatedUnion requires unique discriminator values.\nexport const streamEventSchema = z.union([\n // Lifecycle events\n startEventSchema,\n finishEventSchema,\n errorEventSchema,\n // Text events\n textStartEventSchema,\n textDeltaEventSchema,\n textEndEventSchema,\n // Reasoning events\n reasoningStartEventSchema,\n reasoningDeltaEventSchema,\n reasoningEndEventSchema,\n // Tool events\n toolInputStartEventSchema,\n toolInputDeltaEventSchema,\n toolInputEndEventSchema,\n toolInputAvailableEventSchema,\n toolOutputAvailableEventSchema,\n toolOutputErrorEventSchema,\n // Source events\n sourceEventSchema,\n // Octavus-specific events\n blockStartEventSchema,\n blockEndEventSchema,\n resourceUpdateEventSchema,\n toolRequestEventSchema,\n clientToolRequestEventSchema,\n fileAvailableEventSchema,\n // Worker events\n workerStartEventSchema,\n workerResultEventSchema,\n]);\n\n// =============================================================================\n// Internal Message Types (used by platform/runtime)\n// =============================================================================\n\nexport const messagePartTypeSchema = z.enum([\n 'text',\n 'reasoning',\n 'tool-call',\n 'operation',\n 'source',\n 'file',\n 'object',\n 'worker',\n]);\n\nexport const sourceUrlInfoSchema = z.object({\n sourceType: z.literal('url'),\n id: z.string(),\n url: z.string(),\n title: z.string().optional(),\n});\n\nexport const sourceDocumentInfoSchema = z.object({\n sourceType: z.literal('document'),\n id: z.string(),\n mediaType: z.string(),\n title: z.string(),\n filename: z.string().optional(),\n});\n\nexport const sourceInfoSchema = z.discriminatedUnion('sourceType', [\n sourceUrlInfoSchema,\n sourceDocumentInfoSchema,\n]);\n\nexport const fileInfoSchema = z.object({\n id: z.string(),\n mediaType: z.string(),\n url: z.string(),\n filename: z.string().optional(),\n size: z.number().optional(),\n toolCallId: z.string().optional(),\n});\n\nexport const objectInfoSchema = z.object({\n id: z.string(),\n typeName: z.string(),\n value: z.unknown(),\n});\n\nexport const operationInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n operationType: z.string(),\n});\n\n// Base message part schema (without worker, for non-recursive use in worker nested parts)\nconst baseMessagePartSchema = z.object({\n type: z.enum(['text', 'reasoning', 'tool-call', 'operation', 'source', 'file', 'object']),\n visible: z.boolean(),\n content: z.string().optional(),\n toolCall: toolCallInfoSchema.optional(),\n operation: operationInfoSchema.optional(),\n source: sourceInfoSchema.optional(),\n file: fileInfoSchema.optional(),\n object: objectInfoSchema.optional(),\n thread: z.string().optional(),\n});\n\n// Worker part info schema (nested parts use base schema to avoid infinite recursion)\nexport const workerPartInfoSchema = z.object({\n workerId: z.string(),\n workerSlug: z.string(),\n description: z.string().optional(),\n // Worker nested parts can contain base parts (text, reasoning, tools, etc.) but not nested workers\n nestedParts: z.array(baseMessagePartSchema),\n output: z.unknown().optional(),\n error: z.string().optional(),\n});\n\n// Full message part schema including worker type\nexport const messagePartSchema = z.object({\n type: messagePartTypeSchema,\n visible: z.boolean(),\n content: z.string().optional(),\n toolCall: toolCallInfoSchema.optional(),\n operation: operationInfoSchema.optional(),\n source: sourceInfoSchema.optional(),\n file: fileInfoSchema.optional(),\n object: objectInfoSchema.optional(),\n worker: workerPartInfoSchema.optional(),\n thread: z.string().optional(),\n});\n\nexport const chatMessageSchema = z.object({\n id: z.string(),\n role: messageRoleSchema,\n parts: z.array(messagePartSchema),\n createdAt: z.string(),\n visible: z.boolean().optional(),\n content: z.string(),\n toolCalls: z.array(toolCallInfoSchema).optional(),\n reasoning: z.string().optional(),\n reasoningSignature: z.string().optional(),\n});\n\n// =============================================================================\n// UI Message Types (used by SDKs and consumer apps)\n// =============================================================================\n\nexport const uiMessageStatusSchema = z.enum(['streaming', 'done']);\nexport const uiPartStatusSchema = z.enum(['streaming', 'done']);\nexport const uiToolCallStatusSchema = z.enum(['pending', 'running', 'done', 'error']);\n\nexport const uiTextPartSchema = z.object({\n type: z.literal('text'),\n text: z.string(),\n status: uiPartStatusSchema,\n thread: z.string().optional(),\n});\n\nexport const uiReasoningPartSchema = z.object({\n type: z.literal('reasoning'),\n text: z.string(),\n status: uiPartStatusSchema,\n thread: z.string().optional(),\n});\n\nexport const uiToolCallPartSchema = z.object({\n type: z.literal('tool-call'),\n toolCallId: z.string(),\n toolName: z.string(),\n displayName: z.string().optional(),\n args: z.record(z.string(), z.unknown()),\n result: z.unknown().optional(),\n error: z.string().optional(),\n status: uiToolCallStatusSchema,\n thread: z.string().optional(),\n});\n\nexport const uiOperationStatusSchema = z.enum(['running', 'done']);\n\nexport const uiOperationPartSchema = z.object({\n type: z.literal('operation'),\n operationId: z.string(),\n name: z.string(),\n operationType: z.string(),\n status: uiOperationStatusSchema,\n thread: z.string().optional(),\n});\n\nexport const uiSourceUrlPartSchema = z.object({\n type: z.literal('source'),\n sourceType: z.literal('url'),\n id: z.string(),\n url: z.string(),\n title: z.string().optional(),\n thread: z.string().optional(),\n});\n\nexport const uiSourceDocumentPartSchema = z.object({\n type: z.literal('source'),\n sourceType: z.literal('document'),\n id: z.string(),\n mediaType: z.string(),\n title: z.string(),\n filename: z.string().optional(),\n thread: z.string().optional(),\n});\n\nexport const uiSourcePartSchema = z.discriminatedUnion('sourceType', [\n uiSourceUrlPartSchema,\n uiSourceDocumentPartSchema,\n]);\n\nexport const uiFilePartSchema = z.object({\n type: z.literal('file'),\n id: z.string(),\n mediaType: z.string(),\n url: z.string(),\n filename: z.string().optional(),\n size: z.number().optional(),\n toolCallId: z.string().optional(),\n thread: z.string().optional(),\n});\n\nexport const uiObjectStatusSchema = z.enum(['streaming', 'done', 'error']);\n\nexport const uiObjectPartSchema = z.object({\n type: z.literal('object'),\n id: z.string(),\n typeName: z.string(),\n partial: z.unknown().optional(),\n object: z.unknown().optional(),\n status: uiObjectStatusSchema,\n error: z.string().optional(),\n thread: z.string().optional(),\n});\n\nexport const uiWorkerStatusSchema = z.enum(['running', 'done', 'error']);\n\n// Note: We use z.union here because source parts share type: 'source' but\n// differ by sourceType. z.discriminatedUnion requires unique discriminator values.\n// Base parts schema (without worker, for non-recursive use)\nconst baseUiMessagePartSchema = z.union([\n uiTextPartSchema,\n uiReasoningPartSchema,\n uiToolCallPartSchema,\n uiOperationPartSchema,\n uiSourcePartSchema,\n uiFilePartSchema,\n uiObjectPartSchema,\n]);\n\n// Worker part schema with nested parts (uses base schema to avoid infinite recursion)\nexport const uiWorkerPartSchema = z.object({\n type: z.literal('worker'),\n workerId: z.string(),\n workerSlug: z.string(),\n description: z.string().optional(),\n // Worker parts can contain base parts (text, reasoning, tools, etc.) but not nested workers\n parts: z.array(baseUiMessagePartSchema),\n output: z.unknown().optional(),\n error: z.string().optional(),\n status: uiWorkerStatusSchema,\n});\n\n// Full message part schema including workers\nexport const uiMessagePartSchema = z.union([\n uiTextPartSchema,\n uiReasoningPartSchema,\n uiToolCallPartSchema,\n uiOperationPartSchema,\n uiSourcePartSchema,\n uiFilePartSchema,\n uiObjectPartSchema,\n uiWorkerPartSchema,\n]);\n\nexport const uiMessageSchema = z.object({\n id: z.string(),\n role: z.enum(['user', 'assistant']),\n parts: z.array(uiMessagePartSchema),\n status: uiMessageStatusSchema,\n createdAt: z.coerce.date(),\n});\n\nexport function safeParseStreamEvent(data: unknown) {\n return streamEventSchema.safeParse(data);\n}\n\nexport function safeParseUIMessage(data: unknown) {\n return uiMessageSchema.safeParse(data);\n}\n\nexport function safeParseUIMessages(data: unknown) {\n return z.array(uiMessageSchema).safeParse(data);\n}\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\n/**\n * Type guard to check if a value is a FileReference object.\n */\nexport function isFileReference(value: unknown): value is z.infer<typeof fileReferenceSchema> {\n return fileReferenceSchema.safeParse(value).success;\n}\n\n/**\n * Type guard to check if a value is an array of FileReference objects.\n */\nexport function isFileReferenceArray(\n value: unknown,\n): value is z.infer<typeof fileReferenceSchema>[] {\n return z.array(fileReferenceSchema).safeParse(value).success;\n}\n","/**\n * Octavus skill tool names\n *\n * These are internal tools executed in E2B sandboxes.\n * Use these constants to filter skill tool events from external tool call events.\n */\nexport const OCTAVUS_SKILL_TOOLS = {\n SKILL_READ: 'octavus_skill_read',\n SKILL_LIST: 'octavus_skill_list',\n SKILL_RUN: 'octavus_skill_run',\n CODE_RUN: 'octavus_code_run',\n FILE_WRITE: 'octavus_file_write',\n FILE_READ: 'octavus_file_read',\n} as const;\n\nexport type OctavusSkillToolName = (typeof OCTAVUS_SKILL_TOOLS)[keyof typeof OCTAVUS_SKILL_TOOLS];\n\n/**\n * Check if a tool name is an Octavus skill tool\n *\n * @example\n * ```typescript\n * if (isOctavusSkillTool(event.toolName)) {\n * // This is a skill tool, executed in E2B sandbox\n * const skillSlug = event.input?.skill;\n * } else {\n * // This is an external tool, executed on consumer's server\n * }\n * ```\n */\nexport function isOctavusSkillTool(toolName: string): toolName is OctavusSkillToolName {\n return Object.values(OCTAVUS_SKILL_TOOLS).includes(toolName as OctavusSkillToolName);\n}\n\n/**\n * Extract skill slug from skill tool arguments\n *\n * Most skill tools include a `skill` parameter with the skill slug.\n * Returns undefined if the tool is not a skill tool or if the skill slug is not present.\n *\n * @example\n * ```typescript\n * const slug = getSkillSlugFromToolCall(event.toolName, event.input);\n * if (slug) {\n * console.log(`Using skill: ${slug}`);\n * }\n * ```\n */\nexport function getSkillSlugFromToolCall(\n toolName: string,\n args: Record<string, unknown> | undefined,\n): string | undefined {\n if (!isOctavusSkillTool(toolName) || !args) {\n return undefined;\n }\n\n // Most skill tools have a 'skill' parameter\n if (typeof args.skill === 'string') {\n return args.skill;\n }\n\n return undefined;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/errors/octavus-error.ts","../src/errors/helpers.ts","../src/utils.ts","../src/thread.ts","../src/stream/schemas.ts","../src/internal-tools.ts","../src/skills.ts"],"sourcesContent":["export class AppError extends Error {\n constructor(\n message: string,\n public code: string,\n public statusCode = 500,\n ) {\n super(message);\n this.name = 'AppError';\n }\n}\n\nexport class NotFoundError extends AppError {\n constructor(resource: string, id: string) {\n super(`${resource} not found: ${id}`, 'NOT_FOUND', 404);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ValidationError extends AppError {\n constructor(\n message: string,\n public issues?: unknown[],\n ) {\n super(message, 'VALIDATION_ERROR', 400);\n this.name = 'ValidationError';\n }\n}\n\nexport class ConflictError extends AppError {\n constructor(resource: string, identifier: string) {\n super(`${resource} already exists: ${identifier}`, 'CONFLICT', 409);\n this.name = 'ConflictError';\n }\n}\n\nexport class ForbiddenError extends AppError {\n constructor(message = 'Access denied') {\n super(message, 'FORBIDDEN', 403);\n this.name = 'ForbiddenError';\n }\n}\n","import type {\n ErrorType,\n ErrorSource,\n ProviderErrorInfo,\n ToolErrorInfo,\n OctavusErrorOptions,\n} from './types';\n\n/**\n * Marker key for OctavusError identification.\n * Enables reliable instanceof checks across package versions.\n */\nconst MARKER_KEY = 'octavus.error';\n\n/**\n * Base error class for Octavus streaming errors.\n *\n * Provides structured error information including:\n * - Error type classification for UI handling\n * - Source information (platform, provider, tool)\n * - Retryability flag and retry delay\n * - Provider/tool details when applicable\n *\n * @example\n * ```typescript\n * const error = new OctavusError({\n * errorType: 'rate_limit_error',\n * message: 'Rate limit exceeded. Please try again later.',\n * source: 'provider',\n * retryable: true,\n * retryAfter: 60,\n * provider: {\n * name: 'anthropic',\n * statusCode: 429,\n * requestId: 'req_xxx',\n * },\n * });\n * ```\n */\nexport class OctavusError extends Error {\n /** @internal Marker for cross-version instanceof checks */\n readonly __octavusErrorMarker = MARKER_KEY;\n\n /** Error type classification */\n readonly errorType: ErrorType;\n\n /** Where the error originated */\n readonly source: ErrorSource;\n\n /** Whether automatic retry is possible */\n readonly retryable: boolean;\n\n /** Suggested retry delay in seconds (from provider headers) */\n readonly retryAfter?: number;\n\n /** Machine-readable error code */\n readonly code?: string;\n\n /** Provider details (when source === 'provider') */\n readonly provider?: ProviderErrorInfo;\n\n /** Tool details (when source === 'tool') */\n readonly tool?: ToolErrorInfo;\n\n constructor(options: OctavusErrorOptions) {\n super(options.message);\n this.name = 'OctavusError';\n this.errorType = options.errorType;\n this.source = options.source;\n this.retryable = options.retryable ?? false;\n this.retryAfter = options.retryAfter;\n this.code = options.code;\n this.provider = options.provider;\n this.tool = options.tool;\n\n // Preserve original error stack if available\n if (options.cause instanceof Error && options.cause.stack) {\n this.stack = `${this.stack}\\nCaused by: ${options.cause.stack}`;\n }\n }\n\n /**\n * Check if an unknown value is an OctavusError.\n * Works reliably across package versions using marker property.\n */\n static isInstance(error: unknown): error is OctavusError {\n return (\n typeof error === 'object' &&\n error !== null &&\n '__octavusErrorMarker' in error &&\n (error as { __octavusErrorMarker: string }).__octavusErrorMarker === MARKER_KEY\n );\n }\n\n /**\n * Convert error to plain object for serialization.\n * Used for streaming error events.\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n message: this.message,\n errorType: this.errorType,\n source: this.source,\n retryable: this.retryable,\n retryAfter: this.retryAfter,\n code: this.code,\n provider: this.provider,\n tool: this.tool,\n };\n }\n}\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\n/**\n * Check if an error is a rate limit error.\n */\nexport function isRateLimitError(error: unknown): error is OctavusError {\n return (\n OctavusError.isInstance(error) &&\n (error.errorType === 'rate_limit_error' || error.errorType === 'quota_exceeded_error')\n );\n}\n\n/**\n * Check if an error is an authentication error.\n */\nexport function isAuthenticationError(error: unknown): error is OctavusError {\n return (\n OctavusError.isInstance(error) &&\n (error.errorType === 'authentication_error' || error.errorType === 'permission_error')\n );\n}\n\n/**\n * Check if an error is a provider error.\n */\nexport function isProviderError(error: unknown): error is OctavusError {\n return OctavusError.isInstance(error) && error.source === 'provider';\n}\n\n/**\n * Check if an error is a tool error.\n */\nexport function isToolError(error: unknown): error is OctavusError {\n return (\n OctavusError.isInstance(error) && (error.source === 'tool' || error.errorType === 'tool_error')\n );\n}\n\n/**\n * Check if an error is retryable.\n */\nexport function isRetryableError(error: unknown): boolean {\n if (OctavusError.isInstance(error)) {\n return error.retryable;\n }\n return false;\n}\n\n/**\n * Check if an error is a validation error (non-retryable request issue).\n */\nexport function isValidationError(error: unknown): error is OctavusError {\n return OctavusError.isInstance(error) && error.errorType === 'validation_error';\n}\n","import type { ErrorEvent } from '@/stream/types';\nimport type { ErrorType, ErrorSource, ProviderErrorInfo, ToolErrorInfo } from './types';\nimport type { OctavusError } from './octavus-error';\n\n/**\n * Options for creating an error event.\n */\nexport interface CreateErrorEventOptions {\n errorType: ErrorType;\n message: string;\n source: ErrorSource;\n retryable?: boolean;\n retryAfter?: number;\n code?: string;\n provider?: ProviderErrorInfo;\n tool?: ToolErrorInfo;\n}\n\n/**\n * Create an ErrorEvent from options.\n * Use this for constructing error events in streaming responses.\n */\nexport function createErrorEvent(options: CreateErrorEventOptions): ErrorEvent {\n return {\n type: 'error',\n errorType: options.errorType,\n message: options.message,\n source: options.source,\n retryable: options.retryable ?? false,\n retryAfter: options.retryAfter,\n code: options.code,\n provider: options.provider,\n tool: options.tool,\n };\n}\n\n/**\n * Create an ErrorEvent from an OctavusError.\n */\nexport function errorToStreamEvent(error: OctavusError): ErrorEvent {\n return createErrorEvent({\n errorType: error.errorType,\n message: error.message,\n source: error.source,\n retryable: error.retryable,\n retryAfter: error.retryAfter,\n code: error.code,\n provider: error.provider,\n tool: error.tool,\n });\n}\n\n/**\n * Create an internal error event.\n * Convenience function for platform-level errors.\n */\nexport function createInternalErrorEvent(message: string): ErrorEvent {\n return createErrorEvent({\n errorType: 'internal_error',\n message,\n source: 'platform',\n retryable: false,\n });\n}\n\n/**\n * Map HTTP status code to error type.\n */\nfunction mapStatusCodeToErrorType(statusCode: number): ErrorType {\n switch (statusCode) {\n case 400:\n return 'validation_error';\n case 401:\n return 'authentication_error';\n case 403:\n return 'permission_error';\n case 404:\n return 'not_found_error';\n case 429:\n return 'rate_limit_error';\n case 503:\n return 'provider_overloaded';\n case 504:\n return 'provider_timeout';\n default:\n return statusCode >= 500 ? 'internal_error' : 'unknown_error';\n }\n}\n\n/**\n * Create an error event from an API response.\n * Maps HTTP status codes to appropriate error types.\n *\n * Use this when handling errors from API responses (before streaming starts).\n *\n * @param statusCode - HTTP status code from the response\n * @param message - Error message to display\n */\nexport function createApiErrorEvent(statusCode: number, message: string): ErrorEvent {\n const errorType = mapStatusCodeToErrorType(statusCode);\n // Rate limit and server errors are typically retryable\n const retryable = statusCode === 429 || statusCode >= 500;\n\n return createErrorEvent({\n errorType,\n message,\n source: 'platform',\n retryable,\n });\n}\n","/**\n * Generate a unique ID for messages, tool calls, etc.\n * Format: timestamp-random (e.g., \"1702345678901-abc123def\")\n */\nexport function generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n}\n\n/**\n * Check if an error is an abort error.\n *\n * This handles the various ways abort errors can manifest across different\n * environments (browsers, Node.js, Next.js, etc.).\n *\n * @param error - The error to check\n * @returns True if the error is an abort error\n */\nexport function isAbortError(error: unknown): error is Error {\n return (\n (error instanceof Error || error instanceof DOMException) &&\n (error.name === 'AbortError' ||\n error.name === 'ResponseAborted' || // Next.js\n error.name === 'TimeoutError')\n );\n}\n","/**\n * Default thread name when none is specified.\n */\nexport const MAIN_THREAD = 'main' as const;\n\n/**\n * Resolve a thread name, defaulting to main thread.\n */\nexport function resolveThread(thread: string | undefined): string {\n return thread ?? MAIN_THREAD;\n}\n\n/**\n * Check if a thread is the main thread.\n */\nexport function isMainThread(thread: string | undefined): boolean {\n return thread === undefined || thread === MAIN_THREAD;\n}\n\n/**\n * Normalize thread for storage in message parts.\n * Main thread is stored as undefined to save space.\n */\nexport function threadForPart(thread: string | undefined): string | undefined {\n return isMainThread(thread) ? undefined : thread;\n}\n\n/**\n * Check if a message part belongs to a non-main thread.\n * Non-main thread content (e.g., \"summary\") is typically displayed differently.\n */\nexport function isOtherThread(part: { thread?: string }): boolean {\n return !isMainThread(part.thread);\n}\n","/**\n * Zod schemas for stream events.\n *\n * Schemas are organized into two categories:\n * - Standard Events (====): Common streaming patterns for AI agents\n * - Octavus Events (----): Octavus-specific protocol events\n */\n\nimport { z } from 'zod';\n\nexport const displayModeSchema = z.enum(['hidden', 'name', 'description', 'stream']);\nexport const messageRoleSchema = z.enum(['user', 'assistant', 'system']);\nexport const toolCallStatusSchema = z.enum(['pending', 'streaming', 'available', 'error']);\nexport const finishReasonSchema = z.enum([\n 'stop',\n 'tool-calls',\n 'client-tool-calls',\n 'length',\n 'content-filter',\n 'error',\n 'other',\n]);\n\nexport const toolCallInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n arguments: z.record(z.string(), z.unknown()),\n status: toolCallStatusSchema,\n result: z.unknown().optional(),\n error: z.string().optional(),\n thoughtSignature: z.string().optional(),\n display: displayModeSchema.optional(),\n});\n\n// =============================================================================\n// STANDARD EVENTS\n// =============================================================================\n\n// ============================== Lifecycle ====================================\n\nexport const startEventSchema = z.object({\n type: z.literal('start'),\n messageId: z.string().optional(),\n executionId: z.string().optional(),\n});\n\nexport const finishEventSchema = z.object({\n type: z.literal('finish'),\n finishReason: finishReasonSchema,\n executionId: z.string().optional(),\n});\n\nconst errorTypeSchema = z.enum([\n 'authentication_error',\n 'permission_error',\n 'validation_error',\n 'not_found_error',\n 'rate_limit_error',\n 'quota_exceeded_error',\n 'provider_error',\n 'provider_overloaded',\n 'provider_timeout',\n 'execution_error',\n 'tool_error',\n 'protocol_error',\n 'internal_error',\n 'unknown_error',\n]);\n\nconst errorSourceSchema = z.enum(['platform', 'provider', 'tool', 'client']);\n\nconst providerErrorInfoSchema = z.object({\n name: z.string(),\n model: z.string().optional(),\n statusCode: z.number().optional(),\n errorType: z.string().optional(),\n requestId: z.string().optional(),\n});\n\nconst toolErrorInfoSchema = z.object({\n name: z.string(),\n callId: z.string().optional(),\n});\n\nexport const errorEventSchema = z.object({\n type: z.literal('error'),\n errorType: errorTypeSchema,\n message: z.string(),\n retryable: z.boolean(),\n source: errorSourceSchema,\n retryAfter: z.number().optional(),\n code: z.string().optional(),\n provider: providerErrorInfoSchema.optional(),\n tool: toolErrorInfoSchema.optional(),\n});\n\n// ================================= Text ======================================\n\nexport const textStartEventSchema = z.object({\n type: z.literal('text-start'),\n id: z.string(),\n responseType: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const textDeltaEventSchema = z.object({\n type: z.literal('text-delta'),\n id: z.string(),\n delta: z.string(),\n workerId: z.string().optional(),\n});\n\nexport const textEndEventSchema = z.object({\n type: z.literal('text-end'),\n id: z.string(),\n workerId: z.string().optional(),\n});\n\n// =============================== Reasoning ===================================\n\nexport const reasoningStartEventSchema = z.object({\n type: z.literal('reasoning-start'),\n id: z.string(),\n workerId: z.string().optional(),\n});\n\nexport const reasoningDeltaEventSchema = z.object({\n type: z.literal('reasoning-delta'),\n id: z.string(),\n delta: z.string(),\n workerId: z.string().optional(),\n});\n\nexport const reasoningEndEventSchema = z.object({\n type: z.literal('reasoning-end'),\n id: z.string(),\n workerId: z.string().optional(),\n});\n\n// ================================= Tool ======================================\n\nexport const toolInputStartEventSchema = z.object({\n type: z.literal('tool-input-start'),\n toolCallId: z.string(),\n toolName: z.string(),\n title: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const toolInputDeltaEventSchema = z.object({\n type: z.literal('tool-input-delta'),\n toolCallId: z.string(),\n inputTextDelta: z.string(),\n workerId: z.string().optional(),\n});\n\nexport const toolInputEndEventSchema = z.object({\n type: z.literal('tool-input-end'),\n toolCallId: z.string(),\n workerId: z.string().optional(),\n});\n\nexport const toolInputAvailableEventSchema = z.object({\n type: z.literal('tool-input-available'),\n toolCallId: z.string(),\n toolName: z.string(),\n input: z.unknown(),\n workerId: z.string().optional(),\n});\n\nexport const toolOutputAvailableEventSchema = z.object({\n type: z.literal('tool-output-available'),\n toolCallId: z.string(),\n output: z.unknown(),\n workerId: z.string().optional(),\n});\n\nexport const toolOutputErrorEventSchema = z.object({\n type: z.literal('tool-output-error'),\n toolCallId: z.string(),\n error: z.string(),\n workerId: z.string().optional(),\n});\n\n// ================================ Source =====================================\n\nexport const sourceUrlEventSchema = z.object({\n type: z.literal('source'),\n sourceType: z.literal('url'),\n id: z.string(),\n url: z.string(),\n title: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const sourceDocumentEventSchema = z.object({\n type: z.literal('source'),\n sourceType: z.literal('document'),\n id: z.string(),\n mediaType: z.string(),\n title: z.string(),\n filename: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const sourceEventSchema = z.discriminatedUnion('sourceType', [\n sourceUrlEventSchema,\n sourceDocumentEventSchema,\n]);\n\n// =============================================================================\n// OCTAVUS EVENTS (protocol-specific)\n// =============================================================================\n\n// --------------------------------- Block -------------------------------------\n\nexport const blockStartEventSchema = z.object({\n type: z.literal('block-start'),\n blockId: z.string(),\n blockName: z.string(),\n blockType: z.string(),\n display: displayModeSchema,\n description: z.string().optional(),\n outputToChat: z.boolean().optional(),\n thread: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const blockEndEventSchema = z.object({\n type: z.literal('block-end'),\n blockId: z.string(),\n summary: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const resourceUpdateEventSchema = z.object({\n type: z.literal('resource-update'),\n name: z.string(),\n value: z.unknown(),\n});\n\nexport const pendingToolCallSchema = z.object({\n toolCallId: z.string(),\n toolName: z.string(),\n args: z.record(z.string(), z.unknown()),\n source: z.enum(['llm', 'block']).optional(),\n outputVariable: z.string().optional(),\n blockIndex: z.number().optional(),\n thread: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const toolResultSchema = z.object({\n toolCallId: z.string(),\n toolName: z.string().optional(),\n result: z.unknown().optional(),\n error: z.string().optional(),\n outputVariable: z.string().optional(),\n blockIndex: z.number().optional(),\n thread: z.string().optional(),\n workerId: z.string().optional(),\n});\n\nexport const toolRequestEventSchema = z.object({\n type: z.literal('tool-request'),\n toolCalls: z.array(pendingToolCallSchema),\n workerId: z.string().optional(),\n});\n\nexport const clientToolRequestEventSchema = z.object({\n type: z.literal('client-tool-request'),\n executionId: z.string(),\n toolCalls: z.array(pendingToolCallSchema),\n serverToolResults: z.array(toolResultSchema).optional(),\n});\n\n// --------------------------------- File --------------------------------------\n\n/**\n * Schema for file references used in trigger input and user messages.\n */\nexport const fileReferenceSchema = z.object({\n id: z.string(),\n mediaType: z.string(),\n url: z.string(),\n filename: z.string().optional(),\n size: z.number().optional(),\n});\n\nexport const fileAvailableEventSchema = z.object({\n type: z.literal('file-available'),\n id: z.string(),\n mediaType: z.string(),\n url: z.string(),\n filename: z.string().optional(),\n size: z.number().optional(),\n toolCallId: z.string().optional(),\n workerId: z.string().optional(),\n});\n\n// --------------------------------- Worker ------------------------------------\n\nexport const workerStartEventSchema = z.object({\n type: z.literal('worker-start'),\n workerId: z.string(),\n workerSlug: z.string(),\n description: z.string().optional(),\n});\n\nexport const workerResultEventSchema = z.object({\n type: z.literal('worker-result'),\n workerId: z.string(),\n output: z.unknown().optional(),\n error: z.string().optional(),\n});\n\n// =============================================================================\n// Union of all stream events\n// =============================================================================\n\n// Note: We use z.union here because source events share type: 'source' but\n// differ by sourceType. z.discriminatedUnion requires unique discriminator values.\nexport const streamEventSchema = z.union([\n // Lifecycle events\n startEventSchema,\n finishEventSchema,\n errorEventSchema,\n // Text events\n textStartEventSchema,\n textDeltaEventSchema,\n textEndEventSchema,\n // Reasoning events\n reasoningStartEventSchema,\n reasoningDeltaEventSchema,\n reasoningEndEventSchema,\n // Tool events\n toolInputStartEventSchema,\n toolInputDeltaEventSchema,\n toolInputEndEventSchema,\n toolInputAvailableEventSchema,\n toolOutputAvailableEventSchema,\n toolOutputErrorEventSchema,\n // Source events\n sourceEventSchema,\n // Octavus-specific events\n blockStartEventSchema,\n blockEndEventSchema,\n resourceUpdateEventSchema,\n toolRequestEventSchema,\n clientToolRequestEventSchema,\n fileAvailableEventSchema,\n // Worker events\n workerStartEventSchema,\n workerResultEventSchema,\n]);\n\n// =============================================================================\n// Internal Message Types (used by platform/runtime)\n// =============================================================================\n\nexport const messagePartTypeSchema = z.enum([\n 'text',\n 'reasoning',\n 'tool-call',\n 'operation',\n 'source',\n 'file',\n 'object',\n 'worker',\n]);\n\nexport const sourceUrlInfoSchema = z.object({\n sourceType: z.literal('url'),\n id: z.string(),\n url: z.string(),\n title: z.string().optional(),\n});\n\nexport const sourceDocumentInfoSchema = z.object({\n sourceType: z.literal('document'),\n id: z.string(),\n mediaType: z.string(),\n title: z.string(),\n filename: z.string().optional(),\n});\n\nexport const sourceInfoSchema = z.discriminatedUnion('sourceType', [\n sourceUrlInfoSchema,\n sourceDocumentInfoSchema,\n]);\n\nexport const fileInfoSchema = z.object({\n id: z.string(),\n mediaType: z.string(),\n url: z.string(),\n filename: z.string().optional(),\n size: z.number().optional(),\n toolCallId: z.string().optional(),\n});\n\nexport const objectInfoSchema = z.object({\n id: z.string(),\n typeName: z.string(),\n value: z.unknown(),\n});\n\nexport const operationInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n operationType: z.string(),\n});\n\n// Base message part schema (without worker, for non-recursive use in worker nested parts)\nconst baseMessagePartSchema = z.object({\n type: z.enum(['text', 'reasoning', 'tool-call', 'operation', 'source', 'file', 'object']),\n visible: z.boolean(),\n content: z.string().optional(),\n toolCall: toolCallInfoSchema.optional(),\n operation: operationInfoSchema.optional(),\n source: sourceInfoSchema.optional(),\n file: fileInfoSchema.optional(),\n object: objectInfoSchema.optional(),\n thread: z.string().optional(),\n});\n\n// Worker part info schema (nested parts use base schema to avoid infinite recursion)\nexport const workerPartInfoSchema = z.object({\n workerId: z.string(),\n workerSlug: z.string(),\n description: z.string().optional(),\n // Worker nested parts can contain base parts (text, reasoning, tools, etc.) but not nested workers\n nestedParts: z.array(baseMessagePartSchema),\n output: z.unknown().optional(),\n error: z.string().optional(),\n});\n\n// Full message part schema including worker type\nexport const messagePartSchema = z.object({\n type: messagePartTypeSchema,\n visible: z.boolean(),\n content: z.string().optional(),\n toolCall: toolCallInfoSchema.optional(),\n operation: operationInfoSchema.optional(),\n source: sourceInfoSchema.optional(),\n file: fileInfoSchema.optional(),\n object: objectInfoSchema.optional(),\n worker: workerPartInfoSchema.optional(),\n thread: z.string().optional(),\n});\n\nexport const chatMessageSchema = z.object({\n id: z.string(),\n role: messageRoleSchema,\n parts: z.array(messagePartSchema),\n createdAt: z.string(),\n visible: z.boolean().optional(),\n content: z.string(),\n toolCalls: z.array(toolCallInfoSchema).optional(),\n reasoning: z.string().optional(),\n reasoningSignature: z.string().optional(),\n});\n\n// =============================================================================\n// UI Message Types (used by SDKs and consumer apps)\n// =============================================================================\n\nexport const uiMessageStatusSchema = z.enum(['streaming', 'done']);\nexport const uiPartStatusSchema = z.enum(['streaming', 'done']);\nexport const uiToolCallStatusSchema = z.enum(['pending', 'running', 'done', 'error']);\n\nexport const uiTextPartSchema = z.object({\n type: z.literal('text'),\n text: z.string(),\n status: uiPartStatusSchema,\n thread: z.string().optional(),\n});\n\nexport const uiReasoningPartSchema = z.object({\n type: z.literal('reasoning'),\n text: z.string(),\n status: uiPartStatusSchema,\n thread: z.string().optional(),\n providerMetadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const uiToolCallPartSchema = z.object({\n type: z.literal('tool-call'),\n toolCallId: z.string(),\n toolName: z.string(),\n displayName: z.string().optional(),\n args: z.record(z.string(), z.unknown()),\n result: z.unknown().optional(),\n error: z.string().optional(),\n status: uiToolCallStatusSchema,\n thread: z.string().optional(),\n providerMetadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const uiOperationStatusSchema = z.enum(['running', 'done']);\n\nexport const uiOperationPartSchema = z.object({\n type: z.literal('operation'),\n operationId: z.string(),\n name: z.string(),\n operationType: z.string(),\n status: uiOperationStatusSchema,\n thread: z.string().optional(),\n});\n\nexport const uiSourceUrlPartSchema = z.object({\n type: z.literal('source'),\n sourceType: z.literal('url'),\n id: z.string(),\n url: z.string(),\n title: z.string().optional(),\n thread: z.string().optional(),\n});\n\nexport const uiSourceDocumentPartSchema = z.object({\n type: z.literal('source'),\n sourceType: z.literal('document'),\n id: z.string(),\n mediaType: z.string(),\n title: z.string(),\n filename: z.string().optional(),\n thread: z.string().optional(),\n});\n\nexport const uiSourcePartSchema = z.discriminatedUnion('sourceType', [\n uiSourceUrlPartSchema,\n uiSourceDocumentPartSchema,\n]);\n\nexport const uiFilePartSchema = z.object({\n type: z.literal('file'),\n id: z.string(),\n mediaType: z.string(),\n url: z.string(),\n filename: z.string().optional(),\n size: z.number().optional(),\n toolCallId: z.string().optional(),\n thread: z.string().optional(),\n});\n\nexport const uiObjectStatusSchema = z.enum(['streaming', 'done', 'error']);\n\nexport const uiObjectPartSchema = z.object({\n type: z.literal('object'),\n id: z.string(),\n typeName: z.string(),\n partial: z.unknown().optional(),\n object: z.unknown().optional(),\n status: uiObjectStatusSchema,\n error: z.string().optional(),\n thread: z.string().optional(),\n});\n\nexport const uiWorkerStatusSchema = z.enum(['running', 'done', 'error']);\n\n// Note: We use z.union here because source parts share type: 'source' but\n// differ by sourceType. z.discriminatedUnion requires unique discriminator values.\n// Base parts schema (without worker, for non-recursive use)\nconst baseUiMessagePartSchema = z.union([\n uiTextPartSchema,\n uiReasoningPartSchema,\n uiToolCallPartSchema,\n uiOperationPartSchema,\n uiSourcePartSchema,\n uiFilePartSchema,\n uiObjectPartSchema,\n]);\n\n// Worker part schema with nested parts (uses base schema to avoid infinite recursion)\nexport const uiWorkerPartSchema = z.object({\n type: z.literal('worker'),\n workerId: z.string(),\n workerSlug: z.string(),\n description: z.string().optional(),\n // Worker parts can contain base parts (text, reasoning, tools, etc.) but not nested workers\n parts: z.array(baseUiMessagePartSchema),\n output: z.unknown().optional(),\n error: z.string().optional(),\n status: uiWorkerStatusSchema,\n});\n\n// Full message part schema including workers\nexport const uiMessagePartSchema = z.union([\n uiTextPartSchema,\n uiReasoningPartSchema,\n uiToolCallPartSchema,\n uiOperationPartSchema,\n uiSourcePartSchema,\n uiFilePartSchema,\n uiObjectPartSchema,\n uiWorkerPartSchema,\n]);\n\nexport const uiMessageSchema = z.object({\n id: z.string(),\n role: z.enum(['user', 'assistant']),\n parts: z.array(uiMessagePartSchema),\n status: uiMessageStatusSchema,\n createdAt: z.coerce.date(),\n});\n\nexport function safeParseStreamEvent(data: unknown) {\n return streamEventSchema.safeParse(data);\n}\n\nexport function safeParseUIMessage(data: unknown) {\n return uiMessageSchema.safeParse(data);\n}\n\nexport function safeParseUIMessages(data: unknown) {\n return z.array(uiMessageSchema).safeParse(data);\n}\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\n/**\n * Type guard to check if a value is a FileReference object.\n */\nexport function isFileReference(value: unknown): value is z.infer<typeof fileReferenceSchema> {\n return fileReferenceSchema.safeParse(value).success;\n}\n\n/**\n * Type guard to check if a value is an array of FileReference objects.\n */\nexport function isFileReferenceArray(\n value: unknown,\n): value is z.infer<typeof fileReferenceSchema>[] {\n return z.array(fileReferenceSchema).safeParse(value).success;\n}\n","/**\n * Internal Octavus tool definitions.\n *\n * These tools are reserved by Octavus and executed server-side.\n * User-defined tools and workers cannot use the \"octavus_\" prefix.\n */\n\n/**\n * Prefix reserved for internal Octavus tools.\n * User-defined tools/workers cannot use this prefix.\n */\nexport const OCTAVUS_INTERNAL_PREFIX = 'octavus_';\n\n/**\n * All internal Octavus tool names.\n *\n * These are tools that are executed server-side by the Octavus runtime.\n * They should never be sent to client handlers.\n */\nexport const OCTAVUS_INTERNAL_TOOLS = {\n // === Skill Tools (executed in E2B sandboxes) ===\n /** Read skill documentation (SKILL.md) */\n SKILL_READ: 'octavus_skill_read',\n /** List available scripts in a skill */\n SKILL_LIST: 'octavus_skill_list',\n /** Execute a pre-built skill script */\n SKILL_RUN: 'octavus_skill_run',\n /** Execute Python/Bash code in sandbox */\n CODE_RUN: 'octavus_code_run',\n /** Create/write files in sandbox */\n FILE_WRITE: 'octavus_file_write',\n /** Read files from sandbox */\n FILE_READ: 'octavus_file_read',\n\n // === Image Generation ===\n /** Generate images using AI models */\n GENERATE_IMAGE: 'octavus_generate_image',\n} as const;\n\nexport type OctavusInternalToolName =\n (typeof OCTAVUS_INTERNAL_TOOLS)[keyof typeof OCTAVUS_INTERNAL_TOOLS];\n\n/**\n * Check if a tool name is an internal Octavus tool.\n *\n * Internal tools are reserved by Octavus and executed server-side.\n * User-defined tools cannot start with \"octavus_\".\n *\n * @example\n * ```typescript\n * if (isOctavusInternalTool(toolName)) {\n * // This is an internal Octavus tool, skip client handling\n * }\n * ```\n */\nexport function isOctavusInternalTool(toolName: string): boolean {\n return toolName.startsWith(OCTAVUS_INTERNAL_PREFIX);\n}\n\n/**\n * Skill tool names (subset of internal tools).\n *\n * Use this for skill-specific filtering. For checking if any tool is internal,\n * use `isOctavusInternalTool()` instead.\n */\nexport const OCTAVUS_SKILL_TOOLS = {\n SKILL_READ: OCTAVUS_INTERNAL_TOOLS.SKILL_READ,\n SKILL_LIST: OCTAVUS_INTERNAL_TOOLS.SKILL_LIST,\n SKILL_RUN: OCTAVUS_INTERNAL_TOOLS.SKILL_RUN,\n CODE_RUN: OCTAVUS_INTERNAL_TOOLS.CODE_RUN,\n FILE_WRITE: OCTAVUS_INTERNAL_TOOLS.FILE_WRITE,\n FILE_READ: OCTAVUS_INTERNAL_TOOLS.FILE_READ,\n} as const;\n\nexport type OctavusSkillToolName = (typeof OCTAVUS_SKILL_TOOLS)[keyof typeof OCTAVUS_SKILL_TOOLS];\n\n/**\n * Check if a tool name is an Octavus skill tool.\n *\n * Skill tools are a subset of internal tools that execute in E2B sandboxes.\n *\n * @example\n * ```typescript\n * if (isOctavusSkillTool(event.toolName)) {\n * // This is a skill tool, executed in E2B sandbox\n * const skillSlug = event.input?.skill;\n * }\n * ```\n */\nexport function isOctavusSkillTool(toolName: string): toolName is OctavusSkillToolName {\n return Object.values(OCTAVUS_SKILL_TOOLS).includes(toolName as OctavusSkillToolName);\n}\n","/**\n * Skill-specific utilities.\n *\n * For internal tool definitions and checking, see internal-tools.ts\n */\n\nimport {\n isOctavusSkillTool,\n OCTAVUS_SKILL_TOOLS,\n type OctavusSkillToolName,\n} from './internal-tools';\n\n// Re-export skill tool constants for backward compatibility\nexport { OCTAVUS_SKILL_TOOLS, isOctavusSkillTool, type OctavusSkillToolName };\n\n/**\n * Extract skill slug from skill tool arguments.\n *\n * Most skill tools include a `skill` parameter with the skill slug.\n * Returns undefined if the tool is not a skill tool or if the skill slug is not present.\n *\n * @example\n * ```typescript\n * const slug = getSkillSlugFromToolCall(event.toolName, event.input);\n * if (slug) {\n * console.log(`Using skill: ${slug}`);\n * }\n * ```\n */\nexport function getSkillSlugFromToolCall(\n toolName: string,\n args: Record<string, unknown> | undefined,\n): string | undefined {\n if (!isOctavusSkillTool(toolName) || !args) {\n return undefined;\n }\n\n // Most skill tools have a 'skill' parameter\n if (typeof args.skill === 'string') {\n return args.skill;\n }\n\n return undefined;\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@octavus/core",
3
- "version": "2.3.0",
3
+ "version": "2.5.0",
4
4
  "description": "Public types and utilities for Octavus client/server SDK communication",
5
5
  "license": "MIT",
6
6
  "author": "Octavus AI <dev@octavus.ai>",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "https://github.com/octavus-ai/js-sdk.git",
9
+ "url": "https://github.com/octavus-ai/agent-sdk.git",
10
10
  "directory": "packages/core"
11
11
  },
12
12
  "homepage": "https://octavus.ai",
13
13
  "bugs": {
14
- "url": "https://github.com/octavus-ai/js-sdk/issues"
14
+ "url": "https://github.com/octavus-ai/agent-sdk/issues"
15
15
  },
16
16
  "keywords": [
17
17
  "octavus",