@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.
- package/build-info.json +6 -3
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +2 -0
- package/dist/backends/index.js.map +1 -1
- package/dist/completion/completion-fact-readers.d.ts +35 -0
- package/dist/completion/completion-fact-readers.d.ts.map +1 -0
- package/dist/completion/completion-fact-readers.js +70 -0
- package/dist/completion/completion-fact-readers.js.map +1 -0
- package/dist/completion/event-dep-defaults.d.ts +27 -0
- package/dist/completion/event-dep-defaults.d.ts.map +1 -0
- package/dist/completion/event-dep-defaults.js +30 -0
- package/dist/completion/event-dep-defaults.js.map +1 -0
- package/dist/completion/event-phases.d.ts.map +1 -1
- package/dist/completion/event-phases.js +5 -13
- package/dist/completion/event-phases.js.map +1 -1
- package/dist/completion/event.d.ts +32 -0
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +31 -25
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/session-hold.d.ts +13 -1
- package/dist/completion/session-hold.d.ts.map +1 -1
- package/dist/completion/session-hold.js +18 -0
- package/dist/completion/session-hold.js.map +1 -1
- package/dist/completion/team-phase.d.ts.map +1 -1
- package/dist/completion/team-phase.js +1 -0
- package/dist/completion/team-phase.js.map +1 -1
- package/dist/completion/unclaimed-migration-notice-phase.d.ts +97 -0
- package/dist/completion/unclaimed-migration-notice-phase.d.ts.map +1 -0
- package/dist/completion/unclaimed-migration-notice-phase.js +270 -0
- package/dist/completion/unclaimed-migration-notice-phase.js.map +1 -0
- package/dist/directive/directive-executor.d.ts.map +1 -1
- package/dist/directive/directive-executor.js +1 -20
- package/dist/directive/directive-executor.js.map +1 -1
- package/dist/focus/focus-executor.d.ts +1 -0
- package/dist/focus/focus-executor.d.ts.map +1 -1
- package/dist/focus/focus-executor.js +18 -17
- package/dist/focus/focus-executor.js.map +1 -1
- package/dist/focus/focus-team-state.js +1 -1
- package/dist/focus/listener-spawn.d.ts.map +1 -1
- package/dist/focus/listener-spawn.js +5 -20
- package/dist/focus/listener-spawn.js.map +1 -1
- package/dist/focus/listener-state.d.ts.map +1 -1
- package/dist/focus/listener-state.js +1 -0
- package/dist/focus/listener-state.js.map +1 -1
- package/dist/focus/listener.d.ts +1 -0
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +9 -0
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/migration-claim-pass.d.ts +50 -0
- package/dist/focus/migration-claim-pass.d.ts.map +1 -0
- package/dist/focus/migration-claim-pass.js +234 -0
- package/dist/focus/migration-claim-pass.js.map +1 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.js +2 -1
- package/dist/focus/pending-spawn-pass-deps.js.map +1 -1
- package/dist/focus/team-actionable-work.d.ts +21 -0
- package/dist/focus/team-actionable-work.d.ts.map +1 -1
- package/dist/focus/team-actionable-work.js +3 -0
- package/dist/focus/team-actionable-work.js.map +1 -1
- package/dist/git/types.d.ts.map +1 -1
- package/dist/git/types.js +2 -1
- package/dist/git/types.js.map +1 -1
- package/dist/loops/llm-client.d.ts.map +1 -1
- package/dist/loops/llm-client.js +11 -1
- package/dist/loops/llm-client.js.map +1 -1
- package/dist/migrations/migration-claim-lifecycle.d.ts +166 -0
- package/dist/migrations/migration-claim-lifecycle.d.ts.map +1 -0
- package/dist/migrations/migration-claim-lifecycle.js +198 -0
- package/dist/migrations/migration-claim-lifecycle.js.map +1 -0
- package/dist/migrations/migration-held-set.d.ts +171 -0
- package/dist/migrations/migration-held-set.d.ts.map +1 -0
- package/dist/migrations/migration-held-set.js +295 -0
- package/dist/migrations/migration-held-set.js.map +1 -0
- package/dist/migrations/migration-inventory.d.ts +187 -0
- package/dist/migrations/migration-inventory.d.ts.map +1 -0
- package/dist/migrations/migration-inventory.js +253 -0
- package/dist/migrations/migration-inventory.js.map +1 -0
- package/dist/migrations/migration-manifest.d.ts +114 -0
- package/dist/migrations/migration-manifest.d.ts.map +1 -0
- package/dist/migrations/migration-manifest.js +295 -0
- package/dist/migrations/migration-manifest.js.map +1 -0
- package/dist/prompt/team-prompt-base.js +1 -1
- package/dist/prompt-sections/migration-numbering-section.d.ts +58 -0
- package/dist/prompt-sections/migration-numbering-section.d.ts.map +1 -0
- package/dist/prompt-sections/migration-numbering-section.js +70 -0
- package/dist/prompt-sections/migration-numbering-section.js.map +1 -0
- package/dist/prompt-sections/migration-numbering-state.d.ts +30 -0
- package/dist/prompt-sections/migration-numbering-state.d.ts.map +1 -0
- package/dist/prompt-sections/migration-numbering-state.js +24 -0
- package/dist/prompt-sections/migration-numbering-state.js.map +1 -0
- package/dist/prompt-sections/unclaimed-migration-section.d.ts +38 -0
- package/dist/prompt-sections/unclaimed-migration-section.d.ts.map +1 -0
- package/dist/prompt-sections/unclaimed-migration-section.js +57 -0
- package/dist/prompt-sections/unclaimed-migration-section.js.map +1 -0
- package/dist/queries/claim-pass-focuses.d.ts +19 -0
- package/dist/queries/claim-pass-focuses.d.ts.map +1 -0
- package/dist/queries/claim-pass-focuses.js +72 -0
- package/dist/queries/claim-pass-focuses.js.map +1 -0
- package/dist/queries/daemon-connection.d.ts.map +1 -1
- package/dist/queries/daemon-connection.js +1 -0
- package/dist/queries/daemon-connection.js.map +1 -1
- package/dist/queries/focus-discovery.d.ts +25 -2
- package/dist/queries/focus-discovery.d.ts.map +1 -1
- package/dist/queries/focus-discovery.js +16 -9
- package/dist/queries/focus-discovery.js.map +1 -1
- package/dist/queries/focus-unclaimed-migration.d.ts +146 -0
- package/dist/queries/focus-unclaimed-migration.d.ts.map +1 -0
- package/dist/queries/focus-unclaimed-migration.js +266 -0
- package/dist/queries/focus-unclaimed-migration.js.map +1 -0
- package/dist/queries/live-focus-branches.d.ts +32 -0
- package/dist/queries/live-focus-branches.d.ts.map +1 -0
- package/dist/queries/live-focus-branches.js +66 -0
- package/dist/queries/live-focus-branches.js.map +1 -0
- package/dist/queries/migration-claims.d.ts +25 -0
- package/dist/queries/migration-claims.d.ts.map +1 -0
- package/dist/queries/migration-claims.js +79 -0
- package/dist/queries/migration-claims.js.map +1 -0
- package/dist/queries/schemas.d.ts +2 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +6 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/session/session-lineage.d.ts.map +1 -1
- package/dist/session/session-lineage.js +3 -0
- package/dist/session/session-lineage.js.map +1 -1
- package/dist/shell/heartbeat-metadata.d.ts +48 -2
- package/dist/shell/heartbeat-metadata.d.ts.map +1 -1
- package/dist/shell/heartbeat-metadata.js +80 -3
- package/dist/shell/heartbeat-metadata.js.map +1 -1
- package/dist/shell/heartbeat.d.ts +13 -0
- package/dist/shell/heartbeat.d.ts.map +1 -1
- package/dist/shell/heartbeat.js +31 -10
- package/dist/shell/heartbeat.js.map +1 -1
- package/dist/shell/mcp-resolution.js +1 -1
- package/dist/shell/mcp-resolution.js.map +1 -1
- package/dist/shell/migration-held-set-publish.d.ts +170 -0
- package/dist/shell/migration-held-set-publish.d.ts.map +1 -0
- package/dist/shell/migration-held-set-publish.js +172 -0
- package/dist/shell/migration-held-set-publish.js.map +1 -0
- package/dist/shell/worker-pidfile.d.ts.map +1 -1
- package/dist/shell/worker-pidfile.js +1 -0
- package/dist/shell/worker-pidfile.js.map +1 -1
- package/dist/spawn/helpers.d.ts.map +1 -1
- package/dist/spawn/helpers.js +1 -0
- package/dist/spawn/helpers.js.map +1 -1
- package/dist/spawn/lead-launch.d.ts.map +1 -1
- package/dist/spawn/lead-launch.js +1 -0
- package/dist/spawn/lead-launch.js.map +1 -1
- package/dist/spawn/lead-process-ownership.d.ts.map +1 -1
- package/dist/spawn/lead-process-ownership.js +1 -0
- package/dist/spawn/lead-process-ownership.js.map +1 -1
- package/dist/spawn/process-group-kill.d.ts.map +1 -1
- package/dist/spawn/process-group-kill.js +1 -0
- package/dist/spawn/process-group-kill.js.map +1 -1
- package/dist/spawn/process-spawn.d.ts +18 -1
- package/dist/spawn/process-spawn.d.ts.map +1 -1
- package/dist/spawn/process-spawn.js +11 -6
- package/dist/spawn/process-spawn.js.map +1 -1
- package/dist/spawn/prompt-assembly.d.ts +115 -18
- package/dist/spawn/prompt-assembly.d.ts.map +1 -1
- package/dist/spawn/prompt-assembly.js +121 -2
- package/dist/spawn/prompt-assembly.js.map +1 -1
- package/dist/spawn/spawn-and-acknowledge.d.ts +61 -0
- package/dist/spawn/spawn-and-acknowledge.d.ts.map +1 -0
- package/dist/spawn/spawn-and-acknowledge.js +117 -0
- package/dist/spawn/spawn-and-acknowledge.js.map +1 -0
- package/dist/spawn/spawn-cooldown.js +1 -1
- package/dist/spawn/spawn-decision.d.ts +10 -10
- package/dist/spawn/spawn-decision.d.ts.map +1 -1
- package/dist/spawn/spawn-decision.js +33 -5
- package/dist/spawn/spawn-decision.js.map +1 -1
- package/dist/templates/claude-md.d.ts +1 -1
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +24 -0
- package/dist/templates/claude-md.js.map +1 -1
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/testing/fixtures/migration-namespace-repo.d.ts +63 -0
- package/dist/testing/fixtures/migration-namespace-repo.d.ts.map +1 -0
- package/dist/testing/fixtures/migration-namespace-repo.js +164 -0
- package/dist/testing/fixtures/migration-namespace-repo.js.map +1 -0
- package/dist/testing/fixtures/stubborn-lead-process.d.ts.map +1 -1
- package/dist/testing/fixtures/stubborn-lead-process.js +1 -0
- package/dist/testing/fixtures/stubborn-lead-process.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/verify/no-own-delta-verdict.d.ts +16 -2
- package/dist/verify/no-own-delta-verdict.d.ts.map +1 -1
- package/dist/verify/no-own-delta-verdict.js +18 -2
- package/dist/verify/no-own-delta-verdict.js.map +1 -1
- 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":"AAAA,8FAA8F;AAC9F,qEAAqE;AACrE,mEAAmE;AACnE,mEAAmE;AACnE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,6BAA6B,GAE9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,oBAAoB,GAGrB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,yCAAyC,CAAC;AAGjD,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;AA4B7D,0CAA0C;AAC1C,MAAM,UAAU,6BAA6B,CAC3C,WAA6D;IAE7D,MAAM,aAAa,GAAG,6BAA6B,EAAE,CAAC;IACtD,OAAO;QACL,WAAW;QACX,UAAU,EAAE,uBAAuB;QACnC,OAAO,EAAE,sBAAsB;QAC/B,OAAO,EAAE,sBAAsB;QAC/B,eAAe,EAAE,yBAAyB;QAC1C,cAAc,EAAE,wBAAwB;QACxC,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,4BAA4B,CAAC,OAAO,CAAC;QACjE,aAAa,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC;QACtF,UAAU,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,GAAG,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC7F,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QACjC,CAAC;QACD,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE3C,sFAAsF;AACtF,MAAM,UAAU,2BAA2B;IACzC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC;AAaD,MAAM,KAAK,GAA6B;IACtC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;CACpF,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,aAAa,CACpB,SAAwB,EACxB,cAAsB,EACtB,KAAqB,EACrB,MAAiC;IAEjC,MAAM,UAAU,GAAG,MAAM;SACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;SAChG,IAAI,EAAE;SACN,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,GAAG,SAAS,IAAI,QAAQ,IAAI,cAAc,IAAI,KAAK,CAAC,YAAY,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;AACpG,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,MAAuC;IAClE,OAAO,MAAM,KAAK,IAAI;WACjB,MAAM,CAAC,IAAI,KAAK,uBAAuB;WACvC,MAAM,CAAC,IAAI,KAAK,eAAe,CAAC;AACvC,CAAC;AAcD;;;;;;GAMG;AACH,KAAK,UAAU,kBAAkB,CAC/B,GAAqB,EACrB,KAAqB,EACrB,MAAiC;IAEjC,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/D,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAChF,MAAM,UAAU,GAAG,oBAAoB,CACrC,MAAM,EACN,EAAE,IAAI,EAAE,UAAU,EAAE,EACpB,GAAG,CAAC,WAAW,EACf,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAC7D,CAAC;IACF,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC1D,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;AACnD,CAAC;AAED,wDAAwD;AACxD,KAAK,UAAU,YAAY,CACzB,GAAqB,EACrB,KAAqB,EACrB,MAAiC;IAEjC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,IAAI,CAAC,UAAU;QAAE,OAAO,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9E,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;QACzC,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChE,yEAAyE;IACzE,iEAAiE;IACjE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,oBAAoB,CACnC,MAAM,EACN,MAAM,EACN,GAAG,CAAC,WAAW,EACf,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,EAC5D,QAAQ,CACT,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvB,qEAAqE;QACrE,2DAA2D;QAC3D,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxD,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;IAChD,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;IAE/C,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;YAC7B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU;YACV,KAAK,EAAE,QAAQ,CAAC,SAAS;YACzB,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE;SAC3B,CAAC,CAAC;QACH,GAAG,CAAC,MAAM,CAAC,iBAAiB,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;IAC5D,CAAC;SAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QACnC,0EAA0E;QAC1E,yEAAyE;QACzE,0EAA0E;QAC1E,2EAA2E;QAC3E,iBAAiB;QACjB,MAAM,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,8BAA8B;IAC9B,EAAE;IACF,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,6EAA6E;IAC7E,sEAAsE;IACtE,EAAE;IACF,wEAAwE;IACxE,8EAA8E;IAC9E,wEAAwE;IACxE,6EAA6E;IAC7E,6EAA6E;IAC7E,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAoB,EACpB,IAA4B;IAE5B,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAExC,0EAA0E;QAC1E,0EAA0E;QAC1E,MAAM,GAAG,GAAqB;YAC5B,SAAS;YACT,QAAQ;YACR,iBAAiB;YACjB,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,YAAY;YAC5E,IAAI;YACJ,MAAM;YACN,WAAW,EAAE,IAAI;SAClB,CAAC;QACF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEvD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAI,MAAM,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,IAAI,CACN,8BAA8B,MAAM,CAAC,SAAS,IAAI;kBAChD,GAAG,MAAM,CAAC,SAAS,eAAe,MAAM,CAAC,QAAQ,aAAa;kBAC9D,GAAG,MAAM,CAAC,iBAAiB,6BAA6B,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,8CAA8C,MAAM,CAAC,SAAS,GAAG;cAC/D,IAAI,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,4CAA4C,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending-spawn-pass-deps.d.ts","sourceRoot":"","sources":["../../src/focus/pending-spawn-pass-deps.ts"],"names":[],"mappings":"
|
|
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,
|
|
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":"AA8DA;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,uGAAuG;IACvG,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC7E,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC;CAC3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAMvF;AAED,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,qEAAqE;AACrE,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACxC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IACjC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACtC,GAAG,OAAO,CAOV;AAED,0DAA0D;AAC1D,MAAM,WAAW,uBAAuB;IACtC;;;;;;OAMG;IACH,uBAAuB,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;;;;OASG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;
|
|
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":"AAAA,8FAA8F;AAC9F,+FAA+F;AAC/F,iEAAiE;AACjE,2DAA2D;AAC3D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAc9C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,OAAsB,EAAE;IAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,IAAI,qBAAqB,CAAC;IACxE,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC;IACpE,IAAI,YAAY,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC;AACnC,CAAC;AAcD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAIxC;IACC,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,KAAK,CAAC,UAAU;SACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;SACnG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACpB,CAAC;IACF,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACxG,CAAC;
|
|
1
|
+
{"version":3,"file":"team-actionable-work.js","sourceRoot":"","sources":["../../src/focus/team-actionable-work.ts"],"names":[],"mappings":"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"}
|
package/dist/git/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/git/types.ts"],"names":[],"mappings":"
|
|
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:
|
|
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.
|
package/dist/git/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/git/types.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,
|
|
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;
|
|
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"}
|
package/dist/loops/llm-client.js
CHANGED
|
@@ -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
|
-
|
|
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":"AAAA,8FAA8F;AAC9F,+DAA+D;AAC/D,gBAAgB;AAuBhB,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,YAAY,EAA2B,MAAM,6BAA6B,CAAC;AAEpF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAqD7C,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAG1C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,aAAa,GAA6F;IAC9G,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACpE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;IACnE,6EAA6E;IAC7E,uDAAuD;IACvD,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;IACjE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;CAClE,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,KAAqB;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../../src/loops/llm-client.ts"],"names":[],"mappings":"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"}
|