@sentry/warden 0.39.0 → 0.40.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.
@@ -9,6 +9,7 @@ export interface UsageCostBreakdown {
9
9
  webSearchUSD: number;
10
10
  totalUSD: number;
11
11
  }
12
+ /** Return categorized costs when the Anthropic model resolves to Pi's catalog. */
12
13
  export declare function estimateUsageCostBreakdown(model: string | undefined, usage: UsageStats): UsageCostBreakdown | undefined;
13
14
  /**
14
15
  * Usage shape returned by the Anthropic Messages API.
@@ -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;AAiBpD,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgFD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,UAAU,GAChB,kBAAkB,GAAG,SAAS,CA+ChC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,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;IAC5C,cAAc,CAAC,EAAE;QACf,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1C,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3C,GAAG,IAAI,CAAC;IACT,eAAe,CAAC,EAAE;QAChB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACrC,GAAG,IAAI,CAAC;CACV;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,UAAU,CA8CzF;AAED,6CAA6C;AAC7C,eAAO,MAAM,eAAe,8BAAwB,CAAC"}
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/sdk/pricing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAwBD,kFAAkF;AAClF,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,UAAU,GAChB,kBAAkB,GAAG,SAAS,CA+DhC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,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;IAC5C,cAAc,CAAC,EAAE;QACf,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1C,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3C,GAAG,IAAI,CAAC;IACT,eAAe,CAAC,EAAE;QAChB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACrC,GAAG,IAAI,CAAC;CACV;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAiCzF;AAED,6CAA6C;AAC7C,eAAO,MAAM,eAAe,8BAAwB,CAAC"}
@@ -1,70 +1,24 @@
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
- cacheCreation1hPerToken: p.cacheWrite1hPerMTok / 1_000_000,
14
- webSearchPerRequest: p.webSearchPer1K / 1_000,
15
- },
16
- ]));
17
- const MODEL_ALIASES = {
18
- 'claude-sonnet-4': 'claude-sonnet-4-0',
19
- 'claude-4-sonnet': 'claude-sonnet-4-0',
20
- 'claude-sonnet-4-6': 'claude-sonnet-4-5',
21
- 'claude-sonnet-4-7': 'claude-sonnet-4-6',
22
- 'claude-opus-4': 'claude-opus-4-0',
23
- 'claude-4-opus': 'claude-opus-4-0',
24
- 'claude-opus-4-6': 'claude-opus-4-5',
25
- };
26
- function hasModelPricing(pricing) {
27
- return pricing !== undefined && (pricing.inputPerToken > 0 ||
28
- pricing.outputPerToken > 0 ||
29
- pricing.cacheReadPerToken > 0 ||
30
- pricing.cacheCreationPerToken > 0 ||
31
- pricing.cacheCreation1hPerToken > 0);
32
- }
33
- function lookupModelPricing(model) {
34
- const pricing = MODEL_PRICING[model];
35
- return hasModelPricing(pricing) ? pricing : undefined;
1
+ import { calculateCost } from '@earendil-works/pi-ai';
2
+ import { anthropicProvider } from '@earendil-works/pi-ai/providers/anthropic';
3
+ const WEB_SEARCH_PER_REQUEST_USD = 0.01;
4
+ const ANTHROPIC_MODELS = new Map(anthropicProvider().getModels().map((model) => [model.id, model]));
5
+ /** Resolve exact Pi IDs or dated API response IDs whose base model Pi owns. */
6
+ function findAnthropicModel(model) {
7
+ return ANTHROPIC_MODELS.get(model)
8
+ ?? ANTHROPIC_MODELS.get(model.replace(/-\d{8}$/, ''));
36
9
  }
37
- function normalizeModelId(model) {
38
- const undated = model.replace(/-\d{8}$/, '');
39
- if (lookupModelPricing(undated))
40
- return undated;
41
- return MODEL_ALIASES[undated] ?? undated;
42
- }
43
- function applyLongContextPricing(model, pricing, inputTokens) {
44
- const canonical = normalizeModelId(model);
45
- const sonnetLongContext = inputTokens > 200_000 &&
46
- (canonical === 'claude-sonnet-4-0' || canonical === 'claude-sonnet-4-5');
47
- if (!sonnetLongContext) {
48
- return pricing;
49
- }
50
- const inputPerToken = pricing.inputPerToken * 2;
10
+ function createPiUsage(input, output, cacheRead, cacheWrite, cacheWrite1h) {
51
11
  return {
52
- ...pricing,
53
- inputPerToken,
54
- outputPerToken: pricing.outputPerToken * 1.5,
55
- cacheReadPerToken: inputPerToken * 0.1,
56
- cacheCreationPerToken: inputPerToken * 1.25,
57
- cacheCreation1hPerToken: inputPerToken * 2,
12
+ input,
13
+ output,
14
+ cacheRead,
15
+ cacheWrite,
16
+ cacheWrite1h,
17
+ totalTokens: input + output + cacheRead + cacheWrite,
18
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
58
19
  };
59
20
  }
60
- function getModelPricing(model, inputTokens = 0) {
61
- const exact = lookupModelPricing(model);
62
- if (exact)
63
- return applyLongContextPricing(model, exact, inputTokens);
64
- const canonical = normalizeModelId(model);
65
- const pricing = lookupModelPricing(canonical) ?? lookupModelPricing(`${canonical}-latest`);
66
- return pricing ? applyLongContextPricing(model, pricing, inputTokens) : undefined;
67
- }
21
+ /** Return categorized costs when the Anthropic model resolves to Pi's catalog. */
68
22
  export function estimateUsageCostBreakdown(model, usage) {
69
23
  if (!model)
70
24
  return undefined;
@@ -76,31 +30,34 @@ export function estimateUsageCostBreakdown(model, usage) {
76
30
  const uncategorizedCacheCreationInputTokens = Math.max(0, cacheCreationInputTokens - cacheCreationInputTokensByTier);
77
31
  const freshInputTokens = Math.max(0, usage.inputTokens - cacheReadInputTokens - cacheCreationInputTokens);
78
32
  const webSearchRequests = usage.webSearchRequests ?? 0;
79
- const pricing = getModelPricing(model, usage.inputTokens);
80
- if (!pricing)
33
+ const piModel = findAnthropicModel(model);
34
+ if (!piModel)
81
35
  return undefined;
82
- const freshInputUSD = freshInputTokens * pricing.inputPerToken;
83
- const outputUSD = usage.outputTokens * pricing.outputPerToken;
84
- const cacheReadUSD = cacheReadInputTokens * pricing.cacheReadPerToken;
85
- const cacheCreationUSD = uncategorizedCacheCreationInputTokens * pricing.cacheCreationPerToken;
86
- const cacheCreation5mUSD = cacheCreation5mInputTokens * pricing.cacheCreationPerToken;
87
- const cacheCreation1hUSD = cacheCreation1hInputTokens * pricing.cacheCreation1hPerToken;
88
- const webSearchUSD = webSearchRequests * pricing.webSearchPerRequest;
36
+ const piUsage = createPiUsage(freshInputTokens, usage.outputTokens, cacheReadInputTokens, cacheCreationInputTokens, cacheCreation1hInputTokens);
37
+ const piCost = calculateCost(piModel, piUsage);
38
+ const shortCacheCreationInputTokens = uncategorizedCacheCreationInputTokens + cacheCreation5mInputTokens;
39
+ let cacheCreation1hUSD = 0;
40
+ if (cacheCreation1hInputTokens > 0) {
41
+ // Keep total input constant so Pi selects the same pricing tier while isolating 1h writes.
42
+ const longWriteUsage = createPiUsage(freshInputTokens + shortCacheCreationInputTokens, 0, cacheReadInputTokens, cacheCreation1hInputTokens, cacheCreation1hInputTokens);
43
+ cacheCreation1hUSD = calculateCost(piModel, longWriteUsage).cacheWrite;
44
+ }
45
+ const shortCacheCreationUSD = piCost.cacheWrite - cacheCreation1hUSD;
46
+ const cacheCreationUSD = shortCacheCreationInputTokens > 0
47
+ ? shortCacheCreationUSD * uncategorizedCacheCreationInputTokens / shortCacheCreationInputTokens
48
+ : 0;
49
+ const cacheCreation5mUSD = shortCacheCreationUSD - cacheCreationUSD;
50
+ // Pi calculates token costs; Anthropic's server-side web search charge is separate.
51
+ const webSearchUSD = webSearchRequests * WEB_SEARCH_PER_REQUEST_USD;
89
52
  return {
90
- freshInputUSD,
91
- outputUSD,
92
- cacheReadUSD,
53
+ freshInputUSD: piCost.input,
54
+ outputUSD: piCost.output,
55
+ cacheReadUSD: piCost.cacheRead,
93
56
  cacheCreationUSD,
94
57
  cacheCreation5mUSD,
95
58
  cacheCreation1hUSD,
96
59
  webSearchUSD,
97
- totalUSD: freshInputUSD +
98
- outputUSD +
99
- cacheReadUSD +
100
- cacheCreationUSD +
101
- cacheCreation5mUSD +
102
- cacheCreation1hUSD +
103
- webSearchUSD,
60
+ totalUSD: piCost.total + webSearchUSD,
104
61
  };
105
62
  }
106
63
  /**
@@ -128,21 +85,7 @@ export function anthropicUsageToStats(model, usage) {
128
85
  const webSearchRequests = usage.server_tool_use?.web_search_requests ?? 0;
129
86
  // inputTokens is the total: raw API input_tokens + cache subsets.
130
87
  const inputTokens = usage.input_tokens + cacheReadInputTokens + cacheCreationInputTokens;
131
- const pricing = getModelPricing(model, inputTokens);
132
- // Cost: deduct cache subsets from total to get the non-cached portion,
133
- // then charge each category at its respective rate.
134
- let costUSD = 0;
135
- if (pricing) {
136
- const freshInputTokens = inputTokens - cacheReadInputTokens - cacheCreationInputTokens;
137
- costUSD =
138
- freshInputTokens * pricing.inputPerToken +
139
- outputTokens * pricing.outputPerToken +
140
- cacheReadInputTokens * pricing.cacheReadPerToken +
141
- (cacheCreation5mInputTokens + uncategorizedCacheCreationInputTokens) * pricing.cacheCreationPerToken +
142
- cacheCreation1hInputTokens * pricing.cacheCreation1hPerToken +
143
- webSearchRequests * pricing.webSearchPerRequest;
144
- }
145
- return {
88
+ const stats = {
146
89
  inputTokens,
147
90
  outputTokens,
148
91
  cacheReadInputTokens,
@@ -150,8 +93,11 @@ export function anthropicUsageToStats(model, usage) {
150
93
  cacheCreation5mInputTokens: cacheCreation5mInputTokens + uncategorizedCacheCreationInputTokens,
151
94
  cacheCreation1hInputTokens,
152
95
  webSearchRequests,
153
- costUSD,
96
+ costUSD: 0,
154
97
  };
98
+ const breakdown = estimateUsageCostBreakdown(model, stats);
99
+ stats.costUSD = breakdown?.totalUSD ?? 0;
100
+ return stats;
155
101
  }
156
102
  /** @deprecated Use anthropicUsageToStats. */
157
103
  export const apiUsageToStats = anthropicUsageToStats;
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/sdk/pricing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/sdk/pricing.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentry/warden",
3
- "version": "0.39.0",
3
+ "version": "0.40.0",
4
4
  "description": "Event-driven agent that reacts to GitHub events and executes code-review skills",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -33,8 +33,8 @@
33
33
  "dependencies": {
34
34
  "@anthropic-ai/claude-agent-sdk": "^0.3.150",
35
35
  "@anthropic-ai/sdk": "^0.98.0",
36
- "@earendil-works/pi-ai": "^0.80.3",
37
- "@earendil-works/pi-coding-agent": "^0.80.3",
36
+ "@earendil-works/pi-ai": "^0.80.6",
37
+ "@earendil-works/pi-coding-agent": "^0.80.6",
38
38
  "@inquirer/select": "^5.1.5",
39
39
  "@octokit/rest": "^22.0.1",
40
40
  "@sentry/dotagents-lib": "^1.17.0",
@@ -65,8 +65,6 @@
65
65
  "test:watch": "vitest --config vitest.config.ts",
66
66
  "test:examples": "vitest run --config vitest.integration.config.ts",
67
67
  "typecheck": "tsc --noEmit",
68
- "update-pricing": "tsx scripts/update-pricing.ts",
69
- "update-pricing-pr": "tsx scripts/create-pricing-update-pr.ts",
70
68
  "generate:jsonl-schema": "tsx scripts/generate-jsonl-schema.ts"
71
69
  }
72
70
  }
@@ -1,162 +0,0 @@
1
- {
2
- "claude-2": {
3
- "inputPerMTok": 8,
4
- "outputPerMTok": 24,
5
- "cacheReadPerMTok": 0,
6
- "cacheWritePerMTok": 0,
7
- "cacheWrite1hPerMTok": 16,
8
- "webSearchPer1K": 10
9
- },
10
- "claude-3-5-haiku-latest": {
11
- "inputPerMTok": 0.8,
12
- "outputPerMTok": 4,
13
- "cacheReadPerMTok": 0.08,
14
- "cacheWritePerMTok": 1,
15
- "cacheWrite1hPerMTok": 1.6,
16
- "webSearchPer1K": 10
17
- },
18
- "claude-3-5-sonnet": {
19
- "inputPerMTok": 3,
20
- "outputPerMTok": 15,
21
- "cacheReadPerMTok": 0.3,
22
- "cacheWritePerMTok": 3.75,
23
- "cacheWrite1hPerMTok": 6,
24
- "webSearchPer1K": 10
25
- },
26
- "claude-3-7-sonnet-latest": {
27
- "inputPerMTok": 3,
28
- "outputPerMTok": 15,
29
- "cacheReadPerMTok": 0.3,
30
- "cacheWritePerMTok": 3.75,
31
- "cacheWrite1hPerMTok": 6,
32
- "webSearchPer1K": 10
33
- },
34
- "claude-3-haiku": {
35
- "inputPerMTok": 0.25,
36
- "outputPerMTok": 1.25,
37
- "cacheReadPerMTok": 0.03,
38
- "cacheWritePerMTok": 0.3,
39
- "cacheWrite1hPerMTok": 0.5,
40
- "webSearchPer1K": 10
41
- },
42
- "claude-3-opus-latest": {
43
- "inputPerMTok": 15,
44
- "outputPerMTok": 75,
45
- "cacheReadPerMTok": 1.5,
46
- "cacheWritePerMTok": 18.75,
47
- "cacheWrite1hPerMTok": 30,
48
- "webSearchPer1K": 10
49
- },
50
- "claude-3-sonnet": {
51
- "inputPerMTok": 3,
52
- "outputPerMTok": 15,
53
- "cacheReadPerMTok": 0.3,
54
- "cacheWritePerMTok": 3.75,
55
- "cacheWrite1hPerMTok": 6,
56
- "webSearchPer1K": 10
57
- },
58
- "claude-fable-5": {
59
- "inputPerMTok": 10,
60
- "outputPerMTok": 50,
61
- "cacheReadPerMTok": 1,
62
- "cacheWritePerMTok": 12.5,
63
- "cacheWrite1hPerMTok": 20,
64
- "webSearchPer1K": 10
65
- },
66
- "claude-haiku-4-5": {
67
- "inputPerMTok": 1,
68
- "outputPerMTok": 5,
69
- "cacheReadPerMTok": 0.1,
70
- "cacheWritePerMTok": 1.25,
71
- "cacheWrite1hPerMTok": 2,
72
- "webSearchPer1K": 10
73
- },
74
- "claude-opus-4-0": {
75
- "inputPerMTok": 15,
76
- "outputPerMTok": 75,
77
- "cacheReadPerMTok": 1.5,
78
- "cacheWritePerMTok": 18.75,
79
- "cacheWrite1hPerMTok": 30,
80
- "webSearchPer1K": 10
81
- },
82
- "claude-opus-4-1": {
83
- "inputPerMTok": 15,
84
- "outputPerMTok": 75,
85
- "cacheReadPerMTok": 1.5,
86
- "cacheWritePerMTok": 18.75,
87
- "cacheWrite1hPerMTok": 30,
88
- "webSearchPer1K": 10
89
- },
90
- "claude-opus-4-5": {
91
- "inputPerMTok": 5,
92
- "outputPerMTok": 25,
93
- "cacheReadPerMTok": 0.5,
94
- "cacheWritePerMTok": 6.25,
95
- "cacheWrite1hPerMTok": 10,
96
- "webSearchPer1K": 10
97
- },
98
- "claude-opus-4-6": {
99
- "inputPerMTok": 5,
100
- "outputPerMTok": 25,
101
- "cacheReadPerMTok": 0.5,
102
- "cacheWritePerMTok": 6.25,
103
- "cacheWrite1hPerMTok": 10,
104
- "webSearchPer1K": 10
105
- },
106
- "claude-opus-4-7": {
107
- "inputPerMTok": 5,
108
- "outputPerMTok": 25,
109
- "cacheReadPerMTok": 0.5,
110
- "cacheWritePerMTok": 6.25,
111
- "cacheWrite1hPerMTok": 10,
112
- "webSearchPer1K": 10
113
- },
114
- "claude-opus-4-8": {
115
- "inputPerMTok": 5,
116
- "outputPerMTok": 25,
117
- "cacheReadPerMTok": 0.5,
118
- "cacheWritePerMTok": 6.25,
119
- "cacheWrite1hPerMTok": 10,
120
- "webSearchPer1K": 10
121
- },
122
- "claude-sonnet-4-0": {
123
- "inputPerMTok": 3,
124
- "outputPerMTok": 15,
125
- "cacheReadPerMTok": 0.3,
126
- "cacheWritePerMTok": 3.75,
127
- "cacheWrite1hPerMTok": 6,
128
- "webSearchPer1K": 10
129
- },
130
- "claude-sonnet-4-5": {
131
- "inputPerMTok": 3,
132
- "outputPerMTok": 15,
133
- "cacheReadPerMTok": 0.3,
134
- "cacheWritePerMTok": 3.75,
135
- "cacheWrite1hPerMTok": 6,
136
- "webSearchPer1K": 10
137
- },
138
- "claude-sonnet-4-6": {
139
- "inputPerMTok": 3,
140
- "outputPerMTok": 15,
141
- "cacheReadPerMTok": 0.3,
142
- "cacheWritePerMTok": 3.75,
143
- "cacheWrite1hPerMTok": 6,
144
- "webSearchPer1K": 10
145
- },
146
- "claude-sonnet-5": {
147
- "inputPerMTok": 2,
148
- "outputPerMTok": 10,
149
- "cacheReadPerMTok": 0.2,
150
- "cacheWritePerMTok": 2.5,
151
- "cacheWrite1hPerMTok": 4,
152
- "webSearchPer1K": 10
153
- },
154
- "claude-v1": {
155
- "inputPerMTok": 8,
156
- "outputPerMTok": 24,
157
- "cacheReadPerMTok": 0,
158
- "cacheWritePerMTok": 0,
159
- "cacheWrite1hPerMTok": 16,
160
- "webSearchPer1K": 10
161
- }
162
- }