stratus-sdk 0.8.0 → 0.10.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 (74) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -1
  3. package/dist/azure/chat-completions-model.d.ts.map +1 -1
  4. package/dist/azure/chat-completions-model.js +10 -0
  5. package/dist/azure/chat-completions-model.js.map +1 -1
  6. package/dist/azure/responses-model.d.ts.map +1 -1
  7. package/dist/azure/responses-model.js +251 -112
  8. package/dist/azure/responses-model.js.map +1 -1
  9. package/dist/core/agent.d.ts +1 -1
  10. package/dist/core/agent.d.ts.map +1 -1
  11. package/dist/core/builtin-tools.d.ts +11 -0
  12. package/dist/core/builtin-tools.d.ts.map +1 -1
  13. package/dist/core/builtin-tools.js +26 -0
  14. package/dist/core/builtin-tools.js.map +1 -1
  15. package/dist/core/codemode/executor.d.ts +38 -0
  16. package/dist/core/codemode/executor.d.ts.map +1 -0
  17. package/dist/core/codemode/executor.js +54 -0
  18. package/dist/core/codemode/executor.js.map +1 -0
  19. package/dist/core/codemode/index.d.ts +62 -0
  20. package/dist/core/codemode/index.d.ts.map +1 -0
  21. package/dist/core/codemode/index.js +104 -0
  22. package/dist/core/codemode/index.js.map +1 -0
  23. package/dist/core/codemode/types.d.ts +24 -0
  24. package/dist/core/codemode/types.d.ts.map +1 -0
  25. package/dist/core/codemode/types.js +405 -0
  26. package/dist/core/codemode/types.js.map +1 -0
  27. package/dist/core/errors.d.ts +5 -0
  28. package/dist/core/errors.d.ts.map +1 -1
  29. package/dist/core/errors.js +10 -0
  30. package/dist/core/errors.js.map +1 -1
  31. package/dist/core/guardrails.d.ts +26 -2
  32. package/dist/core/guardrails.d.ts.map +1 -1
  33. package/dist/core/guardrails.js +23 -7
  34. package/dist/core/guardrails.js.map +1 -1
  35. package/dist/core/handoff.d.ts +18 -1
  36. package/dist/core/handoff.d.ts.map +1 -1
  37. package/dist/core/handoff.js +8 -1
  38. package/dist/core/handoff.js.map +1 -1
  39. package/dist/core/hooks.d.ts +68 -4
  40. package/dist/core/hooks.d.ts.map +1 -1
  41. package/dist/core/hosted-tool.d.ts +1 -1
  42. package/dist/core/hosted-tool.d.ts.map +1 -1
  43. package/dist/core/index.d.ts +11 -9
  44. package/dist/core/index.d.ts.map +1 -1
  45. package/dist/core/index.js +4 -3
  46. package/dist/core/index.js.map +1 -1
  47. package/dist/core/model.d.ts +4 -0
  48. package/dist/core/model.d.ts.map +1 -1
  49. package/dist/core/result.d.ts +7 -0
  50. package/dist/core/result.d.ts.map +1 -1
  51. package/dist/core/result.js +8 -0
  52. package/dist/core/result.js.map +1 -1
  53. package/dist/core/run.d.ts +35 -5
  54. package/dist/core/run.d.ts.map +1 -1
  55. package/dist/core/run.js +308 -45
  56. package/dist/core/run.js.map +1 -1
  57. package/dist/core/session.d.ts +16 -3
  58. package/dist/core/session.d.ts.map +1 -1
  59. package/dist/core/session.js +22 -5
  60. package/dist/core/session.js.map +1 -1
  61. package/dist/core/subagent.d.ts.map +1 -1
  62. package/dist/core/subagent.js.map +1 -1
  63. package/dist/core/todo.d.ts +2 -2
  64. package/dist/core/todo.d.ts.map +1 -1
  65. package/dist/core/todo.js.map +1 -1
  66. package/dist/core/tool.d.ts +6 -0
  67. package/dist/core/tool.d.ts.map +1 -1
  68. package/dist/core/tool.js +2 -0
  69. package/dist/core/tool.js.map +1 -1
  70. package/dist/core/types.d.ts +13 -1
  71. package/dist/core/types.d.ts.map +1 -1
  72. package/dist/core/utils/zod.js +1 -1
  73. package/dist/core/utils/zod.js.map +1 -1
  74. package/package.json +1 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Tyler Gibbs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -22,7 +22,7 @@ A better TypeScript agent SDK for Azure OpenAI. Build multi-agent systems with t
22
22
  - **Type-safe from schema to output** — Zod schemas drive tool parameters, structured output, and validation. Context types flow through agents, hooks, and guardrails at compile time.
23
23
  - **Zero dependencies** — only Zod as a peer dep. No transitive dependency sprawl, no framework lock-in.
24
24
 
25
- `agents` `tools` `streaming` `structured output` `handoffs` `subagents` `guardrails` `hooks` `tracing` `sessions` `abort signals` `todo tracking` `cost tracking`
25
+ `agents` `tools` `streaming` `structured output` `handoffs` `subagents` `guardrails` `hooks` `tracing` `sessions` `abort signals` `code mode` `todo tracking` `cost tracking`
26
26
 
27
27
  ## Install
28
28
 
@@ -408,6 +408,37 @@ const agent = new Agent({
408
408
  });
409
409
  ```
410
410
 
411
+ ### Code Mode (Experimental)
412
+
413
+ Let LLMs write code that orchestrates multiple tools instead of calling them one at a time. Inspired by [Cloudflare's Code Mode](https://blog.cloudflare.com/code-mode-the-better-way-to-use-mcp) — LLMs are better at writing code than making individual tool calls.
414
+
415
+ ```ts
416
+ import { createCodeModeTool, FunctionExecutor } from "stratus-sdk/core";
417
+
418
+ const executor = new FunctionExecutor({ timeout: 30_000 });
419
+ const codemode = createCodeModeTool({
420
+ tools: [getWeather, sendEmail, lookupOrder],
421
+ executor,
422
+ });
423
+
424
+ const agent = new Agent({
425
+ name: "assistant",
426
+ model,
427
+ tools: [codemode],
428
+ });
429
+
430
+ // The LLM writes code like:
431
+ // async () => {
432
+ // const weather = await codemode.get_weather({ location: "London" });
433
+ // if (weather.temp > 60) {
434
+ // await codemode.send_email({ to: "team@co.com", subject: "Nice day!", body: ... });
435
+ // }
436
+ // return { weather, notified: true };
437
+ // }
438
+ ```
439
+
440
+ `createCodeModeTool` generates TypeScript types from your tools, presents the LLM with a single `execute_code` tool, and runs the generated code in an executor. All tool calls happen within one invocation — no round-trips through the model between calls. Implement the `Executor` interface for custom sandboxes (isolated-vm, containers, Cloudflare Workers).
441
+
411
442
  ## Imports
412
443
 
413
444
  Stratus provides three export paths:
@@ -1 +1 @@
1
- {"version":3,"file":"chat-completions-model.d.ts","sourceRoot":"","sources":["../../src/azure/chat-completions-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEX,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,WAAW,EAEX,MAAM,eAAe,CAAC;AAKvB,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,qBAAa,yBAA0B,YAAW,KAAK;IACtD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,+BAA+B;YAqBrC,cAAc;IAQtB,WAAW,CAChB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC;IAOlB,mBAAmB,CACzB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,cAAc,CAAC,WAAW,CAAC;IAiG9B,OAAO,CAAC,gBAAgB;YA2CV,OAAO;YAoCP,mBAAmB;IA2BjC,OAAO,CAAC,aAAa;CAyCrB"}
1
+ {"version":3,"file":"chat-completions-model.d.ts","sourceRoot":"","sources":["../../src/azure/chat-completions-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEX,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,WAAW,EAEX,MAAM,eAAe,CAAC;AAKvB,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,qBAAa,yBAA0B,YAAW,KAAK;IACtD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,+BAA+B;YAiBrC,cAAc;IAQtB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAOxF,mBAAmB,CACzB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,cAAc,CAAC,WAAW,CAAC;IAiG9B,OAAO,CAAC,gBAAgB;YA4CV,OAAO;YAiCP,mBAAmB;IA2BjC,OAAO,CAAC,aAAa;CAyCrB"}
@@ -164,6 +164,16 @@ export class AzureChatCompletionsModel {
164
164
  body.reasoning_effort = s.reasoningEffort;
165
165
  if (s.promptCacheKey !== undefined)
166
166
  body.prompt_cache_key = s.promptCacheKey;
167
+ if (s.store !== undefined)
168
+ body.store = s.store;
169
+ if (s.metadata !== undefined)
170
+ body.metadata = s.metadata;
171
+ if (s.user !== undefined)
172
+ body.user = s.user;
173
+ if (s.logprobs !== undefined)
174
+ body.logprobs = s.logprobs;
175
+ if (s.topLogprobs !== undefined)
176
+ body.top_logprobs = s.topLogprobs;
167
177
  }
168
178
  return body;
169
179
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chat-completions-model.js","sourceRoot":"","sources":["../../src/azure/chat-completions-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-completions-model.js","sourceRoot":"","sources":["../../src/azure/chat-completions-model.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"responses-model.d.ts","sourceRoot":"","sources":["../../src/azure/responses-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEX,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,WAAW,EAEX,MAAM,eAAe,CAAC;AAavB,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAID,qBAAa,mBAAoB,YAAW,KAAK;IAChD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;gBAEpB,MAAM,EAAE,yBAAyB;YAqB/B,cAAc;IAQtB,WAAW,CAChB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC;IAOlB,mBAAmB,CACzB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,cAAc,CAAC,WAAW,CAAC;IA+G9B,OAAO,CAAC,gBAAgB;YA0DV,OAAO;YAoCP,mBAAmB;IA2BjC,OAAO,CAAC,aAAa;CA8BrB"}
1
+ {"version":3,"file":"responses-model.d.ts","sourceRoot":"","sources":["../../src/azure/responses-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEX,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,WAAW,EAEX,MAAM,eAAe,CAAC;AAavB,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAsCD,qBAAa,mBAAoB,YAAW,KAAK;IAChD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;gBAEpB,MAAM,EAAE,yBAAyB;YAc/B,cAAc;IAQtB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAOxF,mBAAmB,CACzB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,cAAc,CAAC,WAAW,CAAC;IA2L9B,OAAO,CAAC,gBAAgB;YAkEV,OAAO;YAqDP,mBAAmB;IA2BjC,OAAO,CAAC,aAAa;CA4BrB"}
@@ -2,6 +2,38 @@ import { ContentFilterError, ModelError, StratusError } from "../core/errors";
2
2
  import { resolveResponsesUrl } from "./endpoint";
3
3
  import { parseSSE } from "./sse-parser";
4
4
  const DEFAULT_API_VERSION = "2025-04-01-preview";
5
+ const HOSTED_TOOL_EVENT_MAP = new Map([
6
+ ["response.web_search_call.in_progress", { toolType: "web_search", status: "in_progress" }],
7
+ ["response.web_search_call.searching", { toolType: "web_search", status: "searching" }],
8
+ ["response.web_search_call.completed", { toolType: "web_search", status: "completed" }],
9
+ ["response.file_search_call.in_progress", { toolType: "file_search", status: "in_progress" }],
10
+ ["response.file_search_call.searching", { toolType: "file_search", status: "searching" }],
11
+ ["response.file_search_call.completed", { toolType: "file_search", status: "completed" }],
12
+ [
13
+ "response.code_interpreter_call.in_progress",
14
+ { toolType: "code_interpreter", status: "in_progress" },
15
+ ],
16
+ [
17
+ "response.code_interpreter_call.interpreting",
18
+ { toolType: "code_interpreter", status: "interpreting" },
19
+ ],
20
+ [
21
+ "response.code_interpreter_call.completed",
22
+ { toolType: "code_interpreter", status: "completed" },
23
+ ],
24
+ [
25
+ "response.image_generation_call.in_progress",
26
+ { toolType: "image_generation", status: "in_progress" },
27
+ ],
28
+ [
29
+ "response.image_generation_call.generating",
30
+ { toolType: "image_generation", status: "generating" },
31
+ ],
32
+ [
33
+ "response.image_generation_call.completed",
34
+ { toolType: "image_generation", status: "completed" },
35
+ ],
36
+ ]);
5
37
  export class AzureResponsesModel {
6
38
  url;
7
39
  apiKey;
@@ -36,113 +68,187 @@ export class AzureResponsesModel {
36
68
  }
37
69
  async *getStreamedResponse(request, options) {
38
70
  const body = this.buildRequestBody(request, true);
39
- const response = await this.doFetch(body, options?.signal);
40
- if (!response.body) {
41
- throw new ModelError("Response body is null");
42
- }
43
- let content = "";
44
- // Keyed by item.id (the Responses API item identifier), storing call_id for SDK events
45
- const toolCalls = new Map();
46
- let usage;
47
- let finishReason;
48
- let responseId;
49
- for await (const data of parseSSE(response.body)) {
50
- let event;
51
- try {
52
- event = JSON.parse(data);
53
- }
54
- catch {
55
- continue;
71
+ const maxSseRetries = 3;
72
+ for (let sseAttempt = 0; sseAttempt <= maxSseRetries; sseAttempt++) {
73
+ const response = await this.doFetch(body, options?.signal);
74
+ if (!response.body) {
75
+ throw new ModelError("Response body is null");
56
76
  }
57
- switch (event.type) {
58
- case "response.output_text.delta": {
59
- const textDelta = event.delta ?? "";
60
- content += textDelta;
61
- yield { type: "content_delta", content: textDelta };
62
- break;
77
+ let content = "";
78
+ // Keyed by item.id (the Responses API item identifier), storing call_id for SDK events
79
+ const toolCalls = new Map();
80
+ let usage;
81
+ let finishReason;
82
+ let responseId;
83
+ // Deferred error from response.failed with no error details —
84
+ // allows the subsequent `error` SSE event to provide the real message.
85
+ let deferredFailure;
86
+ let hasYielded = false;
87
+ let sseRateLimited = false;
88
+ for await (const data of parseSSE(response.body)) {
89
+ let event;
90
+ try {
91
+ event = JSON.parse(data);
63
92
  }
64
- case "response.output_item.added": {
65
- if (event.item?.type === "function_call") {
66
- const itemId = event.item.id ?? "";
67
- const callId = event.item.call_id ?? "";
68
- const name = event.item.name ?? "";
69
- toolCalls.set(itemId, { callId, name, arguments: "" });
70
- if (callId && name) {
71
- yield { type: "tool_call_start", toolCall: { id: callId, name } };
72
- }
73
- }
74
- break;
93
+ catch {
94
+ continue;
75
95
  }
76
- case "response.function_call_arguments.delta": {
77
- const itemId = event.item_id ?? "";
78
- const existing = toolCalls.get(itemId);
79
- if (existing) {
80
- const argDelta = event.delta ?? "";
81
- existing.arguments += argDelta;
82
- yield {
83
- type: "tool_call_delta",
84
- toolCallId: existing.callId,
85
- arguments: argDelta,
86
- };
96
+ switch (event.type) {
97
+ case "response.output_text.delta": {
98
+ const textDelta = event.delta ?? "";
99
+ content += textDelta;
100
+ hasYielded = true;
101
+ yield { type: "content_delta", content: textDelta };
102
+ break;
87
103
  }
88
- break;
89
- }
90
- case "response.output_item.done": {
91
- if (event.item?.type === "function_call") {
92
- const itemId = event.item.id ?? "";
104
+ case "response.output_item.added": {
105
+ if (event.item?.type === "function_call") {
106
+ const itemId = event.item.id ?? "";
107
+ const callId = event.item.call_id ?? "";
108
+ const name = event.item.name ?? "";
109
+ toolCalls.set(itemId, { callId, name, arguments: "" });
110
+ if (callId && name) {
111
+ hasYielded = true;
112
+ yield { type: "tool_call_start", toolCall: { id: callId, name } };
113
+ }
114
+ }
115
+ break;
116
+ }
117
+ case "response.function_call_arguments.delta": {
118
+ const itemId = event.item_id ?? "";
93
119
  const existing = toolCalls.get(itemId);
94
120
  if (existing) {
95
- if (event.item.arguments) {
96
- existing.arguments = event.item.arguments;
121
+ const argDelta = event.delta ?? "";
122
+ existing.arguments += argDelta;
123
+ hasYielded = true;
124
+ yield {
125
+ type: "tool_call_delta",
126
+ toolCallId: existing.callId,
127
+ arguments: argDelta,
128
+ };
129
+ }
130
+ break;
131
+ }
132
+ case "response.output_item.done": {
133
+ if (event.item?.type === "function_call") {
134
+ const itemId = event.item.id ?? "";
135
+ const existing = toolCalls.get(itemId);
136
+ if (existing) {
137
+ if (event.item.arguments) {
138
+ existing.arguments = event.item.arguments;
139
+ }
140
+ hasYielded = true;
141
+ yield { type: "tool_call_done", toolCallId: existing.callId };
97
142
  }
98
- yield { type: "tool_call_done", toolCallId: existing.callId };
99
143
  }
144
+ break;
100
145
  }
101
- break;
102
- }
103
- case "response.completed": {
104
- const resp = event.response;
105
- if (resp?.id) {
106
- responseId = resp.id;
146
+ // Hosted tool streaming events
147
+ case "response.web_search_call.in_progress":
148
+ case "response.web_search_call.searching":
149
+ case "response.web_search_call.completed":
150
+ case "response.file_search_call.in_progress":
151
+ case "response.file_search_call.searching":
152
+ case "response.file_search_call.completed":
153
+ case "response.code_interpreter_call.in_progress":
154
+ case "response.code_interpreter_call.interpreting":
155
+ case "response.code_interpreter_call.completed":
156
+ case "response.image_generation_call.in_progress":
157
+ case "response.image_generation_call.generating":
158
+ case "response.image_generation_call.completed": {
159
+ const mapped = HOSTED_TOOL_EVENT_MAP.get(event.type);
160
+ if (mapped) {
161
+ hasYielded = true;
162
+ yield { type: "hosted_tool_call", toolType: mapped.toolType, status: mapped.status };
163
+ }
164
+ break;
107
165
  }
108
- if (resp?.usage) {
109
- usage = {
110
- promptTokens: resp.usage.input_tokens,
111
- completionTokens: resp.usage.output_tokens,
112
- totalTokens: resp.usage.total_tokens,
113
- ...(resp.usage.input_tokens_details?.cached_tokens !== undefined
114
- ? { cacheReadTokens: resp.usage.input_tokens_details.cached_tokens }
115
- : {}),
116
- ...(resp.usage.output_tokens_details?.reasoning_tokens !== undefined
117
- ? { reasoningTokens: resp.usage.output_tokens_details.reasoning_tokens }
118
- : {}),
119
- };
166
+ case "response.completed": {
167
+ const resp = event.response;
168
+ if (resp?.id) {
169
+ responseId = resp.id;
170
+ }
171
+ if (resp?.usage) {
172
+ usage = {
173
+ promptTokens: resp.usage.input_tokens,
174
+ completionTokens: resp.usage.output_tokens,
175
+ totalTokens: resp.usage.total_tokens,
176
+ ...(resp.usage.input_tokens_details?.cached_tokens !== undefined
177
+ ? { cacheReadTokens: resp.usage.input_tokens_details.cached_tokens }
178
+ : {}),
179
+ ...(resp.usage.output_tokens_details?.reasoning_tokens !== undefined
180
+ ? { reasoningTokens: resp.usage.output_tokens_details.reasoning_tokens }
181
+ : {}),
182
+ };
183
+ }
184
+ finishReason = mapStatus(resp?.status);
185
+ break;
186
+ }
187
+ case "response.failed": {
188
+ const errorMsg = event.response?.error?.message;
189
+ if (errorMsg) {
190
+ throw new ModelError(`Azure API response failed: ${errorMsg}`, { status: 200 });
191
+ }
192
+ // error is null — defer to let the subsequent `error` event
193
+ // provide the real details (e.g. too_many_requests).
194
+ deferredFailure = "Response failed";
195
+ break;
196
+ }
197
+ case "error": {
198
+ const err = event.error;
199
+ const errorType = err?.type ?? "unknown";
200
+ const errorMsg = err?.message ?? "Unknown error";
201
+ if (errorType === "too_many_requests") {
202
+ if (!hasYielded && sseAttempt < maxSseRetries) {
203
+ sseRateLimited = true;
204
+ break; // exit SSE loop, retry in outer loop
205
+ }
206
+ throw new ModelError(`Azure API rate limited (SSE): ${errorMsg}`, { status: 429 });
207
+ }
208
+ throw new ModelError(`Azure API stream error (${errorType}): ${errorMsg}`, {
209
+ status: 200,
210
+ });
120
211
  }
121
- finishReason = mapStatus(resp?.status);
122
- break;
123
212
  }
124
213
  }
125
- }
126
- const finalToolCalls = Array.from(toolCalls.values()).map((tc) => ({
127
- id: tc.callId,
128
- type: "function",
129
- function: { name: tc.name, arguments: tc.arguments },
130
- }));
131
- yield {
132
- type: "done",
133
- response: {
134
- content: content || null,
135
- toolCalls: finalToolCalls,
136
- usage,
137
- finishReason,
138
- responseId,
139
- },
140
- };
214
+ // SSE rate limited before any events were yielded — retry with backoff
215
+ if (sseRateLimited) {
216
+ const retryAfterHeader = response.headers.get("retry-after");
217
+ const waitMs = retryAfterHeader
218
+ ? Number.parseInt(retryAfterHeader, 10) * 1000
219
+ : Math.min(10000 * 2 ** sseAttempt, 60000);
220
+ await new Promise((r) => setTimeout(r, waitMs));
221
+ continue;
222
+ }
223
+ // If response.failed had no error details and no subsequent error event provided one
224
+ if (deferredFailure) {
225
+ throw new ModelError(`Azure API response failed: ${deferredFailure}`, { status: 200 });
226
+ }
227
+ const finalToolCalls = Array.from(toolCalls.values()).map((tc) => ({
228
+ id: tc.callId,
229
+ type: "function",
230
+ function: { name: tc.name, arguments: tc.arguments },
231
+ }));
232
+ yield {
233
+ type: "done",
234
+ response: {
235
+ content: content || null,
236
+ toolCalls: finalToolCalls,
237
+ usage,
238
+ finishReason,
239
+ responseId,
240
+ },
241
+ };
242
+ return; // success — exit retry loop
243
+ } // end SSE retry loop
244
+ throw new ModelError("Max SSE retries exceeded for rate-limited request", { status: 429 });
141
245
  }
142
246
  buildRequestBody(request, stream) {
247
+ // ModelSettings.store overrides config-level store
248
+ const effectiveStore = request.modelSettings?.store ?? this.store;
143
249
  const body = {
144
250
  model: this.deployment,
145
- store: this.store,
251
+ store: effectiveStore,
146
252
  };
147
253
  const { instructions, input } = convertMessages(request.messages);
148
254
  if (instructions) {
@@ -165,7 +271,7 @@ export class AzureResponsesModel {
165
271
  body.text = convertResponseFormat(request.responseFormat);
166
272
  }
167
273
  // Only send previous_response_id when store is enabled (API needs to persist responses)
168
- if (this.store && request.previousResponseId) {
274
+ if (effectiveStore && request.previousResponseId) {
169
275
  body.previous_response_id = request.previousResponseId;
170
276
  }
171
277
  const s = request.modelSettings;
@@ -174,39 +280,72 @@ export class AzureResponsesModel {
174
280
  body.temperature = s.temperature;
175
281
  if (s.topP !== undefined)
176
282
  body.top_p = s.topP;
177
- if (s.maxTokens !== undefined)
178
- body.max_output_tokens = s.maxTokens;
179
- if (s.maxCompletionTokens !== undefined)
283
+ if (s.maxCompletionTokens !== undefined) {
180
284
  body.max_output_tokens = s.maxCompletionTokens;
285
+ }
286
+ else if (s.maxTokens !== undefined) {
287
+ body.max_output_tokens = s.maxTokens;
288
+ }
181
289
  if (s.toolChoice !== undefined)
182
290
  body.tool_choice = convertToolChoice(s.toolChoice);
183
291
  if (s.parallelToolCalls !== undefined)
184
292
  body.parallel_tool_calls = s.parallelToolCalls;
185
- if (s.reasoningEffort !== undefined)
186
- body.reasoning = { effort: s.reasoningEffort };
293
+ if (s.reasoningEffort !== undefined || s.reasoningSummary !== undefined) {
294
+ const reasoning = {};
295
+ if (s.reasoningEffort !== undefined)
296
+ reasoning.effort = s.reasoningEffort;
297
+ if (s.reasoningSummary !== undefined)
298
+ reasoning.summary = s.reasoningSummary;
299
+ body.reasoning = reasoning;
300
+ }
187
301
  if (s.promptCacheKey !== undefined)
188
302
  body.prompt_cache_key = s.promptCacheKey;
303
+ if (s.truncation !== undefined)
304
+ body.truncation = s.truncation;
305
+ if (s.store !== undefined)
306
+ body.store = s.store;
307
+ if (s.metadata !== undefined)
308
+ body.metadata = s.metadata;
309
+ if (s.user !== undefined)
310
+ body.user = s.user;
189
311
  }
190
312
  return body;
191
313
  }
192
314
  async doFetch(body, signal) {
193
315
  const maxRetries = 3;
316
+ let lastError;
194
317
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
195
- const authHeaders = await this.getAuthHeaders();
196
- const response = await fetch(this.url, {
197
- method: "POST",
198
- headers: {
199
- "Content-Type": "application/json",
200
- ...authHeaders,
201
- },
202
- body: JSON.stringify(body),
203
- signal,
204
- });
318
+ let response;
319
+ try {
320
+ const authHeaders = await this.getAuthHeaders();
321
+ response = await fetch(this.url, {
322
+ method: "POST",
323
+ headers: {
324
+ "Content-Type": "application/json",
325
+ ...authHeaders,
326
+ },
327
+ body: JSON.stringify(body),
328
+ signal,
329
+ });
330
+ }
331
+ catch (fetchErr) {
332
+ // Network errors (timeout, connection reset, DNS failure)
333
+ // are retryable unless the caller aborted.
334
+ if (signal?.aborted)
335
+ throw fetchErr;
336
+ lastError = fetchErr;
337
+ if (attempt < maxRetries) {
338
+ const waitMs = Math.min(5000 * 2 ** attempt, 30000);
339
+ await new Promise((r) => setTimeout(r, waitMs));
340
+ continue;
341
+ }
342
+ throw new ModelError(`Azure API network error after ${maxRetries + 1} attempts: ${fetchErr instanceof Error ? fetchErr.message : String(fetchErr)}`, { cause: fetchErr });
343
+ }
205
344
  if (response.status === 429 && attempt < maxRetries) {
206
345
  const retryAfter = response.headers.get("retry-after");
207
346
  const waitMs = retryAfter
208
347
  ? Number.parseInt(retryAfter, 10) * 1000
209
- : Math.min(1000 * 2 ** attempt, 30000);
348
+ : Math.min(5000 * 2 ** attempt, 30000);
210
349
  await new Promise((r) => setTimeout(r, waitMs));
211
350
  continue;
212
351
  }
@@ -215,7 +354,7 @@ export class AzureResponsesModel {
215
354
  }
216
355
  return response;
217
356
  }
218
- throw new ModelError("Max retries exceeded for Azure API request");
357
+ throw new ModelError(`Max retries exceeded for Azure API request${lastError instanceof Error ? `: ${lastError.message}` : ""}`);
219
358
  }
220
359
  async handleErrorResponse(response) {
221
360
  let errorBody;
@@ -253,9 +392,7 @@ export class AzureResponsesModel {
253
392
  const output = json.output ?? [];
254
393
  const toolCalls = extractToolCalls(output);
255
394
  const content = extractTextContent(output);
256
- const usage = json.usage
257
- ? parseResponsesUsage(json.usage)
258
- : undefined;
395
+ const usage = json.usage ? parseResponsesUsage(json.usage) : undefined;
259
396
  const finishReason = toolCalls.length > 0 ? "tool_calls" : "stop";
260
397
  return {
261
398
  content,
@@ -373,7 +510,9 @@ function convertUserContent(content) {
373
510
  });
374
511
  }
375
512
  function isFunctionToolDefinition(def) {
376
- return "function" in def && def.function != null && typeof def.function === "object";
513
+ return ("function" in def &&
514
+ def.function != null &&
515
+ typeof def.function === "object");
377
516
  }
378
517
  function convertToolChoice(toolChoice) {
379
518
  if (typeof toolChoice === "string")