@ai-sdk/devtools 1.0.3 → 1.0.5
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.
- package/dist/index.d.ts +9 -2
- package/dist/index.js +13 -4
- package/package.json +2 -3
- package/src/index.ts +4 -1
- package/src/integration.ts +21 -3
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,13 @@ import { Telemetry } from 'ai';
|
|
|
19
19
|
*/
|
|
20
20
|
declare const devToolsMiddleware: () => LanguageModelV4Middleware;
|
|
21
21
|
|
|
22
|
+
interface DevToolsTelemetryOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Identifier used to group multiple AI SDK calls into one DevTools run.
|
|
25
|
+
* Reuse the same value when resuming an interrupted interaction.
|
|
26
|
+
*/
|
|
27
|
+
runId?: string;
|
|
28
|
+
}
|
|
22
29
|
/**
|
|
23
30
|
* Creates a devtools telemetry integration that logs all AI SDK operations
|
|
24
31
|
* to the devtools viewer.
|
|
@@ -34,6 +41,6 @@ declare const devToolsMiddleware: () => LanguageModelV4Middleware;
|
|
|
34
41
|
* Telemetry is enabled by default — no need to set `telemetry`
|
|
35
42
|
* unless you want to configure `functionId`, `recordInputs`, or `recordOutputs`.
|
|
36
43
|
*/
|
|
37
|
-
declare function DevToolsTelemetry(): Telemetry;
|
|
44
|
+
declare function DevToolsTelemetry(options?: DevToolsTelemetryOptions): Telemetry;
|
|
38
45
|
|
|
39
|
-
export { DevToolsTelemetry, devToolsMiddleware };
|
|
46
|
+
export { DevToolsTelemetry, type DevToolsTelemetryOptions, devToolsMiddleware };
|
package/dist/index.js
CHANGED
|
@@ -117,6 +117,10 @@ var updateStepResult = async (stepId, result) => {
|
|
|
117
117
|
notifyServer("step-update");
|
|
118
118
|
}
|
|
119
119
|
};
|
|
120
|
+
var getStepsForRun = async (runId) => {
|
|
121
|
+
const db = getDb();
|
|
122
|
+
return db.steps.filter((s) => s.run_id === runId).sort((a, b) => a.step_number - b.step_number);
|
|
123
|
+
};
|
|
120
124
|
|
|
121
125
|
// src/middleware.ts
|
|
122
126
|
var generateId = () => crypto.randomUUID();
|
|
@@ -433,7 +437,7 @@ function getOperationType(operationId) {
|
|
|
433
437
|
}
|
|
434
438
|
return "generate";
|
|
435
439
|
}
|
|
436
|
-
function DevToolsTelemetry() {
|
|
440
|
+
function DevToolsTelemetry(options = {}) {
|
|
437
441
|
if (process.env.NODE_ENV === "production") {
|
|
438
442
|
throw new Error(
|
|
439
443
|
"@ai-sdk/devtools should not be used in production. Remove DevToolsTelemetry from your telemetry configuration for production builds."
|
|
@@ -476,7 +480,8 @@ function DevToolsTelemetry() {
|
|
|
476
480
|
frequencyPenalty: event.frequencyPenalty,
|
|
477
481
|
seed: event.seed
|
|
478
482
|
},
|
|
479
|
-
stepStates: /* @__PURE__ */ new Map()
|
|
483
|
+
stepStates: /* @__PURE__ */ new Map(),
|
|
484
|
+
stepNumberOffset: 0
|
|
480
485
|
};
|
|
481
486
|
callStates.set(callId, state);
|
|
482
487
|
return state;
|
|
@@ -494,6 +499,10 @@ function DevToolsTelemetry() {
|
|
|
494
499
|
operationId,
|
|
495
500
|
startEvent
|
|
496
501
|
);
|
|
502
|
+
if (options.runId != null) {
|
|
503
|
+
state.runId = options.runId;
|
|
504
|
+
state.stepNumberOffset = (await getStepsForRun(options.runId)).length;
|
|
505
|
+
}
|
|
497
506
|
await createRun(state.runId, parentInfo, state.functionId);
|
|
498
507
|
},
|
|
499
508
|
onStepStart: async (event) => {
|
|
@@ -513,7 +522,7 @@ function DevToolsTelemetry() {
|
|
|
513
522
|
await createStep({
|
|
514
523
|
id: stepId,
|
|
515
524
|
run_id: state.runId,
|
|
516
|
-
step_number: stepNumber + 1,
|
|
525
|
+
step_number: state.stepNumberOffset + stepNumber + 1,
|
|
517
526
|
type: state.operationType,
|
|
518
527
|
model_id: stepStartEvent.modelId,
|
|
519
528
|
provider: stepStartEvent.provider ?? null,
|
|
@@ -552,7 +561,7 @@ function DevToolsTelemetry() {
|
|
|
552
561
|
await createStep({
|
|
553
562
|
id: stepId,
|
|
554
563
|
run_id: state.runId,
|
|
555
|
-
step_number: stepStartEvent.stepNumber + 1,
|
|
564
|
+
step_number: state.stepNumberOffset + stepStartEvent.stepNumber + 1,
|
|
556
565
|
type: state.operationType,
|
|
557
566
|
model_id: stepStartEvent.modelId,
|
|
558
567
|
provider: stepStartEvent.provider ?? null,
|
package/package.json
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/devtools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
|
-
"module": "./dist/index.js",
|
|
7
6
|
"types": "./dist/index.d.ts",
|
|
8
7
|
"exports": {
|
|
9
8
|
".": {
|
|
@@ -56,7 +55,7 @@
|
|
|
56
55
|
"vite": "^6.4.3",
|
|
57
56
|
"vitest": "^4.1.6",
|
|
58
57
|
"zod": "3.25.76",
|
|
59
|
-
"ai": "7.0.
|
|
58
|
+
"ai": "7.0.26"
|
|
60
59
|
},
|
|
61
60
|
"publishConfig": {
|
|
62
61
|
"access": "public",
|
package/src/index.ts
CHANGED
package/src/integration.ts
CHANGED
|
@@ -11,6 +11,7 @@ import type {
|
|
|
11
11
|
import {
|
|
12
12
|
createRun,
|
|
13
13
|
createStep,
|
|
14
|
+
getStepsForRun,
|
|
14
15
|
updateStepResult,
|
|
15
16
|
notifyServerAsync,
|
|
16
17
|
} from './db.js';
|
|
@@ -28,6 +29,15 @@ interface CallState {
|
|
|
28
29
|
functionId: string | undefined;
|
|
29
30
|
settings: Record<string, unknown>;
|
|
30
31
|
stepStates: Map<number, StepState>;
|
|
32
|
+
stepNumberOffset: number;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface DevToolsTelemetryOptions {
|
|
36
|
+
/**
|
|
37
|
+
* Identifier used to group multiple AI SDK calls into one DevTools run.
|
|
38
|
+
* Reuse the same value when resuming an interrupted interaction.
|
|
39
|
+
*/
|
|
40
|
+
runId?: string;
|
|
31
41
|
}
|
|
32
42
|
|
|
33
43
|
const activeSteps = new Map<string, StepState>();
|
|
@@ -99,7 +109,9 @@ function getOperationType(operationId: string): OperationType {
|
|
|
99
109
|
* Telemetry is enabled by default — no need to set `telemetry`
|
|
100
110
|
* unless you want to configure `functionId`, `recordInputs`, or `recordOutputs`.
|
|
101
111
|
*/
|
|
102
|
-
export function DevToolsTelemetry(
|
|
112
|
+
export function DevToolsTelemetry(
|
|
113
|
+
options: DevToolsTelemetryOptions = {},
|
|
114
|
+
): Telemetry {
|
|
103
115
|
if (process.env.NODE_ENV === 'production') {
|
|
104
116
|
throw new Error(
|
|
105
117
|
'@ai-sdk/devtools should not be used in production. ' +
|
|
@@ -179,6 +191,7 @@ export function DevToolsTelemetry(): Telemetry {
|
|
|
179
191
|
seed: event.seed,
|
|
180
192
|
},
|
|
181
193
|
stepStates: new Map(),
|
|
194
|
+
stepNumberOffset: 0,
|
|
182
195
|
};
|
|
183
196
|
callStates.set(callId, state);
|
|
184
197
|
return state;
|
|
@@ -211,6 +224,11 @@ export function DevToolsTelemetry(): Telemetry {
|
|
|
211
224
|
startEvent,
|
|
212
225
|
);
|
|
213
226
|
|
|
227
|
+
if (options.runId != null) {
|
|
228
|
+
state.runId = options.runId;
|
|
229
|
+
state.stepNumberOffset = (await getStepsForRun(options.runId)).length;
|
|
230
|
+
}
|
|
231
|
+
|
|
214
232
|
await createRun(state.runId, parentInfo, state.functionId);
|
|
215
233
|
},
|
|
216
234
|
|
|
@@ -238,7 +256,7 @@ export function DevToolsTelemetry(): Telemetry {
|
|
|
238
256
|
await createStep({
|
|
239
257
|
id: stepId,
|
|
240
258
|
run_id: state.runId,
|
|
241
|
-
step_number: stepNumber + 1,
|
|
259
|
+
step_number: state.stepNumberOffset + stepNumber + 1,
|
|
242
260
|
type: state.operationType,
|
|
243
261
|
model_id: stepStartEvent.modelId,
|
|
244
262
|
provider: stepStartEvent.provider ?? null,
|
|
@@ -288,7 +306,7 @@ export function DevToolsTelemetry(): Telemetry {
|
|
|
288
306
|
await createStep({
|
|
289
307
|
id: stepId,
|
|
290
308
|
run_id: state.runId,
|
|
291
|
-
step_number: stepStartEvent.stepNumber + 1,
|
|
309
|
+
step_number: state.stepNumberOffset + stepStartEvent.stepNumber + 1,
|
|
292
310
|
type: state.operationType,
|
|
293
311
|
model_id: stepStartEvent.modelId,
|
|
294
312
|
provider: stepStartEvent.provider ?? null,
|