@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.
- package/CHANGELOG.md +236 -0
- package/TELEMETRY.md +323 -0
- package/dist/cli/main.d.ts +1 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +5 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/output/tasks.d.ts +1 -0
- package/dist/cli/output/tasks.d.ts.map +1 -1
- package/dist/cli/output/tasks.js +14 -6
- package/dist/cli/output/tasks.js.map +1 -1
- package/dist/output/dedup.d.ts +6 -0
- package/dist/output/dedup.d.ts.map +1 -1
- package/dist/output/dedup.js +18 -0
- package/dist/output/dedup.js.map +1 -1
- package/dist/sdk/analyze.d.ts.map +1 -1
- package/dist/sdk/analyze.js +39 -14
- package/dist/sdk/analyze.js.map +1 -1
- package/dist/sdk/extract.d.ts +1 -0
- package/dist/sdk/extract.d.ts.map +1 -1
- package/dist/sdk/extract.js +2 -0
- package/dist/sdk/extract.js.map +1 -1
- package/dist/sdk/fix-quality.d.ts +1 -0
- package/dist/sdk/fix-quality.d.ts.map +1 -1
- package/dist/sdk/fix-quality.js +1 -0
- package/dist/sdk/fix-quality.js.map +1 -1
- package/dist/sdk/haiku.d.ts +4 -0
- package/dist/sdk/haiku.d.ts.map +1 -1
- package/dist/sdk/haiku.js +8 -2
- package/dist/sdk/haiku.js.map +1 -1
- package/dist/sdk/json-output.d.ts +1 -0
- package/dist/sdk/json-output.d.ts.map +1 -1
- package/dist/sdk/json-output.js +1 -0
- package/dist/sdk/json-output.js.map +1 -1
- package/dist/sdk/post-process.d.ts.map +1 -1
- package/dist/sdk/post-process.js +6 -4
- package/dist/sdk/post-process.js.map +1 -1
- package/dist/sdk/runtimes/claude.d.ts.map +1 -1
- package/dist/sdk/runtimes/claude.js +6 -0
- package/dist/sdk/runtimes/claude.js.map +1 -1
- package/dist/sdk/runtimes/types.d.ts +4 -0
- package/dist/sdk/runtimes/types.d.ts.map +1 -1
- package/dist/sdk/types.d.ts +2 -0
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/sentry.d.ts +7 -2
- package/dist/sentry.d.ts.map +1 -1
- package/dist/sentry.js +92 -38
- package/dist/sentry.js.map +1 -1
- package/dist/skill-builder/agentic.d.ts.map +1 -1
- package/dist/skill-builder/agentic.js +1 -0
- package/dist/skill-builder/agentic.js.map +1 -1
- package/dist/skill-builder/outline.d.ts.map +1 -1
- package/dist/skill-builder/outline.js +1 -0
- package/dist/skill-builder/outline.js.map +1 -1
- 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/)
|
package/dist/cli/main.d.ts
CHANGED
package/dist/cli/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAA8C,KAAK,kBAAkB,EAA4B,MAAM,kBAAkB,CAAC;AAKjI,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,EAAuB,MAAM,mBAAmB,CAAC;AAIlH,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAExF,OAAO,EAAE,sBAAsB,EAAyB,MAAM,cAAc,CAAC;AAG7E,OAAO,EACL,QAAQ,EAIR,aAAa,EAcb,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAoB3B;;;GAGG;AACH,eAAO,MAAM,eAAe,iBAAwB,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,WAAW;;CAAmB,CAAC;AAiC5C,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAExF;AAiYD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC;IAC5D,aAAa,EAAE,kBAAkB,CAAC;CACnC;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,KAAK,0BAA0B,GAAG,IAAI,CACpC,kBAAkB,EAClB,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,gBAAgB,CAClH,CAAC;AA0BF,yDAAyD;AACzD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,EACvC,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAepB;AAED,gFAAgF;AAChF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,0BAA0B,GACpC,kBAAkB,CAcpB;
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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,
|