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,251 @@
1
+ # Canonical tool name aliases — maps variant names to their canonical form.
2
+ #
3
+ # Each entry maps an exact tool_name string (as it appears in tool_call events)
4
+ # to a canonical tool identity. Sources are attributed per-harness.
5
+ #
6
+ # Add entries here to teach traceforge about your custom tool names.
7
+
8
+ canonical_tools:
9
+ # ─── Shell execution ───────────────────────────────────────────────────────
10
+ # Canonical: "shell" (dialect detected from command content, not tool name)
11
+ #
12
+ shell: shell # OpenAI Codex CLI (Responses API native)
13
+ bash: shell # GitHub Copilot, SWE-agent, Cline (native models)
14
+ powershell: shell # GitHub Copilot (Windows)
15
+ Bash: shell # Claude Code, OpenAI Codex RS (hook name)
16
+ PowerShell: shell # Claude Code (Windows)
17
+ execute_command: shell # Cline (GENERIC model), Roo Code
18
+ run_terminal_command: shell # Continue, Cursor
19
+ run_command: shell # Windsurf
20
+ executeCommand: shell # Amazon Q Developer
21
+ execute_bash: shell # OpenHands
22
+ sh: shell # Unix shell alias
23
+ zsh: shell # Zsh alias
24
+ cmd: shell # Windows cmd.exe
25
+
26
+ # ─── File read ─────────────────────────────────────────────────────────────
27
+ # Canonical: "view" (read file contents without modification)
28
+ #
29
+ view: view # GitHub Copilot
30
+ Read: view # Claude Code
31
+ read_file: view # Cline, Roo Code, Continue, Cursor, LangChain
32
+ read_file_range: view # Continue
33
+ fsRead: view # Amazon Q Developer
34
+ view_code_item: view # Windsurf
35
+ read_currently_open_file: view # Continue
36
+ NotebookRead: view # Claude Code (notebooks)
37
+ LS: view # Claude Code (list directory)
38
+ ls: view # Continue
39
+ list_dir: view # Cursor, Windsurf, Roo Code
40
+ list_files: view # Cline, Roo Code
41
+ fsList: view # Amazon Q Developer
42
+
43
+ # ─── File write (edit existing) ────────────────────────────────────────────
44
+ # Canonical: "edit" (modify existing file content)
45
+ #
46
+ edit: edit # GitHub Copilot, Roo Code (native models)
47
+ Edit: edit # Claude Code
48
+ MultiEdit: edit # Claude Code
49
+ multi_edit: edit # Continue
50
+ edit_file: edit # Cursor, Roo Code
51
+ edit_existing_file: edit # Continue
52
+ single_find_and_replace: edit # Continue
53
+ replace_in_file: edit # Cline
54
+ replace_file_contents: edit # Windsurf
55
+ edit_code: edit # Windsurf
56
+ search_replace: edit # Roo Code
57
+ search_and_replace: edit # Sweep
58
+ fsSearchAndReplace: edit # Amazon Q Developer
59
+ str_replace_editor: edit # OpenHands, SWE-agent
60
+ apply_patch: edit # OpenAI Codex RS, Cline
61
+ apply_diff: edit # Roo Code
62
+ NotebookEdit: edit # Claude Code (notebooks)
63
+
64
+ # ─── File write (create new) ───────────────────────────────────────────────
65
+ # Canonical: "create" (create new file)
66
+ #
67
+ create: create # GitHub Copilot
68
+ Write: create # Claude Code
69
+ create_file: create # Cursor, Cline
70
+ create_new_file: create # Continue
71
+ write_to_file: create # Cline, Roo Code
72
+ write_code: create # Windsurf
73
+ write_file: create # LangChain
74
+ fsWrite: create # Amazon Q Developer
75
+ fsAppend: create # Amazon Q Developer
76
+
77
+ # ─── Content search (grep-like) ────────────────────────────────────────────
78
+ # Canonical: "grep" (search file contents by pattern)
79
+ #
80
+ grep: grep # GitHub Copilot
81
+ Grep: grep # Claude Code
82
+ grep_search: grep # Continue, Cursor
83
+ search_files: grep # Cline, Roo Code
84
+ search_code_snippet: grep # Windsurf
85
+ search_file: grep # SWE-agent
86
+ search_dir: grep # SWE-agent
87
+ rg: grep # ripgrep CLI binary name
88
+ ripgrep: grep # ripgrep full name
89
+ GrepTool: grep # Anthropic internal tooling
90
+
91
+ # ─── File pattern search (glob-like) ───────────────────────────────────────
92
+ # Canonical: "glob" (find files by name/path pattern)
93
+ #
94
+ glob: glob # GitHub Copilot
95
+ Glob: glob # Claude Code
96
+ file_glob_search: glob # Continue
97
+ find_by_name: glob # Cursor, Windsurf
98
+ find_file: glob # SWE-agent
99
+ GlobTool: glob # Anthropic internal tooling
100
+
101
+ # ─── Semantic codebase search ──────────────────────────────────────────────
102
+ # Canonical: "codebase_search" (AI-powered semantic search, NOT pattern grep)
103
+ #
104
+ codebase_search: codebase_search # Cursor, Roo Code
105
+ codebase: codebase_search # Continue
106
+ list_code_definition_names: codebase_search # Cline
107
+
108
+ # ─── Git operations ────────────────────────────────────────────────────────
109
+ # These are only relevant for harnesses with dedicated git tools (rare).
110
+ # Most agents shell out to git via their shell tool.
111
+ #
112
+ git_commit: git_commit
113
+ git_push: git_push
114
+ git_diff: git_diff
115
+ git_status: git_status
116
+ git_add: git_add
117
+ git_log: git_log
118
+ git_pull: git_pull
119
+ git_merge: git_merge
120
+ git_rebase: git_rebase
121
+ git_checkout: git_checkout
122
+ git_branch: git_branch
123
+ view_diff: git_diff # Continue
124
+
125
+ # ─── Internal / bookkeeping ────────────────────────────────────────────────
126
+ # Canonical: "report_intent" (agent intent declaration, not user-facing)
127
+ #
128
+ report_intent: report_intent # GitHub Copilot
129
+ think: think # Internal reasoning step
130
+ plan_mode_respond: think # Cline
131
+ act_mode_respond: think # Cline
132
+ switch_mode: think # Roo Code
133
+ update_todo_list: state_write # Roo Code
134
+ attempt_completion: report_intent # Cline (task complete signal)
135
+ finish: report_intent # OpenHands, SWE-agent (submit)
136
+ submit: report_intent # SWE-agent
137
+
138
+ # ─── User interaction ──────────────────────────────────────────────────────
139
+ # Canonical: "ask_user" (prompt user for input)
140
+ #
141
+ ask_user: ask_user # GitHub Copilot
142
+ ask_followup_question: ask_user # Cline, Roo Code
143
+
144
+ # ─── Web fetch / browse ────────────────────────────────────────────────────
145
+ #
146
+ WebFetch: web_fetch # Claude Code
147
+ web_fetch: web_fetch # Cline, Roo Code
148
+ fetch_url: web_fetch # generic
149
+ fetch_url_content: web_fetch # Continue
150
+ read_url: web_fetch # Windsurf
151
+ WebSearch: web_search # Claude Code, OpenAI Codex
152
+ web_search: web_search # Cline, Roo Code
153
+ search_web: web_search # Continue
154
+ browser_action: web_browse # Cline
155
+ browser: web_browse # OpenHands
156
+ view_web_page: web_browse # Windsurf
157
+
158
+ # ─── Agent delegation / sub-tasks ──────────────────────────────────────────
159
+ # Canonical: "task" (spawn sub-agent or delegate work)
160
+ #
161
+ Task: task # Claude Code
162
+ task: task # GitHub Copilot
163
+ spawn_agent: task # OpenAI Codex RS
164
+ new_task: task # Cline
165
+ subagent: task # Cline, Roo Code
166
+
167
+ # ─── Delete file ───────────────────────────────────────────────────────────
168
+ # Canonical: "delete_file"
169
+ #
170
+ delete_file: delete_file # Cursor, Windsurf, Cline
171
+
172
+
173
+ # ─── Verb inference ──────────────────────────────────────────────────────────
174
+ # For unknown tools: extract verb prefix from tool name → infer effect + action.
175
+ # Example: "find_users" → verb "find" → (read_only, retrieve)
176
+ # This is a HEURISTIC fallback, not an alias system.
177
+
178
+ verb_inference:
179
+ # Read-only verbs → retrieve actions
180
+ get: { effect: read_only, action: retrieve }
181
+ list: { effect: read_only, action: retrieve }
182
+ read: { effect: read_only, action: retrieve }
183
+ search: { effect: read_only, action: retrieve }
184
+ query: { effect: read_only, action: retrieve }
185
+ describe: { effect: read_only, action: analyze }
186
+ fetch: { effect: read_only, action: retrieve }
187
+ browse: { effect: read_only, action: retrieve }
188
+ find: { effect: read_only, action: retrieve }
189
+ show: { effect: read_only, action: retrieve }
190
+ inspect: { effect: read_only, action: analyze }
191
+ check: { effect: read_only, action: validate }
192
+ scan: { effect: read_only, action: validate }
193
+ view: { effect: read_only, action: retrieve }
194
+
195
+ # Mutating verbs → persist/modify/generate actions
196
+ create: { effect: mutating, action: generate }
197
+ update: { effect: mutating, action: modify }
198
+ write: { effect: mutating, action: persist }
199
+ set: { effect: mutating, action: persist }
200
+ add: { effect: mutating, action: persist }
201
+ append: { effect: mutating, action: persist }
202
+ apply: { effect: mutating, action: execute }
203
+ run: { effect: mutating, action: execute }
204
+ execute: { effect: mutating, action: execute }
205
+ start: { effect: mutating, action: execute }
206
+ trigger: { effect: mutating, action: execute }
207
+ deploy: { effect: mutating, action: deliver }
208
+ publish: { effect: mutating, action: deliver }
209
+ push: { effect: mutating, action: deliver }
210
+ send: { effect: mutating, action: deliver }
211
+ post: { effect: mutating, action: deliver }
212
+ submit: { effect: mutating, action: deliver }
213
+ upload: { effect: mutating, action: deliver }
214
+ fork: { effect: mutating, action: generate }
215
+ star: { effect: mutating, action: persist }
216
+ assign: { effect: mutating, action: modify }
217
+ merge: { effect: mutating, action: modify }
218
+ approve: { effect: mutating, action: modify }
219
+ dismiss: { effect: mutating, action: modify }
220
+ resolve: { effect: mutating, action: modify }
221
+ configure: { effect: mutating, action: configure }
222
+ install: { effect: mutating, action: configure }
223
+ scale: { effect: mutating, action: configure }
224
+ build: { effect: mutating, action: transform }
225
+ pull: { effect: mutating, action: retrieve }
226
+ navigate: { effect: mutating, action: execute }
227
+ click: { effect: mutating, action: execute }
228
+ type: { effect: mutating, action: execute }
229
+ fill: { effect: mutating, action: execute }
230
+ select: { effect: mutating, action: execute }
231
+ hover: { effect: mutating, action: execute }
232
+ press: { effect: mutating, action: execute }
233
+ drag: { effect: mutating, action: execute }
234
+ move: { effect: mutating, action: modify }
235
+ edit: { effect: mutating, action: modify }
236
+ replace: { effect: mutating, action: modify }
237
+ rename: { effect: mutating, action: modify }
238
+ restore: { effect: mutating, action: modify }
239
+ archive: { effect: mutating, action: modify }
240
+ manage: { effect: mutating, action: modify }
241
+
242
+ # Destructive verbs
243
+ delete: { effect: destructive, action: remove }
244
+ destroy: { effect: destructive, action: remove }
245
+ drop: { effect: destructive, action: remove }
246
+ remove: { effect: destructive, action: remove }
247
+ clear: { effect: destructive, action: remove }
248
+ unstar: { effect: mutating, action: modify }
249
+ stop: { effect: mutating, action: execute }
250
+ cancel: { effect: mutating, action: execute }
251
+ terminate: { effect: destructive, action: remove }