create-merlin-brain 3.10.0 → 3.12.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.
Files changed (151) hide show
  1. package/bin/install.cjs +146 -22
  2. package/bin/runtime-adapters.cjs +396 -0
  3. package/dist/server/cost/tracker.d.ts +38 -2
  4. package/dist/server/cost/tracker.d.ts.map +1 -1
  5. package/dist/server/cost/tracker.js +87 -15
  6. package/dist/server/cost/tracker.js.map +1 -1
  7. package/dist/server/server.d.ts.map +1 -1
  8. package/dist/server/server.js +74 -30
  9. package/dist/server/server.js.map +1 -1
  10. package/dist/server/tools/adaptive.js +1 -1
  11. package/dist/server/tools/adaptive.js.map +1 -1
  12. package/dist/server/tools/agents-index.js +3 -3
  13. package/dist/server/tools/agents-index.js.map +1 -1
  14. package/dist/server/tools/agents.js +5 -5
  15. package/dist/server/tools/agents.js.map +1 -1
  16. package/dist/server/tools/behaviors.js +4 -4
  17. package/dist/server/tools/behaviors.js.map +1 -1
  18. package/dist/server/tools/context.js +7 -7
  19. package/dist/server/tools/context.js.map +1 -1
  20. package/dist/server/tools/cost.d.ts +3 -1
  21. package/dist/server/tools/cost.d.ts.map +1 -1
  22. package/dist/server/tools/cost.js +66 -13
  23. package/dist/server/tools/cost.js.map +1 -1
  24. package/dist/server/tools/discoveries.js +6 -6
  25. package/dist/server/tools/discoveries.js.map +1 -1
  26. package/dist/server/tools/index.d.ts +4 -0
  27. package/dist/server/tools/index.d.ts.map +1 -1
  28. package/dist/server/tools/index.js +4 -0
  29. package/dist/server/tools/index.js.map +1 -1
  30. package/dist/server/tools/learning.d.ts +12 -0
  31. package/dist/server/tools/learning.d.ts.map +1 -0
  32. package/dist/server/tools/learning.js +269 -0
  33. package/dist/server/tools/learning.js.map +1 -0
  34. package/dist/server/tools/project.js +7 -7
  35. package/dist/server/tools/project.js.map +1 -1
  36. package/dist/server/tools/promote.d.ts +11 -0
  37. package/dist/server/tools/promote.d.ts.map +1 -0
  38. package/dist/server/tools/promote.js +315 -0
  39. package/dist/server/tools/promote.js.map +1 -0
  40. package/dist/server/tools/route.d.ts.map +1 -1
  41. package/dist/server/tools/route.js +65 -24
  42. package/dist/server/tools/route.js.map +1 -1
  43. package/dist/server/tools/session-restore.d.ts +18 -0
  44. package/dist/server/tools/session-restore.d.ts.map +1 -0
  45. package/dist/server/tools/session-restore.js +154 -0
  46. package/dist/server/tools/session-restore.js.map +1 -0
  47. package/dist/server/tools/session-search.d.ts +16 -0
  48. package/dist/server/tools/session-search.d.ts.map +1 -0
  49. package/dist/server/tools/session-search.js +240 -0
  50. package/dist/server/tools/session-search.js.map +1 -0
  51. package/dist/server/tools/sights-index.js +2 -2
  52. package/dist/server/tools/sights-index.js.map +1 -1
  53. package/dist/server/tools/smart-route.d.ts.map +1 -1
  54. package/dist/server/tools/smart-route.js +4 -5
  55. package/dist/server/tools/smart-route.js.map +1 -1
  56. package/dist/server/tools/verification.js +1 -1
  57. package/dist/server/tools/verification.js.map +1 -1
  58. package/files/agents/code-organization-supervisor.md +9 -0
  59. package/files/agents/context-guardian.md +9 -0
  60. package/files/agents/docs-keeper.md +11 -1
  61. package/files/agents/dry-refactor.md +12 -1
  62. package/files/agents/elite-code-refactorer.md +10 -0
  63. package/files/agents/hardening-guard.md +13 -1
  64. package/files/agents/implementation-dev.md +12 -1
  65. package/files/agents/merlin-access-control-reviewer.md +248 -0
  66. package/files/agents/merlin-api-designer.md +9 -0
  67. package/files/agents/merlin-codebase-mapper.md +9 -1
  68. package/files/agents/merlin-debugger.md +10 -0
  69. package/files/agents/merlin-dependency-auditor.md +216 -0
  70. package/files/agents/merlin-executor.md +12 -1
  71. package/files/agents/merlin-frontend.md +9 -0
  72. package/files/agents/merlin-input-validator.md +247 -0
  73. package/files/agents/merlin-integration-checker.md +9 -1
  74. package/files/agents/merlin-migrator.md +9 -0
  75. package/files/agents/merlin-milestone-auditor.md +8 -0
  76. package/files/agents/merlin-performance.md +8 -0
  77. package/files/agents/merlin-planner.md +10 -0
  78. package/files/agents/merlin-researcher.md +10 -0
  79. package/files/agents/merlin-reviewer.md +42 -7
  80. package/files/agents/merlin-sast-reviewer.md +182 -0
  81. package/files/agents/merlin-secret-scanner.md +203 -0
  82. package/files/agents/merlin-security.md +9 -0
  83. package/files/agents/merlin-verifier.md +9 -0
  84. package/files/agents/merlin-work-verifier.md +9 -0
  85. package/files/agents/merlin.md +10 -0
  86. package/files/agents/ops-railway.md +11 -1
  87. package/files/agents/orchestrator-retrofit.md +9 -1
  88. package/files/agents/product-spec.md +11 -1
  89. package/files/agents/remotion.md +8 -0
  90. package/files/agents/system-architect.md +11 -1
  91. package/files/agents/tests-qa.md +12 -1
  92. package/files/commands/merlin/course-correct.md +219 -0
  93. package/files/commands/merlin/debug.md +2 -2
  94. package/files/commands/merlin/execute-phase.md +96 -199
  95. package/files/commands/merlin/execute-plan.md +118 -182
  96. package/files/commands/merlin/health.md +385 -0
  97. package/files/commands/merlin/loop-recipes.md +93 -36
  98. package/files/commands/merlin/map-codebase.md +4 -4
  99. package/files/commands/merlin/next.md +240 -0
  100. package/files/commands/merlin/optimize-prompts.md +158 -0
  101. package/files/commands/merlin/plan-phase.md +1 -1
  102. package/files/commands/merlin/profiles.md +215 -0
  103. package/files/commands/merlin/promote.md +176 -0
  104. package/files/commands/merlin/quick.md +229 -0
  105. package/files/commands/merlin/readiness-gate.md +208 -0
  106. package/files/commands/merlin/research-phase.md +2 -2
  107. package/files/commands/merlin/research-project.md +4 -4
  108. package/files/commands/merlin/resume-work.md +27 -1
  109. package/files/commands/merlin/route.md +43 -1
  110. package/files/commands/merlin/sandbox.md +359 -0
  111. package/files/commands/merlin/usage.md +55 -0
  112. package/files/commands/merlin/verify-work.md +1 -1
  113. package/files/docker/Dockerfile.merlin +20 -0
  114. package/files/docker/docker-compose.merlin.yml +23 -0
  115. package/files/hook-templates/auto-commit.sh +64 -0
  116. package/files/hook-templates/auto-format.sh +95 -0
  117. package/files/hook-templates/auto-test.sh +117 -0
  118. package/files/hook-templates/branch-protection.sh +72 -0
  119. package/files/hook-templates/changelog-reminder.sh +76 -0
  120. package/files/hook-templates/complexity-check.sh +112 -0
  121. package/files/hook-templates/import-audit.sh +83 -0
  122. package/files/hook-templates/license-header.sh +84 -0
  123. package/files/hook-templates/pr-description.sh +100 -0
  124. package/files/hook-templates/todo-tracker.sh +80 -0
  125. package/files/hooks/check-file-size.sh +17 -4
  126. package/files/hooks/config-change.sh +44 -16
  127. package/files/hooks/instructions-loaded.sh +22 -5
  128. package/files/hooks/notify-desktop.sh +157 -0
  129. package/files/hooks/notify-webhook.sh +141 -0
  130. package/files/hooks/pre-edit-sights-check.sh +76 -9
  131. package/files/hooks/security-scanner.sh +153 -0
  132. package/files/hooks/session-end-memory-sync.sh +97 -0
  133. package/files/hooks/session-end.sh +274 -1
  134. package/files/hooks/session-start.sh +19 -6
  135. package/files/hooks/smart-approve.sh +270 -0
  136. package/files/hooks/teammate-idle-verify.sh +87 -12
  137. package/files/hooks/worktree-create.sh +20 -3
  138. package/files/hooks/worktree-remove.sh +21 -3
  139. package/files/merlin/references/plan-format.md +37 -9
  140. package/files/merlin/sandbox.json +9 -0
  141. package/files/merlin/security.json +11 -0
  142. package/files/merlin/templates/ci/docs-update.yml +81 -0
  143. package/files/merlin/templates/ci/pr-review.yml +50 -0
  144. package/files/merlin/templates/ci/security-audit.yml +74 -0
  145. package/files/merlin/templates/config.json +9 -1
  146. package/files/rules/api-rules.md +30 -0
  147. package/files/rules/frontend-rules.md +25 -0
  148. package/files/rules/hooks-rules.md +36 -0
  149. package/files/rules/mcp-rules.md +30 -0
  150. package/files/rules/worker-rules.md +29 -0
  151. package/package.json +1 -1
@@ -3,11 +3,29 @@
3
3
  *
4
4
  * Tracks routing decisions and estimates cost savings vs always using Opus.
5
5
  * Resets on each MCP server restart (per session).
6
+ *
7
+ * v2: Adds per-agent breakdown, token counts, and token-based pricing.
6
8
  */
9
+ export declare const MODEL_PRICING: Record<string, {
10
+ inputPerM: number;
11
+ outputPerM: number;
12
+ }>;
7
13
  export interface ModelUsage {
8
14
  calls: number;
9
15
  estimatedCost: number;
10
16
  }
17
+ export interface AgentUsage {
18
+ calls: number;
19
+ inputTokens: number;
20
+ outputTokens: number;
21
+ estimatedCost: number;
22
+ }
23
+ export interface TokenCounts {
24
+ totalInput: number;
25
+ totalOutput: number;
26
+ cacheRead: number;
27
+ cacheWrite: number;
28
+ }
11
29
  export interface SessionCost {
12
30
  sessionId: string;
13
31
  totalCalls: number;
@@ -16,15 +34,33 @@ export interface SessionCost {
16
34
  sonnet: ModelUsage;
17
35
  opus: ModelUsage;
18
36
  };
37
+ byAgent: Record<string, AgentUsage>;
38
+ tokenCounts: TokenCounts;
19
39
  savedVsBaseline: number;
20
40
  totalEstimatedCost: number;
21
41
  }
42
+ export interface RoutingRecord {
43
+ model: string;
44
+ taskComplexity: string;
45
+ agent?: string;
46
+ inputTokens?: number;
47
+ outputTokens?: number;
48
+ cacheReadTokens?: number;
49
+ cacheWriteTokens?: number;
50
+ }
22
51
  /**
23
52
  * Record a routing decision. Call this each time a task is routed to an agent.
53
+ * Supports optional token counts for accurate pricing; falls back to flat-rate.
24
54
  */
25
- export declare function recordRouting(model: string, _taskComplexity: string): void;
55
+ export declare function recordRouting(model: string, taskComplexity: string, opts?: {
56
+ agent?: string;
57
+ inputTokens?: number;
58
+ outputTokens?: number;
59
+ cacheReadTokens?: number;
60
+ cacheWriteTokens?: number;
61
+ }): void;
26
62
  /**
27
- * Get a snapshot of current session costs.
63
+ * Get a snapshot of current session costs (deep copy).
28
64
  */
29
65
  export declare function getSessionCost(): SessionCost;
30
66
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/server/cost/tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,KAAK,EAAE,UAAU,CAAC;QAClB,MAAM,EAAE,UAAU,CAAC;QACnB,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;IACF,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAyBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAoB1E;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAY5C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAOnC"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/server/cost/tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAInF,CAAC;AAeF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,KAAK,EAAE,UAAU,CAAC;QAClB,MAAM,EAAE,UAAU,CAAC;QACnB,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAoED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACtB,GACL,IAAI,CA2CN;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAgB5C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CASnC"}
@@ -3,17 +3,29 @@
3
3
  *
4
4
  * Tracks routing decisions and estimates cost savings vs always using Opus.
5
5
  * Resets on each MCP server restart (per session).
6
+ *
7
+ * v2: Adds per-agent breakdown, token counts, and token-based pricing.
6
8
  */
7
9
  import { randomUUID } from 'crypto';
8
- // Estimated cost per routing call (rough approximation)
9
- // These are per-message estimates for a typical agentic task
10
- const COST_PER_CALL = {
10
+ import { writeFileSync, mkdirSync } from 'fs';
11
+ import { homedir } from 'os';
12
+ import { join } from 'path';
13
+ // Token-based pricing per million tokens (input / output)
14
+ export const MODEL_PRICING = {
15
+ haiku: { inputPerM: 0.25, outputPerM: 1.25 },
16
+ sonnet: { inputPerM: 3.00, outputPerM: 15.00 },
17
+ opus: { inputPerM: 15.00, outputPerM: 75.00 },
18
+ };
19
+ // Fallback per-call estimate when token counts are not available.
20
+ // These mirror the original values so existing behaviour is preserved.
21
+ const COST_PER_CALL_FALLBACK = {
11
22
  haiku: 0.003,
12
23
  sonnet: 0.015,
13
24
  opus: 0.075,
14
25
  };
15
- // Baseline: cost if every routing call used Opus
16
- const OPUS_BASELINE_COST = COST_PER_CALL.opus;
26
+ // Opus baseline for savings calculation (per call, no token data)
27
+ const OPUS_BASELINE_PER_CALL = COST_PER_CALL_FALLBACK.opus;
28
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
17
29
  /** Normalize model string to haiku | sonnet | opus key */
18
30
  function normalizeModel(model) {
19
31
  const lower = model.toLowerCase();
@@ -23,7 +35,35 @@ function normalizeModel(model) {
23
35
  return 'sonnet';
24
36
  return 'opus';
25
37
  }
26
- // Singleton session state
38
+ /**
39
+ * Estimate call cost.
40
+ * Uses token counts when available; falls back to per-call flat rate.
41
+ */
42
+ function estimateCallCost(modelKey, inputTokens, outputTokens) {
43
+ if (inputTokens > 0 || outputTokens > 0) {
44
+ const pricing = MODEL_PRICING[modelKey];
45
+ return (inputTokens / 1_000_000) * pricing.inputPerM
46
+ + (outputTokens / 1_000_000) * pricing.outputPerM;
47
+ }
48
+ return COST_PER_CALL_FALLBACK[modelKey];
49
+ }
50
+ function round6(n) {
51
+ return parseFloat(n.toFixed(6));
52
+ }
53
+ // ─── Persistence ─────────────────────────────────────────────────────────────
54
+ const COST_DIR = join(homedir(), '.claude', 'merlin');
55
+ const COST_FILE = join(COST_DIR, 'session-cost.json');
56
+ /** Write current state to disk so session-end.sh can read it. Fire-and-forget. */
57
+ function persistCost() {
58
+ try {
59
+ mkdirSync(COST_DIR, { recursive: true });
60
+ writeFileSync(COST_FILE, JSON.stringify(state, null, 2), 'utf-8');
61
+ }
62
+ catch {
63
+ // Non-fatal — in-memory state is authoritative
64
+ }
65
+ }
66
+ // ─── Singleton state ──────────────────────────────────────────────────────────
27
67
  const SESSION_ID = randomUUID();
28
68
  const state = {
29
69
  sessionId: SESSION_ID,
@@ -33,26 +73,54 @@ const state = {
33
73
  sonnet: { calls: 0, estimatedCost: 0 },
34
74
  opus: { calls: 0, estimatedCost: 0 },
35
75
  },
76
+ byAgent: {},
77
+ tokenCounts: { totalInput: 0, totalOutput: 0, cacheRead: 0, cacheWrite: 0 },
36
78
  savedVsBaseline: 0,
37
79
  totalEstimatedCost: 0,
38
80
  };
39
81
  /**
40
82
  * Record a routing decision. Call this each time a task is routed to an agent.
83
+ * Supports optional token counts for accurate pricing; falls back to flat-rate.
41
84
  */
42
- export function recordRouting(model, _taskComplexity) {
85
+ export function recordRouting(model, taskComplexity, opts = {}) {
43
86
  const key = normalizeModel(model);
44
- const cost = COST_PER_CALL[key] ?? COST_PER_CALL.opus;
87
+ const inputTokens = opts.inputTokens ?? 0;
88
+ const outputTokens = opts.outputTokens ?? 0;
89
+ const cacheRead = opts.cacheReadTokens ?? 0;
90
+ const cacheWrite = opts.cacheWriteTokens ?? 0;
91
+ const cost = estimateCallCost(key, inputTokens, outputTokens);
92
+ // ── byModel ──────────────────────────────────────────────────────────────
45
93
  state.totalCalls += 1;
46
94
  state.byModel[key].calls += 1;
47
- state.byModel[key].estimatedCost = parseFloat((state.byModel[key].estimatedCost + cost).toFixed(6));
48
- state.totalEstimatedCost = parseFloat((state.totalEstimatedCost + cost).toFixed(6));
49
- // Savings: how much cheaper vs always using Opus
50
- const baselineCostForThisCall = OPUS_BASELINE_COST;
51
- const saved = baselineCostForThisCall - cost;
52
- state.savedVsBaseline = parseFloat((state.savedVsBaseline + saved).toFixed(6));
95
+ state.byModel[key].estimatedCost = round6(state.byModel[key].estimatedCost + cost);
96
+ // ── totals ────────────────────────────────────────────────────────────────
97
+ state.totalEstimatedCost = round6(state.totalEstimatedCost + cost);
98
+ // ── token counts ──────────────────────────────────────────────────────────
99
+ state.tokenCounts.totalInput += inputTokens;
100
+ state.tokenCounts.totalOutput += outputTokens;
101
+ state.tokenCounts.cacheRead += cacheRead;
102
+ state.tokenCounts.cacheWrite += cacheWrite;
103
+ // ── byAgent ───────────────────────────────────────────────────────────────
104
+ const agentKey = opts.agent ?? 'unknown';
105
+ if (!state.byAgent[agentKey]) {
106
+ state.byAgent[agentKey] = { calls: 0, inputTokens: 0, outputTokens: 0, estimatedCost: 0 };
107
+ }
108
+ const agentEntry = state.byAgent[agentKey];
109
+ agentEntry.calls += 1;
110
+ agentEntry.inputTokens += inputTokens;
111
+ agentEntry.outputTokens += outputTokens;
112
+ agentEntry.estimatedCost = round6(agentEntry.estimatedCost + cost);
113
+ // ── savings vs all-Opus baseline ─────────────────────────────────────────
114
+ // Baseline uses per-call flat rate (Opus) since we can't know what token
115
+ // counts would have been on Opus.
116
+ const baselineCost = OPUS_BASELINE_PER_CALL;
117
+ const saved = baselineCost - cost;
118
+ state.savedVsBaseline = round6(state.savedVsBaseline + saved);
119
+ // Persist so session-end.sh can read it without querying the MCP
120
+ persistCost();
53
121
  }
54
122
  /**
55
- * Get a snapshot of current session costs.
123
+ * Get a snapshot of current session costs (deep copy).
56
124
  */
57
125
  export function getSessionCost() {
58
126
  return {
@@ -63,6 +131,8 @@ export function getSessionCost() {
63
131
  sonnet: { ...state.byModel.sonnet },
64
132
  opus: { ...state.byModel.opus },
65
133
  },
134
+ byAgent: Object.fromEntries(Object.entries(state.byAgent).map(([k, v]) => [k, { ...v }])),
135
+ tokenCounts: { ...state.tokenCounts },
66
136
  savedVsBaseline: state.savedVsBaseline,
67
137
  totalEstimatedCost: state.totalEstimatedCost,
68
138
  };
@@ -75,6 +145,8 @@ export function resetSession() {
75
145
  state.byModel.haiku = { calls: 0, estimatedCost: 0 };
76
146
  state.byModel.sonnet = { calls: 0, estimatedCost: 0 };
77
147
  state.byModel.opus = { calls: 0, estimatedCost: 0 };
148
+ state.byAgent = {};
149
+ state.tokenCounts = { totalInput: 0, totalOutput: 0, cacheRead: 0, cacheWrite: 0 };
78
150
  state.savedVsBaseline = 0;
79
151
  state.totalEstimatedCost = 0;
80
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/server/cost/tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/server/cost/tracker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8CpE,0CAA0C;AAC1C,wBAAgB,YAAY,IAAI,SAAS,CAs4FxC;AAED,gDAAgD;AAChD,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAoCjD"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkDpE,0CAA0C;AAC1C,wBAAgB,YAAY,IAAI,SAAS,CAi7FxC;AAED,gDAAgD;AAChD,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAoCjD"}