@generacy-ai/orchestrator 0.6.0 → 0.8.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 (208) hide show
  1. package/dist/config/loader.d.ts.map +1 -1
  2. package/dist/config/loader.js +32 -1
  3. package/dist/config/loader.js.map +1 -1
  4. package/dist/config/schema.d.ts +436 -7
  5. package/dist/config/schema.d.ts.map +1 -1
  6. package/dist/index.d.ts +3 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +4 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/launcher/agent-launcher.d.ts +15 -16
  11. package/dist/launcher/agent-launcher.d.ts.map +1 -1
  12. package/dist/launcher/agent-launcher.js +54 -23
  13. package/dist/launcher/agent-launcher.js.map +1 -1
  14. package/dist/launcher/constants.d.ts +5 -0
  15. package/dist/launcher/constants.d.ts.map +1 -0
  16. package/dist/launcher/constants.js +5 -0
  17. package/dist/launcher/constants.js.map +1 -0
  18. package/dist/launcher/errors.d.ts +15 -0
  19. package/dist/launcher/errors.d.ts.map +1 -0
  20. package/dist/launcher/errors.js +25 -0
  21. package/dist/launcher/errors.js.map +1 -0
  22. package/dist/launcher/generic-subprocess-plugin.d.ts +1 -0
  23. package/dist/launcher/generic-subprocess-plugin.d.ts.map +1 -1
  24. package/dist/launcher/generic-subprocess-plugin.js +2 -0
  25. package/dist/launcher/generic-subprocess-plugin.js.map +1 -1
  26. package/dist/launcher/index.d.ts +2 -1
  27. package/dist/launcher/index.d.ts.map +1 -1
  28. package/dist/launcher/index.js +1 -0
  29. package/dist/launcher/index.js.map +1 -1
  30. package/dist/launcher/types.d.ts +81 -4
  31. package/dist/launcher/types.d.ts.map +1 -1
  32. package/dist/routes/health.d.ts.map +1 -1
  33. package/dist/routes/health.js +5 -0
  34. package/dist/routes/health.js.map +1 -1
  35. package/dist/server.d.ts.map +1 -1
  36. package/dist/server.js +130 -26
  37. package/dist/server.js.map +1 -1
  38. package/dist/services/base-advance-monitor-service.d.ts +78 -0
  39. package/dist/services/base-advance-monitor-service.d.ts.map +1 -0
  40. package/dist/services/base-advance-monitor-service.js +233 -0
  41. package/dist/services/base-advance-monitor-service.js.map +1 -0
  42. package/dist/services/boot-resume-service.d.ts +19 -0
  43. package/dist/services/boot-resume-service.d.ts.map +1 -0
  44. package/dist/services/boot-resume-service.js +87 -0
  45. package/dist/services/boot-resume-service.js.map +1 -0
  46. package/dist/services/epic-completion-monitor-service.d.ts.map +1 -1
  47. package/dist/services/epic-completion-monitor-service.js +2 -0
  48. package/dist/services/epic-completion-monitor-service.js.map +1 -1
  49. package/dist/services/in-memory-queue-adapter.d.ts +4 -0
  50. package/dist/services/in-memory-queue-adapter.d.ts.map +1 -1
  51. package/dist/services/in-memory-queue-adapter.js +30 -3
  52. package/dist/services/in-memory-queue-adapter.js.map +1 -1
  53. package/dist/services/label-monitor-service.d.ts +3 -3
  54. package/dist/services/label-monitor-service.d.ts.map +1 -1
  55. package/dist/services/label-monitor-service.js +58 -41
  56. package/dist/services/label-monitor-service.js.map +1 -1
  57. package/dist/services/label-sync-service.d.ts.map +1 -1
  58. package/dist/services/label-sync-service.js +45 -10
  59. package/dist/services/label-sync-service.js.map +1 -1
  60. package/dist/services/merge-conflict-monitor-service.d.ts +73 -0
  61. package/dist/services/merge-conflict-monitor-service.d.ts.map +1 -0
  62. package/dist/services/merge-conflict-monitor-service.js +295 -0
  63. package/dist/services/merge-conflict-monitor-service.js.map +1 -0
  64. package/dist/services/orchestrator-version.d.ts +2 -0
  65. package/dist/services/orchestrator-version.d.ts.map +1 -0
  66. package/dist/services/orchestrator-version.js +23 -0
  67. package/dist/services/orchestrator-version.js.map +1 -0
  68. package/dist/services/phase-tracker-service.d.ts +10 -0
  69. package/dist/services/phase-tracker-service.d.ts.map +1 -1
  70. package/dist/services/phase-tracker-service.js +38 -0
  71. package/dist/services/phase-tracker-service.js.map +1 -1
  72. package/dist/services/post-activation-dispatch.d.ts +18 -0
  73. package/dist/services/post-activation-dispatch.d.ts.map +1 -0
  74. package/dist/services/post-activation-dispatch.js +30 -0
  75. package/dist/services/post-activation-dispatch.js.map +1 -0
  76. package/dist/services/post-activation-retry.d.ts +3 -0
  77. package/dist/services/post-activation-retry.d.ts.map +1 -1
  78. package/dist/services/post-activation-retry.js +34 -2
  79. package/dist/services/post-activation-retry.js.map +1 -1
  80. package/dist/services/pr-feedback-monitor-service.d.ts +13 -4
  81. package/dist/services/pr-feedback-monitor-service.d.ts.map +1 -1
  82. package/dist/services/pr-feedback-monitor-service.js +212 -26
  83. package/dist/services/pr-feedback-monitor-service.js.map +1 -1
  84. package/dist/services/redis-queue-adapter.d.ts +4 -0
  85. package/dist/services/redis-queue-adapter.d.ts.map +1 -1
  86. package/dist/services/redis-queue-adapter.js +90 -10
  87. package/dist/services/redis-queue-adapter.js.map +1 -1
  88. package/dist/services/worker-dispatcher.d.ts +14 -2
  89. package/dist/services/worker-dispatcher.d.ts.map +1 -1
  90. package/dist/services/worker-dispatcher.js +55 -2
  91. package/dist/services/worker-dispatcher.js.map +1 -1
  92. package/dist/types/api.d.ts +3 -0
  93. package/dist/types/api.d.ts.map +1 -1
  94. package/dist/types/api.js +1 -0
  95. package/dist/types/api.js.map +1 -1
  96. package/dist/types/index.d.ts +1 -1
  97. package/dist/types/index.d.ts.map +1 -1
  98. package/dist/types/index.js.map +1 -1
  99. package/dist/types/monitor.d.ts +72 -4
  100. package/dist/types/monitor.d.ts.map +1 -1
  101. package/dist/worker/base-merge.d.ts +54 -0
  102. package/dist/worker/base-merge.d.ts.map +1 -0
  103. package/dist/worker/base-merge.js +99 -0
  104. package/dist/worker/base-merge.js.map +1 -0
  105. package/dist/worker/clarification-markers.d.ts +29 -0
  106. package/dist/worker/clarification-markers.d.ts.map +1 -0
  107. package/dist/worker/clarification-markers.js +44 -0
  108. package/dist/worker/clarification-markers.js.map +1 -0
  109. package/dist/worker/clarification-poster.d.ts.map +1 -1
  110. package/dist/worker/clarification-poster.js +266 -25
  111. package/dist/worker/clarification-poster.js.map +1 -1
  112. package/dist/worker/claude-cli-worker.d.ts +21 -2
  113. package/dist/worker/claude-cli-worker.d.ts.map +1 -1
  114. package/dist/worker/claude-cli-worker.js +150 -4
  115. package/dist/worker/claude-cli-worker.js.map +1 -1
  116. package/dist/worker/cli-spawner.d.ts +4 -0
  117. package/dist/worker/cli-spawner.d.ts.map +1 -1
  118. package/dist/worker/cli-spawner.js +53 -7
  119. package/dist/worker/cli-spawner.js.map +1 -1
  120. package/dist/worker/config.d.ts +420 -8
  121. package/dist/worker/config.d.ts.map +1 -1
  122. package/dist/worker/config.js +179 -2
  123. package/dist/worker/config.js.map +1 -1
  124. package/dist/worker/evidence-hash.d.ts +32 -0
  125. package/dist/worker/evidence-hash.d.ts.map +1 -0
  126. package/dist/worker/evidence-hash.js +139 -0
  127. package/dist/worker/evidence-hash.js.map +1 -0
  128. package/dist/worker/handler-outcome-assertion.d.ts +38 -0
  129. package/dist/worker/handler-outcome-assertion.d.ts.map +1 -0
  130. package/dist/worker/handler-outcome-assertion.js +58 -0
  131. package/dist/worker/handler-outcome-assertion.js.map +1 -0
  132. package/dist/worker/handler-outcome.d.ts +50 -0
  133. package/dist/worker/handler-outcome.d.ts.map +1 -0
  134. package/dist/worker/handler-outcome.js +2 -0
  135. package/dist/worker/handler-outcome.js.map +1 -0
  136. package/dist/worker/label-manager.d.ts +58 -2
  137. package/dist/worker/label-manager.d.ts.map +1 -1
  138. package/dist/worker/label-manager.js +225 -27
  139. package/dist/worker/label-manager.js.map +1 -1
  140. package/dist/worker/merge-conflict-handler.d.ts +141 -0
  141. package/dist/worker/merge-conflict-handler.d.ts.map +1 -0
  142. package/dist/worker/merge-conflict-handler.js +642 -0
  143. package/dist/worker/merge-conflict-handler.js.map +1 -0
  144. package/dist/worker/merge-conflict-prompt.d.ts +35 -0
  145. package/dist/worker/merge-conflict-prompt.d.ts.map +1 -0
  146. package/dist/worker/merge-conflict-prompt.js +71 -0
  147. package/dist/worker/merge-conflict-prompt.js.map +1 -0
  148. package/dist/worker/merge-conflict-remedy.d.ts +42 -0
  149. package/dist/worker/merge-conflict-remedy.d.ts.map +1 -0
  150. package/dist/worker/merge-conflict-remedy.js +28 -0
  151. package/dist/worker/merge-conflict-remedy.js.map +1 -0
  152. package/dist/worker/output-tail-synthesis.d.ts +15 -0
  153. package/dist/worker/output-tail-synthesis.d.ts.map +1 -0
  154. package/dist/worker/output-tail-synthesis.js +25 -0
  155. package/dist/worker/output-tail-synthesis.js.map +1 -0
  156. package/dist/worker/output-tail.d.ts +13 -0
  157. package/dist/worker/output-tail.d.ts.map +1 -0
  158. package/dist/worker/output-tail.js +31 -0
  159. package/dist/worker/output-tail.js.map +1 -0
  160. package/dist/worker/pause-context.d.ts +30 -0
  161. package/dist/worker/pause-context.d.ts.map +1 -0
  162. package/dist/worker/pause-context.js +98 -0
  163. package/dist/worker/pause-context.js.map +1 -0
  164. package/dist/worker/phase-loop.d.ts +66 -0
  165. package/dist/worker/phase-loop.d.ts.map +1 -1
  166. package/dist/worker/phase-loop.js +329 -30
  167. package/dist/worker/phase-loop.js.map +1 -1
  168. package/dist/worker/pr-feedback-handler.d.ts +46 -46
  169. package/dist/worker/pr-feedback-handler.d.ts.map +1 -1
  170. package/dist/worker/pr-feedback-handler.js +286 -108
  171. package/dist/worker/pr-feedback-handler.js.map +1 -1
  172. package/dist/worker/pr-manager.d.ts +5 -0
  173. package/dist/worker/pr-manager.d.ts.map +1 -1
  174. package/dist/worker/pr-manager.js +7 -0
  175. package/dist/worker/pr-manager.js.map +1 -1
  176. package/dist/worker/product-diff.d.ts +39 -0
  177. package/dist/worker/product-diff.d.ts.map +1 -0
  178. package/dist/worker/product-diff.js +43 -0
  179. package/dist/worker/product-diff.js.map +1 -0
  180. package/dist/worker/provisioning-failure.d.ts +14 -0
  181. package/dist/worker/provisioning-failure.d.ts.map +1 -0
  182. package/dist/worker/provisioning-failure.js +2 -0
  183. package/dist/worker/provisioning-failure.js.map +1 -0
  184. package/dist/worker/repo-checkout.d.ts +14 -0
  185. package/dist/worker/repo-checkout.d.ts.map +1 -1
  186. package/dist/worker/repo-checkout.js +19 -1
  187. package/dist/worker/repo-checkout.js.map +1 -1
  188. package/dist/worker/stage-comment-manager.d.ts +42 -1
  189. package/dist/worker/stage-comment-manager.d.ts.map +1 -1
  190. package/dist/worker/stage-comment-manager.js +205 -1
  191. package/dist/worker/stage-comment-manager.js.map +1 -1
  192. package/dist/worker/terminal-label-op-error.d.ts +23 -0
  193. package/dist/worker/terminal-label-op-error.d.ts.map +1 -0
  194. package/dist/worker/terminal-label-op-error.js +27 -0
  195. package/dist/worker/terminal-label-op-error.js.map +1 -0
  196. package/dist/worker/types.d.ts +181 -2
  197. package/dist/worker/types.d.ts.map +1 -1
  198. package/dist/worker/types.js +11 -0
  199. package/dist/worker/types.js.map +1 -1
  200. package/dist/worker/validate-fix-handler.d.ts +79 -0
  201. package/dist/worker/validate-fix-handler.d.ts.map +1 -0
  202. package/dist/worker/validate-fix-handler.js +320 -0
  203. package/dist/worker/validate-fix-handler.js.map +1 -0
  204. package/dist/worker/worker-result.d.ts +39 -0
  205. package/dist/worker/worker-result.d.ts.map +1 -0
  206. package/dist/worker/worker-result.js +10 -0
  207. package/dist/worker/worker-result.js.map +1 -0
  208. package/package.json +12 -7
@@ -1,8 +1,17 @@
1
1
  import { PHASE_SEQUENCE, PHASE_TO_STAGE } from './types.js';
2
- import { resolvePhaseTimeoutMs } from './config.js';
2
+ import { isTerminalLabelOpError } from './terminal-label-op-error.js';
3
+ import { resolvePhaseTimeoutMs, resolveAgentForPhase } from './config.js';
4
+ import { DEFAULT_INSTALL_TIMEOUT_MS, DEFAULT_VALIDATE_TIMEOUT_MS } from './cli-spawner.js';
3
5
  import { postClarifications, hasPendingClarifications, integrateClarificationAnswers } from './clarification-poster.js';
4
6
  import { buildSiblingPromptBlock } from './sibling-prompt.js';
5
7
  import { checkSiblingReviews } from './sibling-review-checker.js';
8
+ import { EXCLUDED_PATH_PREFIXES, computeProductDiff, resolveBaseRef } from './product-diff.js';
9
+ import { boundOutputTail } from './output-tail.js';
10
+ import { synthesizeOutputTail } from './output-tail-synthesis.js';
11
+ import { performBaseMerge, resolveBaseBranch } from './base-merge.js';
12
+ import { MERGE_CONFLICT_REMEDY } from './merge-conflict-remedy.js';
13
+ import { writePauseContext } from './pause-context.js';
14
+ import { randomUUID } from 'node:crypto';
6
15
  /** Phases that MUST produce file changes to be considered successful. */
7
16
  const PHASES_REQUIRING_CHANGES = new Set(['implement']);
8
17
  /**
@@ -33,14 +42,53 @@ export class PhaseLoop {
33
42
  * Defaults to the global PHASE_SEQUENCE for backward compatibility.
34
43
  */
35
44
  async executeLoop(context, config, deps, phaseSequence) {
45
+ try {
46
+ return await this.executeLoopInner(context, config, deps, phaseSequence);
47
+ }
48
+ catch (error) {
49
+ // #889: LabelManager retry exhaustion. Translate the terminal error into
50
+ // a `failed-terminal` PhaseLoopResult so the worker can surface a bounded
51
+ // alert instead of re-throwing and crash-looping the queue.
52
+ if (isTerminalLabelOpError(error)) {
53
+ this.logger.error({
54
+ site: error.site,
55
+ labelOp: error.labelOp,
56
+ ghStderr: error.ghStderr,
57
+ }, 'Phase loop caught TerminalLabelOpError — surfacing as failed-terminal');
58
+ return {
59
+ results: [],
60
+ completed: false,
61
+ lastPhase: context.startPhase,
62
+ gateHit: false,
63
+ status: 'failed-terminal',
64
+ failureMetadata: {
65
+ site: error.site,
66
+ labelOp: error.labelOp,
67
+ ghStderr: error.ghStderr,
68
+ },
69
+ };
70
+ }
71
+ throw error;
72
+ }
73
+ }
74
+ async executeLoopInner(context, config, deps, phaseSequence) {
36
75
  const sequence = phaseSequence ?? PHASE_SEQUENCE;
37
76
  const { labelManager, stageCommentManager, gateChecker, cliSpawner, outputCapture, prManager, conversationLogger, jobEventEmitter } = deps;
77
+ const baseMergeRunner = deps.baseMergeRunner ?? performBaseMerge;
38
78
  const results = [];
79
+ // Mint a stable per-invocation runId used inside the failure-alert marker.
80
+ // See specs/865-found-during-cockpit-v1/contracts/failure-alert-comment.md.
81
+ const runId = randomUUID();
39
82
  // Track session ID across phases for conversation resume.
40
83
  // When a CLI phase completes, its session ID is passed to the next phase
41
84
  // so Claude CLI can reuse the conversation (keeping MCP servers warm and
42
85
  // carrying forward accumulated context).
43
86
  let currentSessionId;
87
+ // #814: track the resolved provider + model across phases. `currentProvider`
88
+ // gates the session-drop-on-provider-switch behavior (FR-011); `currentModel`
89
+ // feeds the `agent.model.transition` log line on same-provider model change.
90
+ let currentProvider;
91
+ let currentModel;
44
92
  let implementRetryCount = 0;
45
93
  // Track last seen tasks_remaining for the implement increment guard.
46
94
  // Prevents infinite loops when no progress is made between increments.
@@ -50,11 +98,16 @@ export class PhaseLoop {
50
98
  if (startIndex === -1) {
51
99
  throw new Error(`Unknown starting phase: ${context.startPhase}`);
52
100
  }
53
- this.logger.info({ startPhase: context.startPhase, startIndex, totalPhases: sequence.length }, 'Starting phase loop');
101
+ this.logger.info({ startPhase: context.startPhase, startIndex, totalPhases: sequence.length, runId }, 'Starting phase loop');
54
102
  // Track actual timestamps per phase
55
103
  const phaseTimestamps = new Map();
56
104
  for (let i = startIndex; i < sequence.length; i++) {
57
105
  const phase = sequence[i];
106
+ // #914: per-iteration guard enforcing at-most-one pre-phase base-merge
107
+ // per cycle. Block-scoped `let` inside the for-body is load-bearing —
108
+ // it re-initializes on every iteration (including retry re-entries via
109
+ // `i--; continue;`), keeping the retry semantics of Q3-A intact.
110
+ let hasBaseMergedThisCycle = false;
58
111
  // Check abort signal before starting each phase
59
112
  if (context.signal.aborted) {
60
113
  this.logger.warn({ phase }, 'Abort signal detected, stopping phase loop');
@@ -85,10 +138,39 @@ export class PhaseLoop {
85
138
  phases: this.buildPhaseProgress(sequence, startIndex, i, phaseTimestamps),
86
139
  startedAt: phaseTimestamps.get(sequence[startIndex])?.startedAt ?? new Date().toISOString(),
87
140
  });
141
+ // 2b. Pre-phase base-merge (#864) — implement, pre-validate, validate only.
142
+ // On {ok:false} the workflow pauses with the merge-conflict gate; on {ok:true}
143
+ // execution proceeds normally. Non-conflict git failures throw and are caught
144
+ // in the same try/catch as phase execution below.
145
+ //
146
+ // #914: the `hasBaseMergedThisCycle` guard enforces the at-most-once
147
+ // invariant. Symmetry immunization per Q5-B — even the implement path,
148
+ // which historically never double-merged, is wrapped so a future edit
149
+ // cannot reintroduce the buggy shape by accident.
150
+ if (phase === 'implement' && !hasBaseMergedThisCycle) {
151
+ const baseMergeOutcome = await this.runPreImplementBaseMerge(context, deps, baseMergeRunner, phase, stage, sequence, startIndex, i, phaseTimestamps);
152
+ if (baseMergeOutcome !== undefined) {
153
+ return baseMergeOutcome;
154
+ }
155
+ hasBaseMergedThisCycle = true;
156
+ }
88
157
  // 3. Execute the phase
89
158
  let result;
90
159
  try {
91
160
  if (phase === 'validate') {
161
+ // 3a. Pre-phase base-merge for the validate cycle (#864, #914) —
162
+ // ephemeral. Runs ONCE before the first spawned command of the
163
+ // cycle (install, or validate itself if no preValidateCommand).
164
+ // The second between-install-and-validate call site (#864 original)
165
+ // was deleted in #914 — its `git reset --hard` + `git clean -fd`
166
+ // was destroying the freshly-installed toolchain (snappoll#4).
167
+ if (!hasBaseMergedThisCycle) {
168
+ const preValidateMergeOutcome = await this.runPreValidateBaseMerge(context, deps, baseMergeRunner, phase, stage, sequence, startIndex, i, phaseTimestamps);
169
+ if (preValidateMergeOutcome !== undefined) {
170
+ return preValidateMergeOutcome;
171
+ }
172
+ hasBaseMergedThisCycle = true;
173
+ }
92
174
  // Pre-validate: install dependencies if configured
93
175
  if (config.preValidateCommand) {
94
176
  const installResult = await cliSpawner.runPreValidateInstall(context.checkoutPath, config.preValidateCommand, context.signal);
@@ -96,12 +178,15 @@ export class PhaseLoop {
96
178
  this.logger.error({ phase, error: installResult.error?.message }, 'Pre-validate install failed');
97
179
  results.push(installResult);
98
180
  await labelManager.onError(phase);
181
+ const evidence = this.buildErrorEvidence(config.preValidateCommand, installResult, DEFAULT_INSTALL_TIMEOUT_MS, undefined);
99
182
  await stageCommentManager.updateStageComment({
100
183
  stage,
101
184
  status: 'error',
102
185
  phases: this.buildPhaseProgress(sequence, startIndex, i, phaseTimestamps, 'error'),
103
186
  startedAt: phaseTimestamps.get(sequence[startIndex])?.startedAt ?? new Date().toISOString(),
187
+ errorEvidence: evidence,
104
188
  });
189
+ await stageCommentManager.postFailureAlert({ stage, runId, phase, evidence });
105
190
  return { results, completed: false, lastPhase: phase, gateHit: false };
106
191
  }
107
192
  }
@@ -119,6 +204,28 @@ export class PhaseLoop {
119
204
  ? `${siblingBlock}\n\n${context.issueUrl}`
120
205
  : context.issueUrl;
121
206
  const cliPhase = phase;
207
+ // #814: resolve provider+model for this phase. Provider always defined
208
+ // (built-in fallback). Model optional (undefined = no `--model` arg).
209
+ const { provider: nextProvider, model: nextModel } = resolveAgentForPhase(config, context.item.workflowName, cliPhase);
210
+ // Drop session on provider switch (FR-011). Sessions are provider-scoped;
211
+ // reusing one across providers would try to resume against a session ID
212
+ // the new provider doesn't know.
213
+ if (currentProvider !== undefined && currentProvider !== nextProvider) {
214
+ this.logger.info({ phase: cliPhase, prevProvider: currentProvider, nextProvider }, 'Provider switch detected — dropping session for fresh start');
215
+ currentSessionId = undefined;
216
+ }
217
+ // Emit model-transition log line on same-provider model change (Q2→C).
218
+ // Only meaningful when we actually saw a prior phase with the same
219
+ // provider AND both models are defined (a switch from undefined→X or
220
+ // X→undefined is not a "transition" — either the config just started
221
+ // or just stopped naming a model).
222
+ if (currentProvider === nextProvider &&
223
+ currentModel !== undefined &&
224
+ nextModel !== undefined &&
225
+ currentModel !== nextModel) {
226
+ this.logger.info({ provider: nextProvider, prevModel: currentModel, nextModel }, 'agent.model.transition');
227
+ }
228
+ const previousModel = currentProvider === nextProvider ? currentModel : undefined;
122
229
  result = await cliSpawner.spawnPhase(cliPhase, {
123
230
  prompt,
124
231
  cwd: context.checkoutPath,
@@ -127,19 +234,36 @@ export class PhaseLoop {
127
234
  signal: context.signal,
128
235
  resumeSessionId: currentSessionId,
129
236
  siblingWorkdirs: context.siblingWorkdirs,
237
+ provider: nextProvider,
238
+ ...(nextModel !== undefined ? { model: nextModel } : {}),
239
+ ...(previousModel !== undefined ? { previousModel } : {}),
130
240
  }, outputCapture);
241
+ // Update trackers post-spawn so failures don't strand state.
242
+ currentProvider = nextProvider;
243
+ currentModel = nextModel;
131
244
  }
132
245
  }
133
246
  catch (error) {
134
247
  // Unexpected error during spawning
135
248
  this.logger.error({ phase, error: String(error) }, 'Unexpected error during phase execution');
136
249
  await labelManager.onError(phase);
250
+ const syntheticResult = {
251
+ phase,
252
+ success: false,
253
+ exitCode: 1,
254
+ durationMs: 0,
255
+ output: [],
256
+ error: { message: String(error), output: '', phase },
257
+ };
258
+ const evidence = this.buildErrorEvidence(phase === 'validate' ? config.validateCommand : phase, syntheticResult, undefined, 'spawn-error');
137
259
  await stageCommentManager.updateStageComment({
138
260
  stage,
139
261
  status: 'error',
140
262
  phases: this.buildPhaseProgress(sequence, startIndex, i, phaseTimestamps, 'error'),
141
263
  startedAt: phaseTimestamps.get(sequence[startIndex])?.startedAt ?? new Date().toISOString(),
264
+ errorEvidence: evidence,
142
265
  });
266
+ await stageCommentManager.postFailureAlert({ stage, runId, phase, evidence });
143
267
  throw error;
144
268
  }
145
269
  results.push(result);
@@ -165,6 +289,15 @@ export class PhaseLoop {
165
289
  // Guard: fail if no progress made (prevents infinite loop)
166
290
  if (lastTasksRemaining !== undefined && tasksRemaining >= lastTasksRemaining) {
167
291
  this.logger.error({ phase, tasksRemaining, lastTasksRemaining }, 'Implement increment made no progress — failing to prevent infinite loop');
292
+ // FR-007: set result.error BEFORE evidence derivation so the alert
293
+ // and stage-comment evidence blocks have diagnostic content.
294
+ result.success = false;
295
+ result.error = {
296
+ message: 'Implement increment made no progress — aborting to prevent infinite loop',
297
+ output: `no progress: tasks_remaining stayed at ${tasksRemaining} across two increments`,
298
+ phase,
299
+ };
300
+ const evidence = this.buildErrorEvidence('implement (no-progress guard)', result, undefined, 'no-progress');
168
301
  await labelManager.onError(phase);
169
302
  await stageCommentManager.updateStageComment({
170
303
  stage,
@@ -172,13 +305,9 @@ export class PhaseLoop {
172
305
  phases: this.buildPhaseProgress(sequence, startIndex, i, phaseTimestamps, 'error'),
173
306
  startedAt: phaseTimestamps.get(sequence[startIndex])?.startedAt ?? new Date().toISOString(),
174
307
  prUrl: context.prUrl,
308
+ errorEvidence: evidence,
175
309
  });
176
- result.success = false;
177
- result.error = {
178
- message: 'Implement increment made no progress — aborting to prevent infinite loop',
179
- stderr: '',
180
- phase,
181
- };
310
+ await stageCommentManager.postFailureAlert({ stage, runId, phase, evidence });
182
311
  return { results, completed: false, lastPhase: phase, gateHit: false };
183
312
  }
184
313
  lastTasksRemaining = tasksRemaining;
@@ -229,13 +358,44 @@ export class PhaseLoop {
229
358
  continue;
230
359
  }
231
360
  }
361
+ // #892: bounded validate-fix cycle. Fires ONLY on the resume-driven
362
+ // validate re-run (structurally gated on WorkerContext.resumeReason
363
+ // === 'base-advance'). First-time reds continue through onError.
364
+ if (phase === 'validate'
365
+ && context.resumeReason === 'base-advance'
366
+ && deps.validateFixHandler
367
+ && prManager.getPrNumber() !== undefined) {
368
+ try {
369
+ // resolveBaseBranch returns `origin/<name>`; strip prefix to
370
+ // match the base-branch string used in listOpenPullRequests results.
371
+ const baseRefFull = await resolveBaseBranch(context.github, prManager, context.checkoutPath, context.item.owner, context.item.repo, this.logger);
372
+ const baseBranch = baseRefFull.startsWith('origin/')
373
+ ? baseRefFull.slice('origin/'.length)
374
+ : baseRefFull;
375
+ await deps.validateFixHandler.handle(context.item, context.checkoutPath, { prNumber: prManager.getPrNumber(), baseBranch }, {
376
+ stdout: result.capturedStdout ?? '',
377
+ // #890 renamed `error.stderr` → `error.output` (merged tail);
378
+ // fall back to it when the raw stderr buffer is empty.
379
+ stderr: result.capturedStderr ?? result.error?.output ?? '',
380
+ exitCode: result.exitCode,
381
+ }, context.github);
382
+ }
383
+ catch (err) {
384
+ this.logger.warn({ err: String(err), phase, issueNumber: context.item.issueNumber }, 'validate-fix handler threw — falling through to standard onError path');
385
+ }
386
+ }
232
387
  await labelManager.onError(phase);
388
+ const evidence = this.buildErrorEvidence(phase === 'validate' ? config.validateCommand : phase, result, phase === 'validate'
389
+ ? DEFAULT_VALIDATE_TIMEOUT_MS
390
+ : resolvePhaseTimeoutMs(config, phase), undefined);
233
391
  await stageCommentManager.updateStageComment({
234
392
  stage,
235
393
  status: 'error',
236
394
  phases: this.buildPhaseProgress(sequence, startIndex, i, phaseTimestamps, 'error'),
237
395
  startedAt: phaseTimestamps.get(sequence[startIndex])?.startedAt ?? new Date().toISOString(),
396
+ errorEvidence: evidence,
238
397
  });
398
+ await stageCommentManager.postFailureAlert({ stage, runId, phase, evidence });
239
399
  return { results, completed: false, lastPhase: phase, gateHit: false };
240
400
  }
241
401
  // 5. Commit, push, and ensure draft PR exists (before marking complete)
@@ -243,42 +403,59 @@ export class PhaseLoop {
243
403
  if (prUrl) {
244
404
  context.prUrl = prUrl;
245
405
  }
246
- // 5b. Fail phases that require file changes but produced none
247
- if (PHASES_REQUIRING_CHANGES.has(phase) && !hasChanges) {
248
- // Check if a previous run already produced implementation changes on this
249
- // branch (e.g., issue was requeued). If the branch has prior commits for
250
- // this phase, treat it as a soft pass rather than an error.
251
- let hasPriorImplementation = false;
406
+ // 5b. Fail phases that require product-code changes but produced none.
407
+ // Compares the branch's cumulative diff against its PR base ref (or the
408
+ // default branch when no PR yet) and rejects when every changed file lives
409
+ // under EXCLUDED_PATH_PREFIXES. See specs/820-*.
410
+ if (PHASES_REQUIRING_CHANGES.has(phase)) {
411
+ let productFiles;
412
+ let changedFiles;
413
+ let baseRef;
252
414
  try {
253
- const defaultBranch = await context.github.getDefaultBranch();
254
- const branch = await context.github.getCurrentBranch();
255
- const commits = await context.github.getCommitsBetween(`origin/${defaultBranch}`, branch);
256
- hasPriorImplementation = commits.some((c) => c.message.includes(`complete ${phase} phase`) ||
257
- c.message.includes('feat: complete T') ||
258
- c.message.includes('partial implement progress'));
259
- }
260
- catch {
261
- // If we can't check, fall through to the error path
262
- }
263
- if (hasPriorImplementation) {
264
- this.logger.warn({ phase }, 'Phase produced no new changes but branch has prior implementation commits — continuing');
415
+ baseRef = await resolveBaseRef(context.github, prManager, context.item.owner, context.item.repo);
416
+ ({ productFiles, changedFiles } = await computeProductDiff(context.github, baseRef));
265
417
  }
266
- else {
267
- this.logger.error({ phase }, 'Phase completed with exit code 0 but produced no file changes');
418
+ catch (err) {
419
+ this.logger.error({ phase, err: String(err) }, 'product-diff computation threw treating as detection failure');
268
420
  await labelManager.onError(phase);
421
+ result.success = false;
422
+ result.error = {
423
+ message: `Phase "${phase}" product-diff detection failed: ${String(err)}`,
424
+ output: '',
425
+ phase,
426
+ };
427
+ const evidence = this.buildErrorEvidence(phase === 'validate' ? config.validateCommand : phase, result, undefined, 'product-diff-error');
269
428
  await stageCommentManager.updateStageComment({
270
429
  stage,
271
430
  status: 'error',
272
431
  phases: this.buildPhaseProgress(sequence, startIndex, i, phaseTimestamps, 'error'),
273
432
  startedAt: phaseTimestamps.get(sequence[startIndex])?.startedAt ?? new Date().toISOString(),
274
433
  prUrl: context.prUrl,
434
+ errorEvidence: evidence,
275
435
  });
436
+ await stageCommentManager.postFailureAlert({ stage, runId, phase, evidence });
437
+ return { results, completed: false, lastPhase: phase, gateHit: false };
438
+ }
439
+ if (productFiles.length === 0) {
440
+ this.logger.error({ phase, baseRef, changedFiles, excluded: EXCLUDED_PATH_PREFIXES }, 'implement phase produced no product-code changes — all diff lives under excluded paths');
441
+ await labelManager.onError(phase);
276
442
  result.success = false;
277
443
  result.error = {
278
- message: `Phase "${phase}" succeeded but produced no file changes — expected code to be written`,
279
- stderr: '',
444
+ message: `Phase "${phase}" produced no product-code changes — all changed files are under excluded prefixes ` +
445
+ `[${EXCLUDED_PATH_PREFIXES.join(', ')}]. Implement must modify at least one non-excluded file.`,
446
+ output: '',
280
447
  phase,
281
448
  };
449
+ const evidence = this.buildErrorEvidence(phase === 'validate' ? config.validateCommand : phase, result, undefined, 'no-product-code-changes');
450
+ await stageCommentManager.updateStageComment({
451
+ stage,
452
+ status: 'error',
453
+ phases: this.buildPhaseProgress(sequence, startIndex, i, phaseTimestamps, 'error'),
454
+ startedAt: phaseTimestamps.get(sequence[startIndex])?.startedAt ?? new Date().toISOString(),
455
+ prUrl: context.prUrl,
456
+ errorEvidence: evidence,
457
+ });
458
+ await stageCommentManager.postFailureAlert({ stage, runId, phase, evidence });
282
459
  return { results, completed: false, lastPhase: phase, gateHit: false };
283
460
  }
284
461
  }
@@ -401,6 +578,128 @@ export class PhaseLoop {
401
578
  gateHit: false,
402
579
  };
403
580
  }
581
+ /**
582
+ * Run the pre-implement base-merge (#864, committed). On conflict, pause the
583
+ * workflow via `waiting-for:merge-conflicts` and return the pause result;
584
+ * on clean merge, return `undefined` so the caller proceeds with phase execution.
585
+ */
586
+ async runPreImplementBaseMerge(context, deps, baseMergeRunner, phase, stage, sequence, startIndex, i, phaseTimestamps) {
587
+ return this.runPrePhaseBaseMerge(context, deps, baseMergeRunner, phase, stage, sequence, startIndex, i, phaseTimestamps, { commit: true });
588
+ }
589
+ /**
590
+ * Run the pre-validate/validate base-merge (#864, ephemeral). Symmetric with
591
+ * `runPreImplementBaseMerge` but `opts.commit === false` — the merge is left
592
+ * as an un-committed merge in the workspace and MUST be discarded by the next
593
+ * phase's reset-at-start (FR-006).
594
+ */
595
+ async runPreValidateBaseMerge(context, deps, baseMergeRunner, phase, stage, sequence, startIndex, i, phaseTimestamps) {
596
+ return this.runPrePhaseBaseMerge(context, deps, baseMergeRunner, phase, stage, sequence, startIndex, i, phaseTimestamps, { commit: false });
597
+ }
598
+ /**
599
+ * Shared pre-phase base-merge implementation. Resolves the base ref, invokes
600
+ * the runner, and (on conflict) pauses with `waiting-for:merge-conflicts` +
601
+ * `errorEvidence.mergeConflict`. Reuses the existing gate-return path so
602
+ * #849's paired resume-dedupe clear applies symmetrically.
603
+ */
604
+ async runPrePhaseBaseMerge(context, deps, baseMergeRunner, phase, stage, sequence, startIndex, i, phaseTimestamps, opts) {
605
+ if (!context.branch) {
606
+ this.logger.warn({ phase }, 'Skipping pre-phase base-merge — WorkerContext.branch not set');
607
+ return undefined;
608
+ }
609
+ const baseRef = await resolveBaseBranch(context.github, deps.prManager, context.checkoutPath, context.item.owner, context.item.repo, this.logger);
610
+ const mergeResult = await baseMergeRunner(context.checkoutPath, context.branch, baseRef, opts, this.logger);
611
+ if (mergeResult.ok) {
612
+ this.logger.info({ phase, baseRef, commit: opts.commit, mergeSha: mergeResult.mergeSha }, 'Pre-phase base-merge succeeded');
613
+ return undefined;
614
+ }
615
+ // Conflict: pause with merge-conflict gate.
616
+ const gateLabel = 'waiting-for:merge-conflicts';
617
+ this.logger.warn({ phase, baseRef, conflictedPaths: mergeResult.conflictedPaths }, 'Pre-phase base-merge conflict — pausing workflow');
618
+ deps.jobEventEmitter?.('job:paused', {
619
+ jobId: context.jobId,
620
+ workflowName: context.item.workflowName,
621
+ owner: context.item.owner,
622
+ repo: context.item.repo,
623
+ issueNumber: context.item.issueNumber,
624
+ status: 'paused',
625
+ currentStep: phase,
626
+ gateLabel,
627
+ });
628
+ // #898 FR-011/FR-012: substitute the manual-remedy template with the
629
+ // concrete branch / bare base / issue-ref for this pause. Keeps the
630
+ // renderer content-agnostic — it just prints the strings as given.
631
+ const bareBase = mergeResult.baseRef.replace(/^origin\//, '');
632
+ const branchName = context.branch ?? '<branch>';
633
+ const issueRef = `${context.item.owner}/${context.item.repo}#${context.item.issueNumber}`;
634
+ const substitutedSteps = MERGE_CONFLICT_REMEDY.steps.map((step) => step
635
+ .replace(/<branch>/g, branchName)
636
+ .replace(/<base>/g, bareBase)
637
+ .replace(/<issue-ref>/g, issueRef));
638
+ await deps.stageCommentManager.updateStageComment({
639
+ stage,
640
+ status: 'in_progress',
641
+ phases: this.buildPhaseProgress(sequence, startIndex, i, phaseTimestamps),
642
+ startedAt: phaseTimestamps.get(sequence[startIndex])?.startedAt ?? new Date().toISOString(),
643
+ prUrl: context.prUrl,
644
+ errorEvidence: {
645
+ mergeConflict: {
646
+ baseRef: mergeResult.baseRef,
647
+ conflictedPaths: mergeResult.conflictedPaths,
648
+ manualRemedy: {
649
+ steps: substitutedSteps,
650
+ warning: MERGE_CONFLICT_REMEDY.warning,
651
+ },
652
+ },
653
+ },
654
+ });
655
+ // #902 FR-003: persist pause-context BEFORE applying the pause label.
656
+ // The worker's MergeConflictHandler dispatch reads this to populate
657
+ // `metadata.phase` — the single source of truth for the interrupted phase.
658
+ // If the write throws, we do NOT apply the pause label — the pause simply
659
+ // doesn't materialize, preventing the dead-park class.
660
+ const workflowId = `${context.item.owner}/${context.item.repo}#${context.item.issueNumber}`;
661
+ await writePauseContext(context.checkoutPath, workflowId, {
662
+ phase,
663
+ writtenAt: new Date().toISOString(),
664
+ issueRef: workflowId,
665
+ });
666
+ await deps.labelManager.onGateHit(phase, gateLabel);
667
+ return {
668
+ results: [],
669
+ completed: false,
670
+ lastPhase: phase,
671
+ gateHit: true,
672
+ };
673
+ }
674
+ /**
675
+ * Build the `errorEvidence` payload rendered inside the stage comment on
676
+ * `status: 'error'` transitions. See specs/847-found-during-cockpit-v1/
677
+ * contracts/failure-evidence-block.md for the derivation rules.
678
+ */
679
+ buildErrorEvidence(command, result, resolvedTimeoutMs, classifier) {
680
+ const message = result.error?.message ?? '';
681
+ const exitDescriptor = classifier
682
+ ? `failed post-exit: ${classifier} (process exit ${result.exitCode})`
683
+ : message.includes('timed out') && resolvedTimeoutMs !== undefined
684
+ ? `killed (SIGTERM) after ${resolvedTimeoutMs}ms`
685
+ : message.includes('was aborted')
686
+ ? 'aborted'
687
+ : `exit ${result.exitCode}`;
688
+ // Shell path: `error.output` is the ring-buffer tail (already merged).
689
+ // CLI path: `error.output` is empty; synthesize from parsed `type: 'text'` chunks.
690
+ // For synthetic PhaseResults (no-progress guard, product-diff failures, catch
691
+ // block): `error.output` is set directly by the caller (still merged-shape).
692
+ const rawOutput = result.error?.output ?? '';
693
+ const outputTail = rawOutput.length > 0
694
+ ? boundOutputTail(rawOutput)
695
+ : synthesizeOutputTail(result.output);
696
+ return {
697
+ command,
698
+ exitDescriptor,
699
+ outputTail,
700
+ ...(classifier ? { reason: message } : {}),
701
+ };
702
+ }
404
703
  /**
405
704
  * Build a phase progress array for stage comment updates.
406
705
  *
@@ -1 +1 @@
1
- {"version":3,"file":"phase-loop.js","sourceRoot":"","sources":["../../src/worker/phase-loop.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAQpD,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AACxH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,yEAAyE;AACzE,MAAM,wBAAwB,GAA+B,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAiCpF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,SAAS;IACS;IAA7B,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CACf,OAAsB,EACtB,MAAoB,EACpB,IAAmB,EACnB,aAA+B;QAE/B,MAAM,QAAQ,GAAG,aAAa,IAAI,cAAc,CAAC;QACjD,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAC3I,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,0DAA0D;QAC1D,yEAAyE;QACzE,yEAAyE;QACzE,yCAAyC;QACzC,IAAI,gBAAoC,CAAC;QACzC,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAE5B,qEAAqE;QACrE,uEAAuE;QACvE,IAAI,kBAAsC,CAAC;QAE3C,gDAAgD;QAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,EAC5E,qBAAqB,CACtB,CAAC;QAEF,oCAAoC;QACpC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA8D,CAAC;QAE9F,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;YAE3B,gDAAgD;YAChD,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,4CAA4C,CAAC,CAAC;gBAC1E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACzE,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;YAExD,0DAA0D;YAC1D,eAAe,EAAE,CAAC,mBAAmB,EAAE;gBACrC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY;gBACvC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;gBACzB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;gBACvB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW;gBACrC,MAAM,EAAE,QAAQ;gBAChB,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;YAEH,oGAAoG;YACpG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACtE,CAAC;YAED,8CAA8C;YAC9C,MAAM,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAEvC,oDAAoD;YACpD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;gBAC3C,KAAK;gBACL,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,CAAC;gBACzE,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAC7F,CAAC,CAAC;YAEH,uBAAuB;YACvB,IAAI,MAAmB,CAAC;YACxB,IAAI,CAAC;gBACH,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;oBACzB,mDAAmD;oBACnD,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;wBAC9B,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,qBAAqB,CAC1D,OAAO,CAAC,YAAY,EACpB,MAAM,CAAC,kBAAkB,EACzB,OAAO,CAAC,MAAM,CACf,CAAC;wBACF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;4BAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,EAC9C,6BAA6B,CAC9B,CAAC;4BACF,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;4BAC5B,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;4BAClC,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;gCAC3C,KAAK;gCACL,MAAM,EAAE,OAAO;gCACf,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC;gCAClF,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;6BAC7F,CAAC,CAAC;4BACH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;wBACzE,CAAC;oBACH,CAAC;oBAED,oCAAoC;oBACpC,MAAM,GAAG,MAAM,UAAU,CAAC,gBAAgB,CACxC,OAAO,CAAC,YAAY,EACpB,MAAM,CAAC,eAAe,EACtB,OAAO,CAAC,MAAM,CACf,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,gDAAgD;oBAChD,IAAI,kBAAkB,EAAE,CAAC;wBACvB,kBAAkB,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;oBACxE,CAAC;oBAED,sEAAsE;oBACtE,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;oBAC5E,MAAM,MAAM,GAAG,YAAY;wBACzB,CAAC,CAAC,GAAG,YAAY,OAAO,OAAO,CAAC,QAAQ,EAAE;wBAC1C,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACrB,MAAM,QAAQ,GAAG,KAA0C,CAAC;oBAC5D,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAClC,QAAQ,EACR;wBACE,MAAM;wBACN,GAAG,EAAE,OAAO,CAAC,YAAY;wBACzB,GAAG,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE;wBAChC,SAAS,EAAE,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC;wBAClD,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,eAAe,EAAE,gBAAgB;wBACjC,eAAe,EAAE,OAAO,CAAC,eAAe;qBACzC,EACD,aAAa,CACd,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mCAAmC;gBACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAC/B,yCAAyC,CAC1C,CAAC;gBACF,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAClC,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;oBAC3C,KAAK;oBACL,MAAM,EAAE,OAAO;oBACf,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC;oBAClF,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBAC7F,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC;YACd,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAErB,kFAAkF;YAClF,IAAI,kBAAkB,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;gBAC/C,IAAI,CAAC;oBACH,MAAM,kBAAkB,CAAC,KAAK,EAAE,CAAC;gBACnC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAC7B,gDAAgD,CACjD,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,yDAAyD;YACzD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,oDAAoD,CAAC,CAAC;gBACjH,CAAC;gBACD,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC;YACtC,CAAC;YAED,8EAA8E;YAC9E,IAAI,KAAK,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC;gBAC/E,MAAM,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,eAAe,IAAI,CAAC,CAAC;gBAEnE,2DAA2D;gBAC3D,IAAI,kBAAkB,KAAK,SAAS,IAAI,cAAc,IAAI,kBAAkB,EAAE,CAAC;oBAC7E,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAC7C,yEAAyE,CAC1E,CAAC;oBACF,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAClC,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;wBAC3C,KAAK;wBACL,MAAM,EAAE,OAAO;wBACf,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC;wBAClF,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBAC5F,KAAK,EAAE,OAAO,CAAC,KAAK;qBACrB,CAAC,CAAC;oBACH,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;oBACvB,MAAM,CAAC,KAAK,GAAG;wBACb,OAAO,EAAE,0EAA0E;wBACnF,MAAM,EAAE,EAAE;wBACV,KAAK;qBACN,CAAC;oBACF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBACzE,CAAC;gBACD,kBAAkB,GAAG,cAAc,CAAC;gBAEpC,iDAAiD;gBACjD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE;oBAC3E,OAAO,EAAE,0CAA0C,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,eAAe,CAAC,eAAe,IAAI,CAAC,gBAAgB,cAAc,aAAa;iBACvK,CAAC,CAAC;gBACH,IAAI,YAAY;oBAAE,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC;gBAE/C,6DAA6D;gBAC7D,gBAAgB,GAAG,SAAS,CAAC;gBAE7B,iDAAiD;gBACjD,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;oBAC3C,KAAK;oBACL,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,aAAa,CAAC;oBACxF,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC5F,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,EAAE,+DAA+D,CAAC,CAAC;gBACtG,CAAC,EAAE,CAAC,CAAC,yBAAyB;gBAC9B,SAAS;YACX,CAAC;YAED,qEAAqE;YACrE,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC1B,kBAAkB,GAAG,SAAS,CAAC;YACjC,CAAC;YAED,0BAA0B;YAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAClE,cAAc,CACf,CAAC;gBAEF,gFAAgF;gBAChF,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;oBAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE;wBAClE,OAAO,EAAE,iDAAiD,OAAO,CAAC,IAAI,CAAC,WAAW,WAAW,mBAAmB,GAAG,CAAC,GAAG;qBACxH,CAAC,CAAC;oBACH,IAAI,UAAU,IAAI,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;wBACnE,mBAAmB,EAAE,CAAC;wBACtB,gBAAgB,GAAG,SAAS,CAAC;wBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,CAAC,mBAAmB,EAAE,EAC7E,4EAA4E,CAC7E,CAAC;wBACF,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;4BAC3C,KAAK;4BACL,MAAM,EAAE,aAAa;4BACrB,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,aAAa,CAAC;4BACxF,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BAC5F,KAAK,EAAE,OAAO,CAAC,KAAK;yBACrB,CAAC,CAAC;wBACH,CAAC,EAAE,CAAC;wBACJ,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAClC,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;oBAC3C,KAAK;oBACL,MAAM,EAAE,OAAO;oBACf,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC;oBAClF,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBAC7F,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACzE,CAAC;YAED,wEAAwE;YACxE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC3E,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;YACxB,CAAC;YAED,8DAA8D;YAC9D,IAAI,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvD,0EAA0E;gBAC1E,yEAAyE;gBACzE,4DAA4D;gBAC5D,IAAI,sBAAsB,GAAG,KAAK,CAAC;gBACnC,IAAI,CAAC;oBACH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAC9D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBACvD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC;oBAC1F,sBAAsB,GAAG,OAAO,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAC;wBAC7C,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;wBACtC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CACnD,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,oDAAoD;gBACtD,CAAC;gBAED,IAAI,sBAAsB,EAAE,CAAC;oBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,EACT,wFAAwF,CACzF,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,KAAK,EAAE,EACT,+DAA+D,CAChE,CAAC;oBACF,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAClC,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;wBAC3C,KAAK;wBACL,MAAM,EAAE,OAAO;wBACf,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC;wBAClF,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBAC5F,KAAK,EAAE,OAAO,CAAC,KAAK;qBACrB,CAAC,CAAC;oBACH,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;oBACvB,MAAM,CAAC,KAAK,GAAG;wBACb,OAAO,EAAE,UAAU,KAAK,wEAAwE;wBAChG,MAAM,EAAE,EAAE;wBACV,KAAK;qBACN,CAAC;oBACF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBACzE,CAAC;YACH,CAAC;YAED,wCAAwC;YACxC,MAAM,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAE1C,0DAA0D;YAC1D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,kBAAkB,IAAI,EAAE,EAAE,CAAC;gBACpD,MAAM,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YAC5E,CAAC;YAED,oFAAoF;YACpF,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAE/E,uEAAuE;YACvE,IAAI,aAAmC,CAAC;YAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,mEAAmE;gBACnE,IAAI,UAAU,GAAG,KAAK,CAAC;gBAEvB,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAChC,UAAU,GAAG,IAAI,CAAC;gBACpB,CAAC;qBAAM,IAAI,IAAI,CAAC,SAAS,KAAK,cAAc,EAAE,CAAC;oBAC7C,uEAAuE;oBACvE,yCAAyC;oBACzC,MAAM,6BAA6B,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC1D,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACtF,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EACpC,8EAA8E,CAC/E,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAI,CAAC,SAAS,KAAK,mBAAmB,EAAE,CAAC;oBAClD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC/E,UAAU,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC;oBACvC,IAAI,UAAU,EAAE,CAAC;wBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,EACrE,uEAAuE,CACxE,CAAC;wBACF,uDAAuD;wBACvD,MAAM,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAChE,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EACpC,uFAAuF,CACxF,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,UAAU;oBAAE,SAAS;gBAE1B,yEAAyE;gBACzE,yEAAyE;gBACzE,qEAAqE;gBACrE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBAC/D,MAAM,cAAc,GAAG,aAAa,UAAU,EAAE,CAAC;gBAEjD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACpH,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACrF,CAAC;gBAED,IAAI,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,EACpD,yCAAyC,CAC1C,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,gEAAgE;gBAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EACpC,4BAA4B,CAC7B,CAAC;gBAEF,+CAA+C;gBAC/C,eAAe,EAAE,CAAC,YAAY,EAAE;oBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY;oBACvC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;oBACzB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;oBACvB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW;oBACrC,MAAM,EAAE,QAAQ;oBAChB,WAAW,EAAE,KAAK;oBAClB,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;gBAEH,MAAM,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAEpD,qEAAqE;gBACrE,IAAI,IAAI,CAAC,SAAS,KAAK,2BAA2B,EAAE,CAAC;oBACnD,IAAI,CAAC;wBACH,MAAM,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBACjD,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACjE,+DAA+D,CAChE,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,mCAAmC;gBACnC,MAAM,CAAC,OAAO,GAAG;oBACf,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,MAAM,EAAE,gBAAgB,IAAI,CAAC,SAAS,4BAA4B,KAAK,GAAG;iBAC3E,CAAC;gBAEF,2CAA2C;gBAC3C,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,EAAE;oBAAE,EAAE,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAElD,wCAAwC;gBACxC,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;oBAC3C,KAAK;oBACL,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,UAAU,CAAC;oBACrF,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC5F,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB,CAAC,CAAC;gBAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACxE,CAAC;YAED,kCAAkC;YAClC,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,OAAO;gBAAE,OAAO,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAE5D,iDAAiD;YACjD,MAAM,kBAAkB,GACtB,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,KAAK,KAAK,CAAC;YAEzE,MAAM,mBAAmB,CAAC,kBAAkB,CAAC;gBAC3C,KAAK;gBACL,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa;gBACvD,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,UAAU,CAAC;gBACrF,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAC,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5F,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CAAC;YAEH,qCAAqC;YACrC,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACxE,OAAO;YACL,OAAO;YACP,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE;YACzC,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CACxB,QAAyB,EACzB,UAAkB,EAClB,YAAoB,EACpB,eAAgF,EAChF,gBAAsD,aAAa;QAEnE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEtC,IAAI,GAAG,GAAG,UAAU,EAAE,CAAC;gBACrB,8EAA8E;gBAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAmB,EAAE,CAAC;YAChD,CAAC;YACD,IAAI,GAAG,GAAG,YAAY,EAAE,CAAC;gBACvB,kCAAkC;gBAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAmB,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;YACxG,CAAC;YACD,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;gBACzB,gBAAgB;gBAChB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,aAAa,KAAK,UAAU,IAAI,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5K,CAAC;YACD,eAAe;YACf,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"phase-loop.js","sourceRoot":"","sources":["../../src/worker/phase-loop.ts"],"names":[],"mappings":"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"}