steroids-cli 0.15.3 → 0.15.5

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 (144) hide show
  1. package/dist/commands/ai-proxy.d.ts +6 -0
  2. package/dist/commands/ai-proxy.d.ts.map +1 -0
  3. package/dist/commands/ai-proxy.js +79 -0
  4. package/dist/commands/ai-proxy.js.map +1 -0
  5. package/dist/commands/ai-run.d.ts.map +1 -1
  6. package/dist/commands/ai-run.js +10 -7
  7. package/dist/commands/ai-run.js.map +1 -1
  8. package/dist/commands/ai.d.ts.map +1 -1
  9. package/dist/commands/ai.js +5 -0
  10. package/dist/commands/ai.js.map +1 -1
  11. package/dist/commands/completion.js +2 -1
  12. package/dist/commands/completion.js.map +1 -1
  13. package/dist/commands/features.d.ts +5 -0
  14. package/dist/commands/features.d.ts.map +1 -0
  15. package/dist/commands/features.js +255 -0
  16. package/dist/commands/features.js.map +1 -0
  17. package/dist/commands/llm-content.d.ts +1 -1
  18. package/dist/commands/llm-content.d.ts.map +1 -1
  19. package/dist/commands/llm-content.js +36 -6
  20. package/dist/commands/llm-content.js.map +1 -1
  21. package/dist/commands/llm.d.ts.map +1 -1
  22. package/dist/commands/llm.js +1 -0
  23. package/dist/commands/llm.js.map +1 -1
  24. package/dist/commands/web.d.ts.map +1 -1
  25. package/dist/commands/web.js +22 -3
  26. package/dist/commands/web.js.map +1 -1
  27. package/dist/database/queries.d.ts.map +1 -1
  28. package/dist/database/queries.js +13 -6
  29. package/dist/database/queries.js.map +1 -1
  30. package/dist/index.js +64 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/providers/api-models.d.ts +5 -1
  33. package/dist/providers/api-models.d.ts.map +1 -1
  34. package/dist/providers/api-models.js +10 -107
  35. package/dist/providers/api-models.js.map +1 -1
  36. package/dist/providers/claude.d.ts.map +1 -1
  37. package/dist/providers/claude.js +16 -1
  38. package/dist/providers/claude.js.map +1 -1
  39. package/dist/providers/codex.d.ts.map +1 -1
  40. package/dist/providers/codex.js +16 -1
  41. package/dist/providers/codex.js.map +1 -1
  42. package/dist/providers/interface.d.ts.map +1 -1
  43. package/dist/providers/interface.js +11 -1
  44. package/dist/providers/interface.js.map +1 -1
  45. package/dist/providers/mistral-models.d.ts +18 -0
  46. package/dist/providers/mistral-models.d.ts.map +1 -0
  47. package/dist/providers/mistral-models.js +145 -0
  48. package/dist/providers/mistral-models.js.map +1 -0
  49. package/dist/providers/mistral.d.ts +6 -0
  50. package/dist/providers/mistral.d.ts.map +1 -1
  51. package/dist/providers/mistral.js +31 -54
  52. package/dist/providers/mistral.js.map +1 -1
  53. package/dist/providers/opencode.d.ts.map +1 -1
  54. package/dist/providers/opencode.js +5 -1
  55. package/dist/providers/opencode.js.map +1 -1
  56. package/dist/proxy/daemon-entry.d.ts +9 -0
  57. package/dist/proxy/daemon-entry.d.ts.map +1 -0
  58. package/dist/proxy/daemon-entry.js +29 -0
  59. package/dist/proxy/daemon-entry.js.map +1 -0
  60. package/dist/proxy/hf-proxy.d.ts +16 -0
  61. package/dist/proxy/hf-proxy.d.ts.map +1 -0
  62. package/dist/proxy/hf-proxy.js +200 -0
  63. package/dist/proxy/hf-proxy.js.map +1 -0
  64. package/dist/proxy/hf-token.d.ts +18 -0
  65. package/dist/proxy/hf-token.d.ts.map +1 -0
  66. package/dist/proxy/hf-token.js +57 -0
  67. package/dist/proxy/hf-token.js.map +1 -0
  68. package/dist/proxy/lifecycle.d.ts +26 -0
  69. package/dist/proxy/lifecycle.d.ts.map +1 -0
  70. package/dist/proxy/lifecycle.js +129 -0
  71. package/dist/proxy/lifecycle.js.map +1 -0
  72. package/package.json +1 -1
  73. package/dist/commands/merge.d.ts +0 -3
  74. package/dist/commands/merge.d.ts.map +0 -1
  75. package/dist/commands/merge.js +0 -246
  76. package/dist/commands/merge.js.map +0 -1
  77. package/dist/parallel/merge-commit-checks.d.ts +0 -6
  78. package/dist/parallel/merge-commit-checks.d.ts.map +0 -1
  79. package/dist/parallel/merge-commit-checks.js +0 -28
  80. package/dist/parallel/merge-commit-checks.js.map +0 -1
  81. package/dist/parallel/merge-conflict-attempts.d.ts +0 -8
  82. package/dist/parallel/merge-conflict-attempts.d.ts.map +0 -1
  83. package/dist/parallel/merge-conflict-attempts.js +0 -60
  84. package/dist/parallel/merge-conflict-attempts.js.map +0 -1
  85. package/dist/parallel/merge-conflict-invoke.d.ts +0 -2
  86. package/dist/parallel/merge-conflict-invoke.d.ts.map +0 -1
  87. package/dist/parallel/merge-conflict-invoke.js +0 -41
  88. package/dist/parallel/merge-conflict-invoke.js.map +0 -1
  89. package/dist/parallel/merge-conflict-prompts.d.ts +0 -23
  90. package/dist/parallel/merge-conflict-prompts.d.ts.map +0 -1
  91. package/dist/parallel/merge-conflict-prompts.js +0 -40
  92. package/dist/parallel/merge-conflict-prompts.js.map +0 -1
  93. package/dist/parallel/merge-conflict-task.d.ts +0 -3
  94. package/dist/parallel/merge-conflict-task.d.ts.map +0 -1
  95. package/dist/parallel/merge-conflict-task.js +0 -59
  96. package/dist/parallel/merge-conflict-task.js.map +0 -1
  97. package/dist/parallel/merge-conflict.d.ts +0 -22
  98. package/dist/parallel/merge-conflict.d.ts.map +0 -1
  99. package/dist/parallel/merge-conflict.js +0 -176
  100. package/dist/parallel/merge-conflict.js.map +0 -1
  101. package/dist/parallel/merge-errors.d.ts +0 -12
  102. package/dist/parallel/merge-errors.d.ts.map +0 -1
  103. package/dist/parallel/merge-errors.js +0 -18
  104. package/dist/parallel/merge-errors.js.map +0 -1
  105. package/dist/parallel/merge-git.d.ts +0 -25
  106. package/dist/parallel/merge-git.d.ts.map +0 -1
  107. package/dist/parallel/merge-git.js +0 -141
  108. package/dist/parallel/merge-git.js.map +0 -1
  109. package/dist/parallel/merge-lock.d.ts +0 -28
  110. package/dist/parallel/merge-lock.d.ts.map +0 -1
  111. package/dist/parallel/merge-lock.js +0 -91
  112. package/dist/parallel/merge-lock.js.map +0 -1
  113. package/dist/parallel/merge-process.d.ts +0 -21
  114. package/dist/parallel/merge-process.d.ts.map +0 -1
  115. package/dist/parallel/merge-process.js +0 -104
  116. package/dist/parallel/merge-process.js.map +0 -1
  117. package/dist/parallel/merge-progress.d.ts +0 -22
  118. package/dist/parallel/merge-progress.d.ts.map +0 -1
  119. package/dist/parallel/merge-progress.js +0 -41
  120. package/dist/parallel/merge-progress.js.map +0 -1
  121. package/dist/parallel/merge-sealing.d.ts +0 -8
  122. package/dist/parallel/merge-sealing.d.ts.map +0 -1
  123. package/dist/parallel/merge-sealing.js +0 -60
  124. package/dist/parallel/merge-sealing.js.map +0 -1
  125. package/dist/parallel/merge-validation.d.ts +0 -6
  126. package/dist/parallel/merge-validation.d.ts.map +0 -1
  127. package/dist/parallel/merge-validation.js +0 -57
  128. package/dist/parallel/merge-validation.js.map +0 -1
  129. package/dist/parallel/merge-workspace.d.ts +0 -8
  130. package/dist/parallel/merge-workspace.d.ts.map +0 -1
  131. package/dist/parallel/merge-workspace.js +0 -37
  132. package/dist/parallel/merge-workspace.js.map +0 -1
  133. package/dist/parallel/merge.d.ts +0 -48
  134. package/dist/parallel/merge.d.ts.map +0 -1
  135. package/dist/parallel/merge.js +0 -228
  136. package/dist/parallel/merge.js.map +0 -1
  137. package/dist/workspace/git-lifecycle-merge.d.ts +0 -23
  138. package/dist/workspace/git-lifecycle-merge.d.ts.map +0 -1
  139. package/dist/workspace/git-lifecycle-merge.js +0 -159
  140. package/dist/workspace/git-lifecycle-merge.js.map +0 -1
  141. package/dist/workspace/merge-pipeline.d.ts +0 -21
  142. package/dist/workspace/merge-pipeline.d.ts.map +0 -1
  143. package/dist/workspace/merge-pipeline.js +0 -74
  144. package/dist/workspace/merge-pipeline.js.map +0 -1
@@ -1,246 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mergeCommand = mergeCommand;
4
- /**
5
- * steroids merge - Merge completed parallel workstreams
6
- */
7
- const node_util_1 = require("node:util");
8
- const node_crypto_1 = require("node:crypto");
9
- const node_fs_1 = require("node:fs");
10
- const node_path_1 = require("node:path");
11
- const output_js_1 = require("../cli/output.js");
12
- const help_js_1 = require("../cli/help.js");
13
- const errors_js_1 = require("../cli/errors.js");
14
- const connection_js_1 = require("../database/connection.js");
15
- const global_db_js_1 = require("../runners/global-db.js");
16
- const loader_js_1 = require("../config/loader.js");
17
- const merge_js_1 = require("../parallel/merge.js");
18
- const HELP = (0, help_js_1.generateHelp)({
19
- command: 'merge',
20
- description: 'Merge completed parallel workstreams into main',
21
- details: `When running parallel sessions, each workstream is merged via cherry-pick.
22
- This command runs the final merge step for a completed parallel session and recovers
23
- from stale merge locks or interrupted conflict resolution when needed.`,
24
- usage: [
25
- 'steroids merge [options]',
26
- ],
27
- options: [
28
- { long: 'project', description: 'Project directory to merge (defaults to cwd)', values: '<path>' },
29
- { long: 'session', description: 'Parallel session ID (defaults to latest session for project)', values: '<id>' },
30
- { long: 'session-id', description: 'Alias for --session', values: '<id>' },
31
- { long: 'remote', description: 'Git remote to fetch from', values: '<name>', default: 'origin' },
32
- { long: 'main-branch', description: 'Target branch for cherry-picks', values: '<name>', default: 'main' },
33
- { long: 'integration-branch', description: 'Temporary integration branch name', values: '<name>' },
34
- { long: 'validation-command', description: 'Shell command to validate merged state before push', values: '<cmd>' },
35
- ],
36
- examples: [
37
- { command: 'steroids merge', description: 'Merge latest parallel session in current project' },
38
- { command: 'steroids merge --project ~/projects/my-app', description: 'Merge using an explicit project path' },
39
- { command: 'steroids merge --session abc123', description: 'Merge a specific parallel session' },
40
- ],
41
- related: [
42
- { command: 'steroids runners start --parallel', description: 'Start parallel runners' },
43
- ],
44
- });
45
- function parseSectionIds(sectionIdsJson) {
46
- try {
47
- const parsed = JSON.parse(sectionIdsJson);
48
- if (!Array.isArray(parsed)) {
49
- return [];
50
- }
51
- return parsed.filter((entry) => typeof entry === 'string');
52
- }
53
- catch {
54
- return [];
55
- }
56
- }
57
- function parseTimestamp(value) {
58
- if (!value) {
59
- return Number.MAX_SAFE_INTEGER;
60
- }
61
- const parsed = Date.parse(value);
62
- return Number.isNaN(parsed) ? Number.MAX_SAFE_INTEGER : parsed;
63
- }
64
- function orderByCompletion(planRows) {
65
- return [...planRows].sort((left, right) => {
66
- const completedLeft = parseTimestamp(left.completed_at);
67
- const completedRight = parseTimestamp(right.completed_at);
68
- if (completedLeft !== completedRight) {
69
- return completedLeft - completedRight;
70
- }
71
- return parseTimestamp(left.created_at) - parseTimestamp(right.created_at);
72
- });
73
- }
74
- function buildPlanForSession(db, session, includeRunning) {
75
- const statusFilter = includeRunning ? '' : ' AND status = \'completed\'';
76
- const rows = db
77
- .prepare(`SELECT id, branch_name, section_ids, status, completed_at, created_at
78
- FROM workstreams
79
- WHERE session_id = ?${statusFilter}`)
80
- .all(session.id);
81
- if (rows.length === 0) {
82
- return {
83
- sessionId: session.id,
84
- sessionStatus: session.status,
85
- createdAt: session.created_at,
86
- workstreams: [],
87
- sectionPlans: rows,
88
- };
89
- }
90
- const orderedRows = orderByCompletion(rows);
91
- const workstreams = orderedRows
92
- .map((row) => ({
93
- id: row.id,
94
- branchName: row.branch_name,
95
- }));
96
- return {
97
- sessionId: session.id,
98
- sessionStatus: session.status,
99
- createdAt: session.created_at,
100
- workstreams,
101
- sectionPlans: orderedRows,
102
- };
103
- }
104
- function findLatestSessionForProject(db, projectPath) {
105
- return db
106
- .prepare(`SELECT id, status, created_at
107
- FROM parallel_sessions
108
- WHERE project_path = ?
109
- ORDER BY created_at DESC`)
110
- .get(projectPath) ?? null;
111
- }
112
- function getSessionById(db, projectPath, sessionId) {
113
- return db
114
- .prepare(`SELECT id, status, created_at
115
- FROM parallel_sessions
116
- WHERE id = ? AND project_path = ?`)
117
- .get(sessionId, projectPath) ?? null;
118
- }
119
- function resolveProjectPath(projectArg) {
120
- const projectPath = (0, node_path_1.resolve)(projectArg ?? process.cwd());
121
- const steroidsDbPath = (0, node_path_1.join)(projectPath, '.steroids', 'steroids.db');
122
- if (!(0, node_fs_1.existsSync)(projectPath)) {
123
- throw new Error(`Project directory does not exist: ${projectPath}`);
124
- }
125
- if (!(0, node_fs_1.existsSync)(steroidsDbPath)) {
126
- throw new Error(`Not a steroids project: ${projectPath}`);
127
- }
128
- return projectPath;
129
- }
130
- function resolveMergePlan(db, projectPath, explicitSessionId) {
131
- const targetSession = explicitSessionId
132
- ? getSessionById(db, projectPath, explicitSessionId)
133
- : findLatestSessionForProject(db, projectPath);
134
- if (!targetSession) {
135
- if (explicitSessionId) {
136
- throw new Error(`Parallel session not found: ${explicitSessionId}`);
137
- }
138
- throw new Error(`No parallel sessions found for project: ${projectPath}`);
139
- }
140
- const includeRunning = targetSession.status === 'running' || targetSession.status === 'merging';
141
- const plan = buildPlanForSession(db, targetSession, includeRunning);
142
- if (plan.sectionPlans.length === 0) {
143
- throw new Error(`No completed workstreams found for session: ${targetSession.id}`);
144
- }
145
- return plan;
146
- }
147
- function summarizeError(errors) {
148
- if (errors.length === 1) {
149
- return errors[0];
150
- }
151
- return errors.join('; ');
152
- }
153
- async function mergeCommand(args, flags) {
154
- const out = (0, output_js_1.createOutput)({ command: 'merge', flags });
155
- if (flags.help) {
156
- console.log(HELP);
157
- return;
158
- }
159
- const { values } = (0, node_util_1.parseArgs)({
160
- args,
161
- options: {
162
- project: { type: 'string', short: 'p' },
163
- session: { type: 'string' },
164
- 'session-id': { type: 'string' },
165
- remote: { type: 'string', default: 'origin' },
166
- 'main-branch': { type: 'string', default: 'main' },
167
- 'integration-branch': { type: 'string' },
168
- 'validation-command': { type: 'string' },
169
- },
170
- allowPositionals: false,
171
- });
172
- const explicitSession = values['session-id']
173
- ?? values.session;
174
- const projectPath = resolveProjectPath(values.project);
175
- // Merge command performs only project-scoped work and never touches other repos.
176
- const { db: globalDb, close: closeGlobalDb } = (0, global_db_js_1.openGlobalDatabase)();
177
- let plan;
178
- try {
179
- plan = resolveMergePlan(globalDb, projectPath, explicitSession);
180
- }
181
- finally {
182
- closeGlobalDb();
183
- }
184
- if (flags.dryRun) {
185
- out.success({
186
- project_path: projectPath,
187
- session_id: plan.sessionId,
188
- session_status: plan.sessionStatus,
189
- session_created_at: plan.createdAt,
190
- workstreams: plan.sectionPlans.map((row) => ({
191
- id: row.id,
192
- branch_name: row.branch_name,
193
- section_ids: parseSectionIds(row.section_ids),
194
- status: row.status,
195
- completed_at: row.completed_at,
196
- })),
197
- });
198
- return;
199
- }
200
- let result;
201
- const remote = values.remote;
202
- const mainBranch = values['main-branch'];
203
- const integrationBranch = values['integration-branch'];
204
- const configuredValidationCommand = (0, loader_js_1.loadConfig)(projectPath).runners?.parallel?.validationCommand;
205
- const validationCommand = values['validation-command']
206
- ?? (typeof configuredValidationCommand === 'string' ? configuredValidationCommand : undefined);
207
- try {
208
- const { close } = (0, connection_js_1.openDatabase)(projectPath);
209
- close();
210
- }
211
- catch (error) {
212
- out.error(errors_js_1.ErrorCode.NOT_INITIALIZED, `Not a steroids project: ${projectPath}`);
213
- process.exit((0, errors_js_1.getExitCode)(errors_js_1.ErrorCode.NOT_INITIALIZED));
214
- }
215
- result = await (0, merge_js_1.runParallelMerge)({
216
- projectPath,
217
- sessionId: plan.sessionId,
218
- runnerId: (0, node_crypto_1.randomUUID)(),
219
- workstreams: plan.workstreams,
220
- remote,
221
- mainBranch,
222
- integrationBranchName: integrationBranch,
223
- validationCommand,
224
- });
225
- if (!result.success) {
226
- const isLockContention = result.errors.some((entry) => entry.includes('Could not acquire merge lock'));
227
- const code = isLockContention ? errors_js_1.ErrorCode.RESOURCE_LOCKED : errors_js_1.ErrorCode.GENERAL_ERROR;
228
- const message = summarizeError(result.errors);
229
- out.error(code, message || 'Merge failed', {
230
- session_id: plan.sessionId,
231
- project_path: projectPath,
232
- merge_result: result,
233
- });
234
- process.exit((0, errors_js_1.getExitCode)(code));
235
- }
236
- out.success({
237
- session_id: plan.sessionId,
238
- project_path: projectPath,
239
- session_status: plan.sessionStatus,
240
- workstreams: plan.sectionPlans.length,
241
- completed_commits: result.completedCommits,
242
- conflicts: result.conflicts,
243
- skipped: result.skipped,
244
- });
245
- }
246
- //# sourceMappingURL=merge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/commands/merge.ts"],"names":[],"mappings":";;AAmOA,oCAwGC;AA1UD;;GAEG;AAEH,yCAAsC;AACtC,6CAAyC;AACzC,qCAAqC;AACrC,yCAA0C;AAE1C,gDAAgD;AAChD,4CAA8C;AAC9C,gDAA0D;AAC1D,6DAAyD;AACzD,0DAA6D;AAC7D,mDAAiD;AACjD,mDAI8B;AAE9B,MAAM,IAAI,GAAG,IAAA,sBAAY,EAAC;IACxB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,gDAAgD;IAC7D,OAAO,EAAE;;yEAE8D;IACvE,KAAK,EAAE;QACL,0BAA0B;KAC3B;IACD,OAAO,EAAE;QACP,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,8CAA8C,EAAE,MAAM,EAAE,QAAQ,EAAE;QAClG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,8DAA8D,EAAE,MAAM,EAAE,MAAM,EAAE;QAChH,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE;QAC1E,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;QAChG,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,gCAAgC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;QACzG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,mCAAmC,EAAE,MAAM,EAAE,QAAQ,EAAE;QAClG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,oDAAoD,EAAE,MAAM,EAAE,OAAO,EAAE;KACnH;IACD,QAAQ,EAAE;QACR,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,kDAAkD,EAAE;QAC9F,EAAE,OAAO,EAAE,4CAA4C,EAAE,WAAW,EAAE,sCAAsC,EAAE;QAC9G,EAAE,OAAO,EAAE,iCAAiC,EAAE,WAAW,EAAE,mCAAmC,EAAE;KACjG;IACD,OAAO,EAAE;QACP,EAAE,OAAO,EAAE,mCAAmC,EAAE,WAAW,EAAE,wBAAwB,EAAE;KACxF;CACF,CAAC,CAAC;AAyBH,SAAS,eAAe,CAAC,cAAsB;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAoB;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,MAAM,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC;AACjE,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAkC;IAC3D,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACxC,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAE1D,IAAI,aAAa,KAAK,cAAc,EAAE,CAAC;YACrC,OAAO,aAAa,GAAG,cAAc,CAAC;QACxC,CAAC;QAED,OAAO,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAC1B,EAAqB,EACrB,OAAwB,EACxB,cAAuB;IAEvB,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC;IAEzE,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;6BAEuB,YAAY,EAAE,CACtC;SACA,GAAG,CAAC,OAAO,CAAC,EAAE,CAA6B,CAAC;IAE/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,aAAa,EAAE,OAAO,CAAC,MAAM;YAC7B,SAAS,EAAE,OAAO,CAAC,UAAU;YAC7B,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAG,WAAW;SAC5B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,UAAU,EAAE,GAAG,CAAC,WAAW;KAC5B,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,EAAE;QACrB,aAAa,EAAE,OAAO,CAAC,MAAM;QAC7B,SAAS,EAAE,OAAO,CAAC,UAAU;QAC7B,WAAW;QACX,YAAY,EAAE,WAAW;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,EAAqB,EACrB,WAAmB;IAEnB,OAAO,EAAE;SACN,OAAO,CACN;;;gCAG0B,CAC3B;SACA,GAAG,CAAC,WAAW,CAAgC,IAAI,IAAI,CAAC;AAC7D,CAAC;AAED,SAAS,cAAc,CACrB,EAAqB,EACrB,WAAmB,EACnB,SAAiB;IAEjB,OAAO,EAAE;SACN,OAAO,CACN;;yCAEmC,CACpC;SACA,GAAG,CAAC,SAAS,EAAE,WAAW,CAAgC,IAAI,IAAI,CAAC;AACxE,CAAC;AAED,SAAS,kBAAkB,CAAC,UAA8B;IACxD,MAAM,WAAW,GAAG,IAAA,mBAAO,EAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAErE,IAAI,CAAC,IAAA,oBAAU,EAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,IAAA,oBAAU,EAAC,cAAc,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,gBAAgB,CACvB,EAAqB,EACrB,WAAmB,EACnB,iBAA0B;IAE1B,MAAM,aAAa,GAAG,iBAAiB;QACrC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,iBAAiB,CAAC;QACpD,CAAC,CAAC,2BAA2B,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAEjD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,+BAA+B,iBAAiB,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,WAAW,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,KAAK,SAAS,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,CAAC;IAChG,MAAM,IAAI,GAAG,mBAAmB,CAAC,EAAE,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IAEpE,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,+CAA+C,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,MAAgB;IACtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,IAAc,EAAE,KAAkB;IACnE,MAAM,GAAG,GAAG,IAAA,wBAAY,EAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAEtD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,qBAAS,EAAC;QAC3B,IAAI;QACJ,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;YACvC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAChC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE;YAC7C,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;YAClD,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxC,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACzC;QACD,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;IAEH,MAAM,eAAe,GAAI,MAAM,CAAC,YAAY,CAAwB;WAC9D,MAAM,CAAC,OAA8B,CAAC;IAE5C,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAA6B,CAAC,CAAC;IAE7E,iFAAiF;IACjF,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAA,iCAAkB,GAAE,CAAC;IACpE,IAAI,IAAsB,CAAC;IAE3B,IAAI,CAAC;QACH,IAAI,GAAG,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IAClE,CAAC;YAAS,CAAC;QACT,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,GAAG,CAAC,OAAO,CAAC;YACV,YAAY,EAAE,WAAW;YACzB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,cAAc,EAAE,IAAI,CAAC,aAAa;YAClC,kBAAkB,EAAE,IAAI,CAAC,SAAS;YAClC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC3C,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,WAAW,EAAE,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC7C,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,YAAY,EAAE,GAAG,CAAC,YAAY;aAC/B,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,MAAmB,CAAC;IACxB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAW,CAAC;IACnD,MAAM,iBAAiB,GAAG,MAAM,CAAC,oBAAoB,CAAuB,CAAC;IAC7E,MAAM,2BAA2B,GAAG,IAAA,sBAAU,EAAC,WAAW,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,CAAC;IACjG,MAAM,iBAAiB,GACpB,MAAM,CAAC,oBAAoB,CAAwB;WACjD,CAAC,OAAO,2BAA2B,KAAK,QAAQ,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjG,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,4BAAY,EAAC,WAAW,CAAC,CAAC;QAC5C,KAAK,EAAE,CAAC;IACV,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,qBAAS,CAAC,eAAe,EAAE,2BAA2B,WAAW,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,IAAA,uBAAW,EAAC,qBAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IACvD,CAAC;IAEC,MAAM,GAAG,MAAM,IAAA,2BAAgB,EAAC;QAC9B,WAAW;QACX,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAA,wBAAU,GAAE;QACtB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM;QACN,UAAU;QACV,qBAAqB,EAAE,iBAAiB;QACxC,iBAAiB;KAClB,CAAC,CAAC;IAEL,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACvG,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,qBAAS,CAAC,eAAe,CAAC,CAAC,CAAC,qBAAS,CAAC,aAAa,CAAC;QACpF,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9C,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,cAAc,EAAE;YACzC,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,YAAY,EAAE,WAAW;YACzB,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,IAAA,uBAAW,EAAC,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,OAAO,CAAC;QACV,UAAU,EAAE,IAAI,CAAC,SAAS;QAC1B,YAAY,EAAE,WAAW;QACzB,cAAc,EAAE,IAAI,CAAC,aAAa;QAClC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;QACrC,iBAAiB,EAAE,MAAM,CAAC,gBAAgB;QAC1C,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Commit integration checks and SHA resolution
3
- */
4
- export declare function isAppliedCommitIntegrated(projectPath: string, commitSha: string | null): boolean;
5
- export declare function resolveGitSha(output: string): string | null;
6
- //# sourceMappingURL=merge-commit-checks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-commit-checks.d.ts","sourceRoot":"","sources":["../../src/parallel/merge-commit-checks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAiBhG;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK3D"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- /**
3
- * Commit integration checks and SHA resolution
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isAppliedCommitIntegrated = isAppliedCommitIntegrated;
7
- exports.resolveGitSha = resolveGitSha;
8
- const merge_git_js_1 = require("./merge-git.js");
9
- function isAppliedCommitIntegrated(projectPath, commitSha) {
10
- if (!commitSha) {
11
- return false;
12
- }
13
- const output = (0, merge_git_js_1.runGitCommand)(projectPath, ['branch', '--contains', commitSha, '--list', 'HEAD'], { allowFailure: true });
14
- const lower = output.toLowerCase();
15
- if (lower.includes('fatal:') || lower.includes('error:')) {
16
- return false;
17
- }
18
- return output.trim().length > 0;
19
- }
20
- function resolveGitSha(output) {
21
- const trimmed = output.trim();
22
- if (!trimmed)
23
- return null;
24
- if (/fatal:|error:/i.test(trimmed))
25
- return null;
26
- return trimmed.split('\n').at(-1)?.trim() ?? null;
27
- }
28
- //# sourceMappingURL=merge-commit-checks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-commit-checks.js","sourceRoot":"","sources":["../../src/parallel/merge-commit-checks.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAIH,8DAiBC;AAED,sCAKC;AA1BD,iDAA+C;AAE/C,SAAgB,yBAAyB,CAAC,WAAmB,EAAE,SAAwB;IACrF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,4BAAa,EAC1B,WAAW,EACX,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,EACrD,EAAE,YAAY,EAAE,IAAI,EAAE,CACvB,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEnC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,aAAa,CAAC,MAAc;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACpD,CAAC"}
@@ -1,8 +0,0 @@
1
- export declare const MAX_CONFLICT_ATTEMPTS = 5;
2
- export declare function recordConflictAttempt(sessionId: string, workstreamId: string): {
3
- attempts: number;
4
- blocked: boolean;
5
- backoffMinutes: number | null;
6
- };
7
- export declare function clearConflictAttemptState(sessionId: string, workstreamId: string): void;
8
- //# sourceMappingURL=merge-conflict-attempts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-conflict-attempts.d.ts","sourceRoot":"","sources":["../../src/parallel/merge-conflict-attempts.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAGvC,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAuDvE;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAYvF"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MAX_CONFLICT_ATTEMPTS = void 0;
4
- exports.recordConflictAttempt = recordConflictAttempt;
5
- exports.clearConflictAttemptState = clearConflictAttemptState;
6
- const global_db_js_1 = require("../runners/global-db.js");
7
- const merge_errors_js_1 = require("./merge-errors.js");
8
- exports.MAX_CONFLICT_ATTEMPTS = 5;
9
- const MAX_CONFLICT_BACKOFF_MINUTES = 30;
10
- function recordConflictAttempt(sessionId, workstreamId) {
11
- return (0, global_db_js_1.withGlobalDatabase)((db) => {
12
- const row = db
13
- .prepare(`SELECT conflict_attempts
14
- FROM workstreams
15
- WHERE session_id = ?
16
- AND id = ?
17
- LIMIT 1`)
18
- .get(sessionId, workstreamId);
19
- if (!row) {
20
- throw new merge_errors_js_1.ParallelMergeError('Parallel workstream row not found while recording conflict attempt', 'LEASE_ROW_MISSING');
21
- }
22
- const attempts = (row.conflict_attempts ?? 0) + 1;
23
- if (attempts >= exports.MAX_CONFLICT_ATTEMPTS) {
24
- db.prepare(`UPDATE workstreams
25
- SET conflict_attempts = ?,
26
- status = 'failed',
27
- next_retry_at = NULL,
28
- last_reconcile_action = 'blocked_conflict',
29
- last_reconciled_at = datetime('now')
30
- WHERE session_id = ?
31
- AND id = ?`).run(attempts, sessionId, workstreamId);
32
- db.prepare(`UPDATE parallel_sessions
33
- SET status = 'blocked_conflict',
34
- completed_at = NULL
35
- WHERE id = ?`).run(sessionId);
36
- return { attempts, blocked: true, backoffMinutes: null };
37
- }
38
- const backoffMinutes = Math.min(2 ** Math.max(0, attempts - 1), MAX_CONFLICT_BACKOFF_MINUTES);
39
- db.prepare(`UPDATE workstreams
40
- SET conflict_attempts = ?,
41
- next_retry_at = datetime('now', ?),
42
- last_reconcile_action = 'conflict_retry',
43
- last_reconciled_at = datetime('now')
44
- WHERE session_id = ?
45
- AND id = ?`).run(attempts, `+${backoffMinutes} minutes`, sessionId, workstreamId);
46
- return { attempts, blocked: false, backoffMinutes };
47
- });
48
- }
49
- function clearConflictAttemptState(sessionId, workstreamId) {
50
- (0, global_db_js_1.withGlobalDatabase)((db) => {
51
- db.prepare(`UPDATE workstreams
52
- SET conflict_attempts = 0,
53
- next_retry_at = NULL,
54
- last_reconcile_action = 'conflict_resolved',
55
- last_reconciled_at = datetime('now')
56
- WHERE session_id = ?
57
- AND id = ?`).run(sessionId, workstreamId);
58
- });
59
- }
60
- //# sourceMappingURL=merge-conflict-attempts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-conflict-attempts.js","sourceRoot":"","sources":["../../src/parallel/merge-conflict-attempts.ts"],"names":[],"mappings":";;;AAMA,sDA0DC;AAED,8DAYC;AA9ED,0DAAiF;AACjF,uDAAuD;AAE1C,QAAA,qBAAqB,GAAG,CAAC,CAAC;AACvC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAExC,SAAgB,qBAAqB,CACnC,SAAiB,EACjB,YAAoB;IAEpB,OAAO,IAAA,iCAAkB,EAAC,CAAC,EAAE,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,EAAE;aACX,OAAO,CACN;;;;iBAIS,CACV;aACA,GAAG,CAAC,SAAS,EAAE,YAAY,CAA8C,CAAC;QAE7E,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,oCAAkB,CAC1B,oEAAoE,EACpE,mBAAmB,CACpB,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,QAAQ,IAAI,6BAAqB,EAAE,CAAC;YACtC,EAAE,CAAC,OAAO,CACR;;;;;;;sBAOc,CACf,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YAEzC,EAAE,CAAC,OAAO,CACR;;;sBAGc,CACf,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEjB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;QAC3D,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAC9F,EAAE,CAAC,OAAO,CACR;;;;;;oBAMc,CACf,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,cAAc,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;QAEvE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,yBAAyB,CAAC,SAAiB,EAAE,YAAoB;IAC/E,IAAA,iCAAkB,EAAC,CAAC,EAAE,EAAE,EAAE;QACxB,EAAE,CAAC,OAAO,CACR;;;;;;oBAMc,CACf,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function invokeMergeConflictModel(role: 'coder' | 'reviewer', projectPath: string, taskId: string | undefined, prompt: string): Promise<string>;
2
- //# sourceMappingURL=merge-conflict-invoke.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-conflict-invoke.d.ts","sourceRoot":"","sources":["../../src/parallel/merge-conflict-invoke.ts"],"names":[],"mappings":"AAKA,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,OAAO,GAAG,UAAU,EAC1B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAiDjB"}
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.invokeMergeConflictModel = invokeMergeConflictModel;
4
- const loader_js_1 = require("../config/loader.js");
5
- const invocation_logger_js_1 = require("../providers/invocation-logger.js");
6
- const registry_js_1 = require("../providers/registry.js");
7
- const merge_errors_js_1 = require("./merge-errors.js");
8
- async function invokeMergeConflictModel(role, projectPath, taskId, prompt) {
9
- const config = (0, loader_js_1.loadConfig)(projectPath);
10
- const modelConfig = role === 'coder' ? config.ai?.coder : config.ai?.reviewer;
11
- if (!modelConfig?.provider || !modelConfig?.model) {
12
- throw new merge_errors_js_1.ParallelMergeError(`Missing AI ${role} configuration. Configure via config.ai.${role}.`, 'AI_CONFIG_MISSING');
13
- }
14
- const providerName = modelConfig.provider;
15
- const model = modelConfig.model;
16
- const registry = await (0, registry_js_1.getProviderRegistry)();
17
- const provider = registry.get(providerName);
18
- const result = await (0, invocation_logger_js_1.logInvocation)(prompt, (ctx) => provider.invoke(prompt, {
19
- model,
20
- timeout: 60 * 60 * 1000,
21
- cwd: projectPath,
22
- role,
23
- streamOutput: false,
24
- onActivity: ctx?.onActivity,
25
- }), {
26
- role,
27
- provider: providerName,
28
- model,
29
- taskId,
30
- projectPath,
31
- });
32
- if (!result.success) {
33
- const details = result.stderr || result.stdout || 'model returned non-zero exit code';
34
- throw new merge_errors_js_1.ParallelMergeError(`${role.toUpperCase()} invocation failed during merge conflict handling: ${details}`, 'AI_INVOCATION_FAILED');
35
- }
36
- if (result.timedOut) {
37
- throw new merge_errors_js_1.ParallelMergeError(`${role} invocation timed out`, 'AI_INVOKE_TIMEOUT');
38
- }
39
- return result.stdout;
40
- }
41
- //# sourceMappingURL=merge-conflict-invoke.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-conflict-invoke.js","sourceRoot":"","sources":["../../src/parallel/merge-conflict-invoke.ts"],"names":[],"mappings":";;AAKA,4DAsDC;AA3DD,mDAAiD;AACjD,4EAAkE;AAClE,0DAA+D;AAC/D,uDAAuD;AAEhD,KAAK,UAAU,wBAAwB,CAC5C,IAA0B,EAC1B,WAAmB,EACnB,MAA0B,EAC1B,MAAc;IAEd,MAAM,MAAM,GAAG,IAAA,sBAAU,EAAC,WAAW,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC;IAE9E,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;QAClD,MAAM,IAAI,oCAAkB,CAC1B,cAAc,IAAI,2CAA2C,IAAI,GAAG,EACpE,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC;IAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAEhC,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAmB,GAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,IAAA,oCAAa,EAChC,MAAM,EACN,CAAC,GAAG,EAAE,EAAE,CACN,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;QACtB,KAAK;QACL,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;QACvB,GAAG,EAAE,WAAW;QAChB,IAAI;QACJ,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,GAAG,EAAE,UAAU;KAC5B,CAAC,EACJ;QACE,IAAI;QACJ,QAAQ,EAAE,YAAY;QACtB,KAAK;QACL,MAAM;QACN,WAAW;KACZ,CACF,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,mCAAmC,CAAC;QACtF,MAAM,IAAI,oCAAkB,CAC1B,GAAG,IAAI,CAAC,WAAW,EAAE,sDAAsD,OAAO,EAAE,EACpF,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,IAAI,oCAAkB,CAAC,GAAG,IAAI,uBAAuB,EAAE,mBAAmB,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC"}
@@ -1,23 +0,0 @@
1
- export interface ParseReviewDecisionResult {
2
- decision: 'approve' | 'reject';
3
- notes: string;
4
- }
5
- export declare function parseReviewDecision(raw: string): ParseReviewDecisionResult;
6
- export declare function createPromptForConflictCoder(options: {
7
- workstreamId: string;
8
- shortSha: string;
9
- branchName: string;
10
- commitMessage: string;
11
- conflictedFiles: string[];
12
- conflictPatch: string;
13
- rejectionNotes?: string;
14
- }): string;
15
- export declare function createPromptForConflictReviewer(options: {
16
- workstreamId: string;
17
- shortSha: string;
18
- branchName: string;
19
- commitMessage: string;
20
- stagedDiff: string;
21
- stagedFiles: string[];
22
- }): string;
23
- //# sourceMappingURL=merge-conflict-prompts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-conflict-prompts.d.ts","sourceRoot":"","sources":["../../src/parallel/merge-conflict-prompts.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAwB1E;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAMT;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,GAAG,MAAM,CAMT"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseReviewDecision = parseReviewDecision;
4
- exports.createPromptForConflictCoder = createPromptForConflictCoder;
5
- exports.createPromptForConflictReviewer = createPromptForConflictReviewer;
6
- function parseReviewDecision(raw) {
7
- const trimmed = raw.trim();
8
- const upper = trimmed.toUpperCase();
9
- const hasApprove = upper.includes('APPROVE');
10
- const hasReject = upper.includes('REJECT');
11
- if (hasApprove && !hasReject) {
12
- return {
13
- decision: 'approve',
14
- notes: trimmed || 'APPROVED by merge-conflict reviewer',
15
- };
16
- }
17
- if (hasReject) {
18
- return {
19
- decision: 'reject',
20
- notes: trimmed || 'Please review and correct conflict resolution',
21
- };
22
- }
23
- return {
24
- decision: 'reject',
25
- notes: trimmed || 'Decision was not clear. Please provide explicit APPROVE/REJECT.',
26
- };
27
- }
28
- function createPromptForConflictCoder(options) {
29
- const notesSection = options.rejectionNotes
30
- ? `\n\nLatest review note from the resolver:\n${options.rejectionNotes}\n`
31
- : '';
32
- return `You are resolving a merge conflict for a cherry-pick during parallel merge.\n\n## Conflict context\nWorkstream: ${options.workstreamId}\nBranch: ${options.branchName}\nCommit: ${options.shortSha}\nCommit Message:\n${options.commitMessage}\n\nConflicted files:\n${options.conflictedFiles.map((file) => `- ${file}`).join('\n')}\n\nIntended patch:\n${options.conflictPatch}\n\nRules:\n1) Edit conflicted files to a correct resolution.\n2) Remove ALL conflict markers (<<<<<<, =======, >>>>>>) in resolved files.\n3) Stage only the resolved files using git add.\n4) Do NOT commit.\n5) Be surgical; change only files required for this commit.\n${notesSection}\n\nRespond with a short confirmation when done.`;
33
- }
34
- function createPromptForConflictReviewer(options) {
35
- const files = options.stagedFiles.length > 0
36
- ? options.stagedFiles.map((file) => `- ${file}`).join('\n')
37
- : 'No files staged yet';
38
- return `You are reviewing a staged resolution for a cherry-pick conflict in parallel merge.\n\nWorkstream: ${options.workstreamId}\nBranch: ${options.branchName}\nCommit: ${options.shortSha}\nOriginal message: ${options.commitMessage}\n\nCurrent staged diff to be committed by cherry-pick --continue:\n${options.stagedDiff || '(empty diff)'}\n\nFiles staged:\n${files}\n\nDecision rules:\n- Reply with APPROVE if the resolution is correct.\n- Reply with REJECT and actionable notes if any conflict marker remains or logic is incorrect.\n\nFormat:\nAPPROVE - <optional note> or\nREJECT - <checklist itemized note>`;
39
- }
40
- //# sourceMappingURL=merge-conflict-prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-conflict-prompts.js","sourceRoot":"","sources":["../../src/parallel/merge-conflict-prompts.ts"],"names":[],"mappings":";;AAKA,kDAwBC;AAED,oEAcC;AAED,0EAaC;AAvDD,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,OAAO,IAAI,qCAAqC;SACxD,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO;YACL,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,OAAO,IAAI,+CAA+C;SAClE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,OAAO,IAAI,iEAAiE;KACpF,CAAC;AACJ,CAAC;AAED,SAAgB,4BAA4B,CAAC,OAQ5C;IACC,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc;QACzC,CAAC,CAAC,8CAA8C,OAAO,CAAC,cAAc,IAAI;QAC1E,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,mHAAmH,OAAO,CAAC,YAAY,aAAa,OAAO,CAAC,UAAU,aAAa,OAAO,CAAC,QAAQ,sBAAsB,OAAO,CAAC,aAAa,0BAA0B,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,aAAa,gRAAgR,YAAY,kDAAkD,CAAC;AAC1sB,CAAC;AAED,SAAgB,+BAA+B,CAAC,OAO/C;IACC,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAC1C,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3D,CAAC,CAAC,qBAAqB,CAAC;IAE1B,OAAO,sGAAsG,OAAO,CAAC,YAAY,aAAa,OAAO,CAAC,UAAU,aAAa,OAAO,CAAC,QAAQ,uBAAuB,OAAO,CAAC,aAAa,uEAAuE,OAAO,CAAC,UAAU,IAAI,cAAc,sBAAsB,KAAK,sPAAsP,CAAC;AACxmB,CAAC"}
@@ -1,3 +0,0 @@
1
- import type Database from 'better-sqlite3';
2
- export declare function ensureMergeConflictTask(db: Database.Database, workstreamId: string, shortSha: string, branchName: string, commitMessage: string, conflictedFiles: string[], conflictPatch: string, forceNew?: boolean): string;
3
- //# sourceMappingURL=merge-conflict-task.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-conflict-task.d.ts","sourceRoot":"","sources":["../../src/parallel/merge-conflict-task.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAqC3C,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,EAAE,EACzB,aAAa,EAAE,MAAM,EACrB,QAAQ,UAAQ,GACf,MAAM,CA2CR"}
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureMergeConflictTask = ensureMergeConflictTask;
4
- const node_crypto_1 = require("node:crypto");
5
- const queries_js_1 = require("../database/queries.js");
6
- function buildMergeConflictSectionName() {
7
- return 'merge-conflicts';
8
- }
9
- function getNowISOString() {
10
- return new Date().toISOString();
11
- }
12
- function createMergeConflictSection(db) {
13
- const sectionName = buildMergeConflictSectionName();
14
- const existing = db
15
- .prepare('SELECT id FROM sections WHERE name = ? LIMIT 1')
16
- .get(sectionName);
17
- if (existing) {
18
- return existing.id;
19
- }
20
- const maxPosRow = db
21
- .prepare('SELECT MAX(position) as maxPos FROM sections')
22
- .get();
23
- const position = (maxPosRow?.maxPos ?? -1) + 1;
24
- const sectionId = (0, node_crypto_1.createHash)('sha1').update(sectionName + position).digest('hex');
25
- db.prepare(`INSERT INTO sections (id, name, position, priority, skipped, created_at)
26
- VALUES (?, ?, ?, ?, ?, ?)`).run(sectionId, sectionName, position, 80, 0, getNowISOString());
27
- return sectionId;
28
- }
29
- function ensureMergeConflictTask(db, workstreamId, shortSha, branchName, commitMessage, conflictedFiles, conflictPatch, forceNew = false) {
30
- const sectionId = createMergeConflictSection(db);
31
- if (!forceNew) {
32
- const existing = db
33
- .prepare(`SELECT t.id
34
- FROM tasks t
35
- INNER JOIN sections s ON s.id = t.section_id
36
- WHERE s.name = ? AND t.title LIKE ?
37
- ORDER BY t.created_at DESC
38
- LIMIT 1`)
39
- .get(buildMergeConflictSectionName(), `Merge conflict: cherry-pick ${shortSha}%`);
40
- if (existing?.id) {
41
- return existing.id;
42
- }
43
- }
44
- const title = `Merge conflict: cherry-pick ${shortSha} from ${branchName}`;
45
- const created = (0, queries_js_1.createTask)(db, title, {
46
- sectionId,
47
- sourceFile: `merge-conflict (${workstreamId})`,
48
- filePath: conflictedFiles.join(', '),
49
- status: 'pending',
50
- fileContentHash: conflictPatch.substring(0, 2048),
51
- fileCommitSha: commitMessage,
52
- });
53
- (0, queries_js_1.addAuditEntry)(db, created.id, 'null', 'pending', 'merge', {
54
- actorType: 'orchestrator',
55
- notes: `Generated from conflict while cherry-picking ${shortSha} from ${branchName}:\n${commitMessage}`,
56
- });
57
- return created.id;
58
- }
59
- //# sourceMappingURL=merge-conflict-task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-conflict-task.js","sourceRoot":"","sources":["../../src/parallel/merge-conflict-task.ts"],"names":[],"mappings":";;AAqCA,0DAoDC;AAxFD,6CAAyC;AACzC,uDAAmE;AAEnE,SAAS,6BAA6B;IACpC,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,0BAA0B,CAAC,EAAqB;IACvD,MAAM,WAAW,GAAG,6BAA6B,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,gDAAgD,CAAC;SACzD,GAAG,CAAC,WAAW,CAA+B,CAAC;IAElD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,SAAS,GAAG,EAAE;SACjB,OAAO,CAAC,8CAA8C,CAAC;SACvD,GAAG,EAA+B,CAAC;IAEtC,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAA,wBAAU,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAElF,EAAE,CAAC,OAAO,CACR;+BAC2B,CAC5B,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;IAElE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,uBAAuB,CACrC,EAAqB,EACrB,YAAoB,EACpB,QAAgB,EAChB,UAAkB,EAClB,aAAqB,EACrB,eAAyB,EACzB,aAAqB,EACrB,QAAQ,GAAG,KAAK;IAEhB,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAEjD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,EAAE;aAChB,OAAO,CACN;;;;;iBAKS,CACV;aACA,GAAG,CAAC,6BAA6B,EAAE,EAAE,+BAA+B,QAAQ,GAAG,CAA+B,CAAC;QAElH,IAAI,QAAQ,EAAE,EAAE,EAAE,CAAC;YACjB,OAAO,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,+BAA+B,QAAQ,SAAS,UAAU,EAAE,CAAC;IAC3E,MAAM,OAAO,GAAG,IAAA,uBAAU,EAAC,EAAE,EAAE,KAAK,EAAE;QACpC,SAAS;QACT,UAAU,EAAE,mBAAmB,YAAY,GAAG;QAC9C,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;QACjD,aAAa,EAAE,aAAa;KAC7B,CAAC,CAAC;IAEH,IAAA,0BAAa,EACX,EAAE,EACF,OAAO,CAAC,EAAE,EACV,MAAM,EACN,SAAS,EACT,OAAO,EACP;QACE,SAAS,EAAE,cAAc;QACzB,KAAK,EAAE,gDAAgD,QAAQ,SAAS,UAAU,MAAM,aAAa,EAAE;KACxG,CACF,CAAC;IAEF,OAAO,OAAO,CAAC,EAAE,CAAC;AACpB,CAAC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Merge conflict resolution orchestrator.
3
- */
4
- import type Database from 'better-sqlite3';
5
- export { parseReviewDecision } from './merge-conflict-prompts.js';
6
- export interface ConflictRunOptions {
7
- db: Database.Database;
8
- projectPath: string;
9
- sessionId: string;
10
- workstreamId: string;
11
- runnerId: string;
12
- mergeLockHeartbeat?: {
13
- lockEpoch: number;
14
- timeoutMinutes: number;
15
- };
16
- branchName: string;
17
- position: number;
18
- commitSha: string;
19
- existingTaskId?: string;
20
- }
21
- export declare function runConflictResolutionCycle(options: ConflictRunOptions): Promise<'continued' | 'skipped'>;
22
- //# sourceMappingURL=merge-conflict.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-conflict.d.ts","sourceRoot":"","sources":["../../src/parallel/merge-conflict.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAkC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAqGD,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAyN9G"}