@sentry/warden 0.3.0 → 0.5.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/.claude-plugin/marketplace.json +20 -0
- package/README.md +1 -1
- package/dist/cli/args.d.ts +3 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +15 -4
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +51 -31
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +12 -14
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/context.d.ts.map +1 -1
- package/dist/cli/context.js +3 -1
- package/dist/cli/context.js.map +1 -1
- package/dist/cli/git.d.ts +4 -0
- package/dist/cli/git.d.ts.map +1 -1
- package/dist/cli/git.js +7 -1
- package/dist/cli/git.js.map +1 -1
- package/dist/cli/index.js +11 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/main.d.ts +7 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +41 -26
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/output/formatters.d.ts +18 -3
- package/dist/cli/output/formatters.d.ts.map +1 -1
- package/dist/cli/output/formatters.js +32 -7
- package/dist/cli/output/formatters.js.map +1 -1
- package/dist/cli/output/index.d.ts +1 -1
- package/dist/cli/output/index.d.ts.map +1 -1
- package/dist/cli/output/index.js +1 -1
- package/dist/cli/output/index.js.map +1 -1
- package/dist/cli/output/ink-runner.d.ts.map +1 -1
- package/dist/cli/output/ink-runner.js +29 -8
- package/dist/cli/output/ink-runner.js.map +1 -1
- package/dist/cli/output/jsonl.d.ts +39 -1
- package/dist/cli/output/jsonl.d.ts.map +1 -1
- package/dist/cli/output/jsonl.js +12 -0
- package/dist/cli/output/jsonl.js.map +1 -1
- package/dist/cli/output/reporter.d.ts +2 -2
- package/dist/cli/output/reporter.d.ts.map +1 -1
- package/dist/cli/output/reporter.js +70 -37
- package/dist/cli/output/reporter.js.map +1 -1
- package/dist/cli/output/tasks.d.ts +12 -0
- package/dist/cli/output/tasks.d.ts.map +1 -1
- package/dist/cli/output/tasks.js +157 -42
- package/dist/cli/output/tasks.js.map +1 -1
- package/dist/cli/output/tty.d.ts +9 -0
- package/dist/cli/output/tty.d.ts.map +1 -1
- package/dist/cli/output/tty.js +13 -0
- package/dist/cli/output/tty.js.map +1 -1
- package/dist/cli/output/verbosity.d.ts +2 -1
- package/dist/cli/output/verbosity.d.ts.map +1 -1
- package/dist/cli/output/verbosity.js +3 -2
- package/dist/cli/output/verbosity.js.map +1 -1
- package/dist/cli/terminal.d.ts +2 -2
- package/dist/cli/terminal.d.ts.map +1 -1
- package/dist/cli/terminal.js +33 -20
- package/dist/cli/terminal.js.map +1 -1
- package/dist/config/loader.d.ts +40 -12
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +71 -23
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +147 -111
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +67 -49
- package/dist/config/schema.js.map +1 -1
- package/dist/config/writer.d.ts +5 -5
- package/dist/config/writer.d.ts.map +1 -1
- package/dist/config/writer.js +76 -45
- package/dist/config/writer.js.map +1 -1
- package/dist/event/context.d.ts.map +1 -1
- package/dist/event/context.js +3 -1
- package/dist/event/context.js.map +1 -1
- package/dist/event/schedule-context.d.ts.map +1 -1
- package/dist/event/schedule-context.js +1 -0
- package/dist/event/schedule-context.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/output/dedup.d.ts +3 -1
- package/dist/output/dedup.d.ts.map +1 -1
- package/dist/output/dedup.js +25 -32
- package/dist/output/dedup.js.map +1 -1
- package/dist/output/github-checks.d.ts +6 -4
- package/dist/output/github-checks.d.ts.map +1 -1
- package/dist/output/github-checks.js +67 -88
- package/dist/output/github-checks.js.map +1 -1
- package/dist/output/github-issues.d.ts.map +1 -1
- package/dist/output/github-issues.js +9 -14
- package/dist/output/github-issues.js.map +1 -1
- package/dist/output/issue-renderer.js +1 -1
- package/dist/output/issue-renderer.js.map +1 -1
- package/dist/output/renderer.d.ts.map +1 -1
- package/dist/output/renderer.js +18 -31
- package/dist/output/renderer.js.map +1 -1
- package/dist/output/stale.d.ts +4 -0
- package/dist/output/stale.d.ts.map +1 -1
- package/dist/output/stale.js +7 -2
- package/dist/output/stale.js.map +1 -1
- package/dist/output/types.d.ts +2 -7
- package/dist/output/types.d.ts.map +1 -1
- package/dist/sdk/analyze.d.ts.map +1 -1
- package/dist/sdk/analyze.js +89 -24
- package/dist/sdk/analyze.js.map +1 -1
- package/dist/sdk/extract.d.ts +12 -2
- package/dist/sdk/extract.d.ts.map +1 -1
- package/dist/sdk/extract.js +22 -3
- package/dist/sdk/extract.js.map +1 -1
- package/dist/sdk/haiku.d.ts +55 -0
- package/dist/sdk/haiku.d.ts.map +1 -0
- package/dist/sdk/haiku.js +190 -0
- package/dist/sdk/haiku.js.map +1 -0
- package/dist/sdk/model-pricing.json +104 -0
- package/dist/sdk/pricing.d.ts +17 -0
- package/dist/sdk/pricing.d.ts.map +1 -0
- package/dist/sdk/pricing.js +41 -0
- package/dist/sdk/pricing.js.map +1 -0
- package/dist/sdk/runner.d.ts +4 -3
- package/dist/sdk/runner.d.ts.map +1 -1
- package/dist/sdk/runner.js +4 -2
- package/dist/sdk/runner.js.map +1 -1
- package/dist/sdk/types.d.ts +15 -0
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/sdk/types.js.map +1 -1
- package/dist/sdk/usage.d.ts +13 -1
- package/dist/sdk/usage.d.ts.map +1 -1
- package/dist/sdk/usage.js +46 -0
- package/dist/sdk/usage.js.map +1 -1
- package/dist/triggers/matcher.d.ts +18 -3
- package/dist/triggers/matcher.d.ts.map +1 -1
- package/dist/triggers/matcher.js +75 -18
- package/dist/triggers/matcher.js.map +1 -1
- package/dist/types/index.d.ts +42 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +14 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +4 -2
- package/plugins/.claude-plugin/marketplace.json +14 -0
- package/plugins/warden/.claude-plugin/plugin.json +7 -0
- package/plugins/warden/skills/warden/SKILL.md +78 -0
- package/plugins/warden/skills/warden/references/cli-reference.md +144 -0
- package/plugins/warden/skills/warden/references/config-schema.md +111 -0
- package/plugins/warden/skills/warden/references/configuration.md +108 -0
- package/plugins/warden/skills/warden/references/creating-skills.md +85 -0
- package/scripts/update-pricing.ts +88 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
+
import { apiUsageToStats } from './pricing.js';
|
|
3
|
+
import { aggregateUsage, emptyUsage } from './usage.js';
|
|
4
|
+
const HAIKU_MODEL = 'claude-haiku-4-5';
|
|
5
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
6
|
+
const DEFAULT_MAX_TOKENS = 4096;
|
|
7
|
+
/**
|
|
8
|
+
* Strip markdown code fences from text.
|
|
9
|
+
*/
|
|
10
|
+
function stripCodeFences(text) {
|
|
11
|
+
const match = text.match(/```[\w+#-]*\s*([\s\S]*?)```/);
|
|
12
|
+
return match?.[1]?.trim() ?? text;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Extract the first JSON object or array from LLM text.
|
|
16
|
+
* Handles markdown code fences and prose before/after JSON.
|
|
17
|
+
*/
|
|
18
|
+
export function extractJson(text) {
|
|
19
|
+
const stripped = stripCodeFences(text).trim();
|
|
20
|
+
// Try parsing the whole thing first (common case: clean JSON output)
|
|
21
|
+
try {
|
|
22
|
+
JSON.parse(stripped);
|
|
23
|
+
return stripped;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Fall through to extraction
|
|
27
|
+
}
|
|
28
|
+
// Find first { or [
|
|
29
|
+
const objStart = stripped.indexOf('{');
|
|
30
|
+
const arrStart = stripped.indexOf('[');
|
|
31
|
+
let start;
|
|
32
|
+
if (objStart === -1) {
|
|
33
|
+
start = arrStart;
|
|
34
|
+
}
|
|
35
|
+
else if (arrStart === -1) {
|
|
36
|
+
start = objStart;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
start = Math.min(objStart, arrStart);
|
|
40
|
+
}
|
|
41
|
+
if (start === -1) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
// Find each potential closer and try parsing - first valid JSON wins
|
|
45
|
+
const closer = stripped[start] === '{' ? '}' : ']';
|
|
46
|
+
let searchFrom = start;
|
|
47
|
+
while (true) {
|
|
48
|
+
const end = stripped.indexOf(closer, searchFrom + 1);
|
|
49
|
+
if (end === -1) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const candidate = stripped.slice(start, end + 1);
|
|
53
|
+
try {
|
|
54
|
+
JSON.parse(candidate);
|
|
55
|
+
return candidate;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
searchFrom = end;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Infer prefill character from schema type to force JSON output.
|
|
64
|
+
*/
|
|
65
|
+
function inferPrefill(schema) {
|
|
66
|
+
// Check for ZodObject (name === 'ZodObject')
|
|
67
|
+
if ('_def' in schema && schema._def.typeName === 'ZodObject')
|
|
68
|
+
return '{';
|
|
69
|
+
// Check for ZodArray
|
|
70
|
+
if ('_def' in schema && schema._def.typeName === 'ZodArray')
|
|
71
|
+
return '[';
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Single-turn structured Haiku call.
|
|
76
|
+
* Auto-prefills based on Zod schema type, extracts JSON, validates with Zod.
|
|
77
|
+
*/
|
|
78
|
+
export async function callHaiku(options) {
|
|
79
|
+
const { apiKey, prompt, schema, maxTokens = DEFAULT_MAX_TOKENS, timeout = DEFAULT_TIMEOUT_MS } = options;
|
|
80
|
+
const client = new Anthropic({ apiKey, timeout });
|
|
81
|
+
const prefill = inferPrefill(schema);
|
|
82
|
+
const messages = [
|
|
83
|
+
{ role: 'user', content: prompt },
|
|
84
|
+
];
|
|
85
|
+
if (prefill) {
|
|
86
|
+
messages.push({ role: 'assistant', content: prefill });
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
const response = await client.messages.create({
|
|
90
|
+
model: HAIKU_MODEL,
|
|
91
|
+
max_tokens: maxTokens,
|
|
92
|
+
messages,
|
|
93
|
+
});
|
|
94
|
+
const usage = apiUsageToStats(HAIKU_MODEL, response.usage);
|
|
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;
|
|
100
|
+
if (prefill) {
|
|
101
|
+
fullText = prefill + fullText;
|
|
102
|
+
}
|
|
103
|
+
const jsonStr = extractJson(fullText);
|
|
104
|
+
if (!jsonStr) {
|
|
105
|
+
return { success: false, error: 'No JSON found in response', usage };
|
|
106
|
+
}
|
|
107
|
+
const parsed = JSON.parse(jsonStr);
|
|
108
|
+
const validated = schema.safeParse(parsed);
|
|
109
|
+
if (!validated.success) {
|
|
110
|
+
return { success: false, error: `Validation failed: ${validated.error.message}`, usage };
|
|
111
|
+
}
|
|
112
|
+
return { success: true, data: validated.data, usage };
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
116
|
+
return { success: false, error: message, usage: emptyUsage() };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Multi-turn Haiku call with tool use loop.
|
|
121
|
+
* Iterates tool calls until the model produces a final text response.
|
|
122
|
+
* Accumulates usage across all iterations.
|
|
123
|
+
*/
|
|
124
|
+
export async function callHaikuWithTools(options) {
|
|
125
|
+
const { apiKey, prompt, schema, tools, executeTool, maxTokens = DEFAULT_MAX_TOKENS, maxIterations = 5, timeout = DEFAULT_TIMEOUT_MS, } = options;
|
|
126
|
+
const client = new Anthropic({ apiKey, timeout });
|
|
127
|
+
// No prefill for tool-use loops: prefill biases the model to output JSON
|
|
128
|
+
// immediately instead of calling tools to gather information first.
|
|
129
|
+
const messages = [
|
|
130
|
+
{ role: 'user', content: prompt },
|
|
131
|
+
];
|
|
132
|
+
const usages = [];
|
|
133
|
+
for (let iteration = 0; iteration < maxIterations; iteration++) {
|
|
134
|
+
let response;
|
|
135
|
+
try {
|
|
136
|
+
response = await client.messages.create({
|
|
137
|
+
model: HAIKU_MODEL,
|
|
138
|
+
max_tokens: maxTokens,
|
|
139
|
+
messages,
|
|
140
|
+
tools,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
145
|
+
return { success: false, error: message, usage: usages.length > 0 ? aggregateUsage(usages) : emptyUsage() };
|
|
146
|
+
}
|
|
147
|
+
usages.push(apiUsageToStats(HAIKU_MODEL, response.usage));
|
|
148
|
+
// Handle tool use
|
|
149
|
+
if (response.stop_reason === 'tool_use') {
|
|
150
|
+
const toolUseBlocks = response.content.filter((b) => b.type === 'tool_use');
|
|
151
|
+
if (toolUseBlocks.length === 0) {
|
|
152
|
+
return { success: false, error: 'Tool use indicated but no tool calls found', usage: aggregateUsage(usages) };
|
|
153
|
+
}
|
|
154
|
+
const toolResults = [];
|
|
155
|
+
for (const block of toolUseBlocks) {
|
|
156
|
+
try {
|
|
157
|
+
const result = await executeTool(block.name, block.input);
|
|
158
|
+
toolResults.push({ type: 'tool_result', tool_use_id: block.id, content: result });
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
162
|
+
toolResults.push({ type: 'tool_result', tool_use_id: block.id, content: errMsg, is_error: true });
|
|
163
|
+
}
|
|
164
|
+
}
|
|
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
|
+
const textBlock = response.content.find((b) => b.type === 'text');
|
|
172
|
+
if (!textBlock) {
|
|
173
|
+
return { success: false, error: 'No text in final response', usage: aggregateUsage(usages) };
|
|
174
|
+
}
|
|
175
|
+
const jsonStr = extractJson(textBlock.text);
|
|
176
|
+
if (!jsonStr) {
|
|
177
|
+
return { success: false, error: 'No JSON found in response', usage: aggregateUsage(usages) };
|
|
178
|
+
}
|
|
179
|
+
const parsed = JSON.parse(jsonStr);
|
|
180
|
+
const validated = schema.safeParse(parsed);
|
|
181
|
+
if (!validated.success) {
|
|
182
|
+
return { success: false, error: `Validation failed: ${validated.error.message}`, usage: aggregateUsage(usages) };
|
|
183
|
+
}
|
|
184
|
+
return { success: true, data: validated.data, usage: aggregateUsage(usages) };
|
|
185
|
+
}
|
|
186
|
+
return { success: false, error: `Unexpected stop reason: ${response.stop_reason}`, usage: aggregateUsage(usages) };
|
|
187
|
+
}
|
|
188
|
+
return { success: false, error: 'Max tool iterations exceeded', usage: aggregateUsage(usages) };
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=haiku.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"haiku.js","sourceRoot":"","sources":["../../src/sdk/haiku.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
{
|
|
2
|
+
"claude-2": {
|
|
3
|
+
"inputPerMTok": 8,
|
|
4
|
+
"outputPerMTok": 24,
|
|
5
|
+
"cacheReadPerMTok": 0,
|
|
6
|
+
"cacheWritePerMTok": 0
|
|
7
|
+
},
|
|
8
|
+
"claude-3-5-haiku-latest": {
|
|
9
|
+
"inputPerMTok": 0.8,
|
|
10
|
+
"outputPerMTok": 4,
|
|
11
|
+
"cacheReadPerMTok": 0.08,
|
|
12
|
+
"cacheWritePerMTok": 1
|
|
13
|
+
},
|
|
14
|
+
"claude-3-5-sonnet": {
|
|
15
|
+
"inputPerMTok": 3,
|
|
16
|
+
"outputPerMTok": 15,
|
|
17
|
+
"cacheReadPerMTok": 0.3,
|
|
18
|
+
"cacheWritePerMTok": 3.75
|
|
19
|
+
},
|
|
20
|
+
"claude-3-7-sonnet-latest": {
|
|
21
|
+
"inputPerMTok": 3,
|
|
22
|
+
"outputPerMTok": 15,
|
|
23
|
+
"cacheReadPerMTok": 0.3,
|
|
24
|
+
"cacheWritePerMTok": 3.75
|
|
25
|
+
},
|
|
26
|
+
"claude-3-haiku": {
|
|
27
|
+
"inputPerMTok": 0.25,
|
|
28
|
+
"outputPerMTok": 1.25,
|
|
29
|
+
"cacheReadPerMTok": 0.03,
|
|
30
|
+
"cacheWritePerMTok": 0.3
|
|
31
|
+
},
|
|
32
|
+
"claude-3-opus-latest": {
|
|
33
|
+
"inputPerMTok": 15,
|
|
34
|
+
"outputPerMTok": 75,
|
|
35
|
+
"cacheReadPerMTok": 1.5,
|
|
36
|
+
"cacheWritePerMTok": 18.75
|
|
37
|
+
},
|
|
38
|
+
"claude-3-sonnet": {
|
|
39
|
+
"inputPerMTok": 3,
|
|
40
|
+
"outputPerMTok": 15,
|
|
41
|
+
"cacheReadPerMTok": 0.3,
|
|
42
|
+
"cacheWritePerMTok": 3.75
|
|
43
|
+
},
|
|
44
|
+
"claude-haiku-4-5": {
|
|
45
|
+
"inputPerMTok": 1,
|
|
46
|
+
"outputPerMTok": 5,
|
|
47
|
+
"cacheReadPerMTok": 0.1,
|
|
48
|
+
"cacheWritePerMTok": 1.25
|
|
49
|
+
},
|
|
50
|
+
"claude-instant-1": {
|
|
51
|
+
"inputPerMTok": 1.63,
|
|
52
|
+
"outputPerMTok": 55.1,
|
|
53
|
+
"cacheReadPerMTok": 0,
|
|
54
|
+
"cacheWritePerMTok": 0
|
|
55
|
+
},
|
|
56
|
+
"claude-instant-1.2": {
|
|
57
|
+
"inputPerMTok": 1.63,
|
|
58
|
+
"outputPerMTok": 5.51,
|
|
59
|
+
"cacheReadPerMTok": 0,
|
|
60
|
+
"cacheWritePerMTok": 0
|
|
61
|
+
},
|
|
62
|
+
"claude-opus-4-0": {
|
|
63
|
+
"inputPerMTok": 15,
|
|
64
|
+
"outputPerMTok": 75,
|
|
65
|
+
"cacheReadPerMTok": 1.5,
|
|
66
|
+
"cacheWritePerMTok": 18.75
|
|
67
|
+
},
|
|
68
|
+
"claude-opus-4-1": {
|
|
69
|
+
"inputPerMTok": 15,
|
|
70
|
+
"outputPerMTok": 75,
|
|
71
|
+
"cacheReadPerMTok": 1.5,
|
|
72
|
+
"cacheWritePerMTok": 18.75
|
|
73
|
+
},
|
|
74
|
+
"claude-opus-4-5": {
|
|
75
|
+
"inputPerMTok": 5,
|
|
76
|
+
"outputPerMTok": 25,
|
|
77
|
+
"cacheReadPerMTok": 0.5,
|
|
78
|
+
"cacheWritePerMTok": 6.25
|
|
79
|
+
},
|
|
80
|
+
"claude-opus-4-6": {
|
|
81
|
+
"inputPerMTok": 5,
|
|
82
|
+
"outputPerMTok": 25,
|
|
83
|
+
"cacheReadPerMTok": 0.5,
|
|
84
|
+
"cacheWritePerMTok": 6.25
|
|
85
|
+
},
|
|
86
|
+
"claude-sonnet-4-0": {
|
|
87
|
+
"inputPerMTok": 3,
|
|
88
|
+
"outputPerMTok": 15,
|
|
89
|
+
"cacheReadPerMTok": 0.3,
|
|
90
|
+
"cacheWritePerMTok": 3.75
|
|
91
|
+
},
|
|
92
|
+
"claude-sonnet-4-5": {
|
|
93
|
+
"inputPerMTok": 3,
|
|
94
|
+
"outputPerMTok": 15,
|
|
95
|
+
"cacheReadPerMTok": 0.3,
|
|
96
|
+
"cacheWritePerMTok": 3.75
|
|
97
|
+
},
|
|
98
|
+
"claude-v1": {
|
|
99
|
+
"inputPerMTok": 8,
|
|
100
|
+
"outputPerMTok": 24,
|
|
101
|
+
"cacheReadPerMTok": 0,
|
|
102
|
+
"cacheWritePerMTok": 0
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { UsageStats } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Usage shape returned by the Anthropic Messages API.
|
|
4
|
+
*/
|
|
5
|
+
interface ApiUsage {
|
|
6
|
+
input_tokens: number;
|
|
7
|
+
output_tokens: number;
|
|
8
|
+
cache_read_input_tokens?: number | null;
|
|
9
|
+
cache_creation_input_tokens?: number | null;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Convert Anthropic API usage to our UsageStats format.
|
|
13
|
+
* Calculates cost from token counts using model pricing.
|
|
14
|
+
*/
|
|
15
|
+
export declare function apiUsageToStats(model: string, usage: ApiUsage): UsageStats;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -0,0 +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;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,UAAU,CAwB1E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import rawPricing from './model-pricing.json' with { type: 'json' };
|
|
2
|
+
/**
|
|
3
|
+
* Pricing built from model-pricing.json (generated by scripts/update-pricing.ts).
|
|
4
|
+
* JSON values are USD per million tokens; we convert to per-token here.
|
|
5
|
+
*/
|
|
6
|
+
const MODEL_PRICING = Object.fromEntries(Object.entries(rawPricing).map(([id, p]) => [
|
|
7
|
+
id,
|
|
8
|
+
{
|
|
9
|
+
inputPerToken: p.inputPerMTok / 1_000_000,
|
|
10
|
+
outputPerToken: p.outputPerMTok / 1_000_000,
|
|
11
|
+
cacheReadPerToken: p.cacheReadPerMTok / 1_000_000,
|
|
12
|
+
cacheCreationPerToken: p.cacheWritePerMTok / 1_000_000,
|
|
13
|
+
},
|
|
14
|
+
]));
|
|
15
|
+
/**
|
|
16
|
+
* Convert Anthropic API usage to our UsageStats format.
|
|
17
|
+
* Calculates cost from token counts using model pricing.
|
|
18
|
+
*/
|
|
19
|
+
export function apiUsageToStats(model, usage) {
|
|
20
|
+
const pricing = MODEL_PRICING[model];
|
|
21
|
+
const inputTokens = usage.input_tokens;
|
|
22
|
+
const outputTokens = usage.output_tokens;
|
|
23
|
+
const cacheReadInputTokens = usage.cache_read_input_tokens ?? 0;
|
|
24
|
+
const cacheCreationInputTokens = usage.cache_creation_input_tokens ?? 0;
|
|
25
|
+
let costUSD = 0;
|
|
26
|
+
if (pricing) {
|
|
27
|
+
costUSD =
|
|
28
|
+
inputTokens * pricing.inputPerToken +
|
|
29
|
+
outputTokens * pricing.outputPerToken +
|
|
30
|
+
cacheReadInputTokens * pricing.cacheReadPerToken +
|
|
31
|
+
cacheCreationInputTokens * pricing.cacheCreationPerToken;
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
inputTokens,
|
|
35
|
+
outputTokens,
|
|
36
|
+
cacheReadInputTokens,
|
|
37
|
+
cacheCreationInputTokens,
|
|
38
|
+
costUSD,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=pricing.js.map
|
|
@@ -0,0 +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;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAe;IAC5D,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAErC,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC;IACvC,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,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,WAAW,GAAG,OAAO,CAAC,aAAa;gBACnC,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/runner.d.ts
CHANGED
|
@@ -13,13 +13,14 @@
|
|
|
13
13
|
*/
|
|
14
14
|
export { SkillRunnerError, WardenAuthenticationError, isRetryableError, isAuthenticationError, isAuthenticationErrorMessage } from './errors.js';
|
|
15
15
|
export { calculateRetryDelay } from './retry.js';
|
|
16
|
-
export { aggregateUsage, estimateTokens } from './usage.js';
|
|
16
|
+
export { aggregateUsage, aggregateAuxiliaryUsage, mergeAuxiliaryUsage, estimateTokens } from './usage.js';
|
|
17
|
+
export { apiUsageToStats } from './pricing.js';
|
|
17
18
|
export { buildHunkSystemPrompt, buildHunkUserPrompt } from './prompt.js';
|
|
18
19
|
export type { PRPromptContext } from './prompt.js';
|
|
19
20
|
export { buildHunkSystemPrompt as buildSystemPrompt } from './prompt.js';
|
|
20
|
-
export { extractFindingsJson, extractBalancedJson, extractFindingsWithLLM, truncateForLLMFallback, deduplicateFindings, } from './extract.js';
|
|
21
|
+
export { extractFindingsJson, extractBalancedJson, extractFindingsWithLLM, truncateForLLMFallback, deduplicateFindings, validateFindings, generateShortId, } from './extract.js';
|
|
21
22
|
export type { ExtractFindingsResult } from './extract.js';
|
|
22
23
|
export { prepareFiles } from './prepare.js';
|
|
23
24
|
export { analyzeFile, runSkill, generateSummary } from './analyze.js';
|
|
24
|
-
export type { SkillRunnerCallbacks, SkillRunnerOptions, PreparedFile, PrepareFilesOptions, PrepareFilesResult, FileAnalysisCallbacks, FileAnalysisResult, } from './types.js';
|
|
25
|
+
export type { AuxiliaryUsageEntry, SkillRunnerCallbacks, SkillRunnerOptions, PreparedFile, PrepareFilesOptions, PrepareFilesResult, FileAnalysisCallbacks, FileAnalysisResult, } from './types.js';
|
|
25
26
|
//# sourceMappingURL=runner.d.ts.map
|
package/dist/sdk/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/sdk/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAGjJ,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/sdk/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAGjJ,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG1G,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,qBAAqB,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGzE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGtE,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
package/dist/sdk/runner.js
CHANGED
|
@@ -16,13 +16,15 @@ export { SkillRunnerError, WardenAuthenticationError, isRetryableError, isAuthen
|
|
|
16
16
|
// Re-export retry utilities
|
|
17
17
|
export { calculateRetryDelay } from './retry.js';
|
|
18
18
|
// Re-export usage utilities
|
|
19
|
-
export { aggregateUsage, estimateTokens } from './usage.js';
|
|
19
|
+
export { aggregateUsage, aggregateAuxiliaryUsage, mergeAuxiliaryUsage, estimateTokens } from './usage.js';
|
|
20
|
+
// Re-export pricing utilities
|
|
21
|
+
export { apiUsageToStats } from './pricing.js';
|
|
20
22
|
// Re-export prompt building (with legacy alias)
|
|
21
23
|
export { buildHunkSystemPrompt, buildHunkUserPrompt } from './prompt.js';
|
|
22
24
|
// Legacy export for backwards compatibility
|
|
23
25
|
export { buildHunkSystemPrompt as buildSystemPrompt } from './prompt.js';
|
|
24
26
|
// Re-export extraction utilities
|
|
25
|
-
export { extractFindingsJson, extractBalancedJson, extractFindingsWithLLM, truncateForLLMFallback, deduplicateFindings, } from './extract.js';
|
|
27
|
+
export { extractFindingsJson, extractBalancedJson, extractFindingsWithLLM, truncateForLLMFallback, deduplicateFindings, validateFindings, generateShortId, } from './extract.js';
|
|
26
28
|
// Re-export file preparation
|
|
27
29
|
export { prepareFiles } from './prepare.js';
|
|
28
30
|
// Re-export analysis functions
|
package/dist/sdk/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/sdk/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,wCAAwC;AACxC,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAEjJ,4BAA4B;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/sdk/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,wCAAwC;AACxC,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAEjJ,4BAA4B;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE1G,8BAA8B;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,gDAAgD;AAChD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEzE,4CAA4C;AAC5C,OAAO,EAAE,qBAAqB,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEzE,iCAAiC;AACjC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,6BAA6B;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,+BAA+B;AAC/B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/sdk/types.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { Finding, UsageStats, SkippedFile, RetryConfig } from '../types/index.js';
|
|
2
2
|
import type { HunkWithContext } from '../diff/index.js';
|
|
3
3
|
import type { ChunkingConfig } from '../config/schema.js';
|
|
4
|
+
/** A single auxiliary usage entry, keyed by agent name (e.g. 'extraction', 'dedup'). */
|
|
5
|
+
export interface AuxiliaryUsageEntry {
|
|
6
|
+
agent: string;
|
|
7
|
+
usage: UsageStats;
|
|
8
|
+
}
|
|
4
9
|
/** Default concurrency for file-level parallel processing */
|
|
5
10
|
export declare const DEFAULT_FILE_CONCURRENCY = 5;
|
|
6
11
|
/** Threshold in characters above which to warn about large prompts (~25k tokens) */
|
|
@@ -17,6 +22,8 @@ export interface HunkAnalysisResult {
|
|
|
17
22
|
extractionError?: string;
|
|
18
23
|
/** Preview of the output that failed to parse */
|
|
19
24
|
extractionPreview?: string;
|
|
25
|
+
/** Usage from auxiliary LLM calls (e.g., extraction repair) */
|
|
26
|
+
auxiliaryUsage?: AuxiliaryUsageEntry[];
|
|
20
27
|
}
|
|
21
28
|
/**
|
|
22
29
|
* Callbacks for progress reporting during skill execution.
|
|
@@ -36,6 +43,8 @@ export interface SkillRunnerCallbacks {
|
|
|
36
43
|
onRetry?: (file: string, lineRange: string, attempt: number, maxRetries: number, error: string, delayMs: number) => void;
|
|
37
44
|
/** Called when findings extraction fails (both regex and LLM fallback failed) */
|
|
38
45
|
onExtractionFailure?: (file: string, lineRange: string, error: string, preview: string) => void;
|
|
46
|
+
/** Called with extraction result details (debug mode) */
|
|
47
|
+
onExtractionResult?: (file: string, lineRange: string, findingsCount: number, method: 'regex' | 'llm' | 'none') => void;
|
|
39
48
|
}
|
|
40
49
|
export interface SkillRunnerOptions {
|
|
41
50
|
apiKey?: string;
|
|
@@ -101,6 +110,8 @@ export interface FileAnalysisCallbacks {
|
|
|
101
110
|
onRetry?: (lineRange: string, attempt: number, maxRetries: number, error: string, delayMs: number) => void;
|
|
102
111
|
/** Called when findings extraction fails (both regex and LLM fallback failed) */
|
|
103
112
|
onExtractionFailure?: (lineRange: string, error: string, preview: string) => void;
|
|
113
|
+
/** Called with extraction result details (debug mode) */
|
|
114
|
+
onExtractionResult?: (lineRange: string, findingsCount: number, method: 'regex' | 'llm' | 'none') => void;
|
|
104
115
|
}
|
|
105
116
|
/**
|
|
106
117
|
* Result from analyzing a single file.
|
|
@@ -113,6 +124,8 @@ export interface FileAnalysisResult {
|
|
|
113
124
|
failedHunks: number;
|
|
114
125
|
/** Number of hunks where findings extraction failed */
|
|
115
126
|
failedExtractions: number;
|
|
127
|
+
/** Usage from auxiliary LLM calls across all hunks */
|
|
128
|
+
auxiliaryUsage?: AuxiliaryUsageEntry[];
|
|
116
129
|
}
|
|
117
130
|
/**
|
|
118
131
|
* Callbacks for prompt size reporting during hunk analysis.
|
|
@@ -123,5 +136,7 @@ export interface HunkAnalysisCallbacks {
|
|
|
123
136
|
onPromptSize?: (lineRange: string, systemChars: number, userChars: number, totalChars: number, estimatedTokens: number) => void;
|
|
124
137
|
onRetry?: (lineRange: string, attempt: number, maxRetries: number, error: string, delayMs: number) => void;
|
|
125
138
|
onExtractionFailure?: (lineRange: string, error: string, preview: string) => void;
|
|
139
|
+
/** Called with extraction result details (debug mode) */
|
|
140
|
+
onExtractionResult?: (lineRange: string, findingsCount: number, method: 'regex' | 'llm' | 'none') => void;
|
|
126
141
|
}
|
|
127
142
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/sdk/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,oFAAoF;AACpF,eAAO,MAAM,4BAA4B,SAAS,CAAC;AAEnD,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAC;IAChB,+EAA+E;IAC/E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yCAAyC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"AAUA,6DAA6D;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,oFAAoF;AACpF,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC"}
|
package/dist/sdk/usage.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SDKResultMessage } from '@anthropic-ai/claude-agent-sdk';
|
|
2
|
-
import type { UsageStats } from '../types/index.js';
|
|
2
|
+
import type { UsageStats, AuxiliaryUsageMap } from '../types/index.js';
|
|
3
|
+
import type { AuxiliaryUsageEntry } from './types.js';
|
|
3
4
|
/**
|
|
4
5
|
* Extract usage stats from an SDK result message.
|
|
5
6
|
*/
|
|
@@ -12,6 +13,17 @@ export declare function emptyUsage(): UsageStats;
|
|
|
12
13
|
* Aggregate multiple usage stats into one.
|
|
13
14
|
*/
|
|
14
15
|
export declare function aggregateUsage(usages: UsageStats[]): UsageStats;
|
|
16
|
+
/**
|
|
17
|
+
* Aggregate auxiliary usage entries by agent name.
|
|
18
|
+
* Merges multiple entries for the same agent into a single UsageStats.
|
|
19
|
+
* Returns undefined if no entries are provided.
|
|
20
|
+
*/
|
|
21
|
+
export declare function aggregateAuxiliaryUsage(entries: AuxiliaryUsageEntry[]): AuxiliaryUsageMap | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Merge two AuxiliaryUsageMaps together.
|
|
24
|
+
* Entries for the same agent are summed.
|
|
25
|
+
*/
|
|
26
|
+
export declare function mergeAuxiliaryUsage(a: AuxiliaryUsageMap | undefined, b: AuxiliaryUsageMap | undefined): AuxiliaryUsageMap | undefined;
|
|
15
27
|
/**
|
|
16
28
|
* Estimate token count from character count.
|
|
17
29
|
* Uses chars/4 as a rough approximation for English text.
|
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,MAAM,mBAAmB,CAAC;
|
|
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;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAQjE;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
|
@@ -34,6 +34,52 @@ export function aggregateUsage(usages) {
|
|
|
34
34
|
costUSD: acc.costUSD + u.costUSD,
|
|
35
35
|
}), emptyUsage());
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Aggregate auxiliary usage entries by agent name.
|
|
39
|
+
* Merges multiple entries for the same agent into a single UsageStats.
|
|
40
|
+
* Returns undefined if no entries are provided.
|
|
41
|
+
*/
|
|
42
|
+
export function aggregateAuxiliaryUsage(entries) {
|
|
43
|
+
if (entries.length === 0)
|
|
44
|
+
return undefined;
|
|
45
|
+
const map = {};
|
|
46
|
+
for (const { agent, usage } of entries) {
|
|
47
|
+
const existing = map[agent];
|
|
48
|
+
if (existing) {
|
|
49
|
+
map[agent] = {
|
|
50
|
+
inputTokens: existing.inputTokens + usage.inputTokens,
|
|
51
|
+
outputTokens: existing.outputTokens + usage.outputTokens,
|
|
52
|
+
cacheReadInputTokens: (existing.cacheReadInputTokens ?? 0) + (usage.cacheReadInputTokens ?? 0),
|
|
53
|
+
cacheCreationInputTokens: (existing.cacheCreationInputTokens ?? 0) + (usage.cacheCreationInputTokens ?? 0),
|
|
54
|
+
costUSD: existing.costUSD + usage.costUSD,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
map[agent] = { ...usage };
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return map;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Merge two AuxiliaryUsageMaps together.
|
|
65
|
+
* Entries for the same agent are summed.
|
|
66
|
+
*/
|
|
67
|
+
export function mergeAuxiliaryUsage(a, b) {
|
|
68
|
+
if (!a && !b)
|
|
69
|
+
return undefined;
|
|
70
|
+
if (!a)
|
|
71
|
+
return b;
|
|
72
|
+
if (!b)
|
|
73
|
+
return a;
|
|
74
|
+
const entries = [];
|
|
75
|
+
for (const [agent, usage] of Object.entries(a)) {
|
|
76
|
+
entries.push({ agent, usage });
|
|
77
|
+
}
|
|
78
|
+
for (const [agent, usage] of Object.entries(b)) {
|
|
79
|
+
entries.push({ agent, usage });
|
|
80
|
+
}
|
|
81
|
+
return aggregateAuxiliaryUsage(entries);
|
|
82
|
+
}
|
|
37
83
|
/**
|
|
38
84
|
* Estimate token count from character count.
|
|
39
85
|
* Uses chars/4 as a rough approximation for English text.
|
package/dist/sdk/usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/sdk/usage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/sdk/usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ResolvedTrigger } from '../config/loader.js';
|
|
2
|
+
import type { TriggerType } from '../config/schema.js';
|
|
2
3
|
import type { EventContext, Severity, SeverityThreshold, SkillReport } from '../types/index.js';
|
|
3
4
|
/** Clear the glob cache (useful for testing) */
|
|
4
5
|
export declare function clearGlobCache(): void;
|
|
@@ -10,9 +11,23 @@ export declare function getGlobCacheSize(): number;
|
|
|
10
11
|
*/
|
|
11
12
|
export declare function matchGlob(pattern: string, path: string): boolean;
|
|
12
13
|
/**
|
|
13
|
-
*
|
|
14
|
+
* Return a copy of the context with only files matching the path filters.
|
|
15
|
+
* If no filters are set, returns the original context unchanged (no copy).
|
|
14
16
|
*/
|
|
15
|
-
export declare function
|
|
17
|
+
export declare function filterContextByPaths(context: EventContext, filters: {
|
|
18
|
+
paths?: string[];
|
|
19
|
+
ignorePaths?: string[];
|
|
20
|
+
}): EventContext;
|
|
21
|
+
/**
|
|
22
|
+
* Check if a trigger matches the given event context and environment.
|
|
23
|
+
*
|
|
24
|
+
* Trigger types:
|
|
25
|
+
* - '*' (wildcard): matches all environments, skips event/action checks
|
|
26
|
+
* - 'local': matches only when environment is 'local'
|
|
27
|
+
* - 'pull_request': matches when environment is 'github' and event is pull_request
|
|
28
|
+
* - 'schedule': matches when event is schedule
|
|
29
|
+
*/
|
|
30
|
+
export declare function matchTrigger(trigger: ResolvedTrigger, context: EventContext, environment?: TriggerType | 'github'): boolean;
|
|
16
31
|
/**
|
|
17
32
|
* Check if a report has any findings at or above the given severity threshold.
|
|
18
33
|
* Returns false if failOn is 'off' (disabled).
|