@effect-uai/responses 0.10.0 → 0.12.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.
Files changed (49) hide show
  1. package/dist/OpenAIDeepResearch.d.mts +54 -0
  2. package/dist/OpenAIDeepResearch.d.mts.map +1 -0
  3. package/dist/OpenAIDeepResearch.mjs +121 -0
  4. package/dist/OpenAIDeepResearch.mjs.map +1 -0
  5. package/dist/OpenAIEmbedding.mjs +1 -1
  6. package/dist/OpenAIEmbedding.mjs.map +1 -1
  7. package/dist/Responses.d.mts +33 -3
  8. package/dist/Responses.d.mts.map +1 -1
  9. package/dist/Responses.mjs +71 -34
  10. package/dist/Responses.mjs.map +1 -1
  11. package/dist/ResponsesTools.d.mts +85 -0
  12. package/dist/ResponsesTools.d.mts.map +1 -0
  13. package/dist/ResponsesTools.mjs +126 -0
  14. package/dist/ResponsesTools.mjs.map +1 -0
  15. package/dist/codec.d.mts +42 -3
  16. package/dist/codec.d.mts.map +1 -1
  17. package/dist/codec.mjs +58 -17
  18. package/dist/codec.mjs.map +1 -1
  19. package/dist/codec.test.d.mts +1 -0
  20. package/dist/codec.test.mjs +93 -0
  21. package/dist/codec.test.mjs.map +1 -0
  22. package/dist/index.d.mts +5 -3
  23. package/dist/index.mjs +5 -3
  24. package/dist/{magic-string.es-PAZgLX4h.mjs → magic-string.es-CaWgF-3p.mjs} +1 -1
  25. package/dist/{magic-string.es-PAZgLX4h.mjs.map → magic-string.es-CaWgF-3p.mjs.map} +1 -1
  26. package/dist/models.d.mts +10 -1
  27. package/dist/models.d.mts.map +1 -1
  28. package/dist/region.test.mjs +1 -13630
  29. package/dist/region.test.mjs.map +1 -1
  30. package/dist/responsesTools.test.d.mts +1 -0
  31. package/dist/responsesTools.test.mjs +138 -0
  32. package/dist/responsesTools.test.mjs.map +1 -0
  33. package/dist/streamEvents.d.mts +142 -0
  34. package/dist/streamEvents.d.mts.map +1 -1
  35. package/dist/streamEvents.mjs +27 -2
  36. package/dist/streamEvents.mjs.map +1 -1
  37. package/dist/test.DNmyFkvJ-CPKukVWS.mjs +13633 -0
  38. package/dist/test.DNmyFkvJ-CPKukVWS.mjs.map +1 -0
  39. package/package.json +12 -4
  40. package/src/OpenAIDeepResearch.ts +266 -0
  41. package/src/OpenAIEmbedding.ts +1 -1
  42. package/src/Responses.ts +117 -36
  43. package/src/ResponsesTools.ts +158 -0
  44. package/src/codec.test.ts +87 -0
  45. package/src/codec.ts +92 -36
  46. package/src/index.ts +2 -0
  47. package/src/models.ts +14 -0
  48. package/src/responsesTools.test.ts +146 -0
  49. package/src/streamEvents.ts +58 -1
@@ -1,6 +1,11 @@
1
1
  import { Match, Schema } from "effect"
2
2
  import { TurnEvent } from "@effect-uai/core/Turn"
3
- import { WireOutputItem, WireResponseCompleted, turnFromCompleted } from "./codec.js"
3
+ import {
4
+ WireAnnotation,
5
+ WireOutputItem,
6
+ WireResponseCompleted,
7
+ turnFromCompleted,
8
+ } from "./codec.js"
4
9
 
5
10
  // ---------------------------------------------------------------------------
6
11
  // Schemas for the SSE event payloads we care about. The Responses API ships
@@ -44,6 +49,28 @@ const RefusalDone = Schema.Struct({
44
49
  refusal: Schema.optional(Schema.String),
45
50
  })
46
51
 
52
+ // Web-search lifecycle. The three phases carry `item_id` / `output_index` /
53
+ // `sequence_number`; we map each to a `WebSearchCall` status. `query` / `action`
54
+ // ride on the `web_search_call` output item, not these lifecycle events.
55
+ const WebSearchInProgress = Schema.Struct({
56
+ type: Schema.Literal("response.web_search_call.in_progress"),
57
+ })
58
+
59
+ const WebSearchSearching = Schema.Struct({
60
+ type: Schema.Literal("response.web_search_call.searching"),
61
+ })
62
+
63
+ const WebSearchCompleted = Schema.Struct({
64
+ type: Schema.Literal("response.web_search_call.completed"),
65
+ })
66
+
67
+ // A citation attached to the answer as it is written. `annotation` is the
68
+ // same shape as the ones bundled on the final `output_text` block.
69
+ const AnnotationAdded = Schema.Struct({
70
+ type: Schema.Literal("response.output_text.annotation.added"),
71
+ annotation: WireAnnotation,
72
+ })
73
+
47
74
  const Completed = Schema.Struct({
48
75
  type: Schema.Literal("response.completed"),
49
76
  response: WireResponseCompleted,
@@ -61,8 +88,18 @@ const Failed = Schema.Struct({
61
88
 
62
89
  const ErrorEvent = Schema.Struct({
63
90
  type: Schema.Literal("error"),
91
+ // Flat form (top-level `message`/`code`) and the nested form the Responses API
92
+ // uses for request rejections: `error: { message, code, type, param }`.
64
93
  message: Schema.optional(Schema.String),
65
94
  code: Schema.optional(Schema.String),
95
+ error: Schema.optional(
96
+ Schema.Struct({
97
+ message: Schema.optional(Schema.NullOr(Schema.String)),
98
+ code: Schema.optional(Schema.NullOr(Schema.String)),
99
+ type: Schema.optional(Schema.NullOr(Schema.String)),
100
+ param: Schema.optional(Schema.NullOr(Schema.String)),
101
+ }),
102
+ ),
66
103
  })
67
104
 
68
105
  /**
@@ -88,6 +125,10 @@ export const KnownProviderEvent = Schema.Union([
88
125
  ReasoningSummaryDelta,
89
126
  RefusalDelta,
90
127
  RefusalDone,
128
+ WebSearchInProgress,
129
+ WebSearchSearching,
130
+ WebSearchCompleted,
131
+ AnnotationAdded,
91
132
  Completed,
92
133
  Incomplete,
93
134
  Failed,
@@ -107,6 +148,10 @@ export const ProviderEvent = Schema.Union([
107
148
  ReasoningSummaryDelta,
108
149
  RefusalDelta,
109
150
  RefusalDone,
151
+ WebSearchInProgress,
152
+ WebSearchSearching,
153
+ WebSearchCompleted,
154
+ AnnotationAdded,
110
155
  Completed,
111
156
  Incomplete,
112
157
  Failed,
@@ -165,6 +210,18 @@ export const eventToDeltas = (
165
210
  // Terminal marker for the refusal stream; the deltas already covered
166
211
  // the text, so no canonical event is emitted here.
167
212
  "response.refusal.done": () => [],
213
+ "response.web_search_call.in_progress": () => [
214
+ TurnEvent.WebSearchCall({ status: "started" }),
215
+ ],
216
+ "response.web_search_call.searching": () => [
217
+ TurnEvent.WebSearchCall({ status: "searching" }),
218
+ ],
219
+ "response.web_search_call.completed": () => [
220
+ TurnEvent.WebSearchCall({ status: "completed" }),
221
+ ],
222
+ "response.output_text.annotation.added": ({ annotation }) => [
223
+ TurnEvent.CitationAdded({ annotation }),
224
+ ],
168
225
  "response.completed": ({ response }) => [
169
226
  TurnEvent.TurnComplete({ turn: turnFromCompleted(response) }),
170
227
  ],