@fabric-harness/sdk 1.12.2 → 1.14.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 (114) hide show
  1. package/dist/agent-definition.d.ts +6 -0
  2. package/dist/agent-definition.d.ts.map +1 -1
  3. package/dist/agent-definition.js +5 -4
  4. package/dist/agent-definition.js.map +1 -1
  5. package/dist/agent.d.ts +6 -0
  6. package/dist/agent.d.ts.map +1 -1
  7. package/dist/agent.js +45 -1
  8. package/dist/agent.js.map +1 -1
  9. package/dist/channel.d.ts +77 -0
  10. package/dist/channel.d.ts.map +1 -0
  11. package/dist/channel.js +115 -0
  12. package/dist/channel.js.map +1 -0
  13. package/dist/context-budget.d.ts +16 -0
  14. package/dist/context-budget.d.ts.map +1 -1
  15. package/dist/context-budget.js +38 -3
  16. package/dist/context-budget.js.map +1 -1
  17. package/dist/cost-budget.d.ts +106 -1
  18. package/dist/cost-budget.d.ts.map +1 -1
  19. package/dist/cost-budget.js +48 -2
  20. package/dist/cost-budget.js.map +1 -1
  21. package/dist/dispatch.d.ts +95 -0
  22. package/dist/dispatch.d.ts.map +1 -0
  23. package/dist/dispatch.js +175 -0
  24. package/dist/dispatch.js.map +1 -0
  25. package/dist/error.d.ts +1 -1
  26. package/dist/error.d.ts.map +1 -1
  27. package/dist/error.js.map +1 -1
  28. package/dist/filesystem.d.ts +52 -0
  29. package/dist/filesystem.d.ts.map +1 -0
  30. package/dist/filesystem.js +24 -0
  31. package/dist/filesystem.js.map +1 -0
  32. package/dist/history.d.ts +22 -2
  33. package/dist/history.d.ts.map +1 -1
  34. package/dist/history.js +69 -0
  35. package/dist/history.js.map +1 -1
  36. package/dist/index.d.ts +31 -12
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +17 -6
  39. package/dist/index.js.map +1 -1
  40. package/dist/loop.d.ts +29 -3
  41. package/dist/loop.d.ts.map +1 -1
  42. package/dist/loop.js +167 -24
  43. package/dist/loop.js.map +1 -1
  44. package/dist/model.d.ts +47 -0
  45. package/dist/model.d.ts.map +1 -1
  46. package/dist/model.js +250 -79
  47. package/dist/model.js.map +1 -1
  48. package/dist/otel-observer.d.ts +44 -0
  49. package/dist/otel-observer.d.ts.map +1 -0
  50. package/dist/otel-observer.js +165 -0
  51. package/dist/otel-observer.js.map +1 -0
  52. package/dist/persistence.d.ts +70 -0
  53. package/dist/persistence.d.ts.map +1 -0
  54. package/dist/persistence.js +17 -0
  55. package/dist/persistence.js.map +1 -0
  56. package/dist/persistent-agent.d.ts +80 -0
  57. package/dist/persistent-agent.d.ts.map +1 -0
  58. package/dist/persistent-agent.js +69 -0
  59. package/dist/persistent-agent.js.map +1 -0
  60. package/dist/pi-loop-runtime.d.ts.map +1 -1
  61. package/dist/pi-loop-runtime.js +9 -3
  62. package/dist/pi-loop-runtime.js.map +1 -1
  63. package/dist/profile.d.ts +33 -0
  64. package/dist/profile.d.ts.map +1 -0
  65. package/dist/profile.js +10 -0
  66. package/dist/profile.js.map +1 -0
  67. package/dist/providers.d.ts +14 -0
  68. package/dist/providers.d.ts.map +1 -1
  69. package/dist/providers.js +18 -1
  70. package/dist/providers.js.map +1 -1
  71. package/dist/result.d.ts +12 -0
  72. package/dist/result.d.ts.map +1 -1
  73. package/dist/result.js +26 -0
  74. package/dist/result.js.map +1 -1
  75. package/dist/retrieval.d.ts +61 -0
  76. package/dist/retrieval.d.ts.map +1 -0
  77. package/dist/retrieval.js +26 -0
  78. package/dist/retrieval.js.map +1 -0
  79. package/dist/runtime-mode.d.ts +1 -1
  80. package/dist/runtime-mode.d.ts.map +1 -1
  81. package/dist/runtime-mode.js +2 -1
  82. package/dist/runtime-mode.js.map +1 -1
  83. package/dist/scope-key.d.ts +25 -0
  84. package/dist/scope-key.d.ts.map +1 -0
  85. package/dist/scope-key.js +34 -0
  86. package/dist/scope-key.js.map +1 -0
  87. package/dist/session.d.ts +40 -1
  88. package/dist/session.d.ts.map +1 -1
  89. package/dist/session.js +308 -34
  90. package/dist/session.js.map +1 -1
  91. package/dist/skills.d.ts +33 -0
  92. package/dist/skills.d.ts.map +1 -0
  93. package/dist/skills.js +65 -0
  94. package/dist/skills.js.map +1 -0
  95. package/dist/store.d.ts +36 -1
  96. package/dist/store.d.ts.map +1 -1
  97. package/dist/store.js +83 -0
  98. package/dist/store.js.map +1 -1
  99. package/dist/stream-chunks.d.ts +42 -0
  100. package/dist/stream-chunks.d.ts.map +1 -0
  101. package/dist/stream-chunks.js +138 -0
  102. package/dist/stream-chunks.js.map +1 -0
  103. package/dist/strict.d.ts +21 -11
  104. package/dist/strict.d.ts.map +1 -1
  105. package/dist/strict.js +11 -6
  106. package/dist/strict.js.map +1 -1
  107. package/dist/tools.d.ts +32 -4
  108. package/dist/tools.d.ts.map +1 -1
  109. package/dist/tools.js +132 -6
  110. package/dist/tools.js.map +1 -1
  111. package/dist/types.d.ts +110 -3
  112. package/dist/types.d.ts.map +1 -1
  113. package/dist/types.js.map +1 -1
  114. package/package.json +14 -10
package/dist/loop.js CHANGED
@@ -1,7 +1,10 @@
1
1
  import { CostLimitExceededError } from './cost-budget.js';
2
2
  import { FabricError } from './error.js';
3
- import { defaultModelProvider, generateWithRuntime, toolsToModelSchemas } from './model.js';
3
+ import { defaultModelProvider, generateWithRuntime, ProviderHttpError, toolsToModelSchemas } from './model.js';
4
+ import { buildResultFollowUpPrompt, buildResultFooter, ResultUnavailableError } from './result.js';
5
+ import { createResultTools } from './tools.js';
4
6
  import { isContextOverflowError } from './context-budget.js';
7
+ import { StreamChunkWriter } from './stream-chunks.js';
5
8
  export class NativeLoopRuntime {
6
9
  name = 'native';
7
10
  async runPrompt(input) {
@@ -14,11 +17,64 @@ export class NativeLoopRuntime {
14
17
  const provider = input.modelProvider ?? defaultModelProvider;
15
18
  const maxIterations = input.maxIterations ?? 8;
16
19
  let latestUsage;
20
+ let latestAttribution;
21
+ const operationId = input.operationId ?? generateId();
22
+ // Set up result tools when a validator is provided.
23
+ let resultToolBundle;
24
+ if (input.resultValidator) {
25
+ resultToolBundle = createResultTools(input.resultValidator);
26
+ for (const tool of resultToolBundle.tools) {
27
+ input.tools.set(tool.name, tool);
28
+ }
29
+ // Append result footer to the last user message so the model knows to use the tools.
30
+ const lastUserIndex = input.messages.findLastIndex((m) => m.role === 'user');
31
+ const lastUserMsg = lastUserIndex >= 0 ? input.messages[lastUserIndex] : undefined;
32
+ if (lastUserMsg) {
33
+ lastUserMsg.content = `${lastUserMsg.content}${buildResultFooter()}`;
34
+ }
35
+ }
17
36
  for (let iteration = 0; iteration < maxIterations; iteration += 1) {
37
+ const turnId = generateId();
38
+ const turnEmit = async (type, data) => {
39
+ await input.emit(type, { ...(data ?? {}), operationId, turnId });
40
+ };
41
+ // Yield to the microtask queue so any async external-scope observations
42
+ // from previous iterations can settle before we check for them.
43
+ await Promise.resolve();
44
+ // Check for pending external-scope violations from previous iterations.
45
+ // Actual-cost enforcement is intentionally lagged: it protects the *next*
46
+ // call, not the current one, because external scope queries are async
47
+ // and may complete after the current call has already been allowed.
48
+ if (input.costBudget) {
49
+ const pending = input.costBudget.takePendingScopeViolation();
50
+ if (pending) {
51
+ await turnEmit('cost_limit', {
52
+ scope: pending.scope,
53
+ observedUsd: pending.observedUsd,
54
+ limitUsd: pending.limitUsd,
55
+ ...(pending.scopeKey ? { scopeKey: pending.scopeKey } : {}),
56
+ ...(pending.actualsFetchedAt ? { actualsFetchedAt: pending.actualsFetchedAt } : {}),
57
+ ...(pending.cacheTtlMs !== undefined ? { cacheTtlMs: pending.cacheTtlMs } : {}),
58
+ });
59
+ const mode = input.costBudget.onExceed();
60
+ if (mode === 'approve' && input.requestCostLimitApproval) {
61
+ const approved = await input.requestCostLimitApproval(pending);
62
+ if (!approved)
63
+ throw new CostLimitExceededError(pending);
64
+ }
65
+ else {
66
+ throw new CostLimitExceededError(pending);
67
+ }
68
+ }
69
+ }
70
+ await turnEmit('turn_start', { turnId });
71
+ await input.journal?.beforeProvider?.({ operationId, turnId });
18
72
  const request = {
19
73
  messages: input.messages,
20
74
  tools: toolsToModelSchemas(input.tools.values()),
21
75
  ...(input.model !== undefined ? { model: input.model } : {}),
76
+ ...(input.thinkingLevel !== undefined ? { thinkingLevel: input.thinkingLevel } : {}),
77
+ ...(input.affinityKey !== undefined ? { sessionId: input.affinityKey } : {}),
22
78
  };
23
79
  let response;
24
80
  let streamedFinalText = false;
@@ -34,21 +90,31 @@ export class NativeLoopRuntime {
34
90
  ...(input.signal !== undefined ? { signal: input.signal } : {}),
35
91
  };
36
92
  await input.recordEntry('model_attempt', { provider: provider.name, status: 'start', ...(input.model !== undefined ? { model: input.model } : {}) });
37
- await input.emit('model_attempt', { provider: provider.name, status: 'start', ...(input.model !== undefined ? { model: input.model } : {}) });
93
+ await turnEmit('model_attempt', { provider: provider.name, status: 'start', ...(input.model !== undefined ? { model: input.model } : {}) });
94
+ await input.journal?.providerStarted?.({ operationId, turnId });
95
+ const streamKey = `${operationId}:${turnId}`;
96
+ const chunkWriter = input.streamChunkStore ? new StreamChunkWriter(input.streamChunkStore, streamKey) : undefined;
38
97
  let aggregated;
39
- for await (const chunk of streamFn.call(provider, streamRequest)) {
40
- if (chunk.textDelta)
41
- await input.emit('text_delta', { delta: chunk.textDelta });
42
- if (chunk.thinkingDelta)
43
- await input.emit('text_delta', { delta: chunk.thinkingDelta, kind: 'thinking' });
44
- if (chunk.done)
45
- aggregated = chunk.done;
98
+ try {
99
+ for await (const chunk of streamFn.call(provider, streamRequest)) {
100
+ chunkWriter?.write(chunk);
101
+ if (chunk.textDelta)
102
+ await turnEmit('text_delta', { delta: chunk.textDelta });
103
+ if (chunk.thinkingDelta)
104
+ await turnEmit('text_delta', { delta: chunk.thinkingDelta, kind: 'thinking' });
105
+ if (chunk.done)
106
+ aggregated = chunk.done;
107
+ }
108
+ }
109
+ finally {
110
+ await chunkWriter?.close();
46
111
  }
47
112
  if (!aggregated)
48
113
  throw new Error(`${provider.name}: stream ended without a final response.`);
49
114
  response = aggregated;
50
115
  }
51
116
  else {
117
+ await input.journal?.providerStarted?.({ operationId, turnId });
52
118
  response = await generateWithRuntime(provider, request, {
53
119
  ...(input.modelTimeoutMs !== undefined ? { timeoutMs: input.modelTimeoutMs } : {}),
54
120
  ...(input.modelRetries !== undefined ? { retries: input.modelRetries } : {}),
@@ -56,7 +122,7 @@ export class NativeLoopRuntime {
56
122
  ...(input.signal !== undefined ? { signal: input.signal } : {}),
57
123
  onAttempt: async (event) => {
58
124
  await input.recordEntry('model_attempt', event);
59
- await input.emit('model_attempt', event);
125
+ await turnEmit('model_attempt', event);
60
126
  },
61
127
  });
62
128
  }
@@ -66,21 +132,34 @@ export class NativeLoopRuntime {
66
132
  }
67
133
  if (response.usage) {
68
134
  latestUsage = response.usage;
135
+ // Build attribution from available context
136
+ const attribution = {
137
+ ...(input.agentId ? { agentId: input.agentId } : {}),
138
+ ...(input.tenantId ? { tenantId: input.tenantId } : {}),
139
+ ...(input.model ? { model: input.model } : {}),
140
+ ...(provider.name ? { provider: provider.name } : {}),
141
+ ...(input.sessionId ? { sessionId: input.sessionId } : {}),
142
+ ...(turnId ? { turnId } : {}),
143
+ };
144
+ response.usage.attribution = attribution;
145
+ latestAttribution = attribution;
69
146
  const usagePayload = { usage: response.usage };
70
147
  if (input.model !== undefined)
71
148
  usagePayload.model = input.model;
72
149
  if (provider.name)
73
150
  usagePayload.provider = provider.name;
74
151
  await input.recordEntry('model_attempt', usagePayload);
75
- await input.emit('result', { usage: response.usage });
152
+ await turnEmit('result', { usage: response.usage });
76
153
  const callCost = typeof response.usage.costUsd === 'number' ? response.usage.costUsd : 0;
77
154
  if (input.costBudget?.enabled() && callCost > 0) {
78
155
  const handleViolation = async (violation) => {
79
- await input.emit('cost_limit', {
156
+ await turnEmit('cost_limit', {
80
157
  scope: violation.scope,
81
158
  observedUsd: violation.observedUsd,
82
159
  limitUsd: violation.limitUsd,
83
160
  ...(violation.scopeKey ? { scopeKey: violation.scopeKey } : {}),
161
+ ...(violation.actualsFetchedAt ? { actualsFetchedAt: violation.actualsFetchedAt } : {}),
162
+ ...(violation.cacheTtlMs !== undefined ? { cacheTtlMs: violation.cacheTtlMs } : {}),
84
163
  });
85
164
  const mode = input.costBudget?.onExceed();
86
165
  if (mode === 'approve' && input.requestCostLimitApproval) {
@@ -95,16 +174,46 @@ export class NativeLoopRuntime {
95
174
  const local = input.costBudget.observe(callCost);
96
175
  if (local)
97
176
  await handleViolation(local);
98
- const remote = await input.costBudget.observeScopeAsync(callCost);
99
- if (remote)
100
- await handleViolation(remote);
177
+ const scopeSource = input.costBudget.scopeSource;
178
+ if (scopeSource === 'external') {
179
+ // Fire external scope observation without awaiting; actual-cost
180
+ // enforcement is intentionally lagged to protect the *next* call.
181
+ input.costBudget.observeScopeAsync(callCost, attribution).then((remote) => {
182
+ if (remote)
183
+ input.costBudget?.setPendingScopeViolation(remote);
184
+ }).catch(() => { });
185
+ }
186
+ else {
187
+ const remote = await input.costBudget.observeScopeAsync(callCost, attribution);
188
+ if (remote)
189
+ await handleViolation(remote);
190
+ }
101
191
  }
102
192
  }
103
193
  if (response.thinking && !streamedFinalText) {
104
- await input.emit('text_delta', { delta: response.thinking, kind: 'thinking' });
194
+ await turnEmit('text_delta', { delta: response.thinking, kind: 'thinking' });
105
195
  }
106
196
  if (response.toolCalls?.length) {
107
- await this.executeModelToolCalls(response.toolCalls, input);
197
+ await input.journal?.toolRequestRecorded?.({
198
+ operationId,
199
+ turnId,
200
+ toolRequest: { toolCalls: response.toolCalls },
201
+ });
202
+ const outcome = await this.executeModelToolCalls(response.toolCalls, input, resultToolBundle, latestAttribution);
203
+ if (outcome?.type === 'finished') {
204
+ const resultEntry = await input.recordEntry('result', { result: outcome.value });
205
+ await turnEmit('prompt_end', { text: input.text, result: outcome.value });
206
+ await input.journal?.committed?.({ operationId, turnId, committedLeafId: resultEntry.id });
207
+ return {
208
+ text: JSON.stringify(outcome.value),
209
+ raw: outcome.value,
210
+ validatedResult: outcome.value,
211
+ ...(latestUsage ? { usage: latestUsage } : {}),
212
+ };
213
+ }
214
+ if (outcome?.type === 'gave_up') {
215
+ throw new ResultUnavailableError(outcome.reason);
216
+ }
108
217
  continue;
109
218
  }
110
219
  const finalText = response.message?.content ?? '';
@@ -113,17 +222,24 @@ export class NativeLoopRuntime {
113
222
  // Emit a text_delta event so stream() consumers receive the final text
114
223
  // (skipped when the provider already streamed it incrementally).
115
224
  if (finalText && !streamedFinalText)
116
- await input.emit('text_delta', { delta: finalText });
117
- await input.recordEntry('result', { result: finalText });
118
- await input.emit('prompt_end', { text: input.text, result: finalText });
225
+ await turnEmit('text_delta', { delta: finalText });
226
+ // When result tools are active and the model returned text without calling
227
+ // finish/give_up, send a follow-up prompt instead of ending the loop.
228
+ if (resultToolBundle) {
229
+ input.messages.push({ role: 'user', content: buildResultFollowUpPrompt() });
230
+ continue;
231
+ }
232
+ const resultEntry = await input.recordEntry('result', { result: finalText });
233
+ await turnEmit('prompt_end', { text: input.text, result: finalText });
234
+ await input.journal?.committed?.({ operationId, turnId, committedLeafId: resultEntry.id });
119
235
  return { text: finalText, raw: finalText, ...(latestUsage ? { usage: latestUsage } : {}) };
120
236
  }
121
237
  throw new FabricError({ code: 'MODEL_CONTEXT_OVERFLOW', message: `Prompt exceeded maxIterations (${maxIterations}) without a final response.`, retryable: true });
122
238
  }
123
- async executeModelToolCalls(calls, input) {
239
+ async executeModelToolCalls(calls, input, resultToolBundle, attribution) {
124
240
  // Push the assistant message with tool calls so the model sees the full round-trip
125
241
  input.messages.push({ role: 'assistant', content: '', toolCalls: calls });
126
- const results = await input.executeToolCalls(calls.map((call) => ({ tool: call.name, input: call.input, id: call.id })), undefined, input.approvalTimeoutMs);
242
+ const results = await input.executeToolCalls(calls.map((call) => ({ tool: call.name, input: call.input, id: call.id })), undefined, input.approvalTimeoutMs, attribution);
127
243
  for (let i = 0; i < results.length; i += 1) {
128
244
  const result = results[i];
129
245
  const callId = i < calls.length ? calls[i]?.id : undefined;
@@ -138,21 +254,48 @@ export class NativeLoopRuntime {
138
254
  message.toolCallId = callId;
139
255
  input.messages.push(message);
140
256
  }
257
+ return resultToolBundle?.getOutcome();
141
258
  }
142
259
  }
143
260
  function mapModelError(error) {
144
261
  if (error instanceof FabricError)
145
262
  return error;
146
263
  const message = error instanceof Error ? error.message : String(error);
147
- if (isContextOverflowError(error))
264
+ if (isContextOverflowError(error)) {
148
265
  return new FabricError({ code: 'MODEL_CONTEXT_OVERFLOW', message, cause: error, retryable: true });
266
+ }
267
+ if (error instanceof ProviderHttpError) {
268
+ if (error.status === 429)
269
+ return new FabricError({ code: 'MODEL_RATE_LIMITED', message, cause: error, retryable: true });
270
+ if (error.status >= 500)
271
+ return new FabricError({ code: 'UNKNOWN', message, cause: error, retryable: true });
272
+ if (error.status === 401 || error.status === 403)
273
+ return new FabricError({ code: 'MODEL_AUTH_FAILED', message, cause: error });
274
+ if (error.status === 400)
275
+ return new FabricError({ code: 'UNKNOWN', message, cause: error });
276
+ }
149
277
  if (/rate.?limit|429|too many requests/i.test(message))
150
278
  return new FabricError({ code: 'MODEL_RATE_LIMITED', message, cause: error, retryable: true });
151
279
  if (/timeout|timed out|aborted/i.test(message))
152
280
  return new FabricError({ code: 'MODEL_TIMEOUT', message, cause: error, retryable: true });
281
+ if (/overloaded|500|502|503|504|service.?unavailable|server.?error|network.?error|connection.?(?:reset|refused|lost)|socket hang up|fetch failed|terminated/i.test(message)) {
282
+ return new FabricError({ code: 'UNKNOWN', message, cause: error, retryable: true });
283
+ }
153
284
  if (/auth|unauthorized|forbidden|401|403|api key/i.test(message))
154
285
  return new FabricError({ code: 'MODEL_AUTH_FAILED', message, cause: error });
155
- return new FabricError({ code: 'UNKNOWN', message, cause: error });
286
+ if (/bad request|400|invalid/i.test(message))
287
+ return new FabricError({ code: 'UNKNOWN', message, cause: error });
288
+ return new FabricError({ code: 'UNKNOWN', message, cause: error, retryable: true });
289
+ }
290
+ function generateId() {
291
+ if (typeof globalThis !== 'undefined' && globalThis.crypto?.randomUUID) {
292
+ return globalThis.crypto.randomUUID();
293
+ }
294
+ // Fallback for environments without crypto.randomUUID
295
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
296
+ const r = Math.random() * 16 | 0;
297
+ return (c === 'x' ? r : (r & 0x3) | 8).toString(16);
298
+ });
156
299
  }
157
300
  export const defaultLoopRuntime = new NativeLoopRuntime();
158
301
  //# sourceMappingURL=loop.js.map
package/dist/loop.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
package/dist/model.d.ts CHANGED
@@ -18,12 +18,31 @@ export interface ModelToolSchema {
18
18
  description?: string;
19
19
  inputSchema?: unknown;
20
20
  }
21
+ /**
22
+ * Reasoning-effort input level, ordered from least to most thinking. Maps to
23
+ * each provider's native control (Workers AI / OpenAI `reasoning_effort`,
24
+ * Anthropic `thinking.budget_tokens`, Gemini `thinkingConfig`). `'off'` (the
25
+ * default when unset) requests no reasoning. Providers that don't support
26
+ * reasoning ignore the level — see `ModelMetadata.supportsReasoning`.
27
+ */
28
+ export type ThinkingLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
21
29
  export interface ModelRequest {
22
30
  model?: string;
23
31
  messages: ModelMessage[];
24
32
  tools?: ModelToolSchema[];
25
33
  maxToolCalls?: number;
26
34
  signal?: AbortSignal;
35
+ /**
36
+ * Requested reasoning effort for this call. Stamped by the loop from the
37
+ * agent/session/prompt scope chain. Reasoning-capable providers map it to
38
+ * their native control; others ignore it.
39
+ */
40
+ thinkingLevel?: ThinkingLevel;
41
+ /**
42
+ * Opaque provider affinity key forwarded as `sessionId` where the
43
+ * underlying API supports it (e.g. AWS Bedrock prompt caching).
44
+ */
45
+ sessionId?: string;
27
46
  }
28
47
  export interface ModelResponse {
29
48
  message?: ModelMessage;
@@ -53,6 +72,11 @@ export interface ModelUsage {
53
72
  sttSeconds?: number;
54
73
  /** Characters synthesized by a streaming TTS provider (pipeline-mode voice). */
55
74
  ttsCharacters?: number;
75
+ /**
76
+ * Attribution dimensions for cost tracking. Stamped by the loop from
77
+ * the agent/session/model/provider/turn context.
78
+ */
79
+ attribution?: import('./cost-budget.js').CostAttribution;
56
80
  }
57
81
  export interface ModelStreamChunk {
58
82
  /** Incremental output text content. */
@@ -67,9 +91,21 @@ export interface ModelStreamChunk {
67
91
  */
68
92
  done?: ModelResponse;
69
93
  }
94
+ export interface ModelMetadata {
95
+ provider?: string;
96
+ model?: string;
97
+ contextWindowTokens?: number;
98
+ maxOutputTokens?: number;
99
+ supportsTools?: boolean;
100
+ /** Whether the model accepts a reasoning-effort control (gates `thinkingLevel`). */
101
+ supportsReasoning?: boolean;
102
+ gateway?: string;
103
+ }
70
104
  export interface ModelProvider {
71
105
  name: string;
72
106
  generate(request: ModelRequest): Promise<ModelResponse>;
107
+ /** Optional provider/model metadata used for context budgeting and routing UIs. */
108
+ getModelMetadata?(model?: string): ModelMetadata | undefined;
73
109
  /**
74
110
  * Optional: stream incremental chunks. Loop falls back to `generate()`
75
111
  * when this is absent. Implementations MUST emit a final chunk with
@@ -101,6 +137,12 @@ export interface OpenAICompatibleProviderOptions {
101
137
  apiKey: string;
102
138
  defaultModel?: string;
103
139
  headers?: Record<string, string>;
140
+ /**
141
+ * Optional per-request bearer token resolver. When set, it is awaited on every request and used
142
+ * in place of `apiKey` for the `authorization` header. Required for providers whose credentials
143
+ * rotate (e.g. Databricks OAuth principal tokens) so long-lived agents don't pin a stale token.
144
+ */
145
+ tokenProvider?: () => string | Promise<string>;
104
146
  /** Optional rate limiter. Acquire one token per request, keyed by `<name>:<apiKeyHash8>`. */
105
147
  rateLimiter?: RateLimiter;
106
148
  }
@@ -163,15 +205,20 @@ export declare class MockModelProvider implements ModelProvider {
163
205
  readonly name = "mock";
164
206
  generate(request: ModelRequest): Promise<ModelResponse>;
165
207
  }
208
+ /** Whether a model id (with or without provider prefix) is a known reasoning model. */
209
+ export declare function modelSupportsReasoning(model: string): boolean;
166
210
  export declare class OpenAICompatibleModelProvider implements ModelProvider {
167
211
  readonly name: string;
168
212
  private readonly baseUrl;
169
213
  private readonly apiKey;
214
+ private readonly tokenProvider;
170
215
  private readonly defaultModel?;
171
216
  private readonly headers;
172
217
  private readonly rateLimiter;
173
218
  private readonly rateLimitKey;
174
219
  constructor(options: OpenAICompatibleProviderOptions);
220
+ /** Resolves the bearer token for a request: the rotating `tokenProvider` if set, else `apiKey`. */
221
+ protected authToken(): Promise<string>;
175
222
  generate(request: ModelRequest): Promise<ModelResponse>;
176
223
  stream(request: ModelRequest): AsyncGenerator<ModelStreamChunk>;
177
224
  }
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}