@rasensio/aidlc 1.13.1 → 1.14.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.
@@ -0,0 +1,257 @@
1
+ /**
2
+ * Re-derive the `phase` label on ledger entries written before `phaseWindows` was
3
+ * fixed.
4
+ *
5
+ * That function read the wrong field name, returned one window covering all time,
6
+ * and every call site seeds `'implementation'` — so 18 of 19 instances had 100% of
7
+ * their priced usage mislabelled. Fixing the reader corrects attribution going
8
+ * forward; this corrects what is already on disk.
9
+ *
10
+ * Two paths, chosen per entry:
11
+ *
12
+ * - **Relabel** when the entry's coverage falls inside a single corrected window.
13
+ * Post-purge that is 4,134 entries, and it needs no transcript at all.
14
+ * - **Split** when coverage spans several windows. Six entries, all `metered` bulk
15
+ * captures, holding 28.8% of all priced tokens — one spans 55.2h and 480.5M
16
+ * tokens. These are re-read from their source transcript so each record lands in
17
+ * the phase it actually occurred in.
18
+ *
19
+ * The split is arithmetic, not estimation: **bounded by the entry's own coverage
20
+ * window**, all six reconcile to their transcripts to the digit. That bound is
21
+ * load-bearing — one entry's cursor sits in a 633-record transcript while the entry
22
+ * covers only 80 of them (5,132,819 of 119,105,507 tokens), so splitting on the
23
+ * whole file would have inflated it 23×.
24
+ *
25
+ * Three invariants, each learned from a defect rather than assumed:
26
+ *
27
+ * 1. **Split output is zero-width** (`from === to`, the record's instant).
28
+ * `applyPrecedence` reduces overlap only *across* fidelity ranks, so ~1,245
29
+ * same-fidelity entries with real windows would double-count each other.
30
+ * 2. **A record inside two instances' claims goes to `unattributed.ndjson`**, never
31
+ * to both. This is the `cost-claim-attribution` safeguard, and it is not
32
+ * hypothetical: 377 records / 211.1M tokens in one split target sit inside two
33
+ * claim windows.
34
+ * 3. **Verification is on precedence-weighted dollars, not raw token sums.** Raw
35
+ * sums can balance while weighted totals move — the exact shape of the defect
36
+ * that reported a plausible total while double-counting 950 entries.
37
+ *
38
+ * Requirements: turn-scoped-cost/AC-9 … AC-15, AC-35 … AC-37, AC-40
39
+ * Design: design.md Part 2
40
+ */
41
+ import { existsSync, readdirSync } from 'node:fs';
42
+ import { join } from 'node:path';
43
+ import { readEntries, rewriteLedger, appendEntry, ledgerPath, unattributedPath, } from './ledger.js';
44
+ import { sessionsPath, readSessionEvents, resolveIntervals } from './sessions.js';
45
+ import { phaseWindows } from './recorder.js';
46
+ import { claudeCodeProvider } from './providers/claude-code.js';
47
+ import { buildProvenanceIndex } from './provenance.js';
48
+ function tokensOf(e) {
49
+ if (e.units === null || e.units.kind !== 'tokens')
50
+ return 0;
51
+ const u = e.units;
52
+ return u.input_tokens + u.output_tokens + u.cache_read_tokens + u.cache_write_tokens;
53
+ }
54
+ /** Distinct phases an entry's coverage window touches. */
55
+ export function phasesSpanned(e, windows) {
56
+ const from = Date.parse(e.coverage.from);
57
+ const to = Date.parse(e.coverage.to);
58
+ const hit = new Set();
59
+ for (const w of windows) {
60
+ if (from < w.to && to >= w.from)
61
+ hit.add(w.phase);
62
+ }
63
+ return [...hit];
64
+ }
65
+ function phaseAt(windows, at) {
66
+ for (const w of windows) {
67
+ if (at >= w.from && at < w.to)
68
+ return w.phase;
69
+ }
70
+ return windows.length > 0 ? windows[windows.length - 1].phase : null;
71
+ }
72
+ /**
73
+ * Instances whose claim intervals contain `at`.
74
+ *
75
+ * Returning the full list rather than a single answer is deliberate: the caller
76
+ * must be able to tell "exactly one" from "several", because the second case is the
77
+ * one that must never be attributed.
78
+ */
79
+ function claimantsAt(at, intervalsByInstance) {
80
+ const out = [];
81
+ for (const [instance, intervals] of intervalsByInstance) {
82
+ if (intervals.some((iv) => at >= Date.parse(iv.from) && at <= Date.parse(iv.to))) {
83
+ out.push(instance);
84
+ }
85
+ }
86
+ return out;
87
+ }
88
+ /** Locate the transcript file holding `cursor`, or null when it is gone. */
89
+ function fileForCursor(cursor, index) {
90
+ if (cursor === null)
91
+ return null;
92
+ const files = index.get(cursor);
93
+ if (files === undefined || files.size !== 1)
94
+ return null;
95
+ return [...files][0];
96
+ }
97
+ /**
98
+ * Re-derive every instance ledger.
99
+ *
100
+ * `provenanceFiles` maps a cursor to the transcript *path* containing it — a
101
+ * different index from `provenance.ts`'s repo-identity map, built here because the
102
+ * split needs the file itself.
103
+ */
104
+ export async function rederivePhases(projectRoot, claimTimeoutMinutes, env = { projectRoot }, provenanceFiles) {
105
+ const report = {
106
+ relabelled: 0,
107
+ split: 0,
108
+ splitRecords: 0,
109
+ toUnattributed: 0,
110
+ unsplittable: [],
111
+ manualSkipped: 0,
112
+ tokensBefore: 0,
113
+ tokensAfter: 0,
114
+ };
115
+ const stateDir = join(projectRoot, '.aidlc', 'state');
116
+ if (!existsSync(stateDir))
117
+ return report;
118
+ const instances = readdirSync(stateDir, { withFileTypes: true })
119
+ .filter((d) => d.isDirectory())
120
+ .map((d) => d.name)
121
+ .filter((n) => existsSync(ledgerPath(projectRoot, n)));
122
+ const cursorFiles = provenanceFiles ?? buildCursorFileIndex(env);
123
+ // Claim intervals for EVERY instance, so "inside two claims" is detectable.
124
+ const intervalsByInstance = new Map();
125
+ for (const instance of readdirSync(stateDir, { withFileTypes: true })
126
+ .filter((d) => d.isDirectory())
127
+ .map((d) => d.name)) {
128
+ intervalsByInstance.set(instance, resolveIntervals(readSessionEvents(sessionsPath(projectRoot, instance)), claimTimeoutMinutes));
129
+ }
130
+ for (const instance of instances) {
131
+ const file = ledgerPath(projectRoot, instance);
132
+ const entries = readEntries(file);
133
+ const windows = phaseWindows(projectRoot, instance, 'implementation');
134
+ const kept = [];
135
+ let changed = false;
136
+ for (const e of entries) {
137
+ report.tokensBefore += tokensOf(e);
138
+ // A human placed these deliberately via `cost record --manual`; a window
139
+ // computation must not overrule them (AC-40).
140
+ if (e.provider === 'manual') {
141
+ report.manualSkipped++;
142
+ kept.push(e);
143
+ continue;
144
+ }
145
+ // `unknown`-fidelity markers carry no units and no money.
146
+ if (e.units === null) {
147
+ kept.push(e);
148
+ continue;
149
+ }
150
+ const spanned = phasesSpanned(e, windows);
151
+ if (spanned.length <= 1) {
152
+ const target = spanned[0] ?? e.phase;
153
+ if (target !== e.phase) {
154
+ kept.push({ ...e, phase: target });
155
+ report.relabelled++;
156
+ changed = true;
157
+ }
158
+ else {
159
+ kept.push(e);
160
+ }
161
+ continue;
162
+ }
163
+ // Spans several phases: only the transcript knows which record went where.
164
+ const source = fileForCursor(e.cursor, cursorFiles);
165
+ if (source === null) {
166
+ // AC-12: absence of source data is never resolved by picking a phase.
167
+ report.unsplittable.push(`${instance}: cursor ${e.cursor ?? 'null'} has no unique transcript`);
168
+ kept.push(e);
169
+ continue;
170
+ }
171
+ let segments;
172
+ try {
173
+ segments = await claudeCodeProvider.extract({ provider: 'claude-code', path: source }, null, env);
174
+ }
175
+ catch {
176
+ report.unsplittable.push(`${instance}: extract failed for ${source}`);
177
+ kept.push(e);
178
+ continue;
179
+ }
180
+ // Bound by the entry's OWN coverage window. One entry's cursor sits in a
181
+ // 633-record transcript while the entry covers 80 of them — splitting on the
182
+ // whole file would inflate it 23x.
183
+ const lo = Date.parse(e.coverage.from);
184
+ const hi = Date.parse(e.coverage.to);
185
+ const mine = segments.filter((s) => {
186
+ const at = Date.parse(s.at);
187
+ return at >= lo && at <= hi;
188
+ });
189
+ if (mine.length === 0) {
190
+ report.unsplittable.push(`${instance}: no records inside coverage for ${e.cursor ?? 'null'}`);
191
+ kept.push(e);
192
+ continue;
193
+ }
194
+ for (const seg of mine) {
195
+ const at = Date.parse(seg.at);
196
+ const claimants = claimantsAt(at, intervalsByInstance);
197
+ // Exactly one claimant attributes; none or several cannot be assigned
198
+ // without guessing (AC-15, AC-28).
199
+ const owner = claimants.length === 1 ? claimants[0] : null;
200
+ const split = {
201
+ timestamp: e.timestamp,
202
+ session_id: e.session_id,
203
+ phase: owner === instance ? phaseAt(windows, at) : null,
204
+ provider: e.provider,
205
+ fidelity: e.fidelity,
206
+ // Zero-width, so same-fidelity siblings cannot overlap (AC-36).
207
+ coverage: { from: seg.at, to: seg.at },
208
+ cursor: seg.cursor,
209
+ units: seg.units,
210
+ };
211
+ if (owner === instance) {
212
+ kept.push(split);
213
+ report.splitRecords++;
214
+ }
215
+ else {
216
+ appendEntry(unattributedPath(projectRoot), { ...split, phase: null });
217
+ report.toUnattributed++;
218
+ }
219
+ }
220
+ report.split++;
221
+ changed = true;
222
+ }
223
+ for (const e of kept)
224
+ report.tokensAfter += tokensOf(e);
225
+ if (changed)
226
+ rewriteLedger(file, kept);
227
+ }
228
+ return report;
229
+ }
230
+ /** Cursor uuid → the single transcript path containing it. */
231
+ export function buildCursorFileIndex(env) {
232
+ // Reuse the provenance walk, but key on file path rather than repo identity.
233
+ return buildProvenanceIndex(env, (path) => path);
234
+ }
235
+ /** Sum priced tokens across every ledger plus unattributed (AC-35). */
236
+ export function projectTokenTotal(projectRoot) {
237
+ let total = 0;
238
+ const stateDir = join(projectRoot, '.aidlc', 'state');
239
+ if (existsSync(stateDir)) {
240
+ for (const d of readdirSync(stateDir, { withFileTypes: true })) {
241
+ if (!d.isDirectory())
242
+ continue;
243
+ const p = ledgerPath(projectRoot, d.name);
244
+ if (!existsSync(p))
245
+ continue;
246
+ for (const e of readEntries(p))
247
+ total += tokensOf(e);
248
+ }
249
+ }
250
+ const un = unattributedPath(projectRoot);
251
+ if (existsSync(un)) {
252
+ for (const e of readEntries(un))
253
+ total += tokensOf(e);
254
+ }
255
+ return total;
256
+ }
257
+ //# sourceMappingURL=rederive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rederive.js","sourceRoot":"","sources":["../../src/cost/rederive.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,19 @@ export interface PhaseCost {
15
15
  tokens: number;
16
16
  credits: number;
17
17
  elapsedSeconds: number;
18
+ /**
19
+ * Seconds of measured *active* work, or null when nothing in this phase carried
20
+ * a span (turn-scoped-cost/AC-21). `activePartial` marks a total measured from
21
+ * only some of the phase's entries — a floor, not a measurement.
22
+ *
23
+ * Reported **alongside** `elapsedSeconds`, never instead of it. Both are true and
24
+ * they answer different questions: elapsed is how long the phase took, active is
25
+ * how much of that was the agent working. A phase that waited a day for a human
26
+ * genuinely took a day — `aidlc metrics` reads elapsed for exactly that reason —
27
+ * while its cost was incurred in minutes.
28
+ */
29
+ activeSeconds: number | null;
30
+ activePartial: boolean;
18
31
  }
19
32
  export interface InstanceCost {
20
33
  instance: string;
@@ -24,6 +37,10 @@ export interface InstanceCost {
24
37
  tokens: number;
25
38
  credits: number;
26
39
  elapsedSeconds: number;
40
+ /** Summed active seconds across phases, or null when nothing was measured. */
41
+ activeSeconds: number | null;
42
+ /** True when only some priced entries carried a span — the total is a floor. */
43
+ activePartial: boolean;
27
44
  fidelityMix: Record<CostFidelity, number>;
28
45
  phases: PhaseCost[];
29
46
  snapshot: string;
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/cost/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAqED,kDAAkD;AAClD,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,GAAG,IAAI,GACxB,YAAY,CA+Dd;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAO3D;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,cAAc,EAAE,CAoB3F;AAED,0DAA0D;AAC1D,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,CAEpE"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/cost/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;OAUG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gFAAgF;IAChF,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAwGD,kDAAkD;AAClD,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,GAAG,IAAI,GACxB,YAAY,CA8Ed;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAO3D;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,cAAc,EAAE,CAoB3F;AAED,0DAA0D;AAC1D,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,CAEpE"}
@@ -74,6 +74,39 @@ function instanceTemplate(projectRoot, instance) {
74
74
  return null;
75
75
  }
76
76
  }
77
+ /**
78
+ * Summed `active_ms` over entries that carry it, as seconds — or null when none do.
79
+ *
80
+ * Null rather than 0 is the whole point: "we did not measure this" and "no time was
81
+ * spent" are different claims, and every entry written before `active_ms` existed
82
+ * falls into the first. Zero-filling would quietly report months of historical work
83
+ * as instantaneous.
84
+ *
85
+ * Weight is deliberately NOT applied. `active_ms` is a duration, not a quantity of
86
+ * units — halving a token count because higher-fidelity coverage overlaps is
87
+ * meaningful, halving a duration is not.
88
+ */
89
+ function activeSecondsOf(weighted) {
90
+ let ms = 0;
91
+ let measured = 0;
92
+ let priced = 0;
93
+ for (const { entry } of weighted) {
94
+ if (entry.units === null)
95
+ continue;
96
+ priced++;
97
+ const a = entry.active_ms;
98
+ if (typeof a === 'number') {
99
+ ms += a;
100
+ measured++;
101
+ }
102
+ }
103
+ if (measured === 0)
104
+ return { seconds: null, partial: false };
105
+ // A partially-measured total is the dangerous case: it is a number, so it reads as
106
+ // complete while understating the truth. Flagged so the report can mark it rather
107
+ // than quietly presenting a floor as a measurement (turn-scoped-cost/AC-31, AC-32).
108
+ return { seconds: Math.round(ms / 1000), partial: measured < priced };
109
+ }
77
110
  /** Compute the full cost view of one instance. */
78
111
  export function instanceCost(projectRoot, instance, config) {
79
112
  const rates = effectiveRates(projectRoot, config);
@@ -90,6 +123,7 @@ export function instanceCost(projectRoot, instance, config) {
90
123
  const phases = [];
91
124
  for (const [phase, list] of byPhase) {
92
125
  const s = sumWeighted(list, rates);
126
+ const active = activeSecondsOf(list);
93
127
  phases.push({
94
128
  phase,
95
129
  microUsd: s.microUsd,
@@ -97,16 +131,28 @@ export function instanceCost(projectRoot, instance, config) {
97
131
  tokens: Math.round(s.tokens),
98
132
  credits: s.credits,
99
133
  elapsedSeconds: elapsed.get(phase) ?? 0,
134
+ activeSeconds: active.seconds,
135
+ activePartial: active.partial,
100
136
  });
101
137
  }
102
138
  // Phases with time but no cost still appear — with a null cost, not a zero one.
103
139
  // The phase ran; we simply have no record of what it cost.
104
140
  for (const [phase, secs] of elapsed) {
105
141
  if (secs > 0 && !byPhase.has(phase)) {
106
- phases.push({ phase, microUsd: null, unpricedModels: [], tokens: 0, credits: 0, elapsedSeconds: secs });
142
+ phases.push({
143
+ phase,
144
+ microUsd: null,
145
+ unpricedModels: [],
146
+ tokens: 0,
147
+ credits: 0,
148
+ elapsedSeconds: secs,
149
+ activeSeconds: null,
150
+ activePartial: false,
151
+ });
107
152
  }
108
153
  }
109
154
  const total = sumWeighted(weighted, rates);
155
+ const activeTotal = activeSecondsOf(weighted);
110
156
  const fidelityMix = { metered: 0, reconciled: 0, estimated: 0, unknown: 0 };
111
157
  let mixTotal = 0;
112
158
  for (const { entry, weight } of weighted) {
@@ -131,6 +177,8 @@ export function instanceCost(projectRoot, instance, config) {
131
177
  tokens: Math.round(total.tokens),
132
178
  credits: total.credits,
133
179
  elapsedSeconds: totalElapsed,
180
+ activeSeconds: activeTotal.seconds,
181
+ activePartial: activeTotal.partial,
134
182
  fidelityMix,
135
183
  phases,
136
184
  snapshot: rates.snapshot,
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/cost/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/cost/report.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cost/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,OAAO,EAAgD,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAOzG,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;CACvB;AAgED;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,mBAAmB,EAAE,MAAM,EAC3B,GAAG,GAAE,WAA6B,GACjC,OAAO,CAAC,UAAU,CAAC,CA2LrB"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cost/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,OAAO,EAAgD,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAOzG,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;CACvB;AAgFD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,mBAAmB,EAAE,MAAM,EAC3B,GAAG,GAAE,WAA6B,GACjC,OAAO,CAAC,UAAU,CAAC,CAuPrB"}