.agents/skills/agent-signal/references/observability.md
Use packages/observability-otel/src/modules/agent-signal/index.ts for the shared tracer and metrics.
Available instruments:
tracersourceCountersignalCounteractionCounteractionResultCounterchainCountersignalActionTransitionCounterchainDurationHistogramactionDurationHistogramsourceEventCountersourceEventDurationHistogramworkflowRunCounterworkflowRunDurationHistogramhandlerCounterhandlerDurationHistogramterminalResultCounterUse this module when you need shared telemetry ownership instead of creating feature-local meters or tracers.
After runtime execution, the service projects one compact observability model from the full chain.
Read:
apps/server/src/services/agentSignal/observability/projector.tsapps/server/src/services/agentSignal/observability/traceEvents.tsapps/server/src/services/agentSignal/observability/store.tsProjection outputs:
This projection is built from:
Receipt projection is separate from observability projection. The orchestrator
still calls projectAgentSignalReceipts(...) after an immediate runtime chain,
but memory and skill self-iteration receipts are projected from
agent.execution.completed via buildSelfIterationReceipts(...) and persisted
through the receipt store.
Use this order:
The helper toAgentSignalTraceEvents(...) flattens a chain into compact event records suitable for tracing snapshots.
Workflow-triggered runs do not naturally pass through the normal foreground runtime snapshot path, so runAgentSignalWorkflow adds a development-only bridge into .agent-tracing/.
Read:
apps/server/src/workflows/agentSignal/run.tsUse that path when:
enqueueAgentSignalSourceEvent(...)Check:
Read:
apps/server/src/services/agentSignal/index.tsapps/server/src/services/agentSignal/sources/index.tsCheck:
status: 'dispatch'Check:
Reference:
apps/server/src/services/agentSignal/policies/actionIdempotency.tsapps/server/src/services/agentSignal/policies/analyzeIntent/actions/userMemory.tsCheck:
Check:
execAgent and stamped an Agent Signal operation markeragent.execution.completed carried a selfIteration payload from the run's finalStatecreateCompletionPolicy(...) was wired with onSelfIterationCompletedbuildSelfIterationReceipts(...) recognized the durable mutation api nameanchorMessageId or triggerMessageId when UI placement matters