@sentry/warden 0.26.2 → 0.27.0

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 (54) hide show
  1. package/CHANGELOG.md +236 -0
  2. package/TELEMETRY.md +323 -0
  3. package/dist/cli/main.d.ts +1 -0
  4. package/dist/cli/main.d.ts.map +1 -1
  5. package/dist/cli/main.js +5 -3
  6. package/dist/cli/main.js.map +1 -1
  7. package/dist/cli/output/tasks.d.ts +1 -0
  8. package/dist/cli/output/tasks.d.ts.map +1 -1
  9. package/dist/cli/output/tasks.js +14 -6
  10. package/dist/cli/output/tasks.js.map +1 -1
  11. package/dist/output/dedup.d.ts +6 -0
  12. package/dist/output/dedup.d.ts.map +1 -1
  13. package/dist/output/dedup.js +18 -0
  14. package/dist/output/dedup.js.map +1 -1
  15. package/dist/sdk/analyze.d.ts.map +1 -1
  16. package/dist/sdk/analyze.js +39 -14
  17. package/dist/sdk/analyze.js.map +1 -1
  18. package/dist/sdk/extract.d.ts +1 -0
  19. package/dist/sdk/extract.d.ts.map +1 -1
  20. package/dist/sdk/extract.js +2 -0
  21. package/dist/sdk/extract.js.map +1 -1
  22. package/dist/sdk/fix-quality.d.ts +1 -0
  23. package/dist/sdk/fix-quality.d.ts.map +1 -1
  24. package/dist/sdk/fix-quality.js +1 -0
  25. package/dist/sdk/fix-quality.js.map +1 -1
  26. package/dist/sdk/haiku.d.ts +4 -0
  27. package/dist/sdk/haiku.d.ts.map +1 -1
  28. package/dist/sdk/haiku.js +8 -2
  29. package/dist/sdk/haiku.js.map +1 -1
  30. package/dist/sdk/json-output.d.ts +1 -0
  31. package/dist/sdk/json-output.d.ts.map +1 -1
  32. package/dist/sdk/json-output.js +1 -0
  33. package/dist/sdk/json-output.js.map +1 -1
  34. package/dist/sdk/post-process.d.ts.map +1 -1
  35. package/dist/sdk/post-process.js +6 -4
  36. package/dist/sdk/post-process.js.map +1 -1
  37. package/dist/sdk/runtimes/claude.d.ts.map +1 -1
  38. package/dist/sdk/runtimes/claude.js +6 -0
  39. package/dist/sdk/runtimes/claude.js.map +1 -1
  40. package/dist/sdk/runtimes/types.d.ts +4 -0
  41. package/dist/sdk/runtimes/types.d.ts.map +1 -1
  42. package/dist/sdk/types.d.ts +2 -0
  43. package/dist/sdk/types.d.ts.map +1 -1
  44. package/dist/sentry.d.ts +7 -2
  45. package/dist/sentry.d.ts.map +1 -1
  46. package/dist/sentry.js +92 -38
  47. package/dist/sentry.js.map +1 -1
  48. package/dist/skill-builder/agentic.d.ts.map +1 -1
  49. package/dist/skill-builder/agentic.js +1 -0
  50. package/dist/skill-builder/agentic.js.map +1 -1
  51. package/dist/skill-builder/outline.d.ts.map +1 -1
  52. package/dist/skill-builder/outline.js +1 -0
  53. package/dist/skill-builder/outline.js.map +1 -1
  54. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,4 +1,240 @@
1
1
  # Changelog
2
+ ## 0.27.0
3
+
4
+ ### New Features ✨
5
+
6
+ #### Action
7
+
8
+ - Support org base configs with repo overlays by @dcramer in [#279](https://github.com/getsentry/warden/pull/279)
9
+ - Write structured findings JSON and expose as output by @gricha in [#233](https://github.com/getsentry/warden/pull/233)
10
+
11
+ #### Cli
12
+
13
+ - Build generated skills from path targets by @dcramer in [#282](https://github.com/getsentry/warden/pull/282)
14
+ - Add --staged flag and default to HEAD for uncommitted changes by @dcramer in [#205](https://github.com/getsentry/warden/pull/205)
15
+ - Display confidence level in findings output by @dcramer in [#194](https://github.com/getsentry/warden/pull/194)
16
+ - Always-on JSONL logging with repo-local log directory by @dcramer in [#179](https://github.com/getsentry/warden/pull/179)
17
+ - Add --fail-fast flag to stop after first finding by @dcramer in [#174](https://github.com/getsentry/warden/pull/174)
18
+ - Surface failure details for chunk analysis and finding extraction by @dcramer in [#162](https://github.com/getsentry/warden/pull/162)
19
+ - Interactive fix step-through with y/n/a/s/q prompt by @dcramer in [#161](https://github.com/getsentry/warden/pull/161)
20
+
21
+ #### Docs
22
+
23
+ - Improved landing visuals by @PickleNik in [#245](https://github.com/getsentry/warden/pull/245)
24
+ - Add LLM content negotiation and llms.txt by @dcramer in [#178](https://github.com/getsentry/warden/pull/178)
25
+
26
+ #### Runs
27
+
28
+ - Write chunk-level JSONL logs by @dcramer in [#265](https://github.com/getsentry/warden/pull/265)
29
+ - Stream in-progress runs via 'warden runs follow' by @dcramer in [#261](https://github.com/getsentry/warden/pull/261)
30
+
31
+ #### Sdk
32
+
33
+ - Add finding verification pass by @dcramer in [#290](https://github.com/getsentry/warden/pull/290)
34
+ - Store Claude SDK sessions in .warden/sessions/ by @dcramer in [#193](https://github.com/getsentry/warden/pull/193)
35
+
36
+ #### Skills
37
+
38
+ - Add built-in code review skill by @dcramer in [#298](https://github.com/getsentry/warden/pull/298)
39
+ - Add built-in security review skill by @dcramer in [#292](https://github.com/getsentry/warden/pull/292)
40
+ - Consolidate warden-sweep into bundled scripts with prescribed reporting by @dcramer in [#201](https://github.com/getsentry/warden/pull/201)
41
+ - Replace notseer with find-warden-bugs skill by @dcramer in [#200](https://github.com/getsentry/warden/pull/200)
42
+ - Add warden-sweep skill and bundled skill installation by @dcramer in [#196](https://github.com/getsentry/warden/pull/196)
43
+ - Add agent discovery alongside skills by @dcramer in [#136](https://github.com/getsentry/warden/pull/136)
44
+
45
+ #### Sweep
46
+
47
+ - Add --skill flag to scan.py by @dcramer in [#211](https://github.com/getsentry/warden/pull/211)
48
+ - Add master tracking issue for sweep PRs by @dcramer in [#210](https://github.com/getsentry/warden/pull/210)
49
+
50
+ #### Telemetry
51
+
52
+ - Add skill and model attribution to metrics by @gricha in [#231](https://github.com/getsentry/warden/pull/231)
53
+ - Add namespaced fix-eval feedback metrics by @dcramer in [#229](https://github.com/getsentry/warden/pull/229)
54
+ - Add global scope attributes, run metric, and trace ID surfacing by @dcramer in [#166](https://github.com/getsentry/warden/pull/166)
55
+ - Add input/output attributes to gen_ai spans by @dcramer in [#142](https://github.com/getsentry/warden/pull/142)
56
+ - Add per-turn tracing for Claude Code SDK agent calls by @dcramer in [#141](https://github.com/getsentry/warden/pull/141)
57
+
58
+ #### Other
59
+
60
+ - (config) Make auxiliary max retries configurable via defaults.auxiliaryMaxRetries by @dcramer in [#175](https://github.com/getsentry/warden/pull/175)
61
+ - (dedup) Add intra-batch finding consolidation by @dcramer in [#135](https://github.com/getsentry/warden/pull/135)
62
+ - (init) Add section-based output and interactive skill prompt by @dcramer in [#182](https://github.com/getsentry/warden/pull/182)
63
+ - (o11y) Capture run failures in JSONL output by @dcramer in [#259](https://github.com/getsentry/warden/pull/259)
64
+ - (output) Default to COMMENT instead of REQUEST_CHANGES on PRs by @dcramer in [#137](https://github.com/getsentry/warden/pull/137)
65
+ - (runner) Global concurrency pool for file analyses by @dcramer in [#158](https://github.com/getsentry/warden/pull/158)
66
+ - (skill-builder) Build generated repo-local skills by @dcramer in [#280](https://github.com/getsentry/warden/pull/280)
67
+ - Add verification field and confidence filtering by @dcramer in [#191](https://github.com/getsentry/warden/pull/191)
68
+ - Pnpm workspace monorepo with docs migration by @dcramer in [#185](https://github.com/getsentry/warden/pull/185)
69
+ - Adopt dotagents for skill management by @dcramer in [#168](https://github.com/getsentry/warden/pull/168)
70
+ - Cross-location finding merge by @dcramer in [#148](https://github.com/getsentry/warden/pull/148)
71
+ - Add env vars to generated workflow and docs by @dcramer in [#138](https://github.com/getsentry/warden/pull/138)
72
+ - Add Sentry observability (errors, tracing, metrics, structured logs) by @dcramer in [#133](https://github.com/getsentry/warden/pull/133)
73
+ - Split failOn into independent requestChanges and failCheck controls by @dcramer in [#129](https://github.com/getsentry/warden/pull/129)
74
+
75
+ ### Bug Fixes 🐛
76
+
77
+ #### Action
78
+
79
+ - Use relative findings output path by @dcramer in [#289](https://github.com/getsentry/warden/pull/289)
80
+ - Handle missing warden.toml gracefully by @gricha in [#235](https://github.com/getsentry/warden/pull/235)
81
+ - Thread maxContextFiles config through Action workflows by @dcramer in [#216](https://github.com/getsentry/warden/pull/216)
82
+
83
+ #### Cli
84
+
85
+ - Label built-in skill sources by @dcramer in [#294](https://github.com/getsentry/warden/pull/294)
86
+ - Report final per-file finding counts by @dcramer in [#293](https://github.com/getsentry/warden/pull/293)
87
+ - Align local review diff context by @dcramer in [#276](https://github.com/getsentry/warden/pull/276)
88
+ - Replace process.exit(130) with thrown error for graceful cleanup by @dcramer in [#213](https://github.com/getsentry/warden/pull/213)
89
+ - Write --output file on auth error early exit by @dcramer in [#214](https://github.com/getsentry/warden/pull/214)
90
+ - Normalize path separators in synthetic file changes by @dcramer in [#217](https://github.com/getsentry/warden/pull/217)
91
+ - Exclude node_modules from gitignore file discovery by @dcramer in [#220](https://github.com/getsentry/warden/pull/220)
92
+ - Collapse skipped files into a single count on Ctrl+C by @dcramer in [#172](https://github.com/getsentry/warden/pull/172)
93
+ - Render warnings through Ink's Static component by @dcramer in [#170](https://github.com/getsentry/warden/pull/170)
94
+ - Cap 'Other Files' list in prompts for CLI mode by @dcramer in [#171](https://github.com/getsentry/warden/pull/171)
95
+ - Move completed files to Static to prevent flickering by @dcramer in [#149](https://github.com/getsentry/warden/pull/149)
96
+ - Run all skills locally regardless of trigger type by @gricha in [#145](https://github.com/getsentry/warden/pull/145)
97
+ - Resolve remote config for --skill flag by @dcramer in [#130](https://github.com/getsentry/warden/pull/130)
98
+
99
+ #### Config
100
+
101
+ - Allow base configs to use built-in skills by @dcramer in [#305](https://github.com/getsentry/warden/pull/305)
102
+ - Warn on duplicate layered skills by @dcramer in [#304](https://github.com/getsentry/warden/pull/304)
103
+ - Add missing fields to TOML writer for config round-trip by @dcramer in [#218](https://github.com/getsentry/warden/pull/218)
104
+
105
+ #### Output
106
+
107
+ - Render GitHub footers as muted text by @dcramer in [#306](https://github.com/getsentry/warden/pull/306)
108
+ - List only successfully applied fixes in PR body by @dcramer in [#219](https://github.com/getsentry/warden/pull/219)
109
+ - Use backticks instead of brackets in attribution footer by @dcramer in [#197](https://github.com/getsentry/warden/pull/197)
110
+
111
+ #### Sdk
112
+
113
+ - Short-circuit repeated provider failures by @dcramer in [#291](https://github.com/getsentry/warden/pull/291)
114
+ - Strip invalid suggested fixes from reports by @dcramer in [#228](https://github.com/getsentry/warden/pull/228)
115
+ - Prevent Warden sessions from polluting Claude Code history by @dcramer in [#202](https://github.com/getsentry/warden/pull/202)
116
+ - Handle EPIPE errors from Claude subprocess failures by @dcramer in [#198](https://github.com/getsentry/warden/pull/198)
117
+ - Add verification checklist and Glob tool to reduce analysis hallucinations by @dcramer in [#173](https://github.com/getsentry/warden/pull/173)
118
+ - Constrain skill findings to diff hunk line range by @dcramer in [#151](https://github.com/getsentry/warden/pull/151)
119
+
120
+ #### Sweep
121
+
122
+ - Add self-validation to fix subagent prompt by @dcramer in [#223](https://github.com/getsentry/warden/pull/223)
123
+ - Branch worktrees from default branch instead of HEAD by @dcramer in [#221](https://github.com/getsentry/warden/pull/221)
124
+
125
+ #### Telemetry
126
+
127
+ - Fill finding analytics gaps by @dcramer in [#311](https://github.com/getsentry/warden/pull/311)
128
+ - Align attributes with OTel semantics by @dcramer in [#307](https://github.com/getsentry/warden/pull/307)
129
+ - Improve OTel GenAI semantic convention compliance by @dcramer in [#140](https://github.com/getsentry/warden/pull/140)
130
+ - Fix missing Sentry traces and negative token costs by @dcramer in [#139](https://github.com/getsentry/warden/pull/139)
131
+
132
+ #### Other
133
+
134
+ - (ci) Enable auto-generated changelogs for GitHub releases by @gricha in [#234](https://github.com/getsentry/warden/pull/234)
135
+ - (evals) Update default model to claude-sonnet-4-6 by @dcramer in [#163](https://github.com/getsentry/warden/pull/163)
136
+ - (o11y) Add gen_ai.request.model attribute by @obostjancic in [#247](https://github.com/getsentry/warden/pull/247)
137
+ - (prepare) Skip files with zero content automatically by @dcramer in [#226](https://github.com/getsentry/warden/pull/226)
138
+ - (review) Preserve active Warden threads by @dcramer in [#272](https://github.com/getsentry/warden/pull/272)
139
+ - (sentry) Tag action errors with repository by @dcramer in [#303](https://github.com/getsentry/warden/pull/303)
140
+ - (skill-builder) Stabilize generated skill authoring by @dcramer in [#284](https://github.com/getsentry/warden/pull/284)
141
+ - (skills) Support private repos in `warden add --remote` by @dcramer in [#187](https://github.com/getsentry/warden/pull/187)
142
+ - (usage) Normalize inputTokens to include cached and cache-write tokens by @vgrozdanic in [#143](https://github.com/getsentry/warden/pull/143)
143
+ - Preserve interrupted findings and parse run args by @dcramer in [#297](https://github.com/getsentry/warden/pull/297)
144
+ - Prevent command injection in release workflow by @fix-it-felix-sentry in [#277](https://github.com/getsentry/warden/pull/277)
145
+ - Handle multi-line YAML scalar values in SKILL.md frontmatter by @odysseus0 in [#243](https://github.com/getsentry/warden/pull/243)
146
+ - Server error handler calls process.exit() bypassing cleanup by @dcramer in [#206](https://github.com/getsentry/warden/pull/206)
147
+ - Preserve error chains across error wrapping boundaries by @dcramer in [#215](https://github.com/getsentry/warden/pull/215)
148
+ - Respect ignorePaths in all code paths by @dcramer in [#204](https://github.com/getsentry/warden/pull/204)
149
+ - Exclude dev files and secrets from npm package by @dcramer in [#186](https://github.com/getsentry/warden/pull/186)
150
+ - Clean up orphaned Warden comments when no triggers match by @dcramer in [#134](https://github.com/getsentry/warden/pull/134)
151
+ - Show findings in PR review body when inline comments fail by @dcramer in [#128](https://github.com/getsentry/warden/pull/128)
152
+ - Show skipped status for files not processed during Ctrl+C by @dcramer in [#127](https://github.com/getsentry/warden/pull/127)
153
+
154
+ ### Documentation 📚
155
+
156
+ - (homepage) Redesign to lead with skills by @dcramer in [#238](https://github.com/getsentry/warden/pull/238)
157
+ - Use built-in security review in samples by @dcramer in [#295](https://github.com/getsentry/warden/pull/295)
158
+ - Use scoped Warden package in npx examples by @dcramer in [#273](https://github.com/getsentry/warden/pull/273)
159
+ - Lead homepage with GitHub PR review story by @dcramer in [#240](https://github.com/getsentry/warden/pull/240)
160
+ - Add org-wide GitHub setup guide by @dcramer in [#239](https://github.com/getsentry/warden/pull/239)
161
+ - Replace non-existent skill names with generic placeholders by @dcramer in [#199](https://github.com/getsentry/warden/pull/199)
162
+ - Simplify getting started guide to use native warden add --remote by @dcramer in [#164](https://github.com/getsentry/warden/pull/164)
163
+ - Fix documentation inconsistencies with codebase by @dcramer in [#147](https://github.com/getsentry/warden/pull/147)
164
+ - Update config reference with missing fields by @dcramer in [#132](https://github.com/getsentry/warden/pull/132)
165
+
166
+ ### Internal Changes 🔧
167
+
168
+ #### Config
169
+
170
+ - Use native PR review skills by @dcramer in [#299](https://github.com/getsentry/warden/pull/299)
171
+ - Configure Sentry MCP server by @dcramer in [#301](https://github.com/getsentry/warden/pull/301)
172
+ - Exclude evals directory from warden analysis by @dcramer in [#203](https://github.com/getsentry/warden/pull/203)
173
+
174
+ #### Deps
175
+
176
+ - Bump dotagents lib by @gricha in [#296](https://github.com/getsentry/warden/pull/296)
177
+ - Bump yaml from 2.8.2 to 2.8.3 by @dependabot in [#254](https://github.com/getsentry/warden/pull/254)
178
+
179
+ #### Sdk
180
+
181
+ - Add flat runtime provider contract by @dcramer in [#270](https://github.com/getsentry/warden/pull/270)
182
+ - Extract applyMergeGroups to unify cross-location merge logic by @dcramer in [#153](https://github.com/getsentry/warden/pull/153)
183
+
184
+ #### Skills
185
+
186
+ - Adopt @sentry/dotagents-lib for skill resolution primitives by @gricha in [#285](https://github.com/getsentry/warden/pull/285)
187
+ - Restructure distributed Warden skills by @dcramer in [#268](https://github.com/getsentry/warden/pull/268)
188
+
189
+ #### Other
190
+
191
+ - (agents) Update configured skills list by @dcramer in [#241](https://github.com/getsentry/warden/pull/241)
192
+ - (cli) Use git ls-files for .gitignore discovery by @dcramer in [#222](https://github.com/getsentry/warden/pull/222)
193
+ - (dotagents) Gitignore auto-generated files instead of tracking them by @gricha in [#246](https://github.com/getsentry/warden/pull/246)
194
+ - (output) Clean up GitHub finding rendering by @dcramer in [#176](https://github.com/getsentry/warden/pull/176)
195
+ - (skill-builder) Use internal authoring provider by @dcramer in [#283](https://github.com/getsentry/warden/pull/283)
196
+ - (sweep) Clean up warden-sweep skill per skill-creator review by @dcramer in [#225](https://github.com/getsentry/warden/pull/225)
197
+ - Add GitHub Actions workflow skill by @dcramer in [#278](https://github.com/getsentry/warden/pull/278)
198
+ - Add .serena to gitignore by @ericapisani in [#180](https://github.com/getsentry/warden/pull/180)
199
+ - Extract shared skill selection and validate setup-app args by @dcramer in [#208](https://github.com/getsentry/warden/pull/208)
200
+ - Combine multiple reduce operations into single pass by @dcramer in [#207](https://github.com/getsentry/warden/pull/207)
201
+ - Simplify repetitive column width calculations in logs by @dcramer in [#209](https://github.com/getsentry/warden/pull/209)
202
+ - Collapse severity to 3 levels, add warden logs command by @dcramer in [#192](https://github.com/getsentry/warden/pull/192)
203
+ - Migrate to dotagents and add skills reference to AGENTS.md by @dcramer in [#195](https://github.com/getsentry/warden/pull/195)
204
+ - Tighten weak mock assertions in test suite by @dcramer in [#160](https://github.com/getsentry/warden/pull/160)
205
+ - Add conductor.json configuration by @dcramer in [#159](https://github.com/getsentry/warden/pull/159)
206
+ - Remove generated artifacts from dist, keep only ncc bundle by @dcramer in [#131](https://github.com/getsentry/warden/pull/131)
207
+ - Replace batch-based concurrency with sliding window pool by @dcramer in [#126](https://github.com/getsentry/warden/pull/126)
208
+
209
+ ### Other
210
+
211
+ - release: 0.26.2 by @getsentry-bot in [3d492972](https://github.com/getsentry/warden/commit/3d492972d2e6ae5c2666a5d61d1e37a6591892ff)
212
+ - release: 0.26.1 by @getsentry-bot in [23280325](https://github.com/getsentry/warden/commit/23280325da28b365fb53e6a33b19b167998e5660)
213
+ - release: 0.26.0 by @getsentry-bot in [2bb08b9d](https://github.com/getsentry/warden/commit/2bb08b9d5b276abaee31aab0e672d3ac4ecaee8c)
214
+ - release: 0.25.0 by @getsentry-bot in [56de18fe](https://github.com/getsentry/warden/commit/56de18fee0a1bb6a80deae2c0e4688ab05754126)
215
+ - release: 0.24.1 by @getsentry-bot in [2b9e2b0c](https://github.com/getsentry/warden/commit/2b9e2b0cdab12b950fcb4abc79e33d7db363ee49)
216
+ - release: 0.24.0 by @getsentry-bot in [715259ec](https://github.com/getsentry/warden/commit/715259ecacc9e1e5d78b6b62623960d86e934162)
217
+ - release: 0.23.0 by @getsentry-bot in [dd7f76ac](https://github.com/getsentry/warden/commit/dd7f76ac25cd8d70f2557638bd8d8678d9776e96)
218
+ - release: 0.22.0 by @getsentry-bot in [08a3b2f0](https://github.com/getsentry/warden/commit/08a3b2f0139248c80ba499038320556bedb66347)
219
+ - release: 0.21.0 by @getsentry-bot in [2795626e](https://github.com/getsentry/warden/commit/2795626e8f1ff3c5a7a041d0ecb9ae3c047641cd)
220
+ - Docs UI improvements by @PickleNik in [#248](https://github.com/getsentry/warden/pull/248)
221
+ - release: 0.20.0 by @getsentry-bot in [e7dbd6eb](https://github.com/getsentry/warden/commit/e7dbd6eb1680d1d15df6388084237e5d231ec929)
222
+ - release: 0.19.0 by @getsentry-bot in [0096b702](https://github.com/getsentry/warden/commit/0096b7024749edf9e62a791340cfea2ef5b899bf)
223
+ - chores(docs): Add instruction for creating org rulesets by @Jeffreyhung in [#244](https://github.com/getsentry/warden/pull/244)
224
+ - release: 0.18.0 by @getsentry-bot in [e3691621](https://github.com/getsentry/warden/commit/e3691621d9f92de1f47fadb47be162b90f7042ff)
225
+ - release: 0.17.0 by @getsentry-bot in [d6132a96](https://github.com/getsentry/warden/commit/d6132a960cb033ec737042bea68f195b5cadef76)
226
+ - release: 0.16.0 by @getsentry-bot in [62909fe4](https://github.com/getsentry/warden/commit/62909fe4d28c322508945382d001d0a6844852f2)
227
+ - release: 0.15.0 by @getsentry-bot in [d9905cee](https://github.com/getsentry/warden/commit/d9905ceee868cba2aa41f8f17233eacb44901c36)
228
+ - release: 0.14.0 by @getsentry-bot in [538f13b4](https://github.com/getsentry/warden/commit/538f13b44a4e78f30ecc668957f6cede7d8e7161)
229
+ - release: 0.13.0 by @getsentry-bot in [063517a9](https://github.com/getsentry/warden/commit/063517a90a903b56919eec66542b129950ff866c)
230
+ - release: 0.12.0 by @getsentry-bot in [7177c99f](https://github.com/getsentry/warden/commit/7177c99fb10de1cbec8b788881d501a4f8d72965)
231
+ - Remove outdated SPEC.md by @dcramer in [#181](https://github.com/getsentry/warden/pull/181)
232
+ - release: 0.11.0 by @getsentry-bot in [b5525e63](https://github.com/getsentry/warden/commit/b5525e6332a7090940f066b676ea4cf587aa1e2a)
233
+ - release: 0.10.0 by @getsentry-bot in [5762bc7a](https://github.com/getsentry/warden/commit/5762bc7a0b608cdbe31db7b740e8eeff21da2081)
234
+ - Add repository and source context to skill metrics by @dcramer in [#165](https://github.com/getsentry/warden/pull/165)
235
+
236
+ _Plus 5 more_
237
+
2
238
  ## 0.26.2
3
239
 
4
240
  ### New Features ✨
package/TELEMETRY.md ADDED
@@ -0,0 +1,323 @@
1
+ ---
2
+ spec: https://github.com/getsentry/junior/blob/main/TELEMETRY.spec.md
3
+ ---
4
+
5
+ # Telemetry
6
+
7
+ ## Goal
8
+
9
+ Use this when investigating Warden production incidents in the CLI or GitHub
10
+ Action. Start with a Sentry event, trace ID, repository, GitHub Action run,
11
+ skill or trigger name, file path, finding ID, or model/tool symptom, then use
12
+ the recipes below to find the failing run and next query.
13
+
14
+ Primary backend: Sentry Logs, Issues, Spans/Traces, and Metrics. Local CLI runs
15
+ also write `.warden/logs/*.jsonl`; those logs can carry the Sentry `traceId`
16
+ when telemetry is enabled.
17
+
18
+ ## Where To Query
19
+
20
+ | Starting Point | Query Surface | Pivot | Answers | Next Step |
21
+ | -------------- | ------------- | ----- | ------- | --------- |
22
+ | `trace_id` from CLI summary, JSONL, or `Workflow initialized` | Sentry Traces and Logs | `span_id` | full run timeline, slow/error span | inspect skill or workflow span |
23
+ | Sentry `event_id` | Sentry Issues/Event | `trace_id`, `operation`, `warden.trigger.name`, `gen_ai.agent.name` | exception context and owning workflow | query trace logs |
24
+ | GitHub repository or Action run | Sentry Logs and Metrics | `vcs.owner.name`, `vcs.repository.name`, `cicd.pipeline.run.id`, `github.event.name` | recent Warden runs and trigger count | open matching trace |
25
+ | Skill or trigger name | Sentry Spans, Issues, Metrics | `gen_ai.agent.name`, `warden.trigger.name` | failing skill, model cost, finding count | inspect hunk or agent spans |
26
+ | File path or hunk | Sentry Spans | `code.file.path`, `warden.hunk.line_range` | hunk analysis state and extraction failures | inspect agent span |
27
+ | Model, tool, or token symptom | Sentry Spans | `gen_ai.*`, `gen_ai.tool.name` | Claude turn, tool, cost, and token behavior | inspect child spans |
28
+ | Stale comment or fix-eval symptom | Sentry Spans and Metrics | `warden.fix_eval.finding_id`, `warden.fix_eval.verdict` | whether a finding was evaluated or resolved | inspect fix eval span |
29
+
30
+ ## Investigation Pivots
31
+
32
+ | Pivot | Meaning | Found In | First Query |
33
+ | ----- | ------- | -------- | ----------- |
34
+ | `trace_id` | one Warden run trace | CLI verbose summary, JSONL, logs, issues, spans | open trace |
35
+ | `span_id` | one workflow, skill, hunk, model, or tool span | logs, spans | inspect span |
36
+ | `event_id` | captured Sentry error | Sentry issue/event | open event |
37
+ | `vcs.repository.name` | repository name | global attributes, logs, metrics, spans | repo runs |
38
+ | `vcs.owner.name` | repository owner or org | global attributes, logs, metrics, spans | repo runs |
39
+ | `vcs.repository.url.full` | canonical repository URL | global attributes, logs, metrics, spans | exact repo runs |
40
+ | `github.event.name` | Action event name | `workflow.run` span | action entry |
41
+ | `cicd.pipeline.run.id` | GitHub Actions run ID | global attributes, logs, metrics, spans | action run |
42
+ | `cicd.pipeline.run.url.full` | GitHub Actions run URL | global attributes, logs, metrics, spans | action run |
43
+ | `warden.trigger.name` | matched Warden trigger | trigger exceptions | trigger failures |
44
+ | `gen_ai.agent.name` | configured or resolved skill/agent | spans, issues, metrics | skill timeline |
45
+ | `code.file.path` | file being analyzed or judged | hunk/file/fix spans | file analysis |
46
+ | `gen_ai.conversation.id` | Claude Code SDK session ID | `gen_ai.invoke_agent` span | agent session |
47
+ | `warden.fix_eval.finding_id` | finding comment identity | fix evaluation spans | fix verdict |
48
+
49
+ ## Query Recipes
50
+
51
+ Trace log history after opening a Sentry event, CLI JSONL run, or verbose CLI
52
+ summary.
53
+
54
+ ```text
55
+ dataset=logs query='trace_id:"<trace_id>"'
56
+ fields=timestamp,level,message,trace_id,span_id,vcs.owner.name,vcs.repository.name,gen_ai.agent.name,warden.trigger.name,error.type,exception.message
57
+ sort=timestamp
58
+ ```
59
+
60
+ Recent GitHub Action runs for a repository.
61
+
62
+ ```text
63
+ dataset=logs query='message:"Workflow initialized" vcs.owner.name:"<owner>" vcs.repository.name:"<repo>"'
64
+ fields=timestamp,trace_id,github.event.name,cicd.pipeline.run.id,cicd.pipeline.run.url.full,warden.trigger.count,release,environment
65
+ sort=-timestamp
66
+ ```
67
+
68
+ Workflow run spans for a repository.
69
+
70
+ ```text
71
+ dataset=spans query='span.op:workflow.run vcs.owner.name:"<owner>" vcs.repository.name:"<repo>"'
72
+ fields=timestamp,trace,span_id,span.duration,github.event.name,cicd.pipeline.run.id,cicd.pipeline.run.url.full,warden.trigger.count,warden.finding.count,error.type
73
+ sort=-timestamp
74
+ ```
75
+
76
+ Skill execution timeline for a slow or failing skill.
77
+
78
+ ```text
79
+ dataset=spans query='span.op:skill.run gen_ai.agent.name:"<skill_name>"'
80
+ fields=timestamp,trace,span_id,span.duration,gen_ai.agent.name,warden.trigger.name,warden.file.count,warden.finding.count,error.type
81
+ sort=-timestamp
82
+ ```
83
+
84
+ `warden.trigger.name` is present only for trigger-backed runs. Direct CLI skill
85
+ runs have `gen_ai.agent.name` without trigger metadata.
86
+
87
+ File or hunk analysis for a suspicious path.
88
+
89
+ ```text
90
+ dataset=spans query='span.op:skill.analyze_hunk code.file.path:"<path>"'
91
+ fields=timestamp,trace,span_id,span.duration,gen_ai.agent.name,warden.hunk.line_range,warden.hunk.failed,warden.finding.count,error.type
92
+ sort=-timestamp
93
+ ```
94
+
95
+ Agent/model calls for token, cost, or provider symptoms.
96
+
97
+ ```text
98
+ dataset=spans query='span.op:gen_ai.invoke_agent gen_ai.agent.name:"<skill_name>"'
99
+ fields=timestamp,trace,span_id,span.duration,gen_ai.conversation.id,gen_ai.request.model,gen_ai.response.model,gen_ai.usage.total_tokens,gen_ai.cost.total_tokens,error.type
100
+ sort=-timestamp
101
+ ```
102
+
103
+ Structured auxiliary calls use `span.op:gen_ai.chat` and include
104
+ `warden.ai.task` (`extraction`, `deduplication`, `fix_quality`,
105
+ `fix_evaluation`, `consolidation`, or `skill_build`) when available.
106
+
107
+ Tool calls inside a Claude Code SDK turn or structured tool loop.
108
+
109
+ ```text
110
+ dataset=spans query='span.op:gen_ai.execute_tool gen_ai.tool.name:"<tool_name>"'
111
+ fields=timestamp,trace,span_id,span.duration,gen_ai.agent.name,warden.ai.task,gen_ai.tool.name,tool.elapsed_seconds,error.type
112
+ sort=-timestamp
113
+ ```
114
+
115
+ Captured trigger or workflow exceptions.
116
+
117
+ ```text
118
+ dataset=issues query='warden.trigger.name:"<trigger_name>" OR gen_ai.agent.name:"<skill_name>" OR operation:"<operation>"'
119
+ fields=timestamp,event_id,trace_id,operation,warden.trigger.name,gen_ai.agent.name,error.type,exception.message
120
+ sort=-timestamp
121
+ ```
122
+
123
+ Finding fix evaluation and stale comment resolution.
124
+
125
+ ```text
126
+ dataset=spans query='span.op:fix_eval.evaluate warden.fix_eval.finding_id:"<finding_id>"'
127
+ fields=timestamp,trace,span_id,span.duration,code.file.path,code.line.number,gen_ai.agent.name,warden.fix_eval.verdict,warden.fix_eval.used_fallback,error.type
128
+ sort=-timestamp
129
+ ```
130
+
131
+ Repository-level health and cost.
132
+
133
+ ```text
134
+ dataset=metrics query='metric:warden.workflow.runs OR metric:warden.skill.duration OR metric:warden.gen_ai.cost.usd vcs.owner.name:"<owner>" vcs.repository.name:"<repo>"'
135
+ fields=timestamp,metric,vcs.owner.name,vcs.repository.name,cicd.pipeline.run.id,gen_ai.agent.name,gen_ai.request.model,value
136
+ sort=-timestamp
137
+ ```
138
+
139
+ Total findings in a time window, segmented by skill and repository. Use the
140
+ Sentry time picker for the window. Query `skill.run` spans so the count uses
141
+ the final post-processed findings, not per-hunk candidates.
142
+
143
+ ```text
144
+ dataset=spans query='span.op:skill.run warden.finding.count:>0'
145
+ fields=timestamp,trace,span_id,span.duration,vcs.owner.name,vcs.repository.name,gen_ai.agent.name,warden.trigger.name,warden.finding.count
146
+ aggregate=sum(warden.finding.count) by gen_ai.agent.name,vcs.owner.name,vcs.repository.name
147
+ sort=-timestamp
148
+ ```
149
+
150
+ Add `gen_ai.agent.name:"<skill_name>"`, `vcs.owner.name:"<owner>"`, or
151
+ `vcs.repository.name:"<repo>"` to narrow the same query.
152
+
153
+ Fix evaluation verdict breakdown for a skill. Use the Sentry time picker for
154
+ the window.
155
+
156
+ ```text
157
+ dataset=spans query='span.op:fix_eval.evaluate gen_ai.agent.name:"<skill_name>"'
158
+ fields=timestamp,trace,span_id,span.duration,vcs.owner.name,vcs.repository.name,gen_ai.agent.name,code.file.path,code.line.number,warden.fix_eval.finding_id,warden.fix_eval.verdict,warden.fix_eval.used_fallback
159
+ aggregate=count() by warden.fix_eval.verdict,gen_ai.agent.name,vcs.owner.name,vcs.repository.name
160
+ sort=-timestamp
161
+ ```
162
+
163
+ Finding lifecycle from analysis to fix evaluation. First find the evaluation
164
+ span by finding ID, then open the trace or query the trace ID with the path and
165
+ skill from that span.
166
+
167
+ ```text
168
+ dataset=spans query='span.op:fix_eval.evaluate warden.fix_eval.finding_id:"<finding_id>"'
169
+ fields=timestamp,trace,span_id,span.duration,vcs.owner.name,vcs.repository.name,gen_ai.agent.name,code.file.path,code.line.number,warden.fix_eval.finding_id,warden.fix_eval.verdict
170
+ sort=-timestamp
171
+ ```
172
+
173
+ ```text
174
+ dataset=spans query='trace:"<trace_id>" (span.op:skill.run OR span.op:skill.analyze_hunk OR span.op:fix_eval.evaluate) gen_ai.agent.name:"<skill_name>"'
175
+ fields=timestamp,span.op,span_id,span.duration,code.file.path,warden.hunk.line_range,warden.finding.count,warden.fix_eval.finding_id,warden.fix_eval.verdict,error.type
176
+ sort=timestamp
177
+ ```
178
+
179
+ ## Domains
180
+
181
+ ### Workflow Entry
182
+
183
+ The CLI or GitHub Action did not start, selected no work, or failed while
184
+ building repository context.
185
+
186
+ Events: `Workflow initialized`, top-level CLI/action fatal error
187
+
188
+ Spans: `workflow.run`, `workflow.init`, `config.load`
189
+
190
+ Attributes: `trace_id`, `vcs.owner.name`, `vcs.repository.name`,
191
+ `vcs.repository.url.full`, `warden.source`, `github.event.name`,
192
+ `cicd.pipeline.name`, `cicd.pipeline.run.id`,
193
+ `cicd.pipeline.run.url.full`, `warden.trigger.count`,
194
+ `warden.finding.count`
195
+
196
+ ### Trigger And GitHub Review
197
+
198
+ The Action ran, but checks, comments, review posting, or trigger execution
199
+ failed.
200
+
201
+ Events: operation tags `create_core_check`, `fetch_existing_comments`,
202
+ `post_thread_reply`, `dismiss_review`, `update_core_check`
203
+
204
+ Spans: `workflow.setup`, `workflow.execute`, `trigger.execute`,
205
+ `workflow.review`
206
+
207
+ Attributes: `warden.trigger.name`, `gen_ai.agent.name`, `operation`,
208
+ `vcs.owner.name`, `vcs.repository.name`
209
+
210
+ ### Skill Analysis
211
+
212
+ A skill was slow, returned no findings, failed every hunk, or analyzed the
213
+ wrong files.
214
+
215
+ Events: `Skill execution started`, `Skill execution complete`
216
+
217
+ Spans: `skill.run`, `skill.analyze_file`, `skill.analyze_hunk`
218
+
219
+ Attributes: `gen_ai.agent.name`, `warden.file.count`, `code.file.path`,
220
+ `warden.hunk.count`, `warden.hunk.line_range`, `warden.hunk.failed`,
221
+ `warden.finding.count`
222
+
223
+ ### Agent And Model
224
+
225
+ Claude Code SDK execution, Anthropic calls, model choice, tokens, tool use, or
226
+ provider failures look wrong.
227
+
228
+ Events: SDK/runtime errors captured on the owning skill or trigger
229
+
230
+ Spans: `gen_ai.invoke_agent`, `gen_ai.chat`, `gen_ai.execute_tool`
231
+
232
+ Attributes: `gen_ai.agent.name`, `gen_ai.conversation.id`,
233
+ `gen_ai.request.model`, `gen_ai.response.model`, `gen_ai.usage.input_tokens`,
234
+ `gen_ai.usage.output_tokens`, `gen_ai.usage.total_tokens`,
235
+ `gen_ai.tool.name`, `tool.elapsed_seconds`
236
+
237
+ ### Finding Pipeline
238
+
239
+ Findings were extracted, deduplicated, verified, merged, or stripped
240
+ unexpectedly.
241
+
242
+ Events: `Suggested fix quality gate`
243
+
244
+ Spans: skill spans plus auxiliary `gen_ai.invoke_agent` spans
245
+
246
+ Metrics: `warden.extraction.attempts`, `warden.extraction.findings`,
247
+ `warden.dedup.total`, `warden.dedup.unique`, `warden.dedup.removed`,
248
+ `warden.fix_gate.checked`, `warden.fix_gate.stripped_deterministic`,
249
+ `warden.fix_gate.stripped_semantic`, `warden.fix_gate.semantic_unavailable`
250
+
251
+ Attributes: `gen_ai.agent.name`, `warden.extraction.method`,
252
+ `warden.fix_gate.checked`, `warden.fix_gate.stripped_deterministic`,
253
+ `warden.fix_gate.stripped_semantic`, `warden.fix_gate.semantic_unavailable`
254
+
255
+ ### Fix Evaluation And Stale Comments
256
+
257
+ Existing Warden comments were not resolved, were judged incorrectly, or fix
258
+ evaluation failed.
259
+
260
+ Events: operation tags `fetch_fix_context`, `evaluate_fix_attempts`,
261
+ `resolve_stale_comments`
262
+
263
+ Spans: `workflow.resolve`, `fix_eval.run`, `fix_eval.evaluate`
264
+
265
+ Attributes: `warden.fix_eval.comment_count`, `warden.fix_eval.finding_id`,
266
+ `gen_ai.agent.name`, `warden.fix_eval.verdict`,
267
+ `warden.fix_eval.used_fallback`, `code.file.path`, `code.line.number`
268
+
269
+ ### Local Run Logs
270
+
271
+ A local CLI report exists, but the matching Sentry trace or run metadata is
272
+ needed.
273
+
274
+ Events: JSONL records in `.warden/logs/*.jsonl`
275
+
276
+ Spans: `skill.run`, `skill.analyze_file`, `skill.analyze_hunk`,
277
+ `gen_ai.invoke_agent`
278
+
279
+ Attributes: `traceId` in JSONL, `runId`, `headSha`, `model`,
280
+ `gen_ai.agent.name` in telemetry
281
+
282
+ ## Configuration
283
+
284
+ | Setting | Controls | Default |
285
+ | ------- | -------- | ------- |
286
+ | `WARDEN_SENTRY_DSN` | Enables Sentry logs, issues, traces, and metrics | disabled |
287
+ | `WARDEN_MODEL` | Fallback model recorded on gen AI spans and JSONL | SDK default when unset |
288
+ | `WARDEN_ANTHROPIC_API_KEY` | Anthropic auth for CI and auxiliary calls | falls back to `ANTHROPIC_API_KEY` or Claude auth |
289
+ | `ANTHROPIC_API_KEY` | Secondary Anthropic auth source | unset |
290
+ | `GITHUB_REPOSITORY` | Action repository scope for `vcs.*` attributes | GitHub Actions only |
291
+ | `GITHUB_EVENT_NAME` | Action event and `github.event.name` attribute | GitHub Actions only |
292
+ | `GITHUB_RUN_ID` | Action run scope for `cicd.pipeline.run.*` attributes | GitHub Actions only |
293
+ | `GITHUB_WORKFLOW` | Action workflow name for `cicd.pipeline.name` | GitHub Actions only |
294
+ | `GITHUB_JOB` | Action job name for `cicd.pipeline.task.name` | GitHub Actions only |
295
+ | CLI `--output` | Explicit JSONL output location | `.warden/logs/` run file |
296
+
297
+ ## Attribute Notes
298
+
299
+ - `vcs.*`, `code.*`, and `gen_ai.*` fields follow OpenTelemetry semantic
300
+ conventions where applicable.
301
+ - `cicd.*` fields follow OpenTelemetry CI/CD semantic conventions for GitHub
302
+ Actions run metadata where there is a direct match.
303
+ - `warden.*` fields are Warden-owned local attributes for concepts that do not
304
+ have OpenTelemetry semantic attributes, such as triggers, hunks, finding
305
+ counts, and fix evaluation.
306
+ - `github.event.name` is GitHub-specific because OpenTelemetry does not define
307
+ the workflow trigger event name as a standard CI/CD attribute.
308
+ - `gen_ai.request.messages` and `gen_ai.response.text` may contain prompt or
309
+ model text. Use IDs, models, tokens, and status fields for triage unless the
310
+ incident specifically requires content inspection.
311
+ - `gen_ai.cost.total_tokens` stores SDK-reported USD cost despite the inherited
312
+ attribute name.
313
+ - `traceId` in JSONL is the same production pivot as Sentry `trace_id`.
314
+
315
+ ## References
316
+
317
+ - [OpenTelemetry GenAI semantic conventions](https://opentelemetry.io/docs/specs/semconv/gen-ai/)
318
+ - [OpenTelemetry GenAI agent spans](https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-agent-spans/)
319
+ - [OpenTelemetry VCS attributes](https://opentelemetry.io/docs/specs/semconv/registry/attributes/vcs/)
320
+ - [OpenTelemetry code attributes](https://opentelemetry.io/docs/specs/semconv/registry/attributes/code/)
321
+ - [OpenTelemetry CI/CD attributes](https://opentelemetry.io/docs/specs/semconv/registry/attributes/cicd/)
322
+ - [Sentry AI Agents module](https://develop.sentry.dev/sdk/telemetry/traces/modules/ai-agents/)
323
+ - [Sentry JavaScript Node SDK logs](https://docs.sentry.io/platforms/javascript/guides/node/logs/)
@@ -21,6 +21,7 @@ export declare function resolveInvocationCwd(baseCwd: string, cliCwd: string | u
21
21
  export interface RunSkillSpec {
22
22
  name: string;
23
23
  displayName?: string;
24
+ triggerName?: string;
24
25
  skill: string;
25
26
  remote?: string;
26
27
  failOn?: SeverityThreshold;
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
package/dist/cli/main.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync, renameSync, unlinkSync, writeFileSync } from 'node:fs';
2
2
  import { dirname, join, relative, resolve } from 'node:path';
3
3
  import { config as dotenvConfig } from 'dotenv';
4
- import { Sentry, flushSentry, setGlobalAttributes, emitRunMetric, getTraceId } from '../sentry.js';
4
+ import { Sentry, flushSentry, setRepositoryScope, emitRunMetric, getTraceId } from '../sentry.js';
5
5
  import { emptyToUndefined, loadWardenConfig, resolveSkillConfigs } from '../config/loader.js';
6
6
  import { verifyAuth } from '../sdk/runner.js';
7
7
  import { mapExtractionErrorCode } from '../sdk/errors.js';
@@ -479,6 +479,7 @@ async function createDirectSkillTask(args) {
479
479
  return {
480
480
  name: spec.name,
481
481
  displayName: spec.displayName,
482
+ triggerName: spec.triggerName,
482
483
  failOn: spec.failOn,
483
484
  minConfidence: spec.minConfidence,
484
485
  resolveSkill: async () => skill,
@@ -745,7 +746,7 @@ export async function runSkills(context, options, reporter) {
745
746
  skillsToRun = [];
746
747
  }
747
748
  // Set global telemetry context and emit run metric
748
- setGlobalAttributes({ 'warden.repository': context.repository.fullName });
749
+ setRepositoryScope(context.repository.fullName);
749
750
  emitRunMetric();
750
751
  // Handle case where no skills to run
751
752
  if (skillsToRun.length === 0) {
@@ -993,7 +994,7 @@ async function runConfigMode(options, reporter) {
993
994
  }
994
995
  reporter.contextFiles(pullRequest.files);
995
996
  // Set global telemetry context and emit run metric
996
- setGlobalAttributes({ 'warden.repository': context.repository.fullName });
997
+ setRepositoryScope(context.repository.fullName);
997
998
  emitRunMetric();
998
999
  // Resolve skills into triggers and match
999
1000
  const resolvedTriggers = resolveSkillConfigs(config, options.model);
@@ -1049,6 +1050,7 @@ async function runConfigMode(options, reporter) {
1049
1050
  const specs = triggersToRun.map((trigger) => ({
1050
1051
  name: trigger.name,
1051
1052
  displayName: trigger.skill,
1053
+ triggerName: trigger.name,
1052
1054
  skill: trigger.skill,
1053
1055
  remote: trigger.remote,
1054
1056
  failOn: trigger.failOn ?? options.failOn,