@effect/ai 0.29.1 → 0.31.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.
@@ -1 +1 @@
1
- {"version":3,"file":"Tool.js","names":["Context","Effect","constFalse","constTrue","identity","JsonSchema","Option","pipeArguments","Predicate","Schema","AST","AiError","TypeId","ProviderDefinedTypeId","isUserDefined","u","hasProperty","isProviderDefined","Proto","_Requirements","pipe","arguments","addDependency","userDefinedProto","setParameters","parametersSchema","isSchema","Struct","setSuccess","successSchema","setFailure","failureSchema","annotate","tag","value","annotations","add","annotateContext","context","merge","ProviderDefinedProto","decodeResult","result","decodeUnknown","orElse","mapError","cause","MalformedOutput","module","method","description","name","options","self","Object","assign","create","id","providerDefinedProto","constEmptyStruct","make","success","Void","failure","Never","parameters","empty","providerDefined","args","resultSchema","EitherFromUnion","right","left","toolkitName","providerName","argsSchema","requiresHandler","fromTaggedRequest","schema","_tag","getOrUndefined","getDescriptionAnnotation","ast","to","getDescription","tool","isNotUndefined","getDescriptionFromSchemaAst","DescriptionAnnotationId","undefined","getJsonSchema","getJsonSchemaFromSchemaAst","props","getPropertySignatures","length","type","properties","required","additionalProperties","$defs","fromAST","definitions","topLevelReferenceStrategy","keys","Title","Tag","Readonly","Reference","defaultValue","Destructive","Idempotent","OpenWorld","suspectProtoRx","suspectConstructorRx","_parse","text","obj","JSON","parse","test","filter","next","nodes","node","prototype","hasOwnProperty","call","SyntaxError","constructor","key","push","unsafeSecureJsonParse","stackTraceLimit","Error"],"sources":["../../src/Tool.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Tool.js","names":["Context","constFalse","constTrue","identity","JsonSchema","Option","pipeArguments","Predicate","Schema","AST","TypeId","ProviderDefinedTypeId","isUserDefined","u","hasProperty","isProviderDefined","Proto","_Requirements","pipe","arguments","addDependency","userDefinedProto","setParameters","parametersSchema","isSchema","Struct","setSuccess","successSchema","setFailure","failureSchema","annotate","tag","value","annotations","add","annotateContext","context","merge","ProviderDefinedProto","options","self","Object","assign","create","id","name","providerDefinedProto","constEmptyStruct","make","success","Void","failure","Never","description","parameters","failureMode","empty","providerDefined","args","undefined","toolkitName","providerName","argsSchema","requiresHandler","fromTaggedRequest","schema","_tag","getOrUndefined","getDescriptionAnnotation","ast","to","getDescription","tool","isNotUndefined","getDescriptionFromSchemaAst","DescriptionAnnotationId","getJsonSchema","getJsonSchemaFromSchemaAst","props","getPropertySignatures","length","type","properties","required","additionalProperties","$defs","fromAST","definitions","topLevelReferenceStrategy","keys","Title","Tag","Readonly","Reference","defaultValue","Destructive","Idempotent","OpenWorld","suspectProtoRx","suspectConstructorRx","_parse","text","obj","JSON","parse","test","filter","next","nodes","node","prototype","hasOwnProperty","call","SyntaxError","constructor","key","push","unsafeSecureJsonParse","stackTraceLimit","Error"],"sources":["../../src/Tool.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -43,6 +43,7 @@ import { CommitPrototype } from "effect/Effectable";
43
43
  import { identity } from "effect/Function";
44
44
  import { BaseProto as InspectableProto } from "effect/Inspectable";
45
45
  import * as Layer from "effect/Layer";
46
+ import * as ParseResult from "effect/ParseResult";
46
47
  import { pipeArguments } from "effect/Pipeable";
47
48
  import * as Predicate from "effect/Predicate";
48
49
  import * as Schema from "effect/Schema";
@@ -86,17 +87,16 @@ const Proto = {
86
87
  let schemas = schemasCache.get(tool);
87
88
  if (Predicate.isUndefined(schemas)) {
88
89
  const handler = context.unsafeMap.get(tool.id);
89
- const encodeSuccess = Schema.encodeUnknown(tool.successSchema);
90
- const encodeFailure = Schema.encodeUnknown(tool.failureSchema);
91
- const decodeFailure = Schema.decodeUnknown(tool.failureSchema);
92
90
  const decodeParameters = Schema.decodeUnknown(tool.parametersSchema);
91
+ const resultSchema = Schema.Union(tool.successSchema, tool.failureSchema);
92
+ const validateResult = Schema.validate(resultSchema);
93
+ const encodeResult = Schema.encodeUnknown(resultSchema);
93
94
  schemas = {
94
95
  context: handler.context,
95
96
  handler: handler.handler,
96
- encodeSuccess,
97
- encodeFailure,
98
- decodeFailure,
99
- decodeParameters
97
+ decodeParameters,
98
+ validateResult,
99
+ encodeResult
100
100
  };
101
101
  schemasCache.set(tool, schemas);
102
102
  }
@@ -125,19 +125,34 @@ const Proto = {
125
125
  description: `Failed to decode tool call parameters for tool '${name}' from:\n'${JSON.stringify(params, undefined, 2)}'`,
126
126
  cause
127
127
  }));
128
- const result = yield* schemas.handler(decodedParams).pipe(Effect.mapInputContext(input => Context.merge(schemas.context, input)), Effect.catchAll(error => schemas.decodeFailure(error).pipe(Effect.mapError(cause => new AiError.MalformedInput({
128
+ const {
129
+ isFailure,
130
+ result
131
+ } = yield* schemas.handler(decodedParams).pipe(Effect.map(result => ({
132
+ result,
133
+ isFailure: false
134
+ })), Effect.catchAll(error =>
135
+ // If the tool handler failed, check the tool's failure mode to
136
+ // determine how the result should be returned to the end user
137
+ tool.failureMode === "error" ? Effect.fail(error) : Effect.succeed({
138
+ result: error,
139
+ isFailure: true
140
+ })), Effect.tap(({
141
+ result
142
+ }) => schemas.validateResult(result)), Effect.mapInputContext(input => Context.merge(schemas.context, input)), Effect.mapError(cause => ParseResult.isParseError(cause) ? new AiError.MalformedInput({
129
143
  module: "Toolkit",
130
144
  method: `${name}.handle`,
131
- description: `Failed to decode tool call failure for tool '${name}'`,
145
+ description: `Failed to validate tool call result for tool '${name}'`,
132
146
  cause
133
- })), Effect.flatMap(Effect.fail))));
134
- const encodedResult = yield* Effect.mapError(schemas.encodeSuccess(result), cause => new AiError.MalformedInput({
147
+ }) : cause));
148
+ const encodedResult = yield* Effect.mapError(schemas.encodeResult(result), cause => new AiError.MalformedInput({
135
149
  module: "Toolkit",
136
150
  method: `${name}.handle`,
137
151
  description: `Failed to encode tool call result for tool '${name}'`,
138
152
  cause
139
153
  }));
140
154
  return {
155
+ isFailure,
141
156
  result,
142
157
  encodedResult
143
158
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Toolkit.js","names":["Context","Effect","CommitPrototype","identity","BaseProto","InspectableProto","Layer","pipeArguments","Predicate","Schema","AiError","Tool","TypeId","Proto","of","toContext","build","gen","context","handlers","isEffect","contextMap","Map","name","handler","Object","entries","tool","tools","set","id","unsafeMake","toLayer","scopedContext","commit","schemasCache","WeakMap","getSchemas","schemas","get","isUndefined","unsafeMap","encodeSuccess","encodeUnknown","successSchema","encodeFailure","failureSchema","decodeFailure","decodeUnknown","decodeParameters","parametersSchema","handle","fn","captureStackTrace","params","annotateCurrentSpan","parameters","toolNames","keys","join","MalformedOutput","module","method","description","decodedParams","mapError","cause","JSON","stringify","undefined","result","pipe","mapInputContext","input","merge","catchAll","error","MalformedInput","flatMap","fail","encodedResult","toJSON","_id","Array","from","values","map","arguments","makeProto","assign","resolveInput","output","value","isSchema","fromTaggedRequest","empty","make","toolkits","toolkit"],"sources":["../../src/Toolkit.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Toolkit.js","names":["Context","Effect","CommitPrototype","identity","BaseProto","InspectableProto","Layer","ParseResult","pipeArguments","Predicate","Schema","AiError","Tool","TypeId","Proto","of","toContext","build","gen","context","handlers","isEffect","contextMap","Map","name","handler","Object","entries","tool","tools","set","id","unsafeMake","toLayer","scopedContext","commit","schemasCache","WeakMap","getSchemas","schemas","get","isUndefined","unsafeMap","decodeParameters","decodeUnknown","parametersSchema","resultSchema","Union","successSchema","failureSchema","validateResult","validate","encodeResult","encodeUnknown","handle","fn","captureStackTrace","params","annotateCurrentSpan","parameters","toolNames","keys","join","MalformedOutput","module","method","description","decodedParams","mapError","cause","JSON","stringify","undefined","isFailure","result","pipe","map","catchAll","error","failureMode","fail","succeed","tap","mapInputContext","input","merge","isParseError","MalformedInput","encodedResult","toJSON","_id","Array","from","values","arguments","makeProto","assign","resolveInput","output","value","isSchema","fromTaggedRequest","empty","make","toolkits","toolkit"],"sources":["../../src/Toolkit.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/ai",
3
- "version": "0.29.1",
3
+ "version": "0.31.0",
4
4
  "description": "Effect modules for working with AI apis",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -15,9 +15,9 @@
15
15
  },
16
16
  "peerDependencies": {
17
17
  "@effect/experimental": "^0.56.0",
18
+ "@effect/platform": "^0.92.1",
18
19
  "@effect/rpc": "^0.71.0",
19
- "@effect/platform": "^0.92.0",
20
- "effect": "^3.18.1"
20
+ "effect": "^3.18.4"
21
21
  },
22
22
  "publishConfig": {
23
23
  "provenance": true
@@ -415,17 +415,19 @@ export class GenerateObjectResponse<Tools extends Record<string, Tool.Any>, A> e
415
415
  * @category Utility Types
416
416
  */
417
417
  export type ExtractError<Options> = Options extends {
418
+ readonly toolkit: Toolkit.WithHandler<infer _Tools>
418
419
  readonly disableToolCallResolution: true
419
- } ? Options extends {
420
+ } ? AiError.AiError
421
+ : Options extends {
420
422
  readonly toolkit: Effect.Effect<Toolkit.WithHandler<infer _Tools>, infer _E, infer _R>
421
- } ? AiError.AiError | _E :
422
- AiError.AiError :
423
- Options extends {
423
+ readonly disableToolCallResolution: true
424
+ } ? AiError.AiError | _E
425
+ : Options extends {
424
426
  readonly toolkit: Toolkit.WithHandler<infer _Tools>
425
- } ? AiError.AiError | Tool.Failure<_Tools[keyof _Tools]>
427
+ } ? AiError.AiError | Tool.HandlerError<_Tools[keyof _Tools]>
426
428
  : Options extends {
427
429
  readonly toolkit: Effect.Effect<Toolkit.WithHandler<infer _Tools>, infer _E, infer _R>
428
- } ? AiError.AiError | Tool.Failure<_Tools[keyof _Tools]> | _E :
430
+ } ? AiError.AiError | Tool.HandlerError<_Tools[keyof _Tools]> | _E :
429
431
  AiError.AiError
430
432
 
431
433
  /**
@@ -983,8 +985,14 @@ const resolveToolCalls = <Tools extends Record<string, Tool.Any>>(
983
985
  toolkit: Toolkit.WithHandler<Tools>,
984
986
  concurrency: Concurrency | undefined
985
987
  ): Effect.Effect<
986
- ReadonlyArray<Response.ToolResultPart<Tool.Name<Tools[keyof Tools]>, Tool.Success<Tools[keyof Tools]>>>,
987
- Tool.Failure<Tools[keyof Tools]>,
988
+ ReadonlyArray<
989
+ Response.ToolResultPart<
990
+ Tool.Name<Tools[keyof Tools]>,
991
+ Tool.Success<Tools[keyof Tools]>,
992
+ Tool.Failure<Tools[keyof Tools]>
993
+ >
994
+ >,
995
+ Tool.HandlerError<Tools[keyof Tools]>,
988
996
  Tool.Requirements<Tools[keyof Tools]>
989
997
  > => {
990
998
  const toolNames: Array<string> = []
@@ -1002,14 +1010,17 @@ const resolveToolCalls = <Tools extends Record<string, Tool.Any>>(
1002
1010
 
1003
1011
  return Effect.forEach(toolCalls, (toolCall) => {
1004
1012
  return toolkit.handle(toolCall.name, toolCall.params as any).pipe(
1005
- Effect.map(({ encodedResult, result }) =>
1013
+ Effect.map(({ encodedResult, isFailure, result }) =>
1006
1014
  Response.makePart("tool-result", {
1007
1015
  id: toolCall.id,
1008
1016
  name: toolCall.name,
1009
1017
  result,
1010
1018
  encodedResult,
1011
- providerName: toolCall.providerName,
1012
- providerExecuted: false
1019
+ isFailure,
1020
+ providerExecuted: false,
1021
+ ...(toolCall.providerName !== undefined
1022
+ ? { providerName: toolCall.providerName }
1023
+ : {})
1013
1024
  })
1014
1025
  )
1015
1026
  )
package/src/Prompt.ts CHANGED
@@ -226,12 +226,26 @@ export const makePart = <const Type extends Part["type"]>(
226
226
  }
227
227
  ): Extract<Part, { type: Type }> =>
228
228
  (({
229
- ...params,
230
- [PartTypeId]: PartTypeId,
231
- type,
232
- options: params.options ?? {}
229
+ ...params,
230
+ [PartTypeId]: PartTypeId,
231
+ type,
232
+ options: params.options ?? {}
233
233
  }) as any)
234
234
 
235
+ /**
236
+ * A utility type for specifying the parameters required to construct a
237
+ * specific part of a prompt.
238
+ *
239
+ * @since 1.0.0
240
+ * @category Utility Types
241
+ */
242
+ export type PartConstructorParams<P extends Part> = Omit<P, PartTypeId | "type" | "options"> & {
243
+ /**
244
+ * Optional provider-specific options for this part.
245
+ */
246
+ readonly options?: Part["options"] | undefined
247
+ }
248
+
235
249
  // =============================================================================
236
250
  // Text Part
237
251
  // =============================================================================
@@ -297,6 +311,14 @@ export const TextPart: Schema.Schema<TextPart, TextPartEncoded> = Schema.Struct(
297
311
  Schema.annotations({ identifier: "TextPart" })
298
312
  )
299
313
 
314
+ /**
315
+ * Constructs a new text part.
316
+ *
317
+ * @since 1.0.0
318
+ * @category Constructors
319
+ */
320
+ export const textPart = (params: PartConstructorParams<TextPart>): TextPart => makePart("text", params)
321
+
300
322
  // =============================================================================
301
323
  // Reasoning Part
302
324
  // =============================================================================
@@ -360,6 +382,15 @@ export const ReasoningPart: Schema.Schema<ReasoningPart, ReasoningPartEncoded> =
360
382
  Schema.annotations({ identifier: "ReasoningPart" })
361
383
  )
362
384
 
385
+ /**
386
+ * Constructs a new reasoning part.
387
+ *
388
+ * @since 1.0.0
389
+ * @category Constructors
390
+ */
391
+ export const reasoningPart = (params: PartConstructorParams<ReasoningPart>): ReasoningPart =>
392
+ makePart("reasoning", params)
393
+
363
394
  // =============================================================================
364
395
  // File Part
365
396
  // =============================================================================
@@ -452,6 +483,14 @@ export const FilePart: Schema.Schema<FilePart, FilePartEncoded> = Schema.Struct(
452
483
  Schema.annotations({ identifier: "FilePart" })
453
484
  )
454
485
 
486
+ /**
487
+ * Constructs a new file part.
488
+ *
489
+ * @since 1.0.0
490
+ * @category Constructors
491
+ */
492
+ export const filePart = (params: PartConstructorParams<FilePart>): FilePart => makePart("file", params)
493
+
455
494
  // =============================================================================
456
495
  // Tool Call Part
457
496
  // =============================================================================
@@ -545,6 +584,14 @@ export const ToolCallPart: Schema.Schema<ToolCallPart, ToolCallPartEncoded> = Sc
545
584
  Schema.annotations({ identifier: "ToolCallPart" })
546
585
  )
547
586
 
587
+ /**
588
+ * Constructs a new tool call part.
589
+ *
590
+ * @since 1.0.0
591
+ * @category Constructors
592
+ */
593
+ export const toolCallPart = (params: PartConstructorParams<ToolCallPart>): ToolCallPart => makePart("tool-call", params)
594
+
548
595
  // =============================================================================
549
596
  // Tool Result Part
550
597
  // =============================================================================
@@ -559,6 +606,7 @@ export const ToolCallPart: Schema.Schema<ToolCallPart, ToolCallPartEncoded> = Sc
559
606
  * const toolResultPart: Prompt.ToolResultPart = Prompt.makePart("tool-result", {
560
607
  * id: "call_123",
561
608
  * name: "get_weather",
609
+ * isFailure: false,
562
610
  * result: {
563
611
  * temperature: 22,
564
612
  * condition: "sunny",
@@ -579,6 +627,10 @@ export interface ToolResultPart extends BasePart<"tool-result", ToolResultPartOp
579
627
  * Name of the tool that was executed.
580
628
  */
581
629
  readonly name: string
630
+ /**
631
+ * Whether or not the result of executing the tool call handler was an error.
632
+ */
633
+ readonly isFailure: boolean
582
634
  /**
583
635
  * The result returned by the tool execution.
584
636
  */
@@ -600,6 +652,10 @@ export interface ToolResultPartEncoded extends BasePartEncoded<"tool-result", To
600
652
  * Name of the tool that was executed.
601
653
  */
602
654
  readonly name: string
655
+ /**
656
+ * Whether or not the result of executing the tool call handler was an error.
657
+ */
658
+ readonly isFailure: boolean
603
659
  /**
604
660
  * The result returned by the tool execution.
605
661
  */
@@ -625,6 +681,7 @@ export const ToolResultPart: Schema.Schema<ToolResultPart, ToolResultPartEncoded
625
681
  type: Schema.Literal("tool-result"),
626
682
  id: Schema.String,
627
683
  name: Schema.String,
684
+ isFailure: Schema.Boolean,
628
685
  result: Schema.Unknown,
629
686
  options: Schema.optionalWith(ProviderOptions, { default: constEmptyObject })
630
687
  }).pipe(
@@ -632,6 +689,15 @@ export const ToolResultPart: Schema.Schema<ToolResultPart, ToolResultPartEncoded
632
689
  Schema.annotations({ identifier: "ToolResultPart" })
633
690
  )
634
691
 
692
+ /**
693
+ * Constructs a new tool result part.
694
+ *
695
+ * @since 1.0.0
696
+ * @category Constructors
697
+ */
698
+ export const toolResultPart = (params: PartConstructorParams<ToolResultPart>): ToolResultPart =>
699
+ makePart("tool-result", params)
700
+
635
701
  // =============================================================================
636
702
  // Base Message
637
703
  // =============================================================================
@@ -725,12 +791,26 @@ export const makeMessage = <const Role extends Message["role"]>(
725
791
  }
726
792
  ): Extract<Message, { role: Role }> =>
727
793
  (({
728
- ...params,
729
- [MessageTypeId]: MessageTypeId,
730
- role,
731
- options: params.options ?? {}
794
+ ...params,
795
+ [MessageTypeId]: MessageTypeId,
796
+ role,
797
+ options: params.options ?? {}
732
798
  }) as any)
733
799
 
800
+ /**
801
+ * A utility type for specifying the parameters required to construct a
802
+ * specific message for a prompt.
803
+ *
804
+ * @since 1.0.0
805
+ * @category Utility Types
806
+ */
807
+ export type MessageConstructorParams<M extends Message> = Omit<M, MessageTypeId | "role" | "options"> & {
808
+ /**
809
+ * Optional provider-specific options for this message.
810
+ */
811
+ readonly options?: Part["options"] | undefined
812
+ }
813
+
734
814
  /**
735
815
  * Schema for decoding message content (i.e. an array containing a single
736
816
  * `TextPart`) from a string.
@@ -811,6 +891,15 @@ export const SystemMessage: Schema.Schema<SystemMessage, SystemMessageEncoded> =
811
891
  Schema.annotations({ identifier: "SystemMessage" })
812
892
  )
813
893
 
894
+ /**
895
+ * Constructs a new system message.
896
+ *
897
+ * @since 1.0.0
898
+ * @category Constructors
899
+ */
900
+ export const systemMessage = (params: MessageConstructorParams<SystemMessage>): SystemMessage =>
901
+ makeMessage("system", params)
902
+
814
903
  // =============================================================================
815
904
  // User Message
816
905
  // =============================================================================
@@ -910,6 +999,14 @@ export const UserMessage: Schema.Schema<UserMessage, UserMessageEncoded> = Schem
910
999
  Schema.annotations({ identifier: "UserMessage" })
911
1000
  )
912
1001
 
1002
+ /**
1003
+ * Constructs a new user message.
1004
+ *
1005
+ * @since 1.0.0
1006
+ * @category Constructors
1007
+ */
1008
+ export const userMessage = (params: MessageConstructorParams<UserMessage>): UserMessage => makeMessage("user", params)
1009
+
913
1010
  // =============================================================================
914
1011
  // Assistant Message
915
1012
  // =============================================================================
@@ -935,7 +1032,11 @@ export const UserMessage: Schema.Schema<UserMessage, UserMessageEncoded> = Schem
935
1032
  * Prompt.makePart("tool-result", {
936
1033
  * id: "call_123",
937
1034
  * name: "get_weather",
938
- * result: { temperature: 72, condition: "sunny" }
1035
+ * isFailure: false,
1036
+ * result: {
1037
+ * temperature: 72,
1038
+ * condition: "sunny"
1039
+ * }
939
1040
  * }),
940
1041
  * Prompt.makePart("text", {
941
1042
  * text: "The weather in San Francisco is currently 72°F and sunny."
@@ -1017,6 +1118,15 @@ export const AssistantMessage: Schema.Schema<AssistantMessage, AssistantMessageE
1017
1118
  Schema.annotations({ identifier: "AssistantMessage" })
1018
1119
  )
1019
1120
 
1121
+ /**
1122
+ * Constructs a new assistant message.
1123
+ *
1124
+ * @since 1.0.0
1125
+ * @category Constructors
1126
+ */
1127
+ export const assistantMessage = (params: MessageConstructorParams<AssistantMessage>): AssistantMessage =>
1128
+ makeMessage("assistant", params)
1129
+
1020
1130
  // =============================================================================
1021
1131
  // Tool Message
1022
1132
  // =============================================================================
@@ -1033,6 +1143,7 @@ export const AssistantMessage: Schema.Schema<AssistantMessage, AssistantMessageE
1033
1143
  * Prompt.makePart("tool-result", {
1034
1144
  * id: "call_123",
1035
1145
  * name: "search_web",
1146
+ * isFailure: false,
1036
1147
  * result: {
1037
1148
  * query: "TypeScript best practices",
1038
1149
  * results: [
@@ -1108,6 +1219,14 @@ export const ToolMessage: Schema.Schema<ToolMessage, ToolMessageEncoded> = Schem
1108
1219
  Schema.annotations({ identifier: "ToolMessage" })
1109
1220
  )
1110
1221
 
1222
+ /**
1223
+ * Constructs a new tool message.
1224
+ *
1225
+ * @since 1.0.0
1226
+ * @category Constructors
1227
+ */
1228
+ export const toolMessage = (params: MessageConstructorParams<ToolMessage>): ToolMessage => makeMessage("tool", params)
1229
+
1111
1230
  // =============================================================================
1112
1231
  // Message
1113
1232
  // =============================================================================
@@ -1254,13 +1373,6 @@ const encodePrompt = (input: Prompt, ast: AST.AST) =>
1254
1373
  onSuccess: (messages) => ({ content: messages })
1255
1374
  })
1256
1375
 
1257
- // export const Prompt: Schema.Schema<Prompt, PromptEncoded> = Schema.Struct({
1258
- // content: Schema.Array(Message)
1259
- // }).pipe(
1260
- // Schema.attachPropertySignature(TypeId, TypeId),
1261
- // Schema.annotations({ identifier: "Prompt" })
1262
- // )
1263
-
1264
1376
  /**
1265
1377
  * Schema for parsing a Prompt from JSON strings.
1266
1378
  *
@@ -1439,6 +1551,7 @@ const isValidPart = (part: Response.AnyPart): part is ValidResponsePart => {
1439
1551
  *
1440
1552
  * @example
1441
1553
  * ```ts
1554
+ * import { Either } from "effect"
1442
1555
  * import { Prompt, Response } from "@effect/ai"
1443
1556
  *
1444
1557
  * const responseParts: ReadonlyArray<Response.AnyPart> = [
@@ -1454,6 +1567,7 @@ const isValidPart = (part: Response.AnyPart): part is ValidResponsePart => {
1454
1567
  * Response.makePart("tool-result", {
1455
1568
  * id: "call_1",
1456
1569
  * name: "get_time",
1570
+ * isFailure: false,
1457
1571
  * result: "10:30 AM",
1458
1572
  * encodedResult: "10:30 AM",
1459
1573
  * providerExecuted: false
@@ -1540,6 +1654,7 @@ export const fromResponseParts = (parts: ReadonlyArray<Response.AnyPart>): Promp
1540
1654
  toolParts.push(makePart("tool-result", {
1541
1655
  id: part.id,
1542
1656
  name: part.providerName ?? part.name,
1657
+ isFailure: part.isFailure,
1543
1658
  result: part.encodedResult
1544
1659
  }))
1545
1660
  break