@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.
Files changed (70) hide show
  1. package/build-info.json +4 -3
  2. package/dist/completion/advanceability.d.ts +66 -0
  3. package/dist/completion/advanceability.d.ts.map +1 -0
  4. package/dist/completion/advanceability.js +112 -0
  5. package/dist/completion/advanceability.js.map +1 -0
  6. package/dist/completion/event.d.ts +28 -52
  7. package/dist/completion/event.d.ts.map +1 -1
  8. package/dist/completion/event.js +79 -99
  9. package/dist/completion/event.js.map +1 -1
  10. package/dist/completion/progress-snapshot.d.ts +15 -4
  11. package/dist/completion/progress-snapshot.d.ts.map +1 -1
  12. package/dist/completion/progress-snapshot.js +20 -4
  13. package/dist/completion/progress-snapshot.js.map +1 -1
  14. package/dist/crash-recovery.d.ts +48 -0
  15. package/dist/crash-recovery.d.ts.map +1 -1
  16. package/dist/crash-recovery.js +166 -30
  17. package/dist/crash-recovery.js.map +1 -1
  18. package/dist/delivery-advance-block.d.ts +17 -1
  19. package/dist/delivery-advance-block.d.ts.map +1 -1
  20. package/dist/delivery-advance-block.js +31 -8
  21. package/dist/delivery-advance-block.js.map +1 -1
  22. package/dist/escalation-provenance.d.ts +5 -1
  23. package/dist/escalation-provenance.d.ts.map +1 -1
  24. package/dist/escalation-provenance.js +46 -4
  25. package/dist/escalation-provenance.js.map +1 -1
  26. package/dist/focus-executor.d.ts.map +1 -1
  27. package/dist/focus-executor.js +1 -0
  28. package/dist/focus-executor.js.map +1 -1
  29. package/dist/git-activity.d.ts +15 -0
  30. package/dist/git-activity.d.ts.map +1 -1
  31. package/dist/git-activity.js +24 -0
  32. package/dist/git-activity.js.map +1 -1
  33. package/dist/loop-engine-types.d.ts +40 -0
  34. package/dist/loop-engine-types.d.ts.map +1 -0
  35. package/dist/loop-engine-types.js +11 -0
  36. package/dist/loop-engine-types.js.map +1 -0
  37. package/dist/loop-engine.d.ts +52 -0
  38. package/dist/loop-engine.d.ts.map +1 -1
  39. package/dist/loop-engine.js +91 -10
  40. package/dist/loop-engine.js.map +1 -1
  41. package/dist/loop-llm-flag.d.ts +32 -0
  42. package/dist/loop-llm-flag.d.ts.map +1 -0
  43. package/dist/loop-llm-flag.js +35 -0
  44. package/dist/loop-llm-flag.js.map +1 -0
  45. package/dist/loop-operational-block.d.ts +44 -0
  46. package/dist/loop-operational-block.d.ts.map +1 -0
  47. package/dist/loop-operational-block.js +47 -0
  48. package/dist/loop-operational-block.js.map +1 -0
  49. package/dist/merge-back-loop.d.ts.map +1 -1
  50. package/dist/merge-back-loop.js +1 -0
  51. package/dist/merge-back-loop.js.map +1 -1
  52. package/dist/nexus-intake.d.ts +26 -3
  53. package/dist/nexus-intake.d.ts.map +1 -1
  54. package/dist/nexus-intake.js +62 -10
  55. package/dist/nexus-intake.js.map +1 -1
  56. package/dist/types/focus.d.ts +24 -0
  57. package/dist/types/focus.d.ts.map +1 -1
  58. package/package.json +2 -2
  59. package/dist/crash-recovery-cleanup.d.ts +0 -21
  60. package/dist/crash-recovery-cleanup.d.ts.map +0 -1
  61. package/dist/crash-recovery-cleanup.js +0 -205
  62. package/dist/crash-recovery-cleanup.js.map +0 -1
  63. package/dist/crash-recovery-scan.d.ts +0 -19
  64. package/dist/crash-recovery-scan.d.ts.map +0 -1
  65. package/dist/crash-recovery-scan.js +0 -145
  66. package/dist/crash-recovery-scan.js.map +0 -1
  67. package/dist/crash-recovery-types.d.ts +0 -49
  68. package/dist/crash-recovery-types.d.ts.map +0 -1
  69. package/dist/crash-recovery-types.js +0 -13
  70. 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, and
31
- * per-delivery iteration_count. Any moving axis -- including the two
32
- * daemon-owned ones -- is progress, so snapshotsEqual returns false.
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;;;;;;;;;;GAUG;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,GACvB,gBAAgB,CAelB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAOhF"}
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, and
83
- * per-delivery iteration_count. Any moving axis -- including the two
84
- * daemon-owned ones -- is progress, so snapshotsEqual returns false.
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":"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"}
1
+ {"version":3,"file":"progress-snapshot.js","sourceRoot":"","sources":["../../src/completion/progress-snapshot.ts"],"names":[],"mappings":"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"}
@@ -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;AAMpF,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,kBAAkB,GAAG,8BAA8B,CAAC;IACtF,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,iBAAiB,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACjD,gBAAgB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC,CAAC;IAClK,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzF,gBAAgB,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CACvG;AAsBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBvE;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,YAA0B,GAC/B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA+G7B;AA+FD;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,gBAAgB,EAAE,EAC3B,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,YAA0B,GAC/B,OAAO,CAAC,aAAa,EAAE,CAAC,CAyE1B;AAgBD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,GACnB;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAwC3C;AAID;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,YAA0B,GAC/B,OAAO,CAAC,cAAc,CAAC,CAwHzB"}
1
+ {"version":3,"file":"crash-recovery.d.ts","sourceRoot":"","sources":["../src/crash-recovery.ts"],"names":[],"mappings":"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"}
@@ -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 { ESCALATION_REASONS, ESCALATION_DISPOSITIONS } from '@telora/daemon-core';
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
- console.warn(`[crash-recovery] Safety commit failed for ${worktreePath}, preserving as-is`);
192
- return {
193
- worktreePath,
194
- branchName,
195
- action: 'preserved',
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
- console.log(`[crash-recovery] Preserving orphan with ${unmergedCount} unmerged commit(s): ${worktreePath} [${branchName}]`);
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
- // Escalate preserved orphans
266
- const preserved = actions.filter((a) => a.action === 'preserved' || a.action === 'safety-committed');
267
- if (preserved.length > 0) {
268
- const lines = preserved.map((a) => `- ${a.branchName} (${a.worktreePath})` +
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.commitHash ? ` — safety commit: ${a.commitHash.slice(0, 8)}` : ''));
271
- const description = `Daemon crash recovery found ${preserved.length} orphaned worktree(s) with unmerged work:\n\n` +
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: preserved[0].branchName, // No session available, use branch as context
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 branches and
281
- // decides to merge or delete -- not an intent-owner decision.
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
- anchor: { branch: preserved[0].branchName },
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 scanned for orphaned worktrees and preserved those with unmerged commits.',
286
- helpNeeded: 'Inspect the preserved branches and either merge them to integration or delete them.',
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 ${preserved.length} preserved orphan(s)`);
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
- console.log(`[crash-recovery] Preserving stale branch with unmerged commits: ${branch}`);
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,EACzB,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;AAiBjD;;;;;;;;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,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,CA6KpF"}
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"}