cendor-sdk 1.16.0
SDK telemetry wave — structural signals for RAG, memory, orchestration, checkpoints, tools, and MCP
become first-class cendor.sdk spans, so an OTel backend (or Cendor Monitor) renders each as its own
domain. Zero core changes — the new signals ride cendor-core's bus and the existing
live_spans() scope; content rules are unchanged (labels/ids/counts only, never message bodies).
Added
- RAG spans (
rag.assemble/rag.compress): an always-on retriever'scontext_budgetassembly
(contextkitAssemblyReport) and squeeze compression (CompressionEvent) now surface ascendor.sdk
child spans inside alive_spans()run — budget/used, blocks kept vs dropped, token deltas, technique. - Memory spans (
memory.load/memory.save): a run that reads/writes aSessionemits a span
carrying the session id, turn count, and byte size. - Orchestration handoff spans (
orchestration.handoff): eachtransfer_to_<peer>handoff emits an
edge (from-agent → to-agent, segment, transfer tool) so a monitor reconstructs the multi-agent graph
from rows rather than parsing trace-id families. - Checkpoint spans (
checkpoint.save/checkpoint.resume): aCheckpointerwrite and a resume
decision (finished or unfinished) emit spans carrying the run id, done flag, and turn count. - Tool source + outcome: every
execute_toolspan now carriescendor.tool.source
(local|mcp, +cendor.tool.mcp.server/transport) andcendor.tool.outcome
(ok|error|blocked). Atool_callguardrail block — which runs no tool and so emits no
ToolCall— now emits a dedicatedexecute_tool {name}span withoutcome="blocked"+
cendor.tool.blocked_by(the guardrail name; never the reason text). - MCP server attribution:
load_mcp_tools(session, server=…, transport=…)tags each tool's spans
with the MCP server + transport and emitsmcp.connect/mcp.list_toolslifecycle spans, so a
monitor attributes tool calls per server. The labels are optional and non-secret.
Honest limits
- The new domain telemetry rides the live path (
live_spans); the post-hocspan_treecontinues
to render the LLM/tool tree fromResult(and now also stamps tool source/outcome). - The tool-source registry is process-global; a tool-name collision across two MCP servers is
last-writer-wins.