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.
- package/bin/install.cjs +146 -22
- package/bin/runtime-adapters.cjs +396 -0
- package/dist/server/cost/tracker.d.ts +38 -2
- package/dist/server/cost/tracker.d.ts.map +1 -1
- package/dist/server/cost/tracker.js +87 -15
- package/dist/server/cost/tracker.js.map +1 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +74 -30
- package/dist/server/server.js.map +1 -1
- package/dist/server/tools/adaptive.js +1 -1
- package/dist/server/tools/adaptive.js.map +1 -1
- package/dist/server/tools/agents-index.js +3 -3
- package/dist/server/tools/agents-index.js.map +1 -1
- package/dist/server/tools/agents.js +5 -5
- package/dist/server/tools/agents.js.map +1 -1
- package/dist/server/tools/behaviors.js +4 -4
- package/dist/server/tools/behaviors.js.map +1 -1
- package/dist/server/tools/context.js +7 -7
- package/dist/server/tools/context.js.map +1 -1
- package/dist/server/tools/cost.d.ts +3 -1
- package/dist/server/tools/cost.d.ts.map +1 -1
- package/dist/server/tools/cost.js +66 -13
- package/dist/server/tools/cost.js.map +1 -1
- package/dist/server/tools/discoveries.js +6 -6
- package/dist/server/tools/discoveries.js.map +1 -1
- package/dist/server/tools/index.d.ts +4 -0
- package/dist/server/tools/index.d.ts.map +1 -1
- package/dist/server/tools/index.js +4 -0
- package/dist/server/tools/index.js.map +1 -1
- package/dist/server/tools/learning.d.ts +12 -0
- package/dist/server/tools/learning.d.ts.map +1 -0
- package/dist/server/tools/learning.js +269 -0
- package/dist/server/tools/learning.js.map +1 -0
- package/dist/server/tools/project.js +7 -7
- package/dist/server/tools/project.js.map +1 -1
- package/dist/server/tools/promote.d.ts +11 -0
- package/dist/server/tools/promote.d.ts.map +1 -0
- package/dist/server/tools/promote.js +315 -0
- package/dist/server/tools/promote.js.map +1 -0
- package/dist/server/tools/route.d.ts.map +1 -1
- package/dist/server/tools/route.js +65 -24
- package/dist/server/tools/route.js.map +1 -1
- package/dist/server/tools/session-restore.d.ts +18 -0
- package/dist/server/tools/session-restore.d.ts.map +1 -0
- package/dist/server/tools/session-restore.js +154 -0
- package/dist/server/tools/session-restore.js.map +1 -0
- package/dist/server/tools/session-search.d.ts +16 -0
- package/dist/server/tools/session-search.d.ts.map +1 -0
- package/dist/server/tools/session-search.js +240 -0
- package/dist/server/tools/session-search.js.map +1 -0
- package/dist/server/tools/sights-index.js +2 -2
- package/dist/server/tools/sights-index.js.map +1 -1
- package/dist/server/tools/smart-route.d.ts.map +1 -1
- package/dist/server/tools/smart-route.js +4 -5
- package/dist/server/tools/smart-route.js.map +1 -1
- package/dist/server/tools/verification.js +1 -1
- package/dist/server/tools/verification.js.map +1 -1
- package/files/agents/code-organization-supervisor.md +9 -0
- package/files/agents/context-guardian.md +9 -0
- package/files/agents/docs-keeper.md +11 -1
- package/files/agents/dry-refactor.md +12 -1
- package/files/agents/elite-code-refactorer.md +10 -0
- package/files/agents/hardening-guard.md +13 -1
- package/files/agents/implementation-dev.md +12 -1
- package/files/agents/merlin-access-control-reviewer.md +248 -0
- package/files/agents/merlin-api-designer.md +9 -0
- package/files/agents/merlin-codebase-mapper.md +9 -1
- package/files/agents/merlin-debugger.md +10 -0
- package/files/agents/merlin-dependency-auditor.md +216 -0
- package/files/agents/merlin-executor.md +12 -1
- package/files/agents/merlin-frontend.md +9 -0
- package/files/agents/merlin-input-validator.md +247 -0
- package/files/agents/merlin-integration-checker.md +9 -1
- package/files/agents/merlin-migrator.md +9 -0
- package/files/agents/merlin-milestone-auditor.md +8 -0
- package/files/agents/merlin-performance.md +8 -0
- package/files/agents/merlin-planner.md +10 -0
- package/files/agents/merlin-researcher.md +10 -0
- package/files/agents/merlin-reviewer.md +42 -7
- package/files/agents/merlin-sast-reviewer.md +182 -0
- package/files/agents/merlin-secret-scanner.md +203 -0
- package/files/agents/merlin-security.md +9 -0
- package/files/agents/merlin-verifier.md +9 -0
- package/files/agents/merlin-work-verifier.md +9 -0
- package/files/agents/merlin.md +10 -0
- package/files/agents/ops-railway.md +11 -1
- package/files/agents/orchestrator-retrofit.md +9 -1
- package/files/agents/product-spec.md +11 -1
- package/files/agents/remotion.md +8 -0
- package/files/agents/system-architect.md +11 -1
- package/files/agents/tests-qa.md +12 -1
- package/files/commands/merlin/course-correct.md +219 -0
- package/files/commands/merlin/debug.md +2 -2
- package/files/commands/merlin/execute-phase.md +96 -199
- package/files/commands/merlin/execute-plan.md +118 -182
- package/files/commands/merlin/health.md +385 -0
- package/files/commands/merlin/loop-recipes.md +93 -36
- package/files/commands/merlin/map-codebase.md +4 -4
- package/files/commands/merlin/next.md +240 -0
- package/files/commands/merlin/optimize-prompts.md +158 -0
- package/files/commands/merlin/plan-phase.md +1 -1
- package/files/commands/merlin/profiles.md +215 -0
- package/files/commands/merlin/promote.md +176 -0
- package/files/commands/merlin/quick.md +229 -0
- package/files/commands/merlin/readiness-gate.md +208 -0
- package/files/commands/merlin/research-phase.md +2 -2
- package/files/commands/merlin/research-project.md +4 -4
- package/files/commands/merlin/resume-work.md +27 -1
- package/files/commands/merlin/route.md +43 -1
- package/files/commands/merlin/sandbox.md +359 -0
- package/files/commands/merlin/usage.md +55 -0
- package/files/commands/merlin/verify-work.md +1 -1
- package/files/docker/Dockerfile.merlin +20 -0
- package/files/docker/docker-compose.merlin.yml +23 -0
- package/files/hook-templates/auto-commit.sh +64 -0
- package/files/hook-templates/auto-format.sh +95 -0
- package/files/hook-templates/auto-test.sh +117 -0
- package/files/hook-templates/branch-protection.sh +72 -0
- package/files/hook-templates/changelog-reminder.sh +76 -0
- package/files/hook-templates/complexity-check.sh +112 -0
- package/files/hook-templates/import-audit.sh +83 -0
- package/files/hook-templates/license-header.sh +84 -0
- package/files/hook-templates/pr-description.sh +100 -0
- package/files/hook-templates/todo-tracker.sh +80 -0
- package/files/hooks/check-file-size.sh +17 -4
- package/files/hooks/config-change.sh +44 -16
- package/files/hooks/instructions-loaded.sh +22 -5
- package/files/hooks/notify-desktop.sh +157 -0
- package/files/hooks/notify-webhook.sh +141 -0
- package/files/hooks/pre-edit-sights-check.sh +76 -9
- package/files/hooks/security-scanner.sh +153 -0
- package/files/hooks/session-end-memory-sync.sh +97 -0
- package/files/hooks/session-end.sh +274 -1
- package/files/hooks/session-start.sh +19 -6
- package/files/hooks/smart-approve.sh +270 -0
- package/files/hooks/teammate-idle-verify.sh +87 -12
- package/files/hooks/worktree-create.sh +20 -3
- package/files/hooks/worktree-remove.sh +21 -3
- package/files/merlin/references/plan-format.md +37 -9
- package/files/merlin/sandbox.json +9 -0
- package/files/merlin/security.json +11 -0
- package/files/merlin/templates/ci/docs-update.yml +81 -0
- package/files/merlin/templates/ci/pr-review.yml +50 -0
- package/files/merlin/templates/ci/security-audit.yml +74 -0
- package/files/merlin/templates/config.json +9 -1
- package/files/rules/api-rules.md +30 -0
- package/files/rules/frontend-rules.md +25 -0
- package/files/rules/hooks-rules.md +36 -0
- package/files/rules/mcp-rules.md +30 -0
- package/files/rules/worker-rules.md +29 -0
- 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,
|
|
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
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
//
|
|
16
|
-
const
|
|
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
|
-
|
|
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,
|
|
85
|
+
export function recordRouting(model, taskComplexity, opts = {}) {
|
|
43
86
|
const key = normalizeModel(model);
|
|
44
|
-
const
|
|
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 =
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
state.
|
|
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":"AAAA
|
|
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;
|
|
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"}
|