@generacy-ai/orchestrator 0.5.1 → 0.7.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.
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +25 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +54 -7
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +5 -0
- package/dist/routes/health.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +130 -26
- package/dist/server.js.map +1 -1
- package/dist/services/base-advance-monitor-service.d.ts +78 -0
- package/dist/services/base-advance-monitor-service.d.ts.map +1 -0
- package/dist/services/base-advance-monitor-service.js +233 -0
- package/dist/services/base-advance-monitor-service.js.map +1 -0
- package/dist/services/boot-resume-service.d.ts +19 -0
- package/dist/services/boot-resume-service.d.ts.map +1 -0
- package/dist/services/boot-resume-service.js +87 -0
- package/dist/services/boot-resume-service.js.map +1 -0
- package/dist/services/epic-completion-monitor-service.d.ts.map +1 -1
- package/dist/services/epic-completion-monitor-service.js +2 -0
- package/dist/services/epic-completion-monitor-service.js.map +1 -1
- package/dist/services/in-memory-queue-adapter.d.ts +4 -0
- package/dist/services/in-memory-queue-adapter.d.ts.map +1 -1
- package/dist/services/in-memory-queue-adapter.js +30 -3
- package/dist/services/in-memory-queue-adapter.js.map +1 -1
- package/dist/services/label-monitor-service.d.ts +3 -3
- package/dist/services/label-monitor-service.d.ts.map +1 -1
- package/dist/services/label-monitor-service.js +58 -41
- package/dist/services/label-monitor-service.js.map +1 -1
- package/dist/services/label-sync-service.d.ts.map +1 -1
- package/dist/services/label-sync-service.js +45 -10
- package/dist/services/label-sync-service.js.map +1 -1
- package/dist/services/merge-conflict-monitor-service.d.ts +73 -0
- package/dist/services/merge-conflict-monitor-service.d.ts.map +1 -0
- package/dist/services/merge-conflict-monitor-service.js +295 -0
- package/dist/services/merge-conflict-monitor-service.js.map +1 -0
- package/dist/services/orchestrator-version.d.ts +2 -0
- package/dist/services/orchestrator-version.d.ts.map +1 -0
- package/dist/services/orchestrator-version.js +23 -0
- package/dist/services/orchestrator-version.js.map +1 -0
- package/dist/services/phase-tracker-service.d.ts +10 -0
- package/dist/services/phase-tracker-service.d.ts.map +1 -1
- package/dist/services/phase-tracker-service.js +38 -0
- package/dist/services/phase-tracker-service.js.map +1 -1
- package/dist/services/post-activation-dispatch.d.ts +18 -0
- package/dist/services/post-activation-dispatch.d.ts.map +1 -0
- package/dist/services/post-activation-dispatch.js +30 -0
- package/dist/services/post-activation-dispatch.js.map +1 -0
- package/dist/services/pr-feedback-monitor-service.d.ts +13 -4
- package/dist/services/pr-feedback-monitor-service.d.ts.map +1 -1
- package/dist/services/pr-feedback-monitor-service.js +212 -26
- package/dist/services/pr-feedback-monitor-service.js.map +1 -1
- package/dist/services/redis-queue-adapter.d.ts +4 -0
- package/dist/services/redis-queue-adapter.d.ts.map +1 -1
- package/dist/services/redis-queue-adapter.js +90 -10
- package/dist/services/redis-queue-adapter.js.map +1 -1
- package/dist/services/worker-dispatcher.d.ts +14 -2
- package/dist/services/worker-dispatcher.d.ts.map +1 -1
- package/dist/services/worker-dispatcher.js +55 -2
- package/dist/services/worker-dispatcher.js.map +1 -1
- package/dist/types/api.d.ts +3 -0
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/api.js +1 -0
- package/dist/types/api.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/monitor.d.ts +72 -4
- package/dist/types/monitor.d.ts.map +1 -1
- package/dist/worker/base-merge.d.ts +54 -0
- package/dist/worker/base-merge.d.ts.map +1 -0
- package/dist/worker/base-merge.js +99 -0
- package/dist/worker/base-merge.js.map +1 -0
- package/dist/worker/clarification-markers.d.ts +29 -0
- package/dist/worker/clarification-markers.d.ts.map +1 -0
- package/dist/worker/clarification-markers.js +44 -0
- package/dist/worker/clarification-markers.js.map +1 -0
- package/dist/worker/clarification-poster.d.ts.map +1 -1
- package/dist/worker/clarification-poster.js +266 -25
- package/dist/worker/clarification-poster.js.map +1 -1
- package/dist/worker/claude-cli-worker.d.ts +21 -2
- package/dist/worker/claude-cli-worker.d.ts.map +1 -1
- package/dist/worker/claude-cli-worker.js +149 -4
- package/dist/worker/claude-cli-worker.js.map +1 -1
- package/dist/worker/cli-spawner.d.ts +4 -0
- package/dist/worker/cli-spawner.d.ts.map +1 -1
- package/dist/worker/cli-spawner.js +51 -7
- package/dist/worker/cli-spawner.js.map +1 -1
- package/dist/worker/config.d.ts +101 -9
- package/dist/worker/config.d.ts.map +1 -1
- package/dist/worker/config.js +75 -4
- package/dist/worker/config.js.map +1 -1
- package/dist/worker/evidence-hash.d.ts +32 -0
- package/dist/worker/evidence-hash.d.ts.map +1 -0
- package/dist/worker/evidence-hash.js +139 -0
- package/dist/worker/evidence-hash.js.map +1 -0
- package/dist/worker/handler-outcome-assertion.d.ts +38 -0
- package/dist/worker/handler-outcome-assertion.d.ts.map +1 -0
- package/dist/worker/handler-outcome-assertion.js +58 -0
- package/dist/worker/handler-outcome-assertion.js.map +1 -0
- package/dist/worker/handler-outcome.d.ts +50 -0
- package/dist/worker/handler-outcome.d.ts.map +1 -0
- package/dist/worker/handler-outcome.js +2 -0
- package/dist/worker/handler-outcome.js.map +1 -0
- package/dist/worker/label-manager.d.ts +58 -2
- package/dist/worker/label-manager.d.ts.map +1 -1
- package/dist/worker/label-manager.js +225 -27
- package/dist/worker/label-manager.js.map +1 -1
- package/dist/worker/merge-conflict-handler.d.ts +141 -0
- package/dist/worker/merge-conflict-handler.d.ts.map +1 -0
- package/dist/worker/merge-conflict-handler.js +642 -0
- package/dist/worker/merge-conflict-handler.js.map +1 -0
- package/dist/worker/merge-conflict-prompt.d.ts +35 -0
- package/dist/worker/merge-conflict-prompt.d.ts.map +1 -0
- package/dist/worker/merge-conflict-prompt.js +71 -0
- package/dist/worker/merge-conflict-prompt.js.map +1 -0
- package/dist/worker/merge-conflict-remedy.d.ts +42 -0
- package/dist/worker/merge-conflict-remedy.d.ts.map +1 -0
- package/dist/worker/merge-conflict-remedy.js +28 -0
- package/dist/worker/merge-conflict-remedy.js.map +1 -0
- package/dist/worker/output-tail-synthesis.d.ts +15 -0
- package/dist/worker/output-tail-synthesis.d.ts.map +1 -0
- package/dist/worker/output-tail-synthesis.js +25 -0
- package/dist/worker/output-tail-synthesis.js.map +1 -0
- package/dist/worker/output-tail.d.ts +13 -0
- package/dist/worker/output-tail.d.ts.map +1 -0
- package/dist/worker/output-tail.js +31 -0
- package/dist/worker/output-tail.js.map +1 -0
- package/dist/worker/pause-context.d.ts +30 -0
- package/dist/worker/pause-context.d.ts.map +1 -0
- package/dist/worker/pause-context.js +98 -0
- package/dist/worker/pause-context.js.map +1 -0
- package/dist/worker/phase-loop.d.ts +66 -0
- package/dist/worker/phase-loop.d.ts.map +1 -1
- package/dist/worker/phase-loop.js +299 -31
- package/dist/worker/phase-loop.js.map +1 -1
- package/dist/worker/pr-feedback-handler.d.ts +46 -46
- package/dist/worker/pr-feedback-handler.d.ts.map +1 -1
- package/dist/worker/pr-feedback-handler.js +276 -105
- package/dist/worker/pr-feedback-handler.js.map +1 -1
- package/dist/worker/pr-manager.d.ts +5 -0
- package/dist/worker/pr-manager.d.ts.map +1 -1
- package/dist/worker/pr-manager.js +7 -0
- package/dist/worker/pr-manager.js.map +1 -1
- package/dist/worker/product-diff.d.ts +39 -0
- package/dist/worker/product-diff.d.ts.map +1 -0
- package/dist/worker/product-diff.js +43 -0
- package/dist/worker/product-diff.js.map +1 -0
- package/dist/worker/provisioning-failure.d.ts +14 -0
- package/dist/worker/provisioning-failure.d.ts.map +1 -0
- package/dist/worker/provisioning-failure.js +2 -0
- package/dist/worker/provisioning-failure.js.map +1 -0
- package/dist/worker/repo-checkout.d.ts +14 -0
- package/dist/worker/repo-checkout.d.ts.map +1 -1
- package/dist/worker/repo-checkout.js +19 -1
- package/dist/worker/repo-checkout.js.map +1 -1
- package/dist/worker/stage-comment-manager.d.ts +42 -1
- package/dist/worker/stage-comment-manager.d.ts.map +1 -1
- package/dist/worker/stage-comment-manager.js +205 -1
- package/dist/worker/stage-comment-manager.js.map +1 -1
- package/dist/worker/terminal-label-op-error.d.ts +23 -0
- package/dist/worker/terminal-label-op-error.d.ts.map +1 -0
- package/dist/worker/terminal-label-op-error.js +27 -0
- package/dist/worker/terminal-label-op-error.js.map +1 -0
- package/dist/worker/types.d.ts +161 -2
- package/dist/worker/types.d.ts.map +1 -1
- package/dist/worker/types.js +11 -0
- package/dist/worker/types.js.map +1 -1
- package/dist/worker/validate-fix-handler.d.ts +79 -0
- package/dist/worker/validate-fix-handler.d.ts.map +1 -0
- package/dist/worker/validate-fix-handler.js +320 -0
- package/dist/worker/validate-fix-handler.js.map +1 -0
- package/dist/worker/worker-result.d.ts +39 -0
- package/dist/worker/worker-result.d.ts.map +1 -0
- package/dist/worker/worker-result.js +10 -0
- package/dist/worker/worker-result.js.map +1 -0
- package/package.json +7 -6
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { QueueItem } from '../types/index.js';
|
|
2
|
+
import type { Logger } from './types.js';
|
|
3
|
+
import type { WorkerConfig } from './config.js';
|
|
4
|
+
import type { SSEEventEmitter } from './output-capture.js';
|
|
5
|
+
import type { AgentLauncher } from '../launcher/agent-launcher.js';
|
|
6
|
+
import type { HandlerOutcome } from './handler-outcome.js';
|
|
7
|
+
/**
|
|
8
|
+
* Evidence emitted when the agent-CLI attempt fails to produce a conflict-
|
|
9
|
+
* free committed merge (FR-009).
|
|
10
|
+
*/
|
|
11
|
+
export interface BlockedStuckMergeConflictsEvidence {
|
|
12
|
+
/** Paths that still had conflict markers after the agent-CLI attempt. */
|
|
13
|
+
unresolvedPaths: string[];
|
|
14
|
+
/**
|
|
15
|
+
* Paths the agent successfully resolved (staged, no markers).
|
|
16
|
+
* Empty if the agent produced no diff at all.
|
|
17
|
+
*/
|
|
18
|
+
partiallyResolvedPaths: string[];
|
|
19
|
+
/** Base ref that was being merged. */
|
|
20
|
+
baseRef: string;
|
|
21
|
+
/** Short SHA of the branch tip at attempt time. */
|
|
22
|
+
branchTipSha: string;
|
|
23
|
+
/** ISO timestamp of the attempt. */
|
|
24
|
+
attemptedAt: string;
|
|
25
|
+
/** Optional short human-readable reason (e.g., "no linked PR"). */
|
|
26
|
+
reason?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Handles the `resolve-merge-conflicts` command per #898.
|
|
30
|
+
*
|
|
31
|
+
* Processing flow (see `handler-contract.md` §"Flow"):
|
|
32
|
+
* 1-3. Parse item, create GitHub client, resolve PR via PrLinker.
|
|
33
|
+
* 4. switchBranch with 3× retry.
|
|
34
|
+
* 5. resolveBaseBranch (reuses #864 helper).
|
|
35
|
+
* 6-7. fetch + merge origin/<base> with 3× retry. No-op merge → immediate success.
|
|
36
|
+
* 8. Enumerate conflicted paths.
|
|
37
|
+
* 9-10.Enumerate open PRs targeting same base, cache file lists.
|
|
38
|
+
* 11. Build MergeConflictIntent prompt via buildMergeConflictPrompt.
|
|
39
|
+
* 12. agentLauncher.launch EXACTLY ONCE.
|
|
40
|
+
* 13. Success predicate: no MERGE_HEAD, no unresolved paths, no conflict markers.
|
|
41
|
+
* 14. git push origin <branch> with 3× retry (network only; NFF is a hard fail).
|
|
42
|
+
* 15. On success: apply completed:merge-conflicts + remove waiting-for + agent:paused.
|
|
43
|
+
* 17. On block: apply blocked:stuck-merge-conflicts, leave waiting-for in place,
|
|
44
|
+
* emit evidence block, return normally.
|
|
45
|
+
*/
|
|
46
|
+
export declare class MergeConflictHandler {
|
|
47
|
+
private readonly config;
|
|
48
|
+
private readonly logger;
|
|
49
|
+
private readonly agentLauncher;
|
|
50
|
+
private readonly sseEmitter?;
|
|
51
|
+
private readonly repoCheckout;
|
|
52
|
+
private readonly prLinker;
|
|
53
|
+
constructor(config: WorkerConfig, logger: Logger, agentLauncher: AgentLauncher, sseEmitter?: SSEEventEmitter | undefined);
|
|
54
|
+
/**
|
|
55
|
+
* Process a merge-conflict resolution task (#902 FR-005 return type).
|
|
56
|
+
*
|
|
57
|
+
* Returns a `HandlerOutcome` — the dispatcher (via `ClaudeCliWorker.handle`)
|
|
58
|
+
* routes on the discriminant to decide re-arm vs failed-terminal.
|
|
59
|
+
*
|
|
60
|
+
* Success/no-op/push-succeeded → `re-armed` with `startPhase` from
|
|
61
|
+
* `metadata.phase`. Blocked branches → `failed` with evidence. Missing
|
|
62
|
+
* `metadata.phase` at a would-be `re-armed` return → fail-loud path
|
|
63
|
+
* (FR-004): applies `blocked:stuck-merge-conflicts`, returns `failed` with
|
|
64
|
+
* evidence citing the missing pause-context.
|
|
65
|
+
*/
|
|
66
|
+
handle(item: QueueItem, checkoutPath: string): Promise<HandlerOutcome>;
|
|
67
|
+
/**
|
|
68
|
+
* Enumerate open PRs targeting `baseName` (excluding the target issue's own PR)
|
|
69
|
+
* and build a Map<path, prNumber[]> of files each sibling PR touches.
|
|
70
|
+
*
|
|
71
|
+
* Uses `gh pr view <number> --json files` per sibling (call site is bounded
|
|
72
|
+
* to the poll cycle, per handler-contract §Observability). Missing files
|
|
73
|
+
* data is treated as an empty set.
|
|
74
|
+
*/
|
|
75
|
+
private enumerateSiblingFileMap;
|
|
76
|
+
/**
|
|
77
|
+
* `gh pr view <number> --json files` on the local checkout. Called
|
|
78
|
+
* per-sibling; failures are non-fatal (the scope guard degrades to
|
|
79
|
+
* "no siblings" for that PR, which is safer than throwing).
|
|
80
|
+
*/
|
|
81
|
+
private fetchPrFiles;
|
|
82
|
+
/**
|
|
83
|
+
* Success predicate (handler-contract §"Success predicate"):
|
|
84
|
+
* - `.git/MERGE_HEAD` does NOT exist (merge is complete)
|
|
85
|
+
* - `git diff --name-only --diff-filter=U` is empty (no unresolved paths)
|
|
86
|
+
* - No file in the tree contains `<<<<<<< ` at line-start (belt & suspenders)
|
|
87
|
+
*/
|
|
88
|
+
private verifyMergeResolved;
|
|
89
|
+
private listUnresolvedPaths;
|
|
90
|
+
/**
|
|
91
|
+
* Best-effort scan for the `<<<<<<< ` conflict marker at line start across
|
|
92
|
+
* tracked files. Uses `git ls-files` to enumerate, then reads each file
|
|
93
|
+
* synchronously (bounded — small worker workloads).
|
|
94
|
+
*/
|
|
95
|
+
private scanForConflictMarkers;
|
|
96
|
+
/**
|
|
97
|
+
* `git push origin <branch>` with 3× retry on transient network errors.
|
|
98
|
+
* Non-fast-forward rejection does NOT retry — it escalates to blocked.
|
|
99
|
+
* On success, applies the combined label cleanup and returns re-armed.
|
|
100
|
+
*/
|
|
101
|
+
private pushAndSucceed;
|
|
102
|
+
/**
|
|
103
|
+
* Success-terminal branch (#902 FR-001, FR-004, FR-007).
|
|
104
|
+
*
|
|
105
|
+
* - FR-001: consume `completed:merge-conflicts` and clear `agent:in-progress` /
|
|
106
|
+
* `agent:paused` residue so the next natural conflict pause is not
|
|
107
|
+
* insta-resumed by the generic pair path.
|
|
108
|
+
* - FR-004: fail-loud if `metadata.phase` is missing — never re-derive from
|
|
109
|
+
* labels. Applies `blocked:stuck-merge-conflicts`, returns `failed` with
|
|
110
|
+
* evidence citing the missing pause-context.
|
|
111
|
+
* - FR-007: one combined `gh issue edit --remove-label …` invocation (via
|
|
112
|
+
* `github.removeLabels` which already batches removes into a single call).
|
|
113
|
+
*/
|
|
114
|
+
private finishSuccess;
|
|
115
|
+
/**
|
|
116
|
+
* #902 FR-007: single combined `gh issue edit --remove-label …` for all four
|
|
117
|
+
* ownership-transition removes. No adds — re-arm is direct enqueue, not a
|
|
118
|
+
* resume-pair, so no `waiting-for:<gate>` / `completed:<gate>` labels are
|
|
119
|
+
* needed. The next `continue` item's normal in-progress labels are applied
|
|
120
|
+
* by `LabelManager.onResumeStart` when the phase loop enters.
|
|
121
|
+
*
|
|
122
|
+
* `github.removeLabels` batches all four `--remove-label` flags into one
|
|
123
|
+
* `gh issue edit` invocation — one HTTP round-trip, atomic at the label-set
|
|
124
|
+
* level (per contracts/handler-outcome.md §"Label edit shape").
|
|
125
|
+
*/
|
|
126
|
+
private applySuccessDisposition;
|
|
127
|
+
private applyBlockedDisposition;
|
|
128
|
+
/**
|
|
129
|
+
* Spawn the agent CLI with a MergeConflictIntent. Runs at most once
|
|
130
|
+
* (Q4 → D). Returns true if the CLI exited 0, false otherwise.
|
|
131
|
+
*/
|
|
132
|
+
private spawnAgentForConflict;
|
|
133
|
+
private retry;
|
|
134
|
+
private isTransientGitError;
|
|
135
|
+
private isTransientNetworkError;
|
|
136
|
+
private isNonFastForward;
|
|
137
|
+
private baseIsAncestor;
|
|
138
|
+
private getBranchTipSha;
|
|
139
|
+
private sleep;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=merge-conflict-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-conflict-handler.d.ts","sourceRoot":"","sources":["../../src/worker/merge-conflict-handler.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,SAAS,EAAiC,MAAM,mBAAmB,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA8B3D;;;GAGG;AACH,MAAM,WAAW,kCAAkC;IACjD,yEAAyE;IACzE,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B;;;OAGG;IACH,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,oBAAoB;IAK7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAP9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAGjB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,UAAU,CAAC,EAAE,eAAe,YAAA;IAM/C;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAiQ5E;;;;;;;OAOG;YACW,uBAAuB;IA8CrC;;;;OAIG;YACW,YAAY;IAoB1B;;;;;OAKG;YACW,mBAAmB;YAgCnB,mBAAmB;IAgBjC;;;;OAIG;YACW,sBAAsB;IAwBpC;;;;OAIG;YACW,cAAc;IA0D5B;;;;;;;;;;;OAWG;YACW,aAAa;IA+B3B;;;;;;;;;;OAUG;YACW,uBAAuB;YAyBvB,uBAAuB;IA8BrC;;;OAGG;YACW,qBAAqB;YAkFrB,KAAK;IAqBnB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,gBAAgB;YAMV,cAAc;YAad,eAAe;IAW7B,OAAO,CAAC,KAAK;CAGd"}
|