@ordewell/core 0.10.8 → 0.10.10

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 (40) hide show
  1. package/dist/{IFileSystem-C4_mpfze.d.ts → IFileSystem-1PqRCjhu.d.mts} +23 -3
  2. package/dist/{IFileSystem-DUgeWWQN.d.mts → IFileSystem-lTRL_G9Z.d.ts} +23 -3
  3. package/dist/{ModeResolver-4qNjxcDs.d.mts → ModeResolver-6TQXVsde.d.mts} +1 -1
  4. package/dist/{ModeResolver-DGK2rWHE.d.ts → ModeResolver-CoJAJD-f.d.ts} +1 -1
  5. package/dist/{Task-C0o4i3Nn.d.mts → Task-CfBM0wkV.d.mts} +100 -24
  6. package/dist/{Task-C0o4i3Nn.d.ts → Task-CfBM0wkV.d.ts} +100 -24
  7. package/dist/{chunk-H7QX32BH.mjs → chunk-24EL4Z2W.mjs} +2 -2
  8. package/dist/{chunk-DMG4ISUG.mjs → chunk-ESKK5I4F.mjs} +145 -21
  9. package/dist/chunk-ESKK5I4F.mjs.map +1 -0
  10. package/dist/{chunk-LTHKFBKM.mjs → chunk-KWS3VEER.mjs} +3 -3
  11. package/dist/{chunk-EEE2GBLG.mjs → chunk-PFH7WFIB.mjs} +1 -1
  12. package/dist/chunk-PFH7WFIB.mjs.map +1 -0
  13. package/dist/index.d.mts +145 -20
  14. package/dist/index.d.ts +145 -20
  15. package/dist/index.js +668 -112
  16. package/dist/index.js.map +1 -1
  17. package/dist/index.mjs +537 -96
  18. package/dist/index.mjs.map +1 -1
  19. package/dist/parsing.d.mts +2 -2
  20. package/dist/parsing.d.ts +2 -2
  21. package/dist/parsing.js.map +1 -1
  22. package/dist/parsing.mjs +3 -3
  23. package/dist/plan-utils.d.mts +4 -4
  24. package/dist/plan-utils.d.ts +4 -4
  25. package/dist/plan-utils.js +144 -18
  26. package/dist/plan-utils.js.map +1 -1
  27. package/dist/plan-utils.mjs +22 -4
  28. package/dist/{runSettingsText-BgOmLxdw.d.mts → runSettingsText-C1i9wBG1.d.mts} +61 -21
  29. package/dist/{runSettingsText-BgXvajj2.d.ts → runSettingsText-CWNrmF5U.d.ts} +61 -21
  30. package/dist/testing.d.mts +7 -2
  31. package/dist/testing.d.ts +7 -2
  32. package/dist/testing.js +11 -0
  33. package/dist/testing.js.map +1 -1
  34. package/dist/testing.mjs +12 -1
  35. package/dist/testing.mjs.map +1 -1
  36. package/package.json +1 -1
  37. package/dist/chunk-DMG4ISUG.mjs.map +0 -1
  38. package/dist/chunk-EEE2GBLG.mjs.map +0 -1
  39. /package/dist/{chunk-H7QX32BH.mjs.map → chunk-24EL4Z2W.mjs.map} +0 -0
  40. /package/dist/{chunk-LTHKFBKM.mjs.map → chunk-KWS3VEER.mjs.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { ChildProcess } from 'child_process';
2
- import { a4 as RunnerId, av as UsageRecord, ag as SubagentOutcome, a5 as RunnerSessionCost, d as DiscoveredModel, ap as TaskSkillSnapshot } from './Task-C0o4i3Nn.js';
2
+ import { a7 as RunnerId, az as UsageRecord, ak as SubagentOutcome, a8 as RunnerSessionCost, f as DiscoveredModel, at as TaskSkillSnapshot } from './Task-CfBM0wkV.mjs';
3
3
  import { z } from 'zod/v4';
4
4
 
5
5
  /**
@@ -1153,7 +1153,7 @@ type AgentEvent =
1153
1153
  success: boolean;
1154
1154
  subagentId?: string;
1155
1155
  }
1156
- /** One model call's usage, as the agent reported it — never estimated. */
1156
+ /** Usage and session billing facts as the agent reported them — never priced by Ordewell. */
1157
1157
  | {
1158
1158
  type: 'usage';
1159
1159
  record: UsageRecord;
@@ -1427,6 +1427,8 @@ interface AgentAdapter {
1427
1427
  sessionCost?(): RunnerSessionCost | null;
1428
1428
  /** Kill the process and release its resources. Idempotent. */
1429
1429
  dispose(): void;
1430
+ /** Whether the process has ended, for any reason. One that has can take no further turn. */
1431
+ readonly exited: boolean;
1430
1432
  /**
1431
1433
  * Whether the Ordewell MCP server passed in the start options' `mcp` is
1432
1434
  * connected, as the runner itself reports it (ADR-0022, S4). Absent on an
@@ -1464,6 +1466,12 @@ interface TaskModeAgentAdapter extends AgentAdapter {
1464
1466
  * within `timeoutMs`, and the caller must fall back to killing it.
1465
1467
  */
1466
1468
  interrupt(timeoutMs: number): Promise<boolean>;
1469
+ /**
1470
+ * Tell the process nothing more is coming, once its turn has closed, so it
1471
+ * ends by itself and keeps what it saves on the way out. The process exit
1472
+ * reports its end. Absent on a runner whose process is only ever killed.
1473
+ */
1474
+ endInput?(): void;
1467
1475
  /**
1468
1476
  * Registers the listener for what the agent does after a turn has ended and
1469
1477
  * before the next message — a turn it opens itself when background work
@@ -1783,7 +1791,17 @@ interface IRunnerSession {
1783
1791
  taskId: string;
1784
1792
  onOutput(callback: (text: string) => void): void;
1785
1793
  onExit(callback: (code: number) => void): void;
1794
+ /** End the process at once. {@link stop} is how an attempt that is over lets it go. */
1786
1795
  kill(): void;
1796
+ /**
1797
+ * End the session the way its runner ends a turn (ADR-0018, L1): nothing
1798
+ * more is sent, a turn still open is interrupted and given the interrupt
1799
+ * grace to close — so what the runner reports as it closes, its cost and a
1800
+ * last call's usage, still reaches {@link onEvent} — then the process ends,
1801
+ * by itself where its runner can, killed once the grace runs out. Resolves
1802
+ * once it is gone, after {@link onExit}; at once when it already is.
1803
+ */
1804
+ stop(): Promise<void>;
1787
1805
  getOutput(): string;
1788
1806
  write(text: string): void;
1789
1807
  /** `working` while a turn runs; `idle` between turns, waiting for a message. */
@@ -1908,7 +1926,9 @@ interface IRunner {
1908
1926
  /** Something the user should know about how the spawn went that did not stop it — a respawn, most often. */
1909
1927
  onNotice?: (message: string) => void;
1910
1928
  }): Promise<IRunnerSession>;
1911
- stop(sessionId: string): void;
1929
+ /** Wind one session down ({@link IRunnerSession.stop}); resolves once its process is gone. */
1930
+ stop(sessionId: string): Promise<void>;
1931
+ /** Wind every session down at once, as {@link stop} does one. */
1912
1932
  stopAll(): void;
1913
1933
  activeCount: number;
1914
1934
  }
@@ -1,5 +1,5 @@
1
1
  import { ChildProcess } from 'child_process';
2
- import { a4 as RunnerId, av as UsageRecord, ag as SubagentOutcome, a5 as RunnerSessionCost, d as DiscoveredModel, ap as TaskSkillSnapshot } from './Task-C0o4i3Nn.mjs';
2
+ import { a7 as RunnerId, az as UsageRecord, ak as SubagentOutcome, a8 as RunnerSessionCost, f as DiscoveredModel, at as TaskSkillSnapshot } from './Task-CfBM0wkV.js';
3
3
  import { z } from 'zod/v4';
4
4
 
5
5
  /**
@@ -1153,7 +1153,7 @@ type AgentEvent =
1153
1153
  success: boolean;
1154
1154
  subagentId?: string;
1155
1155
  }
1156
- /** One model call's usage, as the agent reported it — never estimated. */
1156
+ /** Usage and session billing facts as the agent reported them — never priced by Ordewell. */
1157
1157
  | {
1158
1158
  type: 'usage';
1159
1159
  record: UsageRecord;
@@ -1427,6 +1427,8 @@ interface AgentAdapter {
1427
1427
  sessionCost?(): RunnerSessionCost | null;
1428
1428
  /** Kill the process and release its resources. Idempotent. */
1429
1429
  dispose(): void;
1430
+ /** Whether the process has ended, for any reason. One that has can take no further turn. */
1431
+ readonly exited: boolean;
1430
1432
  /**
1431
1433
  * Whether the Ordewell MCP server passed in the start options' `mcp` is
1432
1434
  * connected, as the runner itself reports it (ADR-0022, S4). Absent on an
@@ -1464,6 +1466,12 @@ interface TaskModeAgentAdapter extends AgentAdapter {
1464
1466
  * within `timeoutMs`, and the caller must fall back to killing it.
1465
1467
  */
1466
1468
  interrupt(timeoutMs: number): Promise<boolean>;
1469
+ /**
1470
+ * Tell the process nothing more is coming, once its turn has closed, so it
1471
+ * ends by itself and keeps what it saves on the way out. The process exit
1472
+ * reports its end. Absent on a runner whose process is only ever killed.
1473
+ */
1474
+ endInput?(): void;
1467
1475
  /**
1468
1476
  * Registers the listener for what the agent does after a turn has ended and
1469
1477
  * before the next message — a turn it opens itself when background work
@@ -1783,7 +1791,17 @@ interface IRunnerSession {
1783
1791
  taskId: string;
1784
1792
  onOutput(callback: (text: string) => void): void;
1785
1793
  onExit(callback: (code: number) => void): void;
1794
+ /** End the process at once. {@link stop} is how an attempt that is over lets it go. */
1786
1795
  kill(): void;
1796
+ /**
1797
+ * End the session the way its runner ends a turn (ADR-0018, L1): nothing
1798
+ * more is sent, a turn still open is interrupted and given the interrupt
1799
+ * grace to close — so what the runner reports as it closes, its cost and a
1800
+ * last call's usage, still reaches {@link onEvent} — then the process ends,
1801
+ * by itself where its runner can, killed once the grace runs out. Resolves
1802
+ * once it is gone, after {@link onExit}; at once when it already is.
1803
+ */
1804
+ stop(): Promise<void>;
1787
1805
  getOutput(): string;
1788
1806
  write(text: string): void;
1789
1807
  /** `working` while a turn runs; `idle` between turns, waiting for a message. */
@@ -1908,7 +1926,9 @@ interface IRunner {
1908
1926
  /** Something the user should know about how the spawn went that did not stop it — a respawn, most often. */
1909
1927
  onNotice?: (message: string) => void;
1910
1928
  }): Promise<IRunnerSession>;
1911
- stop(sessionId: string): void;
1929
+ /** Wind one session down ({@link IRunnerSession.stop}); resolves once its process is gone. */
1930
+ stop(sessionId: string): Promise<void>;
1931
+ /** Wind every session down at once, as {@link stop} does one. */
1912
1932
  stopAll(): void;
1913
1933
  activeCount: number;
1914
1934
  }
@@ -1,4 +1,4 @@
1
- import { a4 as RunnerId } from './Task-C0o4i3Nn.mjs';
1
+ import { a7 as RunnerId } from './Task-CfBM0wkV.mjs';
2
2
 
3
3
  interface RunnerModeInfo {
4
4
  id: string;
@@ -1,4 +1,4 @@
1
- import { a4 as RunnerId } from './Task-C0o4i3Nn.js';
1
+ import { a7 as RunnerId } from './Task-CfBM0wkV.js';
2
2
 
3
3
  interface RunnerModeInfo {
4
4
  id: string;
@@ -125,8 +125,9 @@ interface IsolationTaskRecord {
125
125
  repairedFiles?: string[];
126
126
  /**
127
127
  * Set once the task's landed work is in the checked-out HEAD of every repo
128
- * it changed — merged into the user's branch, by Merge all or by hand. What
129
- * a merge gate waits for (ADR-0020).
128
+ * it changed — merged into the user's branch, by Merge all or by hand — or
129
+ * can no longer be merged there, its integration branch gone. What a merge
130
+ * gate waits for (ADR-0020).
130
131
  */
131
132
  inHead?: true;
132
133
  }
@@ -502,7 +503,9 @@ interface IWorktreeIsolation {
502
503
  /**
503
504
  * Mark the landed tasks whose work the checked-out HEAD now contains in
504
505
  * every repo they changed (`git merge-base --is-ancestor`), and return their
505
- * ids. Only adds marks: a task found merged stays merged.
506
+ * ids. A repo whose integration branch is gone counts as containing it: no
507
+ * Merge all could bring that work in. Only adds marks: a task found merged
508
+ * stays merged.
506
509
  */
507
510
  findInHead(run: IsolationRun): Promise<string[]>;
508
511
  /**
@@ -548,6 +551,16 @@ interface IWorktreeIsolation {
548
551
  sweep(run: IsolationRun): Promise<void>;
549
552
  }
550
553
 
554
+ /** How the runner says this session is paid for; absent means it has not said. */
555
+ interface SessionBilling {
556
+ type: 'subscription' | 'api-key';
557
+ plan?: string;
558
+ }
559
+ interface CostProvenance {
560
+ kind: 'estimate' | 'billed' | 'unknown';
561
+ billing: SessionBilling['type'] | 'unknown' | 'mixed';
562
+ basis?: 'list' | 'managed';
563
+ }
551
564
  /**
552
565
  * What one model call consumed, as its provider or runner reported it. Shared
553
566
  * by the planner's usage line (#49) and per-attempt task usage (#26): a record
@@ -569,22 +582,47 @@ interface UsageRecord {
569
582
  cachedInputTokens?: number;
570
583
  /**
571
584
  * Filled only from a provider's or runner's own report, never from a price
572
- * table or an estimate: prices go stale, and a subscription runner has no
585
+ * table kept in Ordewell: prices go stale, and a subscription runner has no
573
586
  * per-token price at all. No report means no cost, not a guessed one.
574
587
  */
575
588
  reportedCost?: {
576
589
  amount: number;
577
590
  currency: string;
591
+ kind?: 'estimate' | 'billed';
592
+ basis?: 'list' | 'managed';
578
593
  };
594
+ sessionBilling?: SessionBilling;
579
595
  /**
580
596
  * The model's context window: as the runner or provider reported it, or,
581
597
  * when it reported none, from that runner's or provider's own model listing
582
598
  * (`ContextWindowFill`). Never from a table kept in Ordewell.
583
599
  */
584
600
  contextWindow?: number;
601
+ /**
602
+ * What the main model's context holds once this call is done, counted the
603
+ * way its runner's own UI counts it, so the meter reads what the user would
604
+ * see there. Runners differ, and no sum of the measures above can tell.
605
+ * A measure of the meter only: no total adds it. Absent, the meter reads the
606
+ * prompt.
607
+ */
608
+ contextTokens?: number;
609
+ /**
610
+ * The runner reset the main model's context outside a call — a compaction,
611
+ * or a `/clear`: no call, so the record measures nothing but `contextTokens`,
612
+ * the size it reported the context left at, if it did. It may name the model
613
+ * the new context belongs to; a record that names none is about whichever
614
+ * runs now.
615
+ */
616
+ compacted?: true;
585
617
  /** Set when a subagent made the call; its usage still counts toward the total. */
586
618
  subagentId?: string;
587
619
  }
620
+ /** A model's window as its reporter stated it: what a plan saves of its session's windows (`SessionWindows`). */
621
+ interface ReportedWindow {
622
+ source: string;
623
+ model: string;
624
+ contextWindow: number;
625
+ }
588
626
  /**
589
627
  * A running sum of {@link UsageRecord}s. A measure stays absent until some
590
628
  * record reports it. Cost is kept per currency: two runners may bill in
@@ -595,6 +633,7 @@ interface UsageTotals {
595
633
  outputTokens?: number;
596
634
  cachedInputTokens?: number;
597
635
  reportedCost?: Record<string, number>;
636
+ costProvenance?: Record<string, CostProvenance>;
598
637
  }
599
638
  /**
600
639
  * The input side of a call whose provider reports its prompt in parts — the
@@ -614,9 +653,12 @@ declare function addUsage(totals: UsageTotals, record: UsageRecord): UsageTotals
614
653
  * What the planner has consumed over a session (#49). `totals` includes every
615
654
  * `bySubagent` entry. `lastPromptTokens` and `contextWindow` track the
616
655
  * planner's own calls only — a subagent runs its own model, whose window says
617
- * nothing about the planner's.
656
+ * nothing about the planner's. `lastPromptTokens` is the context the last call
657
+ * left (its `contextTokens`, else its prompt), under the name saved sessions
658
+ * already hold it by.
618
659
  */
619
660
  interface PlannerUsage {
661
+ sessionBilling?: SessionBilling;
620
662
  totals: UsageTotals;
621
663
  bySubagent?: Record<string, UsageTotals>;
622
664
  byModel?: ModelUsage[];
@@ -626,31 +668,35 @@ interface PlannerUsage {
626
668
  contextWindow?: number;
627
669
  }
628
670
  declare function addPlannerUsage(usage: PlannerUsage, record: UsageRecord): PlannerUsage;
629
- /** Whether any measure was reported: a token line of nothing but blanks says nothing. */
671
+ /** Whether any measure was reported: a usage line of nothing but blanks says nothing. */
630
672
  declare function isMeasured(totals: UsageTotals): boolean;
631
- /** What the token line shows of a ledger — live from its broadcast, or reloaded from the saved one. */
673
+ /**
674
+ * The main model's context: what its last call left in it, against its window
675
+ * when that is known. A window of 0 is not known.
676
+ */
677
+ interface ContextFill {
678
+ usedTokens: number;
679
+ windowTokens?: number;
680
+ }
681
+ /** What the usage line draws of a ledger — live from its broadcast, or reloaded from the saved one. */
632
682
  interface UsageLine {
683
+ sessionBilling?: SessionBilling;
633
684
  byModel?: ModelUsage[];
634
685
  model?: string;
635
686
  totals: UsageTotals;
636
687
  bySubagent?: Record<string, UsageTotals>;
637
- contextFill?: {
638
- usedTokens: number;
639
- windowTokens: number;
640
- };
688
+ contextFill?: ContextFill;
641
689
  }
642
690
  declare function usageLine(usage: PlannerUsage): UsageLine;
643
691
  /**
644
- * The last planner prompt against its window, or undefined while either is
645
- * unknown. `usedTokens` is the prompt total as reported, cached tokens
692
+ * The main model's context as its last call left it, or undefined before one
693
+ * was measured and after a compaction that reported no size. `usedTokens` is
694
+ * what that call stated as its context, else its prompt total, cached tokens
646
695
  * included: a cached token still occupies the window, so subtracting the
647
- * cached share would understate how full the context is. A window of 0 is
648
- * treated as unknown — never guessed.
696
+ * cached share would understate how full the context is. The window rides
697
+ * along only when known; a window of 0 is treated as unknown — never guessed.
649
698
  */
650
- declare function plannerContextFill(usage: PlannerUsage): {
651
- usedTokens: number;
652
- windowTokens: number;
653
- } | undefined;
699
+ declare function plannerContextFill(usage: PlannerUsage): ContextFill | undefined;
654
700
  interface ModelUsage {
655
701
  source: string;
656
702
  model?: string;
@@ -680,7 +726,9 @@ interface AttemptUsage extends PlannerUsage {
680
726
  runnerSessionCost?: RunnerSessionCost;
681
727
  }
682
728
  declare function startAttemptUsage(attempt: number, runner: string, startedAt: string): AttemptUsage;
729
+ /** What its runner reports as it winds down after the attempt ended is added without moving its end. */
683
730
  declare function addAttemptUsage(usage: AttemptUsage, record: UsageRecord, now: string): AttemptUsage;
731
+ /** An attempt ends once; ended again once its runner wound down, it only takes the count that runner ended on. */
684
732
  declare function endAttemptUsage(usage: AttemptUsage, now: string, runnerSessionCost?: RunnerSessionCost, sessionId?: string): AttemptUsage;
685
733
  /** The count a continue of `sessionId` starts from: the one its latest attempt in that session ended with. */
686
734
  declare function countedSessionCost(attempts: readonly AttemptUsage[] | undefined, sessionId: string): RunnerSessionCost | undefined;
@@ -713,12 +761,38 @@ declare function planUsage(tasks: readonly UsageTask[]): PlanUsage;
713
761
  interface TaskUsageSummary {
714
762
  totals: UsageTotals;
715
763
  attempts: number;
716
- contextFill?: {
717
- usedTokens: number;
718
- windowTokens: number;
719
- };
764
+ contextFill?: ContextFill;
720
765
  }
721
766
  declare function taskUsageSummary(task: Pick<UsageTask, 'attemptUsage'>): TaskUsageSummary;
767
+ /** `950`, `1.5k`, `61k`, `261k`, `1.2M`. */
768
+ declare function formatTokenCount(n: number): string;
769
+ /** Two decimals from 1 up and up to four below it: a call can cost a fraction of a cent, a session several dollars. */
770
+ declare function formatCost(currency: string, amount: number): string;
771
+ /** `ctx 61k (6%)`, `ctx 61k` while the window is unknown, nothing before a call was measured. */
772
+ declare function contextMeterText(fill: ContextFill | undefined): string | null;
773
+ /** Exact counts for the meter's hover. */
774
+ declare function contextMeterTitle(fill: ContextFill): string;
775
+ /** The cost per currency as reported, joined by ` · `; null when none was reported. */
776
+ declare function costText(totals: UsageTotals): string | null;
777
+ /** The meter, then the cost, joined by ` · `; null when neither is known. */
778
+ declare function usageText(usage: {
779
+ totals: UsageTotals;
780
+ contextFill?: ContextFill;
781
+ }): string | null;
782
+ /** Each runner/model's reported cost for the cost's hover, leaving out models with none. */
783
+ declare function modelCostTitle(byModel: readonly ModelUsage[]): string | undefined;
784
+ /** Each subagent's reported cost for the subagent count's hover, or that it reported none. */
785
+ declare function subagentCostTitle(bySubagent: Readonly<Record<string, UsageTotals>>): string;
786
+ /**
787
+ * `Tasks total: $3.20 · codex reports no cost`: the cost over every attempt,
788
+ * then the runners none of whose attempts reported one — codex reports no
789
+ * price, and a price table is not Ordewell's to keep (ADR-0017 U1). A runner is
790
+ * named only once an attempt of it has ended having reported usage: Claude
791
+ * Code states a cost only on a turn's last line, so a first attempt still in
792
+ * its turn has not said yet, and one that never ran said nothing. A total has
793
+ * no meter: each task's own model holds its own window.
794
+ */
795
+ declare function tasksTotalText(tasks: readonly UsageTask[]): string | null;
722
796
 
723
797
  /**
724
798
  * How far a plan's supervisor may act in its wake-up turns (ADR-0029): a plan
@@ -1394,6 +1468,8 @@ interface LegacyPlanState {
1394
1468
  isolation?: PlanIsolation;
1395
1469
  /** Kept so a reopened session shows the same token line (#49). */
1396
1470
  plannerUsage?: PlannerUsage;
1471
+ /** The windows reported over the session, so a reopened one knows each model's from its first call. */
1472
+ contextWindows?: ReportedWindow[];
1397
1473
  /** The planner hit its usage limit and the inputs its turn took wait to be sent again; absent otherwise. */
1398
1474
  plannerResend?: PlannerResendState;
1399
1475
  /**
@@ -1486,4 +1562,4 @@ type ApprovalRecord = Pick<LegacyPlanState, 'approved' | 'approvedTasks'>;
1486
1562
  */
1487
1563
  declare function waitsForApproval(task: Pick<Task, 'id' | 'type' | 'status'>, record: ApprovalRecord): boolean;
1488
1564
 
1489
- export { type ResearchProgress as $, type ApprovalRecord as A, BUILTIN_SKILL_NAMES as B, type ConversationMessage as C, DEFAULT_RUNNERS as D, type ExecutionActor as E, type IsolationTaskStatus as F, type GuardTarget as G, type IsolationView as H, type IWorktreeIsolation as I, type PlanIsolation as J, type PlanState as K, type LegacyPlanState as L, type ModelUsage as M, type PlanStatus as N, type PlanUsage as O, type PendingPlanTurn as P, type PlannerResendState as Q, type PlannerUsage as R, type PrepareIntent as S, type PreparedTask as T, type PreservedWork as U, type PreviousWork as V, type RefusedRemoval as W, type RepairEvidence as X, type ReplyRun as Y, type RepoGroupLayout as Z, type ResearchLogEntry as _, type AttemptUsage as a, type ResearchStep as a0, type ResearchStepOutcome as a1, type ResearchToolType as a2, type RunSettings as a3, type RunnerId as a4, type RunnerSessionCost as a5, type SetupFailure as a6, type ShadowedSkill as a7, type SkillAppliesTo as a8, type SkillCatalog as a9, addModelUsage as aA, addPlannerUsage as aB, addUsage as aC, addUsageTotals as aD, countedSessionCost as aE, createEmptyPlan as aF, createSkillsService as aG, createTask as aH, endAttemptUsage as aI, flattenTasks as aJ, flattenTasksWithParents as aK, isAwaitingReason as aL, isMeasured as aM, isSupervisorLevel as aN, isUserMessage as aO, migratePlanState as aP, partedPromptUsage as aQ, pausedOnLimit as aR, planUsage as aS, plannerContextFill as aT, rejoinPlanTree as aU, resumedSessionWindow as aV, startAttemptUsage as aW, taskUsageSummary as aX, usageLine as aY, waitsForApproval as aZ, type SkillInfo as aa, type SkillLoad as ab, type SkillLoadNotice as ac, type SkillMetadata as ad, type SkillSource as ae, SkillsService as af, type SubagentOutcome as ag, type SupervisorLevel as ah, type Task as ai, type TaskDiffRead as aj, type TaskDiffResult as ak, type TaskIsolation as al, type TaskIsolationState as am, type TaskModelAssignment as an, type TaskSkillNotice as ao, type TaskSkillSnapshot as ap, type TaskSnapshot as aq, type TaskStatus as ar, type TaskUsageSummary as as, type TreeSnapshot as at, type UsageLine as au, type UsageRecord as av, type UsageTotals as aw, type Verdict as ax, type VerificationCheck as ay, addAttemptUsage as az, type AwaitingReason as b, DEFAULT_SUPERVISOR_RETRY_LIMIT as c, type DiscoveredModel as d, type ExecutionCommandName as e, type ExecutionRecord as f, type GuardTrip as g, type IntegrationDisposal as h, type InvalidSkill as i, type IsolationAvailability as j, type IsolationHandoff as k, type IsolationHandoffRepo as l, type IsolationInactiveReason as m, type IsolationLandedTask as n, type IsolationLanding as o, type IsolationMergeBlock as p, type IsolationMergeBlockReason as q, type IsolationMergeResult as r, type IsolationOutcome as s, type IsolationPruneResult as t, type IsolationRemoval as u, type IsolationRepo as v, type IsolationRun as w, type IsolationTaskRecord as x, type IsolationTaskRef as y, type IsolationTaskRepo as z };
1565
+ export { type RepoGroupLayout as $, type ApprovalRecord as A, BUILTIN_SKILL_NAMES as B, type ContextFill as C, DEFAULT_RUNNERS as D, type ExecutionActor as E, type IsolationTaskRef as F, type GuardTarget as G, type IsolationTaskRepo as H, type IWorktreeIsolation as I, type IsolationTaskStatus as J, type IsolationView as K, type LegacyPlanState as L, type ModelUsage as M, type PlanIsolation as N, type PlanState as O, type PendingPlanTurn as P, type PlanStatus as Q, type PlanUsage as R, type PlannerResendState as S, type PlannerUsage as T, type PrepareIntent as U, type PreparedTask as V, type PreservedWork as W, type PreviousWork as X, type RefusedRemoval as Y, type RepairEvidence as Z, type ReplyRun as _, type AttemptUsage as a, pausedOnLimit as a$, type ReportedWindow as a0, type ResearchLogEntry as a1, type ResearchProgress as a2, type ResearchStep as a3, type ResearchStepOutcome as a4, type ResearchToolType as a5, type RunSettings as a6, type RunnerId as a7, type RunnerSessionCost as a8, type SessionBilling as a9, type UsageTotals as aA, type Verdict as aB, type VerificationCheck as aC, addAttemptUsage as aD, addModelUsage as aE, addPlannerUsage as aF, addUsage as aG, addUsageTotals as aH, contextMeterText as aI, contextMeterTitle as aJ, costText as aK, countedSessionCost as aL, createEmptyPlan as aM, createSkillsService as aN, createTask as aO, endAttemptUsage as aP, flattenTasks as aQ, flattenTasksWithParents as aR, formatCost as aS, formatTokenCount as aT, isAwaitingReason as aU, isMeasured as aV, isSupervisorLevel as aW, isUserMessage as aX, migratePlanState as aY, modelCostTitle as aZ, partedPromptUsage as a_, type SetupFailure as aa, type ShadowedSkill as ab, type SkillAppliesTo as ac, type SkillCatalog as ad, type SkillInfo as ae, type SkillLoad as af, type SkillLoadNotice as ag, type SkillMetadata as ah, type SkillSource as ai, SkillsService as aj, type SubagentOutcome as ak, type SupervisorLevel as al, type Task as am, type TaskDiffRead as an, type TaskDiffResult as ao, type TaskIsolation as ap, type TaskIsolationState as aq, type TaskModelAssignment as ar, type TaskSkillNotice as as, type TaskSkillSnapshot as at, type TaskSnapshot as au, type TaskStatus as av, type TaskUsageSummary as aw, type TreeSnapshot as ax, type UsageLine as ay, type UsageRecord as az, type AwaitingReason as b, planUsage as b0, plannerContextFill as b1, rejoinPlanTree as b2, resumedSessionWindow as b3, startAttemptUsage as b4, subagentCostTitle as b5, taskUsageSummary as b6, tasksTotalText as b7, usageLine as b8, usageText as b9, waitsForApproval as ba, type ConversationMessage as c, type CostProvenance as d, DEFAULT_SUPERVISOR_RETRY_LIMIT as e, type DiscoveredModel as f, type ExecutionCommandName as g, type ExecutionRecord as h, type GuardTrip as i, type IntegrationDisposal as j, type InvalidSkill as k, type IsolationAvailability as l, type IsolationHandoff as m, type IsolationHandoffRepo as n, type IsolationInactiveReason as o, type IsolationLandedTask as p, type IsolationLanding as q, type IsolationMergeBlock as r, type IsolationMergeBlockReason as s, type IsolationMergeResult as t, type IsolationOutcome as u, type IsolationPruneResult as v, type IsolationRemoval as w, type IsolationRepo as x, type IsolationRun as y, type IsolationTaskRecord as z };
@@ -125,8 +125,9 @@ interface IsolationTaskRecord {
125
125
  repairedFiles?: string[];
126
126
  /**
127
127
  * Set once the task's landed work is in the checked-out HEAD of every repo
128
- * it changed — merged into the user's branch, by Merge all or by hand. What
129
- * a merge gate waits for (ADR-0020).
128
+ * it changed — merged into the user's branch, by Merge all or by hand — or
129
+ * can no longer be merged there, its integration branch gone. What a merge
130
+ * gate waits for (ADR-0020).
130
131
  */
131
132
  inHead?: true;
132
133
  }
@@ -502,7 +503,9 @@ interface IWorktreeIsolation {
502
503
  /**
503
504
  * Mark the landed tasks whose work the checked-out HEAD now contains in
504
505
  * every repo they changed (`git merge-base --is-ancestor`), and return their
505
- * ids. Only adds marks: a task found merged stays merged.
506
+ * ids. A repo whose integration branch is gone counts as containing it: no
507
+ * Merge all could bring that work in. Only adds marks: a task found merged
508
+ * stays merged.
506
509
  */
507
510
  findInHead(run: IsolationRun): Promise<string[]>;
508
511
  /**
@@ -548,6 +551,16 @@ interface IWorktreeIsolation {
548
551
  sweep(run: IsolationRun): Promise<void>;
549
552
  }
550
553
 
554
+ /** How the runner says this session is paid for; absent means it has not said. */
555
+ interface SessionBilling {
556
+ type: 'subscription' | 'api-key';
557
+ plan?: string;
558
+ }
559
+ interface CostProvenance {
560
+ kind: 'estimate' | 'billed' | 'unknown';
561
+ billing: SessionBilling['type'] | 'unknown' | 'mixed';
562
+ basis?: 'list' | 'managed';
563
+ }
551
564
  /**
552
565
  * What one model call consumed, as its provider or runner reported it. Shared
553
566
  * by the planner's usage line (#49) and per-attempt task usage (#26): a record
@@ -569,22 +582,47 @@ interface UsageRecord {
569
582
  cachedInputTokens?: number;
570
583
  /**
571
584
  * Filled only from a provider's or runner's own report, never from a price
572
- * table or an estimate: prices go stale, and a subscription runner has no
585
+ * table kept in Ordewell: prices go stale, and a subscription runner has no
573
586
  * per-token price at all. No report means no cost, not a guessed one.
574
587
  */
575
588
  reportedCost?: {
576
589
  amount: number;
577
590
  currency: string;
591
+ kind?: 'estimate' | 'billed';
592
+ basis?: 'list' | 'managed';
578
593
  };
594
+ sessionBilling?: SessionBilling;
579
595
  /**
580
596
  * The model's context window: as the runner or provider reported it, or,
581
597
  * when it reported none, from that runner's or provider's own model listing
582
598
  * (`ContextWindowFill`). Never from a table kept in Ordewell.
583
599
  */
584
600
  contextWindow?: number;
601
+ /**
602
+ * What the main model's context holds once this call is done, counted the
603
+ * way its runner's own UI counts it, so the meter reads what the user would
604
+ * see there. Runners differ, and no sum of the measures above can tell.
605
+ * A measure of the meter only: no total adds it. Absent, the meter reads the
606
+ * prompt.
607
+ */
608
+ contextTokens?: number;
609
+ /**
610
+ * The runner reset the main model's context outside a call — a compaction,
611
+ * or a `/clear`: no call, so the record measures nothing but `contextTokens`,
612
+ * the size it reported the context left at, if it did. It may name the model
613
+ * the new context belongs to; a record that names none is about whichever
614
+ * runs now.
615
+ */
616
+ compacted?: true;
585
617
  /** Set when a subagent made the call; its usage still counts toward the total. */
586
618
  subagentId?: string;
587
619
  }
620
+ /** A model's window as its reporter stated it: what a plan saves of its session's windows (`SessionWindows`). */
621
+ interface ReportedWindow {
622
+ source: string;
623
+ model: string;
624
+ contextWindow: number;
625
+ }
588
626
  /**
589
627
  * A running sum of {@link UsageRecord}s. A measure stays absent until some
590
628
  * record reports it. Cost is kept per currency: two runners may bill in
@@ -595,6 +633,7 @@ interface UsageTotals {
595
633
  outputTokens?: number;
596
634
  cachedInputTokens?: number;
597
635
  reportedCost?: Record<string, number>;
636
+ costProvenance?: Record<string, CostProvenance>;
598
637
  }
599
638
  /**
600
639
  * The input side of a call whose provider reports its prompt in parts — the
@@ -614,9 +653,12 @@ declare function addUsage(totals: UsageTotals, record: UsageRecord): UsageTotals
614
653
  * What the planner has consumed over a session (#49). `totals` includes every
615
654
  * `bySubagent` entry. `lastPromptTokens` and `contextWindow` track the
616
655
  * planner's own calls only — a subagent runs its own model, whose window says
617
- * nothing about the planner's.
656
+ * nothing about the planner's. `lastPromptTokens` is the context the last call
657
+ * left (its `contextTokens`, else its prompt), under the name saved sessions
658
+ * already hold it by.
618
659
  */
619
660
  interface PlannerUsage {
661
+ sessionBilling?: SessionBilling;
620
662
  totals: UsageTotals;
621
663
  bySubagent?: Record<string, UsageTotals>;
622
664
  byModel?: ModelUsage[];
@@ -626,31 +668,35 @@ interface PlannerUsage {
626
668
  contextWindow?: number;
627
669
  }
628
670
  declare function addPlannerUsage(usage: PlannerUsage, record: UsageRecord): PlannerUsage;
629
- /** Whether any measure was reported: a token line of nothing but blanks says nothing. */
671
+ /** Whether any measure was reported: a usage line of nothing but blanks says nothing. */
630
672
  declare function isMeasured(totals: UsageTotals): boolean;
631
- /** What the token line shows of a ledger — live from its broadcast, or reloaded from the saved one. */
673
+ /**
674
+ * The main model's context: what its last call left in it, against its window
675
+ * when that is known. A window of 0 is not known.
676
+ */
677
+ interface ContextFill {
678
+ usedTokens: number;
679
+ windowTokens?: number;
680
+ }
681
+ /** What the usage line draws of a ledger — live from its broadcast, or reloaded from the saved one. */
632
682
  interface UsageLine {
683
+ sessionBilling?: SessionBilling;
633
684
  byModel?: ModelUsage[];
634
685
  model?: string;
635
686
  totals: UsageTotals;
636
687
  bySubagent?: Record<string, UsageTotals>;
637
- contextFill?: {
638
- usedTokens: number;
639
- windowTokens: number;
640
- };
688
+ contextFill?: ContextFill;
641
689
  }
642
690
  declare function usageLine(usage: PlannerUsage): UsageLine;
643
691
  /**
644
- * The last planner prompt against its window, or undefined while either is
645
- * unknown. `usedTokens` is the prompt total as reported, cached tokens
692
+ * The main model's context as its last call left it, or undefined before one
693
+ * was measured and after a compaction that reported no size. `usedTokens` is
694
+ * what that call stated as its context, else its prompt total, cached tokens
646
695
  * included: a cached token still occupies the window, so subtracting the
647
- * cached share would understate how full the context is. A window of 0 is
648
- * treated as unknown — never guessed.
696
+ * cached share would understate how full the context is. The window rides
697
+ * along only when known; a window of 0 is treated as unknown — never guessed.
649
698
  */
650
- declare function plannerContextFill(usage: PlannerUsage): {
651
- usedTokens: number;
652
- windowTokens: number;
653
- } | undefined;
699
+ declare function plannerContextFill(usage: PlannerUsage): ContextFill | undefined;
654
700
  interface ModelUsage {
655
701
  source: string;
656
702
  model?: string;
@@ -680,7 +726,9 @@ interface AttemptUsage extends PlannerUsage {
680
726
  runnerSessionCost?: RunnerSessionCost;
681
727
  }
682
728
  declare function startAttemptUsage(attempt: number, runner: string, startedAt: string): AttemptUsage;
729
+ /** What its runner reports as it winds down after the attempt ended is added without moving its end. */
683
730
  declare function addAttemptUsage(usage: AttemptUsage, record: UsageRecord, now: string): AttemptUsage;
731
+ /** An attempt ends once; ended again once its runner wound down, it only takes the count that runner ended on. */
684
732
  declare function endAttemptUsage(usage: AttemptUsage, now: string, runnerSessionCost?: RunnerSessionCost, sessionId?: string): AttemptUsage;
685
733
  /** The count a continue of `sessionId` starts from: the one its latest attempt in that session ended with. */
686
734
  declare function countedSessionCost(attempts: readonly AttemptUsage[] | undefined, sessionId: string): RunnerSessionCost | undefined;
@@ -713,12 +761,38 @@ declare function planUsage(tasks: readonly UsageTask[]): PlanUsage;
713
761
  interface TaskUsageSummary {
714
762
  totals: UsageTotals;
715
763
  attempts: number;
716
- contextFill?: {
717
- usedTokens: number;
718
- windowTokens: number;
719
- };
764
+ contextFill?: ContextFill;
720
765
  }
721
766
  declare function taskUsageSummary(task: Pick<UsageTask, 'attemptUsage'>): TaskUsageSummary;
767
+ /** `950`, `1.5k`, `61k`, `261k`, `1.2M`. */
768
+ declare function formatTokenCount(n: number): string;
769
+ /** Two decimals from 1 up and up to four below it: a call can cost a fraction of a cent, a session several dollars. */
770
+ declare function formatCost(currency: string, amount: number): string;
771
+ /** `ctx 61k (6%)`, `ctx 61k` while the window is unknown, nothing before a call was measured. */
772
+ declare function contextMeterText(fill: ContextFill | undefined): string | null;
773
+ /** Exact counts for the meter's hover. */
774
+ declare function contextMeterTitle(fill: ContextFill): string;
775
+ /** The cost per currency as reported, joined by ` · `; null when none was reported. */
776
+ declare function costText(totals: UsageTotals): string | null;
777
+ /** The meter, then the cost, joined by ` · `; null when neither is known. */
778
+ declare function usageText(usage: {
779
+ totals: UsageTotals;
780
+ contextFill?: ContextFill;
781
+ }): string | null;
782
+ /** Each runner/model's reported cost for the cost's hover, leaving out models with none. */
783
+ declare function modelCostTitle(byModel: readonly ModelUsage[]): string | undefined;
784
+ /** Each subagent's reported cost for the subagent count's hover, or that it reported none. */
785
+ declare function subagentCostTitle(bySubagent: Readonly<Record<string, UsageTotals>>): string;
786
+ /**
787
+ * `Tasks total: $3.20 · codex reports no cost`: the cost over every attempt,
788
+ * then the runners none of whose attempts reported one — codex reports no
789
+ * price, and a price table is not Ordewell's to keep (ADR-0017 U1). A runner is
790
+ * named only once an attempt of it has ended having reported usage: Claude
791
+ * Code states a cost only on a turn's last line, so a first attempt still in
792
+ * its turn has not said yet, and one that never ran said nothing. A total has
793
+ * no meter: each task's own model holds its own window.
794
+ */
795
+ declare function tasksTotalText(tasks: readonly UsageTask[]): string | null;
722
796
 
723
797
  /**
724
798
  * How far a plan's supervisor may act in its wake-up turns (ADR-0029): a plan
@@ -1394,6 +1468,8 @@ interface LegacyPlanState {
1394
1468
  isolation?: PlanIsolation;
1395
1469
  /** Kept so a reopened session shows the same token line (#49). */
1396
1470
  plannerUsage?: PlannerUsage;
1471
+ /** The windows reported over the session, so a reopened one knows each model's from its first call. */
1472
+ contextWindows?: ReportedWindow[];
1397
1473
  /** The planner hit its usage limit and the inputs its turn took wait to be sent again; absent otherwise. */
1398
1474
  plannerResend?: PlannerResendState;
1399
1475
  /**
@@ -1486,4 +1562,4 @@ type ApprovalRecord = Pick<LegacyPlanState, 'approved' | 'approvedTasks'>;
1486
1562
  */
1487
1563
  declare function waitsForApproval(task: Pick<Task, 'id' | 'type' | 'status'>, record: ApprovalRecord): boolean;
1488
1564
 
1489
- export { type ResearchProgress as $, type ApprovalRecord as A, BUILTIN_SKILL_NAMES as B, type ConversationMessage as C, DEFAULT_RUNNERS as D, type ExecutionActor as E, type IsolationTaskStatus as F, type GuardTarget as G, type IsolationView as H, type IWorktreeIsolation as I, type PlanIsolation as J, type PlanState as K, type LegacyPlanState as L, type ModelUsage as M, type PlanStatus as N, type PlanUsage as O, type PendingPlanTurn as P, type PlannerResendState as Q, type PlannerUsage as R, type PrepareIntent as S, type PreparedTask as T, type PreservedWork as U, type PreviousWork as V, type RefusedRemoval as W, type RepairEvidence as X, type ReplyRun as Y, type RepoGroupLayout as Z, type ResearchLogEntry as _, type AttemptUsage as a, type ResearchStep as a0, type ResearchStepOutcome as a1, type ResearchToolType as a2, type RunSettings as a3, type RunnerId as a4, type RunnerSessionCost as a5, type SetupFailure as a6, type ShadowedSkill as a7, type SkillAppliesTo as a8, type SkillCatalog as a9, addModelUsage as aA, addPlannerUsage as aB, addUsage as aC, addUsageTotals as aD, countedSessionCost as aE, createEmptyPlan as aF, createSkillsService as aG, createTask as aH, endAttemptUsage as aI, flattenTasks as aJ, flattenTasksWithParents as aK, isAwaitingReason as aL, isMeasured as aM, isSupervisorLevel as aN, isUserMessage as aO, migratePlanState as aP, partedPromptUsage as aQ, pausedOnLimit as aR, planUsage as aS, plannerContextFill as aT, rejoinPlanTree as aU, resumedSessionWindow as aV, startAttemptUsage as aW, taskUsageSummary as aX, usageLine as aY, waitsForApproval as aZ, type SkillInfo as aa, type SkillLoad as ab, type SkillLoadNotice as ac, type SkillMetadata as ad, type SkillSource as ae, SkillsService as af, type SubagentOutcome as ag, type SupervisorLevel as ah, type Task as ai, type TaskDiffRead as aj, type TaskDiffResult as ak, type TaskIsolation as al, type TaskIsolationState as am, type TaskModelAssignment as an, type TaskSkillNotice as ao, type TaskSkillSnapshot as ap, type TaskSnapshot as aq, type TaskStatus as ar, type TaskUsageSummary as as, type TreeSnapshot as at, type UsageLine as au, type UsageRecord as av, type UsageTotals as aw, type Verdict as ax, type VerificationCheck as ay, addAttemptUsage as az, type AwaitingReason as b, DEFAULT_SUPERVISOR_RETRY_LIMIT as c, type DiscoveredModel as d, type ExecutionCommandName as e, type ExecutionRecord as f, type GuardTrip as g, type IntegrationDisposal as h, type InvalidSkill as i, type IsolationAvailability as j, type IsolationHandoff as k, type IsolationHandoffRepo as l, type IsolationInactiveReason as m, type IsolationLandedTask as n, type IsolationLanding as o, type IsolationMergeBlock as p, type IsolationMergeBlockReason as q, type IsolationMergeResult as r, type IsolationOutcome as s, type IsolationPruneResult as t, type IsolationRemoval as u, type IsolationRepo as v, type IsolationRun as w, type IsolationTaskRecord as x, type IsolationTaskRef as y, type IsolationTaskRepo as z };
1565
+ export { type RepoGroupLayout as $, type ApprovalRecord as A, BUILTIN_SKILL_NAMES as B, type ContextFill as C, DEFAULT_RUNNERS as D, type ExecutionActor as E, type IsolationTaskRef as F, type GuardTarget as G, type IsolationTaskRepo as H, type IWorktreeIsolation as I, type IsolationTaskStatus as J, type IsolationView as K, type LegacyPlanState as L, type ModelUsage as M, type PlanIsolation as N, type PlanState as O, type PendingPlanTurn as P, type PlanStatus as Q, type PlanUsage as R, type PlannerResendState as S, type PlannerUsage as T, type PrepareIntent as U, type PreparedTask as V, type PreservedWork as W, type PreviousWork as X, type RefusedRemoval as Y, type RepairEvidence as Z, type ReplyRun as _, type AttemptUsage as a, pausedOnLimit as a$, type ReportedWindow as a0, type ResearchLogEntry as a1, type ResearchProgress as a2, type ResearchStep as a3, type ResearchStepOutcome as a4, type ResearchToolType as a5, type RunSettings as a6, type RunnerId as a7, type RunnerSessionCost as a8, type SessionBilling as a9, type UsageTotals as aA, type Verdict as aB, type VerificationCheck as aC, addAttemptUsage as aD, addModelUsage as aE, addPlannerUsage as aF, addUsage as aG, addUsageTotals as aH, contextMeterText as aI, contextMeterTitle as aJ, costText as aK, countedSessionCost as aL, createEmptyPlan as aM, createSkillsService as aN, createTask as aO, endAttemptUsage as aP, flattenTasks as aQ, flattenTasksWithParents as aR, formatCost as aS, formatTokenCount as aT, isAwaitingReason as aU, isMeasured as aV, isSupervisorLevel as aW, isUserMessage as aX, migratePlanState as aY, modelCostTitle as aZ, partedPromptUsage as a_, type SetupFailure as aa, type ShadowedSkill as ab, type SkillAppliesTo as ac, type SkillCatalog as ad, type SkillInfo as ae, type SkillLoad as af, type SkillLoadNotice as ag, type SkillMetadata as ah, type SkillSource as ai, SkillsService as aj, type SubagentOutcome as ak, type SupervisorLevel as al, type Task as am, type TaskDiffRead as an, type TaskDiffResult as ao, type TaskIsolation as ap, type TaskIsolationState as aq, type TaskModelAssignment as ar, type TaskSkillNotice as as, type TaskSkillSnapshot as at, type TaskSnapshot as au, type TaskStatus as av, type TaskUsageSummary as aw, type TreeSnapshot as ax, type UsageLine as ay, type UsageRecord as az, type AwaitingReason as b, planUsage as b0, plannerContextFill as b1, rejoinPlanTree as b2, resumedSessionWindow as b3, startAttemptUsage as b4, subagentCostTitle as b5, taskUsageSummary as b6, tasksTotalText as b7, usageLine as b8, usageText as b9, waitsForApproval as ba, type ConversationMessage as c, type CostProvenance as d, DEFAULT_SUPERVISOR_RETRY_LIMIT as e, type DiscoveredModel as f, type ExecutionCommandName as g, type ExecutionRecord as h, type GuardTrip as i, type IntegrationDisposal as j, type InvalidSkill as k, type IsolationAvailability as l, type IsolationHandoff as m, type IsolationHandoffRepo as n, type IsolationInactiveReason as o, type IsolationLandedTask as p, type IsolationLanding as q, type IsolationMergeBlock as r, type IsolationMergeBlockReason as s, type IsolationMergeResult as t, type IsolationOutcome as u, type IsolationPruneResult as v, type IsolationRemoval as w, type IsolationRepo as x, type IsolationRun as y, type IsolationTaskRecord as z };
@@ -7,7 +7,7 @@ import {
7
7
  flattenTasksWithParents,
8
8
  inheritedSkills,
9
9
  skillNames
10
- } from "./chunk-EEE2GBLG.mjs";
10
+ } from "./chunk-PFH7WFIB.mjs";
11
11
 
12
12
  // src/services/JsonExtractor.ts
13
13
  var PLAN_ENVELOPE_KEY = "tasks";
@@ -644,4 +644,4 @@ export {
644
644
  checkPlanInvariants,
645
645
  detectCycle
646
646
  };
647
- //# sourceMappingURL=chunk-H7QX32BH.mjs.map
647
+ //# sourceMappingURL=chunk-24EL4Z2W.mjs.map