traceforge-toolkit 0.1.0__py3-none-any.whl

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 (205) hide show
  1. traceforge/__init__.py +72 -0
  2. traceforge/__main__.py +5 -0
  3. traceforge/_generated.py +254 -0
  4. traceforge/adapters/__init__.py +12 -0
  5. traceforge/adapters/base.py +82 -0
  6. traceforge/adapters/genai_otel.py +164 -0
  7. traceforge/adapters/mapped_json.py +297 -0
  8. traceforge/adapters/otel.py +220 -0
  9. traceforge/boundary/__init__.py +46 -0
  10. traceforge/boundary/data/boundary-model.joblib +0 -0
  11. traceforge/boundary/decode.py +87 -0
  12. traceforge/boundary/features.py +137 -0
  13. traceforge/boundary/inference.py +267 -0
  14. traceforge/boundary/inferencer.py +146 -0
  15. traceforge/classify/__init__.py +95 -0
  16. traceforge/classify/cmd.py +109 -0
  17. traceforge/classify/coding.py +213 -0
  18. traceforge/classify/config.py +554 -0
  19. traceforge/classify/core.py +266 -0
  20. traceforge/classify/data/binary_info.yaml +358 -0
  21. traceforge/classify/data/canonical_tools.yaml +251 -0
  22. traceforge/classify/data/effect_overrides.yaml +480 -0
  23. traceforge/classify/data/mcp_profiles.yaml +711 -0
  24. traceforge/classify/data/recommendation_rules.yaml +111 -0
  25. traceforge/classify/data/risk.yaml +534 -0
  26. traceforge/classify/data/shell_defaults.yaml +95 -0
  27. traceforge/classify/data/shell_rules.yaml +1192 -0
  28. traceforge/classify/data/tool_classifications.yaml +215 -0
  29. traceforge/classify/data/verb_inference.yaml +218 -0
  30. traceforge/classify/mcp.py +181 -0
  31. traceforge/classify/phases.py +75 -0
  32. traceforge/classify/powershell.py +93 -0
  33. traceforge/classify/registry.py +138 -0
  34. traceforge/classify/risk.py +553 -0
  35. traceforge/classify/rules.py +215 -0
  36. traceforge/classify/schema.yaml +282 -0
  37. traceforge/classify/shell.py +503 -0
  38. traceforge/classify/tools.py +91 -0
  39. traceforge/classify/workflow.py +32 -0
  40. traceforge/cli/__init__.py +42 -0
  41. traceforge/cli/config_cmd.py +130 -0
  42. traceforge/cli/detect.py +46 -0
  43. traceforge/cli/download_cmd.py +74 -0
  44. traceforge/cli/factory.py +60 -0
  45. traceforge/cli/gate_cmd.py +30 -0
  46. traceforge/cli/init_cmd.py +86 -0
  47. traceforge/cli/replay.py +130 -0
  48. traceforge/cli/runner.py +181 -0
  49. traceforge/cli/score.py +217 -0
  50. traceforge/cli/status.py +65 -0
  51. traceforge/cli/watch.py +297 -0
  52. traceforge/config/__init__.py +80 -0
  53. traceforge/config/defaults.py +149 -0
  54. traceforge/config/loader.py +239 -0
  55. traceforge/config/mappings.py +104 -0
  56. traceforge/config/models.py +579 -0
  57. traceforge/enricher.py +576 -0
  58. traceforge/formatting/__init__.py +12 -0
  59. traceforge/formatting/budget.py +92 -0
  60. traceforge/formatting/density.py +154 -0
  61. traceforge/gate/__init__.py +17 -0
  62. traceforge/gate/client.py +145 -0
  63. traceforge/gate/external.py +305 -0
  64. traceforge/gate/registry.py +108 -0
  65. traceforge/gate/server.py +174 -0
  66. traceforge/gates/__init__.py +8 -0
  67. traceforge/gates/pii.py +352 -0
  68. traceforge/gates/pii_patterns.yaml +228 -0
  69. traceforge/governance/__init__.py +121 -0
  70. traceforge/governance/assessor.py +441 -0
  71. traceforge/governance/budget.py +59 -0
  72. traceforge/governance/canonical.py +56 -0
  73. traceforge/governance/codec.py +414 -0
  74. traceforge/governance/context.py +249 -0
  75. traceforge/governance/drift.py +196 -0
  76. traceforge/governance/emitter.py +234 -0
  77. traceforge/governance/envelope.py +138 -0
  78. traceforge/governance/ifc.py +364 -0
  79. traceforge/governance/integrity.py +162 -0
  80. traceforge/governance/labeler.py +250 -0
  81. traceforge/governance/mcp_drift.py +328 -0
  82. traceforge/governance/monitor.py +539 -0
  83. traceforge/governance/observer.py +276 -0
  84. traceforge/governance/persistence.py +401 -0
  85. traceforge/governance/phase1.py +77 -0
  86. traceforge/governance/pii.py +276 -0
  87. traceforge/governance/pipeline.py +840 -0
  88. traceforge/governance/registry.py +110 -0
  89. traceforge/governance/results.py +183 -0
  90. traceforge/governance/risk_wrapper.py +113 -0
  91. traceforge/governance/rules.py +368 -0
  92. traceforge/governance/scorer.py +262 -0
  93. traceforge/governance/shield.py +318 -0
  94. traceforge/governance/state.py +466 -0
  95. traceforge/governance/types.py +176 -0
  96. traceforge/mappings/__init__.py +1 -0
  97. traceforge/mappings/aider.yaml +216 -0
  98. traceforge/mappings/aider_markdown.yaml +113 -0
  99. traceforge/mappings/amazonq.yaml +56 -0
  100. traceforge/mappings/antigravity.yaml +88 -0
  101. traceforge/mappings/claude.yaml +93 -0
  102. traceforge/mappings/cline.yaml +286 -0
  103. traceforge/mappings/codex.yaml +158 -0
  104. traceforge/mappings/continue_dev.yaml +57 -0
  105. traceforge/mappings/copilot.yaml +266 -0
  106. traceforge/mappings/copilot_markdown.yaml +72 -0
  107. traceforge/mappings/copilot_vscode.yaml +181 -0
  108. traceforge/mappings/crewai.yaml +592 -0
  109. traceforge/mappings/goose.yaml +128 -0
  110. traceforge/mappings/langgraph.yaml +165 -0
  111. traceforge/mappings/maf.yaml +90 -0
  112. traceforge/mappings/maf_transcript.yaml +99 -0
  113. traceforge/mappings/openai_agents.yaml +144 -0
  114. traceforge/mappings/opencode.yaml +473 -0
  115. traceforge/mappings/openhands.yaml +320 -0
  116. traceforge/mappings/pydantic_ai.yaml +183 -0
  117. traceforge/mappings/smolagents.yaml +89 -0
  118. traceforge/mappings/sweagent.yaml +82 -0
  119. traceforge/migrations/__init__.py +1 -0
  120. traceforge/migrations/env.py +60 -0
  121. traceforge/migrations/models.py +145 -0
  122. traceforge/migrations/runner.py +44 -0
  123. traceforge/migrations/script.py.mako +25 -0
  124. traceforge/migrations/versions/0001_initial.py +176 -0
  125. traceforge/migrations/versions/__init__.py +4 -0
  126. traceforge/models.py +29 -0
  127. traceforge/parsers/__init__.py +21 -0
  128. traceforge/parsers/aider.py +416 -0
  129. traceforge/parsers/base.py +226 -0
  130. traceforge/parsers/copilot.py +314 -0
  131. traceforge/phase/__init__.py +50 -0
  132. traceforge/phase/data/phase-model.joblib +0 -0
  133. traceforge/phase/data/potion-base-8M/README.md +99 -0
  134. traceforge/phase/data/potion-base-8M/config.json +13 -0
  135. traceforge/phase/data/potion-base-8M/model.safetensors +0 -0
  136. traceforge/phase/data/potion-base-8M/modules.json +14 -0
  137. traceforge/phase/data/potion-base-8M/tokenizer.json +1 -0
  138. traceforge/phase/event_rows.py +107 -0
  139. traceforge/phase/features.py +468 -0
  140. traceforge/phase/inference.py +279 -0
  141. traceforge/phase/inferencer.py +171 -0
  142. traceforge/phase/segmentation.py +258 -0
  143. traceforge/pipeline.py +891 -0
  144. traceforge/preprocessors/__init__.py +34 -0
  145. traceforge/preprocessors/amazonq.py +224 -0
  146. traceforge/preprocessors/antigravity.py +116 -0
  147. traceforge/preprocessors/claude.py +95 -0
  148. traceforge/preprocessors/cline.py +36 -0
  149. traceforge/preprocessors/codex.py +311 -0
  150. traceforge/preprocessors/continue_dev.py +119 -0
  151. traceforge/preprocessors/copilot_vscode.py +171 -0
  152. traceforge/preprocessors/goose.py +156 -0
  153. traceforge/preprocessors/maf_transcript.py +84 -0
  154. traceforge/preprocessors/openai_agents.py +86 -0
  155. traceforge/preprocessors/opencode.py +85 -0
  156. traceforge/preprocessors/openhands.py +36 -0
  157. traceforge/preprocessors/pydantic_ai.py +62 -0
  158. traceforge/preprocessors/registry.py +24 -0
  159. traceforge/preprocessors/smolagents.py +90 -0
  160. traceforge/py.typed +0 -0
  161. traceforge/sdk/__init__.py +59 -0
  162. traceforge/sdk/gate_policy.py +63 -0
  163. traceforge/sdk/gate_types.py +140 -0
  164. traceforge/sdk/pipeline.py +265 -0
  165. traceforge/sdk/verdict.py +81 -0
  166. traceforge/sinks/__init__.py +23 -0
  167. traceforge/sinks/base.py +95 -0
  168. traceforge/sinks/callback.py +132 -0
  169. traceforge/sinks/console.py +112 -0
  170. traceforge/sinks/factory.py +94 -0
  171. traceforge/sinks/jsonl.py +125 -0
  172. traceforge/sinks/otel_exporter.py +212 -0
  173. traceforge/sinks/parquet.py +260 -0
  174. traceforge/sinks/s3.py +206 -0
  175. traceforge/sinks/sqlite_output.py +234 -0
  176. traceforge/sinks/webhook.py +136 -0
  177. traceforge/sources/__init__.py +18 -0
  178. traceforge/sources/auto_detect.py +173 -0
  179. traceforge/sources/base.py +45 -0
  180. traceforge/sources/file_poll.py +136 -0
  181. traceforge/sources/file_watch.py +221 -0
  182. traceforge/sources/http_poll.py +141 -0
  183. traceforge/sources/replay.py +63 -0
  184. traceforge/sources/sqlite.py +187 -0
  185. traceforge/sources/sse.py +198 -0
  186. traceforge/telemetry/__init__.py +192 -0
  187. traceforge/title/__init__.py +23 -0
  188. traceforge/title/_resolve.py +79 -0
  189. traceforge/title/context.py +295 -0
  190. traceforge/title/data/boilerplate_files.json +14 -0
  191. traceforge/title/heuristics.py +429 -0
  192. traceforge/title/hygiene.py +90 -0
  193. traceforge/title/inference.py +314 -0
  194. traceforge/title/inferencer.py +477 -0
  195. traceforge/title/naming.py +398 -0
  196. traceforge/trace.py +291 -0
  197. traceforge/tracking/__init__.py +30 -0
  198. traceforge/tracking/models.py +115 -0
  199. traceforge/tracking/phase_tracker.py +288 -0
  200. traceforge/types.py +315 -0
  201. traceforge_toolkit-0.1.0.dist-info/METADATA +188 -0
  202. traceforge_toolkit-0.1.0.dist-info/RECORD +205 -0
  203. traceforge_toolkit-0.1.0.dist-info/WHEEL +4 -0
  204. traceforge_toolkit-0.1.0.dist-info/entry_points.txt +2 -0
  205. traceforge_toolkit-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,165 @@
1
+ # LangGraph event mapping for MappedJsonAdapter
2
+ # Targets: langgraph >= 1.0 / langchain-core >= 1.4.0 (astream_events version="v2")
3
+ # Source: langchain-ai/langchain libs/core/langchain_core/tracers/event_stream.py
4
+ #
5
+ # astream_events(version="v2") emits flat dicts:
6
+ # {event, run_id, name, tags, metadata, data, parent_ids}
7
+ #
8
+ # Events confirmed emitted by _AstreamEventsCallbackHandler:
9
+ # on_chain_start/end/stream, on_chat_model_start/stream/end,
10
+ # on_llm_start/end/stream, on_tool_start/end/error,
11
+ # on_retriever_start/end, on_custom_event,
12
+ # on_prompt_start/end/stream, on_parser_start/end/stream
13
+ #
14
+ # NOT emitted (callback methods exist but handler does NOT override them):
15
+ # on_chain_error, on_llm_error, on_retriever_error
16
+ # (errors silently drop from the stream)
17
+ #
18
+ # "on_llm_new_token" is an INTERNAL callback name. The handler translates it to
19
+ # "on_chat_model_stream" (run_type=chat_model) or "on_llm_stream" (run_type=llm).
20
+ #
21
+ # Token usage: on_chat_model_end → data.output.usage_metadata =
22
+ # {input_tokens, output_tokens, total_tokens, input_token_details?, output_token_details?}
23
+ # Model name: metadata.ls_model_name (from LangSmithParams, merged into inheritable_metadata)
24
+
25
+ framework: langgraph
26
+ framework_version: ">=1.0"
27
+ ingestion_mode: file_watch
28
+ type_field: event
29
+ timestamp_field: null
30
+
31
+ events:
32
+ # ── Chain/graph lifecycle ──
33
+ on_chain_start:
34
+ kind: workflow.started
35
+ payload:
36
+ run_id: run_id
37
+ name: name
38
+ inputs: data.input
39
+ on_chain_end:
40
+ kind: workflow.completed
41
+ payload:
42
+ run_id: run_id
43
+ name: name
44
+ output: data.output
45
+
46
+ # ── LLM calls (non-chat models, e.g. completion LLMs) ──
47
+ on_llm_start:
48
+ kind: llm.call.started
49
+ payload:
50
+ model: metadata.ls_model_name
51
+ run_id: run_id
52
+ on_llm_end:
53
+ kind: llm.call.completed
54
+ payload:
55
+ model: metadata.ls_model_name
56
+ run_id: run_id
57
+ output: data.output
58
+ on_llm_stream:
59
+ kind: llm.output.chunk
60
+ payload:
61
+ content: data.chunk.text
62
+
63
+ # ── Chat model calls (primary path for modern LangGraph) ──
64
+ on_chat_model_start:
65
+ kind: llm.call.started
66
+ payload:
67
+ model: metadata.ls_model_name
68
+ run_id: run_id
69
+ on_chat_model_end:
70
+ kind: llm.call.completed
71
+ payload:
72
+ model: metadata.ls_model_name
73
+ run_id: run_id
74
+ output: data.output.content
75
+ input_tokens: data.output.usage_metadata.input_tokens
76
+ output_tokens: data.output.usage_metadata.output_tokens
77
+ total_tokens: data.output.usage_metadata.total_tokens
78
+ on_chat_model_stream:
79
+ kind: message.assistant.chunk
80
+ payload:
81
+ content: data.chunk.content
82
+
83
+ # ── Tool calls ──
84
+ on_tool_start:
85
+ kind: tool.call.started
86
+ payload:
87
+ tool_name: name
88
+ tool_call_id: run_id
89
+ arguments: data.input
90
+ on_tool_end:
91
+ kind: tool.call.completed
92
+ payload:
93
+ tool_call_id: run_id
94
+ tool_name: name
95
+ result: data.output
96
+ on_tool_error:
97
+ kind: tool.call.failed
98
+ payload:
99
+ tool_call_id: data.tool_call_id
100
+ run_id: run_id
101
+ tool_name: name
102
+ error: data.error
103
+ input: data.input
104
+
105
+ # ── Retriever ──
106
+ on_retriever_start:
107
+ kind: knowledge.query.started
108
+ payload:
109
+ query: data.input.query
110
+ on_retriever_end:
111
+ kind: knowledge.query.completed
112
+ payload:
113
+ results: data.output
114
+
115
+ # ── Node transitions (intermediate stream chunks) ──
116
+ on_chain_stream:
117
+ kind: workflow.stream
118
+ payload:
119
+ node: name
120
+ data: data.chunk
121
+
122
+ # ── Prompt template events (same shape as chain, run_type="prompt") ──
123
+ on_prompt_start:
124
+ kind: workflow.started
125
+ payload:
126
+ run_id: run_id
127
+ name: name
128
+ inputs: data.input
129
+ on_prompt_end:
130
+ kind: workflow.completed
131
+ payload:
132
+ run_id: run_id
133
+ name: name
134
+ output: data.output
135
+ on_prompt_stream:
136
+ kind: workflow.stream
137
+ payload:
138
+ node: name
139
+ data: data.chunk
140
+
141
+ # ── Parser events (same shape as chain, run_type="parser") ──
142
+ on_parser_start:
143
+ kind: workflow.started
144
+ payload:
145
+ run_id: run_id
146
+ name: name
147
+ inputs: data.input
148
+ on_parser_end:
149
+ kind: workflow.completed
150
+ payload:
151
+ run_id: run_id
152
+ name: name
153
+ output: data.output
154
+ on_parser_stream:
155
+ kind: workflow.stream
156
+ payload:
157
+ node: name
158
+ data: data.chunk
159
+
160
+ # ── Custom events (user-defined via adispatch_custom_event) ──
161
+ on_custom_event:
162
+ kind: custom.event
163
+ payload:
164
+ name: name
165
+ data: data
@@ -0,0 +1,90 @@
1
+ # Microsoft 365 Agents SDK (MAF) span mapping for OtelSpanAdapter
2
+ # Targets: microsoft-agents-hosting-core >= 1.0.0
3
+ # Source: OpenTelemetry spans emitted by the MAF ActivityHandler pipeline.
4
+ # Ingestion: OTel span dicts (from InMemorySpanExporter or OTLP collector)
5
+ #
6
+ # Unlike JSON-line mappings, this maps OTel span names to canonical kinds
7
+ # and specifies which span attributes to extract into the event payload.
8
+
9
+ framework: maf
10
+ framework_version: ">=1.0.0"
11
+ ingestion_mode: stream
12
+
13
+ # Map span names to canonical event kinds.
14
+ # Key = OTel span name, value = {kind, attributes?}
15
+ # attributes maps payload_field_name → OTel attribute key.
16
+ spans:
17
+ # ── Adapter layer (inbound/outbound message processing) ──
18
+ agents.adapter.process:
19
+ kind: message.user
20
+ attributes:
21
+ activity_type: activity.type
22
+ channel_id: activity.channel_id
23
+ activity_id: activity.id
24
+ conversation_id: activity.conversation.id
25
+ delivery_mode: activity.delivery_mode
26
+
27
+ agents.adapter.send_activities:
28
+ kind: message.assistant
29
+ attributes:
30
+ count: activities.count
31
+
32
+ agents.adapter.update_activity:
33
+ kind: message.assistant
34
+
35
+ agents.adapter.delete_activity:
36
+ kind: message.assistant
37
+
38
+ agents.adapter.continue_conversation:
39
+ kind: session.resumed
40
+
41
+ agents.adapter.create_connector_client:
42
+ kind: session.info
43
+
44
+ agents.adapter.create_user_token_client:
45
+ kind: session.info
46
+
47
+ agents.adapter.write_response:
48
+ kind: message.assistant
49
+
50
+ # ── App layer (request routing and turn lifecycle) ──
51
+ agents.app.run:
52
+ kind: turn.started
53
+ attributes:
54
+ activity_type: activity.type
55
+ is_agentic: activity.is_agentic_request
56
+
57
+ agents.app.route_handler:
58
+ kind: hook.started
59
+ attributes:
60
+ route_matched: route.matched
61
+ is_invoke: route.is_invoke
62
+
63
+ agents.app.before_turn:
64
+ kind: hook.started
65
+
66
+ agents.app.after_turn:
67
+ kind: hook.completed
68
+
69
+ agents.app.download_files:
70
+ kind: file.read
71
+
72
+ # ── Storage layer (state persistence) ──
73
+ agents.storage.read:
74
+ kind: memory.query.started
75
+ attributes:
76
+ key_count: storage.keys.count
77
+
78
+ agents.storage.write:
79
+ kind: memory.save.started
80
+ attributes:
81
+ key_count: storage.keys.count
82
+
83
+ agents.storage.delete:
84
+ kind: memory.save.completed
85
+ attributes:
86
+ key_count: storage.keys.count
87
+
88
+ # ── Turn context ──
89
+ agents.turn.send_activities:
90
+ kind: message.assistant
@@ -0,0 +1,99 @@
1
+ # Microsoft 365 Agents SDK (MAF) transcript mapping for MappedJsonAdapter
2
+ # Targets: microsoft-agents-hosting-core >= 1.0.0
3
+ # Source: JSONL from FileTranscriptStore / ConsoleTranscriptLogger
4
+ # Ingestion: file_watch on <root>/<channelId>/<conversationId>.transcript
5
+ #
6
+ # Each JSONL line is a full Activity object serialized via model_dump_json().
7
+ # The maf_transcript preprocessor normalizes into flat dicts with a compound
8
+ # _event_type field: "{activity_type}.{from_role}" (e.g. "message.bot").
9
+ #
10
+ # Key Activity fields:
11
+ # type: "message" | "typing" | "event" | "invoke" | "trace" | ...
12
+ # text: str (message body)
13
+ # from: {id, name, role} where role is "bot" or "user"
14
+ # timestamp: ISO 8601
15
+ # conversation: {id}
16
+ # attachments: [{contentType, content, ...}]
17
+ # value: Any (invoke payloads, adaptive card data)
18
+ #
19
+ # This mapping complements the OTel span adapter (maf.yaml) — use both together
20
+ # for full coverage: OTel gives structure/timing, transcript gives content.
21
+
22
+ framework: maf_transcript
23
+ framework_version: ">=1.0.0"
24
+ ingestion_mode: file_watch
25
+ preprocessor: maf_transcript
26
+ type_field: _event_type
27
+ timestamp_field: timestamp
28
+
29
+ motivation:
30
+ sources:
31
+ - events: ["message.bot"]
32
+ field: content
33
+ role: intent
34
+ targets: ["tool.call.started"]
35
+
36
+ events:
37
+ # ── Messages ──
38
+ message.bot:
39
+ kind: message.assistant
40
+ payload:
41
+ content: text
42
+ activity_id: activity_id
43
+ from_name: from_name
44
+
45
+ message.user:
46
+ kind: message.user
47
+ payload:
48
+ content: text
49
+ activity_id: activity_id
50
+ from_name: from_name
51
+
52
+ # ── Typing indicators ──
53
+ typing.bot:
54
+ kind: session.info
55
+ payload:
56
+ activity_id: activity_id
57
+
58
+ typing.user:
59
+ kind: session.info
60
+ payload:
61
+ activity_id: activity_id
62
+
63
+ # ── Invoke activities (tool calls via adaptive cards, skill invocations) ──
64
+ invoke.bot:
65
+ kind: tool.call.started
66
+ payload:
67
+ input: value
68
+ activity_id: activity_id
69
+
70
+ invoke.user:
71
+ kind: hook.started
72
+ payload:
73
+ input: value
74
+ activity_id: activity_id
75
+
76
+ # ── Event activities (proactive notifications, skill responses) ──
77
+ event.bot:
78
+ kind: hook.completed
79
+ payload:
80
+ content: text
81
+ value: value
82
+ activity_id: activity_id
83
+
84
+ event.user:
85
+ kind: hook.started
86
+ payload:
87
+ content: text
88
+ value: value
89
+ activity_id: activity_id
90
+
91
+ # ── Trace activities (diagnostic/debug) ──
92
+ trace.bot:
93
+ kind: session.info
94
+ payload:
95
+ content: text
96
+ value: value
97
+ activity_id: activity_id
98
+
99
+ # Default: unmapped activity types get dropped (no default_kind)
@@ -0,0 +1,144 @@
1
+ # OpenAI Agents SDK mapping for native Trace.export()/Span.export() JSONL.
2
+ # Targets: openai-agents >= 0.3.3
3
+ # Source: openai-agents-python agents.tracing Trace/Span export() objects.
4
+
5
+ framework: openai_agents
6
+ framework_version: ">=0.3.3"
7
+ ingestion_mode: file_watch
8
+ type_field: event_type
9
+ timestamp_field: timestamp
10
+ preprocessor: openai_agents
11
+
12
+ motivation:
13
+ sources:
14
+ - events: ["generation.completed"]
15
+ field: output
16
+ role: intent
17
+
18
+ events:
19
+ trace:
20
+ kind: session.started
21
+ payload:
22
+ trace_id: trace_id
23
+ workflow_name: workflow_name
24
+ group_id: group_id
25
+ metadata: metadata
26
+
27
+ agent.completed:
28
+ kind: agent.completed
29
+ payload:
30
+ agent_name: span_data.name
31
+ tools: span_data.tools
32
+ handoffs: span_data.handoffs
33
+ output_type: span_data.output_type
34
+ span_id: span_id
35
+ trace_id: trace_id
36
+ parent_id: parent_id
37
+
38
+ response.completed:
39
+ kind: llm.call.completed
40
+ payload:
41
+ response_id: span_data.response_id
42
+ span_id: span_id
43
+ trace_id: trace_id
44
+ parent_id: parent_id
45
+
46
+ generation.completed:
47
+ kind: llm.call.completed
48
+ payload:
49
+ model: span_data.model
50
+ model_config: span_data.model_config
51
+ input: span_data.input
52
+ output: span_data.output
53
+ input_tokens: span_data.usage.input_tokens
54
+ output_tokens: span_data.usage.output_tokens
55
+ usage: span_data.usage
56
+ span_id: span_id
57
+ trace_id: trace_id
58
+ parent_id: parent_id
59
+
60
+ function.started:
61
+ kind: tool.call.started
62
+ payload:
63
+ tool_name: tool_name
64
+ tool_call_id: span_id
65
+ arguments: arguments
66
+ span_id: span_id
67
+ trace_id: trace_id
68
+ parent_id: parent_id
69
+
70
+ function.completed:
71
+ kind: tool.call.completed
72
+ payload:
73
+ tool_name: tool_name
74
+ tool_call_id: span_id
75
+ result: result
76
+ span_id: span_id
77
+ trace_id: trace_id
78
+ parent_id: parent_id
79
+
80
+ function.failed:
81
+ kind: tool.call.failed
82
+ payload:
83
+ tool_name: tool_name
84
+ tool_call_id: span_id
85
+ error: error
86
+ result: result
87
+ span_id: span_id
88
+ trace_id: trace_id
89
+ parent_id: parent_id
90
+
91
+ handoff.completed:
92
+ kind: agent.handoff
93
+ payload:
94
+ from_agent: span_data.from_agent
95
+ to_agent: span_data.to_agent
96
+ span_id: span_id
97
+ trace_id: trace_id
98
+ parent_id: parent_id
99
+
100
+ guardrail.completed:
101
+ kind: guardrail.passed
102
+ payload:
103
+ name: span_data.name
104
+ triggered: span_data.triggered
105
+ span_id: span_id
106
+ trace_id: trace_id
107
+ parent_id: parent_id
108
+
109
+ custom.completed:
110
+ kind: session.info
111
+ payload:
112
+ name: span_data.name
113
+ data: span_data.data
114
+ span_id: span_id
115
+ trace_id: trace_id
116
+ parent_id: parent_id
117
+
118
+ speech.completed:
119
+ kind: llm.call.completed
120
+ payload:
121
+ span_id: span_id
122
+ trace_id: trace_id
123
+ parent_id: parent_id
124
+
125
+ speech_group.completed:
126
+ kind: llm.call.completed
127
+ payload:
128
+ span_id: span_id
129
+ trace_id: trace_id
130
+ parent_id: parent_id
131
+
132
+ transcription.completed:
133
+ kind: llm.call.completed
134
+ payload:
135
+ span_id: span_id
136
+ trace_id: trace_id
137
+ parent_id: parent_id
138
+
139
+ mcp_tools.completed:
140
+ kind: mcp.connection.completed
141
+ payload:
142
+ span_id: span_id
143
+ trace_id: trace_id
144
+ parent_id: parent_id