@octavus/core 2.4.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
@@ -194,6 +194,8 @@ interface ToolCallInfo {
194
194
  error?: string;
195
195
  /** Google Gemini 3 thought signature - required for tool call continuation */
196
196
  thoughtSignature?: string;
197
+ /** Display mode from tool definition - controls what data flows to UIMessage */
198
+ display?: DisplayMode;
197
199
  }
198
200
  /** Signals the start of a response message */
199
201
  interface StartEvent {
@@ -705,6 +707,12 @@ interface UIReasoningPart {
705
707
  status: UIPartStatus;
706
708
  /** Thread name (undefined or 'main' for main thread) */
707
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>;
708
716
  }
709
717
  /**
710
718
  * Tool call status for UI
@@ -725,6 +733,12 @@ interface UIToolCallPart {
725
733
  status: UIToolCallStatus;
726
734
  /** Thread name (undefined or 'main' for main thread) */
727
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>;
728
742
  }
729
743
  /**
730
744
  * Operation status for UI
@@ -1003,6 +1017,13 @@ declare const chatMessageSchema: z.ZodObject<{
1003
1017
  }>;
1004
1018
  result: z.ZodOptional<z.ZodUnknown>;
1005
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
+ }>>;
1006
1027
  }, z.core.$strip>>;
1007
1028
  operation: z.ZodOptional<z.ZodObject<{
1008
1029
  id: z.ZodString;
@@ -1063,6 +1084,13 @@ declare const chatMessageSchema: z.ZodObject<{
1063
1084
  }>;
1064
1085
  result: z.ZodOptional<z.ZodUnknown>;
1065
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
+ }>>;
1066
1094
  }, z.core.$strip>>;
1067
1095
  operation: z.ZodOptional<z.ZodObject<{
1068
1096
  id: z.ZodString;
@@ -1117,6 +1145,13 @@ declare const chatMessageSchema: z.ZodObject<{
1117
1145
  }>;
1118
1146
  result: z.ZodOptional<z.ZodUnknown>;
1119
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
+ }>>;
1120
1155
  }, z.core.$strip>>>;
1121
1156
  reasoning: z.ZodOptional<z.ZodString>;
1122
1157
  reasoningSignature: z.ZodOptional<z.ZodString>;
@@ -1147,6 +1182,7 @@ declare const uiWorkerPartSchema: z.ZodObject<{
1147
1182
  done: "done";
1148
1183
  }>;
1149
1184
  thread: z.ZodOptional<z.ZodString>;
1185
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1150
1186
  }, z.core.$strip>, z.ZodObject<{
1151
1187
  type: z.ZodLiteral<"tool-call">;
1152
1188
  toolCallId: z.ZodString;
@@ -1162,6 +1198,7 @@ declare const uiWorkerPartSchema: z.ZodObject<{
1162
1198
  running: "running";
1163
1199
  }>;
1164
1200
  thread: z.ZodOptional<z.ZodString>;
1201
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1165
1202
  }, z.core.$strip>, z.ZodObject<{
1166
1203
  type: z.ZodLiteral<"operation">;
1167
1204
  operationId: z.ZodString;
@@ -1234,6 +1271,7 @@ declare const uiMessagePartSchema: z.ZodUnion<readonly [z.ZodObject<{
1234
1271
  done: "done";
1235
1272
  }>;
1236
1273
  thread: z.ZodOptional<z.ZodString>;
1274
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1237
1275
  }, z.core.$strip>, z.ZodObject<{
1238
1276
  type: z.ZodLiteral<"tool-call">;
1239
1277
  toolCallId: z.ZodString;
@@ -1249,6 +1287,7 @@ declare const uiMessagePartSchema: z.ZodUnion<readonly [z.ZodObject<{
1249
1287
  running: "running";
1250
1288
  }>;
1251
1289
  thread: z.ZodOptional<z.ZodString>;
1290
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1252
1291
  }, z.core.$strip>, z.ZodObject<{
1253
1292
  type: z.ZodLiteral<"operation">;
1254
1293
  operationId: z.ZodString;
@@ -1317,6 +1356,7 @@ declare const uiMessagePartSchema: z.ZodUnion<readonly [z.ZodObject<{
1317
1356
  done: "done";
1318
1357
  }>;
1319
1358
  thread: z.ZodOptional<z.ZodString>;
1359
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1320
1360
  }, z.core.$strip>, z.ZodObject<{
1321
1361
  type: z.ZodLiteral<"tool-call">;
1322
1362
  toolCallId: z.ZodString;
@@ -1332,6 +1372,7 @@ declare const uiMessagePartSchema: z.ZodUnion<readonly [z.ZodObject<{
1332
1372
  running: "running";
1333
1373
  }>;
1334
1374
  thread: z.ZodOptional<z.ZodString>;
1375
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1335
1376
  }, z.core.$strip>, z.ZodObject<{
1336
1377
  type: z.ZodLiteral<"operation">;
1337
1378
  operationId: z.ZodString;
@@ -1410,6 +1451,7 @@ declare const uiMessageSchema: z.ZodObject<{
1410
1451
  done: "done";
1411
1452
  }>;
1412
1453
  thread: z.ZodOptional<z.ZodString>;
1454
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1413
1455
  }, z.core.$strip>, z.ZodObject<{
1414
1456
  type: z.ZodLiteral<"tool-call">;
1415
1457
  toolCallId: z.ZodString;
@@ -1425,6 +1467,7 @@ declare const uiMessageSchema: z.ZodObject<{
1425
1467
  running: "running";
1426
1468
  }>;
1427
1469
  thread: z.ZodOptional<z.ZodString>;
1470
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1428
1471
  }, z.core.$strip>, z.ZodObject<{
1429
1472
  type: z.ZodLiteral<"operation">;
1430
1473
  operationId: z.ZodString;
@@ -1493,6 +1536,7 @@ declare const uiMessageSchema: z.ZodObject<{
1493
1536
  done: "done";
1494
1537
  }>;
1495
1538
  thread: z.ZodOptional<z.ZodString>;
1539
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1496
1540
  }, z.core.$strip>, z.ZodObject<{
1497
1541
  type: z.ZodLiteral<"tool-call">;
1498
1542
  toolCallId: z.ZodString;
@@ -1508,6 +1552,7 @@ declare const uiMessageSchema: z.ZodObject<{
1508
1552
  running: "running";
1509
1553
  }>;
1510
1554
  thread: z.ZodOptional<z.ZodString>;
1555
+ providerMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1511
1556
  }, z.core.$strip>, z.ZodObject<{
1512
1557
  type: z.ZodLiteral<"operation">;
1513
1558
  operationId: z.ZodString;
@@ -1773,6 +1818,7 @@ declare function safeParseUIMessage(data: unknown): z.ZodSafeParseResult<{
1773
1818
  text: string;
1774
1819
  status: "streaming" | "done";
1775
1820
  thread?: string | undefined;
1821
+ providerMetadata?: Record<string, unknown> | undefined;
1776
1822
  } | {
1777
1823
  type: "tool-call";
1778
1824
  toolCallId: string;
@@ -1783,6 +1829,7 @@ declare function safeParseUIMessage(data: unknown): z.ZodSafeParseResult<{
1783
1829
  result?: unknown;
1784
1830
  error?: string | undefined;
1785
1831
  thread?: string | undefined;
1832
+ providerMetadata?: Record<string, unknown> | undefined;
1786
1833
  } | {
1787
1834
  type: "operation";
1788
1835
  operationId: string;
@@ -1837,6 +1884,7 @@ declare function safeParseUIMessage(data: unknown): z.ZodSafeParseResult<{
1837
1884
  text: string;
1838
1885
  status: "streaming" | "done";
1839
1886
  thread?: string | undefined;
1887
+ providerMetadata?: Record<string, unknown> | undefined;
1840
1888
  } | {
1841
1889
  type: "tool-call";
1842
1890
  toolCallId: string;
@@ -1847,6 +1895,7 @@ declare function safeParseUIMessage(data: unknown): z.ZodSafeParseResult<{
1847
1895
  result?: unknown;
1848
1896
  error?: string | undefined;
1849
1897
  thread?: string | undefined;
1898
+ providerMetadata?: Record<string, unknown> | undefined;
1850
1899
  } | {
1851
1900
  type: "operation";
1852
1901
  operationId: string;
@@ -1909,6 +1958,7 @@ declare function safeParseUIMessages(data: unknown): z.ZodSafeParseResult<{
1909
1958
  text: string;
1910
1959
  status: "streaming" | "done";
1911
1960
  thread?: string | undefined;
1961
+ providerMetadata?: Record<string, unknown> | undefined;
1912
1962
  } | {
1913
1963
  type: "tool-call";
1914
1964
  toolCallId: string;
@@ -1919,6 +1969,7 @@ declare function safeParseUIMessages(data: unknown): z.ZodSafeParseResult<{
1919
1969
  result?: unknown;
1920
1970
  error?: string | undefined;
1921
1971
  thread?: string | undefined;
1972
+ providerMetadata?: Record<string, unknown> | undefined;
1922
1973
  } | {
1923
1974
  type: "operation";
1924
1975
  operationId: string;
@@ -1973,6 +2024,7 @@ declare function safeParseUIMessages(data: unknown): z.ZodSafeParseResult<{
1973
2024
  text: string;
1974
2025
  status: "streaming" | "done";
1975
2026
  thread?: string | undefined;
2027
+ providerMetadata?: Record<string, unknown> | undefined;
1976
2028
  } | {
1977
2029
  type: "tool-call";
1978
2030
  toolCallId: string;
@@ -1983,6 +2035,7 @@ declare function safeParseUIMessages(data: unknown): z.ZodSafeParseResult<{
1983
2035
  result?: unknown;
1984
2036
  error?: string | undefined;
1985
2037
  thread?: string | undefined;
2038
+ providerMetadata?: Record<string, unknown> | undefined;
1986
2039
  } | {
1987
2040
  type: "operation";
1988
2041
  operationId: string;
@@ -2027,10 +2080,58 @@ declare function isFileReference(value: unknown): value is z.infer<typeof fileRe
2027
2080
  declare function isFileReferenceArray(value: unknown): value is z.infer<typeof fileReferenceSchema>[];
2028
2081
 
2029
2082
  /**
2030
- * 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.
2031
2095
  *
2032
- * These are internal tools executed in E2B sandboxes.
2033
- * 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.
2034
2135
  */
2035
2136
  declare const OCTAVUS_SKILL_TOOLS: {
2036
2137
  readonly SKILL_READ: "octavus_skill_read";
@@ -2042,21 +2143,28 @@ declare const OCTAVUS_SKILL_TOOLS: {
2042
2143
  };
2043
2144
  type OctavusSkillToolName = (typeof OCTAVUS_SKILL_TOOLS)[keyof typeof OCTAVUS_SKILL_TOOLS];
2044
2145
  /**
2045
- * 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.
2046
2149
  *
2047
2150
  * @example
2048
2151
  * ```typescript
2049
2152
  * if (isOctavusSkillTool(event.toolName)) {
2050
2153
  * // This is a skill tool, executed in E2B sandbox
2051
2154
  * const skillSlug = event.input?.skill;
2052
- * } else {
2053
- * // This is an external tool, executed on consumer's server
2054
2155
  * }
2055
2156
  * ```
2056
2157
  */
2057
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
+
2058
2166
  /**
2059
- * Extract skill slug from skill tool arguments
2167
+ * Extract skill slug from skill tool arguments.
2060
2168
  *
2061
2169
  * Most skill tools include a `skill` parameter with the skill slug.
2062
2170
  * Returns undefined if the tool is not a skill tool or if the skill slug is not present.
@@ -2071,4 +2179,4 @@ declare function isOctavusSkillTool(toolName: string): toolName is OctavusSkillT
2071
2179
  */
2072
2180
  declare function getSkillSlugFromToolCall(toolName: string, args: Record<string, unknown> | undefined): string | undefined;
2073
2181
 
2074
- 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,6 +1,6 @@
1
1
  {
2
2
  "name": "@octavus/core",
3
- "version": "2.4.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>",