@aid-framework/runtime 0.0.0-stage → 0.1.39

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 (188) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +52 -2
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/agents/deep_agents.d.ts +78 -0
  5. package/dist/agents/deep_agents.d.ts.map +1 -0
  6. package/dist/agents/deep_agents.js +477 -0
  7. package/dist/agents/deep_agents.js.map +1 -0
  8. package/dist/agents/engine.d.ts +85 -0
  9. package/dist/agents/engine.d.ts.map +1 -0
  10. package/dist/agents/engine.js +129 -0
  11. package/dist/agents/engine.js.map +1 -0
  12. package/dist/agents/gateway_chat_model.d.ts +151 -0
  13. package/dist/agents/gateway_chat_model.d.ts.map +1 -0
  14. package/dist/agents/gateway_chat_model.js +350 -0
  15. package/dist/agents/gateway_chat_model.js.map +1 -0
  16. package/dist/agents/guardrail_middleware.d.ts +57 -0
  17. package/dist/agents/guardrail_middleware.d.ts.map +1 -0
  18. package/dist/agents/guardrail_middleware.js +85 -0
  19. package/dist/agents/guardrail_middleware.js.map +1 -0
  20. package/dist/agents/guardrails.d.ts +124 -0
  21. package/dist/agents/guardrails.d.ts.map +1 -0
  22. package/dist/agents/guardrails.js +336 -0
  23. package/dist/agents/guardrails.js.map +1 -0
  24. package/dist/agents/index.d.ts +15 -0
  25. package/dist/agents/index.d.ts.map +1 -0
  26. package/dist/agents/index.js +15 -0
  27. package/dist/agents/index.js.map +1 -0
  28. package/dist/agents/ir.d.ts +144 -0
  29. package/dist/agents/ir.d.ts.map +1 -0
  30. package/dist/agents/ir.js +513 -0
  31. package/dist/agents/ir.js.map +1 -0
  32. package/dist/agents/loop.d.ts +145 -0
  33. package/dist/agents/loop.d.ts.map +1 -0
  34. package/dist/agents/loop.js +1025 -0
  35. package/dist/agents/loop.js.map +1 -0
  36. package/dist/agents/memory.d.ts +115 -0
  37. package/dist/agents/memory.d.ts.map +1 -0
  38. package/dist/agents/memory.js +258 -0
  39. package/dist/agents/memory.js.map +1 -0
  40. package/dist/agents/state.d.ts +137 -0
  41. package/dist/agents/state.d.ts.map +1 -0
  42. package/dist/agents/state.js +255 -0
  43. package/dist/agents/state.js.map +1 -0
  44. package/dist/concurrency.d.ts +36 -0
  45. package/dist/concurrency.d.ts.map +1 -0
  46. package/dist/concurrency.js +86 -0
  47. package/dist/concurrency.js.map +1 -0
  48. package/dist/control.d.ts +116 -0
  49. package/dist/control.d.ts.map +1 -0
  50. package/dist/control.js +281 -0
  51. package/dist/control.js.map +1 -0
  52. package/dist/cost.d.ts +95 -0
  53. package/dist/cost.d.ts.map +1 -0
  54. package/dist/cost.js +161 -0
  55. package/dist/cost.js.map +1 -0
  56. package/dist/errors.d.ts +213 -0
  57. package/dist/errors.d.ts.map +1 -0
  58. package/dist/errors.js +316 -0
  59. package/dist/errors.js.map +1 -0
  60. package/dist/evals/dataset.d.ts +45 -0
  61. package/dist/evals/dataset.d.ts.map +1 -0
  62. package/dist/evals/dataset.js +147 -0
  63. package/dist/evals/dataset.js.map +1 -0
  64. package/dist/evals/gate.d.ts +236 -0
  65. package/dist/evals/gate.d.ts.map +1 -0
  66. package/dist/evals/gate.js +572 -0
  67. package/dist/evals/gate.js.map +1 -0
  68. package/dist/evals/metrics.d.ts +141 -0
  69. package/dist/evals/metrics.d.ts.map +1 -0
  70. package/dist/evals/metrics.js +364 -0
  71. package/dist/evals/metrics.js.map +1 -0
  72. package/dist/evals/predicate.d.ts +79 -0
  73. package/dist/evals/predicate.d.ts.map +1 -0
  74. package/dist/evals/predicate.js +178 -0
  75. package/dist/evals/predicate.js.map +1 -0
  76. package/dist/evals/runner.d.ts +94 -0
  77. package/dist/evals/runner.d.ts.map +1 -0
  78. package/dist/evals/runner.js +202 -0
  79. package/dist/evals/runner.js.map +1 -0
  80. package/dist/gateway.d.ts +118 -0
  81. package/dist/gateway.d.ts.map +1 -0
  82. package/dist/gateway.js +250 -0
  83. package/dist/gateway.js.map +1 -0
  84. package/dist/index.d.ts +83 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +59 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/internal/json.d.ts +44 -0
  89. package/dist/internal/json.d.ts.map +1 -0
  90. package/dist/internal/json.js +90 -0
  91. package/dist/internal/json.js.map +1 -0
  92. package/dist/internal/text.d.ts +17 -0
  93. package/dist/internal/text.d.ts.map +1 -0
  94. package/dist/internal/text.js +22 -0
  95. package/dist/internal/text.js.map +1 -0
  96. package/dist/pipeline.d.ts +80 -0
  97. package/dist/pipeline.d.ts.map +1 -0
  98. package/dist/pipeline.js +159 -0
  99. package/dist/pipeline.js.map +1 -0
  100. package/dist/policy.d.ts +52 -0
  101. package/dist/policy.d.ts.map +1 -0
  102. package/dist/policy.js +199 -0
  103. package/dist/policy.js.map +1 -0
  104. package/dist/prompts.d.ts +86 -0
  105. package/dist/prompts.d.ts.map +1 -0
  106. package/dist/prompts.js +337 -0
  107. package/dist/prompts.js.map +1 -0
  108. package/dist/providers/base.d.ts +19 -0
  109. package/dist/providers/base.d.ts.map +1 -0
  110. package/dist/providers/base.js +13 -0
  111. package/dist/providers/base.js.map +1 -0
  112. package/dist/providers/fake.d.ts +98 -0
  113. package/dist/providers/fake.d.ts.map +1 -0
  114. package/dist/providers/fake.js +181 -0
  115. package/dist/providers/fake.js.map +1 -0
  116. package/dist/providers/http.d.ts +62 -0
  117. package/dist/providers/http.d.ts.map +1 -0
  118. package/dist/providers/http.js +245 -0
  119. package/dist/providers/http.js.map +1 -0
  120. package/dist/retrieval/chunking.d.ts +88 -0
  121. package/dist/retrieval/chunking.d.ts.map +1 -0
  122. package/dist/retrieval/chunking.js +188 -0
  123. package/dist/retrieval/chunking.js.map +1 -0
  124. package/dist/retrieval/citations.d.ts +98 -0
  125. package/dist/retrieval/citations.d.ts.map +1 -0
  126. package/dist/retrieval/citations.js +134 -0
  127. package/dist/retrieval/citations.js.map +1 -0
  128. package/dist/retrieval/connectors.d.ts +74 -0
  129. package/dist/retrieval/connectors.d.ts.map +1 -0
  130. package/dist/retrieval/connectors.js +218 -0
  131. package/dist/retrieval/connectors.js.map +1 -0
  132. package/dist/retrieval/embedding.d.ts +116 -0
  133. package/dist/retrieval/embedding.d.ts.map +1 -0
  134. package/dist/retrieval/embedding.js +282 -0
  135. package/dist/retrieval/embedding.js.map +1 -0
  136. package/dist/retrieval/gate.d.ts +52 -0
  137. package/dist/retrieval/gate.d.ts.map +1 -0
  138. package/dist/retrieval/gate.js +91 -0
  139. package/dist/retrieval/gate.js.map +1 -0
  140. package/dist/retrieval/hybrid.d.ts +76 -0
  141. package/dist/retrieval/hybrid.d.ts.map +1 -0
  142. package/dist/retrieval/hybrid.js +150 -0
  143. package/dist/retrieval/hybrid.js.map +1 -0
  144. package/dist/retrieval/metrics.d.ts +126 -0
  145. package/dist/retrieval/metrics.d.ts.map +1 -0
  146. package/dist/retrieval/metrics.js +200 -0
  147. package/dist/retrieval/metrics.js.map +1 -0
  148. package/dist/retrieval/pgvector.d.ts +62 -0
  149. package/dist/retrieval/pgvector.d.ts.map +1 -0
  150. package/dist/retrieval/pgvector.js +262 -0
  151. package/dist/retrieval/pgvector.js.map +1 -0
  152. package/dist/retrieval/rerank.d.ts +61 -0
  153. package/dist/retrieval/rerank.d.ts.map +1 -0
  154. package/dist/retrieval/rerank.js +105 -0
  155. package/dist/retrieval/rerank.js.map +1 -0
  156. package/dist/retrieval/retriever.d.ts +125 -0
  157. package/dist/retrieval/retriever.d.ts.map +1 -0
  158. package/dist/retrieval/retriever.js +281 -0
  159. package/dist/retrieval/retriever.js.map +1 -0
  160. package/dist/retrieval/stores.d.ts +106 -0
  161. package/dist/retrieval/stores.d.ts.map +1 -0
  162. package/dist/retrieval/stores.js +142 -0
  163. package/dist/retrieval/stores.js.map +1 -0
  164. package/dist/retrieval/types.d.ts +314 -0
  165. package/dist/retrieval/types.d.ts.map +1 -0
  166. package/dist/retrieval/types.js +388 -0
  167. package/dist/retrieval/types.js.map +1 -0
  168. package/dist/steps.d.ts +156 -0
  169. package/dist/steps.d.ts.map +1 -0
  170. package/dist/steps.js +199 -0
  171. package/dist/steps.js.map +1 -0
  172. package/dist/structured.d.ts +91 -0
  173. package/dist/structured.d.ts.map +1 -0
  174. package/dist/structured.js +155 -0
  175. package/dist/structured.js.map +1 -0
  176. package/dist/tools.d.ts +100 -0
  177. package/dist/tools.d.ts.map +1 -0
  178. package/dist/tools.js +201 -0
  179. package/dist/tools.js.map +1 -0
  180. package/dist/tracing.d.ts +104 -0
  181. package/dist/tracing.d.ts.map +1 -0
  182. package/dist/tracing.js +155 -0
  183. package/dist/tracing.js.map +1 -0
  184. package/dist/types.d.ts +240 -0
  185. package/dist/types.d.ts.map +1 -0
  186. package/dist/types.js +357 -0
  187. package/dist/types.js.map +1 -0
  188. package/package.json +77 -3
@@ -0,0 +1,240 @@
1
+ /**
2
+ * The value types every other module is written against.
3
+ *
4
+ * Two rules are enforced here rather than by convention. First, a `PinnedModel`
5
+ * carries an alias *and* the exact model it resolves to, so nothing is resolved at
6
+ * call time and a recorded baseline means what it says. Second, `TokenUsage` adds
7
+ * component-wise, so merging the usage of a retried call is arithmetic rather than
8
+ * an accounting decision each caller makes differently.
9
+ */
10
+ /** Who authored a message. */
11
+ export type Role = 'system' | 'user' | 'assistant' | 'tool';
12
+ /** Why a generation stopped. */
13
+ export type FinishReason = 'stop' | 'length' | 'tool-calls' | 'content-filter' | 'error';
14
+ /** What a model or adapter can do. */
15
+ export type Capability = 'tool-calling' | 'structured-output' | 'streaming' | 'long-context' | 'embeddings' | 'rerank';
16
+ /** One prompt message. */
17
+ export declare class Message {
18
+ readonly role: Role;
19
+ readonly content: string;
20
+ /**
21
+ * `toolCalls` on an assistant turn and `toolCallId` on a tool turn are what make a
22
+ * multi-step tool loop replayable: without them the next request would carry an
23
+ * observation the provider cannot attribute to the call that produced it.
24
+ */
25
+ readonly toolCalls: readonly ToolCall[];
26
+ readonly toolCallId: string | undefined;
27
+ readonly name: string | undefined;
28
+ constructor(role: Role, content: string, init?: {
29
+ readonly toolCalls?: readonly ToolCall[];
30
+ readonly toolCallId?: string;
31
+ readonly name?: string;
32
+ });
33
+ static system(content: string): Message;
34
+ static user(content: string): Message;
35
+ static assistant(content: string): Message;
36
+ static assistantToolCalls(content: string, toolCalls: readonly ToolCall[]): Message;
37
+ static tool(callId: string, content: string, options?: {
38
+ readonly name?: string;
39
+ }): Message;
40
+ toJSON(): {
41
+ role: Role;
42
+ content: string;
43
+ toolCalls?: readonly ToolCall[];
44
+ toolCallId?: string;
45
+ name?: string;
46
+ };
47
+ }
48
+ /** Token counts for one call. */
49
+ export declare class TokenUsage {
50
+ readonly inputTokens: number;
51
+ readonly outputTokens: number;
52
+ constructor(init?: {
53
+ readonly inputTokens?: number;
54
+ readonly outputTokens?: number;
55
+ });
56
+ get totalTokens(): number;
57
+ /** Component-wise sum, so a retry chain is added rather than guessed at. */
58
+ add(other: TokenUsage): TokenUsage;
59
+ toJSON(): {
60
+ inputTokens: number;
61
+ outputTokens: number;
62
+ };
63
+ }
64
+ /**
65
+ * Published prices, quoted per **1,000 tokens**.
66
+ *
67
+ * Deliberately not interchangeable with
68
+ * {@link import('./retrieval/types.js').EmbeddingCostProfile}, which quotes per
69
+ * million tokens because the IR does.
70
+ */
71
+ export declare class CostProfile {
72
+ readonly inputPer1kUsd: number;
73
+ readonly outputPer1kUsd: number;
74
+ constructor(init: {
75
+ readonly inputPer1kUsd: number;
76
+ readonly outputPer1kUsd: number;
77
+ });
78
+ /** The price of one call, rounded to six decimals. */
79
+ costUsd(usage: TokenUsage): number;
80
+ toJSON(): {
81
+ inputPer1kUsd: number;
82
+ outputPer1kUsd: number;
83
+ };
84
+ }
85
+ /** A provider's model, as declared. */
86
+ export declare class ModelSpec {
87
+ readonly name: string;
88
+ readonly provider: string;
89
+ readonly cost: CostProfile;
90
+ readonly contextWindow: number;
91
+ readonly maxOutputTokens: number;
92
+ readonly capabilities: ReadonlySet<Capability>;
93
+ constructor(init: {
94
+ readonly name: string;
95
+ readonly provider: string;
96
+ readonly cost: CostProfile;
97
+ readonly contextWindow: number;
98
+ readonly maxOutputTokens: number;
99
+ readonly capabilities?: Iterable<Capability>;
100
+ });
101
+ toJSON(): Record<string, unknown>;
102
+ }
103
+ /**
104
+ * An alias already resolved to an exact model.
105
+ *
106
+ * The alias exists purely so cost and traces can be attributed to the name the
107
+ * caller used; the model is what actually runs.
108
+ */
109
+ export declare class PinnedModel {
110
+ readonly alias: string;
111
+ readonly model: ModelSpec;
112
+ constructor(init: {
113
+ readonly alias: string;
114
+ readonly model: ModelSpec;
115
+ });
116
+ /** Whether every requested capability is declared. A subset test, not "any". */
117
+ supports(capabilities: Iterable<Capability>): boolean;
118
+ /** The capabilities in `wanted` that this model does not declare. */
119
+ missing(capabilities: Iterable<Capability>): Capability[];
120
+ }
121
+ /** One function a model may call. */
122
+ export declare class ToolDefinition {
123
+ readonly name: string;
124
+ readonly description: string;
125
+ readonly parameters: Record<string, unknown>;
126
+ constructor(init: {
127
+ readonly name: string;
128
+ readonly description?: string;
129
+ readonly parameters?: Record<string, unknown>;
130
+ });
131
+ /** The OpenAI `tools` entry for this definition. */
132
+ asOpenAiTool(): {
133
+ type: 'function';
134
+ function: {
135
+ name: string;
136
+ description: string;
137
+ parameters: Record<string, unknown>;
138
+ };
139
+ };
140
+ toJSON(): Record<string, unknown>;
141
+ }
142
+ /** A model's request to call a tool. */
143
+ export declare class ToolCall {
144
+ readonly id: string;
145
+ readonly name: string;
146
+ readonly args: Record<string, unknown>;
147
+ constructor(init: {
148
+ readonly id: string;
149
+ readonly name: string;
150
+ readonly arguments?: Record<string, unknown>;
151
+ });
152
+ /** The arguments under the spelling the OpenAI wire format uses. */
153
+ get arguments(): Record<string, unknown>;
154
+ toJSON(): Record<string, unknown>;
155
+ }
156
+ /** What a tool handed back. */
157
+ export declare class ToolResult {
158
+ readonly callId: string;
159
+ readonly name: string;
160
+ readonly content: string;
161
+ readonly isError: boolean;
162
+ constructor(init: {
163
+ readonly callId: string;
164
+ readonly name: string;
165
+ readonly content: string;
166
+ readonly isError?: boolean;
167
+ });
168
+ /** Wrap a value as a string result. */
169
+ static fromValue(call: ToolCall, value: unknown): ToolResult;
170
+ /** Wrap a failure as an error result. */
171
+ static fromError(call: ToolCall, message: string): ToolResult;
172
+ toJSON(): Record<string, unknown>;
173
+ }
174
+ /** A single request to a model. */
175
+ export declare class CompletionRequest {
176
+ readonly messages: readonly Message[];
177
+ readonly temperature: number | undefined;
178
+ readonly maxOutputTokens: number | undefined;
179
+ readonly tools: readonly ToolDefinition[];
180
+ readonly stop: readonly string[];
181
+ constructor(init?: {
182
+ readonly messages?: readonly Message[];
183
+ readonly temperature?: number;
184
+ readonly maxOutputTokens?: number;
185
+ readonly tools?: readonly ToolDefinition[];
186
+ readonly stop?: readonly string[];
187
+ });
188
+ /** A one-message request, with an optional system turn prepended. */
189
+ static prompt(text: string, system?: string): CompletionRequest;
190
+ /** The concatenated message text, which is what a provider hashes. */
191
+ get text(): string;
192
+ /**
193
+ * A stable identity for this request.
194
+ *
195
+ * Recorded next to a result so a baseline can be tied to the exact request that
196
+ * produced it; unset members are excluded so an omitted option and an explicit
197
+ * `undefined` fingerprint identically.
198
+ */
199
+ fingerprint(): string;
200
+ toJSON(): Record<string, unknown>;
201
+ }
202
+ /** What a provider answered. */
203
+ export declare class CompletionResponse {
204
+ readonly text: string;
205
+ readonly model: string;
206
+ readonly provider: string;
207
+ readonly usage: TokenUsage;
208
+ readonly toolCalls: readonly ToolCall[];
209
+ readonly finishReason: FinishReason;
210
+ constructor(init: {
211
+ readonly text: string;
212
+ readonly model: string;
213
+ readonly provider: string;
214
+ readonly usage?: TokenUsage;
215
+ readonly toolCalls?: readonly ToolCall[];
216
+ readonly finishReason?: FinishReason;
217
+ });
218
+ }
219
+ /**
220
+ * A gateway result, including the alias chain that produced it.
221
+ *
222
+ * `fellBack` is derived rather than stored: it is exactly "more than one candidate
223
+ * was tried", and storing it separately invites the two to disagree.
224
+ */
225
+ export declare class GenerationResult {
226
+ readonly response: CompletionResponse;
227
+ readonly alias: string;
228
+ readonly costUsd: number;
229
+ readonly attempts: readonly string[];
230
+ constructor(init: {
231
+ readonly response: CompletionResponse;
232
+ readonly alias: string;
233
+ readonly costUsd: number;
234
+ readonly attempts?: readonly string[];
235
+ });
236
+ get text(): string;
237
+ get usage(): TokenUsage;
238
+ get fellBack(): boolean;
239
+ }
240
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,357 @@
1
+ /**
2
+ * The value types every other module is written against.
3
+ *
4
+ * Two rules are enforced here rather than by convention. First, a `PinnedModel`
5
+ * carries an alias *and* the exact model it resolves to, so nothing is resolved at
6
+ * call time and a recorded baseline means what it says. Second, `TokenUsage` adds
7
+ * component-wise, so merging the usage of a retried call is arithmetic rather than
8
+ * an accounting decision each caller makes differently.
9
+ */
10
+ import { canonicalJson, roundTo, sha256Hex } from './internal/json.js';
11
+ /** One prompt message. */
12
+ export class Message {
13
+ role;
14
+ content;
15
+ /**
16
+ * `toolCalls` on an assistant turn and `toolCallId` on a tool turn are what make a
17
+ * multi-step tool loop replayable: without them the next request would carry an
18
+ * observation the provider cannot attribute to the call that produced it.
19
+ */
20
+ toolCalls;
21
+ toolCallId;
22
+ name;
23
+ constructor(role, content, init = {}) {
24
+ this.role = role;
25
+ this.content = content;
26
+ this.toolCalls = [...(init.toolCalls ?? [])];
27
+ this.toolCallId = init.toolCallId;
28
+ this.name = init.name;
29
+ }
30
+ static system(content) {
31
+ return new Message('system', content);
32
+ }
33
+ static user(content) {
34
+ return new Message('user', content);
35
+ }
36
+ static assistant(content) {
37
+ return new Message('assistant', content);
38
+ }
39
+ static assistantToolCalls(content, toolCalls) {
40
+ return new Message('assistant', content, { toolCalls });
41
+ }
42
+ static tool(callId, content, options = {}) {
43
+ return new Message('tool', content, { toolCallId: callId, name: options.name });
44
+ }
45
+ toJSON() {
46
+ return {
47
+ role: this.role,
48
+ content: this.content,
49
+ ...(this.toolCalls.length > 0 ? { toolCalls: this.toolCalls } : {}),
50
+ ...(this.toolCallId === undefined ? {} : { toolCallId: this.toolCallId }),
51
+ ...(this.name === undefined ? {} : { name: this.name }),
52
+ };
53
+ }
54
+ }
55
+ /** Token counts for one call. */
56
+ export class TokenUsage {
57
+ inputTokens;
58
+ outputTokens;
59
+ constructor(init = {}) {
60
+ const input = init.inputTokens ?? 0;
61
+ const output = init.outputTokens ?? 0;
62
+ if (!Number.isInteger(input) || input < 0) {
63
+ throw new RangeError('inputTokens must be a non-negative integer');
64
+ }
65
+ if (!Number.isInteger(output) || output < 0) {
66
+ throw new RangeError('outputTokens must be a non-negative integer');
67
+ }
68
+ this.inputTokens = input;
69
+ this.outputTokens = output;
70
+ }
71
+ get totalTokens() {
72
+ return this.inputTokens + this.outputTokens;
73
+ }
74
+ /** Component-wise sum, so a retry chain is added rather than guessed at. */
75
+ add(other) {
76
+ return new TokenUsage({
77
+ inputTokens: this.inputTokens + other.inputTokens,
78
+ outputTokens: this.outputTokens + other.outputTokens,
79
+ });
80
+ }
81
+ toJSON() {
82
+ return { inputTokens: this.inputTokens, outputTokens: this.outputTokens };
83
+ }
84
+ }
85
+ /**
86
+ * Published prices, quoted per **1,000 tokens**.
87
+ *
88
+ * Deliberately not interchangeable with
89
+ * {@link import('./retrieval/types.js').EmbeddingCostProfile}, which quotes per
90
+ * million tokens because the IR does.
91
+ */
92
+ export class CostProfile {
93
+ inputPer1kUsd;
94
+ outputPer1kUsd;
95
+ constructor(init) {
96
+ for (const [label, value] of [
97
+ ['inputPer1kUsd', init.inputPer1kUsd],
98
+ ['outputPer1kUsd', init.outputPer1kUsd],
99
+ ]) {
100
+ if (!Number.isFinite(value) || value < 0) {
101
+ throw new RangeError(`${label} must be a non-negative number`);
102
+ }
103
+ }
104
+ this.inputPer1kUsd = init.inputPer1kUsd;
105
+ this.outputPer1kUsd = init.outputPer1kUsd;
106
+ }
107
+ /** The price of one call, rounded to six decimals. */
108
+ costUsd(usage) {
109
+ const thousandths = usage.inputTokens * this.inputPer1kUsd + usage.outputTokens * this.outputPer1kUsd;
110
+ return roundTo(thousandths / 1000, 6);
111
+ }
112
+ toJSON() {
113
+ return { inputPer1kUsd: this.inputPer1kUsd, outputPer1kUsd: this.outputPer1kUsd };
114
+ }
115
+ }
116
+ /** A provider's model, as declared. */
117
+ export class ModelSpec {
118
+ name;
119
+ provider;
120
+ cost;
121
+ contextWindow;
122
+ maxOutputTokens;
123
+ capabilities;
124
+ constructor(init) {
125
+ this.name = init.name;
126
+ this.provider = init.provider;
127
+ this.cost = init.cost;
128
+ this.contextWindow = init.contextWindow;
129
+ this.maxOutputTokens = init.maxOutputTokens;
130
+ this.capabilities = new Set(init.capabilities ?? []);
131
+ }
132
+ toJSON() {
133
+ return {
134
+ name: this.name,
135
+ provider: this.provider,
136
+ cost: this.cost.toJSON(),
137
+ contextWindow: this.contextWindow,
138
+ maxOutputTokens: this.maxOutputTokens,
139
+ capabilities: [...this.capabilities].sort(),
140
+ };
141
+ }
142
+ }
143
+ /**
144
+ * An alias already resolved to an exact model.
145
+ *
146
+ * The alias exists purely so cost and traces can be attributed to the name the
147
+ * caller used; the model is what actually runs.
148
+ */
149
+ export class PinnedModel {
150
+ alias;
151
+ model;
152
+ constructor(init) {
153
+ if (init.alias.length === 0)
154
+ throw new RangeError('alias must not be empty');
155
+ this.alias = init.alias;
156
+ this.model = init.model;
157
+ }
158
+ /** Whether every requested capability is declared. A subset test, not "any". */
159
+ supports(capabilities) {
160
+ for (const capability of capabilities) {
161
+ if (!this.model.capabilities.has(capability))
162
+ return false;
163
+ }
164
+ return true;
165
+ }
166
+ /** The capabilities in `wanted` that this model does not declare. */
167
+ missing(capabilities) {
168
+ const absent = [];
169
+ for (const capability of capabilities) {
170
+ if (!this.model.capabilities.has(capability))
171
+ absent.push(capability);
172
+ }
173
+ return absent;
174
+ }
175
+ }
176
+ /** One function a model may call. */
177
+ export class ToolDefinition {
178
+ name;
179
+ description;
180
+ parameters;
181
+ constructor(init) {
182
+ if (init.name.length === 0)
183
+ throw new RangeError('tool name must not be empty');
184
+ this.name = init.name;
185
+ this.description = init.description ?? '';
186
+ this.parameters = init.parameters ?? { type: 'object', properties: {} };
187
+ }
188
+ /** The OpenAI `tools` entry for this definition. */
189
+ asOpenAiTool() {
190
+ return {
191
+ type: 'function',
192
+ function: {
193
+ name: this.name,
194
+ description: this.description,
195
+ parameters: this.parameters,
196
+ },
197
+ };
198
+ }
199
+ toJSON() {
200
+ return {
201
+ name: this.name,
202
+ description: this.description,
203
+ parameters: this.parameters,
204
+ };
205
+ }
206
+ }
207
+ /** A model's request to call a tool. */
208
+ export class ToolCall {
209
+ id;
210
+ name;
211
+ args;
212
+ constructor(init) {
213
+ if (init.name.length === 0)
214
+ throw new RangeError('tool call name must not be empty');
215
+ this.id = init.id;
216
+ this.name = init.name;
217
+ this.args = init.arguments ?? {};
218
+ }
219
+ /** The arguments under the spelling the OpenAI wire format uses. */
220
+ get arguments() {
221
+ return this.args;
222
+ }
223
+ toJSON() {
224
+ return { id: this.id, name: this.name, arguments: this.args };
225
+ }
226
+ }
227
+ /** What a tool handed back. */
228
+ export class ToolResult {
229
+ callId;
230
+ name;
231
+ content;
232
+ isError;
233
+ constructor(init) {
234
+ this.callId = init.callId;
235
+ this.name = init.name;
236
+ this.content = init.content;
237
+ this.isError = init.isError ?? false;
238
+ }
239
+ /** Wrap a value as a string result. */
240
+ static fromValue(call, value) {
241
+ const content = typeof value === 'string' ? value : canonicalJson(value);
242
+ return new ToolResult({ callId: call.id, name: call.name, content });
243
+ }
244
+ /** Wrap a failure as an error result. */
245
+ static fromError(call, message) {
246
+ return new ToolResult({ callId: call.id, name: call.name, content: message, isError: true });
247
+ }
248
+ toJSON() {
249
+ return {
250
+ callId: this.callId,
251
+ name: this.name,
252
+ content: this.content,
253
+ isError: this.isError,
254
+ };
255
+ }
256
+ }
257
+ /** A single request to a model. */
258
+ export class CompletionRequest {
259
+ messages;
260
+ temperature;
261
+ maxOutputTokens;
262
+ tools;
263
+ stop;
264
+ constructor(init = {}) {
265
+ this.messages = init.messages ?? [];
266
+ this.temperature = init.temperature;
267
+ this.maxOutputTokens = init.maxOutputTokens;
268
+ this.tools = init.tools ?? [];
269
+ this.stop = init.stop ?? [];
270
+ }
271
+ /** A one-message request, with an optional system turn prepended. */
272
+ static prompt(text, system) {
273
+ const messages = [];
274
+ if (system !== undefined)
275
+ messages.push(Message.system(system));
276
+ messages.push(Message.user(text));
277
+ return new CompletionRequest({ messages });
278
+ }
279
+ /** The concatenated message text, which is what a provider hashes. */
280
+ get text() {
281
+ return this.messages.map((message) => message.content).join('\n');
282
+ }
283
+ /**
284
+ * A stable identity for this request.
285
+ *
286
+ * Recorded next to a result so a baseline can be tied to the exact request that
287
+ * produced it; unset members are excluded so an omitted option and an explicit
288
+ * `undefined` fingerprint identically.
289
+ */
290
+ fingerprint() {
291
+ const dump = {
292
+ messages: this.messages.map((message) => message.toJSON()),
293
+ temperature: this.temperature ?? null,
294
+ maxOutputTokens: this.maxOutputTokens ?? null,
295
+ tools: this.tools.map((tool) => tool.toJSON()),
296
+ stop: [...this.stop],
297
+ };
298
+ return sha256Hex(canonicalJson(dump, { excludeNull: true }));
299
+ }
300
+ toJSON() {
301
+ return {
302
+ messages: this.messages.map((message) => message.toJSON()),
303
+ temperature: this.temperature ?? null,
304
+ maxOutputTokens: this.maxOutputTokens ?? null,
305
+ tools: this.tools.map((tool) => tool.toJSON()),
306
+ stop: [...this.stop],
307
+ };
308
+ }
309
+ }
310
+ /** What a provider answered. */
311
+ export class CompletionResponse {
312
+ text;
313
+ model;
314
+ provider;
315
+ usage;
316
+ toolCalls;
317
+ finishReason;
318
+ constructor(init) {
319
+ this.text = init.text;
320
+ this.model = init.model;
321
+ this.provider = init.provider;
322
+ this.usage = init.usage ?? new TokenUsage();
323
+ this.toolCalls = init.toolCalls ?? [];
324
+ this.finishReason = init.finishReason ?? 'stop';
325
+ }
326
+ }
327
+ /**
328
+ * A gateway result, including the alias chain that produced it.
329
+ *
330
+ * `fellBack` is derived rather than stored: it is exactly "more than one candidate
331
+ * was tried", and storing it separately invites the two to disagree.
332
+ */
333
+ export class GenerationResult {
334
+ response;
335
+ alias;
336
+ costUsd;
337
+ attempts;
338
+ constructor(init) {
339
+ if (!(Number.isFinite(init.costUsd) && init.costUsd >= 0)) {
340
+ throw new RangeError('costUsd must be a non-negative number');
341
+ }
342
+ this.response = init.response;
343
+ this.alias = init.alias;
344
+ this.costUsd = init.costUsd;
345
+ this.attempts = init.attempts ?? [];
346
+ }
347
+ get text() {
348
+ return this.response.text;
349
+ }
350
+ get usage() {
351
+ return this.response.usage;
352
+ }
353
+ get fellBack() {
354
+ return this.attempts.length > 1;
355
+ }
356
+ }
357
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}