@openrouter/agent 0.9.0 → 0.11.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 (155) hide show
  1. package/README.md +267 -2
  2. package/THIRD_PARTY_NOTICES.md +25 -0
  3. package/esm/index.d.ts +4 -3
  4. package/esm/index.d.ts.map +1 -1
  5. package/esm/index.js +1 -1
  6. package/esm/index.js.map +1 -1
  7. package/esm/inner-loop/call-model.d.ts.map +1 -1
  8. package/esm/inner-loop/call-model.js +26 -7
  9. package/esm/inner-loop/call-model.js.map +1 -1
  10. package/esm/lib/agent-tool.d.ts +1 -1
  11. package/esm/lib/agent-tool.d.ts.map +1 -1
  12. package/esm/lib/agent-tool.js.map +1 -1
  13. package/esm/lib/async-params.d.ts +23 -1
  14. package/esm/lib/async-params.d.ts.map +1 -1
  15. package/esm/lib/async-params.js +26 -1
  16. package/esm/lib/async-params.js.map +1 -1
  17. package/esm/lib/conversation-state.d.ts +1 -1
  18. package/esm/lib/conversation-state.d.ts.map +1 -1
  19. package/esm/lib/conversation-state.js +48 -13
  20. package/esm/lib/conversation-state.js.map +1 -1
  21. package/esm/lib/hooks-schemas.d.ts +3 -7
  22. package/esm/lib/hooks-schemas.d.ts.map +1 -1
  23. package/esm/lib/hooks-schemas.js.map +1 -1
  24. package/esm/lib/model-result.d.ts +32 -4
  25. package/esm/lib/model-result.d.ts.map +1 -1
  26. package/esm/lib/model-result.js +444 -128
  27. package/esm/lib/model-result.js.map +1 -1
  28. package/esm/lib/next-turn-params.d.ts.map +1 -1
  29. package/esm/lib/next-turn-params.js +3 -1
  30. package/esm/lib/next-turn-params.js.map +1 -1
  31. package/esm/lib/next-turn-params.test.js +72 -0
  32. package/esm/lib/next-turn-params.test.js.map +1 -1
  33. package/esm/lib/reusable-stream.d.ts +30 -3
  34. package/esm/lib/reusable-stream.d.ts.map +1 -1
  35. package/esm/lib/reusable-stream.js +127 -32
  36. package/esm/lib/reusable-stream.js.map +1 -1
  37. package/esm/lib/stream-transformers.d.ts +1 -1
  38. package/esm/lib/stream-transformers.d.ts.map +1 -1
  39. package/esm/lib/stream-transformers.js.map +1 -1
  40. package/esm/lib/tool-event-broadcaster.d.ts +18 -5
  41. package/esm/lib/tool-event-broadcaster.d.ts.map +1 -1
  42. package/esm/lib/tool-event-broadcaster.js +90 -19
  43. package/esm/lib/tool-event-broadcaster.js.map +1 -1
  44. package/esm/lib/tool-set-types.d.ts +298 -0
  45. package/esm/lib/tool-set-types.d.ts.map +1 -0
  46. package/esm/lib/tool-set-types.js +2 -0
  47. package/esm/lib/tool-set-types.js.map +1 -0
  48. package/esm/lib/tool-set.d.ts +157 -0
  49. package/esm/lib/tool-set.d.ts.map +1 -0
  50. package/esm/lib/tool-set.js +473 -0
  51. package/esm/lib/tool-set.js.map +1 -0
  52. package/esm/lib/tool-types.d.ts +203 -29
  53. package/esm/lib/tool-types.d.ts.map +1 -1
  54. package/esm/lib/tool-types.js.map +1 -1
  55. package/esm/lib/tool.d.ts +47 -21
  56. package/esm/lib/tool.d.ts.map +1 -1
  57. package/esm/lib/tool.js +13 -3
  58. package/esm/lib/tool.js.map +1 -1
  59. package/esm/lib/turn-context.d.ts +1 -1
  60. package/esm/lib/turn-context.d.ts.map +1 -1
  61. package/esm/lib/turn-context.js +1 -2
  62. package/esm/lib/turn-context.js.map +1 -1
  63. package/esm/mcp/auth/auth-resolver.d.ts +14 -0
  64. package/esm/mcp/auth/auth-resolver.d.ts.map +1 -0
  65. package/esm/mcp/auth/auth-resolver.js +27 -0
  66. package/esm/mcp/auth/auth-resolver.js.map +1 -0
  67. package/esm/mcp/auth/auth-types.d.ts +33 -0
  68. package/esm/mcp/auth/auth-types.d.ts.map +1 -0
  69. package/esm/mcp/auth/auth-types.js +4 -0
  70. package/esm/mcp/auth/auth-types.js.map +1 -0
  71. package/esm/mcp/build-tools.d.ts +29 -0
  72. package/esm/mcp/build-tools.d.ts.map +1 -0
  73. package/esm/mcp/build-tools.js +80 -0
  74. package/esm/mcp/build-tools.js.map +1 -0
  75. package/esm/mcp/cache/cache-store.d.ts +24 -0
  76. package/esm/mcp/cache/cache-store.d.ts.map +1 -0
  77. package/esm/mcp/cache/cache-store.js +20 -0
  78. package/esm/mcp/cache/cache-store.js.map +1 -0
  79. package/esm/mcp/cache/cache-types.d.ts +71 -0
  80. package/esm/mcp/cache/cache-types.d.ts.map +1 -0
  81. package/esm/mcp/cache/cache-types.js +49 -0
  82. package/esm/mcp/cache/cache-types.js.map +1 -0
  83. package/esm/mcp/cache/serialize.d.ts +25 -0
  84. package/esm/mcp/cache/serialize.d.ts.map +1 -0
  85. package/esm/mcp/cache/serialize.js +96 -0
  86. package/esm/mcp/cache/serialize.js.map +1 -0
  87. package/esm/mcp/close-quietly.d.ts +24 -0
  88. package/esm/mcp/close-quietly.d.ts.map +1 -0
  89. package/esm/mcp/close-quietly.js +30 -0
  90. package/esm/mcp/close-quietly.js.map +1 -0
  91. package/esm/mcp/create-mcp-tools.d.ts +13 -0
  92. package/esm/mcp/create-mcp-tools.d.ts.map +1 -0
  93. package/esm/mcp/create-mcp-tools.js +87 -0
  94. package/esm/mcp/create-mcp-tools.js.map +1 -0
  95. package/esm/mcp/elicitation.d.ts +11 -0
  96. package/esm/mcp/elicitation.d.ts.map +1 -0
  97. package/esm/mcp/elicitation.js +51 -0
  98. package/esm/mcp/elicitation.js.map +1 -0
  99. package/esm/mcp/errors.d.ts +91 -0
  100. package/esm/mcp/errors.d.ts.map +1 -0
  101. package/esm/mcp/errors.js +91 -0
  102. package/esm/mcp/errors.js.map +1 -0
  103. package/esm/mcp/handle.d.ts +66 -0
  104. package/esm/mcp/handle.d.ts.map +1 -0
  105. package/esm/mcp/handle.js +323 -0
  106. package/esm/mcp/handle.js.map +1 -0
  107. package/esm/mcp/index.d.ts +13 -0
  108. package/esm/mcp/index.d.ts.map +1 -0
  109. package/esm/mcp/index.js +11 -0
  110. package/esm/mcp/index.js.map +1 -0
  111. package/esm/mcp/mcp-connection.d.ts +150 -0
  112. package/esm/mcp/mcp-connection.d.ts.map +1 -0
  113. package/esm/mcp/mcp-connection.js +478 -0
  114. package/esm/mcp/mcp-connection.js.map +1 -0
  115. package/esm/mcp/mcp-sdk.d.ts +10 -0
  116. package/esm/mcp/mcp-sdk.d.ts.map +1 -0
  117. package/esm/mcp/mcp-sdk.js +37 -0
  118. package/esm/mcp/mcp-sdk.js.map +1 -0
  119. package/esm/mcp/rehydrate.d.ts +76 -0
  120. package/esm/mcp/rehydrate.d.ts.map +1 -0
  121. package/esm/mcp/rehydrate.js +505 -0
  122. package/esm/mcp/rehydrate.js.map +1 -0
  123. package/esm/mcp/resource-tools.d.ts +17 -0
  124. package/esm/mcp/resource-tools.d.ts.map +1 -0
  125. package/esm/mcp/resource-tools.js +155 -0
  126. package/esm/mcp/resource-tools.js.map +1 -0
  127. package/esm/mcp/result-mapper.d.ts +19 -0
  128. package/esm/mcp/result-mapper.d.ts.map +1 -0
  129. package/esm/mcp/result-mapper.js +40 -0
  130. package/esm/mcp/result-mapper.js.map +1 -0
  131. package/esm/mcp/schema/json-schema-guards.d.ts +14 -0
  132. package/esm/mcp/schema/json-schema-guards.d.ts.map +1 -0
  133. package/esm/mcp/schema/json-schema-guards.js +19 -0
  134. package/esm/mcp/schema/json-schema-guards.js.map +1 -0
  135. package/esm/mcp/schema/json-schema-to-zod.d.ts +20 -0
  136. package/esm/mcp/schema/json-schema-to-zod.d.ts.map +1 -0
  137. package/esm/mcp/schema/json-schema-to-zod.js +72 -0
  138. package/esm/mcp/schema/json-schema-to-zod.js.map +1 -0
  139. package/esm/mcp/tool-wrapper.d.ts +41 -0
  140. package/esm/mcp/tool-wrapper.d.ts.map +1 -0
  141. package/esm/mcp/tool-wrapper.js +131 -0
  142. package/esm/mcp/tool-wrapper.js.map +1 -0
  143. package/esm/mcp/transport-types.d.ts +45 -0
  144. package/esm/mcp/transport-types.d.ts.map +1 -0
  145. package/esm/mcp/transport-types.js +2 -0
  146. package/esm/mcp/transport-types.js.map +1 -0
  147. package/esm/mcp/types.d.ts +119 -0
  148. package/esm/mcp/types.d.ts.map +1 -0
  149. package/esm/mcp/types.js +2 -0
  150. package/esm/mcp/types.js.map +1 -0
  151. package/esm/mcp/version.d.ts +3 -0
  152. package/esm/mcp/version.d.ts.map +1 -0
  153. package/esm/mcp/version.js +5 -0
  154. package/esm/mcp/version.js.map +1 -0
  155. package/package.json +48 -7
@@ -1 +1 @@
1
- {"version":3,"file":"next-turn-params.d.ts","sourceRoot":"","sources":["../../src/lib/next-turn-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAUnF;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,CAAC,gBAAgB,GAC/B,qBAAqB,CAWvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EACjC,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,cAAc,EAAE,MAAM,CAAC,gBAAgB,GACtC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CA4CzC;AAyED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAChC,cAAc,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAC7C,MAAM,CAAC,gBAAgB,CAWzB"}
1
+ {"version":3,"file":"next-turn-params.d.ts","sourceRoot":"","sources":["../../src/lib/next-turn-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAUnF;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,CAAC,gBAAgB,GAC/B,qBAAqB,CAYvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EACjC,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,cAAc,EAAE,MAAM,CAAC,gBAAgB,GACtC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CA4CzC;AA0ED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAChC,cAAc,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAC7C,MAAM,CAAC,gBAAgB,CAWzB"}
@@ -15,6 +15,7 @@ function isRecord(value) {
15
15
  export function buildNextTurnParamsContext(request) {
16
16
  return {
17
17
  input: request.input ?? [],
18
+ toolChoice: request.toolChoice,
18
19
  model: request.model ?? '',
19
20
  models: request.models ?? [],
20
21
  temperature: request.temperature ?? null,
@@ -79,7 +80,7 @@ async function processNextTurnParamsForCall(nextParams, params, workingContext,
79
80
  if (!isValidNextTurnParamKey(paramKey)) {
80
81
  if (process.env['NODE_ENV'] !== 'production') {
81
82
  console.warn(`Invalid nextTurnParams key "${paramKey}" in tool "${toolName}". ` +
82
- 'Valid keys: input, model, models, temperature, maxOutputTokens, topP, topK, instructions');
83
+ 'Valid keys: input, toolChoice, model, models, temperature, maxOutputTokens, topP, topK, instructions');
83
84
  }
84
85
  continue;
85
86
  }
@@ -97,6 +98,7 @@ async function processNextTurnParamsForCall(nextParams, params, workingContext,
97
98
  function isValidNextTurnParamKey(key) {
98
99
  const validKeys = new Set([
99
100
  'input',
101
+ 'toolChoice',
100
102
  'model',
101
103
  'models',
102
104
  'temperature',
@@ -1 +1 @@
1
- {"version":3,"file":"next-turn-params.js","sourceRoot":"","sources":["../../src/lib/next-turn-params.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"next-turn-params.js","sourceRoot":"","sources":["../../src/lib/next-turn-params.ts"],"names":[],"mappings":"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"}
@@ -95,4 +95,76 @@ describe('applyNextTurnParamsToRequest', () => {
95
95
  expect(result.instructions).toBe('');
96
96
  });
97
97
  });
98
+ /*
99
+ * `toolChoice` is how a tool-search tool widens the model's reach mid-run: the
100
+ * `tools` array stays byte-identical (preserving the provider's prompt-cache
101
+ * prefix) while `{ type: 'allowed_tools', tools: [...] }` grows.
102
+ */
103
+ describe('applyNextTurnParamsToRequest with allowed_tools', () => {
104
+ const allowed = (names) => ({
105
+ type: 'allowed_tools',
106
+ mode: 'auto',
107
+ tools: names.map((name) => ({
108
+ type: 'function',
109
+ name,
110
+ })),
111
+ });
112
+ it('replaces toolChoice with a widened allowed_tools set', () => {
113
+ const request = createBaseRequest({
114
+ toolChoice: allowed([
115
+ 'tool_search',
116
+ ]),
117
+ });
118
+ const result = applyNextTurnParamsToRequest(request, {
119
+ toolChoice: allowed([
120
+ 'tool_search',
121
+ 'get_weather',
122
+ ]),
123
+ });
124
+ expect(result.toolChoice).toEqual(allowed([
125
+ 'tool_search',
126
+ 'get_weather',
127
+ ]));
128
+ });
129
+ it('leaves the tools array untouched so the prompt-cache prefix survives', () => {
130
+ const tools = [
131
+ {
132
+ type: 'function',
133
+ name: 'tool_search',
134
+ parameters: {},
135
+ },
136
+ {
137
+ type: 'function',
138
+ name: 'get_weather',
139
+ parameters: {},
140
+ },
141
+ ];
142
+ const request = createBaseRequest({
143
+ tools,
144
+ toolChoice: allowed([
145
+ 'tool_search',
146
+ ]),
147
+ });
148
+ const result = applyNextTurnParamsToRequest(request, {
149
+ toolChoice: allowed([
150
+ 'tool_search',
151
+ 'get_weather',
152
+ ]),
153
+ });
154
+ expect(result.tools).toBe(tools);
155
+ });
156
+ it('leaves toolChoice alone when no tool computed one', () => {
157
+ const request = createBaseRequest({
158
+ toolChoice: allowed([
159
+ 'tool_search',
160
+ ]),
161
+ });
162
+ const result = applyNextTurnParamsToRequest(request, {
163
+ temperature: 0.2,
164
+ });
165
+ expect(result.toolChoice).toEqual(allowed([
166
+ 'tool_search',
167
+ ]));
168
+ });
169
+ });
98
170
  //# sourceMappingURL=next-turn-params.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"next-turn-params.test.js","sourceRoot":"","sources":["../../src/lib/next-turn-params.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"next-turn-params.test.js","sourceRoot":"","sources":["../../src/lib/next-turn-params.test.ts"],"names":[],"mappings":"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"}
@@ -5,19 +5,32 @@
5
5
  * Key features:
6
6
  * - Multiple concurrent consumers with independent read positions
7
7
  * - New consumers can attach while streaming is active
8
- * - Efficient memory management with automatic cleanup
8
+ * - Full replay for delayed and sequential consumers by default
9
+ * - Opt-in active-consumer replay compaction for bounded memory
9
10
  * - Each consumer can read at their own pace
10
11
  */
12
+ export type StreamReplay = 'full' | 'active-consumers';
13
+ export interface ReusableReadableStreamOptions<T> {
14
+ streamReplay?: StreamReplay;
15
+ onValue?: (value: T) => void;
16
+ isTerminalValue?: (value: T) => boolean;
17
+ }
11
18
  export declare class ReusableReadableStream<T> {
12
19
  private sourceStream;
13
20
  private buffer;
21
+ private bufferHead;
22
+ private trimOffset;
14
23
  private consumers;
15
24
  private nextConsumerId;
16
25
  private sourceReader;
17
26
  private sourceComplete;
18
27
  private sourceError;
19
28
  private pumpStarted;
20
- constructor(sourceStream: ReadableStream<T>);
29
+ private sourceCancelPromise;
30
+ private readonly streamReplay;
31
+ private readonly onValue;
32
+ private readonly isTerminalValue;
33
+ constructor(sourceStream: ReadableStream<T>, options?: ReusableReadableStreamOptions<T>);
21
34
  /**
22
35
  * True once the source stream has been fully read into the buffer.
23
36
  * A fresh consumer created after this point replays the retained buffer
@@ -35,13 +48,27 @@ export declare class ReusableReadableStream<T> {
35
48
  findLastBuffered(predicate: (item: T) => boolean): T | undefined;
36
49
  /**
37
50
  * Create a new consumer that can independently iterate over the stream.
38
- * Multiple consumers can be created and will all receive the same data.
51
+ * Full-replay consumers start at position 0. Active-consumer replay starts
52
+ * at the current trim watermark. Multiple attached consumers advance
53
+ * independently in either mode.
39
54
  */
40
55
  createConsumer(): AsyncIterableIterator<T>;
56
+ private trimConsumed;
57
+ /**
58
+ * Drop the retained backlog once no consumer can ever read it again.
59
+ * Before the first consumer joins, the backlog IS the catch-up history late
60
+ * joiners replay — retain it. Once at least one consumer has existed and
61
+ * none remain, any future consumer starts at the watermark anyway, so the
62
+ * retained bytes would stay pinned until GC for nothing. `findLastBuffered`
63
+ * callers that must observe terminal events after teardown should capture
64
+ * them via `onValue` instead of relying on the backlog surviving.
65
+ */
66
+ private dropUnreadBacklog;
41
67
  /**
42
68
  * Start pumping data from the source stream into the buffer
43
69
  */
44
70
  private startPump;
71
+ private cancelSourceReader;
45
72
  /**
46
73
  * Notify all waiting consumers that new data is available
47
74
  */
@@ -1 +1 @@
1
- {"version":3,"file":"reusable-stream.d.ts","sourceRoot":"","sources":["../../src/lib/reusable-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,qBAAa,sBAAsB,CAAC,CAAC;IASvB,OAAO,CAAC,YAAY;IARhC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,WAAW,CAAS;gBAER,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;IAEnD;;;;OAIG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,GAAG,SAAS;IAUhE;;;OAGG;IACH,cAAc,IAAI,qBAAqB,CAAC,CAAC,CAAC;IAgH1C;;OAEG;IACH,OAAO,CAAC,SAAS;IAoCjB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB9B"}
1
+ {"version":3,"file":"reusable-stream.d.ts","sourceRoot":"","sources":["../../src/lib/reusable-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,kBAAkB,CAAC;AAEvD,MAAM,WAAW,6BAA6B,CAAC,CAAC;IAC9C,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;CACzC;AAED,qBAAa,sBAAsB,CAAC,CAAC;IAiBjC,OAAO,CAAC,YAAY;IAhBtB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,UAAU,CAAK;IAEvB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,mBAAmB,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;gBAG5D,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,EACvC,OAAO,GAAE,6BAA6B,CAAC,CAAC,CAAM;IAOhD;;;;OAIG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,GAAG,SAAS;IAUhE;;;;;OAKG;IACH,cAAc,IAAI,qBAAqB,CAAC,CAAC,CAAC;IAiI1C,OAAO,CAAC,YAAY;IAqCpB;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,SAAS;IAkDjB,OAAO,CAAC,kBAAkB;IAO1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAwB9B"}
@@ -1,23 +1,20 @@
1
- /**
2
- * A reusable readable stream that allows multiple consumers to read from the same source stream
3
- * concurrently while it's actively streaming, without forcing consumers to wait for full buffering.
4
- *
5
- * Key features:
6
- * - Multiple concurrent consumers with independent read positions
7
- * - New consumers can attach while streaming is active
8
- * - Efficient memory management with automatic cleanup
9
- * - Each consumer can read at their own pace
10
- */
11
1
  export class ReusableReadableStream {
12
- constructor(sourceStream) {
2
+ constructor(sourceStream, options = {}) {
13
3
  this.sourceStream = sourceStream;
14
4
  this.buffer = [];
5
+ this.bufferHead = 0;
6
+ // Consumer positions are absolute. Buffer index = bufferHead + position - trimOffset.
7
+ this.trimOffset = 0;
15
8
  this.consumers = new Map();
16
9
  this.nextConsumerId = 0;
17
10
  this.sourceReader = null;
18
11
  this.sourceComplete = false;
19
12
  this.sourceError = null;
20
13
  this.pumpStarted = false;
14
+ this.sourceCancelPromise = null;
15
+ this.streamReplay = options.streamReplay ?? 'full';
16
+ this.onValue = options.onValue;
17
+ this.isTerminalValue = options.isTerminalValue;
21
18
  }
22
19
  /**
23
20
  * True once the source stream has been fully read into the buffer.
@@ -36,9 +33,9 @@ export class ReusableReadableStream {
36
33
  * buffer asynchronously.
37
34
  */
38
35
  findLastBuffered(predicate) {
39
- for (let i = this.buffer.length - 1; i >= 0; i--) {
36
+ for (let i = this.buffer.length - 1; i >= this.bufferHead; i--) {
40
37
  const item = this.buffer[i];
41
- if (predicate(item)) {
38
+ if (item !== undefined && predicate(item)) {
42
39
  return item;
43
40
  }
44
41
  }
@@ -46,12 +43,14 @@ export class ReusableReadableStream {
46
43
  }
47
44
  /**
48
45
  * Create a new consumer that can independently iterate over the stream.
49
- * Multiple consumers can be created and will all receive the same data.
46
+ * Full-replay consumers start at position 0. Active-consumer replay starts
47
+ * at the current trim watermark. Multiple attached consumers advance
48
+ * independently in either mode.
50
49
  */
51
50
  createConsumer() {
52
51
  const consumerId = this.nextConsumerId++;
53
52
  const state = {
54
- position: 0,
53
+ position: this.trimOffset,
55
54
  waitingPromise: null,
56
55
  cancelled: false,
57
56
  };
@@ -65,23 +64,20 @@ export class ReusableReadableStream {
65
64
  return {
66
65
  async next() {
67
66
  const consumer = self.consumers.get(consumerId);
68
- if (!consumer) {
67
+ if (!consumer || consumer.cancelled) {
69
68
  return {
70
69
  done: true,
71
70
  value: undefined,
72
71
  };
73
72
  }
74
- if (consumer.cancelled) {
75
- return {
76
- done: true,
77
- value: undefined,
78
- };
79
- }
80
- // If we have buffered data at this position, return it
81
- if (consumer.position < self.buffer.length) {
82
- const value = self.buffer[consumer.position];
73
+ const bufferIndex = self.bufferHead + consumer.position - self.trimOffset;
74
+ if (bufferIndex < self.buffer.length) {
75
+ const value = self.buffer[bufferIndex];
76
+ if (value === undefined) {
77
+ throw new Error('ReusableReadableStream buffer invariant violated: consumed slot was cleared');
78
+ }
83
79
  consumer.position++;
84
- // Note: We don't clean up buffer to allow sequential/reusable access
80
+ self.trimConsumed();
85
81
  return {
86
82
  done: false,
87
83
  value,
@@ -110,7 +106,9 @@ export class ReusableReadableStream {
110
106
  // Immediately check if we should resolve after setting up the promise
111
107
  // This handles the case where data arrived or source completed
112
108
  // between our initial checks and promise creation
113
- if (self.sourceComplete || self.sourceError || consumer.position < self.buffer.length) {
109
+ if (self.sourceComplete ||
110
+ self.sourceError ||
111
+ self.bufferHead + consumer.position - self.trimOffset < self.buffer.length) {
114
112
  resolve();
115
113
  }
116
114
  });
@@ -124,7 +122,15 @@ export class ReusableReadableStream {
124
122
  const consumer = self.consumers.get(consumerId);
125
123
  if (consumer) {
126
124
  consumer.cancelled = true;
125
+ // Wake a pending next() so it does not hang forever on a consumer
126
+ // that has just been removed; the re-run next() observes the
127
+ // removal and reports done.
128
+ if (consumer.waitingPromise) {
129
+ consumer.waitingPromise.resolve();
130
+ consumer.waitingPromise = null;
131
+ }
127
132
  self.consumers.delete(consumerId);
133
+ self.trimConsumed();
128
134
  }
129
135
  return {
130
136
  done: true,
@@ -135,7 +141,14 @@ export class ReusableReadableStream {
135
141
  const consumer = self.consumers.get(consumerId);
136
142
  if (consumer) {
137
143
  consumer.cancelled = true;
144
+ // Reject a pending next() with the same error so it does not hang
145
+ // on a consumer that has just been removed.
146
+ if (consumer.waitingPromise) {
147
+ consumer.waitingPromise.reject(e instanceof Error ? e : new Error(String(e)));
148
+ consumer.waitingPromise = null;
149
+ }
138
150
  self.consumers.delete(consumerId);
151
+ self.trimConsumed();
139
152
  }
140
153
  throw e;
141
154
  },
@@ -144,6 +157,59 @@ export class ReusableReadableStream {
144
157
  },
145
158
  };
146
159
  }
160
+ trimConsumed() {
161
+ if (this.streamReplay === 'full') {
162
+ return;
163
+ }
164
+ if (this.consumers.size === 0) {
165
+ this.dropUnreadBacklog();
166
+ return;
167
+ }
168
+ let min = Number.POSITIVE_INFINITY;
169
+ for (const consumer of this.consumers.values()) {
170
+ if (consumer.position < min) {
171
+ min = consumer.position;
172
+ }
173
+ }
174
+ const nextHead = this.bufferHead + min - this.trimOffset;
175
+ if (nextHead <= this.bufferHead) {
176
+ return;
177
+ }
178
+ this.trimOffset = min;
179
+ if (nextHead === this.buffer.length) {
180
+ this.buffer = [];
181
+ this.bufferHead = 0;
182
+ return;
183
+ }
184
+ this.buffer.fill(undefined, this.bufferHead, nextHead);
185
+ if (nextHead >= BUFFER_COMPACTION_MIN_HEAD && nextHead * 2 >= this.buffer.length) {
186
+ this.buffer = this.buffer.slice(nextHead);
187
+ this.bufferHead = 0;
188
+ return;
189
+ }
190
+ this.bufferHead = nextHead;
191
+ }
192
+ /**
193
+ * Drop the retained backlog once no consumer can ever read it again.
194
+ * Before the first consumer joins, the backlog IS the catch-up history late
195
+ * joiners replay — retain it. Once at least one consumer has existed and
196
+ * none remain, any future consumer starts at the watermark anyway, so the
197
+ * retained bytes would stay pinned until GC for nothing. `findLastBuffered`
198
+ * callers that must observe terminal events after teardown should capture
199
+ * them via `onValue` instead of relying on the backlog surviving.
200
+ */
201
+ dropUnreadBacklog() {
202
+ if (this.nextConsumerId === 0) {
203
+ return;
204
+ }
205
+ const dropped = this.buffer.length - this.bufferHead;
206
+ if (dropped === 0) {
207
+ return;
208
+ }
209
+ this.trimOffset += dropped;
210
+ this.buffer = [];
211
+ this.bufferHead = 0;
212
+ }
147
213
  /**
148
214
  * Start pumping data from the source stream into the buffer
149
215
  */
@@ -153,11 +219,12 @@ export class ReusableReadableStream {
153
219
  }
154
220
  this.pumpStarted = true;
155
221
  this.sourceReader = this.sourceStream.getReader();
222
+ const sourceReader = this.sourceReader;
156
223
  // biome-ignore lint: IIFE used for fire-and-forget stream pump
157
224
  void (async () => {
158
225
  try {
159
226
  while (true) {
160
- const result = await this.sourceReader.read();
227
+ const result = await sourceReader.read();
161
228
  if (result.done) {
162
229
  this.sourceComplete = true;
163
230
  this.notifyAllConsumers();
@@ -165,8 +232,20 @@ export class ReusableReadableStream {
165
232
  }
166
233
  // Add to buffer
167
234
  this.buffer.push(result.value);
235
+ this.onValue?.(result.value);
168
236
  // Notify waiting consumers
169
237
  this.notifyAllConsumers();
238
+ if (this.isTerminalValue?.(result.value)) {
239
+ this.sourceComplete = true;
240
+ this.notifyAllConsumers();
241
+ try {
242
+ await this.cancelSourceReader(sourceReader);
243
+ }
244
+ catch {
245
+ // The terminal event is authoritative, cancellation is cleanup only.
246
+ }
247
+ break;
248
+ }
170
249
  }
171
250
  }
172
251
  catch (error) {
@@ -174,12 +253,19 @@ export class ReusableReadableStream {
174
253
  this.notifyAllConsumers();
175
254
  }
176
255
  finally {
177
- if (this.sourceReader) {
178
- this.sourceReader.releaseLock();
256
+ sourceReader.releaseLock();
257
+ if (this.sourceReader === sourceReader) {
258
+ this.sourceReader = null;
179
259
  }
180
260
  }
181
261
  })();
182
262
  }
263
+ cancelSourceReader(sourceReader) {
264
+ if (!this.sourceCancelPromise) {
265
+ this.sourceCancelPromise = sourceReader.cancel();
266
+ }
267
+ return this.sourceCancelPromise;
268
+ }
183
269
  /**
184
270
  * Notify all waiting consumers that new data is available
185
271
  */
@@ -208,11 +294,20 @@ export class ReusableReadableStream {
208
294
  }
209
295
  }
210
296
  this.consumers.clear();
297
+ // Cancellation is terminal: every consumer is gone, so nobody can read
298
+ // the buffered backlog anymore. Drop it instead of pinning it until GC.
299
+ this.dropUnreadBacklog();
211
300
  // Cancel the source stream
212
301
  if (this.sourceReader) {
213
- await this.sourceReader.cancel();
214
- this.sourceReader.releaseLock();
302
+ await this.cancelSourceReader(this.sourceReader);
215
303
  }
304
+ /*
305
+ * The pump may have landed one in-flight chunk between the synchronous
306
+ * section above and reader cancellation — sweep once more so the buffer
307
+ * is empty regardless of microtask interleaving.
308
+ */
309
+ this.dropUnreadBacklog();
216
310
  }
217
311
  }
312
+ const BUFFER_COMPACTION_MIN_HEAD = 1024;
218
313
  //# sourceMappingURL=reusable-stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reusable-stream.js","sourceRoot":"","sources":["../../src/lib/reusable-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reusable-stream.js","sourceRoot":"","sources":["../../src/lib/reusable-stream.ts"],"names":[],"mappings":"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"}
@@ -81,7 +81,7 @@ type InferServerToolOutputsUnion<TTools extends readonly Tool[]> = InferServerTo
81
81
  * `true extends (distributed-check)` so distribution over a union yields
82
82
  * `true` when any member matches (not `boolean`).
83
83
  */
84
- type HasClientTool<TTools extends readonly Tool[]> = true extends (TTools[number] extends ClientTool ? true : never) ? true : false;
84
+ type HasClientTool<TTools extends readonly Tool[]> = Extract<TTools[number], ClientTool> extends never ? false : true;
85
85
  /**
86
86
  * Widest possible streamable output — every item type the API can emit
87
87
  * plus `function_call_output` that we construct for client tool results.
@@ -1 +1 @@
1
- {"version":3,"file":"stream-transformers.d.ts","sourceRoot":"","sources":["../../src/lib/stream-transformers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream-transformers.d.ts","sourceRoot":"","sources":["../../src/lib/stream-transformers.ts"],"names":[],"mappings":"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"}