@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
@@ -0,0 +1,298 @@
1
+ import { TOOL_SET_SNAPSHOT } from './async-params.js';
2
+ import type { ClientTool, ConversationState, CorrelatedToolEventUnion, ServerToolBase, Tool } from './tool-types.js';
3
+ /** Client tool: `function.name` literal. */
4
+ export type ClientToolName<T> = T extends {
5
+ function: {
6
+ name: infer N extends string;
7
+ };
8
+ } ? N : never;
9
+ /**
10
+ * Server-tool stable ID.
11
+ * Prefixed so it can never collide with a client function name.
12
+ * Prefers an explicit `id` on the tool; falls back to `server:${config.type}`.
13
+ *
14
+ * When `T`'s `id` has been widened to plain `string` (e.g. a custom-ID
15
+ * `ServerTool<T, TId>` value erased to the exported `ServerToolBase`
16
+ * interface), the concrete literal is no longer visible at the type level.
17
+ * Synthesizing `` `server:${config.type}` `` in that case would be unsound:
18
+ * the runtime `id` could be anything, and the synthesized literal would
19
+ * both reject the real id and falsely claim a default that may not hold.
20
+ * Widening to `string` here is the sound choice — it accepts any runtime id.
21
+ * Only tools with no structural `id` at all fall back to the synthesized
22
+ * default, and concrete `ServerTool<T, TId>` values keep their literal `TId`.
23
+ */
24
+ export type ServerToolIdOf<T> = 'id' extends keyof T ? T extends {
25
+ readonly id?: infer Id;
26
+ } ? Extract<Id, string> extends infer StringId extends string ? string extends StringId ? string : StringId : never : never : T extends {
27
+ readonly config: {
28
+ type: infer K extends string;
29
+ };
30
+ } ? `server:${K}` : never;
31
+ /** Union of every addressable id for one tool. */
32
+ export type ToolIdOf<T extends Tool> = T extends ServerToolBase ? ServerToolIdOf<T> : ClientToolName<T>;
33
+ export type ToolIdsOfTuple<T extends readonly Tool[]> = ToolIdOf<T[number]>;
34
+ export type ClientToolNamesOfTuple<T extends readonly Tool[]> = ClientToolName<Extract<T[number], ClientTool>>;
35
+ export type ServerToolIdsOfTuple<T extends readonly Tool[]> = ServerToolIdOf<Extract<T[number], ServerToolBase>>;
36
+ /** Lookup tool by id inside a tuple (preserves concrete member type). */
37
+ export type ToolById<T extends readonly Tool[], Id extends string> = Extract<{
38
+ [I in keyof T]: T[I] extends Tool ? (ToolIdOf<T[I]> extends Id ? T[I] : never) : never;
39
+ }[number], Tool>;
40
+ /**
41
+ * Distributive per-element filter used for the wide (non-tuple) case below.
42
+ * A "naked" type parameter (`El`) is required for the conditional to
43
+ * distribute over the `T[number]` union; wrapping it in an indexed access
44
+ * (e.g. checking `T[number]` directly inside the conditional) would collapse
45
+ * to a single non-distributive check instead.
46
+ */
47
+ type KeepIfActive<El, Active extends string> = El extends Tool ? string extends ToolIdOf<El> ? El : ToolIdOf<El> extends Active ? El : never : never;
48
+ /**
49
+ * Keep tuple order; drop members whose id is not in Active.
50
+ *
51
+ * A genuine fixed-length tuple (`T['length']` is a literal number) is
52
+ * filtered by exact head/tail recursion, preserving order and concrete
53
+ * per-element types. A dynamic `readonly Tool[]` (e.g. an `@openrouter/agent/mcp`
54
+ * tool array not typed as a literal tuple) has `number extends T['length']`,
55
+ * so it falls back to a distributive per-element filter instead of
56
+ * recursing — the tuple pattern never matches a general array, and without
57
+ * this branch the recursion always bottoms out at `readonly []`.
58
+ */
59
+ export type FilterToolsByIds<T extends readonly Tool[], Active extends string> = number extends T['length'] ? readonly KeepIfActive<T[number], Active>[] : T extends readonly [
60
+ infer H extends Tool,
61
+ ...infer R extends readonly Tool[]
62
+ ] ? ToolIdOf<H> extends Active ? readonly [
63
+ H,
64
+ ...FilterToolsByIds<R, Active>
65
+ ] : FilterToolsByIds<R, Active> : readonly [];
66
+ /** IDs that are statically enabled or selected from the conditional partition. */
67
+ type ResolvedActiveIds<P extends Partition, TActive extends string> = P['enabled'] | Extract<TActive, P['conditional']>;
68
+ /**
69
+ * Exact tuple for static partitions; possible active members for partitions
70
+ * whose runtime predicates can change tuple membership.
71
+ */
72
+ export type ResolvedTools<TTools extends readonly Tool[], P extends Partition, TActive extends P['conditional'] = P['conditional']> = [
73
+ P['conditional']
74
+ ] extends [
75
+ never
76
+ ] ? FilterToolsByIds<TTools, P['enabled'] & ToolIdsOfTuple<TTools>> : readonly FilterToolsByIds<TTools, ResolvedActiveIds<P, TActive> & ToolIdsOfTuple<TTools>>[number][];
77
+ /**
78
+ * Enabled = statically on (default, or .activate / situation.enabled)
79
+ * Disabled = statically off (.deactivate / situation.disabled)
80
+ * Conditional = runtime predicate (.activateWhen / .deactivateWhen / situation rules)
81
+ *
82
+ * Invariants (enforced by mutators via Exclude):
83
+ * Enabled ∩ Disabled = ∅
84
+ * Enabled ∩ Conditional = ∅
85
+ * Disabled ∩ Conditional = ∅
86
+ * Enabled ∪ Disabled ∪ Conditional = all known IDs
87
+ */
88
+ export type Partition = {
89
+ enabled: string;
90
+ disabled: string;
91
+ conditional: string;
92
+ };
93
+ export type EmptyPartition = {
94
+ enabled: never;
95
+ disabled: never;
96
+ conditional: never;
97
+ };
98
+ /** Default construction: every tool ID enabled. */
99
+ export type InitialPartition<T extends readonly Tool[]> = {
100
+ enabled: ToolIdsOfTuple<T>;
101
+ disabled: never;
102
+ conditional: never;
103
+ };
104
+ /**
105
+ * Deliberately imprecise partition for mutable `ToolSet` instances.
106
+ *
107
+ * A mutable `ToolSet` mutates one shared runtime object in place, and any
108
+ * number of aliases can reference that same object. If mutators refined the
109
+ * partition type the way the immutable path does, two aliases of the same
110
+ * live object could statically claim different, contradictory exact
111
+ * partitions the instant one of them mutated — an unsound state (e.g. one
112
+ * alias's type promising `disabled: never` while the object it points to
113
+ * has, in fact, just been deactivated through another alias).
114
+ *
115
+ * Mutable instances therefore use this single widened partition,
116
+ * unconditionally and unchanging, for their entire lifetime: nothing is
117
+ * ever statically guaranteed enabled or disabled, and every id is treated
118
+ * as `conditional` (only knowable by calling `resolve()`). Every alias of a
119
+ * mutable instance carries the exact same (already maximally conservative)
120
+ * type, so no alias can ever make a compile-time claim the runtime object
121
+ * could contradict.
122
+ */
123
+ export type WidenedPartition<T extends readonly Tool[]> = {
124
+ enabled: never;
125
+ disabled: never;
126
+ conditional: ToolIdsOfTuple<T>;
127
+ };
128
+ export type ActivatePartition<P extends Partition, Name extends string> = {
129
+ enabled: P['enabled'] | Name;
130
+ disabled: Exclude<P['disabled'], Name>;
131
+ conditional: Exclude<P['conditional'], Name>;
132
+ };
133
+ export type DeactivatePartition<P extends Partition, Name extends string> = {
134
+ enabled: Exclude<P['enabled'], Name>;
135
+ disabled: P['disabled'] | Name;
136
+ conditional: Exclude<P['conditional'], Name>;
137
+ };
138
+ export type ConditionalPartition<P extends Partition, Name extends string> = {
139
+ enabled: Exclude<P['enabled'], Name>;
140
+ disabled: Exclude<P['disabled'], Name>;
141
+ conditional: P['conditional'] | Name;
142
+ };
143
+ export type ActivationInput<TShared extends Record<string, unknown> = Record<string, unknown>> = {
144
+ state?: ConversationState;
145
+ context?: TShared;
146
+ };
147
+ export type ActivationPredicate<TShared extends Record<string, unknown> = Record<string, unknown>> = (input: ActivationInput<TShared>) => boolean;
148
+ export type SituationConditionalRule<TShared extends Record<string, unknown> = Record<string, unknown>> = ActivationPredicate<TShared> | {
149
+ mode?: 'activateWhen' | 'deactivateWhen';
150
+ predicate: ActivationPredicate<TShared>;
151
+ };
152
+ /**
153
+ * Declarative fixed partition overlay for one named situation.
154
+ * Keys not listed keep the base ToolSet partition after the overlay.
155
+ */
156
+ export type SituationConfig<TIds extends string = string, TShared extends Record<string, unknown> = Record<string, unknown>> = {
157
+ /** Statically on in this situation. */
158
+ enabled?: readonly TIds[];
159
+ /** Statically off in this situation. */
160
+ disabled?: readonly TIds[];
161
+ /**
162
+ * Conditional tools for this situation.
163
+ * Default mode is activateWhen (inactive until predicate is true).
164
+ * Use `{ mode: 'deactivateWhen', predicate }` for the reverse default.
165
+ */
166
+ conditional?: {
167
+ readonly [K in TIds]?: SituationConditionalRule<TShared>;
168
+ };
169
+ };
170
+ /** Situations registry accumulated on the ToolSet type. */
171
+ export type SituationMap = Record<string, {
172
+ enabled: string;
173
+ disabled: string;
174
+ conditional: string;
175
+ }>;
176
+ export type EmptySituations = Record<never, never>;
177
+ /**
178
+ * Deliberately imprecise situation registry for mutable `ToolSet` instances.
179
+ *
180
+ * Mirrors {@link WidenedPartition}: since `defineSituations` on a mutable
181
+ * instance mutates the shared runtime situation registry in place, its type
182
+ * cannot statically promise a specific set of situation names without
183
+ * risking the same cross-alias contradiction. `string` keeps every
184
+ * situation name assignable while still requiring a real string key.
185
+ */
186
+ export type WidenedSituationMap = Record<string, Partition>;
187
+ export type SituationNames<S extends SituationMap> = keyof S & string;
188
+ /**
189
+ * Infer the static partition contribution of a situation config object.
190
+ * Missing fields contribute `never`.
191
+ */
192
+ export type InferSituationEntry<C> = {
193
+ enabled: C extends {
194
+ enabled: readonly (infer E extends string)[];
195
+ } ? E : never;
196
+ disabled: C extends {
197
+ disabled: readonly (infer D extends string)[];
198
+ } ? D : never;
199
+ conditional: C extends {
200
+ conditional: infer Cond;
201
+ } ? keyof Cond & string : never;
202
+ };
203
+ export type InferSituationMap<M> = {
204
+ [K in keyof M]: InferSituationEntry<M[K]>;
205
+ };
206
+ /**
207
+ * Apply a situation overlay onto a base partition.
208
+ * Situation wins for every id it mentions; others stay from base.
209
+ */
210
+ export type ApplySituationPartition<Base extends Partition, Sit extends {
211
+ enabled: string;
212
+ disabled: string;
213
+ conditional: string;
214
+ }> = {
215
+ enabled: Exclude<Base['enabled'], Sit['enabled'] | Sit['disabled'] | Sit['conditional']> | Sit['enabled'];
216
+ disabled: Exclude<Base['disabled'], Sit['enabled'] | Sit['disabled'] | Sit['conditional']> | Sit['disabled'];
217
+ conditional: Exclude<Base['conditional'], Sit['enabled'] | Sit['disabled'] | Sit['conditional']> | Sit['conditional'];
218
+ };
219
+ export type StatusReason = 'default' | 'activate' | 'deactivate' | 'activateWhen' | 'deactivateWhen' | 'situation';
220
+ export type ToolStatusEntry = {
221
+ readonly enabled: boolean;
222
+ readonly reason: StatusReason;
223
+ /**
224
+ * The last applicable directive for this tool before predicates ran, if any.
225
+ * Absent when the tool is still at its construction default.
226
+ */
227
+ readonly directive?: 'activate' | 'deactivate' | 'activateWhen' | 'deactivateWhen';
228
+ /** True when the final state depended on evaluating a runtime predicate. */
229
+ readonly predicate?: boolean;
230
+ };
231
+ export type StatusByToolMap<TIds extends string> = {
232
+ readonly [K in TIds]: ToolStatusEntry;
233
+ };
234
+ /**
235
+ * What resolve() / resolveSituation() returns.
236
+ *
237
+ * For static-only partitions (`conditional = never`), the snapshot is fully
238
+ * known at compile time. When conditional ≠ never, TActive selects possible
239
+ * members from `P['conditional']`; `P['enabled']` is always included. Tools
240
+ * become a readonly array of that possible member union because predicates
241
+ * can change length and positions at runtime. Runtime arrays/status are exact.
242
+ *
243
+ * `disabled` is declared as the complement of the *definitely-enabled* set
244
+ * (`P['enabled']`), not of `TActive`. A conditional id's predicate can
245
+ * resolve to either outcome at runtime — `#resolveWithActivation` pushes it
246
+ * into `disabled` whenever the predicate says off — so conditional ids must
247
+ * remain in both the `enabled` and `disabled` upper bounds for the declared
248
+ * types to stay sound. (Subtracting `TActive`, which already includes
249
+ * `P['conditional']`, would wrongly exclude conditional ids from `disabled`.)
250
+ */
251
+ export type ResolvedToolSnapshot<TTools extends readonly Tool[], P extends Partition, TActive extends P['conditional'] = P['conditional']> = {
252
+ /** Active tools only, construction order preserved, concrete member types kept. */
253
+ readonly tools: ResolvedTools<TTools, P, TActive>;
254
+ /** Active client names only (`callModel.activeTools` wire format). Server ids omitted. */
255
+ readonly activeTools: readonly Extract<ResolvedActiveIds<P, TActive>, ClientToolNamesOfTuple<TTools>>[];
256
+ /** Spread-safe input for `callModel`; snapshot metadata is intentionally excluded. */
257
+ readonly callModel: {
258
+ readonly tools: ResolvedTools<TTools, P, TActive>;
259
+ readonly activeTools: readonly Extract<ResolvedActiveIds<P, TActive>, ClientToolNamesOfTuple<TTools>>[];
260
+ };
261
+ /** IDs that resolved active (client + server). */
262
+ readonly enabled: readonly (ResolvedActiveIds<P, TActive> & ToolIdsOfTuple<TTools>)[];
263
+ /**
264
+ * IDs that resolved inactive (client + server). Sound upper bound: the
265
+ * complement of the definitely-enabled set, so conditional ids whose
266
+ * predicate resolves `false` are included here too.
267
+ */
268
+ readonly disabled: readonly Exclude<ToolIdsOfTuple<TTools>, P['enabled']>[];
269
+ /** Exhaustive id → status entry. Every ToolIdsOfTuple key present. */
270
+ readonly statusByTool: StatusByToolMap<ToolIdsOfTuple<TTools>>;
271
+ /** Internal marker allowing `callModel` to recognize a snapshot spread. */
272
+ readonly [TOOL_SET_SNAPSHOT]: true;
273
+ };
274
+ /**
275
+ * Structural shape for extracting partition/situation generics from either
276
+ * mutable or immutable `ToolSet` instances.
277
+ */
278
+ export type ToolSetLike<TTools extends readonly Tool[] = readonly Tool[], TShared extends Record<string, unknown> = Record<string, unknown>, P extends Partition = Partition, Sit extends SituationMap = SituationMap> = {
279
+ readonly tools: TTools;
280
+ readonly _partition?: P;
281
+ readonly _situations?: Sit;
282
+ readonly _shared?: TShared;
283
+ };
284
+ /** Every known tool-set ID. */
285
+ export type InferAllIds<TS> = TS extends ToolSetLike<infer T, any, any, any> ? ToolIdsOfTuple<T> : never;
286
+ /** Definitely-enabled IDs (static). */
287
+ export type InferEnabledIds<TS> = TS extends ToolSetLike<any, any, infer P, any> ? P['enabled'] : never;
288
+ /** Definitely-disabled IDs (static). */
289
+ export type InferDisabledIds<TS> = TS extends ToolSetLike<any, any, infer P, any> ? P['disabled'] : never;
290
+ /** Conditionally-activated IDs (runtime predicate). */
291
+ export type InferConditionalIds<TS> = TS extends ToolSetLike<any, any, infer P, any> ? P['conditional'] : never;
292
+ /**
293
+ * Name-correlated streaming events for a tools tuple.
294
+ * Delegates to the agent's core {@link CorrelatedToolEventUnion}.
295
+ */
296
+ export type InferToolSet<T extends readonly Tool[]> = CorrelatedToolEventUnion<T>;
297
+ export {};
298
+ //# sourceMappingURL=tool-set-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-set-types.d.ts","sourceRoot":"","sources":["../../src/lib/tool-set-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { TOOL_SET_SNAPSHOT } from './async-params.js';
2
+ //# sourceMappingURL=tool-set-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-set-types.js","sourceRoot":"","sources":["../../src/lib/tool-set-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,157 @@
1
+ import { TOOL_SET_SNAPSHOT } from './async-params.js';
2
+ import type { ActivatePartition, ActivationInput, ActivationPredicate, ApplySituationPartition, ConditionalPartition, DeactivatePartition, EmptySituations, InferSituationMap, InitialPartition, Partition, ResolvedToolSnapshot, SituationConfig, SituationMap, SituationNames, StatusByToolMap, ToolIdsOfTuple, WidenedPartition, WidenedSituationMap } from './tool-set-types.js';
3
+ import type { Tool } from './tool-types.js';
4
+ /**
5
+ * Selects the return type of a mutator call.
6
+ *
7
+ * A mutable `ToolSet` mutates one shared runtime object in place, and any
8
+ * number of aliases can reference that object. If a mutator refined `P`/`Sit`
9
+ * on a mutable instance the way the immutable path does, two aliases of the
10
+ * *same* live object could statically claim different, contradictory exact
11
+ * types the instant either one mutated — unsound, since both aliases still
12
+ * point at the one object whose actual state matches only the latest call.
13
+ *
14
+ * When `TMutable extends true`, mutators therefore return the receiver's own
15
+ * unchanged type (`ToolSet<TTools, TShared, P, Sit, true>`) instead of a
16
+ * refined `NextP`/`NextSit` — every alias of a mutable instance keeps the
17
+ * exact same (already maximally conservative) static type for its whole
18
+ * lifetime, so no alias can ever contradict another. Immutable instances
19
+ * (`TMutable extends false`) are unaffected: each mutation still returns a
20
+ * brand-new object with the precisely refined `NextP`/`NextSit`, exactly as
21
+ * before.
22
+ */
23
+ type Mutated<TTools extends readonly Tool[], TShared extends Record<string, unknown>, P extends Partition, Sit extends SituationMap, TMutable extends boolean, NextP extends Partition, NextSit extends SituationMap = Sit> = TMutable extends true ? ToolSet<TTools, TShared, P, Sit, true> : ToolSet<TTools, TShared, NextP, NextSit, false>;
24
+ /**
25
+ * Immutable-by-default stateful set of tools with a three-way static
26
+ * partition (enabled / disabled / conditional) and optional named situations.
27
+ *
28
+ * @typeParam TTools - Concrete ordered tools tuple
29
+ * @typeParam TShared - Shared context shape for predicates
30
+ * @typeParam P - Compile-time partition of tool-set IDs
31
+ * @typeParam Sit - Named situation registry
32
+ * @typeParam TMutable - Whether this instance mutates in place. Mutable
33
+ * instances deliberately carry a single widened `P`/`Sit` for their entire
34
+ * lifetime (see {@link Mutated}) so that every alias stays sound; immutable
35
+ * instances keep the exact, precisely-refined `P`/`Sit` per instance.
36
+ */
37
+ export declare class ToolSet<TTools extends readonly Tool[] = readonly Tool[], TShared extends Record<string, unknown> = Record<string, unknown>, P extends Partition = InitialPartition<TTools>, Sit extends SituationMap = EmptySituations, TMutable extends boolean = false> {
38
+ #private;
39
+ /**
40
+ * Phantom carriers so inference utilities can recover partition/situation
41
+ * generics from a concrete instance type.
42
+ */
43
+ readonly _partition?: P;
44
+ readonly _situations?: Sit;
45
+ readonly _shared?: TShared;
46
+ private constructor();
47
+ /** Internal factory. Prefer `createToolSet` for the public API. */
48
+ static create<T extends readonly Tool[], S extends Record<string, unknown> = Record<string, unknown>>(opts: {
49
+ tools: T;
50
+ mutable: true;
51
+ }): ToolSet<T, S, WidenedPartition<T>, WidenedSituationMap, true>;
52
+ static create<T extends readonly Tool[], S extends Record<string, unknown> = Record<string, unknown>>(opts: {
53
+ tools: T;
54
+ mutable?: false;
55
+ }): ToolSet<T, S, InitialPartition<T>, EmptySituations, false>;
56
+ /** All tools in construction order, regardless of activation state. */
57
+ get tools(): TTools;
58
+ activate<const N extends ToolIdsOfTuple<TTools>>(names: N | readonly N[]): Mutated<TTools, TShared, P, Sit, TMutable, ActivatePartition<P, N>>;
59
+ deactivate<const N extends ToolIdsOfTuple<TTools>>(names: N | readonly N[]): Mutated<TTools, TShared, P, Sit, TMutable, DeactivatePartition<P, N>>;
60
+ activateWhen<const N extends ToolIdsOfTuple<TTools>>(name: N, predicate: ActivationPredicate<TShared>): Mutated<TTools, TShared, P, Sit, TMutable, ConditionalPartition<P, N>>;
61
+ activateWhen<const N extends ToolIdsOfTuple<TTools>>(map: {
62
+ readonly [K in N]?: ActivationPredicate<TShared>;
63
+ }): Mutated<TTools, TShared, P, Sit, TMutable, ConditionalPartition<P, N>>;
64
+ deactivateWhen<const N extends ToolIdsOfTuple<TTools>>(name: N, predicate: ActivationPredicate<TShared>): Mutated<TTools, TShared, P, Sit, TMutable, ConditionalPartition<P, N>>;
65
+ deactivateWhen<const N extends ToolIdsOfTuple<TTools>>(map: {
66
+ readonly [K in N]?: ActivationPredicate<TShared>;
67
+ }): Mutated<TTools, TShared, P, Sit, TMutable, ConditionalPartition<P, N>>;
68
+ /**
69
+ * Register named declarative situations. Each situation overlays the base
70
+ * partition — ids it does not mention keep whatever the base set declares.
71
+ *
72
+ * Replaces any previously defined situations (last-call-wins at the registry level).
73
+ */
74
+ defineSituations<const M extends {
75
+ readonly [K in string]: SituationConfig<ToolIdsOfTuple<TTools>, TShared>;
76
+ }>(situations: M): Mutated<TTools, TShared, P, Sit, TMutable, P, InferSituationMap<M>>;
77
+ /**
78
+ * Resolve against the base partition (no situation overlay).
79
+ * When the partition is purely static, the active tool tuple is exact at
80
+ * compile time. Conditional ids expand the compile-time upper bound.
81
+ */
82
+ resolve(input?: ActivationInput<TShared>): ResolvedToolSnapshot<TTools, P, P['conditional']>;
83
+ /**
84
+ * Back-compat alias for {@link resolve}. Prefer `resolve` for new code.
85
+ *
86
+ * Returns the full snapshot, including metadata (`enabled`, `disabled`,
87
+ * `statusByTool`) that is not a valid `callModel` input. Only `tools` and
88
+ * `activeTools` are meant to reach `callModel` — spread those two fields
89
+ * (or use `resolve(...).callModel`, which contains exactly them),
90
+ * not the whole return value of this method:
91
+ *
92
+ * ```ts
93
+ * const { tools, activeTools } = toolSet.inferTools();
94
+ * callModel(client, { model, input, tools, activeTools });
95
+ * ```
96
+ *
97
+ * This result carries an internal marker so `callModel` can strip its
98
+ * metadata when the whole object is spread. Identically named request fields
99
+ * on ordinary, unmarked inputs are preserved.
100
+ */
101
+ inferTools(input?: ActivationInput<TShared>): {
102
+ tools: Tool[];
103
+ activeTools: string[];
104
+ enabled: readonly string[];
105
+ disabled: readonly string[];
106
+ statusByTool: StatusByToolMap<string>;
107
+ [TOOL_SET_SNAPSHOT]: true;
108
+ };
109
+ /**
110
+ * Resolve a previously-defined named situation. Static situations return
111
+ * exact filtered tool / name tuples at compile time; situations with
112
+ * conditional rules return the sound upper bound, while runtime arrays and
113
+ * `statusByTool` remain exact.
114
+ */
115
+ resolveSituation<Name extends SituationNames<Sit>>(name: Name, input?: ActivationInput<TShared>): ResolvedToolSnapshot<TTools, ApplySituationPartition<P, Sit[Name]>, ApplySituationPartition<P, Sit[Name]>['conditional']>;
116
+ /**
117
+ * Copy state into a fresh, independent instance.
118
+ *
119
+ * Flipping to `mutable: true` starts a *new* mutation lifetime, so — like
120
+ * `ToolSet.create({ mutable: true })` — the clone's partition/situations
121
+ * widen to {@link WidenedPartition}/{@link WidenedSituationMap} rather than
122
+ * inheriting the source's exact `P`/`Sit`: an exact type could otherwise be
123
+ * invalidated the moment the clone is mutated, while other clones or the
124
+ * original remain unaffected. Cloning without flipping mode (mode
125
+ * inherited, including an already-mutable source) or flipping to `false`
126
+ * keeps the source's `P`/`Sit` unchanged.
127
+ */
128
+ clone(opts?: {
129
+ mutable?: undefined;
130
+ }): ToolSet<TTools, TShared, P, Sit, TMutable>;
131
+ clone(opts: {
132
+ mutable: true;
133
+ }): ToolSet<TTools, TShared, WidenedPartition<TTools>, WidenedSituationMap, true>;
134
+ clone(opts: {
135
+ mutable: false;
136
+ }): ToolSet<TTools, TShared, P, Sit, false>;
137
+ }
138
+ /**
139
+ * Construct a {@link ToolSet}.
140
+ *
141
+ * `mutable: true` deliberately returns a widened partition/situations type
142
+ * (`WidenedPartition`/`WidenedSituationMap`) rather than the exact
143
+ * `InitialPartition`/`EmptySituations` used by the default immutable mode —
144
+ * see {@link Mutated} for why mutable instances need this from construction
145
+ * onward. Omitting `mutable` (or passing `false`) keeps today's exact,
146
+ * precisely-refined immutable partition tracking unchanged.
147
+ */
148
+ export declare function createToolSet<const T extends readonly Tool[], TShared extends Record<string, unknown> = Record<string, unknown>>(opts: {
149
+ tools: T;
150
+ mutable: true;
151
+ }): ToolSet<T, TShared, WidenedPartition<T>, WidenedSituationMap, true>;
152
+ export declare function createToolSet<const T extends readonly Tool[], TShared extends Record<string, unknown> = Record<string, unknown>>(opts: {
153
+ tools: T;
154
+ mutable?: false;
155
+ }): ToolSet<T, TShared, InitialPartition<T>, EmptySituations, false>;
156
+ export type { ActivatePartition, ActivationInput, ActivationPredicate, ApplySituationPartition, ClientToolName, ClientToolNamesOfTuple, ConditionalPartition, DeactivatePartition, EmptyPartition, EmptySituations, FilterToolsByIds, InferAllIds, InferConditionalIds, InferDisabledIds, InferEnabledIds, InferSituationEntry, InferSituationMap, InferToolSet, InitialPartition, Partition, ResolvedToolSnapshot, ResolvedTools, ServerToolIdOf, ServerToolIdsOfTuple, SituationConditionalRule, SituationConfig, SituationMap, SituationNames, StatusByToolMap, StatusReason, ToolById, ToolIdOf, ToolIdsOfTuple, ToolSetLike, ToolStatusEntry, WidenedPartition, WidenedSituationMap, } from './tool-set-types.js';
157
+ //# sourceMappingURL=tool-set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-set.d.ts","sourceRoot":"","sources":["../../src/lib/tool-set.ts"],"names":[],"mappings":"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"}