autotel-cloudflare 3.0.0 → 4.0.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.
- package/dist/agents.d.ts +626 -123
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +260 -171
- package/dist/agents.js.map +1 -1
- package/package.json +8 -4
- package/src/actors/alarms.ts +0 -225
- package/src/actors/index.ts +0 -36
- package/src/actors/instrument-actor.test.ts +0 -179
- package/src/actors/instrument-actor.ts +0 -574
- package/src/actors/sockets.ts +0 -217
- package/src/actors/storage.ts +0 -263
- package/src/actors/traced-handler.ts +0 -300
- package/src/actors/types.ts +0 -98
- package/src/actors.ts +0 -50
- package/src/agents/index.ts +0 -42
- package/src/agents/otel-observability.test.ts +0 -336
- package/src/agents/otel-observability.ts +0 -474
- package/src/agents/types.ts +0 -167
- package/src/agents.ts +0 -76
- package/src/bindings/ai.test.ts +0 -170
- package/src/bindings/ai.ts +0 -73
- package/src/bindings/analytics-engine.test.ts +0 -175
- package/src/bindings/analytics-engine.ts +0 -78
- package/src/bindings/bindings-cache.test.ts +0 -80
- package/src/bindings/bindings-detection.test.ts +0 -235
- package/src/bindings/bindings-this-binding.test.ts +0 -294
- package/src/bindings/bindings.ts +0 -720
- package/src/bindings/browser-rendering.test.ts +0 -160
- package/src/bindings/browser-rendering.ts +0 -70
- package/src/bindings/common.ts +0 -84
- package/src/bindings/hyperdrive.test.ts +0 -176
- package/src/bindings/hyperdrive.ts +0 -74
- package/src/bindings/images.test.ts +0 -262
- package/src/bindings/images.ts +0 -182
- package/src/bindings/index.ts +0 -20
- package/src/bindings/queue-producer.test.ts +0 -224
- package/src/bindings/queue-producer.ts +0 -105
- package/src/bindings/rate-limiter.test.ts +0 -140
- package/src/bindings/rate-limiter.ts +0 -69
- package/src/bindings/vectorize.test.ts +0 -362
- package/src/bindings/vectorize.ts +0 -86
- package/src/bindings.ts +0 -6
- package/src/events.ts +0 -6
- package/src/execution-logger.test.ts +0 -127
- package/src/execution-logger.ts +0 -112
- package/src/global/cache.test.ts +0 -292
- package/src/global/cache.ts +0 -164
- package/src/global/fetch.test.ts +0 -399
- package/src/global/fetch.ts +0 -136
- package/src/global/index.ts +0 -7
- package/src/handlers/durable-objects.test.ts +0 -524
- package/src/handlers/durable-objects.ts +0 -250
- package/src/handlers/index.ts +0 -6
- package/src/handlers/workflows.test.ts +0 -411
- package/src/handlers/workflows.ts +0 -345
- package/src/handlers.ts +0 -6
- package/src/index.ts +0 -91
- package/src/logger.ts +0 -15
- package/src/native/native-tracing.test.ts +0 -54
- package/src/native/native-tracing.ts +0 -83
- package/src/native.ts +0 -12
- package/src/parse-error.ts +0 -1
- package/src/sampling.ts +0 -6
- package/src/testing.ts +0 -6
- package/src/wrappers/cf-attributes.test.ts +0 -334
- package/src/wrappers/define-worker-fetch.test.ts +0 -102
- package/src/wrappers/define-worker-fetch.ts +0 -71
- package/src/wrappers/index.ts +0 -13
- package/src/wrappers/instrument.integration.test.ts +0 -578
- package/src/wrappers/instrument.ts +0 -806
- package/src/wrappers/native-instrument.test.ts +0 -153
- package/src/wrappers/wrap-do.ts +0 -34
- package/src/wrappers/wrap-module.ts +0 -37
package/dist/agents.d.ts
CHANGED
|
@@ -1,121 +1,668 @@
|
|
|
1
1
|
import { ConfigurationOption } from "autotel-edge";
|
|
2
2
|
import { Attributes } from "@opentelemetry/api";
|
|
3
3
|
|
|
4
|
-
//#region src/agents/
|
|
4
|
+
//#region src/agents/base.d.ts
|
|
5
5
|
/**
|
|
6
|
-
* Base event structure
|
|
6
|
+
* Base event structure for all Cloudflare Agents observability events.
|
|
7
7
|
*/
|
|
8
|
-
|
|
8
|
+
type BaseEvent<T extends string, Payload extends Record<string, unknown> = Record<string, never>> = {
|
|
9
9
|
type: T;
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
/**
|
|
11
|
+
* The class name of the agent that emitted this event
|
|
12
|
+
* (e.g. "MyChatAgent").
|
|
13
|
+
*/
|
|
14
|
+
agent?: string;
|
|
15
|
+
/**
|
|
16
|
+
* The instance name (Durable Object ID name) of the agent.
|
|
17
|
+
*/
|
|
18
|
+
name?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Optional legacy fields accepted by the Cloudflare adapter so older
|
|
21
|
+
* examples can still be observed without reshaping the event.
|
|
22
|
+
*/
|
|
23
|
+
id?: string;
|
|
24
|
+
displayMessage?: string;
|
|
25
|
+
payload: Payload;
|
|
17
26
|
timestamp: number;
|
|
18
|
-
}
|
|
27
|
+
};
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/agents/agent.d.ts
|
|
19
30
|
/**
|
|
20
|
-
* Agent-specific observability events
|
|
31
|
+
* Agent-specific observability events.
|
|
21
32
|
*/
|
|
22
|
-
type AgentObservabilityEvent =
|
|
33
|
+
type AgentObservabilityEvent = BaseEvent<'state:update'> | BaseEvent<'rpc', {
|
|
23
34
|
method: string;
|
|
24
35
|
streaming?: boolean;
|
|
25
|
-
}> |
|
|
36
|
+
}> | BaseEvent<'rpc:error', {
|
|
37
|
+
method: string;
|
|
38
|
+
error: string;
|
|
39
|
+
}> | BaseEvent<'message:request'> | BaseEvent<'message:response'> | BaseEvent<'message:clear'> | BaseEvent<'message:cancel', {
|
|
40
|
+
requestId: string;
|
|
41
|
+
}> | BaseEvent<'message:error', {
|
|
42
|
+
error: string;
|
|
43
|
+
}> | BaseEvent<'tool:result', {
|
|
44
|
+
toolCallId: string;
|
|
45
|
+
toolName: string;
|
|
46
|
+
}> | BaseEvent<'tool:approval', {
|
|
47
|
+
toolCallId: string;
|
|
48
|
+
approved: boolean;
|
|
49
|
+
}> | BaseEvent<'schedule:create', {
|
|
50
|
+
callback: string;
|
|
51
|
+
id: string;
|
|
52
|
+
}> | BaseEvent<'schedule:execute', {
|
|
53
|
+
callback: string;
|
|
54
|
+
id: string;
|
|
55
|
+
}> | BaseEvent<'schedule:cancel', {
|
|
56
|
+
callback: string;
|
|
57
|
+
id: string;
|
|
58
|
+
}> | BaseEvent<'schedule:retry', {
|
|
59
|
+
callback: string;
|
|
60
|
+
id: string;
|
|
61
|
+
attempt: number;
|
|
62
|
+
maxAttempts: number;
|
|
63
|
+
}> | BaseEvent<'schedule:error', {
|
|
64
|
+
callback: string;
|
|
65
|
+
id: string;
|
|
66
|
+
error: string;
|
|
67
|
+
attempts: number;
|
|
68
|
+
}> | BaseEvent<'schedule:duplicate_warning', {
|
|
69
|
+
callback: string;
|
|
70
|
+
count: number;
|
|
71
|
+
type: string;
|
|
72
|
+
}> | BaseEvent<'queue:create', {
|
|
73
|
+
callback: string;
|
|
74
|
+
id: string;
|
|
75
|
+
}> | BaseEvent<'queue:retry', {
|
|
76
|
+
callback: string;
|
|
77
|
+
id: string;
|
|
78
|
+
attempt: number;
|
|
79
|
+
maxAttempts: number;
|
|
80
|
+
}> | BaseEvent<'queue:error', {
|
|
26
81
|
callback: string;
|
|
27
82
|
id: string;
|
|
28
|
-
|
|
83
|
+
error: string;
|
|
84
|
+
attempts: number;
|
|
85
|
+
}> | BaseEvent<'submission:create', {
|
|
86
|
+
submissionId: string;
|
|
87
|
+
requestId?: string;
|
|
88
|
+
idempotencyKey?: string;
|
|
89
|
+
}> | BaseEvent<'submission:status', {
|
|
90
|
+
submissionId: string;
|
|
91
|
+
requestId?: string;
|
|
92
|
+
status: string;
|
|
93
|
+
}> | BaseEvent<'submission:error', {
|
|
94
|
+
submissionId: string;
|
|
95
|
+
requestId?: string;
|
|
96
|
+
error: string;
|
|
97
|
+
}> | BaseEvent<'fiber:run:started', {
|
|
98
|
+
fiberId: string;
|
|
99
|
+
fiberName: string;
|
|
100
|
+
managed?: boolean;
|
|
101
|
+
}> | BaseEvent<'fiber:run:completed', {
|
|
102
|
+
fiberId: string;
|
|
103
|
+
fiberName: string;
|
|
104
|
+
elapsedMs?: number;
|
|
105
|
+
managed?: boolean;
|
|
106
|
+
}> | BaseEvent<'fiber:run:failed', {
|
|
107
|
+
fiberId: string;
|
|
108
|
+
fiberName: string;
|
|
109
|
+
error: string;
|
|
110
|
+
elapsedMs?: number;
|
|
111
|
+
managed?: boolean;
|
|
112
|
+
}> | BaseEvent<'fiber:run:interrupted', {
|
|
113
|
+
fiberId: string;
|
|
114
|
+
fiberName: string;
|
|
115
|
+
elapsedMs?: number;
|
|
116
|
+
managed?: boolean;
|
|
117
|
+
recoveryReason: 'interrupted';
|
|
118
|
+
}> | BaseEvent<'fiber:recovery:detected', {
|
|
119
|
+
fiberId: string;
|
|
120
|
+
fiberName: string;
|
|
121
|
+
elapsedMs?: number;
|
|
122
|
+
managed?: boolean;
|
|
123
|
+
recoveryReason: 'interrupted';
|
|
124
|
+
}> | BaseEvent<'fiber:recovery:attempt', {
|
|
125
|
+
fiberId: string;
|
|
126
|
+
fiberName: string;
|
|
127
|
+
managed?: boolean;
|
|
128
|
+
recoveryReason: 'interrupted';
|
|
129
|
+
}> | BaseEvent<'fiber:recovery:handled', {
|
|
130
|
+
fiberId: string;
|
|
131
|
+
fiberName: string;
|
|
132
|
+
status?: string;
|
|
133
|
+
elapsedMs?: number;
|
|
134
|
+
managed?: boolean;
|
|
135
|
+
}> | BaseEvent<'fiber:recovery:skipped', {
|
|
136
|
+
fiberId: string;
|
|
137
|
+
fiberName: string;
|
|
138
|
+
reason: string;
|
|
139
|
+
elapsedMs?: number;
|
|
140
|
+
managed?: boolean;
|
|
141
|
+
}> | BaseEvent<'fiber:recovery:failed', {
|
|
142
|
+
fiberId: string;
|
|
143
|
+
fiberName: string;
|
|
144
|
+
error: string;
|
|
145
|
+
elapsedMs?: number;
|
|
146
|
+
reason?: string;
|
|
147
|
+
}> | BaseEvent<'chat:request:failed', {
|
|
148
|
+
requestId?: string;
|
|
149
|
+
stage: 'parse' | 'persist' | 'turn' | 'stream' | 'recovery' | 'transcript';
|
|
150
|
+
messagesPersisted?: boolean;
|
|
151
|
+
error: string;
|
|
152
|
+
}> | BaseEvent<'chat:recovery:detected', {
|
|
153
|
+
incidentId: string;
|
|
154
|
+
requestId: string;
|
|
155
|
+
attempt: number;
|
|
156
|
+
maxAttempts: number;
|
|
157
|
+
recoveryKind: 'retry' | 'continue';
|
|
158
|
+
}> | BaseEvent<'chat:recovery:scheduled', {
|
|
159
|
+
incidentId: string;
|
|
160
|
+
requestId: string;
|
|
161
|
+
attempt: number;
|
|
162
|
+
maxAttempts: number;
|
|
163
|
+
recoveryKind: 'retry' | 'continue';
|
|
164
|
+
}> | BaseEvent<'chat:recovery:attempt', {
|
|
165
|
+
incidentId: string;
|
|
166
|
+
requestId: string;
|
|
167
|
+
attempt: number;
|
|
168
|
+
maxAttempts: number;
|
|
169
|
+
recoveryKind: 'retry' | 'continue';
|
|
170
|
+
}> | BaseEvent<'chat:recovery:completed', {
|
|
171
|
+
incidentId: string;
|
|
172
|
+
requestId: string;
|
|
173
|
+
attempt: number;
|
|
174
|
+
maxAttempts: number;
|
|
175
|
+
recoveryKind: 'retry' | 'continue';
|
|
176
|
+
}> | BaseEvent<'chat:recovery:skipped', {
|
|
177
|
+
incidentId: string;
|
|
178
|
+
requestId: string;
|
|
179
|
+
attempt: number;
|
|
180
|
+
maxAttempts: number;
|
|
181
|
+
recoveryKind: 'retry' | 'continue';
|
|
182
|
+
reason?: string;
|
|
183
|
+
}> | BaseEvent<'chat:recovery:exhausted', {
|
|
184
|
+
incidentId: string;
|
|
185
|
+
requestId: string;
|
|
186
|
+
attempt: number;
|
|
187
|
+
maxAttempts: number;
|
|
188
|
+
recoveryKind: 'retry' | 'continue';
|
|
189
|
+
reason: string;
|
|
190
|
+
}> | BaseEvent<'chat:recovery:failed', {
|
|
191
|
+
incidentId: string;
|
|
192
|
+
requestId: string;
|
|
193
|
+
attempt: number;
|
|
194
|
+
maxAttempts: number;
|
|
195
|
+
recoveryKind: 'retry' | 'continue';
|
|
196
|
+
reason?: string;
|
|
197
|
+
}> | BaseEvent<'chat:transcript:repaired', {
|
|
198
|
+
requestId?: string;
|
|
199
|
+
removedToolCalls: number;
|
|
200
|
+
normalizedInputs: number;
|
|
201
|
+
toolCallIds?: string[];
|
|
202
|
+
}> | BaseEvent<'chat:onstart:degraded', {
|
|
203
|
+
step: 'transcript-hydration' | 'scheduled-task-reconcile' | 'durable-work-recovery';
|
|
204
|
+
error: string;
|
|
205
|
+
}> | BaseEvent<'chat:hydration:windowed', {
|
|
206
|
+
totalContentBytes: number;
|
|
207
|
+
budgetBytes: number;
|
|
208
|
+
hydratedMessages: number;
|
|
209
|
+
}> | BaseEvent<'chat:media:evicted', {
|
|
210
|
+
messages: number;
|
|
211
|
+
parts: number;
|
|
212
|
+
bytes: number;
|
|
213
|
+
externalizedBytes: number;
|
|
214
|
+
}> | BaseEvent<'chat:stream:stalled', {
|
|
215
|
+
requestId: string;
|
|
216
|
+
timeoutMs: number;
|
|
217
|
+
}> | BaseEvent<'chat:context:compacted', {
|
|
218
|
+
reason: 'proactive' | 'reactive';
|
|
219
|
+
shortened: boolean;
|
|
220
|
+
requestId?: string;
|
|
221
|
+
attempt?: number;
|
|
222
|
+
}> | BaseEvent<'agent_tool:recovery:begin', {
|
|
223
|
+
runCount: number;
|
|
224
|
+
totalTimeoutMs?: number;
|
|
225
|
+
}> | BaseEvent<'agent_tool:recovery:row', {
|
|
226
|
+
runId: string;
|
|
227
|
+
agentType: string;
|
|
228
|
+
status: string;
|
|
229
|
+
reason?: string;
|
|
230
|
+
elapsedMs?: number;
|
|
231
|
+
}> | BaseEvent<'agent_tool:recovery:deadline', {
|
|
232
|
+
runId: string;
|
|
233
|
+
agentType: string;
|
|
234
|
+
elapsedMs?: number;
|
|
235
|
+
}> | BaseEvent<'agent_tool:recovery:reattach', {
|
|
236
|
+
runId: string;
|
|
237
|
+
agentType: string;
|
|
238
|
+
budgetMs: number;
|
|
239
|
+
}> | BaseEvent<'agent_tool:recovery:complete', {
|
|
240
|
+
runCount: number;
|
|
241
|
+
elapsedMs?: number;
|
|
242
|
+
}> | BaseEvent<'agent_tool:recovery:failed', {
|
|
243
|
+
error: string;
|
|
244
|
+
}> | BaseEvent<'destroy'> | BaseEvent<'connect', {
|
|
29
245
|
connectionId: string;
|
|
246
|
+
}> | BaseEvent<'disconnect', {
|
|
247
|
+
connectionId: string;
|
|
248
|
+
code: number;
|
|
249
|
+
reason: string;
|
|
250
|
+
}> | BaseEvent<'email:receive', {
|
|
251
|
+
from: string;
|
|
252
|
+
to: string;
|
|
253
|
+
subject?: string;
|
|
254
|
+
}> | BaseEvent<'email:reply', {
|
|
255
|
+
from: string;
|
|
256
|
+
to: string;
|
|
257
|
+
subject?: string;
|
|
258
|
+
}> | BaseEvent<'email:send', {
|
|
259
|
+
from: string;
|
|
260
|
+
to: string | string[];
|
|
261
|
+
subject: string;
|
|
262
|
+
}> | BaseEvent<'workflow:start', {
|
|
263
|
+
workflowId: string;
|
|
264
|
+
workflowName?: string;
|
|
265
|
+
}> | BaseEvent<'workflow:event', {
|
|
266
|
+
workflowId: string;
|
|
267
|
+
eventType?: string;
|
|
268
|
+
}> | BaseEvent<'workflow:approved', {
|
|
269
|
+
workflowId: string;
|
|
270
|
+
reason?: string;
|
|
271
|
+
}> | BaseEvent<'workflow:rejected', {
|
|
272
|
+
workflowId: string;
|
|
273
|
+
reason?: string;
|
|
274
|
+
}> | BaseEvent<'workflow:terminated', {
|
|
275
|
+
workflowId: string;
|
|
276
|
+
workflowName?: string;
|
|
277
|
+
}> | BaseEvent<'workflow:paused', {
|
|
278
|
+
workflowId: string;
|
|
279
|
+
workflowName?: string;
|
|
280
|
+
}> | BaseEvent<'workflow:resumed', {
|
|
281
|
+
workflowId: string;
|
|
282
|
+
workflowName?: string;
|
|
283
|
+
}> | BaseEvent<'workflow:restarted', {
|
|
284
|
+
workflowId: string;
|
|
285
|
+
workflowName?: string;
|
|
30
286
|
}>;
|
|
287
|
+
//#endregion
|
|
288
|
+
//#region src/agents/mcp.d.ts
|
|
31
289
|
/**
|
|
32
|
-
* MCP-specific observability events
|
|
290
|
+
* MCP-specific observability events.
|
|
33
291
|
*/
|
|
34
|
-
type MCPObservabilityEvent =
|
|
292
|
+
type MCPObservabilityEvent = BaseEvent<'mcp:client:preconnect', {
|
|
35
293
|
serverId: string;
|
|
36
|
-
}> |
|
|
294
|
+
}> | BaseEvent<'mcp:client:connect', {
|
|
37
295
|
url: string;
|
|
38
296
|
transport: string;
|
|
39
297
|
state: string;
|
|
40
298
|
error?: string;
|
|
41
|
-
}> |
|
|
299
|
+
}> | BaseEvent<'mcp:client:authorize', {
|
|
42
300
|
serverId: string;
|
|
43
301
|
authUrl: string;
|
|
44
302
|
clientId?: string;
|
|
45
|
-
}> |
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
303
|
+
}> | BaseEvent<'mcp:client:discover', {
|
|
304
|
+
url?: string;
|
|
305
|
+
state?: string;
|
|
306
|
+
error?: string;
|
|
307
|
+
capability?: string;
|
|
308
|
+
}> | BaseEvent<'mcp:client:close', {
|
|
309
|
+
url: string;
|
|
310
|
+
transport?: string;
|
|
311
|
+
state: string;
|
|
312
|
+
error?: string;
|
|
313
|
+
phase?: 'terminate-session' | 'client-close';
|
|
314
|
+
}>;
|
|
315
|
+
//#endregion
|
|
316
|
+
//#region src/agents/observability.d.ts
|
|
49
317
|
type ObservabilityEvent = AgentObservabilityEvent | MCPObservabilityEvent;
|
|
50
|
-
/**
|
|
51
|
-
* Observability interface from Agents SDK
|
|
52
|
-
*/
|
|
53
318
|
interface Observability {
|
|
54
|
-
|
|
55
|
-
* Emit an event for the Agent's observability implementation to handle.
|
|
56
|
-
* @param event - The event to emit
|
|
57
|
-
* @param ctx - The execution context of the invocation (optional)
|
|
58
|
-
*/
|
|
59
|
-
emit(event: ObservabilityEvent, ctx?: DurableObjectState): void;
|
|
319
|
+
emit(event: ObservabilityEvent, ctx?: DurableObjectState | ExecutionContext): void;
|
|
60
320
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
321
|
+
type ChannelEventMap = {
|
|
322
|
+
state: Extract<ObservabilityEvent, {
|
|
323
|
+
type: `state:${string}`;
|
|
324
|
+
}>;
|
|
325
|
+
rpc: Extract<ObservabilityEvent, {
|
|
326
|
+
type: 'rpc' | `rpc:${string}`;
|
|
327
|
+
}>;
|
|
328
|
+
message: Extract<ObservabilityEvent, {
|
|
329
|
+
type: `message:${string}` | `tool:${string}` | `submission:${string}`;
|
|
330
|
+
}>;
|
|
331
|
+
chat: Exclude<Extract<ObservabilityEvent, {
|
|
332
|
+
type: `chat:${string}`;
|
|
333
|
+
}>, {
|
|
334
|
+
type: `chat:transcript:${string}`;
|
|
335
|
+
}>;
|
|
336
|
+
transcript: Extract<ObservabilityEvent, {
|
|
337
|
+
type: `transcript:${string}` | `chat:transcript:${string}`;
|
|
338
|
+
}>;
|
|
339
|
+
fiber: Extract<ObservabilityEvent, {
|
|
340
|
+
type: `fiber:${string}`;
|
|
341
|
+
}>;
|
|
342
|
+
agentTool: Extract<ObservabilityEvent, {
|
|
343
|
+
type: `agent_tool:${string}`;
|
|
344
|
+
}>;
|
|
345
|
+
schedule: Extract<ObservabilityEvent, {
|
|
346
|
+
type: `schedule:${string}` | `queue:${string}`;
|
|
347
|
+
}>;
|
|
348
|
+
lifecycle: Extract<ObservabilityEvent, {
|
|
349
|
+
type: 'connect' | 'disconnect' | 'destroy';
|
|
350
|
+
}>;
|
|
351
|
+
workflow: Extract<ObservabilityEvent, {
|
|
352
|
+
type: `workflow:${string}`;
|
|
353
|
+
}>;
|
|
354
|
+
mcp: Extract<ObservabilityEvent, {
|
|
355
|
+
type: `mcp:${string}`;
|
|
356
|
+
}>;
|
|
357
|
+
email: Extract<ObservabilityEvent, {
|
|
358
|
+
type: `email:${string}`;
|
|
359
|
+
}>;
|
|
360
|
+
};
|
|
361
|
+
interface ObservabilityChannel<TEvent extends ObservabilityEvent = ObservabilityEvent> {
|
|
362
|
+
name: string;
|
|
363
|
+
publish(event: TEvent): void;
|
|
364
|
+
}
|
|
365
|
+
declare const channels: {
|
|
366
|
+
readonly state: ObservabilityChannel<BaseEvent<"state:update">>;
|
|
367
|
+
readonly rpc: ObservabilityChannel<BaseEvent<"rpc", {
|
|
368
|
+
method: string;
|
|
369
|
+
streaming?: boolean;
|
|
370
|
+
}> | BaseEvent<"rpc:error", {
|
|
371
|
+
method: string;
|
|
372
|
+
error: string;
|
|
373
|
+
}>>;
|
|
374
|
+
readonly message: ObservabilityChannel<BaseEvent<"message:request"> | BaseEvent<"message:response"> | BaseEvent<"message:clear"> | BaseEvent<"message:cancel", {
|
|
375
|
+
requestId: string;
|
|
376
|
+
}> | BaseEvent<"message:error", {
|
|
377
|
+
error: string;
|
|
378
|
+
}> | BaseEvent<"tool:result", {
|
|
379
|
+
toolCallId: string;
|
|
380
|
+
toolName: string;
|
|
381
|
+
}> | BaseEvent<"tool:approval", {
|
|
382
|
+
toolCallId: string;
|
|
383
|
+
approved: boolean;
|
|
384
|
+
}> | BaseEvent<"submission:create", {
|
|
385
|
+
submissionId: string;
|
|
386
|
+
requestId?: string;
|
|
387
|
+
idempotencyKey?: string;
|
|
388
|
+
}> | BaseEvent<"submission:status", {
|
|
389
|
+
submissionId: string;
|
|
390
|
+
requestId?: string;
|
|
391
|
+
status: string;
|
|
392
|
+
}> | BaseEvent<"submission:error", {
|
|
393
|
+
submissionId: string;
|
|
394
|
+
requestId?: string;
|
|
395
|
+
error: string;
|
|
396
|
+
}>>;
|
|
397
|
+
readonly chat: ObservabilityChannel<BaseEvent<"chat:request:failed", {
|
|
398
|
+
requestId?: string;
|
|
399
|
+
stage: "parse" | "persist" | "turn" | "stream" | "recovery" | "transcript";
|
|
400
|
+
messagesPersisted?: boolean;
|
|
401
|
+
error: string;
|
|
402
|
+
}> | BaseEvent<"chat:recovery:detected", {
|
|
403
|
+
incidentId: string;
|
|
404
|
+
requestId: string;
|
|
405
|
+
attempt: number;
|
|
406
|
+
maxAttempts: number;
|
|
407
|
+
recoveryKind: "retry" | "continue";
|
|
408
|
+
}> | BaseEvent<"chat:recovery:scheduled", {
|
|
409
|
+
incidentId: string;
|
|
410
|
+
requestId: string;
|
|
411
|
+
attempt: number;
|
|
412
|
+
maxAttempts: number;
|
|
413
|
+
recoveryKind: "retry" | "continue";
|
|
414
|
+
}> | BaseEvent<"chat:recovery:attempt", {
|
|
415
|
+
incidentId: string;
|
|
416
|
+
requestId: string;
|
|
417
|
+
attempt: number;
|
|
418
|
+
maxAttempts: number;
|
|
419
|
+
recoveryKind: "retry" | "continue";
|
|
420
|
+
}> | BaseEvent<"chat:recovery:completed", {
|
|
421
|
+
incidentId: string;
|
|
422
|
+
requestId: string;
|
|
423
|
+
attempt: number;
|
|
424
|
+
maxAttempts: number;
|
|
425
|
+
recoveryKind: "retry" | "continue";
|
|
426
|
+
}> | BaseEvent<"chat:recovery:skipped", {
|
|
427
|
+
incidentId: string;
|
|
428
|
+
requestId: string;
|
|
429
|
+
attempt: number;
|
|
430
|
+
maxAttempts: number;
|
|
431
|
+
recoveryKind: "retry" | "continue";
|
|
432
|
+
reason?: string;
|
|
433
|
+
}> | BaseEvent<"chat:recovery:exhausted", {
|
|
434
|
+
incidentId: string;
|
|
435
|
+
requestId: string;
|
|
436
|
+
attempt: number;
|
|
437
|
+
maxAttempts: number;
|
|
438
|
+
recoveryKind: "retry" | "continue";
|
|
439
|
+
reason: string;
|
|
440
|
+
}> | BaseEvent<"chat:recovery:failed", {
|
|
441
|
+
incidentId: string;
|
|
442
|
+
requestId: string;
|
|
443
|
+
attempt: number;
|
|
444
|
+
maxAttempts: number;
|
|
445
|
+
recoveryKind: "retry" | "continue";
|
|
446
|
+
reason?: string;
|
|
447
|
+
}> | BaseEvent<"chat:onstart:degraded", {
|
|
448
|
+
step: "transcript-hydration" | "scheduled-task-reconcile" | "durable-work-recovery";
|
|
449
|
+
error: string;
|
|
450
|
+
}> | BaseEvent<"chat:hydration:windowed", {
|
|
451
|
+
totalContentBytes: number;
|
|
452
|
+
budgetBytes: number;
|
|
453
|
+
hydratedMessages: number;
|
|
454
|
+
}> | BaseEvent<"chat:media:evicted", {
|
|
455
|
+
messages: number;
|
|
456
|
+
parts: number;
|
|
457
|
+
bytes: number;
|
|
458
|
+
externalizedBytes: number;
|
|
459
|
+
}> | BaseEvent<"chat:stream:stalled", {
|
|
460
|
+
requestId: string;
|
|
461
|
+
timeoutMs: number;
|
|
462
|
+
}> | BaseEvent<"chat:context:compacted", {
|
|
463
|
+
reason: "proactive" | "reactive";
|
|
464
|
+
shortened: boolean;
|
|
465
|
+
requestId?: string;
|
|
466
|
+
attempt?: number;
|
|
467
|
+
}>>;
|
|
468
|
+
readonly transcript: ObservabilityChannel<BaseEvent<"chat:transcript:repaired", {
|
|
469
|
+
requestId?: string;
|
|
470
|
+
removedToolCalls: number;
|
|
471
|
+
normalizedInputs: number;
|
|
472
|
+
toolCallIds?: string[];
|
|
473
|
+
}>>;
|
|
474
|
+
readonly fiber: ObservabilityChannel<BaseEvent<"fiber:run:started", {
|
|
475
|
+
fiberId: string;
|
|
476
|
+
fiberName: string;
|
|
477
|
+
managed?: boolean;
|
|
478
|
+
}> | BaseEvent<"fiber:run:completed", {
|
|
479
|
+
fiberId: string;
|
|
480
|
+
fiberName: string;
|
|
481
|
+
elapsedMs?: number;
|
|
482
|
+
managed?: boolean;
|
|
483
|
+
}> | BaseEvent<"fiber:run:failed", {
|
|
484
|
+
fiberId: string;
|
|
485
|
+
fiberName: string;
|
|
486
|
+
error: string;
|
|
487
|
+
elapsedMs?: number;
|
|
488
|
+
managed?: boolean;
|
|
489
|
+
}> | BaseEvent<"fiber:run:interrupted", {
|
|
490
|
+
fiberId: string;
|
|
491
|
+
fiberName: string;
|
|
492
|
+
elapsedMs?: number;
|
|
493
|
+
managed?: boolean;
|
|
494
|
+
recoveryReason: "interrupted";
|
|
495
|
+
}> | BaseEvent<"fiber:recovery:detected", {
|
|
496
|
+
fiberId: string;
|
|
497
|
+
fiberName: string;
|
|
498
|
+
elapsedMs?: number;
|
|
499
|
+
managed?: boolean;
|
|
500
|
+
recoveryReason: "interrupted";
|
|
501
|
+
}> | BaseEvent<"fiber:recovery:attempt", {
|
|
502
|
+
fiberId: string;
|
|
503
|
+
fiberName: string;
|
|
504
|
+
managed?: boolean;
|
|
505
|
+
recoveryReason: "interrupted";
|
|
506
|
+
}> | BaseEvent<"fiber:recovery:handled", {
|
|
507
|
+
fiberId: string;
|
|
508
|
+
fiberName: string;
|
|
509
|
+
status?: string;
|
|
510
|
+
elapsedMs?: number;
|
|
511
|
+
managed?: boolean;
|
|
512
|
+
}> | BaseEvent<"fiber:recovery:skipped", {
|
|
513
|
+
fiberId: string;
|
|
514
|
+
fiberName: string;
|
|
515
|
+
reason: string;
|
|
516
|
+
elapsedMs?: number;
|
|
517
|
+
managed?: boolean;
|
|
518
|
+
}> | BaseEvent<"fiber:recovery:failed", {
|
|
519
|
+
fiberId: string;
|
|
520
|
+
fiberName: string;
|
|
521
|
+
error: string;
|
|
522
|
+
elapsedMs?: number;
|
|
523
|
+
reason?: string;
|
|
524
|
+
}>>;
|
|
525
|
+
readonly agentTool: ObservabilityChannel<BaseEvent<"agent_tool:recovery:begin", {
|
|
526
|
+
runCount: number;
|
|
527
|
+
totalTimeoutMs?: number;
|
|
528
|
+
}> | BaseEvent<"agent_tool:recovery:row", {
|
|
529
|
+
runId: string;
|
|
530
|
+
agentType: string;
|
|
531
|
+
status: string;
|
|
532
|
+
reason?: string;
|
|
533
|
+
elapsedMs?: number;
|
|
534
|
+
}> | BaseEvent<"agent_tool:recovery:deadline", {
|
|
535
|
+
runId: string;
|
|
536
|
+
agentType: string;
|
|
537
|
+
elapsedMs?: number;
|
|
538
|
+
}> | BaseEvent<"agent_tool:recovery:reattach", {
|
|
539
|
+
runId: string;
|
|
540
|
+
agentType: string;
|
|
541
|
+
budgetMs: number;
|
|
542
|
+
}> | BaseEvent<"agent_tool:recovery:complete", {
|
|
543
|
+
runCount: number;
|
|
544
|
+
elapsedMs?: number;
|
|
545
|
+
}> | BaseEvent<"agent_tool:recovery:failed", {
|
|
546
|
+
error: string;
|
|
547
|
+
}>>;
|
|
548
|
+
readonly schedule: ObservabilityChannel<BaseEvent<"schedule:create", {
|
|
549
|
+
callback: string;
|
|
550
|
+
id: string;
|
|
551
|
+
}> | BaseEvent<"schedule:execute", {
|
|
552
|
+
callback: string;
|
|
553
|
+
id: string;
|
|
554
|
+
}> | BaseEvent<"schedule:cancel", {
|
|
555
|
+
callback: string;
|
|
556
|
+
id: string;
|
|
557
|
+
}> | BaseEvent<"schedule:retry", {
|
|
558
|
+
callback: string;
|
|
559
|
+
id: string;
|
|
560
|
+
attempt: number;
|
|
561
|
+
maxAttempts: number;
|
|
562
|
+
}> | BaseEvent<"schedule:error", {
|
|
563
|
+
callback: string;
|
|
564
|
+
id: string;
|
|
565
|
+
error: string;
|
|
566
|
+
attempts: number;
|
|
567
|
+
}> | BaseEvent<"schedule:duplicate_warning", {
|
|
568
|
+
callback: string;
|
|
569
|
+
count: number;
|
|
570
|
+
type: string;
|
|
571
|
+
}> | BaseEvent<"queue:create", {
|
|
572
|
+
callback: string;
|
|
573
|
+
id: string;
|
|
574
|
+
}> | BaseEvent<"queue:retry", {
|
|
575
|
+
callback: string;
|
|
576
|
+
id: string;
|
|
577
|
+
attempt: number;
|
|
578
|
+
maxAttempts: number;
|
|
579
|
+
}> | BaseEvent<"queue:error", {
|
|
580
|
+
callback: string;
|
|
581
|
+
id: string;
|
|
582
|
+
error: string;
|
|
583
|
+
attempts: number;
|
|
584
|
+
}>>;
|
|
585
|
+
readonly lifecycle: ObservabilityChannel<BaseEvent<"destroy"> | BaseEvent<"connect", {
|
|
586
|
+
connectionId: string;
|
|
587
|
+
}> | BaseEvent<"disconnect", {
|
|
588
|
+
connectionId: string;
|
|
589
|
+
code: number;
|
|
590
|
+
reason: string;
|
|
591
|
+
}>>;
|
|
592
|
+
readonly workflow: ObservabilityChannel<BaseEvent<"workflow:start", {
|
|
593
|
+
workflowId: string;
|
|
594
|
+
workflowName?: string;
|
|
595
|
+
}> | BaseEvent<"workflow:event", {
|
|
596
|
+
workflowId: string;
|
|
597
|
+
eventType?: string;
|
|
598
|
+
}> | BaseEvent<"workflow:approved", {
|
|
599
|
+
workflowId: string;
|
|
600
|
+
reason?: string;
|
|
601
|
+
}> | BaseEvent<"workflow:rejected", {
|
|
602
|
+
workflowId: string;
|
|
603
|
+
reason?: string;
|
|
604
|
+
}> | BaseEvent<"workflow:terminated", {
|
|
605
|
+
workflowId: string;
|
|
606
|
+
workflowName?: string;
|
|
607
|
+
}> | BaseEvent<"workflow:paused", {
|
|
608
|
+
workflowId: string;
|
|
609
|
+
workflowName?: string;
|
|
610
|
+
}> | BaseEvent<"workflow:resumed", {
|
|
611
|
+
workflowId: string;
|
|
612
|
+
workflowName?: string;
|
|
613
|
+
}> | BaseEvent<"workflow:restarted", {
|
|
614
|
+
workflowId: string;
|
|
615
|
+
workflowName?: string;
|
|
616
|
+
}>>;
|
|
617
|
+
readonly mcp: ObservabilityChannel<MCPObservabilityEvent>;
|
|
618
|
+
readonly email: ObservabilityChannel<BaseEvent<"email:receive", {
|
|
619
|
+
from: string;
|
|
620
|
+
to: string;
|
|
621
|
+
subject?: string;
|
|
622
|
+
}> | BaseEvent<"email:reply", {
|
|
623
|
+
from: string;
|
|
624
|
+
to: string;
|
|
625
|
+
subject?: string;
|
|
626
|
+
}> | BaseEvent<"email:send", {
|
|
627
|
+
from: string;
|
|
628
|
+
to: string | string[];
|
|
629
|
+
subject: string;
|
|
630
|
+
}>>;
|
|
631
|
+
};
|
|
632
|
+
declare const genericObservability: Observability;
|
|
633
|
+
declare function subscribe<K extends keyof ChannelEventMap>(channelKey: K, callback: (event: ChannelEventMap[K]) => void): () => void;
|
|
634
|
+
//#endregion
|
|
635
|
+
//#region src/agents/types.d.ts
|
|
636
|
+
type ObservabilityExecutionContext = DurableObjectState | ExecutionContext;
|
|
64
637
|
interface AgentInstrumentationOptions {
|
|
65
|
-
/**
|
|
66
|
-
* Whether to create spans for RPC calls
|
|
67
|
-
* @default true
|
|
68
|
-
*/
|
|
69
638
|
traceRpc?: boolean;
|
|
70
|
-
/**
|
|
71
|
-
* Whether to create spans for schedule operations
|
|
72
|
-
* @default true
|
|
73
|
-
*/
|
|
74
639
|
traceSchedule?: boolean;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
* @default true
|
|
78
|
-
*/
|
|
640
|
+
traceQueue?: boolean;
|
|
641
|
+
traceSubmissions?: boolean;
|
|
79
642
|
traceMcp?: boolean;
|
|
80
|
-
/**
|
|
81
|
-
* Whether to create spans for state updates
|
|
82
|
-
* @default false (can be noisy)
|
|
83
|
-
*/
|
|
84
643
|
traceStateUpdates?: boolean;
|
|
85
|
-
/**
|
|
86
|
-
* Whether to create spans for message events
|
|
87
|
-
* @default true
|
|
88
|
-
*/
|
|
89
644
|
traceMessages?: boolean;
|
|
90
|
-
/**
|
|
91
|
-
* Whether to create spans for connect/destroy lifecycle events
|
|
92
|
-
* @default true
|
|
93
|
-
*/
|
|
94
645
|
traceLifecycle?: boolean;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
646
|
+
traceChat?: boolean;
|
|
647
|
+
traceTranscripts?: boolean;
|
|
648
|
+
traceFibers?: boolean;
|
|
649
|
+
traceToolRecovery?: boolean;
|
|
650
|
+
traceWorkflow?: boolean;
|
|
651
|
+
traceEmail?: boolean;
|
|
98
652
|
attributeExtractor?: (event: ObservabilityEvent) => Attributes;
|
|
99
|
-
/**
|
|
100
|
-
* Custom span name formatter
|
|
101
|
-
*/
|
|
102
653
|
spanNameFormatter?: (event: ObservabilityEvent) => string;
|
|
103
654
|
}
|
|
104
|
-
/**
|
|
105
|
-
* Configuration for OtelObservability
|
|
106
|
-
*/
|
|
107
655
|
type OtelObservabilityConfig = ConfigurationOption & {
|
|
108
|
-
/**
|
|
109
|
-
* Agent-specific instrumentation options
|
|
110
|
-
*/
|
|
111
656
|
agents?: AgentInstrumentationOptions;
|
|
112
657
|
};
|
|
113
|
-
/**
|
|
114
|
-
* Semantic attributes for Agent spans
|
|
115
|
-
*/
|
|
116
658
|
interface AgentSpanAttributes {
|
|
117
659
|
'agent.event.type': string;
|
|
118
|
-
'agent.event.id'
|
|
660
|
+
'agent.event.id'?: string;
|
|
661
|
+
'agent.class'?: string;
|
|
662
|
+
'agent.instance.name'?: string;
|
|
663
|
+
'agent.display_message'?: string;
|
|
664
|
+
'agent.framework'?: string;
|
|
665
|
+
'gen_ai.agent.name'?: string;
|
|
119
666
|
'agent.rpc.method'?: string;
|
|
120
667
|
'agent.rpc.streaming'?: boolean;
|
|
121
668
|
'agent.schedule.callback'?: string;
|
|
@@ -135,59 +682,15 @@ interface AgentSpanAttributes {
|
|
|
135
682
|
* events into OpenTelemetry spans.
|
|
136
683
|
*/
|
|
137
684
|
declare class OtelObservability implements Observability {
|
|
138
|
-
private config;
|
|
139
|
-
private options;
|
|
685
|
+
private readonly config;
|
|
686
|
+
private readonly options;
|
|
140
687
|
private initialized;
|
|
141
688
|
constructor(config: OtelObservabilityConfig);
|
|
142
|
-
/**
|
|
143
|
-
* Initialize the tracer provider (called lazily on first emit)
|
|
144
|
-
*/
|
|
145
689
|
private initialize;
|
|
146
|
-
|
|
147
|
-
* Emit an observability event
|
|
148
|
-
*
|
|
149
|
-
* Converts the event to an OpenTelemetry span based on the event type.
|
|
150
|
-
*/
|
|
151
|
-
emit(event: ObservabilityEvent, ctx?: DurableObjectState): void;
|
|
690
|
+
emit(event: ObservabilityEvent, ctx?: ObservabilityExecutionContext): void;
|
|
152
691
|
}
|
|
153
|
-
/**
|
|
154
|
-
* Create an OtelObservability instance
|
|
155
|
-
*
|
|
156
|
-
* @example
|
|
157
|
-
* ```typescript
|
|
158
|
-
* import { Agent } from 'agents'
|
|
159
|
-
* import { createOtelObservability } from 'autotel-cloudflare/agents'
|
|
160
|
-
*
|
|
161
|
-
* class MyAgent extends Agent<Env> {
|
|
162
|
-
* observability = createOtelObservability({
|
|
163
|
-
* service: { name: 'my-agent' },
|
|
164
|
-
* exporter: { url: env.OTLP_ENDPOINT }
|
|
165
|
-
* })
|
|
166
|
-
* }
|
|
167
|
-
* ```
|
|
168
|
-
*/
|
|
169
692
|
declare function createOtelObservability(config: OtelObservabilityConfig): OtelObservability;
|
|
170
|
-
/**
|
|
171
|
-
* Create an OtelObservability instance with environment-based config
|
|
172
|
-
*
|
|
173
|
-
* Use this when you need to access environment variables for configuration.
|
|
174
|
-
*
|
|
175
|
-
* @example
|
|
176
|
-
* ```typescript
|
|
177
|
-
* import { Agent } from 'agents'
|
|
178
|
-
* import { createOtelObservabilityFromEnv } from 'autotel-cloudflare/agents'
|
|
179
|
-
*
|
|
180
|
-
* class MyAgent extends Agent<Env> {
|
|
181
|
-
* observability?: OtelObservability
|
|
182
|
-
*
|
|
183
|
-
* constructor(state: DurableObjectState, env: Env) {
|
|
184
|
-
* super(state, env)
|
|
185
|
-
* this.observability = createOtelObservabilityFromEnv(env)
|
|
186
|
-
* }
|
|
187
|
-
* }
|
|
188
|
-
* ```
|
|
189
|
-
*/
|
|
190
693
|
declare function createOtelObservabilityFromEnv(env: Record<string, unknown>, options?: AgentInstrumentationOptions): OtelObservability;
|
|
191
694
|
//#endregion
|
|
192
|
-
export { type AgentInstrumentationOptions, type AgentObservabilityEvent, type AgentSpanAttributes, type MCPObservabilityEvent, type Observability, type ObservabilityEvent, OtelObservability, type OtelObservabilityConfig, createOtelObservability, createOtelObservabilityFromEnv };
|
|
695
|
+
export { type AgentInstrumentationOptions, type AgentObservabilityEvent, type AgentSpanAttributes, type BaseEvent, type ChannelEventMap, type MCPObservabilityEvent, type Observability, type ObservabilityEvent, OtelObservability, type OtelObservabilityConfig, channels, createOtelObservability, createOtelObservabilityFromEnv, genericObservability, subscribe };
|
|
193
696
|
//# sourceMappingURL=agents.d.ts.map
|