@usestratus/sdk 1.3.0 → 1.6.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 (75) hide show
  1. package/README.md +69 -34
  2. package/dist/azure/create-model.d.ts +16 -0
  3. package/dist/azure/create-model.d.ts.map +1 -0
  4. package/dist/azure/create-model.js +45 -0
  5. package/dist/azure/create-model.js.map +1 -0
  6. package/dist/azure/endpoint.d.ts +5 -0
  7. package/dist/azure/endpoint.d.ts.map +1 -1
  8. package/dist/azure/endpoint.js +22 -0
  9. package/dist/azure/endpoint.js.map +1 -1
  10. package/dist/azure/index.d.ts +3 -1
  11. package/dist/azure/index.d.ts.map +1 -1
  12. package/dist/azure/index.js +1 -0
  13. package/dist/azure/index.js.map +1 -1
  14. package/dist/azure/responses-model.d.ts +74 -0
  15. package/dist/azure/responses-model.d.ts.map +1 -1
  16. package/dist/azure/responses-model.js +259 -6
  17. package/dist/azure/responses-model.js.map +1 -1
  18. package/dist/core/agent.d.ts.map +1 -1
  19. package/dist/core/agent.js +2 -0
  20. package/dist/core/agent.js.map +1 -1
  21. package/dist/core/debug.d.ts +5 -0
  22. package/dist/core/debug.d.ts.map +1 -0
  23. package/dist/core/debug.js +36 -0
  24. package/dist/core/debug.js.map +1 -0
  25. package/dist/core/hooks.d.ts +24 -21
  26. package/dist/core/hooks.d.ts.map +1 -1
  27. package/dist/core/index.d.ts +8 -3
  28. package/dist/core/index.d.ts.map +1 -1
  29. package/dist/core/index.js +4 -1
  30. package/dist/core/index.js.map +1 -1
  31. package/dist/core/mcp-client.d.ts +37 -27
  32. package/dist/core/mcp-client.d.ts.map +1 -1
  33. package/dist/core/mcp-client.js +190 -79
  34. package/dist/core/mcp-client.js.map +1 -1
  35. package/dist/core/model.d.ts +2 -0
  36. package/dist/core/model.d.ts.map +1 -1
  37. package/dist/core/result.d.ts +11 -1
  38. package/dist/core/result.d.ts.map +1 -1
  39. package/dist/core/result.js +19 -1
  40. package/dist/core/result.js.map +1 -1
  41. package/dist/core/run.d.ts +4 -3
  42. package/dist/core/run.d.ts.map +1 -1
  43. package/dist/core/run.js +21 -0
  44. package/dist/core/run.js.map +1 -1
  45. package/dist/core/sandbox.d.ts +46 -0
  46. package/dist/core/sandbox.d.ts.map +1 -0
  47. package/dist/core/sandbox.js +143 -0
  48. package/dist/core/sandbox.js.map +1 -0
  49. package/dist/core/session.d.ts +9 -3
  50. package/dist/core/session.d.ts.map +1 -1
  51. package/dist/core/session.js +15 -2
  52. package/dist/core/session.js.map +1 -1
  53. package/dist/core/tracing.d.ts +23 -0
  54. package/dist/core/tracing.d.ts.map +1 -1
  55. package/dist/core/tracing.js +129 -3
  56. package/dist/core/tracing.js.map +1 -1
  57. package/dist/core/types.d.ts +4 -0
  58. package/dist/core/types.d.ts.map +1 -1
  59. package/dist/core/validate-agent.d.ts +14 -0
  60. package/dist/core/validate-agent.d.ts.map +1 -0
  61. package/dist/core/validate-agent.js +33 -0
  62. package/dist/core/validate-agent.js.map +1 -0
  63. package/dist/testing/index.d.ts +4 -0
  64. package/dist/testing/index.d.ts.map +1 -0
  65. package/dist/testing/index.js +3 -0
  66. package/dist/testing/index.js.map +1 -0
  67. package/dist/testing/mock-model.d.ts +12 -0
  68. package/dist/testing/mock-model.d.ts.map +1 -0
  69. package/dist/testing/mock-model.js +40 -0
  70. package/dist/testing/mock-model.js.map +1 -0
  71. package/dist/testing/response-builders.d.ts +15 -0
  72. package/dist/testing/response-builders.d.ts.map +1 -0
  73. package/dist/testing/response-builders.js +22 -0
  74. package/dist/testing/response-builders.js.map +1 -0
  75. package/package.json +52 -34
package/README.md CHANGED
@@ -13,17 +13,17 @@
13
13
  [![npm version](https://img.shields.io/npm/v/@usestratus/sdk)](https://www.npmjs.com/package/@usestratus/sdk)
14
14
  [![CI](https://github.com/tylergibbs1/stratus/actions/workflows/ci.yml/badge.svg)](https://github.com/tylergibbs1/stratus/actions/workflows/ci.yml)
15
15
 
16
- A better TypeScript agent SDK for Azure OpenAI. Build multi-agent systems with tools, handoffs, guardrails, streaming, structured output, and more.
16
+ A TypeScript agent SDK purpose-built for Azure OpenAI.
17
17
 
18
- - **Built for Azure, not bolted on** — auto-endpoint detection, Entra ID auth, content filter errors as typed exceptions, and built-in retry. No 404 config spirals, no "which SDK do I use" confusion.
19
- - **Two API backends, one interface** — Chat Completions and Responses API through the same agent, tool, and session code. Start with one, switch with a single line.
20
- - **Multi-agent orchestration** — handoffs, subagents, guardrails, and hooks compose through a single run loop. Hooks can deny or modify tool calls at runtime.
21
- - **Human-in-the-loop** — `canUseTool` permission callbacks, `needsApproval` per tool, `allowedTools` glob filtering, and graceful `interrupt()` for stopping runs mid-flight.
22
- - **Client-side state you control** — save, resume, and fork conversations as portable JSON snapshots. Hot-swap tools mid-session. No server-side threads, no opaque session IDs.
23
- - **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.
24
- - **Zero dependencies** — only Zod as a peer dep. No transitive dependency sprawl, no framework lock-in.
18
+ - **One line to start** — `createModel()` reads your env vars. No config objects, no API version guessing.
19
+ - **One interface, two backends** — Chat Completions and Responses API through the same agent, tool, and session code.
20
+ - **Agents that compose** — handoffs, subagents, guardrails, and hooks in a single run loop. Deny or modify tool calls at runtime.
21
+ - **Human-in-the-loop** — permission callbacks, per-tool approval, glob-filtered tools, and graceful mid-run interrupts.
22
+ - **State you own** — save, resume, and fork conversations as JSON. No server-side threads.
23
+ - **Type-safe end to end** — Zod schemas drive parameters, structured output, and validation. Types flow through agents, hooks, and guardrails at compile time.
24
+ - **Zero dep** — only Zod as a peer dep.
25
25
 
26
- `agents` `tools` `streaming` `structured output` `handoffs` `subagents` `guardrails` `hooks` `tracing` `sessions` `abort signals` `code mode` `todo tracking` `cost tracking` `human-in-the-loop` `predicted output` `audio` `data sources` `context compaction`
26
+ `agents` `tools` `streaming` `structured output` `handoffs` `subagents` `guardrails` `hooks` `tracing` `sessions` `abort signals` `code mode` `todo tracking` `cost tracking` `human-in-the-loop` `predicted output` `audio` `data sources` `context compaction` `background tasks` `testing utilities` `debug mode`
27
27
 
28
28
  ## Install
29
29
 
@@ -41,13 +41,9 @@ bun add zod
41
41
 
42
42
  ```ts
43
43
  import { z } from "zod";
44
- import { Agent, AzureResponsesModel, run, tool } from "@usestratus/sdk";
44
+ import { Agent, createModel, run, tool } from "@usestratus/sdk";
45
45
 
46
- const model = new AzureResponsesModel({
47
- endpoint: process.env.AZURE_OPENAI_ENDPOINT!,
48
- apiKey: process.env.AZURE_OPENAI_API_KEY!,
49
- deployment: "gpt-5.2",
50
- });
46
+ const model = createModel(); // reads AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_KEY, AZURE_OPENAI_DEPLOYMENT
51
47
 
52
48
  const getWeather = tool({
53
49
  name: "get_weather",
@@ -161,15 +157,15 @@ import { createSession } from "@usestratus/sdk";
161
157
 
162
158
  const session = createSession({ model, tools: [myTool] });
163
159
 
160
+ // Option 1: stream events
164
161
  session.send("Hello!");
165
162
  for await (const event of session.stream()) {
166
163
  // handle events
167
164
  }
168
165
 
166
+ // Option 2: just get the result
169
167
  session.send("Follow-up question");
170
- for await (const event of session.stream()) {
171
- // handle events
172
- }
168
+ const result = await session.wait();
173
169
 
174
170
  // Save and resume sessions
175
171
  const snapshot = session.save();
@@ -448,52 +444,91 @@ Implement the `Executor` interface for custom sandboxes (containers, Cloudflare
448
444
 
449
445
  ## Imports
450
446
 
451
- Stratus provides three export paths:
447
+ Stratus provides four export paths:
452
448
 
453
449
  ```ts
454
450
  // Everything (core + Azure)
455
- import { Agent, run, tool, AzureChatCompletionsModel, AzureResponsesModel } from "@usestratus/sdk";
451
+ import { Agent, run, tool, createModel } from "@usestratus/sdk";
456
452
 
457
453
  // Core only (provider-agnostic)
458
- import { Agent, run, tool } from "@usestratus/sdk/core";
454
+ import { Agent, run, tool, validateAgent } from "@usestratus/sdk/core";
459
455
 
460
456
  // Azure provider only
461
- import { AzureChatCompletionsModel, AzureResponsesModel } from "@usestratus/sdk/azure";
457
+ import { createModel, AzureResponsesModel } from "@usestratus/sdk/azure";
458
+
459
+ // Test utilities (keep out of production bundles)
460
+ import { createMockModel, textResponse, toolCallResponse } from "@usestratus/sdk/testing";
462
461
  ```
463
462
 
464
463
  ## Configuration
465
464
 
466
465
  ### Azure OpenAI
467
466
 
468
- Stratus includes two interchangeable Azure model implementations:
467
+ The fastest way `createModel()` reads from environment variables:
469
468
 
470
469
  ```ts
471
- // Chat Completions API
472
- const model = new AzureChatCompletionsModel({
473
- endpoint: process.env.AZURE_OPENAI_ENDPOINT!,
474
- apiKey: process.env.AZURE_OPENAI_API_KEY!,
475
- deployment: "gpt-5.2",
476
- apiVersion: "2025-03-01-preview", // optional, this is the default
477
- });
470
+ import { createModel } from "@usestratus/sdk";
471
+
472
+ const model = createModel(); // Responses API (default)
473
+ const model = createModel("chat-completions"); // Chat Completions API
474
+ ```
475
+
476
+ Or configure explicitly:
477
+
478
+ ```ts
479
+ import { AzureResponsesModel } from "@usestratus/sdk";
478
480
 
479
- // Responses API
480
481
  const model = new AzureResponsesModel({
481
- endpoint: process.env.AZURE_OPENAI_ENDPOINT!,
482
+ endpoint: "https://your-resource.openai.azure.com",
482
483
  apiKey: process.env.AZURE_OPENAI_API_KEY!,
483
484
  deployment: "gpt-5.2",
484
- apiVersion: "2025-04-01-preview", // optional, this is the default
485
485
  });
486
486
  ```
487
487
 
488
- Both implement the same `Model` interface — swap one for the other without changing any agent, tool, or session code.
488
+ Both models implement the same `Model` interface — swap one for the other without changing any agent, tool, or session code.
489
489
 
490
490
  ### Environment Variables
491
491
 
492
492
  ```
493
493
  AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com
494
494
  AZURE_OPENAI_API_KEY=your-api-key
495
+ AZURE_OPENAI_DEPLOYMENT=gpt-5.2
495
496
  ```
496
497
 
498
+ ## Testing
499
+
500
+ Stratus ships test utilities as a separate entrypoint:
501
+
502
+ ```ts
503
+ import { createMockModel, textResponse, toolCallResponse } from "@usestratus/sdk/testing";
504
+
505
+ const model = createMockModel([
506
+ toolCallResponse([{ name: "search", args: { q: "test" } }]),
507
+ textResponse("Found 3 results"),
508
+ ]);
509
+
510
+ const agent = new Agent({ name: "test", model, tools: [searchTool] });
511
+ const result = await run(agent, "Search for test");
512
+ expect(result.output).toBe("Found 3 results");
513
+
514
+ // Capture requests for assertions
515
+ const model = createMockModel([textResponse("ok")], { capture: true });
516
+ await run(agent, "Hello");
517
+ expect(model.requests[0].messages[0].content).toBe("Hello");
518
+ ```
519
+
520
+ ## Debug Mode
521
+
522
+ Log model calls, tool executions, and handoffs to stderr:
523
+
524
+ ```ts
525
+ const result = await run(agent, "Hello", { debug: true });
526
+ // [stratus:model] 2026-04-02T... request to assistant {"messages":2,"tools":1,"turn":0}
527
+ // [stratus:model] 2026-04-02T... response from assistant {"content":"Hi!","toolCalls":[],...}
528
+ ```
529
+
530
+ Also works on sessions: `createSession({ model, debug: true })`.
531
+
497
532
  ## Error Handling
498
533
 
499
534
  All errors extend `StratusError`:
@@ -0,0 +1,16 @@
1
+ import type { Model } from "../core/model";
2
+ export type ModelType = "responses" | "chat-completions";
3
+ export interface CreateModelOptions {
4
+ endpoint?: string;
5
+ apiKey?: string;
6
+ azureAdTokenProvider?: () => Promise<string>;
7
+ deployment?: string;
8
+ apiVersion?: string;
9
+ maxRetries?: number;
10
+ defaultHeaders?: Record<string, string>;
11
+ /** Only for AzureResponsesModel */
12
+ store?: boolean;
13
+ }
14
+ export declare function createModel(type?: ModelType, options?: CreateModelOptions): Model;
15
+ export declare function createModel(options?: CreateModelOptions): Model;
16
+ //# sourceMappingURL=create-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-model.d.ts","sourceRoot":"","sources":["../../src/azure/create-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAI3C,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,kBAAkB,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,mCAAmC;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,KAAK,CAAC;AACnF,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,KAAK,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { StratusError } from "../core/errors";
2
+ import { AzureChatCompletionsModel } from "./chat-completions-model";
3
+ import { AzureResponsesModel } from "./responses-model";
4
+ export function createModel(typeOrOptions, maybeOptions) {
5
+ let type = "responses";
6
+ let options = {};
7
+ if (typeof typeOrOptions === "string") {
8
+ type = typeOrOptions;
9
+ options = maybeOptions ?? {};
10
+ }
11
+ else if (typeOrOptions) {
12
+ options = typeOrOptions;
13
+ }
14
+ const endpoint = options.endpoint ?? process.env.AZURE_OPENAI_ENDPOINT;
15
+ const apiKey = options.apiKey ?? process.env.AZURE_OPENAI_API_KEY;
16
+ const deployment = options.deployment ?? process.env.AZURE_OPENAI_DEPLOYMENT;
17
+ const apiVersion = options.apiVersion ?? process.env.AZURE_OPENAI_API_VERSION;
18
+ const tokenProvider = options.azureAdTokenProvider;
19
+ if (!endpoint) {
20
+ throw new StratusError("Missing Azure OpenAI endpoint. Set AZURE_OPENAI_ENDPOINT or pass options.endpoint.");
21
+ }
22
+ if (!deployment) {
23
+ throw new StratusError("Missing Azure OpenAI deployment. Set AZURE_OPENAI_DEPLOYMENT or pass options.deployment.");
24
+ }
25
+ if (!apiKey && !tokenProvider) {
26
+ throw new StratusError("Missing Azure OpenAI credentials. Set AZURE_OPENAI_API_KEY or pass options.apiKey / options.azureAdTokenProvider.");
27
+ }
28
+ const baseConfig = {
29
+ endpoint,
30
+ deployment,
31
+ ...(apiKey ? { apiKey } : {}),
32
+ ...(tokenProvider ? { azureAdTokenProvider: tokenProvider } : {}),
33
+ ...(apiVersion ? { apiVersion } : {}),
34
+ ...(options.maxRetries !== undefined ? { maxRetries: options.maxRetries } : {}),
35
+ };
36
+ if (type === "chat-completions") {
37
+ return new AzureChatCompletionsModel(baseConfig);
38
+ }
39
+ return new AzureResponsesModel({
40
+ ...baseConfig,
41
+ ...(options.store !== undefined ? { store: options.store } : {}),
42
+ ...(options.defaultHeaders !== undefined ? { defaultHeaders: options.defaultHeaders } : {}),
43
+ });
44
+ }
45
+ //# sourceMappingURL=create-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-model.js","sourceRoot":"","sources":["../../src/azure/create-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAkBxD,MAAM,UAAU,WAAW,CAC1B,aAA8C,EAC9C,YAAiC;IAEjC,IAAI,IAAI,GAAc,WAAW,CAAC;IAClC,IAAI,OAAO,GAAuB,EAAE,CAAC;IAErC,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACvC,IAAI,GAAG,aAAa,CAAC;QACrB,OAAO,GAAG,YAAY,IAAI,EAAE,CAAC;IAC9B,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QAC1B,OAAO,GAAG,aAAa,CAAC;IACzB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAClE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC9E,MAAM,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAEnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,IAAI,YAAY,CACrB,oFAAoF,CACpF,CAAC;IACH,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,YAAY,CACrB,0FAA0F,CAC1F,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,MAAM,IAAI,YAAY,CACrB,mHAAmH,CACnH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG;QAClB,QAAQ;QACR,UAAU;QACV,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC;IAEF,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACjC,OAAO,IAAI,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,mBAAmB,CAAC;QAC9B,GAAG,UAAU;QACb,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3F,CAAC,CAAC;AACJ,CAAC"}
@@ -15,4 +15,9 @@ export declare function resolveChatCompletionsUrl(endpoint: string, deployment:
15
15
  * Resolve the full URL for Azure Responses API.
16
16
  */
17
17
  export declare function resolveResponsesUrl(endpoint: string, apiVersion: string): string;
18
+ /**
19
+ * Resolve the base URL prefix for Responses API sub-endpoints (compact, retrieve, delete, etc.).
20
+ * Returns the base without a trailing path so callers can append `/compact`, `/{id}`, etc.
21
+ */
22
+ export declare function resolveResponsesBaseUrl(endpoint: string, apiVersion: string): string;
18
23
  //# sourceMappingURL=endpoint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../src/azure/endpoint.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AAEpE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAuBtE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACxC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAChB,MAAM,CAWR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAYhF"}
1
+ {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../src/azure/endpoint.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;AAEpE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAuBtE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACxC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAChB,MAAM,CAWR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAYhF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAkBpF"}
@@ -54,4 +54,26 @@ export function resolveResponsesUrl(endpoint, apiVersion) {
54
54
  return `${normalized}/openai/v1/responses`;
55
55
  }
56
56
  }
57
+ /**
58
+ * Resolve the base URL prefix for Responses API sub-endpoints (compact, retrieve, delete, etc.).
59
+ * Returns the base without a trailing path so callers can append `/compact`, `/{id}`, etc.
60
+ */
61
+ export function resolveResponsesBaseUrl(endpoint, apiVersion) {
62
+ const normalized = endpoint.replace(/\/$/, "");
63
+ const kind = detectEndpointKind(normalized);
64
+ switch (kind) {
65
+ case "full_url":
66
+ // If the URL contains /responses, strip everything after it.
67
+ // Otherwise it's a non-responses full_url (e.g. /openai/deployments/...) —
68
+ // fall through to standard format since sub-endpoints need the /responses base.
69
+ if (normalized.includes("/responses")) {
70
+ return normalized.replace(/\/responses.*$/, "/responses");
71
+ }
72
+ return `${new URL(normalized).origin}/openai/v1/responses`;
73
+ case "foundry":
74
+ return `${normalized}/openai/responses?api-version=${apiVersion}`;
75
+ case "standard":
76
+ return `${normalized}/openai/v1/responses`;
77
+ }
78
+ }
57
79
  //# sourceMappingURL=endpoint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/azure/endpoint.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IAClD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACJ,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC1B,IACC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EACxB,CAAC;QACF,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACrD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACxC,QAAgB,EAChB,UAAkB,EAClB,UAAkB;IAElB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAE5C,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,UAAU;YACd,OAAO,UAAU,CAAC;QACnB,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS;YACb,OAAO,GAAG,UAAU,uBAAuB,UAAU,iCAAiC,UAAU,EAAE,CAAC;IACrG,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,UAAkB;IACvE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAE5C,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,UAAU;YACd,OAAO,UAAU,CAAC;QACnB,KAAK,SAAS;YACb,OAAO,GAAG,UAAU,iCAAiC,UAAU,EAAE,CAAC;QACnE,KAAK,UAAU;YACd,OAAO,GAAG,UAAU,sBAAsB,CAAC;IAC7C,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/azure/endpoint.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IAClD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACJ,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC1B,IACC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EACxB,CAAC;QACF,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACrD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,UAAU,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACxC,QAAgB,EAChB,UAAkB,EAClB,UAAkB;IAElB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAE5C,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,UAAU;YACd,OAAO,UAAU,CAAC;QACnB,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS;YACb,OAAO,GAAG,UAAU,uBAAuB,UAAU,iCAAiC,UAAU,EAAE,CAAC;IACrG,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,UAAkB;IACvE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAE5C,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,UAAU;YACd,OAAO,UAAU,CAAC;QACnB,KAAK,SAAS;YACb,OAAO,GAAG,UAAU,iCAAiC,UAAU,EAAE,CAAC;QACnE,KAAK,UAAU;YACd,OAAO,GAAG,UAAU,sBAAsB,CAAC;IAC7C,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAgB,EAAE,UAAkB;IAC3E,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAE5C,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,UAAU;YACd,6DAA6D;YAC7D,2EAA2E;YAC3E,gFAAgF;YAChF,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvC,OAAO,UAAU,CAAC,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,sBAAsB,CAAC;QAC5D,KAAK,SAAS;YACb,OAAO,GAAG,UAAU,iCAAiC,UAAU,EAAE,CAAC;QACnE,KAAK,UAAU;YACd,OAAO,GAAG,UAAU,sBAAsB,CAAC;IAC7C,CAAC;AACF,CAAC"}
@@ -1,5 +1,7 @@
1
+ export { createModel } from "./create-model";
2
+ export type { CreateModelOptions, ModelType } from "./create-model";
1
3
  export { AzureChatCompletionsModel } from "./chat-completions-model";
2
4
  export type { AzureChatCompletionsModelConfig } from "./chat-completions-model";
3
5
  export { AzureResponsesModel } from "./responses-model";
4
- export type { AzureResponsesModelConfig } from "./responses-model";
6
+ export type { AzureResponsesModelConfig, CompactOptions, CompactResponse, InputItemList, McpApprovalResponseItem, RawResponse, ResponseStatus, RetrieveStreamOptions, } from "./responses-model";
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/azure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,YAAY,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/azure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,YAAY,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EACX,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,WAAW,EACX,cAAc,EACd,qBAAqB,GACrB,MAAM,mBAAmB,CAAC"}
@@ -1,3 +1,4 @@
1
+ export { createModel } from "./create-model";
1
2
  export { AzureChatCompletionsModel } from "./chat-completions-model";
2
3
  export { AzureResponsesModel } from "./responses-model";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/azure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/azure/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -6,20 +6,94 @@ export interface AzureResponsesModelConfig {
6
6
  deployment: string;
7
7
  apiVersion?: string;
8
8
  store?: boolean;
9
+ /** Extra headers sent with every Responses API request. Useful for Azure preview feature headers. */
10
+ defaultHeaders?: Record<string, string>;
9
11
  /** Maximum number of retries on 429 / network errors (default 3). */
10
12
  maxRetries?: number;
11
13
  }
14
+ export type ResponseStatus = "queued" | "in_progress" | "completed" | "failed" | "incomplete" | "cancelled";
15
+ export interface RawResponse {
16
+ id: string;
17
+ status: ResponseStatus;
18
+ output?: Record<string, unknown>[];
19
+ usage?: {
20
+ input_tokens: number;
21
+ output_tokens: number;
22
+ total_tokens: number;
23
+ };
24
+ incomplete_details?: {
25
+ reason?: string;
26
+ };
27
+ error?: {
28
+ message?: string;
29
+ type?: string;
30
+ code?: string;
31
+ };
32
+ [key: string]: unknown;
33
+ }
34
+ export interface CompactOptions {
35
+ model?: string;
36
+ input?: Record<string, unknown>[];
37
+ previousResponseId?: string;
38
+ signal?: AbortSignal;
39
+ }
40
+ export interface CompactResponse {
41
+ output: Record<string, unknown>[];
42
+ usage?: {
43
+ input_tokens: number;
44
+ output_tokens: number;
45
+ total_tokens: number;
46
+ };
47
+ }
48
+ export interface InputItemList {
49
+ data: Record<string, unknown>[];
50
+ hasMore: boolean;
51
+ firstId?: string;
52
+ lastId?: string;
53
+ }
54
+ export interface McpApprovalResponseItem {
55
+ type: "mcp_approval_response";
56
+ approval_request_id: string;
57
+ approve: boolean;
58
+ }
59
+ export interface RetrieveStreamOptions {
60
+ startingAfter?: number;
61
+ signal?: AbortSignal;
62
+ }
12
63
  export declare class AzureResponsesModel implements Model {
13
64
  private readonly url;
65
+ private readonly baseUrl;
14
66
  private readonly apiKey?;
15
67
  private readonly tokenProvider?;
16
68
  private readonly deployment;
17
69
  private readonly store;
70
+ private readonly defaultHeaders;
18
71
  private readonly maxRetries;
19
72
  constructor(config: AzureResponsesModelConfig);
20
73
  private getAuthHeaders;
21
74
  getResponse(request: ModelRequest, options?: ModelRequestOptions): Promise<ModelResponse>;
22
75
  getStreamedResponse(request: ModelRequest, options?: ModelRequestOptions): AsyncGenerator<StreamEvent>;
76
+ compact(options: CompactOptions): Promise<CompactResponse>;
77
+ createBackgroundResponse(request: ModelRequest, options?: ModelRequestOptions & {
78
+ stream?: boolean;
79
+ }): Promise<RawResponse>;
80
+ streamBackgroundResponse(responseId: string, options?: RetrieveStreamOptions): AsyncGenerator<StreamEvent>;
81
+ retrieveResponse(responseId: string, options?: {
82
+ signal?: AbortSignal;
83
+ }): Promise<RawResponse>;
84
+ deleteResponse(responseId: string, options?: {
85
+ signal?: AbortSignal;
86
+ }): Promise<void>;
87
+ cancelResponse(responseId: string, options?: {
88
+ signal?: AbortSignal;
89
+ }): Promise<RawResponse>;
90
+ listInputItems(responseId: string, options?: {
91
+ signal?: AbortSignal;
92
+ }): Promise<InputItemList>;
93
+ private resolveSubEndpoint;
94
+ private urlHasQuery;
95
+ private doFetchUrl;
96
+ private mapSseEvent;
23
97
  private buildRequestBody;
24
98
  private doFetch;
25
99
  private handleErrorResponse;
@@ -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;AAcvB,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;IAChB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;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;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,yBAAyB;YAe/B,cAAc;IAStB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAgBxF,mBAAmB,CACzB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,cAAc,CAAC,WAAW,CAAC;IA6M9B,OAAO,CAAC,gBAAgB;YAoEV,OAAO;YA8EP,mBAAmB;IA2BjC,OAAO,CAAC,aAAa;CAmCrB"}
1
+ {"version":3,"file":"responses-model.d.ts","sourceRoot":"","sources":["../../src/azure/responses-model.ts"],"names":[],"mappings":"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"}