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.
Files changed (73) hide show
  1. package/dist/agents.d.ts +626 -123
  2. package/dist/agents.d.ts.map +1 -1
  3. package/dist/agents.js +260 -171
  4. package/dist/agents.js.map +1 -1
  5. package/package.json +8 -4
  6. package/src/actors/alarms.ts +0 -225
  7. package/src/actors/index.ts +0 -36
  8. package/src/actors/instrument-actor.test.ts +0 -179
  9. package/src/actors/instrument-actor.ts +0 -574
  10. package/src/actors/sockets.ts +0 -217
  11. package/src/actors/storage.ts +0 -263
  12. package/src/actors/traced-handler.ts +0 -300
  13. package/src/actors/types.ts +0 -98
  14. package/src/actors.ts +0 -50
  15. package/src/agents/index.ts +0 -42
  16. package/src/agents/otel-observability.test.ts +0 -336
  17. package/src/agents/otel-observability.ts +0 -474
  18. package/src/agents/types.ts +0 -167
  19. package/src/agents.ts +0 -76
  20. package/src/bindings/ai.test.ts +0 -170
  21. package/src/bindings/ai.ts +0 -73
  22. package/src/bindings/analytics-engine.test.ts +0 -175
  23. package/src/bindings/analytics-engine.ts +0 -78
  24. package/src/bindings/bindings-cache.test.ts +0 -80
  25. package/src/bindings/bindings-detection.test.ts +0 -235
  26. package/src/bindings/bindings-this-binding.test.ts +0 -294
  27. package/src/bindings/bindings.ts +0 -720
  28. package/src/bindings/browser-rendering.test.ts +0 -160
  29. package/src/bindings/browser-rendering.ts +0 -70
  30. package/src/bindings/common.ts +0 -84
  31. package/src/bindings/hyperdrive.test.ts +0 -176
  32. package/src/bindings/hyperdrive.ts +0 -74
  33. package/src/bindings/images.test.ts +0 -262
  34. package/src/bindings/images.ts +0 -182
  35. package/src/bindings/index.ts +0 -20
  36. package/src/bindings/queue-producer.test.ts +0 -224
  37. package/src/bindings/queue-producer.ts +0 -105
  38. package/src/bindings/rate-limiter.test.ts +0 -140
  39. package/src/bindings/rate-limiter.ts +0 -69
  40. package/src/bindings/vectorize.test.ts +0 -362
  41. package/src/bindings/vectorize.ts +0 -86
  42. package/src/bindings.ts +0 -6
  43. package/src/events.ts +0 -6
  44. package/src/execution-logger.test.ts +0 -127
  45. package/src/execution-logger.ts +0 -112
  46. package/src/global/cache.test.ts +0 -292
  47. package/src/global/cache.ts +0 -164
  48. package/src/global/fetch.test.ts +0 -399
  49. package/src/global/fetch.ts +0 -136
  50. package/src/global/index.ts +0 -7
  51. package/src/handlers/durable-objects.test.ts +0 -524
  52. package/src/handlers/durable-objects.ts +0 -250
  53. package/src/handlers/index.ts +0 -6
  54. package/src/handlers/workflows.test.ts +0 -411
  55. package/src/handlers/workflows.ts +0 -345
  56. package/src/handlers.ts +0 -6
  57. package/src/index.ts +0 -91
  58. package/src/logger.ts +0 -15
  59. package/src/native/native-tracing.test.ts +0 -54
  60. package/src/native/native-tracing.ts +0 -83
  61. package/src/native.ts +0 -12
  62. package/src/parse-error.ts +0 -1
  63. package/src/sampling.ts +0 -6
  64. package/src/testing.ts +0 -6
  65. package/src/wrappers/cf-attributes.test.ts +0 -334
  66. package/src/wrappers/define-worker-fetch.test.ts +0 -102
  67. package/src/wrappers/define-worker-fetch.ts +0 -71
  68. package/src/wrappers/index.ts +0 -13
  69. package/src/wrappers/instrument.integration.test.ts +0 -578
  70. package/src/wrappers/instrument.ts +0 -806
  71. package/src/wrappers/native-instrument.test.ts +0 -153
  72. package/src/wrappers/wrap-do.ts +0 -34
  73. package/src/wrappers/wrap-module.ts +0 -37
@@ -1,336 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
- import {
3
- createOtelObservability,
4
- createOtelObservabilityFromEnv,
5
- OtelObservability,
6
- } from './otel-observability';
7
- import type { AgentObservabilityEvent, MCPObservabilityEvent } from './types';
8
-
9
- // Helper to create mock events
10
- function createRpcEvent(method: string, streaming = false): AgentObservabilityEvent {
11
- return {
12
- type: 'rpc',
13
- id: `rpc-${Date.now()}`,
14
- displayMessage: `RPC call: ${method}`,
15
- payload: { method, streaming },
16
- timestamp: Date.now(),
17
- };
18
- }
19
-
20
- function createConnectEvent(connectionId: string): AgentObservabilityEvent {
21
- return {
22
- type: 'connect',
23
- id: `connect-${Date.now()}`,
24
- displayMessage: `Connection: ${connectionId}`,
25
- payload: { connectionId },
26
- timestamp: Date.now(),
27
- };
28
- }
29
-
30
- function createScheduleEvent(
31
- eventType: 'schedule:create' | 'schedule:execute' | 'schedule:cancel',
32
- callback: string,
33
- id: string,
34
- ): AgentObservabilityEvent {
35
- return {
36
- type: eventType,
37
- id: `schedule-${Date.now()}`,
38
- displayMessage: `Schedule ${eventType}: ${callback}`,
39
- payload: { callback, id },
40
- timestamp: Date.now(),
41
- };
42
- }
43
-
44
- function createMcpConnectEvent(
45
- url: string,
46
- transport: string,
47
- state: string,
48
- ): MCPObservabilityEvent {
49
- return {
50
- type: 'mcp:client:connect',
51
- id: `mcp-${Date.now()}`,
52
- displayMessage: `MCP connect: ${url}`,
53
- payload: { url, transport, state },
54
- timestamp: Date.now(),
55
- };
56
- }
57
-
58
- describe('OtelObservability', () => {
59
- beforeEach(() => {
60
- vi.clearAllMocks();
61
- // Prevent real fetch calls during span export — avoids floating promise rejections
62
- // that cause EnvironmentTeardownError when vitest tears down the worker environment.
63
- vi.spyOn(globalThis, 'fetch').mockResolvedValue(new Response(null, { status: 200 }));
64
- });
65
-
66
- afterEach(() => {
67
- vi.restoreAllMocks();
68
- });
69
-
70
- describe('createOtelObservability', () => {
71
- it('should create an OtelObservability instance', () => {
72
- const obs = createOtelObservability({
73
- service: { name: 'test-agent' },
74
- exporter: { url: 'http://localhost:4318/v1/traces' },
75
- });
76
-
77
- expect(obs).toBeInstanceOf(OtelObservability);
78
- });
79
-
80
- it('should accept custom agent options', () => {
81
- const obs = createOtelObservability({
82
- service: { name: 'test-agent' },
83
- exporter: { url: 'http://localhost:4318/v1/traces' },
84
- agents: {
85
- traceRpc: true,
86
- traceSchedule: false,
87
- traceMcp: true,
88
- },
89
- });
90
-
91
- expect(obs).toBeInstanceOf(OtelObservability);
92
- });
93
- });
94
-
95
- describe('createOtelObservabilityFromEnv', () => {
96
- it('should create instance from environment variables', () => {
97
- const env = {
98
- OTEL_SERVICE_NAME: 'my-agent',
99
- OTEL_EXPORTER_OTLP_ENDPOINT: 'https://api.honeycomb.io',
100
- OTEL_EXPORTER_OTLP_HEADERS: 'x-honeycomb-team=test-key',
101
- };
102
-
103
- const obs = createOtelObservabilityFromEnv(env);
104
-
105
- expect(obs).toBeInstanceOf(OtelObservability);
106
- });
107
-
108
- it('should use defaults when env vars not set', () => {
109
- const obs = createOtelObservabilityFromEnv({});
110
-
111
- expect(obs).toBeInstanceOf(OtelObservability);
112
- });
113
-
114
- it('should parse multiple headers', () => {
115
- const env = {
116
- OTEL_EXPORTER_OTLP_HEADERS: 'key1=value1,key2=value2,key3=value3',
117
- };
118
-
119
- const obs = createOtelObservabilityFromEnv(env);
120
-
121
- expect(obs).toBeInstanceOf(OtelObservability);
122
- });
123
- });
124
-
125
- describe('emit', () => {
126
- it('should emit RPC events', () => {
127
- const obs = createOtelObservability({
128
- service: { name: 'test-agent' },
129
- exporter: { url: 'http://localhost:4318/v1/traces' },
130
- });
131
-
132
- const event = createRpcEvent('doSomething', false);
133
-
134
- // Should not throw
135
- expect(() => obs.emit(event)).not.toThrow();
136
- });
137
-
138
- it('should emit connect events', () => {
139
- const obs = createOtelObservability({
140
- service: { name: 'test-agent' },
141
- exporter: { url: 'http://localhost:4318/v1/traces' },
142
- });
143
-
144
- const event = createConnectEvent('conn-123');
145
-
146
- expect(() => obs.emit(event)).not.toThrow();
147
- });
148
-
149
- it('should emit schedule events', () => {
150
- const obs = createOtelObservability({
151
- service: { name: 'test-agent' },
152
- exporter: { url: 'http://localhost:4318/v1/traces' },
153
- });
154
-
155
- const event = createScheduleEvent('schedule:create', 'myCallback', 'schedule-123');
156
-
157
- expect(() => obs.emit(event)).not.toThrow();
158
- });
159
-
160
- it('should emit MCP events', () => {
161
- const obs = createOtelObservability({
162
- service: { name: 'test-agent' },
163
- exporter: { url: 'http://localhost:4318/v1/traces' },
164
- });
165
-
166
- const event = createMcpConnectEvent('http://mcp-server.local', 'stdio', 'connected');
167
-
168
- expect(() => obs.emit(event)).not.toThrow();
169
- });
170
-
171
- it('should respect traceStateUpdates option', () => {
172
- const obs = createOtelObservability({
173
- service: { name: 'test-agent' },
174
- exporter: { url: 'http://localhost:4318/v1/traces' },
175
- agents: {
176
- traceStateUpdates: false,
177
- },
178
- });
179
-
180
- const event: AgentObservabilityEvent = {
181
- type: 'state:update',
182
- id: 'state-123',
183
- displayMessage: 'State updated',
184
- payload: {},
185
- timestamp: Date.now(),
186
- };
187
-
188
- // Should not throw and should be a no-op due to traceStateUpdates: false
189
- expect(() => obs.emit(event)).not.toThrow();
190
- });
191
-
192
- it('should use custom spanNameFormatter', () => {
193
- const customFormatter = vi.fn((event) => `custom-${event.type}`);
194
-
195
- const obs = createOtelObservability({
196
- service: { name: 'test-agent' },
197
- exporter: { url: 'http://localhost:4318/v1/traces' },
198
- agents: {
199
- spanNameFormatter: customFormatter,
200
- },
201
- });
202
-
203
- const event = createRpcEvent('testMethod');
204
- obs.emit(event);
205
-
206
- expect(customFormatter).toHaveBeenCalledWith(event);
207
- });
208
-
209
- it('should use custom attributeExtractor', () => {
210
- const customExtractor = vi.fn(() => ({ 'custom.attr': 'value' }));
211
-
212
- const obs = createOtelObservability({
213
- service: { name: 'test-agent' },
214
- exporter: { url: 'http://localhost:4318/v1/traces' },
215
- agents: {
216
- attributeExtractor: customExtractor,
217
- },
218
- });
219
-
220
- const event = createRpcEvent('testMethod');
221
- obs.emit(event);
222
-
223
- expect(customExtractor).toHaveBeenCalledWith(event);
224
- });
225
-
226
- it('should emit with DurableObjectState context', () => {
227
- const obs = createOtelObservability({
228
- service: { name: 'test-agent' },
229
- exporter: { url: 'http://localhost:4318/v1/traces' },
230
- });
231
-
232
- const mockCtx = {
233
- waitUntil: vi.fn(),
234
- } as unknown as DurableObjectState;
235
-
236
- const event = createRpcEvent('testMethod');
237
-
238
- expect(() => obs.emit(event, mockCtx)).not.toThrow();
239
- });
240
- });
241
-
242
- describe('event types', () => {
243
- const obs = createOtelObservability({
244
- service: { name: 'test-agent' },
245
- exporter: { url: 'http://localhost:4318/v1/traces' },
246
- });
247
-
248
- it('should handle message:request events', () => {
249
- const event: AgentObservabilityEvent = {
250
- type: 'message:request',
251
- id: 'msg-req-123',
252
- displayMessage: 'Message request',
253
- payload: {},
254
- timestamp: Date.now(),
255
- };
256
-
257
- expect(() => obs.emit(event)).not.toThrow();
258
- });
259
-
260
- it('should handle message:response events', () => {
261
- const event: AgentObservabilityEvent = {
262
- type: 'message:response',
263
- id: 'msg-res-123',
264
- displayMessage: 'Message response',
265
- payload: {},
266
- timestamp: Date.now(),
267
- };
268
-
269
- expect(() => obs.emit(event)).not.toThrow();
270
- });
271
-
272
- it('should handle message:clear events', () => {
273
- const event: AgentObservabilityEvent = {
274
- type: 'message:clear',
275
- id: 'msg-clr-123',
276
- displayMessage: 'Messages cleared',
277
- payload: {},
278
- timestamp: Date.now(),
279
- };
280
-
281
- expect(() => obs.emit(event)).not.toThrow();
282
- });
283
-
284
- it('should handle destroy events', () => {
285
- const event: AgentObservabilityEvent = {
286
- type: 'destroy',
287
- id: 'destroy-123',
288
- displayMessage: 'Agent destroyed',
289
- payload: {},
290
- timestamp: Date.now(),
291
- };
292
-
293
- expect(() => obs.emit(event)).not.toThrow();
294
- });
295
-
296
- it('should handle mcp:client:preconnect events', () => {
297
- const event: MCPObservabilityEvent = {
298
- type: 'mcp:client:preconnect',
299
- id: 'mcp-pre-123',
300
- displayMessage: 'MCP preconnect',
301
- payload: { serverId: 'server-1' },
302
- timestamp: Date.now(),
303
- };
304
-
305
- expect(() => obs.emit(event)).not.toThrow();
306
- });
307
-
308
- it('should handle mcp:client:authorize events', () => {
309
- const event: MCPObservabilityEvent = {
310
- type: 'mcp:client:authorize',
311
- id: 'mcp-auth-123',
312
- displayMessage: 'MCP authorize',
313
- payload: {
314
- serverId: 'server-1',
315
- authUrl: 'https://auth.example.com',
316
- clientId: 'client-123',
317
- },
318
- timestamp: Date.now(),
319
- };
320
-
321
- expect(() => obs.emit(event)).not.toThrow();
322
- });
323
-
324
- it('should handle mcp:client:discover events', () => {
325
- const event: MCPObservabilityEvent = {
326
- type: 'mcp:client:discover',
327
- id: 'mcp-disc-123',
328
- displayMessage: 'MCP discover',
329
- payload: {},
330
- timestamp: Date.now(),
331
- };
332
-
333
- expect(() => obs.emit(event)).not.toThrow();
334
- });
335
- });
336
- });