@telora/daemon 0.18.40 → 0.18.49
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 +4 -3
- package/dist/completion/advanceability.d.ts +66 -0
- package/dist/completion/advanceability.d.ts.map +1 -0
- package/dist/completion/advanceability.js +112 -0
- package/dist/completion/advanceability.js.map +1 -0
- package/dist/completion/event.d.ts +28 -52
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +79 -99
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/progress-snapshot.d.ts +15 -4
- package/dist/completion/progress-snapshot.d.ts.map +1 -1
- package/dist/completion/progress-snapshot.js +20 -4
- package/dist/completion/progress-snapshot.js.map +1 -1
- package/dist/crash-recovery.d.ts +48 -0
- package/dist/crash-recovery.d.ts.map +1 -1
- package/dist/crash-recovery.js +166 -30
- package/dist/crash-recovery.js.map +1 -1
- package/dist/delivery-advance-block.d.ts +17 -1
- package/dist/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery-advance-block.js +31 -8
- package/dist/delivery-advance-block.js.map +1 -1
- package/dist/escalation-provenance.d.ts +5 -1
- package/dist/escalation-provenance.d.ts.map +1 -1
- package/dist/escalation-provenance.js +46 -4
- package/dist/escalation-provenance.js.map +1 -1
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +1 -0
- package/dist/focus-executor.js.map +1 -1
- package/dist/git-activity.d.ts +15 -0
- package/dist/git-activity.d.ts.map +1 -1
- package/dist/git-activity.js +24 -0
- package/dist/git-activity.js.map +1 -1
- package/dist/loop-engine-types.d.ts +40 -0
- package/dist/loop-engine-types.d.ts.map +1 -0
- package/dist/loop-engine-types.js +11 -0
- package/dist/loop-engine-types.js.map +1 -0
- package/dist/loop-engine.d.ts +52 -0
- package/dist/loop-engine.d.ts.map +1 -1
- package/dist/loop-engine.js +91 -10
- package/dist/loop-engine.js.map +1 -1
- package/dist/loop-llm-flag.d.ts +32 -0
- package/dist/loop-llm-flag.d.ts.map +1 -0
- package/dist/loop-llm-flag.js +35 -0
- package/dist/loop-llm-flag.js.map +1 -0
- package/dist/loop-operational-block.d.ts +44 -0
- package/dist/loop-operational-block.d.ts.map +1 -0
- package/dist/loop-operational-block.js +47 -0
- package/dist/loop-operational-block.js.map +1 -0
- package/dist/merge-back-loop.d.ts.map +1 -1
- package/dist/merge-back-loop.js +1 -0
- package/dist/merge-back-loop.js.map +1 -1
- package/dist/nexus-intake.d.ts +26 -3
- package/dist/nexus-intake.d.ts.map +1 -1
- package/dist/nexus-intake.js +62 -10
- package/dist/nexus-intake.js.map +1 -1
- package/dist/types/focus.d.ts +24 -0
- package/dist/types/focus.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/crash-recovery-cleanup.d.ts +0 -21
- package/dist/crash-recovery-cleanup.d.ts.map +0 -1
- package/dist/crash-recovery-cleanup.js +0 -205
- package/dist/crash-recovery-cleanup.js.map +0 -1
- package/dist/crash-recovery-scan.d.ts +0 -19
- package/dist/crash-recovery-scan.d.ts.map +0 -1
- package/dist/crash-recovery-scan.js +0 -145
- package/dist/crash-recovery-scan.js.map +0 -1
- package/dist/crash-recovery-types.d.ts +0 -49
- package/dist/crash-recovery-types.d.ts.map +0 -1
- package/dist/crash-recovery-types.js +0 -13
- package/dist/crash-recovery-types.js.map +0 -1
|
@@ -21,15 +21,26 @@ import type { FocusDeliveryInfo, ProgressSnapshot } from '../types.js';
|
|
|
21
21
|
* gate that re-evaluated or a verify_failed re-code cycle the daemon drove
|
|
22
22
|
* registers as real progress and resets the no-progress counter, instead of
|
|
23
23
|
* the watchdog climbing while the daemon (not the team) owns the next move.
|
|
24
|
+
*
|
|
25
|
+
* It ALSO captures TEAM-OWNED git progress: the focus worktree's HEAD sha
|
|
26
|
+
* (`focusHeadSha`, optional 3rd arg, default null). A team that wrote AND
|
|
27
|
+
* committed code this cycle moved HEAD even when no DB state moved -- without
|
|
28
|
+
* this dimension that producing team reads as "no progress" and the watchdog
|
|
29
|
+
* kills it. The arg is optional with a null default so the many existing
|
|
30
|
+
* two-arg callers (and tests) keep compiling; callers on the watchdog path
|
|
31
|
+
* resolve the head sha from the focus worktree and pass it through.
|
|
24
32
|
*/
|
|
25
33
|
export declare function takeProgressSnapshot(deliveries: Pick<FocusDeliveryInfo, 'id' | 'executionStatus' | 'gateState' | 'iterationCount'>[], issues: {
|
|
26
34
|
id: string;
|
|
27
|
-
}[]): ProgressSnapshot;
|
|
35
|
+
}[], focusHeadSha?: string | null): ProgressSnapshot;
|
|
28
36
|
/**
|
|
29
37
|
* True when two snapshots are identical across ALL progress axes: delivery
|
|
30
|
-
* statuses, total issue count, per-delivery gate_state fingerprint,
|
|
31
|
-
* per-delivery iteration_count
|
|
32
|
-
* daemon-owned ones
|
|
38
|
+
* statuses, total issue count, per-delivery gate_state fingerprint,
|
|
39
|
+
* per-delivery iteration_count, AND the focus worktree HEAD sha. Any moving
|
|
40
|
+
* axis -- the two daemon-owned ones OR the team-owned git-activity one -- is
|
|
41
|
+
* progress, so snapshotsEqual returns false. The head-sha comparison is what
|
|
42
|
+
* makes a fresh commit on the focus branch reset the no-progress counter: a
|
|
43
|
+
* different sha => not equal => madeProgress true.
|
|
33
44
|
*/
|
|
34
45
|
export declare function snapshotsEqual(a: ProgressSnapshot, b: ProgressSnapshot): boolean;
|
|
35
46
|
//# sourceMappingURL=progress-snapshot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress-snapshot.d.ts","sourceRoot":"","sources":["../../src/completion/progress-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA0CvE
|
|
1
|
+
{"version":3,"file":"progress-snapshot.d.ts","sourceRoot":"","sources":["../../src/completion/progress-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA0CvE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,CAAC,EAAE,EAChG,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EACxB,YAAY,GAAE,MAAM,GAAG,IAAW,GACjC,gBAAgB,CAgBlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAUhF"}
|
|
@@ -60,8 +60,16 @@ function gateFingerprint(gateState) {
|
|
|
60
60
|
* gate that re-evaluated or a verify_failed re-code cycle the daemon drove
|
|
61
61
|
* registers as real progress and resets the no-progress counter, instead of
|
|
62
62
|
* the watchdog climbing while the daemon (not the team) owns the next move.
|
|
63
|
+
*
|
|
64
|
+
* It ALSO captures TEAM-OWNED git progress: the focus worktree's HEAD sha
|
|
65
|
+
* (`focusHeadSha`, optional 3rd arg, default null). A team that wrote AND
|
|
66
|
+
* committed code this cycle moved HEAD even when no DB state moved -- without
|
|
67
|
+
* this dimension that producing team reads as "no progress" and the watchdog
|
|
68
|
+
* kills it. The arg is optional with a null default so the many existing
|
|
69
|
+
* two-arg callers (and tests) keep compiling; callers on the watchdog path
|
|
70
|
+
* resolve the head sha from the focus worktree and pass it through.
|
|
63
71
|
*/
|
|
64
|
-
export function takeProgressSnapshot(deliveries, issues) {
|
|
72
|
+
export function takeProgressSnapshot(deliveries, issues, focusHeadSha = null) {
|
|
65
73
|
const deliveryStatuses = {};
|
|
66
74
|
const deliveryGateFingerprints = {};
|
|
67
75
|
const deliveryIterations = {};
|
|
@@ -75,17 +83,25 @@ export function takeProgressSnapshot(deliveries, issues) {
|
|
|
75
83
|
totalIssueCount: issues.length,
|
|
76
84
|
deliveryGateFingerprints,
|
|
77
85
|
deliveryIterations,
|
|
86
|
+
focusHeadSha,
|
|
78
87
|
};
|
|
79
88
|
}
|
|
80
89
|
/**
|
|
81
90
|
* True when two snapshots are identical across ALL progress axes: delivery
|
|
82
|
-
* statuses, total issue count, per-delivery gate_state fingerprint,
|
|
83
|
-
* per-delivery iteration_count
|
|
84
|
-
* daemon-owned ones
|
|
91
|
+
* statuses, total issue count, per-delivery gate_state fingerprint,
|
|
92
|
+
* per-delivery iteration_count, AND the focus worktree HEAD sha. Any moving
|
|
93
|
+
* axis -- the two daemon-owned ones OR the team-owned git-activity one -- is
|
|
94
|
+
* progress, so snapshotsEqual returns false. The head-sha comparison is what
|
|
95
|
+
* makes a fresh commit on the focus branch reset the no-progress counter: a
|
|
96
|
+
* different sha => not equal => madeProgress true.
|
|
85
97
|
*/
|
|
86
98
|
export function snapshotsEqual(a, b) {
|
|
87
99
|
if (a.totalIssueCount !== b.totalIssueCount)
|
|
88
100
|
return false;
|
|
101
|
+
// A moving HEAD on the focus branch is forward motion (the team committed
|
|
102
|
+
// code this cycle) even when every DB-state axis is flat.
|
|
103
|
+
if (a.focusHeadSha !== b.focusHeadSha)
|
|
104
|
+
return false;
|
|
89
105
|
return (recordsEqual(a.deliveryStatuses, b.deliveryStatuses) &&
|
|
90
106
|
recordsEqual(a.deliveryGateFingerprints, b.deliveryGateFingerprints) &&
|
|
91
107
|
recordsEqual(a.deliveryIterations, b.deliveryIterations));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress-snapshot.js","sourceRoot":"","sources":["../../src/completion/progress-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH;;;;;;;;;GASG;AACH,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;IACzC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACxD,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SAC7B,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAClC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,SAAkB;IACzC,IAAI,SAAS,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,kBAAkB,CAAC;IAC5B,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"progress-snapshot.js","sourceRoot":"","sources":["../../src/completion/progress-snapshot.ts"],"names":[],"mappings":"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"}
|
package/dist/crash-recovery.d.ts
CHANGED
|
@@ -25,6 +25,31 @@ export interface CleanupAction {
|
|
|
25
25
|
commitHash?: string;
|
|
26
26
|
/** Set when the orphan was preserved due to unmerged commits. */
|
|
27
27
|
unmergedCommitCount?: number;
|
|
28
|
+
/**
|
|
29
|
+
* True when the worktree DIRECTORY was removed from disk. For an unmerged
|
|
30
|
+
* orphan the branch ref is preserved (cheap, recoverable) while the worktree
|
|
31
|
+
* dir is dropped (no detritus) -- so a preserved action can still have the
|
|
32
|
+
* worktree removed.
|
|
33
|
+
*/
|
|
34
|
+
worktreeRemoved?: boolean;
|
|
35
|
+
/** True when the branch ref was preserved (kept, not deleted). */
|
|
36
|
+
branchPreserved?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* The 8-char focus-key suffix parsed from the branch name
|
|
39
|
+
* (agent/<role>/<slug>-<8hexfocuskey>). Used to anchor any residual signal to
|
|
40
|
+
* the owning focus.
|
|
41
|
+
*/
|
|
42
|
+
focusKey?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Full focus id resolved from `focusKey` (where resolvable). Filled in by the
|
|
45
|
+
* async cleanup pass so housekeeping records / escalations carry a real anchor.
|
|
46
|
+
*/
|
|
47
|
+
resolvedFocusId?: string;
|
|
48
|
+
/**
|
|
49
|
+
* True only in the unrecoverable corner: the worktree was dirty and the safety
|
|
50
|
+
* commit FAILED, so the work is on no ref. The worktree is kept (dropping it
|
|
51
|
+
* would lose the work). */
|
|
52
|
+
workUncaptured?: boolean;
|
|
28
53
|
}
|
|
29
54
|
export interface RecoveryResult {
|
|
30
55
|
orphansDetected: number;
|
|
@@ -50,6 +75,23 @@ export interface RecoveryDeps {
|
|
|
50
75
|
createEscalation: (params: CreateEscalationParams) => Promise<{
|
|
51
76
|
escalationId: string | null;
|
|
52
77
|
} | void>;
|
|
78
|
+
/**
|
|
79
|
+
* Best-effort resolution of an 8-char focus-key prefix (parsed from an orphan
|
|
80
|
+
* branch name) to a full focus id, so a residual housekeeping record /
|
|
81
|
+
* escalation can be anchored to the owning focus. Returns null when the focus
|
|
82
|
+
* cannot be resolved (e.g. the focus was deleted) -- anchoring then degrades
|
|
83
|
+
* to the always-known productId plus the focus_key carried in metadata.
|
|
84
|
+
*/
|
|
85
|
+
resolveFocusByKeyPrefix: (keyPrefix: string, productId?: string) => Promise<{
|
|
86
|
+
focusId: string;
|
|
87
|
+
productId: string | null;
|
|
88
|
+
} | null>;
|
|
89
|
+
/**
|
|
90
|
+
* Remove a worktree directory (force) while leaving the branch ref intact.
|
|
91
|
+
* Defaults to daemon-core's `removeWorktreeBase`; injectable so the
|
|
92
|
+
* leftover-detritus path (returns false) is testable. False = dir not removed.
|
|
93
|
+
*/
|
|
94
|
+
removeWorktreeDir: (repoPath: string, worktreePath: string) => boolean;
|
|
53
95
|
}
|
|
54
96
|
/**
|
|
55
97
|
* Parse `git worktree list --porcelain` to build a map of
|
|
@@ -68,6 +110,12 @@ export declare function detectOrphanedWorktrees(config: DaemonConfig, deps?: Rec
|
|
|
68
110
|
export declare function cleanupOrphanedWorktrees(orphans: OrphanedWorktree[], config: DaemonConfig, deps?: RecoveryDeps): Promise<CleanupAction[]>;
|
|
69
111
|
/**
|
|
70
112
|
* Prune stale agent branches that have no worktree and no unmerged commits.
|
|
113
|
+
*
|
|
114
|
+
* Same housekeeping policy as the orphaned-worktree path: a branch with
|
|
115
|
+
* unmerged commits is PRESERVED and LOGGED (the commits are recoverable from
|
|
116
|
+
* the ref), never escalated. A merged branch with no worktree is safe to delete.
|
|
117
|
+
* No path here files a needs_operator escalation -- branch-only orphans are
|
|
118
|
+
* reality-side housekeeping the daemon owns.
|
|
71
119
|
*/
|
|
72
120
|
export declare function pruneStaleAgentBranches(config: DaemonConfig): {
|
|
73
121
|
pruned: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crash-recovery.d.ts","sourceRoot":"","sources":["../src/crash-recovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS7D,OAAO,EAAoB,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"crash-recovery.d.ts","sourceRoot":"","sources":["../src/crash-recovery.ts"],"names":[],"mappings":"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"}
|
package/dist/crash-recovery.js
CHANGED
|
@@ -14,12 +14,34 @@ import { worktreeHasUncommittedChanges, branchHasUnmergedCommits, safetyCommitWo
|
|
|
14
14
|
import { getActiveSessions, updateSession } from './queries/sessions.js';
|
|
15
15
|
import { createEscalation } from './queries/issues.js';
|
|
16
16
|
import { getActiveFocuses } from './queries/deliveries.js';
|
|
17
|
-
import {
|
|
17
|
+
import { scanAllFocuses } from './queries/focuses.js';
|
|
18
|
+
import { ESCALATION_REASONS, ESCALATION_DISPOSITIONS, removeWorktreeBase } from '@telora/daemon-core';
|
|
19
|
+
/**
|
|
20
|
+
* Default focus-key resolver: scan the product's focuses and match the 8-char
|
|
21
|
+
* prefix to a full focus id. Orphans are inactive by construction, so this
|
|
22
|
+
* scans ALL focuses for the product, not just active ones. Best-effort: any
|
|
23
|
+
* failure degrades to null (caller falls back to productId + focus_key).
|
|
24
|
+
*/
|
|
25
|
+
async function defaultResolveFocusByKeyPrefix(keyPrefix, productId) {
|
|
26
|
+
if (!productId)
|
|
27
|
+
return null;
|
|
28
|
+
try {
|
|
29
|
+
const { focuses } = await scanAllFocuses({ productId });
|
|
30
|
+
const match = focuses.find((f) => typeof f.id === 'string' && f.id.startsWith(keyPrefix));
|
|
31
|
+
return match?.id ? { focusId: match.id, productId } : null;
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
console.warn(`[crash-recovery] Failed to resolve focus from key ${keyPrefix}: ${err instanceof Error ? err.message : String(err)}`);
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
18
38
|
const defaultDeps = {
|
|
19
39
|
getActiveSessions,
|
|
20
40
|
getActiveFocuses,
|
|
21
41
|
updateSession: (id, updates) => updateSession(id, updates),
|
|
22
42
|
createEscalation,
|
|
43
|
+
resolveFocusByKeyPrefix: defaultResolveFocusByKeyPrefix,
|
|
44
|
+
removeWorktreeDir: removeWorktreeBase,
|
|
23
45
|
};
|
|
24
46
|
// ── Helpers ──────────────────────────────────────────────────────
|
|
25
47
|
/**
|
|
@@ -30,6 +52,17 @@ function extractFocusIdPrefix(dirName) {
|
|
|
30
52
|
const match = dirName.match(/-([0-9a-f]{8})$/);
|
|
31
53
|
return match ? match[1] : null;
|
|
32
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Extract the 8-char focus-key suffix from an agent BRANCH name.
|
|
57
|
+
* Branch format: agent/<role>/<slug>-<8hexfocuskey>. The final path segment
|
|
58
|
+
* carries the same -<8hex> suffix that extractFocusIdPrefix parses off the
|
|
59
|
+
* worktree DIRECTORY name, so this is the branch-name analogue used to anchor a
|
|
60
|
+
* residual signal back to the owning focus.
|
|
61
|
+
*/
|
|
62
|
+
function extractFocusKeyFromBranch(branchName) {
|
|
63
|
+
const lastSegment = branchName.split('/').pop() ?? branchName;
|
|
64
|
+
return extractFocusIdPrefix(lastSegment);
|
|
65
|
+
}
|
|
33
66
|
// ── Worktree scanning ────────────────────────────────────────────
|
|
34
67
|
/**
|
|
35
68
|
* Parse `git worktree list --porcelain` to build a map of
|
|
@@ -174,11 +207,13 @@ function countUnmergedCommits(branchName, integrationBranch, repoPath) {
|
|
|
174
207
|
*
|
|
175
208
|
* Returns the action taken.
|
|
176
209
|
*/
|
|
177
|
-
function cleanupSingleOrphan(orphan, config) {
|
|
210
|
+
function cleanupSingleOrphan(orphan, config, deps) {
|
|
178
211
|
const { worktreePath, branchName } = orphan;
|
|
179
212
|
const { repoPath, integrationBranch } = config;
|
|
180
213
|
let commitHash;
|
|
214
|
+
const focusKey = extractFocusKeyFromBranch(branchName) ?? undefined;
|
|
181
215
|
// Step 1: Safety-commit if dirty
|
|
216
|
+
let safetyCommitFailed = false;
|
|
182
217
|
if (existsSync(worktreePath) && worktreeHasUncommittedChanges(worktreePath)) {
|
|
183
218
|
const deliveryName = branchName.split('/').slice(2).join('/') || 'unknown';
|
|
184
219
|
console.log(`[crash-recovery] Safety-committing dirty worktree: ${worktreePath}`);
|
|
@@ -188,18 +223,18 @@ function cleanupSingleOrphan(orphan, config) {
|
|
|
188
223
|
console.log(`[crash-recovery] Safety commit created: ${commitHash.slice(0, 8)} on ${branchName}`);
|
|
189
224
|
}
|
|
190
225
|
else {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
};
|
|
226
|
+
// The work is dirty AND uncommittable: it is not on any ref. Removing the
|
|
227
|
+
// worktree dir now would lose it, so we keep the worktree and flag the
|
|
228
|
+
// unrecoverable corner (handled by the caller -- escalate only if the
|
|
229
|
+
// focus also cannot be anchored).
|
|
230
|
+
safetyCommitFailed = true;
|
|
231
|
+
console.warn(`[crash-recovery] Safety commit failed for ${worktreePath}, preserving worktree as-is`);
|
|
197
232
|
}
|
|
198
233
|
}
|
|
199
234
|
// Step 2: Check if branch is already merged to integration
|
|
200
235
|
const hasUnmerged = branchHasUnmergedCommits(branchName, integrationBranch, repoPath);
|
|
201
236
|
if (!hasUnmerged) {
|
|
202
|
-
// Fully merged — safe to remove
|
|
237
|
+
// Fully merged — safe to remove (UNCHANGED behavior: worktree + branch both go)
|
|
203
238
|
console.log(`[crash-recovery] Removing merged orphan: ${worktreePath} [${branchName}]`);
|
|
204
239
|
removeWorktree(repoPath, worktreePath, {
|
|
205
240
|
branchName,
|
|
@@ -216,17 +251,48 @@ function cleanupSingleOrphan(orphan, config) {
|
|
|
216
251
|
branchName,
|
|
217
252
|
action: commitHash ? 'safety-committed-and-removed' : 'removed',
|
|
218
253
|
commitHash,
|
|
254
|
+
focusKey,
|
|
255
|
+
worktreeRemoved: true,
|
|
256
|
+
branchPreserved: false,
|
|
219
257
|
};
|
|
220
258
|
}
|
|
221
|
-
// Step 3: Unmerged commits — preserve
|
|
222
259
|
const unmergedCount = countUnmergedCommits(branchName, integrationBranch, repoPath);
|
|
223
|
-
|
|
260
|
+
// Step 3a: Unrecoverable corner -- the work is uncommitted (safety commit
|
|
261
|
+
// failed) so it lives only in the worktree dir. KEEP the worktree (dropping it
|
|
262
|
+
// would lose the work) and the branch; the caller decides whether to escalate
|
|
263
|
+
// based on whether the focus can be anchored.
|
|
264
|
+
if (safetyCommitFailed) {
|
|
265
|
+
console.warn(`[crash-recovery] Preserving worktree + branch (uncommitted work could not be captured): ${worktreePath} [${branchName}]`);
|
|
266
|
+
return {
|
|
267
|
+
worktreePath,
|
|
268
|
+
branchName,
|
|
269
|
+
action: 'preserved',
|
|
270
|
+
unmergedCommitCount: unmergedCount,
|
|
271
|
+
focusKey,
|
|
272
|
+
worktreeRemoved: false,
|
|
273
|
+
branchPreserved: true,
|
|
274
|
+
workUncaptured: true,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
// Step 3b: Normal unmerged case -- the work IS captured on the branch ref.
|
|
278
|
+
// Self-resolve as housekeeping: PRESERVE THE BRANCH (cheap, recoverable) and
|
|
279
|
+
// DROP THE WORKTREE DIRECTORY (no disk detritus). removeWorktreeDir does a
|
|
280
|
+
// `git worktree remove --force` + prune, leaving the branch ref intact --
|
|
281
|
+
// bypassing removeWorktree's unmerged-commit guard since we keep the branch.
|
|
282
|
+
console.log(`[crash-recovery] Preserving branch + dropping worktree for orphan with ${unmergedCount} unmerged commit(s): ${worktreePath} [${branchName}]`);
|
|
283
|
+
const worktreeRemoved = deps.removeWorktreeDir(repoPath, worktreePath);
|
|
284
|
+
if (!worktreeRemoved) {
|
|
285
|
+
console.warn(`[crash-recovery] Failed to remove worktree dir (branch ${branchName} still preserved): ${worktreePath}`);
|
|
286
|
+
}
|
|
224
287
|
return {
|
|
225
288
|
worktreePath,
|
|
226
289
|
branchName,
|
|
227
290
|
action: commitHash ? 'safety-committed' : 'preserved',
|
|
228
291
|
commitHash,
|
|
229
292
|
unmergedCommitCount: unmergedCount,
|
|
293
|
+
focusKey,
|
|
294
|
+
worktreeRemoved,
|
|
295
|
+
branchPreserved: true,
|
|
230
296
|
};
|
|
231
297
|
}
|
|
232
298
|
/**
|
|
@@ -255,37 +321,91 @@ export async function cleanupOrphanedWorktrees(orphans, config, deps = defaultDe
|
|
|
255
321
|
// Process each orphan
|
|
256
322
|
for (const orphan of orphans) {
|
|
257
323
|
try {
|
|
258
|
-
const action = cleanupSingleOrphan(orphan, config);
|
|
324
|
+
const action = cleanupSingleOrphan(orphan, config, deps);
|
|
259
325
|
actions.push(action);
|
|
260
326
|
}
|
|
261
327
|
catch (err) {
|
|
262
328
|
console.error(`[crash-recovery] Error cleaning up orphan ${orphan.worktreePath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
263
329
|
}
|
|
264
330
|
}
|
|
265
|
-
//
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
331
|
+
// Resolve the owning focus from each preserved orphan's branch focus-key, so
|
|
332
|
+
// any residual signal is anchored to the focus the branch encodes rather than
|
|
333
|
+
// landing unanchored. productId is always known from the (product-scoped)
|
|
334
|
+
// config; focusId resolves where the focus still exists.
|
|
335
|
+
const preserved = actions.filter((a) => a.branchPreserved);
|
|
336
|
+
for (const a of preserved) {
|
|
337
|
+
if (a.focusKey) {
|
|
338
|
+
const resolved = await deps.resolveFocusByKeyPrefix(a.focusKey, config.productId);
|
|
339
|
+
if (resolved?.focusId)
|
|
340
|
+
a.resolvedFocusId = resolved.focusId;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
// Housekeeping: a preserved branch is recoverable (work on the ref) and
|
|
344
|
+
// anchored (productId + resolved focus / focus-key), so it self-resolves as a
|
|
345
|
+
// LOG LINE, not a needs_operator escalation -- the daemon SUCCEEDS at the
|
|
346
|
+
// merge/drop housekeeping it owns instead of routing the decision to a human.
|
|
347
|
+
for (const a of preserved) {
|
|
348
|
+
if (a.workUncaptured)
|
|
349
|
+
continue; // the unrecoverable corner is handled below
|
|
350
|
+
const focusRef = a.resolvedFocusId
|
|
351
|
+
? `focus ${a.resolvedFocusId}`
|
|
352
|
+
: a.focusKey
|
|
353
|
+
? `focus-key ${a.focusKey}`
|
|
354
|
+
: 'focus unresolved';
|
|
355
|
+
const worktreeNote = a.worktreeRemoved ? 'worktree dropped' : 'worktree kept';
|
|
356
|
+
console.log(`[crash-recovery] Housekeeping: preserved branch ${a.branchName} ` +
|
|
357
|
+
`(${worktreeNote}; ${focusRef}` +
|
|
358
|
+
(a.unmergedCommitCount ? `; ${a.unmergedCommitCount} unmerged commit(s)` : '') +
|
|
359
|
+
(a.commitHash ? `; safety commit ${a.commitHash.slice(0, 8)}` : '') +
|
|
360
|
+
`) [product ${config.productId ?? 'unknown'}]`);
|
|
361
|
+
// Removal failed: the dir is still on disk. The work is safe on the
|
|
362
|
+
// preserved branch (not work-loss, so no escalation), but it is NOT the
|
|
363
|
+
// clean "worktree dropped" outcome -- surface it distinctly at WARN so the
|
|
364
|
+
// leftover dir is visible; recoverFromCrash also lifts it into the summary.
|
|
365
|
+
if (!a.worktreeRemoved) {
|
|
366
|
+
console.warn(`[crash-recovery] Worktree dir could NOT be removed for preserved branch ` +
|
|
367
|
+
`${a.branchName}; leftover dir remains on disk (manual prune may be needed): ${a.worktreePath}`);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
// Escalate ONLY the genuinely unrecoverable corner: the work could NOT be
|
|
371
|
+
// captured on a ref (safety commit failed, worktree kept dirty) AND the focus
|
|
372
|
+
// could NOT be resolved from the branch. Safety-commit failure is rare, so
|
|
373
|
+
// this is near-never -- needs_operator again means "a human must steer".
|
|
374
|
+
const unrecoverable = preserved.filter((a) => a.workUncaptured && !a.resolvedFocusId);
|
|
375
|
+
if (unrecoverable.length > 0) {
|
|
376
|
+
const lines = unrecoverable.map((a) => `- ${a.branchName} (${a.worktreePath})` +
|
|
269
377
|
(a.unmergedCommitCount ? ` — ${a.unmergedCommitCount} unmerged commit(s)` : '') +
|
|
270
|
-
(a.
|
|
271
|
-
const description = `Daemon crash recovery found ${
|
|
378
|
+
(a.focusKey ? ` — focus-key: ${a.focusKey}` : ''));
|
|
379
|
+
const description = `Daemon crash recovery found ${unrecoverable.length} orphaned worktree(s) whose ` +
|
|
380
|
+
`uncommitted work could not be captured on a branch and whose owning focus could not ` +
|
|
381
|
+
`be resolved from the branch:\n\n` +
|
|
272
382
|
lines.join('\n') +
|
|
273
|
-
'\n\nThese worktrees have been preserved for manual inspection.';
|
|
383
|
+
'\n\nThese worktrees have been preserved on disk for manual inspection.';
|
|
384
|
+
// Anchor with whatever we have: productId is stamped explicitly from the
|
|
385
|
+
// product-scoped config (always wins over derived provenance). The focus is
|
|
386
|
+
// unresolvable by construction here (the `!resolvedFocusId` gate put the
|
|
387
|
+
// orphan in this corner), so focus_key travels in metadata for forensics.
|
|
388
|
+
const head = unrecoverable[0];
|
|
274
389
|
try {
|
|
275
390
|
await deps.createEscalation({
|
|
276
391
|
organizationId: config.organizationId,
|
|
277
|
-
sessionId:
|
|
392
|
+
sessionId: head.branchName, // No session available, use branch as context
|
|
278
393
|
issueId: null,
|
|
279
394
|
reasonType: ESCALATION_REASONS.NEEDS_CLARIFICATION,
|
|
280
|
-
// Operator triage: an operator inspects the preserved
|
|
281
|
-
//
|
|
395
|
+
// Operator triage: an operator inspects the preserved worktree and
|
|
396
|
+
// recovers or discards the uncommittable work -- not an intent decision.
|
|
282
397
|
disposition: ESCALATION_DISPOSITIONS.NEEDS_OPERATOR,
|
|
283
|
-
|
|
398
|
+
...(config.productId ? { productId: config.productId } : {}),
|
|
399
|
+
anchor: { branch: head.branchName },
|
|
400
|
+
metadata: {
|
|
401
|
+
branch_name: head.branchName,
|
|
402
|
+
...(head.focusKey ? { focus_key: head.focusKey } : {}),
|
|
403
|
+
},
|
|
284
404
|
description,
|
|
285
|
-
whatWasTried: 'Daemon crash recovery
|
|
286
|
-
helpNeeded: 'Inspect the preserved
|
|
405
|
+
whatWasTried: 'Daemon crash recovery preserved the worktree; the uncommitted work could not be captured on a branch and the focus could not be resolved from the branch name.',
|
|
406
|
+
helpNeeded: 'Inspect the preserved worktree and recover or discard the uncommitted work.',
|
|
287
407
|
});
|
|
288
|
-
console.log(`[crash-recovery] Created escalation for ${
|
|
408
|
+
console.log(`[crash-recovery] Created escalation for ${unrecoverable.length} unrecoverable orphan(s)`);
|
|
289
409
|
}
|
|
290
410
|
catch (err) {
|
|
291
411
|
console.warn(`[crash-recovery] Failed to create escalation: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -308,6 +428,12 @@ function listAgentBranches(repoPath) {
|
|
|
308
428
|
}
|
|
309
429
|
/**
|
|
310
430
|
* Prune stale agent branches that have no worktree and no unmerged commits.
|
|
431
|
+
*
|
|
432
|
+
* Same housekeeping policy as the orphaned-worktree path: a branch with
|
|
433
|
+
* unmerged commits is PRESERVED and LOGGED (the commits are recoverable from
|
|
434
|
+
* the ref), never escalated. A merged branch with no worktree is safe to delete.
|
|
435
|
+
* No path here files a needs_operator escalation -- branch-only orphans are
|
|
436
|
+
* reality-side housekeeping the daemon owns.
|
|
311
437
|
*/
|
|
312
438
|
export function pruneStaleAgentBranches(config) {
|
|
313
439
|
const { repoPath, integrationBranch } = config;
|
|
@@ -327,7 +453,9 @@ export function pruneStaleAgentBranches(config) {
|
|
|
327
453
|
continue;
|
|
328
454
|
// Check for unmerged commits
|
|
329
455
|
if (branchHasUnmergedCommits(branch, integrationBranch, repoPath)) {
|
|
330
|
-
|
|
456
|
+
const focusKey = extractFocusKeyFromBranch(branch);
|
|
457
|
+
console.log(`[crash-recovery] Housekeeping: preserving stale branch with unmerged commits: ${branch}` +
|
|
458
|
+
(focusKey ? ` (focus-key ${focusKey})` : ''));
|
|
331
459
|
preserved.push(branch);
|
|
332
460
|
continue;
|
|
333
461
|
}
|
|
@@ -387,6 +515,13 @@ export async function recoverFromCrash(config, deps = defaultDeps) {
|
|
|
387
515
|
result.actions = actions;
|
|
388
516
|
result.orphansCleaned = actions.filter((a) => a.action === 'removed' || a.action === 'safety-committed-and-removed').length;
|
|
389
517
|
result.orphansPreserved = actions.filter((a) => a.action === 'preserved' || a.action === 'safety-committed').length;
|
|
518
|
+
// Recoverable orphans whose worktree dir could not be dropped leave disk
|
|
519
|
+
// detritus. Non-fatal (work is safe on the branch), but surfaced as a
|
|
520
|
+
// recovery error so the summary's error count makes the leftover visible.
|
|
521
|
+
const worktreesLeftOnDisk = actions.filter((a) => a.branchPreserved && !a.worktreeRemoved && !a.workUncaptured).length;
|
|
522
|
+
if (worktreesLeftOnDisk > 0) {
|
|
523
|
+
result.errors.push(`${worktreesLeftOnDisk} preserved-branch worktree dir(s) could not be removed and remain on disk (manual prune may be needed)`);
|
|
524
|
+
}
|
|
390
525
|
}
|
|
391
526
|
catch (err) {
|
|
392
527
|
const msg = `Failed during orphan cleanup: ${err instanceof Error ? err.message : String(err)}`;
|
|
@@ -439,13 +574,14 @@ export async function recoverFromCrash(config, deps = defaultDeps) {
|
|
|
439
574
|
console.error(`[crash-recovery] ${msg}`);
|
|
440
575
|
result.errors.push(msg);
|
|
441
576
|
}
|
|
442
|
-
// Summary
|
|
577
|
+
// Summary. Preserved counts are housekeeping (branch kept, worktree dropped),
|
|
578
|
+
// not pending human work -- they are logged so the count stays visible.
|
|
443
579
|
console.log(`[crash-recovery] Recovery complete: ` +
|
|
444
580
|
`${result.orphansDetected} orphan(s) detected, ` +
|
|
445
581
|
`${result.orphansCleaned} cleaned, ` +
|
|
446
|
-
`${result.orphansPreserved} preserved, ` +
|
|
582
|
+
`${result.orphansPreserved} branch(es) preserved (housekeeping), ` +
|
|
447
583
|
`${result.branchesPruned} branch(es) pruned, ` +
|
|
448
|
-
`${result.branchesPreserved} branch(es) preserved`);
|
|
584
|
+
`${result.branchesPreserved} stale branch(es) preserved (housekeeping)`);
|
|
449
585
|
if (result.errors.length > 0) {
|
|
450
586
|
console.warn(`[crash-recovery] ${result.errors.length} error(s) during recovery (non-fatal)`);
|
|
451
587
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crash-recovery.js","sourceRoot":"","sources":["../src/crash-recovery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crash-recovery.js","sourceRoot":"","sources":["../src/crash-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import { createEscalation, hasOpenWorktreeDirtyEscalation, resolveOpenWorktreeDi
|
|
|
12
12
|
import { sendMessage } from '@telora/daemon-core';
|
|
13
13
|
import type { Writable } from 'node:stream';
|
|
14
14
|
import { getFocusWorktree } from './focus-worktree-state.js';
|
|
15
|
-
import { worktreeHasUncommittedChanges, dirtyChangesAreGeneratedLockfilesOnly, commitGeneratedLockfiles } from './worktree-safety.js';
|
|
15
|
+
import { worktreeHasUncommittedChanges, dirtyChangesAreGeneratedLockfilesOnly, commitGeneratedLockfiles, safetyCommitWorktree } from './worktree-safety.js';
|
|
16
16
|
/**
|
|
17
17
|
* escalation_kind discriminator for the advance-block escalation class.
|
|
18
18
|
*
|
|
@@ -34,6 +34,16 @@ export declare const ADVANCE_BLOCK_ESCALATION_KIND: "advance_blocked";
|
|
|
34
34
|
export declare const CLEAN_WORKTREE_RESOLVES_KINDS: readonly string[];
|
|
35
35
|
/** Default auto-remediation retry budget when TELORA_AUTO_REMEDIATION_BUDGET is unset. */
|
|
36
36
|
export declare const DEFAULT_AUTO_REMEDIATION_BUDGET = 3;
|
|
37
|
+
/**
|
|
38
|
+
* Resolve the auto-remediation retry budget: how many times the daemon re-wakes
|
|
39
|
+
* a team to commit before giving up and filing a human-facing escalation.
|
|
40
|
+
*
|
|
41
|
+
* Read directly from process.env (not @telora/daemon-core's loadEnvConfig)
|
|
42
|
+
* because the daemon consumes the registry-published daemon-core, which does
|
|
43
|
+
* not yet carry TELORA_AUTO_REMEDIATION_BUDGET in its Zod env schema. Mirrors
|
|
44
|
+
* the team_failure-after-K-cycles budget (TELORA_SCOPE_COVERAGE_NO_PROGRESS_LIMIT).
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveAutoRemediationBudget(): number;
|
|
37
47
|
/**
|
|
38
48
|
* Minimum gap between auto-remediation re-wake nudges for the same focus. The
|
|
39
49
|
* advance-block guard is called once per DELIVERY per poll, but a dirty
|
|
@@ -64,6 +74,12 @@ export interface EnsureWorktreeCommittedDeps {
|
|
|
64
74
|
resolveOpenWorktreeDirtyEscalations?: typeof resolveOpenWorktreeDirtyEscalations;
|
|
65
75
|
dirtyChangesAreGeneratedLockfilesOnly?: typeof dirtyChangesAreGeneratedLockfilesOnly;
|
|
66
76
|
commitGeneratedLockfiles?: typeof commitGeneratedLockfiles;
|
|
77
|
+
/**
|
|
78
|
+
* Last-resort WIP safety-commit of real uncommitted agent work when no team
|
|
79
|
+
* is reachable to re-wake (DECIDED 2026-06-22, Jeremy). Reuses the same
|
|
80
|
+
* primitive crash-recovery and removeWorktree use.
|
|
81
|
+
*/
|
|
82
|
+
safetyCommitWorktree?: typeof safetyCommitWorktree;
|
|
67
83
|
getActiveTeam?: (focusId: string) => AdvanceBlockTeamHandle | undefined;
|
|
68
84
|
sendMessage?: typeof sendMessage;
|
|
69
85
|
autoRemediationBudget?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-advance-block.d.ts","sourceRoot":"","sources":["../src/delivery-advance-block.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,gBAAgB,EAChB,8BAA8B,EAC9B,mCAAmC,EAEpC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAa,WAAW,EAAiE,MAAM,qBAAqB,CAAC;AAC5H,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,6BAA6B,EAC7B,qCAAqC,EACrC,wBAAwB,
|
|
1
|
+
{"version":3,"file":"delivery-advance-block.d.ts","sourceRoot":"","sources":["../src/delivery-advance-block.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,gBAAgB,EAChB,8BAA8B,EAC9B,mCAAmC,EAEpC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAa,WAAW,EAAiE,MAAM,qBAAqB,CAAC;AAC5H,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,6BAA6B,EAC7B,qCAAqC,EACrC,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAG9B;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,mBAAmC,CAAC;AAE9E;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAG1D,CAAC;AAEF,0FAA0F;AAC1F,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAIrD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAiB7C,2EAA2E;AAC3E,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AA0BD,0EAA0E;AAC1E,UAAU,sBAAsB;IAC9B,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,6BAA6B,CAAC,EAAE,OAAO,6BAA6B,CAAC;IACrE,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,8BAA8B,CAAC,EAAE,OAAO,8BAA8B,CAAC;IACvE,gFAAgF;IAChF,mCAAmC,CAAC,EAAE,OAAO,mCAAmC,CAAC;IAEjF,qCAAqC,CAAC,EAAE,OAAO,qCAAqC,CAAC;IACrF,wBAAwB,CAAC,EAAE,OAAO,wBAAwB,CAAC;IAC3D;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACnD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,sBAAsB,GAAG,SAAS,CAAC;IACxE,WAAW,CAAC,EAAE,OAAO,WAAW,CAAC;IACjC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,2FAA2F;IAC3F,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAsB,oCAAoC,CAAC,MAAM,EAAE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,EAAE,IAAI,GAAE,2BAAgC,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAsMpF"}
|