@lumenflow/core 2.18.3 → 2.20.0

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 (215) hide show
  1. package/dist/adapters/terminal-renderer.adapter.d.ts.map +1 -1
  2. package/dist/adapters/terminal-renderer.adapter.js +6 -4
  3. package/dist/adapters/terminal-renderer.adapter.js.map +1 -1
  4. package/dist/arg-parser.js +2 -2
  5. package/dist/arg-parser.js.map +1 -1
  6. package/dist/atomic-merge.d.ts +21 -0
  7. package/dist/atomic-merge.d.ts.map +1 -0
  8. package/dist/atomic-merge.js +83 -0
  9. package/dist/atomic-merge.js.map +1 -0
  10. package/dist/context/wu-state-reader.d.ts +2 -0
  11. package/dist/context/wu-state-reader.d.ts.map +1 -1
  12. package/dist/context/wu-state-reader.js +3 -0
  13. package/dist/context/wu-state-reader.js.map +1 -1
  14. package/dist/delegation-escalation.d.ts +91 -0
  15. package/dist/delegation-escalation.d.ts.map +1 -0
  16. package/dist/delegation-escalation.js +258 -0
  17. package/dist/delegation-escalation.js.map +1 -0
  18. package/dist/delegation-monitor.d.ts +230 -0
  19. package/dist/delegation-monitor.d.ts.map +1 -0
  20. package/dist/delegation-monitor.js +675 -0
  21. package/dist/delegation-monitor.js.map +1 -0
  22. package/dist/delegation-recovery.d.ts +83 -0
  23. package/dist/delegation-recovery.d.ts.map +1 -0
  24. package/dist/delegation-recovery.js +299 -0
  25. package/dist/delegation-recovery.js.map +1 -0
  26. package/dist/delegation-registry-schema.d.ts +80 -0
  27. package/dist/delegation-registry-schema.d.ts.map +1 -0
  28. package/dist/delegation-registry-schema.js +91 -0
  29. package/dist/delegation-registry-schema.js.map +1 -0
  30. package/dist/delegation-registry-store.d.ts +159 -0
  31. package/dist/delegation-registry-store.d.ts.map +1 -0
  32. package/dist/delegation-registry-store.js +299 -0
  33. package/dist/delegation-registry-store.js.map +1 -0
  34. package/dist/delegation-tree.d.ts +57 -0
  35. package/dist/delegation-tree.d.ts.map +1 -0
  36. package/dist/delegation-tree.js +203 -0
  37. package/dist/delegation-tree.js.map +1 -0
  38. package/dist/gates-agent-mode.d.ts +25 -0
  39. package/dist/gates-agent-mode.d.ts.map +1 -1
  40. package/dist/gates-agent-mode.js +41 -0
  41. package/dist/gates-agent-mode.js.map +1 -1
  42. package/dist/index.d.ts +16 -7
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +20 -9
  45. package/dist/index.js.map +1 -1
  46. package/dist/lumenflow-config-schema.d.ts +9 -3
  47. package/dist/lumenflow-config-schema.d.ts.map +1 -1
  48. package/dist/lumenflow-config-schema.js +19 -4
  49. package/dist/lumenflow-config-schema.js.map +1 -1
  50. package/dist/lumenflow-config.d.ts +2 -0
  51. package/dist/lumenflow-config.d.ts.map +1 -1
  52. package/dist/lumenflow-config.js +1 -0
  53. package/dist/lumenflow-config.js.map +1 -1
  54. package/dist/micro-worktree.d.ts.map +1 -1
  55. package/dist/micro-worktree.js +15 -9
  56. package/dist/micro-worktree.js.map +1 -1
  57. package/dist/rollback-utils.d.ts +52 -0
  58. package/dist/rollback-utils.d.ts.map +1 -1
  59. package/dist/rollback-utils.js +111 -0
  60. package/dist/rollback-utils.js.map +1 -1
  61. package/dist/sandbox-allowlist.d.ts +16 -0
  62. package/dist/sandbox-allowlist.d.ts.map +1 -0
  63. package/dist/sandbox-allowlist.js +75 -0
  64. package/dist/sandbox-allowlist.js.map +1 -0
  65. package/dist/sandbox-backend-linux.d.ts +6 -0
  66. package/dist/sandbox-backend-linux.d.ts.map +1 -0
  67. package/dist/sandbox-backend-linux.js +65 -0
  68. package/dist/sandbox-backend-linux.js.map +1 -0
  69. package/dist/sandbox-backend-macos.d.ts +6 -0
  70. package/dist/sandbox-backend-macos.d.ts.map +1 -0
  71. package/dist/sandbox-backend-macos.js +64 -0
  72. package/dist/sandbox-backend-macos.js.map +1 -0
  73. package/dist/sandbox-backend-windows.d.ts +6 -0
  74. package/dist/sandbox-backend-windows.d.ts.map +1 -0
  75. package/dist/sandbox-backend-windows.js +28 -0
  76. package/dist/sandbox-backend-windows.js.map +1 -0
  77. package/dist/sandbox-profile.d.ts +53 -0
  78. package/dist/sandbox-profile.d.ts.map +1 -0
  79. package/dist/sandbox-profile.js +62 -0
  80. package/dist/sandbox-profile.js.map +1 -0
  81. package/dist/schemas/index.d.ts +3 -3
  82. package/dist/schemas/index.d.ts.map +1 -1
  83. package/dist/schemas/index.js +6 -6
  84. package/dist/schemas/index.js.map +1 -1
  85. package/dist/schemas/initiative-arg-validators.d.ts +1 -0
  86. package/dist/schemas/initiative-arg-validators.d.ts.map +1 -1
  87. package/dist/schemas/initiative-schemas.d.ts +3 -1
  88. package/dist/schemas/initiative-schemas.d.ts.map +1 -1
  89. package/dist/schemas/initiative-schemas.js +2 -1
  90. package/dist/schemas/initiative-schemas.js.map +1 -1
  91. package/dist/schemas/setup-arg-validators.d.ts +4 -4
  92. package/dist/schemas/setup-arg-validators.d.ts.map +1 -1
  93. package/dist/schemas/setup-arg-validators.js +6 -6
  94. package/dist/schemas/setup-arg-validators.js.map +1 -1
  95. package/dist/schemas/setup-schemas.d.ts +7 -7
  96. package/dist/schemas/setup-schemas.d.ts.map +1 -1
  97. package/dist/schemas/setup-schemas.js +11 -11
  98. package/dist/schemas/setup-schemas.js.map +1 -1
  99. package/dist/schemas/wu-lifecycle-arg-validators.d.ts +2 -1
  100. package/dist/schemas/wu-lifecycle-arg-validators.d.ts.map +1 -1
  101. package/dist/schemas/wu-lifecycle-schemas.d.ts +5 -3
  102. package/dist/schemas/wu-lifecycle-schemas.d.ts.map +1 -1
  103. package/dist/schemas/wu-lifecycle-schemas.js +6 -2
  104. package/dist/schemas/wu-lifecycle-schemas.js.map +1 -1
  105. package/dist/spawn-strategy.d.ts +1 -1
  106. package/dist/spawn-strategy.js +1 -1
  107. package/dist/template-loader.d.ts +7 -3
  108. package/dist/template-loader.d.ts.map +1 -1
  109. package/dist/template-loader.js +22 -6
  110. package/dist/template-loader.js.map +1 -1
  111. package/dist/validation/types.d.ts +2 -0
  112. package/dist/validation/types.d.ts.map +1 -1
  113. package/dist/wu-consistency-checker.d.ts +1 -0
  114. package/dist/wu-consistency-checker.d.ts.map +1 -1
  115. package/dist/wu-consistency-checker.js +31 -2
  116. package/dist/wu-consistency-checker.js.map +1 -1
  117. package/dist/wu-context-constants.d.ts +4 -2
  118. package/dist/wu-context-constants.d.ts.map +1 -1
  119. package/dist/wu-context-constants.js +4 -2
  120. package/dist/wu-context-constants.js.map +1 -1
  121. package/dist/wu-done-branch-only.d.ts +2 -11
  122. package/dist/wu-done-branch-only.d.ts.map +1 -1
  123. package/dist/wu-done-branch-only.js +81 -45
  124. package/dist/wu-done-branch-only.js.map +1 -1
  125. package/dist/wu-done-cleanup.js +33 -1
  126. package/dist/wu-done-cleanup.js.map +1 -1
  127. package/dist/wu-done-initiative-sync.d.ts.map +1 -1
  128. package/dist/wu-done-initiative-sync.js +20 -5
  129. package/dist/wu-done-initiative-sync.js.map +1 -1
  130. package/dist/wu-done-machine.d.ts +175 -0
  131. package/dist/wu-done-machine.d.ts.map +1 -0
  132. package/dist/wu-done-machine.js +225 -0
  133. package/dist/wu-done-machine.js.map +1 -0
  134. package/dist/wu-done-metadata.d.ts.map +1 -1
  135. package/dist/wu-done-metadata.js +3 -1
  136. package/dist/wu-done-metadata.js.map +1 -1
  137. package/dist/wu-done-preflight.d.ts +8 -0
  138. package/dist/wu-done-preflight.d.ts.map +1 -1
  139. package/dist/wu-done-preflight.js +17 -1
  140. package/dist/wu-done-preflight.js.map +1 -1
  141. package/dist/wu-done-validation.d.ts +0 -37
  142. package/dist/wu-done-validation.d.ts.map +1 -1
  143. package/dist/wu-done-validation.js +1 -155
  144. package/dist/wu-done-validation.js.map +1 -1
  145. package/dist/wu-done-validators.d.ts +1 -2
  146. package/dist/wu-done-validators.d.ts.map +1 -1
  147. package/dist/wu-done-validators.js +1 -3
  148. package/dist/wu-done-validators.js.map +1 -1
  149. package/dist/wu-done-worktree-services.d.ts +191 -0
  150. package/dist/wu-done-worktree-services.d.ts.map +1 -0
  151. package/dist/wu-done-worktree-services.js +273 -0
  152. package/dist/wu-done-worktree-services.js.map +1 -0
  153. package/dist/wu-done-worktree.d.ts +0 -19
  154. package/dist/wu-done-worktree.d.ts.map +1 -1
  155. package/dist/wu-done-worktree.js +165 -118
  156. package/dist/wu-done-worktree.js.map +1 -1
  157. package/dist/wu-git-constants.d.ts +4 -0
  158. package/dist/wu-git-constants.d.ts.map +1 -1
  159. package/dist/wu-git-constants.js +4 -0
  160. package/dist/wu-git-constants.js.map +1 -1
  161. package/dist/wu-helpers.d.ts +5 -1
  162. package/dist/wu-helpers.d.ts.map +1 -1
  163. package/dist/wu-helpers.js +5 -1
  164. package/dist/wu-helpers.js.map +1 -1
  165. package/dist/wu-lint.d.ts +53 -37
  166. package/dist/wu-lint.d.ts.map +1 -1
  167. package/dist/wu-lint.js +95 -105
  168. package/dist/wu-lint.js.map +1 -1
  169. package/dist/wu-paths-constants.d.ts +3 -3
  170. package/dist/wu-paths-constants.d.ts.map +1 -1
  171. package/dist/wu-paths-constants.js +3 -3
  172. package/dist/wu-paths-constants.js.map +1 -1
  173. package/dist/wu-preflight-validators.d.ts +28 -77
  174. package/dist/wu-preflight-validators.d.ts.map +1 -1
  175. package/dist/wu-preflight-validators.js +86 -130
  176. package/dist/wu-preflight-validators.js.map +1 -1
  177. package/dist/wu-recovery.d.ts +89 -0
  178. package/dist/wu-recovery.d.ts.map +1 -1
  179. package/dist/wu-recovery.js +118 -0
  180. package/dist/wu-recovery.js.map +1 -1
  181. package/dist/wu-rules-core.d.ts +95 -0
  182. package/dist/wu-rules-core.d.ts.map +1 -0
  183. package/dist/wu-rules-core.js +399 -0
  184. package/dist/wu-rules-core.js.map +1 -0
  185. package/dist/wu-rules-engine.d.ts +29 -0
  186. package/dist/wu-rules-engine.d.ts.map +1 -0
  187. package/dist/wu-rules-engine.js +59 -0
  188. package/dist/wu-rules-engine.js.map +1 -0
  189. package/dist/wu-rules-resolvers.d.ts +19 -0
  190. package/dist/wu-rules-resolvers.d.ts.map +1 -0
  191. package/dist/wu-rules-resolvers.js +208 -0
  192. package/dist/wu-rules-resolvers.js.map +1 -0
  193. package/dist/wu-schema.d.ts +24 -9
  194. package/dist/wu-schema.d.ts.map +1 -1
  195. package/dist/wu-schema.js +14 -1
  196. package/dist/wu-schema.js.map +1 -1
  197. package/dist/wu-spawn-context.d.ts +1 -1
  198. package/dist/wu-spawn-context.d.ts.map +1 -1
  199. package/dist/wu-spawn-context.js +8 -2
  200. package/dist/wu-spawn-context.js.map +1 -1
  201. package/dist/wu-spawn-helpers.js +2 -2
  202. package/dist/wu-spawn-helpers.js.map +1 -1
  203. package/dist/wu-state-schema.d.ts +12 -12
  204. package/dist/wu-state-schema.d.ts.map +1 -1
  205. package/dist/wu-state-schema.js +10 -10
  206. package/dist/wu-state-schema.js.map +1 -1
  207. package/dist/wu-state-store.d.ts +10 -4
  208. package/dist/wu-state-store.d.ts.map +1 -1
  209. package/dist/wu-state-store.js +309 -11
  210. package/dist/wu-state-store.js.map +1 -1
  211. package/dist/wu-transaction.d.ts +21 -0
  212. package/dist/wu-transaction.d.ts.map +1 -1
  213. package/dist/wu-transaction.js +17 -0
  214. package/dist/wu-transaction.js.map +1 -1
  215. package/package.json +14 -11
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Delegation Escalation Module (WU-1952, WU-1967)
3
+ *
4
+ * WU-1967: Replaced Bug WU creation with memory bus signalling.
5
+ * Signals orchestrator inbox instead of creating human-in-loop Bug WUs.
6
+ *
7
+ * Escalation Flow:
8
+ * 1. recoverStuckDelegation() returns { recovered: false, action: ESCALATED_STUCK }
9
+ * 2. escalateStuckDelegation() signals orchestrator via memory bus
10
+ * 3. Delegation status updated to ESCALATED (prevents duplicate signals)
11
+ * 4. Orchestrator decides: retry (1st), block (2nd), human escalate (3rd+)
12
+ *
13
+ * Library-First Note: This is project-specific delegation escalation code for
14
+ * PatientPath's custom delegation-registry.jsonl and memory bus patterns.
15
+ * No external library exists for this domain-specific agent lifecycle management.
16
+ *
17
+ * @see {@link packages/@lumenflow/cli/src/lib/__tests__/delegation-escalation.test.ts} - Tests
18
+ * @see {@link packages/@lumenflow/cli/src/lib/delegation-recovery.ts} - Recovery logic
19
+ * @see {@link packages/@lumenflow/cli/src/lib/mem-signal-core.ts} - Signal creation
20
+ */
21
+ import fs from 'node:fs/promises';
22
+ import path from 'node:path';
23
+ import { DelegationRegistryStore } from './delegation-registry-store.js';
24
+ import { DelegationStatus } from './delegation-registry-schema.js';
25
+ import { RECOVERY_DIR_NAME } from './delegation-recovery.js';
26
+ import { LUMENFLOW_PATHS } from './wu-constants.js';
27
+ let createSignal = null;
28
+ try {
29
+ const mod = await import('@lumenflow/memory/signal');
30
+ createSignal = mod.createSignal;
31
+ }
32
+ catch {
33
+ // @lumenflow/memory not available - signal features disabled
34
+ }
35
+ /**
36
+ * Log prefix for delegation-escalation messages
37
+ */
38
+ const LOG_PREFIX = '[delegation-escalation]';
39
+ /**
40
+ * Signal type for delegation failures.
41
+ */
42
+ export const DELEGATION_FAILURE_SIGNAL_TYPE = 'delegation_failure';
43
+ /**
44
+ * Severity levels for delegation failure signals
45
+ */
46
+ export const SignalSeverity = Object.freeze({
47
+ WARNING: 'warning',
48
+ ERROR: 'error',
49
+ CRITICAL: 'critical',
50
+ });
51
+ /**
52
+ * Suggested actions for delegation failure signals
53
+ */
54
+ export const SuggestedAction = Object.freeze({
55
+ RETRY: 'retry',
56
+ BLOCK: 'block',
57
+ HUMAN_ESCALATE: 'human_escalate',
58
+ });
59
+ /**
60
+ * @typedef {Object} DelegationFailureSignal
61
+ * @property {string} type - Always 'delegation_failure'
62
+ * @property {string} severity - 'warning' | 'error' | 'critical'
63
+ * @property {string} delegation_id - Delegation ID
64
+ * @property {string} target_wu_id - Target WU ID
65
+ * @property {string} parent_wu_id - Parent WU ID (orchestrator)
66
+ * @property {string} lane - Lane name
67
+ * @property {string} recovery_action - Recovery action that triggered escalation
68
+ * @property {number} recovery_attempts - Number of recovery attempts
69
+ * @property {string|null} last_checkpoint - Last checkpoint timestamp
70
+ * @property {string} suggested_action - 'retry' | 'block' | 'human_escalate'
71
+ * @property {string} message - Human-readable message
72
+ */
73
+ /**
74
+ * @typedef {Object} EscalationResult
75
+ * @property {string} signalId - Signal ID (e.g., 'sig-abc12345')
76
+ * @property {DelegationFailureSignal} signal - The signal payload
77
+ * @property {string} delegationStatus - Updated delegation status (ESCALATED)
78
+ */
79
+ /**
80
+ * @typedef {Object} AuditLogEntry
81
+ * @property {string} timestamp - ISO timestamp of recovery action
82
+ * @property {string} delegationId - ID of the delegation being recovered
83
+ * @property {string} action - Recovery action taken
84
+ * @property {string} reason - Explanation of why action was taken
85
+ * @property {Object} context - Additional context
86
+ */
87
+ /**
88
+ * Counts existing escalation attempts for a delegation by reading audit logs.
89
+ *
90
+ * @param {string} baseDir - Base directory
91
+ * @param {string} delegationId - Delegation ID to count attempts for
92
+ * @returns {Promise<number>} Number of previous escalation attempts
93
+ */
94
+ async function countEscalationAttempts(baseDir, delegationId) {
95
+ // WU-1421: Use LUMENFLOW_PATHS.BASE for consistency
96
+ const recoveryDir = path.join(baseDir, LUMENFLOW_PATHS.BASE, RECOVERY_DIR_NAME);
97
+ try {
98
+ const files = await fs.readdir(recoveryDir);
99
+ const delegationFiles = files.filter((f) => f.startsWith(`${delegationId}-`) && f.endsWith('.json'));
100
+ return delegationFiles.length;
101
+ }
102
+ catch (error) {
103
+ if (error.code === 'ENOENT') {
104
+ return 0;
105
+ }
106
+ throw error;
107
+ }
108
+ }
109
+ /**
110
+ * Determines severity and suggested action based on recovery attempts.
111
+ *
112
+ * @param {number} attempts - Number of recovery attempts
113
+ * @returns {{ severity: string, suggestedAction: string }}
114
+ */
115
+ function determineEscalationLevel(attempts) {
116
+ if (attempts <= 1) {
117
+ return {
118
+ severity: SignalSeverity.WARNING,
119
+ suggestedAction: SuggestedAction.RETRY,
120
+ };
121
+ }
122
+ else if (attempts === 2) {
123
+ return {
124
+ severity: SignalSeverity.ERROR,
125
+ suggestedAction: SuggestedAction.BLOCK,
126
+ };
127
+ }
128
+ else {
129
+ return {
130
+ severity: SignalSeverity.CRITICAL,
131
+ suggestedAction: SuggestedAction.HUMAN_ESCALATE,
132
+ };
133
+ }
134
+ }
135
+ /**
136
+ * Find the most recent escalation audit log for a delegation.
137
+ *
138
+ * @param {string} baseDir - Base directory
139
+ * @param {string} delegationId - Delegation ID to find audit log for
140
+ * @returns {Promise<AuditLogEntry|null>} Audit log entry or null if not found
141
+ */
142
+ async function findEscalationAuditLog(baseDir, delegationId) {
143
+ // WU-1421: Use LUMENFLOW_PATHS.BASE for consistency
144
+ const recoveryDir = path.join(baseDir, LUMENFLOW_PATHS.BASE, RECOVERY_DIR_NAME);
145
+ try {
146
+ const files = await fs.readdir(recoveryDir);
147
+ // Filter files for this delegation ID, sorted by name (timestamp-based)
148
+ const delegationFiles = files
149
+ .filter((f) => f.startsWith(`${delegationId}-`) && f.endsWith('.json'))
150
+ .sort()
151
+ .reverse(); // Most recent first
152
+ if (delegationFiles.length === 0) {
153
+ return null;
154
+ }
155
+ // Read the most recent audit log
156
+ const auditPath = path.join(recoveryDir, delegationFiles[0]);
157
+ const content = await fs.readFile(auditPath, 'utf-8');
158
+ return JSON.parse(content);
159
+ }
160
+ catch (error) {
161
+ if (error.code === 'ENOENT') {
162
+ return null;
163
+ }
164
+ throw error;
165
+ }
166
+ }
167
+ /**
168
+ * Builds a delegation failure signal payload.
169
+ *
170
+ * @param {Object} delegation - Delegation event data
171
+ * @param {AuditLogEntry} auditLog - Escalation audit log
172
+ * @param {number} attempts - Number of recovery attempts
173
+ * @returns {DelegationFailureSignal} Signal payload
174
+ */
175
+ function buildDelegationFailureSignal(delegation, auditLog, attempts) {
176
+ const { severity, suggestedAction } = determineEscalationLevel(attempts);
177
+ const lastCheckpoint = auditLog.context.lastCheckpoint || null;
178
+ return {
179
+ type: DELEGATION_FAILURE_SIGNAL_TYPE,
180
+ severity,
181
+ delegation_id: delegation.id,
182
+ target_wu_id: delegation.targetWuId,
183
+ parent_wu_id: delegation.parentWuId,
184
+ lane: delegation.lane,
185
+ recovery_action: auditLog.action,
186
+ recovery_attempts: attempts,
187
+ last_checkpoint: lastCheckpoint,
188
+ suggested_action: suggestedAction,
189
+ message: `Delegation ${delegation.id} for ${delegation.targetWuId} stuck: ${auditLog.reason}`,
190
+ };
191
+ }
192
+ export async function escalateStuckDelegation(delegationId, options = {}) {
193
+ const { baseDir = process.cwd(), dryRun = false } = options;
194
+ // WU-1421: Use LUMENFLOW_PATHS.STATE_DIR for consistency
195
+ const registryDir = path.join(baseDir, LUMENFLOW_PATHS.STATE_DIR);
196
+ // Load delegation registry
197
+ const store = new DelegationRegistryStore(registryDir);
198
+ try {
199
+ await store.load();
200
+ }
201
+ catch {
202
+ throw new Error(`Delegation ${delegationId} not found: registry unavailable`);
203
+ }
204
+ // Find the delegation
205
+ const delegation = store.getById(delegationId);
206
+ if (!delegation) {
207
+ throw new Error(`Delegation ${delegationId} not found in registry`);
208
+ }
209
+ // Check if signal module is available
210
+ if (!createSignal) {
211
+ throw new Error('Signal module (@lumenflow/memory) not available - cannot escalate');
212
+ }
213
+ // WU-1967: Check if already escalated (prevents duplicate signals)
214
+ if (delegation.status === DelegationStatus.ESCALATED) {
215
+ throw new Error(`Delegation ${delegationId} already escalated`);
216
+ }
217
+ // Find escalation audit log
218
+ const auditLog = await findEscalationAuditLog(baseDir, delegationId);
219
+ if (!auditLog) {
220
+ throw new Error(`No escalation audit log found for delegation ${delegationId}`);
221
+ }
222
+ // Count previous escalation attempts
223
+ const attempts = await countEscalationAttempts(baseDir, delegationId);
224
+ // Build signal payload
225
+ const signalPayload = buildDelegationFailureSignal(delegation, auditLog, attempts);
226
+ if (dryRun) {
227
+ console.log(`${LOG_PREFIX} [dry-run] Would signal orchestrator`);
228
+ console.log(`${LOG_PREFIX} [dry-run] Severity: ${signalPayload.severity}`);
229
+ console.log(`${LOG_PREFIX} [dry-run] Suggested action: ${signalPayload.suggested_action}`);
230
+ console.log(`${LOG_PREFIX} [dry-run] Message: ${signalPayload.message}`);
231
+ return {
232
+ signalId: 'sig-dry-run',
233
+ signal: signalPayload,
234
+ delegationStatus: DelegationStatus.ESCALATED,
235
+ };
236
+ }
237
+ // WU-1967: Send signal to orchestrator inbox
238
+ console.log(`${LOG_PREFIX} Signalling orchestrator for delegation ${delegationId}`);
239
+ console.log(`${LOG_PREFIX} Target WU: ${delegation.targetWuId}`);
240
+ console.log(`${LOG_PREFIX} Severity: ${signalPayload.severity}`);
241
+ console.log(`${LOG_PREFIX} Suggested action: ${signalPayload.suggested_action}`);
242
+ // Create signal with structured message (JSON payload in message field)
243
+ const signalResult = await createSignal(baseDir, {
244
+ message: JSON.stringify(signalPayload),
245
+ wuId: delegation.parentWuId, // Signal targets the orchestrator (parent WU)
246
+ lane: delegation.lane,
247
+ });
248
+ // Update delegation status to ESCALATED (prevents duplicate signals)
249
+ await store.updateStatus(delegationId, DelegationStatus.ESCALATED);
250
+ console.log(`${LOG_PREFIX} Signal sent: ${signalResult.signal.id}`);
251
+ console.log(`${LOG_PREFIX} Delegation ${delegationId} status updated to ESCALATED`);
252
+ return {
253
+ signalId: signalResult.signal.id,
254
+ signal: signalPayload,
255
+ delegationStatus: DelegationStatus.ESCALATED,
256
+ };
257
+ }
258
+ //# sourceMappingURL=delegation-escalation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation-escalation.js","sourceRoot":"","sources":["../src/delegation-escalation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Delegation Monitor Library (WU-1948, WU-1968)
3
+ *
4
+ * Core monitoring logic for detecting stuck delegations and zombie locks.
5
+ * Used by orchestrate:monitor CLI command.
6
+ *
7
+ * Features:
8
+ * - Analyzes delegation registry for status counts
9
+ * - Detects pending delegations older than threshold (stuck)
10
+ * - Checks lane locks for zombie PIDs
11
+ * - Generates recovery suggestions
12
+ * - WU-1968: Processes delegation_failure signals from memory bus
13
+ *
14
+ * Library-First Note: This is project-specific monitoring code for
15
+ * PatientPath's delegation-registry.jsonl and lane-lock files. No external
16
+ * library exists for this custom format.
17
+ *
18
+ * @see {@link packages/@lumenflow/cli/src/__tests__/orchestrate-monitor.test.ts} - Tests
19
+ * @see {@link packages/@lumenflow/cli/src/lib/__tests__/delegation-monitor.test.ts} - Signal handler tests
20
+ * @see {@link packages/@lumenflow/cli/src/orchestrate-monitor.ts} - CLI entry point
21
+ * @see {@link packages/@lumenflow/cli/src/lib/delegation-registry-store.ts} - Registry storage
22
+ */
23
+ /**
24
+ * Default threshold for stuck delegation detection (in minutes)
25
+ */
26
+ export declare const DEFAULT_THRESHOLD_MINUTES = 30;
27
+ /**
28
+ * Log prefix for delegation-monitor messages
29
+ */
30
+ export declare const LOG_PREFIX = "[delegation-monitor]";
31
+ /**
32
+ * @typedef {Object} SpawnAnalysis
33
+ * @property {number} pending - Count of pending delegations
34
+ * @property {number} completed - Count of completed delegations
35
+ * @property {number} timeout - Count of timed out delegations
36
+ * @property {number} crashed - Count of crashed delegations
37
+ * @property {number} total - Total delegation count
38
+ */
39
+ /**
40
+ * @typedef {Object} StuckSpawnInfo
41
+ * @property {import('./delegation-registry-schema.js').DelegationEvent} delegation - The stuck delegation event
42
+ * @property {number} ageMinutes - Age of delegation in minutes
43
+ * @property {string|null} lastCheckpoint - Last checkpoint timestamp (if available from memory layer)
44
+ */
45
+ /**
46
+ * @typedef {Object} ZombieLockInfo
47
+ * @property {string} wuId - WU ID that holds the zombie lock
48
+ * @property {string} lane - Lane name
49
+ * @property {number} pid - Process ID (no longer running)
50
+ * @property {string} timestamp - When lock was acquired
51
+ */
52
+ /**
53
+ * @typedef {Object} Suggestion
54
+ * @property {string} command - Suggested command to run
55
+ * @property {string} reason - Explanation of why this is suggested
56
+ */
57
+ /**
58
+ * @typedef {Object} MonitorResult
59
+ * @property {SpawnAnalysis} analysis - Delegation status counts
60
+ * @property {StuckSpawnInfo[]} stuckDelegations - List of stuck delegations
61
+ * @property {ZombieLockInfo[]} zombieLocks - List of zombie locks
62
+ * @property {Suggestion[]} suggestions - Recovery suggestions
63
+ */
64
+ /**
65
+ * @typedef {Object} RecoveryResultInfo
66
+ * @property {string} delegationId - ID of the delegation that was processed
67
+ * @property {string} targetWuId - Target WU ID for the delegation
68
+ * @property {string} action - Recovery action taken (from RecoveryAction)
69
+ * @property {boolean} recovered - Whether auto-recovery was successful
70
+ * @property {string} reason - Human-readable explanation
71
+ * @property {Object} [escalation] - Escalation info if action is ESCALATED_STUCK
72
+ * @property {string} [escalation.bugWuId] - Bug WU ID created for escalation
73
+ * @property {string} [escalation.title] - Bug WU title
74
+ */
75
+ /**
76
+ * Analyzes delegation events and returns status counts.
77
+ *
78
+ * @param {import('./delegation-registry-schema.js').DelegationEvent[]} delegations - Array of delegation events
79
+ * @returns {SpawnAnalysis} Status counts
80
+ *
81
+ * @example
82
+ * const analysis = analyzeDelegations(delegations);
83
+ * console.log(`Pending: ${analysis.pending}, Completed: ${analysis.completed}`);
84
+ */
85
+ export declare function analyzeDelegations(delegations: any): {
86
+ pending: number;
87
+ completed: number;
88
+ timeout: number;
89
+ crashed: number;
90
+ total: any;
91
+ };
92
+ /**
93
+ * Detects pending delegations that have been running longer than the threshold.
94
+ *
95
+ * @param {import('./delegation-registry-schema.js').DelegationEvent[]} delegations - Array of delegation events
96
+ * @param {number} [thresholdMinutes=DEFAULT_THRESHOLD_MINUTES] - Threshold in minutes
97
+ * @returns {StuckSpawnInfo[]} Array of stuck delegation info
98
+ *
99
+ * @example
100
+ * const stuck = detectStuckDelegations(delegations, 30);
101
+ * for (const info of stuck) {
102
+ * console.log(`${info.delegation.targetWuId} stuck for ${info.ageMinutes} minutes`);
103
+ * }
104
+ */
105
+ export declare function detectStuckDelegations(delegations: any, thresholdMinutes?: number): any[];
106
+ /**
107
+ * Checks lane lock files for zombie locks (dead PIDs).
108
+ *
109
+ * @param {SpawnMonitorBaseDirOptions} [options] - Options
110
+ * @returns {Promise<ZombieLockInfo[]>} Array of zombie lock info
111
+ *
112
+ * @example
113
+ * const zombies = await checkZombieLocks();
114
+ * for (const lock of zombies) {
115
+ * console.log(`Zombie lock: ${lock.lane} (PID ${lock.pid})`);
116
+ * }
117
+ */
118
+ interface SpawnMonitorBaseDirOptions {
119
+ /** Base directory (defaults to process.cwd()) */
120
+ baseDir?: string;
121
+ }
122
+ export declare function checkZombieLocks(options?: SpawnMonitorBaseDirOptions): Promise<any[]>;
123
+ /**
124
+ * Generates recovery suggestions for stuck delegations and zombie locks.
125
+ *
126
+ * @param {StuckSpawnInfo[]} stuckDelegations - Array of stuck delegation info
127
+ * @param {ZombieLockInfo[]} zombieLocks - Array of zombie lock info
128
+ * @returns {Suggestion[]} Array of suggestions
129
+ *
130
+ * @example
131
+ * const suggestions = generateSuggestions(stuckDelegations, zombieLocks);
132
+ * for (const s of suggestions) {
133
+ * console.log(`${s.reason}\n ${s.command}`);
134
+ * }
135
+ */
136
+ export declare function generateSuggestions(stuckDelegations: any, zombieLocks: any): any[];
137
+ /**
138
+ * Formats monitor output for display.
139
+ *
140
+ * @param {MonitorResult} result - Monitor result to format
141
+ * @returns {string} Formatted output string
142
+ *
143
+ * @example
144
+ * const output = formatMonitorOutput(result);
145
+ * console.log(output);
146
+ */
147
+ export declare function formatMonitorOutput(result: any): string;
148
+ /**
149
+ * Runs recovery for stuck delegations by calling recoverStuckDelegation for each.
150
+ * When a delegation is escalated (action=ESCALATED_STUCK), chains to escalateStuckDelegation.
151
+ *
152
+ * @param {StuckSpawnInfo[]} stuckDelegations - Array of stuck delegation info
153
+ * @param {RunRecoveryOptions} [options] - Options
154
+ * @returns {Promise<RecoveryResultInfo[]>} Array of recovery results
155
+ *
156
+ * @example
157
+ * const results = await runRecovery(stuckDelegations, { baseDir: '/path/to/project' });
158
+ * for (const result of results) {
159
+ * console.log(`${result.delegationId}: ${result.action}`);
160
+ * }
161
+ */
162
+ interface RunRecoveryOptions extends SpawnMonitorBaseDirOptions {
163
+ /** If true, escalations return spec only */
164
+ dryRun?: boolean;
165
+ }
166
+ export declare function runRecovery(stuckDelegations: any, options?: RunRecoveryOptions): Promise<any[]>;
167
+ /**
168
+ * Formats recovery results for display.
169
+ *
170
+ * @param {RecoveryResultInfo[]} results - Array of recovery results
171
+ * @returns {string} Formatted output string
172
+ *
173
+ * @example
174
+ * const output = formatRecoveryResults(results);
175
+ * console.log(output);
176
+ */
177
+ export declare function formatRecoveryResults(results: any): string;
178
+ /**
179
+ * Log prefix for signal handler messages
180
+ */
181
+ export declare const SIGNAL_HANDLER_LOG_PREFIX = "[delegation-signal-handler]";
182
+ /**
183
+ * Response actions for delegation failure signals
184
+ */
185
+ export declare const SignalResponseAction: Readonly<{
186
+ RETRY: "retry";
187
+ BLOCK: "block";
188
+ BUG_WU: "bug_wu";
189
+ NONE: "none";
190
+ }>;
191
+ /**
192
+ * Processes delegation_failure signals from the memory bus.
193
+ *
194
+ * WU-1968: Orchestrator signal handler for delegation_failure signals.
195
+ *
196
+ * Response logic:
197
+ * - First failure (suggested_action=retry): logs warning, suggests retry
198
+ * - Second failure (suggested_action=block): marks WU blocked with reason
199
+ * - Third+ failure (suggested_action=human_escalate): creates Bug WU
200
+ *
201
+ * @param {RunRecoveryOptions} options - Options
202
+ * @returns {Promise<SignalProcessingResult>} Processing result
203
+ *
204
+ * @example
205
+ * const result = await processDelegationFailureSignals({ baseDir: '/path/to/project' });
206
+ * console.log(`Processed ${result.signalCount} signals`);
207
+ * for (const response of result.processed) {
208
+ * console.log(`${response.targetWuId}: ${response.action}`);
209
+ * }
210
+ */
211
+ export declare function processDelegationFailureSignals(options?: RunRecoveryOptions): Promise<{
212
+ processed: any[];
213
+ signalCount: number;
214
+ retryCount: number;
215
+ blockCount: number;
216
+ bugWuCount: number;
217
+ }>;
218
+ /**
219
+ * Formats signal handler output for display.
220
+ *
221
+ * @param {SignalProcessingResult} result - Processing result
222
+ * @returns {string} Formatted output string
223
+ *
224
+ * @example
225
+ * const output = formatSignalHandlerOutput(result);
226
+ * console.log(output);
227
+ */
228
+ export declare function formatSignalHandlerOutput(result: any): string;
229
+ export {};
230
+ //# sourceMappingURL=delegation-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation-monitor.d.ts","sourceRoot":"","sources":["../src/delegation-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA4BH;;GAEG;AACH,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,UAAU,yBAAyB,CAAC;AAEjD;;;;;;;GAOG;AAEH;;;;;GAKG;AAEH;;;;;;GAMG;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,KAAA;;;;;;EA2B7C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,KAAA,EAAE,gBAAgB,SAA4B,SA4B/F;AAED;;;;;;;;;;;GAWG;AACH,UAAU,0BAA0B;IAClC,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,0BAA+B,kBAuC9E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,gBAAgB,KAAA,EAAE,WAAW,KAAA,SAuBhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,KAAA,UAkEzC;AAED;;;;;;;;;;;;;GAaG;AACH,UAAU,kBAAmB,SAAQ,0BAA0B;IAC7D,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,gBAAgB,KAAA,EAAE,OAAO,GAAE,kBAAuB,kBA2CnF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,KAAA,UAkD5C;AAMD;;GAEG;AACH,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;EAK/B,CAAC;AAuIH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,+BAA+B,CAAC,OAAO,GAAE,kBAAuB;;;;;;GAwHrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,KAAA,UAmC/C"}