@lim324/my-claude-code-viewer 0.0.2 → 0.0.3

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.
@@ -0,0 +1,42 @@
1
+ export interface CostBreakdown {
2
+ totalUsd: number;
3
+ breakdown: {
4
+ inputTokensUsd: number;
5
+ outputTokensUsd: number;
6
+ cacheCreationUsd: number;
7
+ cacheReadUsd: number;
8
+ };
9
+ tokenUsage: {
10
+ inputTokens: number;
11
+ outputTokens: number;
12
+ cacheCreationTokens: number;
13
+ cacheReadTokens: number;
14
+ };
15
+ }
16
+ export interface SessionCostBreakdown {
17
+ main: CostBreakdown;
18
+ subagents: CostBreakdown;
19
+ total: CostBreakdown;
20
+ }
21
+ export interface SubagentInfo {
22
+ agentId: string;
23
+ firstMessage: string | null;
24
+ cost: CostBreakdown;
25
+ }
26
+ /**
27
+ * Calculate cost for a single session content
28
+ */
29
+ export declare function calculateSingleSessionCost(content: string): CostBreakdown;
30
+ /**
31
+ * Calculate cost breakdown for main session and subagents separately
32
+ */
33
+ export declare function calculateSessionCostBreakdown(mainContent: string, agentContents: string[]): SessionCostBreakdown;
34
+ /**
35
+ * Calculate cost for each subagent individually
36
+ */
37
+ export declare function calculateSubagentCosts(agentContents: {
38
+ agentId: string;
39
+ content: string;
40
+ firstMessage: string | null;
41
+ }[]): SubagentInfo[];
42
+ //# sourceMappingURL=cost-breakdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-breakdown.d.ts","sourceRoot":"","sources":["../../src/lib/cost-breakdown.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QACT,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,UAAU,EAAE;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,aAAa,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAwEzE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAAE,GACtB,oBAAoB,CAgEtB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,GACjF,YAAY,EAAE,CAMhB"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateSingleSessionCost = calculateSingleSessionCost;
4
+ exports.calculateSessionCostBreakdown = calculateSessionCostBreakdown;
5
+ exports.calculateSubagentCosts = calculateSubagentCosts;
6
+ const jsonl_parser_1 = require("./jsonl-parser");
7
+ const pricing_1 = require("./pricing");
8
+ /**
9
+ * Calculate cost for a single session content
10
+ */
11
+ function calculateSingleSessionCost(content) {
12
+ let totalInputTokens = 0;
13
+ let totalOutputTokens = 0;
14
+ let totalCacheCreationTokens = 0;
15
+ let totalCacheReadTokens = 0;
16
+ let totalInputTokensUsd = 0;
17
+ let totalOutputTokensUsd = 0;
18
+ let totalCacheCreationUsd = 0;
19
+ let totalCacheReadUsd = 0;
20
+ // Track processed message IDs to avoid double counting
21
+ // When Claude responds with both text and tool_use, they appear as separate
22
+ // JSON entries with unique UUIDs but the same message ID
23
+ const processedMessageIds = new Set();
24
+ const conversations = (0, jsonl_parser_1.parseJsonl)(content);
25
+ for (const conversation of conversations) {
26
+ if (conversation.type === "assistant") {
27
+ const assistantConv = conversation;
28
+ const usage = assistantConv.message.usage;
29
+ const modelName = assistantConv.message.model;
30
+ const messageId = assistantConv.message.id;
31
+ if (!usage)
32
+ continue;
33
+ // Skip if we've already processed this message ID
34
+ // This prevents double counting when a message has both text and tool_use
35
+ if (messageId) {
36
+ if (processedMessageIds.has(messageId)) {
37
+ continue;
38
+ }
39
+ processedMessageIds.add(messageId);
40
+ }
41
+ const messageCost = (0, pricing_1.calculateTokenCost)({
42
+ input_tokens: usage.input_tokens,
43
+ output_tokens: usage.output_tokens,
44
+ cache_creation_input_tokens: usage.cache_creation_input_tokens ?? 0,
45
+ cache_read_input_tokens: usage.cache_read_input_tokens ?? 0,
46
+ }, modelName || "claude-3.5-sonnet");
47
+ totalInputTokens += usage.input_tokens;
48
+ totalOutputTokens += usage.output_tokens;
49
+ totalCacheCreationTokens += usage.cache_creation_input_tokens ?? 0;
50
+ totalCacheReadTokens += usage.cache_read_input_tokens ?? 0;
51
+ totalInputTokensUsd += messageCost.breakdown.inputTokensUsd;
52
+ totalOutputTokensUsd += messageCost.breakdown.outputTokensUsd;
53
+ totalCacheCreationUsd += messageCost.breakdown.cacheCreationUsd;
54
+ totalCacheReadUsd += messageCost.breakdown.cacheReadUsd;
55
+ }
56
+ }
57
+ return {
58
+ totalUsd: totalInputTokensUsd + totalOutputTokensUsd + totalCacheCreationUsd + totalCacheReadUsd,
59
+ breakdown: {
60
+ inputTokensUsd: totalInputTokensUsd,
61
+ outputTokensUsd: totalOutputTokensUsd,
62
+ cacheCreationUsd: totalCacheCreationUsd,
63
+ cacheReadUsd: totalCacheReadUsd,
64
+ },
65
+ tokenUsage: {
66
+ inputTokens: totalInputTokens,
67
+ outputTokens: totalOutputTokens,
68
+ cacheCreationTokens: totalCacheCreationTokens,
69
+ cacheReadTokens: totalCacheReadTokens,
70
+ },
71
+ };
72
+ }
73
+ /**
74
+ * Calculate cost breakdown for main session and subagents separately
75
+ */
76
+ function calculateSessionCostBreakdown(mainContent, agentContents) {
77
+ // Calculate main session cost
78
+ const mainCost = calculateSingleSessionCost(mainContent);
79
+ // Calculate all subagents costs
80
+ let subagentInputTokens = 0;
81
+ let subagentOutputTokens = 0;
82
+ let subagentCacheCreationTokens = 0;
83
+ let subagentCacheReadTokens = 0;
84
+ let subagentInputTokensUsd = 0;
85
+ let subagentOutputTokensUsd = 0;
86
+ let subagentCacheCreationUsd = 0;
87
+ let subagentCacheReadUsd = 0;
88
+ for (const content of agentContents) {
89
+ const cost = calculateSingleSessionCost(content);
90
+ subagentInputTokens += cost.tokenUsage.inputTokens;
91
+ subagentOutputTokens += cost.tokenUsage.outputTokens;
92
+ subagentCacheCreationTokens += cost.tokenUsage.cacheCreationTokens;
93
+ subagentCacheReadTokens += cost.tokenUsage.cacheReadTokens;
94
+ subagentInputTokensUsd += cost.breakdown.inputTokensUsd;
95
+ subagentOutputTokensUsd += cost.breakdown.outputTokensUsd;
96
+ subagentCacheCreationUsd += cost.breakdown.cacheCreationUsd;
97
+ subagentCacheReadUsd += cost.breakdown.cacheReadUsd;
98
+ }
99
+ const subagentCost = {
100
+ totalUsd: subagentInputTokensUsd + subagentOutputTokensUsd + subagentCacheCreationUsd + subagentCacheReadUsd,
101
+ breakdown: {
102
+ inputTokensUsd: subagentInputTokensUsd,
103
+ outputTokensUsd: subagentOutputTokensUsd,
104
+ cacheCreationUsd: subagentCacheCreationUsd,
105
+ cacheReadUsd: subagentCacheReadUsd,
106
+ },
107
+ tokenUsage: {
108
+ inputTokens: subagentInputTokens,
109
+ outputTokens: subagentOutputTokens,
110
+ cacheCreationTokens: subagentCacheCreationTokens,
111
+ cacheReadTokens: subagentCacheReadTokens,
112
+ },
113
+ };
114
+ // Calculate total
115
+ const totalCost = {
116
+ totalUsd: mainCost.totalUsd + subagentCost.totalUsd,
117
+ breakdown: {
118
+ inputTokensUsd: mainCost.breakdown.inputTokensUsd + subagentCost.breakdown.inputTokensUsd,
119
+ outputTokensUsd: mainCost.breakdown.outputTokensUsd + subagentCost.breakdown.outputTokensUsd,
120
+ cacheCreationUsd: mainCost.breakdown.cacheCreationUsd + subagentCost.breakdown.cacheCreationUsd,
121
+ cacheReadUsd: mainCost.breakdown.cacheReadUsd + subagentCost.breakdown.cacheReadUsd,
122
+ },
123
+ tokenUsage: {
124
+ inputTokens: mainCost.tokenUsage.inputTokens + subagentCost.tokenUsage.inputTokens,
125
+ outputTokens: mainCost.tokenUsage.outputTokens + subagentCost.tokenUsage.outputTokens,
126
+ cacheCreationTokens: mainCost.tokenUsage.cacheCreationTokens + subagentCost.tokenUsage.cacheCreationTokens,
127
+ cacheReadTokens: mainCost.tokenUsage.cacheReadTokens + subagentCost.tokenUsage.cacheReadTokens,
128
+ },
129
+ };
130
+ return {
131
+ main: mainCost,
132
+ subagents: subagentCost,
133
+ total: totalCost,
134
+ };
135
+ }
136
+ /**
137
+ * Calculate cost for each subagent individually
138
+ */
139
+ function calculateSubagentCosts(agentContents) {
140
+ return agentContents.map(({ agentId, content, firstMessage }) => ({
141
+ agentId,
142
+ firstMessage,
143
+ cost: calculateSingleSessionCost(content),
144
+ }));
145
+ }
146
+ //# sourceMappingURL=cost-breakdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-breakdown.js","sourceRoot":"","sources":["../../src/lib/cost-breakdown.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cost-calculator.d.ts","sourceRoot":"","sources":["../../src/lib/cost-calculator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QACT,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,UAAU,EAAE;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,EAAE,GACrB,cAAc,CAqEhB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAEjE"}
1
+ {"version":3,"file":"cost-calculator.d.ts","sourceRoot":"","sources":["../../src/lib/cost-calculator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE;QACT,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,UAAU,EAAE;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,EAAE,GACrB,cAAc,CAoFhB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAEjE"}
@@ -17,6 +17,10 @@ function aggregateTokenUsageAndCost(fileContents) {
17
17
  let totalCacheCreationUsd = 0;
18
18
  let totalCacheReadUsd = 0;
19
19
  let lastModelName = "claude-3.5-sonnet";
20
+ // Track processed message IDs to avoid double counting
21
+ // When Claude responds with both text and tool_use, they appear as separate
22
+ // JSON entries with unique UUIDs but the same message ID
23
+ const processedMessageIds = new Set();
20
24
  for (const content of fileContents) {
21
25
  const conversations = (0, jsonl_parser_1.parseJsonl)(content);
22
26
  for (const conversation of conversations) {
@@ -24,8 +28,17 @@ function aggregateTokenUsageAndCost(fileContents) {
24
28
  const assistantConv = conversation;
25
29
  const usage = assistantConv.message.usage;
26
30
  const modelName = assistantConv.message.model;
31
+ const messageId = assistantConv.message.id;
27
32
  if (!usage)
28
33
  continue;
34
+ // Skip if we've already processed this message ID
35
+ // This prevents double counting when a message has both text and tool_use
36
+ if (messageId) {
37
+ if (processedMessageIds.has(messageId)) {
38
+ continue;
39
+ }
40
+ processedMessageIds.add(messageId);
41
+ }
29
42
  const messageCost = (0, pricing_1.calculateTokenCost)({
30
43
  input_tokens: usage.input_tokens,
31
44
  output_tokens: usage.output_tokens,
@@ -1 +1 @@
1
- {"version":3,"file":"cost-calculator.js","sourceRoot":"","sources":["../../src/lib/cost-calculator.ts"],"names":[],"mappings":";;AAuBA,gEAuEC;AAKD,8CAEC;AArGD,iDAA0D;AAC1D,uCAA2D;AAmB3D;;GAEG;AACH,SAAgB,0BAA0B,CACxC,YAAsB;IAEtB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,wBAAwB,GAAG,CAAC,CAAC;IACjC,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAC9B,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,aAAa,GAAG,mBAAmB,CAAC;IAExC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,IAAA,yBAAU,EAAC,OAAO,CAAC,CAAC;QAE1C,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACtC,MAAM,aAAa,GAAG,YAA4B,CAAC;gBACnD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC1C,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;gBAE9C,IAAI,CAAC,KAAK;oBAAE,SAAS;gBAErB,MAAM,WAAW,GAAG,IAAA,4BAAkB,EACpC;oBACE,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,2BAA2B,EAAE,KAAK,CAAC,2BAA2B,IAAI,CAAC;oBACnE,uBAAuB,EAAE,KAAK,CAAC,uBAAuB,IAAI,CAAC;iBAC5D,EACD,SAAS,IAAI,mBAAmB,CACjC,CAAC;gBAEF,gBAAgB,IAAI,KAAK,CAAC,YAAY,CAAC;gBACvC,iBAAiB,IAAI,KAAK,CAAC,aAAa,CAAC;gBACzC,wBAAwB,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,CAAC;gBACnE,oBAAoB,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC;gBAE3D,mBAAmB,IAAI,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC;gBAC5D,oBAAoB,IAAI,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC;gBAC9D,qBAAqB,IAAI,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC;gBAChE,iBAAiB,IAAI,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC;gBAExD,IAAI,SAAS,EAAE,CAAC;oBACd,aAAa,GAAG,SAAS,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EACN,mBAAmB;YACnB,oBAAoB;YACpB,qBAAqB;YACrB,iBAAiB;QACnB,SAAS,EAAE;YACT,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,oBAAoB;YACrC,gBAAgB,EAAE,qBAAqB;YACvC,YAAY,EAAE,iBAAiB;SAChC;QACD,UAAU,EAAE;YACV,WAAW,EAAE,gBAAgB;YAC7B,YAAY,EAAE,iBAAiB;YAC/B,mBAAmB,EAAE,wBAAwB;YAC7C,eAAe,EAAE,oBAAoB;SACtC;QACD,SAAS,EAAE,aAAa;KACzB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,OAAO,0BAA0B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"cost-calculator.js","sourceRoot":"","sources":["../../src/lib/cost-calculator.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export interface Conversation {
7
7
  uuid?: string;
8
8
  sessionId?: string;
9
9
  message: {
10
+ id?: string;
10
11
  content: string | Array<{
11
12
  type: string;
12
13
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl-parser.d.ts","sourceRoot":"","sources":["../../src/lib/jsonl-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACxD,KAAK,CAAC,EAAE;YACN,YAAY,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,MAAM,CAAC;YACtB,2BAA2B,CAAC,EAAE,MAAM,CAAC;YACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;SAClC,CAAC;QACF,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE7D;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAmBlE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,oBAAoB,EAAE,GACpC,MAAM,GAAG,IAAI,CAoBf;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,oBAAoB,EAAE,GACpC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkBpE"}
1
+ {"version":3,"file":"jsonl-parser.d.ts","sourceRoot":"","sources":["../../src/lib/jsonl-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACxD,KAAK,CAAC,EAAE;YACN,YAAY,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,MAAM,CAAC;YACtB,2BAA2B,CAAC,EAAE,MAAM,CAAC;YACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;SAClC,CAAC;QACF,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE7D;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAmBlE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,oBAAoB,EAAE,GACpC,MAAM,GAAG,IAAI,CAoBf;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,oBAAoB,EAAE,GACpC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkBpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl-parser.js","sourceRoot":"","sources":["../../src/lib/jsonl-parser.ts"],"names":[],"mappings":";;AAgCA,gCAmBC;AAKD,0DAsBC;AAKD,sCAoBC;AA1ED;;GAEG;AACH,SAAgB,UAAU,CAAC,OAAe;IACxC,MAAM,KAAK,GAAG,OAAO;SAClB,IAAI,EAAE;SACN,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAExC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,MAAsB,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,SAAS,GAAe;gBAC5B,IAAI,EAAE,SAAS;gBACf,IAAI;gBACJ,UAAU,EAAE,KAAK,GAAG,CAAC;aACtB,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,aAAqC;IAErC,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QAC9C,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAE3C,MAAM,OAAO,GAAI,YAA6B,CAAC,OAAO,CAAC,OAAO,CAAC;QAE/D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,OAAO,YAAY,CAAC,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,aAAqC;IAErC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAE9D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QAE9C,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,IACE,YAAY,CAAC,IAAI,KAAK,MAAM;YAC5B,YAAY,CAAC,IAAI,KAAK,WAAW;YACjC,YAAY,CAAC,IAAI,KAAK,QAAQ,EAC9B,CAAC;YACD,MAAM,CAAC,YAAY,CAAC,IAAuC,CAAC,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"jsonl-parser.js","sourceRoot":"","sources":["../../src/lib/jsonl-parser.ts"],"names":[],"mappings":";;AAiCA,gCAmBC;AAKD,0DAsBC;AAKD,sCAoBC;AA1ED;;GAEG;AACH,SAAgB,UAAU,CAAC,OAAe;IACxC,MAAM,KAAK,GAAG,OAAO;SAClB,IAAI,EAAE;SACN,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAExC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,MAAsB,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,SAAS,GAAe;gBAC5B,IAAI,EAAE,SAAS;gBACf,IAAI;gBACJ,UAAU,EAAE,KAAK,GAAG,CAAC;aACtB,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,aAAqC;IAErC,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QAC9C,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAE3C,MAAM,OAAO,GAAI,YAA6B,CAAC,OAAO,CAAC,OAAO,CAAC;QAE/D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACjC,OAAO,YAAY,CAAC,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,aAAqC;IAErC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAE9D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QAE9C,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,IACE,YAAY,CAAC,IAAI,KAAK,MAAM;YAC5B,YAAY,CAAC,IAAI,KAAK,WAAW;YACjC,YAAY,CAAC,IAAI,KAAK,QAAQ,EAC9B,CAAC;YACD,MAAM,CAAC,YAAY,CAAC,IAAuC,CAAC,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * Model pricing per 1M tokens in USD
3
+ * Source: https://platform.claude.com/docs/en/about-claude/pricing
4
+ * Updated: 2026-03-04
3
5
  */
4
6
  export interface ModelPricing {
5
7
  input: number;
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/lib/pricing.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA2CtD,CAAC;AAEF,eAAO,MAAM,qBAAqB,cAAqC,CAAC;AAExE,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,aAAa,CAAC;AAEnD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAoC/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAG/D;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,GAChB,qBAAqB,CA+BvB"}
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/lib/pricing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAqGtD,CAAC;AAEF,eAAO,MAAM,qBAAqB,cAAqC,CAAC;AAExE,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,aAAa,CAAC;AAEnD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAoE/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAG/D;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,GAChB,qBAAqB,CA+BvB"}
@@ -1,45 +1,108 @@
1
1
  "use strict";
2
+ /**
3
+ * Model pricing per 1M tokens in USD
4
+ * Source: https://platform.claude.com/docs/en/about-claude/pricing
5
+ * Updated: 2026-03-04
6
+ */
2
7
  Object.defineProperty(exports, "__esModule", { value: true });
3
8
  exports.DEFAULT_MODEL_PRICING = exports.MODEL_PRICING = void 0;
4
9
  exports.normalizeModelName = normalizeModelName;
5
10
  exports.getModelPricing = getModelPricing;
6
11
  exports.calculateTokenCost = calculateTokenCost;
7
12
  exports.MODEL_PRICING = {
13
+ // Claude Opus 4.x series
14
+ "claude-opus-4.6": {
15
+ input: 5.0,
16
+ output: 25.0,
17
+ cache_creation: 6.25, // 5-minute cache write
18
+ cache_read: 0.50,
19
+ },
8
20
  "claude-opus-4.5": {
21
+ input: 5.0,
22
+ output: 25.0,
23
+ cache_creation: 6.25,
24
+ cache_read: 0.50,
25
+ },
26
+ "claude-opus-4.1": {
9
27
  input: 15.0,
10
28
  output: 75.0,
11
29
  cache_creation: 18.75,
12
- cache_read: 1.5,
30
+ cache_read: 1.50,
13
31
  },
14
- "claude-opus-4.1": {
32
+ "claude-opus-4": {
15
33
  input: 15.0,
16
34
  output: 75.0,
17
35
  cache_creation: 18.75,
18
- cache_read: 1.5,
36
+ cache_read: 1.50,
37
+ },
38
+ // Claude Sonnet 4.x series
39
+ "claude-sonnet-4.6": {
40
+ input: 3.0,
41
+ output: 15.0,
42
+ cache_creation: 3.75,
43
+ cache_read: 0.30,
19
44
  },
20
45
  "claude-sonnet-4.5": {
21
- input: 8.0,
22
- output: 40.0,
23
- cache_creation: 10.0,
24
- cache_read: 0.8,
46
+ input: 3.0,
47
+ output: 15.0,
48
+ cache_creation: 3.75,
49
+ cache_read: 0.30,
50
+ },
51
+ "claude-sonnet-4": {
52
+ input: 3.0,
53
+ output: 15.0,
54
+ cache_creation: 3.75,
55
+ cache_read: 0.30,
25
56
  },
57
+ // Claude Haiku series
26
58
  "claude-haiku-4.5": {
27
59
  input: 1.0,
28
60
  output: 5.0,
29
61
  cache_creation: 1.25,
30
- cache_read: 0.1,
62
+ cache_read: 0.10,
63
+ },
64
+ "claude-haiku-3.5": {
65
+ input: 0.80,
66
+ output: 4.0,
67
+ cache_creation: 1.0,
68
+ cache_read: 0.08,
69
+ },
70
+ "claude-haiku-3": {
71
+ input: 0.25,
72
+ output: 1.25,
73
+ cache_creation: 0.30,
74
+ cache_read: 0.03,
75
+ },
76
+ // Legacy models (deprecated)
77
+ "claude-opus-3": {
78
+ input: 15.0,
79
+ output: 75.0,
80
+ cache_creation: 18.75,
81
+ cache_read: 1.50,
82
+ },
83
+ "claude-sonnet-3.7": {
84
+ input: 3.0,
85
+ output: 15.0,
86
+ cache_creation: 3.75,
87
+ cache_read: 0.30,
88
+ },
89
+ "claude-sonnet-3": {
90
+ input: 3.0,
91
+ output: 15.0,
92
+ cache_creation: 3.75,
93
+ cache_read: 0.30,
31
94
  },
32
95
  "claude-3.5-sonnet": {
33
96
  input: 3.0,
34
97
  output: 15.0,
35
98
  cache_creation: 3.75,
36
- cache_read: 0.3,
99
+ cache_read: 0.30,
37
100
  },
38
101
  "claude-3-opus": {
39
102
  input: 15.0,
40
103
  output: 75.0,
41
104
  cache_creation: 18.75,
42
- cache_read: 1.5,
105
+ cache_read: 1.50,
43
106
  },
44
107
  "claude-3-haiku": {
45
108
  input: 0.25,
@@ -48,27 +111,54 @@ exports.MODEL_PRICING = {
48
111
  cache_read: 0.025,
49
112
  },
50
113
  };
51
- exports.DEFAULT_MODEL_PRICING = exports.MODEL_PRICING["claude-3.5-sonnet"];
114
+ exports.DEFAULT_MODEL_PRICING = exports.MODEL_PRICING["claude-sonnet-4.5"];
52
115
  /**
53
116
  * Normalizes Claude API model names to standard model identifiers
54
117
  */
55
118
  function normalizeModelName(modelName) {
56
119
  const normalized = modelName.toLowerCase();
120
+ // Claude Opus 4.6
121
+ if (normalized.includes("opus-4-6") || normalized.includes("opus-4.6")) {
122
+ return "claude-opus-4.6";
123
+ }
124
+ // Claude Opus 4.5
57
125
  if (normalized.includes("opus-4-5") || normalized.includes("opus-4.5")) {
58
126
  return "claude-opus-4.5";
59
127
  }
128
+ // Claude Opus 4.1
60
129
  if (normalized.includes("opus-4-1") || normalized.includes("opus-4.1")) {
61
130
  return "claude-opus-4.1";
62
131
  }
132
+ // Claude Opus 4
133
+ if (normalized.includes("opus-4") || normalized.includes("opus-4-0")) {
134
+ return "claude-opus-4";
135
+ }
136
+ // Claude Sonnet 4.6
137
+ if (normalized.includes("sonnet-4-6") || normalized.includes("sonnet-4.6")) {
138
+ return "claude-sonnet-4.6";
139
+ }
140
+ // Claude Sonnet 4.5
63
141
  if (normalized.includes("sonnet-4-5") || normalized.includes("sonnet-4.5")) {
64
142
  return "claude-sonnet-4.5";
65
143
  }
144
+ // Claude Sonnet 4
145
+ if (normalized.includes("sonnet-4") || normalized.includes("sonnet-4-0")) {
146
+ return "claude-sonnet-4";
147
+ }
148
+ // Claude Haiku 4.5
66
149
  if (normalized.includes("haiku-4-5") || normalized.includes("haiku-4.5")) {
67
150
  return "claude-haiku-4.5";
68
151
  }
69
- if (normalized.includes("sonnet-4") ||
70
- normalized.includes("3-5-sonnet") ||
71
- normalized.includes("3.5-sonnet")) {
152
+ // Claude Haiku 3.5
153
+ if (normalized.includes("haiku-3-5") || normalized.includes("haiku-3.5")) {
154
+ return "claude-haiku-3.5";
155
+ }
156
+ // Claude Haiku 3
157
+ if (normalized.includes("haiku-3") || normalized.includes("haiku-3-0")) {
158
+ return "claude-haiku-3";
159
+ }
160
+ // Legacy patterns
161
+ if (normalized.includes("3-5-sonnet") || normalized.includes("3.5-sonnet")) {
72
162
  return "claude-3.5-sonnet";
73
163
  }
74
164
  if (normalized.includes("3-opus") || normalized.includes("opus-20")) {
@@ -77,7 +167,8 @@ function normalizeModelName(modelName) {
77
167
  if (normalized.includes("3-haiku") || normalized.includes("haiku-20")) {
78
168
  return "claude-3-haiku";
79
169
  }
80
- return "claude-3.5-sonnet";
170
+ // Default to Sonnet 4.5
171
+ return "claude-sonnet-4.5";
81
172
  }
82
173
  /**
83
174
  * Gets pricing for a model, with fallback to default pricing
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/lib/pricing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/lib/pricing.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAuHH,gDAoEC;AAKD,0CAGC;AA8BD,gDAkCC;AA1PY,QAAA,aAAa,GAAiC;IACzD,yBAAyB;IACzB,iBAAiB,EAAE;QACjB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,IAAI,EAAG,uBAAuB;QAC9C,UAAU,EAAE,IAAI;KACjB;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,IAAI;KACjB;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,KAAK;QACrB,UAAU,EAAE,IAAI;KACjB;IACD,eAAe,EAAE;QACf,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,KAAK;QACrB,UAAU,EAAE,IAAI;KACjB;IACD,2BAA2B;IAC3B,mBAAmB,EAAE;QACnB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,IAAI;KACjB;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,IAAI;KACjB;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,IAAI;KACjB;IACD,sBAAsB;IACtB,kBAAkB,EAAE;QAClB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG;QACX,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,IAAI;KACjB;IACD,kBAAkB,EAAE;QAClB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,GAAG;QACX,cAAc,EAAE,GAAG;QACnB,UAAU,EAAE,IAAI;KACjB;IACD,gBAAgB,EAAE;QAChB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,IAAI;KACjB;IACD,6BAA6B;IAC7B,eAAe,EAAE;QACf,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,KAAK;QACrB,UAAU,EAAE,IAAI;KACjB;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,IAAI;KACjB;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,IAAI;KACjB;IACD,mBAAmB,EAAE;QACnB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,IAAI;KACjB;IACD,eAAe,EAAE;QACf,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,KAAK;QACrB,UAAU,EAAE,IAAI;KACjB;IACD,gBAAgB,EAAE;QAChB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,MAAM;QACtB,UAAU,EAAE,KAAK;KAClB;CACF,CAAC;AAEW,QAAA,qBAAqB,GAAG,qBAAa,CAAC,mBAAmB,CAAC,CAAC;AAIxE;;GAEG;AACH,SAAgB,kBAAkB,CAAC,SAAiB;IAClD,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAE3C,kBAAkB;IAClB,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvE,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,kBAAkB;IAClB,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvE,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,kBAAkB;IAClB,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvE,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,gBAAgB;IAChB,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,oBAAoB;IACpB,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3E,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,oBAAoB;IACpB,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3E,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,kBAAkB;IAClB,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACzE,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,mBAAmB;IACnB,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACzE,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,mBAAmB;IACnB,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACzE,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,iBAAiB;IACjB,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACvE,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,kBAAkB;IAClB,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3E,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACpE,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACtE,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,wBAAwB;IACxB,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,SAAiB;IAC/C,MAAM,UAAU,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACjD,OAAO,qBAAa,CAAC,UAAU,CAAC,IAAI,6BAAqB,CAAC;AAC5D,CAAC;AA2BD;;GAEG;AACH,SAAgB,kBAAkB,CAChC,KAAiB,EACjB,SAAiB;IAEjB,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC;IACjD,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IACnD,MAAM,iBAAiB,GAAG,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAC/E,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAEvE,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IACjD,MAAM,eAAe,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IACpD,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IACpE,MAAM,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IAExD,MAAM,QAAQ,GACZ,cAAc,GAAG,eAAe,GAAG,gBAAgB,GAAG,YAAY,CAAC;IAErE,OAAO;QACL,QAAQ;QACR,SAAS,EAAE;YACT,cAAc;YACd,eAAe;YACf,gBAAgB;YAChB,YAAY;SACb;QACD,UAAU,EAAE;YACV,WAAW,EAAE,KAAK,CAAC,YAAY;YAC/B,YAAY,EAAE,KAAK,CAAC,aAAa;YACjC,mBAAmB,EAAE,KAAK,CAAC,2BAA2B,IAAI,CAAC;YAC3D,eAAe,EAAE,KAAK,CAAC,uBAAuB,IAAI,CAAC;SACpD;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/routes/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAWjC,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;AAwGhC,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/routes/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAYjC,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;AAgJhC,eAAe,MAAM,CAAC"}
@@ -99,5 +99,37 @@ router.get("/projects/:projectId/sessions/:sessionId", (req, res) => {
99
99
  });
100
100
  }
101
101
  });
102
+ /**
103
+ * GET /api/projects/:projectId/sessions/:sessionId/subagents/:agentId
104
+ * Get subagent details
105
+ */
106
+ router.get("/projects/:projectId/sessions/:sessionId/subagents/:agentId", (req, res) => {
107
+ try {
108
+ const projectPath = (0, project_scanner_1.getSafeProjectPath)(req.params.projectId);
109
+ if (!projectPath) {
110
+ return res.status(404).json({
111
+ success: false,
112
+ error: "Invalid project",
113
+ });
114
+ }
115
+ const subagent = (0, session_analyzer_1.getSubagentDetail)(req.params.projectId, req.params.sessionId, req.params.agentId, projectPath);
116
+ if (!subagent) {
117
+ return res.status(404).json({
118
+ success: false,
119
+ error: "Subagent not found",
120
+ });
121
+ }
122
+ res.json({
123
+ success: true,
124
+ data: subagent,
125
+ });
126
+ }
127
+ catch (error) {
128
+ res.status(500).json({
129
+ success: false,
130
+ error: error instanceof Error ? error.message : "Unknown error",
131
+ });
132
+ }
133
+ });
102
134
  exports.default = router;
103
135
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/routes/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/routes/api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/routes/views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAWjC,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;AA0wBhC,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/routes/views.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAWjC,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;AAw0BhC,eAAe,MAAM,CAAC"}