@telora/daemon 0.22.189 → 0.22.208

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 (189) hide show
  1. package/build-info.json +6 -3
  2. package/dist/backends/index.d.ts.map +1 -1
  3. package/dist/backends/index.js +2 -0
  4. package/dist/backends/index.js.map +1 -1
  5. package/dist/completion/completion-fact-readers.d.ts +35 -0
  6. package/dist/completion/completion-fact-readers.d.ts.map +1 -0
  7. package/dist/completion/completion-fact-readers.js +70 -0
  8. package/dist/completion/completion-fact-readers.js.map +1 -0
  9. package/dist/completion/event-dep-defaults.d.ts +27 -0
  10. package/dist/completion/event-dep-defaults.d.ts.map +1 -0
  11. package/dist/completion/event-dep-defaults.js +30 -0
  12. package/dist/completion/event-dep-defaults.js.map +1 -0
  13. package/dist/completion/event-phases.d.ts.map +1 -1
  14. package/dist/completion/event-phases.js +5 -13
  15. package/dist/completion/event-phases.js.map +1 -1
  16. package/dist/completion/event.d.ts +32 -0
  17. package/dist/completion/event.d.ts.map +1 -1
  18. package/dist/completion/event.js +31 -25
  19. package/dist/completion/event.js.map +1 -1
  20. package/dist/completion/session-hold.d.ts +13 -1
  21. package/dist/completion/session-hold.d.ts.map +1 -1
  22. package/dist/completion/session-hold.js +18 -0
  23. package/dist/completion/session-hold.js.map +1 -1
  24. package/dist/completion/team-phase.d.ts.map +1 -1
  25. package/dist/completion/team-phase.js +1 -0
  26. package/dist/completion/team-phase.js.map +1 -1
  27. package/dist/completion/unclaimed-migration-notice-phase.d.ts +97 -0
  28. package/dist/completion/unclaimed-migration-notice-phase.d.ts.map +1 -0
  29. package/dist/completion/unclaimed-migration-notice-phase.js +270 -0
  30. package/dist/completion/unclaimed-migration-notice-phase.js.map +1 -0
  31. package/dist/directive/directive-executor.d.ts.map +1 -1
  32. package/dist/directive/directive-executor.js +1 -20
  33. package/dist/directive/directive-executor.js.map +1 -1
  34. package/dist/focus/focus-executor.d.ts +1 -0
  35. package/dist/focus/focus-executor.d.ts.map +1 -1
  36. package/dist/focus/focus-executor.js +18 -17
  37. package/dist/focus/focus-executor.js.map +1 -1
  38. package/dist/focus/focus-team-state.js +1 -1
  39. package/dist/focus/listener-spawn.d.ts.map +1 -1
  40. package/dist/focus/listener-spawn.js +5 -20
  41. package/dist/focus/listener-spawn.js.map +1 -1
  42. package/dist/focus/listener-state.d.ts.map +1 -1
  43. package/dist/focus/listener-state.js +1 -0
  44. package/dist/focus/listener-state.js.map +1 -1
  45. package/dist/focus/listener.d.ts +1 -0
  46. package/dist/focus/listener.d.ts.map +1 -1
  47. package/dist/focus/listener.js +9 -0
  48. package/dist/focus/listener.js.map +1 -1
  49. package/dist/focus/migration-claim-pass.d.ts +50 -0
  50. package/dist/focus/migration-claim-pass.d.ts.map +1 -0
  51. package/dist/focus/migration-claim-pass.js +234 -0
  52. package/dist/focus/migration-claim-pass.js.map +1 -0
  53. package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
  54. package/dist/focus/pending-spawn-pass-deps.js +2 -1
  55. package/dist/focus/pending-spawn-pass-deps.js.map +1 -1
  56. package/dist/focus/team-actionable-work.d.ts +21 -0
  57. package/dist/focus/team-actionable-work.d.ts.map +1 -1
  58. package/dist/focus/team-actionable-work.js +3 -0
  59. package/dist/focus/team-actionable-work.js.map +1 -1
  60. package/dist/git/types.d.ts.map +1 -1
  61. package/dist/git/types.js +2 -1
  62. package/dist/git/types.js.map +1 -1
  63. package/dist/loops/llm-client.d.ts.map +1 -1
  64. package/dist/loops/llm-client.js +11 -1
  65. package/dist/loops/llm-client.js.map +1 -1
  66. package/dist/migrations/migration-claim-lifecycle.d.ts +166 -0
  67. package/dist/migrations/migration-claim-lifecycle.d.ts.map +1 -0
  68. package/dist/migrations/migration-claim-lifecycle.js +198 -0
  69. package/dist/migrations/migration-claim-lifecycle.js.map +1 -0
  70. package/dist/migrations/migration-held-set.d.ts +171 -0
  71. package/dist/migrations/migration-held-set.d.ts.map +1 -0
  72. package/dist/migrations/migration-held-set.js +295 -0
  73. package/dist/migrations/migration-held-set.js.map +1 -0
  74. package/dist/migrations/migration-inventory.d.ts +187 -0
  75. package/dist/migrations/migration-inventory.d.ts.map +1 -0
  76. package/dist/migrations/migration-inventory.js +253 -0
  77. package/dist/migrations/migration-inventory.js.map +1 -0
  78. package/dist/migrations/migration-manifest.d.ts +114 -0
  79. package/dist/migrations/migration-manifest.d.ts.map +1 -0
  80. package/dist/migrations/migration-manifest.js +295 -0
  81. package/dist/migrations/migration-manifest.js.map +1 -0
  82. package/dist/prompt/team-prompt-base.js +1 -1
  83. package/dist/prompt-sections/migration-numbering-section.d.ts +58 -0
  84. package/dist/prompt-sections/migration-numbering-section.d.ts.map +1 -0
  85. package/dist/prompt-sections/migration-numbering-section.js +70 -0
  86. package/dist/prompt-sections/migration-numbering-section.js.map +1 -0
  87. package/dist/prompt-sections/migration-numbering-state.d.ts +30 -0
  88. package/dist/prompt-sections/migration-numbering-state.d.ts.map +1 -0
  89. package/dist/prompt-sections/migration-numbering-state.js +24 -0
  90. package/dist/prompt-sections/migration-numbering-state.js.map +1 -0
  91. package/dist/prompt-sections/unclaimed-migration-section.d.ts +38 -0
  92. package/dist/prompt-sections/unclaimed-migration-section.d.ts.map +1 -0
  93. package/dist/prompt-sections/unclaimed-migration-section.js +57 -0
  94. package/dist/prompt-sections/unclaimed-migration-section.js.map +1 -0
  95. package/dist/queries/claim-pass-focuses.d.ts +19 -0
  96. package/dist/queries/claim-pass-focuses.d.ts.map +1 -0
  97. package/dist/queries/claim-pass-focuses.js +72 -0
  98. package/dist/queries/claim-pass-focuses.js.map +1 -0
  99. package/dist/queries/daemon-connection.d.ts.map +1 -1
  100. package/dist/queries/daemon-connection.js +1 -0
  101. package/dist/queries/daemon-connection.js.map +1 -1
  102. package/dist/queries/focus-discovery.d.ts +25 -2
  103. package/dist/queries/focus-discovery.d.ts.map +1 -1
  104. package/dist/queries/focus-discovery.js +16 -9
  105. package/dist/queries/focus-discovery.js.map +1 -1
  106. package/dist/queries/focus-unclaimed-migration.d.ts +146 -0
  107. package/dist/queries/focus-unclaimed-migration.d.ts.map +1 -0
  108. package/dist/queries/focus-unclaimed-migration.js +266 -0
  109. package/dist/queries/focus-unclaimed-migration.js.map +1 -0
  110. package/dist/queries/live-focus-branches.d.ts +32 -0
  111. package/dist/queries/live-focus-branches.d.ts.map +1 -0
  112. package/dist/queries/live-focus-branches.js +66 -0
  113. package/dist/queries/live-focus-branches.js.map +1 -0
  114. package/dist/queries/migration-claims.d.ts +25 -0
  115. package/dist/queries/migration-claims.d.ts.map +1 -0
  116. package/dist/queries/migration-claims.js +79 -0
  117. package/dist/queries/migration-claims.js.map +1 -0
  118. package/dist/queries/schemas.d.ts +2 -0
  119. package/dist/queries/schemas.d.ts.map +1 -1
  120. package/dist/queries/schemas.js +6 -0
  121. package/dist/queries/schemas.js.map +1 -1
  122. package/dist/queries/shared.js +1 -1
  123. package/dist/session/session-lineage.d.ts.map +1 -1
  124. package/dist/session/session-lineage.js +3 -0
  125. package/dist/session/session-lineage.js.map +1 -1
  126. package/dist/shell/heartbeat-metadata.d.ts +48 -2
  127. package/dist/shell/heartbeat-metadata.d.ts.map +1 -1
  128. package/dist/shell/heartbeat-metadata.js +80 -3
  129. package/dist/shell/heartbeat-metadata.js.map +1 -1
  130. package/dist/shell/heartbeat.d.ts +13 -0
  131. package/dist/shell/heartbeat.d.ts.map +1 -1
  132. package/dist/shell/heartbeat.js +31 -10
  133. package/dist/shell/heartbeat.js.map +1 -1
  134. package/dist/shell/mcp-resolution.js +1 -1
  135. package/dist/shell/mcp-resolution.js.map +1 -1
  136. package/dist/shell/migration-held-set-publish.d.ts +170 -0
  137. package/dist/shell/migration-held-set-publish.d.ts.map +1 -0
  138. package/dist/shell/migration-held-set-publish.js +172 -0
  139. package/dist/shell/migration-held-set-publish.js.map +1 -0
  140. package/dist/shell/worker-pidfile.d.ts.map +1 -1
  141. package/dist/shell/worker-pidfile.js +1 -0
  142. package/dist/shell/worker-pidfile.js.map +1 -1
  143. package/dist/spawn/helpers.d.ts.map +1 -1
  144. package/dist/spawn/helpers.js +1 -0
  145. package/dist/spawn/helpers.js.map +1 -1
  146. package/dist/spawn/lead-launch.d.ts.map +1 -1
  147. package/dist/spawn/lead-launch.js +1 -0
  148. package/dist/spawn/lead-launch.js.map +1 -1
  149. package/dist/spawn/lead-process-ownership.d.ts.map +1 -1
  150. package/dist/spawn/lead-process-ownership.js +1 -0
  151. package/dist/spawn/lead-process-ownership.js.map +1 -1
  152. package/dist/spawn/process-group-kill.d.ts.map +1 -1
  153. package/dist/spawn/process-group-kill.js +1 -0
  154. package/dist/spawn/process-group-kill.js.map +1 -1
  155. package/dist/spawn/process-spawn.d.ts +18 -1
  156. package/dist/spawn/process-spawn.d.ts.map +1 -1
  157. package/dist/spawn/process-spawn.js +11 -6
  158. package/dist/spawn/process-spawn.js.map +1 -1
  159. package/dist/spawn/prompt-assembly.d.ts +115 -18
  160. package/dist/spawn/prompt-assembly.d.ts.map +1 -1
  161. package/dist/spawn/prompt-assembly.js +121 -2
  162. package/dist/spawn/prompt-assembly.js.map +1 -1
  163. package/dist/spawn/spawn-and-acknowledge.d.ts +61 -0
  164. package/dist/spawn/spawn-and-acknowledge.d.ts.map +1 -0
  165. package/dist/spawn/spawn-and-acknowledge.js +117 -0
  166. package/dist/spawn/spawn-and-acknowledge.js.map +1 -0
  167. package/dist/spawn/spawn-cooldown.js +1 -1
  168. package/dist/spawn/spawn-decision.d.ts +10 -10
  169. package/dist/spawn/spawn-decision.d.ts.map +1 -1
  170. package/dist/spawn/spawn-decision.js +33 -5
  171. package/dist/spawn/spawn-decision.js.map +1 -1
  172. package/dist/templates/claude-md.d.ts +1 -1
  173. package/dist/templates/claude-md.d.ts.map +1 -1
  174. package/dist/templates/claude-md.js +24 -0
  175. package/dist/templates/claude-md.js.map +1 -1
  176. package/dist/testing/fixtures/index.js +1 -1
  177. package/dist/testing/fixtures/migration-namespace-repo.d.ts +63 -0
  178. package/dist/testing/fixtures/migration-namespace-repo.d.ts.map +1 -0
  179. package/dist/testing/fixtures/migration-namespace-repo.js +164 -0
  180. package/dist/testing/fixtures/migration-namespace-repo.js.map +1 -0
  181. package/dist/testing/fixtures/stubborn-lead-process.d.ts.map +1 -1
  182. package/dist/testing/fixtures/stubborn-lead-process.js +1 -0
  183. package/dist/testing/fixtures/stubborn-lead-process.js.map +1 -1
  184. package/dist/types/index.js +1 -1
  185. package/dist/verify/no-own-delta-verdict.d.ts +16 -2
  186. package/dist/verify/no-own-delta-verdict.d.ts.map +1 -1
  187. package/dist/verify/no-own-delta-verdict.js +18 -2
  188. package/dist/verify/no-own-delta-verdict.js.map +1 -1
  189. package/package.json +2 -2
@@ -0,0 +1,50 @@
1
+ import { type MigrationInventoryResult } from '../migrations/migration-inventory.js';
2
+ import { type ReleaseReason } from '../migrations/migration-claim-lifecycle.js';
3
+ import { listLiveMigrationClaims, confirmMigrationClaims, releaseMigrationClaims } from '../queries/migration-claims.js';
4
+ import { recordUnclaimedMigrations, clearUnclaimedMigrations } from '../queries/focus-unclaimed-migration.js';
5
+ import type { DaemonConfig } from '../types/index.js';
6
+ /** One focus the pass considers. */
7
+ export interface ClaimPassFocus {
8
+ focusId: string;
9
+ focusName: string;
10
+ branchName: string | null;
11
+ /** Null while live; the reason when the focus has ended. */
12
+ endedBecause: ReleaseReason | null;
13
+ }
14
+ /** Everything the pass needs, injected so it can be driven without a daemon. */
15
+ export interface MigrationClaimPassDeps {
16
+ /** The focuses to consider, live and recently ended. */
17
+ listFocuses: (productId: string) => Promise<ClaimPassFocus[]>;
18
+ listClaims: typeof listLiveMigrationClaims;
19
+ confirm: typeof confirmMigrationClaims;
20
+ release: typeof releaseMigrationClaims;
21
+ recordUnclaimed: typeof recordUnclaimedMigrations;
22
+ clearUnclaimed: typeof clearUnclaimedMigrations;
23
+ /** The record already on the focus, so a named ordinal stays named. */
24
+ readUnclaimed: (focusId: string) => Promise<string | null>;
25
+ readInventory: (repoPath: string, ref: string) => MigrationInventoryResult;
26
+ /** The commit a ref points at, or null when it cannot be resolved. */
27
+ resolveTip: (repoPath: string, ref: string) => string | null;
28
+ now: () => string;
29
+ }
30
+ /** Real git, real queries, real clock. */
31
+ export declare function defaultMigrationClaimPassDeps(listFocuses: (productId: string) => Promise<ClaimPassFocus[]>): MigrationClaimPassDeps;
32
+ /** Reset the cache. Exported for tests, which must not inherit each other's ticks. */
33
+ export declare function resetMigrationClaimTipCache(): void;
34
+ /** What one pass did, for the caller's log and for tests. */
35
+ export interface MigrationClaimPassResult {
36
+ confirmed: number;
37
+ released: number;
38
+ recordedUnclaimed: number;
39
+ /** Focuses skipped because neither their branch nor integration had moved. */
40
+ skippedUnchanged: number;
41
+ /** Focuses whose branch could not be read: nothing was applied for them. */
42
+ unreadable: number;
43
+ }
44
+ /**
45
+ * Run the confirm / release / unclaimed-file passes for one product.
46
+ *
47
+ * Never throws.
48
+ */
49
+ export declare function runMigrationClaimPass(config: DaemonConfig, deps: MigrationClaimPassDeps): Promise<MigrationClaimPassResult>;
50
+ //# sourceMappingURL=migration-claim-pass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-claim-pass.d.ts","sourceRoot":"","sources":["../../src/focus/migration-claim-pass.ts"],"names":[],"mappings":"AA0CA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EAGzB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,oCAAoC;AACpC,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,4DAA4D;IAC5D,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC;CACpC;AAED,gFAAgF;AAChF,MAAM,WAAW,sBAAsB;IACrC,wDAAwD;IACxD,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9D,UAAU,EAAE,OAAO,uBAAuB,CAAC;IAC3C,OAAO,EAAE,OAAO,sBAAsB,CAAC;IACvC,OAAO,EAAE,OAAO,sBAAsB,CAAC;IACvC,eAAe,EAAE,OAAO,yBAAyB,CAAC;IAClD,cAAc,EAAE,OAAO,wBAAwB,CAAC;IAChD,uEAAuE;IACvE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3D,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,wBAAwB,CAAC;IAC3E,sEAAsE;IACtE,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7D,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,0CAA0C;AAC1C,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,GAC5D,sBAAsB,CAkBxB;AAWD,sFAAsF;AACtF,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED,6DAA6D;AAC7D,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;CACpB;AAkKD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,wBAAwB,CAAC,CAsCnC"}
@@ -0,0 +1,234 @@
1
+ // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/focus/migration-claim-pass.test.ts,
3
+ // packages/daemon/src/focus/migration-claim-poll-wiring.test.ts,
4
+ // packages/daemon/src/migrations/claim-production-wiring.test.ts
5
+ // PINNED-BY-END
6
+ /**
7
+ * The poll-loop's per-product claim-lifecycle pass: confirm, release, and name
8
+ * a migration file that no claim accounts for.
9
+ *
10
+ * WHY IT RUNS FROM THE POLL LOOP. Every event it reacts to is a change in the
11
+ * world rather than a call anyone makes: a file appearing on a branch, a focus
12
+ * completing, an arm clearing. There is no moment when someone would invoke
13
+ * this, so it is a sweep -- which means its cost on a QUIET tick is the number
14
+ * that matters, not its cost when something happened.
15
+ *
16
+ * AN IDLE TICK COSTS ONE rev-parse PER BRANCH. The pass caches by branch tip:
17
+ * if no tip moved -- integration's included -- nothing on any branch can have
18
+ * changed, so nothing is re-read. Without that, every tick would walk every
19
+ * focus branch's migration tree on every product the daemon manages, forever,
20
+ * to learn nothing. The FOCUS STATE (ended or live) is read each tick regardless,
21
+ * because a focus can end without its branch moving at all, and that is exactly
22
+ * the case release exists for.
23
+ *
24
+ * A FAILED READ CHANGES NO CLAIM'S STATE. Not a confirm, not a release, not a
25
+ * record, not a clear. The destructive actions here -- releasing a number,
26
+ * clearing a record -- are precisely the ones that must not fire on an absence
27
+ * of evidence, and a branch that could not be read is an absence of evidence.
28
+ * The decision function (`decideClaimLifecycle`) reports `readable: false` and
29
+ * this pass applies nothing.
30
+ *
31
+ * ERROR CONTAINMENT. The poll tick runs its phases in sequence and awaits each,
32
+ * so a throw here would take the tick and every phase after it down. Nothing
33
+ * downstream is gated on this pass -- a number is granted correctly whether or
34
+ * not it ever runs -- so its correct failure mode is to log and let the tick
35
+ * carry on.
36
+ *
37
+ * @module migration-claim-pass
38
+ */
39
+ import { createLogger } from '../shell/log.js';
40
+ import { runGitSync } from '../git/types.js';
41
+ import { readMigrationInventory, defaultMigrationInventoryDeps, } from '../migrations/migration-inventory.js';
42
+ import { decideClaimLifecycle, } from '../migrations/migration-claim-lifecycle.js';
43
+ import { listLiveMigrationClaims, confirmMigrationClaims, releaseMigrationClaims, } from '../queries/migration-claims.js';
44
+ import { recordUnclaimedMigrations, clearUnclaimedMigrations, readUnclaimedMigrationRecord, parseUnclaimedEntries, } from '../queries/focus-unclaimed-migration.js';
45
+ const log = createLogger({ module: 'migration-claim-pass' });
46
+ /** Real git, real queries, real clock. */
47
+ export function defaultMigrationClaimPassDeps(listFocuses) {
48
+ const inventoryDeps = defaultMigrationInventoryDeps();
49
+ return {
50
+ listFocuses,
51
+ listClaims: listLiveMigrationClaims,
52
+ confirm: confirmMigrationClaims,
53
+ release: releaseMigrationClaims,
54
+ recordUnclaimed: recordUnclaimedMigrations,
55
+ clearUnclaimed: clearUnclaimedMigrations,
56
+ readUnclaimed: (focusId) => readUnclaimedMigrationRecord(focusId),
57
+ readInventory: (repoPath, ref) => readMigrationInventory(repoPath, ref, inventoryDeps),
58
+ resolveTip: (repoPath, ref) => {
59
+ const result = runGitSync(['rev-parse', '--verify', '--quiet', `${ref}^{commit}`], repoPath);
60
+ const tip = result.success ? result.output.trim() : '';
61
+ return tip === '' ? null : tip;
62
+ },
63
+ now: () => new Date().toISOString(),
64
+ };
65
+ }
66
+ /**
67
+ * The per-(product, focus) tip cache.
68
+ *
69
+ * Module-scoped in the same way the poll loop's other caches are: the pass is
70
+ * called once per product per tick from one process, and the cache's only job
71
+ * is to make a quiet tick cheap. A restart simply re-reads once.
72
+ */
73
+ const tipCache = new Map();
74
+ /** Reset the cache. Exported for tests, which must not inherit each other's ticks. */
75
+ export function resetMigrationClaimTipCache() {
76
+ tipCache.clear();
77
+ }
78
+ const EMPTY = {
79
+ confirmed: 0, released: 0, recordedUnclaimed: 0, skippedUnchanged: 0, unreadable: 0,
80
+ };
81
+ /**
82
+ * What must be re-read for this focus, condensed to one string.
83
+ *
84
+ * THE TIPS ARE NOT ENOUGH, and that gap kept a record alive forever. Two of the
85
+ * three things this pass reacts to move without any tip moving:
86
+ *
87
+ * - A FOCUS ENDS. Release exists for exactly that, and a focus can complete,
88
+ * be cancelled or be un-armed without its branch gaining a commit.
89
+ * - A CLAIM IS MADE OR CONFIRMED. The team claiming the number of a file it
90
+ * already wrote is precisely the resolution the record waits for -- and it
91
+ * touches no branch, so a tips-only signature skipped the very tick that
92
+ * would have cleared the record, and went on skipping it.
93
+ *
94
+ * The claims are already in hand (one read per product per tick), so folding
95
+ * them in is free: their identity and confirmation state, which is everything
96
+ * this pass decides from.
97
+ */
98
+ function passSignature(branchTip, integrationTip, focus, claims) {
99
+ const claimState = claims
100
+ .map((c) => `${c.migrationClaimId}@${c.ordinal}@${c.confirmedTag ?? (c.confirmedAt ? '~' : '')}`)
101
+ .sort()
102
+ .join(',');
103
+ return `${branchTip ?? 'absent'}:${integrationTip}:${focus.endedBecause ?? 'live'}:${claimState}`;
104
+ }
105
+ /**
106
+ * Whether an inventory read FAILED, as opposed to answering.
107
+ *
108
+ * `undeclared` and `refAbsent` are answers: the product numbers nothing, or the
109
+ * ref does not exist. `declarationUnreadable` and `refUnreadable` are the read
110
+ * not happening -- a transient git or object-store failure, which says nothing
111
+ * about what the ref holds.
112
+ */
113
+ function inventoryReadFailed(result) {
114
+ return result === null
115
+ || result.kind === 'declarationUnreadable'
116
+ || result.kind === 'refUnreadable';
117
+ }
118
+ /**
119
+ * A focus with NO BRANCH never wrote a file on one -- positive evidence, not a
120
+ * gap. Skipping it (as this pass used to) meant a claim on such a focus was
121
+ * never released and its number leaked for good. It has nothing to confirm and
122
+ * no branch file to name, so only the release question is asked, and only once
123
+ * the focus has ended.
124
+ */
125
+ async function runBranchlessFocus(ctx, focus, claims) {
126
+ if (focus.endedBecause === null || claims.length === 0)
127
+ return;
128
+ ctx.integration ??= ctx.deps.readInventory(ctx.repoPath, ctx.integrationBranch);
129
+ const branchless = decideClaimLifecycle(claims, { kind: 'noBranch' }, ctx.integration, { focusId: focus.focusId, endedBecause: focus.endedBecause });
130
+ await ctx.deps.release(ctx.productId, branchless.release);
131
+ ctx.result.released += branchless.release.length;
132
+ }
133
+ /** One focus's turn: read its branch, decide, apply. */
134
+ async function runFocusTurn(ctx, focus, claims) {
135
+ const branchName = focus.branchName;
136
+ if (!branchName)
137
+ return runBranchlessFocus(ctx, focus, claims);
138
+ const branchTip = ctx.deps.resolveTip(ctx.repoPath, branchName);
139
+ const cacheKey = `${ctx.productId}:${focus.focusId}`;
140
+ const signature = passSignature(branchTip, ctx.integrationTip, focus, claims);
141
+ if (tipCache.get(cacheKey) === signature) {
142
+ ctx.result.skippedUnchanged += 1;
143
+ return;
144
+ }
145
+ ctx.integration ??= ctx.deps.readInventory(ctx.repoPath, ctx.integrationBranch);
146
+ const branch = ctx.deps.readInventory(ctx.repoPath, branchName);
147
+ // What is ALREADY named. An ordinal on record stays named until the team
148
+ // RESOLVES it -- see the unclaimed walk in decideClaimLifecycle.
149
+ const recorded = parseUnclaimedEntries(await ctx.deps.readUnclaimed(focus.focusId));
150
+ const decision = decideClaimLifecycle(claims, branch, ctx.integration, { focusId: focus.focusId, endedBecause: focus.endedBecause }, recorded);
151
+ if (!decision.readable) {
152
+ // Proves nothing. Leave every claim and every record exactly as they
153
+ // stand, and do NOT cache -- the next tick must ask again.
154
+ ctx.result.unreadable += 1;
155
+ return;
156
+ }
157
+ await ctx.deps.confirm(ctx.productId, decision.confirm);
158
+ await ctx.deps.release(ctx.productId, decision.release);
159
+ ctx.result.confirmed += decision.confirm.length;
160
+ ctx.result.released += decision.release.length;
161
+ if (decision.unclaimed.length > 0) {
162
+ await ctx.deps.recordUnclaimed({
163
+ focusId: focus.focusId,
164
+ focusName: focus.focusName,
165
+ branchName,
166
+ files: decision.unclaimed,
167
+ detectedAt: ctx.deps.now(),
168
+ });
169
+ ctx.result.recordedUnclaimed += decision.unclaimed.length;
170
+ }
171
+ else if (decision.clearUnclaimed) {
172
+ // RESOLVED, positively: every named ordinal is covered by a claim or gone
173
+ // from the branch AND from integration. Never merely "the detection went
174
+ // quiet" -- a branch that merged, or was pruned after merging, leaves its
175
+ // unclaimed file on integration, and clearing there would report a success
176
+ // nobody earned.
177
+ await ctx.deps.clearUnclaimed(focus.focusId);
178
+ }
179
+ // CACHE ONLY A COMPLETE READ.
180
+ //
181
+ // `decision.readable` speaks for the BRANCH alone. Integration is the other
182
+ // half of every question this pass asks -- what a claim's file inherited, and
183
+ // whether a recorded ordinal is really gone -- and when its inventory could
184
+ // not be read the decision is deliberately conservative: claims are held and
185
+ // recorded ordinals are carried forward verbatim rather than dropped.
186
+ //
187
+ // Caching that is the trap, because the signature is built from TIPS. A
188
+ // transient git/object failure moves no tip, so when the read recovers on the
189
+ // next tick the signature is identical, the focus is skipped, and it is
190
+ // skipped every tick after that. Ended claims stay unreleased and a resolved
191
+ // unclaimed record stays open -- for good, on a failure that lasted seconds.
192
+ if (!inventoryReadFailed(ctx.integration))
193
+ tipCache.set(cacheKey, signature);
194
+ }
195
+ /**
196
+ * Run the confirm / release / unclaimed-file passes for one product.
197
+ *
198
+ * Never throws.
199
+ */
200
+ export async function runMigrationClaimPass(config, deps) {
201
+ const result = { ...EMPTY };
202
+ try {
203
+ const { productId, repoPath, integrationBranch } = config;
204
+ const focuses = await deps.listFocuses(productId);
205
+ if (focuses.length === 0)
206
+ return result;
207
+ // Integration's tip is part of every focus's cache key: a sibling merging
208
+ // changes what "inherited from integration" means for every other branch.
209
+ const ctx = {
210
+ productId,
211
+ repoPath,
212
+ integrationBranch,
213
+ integrationTip: deps.resolveTip(repoPath, integrationBranch) ?? 'unresolved',
214
+ deps,
215
+ result,
216
+ integration: null,
217
+ };
218
+ const claimsByFocus = await deps.listClaims(productId);
219
+ for (const focus of focuses) {
220
+ await runFocusTurn(ctx, focus, claimsByFocus.get(focus.focusId) ?? []);
221
+ }
222
+ if (result.confirmed > 0 || result.released > 0 || result.recordedUnclaimed > 0) {
223
+ log.info(`[migration-claims] product ${config.productId}: `
224
+ + `${result.confirmed} confirmed, ${result.released} released, `
225
+ + `${result.recordedUnclaimed} unclaimed file(s) recorded`);
226
+ }
227
+ }
228
+ catch (err) {
229
+ log.warn(`[migration-claims] pass failed for product ${config.productId} `
230
+ + `(${String(err?.message ?? err)}) -- every claim and record left untouched`);
231
+ }
232
+ return result;
233
+ }
234
+ //# sourceMappingURL=migration-claim-pass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-claim-pass.js","sourceRoot":"","sources":["../../src/focus/migration-claim-pass.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pending-spawn-pass-deps.d.ts","sourceRoot":"","sources":["../../src/focus/pending-spawn-pass-deps.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAoB,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEvG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAC1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,gEAAgE;IAChE,2BAA2B,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC;IACjG,sEAAsE;IACtE,cAAc,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CACpB,cAAc,EAAE,MAAM,KACnB,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtG,wHAAwH;IACxH,kBAAkB,CAAC,EAAE,6BAA6B,CAAC;CACpD;AAED,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,EAAE,kBAInC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,gBAAgB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5F,0FAA0F;IAC1F,cAAc,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,2EAA2E;IAC3E,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,mGAAmG;IACnG,cAAc,CAAC,EAAE,8BAA8B,CAAC;IAChD,kFAAkF;IAClF,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,mGAAmG;IACnG,kBAAkB,CAAC,EAAE,6BAA6B,CAAC;IACnD,wFAAwF;IACxF,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,wFAAwF;IACxF,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAC5C,uFAAuF;IACvF,eAAe,CAAC,EAAE,wBAAwB,CAAC;CAC5C;AAED,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,EAAE,oBAGrC,CAAC"}
1
+ {"version":3,"file":"pending-spawn-pass-deps.d.ts","sourceRoot":"","sources":["../../src/focus/pending-spawn-pass-deps.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAoB,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEvG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAC1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,gEAAgE;IAChE,2BAA2B,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC;IACjG,sEAAsE;IACtE,cAAc,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE;;;OAGG;IACH,mBAAmB,CAAC,EAAE,CACpB,cAAc,EAAE,MAAM,KACnB,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtG,wHAAwH;IACxH,kBAAkB,CAAC,EAAE,6BAA6B,CAAC;CACpD;AAED,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,EAAE,kBAInC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,gBAAgB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5F,0FAA0F;IAC1F,cAAc,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,2EAA2E;IAC3E,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,mGAAmG;IACnG,cAAc,CAAC,EAAE,8BAA8B,CAAC;IAChD,kFAAkF;IAClF,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,mGAAmG;IACnG,kBAAkB,CAAC,EAAE,6BAA6B,CAAC;IACnD,wFAAwF;IACxF,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,wFAAwF;IACxF,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAC5C,uFAAuF;IACvF,eAAe,CAAC,EAAE,wBAAwB,CAAC;CAC5C;AAED,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,EAAE,oBAGrC,CAAC"}
@@ -1,7 +1,8 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
2
  // Pinned by: packages/daemon/src/completion/review-window-idle-coding-lead-regression.test.ts,
3
3
  // packages/daemon/src/focus/awaiting-slot.test.ts,
4
- // packages/daemon/src/focus/pending-review-approved-head.test.ts
4
+ // packages/daemon/src/focus/pending-review-approved-head.test.ts,
5
+ // packages/daemon/src/focus/unclaimed-notice-coding-precedence.test.ts
5
6
  // PINNED-BY-END
6
7
  /**
7
8
  * Injectable seam for the pending-spawn pass (focus/listener-spawn.ts
@@ -1 +1 @@
1
- {"version":3,"file":"pending-spawn-pass-deps.js","sourceRoot":"","sources":["../../src/focus/pending-spawn-pass-deps.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+FAA+F;AAC/F,qDAAqD;AACrD,mEAAmE;AACnE,gBAAgB;AAEhB;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAuB,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMrD,OAAO,EAAE,2BAA2B,EAA0B,MAAM,2BAA2B,CAAC;AA4BhG,sDAAsD;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAuB;IACvD,eAAe;IACf,2BAA2B,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,2BAA2B,CAAC,OAAO,CAAC;IAC9E,cAAc;CACf,CAAC;AAuBF,sEAAsE;AACtE,MAAM,CAAC,MAAM,uBAAuB,GAAyB;IAC3D,gBAAgB;IAChB,cAAc;CACf,CAAC"}
1
+ {"version":3,"file":"pending-spawn-pass-deps.js","sourceRoot":"","sources":["../../src/focus/pending-spawn-pass-deps.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,+FAA+F;AAC/F,qDAAqD;AACrD,oEAAoE;AACpE,yEAAyE;AACzE,gBAAgB;AAEhB;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAuB,MAAM,+BAA+B,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMrD,OAAO,EAAE,2BAA2B,EAA0B,MAAM,2BAA2B,CAAC;AA4BhG,sDAAsD;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAuB;IACvD,eAAe;IACf,2BAA2B,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,2BAA2B,CAAC,OAAO,CAAC;IAC9E,cAAc;CACf,CAAC;AAuBF,sEAAsE;AACtE,MAAM,CAAC,MAAM,uBAAuB,GAAyB;IAC3D,gBAAgB;IAChB,cAAc;CACf,CAAC"}
@@ -84,6 +84,24 @@ export interface TeamActionableWorkInput {
84
84
  * that is not the completion team-exit decision.
85
85
  */
86
86
  mergeResolutionOutstanding?: boolean;
87
+ /**
88
+ * Whether this focus's branch holds a migration file with no claim behind it
89
+ * that the team has NOT YET BEEN SHOWN (`focus_debug_artifacts` kind
90
+ * `unclaimed_migration`, with no `Named to the team at:` line). Like an
91
+ * outstanding merge resolution, it is actionable work: the number that file
92
+ * carries is one no claim knows about, so the next team to claim can be
93
+ * granted it, and the team that wrote it is the only one that can claim or
94
+ * remove it. Torn down first, it lands on integration with nobody told.
95
+ *
96
+ * ONE TURN, NOT UNTIL COMPLIANCE. The marker is written the moment the record
97
+ * is composed into a spawn prompt, so this is true for exactly one coding
98
+ * turn per newly-named ordinal. Holding until the team complied would be a
99
+ * wedge: the record clears only on a claim or a removal, neither of which the
100
+ * daemon can perform.
101
+ *
102
+ * Absent (falsy) for every caller that does not read the record.
103
+ */
104
+ unclaimedMigrationUnnamed?: boolean;
87
105
  }
88
106
  /**
89
107
  * The one predicate. An outstanding merge-conflict resolution request the daemon
@@ -116,6 +134,9 @@ export declare function resolveTeamActionableWork(args: {
116
134
  /** See TeamActionableWorkInput.mergeResolutionOutstanding. Optional; defaults
117
135
  * to false so callers that do not track it are unaffected. */
118
136
  mergeResolutionOutstanding?: boolean;
137
+ /** See TeamActionableWorkInput.unclaimedMigrationUnnamed. Optional; absent
138
+ * for every caller that does not read the record. */
139
+ unclaimedMigrationUnnamed?: boolean;
119
140
  }): {
120
141
  underVerifyHold: boolean;
121
142
  teamHasActionableWork: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"team-actionable-work.d.ts","sourceRoot":"","sources":["../../src/focus/team-actionable-work.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team-actionable-work.d.ts","sourceRoot":"","sources":["../../src/focus/team-actionable-work.ts"],"names":[],"mappings":"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"}
@@ -105,6 +105,8 @@ export function hasTeamWorkOutsideVerify(input) {
105
105
  export function focusHasTeamActionableWork(input) {
106
106
  if (input.mergeResolutionOutstanding)
107
107
  return true;
108
+ if (input.unclaimedMigrationUnnamed)
109
+ return true;
108
110
  if (input.underVerifyHold)
109
111
  return input.hasUnheldActionableWork && input.workOutsideVerifyHold === true;
110
112
  return input.hasUnheldActionableWork;
@@ -132,6 +134,7 @@ export function resolveTeamActionableWork(args) {
132
134
  underVerifyHold,
133
135
  workOutsideVerifyHold,
134
136
  mergeResolutionOutstanding: args.mergeResolutionOutstanding,
137
+ unclaimedMigrationUnnamed: args.unclaimedMigrationUnnamed,
135
138
  }),
136
139
  };
137
140
  }
@@ -1 +1 @@
1
- {"version":3,"file":"team-actionable-work.js","sourceRoot":"","sources":["../../src/focus/team-actionable-work.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team-actionable-work.js","sourceRoot":"","sources":["../../src/focus/team-actionable-work.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/git/types.ts"],"names":[],"mappings":"AAaA,OAAO,EAEL,sBAAsB,EACtB,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,iBAAiB,GAC1B,SAAS,CAGX;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEjE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/git/types.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,sBAAsB,EACtB,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGtE,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,iBAAiB,GAC1B,SAAS,CAGX;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEjE"}
package/dist/git/types.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
2
- // Pinned by: none -- no test imports this module directly (baselined; see lint:pinned-by)
2
+ // Pinned by: packages/daemon/src/migrations/concurrent-claim-regression.test.ts,
3
+ // packages/daemon/src/migrations/migration-held-set.test.ts
3
4
  // PINNED-BY-END
4
5
  /**
5
6
  * Shared types and utilities for the git subsystem.
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/git/types.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,0FAA0F;AAC1F,gBAAgB;AAEhB;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,MAAM,EACN,sBAAsB,GAEvB,MAAM,qBAAqB,CAAC;AAG7B,mCAAmC;AACnC,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAoClC;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,IAAc,EACd,GAAW,EACX,OAA2B;IAE3B,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,sBAAsB,CAAC;IAC/D,OAAO,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/git/types.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,iFAAiF;AACjF,8DAA8D;AAC9D,gBAAgB;AAEhB;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,MAAM,EACN,sBAAsB,GAEvB,MAAM,qBAAqB,CAAC;AAG7B,mCAAmC;AACnC,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAoClC;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,IAAc,EACd,GAAW,EACX,OAA2B;IAE3B,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,sBAAsB,CAAC;IAC/D,OAAO,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../src/loops/llm-client.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAU5D,2EAA2E;AAC3E,UAAU,cAAc;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,KAAK,YAAY,CAAC;IACzE;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACtF;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;CACpC;AA8CD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAchF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GAAG,kBAAkB,CA4BrB;AAqCD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,MAAM,GAAG,IAAW,EAC7B,KAAK,GAAE,MAAM,GAAG,IAAW,EAC3B,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmCxB"}
1
+ {"version":3,"file":"llm-client.d.ts","sourceRoot":"","sources":["../../src/loops/llm-client.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAU5D,2EAA2E;AAC3E,UAAU,cAAc;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,KAAK,YAAY,CAAC;IACzE;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACtF;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;CACpC;AAkDD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAoBhF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GAAG,kBAAkB,CA4BrB;AAqCD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,MAAM,GAAG,IAAW,EAC7B,KAAK,GAAE,MAAM,GAAG,IAAW,EAC3B,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmCxB"}
@@ -43,6 +43,10 @@ const MODEL_PRICING = {
43
43
  // Opus 5 / 4.8 / 4.7 / 4.6 all price at 5/25. The prior 15/75 row was Opus 3
44
44
  // era pricing and over-reported every Opus call by 3x.
45
45
  opus: { input: 5, output: 25, cacheWrite: 6.25, cacheRead: 0.50 },
46
+ // Opus 5.5 is the one Opus that does NOT price at 5/25: it is cheaper (4/20,
47
+ // cache read 0.20). It needs its own row because the family lookup below is a
48
+ // substring match, and 'claude-opus-5-5' contains 'opus'.
49
+ 'opus-5-5': { input: 4, output: 20, cacheWrite: 5.00, cacheRead: 0.20 },
46
50
  haiku: { input: 1, output: 5, cacheWrite: 1.25, cacheRead: 0.10 },
47
51
  };
48
52
  /**
@@ -50,7 +54,13 @@ const MODEL_PRICING = {
50
54
  * Returns 0 when the model family is unrecognized.
51
55
  */
52
56
  export function estimateLoopCostUsd(model, usage) {
53
- const family = Object.keys(MODEL_PRICING).find(f => model.includes(f));
57
+ // Longest match wins, so a version-specific row ('opus-5-5') beats the family
58
+ // row ('opus') it is a superstring of, whatever order the table declares them
59
+ // in. A first-match-in-key-order lookup would silently price Opus 5.5 at the
60
+ // generic Opus rate depending on where its row happened to sit.
61
+ const family = Object.keys(MODEL_PRICING)
62
+ .filter(f => model.includes(f))
63
+ .sort((a, b) => b.length - a.length)[0];
54
64
  if (!family)
55
65
  return 0;
56
66
  const p = MODEL_PRICING[family];
@@ -1 +1 @@
1
- {"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../../src/loops/llm-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../../src/loops/llm-client.ts"],"names":[],"mappings":"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"}