@rasensio/aidlc 1.13.1 → 1.14.1
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/dist/commands/cost.d.ts.map +1 -1
- package/dist/commands/cost.js +16 -2
- package/dist/commands/cost.js.map +1 -1
- package/dist/commands/transition.js +31 -16
- package/dist/commands/transition.js.map +1 -1
- package/dist/core/types.d.ts +16 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/cost/ledger.d.ts.map +1 -1
- package/dist/cost/ledger.js +9 -0
- package/dist/cost/ledger.js.map +1 -1
- package/dist/cost/provenance.d.ts +80 -0
- package/dist/cost/provenance.d.ts.map +1 -0
- package/dist/cost/provenance.js +192 -0
- package/dist/cost/provenance.js.map +1 -0
- package/dist/cost/providers/claude-code.d.ts.map +1 -1
- package/dist/cost/providers/claude-code.js +24 -1
- package/dist/cost/providers/claude-code.js.map +1 -1
- package/dist/cost/purge.d.ts +65 -0
- package/dist/cost/purge.d.ts.map +1 -0
- package/dist/cost/purge.js +152 -0
- package/dist/cost/purge.js.map +1 -0
- package/dist/cost/recorder.d.ts +36 -1
- package/dist/cost/recorder.d.ts.map +1 -1
- package/dist/cost/recorder.js +112 -6
- package/dist/cost/recorder.js.map +1 -1
- package/dist/cost/rederive.d.ts +80 -0
- package/dist/cost/rederive.d.ts.map +1 -0
- package/dist/cost/rederive.js +257 -0
- package/dist/cost/rederive.js.map +1 -0
- package/dist/cost/report.d.ts +17 -0
- package/dist/cost/report.d.ts.map +1 -1
- package/dist/cost/report.js +49 -1
- package/dist/cost/report.js.map +1 -1
- package/dist/cost/sync.d.ts.map +1 -1
- package/dist/cost/sync.js +166 -40
- package/dist/cost/sync.js.map +1 -1
- package/dist/cost/types.d.ts +45 -1
- package/dist/cost/types.d.ts.map +1 -1
- package/dist/cost/types.js +16 -2
- package/dist/cost/types.js.map +1 -1
- package/dist/doctor/migrations/index.d.ts.map +1 -1
- package/dist/doctor/migrations/index.js +5 -0
- package/dist/doctor/migrations/index.js.map +1 -1
- package/dist/doctor/migrations/instance-completion.d.ts +85 -0
- package/dist/doctor/migrations/instance-completion.d.ts.map +1 -0
- package/dist/doctor/migrations/instance-completion.js +214 -0
- package/dist/doctor/migrations/instance-completion.js.map +1 -0
- package/dist/events/event-bus.d.ts.map +1 -1
- package/dist/events/event-bus.js +12 -1
- package/dist/events/event-bus.js.map +1 -1
- package/package.json +2 -2
package/dist/cost/recorder.js
CHANGED
|
@@ -310,18 +310,53 @@ export function acquireLock(projectRoot, sessionId) {
|
|
|
310
310
|
}
|
|
311
311
|
return null;
|
|
312
312
|
}
|
|
313
|
-
/**
|
|
313
|
+
/**
|
|
314
|
+
* A transition's timestamp, tolerating the pre-rename field name.
|
|
315
|
+
*
|
|
316
|
+
* `TransitionRecord.at` is canonical and what `appendTransition` writes. Three
|
|
317
|
+
* instances predate the rename and still carry `timestamp`, and one of them
|
|
318
|
+
* (`cost-tracking`) holds *both* spellings in the same file — 5 `timestamp`
|
|
319
|
+
* records and 1 `at` — so the fallback is per record, never a per-file format
|
|
320
|
+
* guess (turn-scoped-cost/AC-2).
|
|
321
|
+
*/
|
|
322
|
+
function transitionAt(rec) {
|
|
323
|
+
if (rec.at)
|
|
324
|
+
return rec.at;
|
|
325
|
+
const legacy = rec.timestamp;
|
|
326
|
+
return typeof legacy === 'string' && legacy !== '' ? legacy : null;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Build phase windows for an instance from its transitions.log.
|
|
330
|
+
*
|
|
331
|
+
* This read was silently broken from the first commit: it took
|
|
332
|
+
* `t as unknown as { timestamp: string; ... }` and skipped any record without
|
|
333
|
+
* `rec.timestamp`, while `TransitionRecord` declares the field as `at`. Every
|
|
334
|
+
* transition was therefore skipped, the loop body never ran, and the function
|
|
335
|
+
* returned a single window covering all time — and since all four call sites seed
|
|
336
|
+
* `initialPhase` with `'implementation'`, **every priced record in the project was
|
|
337
|
+
* labelled `implementation`**. Measured: 18 of the 19 instances on the canonical
|
|
338
|
+
* field had 100% of their priced usage mislabelled, and the only correct ledgers
|
|
339
|
+
* were the three legacy instances the stale reader happened to match. The cast is
|
|
340
|
+
* what silenced the compile error that would have caught this, so it is gone
|
|
341
|
+
* (turn-scoped-cost/AC-1, AC-3).
|
|
342
|
+
*
|
|
343
|
+
* A record with `to: null` closes the preceding window without opening a new one:
|
|
344
|
+
* five instances end that way, so counting it would produce a phantom trailing
|
|
345
|
+
* phase (AC-41). `complete` is left as a legitimate label — it passes `PHASE_RE`
|
|
346
|
+
* and already appears in ledgers, so normalising it here would quietly move money
|
|
347
|
+
* between rows.
|
|
348
|
+
*/
|
|
314
349
|
export function phaseWindows(projectRoot, instance, initialPhase) {
|
|
315
350
|
const logFile = join(projectRoot, '.aidlc', 'state', instance, 'transitions.log');
|
|
316
351
|
const transitions = readTransitions(logFile);
|
|
317
352
|
const windows = [];
|
|
318
353
|
let phase = initialPhase;
|
|
319
354
|
let from = 0;
|
|
320
|
-
for (const
|
|
321
|
-
const
|
|
322
|
-
if (
|
|
355
|
+
for (const rec of transitions) {
|
|
356
|
+
const stamp = transitionAt(rec);
|
|
357
|
+
if (stamp === null || !rec.to)
|
|
323
358
|
continue;
|
|
324
|
-
const at = Date.parse(
|
|
359
|
+
const at = Date.parse(stamp);
|
|
325
360
|
if (Number.isNaN(at))
|
|
326
361
|
continue;
|
|
327
362
|
windows.push({ phase: rec.from ?? phase, from, to: at });
|
|
@@ -409,6 +444,29 @@ async function capturePass(opts, sourcePath, env, now) {
|
|
|
409
444
|
}
|
|
410
445
|
if (segments.length === 0)
|
|
411
446
|
return { appended: 0, unattributed: 0, instances: [] };
|
|
447
|
+
/*
|
|
448
|
+
* Span coverage for THIS transcript, reported when it is not total
|
|
449
|
+
* (turn-scoped-cost/AC-31, AC-32).
|
|
450
|
+
*
|
|
451
|
+
* Per transcript, not corpus-wide, and relative rather than against a literal —
|
|
452
|
+
* both decisions come from measurement. Per-file coverage in this repo ranges from
|
|
453
|
+
* 20% to 100%, so a whole-corpus average hides the outliers entirely; and coverage
|
|
454
|
+
* tracks the Claude Code version (2.1.221 = 100%, 2.1.233 = 88.7%,
|
|
455
|
+
* 2.1.251 = 95.1%), so a regression is already live and an absolute threshold
|
|
456
|
+
* would have to be re-tuned on every upgrade.
|
|
457
|
+
*
|
|
458
|
+
* This rides the existing capture.log rather than adding a channel: the
|
|
459
|
+
* `cost-capture-goes-dark` lesson is that a diagnostic nobody reads is not a fix,
|
|
460
|
+
* and `lastCaptureError` already surfaces this file on every `aidlc cost` run.
|
|
461
|
+
* A fully-covered pass logs nothing, so the log does not fill with success lines.
|
|
462
|
+
*/
|
|
463
|
+
const spanned = segments.filter((s) => s.span).length;
|
|
464
|
+
if (spanned < segments.length) {
|
|
465
|
+
logCapture(projectRoot, 'span-coverage', 'span-coverage-partial', {
|
|
466
|
+
spanned,
|
|
467
|
+
segments: segments.length,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
412
470
|
// Resolve claim intervals per instance, and renew open claims (design §2.2).
|
|
413
471
|
const intervalsByInstance = new Map();
|
|
414
472
|
for (const instance of instances) {
|
|
@@ -435,6 +493,8 @@ async function capturePass(opts, sourcePath, env, now) {
|
|
|
435
493
|
}
|
|
436
494
|
const buckets = new Map();
|
|
437
495
|
const windowsCache = new Map();
|
|
496
|
+
/** Per-bucket span endpoints, unioned once the bucket is closed (AC-44). */
|
|
497
|
+
const spansByBucket = new Map();
|
|
438
498
|
for (const seg of segments) {
|
|
439
499
|
const at = Date.parse(seg.at);
|
|
440
500
|
let instance = null;
|
|
@@ -455,6 +515,17 @@ async function capturePass(opts, sourcePath, env, now) {
|
|
|
455
515
|
}
|
|
456
516
|
const modelKey = seg.units.kind === 'tokens' ? seg.units.model : `credits:${seg.units.model ?? ''}`;
|
|
457
517
|
const key = `${instance ?? '∅'}|${phase ?? '∅'}|${modelKey}`;
|
|
518
|
+
if (seg.span) {
|
|
519
|
+
const from = Date.parse(seg.span.from);
|
|
520
|
+
const to = Date.parse(seg.span.to);
|
|
521
|
+
if (!Number.isNaN(from) && !Number.isNaN(to) && to >= from) {
|
|
522
|
+
const list = spansByBucket.get(key);
|
|
523
|
+
if (list)
|
|
524
|
+
list.push({ from, to });
|
|
525
|
+
else
|
|
526
|
+
spansByBucket.set(key, [{ from, to }]);
|
|
527
|
+
}
|
|
528
|
+
}
|
|
458
529
|
const existing = buckets.get(key);
|
|
459
530
|
if (existing) {
|
|
460
531
|
mergeUnits(existing.units, seg.units);
|
|
@@ -479,7 +550,8 @@ async function capturePass(opts, sourcePath, env, now) {
|
|
|
479
550
|
let appended = 0;
|
|
480
551
|
let unattributed = 0;
|
|
481
552
|
const touched = new Set();
|
|
482
|
-
for (const b of buckets
|
|
553
|
+
for (const [key, b] of buckets) {
|
|
554
|
+
const spans = spansByBucket.get(key);
|
|
483
555
|
const entry = {
|
|
484
556
|
timestamp: now.toISOString(),
|
|
485
557
|
session_id: input.session_id,
|
|
@@ -489,6 +561,9 @@ async function capturePass(opts, sourcePath, env, now) {
|
|
|
489
561
|
coverage: { from: new Date(b.from).toISOString(), to: new Date(b.to).toISOString() },
|
|
490
562
|
cursor: finalCursor,
|
|
491
563
|
units: b.units,
|
|
564
|
+
// Null, not 0, when no segment in this bucket carried a span — an unmeasured
|
|
565
|
+
// duration must not read as "no time spent" (AC-44).
|
|
566
|
+
active_ms: spans === undefined ? null : unionMs(spans),
|
|
492
567
|
};
|
|
493
568
|
const target = b.instance !== null
|
|
494
569
|
? ledgerPath(projectRoot, b.instance)
|
|
@@ -515,6 +590,37 @@ async function capturePass(opts, sourcePath, env, now) {
|
|
|
515
590
|
}
|
|
516
591
|
return { appended, unattributed, instances: [...touched] };
|
|
517
592
|
}
|
|
593
|
+
/**
|
|
594
|
+
* Total milliseconds covered by a set of intervals, counting overlap once.
|
|
595
|
+
*
|
|
596
|
+
* A union, not a sum, and the difference is not academic: records that share a
|
|
597
|
+
* parent produce overlapping spans, so summing them over-counts by 10.8% on this
|
|
598
|
+
* repo's corpus (27.76h summed against a 25.05h true union). Summing per-bucket
|
|
599
|
+
* unions still over-counts the global union by ~0.9%, because most residual overlap
|
|
600
|
+
* is *across* model buckets rather than within one — that residual is accepted and
|
|
601
|
+
* documented rather than hidden, since it is what keeps the stored value additive
|
|
602
|
+
* across phases and instances (turn-scoped-cost/AC-19, AC-44).
|
|
603
|
+
*/
|
|
604
|
+
export function unionMs(intervals) {
|
|
605
|
+
if (intervals.length === 0)
|
|
606
|
+
return 0;
|
|
607
|
+
const sorted = [...intervals].sort((a, b) => a.from - b.from);
|
|
608
|
+
let total = 0;
|
|
609
|
+
let curFrom = sorted[0].from;
|
|
610
|
+
let curTo = sorted[0].to;
|
|
611
|
+
for (let i = 1; i < sorted.length; i++) {
|
|
612
|
+
const iv = sorted[i];
|
|
613
|
+
if (iv.from <= curTo) {
|
|
614
|
+
curTo = Math.max(curTo, iv.to);
|
|
615
|
+
}
|
|
616
|
+
else {
|
|
617
|
+
total += curTo - curFrom;
|
|
618
|
+
curFrom = iv.from;
|
|
619
|
+
curTo = iv.to;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
return total + (curTo - curFrom);
|
|
623
|
+
}
|
|
518
624
|
function mergeUnits(target, add) {
|
|
519
625
|
if (target.kind === 'tokens' && add.kind === 'tokens') {
|
|
520
626
|
target.input_tokens += add.input_tokens;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/cost/recorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,WAAW,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,SAAS,EACT,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACtG,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAoB,MAAM,yBAAyB,CAAC;AAGxE,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACrC,MAAM,qBAAqB,GAAG,GAAG,GAAG,IAAI,CAAC;AACzC,6EAA6E;AAC7E,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE3D,8EAA8E;AAC9E,oDAAoD;AACpD,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,OAAO,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC;AAUD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC/D,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;YAC3D,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;gBAAE,SAAS;YACnD,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzE,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;YAC5B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,WAAmB,EACnB,KAAa,EACb,SAAiB,EACjB,SAAiC,EAAE;IAEnC,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACzC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK;QACL,UAAU,EAAE,SAAS;QACrB,MAAM;KACP,CAAC,GAAG,IAAI,CAAC;IACV,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,qBAAqB,EAAE,CAAC;YAClF,oCAAoC;YACpC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;YAC1B,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC;gBACH,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACpE,CAAC;oBAAS,CAAC;gBACT,SAAS,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;YACD,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACvF,IAAI,CAAC;YACH,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;IAC1C,CAAC;AACH,CAAC;AAQD,6EAA6E;AAC7E,SAAS,cAAc,CAAC,WAAmB;IACzC,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAqB,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAmB,CAAC;YAC/C,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,EAAE;gBAAE,SAAS;YAChF,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAAE,SAAS;YACjG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAmB,EACnB,MAAY,IAAI,IAAI,EAAE;IAEtB,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;YAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,0BAA0B,CAAC;IACzD,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,SAAS;QAC7D,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,EAAE,GAAG,QAAQ;YAAE,OAAO,IAAI,CAAC,CAAC,iCAAiC;QACjE,IAAI,EAAE,GAAG,KAAK;YAAE,OAAO,IAAI,CAAC,CAAC,mCAAmC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB,EAAE,MAAY,IAAI,IAAI,EAAE;IAChF,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,0BAA0B,CAAC;IACzD,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;AAC3F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,MAAY,IAAI,IAAI,EAAE;IACzE,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,0BAA0B,CAC7E,CAAC;IACF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC;QACH,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;IACvF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC;YACH,SAAS,CAAC,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAChD,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;QACD,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,SAAS,QAAQ,CAAC,WAAmB,EAAE,SAAiB;IACtD,OAAO,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,QAAQ,CAAC,WAAmB;IACnC,OAAO,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,MAAY,IAAI,IAAI,EAAE;IACxE,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAmB,CAAC;YAC9E,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,aAAa;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,gBAAgB,CAAC,WAAmB,EAAE,MAAY,IAAI,IAAI,EAAE;IAC1E,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAC,WAAmB,EAAE,SAAiB;IAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC9C,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,GAAwB,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACrF,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;YAClF,SAAS,CAAC,EAAE,CAAC,CAAC;YACd,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC;oBACH,UAAU,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;gBAAC,MAAM,CAAC;oBACP,uBAAuB;gBACzB,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;IAC1B,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,kCAAkC;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAmB,CAAC;QACtE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC;YACrD,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAaD,oEAAoE;AACpE,MAAM,UAAU,YAAY,CAAC,WAAmB,EAAE,QAAgB,EAAE,YAAoB;IACtF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,IAAI,KAAK,GAAG,YAAY,CAAC;IACzB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,CAA+D,CAAC;QAC5E,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,SAAS;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,SAAS;QAC/B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACzD,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;QACf,IAAI,GAAG,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,OAAO,CAAC,OAAsB,EAAE,EAAU;IACjD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IAChD,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3C,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,SAAiB;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAiBD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAmB;IACnD,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,GAAG,GAAgB,IAAI,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,UAAU,CAAC,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;QAChE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,2EAA2E;QAC3E,4EAA4E;QAC5E,UAAU,CAAC,WAAW,EAAE,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACzD,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE/B,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,IAAI,CAAC;QACH,IAAI,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5D,uEAAuE;QACvE,gDAAgD;QAChD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,GAAG;YACP,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;YAC3C,YAAY,EAAE,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY;YACvD,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;SACpE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,IAAmB,EACnB,UAAkB,EAClB,GAAgB,EAChB,GAAS;IAET,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAE,CAAC;IAE7C,MAAM,SAAS,GAAG,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAEvD,IAAI,QAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAChG,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACrD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACzD,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAElF,6EAA6E;IAC7E,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC/D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtE,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,MAAM,CAC9E,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CAC3C,CAAC;QACF,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,UAAoC,CAAC;YACzC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;oBAAE,UAAU,GAAG,CAAC,CAAC;YAC/E,CAAC;YACD,IAAI,UAAU,EAAE,CAAC;gBACf,kBAAkB,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE;oBACtD,KAAK,EAAE,OAAO;oBACd,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,SAAS,EAAE,UAAU,CAAC,SAAS;oBAC/B,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAWD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEtD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,QAAQ,GAAkB,IAAI,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,mBAAmB,EAAE,CAAC;YACpD,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACjF,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,KAAK,GAAkB,IAAI,CAAC;QAChC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAChE,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;YACD,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACpG,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,QAAQ,EAAE,CAAC;YACb,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACtC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5C,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACxC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;gBACf,QAAQ;gBACR,KAAK;gBACL,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;gBACjC,IAAI,EAAE,EAAE;gBACR,EAAE,EAAE,EAAE;gBACN,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,2DAA2D;IAC3D,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACjC,MAAM,KAAK,GAAc;YACvB,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;YAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE;YACpF,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI;YAChC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC;YACrC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAClC,IAAI,CAAC;YACH,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACxB,QAAQ,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,YAAY,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,8EAA8E;IAC9E,IAAI,QAAQ,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrC,UAAU,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,UAAU,CAAC,MAAiB,EAAE,GAAc;IACnD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC;QACxC,MAAM,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC;QAC1C,MAAM,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,CAAC;QAClD,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAC,kBAAkB,CAAC;IACtD,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/D,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC;IAChC,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"recorder.js","sourceRoot":"","sources":["../../src/cost/recorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
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 type { CostEntry, TokenUnits } from './types.js';
|
|
42
|
+
import type { ProviderEnv } from './providers/provider.js';
|
|
43
|
+
import { type ProvenanceIndex } from './provenance.js';
|
|
44
|
+
export interface RederiveReport {
|
|
45
|
+
/** Entries whose phase label changed without touching a transcript. */
|
|
46
|
+
relabelled: number;
|
|
47
|
+
/** Entries replaced by per-record splits. */
|
|
48
|
+
split: number;
|
|
49
|
+
/** Split records written back to an instance ledger. */
|
|
50
|
+
splitRecords: number;
|
|
51
|
+
/** Split records that fell inside no claim, or inside two — sent to unattributed. */
|
|
52
|
+
toUnattributed: number;
|
|
53
|
+
/** Entries left alone because their transcript is gone (AC-12). */
|
|
54
|
+
unsplittable: string[];
|
|
55
|
+
/** Entries skipped because a human placed them (AC-40). */
|
|
56
|
+
manualSkipped: number;
|
|
57
|
+
tokensBefore: number;
|
|
58
|
+
tokensAfter: number;
|
|
59
|
+
}
|
|
60
|
+
interface PhaseWindowLite {
|
|
61
|
+
phase: string;
|
|
62
|
+
from: number;
|
|
63
|
+
to: number;
|
|
64
|
+
}
|
|
65
|
+
/** Distinct phases an entry's coverage window touches. */
|
|
66
|
+
export declare function phasesSpanned(e: CostEntry, windows: PhaseWindowLite[]): string[];
|
|
67
|
+
/**
|
|
68
|
+
* Re-derive every instance ledger.
|
|
69
|
+
*
|
|
70
|
+
* `provenanceFiles` maps a cursor to the transcript *path* containing it — a
|
|
71
|
+
* different index from `provenance.ts`'s repo-identity map, built here because the
|
|
72
|
+
* split needs the file itself.
|
|
73
|
+
*/
|
|
74
|
+
export declare function rederivePhases(projectRoot: string, claimTimeoutMinutes: number, env?: ProviderEnv, provenanceFiles?: ProvenanceIndex): Promise<RederiveReport>;
|
|
75
|
+
/** Cursor uuid → the single transcript path containing it. */
|
|
76
|
+
export declare function buildCursorFileIndex(env: ProviderEnv): ProvenanceIndex;
|
|
77
|
+
/** Sum priced tokens across every ledger plus unattributed (AC-35). */
|
|
78
|
+
export declare function projectTokenTotal(projectRoot: string): number;
|
|
79
|
+
export type { TokenUnits };
|
|
80
|
+
//# sourceMappingURL=rederive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rederive.d.ts","sourceRoot":"","sources":["../../src/cost/rederive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAiB,UAAU,EAAgB,MAAM,YAAY,CAAC;AAWrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE7E,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,2DAA2D;IAC3D,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAQD,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,CAQhF;AAqCD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,MAAM,EAC3B,GAAG,GAAE,WAA6B,EAClC,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,cAAc,CAAC,CA+IzB;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,eAAe,CAGtE;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgB7D;AAED,YAAY,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -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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"}
|
package/dist/cost/report.d.ts
CHANGED
|
@@ -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;
|