autotel-cloudflare 3.1.0 → 4.0.1

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 (76) hide show
  1. package/dist/agents.d.ts.map +1 -1
  2. package/dist/agents.js +7 -0
  3. package/dist/agents.js.map +1 -1
  4. package/package.json +8 -4
  5. package/src/actors/alarms.ts +0 -225
  6. package/src/actors/index.ts +0 -36
  7. package/src/actors/instrument-actor.test.ts +0 -179
  8. package/src/actors/instrument-actor.ts +0 -574
  9. package/src/actors/sockets.ts +0 -217
  10. package/src/actors/storage.ts +0 -263
  11. package/src/actors/traced-handler.ts +0 -300
  12. package/src/actors/types.ts +0 -98
  13. package/src/actors.ts +0 -50
  14. package/src/agents/agent.ts +0 -327
  15. package/src/agents/base.ts +0 -26
  16. package/src/agents/index.ts +0 -46
  17. package/src/agents/mcp.ts +0 -38
  18. package/src/agents/observability.ts +0 -145
  19. package/src/agents/otel-observability.test.ts +0 -269
  20. package/src/agents/otel-observability.ts +0 -557
  21. package/src/agents/types.ts +0 -61
  22. package/src/agents.ts +0 -87
  23. package/src/bindings/ai.test.ts +0 -170
  24. package/src/bindings/ai.ts +0 -73
  25. package/src/bindings/analytics-engine.test.ts +0 -175
  26. package/src/bindings/analytics-engine.ts +0 -78
  27. package/src/bindings/bindings-cache.test.ts +0 -80
  28. package/src/bindings/bindings-detection.test.ts +0 -235
  29. package/src/bindings/bindings-this-binding.test.ts +0 -294
  30. package/src/bindings/bindings.ts +0 -720
  31. package/src/bindings/browser-rendering.test.ts +0 -160
  32. package/src/bindings/browser-rendering.ts +0 -70
  33. package/src/bindings/common.ts +0 -84
  34. package/src/bindings/hyperdrive.test.ts +0 -176
  35. package/src/bindings/hyperdrive.ts +0 -74
  36. package/src/bindings/images.test.ts +0 -262
  37. package/src/bindings/images.ts +0 -182
  38. package/src/bindings/index.ts +0 -20
  39. package/src/bindings/queue-producer.test.ts +0 -224
  40. package/src/bindings/queue-producer.ts +0 -105
  41. package/src/bindings/rate-limiter.test.ts +0 -140
  42. package/src/bindings/rate-limiter.ts +0 -69
  43. package/src/bindings/vectorize.test.ts +0 -362
  44. package/src/bindings/vectorize.ts +0 -86
  45. package/src/bindings.ts +0 -6
  46. package/src/events.ts +0 -6
  47. package/src/execution-logger.test.ts +0 -127
  48. package/src/execution-logger.ts +0 -112
  49. package/src/global/cache.test.ts +0 -292
  50. package/src/global/cache.ts +0 -164
  51. package/src/global/fetch.test.ts +0 -399
  52. package/src/global/fetch.ts +0 -136
  53. package/src/global/index.ts +0 -7
  54. package/src/handlers/durable-objects.test.ts +0 -524
  55. package/src/handlers/durable-objects.ts +0 -250
  56. package/src/handlers/index.ts +0 -6
  57. package/src/handlers/workflows.test.ts +0 -411
  58. package/src/handlers/workflows.ts +0 -345
  59. package/src/handlers.ts +0 -6
  60. package/src/index.ts +0 -91
  61. package/src/logger.ts +0 -15
  62. package/src/native/native-tracing.test.ts +0 -54
  63. package/src/native/native-tracing.ts +0 -83
  64. package/src/native.ts +0 -12
  65. package/src/parse-error.ts +0 -1
  66. package/src/sampling.ts +0 -6
  67. package/src/testing.ts +0 -6
  68. package/src/wrappers/cf-attributes.test.ts +0 -334
  69. package/src/wrappers/define-worker-fetch.test.ts +0 -102
  70. package/src/wrappers/define-worker-fetch.ts +0 -71
  71. package/src/wrappers/index.ts +0 -13
  72. package/src/wrappers/instrument.integration.test.ts +0 -578
  73. package/src/wrappers/instrument.ts +0 -806
  74. package/src/wrappers/native-instrument.test.ts +0 -153
  75. package/src/wrappers/wrap-do.ts +0 -34
  76. package/src/wrappers/wrap-module.ts +0 -37
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","names":[],"sources":["../src/agents/base.ts","../src/agents/agent.ts","../src/agents/mcp.ts","../src/agents/observability.ts","../src/agents/types.ts","../src/agents/otel-observability.ts"],"mappings":"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"}
1
+ {"version":3,"file":"agents.d.ts","names":[],"sources":["../src/agents/base.ts","../src/agents/agent.ts","../src/agents/mcp.ts","../src/agents/observability.ts","../src/agents/types.ts","../src/agents/otel-observability.ts"],"mappings":"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"}
package/dist/agents.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { WorkerTracer, WorkerTracerProvider, createInitialiser } from "autotel-edge";
2
2
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
3
3
  import { resourceFromAttributes } from "@opentelemetry/resources";
4
+ import { agentContextFromSpan, recordHumanApproval } from "autotel-genai/agent";
4
5
 
5
6
  //#region src/agents/otel-observability.ts
6
7
  /**
@@ -276,6 +277,12 @@ var OtelObservability = class {
276
277
  },
277
278
  startTime: event.timestamp
278
279
  });
280
+ if (event.type === "tool:approval") recordHumanApproval({
281
+ ctx: agentContextFromSpan(span),
282
+ toolCallId: event.payload.toolCallId,
283
+ approved: event.payload.approved,
284
+ required: true
285
+ });
279
286
  applyEventStatus(span, event);
280
287
  span.end(event.timestamp + 1);
281
288
  const traceId = span.spanContext().traceId;
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","names":[],"sources":["../src/agents/otel-observability.ts","../src/agents/observability.ts"],"sourcesContent":["/**\n * OpenTelemetry-based Observability implementation for Cloudflare Agents SDK\n *\n * Converts Agent events into OpenTelemetry spans for distributed tracing.\n */\n\nimport {\n SpanKind,\n SpanStatusCode,\n trace,\n type Attributes,\n type Span,\n} from '@opentelemetry/api';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n WorkerTracer,\n WorkerTracerProvider,\n createInitialiser,\n type ResolvedEdgeConfig,\n} from 'autotel-edge';\nimport type {\n AgentInstrumentationOptions,\n MCPObservabilityEvent,\n Observability,\n ObservabilityEvent,\n ObservabilityExecutionContext,\n OtelObservabilityConfig,\n} from './types';\n\nlet providerInitialized = false;\n\ntype EventCategory =\n | 'state'\n | 'rpc'\n | 'schedule'\n | 'queue'\n | 'submission'\n | 'message'\n | 'chat'\n | 'transcript'\n | 'fiber'\n | 'agentTool'\n | 'lifecycle'\n | 'workflow'\n | 'mcp'\n | 'email';\n\nfunction initProvider(config: ResolvedEdgeConfig): void {\n if (providerInitialized) return;\n\n const resource = resourceFromAttributes({\n 'service.name': config.service.name,\n 'service.version': config.service.version,\n 'service.namespace': config.service.namespace,\n 'cloud.provider': 'cloudflare',\n 'cloud.platform': 'cloudflare.workers',\n 'telemetry.sdk.name': 'autotel-cloudflare',\n 'telemetry.sdk.language': 'js',\n 'agent.framework': 'cloudflare-agents',\n });\n\n const provider = new WorkerTracerProvider(config.spanProcessors, resource);\n provider.register();\n\n const tracer = trace.getTracer('autotel-cloudflare/agents') as WorkerTracer;\n tracer.setHeadSampler(config.sampling.headSampler);\n\n providerInitialized = true;\n}\n\nfunction classifyEvent(type: ObservabilityEvent['type']): EventCategory {\n if (type.startsWith('mcp:')) return 'mcp';\n if (type.startsWith('workflow:')) return 'workflow';\n if (type.startsWith('fiber:')) return 'fiber';\n if (type.startsWith('agent_tool:')) return 'agentTool';\n if (type.startsWith('chat:transcript:')) return 'transcript';\n if (type.startsWith('chat:')) return 'chat';\n if (type.startsWith('submission:')) return 'submission';\n if (type.startsWith('queue:')) return 'queue';\n if (type.startsWith('schedule:')) return 'schedule';\n if (\n type.startsWith('message:') ||\n type.startsWith('tool:') ||\n type === 'rpc:error'\n ) {\n return 'message';\n }\n if (type === 'rpc') return 'rpc';\n if (type.startsWith('state:')) return 'state';\n if (type.startsWith('email:')) return 'email';\n if (type === 'connect' || type === 'disconnect' || type === 'destroy') {\n return 'lifecycle';\n }\n return 'message';\n}\n\nfunction shouldTraceEvent(\n event: ObservabilityEvent,\n options: AgentInstrumentationOptions,\n): boolean {\n const opts: Required<\n Pick<\n AgentInstrumentationOptions,\n | 'traceRpc'\n | 'traceSchedule'\n | 'traceQueue'\n | 'traceSubmissions'\n | 'traceMcp'\n | 'traceStateUpdates'\n | 'traceMessages'\n | 'traceLifecycle'\n | 'traceChat'\n | 'traceTranscripts'\n | 'traceFibers'\n | 'traceToolRecovery'\n | 'traceWorkflow'\n | 'traceEmail'\n >\n > = {\n traceRpc: true,\n traceSchedule: true,\n traceQueue: true,\n traceSubmissions: true,\n traceMcp: true,\n traceStateUpdates: false,\n traceMessages: true,\n traceLifecycle: true,\n traceChat: true,\n traceTranscripts: true,\n traceFibers: true,\n traceToolRecovery: true,\n traceWorkflow: true,\n traceEmail: true,\n };\n const merged = { ...opts, ...options };\n\n switch (classifyEvent(event.type)) {\n case 'rpc': {\n return merged.traceRpc;\n }\n case 'schedule': {\n return merged.traceSchedule;\n }\n case 'queue': {\n return merged.traceQueue;\n }\n case 'submission': {\n return merged.traceSubmissions;\n }\n case 'mcp': {\n return merged.traceMcp;\n }\n case 'state': {\n return merged.traceStateUpdates;\n }\n case 'message': {\n return merged.traceMessages;\n }\n case 'lifecycle': {\n return merged.traceLifecycle;\n }\n case 'chat': {\n return merged.traceChat;\n }\n case 'transcript': {\n return merged.traceTranscripts;\n }\n case 'fiber': {\n return merged.traceFibers;\n }\n case 'agentTool': {\n return merged.traceToolRecovery;\n }\n case 'workflow': {\n return merged.traceWorkflow;\n }\n case 'email': {\n return merged.traceEmail;\n }\n }\n}\n\nfunction formatTypeSegment(value: string): string {\n return value.replaceAll(/[:_]/g, '.');\n}\n\nfunction getPayloadName(\n payload: Record<string, unknown>,\n ...keys: string[]\n): string | undefined {\n for (const key of keys) {\n const value = payload[key];\n if (typeof value === 'string' && value.length > 0) {\n return value;\n }\n }\n return undefined;\n}\n\nfunction getDefaultSpanName(event: ObservabilityEvent): string {\n const payload = event.payload;\n\n switch (event.type) {\n case 'rpc':\n case 'rpc:error': {\n return `agent.rpc ${(payload as { method: string }).method}`;\n }\n case 'schedule:create':\n case 'schedule:execute':\n case 'schedule:cancel':\n case 'schedule:retry':\n case 'schedule:error':\n case 'schedule:duplicate_warning': {\n return `agent.${formatTypeSegment(event.type)} ${getPayloadName(payload, 'callback') ?? 'unknown'}`;\n }\n case 'queue:create':\n case 'queue:retry':\n case 'queue:error': {\n return `agent.${formatTypeSegment(event.type)} ${getPayloadName(payload, 'callback') ?? 'unknown'}`;\n }\n case 'submission:create':\n case 'submission:status':\n case 'submission:error': {\n return `agent.${formatTypeSegment(event.type)} ${getPayloadName(payload, 'submissionId') ?? 'unknown'}`;\n }\n case 'connect':\n case 'disconnect': {\n return `agent.${event.type} ${getPayloadName(payload, 'connectionId') ?? 'unknown'}`;\n }\n case 'mcp:client:preconnect': {\n return `mcp.client.preconnect ${getPayloadName(payload, 'serverId') ?? 'unknown'}`;\n }\n case 'mcp:client:authorize': {\n return `mcp.client.authorize ${getPayloadName(payload, 'serverId') ?? 'unknown'}`;\n }\n case 'mcp:client:connect':\n case 'mcp:client:discover':\n case 'mcp:client:close': {\n return `mcp.client.${formatTypeSegment(event.type).split('.').slice(-1)[0]} ${\n getPayloadName(payload, 'url', 'capability', 'state') ?? 'unknown'\n }`;\n }\n case 'workflow:start':\n case 'workflow:event':\n case 'workflow:approved':\n case 'workflow:rejected':\n case 'workflow:terminated':\n case 'workflow:paused':\n case 'workflow:resumed':\n case 'workflow:restarted': {\n return `agent.${formatTypeSegment(event.type)} ${\n getPayloadName(payload, 'workflowName', 'workflowId', 'eventType') ?? 'unknown'\n }`;\n }\n case 'email:receive':\n case 'email:reply':\n case 'email:send': {\n return `agent.${formatTypeSegment(event.type)} ${getPayloadName(payload, 'subject') ?? 'message'}`;\n }\n case 'destroy': {\n return 'agent.destroy';\n }\n default: {\n return `agent.${formatTypeSegment(event.type)}`;\n }\n }\n}\n\nfunction isPrimitiveAttributeValue(\n value: unknown,\n): value is string | number | boolean | string[] | number[] | boolean[] {\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return true;\n }\n\n if (!Array.isArray(value)) {\n return false;\n }\n\n return value.every(\n (entry) =>\n typeof entry === 'string' ||\n typeof entry === 'number' ||\n typeof entry === 'boolean',\n );\n}\n\nfunction setIfPresent(\n attrs: Attributes,\n key: string,\n value: unknown,\n): void {\n if (value === undefined || value === null) return;\n if (isPrimitiveAttributeValue(value)) {\n attrs[key] = value;\n }\n}\n\nfunction getDefaultAttributes(event: ObservabilityEvent): Attributes {\n const attrs: Attributes = {\n 'agent.event.type': event.type,\n };\n\n setIfPresent(attrs, 'agent.event.id', event.id);\n setIfPresent(attrs, 'agent.display_message', event.displayMessage);\n setIfPresent(attrs, 'agent.class', event.agent);\n setIfPresent(attrs, 'agent.instance.name', event.name);\n setIfPresent(attrs, 'gen_ai.agent.name', event.agent);\n\n switch (event.type) {\n case 'rpc': {\n attrs['agent.rpc.method'] = event.payload.method;\n setIfPresent(attrs, 'agent.rpc.streaming', event.payload.streaming);\n break;\n }\n case 'rpc:error': {\n attrs['agent.rpc.method'] = event.payload.method;\n break;\n }\n case 'schedule:create':\n case 'schedule:execute':\n case 'schedule:cancel':\n case 'schedule:retry':\n case 'schedule:error':\n case 'queue:create':\n case 'queue:retry':\n case 'queue:error': {\n setIfPresent(attrs, 'agent.schedule.callback', event.payload.callback);\n setIfPresent(attrs, 'agent.schedule.id', event.payload.id);\n break;\n }\n case 'schedule:duplicate_warning': {\n setIfPresent(attrs, 'agent.schedule.callback', event.payload.callback);\n break;\n }\n case 'connect':\n case 'disconnect': {\n setIfPresent(attrs, 'agent.connection.id', event.payload.connectionId);\n break;\n }\n case 'mcp:client:preconnect': {\n setIfPresent(attrs, 'agent.mcp.server_id', event.payload.serverId);\n break;\n }\n case 'mcp:client:connect':\n case 'mcp:client:close': {\n setIfPresent(attrs, 'agent.mcp.url', event.payload.url);\n setIfPresent(attrs, 'agent.mcp.transport', event.payload.transport);\n setIfPresent(attrs, 'agent.mcp.state', event.payload.state);\n break;\n }\n case 'mcp:client:authorize': {\n setIfPresent(attrs, 'agent.mcp.server_id', event.payload.serverId);\n setIfPresent(attrs, 'agent.mcp.auth_url', event.payload.authUrl);\n setIfPresent(attrs, 'agent.mcp.client_id', event.payload.clientId);\n break;\n }\n case 'mcp:client:discover': {\n setIfPresent(attrs, 'agent.mcp.url', event.payload.url);\n setIfPresent(attrs, 'agent.mcp.state', event.payload.state);\n setIfPresent(attrs, 'agent.mcp.capability', event.payload.capability);\n break;\n }\n }\n\n for (const [key, value] of Object.entries(event.payload)) {\n setIfPresent(attrs, `agent.payload.${key}`, value);\n }\n\n return attrs;\n}\n\nfunction getSpanKind(event: ObservabilityEvent): SpanKind {\n switch (classifyEvent(event.type)) {\n case 'rpc':\n case 'lifecycle':\n case 'email': {\n return SpanKind.SERVER;\n }\n case 'mcp': {\n return SpanKind.CLIENT;\n }\n case 'schedule':\n case 'queue': {\n return SpanKind.CONSUMER;\n }\n default: {\n return SpanKind.INTERNAL;\n }\n }\n}\n\nfunction inferErrorMessage(event: ObservabilityEvent): string | undefined {\n const payload = event.payload as Record<string, unknown>;\n const direct = payload.error;\n if (typeof direct === 'string' && direct.length > 0) {\n return direct;\n }\n\n if (event.type === 'workflow:rejected') {\n const reason = payload.reason;\n if (typeof reason === 'string' && reason.length > 0) {\n return reason;\n }\n return 'workflow rejected';\n }\n\n if (event.type.endsWith(':failed') || event.type.endsWith(':error')) {\n return event.type;\n }\n\n return undefined;\n}\n\nfunction isErrorEvent(event: ObservabilityEvent): boolean {\n if (event.type === 'workflow:rejected') return true;\n if (event.type.endsWith(':error') || event.type.endsWith(':failed')) return true;\n\n if ('error' in event.payload) {\n return typeof (event.payload as Record<string, unknown>).error === 'string';\n }\n\n return false;\n}\n\nfunction applyEventStatus(span: Span, event: ObservabilityEvent): void {\n if (!isErrorEvent(event)) {\n span.setStatus({ code: SpanStatusCode.OK });\n return;\n }\n\n const message = inferErrorMessage(event);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message,\n });\n span.setAttribute('error', true);\n\n if (message) {\n span.setAttribute('exception.message', message);\n }\n}\n\nasync function exportSpans(\n traceId: string,\n ctx?: ObservabilityExecutionContext,\n): Promise<void> {\n const tracer = trace.getTracer('autotel-cloudflare/agents');\n if (tracer instanceof WorkerTracer) {\n try {\n const scheduler = ctx && 'scheduler' in ctx\n ? (ctx.scheduler as { wait?: (ms: number) => Promise<void> } | undefined)\n : undefined;\n if (scheduler?.wait) {\n await scheduler.wait(1);\n }\n await tracer.forceFlush(traceId);\n } catch (error) {\n console.error('[autotel-cloudflare/agents] Failed to export spans:', error);\n }\n }\n}\n\n/**\n * OpenTelemetry-based Observability implementation\n *\n * Implements the Agents SDK Observability interface and converts\n * events into OpenTelemetry spans.\n */\nexport class OtelObservability implements Observability {\n private readonly config: ResolvedEdgeConfig;\n private readonly options: AgentInstrumentationOptions;\n private initialized = false;\n\n constructor(config: OtelObservabilityConfig) {\n const initialiser = createInitialiser(config);\n this.config = initialiser({}, undefined);\n this.options = config.agents ?? {};\n }\n\n private initialize(): void {\n if (this.initialized) return;\n initProvider(this.config);\n this.initialized = true;\n }\n\n emit(event: ObservabilityEvent, ctx?: ObservabilityExecutionContext): void {\n this.initialize();\n\n if (!shouldTraceEvent(event, this.options)) {\n return;\n }\n\n const tracer = trace.getTracer('autotel-cloudflare/agents');\n const spanName = this.options.spanNameFormatter\n ? this.options.spanNameFormatter(event)\n : getDefaultSpanName(event);\n const defaultAttrs = getDefaultAttributes(event);\n const customAttrs = this.options.attributeExtractor\n ? this.options.attributeExtractor(event)\n : {};\n const span = tracer.startSpan(spanName, {\n kind: getSpanKind(event),\n attributes: { ...defaultAttrs, ...customAttrs },\n startTime: event.timestamp,\n });\n\n applyEventStatus(span, event);\n span.end(event.timestamp + 1);\n\n const traceId = span.spanContext().traceId;\n if (ctx && 'waitUntil' in ctx && typeof ctx.waitUntil === 'function') {\n ctx.waitUntil(exportSpans(traceId, ctx));\n return;\n }\n\n void exportSpans(traceId, ctx);\n }\n}\n\nexport function createOtelObservability(\n config: OtelObservabilityConfig,\n): OtelObservability {\n return new OtelObservability(config);\n}\n\nexport function createOtelObservabilityFromEnv(\n env: Record<string, unknown>,\n options?: AgentInstrumentationOptions,\n): OtelObservability {\n const endpoint = (env.OTEL_EXPORTER_OTLP_ENDPOINT as string) || undefined;\n const serviceName = (env.OTEL_SERVICE_NAME as string) || 'cloudflare-agent';\n\n let headers: Record<string, string> | undefined;\n const headersStr = env.OTEL_EXPORTER_OTLP_HEADERS as string;\n if (headersStr) {\n headers = {};\n for (const pair of headersStr.split(',')) {\n const [key, value] = pair.split('=');\n if (key && value) {\n headers[key.trim()] = value.trim();\n }\n }\n }\n\n return createOtelObservability({\n service: { name: serviceName },\n exporter: { url: endpoint || 'http://localhost:4318/v1/traces', headers },\n agents: options,\n });\n}\n\nexport type { MCPObservabilityEvent };\n","import type { AgentObservabilityEvent } from './agent';\nimport type { MCPObservabilityEvent } from './mcp';\n\nexport type ObservabilityEvent = AgentObservabilityEvent | MCPObservabilityEvent;\n\nexport interface Observability {\n emit(event: ObservabilityEvent, ctx?: DurableObjectState | ExecutionContext): void;\n}\n\ntype ChannelKey =\n | 'state'\n | 'rpc'\n | 'message'\n | 'chat'\n | 'transcript'\n | 'fiber'\n | 'agentTool'\n | 'schedule'\n | 'lifecycle'\n | 'workflow'\n | 'mcp'\n | 'email';\n\nexport type ChannelEventMap = {\n state: Extract<ObservabilityEvent, { type: `state:${string}` }>;\n rpc: Extract<ObservabilityEvent, { type: 'rpc' | `rpc:${string}` }>;\n message: Extract<\n ObservabilityEvent,\n { type: `message:${string}` | `tool:${string}` | `submission:${string}` }\n >;\n chat: Exclude<\n Extract<ObservabilityEvent, { type: `chat:${string}` }>,\n { type: `chat:transcript:${string}` }\n >;\n transcript: Extract<\n ObservabilityEvent,\n { type: `transcript:${string}` | `chat:transcript:${string}` }\n >;\n fiber: Extract<ObservabilityEvent, { type: `fiber:${string}` }>;\n agentTool: Extract<ObservabilityEvent, { type: `agent_tool:${string}` }>;\n schedule: Extract<\n ObservabilityEvent,\n { type: `schedule:${string}` | `queue:${string}` }\n >;\n lifecycle: Extract<\n ObservabilityEvent,\n { type: 'connect' | 'disconnect' | 'destroy' }\n >;\n workflow: Extract<ObservabilityEvent, { type: `workflow:${string}` }>;\n mcp: Extract<ObservabilityEvent, { type: `mcp:${string}` }>;\n email: Extract<ObservabilityEvent, { type: `email:${string}` }>;\n};\n\nexport interface ObservabilityChannel<TEvent extends ObservabilityEvent = ObservabilityEvent> {\n name: string;\n publish(event: TEvent): void;\n}\n\nconst listeners: {\n [K in ChannelKey]: Set<(event: ChannelEventMap[K]) => void>;\n} = {\n state: new Set(),\n rpc: new Set(),\n message: new Set(),\n chat: new Set(),\n transcript: new Set(),\n fiber: new Set(),\n agentTool: new Set(),\n schedule: new Set(),\n lifecycle: new Set(),\n workflow: new Set(),\n mcp: new Set(),\n email: new Set(),\n};\n\nfunction createChannel<K extends ChannelKey>(\n key: K,\n name: string,\n): ObservabilityChannel<ChannelEventMap[K]> {\n return {\n name,\n publish(event) {\n for (const callback of listeners[key]) {\n callback(event);\n }\n },\n };\n}\n\nexport const channels = {\n state: createChannel('state', 'agents:state'),\n rpc: createChannel('rpc', 'agents:rpc'),\n message: createChannel('message', 'agents:message'),\n chat: createChannel('chat', 'agents:chat'),\n transcript: createChannel('transcript', 'agents:transcript'),\n fiber: createChannel('fiber', 'agents:fiber'),\n agentTool: createChannel('agentTool', 'agents:agent_tool'),\n schedule: createChannel('schedule', 'agents:schedule'),\n lifecycle: createChannel('lifecycle', 'agents:lifecycle'),\n workflow: createChannel('workflow', 'agents:workflow'),\n mcp: createChannel('mcp', 'agents:mcp'),\n email: createChannel('email', 'agents:email'),\n} as const;\n\nfunction getChannel(type: string): ObservabilityChannel {\n if (type.startsWith('mcp:')) return channels.mcp;\n if (type.startsWith('workflow:')) return channels.workflow;\n if (type.startsWith('fiber:')) return channels.fiber;\n if (type.startsWith('transcript:') || type.startsWith('chat:transcript:')) {\n return channels.transcript;\n }\n if (type.startsWith('chat:')) return channels.chat;\n if (type.startsWith('agent_tool:')) return channels.agentTool;\n if (type.startsWith('schedule:') || type.startsWith('queue:')) {\n return channels.schedule;\n }\n if (\n type.startsWith('message:') ||\n type.startsWith('tool:') ||\n type.startsWith('submission:')\n ) {\n return channels.message;\n }\n if (type === 'rpc' || type.startsWith('rpc:')) return channels.rpc;\n if (type.startsWith('state:')) return channels.state;\n if (type.startsWith('email:')) return channels.email;\n return channels.lifecycle;\n}\n\nexport const genericObservability: Observability = {\n emit(event) {\n getChannel(event.type).publish(event);\n },\n};\n\nexport function subscribe<K extends keyof ChannelEventMap>(\n channelKey: K,\n callback: (event: ChannelEventMap[K]) => void,\n): () => void {\n const bucket = listeners[channelKey];\n bucket.add(callback);\n return () => {\n bucket.delete(callback);\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","names":[],"sources":["../src/agents/otel-observability.ts","../src/agents/observability.ts"],"sourcesContent":["/**\n * OpenTelemetry-based Observability implementation for Cloudflare Agents SDK\n *\n * Converts Agent events into OpenTelemetry spans for distributed tracing.\n */\n\nimport {\n SpanKind,\n SpanStatusCode,\n trace,\n type Attributes,\n type Span,\n} from '@opentelemetry/api';\nimport {\n agentContextFromSpan,\n recordHumanApproval,\n} from 'autotel-genai/agent';\nimport { resourceFromAttributes } from '@opentelemetry/resources';\nimport {\n WorkerTracer,\n WorkerTracerProvider,\n createInitialiser,\n type ResolvedEdgeConfig,\n} from 'autotel-edge';\nimport type {\n AgentInstrumentationOptions,\n MCPObservabilityEvent,\n Observability,\n ObservabilityEvent,\n ObservabilityExecutionContext,\n OtelObservabilityConfig,\n} from './types';\n\nlet providerInitialized = false;\n\ntype EventCategory =\n | 'state'\n | 'rpc'\n | 'schedule'\n | 'queue'\n | 'submission'\n | 'message'\n | 'chat'\n | 'transcript'\n | 'fiber'\n | 'agentTool'\n | 'lifecycle'\n | 'workflow'\n | 'mcp'\n | 'email';\n\nfunction initProvider(config: ResolvedEdgeConfig): void {\n if (providerInitialized) return;\n\n const resource = resourceFromAttributes({\n 'service.name': config.service.name,\n 'service.version': config.service.version,\n 'service.namespace': config.service.namespace,\n 'cloud.provider': 'cloudflare',\n 'cloud.platform': 'cloudflare.workers',\n 'telemetry.sdk.name': 'autotel-cloudflare',\n 'telemetry.sdk.language': 'js',\n 'agent.framework': 'cloudflare-agents',\n });\n\n const provider = new WorkerTracerProvider(config.spanProcessors, resource);\n provider.register();\n\n const tracer = trace.getTracer('autotel-cloudflare/agents') as WorkerTracer;\n tracer.setHeadSampler(config.sampling.headSampler);\n\n providerInitialized = true;\n}\n\nfunction classifyEvent(type: ObservabilityEvent['type']): EventCategory {\n if (type.startsWith('mcp:')) return 'mcp';\n if (type.startsWith('workflow:')) return 'workflow';\n if (type.startsWith('fiber:')) return 'fiber';\n if (type.startsWith('agent_tool:')) return 'agentTool';\n if (type.startsWith('chat:transcript:')) return 'transcript';\n if (type.startsWith('chat:')) return 'chat';\n if (type.startsWith('submission:')) return 'submission';\n if (type.startsWith('queue:')) return 'queue';\n if (type.startsWith('schedule:')) return 'schedule';\n if (\n type.startsWith('message:') ||\n type.startsWith('tool:') ||\n type === 'rpc:error'\n ) {\n return 'message';\n }\n if (type === 'rpc') return 'rpc';\n if (type.startsWith('state:')) return 'state';\n if (type.startsWith('email:')) return 'email';\n if (type === 'connect' || type === 'disconnect' || type === 'destroy') {\n return 'lifecycle';\n }\n return 'message';\n}\n\nfunction shouldTraceEvent(\n event: ObservabilityEvent,\n options: AgentInstrumentationOptions,\n): boolean {\n const opts: Required<\n Pick<\n AgentInstrumentationOptions,\n | 'traceRpc'\n | 'traceSchedule'\n | 'traceQueue'\n | 'traceSubmissions'\n | 'traceMcp'\n | 'traceStateUpdates'\n | 'traceMessages'\n | 'traceLifecycle'\n | 'traceChat'\n | 'traceTranscripts'\n | 'traceFibers'\n | 'traceToolRecovery'\n | 'traceWorkflow'\n | 'traceEmail'\n >\n > = {\n traceRpc: true,\n traceSchedule: true,\n traceQueue: true,\n traceSubmissions: true,\n traceMcp: true,\n traceStateUpdates: false,\n traceMessages: true,\n traceLifecycle: true,\n traceChat: true,\n traceTranscripts: true,\n traceFibers: true,\n traceToolRecovery: true,\n traceWorkflow: true,\n traceEmail: true,\n };\n const merged = { ...opts, ...options };\n\n switch (classifyEvent(event.type)) {\n case 'rpc': {\n return merged.traceRpc;\n }\n case 'schedule': {\n return merged.traceSchedule;\n }\n case 'queue': {\n return merged.traceQueue;\n }\n case 'submission': {\n return merged.traceSubmissions;\n }\n case 'mcp': {\n return merged.traceMcp;\n }\n case 'state': {\n return merged.traceStateUpdates;\n }\n case 'message': {\n return merged.traceMessages;\n }\n case 'lifecycle': {\n return merged.traceLifecycle;\n }\n case 'chat': {\n return merged.traceChat;\n }\n case 'transcript': {\n return merged.traceTranscripts;\n }\n case 'fiber': {\n return merged.traceFibers;\n }\n case 'agentTool': {\n return merged.traceToolRecovery;\n }\n case 'workflow': {\n return merged.traceWorkflow;\n }\n case 'email': {\n return merged.traceEmail;\n }\n }\n}\n\nfunction formatTypeSegment(value: string): string {\n return value.replaceAll(/[:_]/g, '.');\n}\n\nfunction getPayloadName(\n payload: Record<string, unknown>,\n ...keys: string[]\n): string | undefined {\n for (const key of keys) {\n const value = payload[key];\n if (typeof value === 'string' && value.length > 0) {\n return value;\n }\n }\n return undefined;\n}\n\nfunction getDefaultSpanName(event: ObservabilityEvent): string {\n const payload = event.payload;\n\n switch (event.type) {\n case 'rpc':\n case 'rpc:error': {\n return `agent.rpc ${(payload as { method: string }).method}`;\n }\n case 'schedule:create':\n case 'schedule:execute':\n case 'schedule:cancel':\n case 'schedule:retry':\n case 'schedule:error':\n case 'schedule:duplicate_warning': {\n return `agent.${formatTypeSegment(event.type)} ${getPayloadName(payload, 'callback') ?? 'unknown'}`;\n }\n case 'queue:create':\n case 'queue:retry':\n case 'queue:error': {\n return `agent.${formatTypeSegment(event.type)} ${getPayloadName(payload, 'callback') ?? 'unknown'}`;\n }\n case 'submission:create':\n case 'submission:status':\n case 'submission:error': {\n return `agent.${formatTypeSegment(event.type)} ${getPayloadName(payload, 'submissionId') ?? 'unknown'}`;\n }\n case 'connect':\n case 'disconnect': {\n return `agent.${event.type} ${getPayloadName(payload, 'connectionId') ?? 'unknown'}`;\n }\n case 'mcp:client:preconnect': {\n return `mcp.client.preconnect ${getPayloadName(payload, 'serverId') ?? 'unknown'}`;\n }\n case 'mcp:client:authorize': {\n return `mcp.client.authorize ${getPayloadName(payload, 'serverId') ?? 'unknown'}`;\n }\n case 'mcp:client:connect':\n case 'mcp:client:discover':\n case 'mcp:client:close': {\n return `mcp.client.${formatTypeSegment(event.type).split('.').slice(-1)[0]} ${\n getPayloadName(payload, 'url', 'capability', 'state') ?? 'unknown'\n }`;\n }\n case 'workflow:start':\n case 'workflow:event':\n case 'workflow:approved':\n case 'workflow:rejected':\n case 'workflow:terminated':\n case 'workflow:paused':\n case 'workflow:resumed':\n case 'workflow:restarted': {\n return `agent.${formatTypeSegment(event.type)} ${\n getPayloadName(payload, 'workflowName', 'workflowId', 'eventType') ?? 'unknown'\n }`;\n }\n case 'email:receive':\n case 'email:reply':\n case 'email:send': {\n return `agent.${formatTypeSegment(event.type)} ${getPayloadName(payload, 'subject') ?? 'message'}`;\n }\n case 'destroy': {\n return 'agent.destroy';\n }\n default: {\n return `agent.${formatTypeSegment(event.type)}`;\n }\n }\n}\n\nfunction isPrimitiveAttributeValue(\n value: unknown,\n): value is string | number | boolean | string[] | number[] | boolean[] {\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return true;\n }\n\n if (!Array.isArray(value)) {\n return false;\n }\n\n return value.every(\n (entry) =>\n typeof entry === 'string' ||\n typeof entry === 'number' ||\n typeof entry === 'boolean',\n );\n}\n\nfunction setIfPresent(\n attrs: Attributes,\n key: string,\n value: unknown,\n): void {\n if (value === undefined || value === null) return;\n if (isPrimitiveAttributeValue(value)) {\n attrs[key] = value;\n }\n}\n\nfunction getDefaultAttributes(event: ObservabilityEvent): Attributes {\n const attrs: Attributes = {\n 'agent.event.type': event.type,\n };\n\n setIfPresent(attrs, 'agent.event.id', event.id);\n setIfPresent(attrs, 'agent.display_message', event.displayMessage);\n setIfPresent(attrs, 'agent.class', event.agent);\n setIfPresent(attrs, 'agent.instance.name', event.name);\n setIfPresent(attrs, 'gen_ai.agent.name', event.agent);\n\n switch (event.type) {\n case 'rpc': {\n attrs['agent.rpc.method'] = event.payload.method;\n setIfPresent(attrs, 'agent.rpc.streaming', event.payload.streaming);\n break;\n }\n case 'rpc:error': {\n attrs['agent.rpc.method'] = event.payload.method;\n break;\n }\n case 'schedule:create':\n case 'schedule:execute':\n case 'schedule:cancel':\n case 'schedule:retry':\n case 'schedule:error':\n case 'queue:create':\n case 'queue:retry':\n case 'queue:error': {\n setIfPresent(attrs, 'agent.schedule.callback', event.payload.callback);\n setIfPresent(attrs, 'agent.schedule.id', event.payload.id);\n break;\n }\n case 'schedule:duplicate_warning': {\n setIfPresent(attrs, 'agent.schedule.callback', event.payload.callback);\n break;\n }\n case 'connect':\n case 'disconnect': {\n setIfPresent(attrs, 'agent.connection.id', event.payload.connectionId);\n break;\n }\n case 'mcp:client:preconnect': {\n setIfPresent(attrs, 'agent.mcp.server_id', event.payload.serverId);\n break;\n }\n case 'mcp:client:connect':\n case 'mcp:client:close': {\n setIfPresent(attrs, 'agent.mcp.url', event.payload.url);\n setIfPresent(attrs, 'agent.mcp.transport', event.payload.transport);\n setIfPresent(attrs, 'agent.mcp.state', event.payload.state);\n break;\n }\n case 'mcp:client:authorize': {\n setIfPresent(attrs, 'agent.mcp.server_id', event.payload.serverId);\n setIfPresent(attrs, 'agent.mcp.auth_url', event.payload.authUrl);\n setIfPresent(attrs, 'agent.mcp.client_id', event.payload.clientId);\n break;\n }\n case 'mcp:client:discover': {\n setIfPresent(attrs, 'agent.mcp.url', event.payload.url);\n setIfPresent(attrs, 'agent.mcp.state', event.payload.state);\n setIfPresent(attrs, 'agent.mcp.capability', event.payload.capability);\n break;\n }\n }\n\n for (const [key, value] of Object.entries(event.payload)) {\n setIfPresent(attrs, `agent.payload.${key}`, value);\n }\n\n return attrs;\n}\n\nfunction getSpanKind(event: ObservabilityEvent): SpanKind {\n switch (classifyEvent(event.type)) {\n case 'rpc':\n case 'lifecycle':\n case 'email': {\n return SpanKind.SERVER;\n }\n case 'mcp': {\n return SpanKind.CLIENT;\n }\n case 'schedule':\n case 'queue': {\n return SpanKind.CONSUMER;\n }\n default: {\n return SpanKind.INTERNAL;\n }\n }\n}\n\nfunction inferErrorMessage(event: ObservabilityEvent): string | undefined {\n const payload = event.payload as Record<string, unknown>;\n const direct = payload.error;\n if (typeof direct === 'string' && direct.length > 0) {\n return direct;\n }\n\n if (event.type === 'workflow:rejected') {\n const reason = payload.reason;\n if (typeof reason === 'string' && reason.length > 0) {\n return reason;\n }\n return 'workflow rejected';\n }\n\n if (event.type.endsWith(':failed') || event.type.endsWith(':error')) {\n return event.type;\n }\n\n return undefined;\n}\n\nfunction isErrorEvent(event: ObservabilityEvent): boolean {\n if (event.type === 'workflow:rejected') return true;\n if (event.type.endsWith(':error') || event.type.endsWith(':failed')) return true;\n\n if ('error' in event.payload) {\n return typeof (event.payload as Record<string, unknown>).error === 'string';\n }\n\n return false;\n}\n\nfunction applyEventStatus(span: Span, event: ObservabilityEvent): void {\n if (!isErrorEvent(event)) {\n span.setStatus({ code: SpanStatusCode.OK });\n return;\n }\n\n const message = inferErrorMessage(event);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message,\n });\n span.setAttribute('error', true);\n\n if (message) {\n span.setAttribute('exception.message', message);\n }\n}\n\nasync function exportSpans(\n traceId: string,\n ctx?: ObservabilityExecutionContext,\n): Promise<void> {\n const tracer = trace.getTracer('autotel-cloudflare/agents');\n if (tracer instanceof WorkerTracer) {\n try {\n const scheduler = ctx && 'scheduler' in ctx\n ? (ctx.scheduler as { wait?: (ms: number) => Promise<void> } | undefined)\n : undefined;\n if (scheduler?.wait) {\n await scheduler.wait(1);\n }\n await tracer.forceFlush(traceId);\n } catch (error) {\n console.error('[autotel-cloudflare/agents] Failed to export spans:', error);\n }\n }\n}\n\n/**\n * OpenTelemetry-based Observability implementation\n *\n * Implements the Agents SDK Observability interface and converts\n * events into OpenTelemetry spans.\n */\nexport class OtelObservability implements Observability {\n private readonly config: ResolvedEdgeConfig;\n private readonly options: AgentInstrumentationOptions;\n private initialized = false;\n\n constructor(config: OtelObservabilityConfig) {\n const initialiser = createInitialiser(config);\n this.config = initialiser({}, undefined);\n this.options = config.agents ?? {};\n }\n\n private initialize(): void {\n if (this.initialized) return;\n initProvider(this.config);\n this.initialized = true;\n }\n\n emit(event: ObservabilityEvent, ctx?: ObservabilityExecutionContext): void {\n this.initialize();\n\n if (!shouldTraceEvent(event, this.options)) {\n return;\n }\n\n const tracer = trace.getTracer('autotel-cloudflare/agents');\n const spanName = this.options.spanNameFormatter\n ? this.options.spanNameFormatter(event)\n : getDefaultSpanName(event);\n const defaultAttrs = getDefaultAttributes(event);\n const customAttrs = this.options.attributeExtractor\n ? this.options.attributeExtractor(event)\n : {};\n const span = tracer.startSpan(spanName, {\n kind: getSpanKind(event),\n attributes: { ...defaultAttrs, ...customAttrs },\n startTime: event.timestamp,\n });\n\n if (event.type === 'tool:approval') {\n recordHumanApproval({\n ctx: agentContextFromSpan(span),\n toolCallId: event.payload.toolCallId,\n approved: event.payload.approved,\n required: true,\n });\n }\n\n applyEventStatus(span, event);\n span.end(event.timestamp + 1);\n\n const traceId = span.spanContext().traceId;\n if (ctx && 'waitUntil' in ctx && typeof ctx.waitUntil === 'function') {\n ctx.waitUntil(exportSpans(traceId, ctx));\n return;\n }\n\n void exportSpans(traceId, ctx);\n }\n}\n\nexport function createOtelObservability(\n config: OtelObservabilityConfig,\n): OtelObservability {\n return new OtelObservability(config);\n}\n\nexport function createOtelObservabilityFromEnv(\n env: Record<string, unknown>,\n options?: AgentInstrumentationOptions,\n): OtelObservability {\n const endpoint = (env.OTEL_EXPORTER_OTLP_ENDPOINT as string) || undefined;\n const serviceName = (env.OTEL_SERVICE_NAME as string) || 'cloudflare-agent';\n\n let headers: Record<string, string> | undefined;\n const headersStr = env.OTEL_EXPORTER_OTLP_HEADERS as string;\n if (headersStr) {\n headers = {};\n for (const pair of headersStr.split(',')) {\n const [key, value] = pair.split('=');\n if (key && value) {\n headers[key.trim()] = value.trim();\n }\n }\n }\n\n return createOtelObservability({\n service: { name: serviceName },\n exporter: { url: endpoint || 'http://localhost:4318/v1/traces', headers },\n agents: options,\n });\n}\n\nexport type { MCPObservabilityEvent };\n","import type { AgentObservabilityEvent } from './agent';\nimport type { MCPObservabilityEvent } from './mcp';\n\nexport type ObservabilityEvent = AgentObservabilityEvent | MCPObservabilityEvent;\n\nexport interface Observability {\n emit(event: ObservabilityEvent, ctx?: DurableObjectState | ExecutionContext): void;\n}\n\ntype ChannelKey =\n | 'state'\n | 'rpc'\n | 'message'\n | 'chat'\n | 'transcript'\n | 'fiber'\n | 'agentTool'\n | 'schedule'\n | 'lifecycle'\n | 'workflow'\n | 'mcp'\n | 'email';\n\nexport type ChannelEventMap = {\n state: Extract<ObservabilityEvent, { type: `state:${string}` }>;\n rpc: Extract<ObservabilityEvent, { type: 'rpc' | `rpc:${string}` }>;\n message: Extract<\n ObservabilityEvent,\n { type: `message:${string}` | `tool:${string}` | `submission:${string}` }\n >;\n chat: Exclude<\n Extract<ObservabilityEvent, { type: `chat:${string}` }>,\n { type: `chat:transcript:${string}` }\n >;\n transcript: Extract<\n ObservabilityEvent,\n { type: `transcript:${string}` | `chat:transcript:${string}` }\n >;\n fiber: Extract<ObservabilityEvent, { type: `fiber:${string}` }>;\n agentTool: Extract<ObservabilityEvent, { type: `agent_tool:${string}` }>;\n schedule: Extract<\n ObservabilityEvent,\n { type: `schedule:${string}` | `queue:${string}` }\n >;\n lifecycle: Extract<\n ObservabilityEvent,\n { type: 'connect' | 'disconnect' | 'destroy' }\n >;\n workflow: Extract<ObservabilityEvent, { type: `workflow:${string}` }>;\n mcp: Extract<ObservabilityEvent, { type: `mcp:${string}` }>;\n email: Extract<ObservabilityEvent, { type: `email:${string}` }>;\n};\n\nexport interface ObservabilityChannel<TEvent extends ObservabilityEvent = ObservabilityEvent> {\n name: string;\n publish(event: TEvent): void;\n}\n\nconst listeners: {\n [K in ChannelKey]: Set<(event: ChannelEventMap[K]) => void>;\n} = {\n state: new Set(),\n rpc: new Set(),\n message: new Set(),\n chat: new Set(),\n transcript: new Set(),\n fiber: new Set(),\n agentTool: new Set(),\n schedule: new Set(),\n lifecycle: new Set(),\n workflow: new Set(),\n mcp: new Set(),\n email: new Set(),\n};\n\nfunction createChannel<K extends ChannelKey>(\n key: K,\n name: string,\n): ObservabilityChannel<ChannelEventMap[K]> {\n return {\n name,\n publish(event) {\n for (const callback of listeners[key]) {\n callback(event);\n }\n },\n };\n}\n\nexport const channels = {\n state: createChannel('state', 'agents:state'),\n rpc: createChannel('rpc', 'agents:rpc'),\n message: createChannel('message', 'agents:message'),\n chat: createChannel('chat', 'agents:chat'),\n transcript: createChannel('transcript', 'agents:transcript'),\n fiber: createChannel('fiber', 'agents:fiber'),\n agentTool: createChannel('agentTool', 'agents:agent_tool'),\n schedule: createChannel('schedule', 'agents:schedule'),\n lifecycle: createChannel('lifecycle', 'agents:lifecycle'),\n workflow: createChannel('workflow', 'agents:workflow'),\n mcp: createChannel('mcp', 'agents:mcp'),\n email: createChannel('email', 'agents:email'),\n} as const;\n\nfunction getChannel(type: string): ObservabilityChannel {\n if (type.startsWith('mcp:')) return channels.mcp;\n if (type.startsWith('workflow:')) return channels.workflow;\n if (type.startsWith('fiber:')) return channels.fiber;\n if (type.startsWith('transcript:') || type.startsWith('chat:transcript:')) {\n return channels.transcript;\n }\n if (type.startsWith('chat:')) return channels.chat;\n if (type.startsWith('agent_tool:')) return channels.agentTool;\n if (type.startsWith('schedule:') || type.startsWith('queue:')) {\n return channels.schedule;\n }\n if (\n type.startsWith('message:') ||\n type.startsWith('tool:') ||\n type.startsWith('submission:')\n ) {\n return channels.message;\n }\n if (type === 'rpc' || type.startsWith('rpc:')) return channels.rpc;\n if (type.startsWith('state:')) return channels.state;\n if (type.startsWith('email:')) return channels.email;\n return channels.lifecycle;\n}\n\nexport const genericObservability: Observability = {\n emit(event) {\n getChannel(event.type).publish(event);\n },\n};\n\nexport function subscribe<K extends keyof ChannelEventMap>(\n channelKey: K,\n callback: (event: ChannelEventMap[K]) => void,\n): () => void {\n const bucket = listeners[channelKey];\n bucket.add(callback);\n return () => {\n bucket.delete(callback);\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autotel-cloudflare",
3
- "version": "3.1.0",
3
+ "version": "4.0.1",
4
4
  "description": "The #1 OpenTelemetry package for Cloudflare Workers - complete bindings coverage, native CF OTel integration, advanced sampling",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -54,7 +54,6 @@
54
54
  },
55
55
  "files": [
56
56
  "dist",
57
- "src",
58
57
  "README.md",
59
58
  "skills"
60
59
  ],
@@ -81,11 +80,15 @@
81
80
  },
82
81
  "peerDependencies": {
83
82
  "@cloudflare/workers-types": "^4.20260607.1",
84
- "autotel-edge": "3.17.0"
83
+ "autotel-edge": "3.17.1",
84
+ "autotel-genai": "0.3.1"
85
85
  },
86
86
  "peerDependenciesMeta": {
87
87
  "autotel-edge": {
88
88
  "optional": false
89
+ },
90
+ "autotel-genai": {
91
+ "optional": true
89
92
  }
90
93
  },
91
94
  "devDependencies": {
@@ -97,7 +100,8 @@
97
100
  "typescript": "^6.0.3",
98
101
  "vitest": "^4.1.8",
99
102
  "vitest-mock-extended": "^4.0.0",
100
- "autotel-edge": "3.17.0"
103
+ "autotel-edge": "3.17.1",
104
+ "autotel-genai": "0.3.1"
101
105
  },
102
106
  "repository": {
103
107
  "type": "git",
@@ -1,225 +0,0 @@
1
- /**
2
- * Actor alarms instrumentation
3
- *
4
- * Traces operations on actor.alarms
5
- */
6
-
7
- import { trace, SpanStatusCode, SpanKind } from '@opentelemetry/api';
8
- import type { WorkerTracer } from 'autotel-edge';
9
- import { wrap } from '../bindings/common';
10
- import type { ActorLike } from './types';
11
-
12
- /**
13
- * Get the tracer instance
14
- */
15
- function getTracer(): WorkerTracer {
16
- return trace.getTracer('autotel-cloudflare-actors') as WorkerTracer;
17
- }
18
-
19
- /**
20
- * Instrument Actor alarms for tracing
21
- *
22
- * Captures:
23
- * - set: Schedule a single alarm
24
- * - setMultiple: Schedule multiple alarms
25
- * - cancel: Cancel an alarm
26
- * - cancelAll: Cancel all alarms
27
- */
28
- export function instrumentActorAlarms(
29
- alarms: unknown,
30
- actorInstance: ActorLike,
31
- actorClass: object,
32
- ): unknown {
33
- if (!alarms || typeof alarms !== 'object') {
34
- return alarms;
35
- }
36
-
37
- const actorClassName = (actorClass as { name?: string }).name || 'Actor';
38
- const actorName = actorInstance.name || actorClassName;
39
-
40
- const alarmsHandler: ProxyHandler<object> = {
41
- get(target, prop) {
42
- const value = Reflect.get(target, prop);
43
-
44
- // Instrument set method
45
- if (prop === 'set' && typeof value === 'function') {
46
- return async function instrumentedSet(
47
- this: unknown,
48
- ...args: unknown[]
49
- ): Promise<unknown> {
50
- const tracer = getTracer();
51
- const spanName = `Actor ${actorName}: alarms.set`;
52
-
53
- // Try to extract timing info from args
54
- const alarmAttributes: Record<string, string | number | boolean> = {
55
- 'actor.name': actorName,
56
- 'actor.class': actorClassName,
57
- 'alarm.operation': 'set',
58
- };
59
-
60
- // First arg might be timestamp, delay, or options
61
- if (args.length > 0) {
62
- const firstArg = args[0];
63
- if (typeof firstArg === 'number') {
64
- alarmAttributes['alarm.delay_ms'] = firstArg;
65
- } else if (firstArg instanceof Date) {
66
- alarmAttributes['alarm.scheduled_time'] = firstArg.toISOString();
67
- } else if (typeof firstArg === 'string') {
68
- // Might be a cron expression
69
- alarmAttributes['alarm.cron'] = firstArg;
70
- }
71
- }
72
-
73
- return tracer.startActiveSpan(
74
- spanName,
75
- {
76
- kind: SpanKind.CLIENT,
77
- attributes: alarmAttributes,
78
- },
79
- async (span) => {
80
- try {
81
- const result = await value.apply(target, args);
82
- span.setStatus({ code: SpanStatusCode.OK });
83
- return result;
84
- } catch (error) {
85
- span.recordException(error as Error);
86
- span.setStatus({
87
- code: SpanStatusCode.ERROR,
88
- message: error instanceof Error ? error.message : String(error),
89
- });
90
- throw error;
91
- } finally {
92
- span.end();
93
- }
94
- },
95
- );
96
- };
97
- }
98
-
99
- // Instrument setMultiple method
100
- if (prop === 'setMultiple' && typeof value === 'function') {
101
- return async function instrumentedSetMultiple(
102
- this: unknown,
103
- alarmDefs: unknown[],
104
- ): Promise<unknown> {
105
- const tracer = getTracer();
106
- const spanName = `Actor ${actorName}: alarms.setMultiple`;
107
-
108
- return tracer.startActiveSpan(
109
- spanName,
110
- {
111
- kind: SpanKind.CLIENT,
112
- attributes: {
113
- 'actor.name': actorName,
114
- 'actor.class': actorClassName,
115
- 'alarm.operation': 'setMultiple',
116
- 'alarm.count': Array.isArray(alarmDefs) ? alarmDefs.length : 0,
117
- },
118
- },
119
- async (span) => {
120
- try {
121
- const result = await value.call(target, alarmDefs);
122
- span.setStatus({ code: SpanStatusCode.OK });
123
- return result;
124
- } catch (error) {
125
- span.recordException(error as Error);
126
- span.setStatus({
127
- code: SpanStatusCode.ERROR,
128
- message: error instanceof Error ? error.message : String(error),
129
- });
130
- throw error;
131
- } finally {
132
- span.end();
133
- }
134
- },
135
- );
136
- };
137
- }
138
-
139
- // Instrument cancel method
140
- if (prop === 'cancel' && typeof value === 'function') {
141
- return async function instrumentedCancel(
142
- this: unknown,
143
- alarmId: string,
144
- ): Promise<unknown> {
145
- const tracer = getTracer();
146
- const spanName = `Actor ${actorName}: alarms.cancel`;
147
-
148
- return tracer.startActiveSpan(
149
- spanName,
150
- {
151
- kind: SpanKind.CLIENT,
152
- attributes: {
153
- 'actor.name': actorName,
154
- 'actor.class': actorClassName,
155
- 'alarm.operation': 'cancel',
156
- 'alarm.id': alarmId,
157
- },
158
- },
159
- async (span) => {
160
- try {
161
- const result = await value.call(target, alarmId);
162
- span.setStatus({ code: SpanStatusCode.OK });
163
- return result;
164
- } catch (error) {
165
- span.recordException(error as Error);
166
- span.setStatus({
167
- code: SpanStatusCode.ERROR,
168
- message: error instanceof Error ? error.message : String(error),
169
- });
170
- throw error;
171
- } finally {
172
- span.end();
173
- }
174
- },
175
- );
176
- };
177
- }
178
-
179
- // Instrument cancelAll method
180
- if (prop === 'cancelAll' && typeof value === 'function') {
181
- return async function instrumentedCancelAll(this: unknown): Promise<unknown> {
182
- const tracer = getTracer();
183
- const spanName = `Actor ${actorName}: alarms.cancelAll`;
184
-
185
- return tracer.startActiveSpan(
186
- spanName,
187
- {
188
- kind: SpanKind.CLIENT,
189
- attributes: {
190
- 'actor.name': actorName,
191
- 'actor.class': actorClassName,
192
- 'alarm.operation': 'cancelAll',
193
- },
194
- },
195
- async (span) => {
196
- try {
197
- const result = await value.call(target);
198
- span.setStatus({ code: SpanStatusCode.OK });
199
- return result;
200
- } catch (error) {
201
- span.recordException(error as Error);
202
- span.setStatus({
203
- code: SpanStatusCode.ERROR,
204
- message: error instanceof Error ? error.message : String(error),
205
- });
206
- throw error;
207
- } finally {
208
- span.end();
209
- }
210
- },
211
- );
212
- };
213
- }
214
-
215
- // Bind other methods to the target
216
- if (typeof value === 'function') {
217
- return value.bind(target);
218
- }
219
-
220
- return value;
221
- },
222
- };
223
-
224
- return wrap(alarms, alarmsHandler);
225
- }
@@ -1,36 +0,0 @@
1
- /**
2
- * @cloudflare/actors integration for autotel-cloudflare
3
- *
4
- * Provides deep instrumentation for the Cloudflare Actors framework,
5
- * tracing all lifecycle methods and providing Actor-specific semantic attributes.
6
- *
7
- * @example
8
- * ```typescript
9
- * import { Actor } from '@cloudflare/actors'
10
- * import { instrumentActor, tracedHandler } from 'autotel-cloudflare/actors'
11
- *
12
- * class MyActor extends Actor<Env> {
13
- * protected onInit() {
14
- * // Automatically traced with 'actor.lifecycle': 'init'
15
- * }
16
- *
17
- * protected onRequest(request: Request) {
18
- * // Automatically traced with full HTTP semantics + actor context
19
- * return new Response('Hello!')
20
- * }
21
- * }
22
- *
23
- * export { MyActor }
24
- * export default tracedHandler(MyActor, (env) => ({
25
- * service: { name: 'my-actor-service' },
26
- * exporter: { url: env.OTLP_ENDPOINT }
27
- * }))
28
- * ```
29
- */
30
-
31
- export { instrumentActor } from './instrument-actor';
32
- export { tracedHandler, wrapHandler } from './traced-handler';
33
- export { instrumentActorStorage } from './storage';
34
- export { instrumentActorAlarms } from './alarms';
35
- export { instrumentActorSockets } from './sockets';
36
- export type { ActorConfig, ActorInstrumentationOptions } from './types';