@sentry/warden 0.7.0 → 0.9.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/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +4 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +10 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/output/formatters.d.ts.map +1 -1
- package/dist/cli/output/formatters.js +3 -8
- package/dist/cli/output/formatters.js.map +1 -1
- package/dist/config/schema.js +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/output/github-checks.d.ts.map +1 -1
- package/dist/output/github-checks.js +1 -2
- package/dist/output/github-checks.js.map +1 -1
- package/dist/output/renderer.js +1 -1
- package/dist/output/renderer.js.map +1 -1
- package/dist/output/types.d.ts +1 -1
- package/dist/output/types.d.ts.map +1 -1
- package/dist/sdk/analyze.d.ts.map +1 -1
- package/dist/sdk/analyze.js +100 -11
- package/dist/sdk/analyze.js.map +1 -1
- package/dist/sdk/extract.d.ts +1 -1
- package/dist/sdk/extract.d.ts.map +1 -1
- package/dist/sdk/extract.js +48 -31
- package/dist/sdk/extract.js.map +1 -1
- package/dist/sdk/haiku.d.ts +20 -0
- package/dist/sdk/haiku.d.ts.map +1 -1
- package/dist/sdk/haiku.js +159 -77
- package/dist/sdk/haiku.js.map +1 -1
- package/dist/sdk/pricing.d.ts +5 -0
- package/dist/sdk/pricing.d.ts.map +1 -1
- package/dist/sdk/pricing.js +11 -2
- package/dist/sdk/pricing.js.map +1 -1
- package/dist/sdk/usage.d.ts +5 -0
- package/dist/sdk/usage.d.ts.map +1 -1
- package/dist/sdk/usage.js +11 -3
- package/dist/sdk/usage.js.map +1 -1
- package/dist/triggers/matcher.d.ts +2 -2
- package/dist/triggers/matcher.d.ts.map +1 -1
- package/dist/triggers/matcher.js +10 -8
- package/dist/triggers/matcher.js.map +1 -1
- package/package.json +1 -1
- package/plugins/warden/skills/warden/references/config-schema.md +4 -2
- package/plugins/warden/skills/warden/references/configuration.md +2 -2
package/dist/sdk/haiku.js
CHANGED
|
@@ -1,9 +1,33 @@
|
|
|
1
1
|
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
+
import { Sentry } from '../sentry.js';
|
|
2
3
|
import { apiUsageToStats } from './pricing.js';
|
|
3
4
|
import { aggregateUsage, emptyUsage } from './usage.js';
|
|
4
|
-
const HAIKU_MODEL = 'claude-haiku-4-5';
|
|
5
|
+
export const HAIKU_MODEL = 'claude-haiku-4-5';
|
|
5
6
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
6
7
|
const DEFAULT_MAX_TOKENS = 4096;
|
|
8
|
+
/**
|
|
9
|
+
* Set standard gen_ai response attributes on a Sentry span.
|
|
10
|
+
*
|
|
11
|
+
* Follows the same token accounting as analyze.ts: gen_ai.usage.input_tokens
|
|
12
|
+
* is the total (non-cached + cache_read + cache_creation), with cache fields
|
|
13
|
+
* as subsets.
|
|
14
|
+
*/
|
|
15
|
+
export function setGenAiResponseAttrs(span, usage, stopReason, responseText) {
|
|
16
|
+
const cacheRead = usage.cache_read_input_tokens ?? 0;
|
|
17
|
+
const cacheWrite = usage.cache_creation_input_tokens ?? 0;
|
|
18
|
+
const totalInput = usage.input_tokens + cacheRead + cacheWrite;
|
|
19
|
+
span.setAttribute('gen_ai.usage.input_tokens', totalInput);
|
|
20
|
+
span.setAttribute('gen_ai.usage.output_tokens', usage.output_tokens);
|
|
21
|
+
span.setAttribute('gen_ai.usage.input_tokens.cached', cacheRead);
|
|
22
|
+
span.setAttribute('gen_ai.usage.input_tokens.cache_write', cacheWrite);
|
|
23
|
+
span.setAttribute('gen_ai.usage.total_tokens', totalInput + usage.output_tokens);
|
|
24
|
+
if (stopReason) {
|
|
25
|
+
span.setAttribute('gen_ai.response.finish_reasons', [stopReason]);
|
|
26
|
+
}
|
|
27
|
+
if (responseText !== undefined) {
|
|
28
|
+
span.setAttribute('gen_ai.response.text', JSON.stringify([responseText]));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
7
31
|
/**
|
|
8
32
|
* Strip markdown code fences from text.
|
|
9
33
|
*/
|
|
@@ -77,44 +101,58 @@ function inferPrefill(schema) {
|
|
|
77
101
|
*/
|
|
78
102
|
export async function callHaiku(options) {
|
|
79
103
|
const { apiKey, prompt, schema, maxTokens = DEFAULT_MAX_TOKENS, timeout = DEFAULT_TIMEOUT_MS } = options;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const content = response.content[0];
|
|
96
|
-
if (!content || content.type !== 'text') {
|
|
97
|
-
return { success: false, error: 'Empty response from model', usage };
|
|
98
|
-
}
|
|
99
|
-
let fullText = content.text;
|
|
104
|
+
return Sentry.startSpan({
|
|
105
|
+
op: 'gen_ai.chat',
|
|
106
|
+
name: `chat ${HAIKU_MODEL}`,
|
|
107
|
+
attributes: {
|
|
108
|
+
'gen_ai.operation.name': 'chat',
|
|
109
|
+
'gen_ai.provider.name': 'anthropic',
|
|
110
|
+
'gen_ai.request.model': HAIKU_MODEL,
|
|
111
|
+
'gen_ai.request.max_tokens': maxTokens,
|
|
112
|
+
},
|
|
113
|
+
}, async (span) => {
|
|
114
|
+
const client = new Anthropic({ apiKey, timeout });
|
|
115
|
+
const prefill = inferPrefill(schema);
|
|
116
|
+
const messages = [
|
|
117
|
+
{ role: 'user', content: prompt },
|
|
118
|
+
];
|
|
100
119
|
if (prefill) {
|
|
101
|
-
|
|
120
|
+
messages.push({ role: 'assistant', content: prefill });
|
|
102
121
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
122
|
+
span.setAttribute('gen_ai.request.messages', JSON.stringify(messages));
|
|
123
|
+
try {
|
|
124
|
+
const response = await client.messages.create({
|
|
125
|
+
model: HAIKU_MODEL,
|
|
126
|
+
max_tokens: maxTokens,
|
|
127
|
+
messages,
|
|
128
|
+
});
|
|
129
|
+
const usage = apiUsageToStats(HAIKU_MODEL, response.usage);
|
|
130
|
+
const content = response.content[0];
|
|
131
|
+
if (!content || content.type !== 'text') {
|
|
132
|
+
setGenAiResponseAttrs(span, response.usage, response.stop_reason);
|
|
133
|
+
return { success: false, error: 'Empty response from model', usage };
|
|
134
|
+
}
|
|
135
|
+
let fullText = content.text;
|
|
136
|
+
if (prefill) {
|
|
137
|
+
fullText = prefill + fullText;
|
|
138
|
+
}
|
|
139
|
+
setGenAiResponseAttrs(span, response.usage, response.stop_reason, fullText);
|
|
140
|
+
const jsonStr = extractJson(fullText);
|
|
141
|
+
if (!jsonStr) {
|
|
142
|
+
return { success: false, error: 'No JSON found in response', usage };
|
|
143
|
+
}
|
|
144
|
+
const parsed = JSON.parse(jsonStr);
|
|
145
|
+
const validated = schema.safeParse(parsed);
|
|
146
|
+
if (!validated.success) {
|
|
147
|
+
return { success: false, error: `Validation failed: ${validated.error.message}`, usage };
|
|
148
|
+
}
|
|
149
|
+
return { success: true, data: validated.data, usage };
|
|
106
150
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return { success: false, error: `Validation failed: ${validated.error.message}`, usage };
|
|
151
|
+
catch (error) {
|
|
152
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
153
|
+
return { success: false, error: message, usage: emptyUsage() };
|
|
111
154
|
}
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
catch (error) {
|
|
115
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
116
|
-
return { success: false, error: message, usage: emptyUsage() };
|
|
117
|
-
}
|
|
155
|
+
});
|
|
118
156
|
}
|
|
119
157
|
/**
|
|
120
158
|
* Multi-turn Haiku call with tool use loop.
|
|
@@ -123,55 +161,98 @@ export async function callHaiku(options) {
|
|
|
123
161
|
*/
|
|
124
162
|
export async function callHaikuWithTools(options) {
|
|
125
163
|
const { apiKey, prompt, schema, tools, executeTool, maxTokens = DEFAULT_MAX_TOKENS, maxIterations = 5, timeout = DEFAULT_TIMEOUT_MS, } = options;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
164
|
+
return Sentry.startSpan({
|
|
165
|
+
op: 'gen_ai.chat',
|
|
166
|
+
name: `chat ${HAIKU_MODEL}`,
|
|
167
|
+
attributes: {
|
|
168
|
+
'gen_ai.operation.name': 'chat',
|
|
169
|
+
'gen_ai.provider.name': 'anthropic',
|
|
170
|
+
'gen_ai.request.model': HAIKU_MODEL,
|
|
171
|
+
'gen_ai.request.max_tokens': maxTokens,
|
|
172
|
+
},
|
|
173
|
+
}, async (span) => {
|
|
174
|
+
const client = new Anthropic({ apiKey, timeout });
|
|
175
|
+
// No prefill for tool-use loops: prefill biases the model to output JSON
|
|
176
|
+
// immediately instead of calling tools to gather information first.
|
|
177
|
+
const messages = [
|
|
178
|
+
{ role: 'user', content: prompt },
|
|
179
|
+
];
|
|
180
|
+
span.setAttribute('gen_ai.request.messages', JSON.stringify(messages));
|
|
181
|
+
const usages = [];
|
|
182
|
+
// Accumulate raw API usage across iterations so setGenAiResponseAttrs
|
|
183
|
+
// can compute totals consistently (input_tokens + cache subsets).
|
|
184
|
+
const cumulativeUsage = {
|
|
185
|
+
input_tokens: 0,
|
|
186
|
+
output_tokens: 0,
|
|
187
|
+
cache_read_input_tokens: 0,
|
|
188
|
+
cache_creation_input_tokens: 0,
|
|
189
|
+
};
|
|
190
|
+
function setFinalSpanAttrs(stopReason, responseText) {
|
|
191
|
+
setGenAiResponseAttrs(span, cumulativeUsage, stopReason, responseText);
|
|
142
192
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
return { success: false, error: message, usage: usages.length > 0 ? aggregateUsage(usages) : emptyUsage() };
|
|
193
|
+
function currentUsage() {
|
|
194
|
+
return usages.length > 0 ? aggregateUsage(usages) : emptyUsage();
|
|
146
195
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
196
|
+
for (let iteration = 0; iteration < maxIterations; iteration++) {
|
|
197
|
+
let response;
|
|
198
|
+
try {
|
|
199
|
+
response = await client.messages.create({
|
|
200
|
+
model: HAIKU_MODEL,
|
|
201
|
+
max_tokens: maxTokens,
|
|
202
|
+
messages,
|
|
203
|
+
tools,
|
|
204
|
+
});
|
|
153
205
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
206
|
+
catch (error) {
|
|
207
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
208
|
+
return { success: false, error: message, usage: currentUsage() };
|
|
209
|
+
}
|
|
210
|
+
usages.push(apiUsageToStats(HAIKU_MODEL, response.usage));
|
|
211
|
+
cumulativeUsage.input_tokens += response.usage.input_tokens;
|
|
212
|
+
cumulativeUsage.output_tokens += response.usage.output_tokens;
|
|
213
|
+
cumulativeUsage.cache_read_input_tokens += response.usage.cache_read_input_tokens ?? 0;
|
|
214
|
+
cumulativeUsage.cache_creation_input_tokens += response.usage.cache_creation_input_tokens ?? 0;
|
|
215
|
+
// Handle tool use
|
|
216
|
+
if (response.stop_reason === 'tool_use') {
|
|
217
|
+
const toolUseBlocks = response.content.filter((b) => b.type === 'tool_use');
|
|
218
|
+
if (toolUseBlocks.length === 0) {
|
|
219
|
+
return { success: false, error: 'Tool use indicated but no tool calls found', usage: aggregateUsage(usages) };
|
|
159
220
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
221
|
+
const toolResults = [];
|
|
222
|
+
for (const block of toolUseBlocks) {
|
|
223
|
+
await Sentry.startSpan({
|
|
224
|
+
op: 'gen_ai.execute_tool',
|
|
225
|
+
name: `execute_tool ${block.name}`,
|
|
226
|
+
attributes: {
|
|
227
|
+
'gen_ai.operation.name': 'execute_tool',
|
|
228
|
+
'gen_ai.tool.name': block.name,
|
|
229
|
+
},
|
|
230
|
+
}, async () => {
|
|
231
|
+
try {
|
|
232
|
+
const result = await executeTool(block.name, block.input);
|
|
233
|
+
toolResults.push({ type: 'tool_result', tool_use_id: block.id, content: result });
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
237
|
+
toolResults.push({ type: 'tool_result', tool_use_id: block.id, content: errMsg, is_error: true });
|
|
238
|
+
}
|
|
239
|
+
});
|
|
163
240
|
}
|
|
241
|
+
messages.push({ role: 'assistant', content: response.content });
|
|
242
|
+
messages.push({ role: 'user', content: toolResults });
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
245
|
+
// Final response - extract text and set span attributes
|
|
246
|
+
if (response.stop_reason !== 'end_turn' && response.stop_reason !== 'max_tokens') {
|
|
247
|
+
setFinalSpanAttrs(response.stop_reason);
|
|
248
|
+
return { success: false, error: `Unexpected stop reason: ${response.stop_reason}`, usage: aggregateUsage(usages) };
|
|
164
249
|
}
|
|
165
|
-
messages.push({ role: 'assistant', content: response.content });
|
|
166
|
-
messages.push({ role: 'user', content: toolResults });
|
|
167
|
-
continue;
|
|
168
|
-
}
|
|
169
|
-
// Final response - extract JSON verdict
|
|
170
|
-
if (response.stop_reason === 'end_turn' || response.stop_reason === 'max_tokens') {
|
|
171
250
|
const textBlock = response.content.find((b) => b.type === 'text');
|
|
172
251
|
if (!textBlock) {
|
|
252
|
+
setFinalSpanAttrs(response.stop_reason);
|
|
173
253
|
return { success: false, error: 'No text in final response', usage: aggregateUsage(usages) };
|
|
174
254
|
}
|
|
255
|
+
setFinalSpanAttrs(response.stop_reason, textBlock.text);
|
|
175
256
|
const jsonStr = extractJson(textBlock.text);
|
|
176
257
|
if (!jsonStr) {
|
|
177
258
|
return { success: false, error: 'No JSON found in response', usage: aggregateUsage(usages) };
|
|
@@ -183,8 +264,9 @@ export async function callHaikuWithTools(options) {
|
|
|
183
264
|
}
|
|
184
265
|
return { success: true, data: validated.data, usage: aggregateUsage(usages) };
|
|
185
266
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
267
|
+
// Max iterations exceeded - still record usage on span
|
|
268
|
+
setFinalSpanAttrs();
|
|
269
|
+
return { success: false, error: 'Max tool iterations exceeded', usage: aggregateUsage(usages) };
|
|
270
|
+
});
|
|
189
271
|
}
|
|
190
272
|
//# sourceMappingURL=haiku.js.map
|
package/dist/sdk/haiku.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"haiku.js","sourceRoot":"","sources":["../../src/sdk/haiku.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"haiku.js","sourceRoot":"","sources":["../../src/sdk/haiku.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/pricing.d.ts
CHANGED
|
@@ -11,6 +11,11 @@ interface ApiUsage {
|
|
|
11
11
|
/**
|
|
12
12
|
* Convert Anthropic API usage to our UsageStats format.
|
|
13
13
|
* Calculates cost from token counts using model pricing.
|
|
14
|
+
*
|
|
15
|
+
* The Anthropic API reports `input_tokens` as only the non-cached portion.
|
|
16
|
+
* We normalize so that `inputTokens` is the *total* input tokens
|
|
17
|
+
* (non-cached + cache_read + cache_creation), with the cache fields
|
|
18
|
+
* being subsets of that total.
|
|
14
19
|
*/
|
|
15
20
|
export declare function apiUsageToStats(model: string, usage: ApiUsage): UsageStats;
|
|
16
21
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/sdk/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA+BpD;;GAEG;AACH,UAAU,QAAQ;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,2BAA2B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/sdk/pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA+BpD;;GAEG;AACH,UAAU,QAAQ;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,2BAA2B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,UAAU,CA6B1E"}
|
package/dist/sdk/pricing.js
CHANGED
|
@@ -15,17 +15,26 @@ const MODEL_PRICING = Object.fromEntries(Object.entries(rawPricing).map(([id, p]
|
|
|
15
15
|
/**
|
|
16
16
|
* Convert Anthropic API usage to our UsageStats format.
|
|
17
17
|
* Calculates cost from token counts using model pricing.
|
|
18
|
+
*
|
|
19
|
+
* The Anthropic API reports `input_tokens` as only the non-cached portion.
|
|
20
|
+
* We normalize so that `inputTokens` is the *total* input tokens
|
|
21
|
+
* (non-cached + cache_read + cache_creation), with the cache fields
|
|
22
|
+
* being subsets of that total.
|
|
18
23
|
*/
|
|
19
24
|
export function apiUsageToStats(model, usage) {
|
|
20
25
|
const pricing = MODEL_PRICING[model];
|
|
21
|
-
const inputTokens = usage.input_tokens;
|
|
22
26
|
const outputTokens = usage.output_tokens;
|
|
23
27
|
const cacheReadInputTokens = usage.cache_read_input_tokens ?? 0;
|
|
24
28
|
const cacheCreationInputTokens = usage.cache_creation_input_tokens ?? 0;
|
|
29
|
+
// inputTokens is the total: raw API input_tokens + cache subsets.
|
|
30
|
+
const inputTokens = usage.input_tokens + cacheReadInputTokens + cacheCreationInputTokens;
|
|
31
|
+
// Cost: deduct cache subsets from total to get the non-cached portion,
|
|
32
|
+
// then charge each category at its respective rate.
|
|
25
33
|
let costUSD = 0;
|
|
26
34
|
if (pricing) {
|
|
35
|
+
const freshInputTokens = inputTokens - cacheReadInputTokens - cacheCreationInputTokens;
|
|
27
36
|
costUSD =
|
|
28
|
-
|
|
37
|
+
freshInputTokens * pricing.inputPerToken +
|
|
29
38
|
outputTokens * pricing.outputPerToken +
|
|
30
39
|
cacheReadInputTokens * pricing.cacheReadPerToken +
|
|
31
40
|
cacheCreationInputTokens * pricing.cacheCreationPerToken;
|
package/dist/sdk/pricing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/sdk/pricing.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,sBAAsB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAcpE;;;GAGG;AACH,MAAM,aAAa,GAAiC,MAAM,CAAC,WAAW,CACpE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC1C,EAAE;IACF;QACE,aAAa,EAAE,CAAC,CAAC,YAAY,GAAG,SAAS;QACzC,cAAc,EAAE,CAAC,CAAC,aAAa,GAAG,SAAS;QAC3C,iBAAiB,EAAE,CAAC,CAAC,gBAAgB,GAAG,SAAS;QACjD,qBAAqB,EAAE,CAAC,CAAC,iBAAiB,GAAG,SAAS;KACvD;CACF,CAAC,CACH,CAAC;AAYF
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/sdk/pricing.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,MAAM,sBAAsB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAcpE;;;GAGG;AACH,MAAM,aAAa,GAAiC,MAAM,CAAC,WAAW,CACpE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC1C,EAAE;IACF;QACE,aAAa,EAAE,CAAC,CAAC,YAAY,GAAG,SAAS;QACzC,cAAc,EAAE,CAAC,CAAC,aAAa,GAAG,SAAS;QAC3C,iBAAiB,EAAE,CAAC,CAAC,gBAAgB,GAAG,SAAS;QACjD,qBAAqB,EAAE,CAAC,CAAC,iBAAiB,GAAG,SAAS;KACvD;CACF,CAAC,CACH,CAAC;AAYF;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAe;IAC5D,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAErC,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC;IACzC,MAAM,oBAAoB,GAAG,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC;IAChE,MAAM,wBAAwB,GAAG,KAAK,CAAC,2BAA2B,IAAI,CAAC,CAAC;IAExE,kEAAkE;IAClE,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,GAAG,oBAAoB,GAAG,wBAAwB,CAAC;IAEzF,uEAAuE;IACvE,oDAAoD;IACpD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,gBAAgB,GAAG,WAAW,GAAG,oBAAoB,GAAG,wBAAwB,CAAC;QACvF,OAAO;YACL,gBAAgB,GAAG,OAAO,CAAC,aAAa;gBACxC,YAAY,GAAG,OAAO,CAAC,cAAc;gBACrC,oBAAoB,GAAG,OAAO,CAAC,iBAAiB;gBAChD,wBAAwB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,WAAW;QACX,YAAY;QACZ,oBAAoB;QACpB,wBAAwB;QACxB,OAAO;KACR,CAAC;AACJ,CAAC"}
|
package/dist/sdk/usage.d.ts
CHANGED
|
@@ -3,6 +3,11 @@ import type { UsageStats, AuxiliaryUsageMap } from '../types/index.js';
|
|
|
3
3
|
import type { AuxiliaryUsageEntry } from './types.js';
|
|
4
4
|
/**
|
|
5
5
|
* Extract usage stats from an SDK result message.
|
|
6
|
+
*
|
|
7
|
+
* The Anthropic API reports `input_tokens` as only the non-cached portion.
|
|
8
|
+
* We normalize so that `inputTokens` is the *total* input tokens
|
|
9
|
+
* (non-cached + cache_read + cache_creation), with the cache fields
|
|
10
|
+
* being subsets of that total.
|
|
6
11
|
*/
|
|
7
12
|
export declare function extractUsage(result: SDKResultMessage): UsageStats;
|
|
8
13
|
/**
|
package/dist/sdk/usage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/sdk/usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/sdk/usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAWjE;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,UAAU,CAQvC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAW/D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,mBAAmB,EAAE,GAC7B,iBAAiB,GAAG,SAAS,CAoB/B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,iBAAiB,GAAG,SAAS,EAChC,CAAC,EAAE,iBAAiB,GAAG,SAAS,GAC/B,iBAAiB,GAAG,SAAS,CAa/B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
package/dist/sdk/usage.js
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Extract usage stats from an SDK result message.
|
|
3
|
+
*
|
|
4
|
+
* The Anthropic API reports `input_tokens` as only the non-cached portion.
|
|
5
|
+
* We normalize so that `inputTokens` is the *total* input tokens
|
|
6
|
+
* (non-cached + cache_read + cache_creation), with the cache fields
|
|
7
|
+
* being subsets of that total.
|
|
3
8
|
*/
|
|
4
9
|
export function extractUsage(result) {
|
|
10
|
+
const rawInput = result.usage['input_tokens'];
|
|
11
|
+
const cacheRead = result.usage['cache_read_input_tokens'] ?? 0;
|
|
12
|
+
const cacheCreation = result.usage['cache_creation_input_tokens'] ?? 0;
|
|
5
13
|
return {
|
|
6
|
-
inputTokens:
|
|
14
|
+
inputTokens: rawInput + cacheRead + cacheCreation,
|
|
7
15
|
outputTokens: result.usage['output_tokens'],
|
|
8
|
-
cacheReadInputTokens:
|
|
9
|
-
cacheCreationInputTokens:
|
|
16
|
+
cacheReadInputTokens: cacheRead,
|
|
17
|
+
cacheCreationInputTokens: cacheCreation,
|
|
10
18
|
costUSD: result.total_cost_usd,
|
|
11
19
|
};
|
|
12
20
|
}
|
package/dist/sdk/usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/sdk/usage.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/sdk/usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,8 +23,8 @@ export declare function filterContextByPaths(context: EventContext, filters: {
|
|
|
23
23
|
*
|
|
24
24
|
* Trigger types:
|
|
25
25
|
* - '*' (wildcard): matches all environments, skips event/action checks
|
|
26
|
-
* - 'local': matches only when environment is 'local'
|
|
27
|
-
* - 'pull_request': matches
|
|
26
|
+
* - 'local': matches only when environment is 'local' (local-only skills)
|
|
27
|
+
* - 'pull_request': matches in 'github' (with event/action checks) and 'local' (path filters only)
|
|
28
28
|
* - 'schedule': matches when event is schedule
|
|
29
29
|
*/
|
|
30
30
|
export declare function matchTrigger(trigger: ResolvedTrigger, context: EventContext, environment?: TriggerType | 'github'): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/triggers/matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhG,gDAAgD;AAChD,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AA8CD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAsCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACpD,YAAY,CAkCd;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,YAAY,EACrB,WAAW,CAAC,EAAE,WAAW,GAAG,QAAQ,GACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/triggers/matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhG,gDAAgD;AAChD,wBAAgB,cAAc,IAAI,IAAI,CAErC;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AA8CD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAsCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACpD,YAAY,CAkCd;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,YAAY,EACrB,WAAW,CAAC,EAAE,WAAW,GAAG,QAAQ,GACnC,OAAO,CAqCT;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAIlF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAI7F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAMhF"}
|
package/dist/triggers/matcher.js
CHANGED
|
@@ -113,8 +113,8 @@ export function filterContextByPaths(context, filters) {
|
|
|
113
113
|
*
|
|
114
114
|
* Trigger types:
|
|
115
115
|
* - '*' (wildcard): matches all environments, skips event/action checks
|
|
116
|
-
* - 'local': matches only when environment is 'local'
|
|
117
|
-
* - 'pull_request': matches
|
|
116
|
+
* - 'local': matches only when environment is 'local' (local-only skills)
|
|
117
|
+
* - 'pull_request': matches in 'github' (with event/action checks) and 'local' (path filters only)
|
|
118
118
|
* - 'schedule': matches when event is schedule
|
|
119
119
|
*/
|
|
120
120
|
export function matchTrigger(trigger, context, environment) {
|
|
@@ -131,13 +131,15 @@ export function matchTrigger(trigger, context, environment) {
|
|
|
131
131
|
}
|
|
132
132
|
if (trigger.type === 'pull_request') {
|
|
133
133
|
if (environment === 'local') {
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
if (context.eventType !== 'pull_request') {
|
|
137
|
-
return false;
|
|
134
|
+
// Local mode runs all skills — skip event/action checks, fall through to path filters
|
|
138
135
|
}
|
|
139
|
-
|
|
140
|
-
|
|
136
|
+
else {
|
|
137
|
+
if (context.eventType !== 'pull_request') {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
if (!trigger.actions?.includes(context.action)) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
141
143
|
}
|
|
142
144
|
}
|
|
143
145
|
if (trigger.type === 'schedule') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/triggers/matcher.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/triggers/matcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -69,8 +69,10 @@ fixBranchPrefix = "security-fix" # Branch name prefix
|
|
|
69
69
|
|
|
70
70
|
**Trigger types:**
|
|
71
71
|
- `pull_request` - Triggers on PR events
|
|
72
|
-
- `local` -
|
|
73
|
-
- `schedule` -
|
|
72
|
+
- `local` - Local CLI only (will not run in CI)
|
|
73
|
+
- `schedule` - Cron schedule (GitHub Action only)
|
|
74
|
+
|
|
75
|
+
All skills run locally regardless of trigger type. Skills with no triggers run everywhere (wildcard). Use `type = "local"` for skills that should *only* run locally.
|
|
74
76
|
|
|
75
77
|
**Actions (for pull_request):**
|
|
76
78
|
- `opened`, `synchronize`, `reopened`, `closed`
|
|
@@ -21,7 +21,7 @@ actions = ["opened", "synchronize"]
|
|
|
21
21
|
|
|
22
22
|
## Skill Configuration
|
|
23
23
|
|
|
24
|
-
Skills define what to analyze and when. Each skill requires a name
|
|
24
|
+
Skills define what to analyze and when. Each skill requires a name. Triggers are optional — skills with no triggers run everywhere (PR, local, schedule). All skills run locally regardless of trigger type.
|
|
25
25
|
|
|
26
26
|
```toml
|
|
27
27
|
[[skills]]
|
|
@@ -36,7 +36,7 @@ type = "pull_request"
|
|
|
36
36
|
actions = ["opened", "synchronize"]
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
**Trigger types:** `pull_request`, `local
|
|
39
|
+
**Trigger types:** `pull_request`, `local` (local-only), `schedule` (CI-only)
|
|
40
40
|
|
|
41
41
|
**Actions (pull_request):** `opened`, `synchronize`, `reopened`, `closed`
|
|
42
42
|
|