steroids-api 0.2.7
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/API/src/index.d.ts +10 -0
- package/dist/API/src/index.d.ts.map +1 -0
- package/dist/API/src/index.js +130 -0
- package/dist/API/src/index.js.map +1 -0
- package/dist/API/src/routes/activity.d.ts +7 -0
- package/dist/API/src/routes/activity.d.ts.map +1 -0
- package/dist/API/src/routes/activity.js +252 -0
- package/dist/API/src/routes/activity.js.map +1 -0
- package/dist/API/src/routes/config.d.ts +7 -0
- package/dist/API/src/routes/config.d.ts.map +1 -0
- package/dist/API/src/routes/config.js +521 -0
- package/dist/API/src/routes/config.js.map +1 -0
- package/dist/API/src/routes/health.d.ts +7 -0
- package/dist/API/src/routes/health.d.ts.map +1 -0
- package/dist/API/src/routes/health.js +172 -0
- package/dist/API/src/routes/health.js.map +1 -0
- package/dist/API/src/routes/incidents.d.ts +7 -0
- package/dist/API/src/routes/incidents.d.ts.map +1 -0
- package/dist/API/src/routes/incidents.js +117 -0
- package/dist/API/src/routes/incidents.js.map +1 -0
- package/dist/API/src/routes/projects.d.ts +7 -0
- package/dist/API/src/routes/projects.d.ts.map +1 -0
- package/dist/API/src/routes/projects.js +398 -0
- package/dist/API/src/routes/projects.js.map +1 -0
- package/dist/API/src/routes/runners.d.ts +7 -0
- package/dist/API/src/routes/runners.d.ts.map +1 -0
- package/dist/API/src/routes/runners.js +242 -0
- package/dist/API/src/routes/runners.js.map +1 -0
- package/dist/API/src/routes/tasks.d.ts +7 -0
- package/dist/API/src/routes/tasks.d.ts.map +1 -0
- package/dist/API/src/routes/tasks.js +1007 -0
- package/dist/API/src/routes/tasks.js.map +1 -0
- package/dist/API/src/utils/validation.d.ts +22 -0
- package/dist/API/src/utils/validation.d.ts.map +1 -0
- package/dist/API/src/utils/validation.js +50 -0
- package/dist/API/src/utils/validation.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +184 -0
- package/dist/index.js.map +1 -0
- package/dist/routes/activity.d.ts +7 -0
- package/dist/routes/activity.d.ts.map +1 -0
- package/dist/routes/activity.js +252 -0
- package/dist/routes/activity.js.map +1 -0
- package/dist/routes/config.d.ts +7 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +647 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/credit-alerts.d.ts +2 -0
- package/dist/routes/credit-alerts.d.ts.map +1 -0
- package/dist/routes/credit-alerts.js +97 -0
- package/dist/routes/credit-alerts.js.map +1 -0
- package/dist/routes/health.d.ts +7 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +200 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/incidents.d.ts +7 -0
- package/dist/routes/incidents.d.ts.map +1 -0
- package/dist/routes/incidents.js +117 -0
- package/dist/routes/incidents.js.map +1 -0
- package/dist/routes/projects.d.ts +7 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +643 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/runners.d.ts +7 -0
- package/dist/routes/runners.d.ts.map +1 -0
- package/dist/routes/runners.js +299 -0
- package/dist/routes/runners.js.map +1 -0
- package/dist/routes/skills.d.ts +3 -0
- package/dist/routes/skills.d.ts.map +1 -0
- package/dist/routes/skills.js +109 -0
- package/dist/routes/skills.js.map +1 -0
- package/dist/routes/storage.d.ts +7 -0
- package/dist/routes/storage.d.ts.map +1 -0
- package/dist/routes/storage.js +93 -0
- package/dist/routes/storage.js.map +1 -0
- package/dist/routes/tasks.d.ts +7 -0
- package/dist/routes/tasks.d.ts.map +1 -0
- package/dist/routes/tasks.js +1145 -0
- package/dist/routes/tasks.js.map +1 -0
- package/dist/src/cleanup/invocation-logs.d.ts +30 -0
- package/dist/src/cleanup/invocation-logs.d.ts.map +1 -0
- package/dist/src/cleanup/invocation-logs.js +66 -0
- package/dist/src/cleanup/invocation-logs.js.map +1 -0
- package/dist/src/commands/loop-phases.d.ts +11 -0
- package/dist/src/commands/loop-phases.d.ts.map +1 -0
- package/dist/src/commands/loop-phases.js +304 -0
- package/dist/src/commands/loop-phases.js.map +1 -0
- package/dist/src/config/loader.d.ts +160 -0
- package/dist/src/config/loader.d.ts.map +1 -0
- package/dist/src/config/loader.js +276 -0
- package/dist/src/config/loader.js.map +1 -0
- package/dist/src/database/connection.d.ts +35 -0
- package/dist/src/database/connection.d.ts.map +1 -0
- package/dist/src/database/connection.js +197 -0
- package/dist/src/database/connection.js.map +1 -0
- package/dist/src/database/queries.d.ts +220 -0
- package/dist/src/database/queries.d.ts.map +1 -0
- package/dist/src/database/queries.js +589 -0
- package/dist/src/database/queries.js.map +1 -0
- package/dist/src/database/schema.d.ts +8 -0
- package/dist/src/database/schema.d.ts.map +1 -0
- package/dist/src/database/schema.js +184 -0
- package/dist/src/database/schema.js.map +1 -0
- package/dist/src/git/push.d.ts +26 -0
- package/dist/src/git/push.d.ts.map +1 -0
- package/dist/src/git/push.js +91 -0
- package/dist/src/git/push.js.map +1 -0
- package/dist/src/git/status.d.ts +83 -0
- package/dist/src/git/status.d.ts.map +1 -0
- package/dist/src/git/status.js +315 -0
- package/dist/src/git/status.js.map +1 -0
- package/dist/src/health/stuck-task-detector.d.ts +131 -0
- package/dist/src/health/stuck-task-detector.d.ts.map +1 -0
- package/dist/src/health/stuck-task-detector.js +233 -0
- package/dist/src/health/stuck-task-detector.js.map +1 -0
- package/dist/src/health/stuck-task-recovery.d.ts +45 -0
- package/dist/src/health/stuck-task-recovery.d.ts.map +1 -0
- package/dist/src/health/stuck-task-recovery.js +309 -0
- package/dist/src/health/stuck-task-recovery.js.map +1 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +130 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/locking/queries.d.ts +116 -0
- package/dist/src/locking/queries.d.ts.map +1 -0
- package/dist/src/locking/queries.js +232 -0
- package/dist/src/locking/queries.js.map +1 -0
- package/dist/src/locking/section-lock.d.ts +74 -0
- package/dist/src/locking/section-lock.d.ts.map +1 -0
- package/dist/src/locking/section-lock.js +196 -0
- package/dist/src/locking/section-lock.js.map +1 -0
- package/dist/src/locking/task-lock.d.ts +92 -0
- package/dist/src/locking/task-lock.d.ts.map +1 -0
- package/dist/src/locking/task-lock.js +233 -0
- package/dist/src/locking/task-lock.js.map +1 -0
- package/dist/src/migrations/index.d.ts +7 -0
- package/dist/src/migrations/index.d.ts.map +1 -0
- package/dist/src/migrations/index.js +9 -0
- package/dist/src/migrations/index.js.map +1 -0
- package/dist/src/migrations/manifest.d.ts +92 -0
- package/dist/src/migrations/manifest.d.ts.map +1 -0
- package/dist/src/migrations/manifest.js +255 -0
- package/dist/src/migrations/manifest.js.map +1 -0
- package/dist/src/migrations/runner.d.ts +84 -0
- package/dist/src/migrations/runner.d.ts.map +1 -0
- package/dist/src/migrations/runner.js +338 -0
- package/dist/src/migrations/runner.js.map +1 -0
- package/dist/src/orchestrator/coder.d.ts +32 -0
- package/dist/src/orchestrator/coder.d.ts.map +1 -0
- package/dist/src/orchestrator/coder.js +170 -0
- package/dist/src/orchestrator/coder.js.map +1 -0
- package/dist/src/orchestrator/coordinator.d.ts +28 -0
- package/dist/src/orchestrator/coordinator.d.ts.map +1 -0
- package/dist/src/orchestrator/coordinator.js +252 -0
- package/dist/src/orchestrator/coordinator.js.map +1 -0
- package/dist/src/orchestrator/fallback-handler.d.ts +24 -0
- package/dist/src/orchestrator/fallback-handler.d.ts.map +1 -0
- package/dist/src/orchestrator/fallback-handler.js +280 -0
- package/dist/src/orchestrator/fallback-handler.js.map +1 -0
- package/dist/src/orchestrator/invoke.d.ts +14 -0
- package/dist/src/orchestrator/invoke.d.ts.map +1 -0
- package/dist/src/orchestrator/invoke.js +76 -0
- package/dist/src/orchestrator/invoke.js.map +1 -0
- package/dist/src/orchestrator/post-coder.d.ts +10 -0
- package/dist/src/orchestrator/post-coder.d.ts.map +1 -0
- package/dist/src/orchestrator/post-coder.js +198 -0
- package/dist/src/orchestrator/post-coder.js.map +1 -0
- package/dist/src/orchestrator/post-reviewer.d.ts +10 -0
- package/dist/src/orchestrator/post-reviewer.d.ts.map +1 -0
- package/dist/src/orchestrator/post-reviewer.js +199 -0
- package/dist/src/orchestrator/post-reviewer.js.map +1 -0
- package/dist/src/orchestrator/reviewer.d.ts +35 -0
- package/dist/src/orchestrator/reviewer.d.ts.map +1 -0
- package/dist/src/orchestrator/reviewer.js +237 -0
- package/dist/src/orchestrator/reviewer.js.map +1 -0
- package/dist/src/orchestrator/schemas.d.ts +10 -0
- package/dist/src/orchestrator/schemas.d.ts.map +1 -0
- package/dist/src/orchestrator/schemas.js +81 -0
- package/dist/src/orchestrator/schemas.js.map +1 -0
- package/dist/src/orchestrator/task-selector.d.ts +102 -0
- package/dist/src/orchestrator/task-selector.d.ts.map +1 -0
- package/dist/src/orchestrator/task-selector.js +326 -0
- package/dist/src/orchestrator/task-selector.js.map +1 -0
- package/dist/src/orchestrator/types.d.ts +74 -0
- package/dist/src/orchestrator/types.d.ts.map +1 -0
- package/dist/src/orchestrator/types.js +5 -0
- package/dist/src/orchestrator/types.js.map +1 -0
- package/dist/src/prompts/coder.d.ts +36 -0
- package/dist/src/prompts/coder.d.ts.map +1 -0
- package/dist/src/prompts/coder.js +303 -0
- package/dist/src/prompts/coder.js.map +1 -0
- package/dist/src/prompts/prompt-helpers.d.ts +51 -0
- package/dist/src/prompts/prompt-helpers.d.ts.map +1 -0
- package/dist/src/prompts/prompt-helpers.js +299 -0
- package/dist/src/prompts/prompt-helpers.js.map +1 -0
- package/dist/src/prompts/reviewer.d.ts +40 -0
- package/dist/src/prompts/reviewer.d.ts.map +1 -0
- package/dist/src/prompts/reviewer.js +416 -0
- package/dist/src/prompts/reviewer.js.map +1 -0
- package/dist/src/providers/claude.d.ts +53 -0
- package/dist/src/providers/claude.d.ts.map +1 -0
- package/dist/src/providers/claude.js +227 -0
- package/dist/src/providers/claude.js.map +1 -0
- package/dist/src/providers/codex.d.ts +53 -0
- package/dist/src/providers/codex.d.ts.map +1 -0
- package/dist/src/providers/codex.js +253 -0
- package/dist/src/providers/codex.js.map +1 -0
- package/dist/src/providers/gemini.d.ts +58 -0
- package/dist/src/providers/gemini.d.ts.map +1 -0
- package/dist/src/providers/gemini.js +240 -0
- package/dist/src/providers/gemini.js.map +1 -0
- package/dist/src/providers/interface.d.ts +185 -0
- package/dist/src/providers/interface.d.ts.map +1 -0
- package/dist/src/providers/interface.js +92 -0
- package/dist/src/providers/interface.js.map +1 -0
- package/dist/src/providers/invocation-logger.d.ts +97 -0
- package/dist/src/providers/invocation-logger.d.ts.map +1 -0
- package/dist/src/providers/invocation-logger.js +378 -0
- package/dist/src/providers/invocation-logger.js.map +1 -0
- package/dist/src/providers/openai.d.ts +53 -0
- package/dist/src/providers/openai.d.ts.map +1 -0
- package/dist/src/providers/openai.js +230 -0
- package/dist/src/providers/openai.js.map +1 -0
- package/dist/src/providers/registry.d.ts +100 -0
- package/dist/src/providers/registry.d.ts.map +1 -0
- package/dist/src/providers/registry.js +170 -0
- package/dist/src/providers/registry.js.map +1 -0
- package/dist/src/routes/activity.d.ts +7 -0
- package/dist/src/routes/activity.d.ts.map +1 -0
- package/dist/src/routes/activity.js +252 -0
- package/dist/src/routes/activity.js.map +1 -0
- package/dist/src/routes/config.d.ts +7 -0
- package/dist/src/routes/config.d.ts.map +1 -0
- package/dist/src/routes/config.js +521 -0
- package/dist/src/routes/config.js.map +1 -0
- package/dist/src/routes/health.d.ts +7 -0
- package/dist/src/routes/health.d.ts.map +1 -0
- package/dist/src/routes/health.js +172 -0
- package/dist/src/routes/health.js.map +1 -0
- package/dist/src/routes/incidents.d.ts +7 -0
- package/dist/src/routes/incidents.d.ts.map +1 -0
- package/dist/src/routes/incidents.js +117 -0
- package/dist/src/routes/incidents.js.map +1 -0
- package/dist/src/routes/projects.d.ts +7 -0
- package/dist/src/routes/projects.d.ts.map +1 -0
- package/dist/src/routes/projects.js +398 -0
- package/dist/src/routes/projects.js.map +1 -0
- package/dist/src/routes/runners.d.ts +7 -0
- package/dist/src/routes/runners.d.ts.map +1 -0
- package/dist/src/routes/runners.js +242 -0
- package/dist/src/routes/runners.js.map +1 -0
- package/dist/src/routes/tasks.d.ts +7 -0
- package/dist/src/routes/tasks.d.ts.map +1 -0
- package/dist/src/routes/tasks.js +1007 -0
- package/dist/src/routes/tasks.js.map +1 -0
- package/dist/src/runners/activity-log.d.ts +65 -0
- package/dist/src/runners/activity-log.d.ts.map +1 -0
- package/dist/src/runners/activity-log.js +140 -0
- package/dist/src/runners/activity-log.js.map +1 -0
- package/dist/src/runners/cron.d.ts +30 -0
- package/dist/src/runners/cron.d.ts.map +1 -0
- package/dist/src/runners/cron.js +333 -0
- package/dist/src/runners/cron.js.map +1 -0
- package/dist/src/runners/daemon.d.ts +71 -0
- package/dist/src/runners/daemon.d.ts.map +1 -0
- package/dist/src/runners/daemon.js +233 -0
- package/dist/src/runners/daemon.js.map +1 -0
- package/dist/src/runners/global-db.d.ts +31 -0
- package/dist/src/runners/global-db.d.ts.map +1 -0
- package/dist/src/runners/global-db.js +220 -0
- package/dist/src/runners/global-db.js.map +1 -0
- package/dist/src/runners/hang-detector.d.ts +38 -0
- package/dist/src/runners/hang-detector.d.ts.map +1 -0
- package/dist/src/runners/hang-detector.js +130 -0
- package/dist/src/runners/hang-detector.js.map +1 -0
- package/dist/src/runners/heartbeat.d.ts +39 -0
- package/dist/src/runners/heartbeat.d.ts.map +1 -0
- package/dist/src/runners/heartbeat.js +71 -0
- package/dist/src/runners/heartbeat.js.map +1 -0
- package/dist/src/runners/lock.d.ts +47 -0
- package/dist/src/runners/lock.d.ts.map +1 -0
- package/dist/src/runners/lock.js +140 -0
- package/dist/src/runners/lock.js.map +1 -0
- package/dist/src/runners/orchestrator-loop.d.ts +20 -0
- package/dist/src/runners/orchestrator-loop.d.ts.map +1 -0
- package/dist/src/runners/orchestrator-loop.js +208 -0
- package/dist/src/runners/orchestrator-loop.js.map +1 -0
- package/dist/src/runners/projects.d.ts +96 -0
- package/dist/src/runners/projects.d.ts.map +1 -0
- package/dist/src/runners/projects.js +243 -0
- package/dist/src/runners/projects.js.map +1 -0
- package/dist/src/runners/wakeup.d.ts +37 -0
- package/dist/src/runners/wakeup.d.ts.map +1 -0
- package/dist/src/runners/wakeup.js +355 -0
- package/dist/src/runners/wakeup.js.map +1 -0
- package/dist/src/utils/validation.d.ts +22 -0
- package/dist/src/utils/validation.d.ts.map +1 -0
- package/dist/src/utils/validation.js +50 -0
- package/dist/src/utils/validation.js.map +1 -0
- package/dist/utils/sqlite.d.ts +17 -0
- package/dist/utils/sqlite.d.ts.map +1 -0
- package/dist/utils/sqlite.js +27 -0
- package/dist/utils/sqlite.js.map +1 -0
- package/dist/utils/storage-cache.d.ts +33 -0
- package/dist/utils/storage-cache.d.ts.map +1 -0
- package/dist/utils/storage-cache.js +81 -0
- package/dist/utils/storage-cache.js.map +1 -0
- package/dist/utils/validation.d.ts +22 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +51 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +39 -0
- package/src/index.ts +199 -0
- package/src/routes/activity.ts +302 -0
- package/src/routes/config.ts +723 -0
- package/src/routes/credit-alerts.ts +73 -0
- package/src/routes/health.ts +219 -0
- package/src/routes/incidents.ts +131 -0
- package/src/routes/projects.ts +854 -0
- package/src/routes/runners.ts +357 -0
- package/src/routes/skills.ts +127 -0
- package/src/routes/storage.ts +108 -0
- package/src/routes/tasks.ts +1372 -0
- package/src/utils/sqlite.ts +36 -0
- package/src/utils/storage-cache.ts +107 -0
- package/src/utils/validation.ts +61 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback handler for orchestrator output parsing
|
|
3
|
+
* Multi-layer parsing strategy to handle invalid JSON
|
|
4
|
+
*/
|
|
5
|
+
import { validateCoderResult, validateReviewerResult } from './schemas.js';
|
|
6
|
+
export class OrchestrationFallbackHandler {
|
|
7
|
+
/**
|
|
8
|
+
* Parse coder orchestrator output with multi-layer fallback
|
|
9
|
+
*/
|
|
10
|
+
parseCoderOutput(rawOutput) {
|
|
11
|
+
// Layer 1: Direct JSON parse
|
|
12
|
+
try {
|
|
13
|
+
const parsed = JSON.parse(rawOutput);
|
|
14
|
+
if (validateCoderResult(parsed)) {
|
|
15
|
+
console.log('[Orchestrator] ✓ Layer 1: Direct JSON parse succeeded');
|
|
16
|
+
return parsed;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
console.warn('[Orchestrator] Layer 1 JSON parsed but validation failed');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
console.warn('[Orchestrator] Layer 1: JSON.parse failed');
|
|
24
|
+
}
|
|
25
|
+
// Layer 2: Extract from markdown code block
|
|
26
|
+
const jsonBlock = rawOutput.match(/```json\s*([\s\S]*?)\s*```/);
|
|
27
|
+
if (jsonBlock) {
|
|
28
|
+
try {
|
|
29
|
+
const parsed = JSON.parse(jsonBlock[1]);
|
|
30
|
+
if (validateCoderResult(parsed)) {
|
|
31
|
+
console.log('[Orchestrator] ✓ Layer 2: Markdown extraction succeeded');
|
|
32
|
+
return parsed;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.warn('[Orchestrator] Layer 2 JSON parsed but validation failed');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
console.warn('[Orchestrator] Layer 2: Markdown block found but JSON.parse failed');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Layer 3: Find first { to last }
|
|
43
|
+
const start = rawOutput.indexOf('{');
|
|
44
|
+
const end = rawOutput.lastIndexOf('}');
|
|
45
|
+
if (start !== -1 && end !== -1 && end > start) {
|
|
46
|
+
try {
|
|
47
|
+
const parsed = JSON.parse(rawOutput.substring(start, end + 1));
|
|
48
|
+
if (validateCoderResult(parsed)) {
|
|
49
|
+
console.log('[Orchestrator] ✓ Layer 3: Substring extraction succeeded');
|
|
50
|
+
return parsed;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
console.warn('[Orchestrator] Layer 3 JSON parsed but validation failed');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
console.warn('[Orchestrator] Layer 3: Substring found but JSON.parse failed');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Layer 4: Keyword fallback
|
|
61
|
+
console.warn('[Orchestrator] ⚠ Layer 4: Using keyword fallback (all parsing failed)');
|
|
62
|
+
return this.keywordFallbackCoder(rawOutput);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Parse reviewer orchestrator output with multi-layer fallback
|
|
66
|
+
*/
|
|
67
|
+
parseReviewerOutput(rawOutput) {
|
|
68
|
+
// Layer 1: Direct JSON parse
|
|
69
|
+
try {
|
|
70
|
+
const parsed = JSON.parse(rawOutput);
|
|
71
|
+
if (validateReviewerResult(parsed)) {
|
|
72
|
+
console.log('[Orchestrator] ✓ Layer 1: Direct JSON parse succeeded');
|
|
73
|
+
return parsed;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.warn('[Orchestrator] Layer 1 JSON parsed but validation failed');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
console.warn('[Orchestrator] Layer 1: JSON.parse failed');
|
|
81
|
+
}
|
|
82
|
+
// Layer 2: Extract from markdown code block
|
|
83
|
+
const jsonBlock = rawOutput.match(/```json\s*([\s\S]*?)\s*```/);
|
|
84
|
+
if (jsonBlock) {
|
|
85
|
+
try {
|
|
86
|
+
const parsed = JSON.parse(jsonBlock[1]);
|
|
87
|
+
if (validateReviewerResult(parsed)) {
|
|
88
|
+
console.log('[Orchestrator] ✓ Layer 2: Markdown extraction succeeded');
|
|
89
|
+
return parsed;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
console.warn('[Orchestrator] Layer 2 JSON parsed but validation failed');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
console.warn('[Orchestrator] Layer 2: Markdown block found but JSON.parse failed');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Layer 3: Find first { to last }
|
|
100
|
+
const start = rawOutput.indexOf('{');
|
|
101
|
+
const end = rawOutput.lastIndexOf('}');
|
|
102
|
+
if (start !== -1 && end !== -1 && end > start) {
|
|
103
|
+
try {
|
|
104
|
+
const parsed = JSON.parse(rawOutput.substring(start, end + 1));
|
|
105
|
+
if (validateReviewerResult(parsed)) {
|
|
106
|
+
console.log('[Orchestrator] ✓ Layer 3: Substring extraction succeeded');
|
|
107
|
+
return parsed;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.warn('[Orchestrator] Layer 3 JSON parsed but validation failed');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch (e) {
|
|
114
|
+
console.warn('[Orchestrator] Layer 3: Substring found but JSON.parse failed');
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Layer 4: Keyword fallback
|
|
118
|
+
console.warn('[Orchestrator] ⚠ Layer 4: Using keyword fallback (all parsing failed)');
|
|
119
|
+
return this.keywordFallbackReviewer(rawOutput);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Keyword-based fallback for coder orchestrator
|
|
123
|
+
*/
|
|
124
|
+
keywordFallbackCoder(output) {
|
|
125
|
+
const lower = output.toLowerCase();
|
|
126
|
+
// Check for timeout
|
|
127
|
+
if (/timeout|timed out/.test(lower)) {
|
|
128
|
+
return {
|
|
129
|
+
action: 'retry',
|
|
130
|
+
reasoning: 'FALLBACK: Detected timeout',
|
|
131
|
+
commits: [],
|
|
132
|
+
next_status: 'in_progress',
|
|
133
|
+
metadata: {
|
|
134
|
+
files_changed: 0,
|
|
135
|
+
confidence: 'low',
|
|
136
|
+
exit_clean: false,
|
|
137
|
+
has_commits: false
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
// Check for errors
|
|
142
|
+
if (/fatal|error|failed/.test(lower) && !/commit/.test(lower)) {
|
|
143
|
+
return {
|
|
144
|
+
action: 'error',
|
|
145
|
+
reasoning: 'FALLBACK: Detected error keywords',
|
|
146
|
+
commits: [],
|
|
147
|
+
next_status: 'failed',
|
|
148
|
+
metadata: {
|
|
149
|
+
files_changed: 0,
|
|
150
|
+
confidence: 'low',
|
|
151
|
+
exit_clean: false,
|
|
152
|
+
has_commits: false
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
// Check for completion with commit
|
|
157
|
+
if (/commit|committed/.test(lower) && !/error|failed/.test(lower)) {
|
|
158
|
+
return {
|
|
159
|
+
action: 'submit',
|
|
160
|
+
reasoning: 'FALLBACK: Detected commit keywords',
|
|
161
|
+
commits: [],
|
|
162
|
+
next_status: 'review',
|
|
163
|
+
metadata: {
|
|
164
|
+
files_changed: 0,
|
|
165
|
+
confidence: 'low',
|
|
166
|
+
exit_clean: true,
|
|
167
|
+
has_commits: false
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
// Check for completion signals
|
|
172
|
+
if (/complete|finished|done|ready/.test(lower)) {
|
|
173
|
+
return {
|
|
174
|
+
action: 'submit',
|
|
175
|
+
reasoning: 'FALLBACK: Detected completion keywords',
|
|
176
|
+
commits: [],
|
|
177
|
+
next_status: 'review',
|
|
178
|
+
metadata: {
|
|
179
|
+
files_changed: 0,
|
|
180
|
+
confidence: 'low',
|
|
181
|
+
exit_clean: true,
|
|
182
|
+
has_commits: false
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
// Safe default: retry
|
|
187
|
+
return {
|
|
188
|
+
action: 'retry',
|
|
189
|
+
reasoning: 'FALLBACK: Orchestrator failed, defaulting to retry',
|
|
190
|
+
commits: [],
|
|
191
|
+
next_status: 'in_progress',
|
|
192
|
+
metadata: {
|
|
193
|
+
files_changed: 0,
|
|
194
|
+
confidence: 'low',
|
|
195
|
+
exit_clean: true,
|
|
196
|
+
has_commits: false
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Keyword-based fallback for reviewer orchestrator
|
|
202
|
+
*/
|
|
203
|
+
keywordFallbackReviewer(output) {
|
|
204
|
+
const lower = output.toLowerCase();
|
|
205
|
+
// Check for approval
|
|
206
|
+
if (/(lgtm|approve|looks good|approved)/.test(lower) && !/reject|issues|needs work/.test(lower)) {
|
|
207
|
+
return {
|
|
208
|
+
decision: 'approve',
|
|
209
|
+
reasoning: 'FALLBACK: Detected approval keywords',
|
|
210
|
+
notes: 'Approved based on keyword detection',
|
|
211
|
+
next_status: 'completed',
|
|
212
|
+
metadata: {
|
|
213
|
+
rejection_count: 0,
|
|
214
|
+
confidence: 'low',
|
|
215
|
+
push_to_remote: true,
|
|
216
|
+
repeated_issue: false
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
// Check for rejection
|
|
221
|
+
if (/reject|issues|needs work|fix|problem/.test(lower)) {
|
|
222
|
+
return {
|
|
223
|
+
decision: 'reject',
|
|
224
|
+
reasoning: 'FALLBACK: Detected rejection keywords',
|
|
225
|
+
notes: 'Rejected - see full reviewer output for details',
|
|
226
|
+
next_status: 'in_progress',
|
|
227
|
+
metadata: {
|
|
228
|
+
rejection_count: 0,
|
|
229
|
+
confidence: 'low',
|
|
230
|
+
push_to_remote: false,
|
|
231
|
+
repeated_issue: false
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
// Check for dispute
|
|
236
|
+
if (/dispute|disagree|out of scope/.test(lower)) {
|
|
237
|
+
return {
|
|
238
|
+
decision: 'dispute',
|
|
239
|
+
reasoning: 'FALLBACK: Detected dispute keywords',
|
|
240
|
+
notes: 'Dispute detected - human decision needed',
|
|
241
|
+
next_status: 'disputed',
|
|
242
|
+
metadata: {
|
|
243
|
+
rejection_count: 0,
|
|
244
|
+
confidence: 'low',
|
|
245
|
+
push_to_remote: false,
|
|
246
|
+
repeated_issue: false
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
// Check for skip
|
|
251
|
+
if (/skip|no changes|nothing to review/.test(lower)) {
|
|
252
|
+
return {
|
|
253
|
+
decision: 'skip',
|
|
254
|
+
reasoning: 'FALLBACK: Detected skip keywords',
|
|
255
|
+
notes: 'Task skipped',
|
|
256
|
+
next_status: 'skipped',
|
|
257
|
+
metadata: {
|
|
258
|
+
rejection_count: 0,
|
|
259
|
+
confidence: 'low',
|
|
260
|
+
push_to_remote: true,
|
|
261
|
+
repeated_issue: false
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
// Safe default: unclear
|
|
266
|
+
return {
|
|
267
|
+
decision: 'unclear',
|
|
268
|
+
reasoning: 'FALLBACK: Orchestrator failed, retrying review',
|
|
269
|
+
notes: 'Review unclear, retrying',
|
|
270
|
+
next_status: 'review',
|
|
271
|
+
metadata: {
|
|
272
|
+
rejection_count: 0,
|
|
273
|
+
confidence: 'low',
|
|
274
|
+
push_to_remote: false,
|
|
275
|
+
repeated_issue: false
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=fallback-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fallback-handler.js","sourceRoot":"","sources":["../../../../src/orchestrator/fallback-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestrator invocation functions
|
|
3
|
+
* Calls the orchestrator LLM to analyze output and make decisions
|
|
4
|
+
*/
|
|
5
|
+
import type { CoderContext, ReviewerContext } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Invoke post-coder orchestrator to analyze coder output
|
|
8
|
+
*/
|
|
9
|
+
export declare function invokeCoderOrchestrator(context: CoderContext, projectPath?: string): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Invoke post-reviewer orchestrator to analyze reviewer output
|
|
12
|
+
*/
|
|
13
|
+
export declare function invokeReviewerOrchestrator(context: ReviewerContext, projectPath?: string): Promise<string>;
|
|
14
|
+
//# sourceMappingURL=invoke.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../../src/orchestrator/invoke.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEhE;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,YAAY,EACrB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,eAAe,EACxB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,MAAM,CAAC,CAGjB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestrator invocation functions
|
|
3
|
+
* Calls the orchestrator LLM to analyze output and make decisions
|
|
4
|
+
*/
|
|
5
|
+
import { writeFileSync, unlinkSync } from 'node:fs';
|
|
6
|
+
import { tmpdir } from 'node:os';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import { loadConfig } from '../config/loader.js';
|
|
9
|
+
import { getProviderRegistry } from '../providers/registry.js';
|
|
10
|
+
import { logInvocation } from '../providers/invocation-logger.js';
|
|
11
|
+
import { buildPostCoderPrompt } from './post-coder.js';
|
|
12
|
+
import { buildPostReviewerPrompt } from './post-reviewer.js';
|
|
13
|
+
/**
|
|
14
|
+
* Invoke post-coder orchestrator to analyze coder output
|
|
15
|
+
*/
|
|
16
|
+
export async function invokeCoderOrchestrator(context, projectPath = process.cwd()) {
|
|
17
|
+
const prompt = buildPostCoderPrompt(context);
|
|
18
|
+
return await invokeOrchestrator(prompt, 'orchestrator', projectPath, context.task.id);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Invoke post-reviewer orchestrator to analyze reviewer output
|
|
22
|
+
*/
|
|
23
|
+
export async function invokeReviewerOrchestrator(context, projectPath = process.cwd()) {
|
|
24
|
+
const prompt = buildPostReviewerPrompt(context);
|
|
25
|
+
return await invokeOrchestrator(prompt, 'orchestrator', projectPath, context.task.id);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Generic orchestrator invocation
|
|
29
|
+
*/
|
|
30
|
+
async function invokeOrchestrator(prompt, role, projectPath, taskId) {
|
|
31
|
+
// Load configuration to get orchestrator provider settings
|
|
32
|
+
const config = loadConfig(projectPath);
|
|
33
|
+
const orchestratorConfig = config.ai?.orchestrator;
|
|
34
|
+
const providerName = orchestratorConfig?.provider;
|
|
35
|
+
const modelName = orchestratorConfig?.model;
|
|
36
|
+
if (!providerName || !modelName) {
|
|
37
|
+
throw new Error('Orchestrator AI provider not configured. Run "steroids config ai orchestrator" to configure.');
|
|
38
|
+
}
|
|
39
|
+
// Get the provider from registry
|
|
40
|
+
const registry = getProviderRegistry();
|
|
41
|
+
const provider = registry.get(providerName);
|
|
42
|
+
// Check if provider is available
|
|
43
|
+
if (!(await provider.isAvailable())) {
|
|
44
|
+
throw new Error(`Provider '${providerName}' is not available. ` +
|
|
45
|
+
`Ensure the CLI is installed and in PATH.`);
|
|
46
|
+
}
|
|
47
|
+
// Write prompt to temp file
|
|
48
|
+
const promptFile = join(tmpdir(), `steroids-orchestrator-${Date.now()}.txt`);
|
|
49
|
+
writeFileSync(promptFile, prompt, 'utf-8');
|
|
50
|
+
try {
|
|
51
|
+
const result = await logInvocation(prompt, (ctx) => provider.invoke(prompt, {
|
|
52
|
+
model: modelName,
|
|
53
|
+
timeout: 30_000,
|
|
54
|
+
cwd: projectPath,
|
|
55
|
+
promptFile,
|
|
56
|
+
role,
|
|
57
|
+
streamOutput: false, // Don't stream orchestrator output
|
|
58
|
+
onActivity: ctx?.onActivity,
|
|
59
|
+
}), {
|
|
60
|
+
role,
|
|
61
|
+
provider: providerName,
|
|
62
|
+
model: modelName,
|
|
63
|
+
taskId,
|
|
64
|
+
projectPath,
|
|
65
|
+
});
|
|
66
|
+
return result.stdout;
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
// Cleanup temp file
|
|
70
|
+
try {
|
|
71
|
+
unlinkSync(promptFile);
|
|
72
|
+
}
|
|
73
|
+
catch { }
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=invoke.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../../../src/orchestrator/invoke.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Post-Coder Orchestrator
|
|
3
|
+
* Analyzes coder output and decides if work is ready for review
|
|
4
|
+
*/
|
|
5
|
+
import { CoderContext } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Generate post-coder orchestrator prompt
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildPostCoderPrompt(context: CoderContext): string;
|
|
10
|
+
//# sourceMappingURL=post-coder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-coder.d.ts","sourceRoot":"","sources":["../../../../src/orchestrator/post-coder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAuMlE"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Post-Coder Orchestrator
|
|
3
|
+
* Analyzes coder output and decides if work is ready for review
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Generate post-coder orchestrator prompt
|
|
7
|
+
*/
|
|
8
|
+
export function buildPostCoderPrompt(context) {
|
|
9
|
+
const { task, coder_output: { stdout, stderr, exit_code, timed_out, duration_ms }, git_state: { commits, files_changed, has_uncommitted_changes } } = context;
|
|
10
|
+
const duration_seconds = (duration_ms / 1000).toFixed(1);
|
|
11
|
+
const stdout_tail = stdout.slice(-2000);
|
|
12
|
+
const stderr_tail = stderr.slice(-2000);
|
|
13
|
+
let rejectionSection = '';
|
|
14
|
+
if (task.rejection_notes) {
|
|
15
|
+
rejectionSection = `
|
|
16
|
+
**Previous Rejection:** ${task.rejection_notes}
|
|
17
|
+
**Rejection Count:** ${task.rejection_count || 0}
|
|
18
|
+
`;
|
|
19
|
+
}
|
|
20
|
+
let commitsSection = '';
|
|
21
|
+
if (commits.length > 0) {
|
|
22
|
+
commitsSection = commits.map(c => `- ${c.sha} - ${c.message}`).join('\n');
|
|
23
|
+
}
|
|
24
|
+
let filesSection = '';
|
|
25
|
+
if (files_changed.length > 0) {
|
|
26
|
+
filesSection = files_changed.map(f => `- ${f}`).join('\n');
|
|
27
|
+
}
|
|
28
|
+
let stderrSection = '';
|
|
29
|
+
if (stderr) {
|
|
30
|
+
stderrSection = `
|
|
31
|
+
**Errors:**
|
|
32
|
+
\`\`\`
|
|
33
|
+
${stderr_tail}
|
|
34
|
+
\`\`\`
|
|
35
|
+
`;
|
|
36
|
+
}
|
|
37
|
+
return `# POST-CODER ORCHESTRATOR
|
|
38
|
+
|
|
39
|
+
You are a state machine that analyzes coder output and determines the next action.
|
|
40
|
+
|
|
41
|
+
**CRITICAL: You MUST respond ONLY with valid JSON. No markdown, no other text.**
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Task Context
|
|
46
|
+
|
|
47
|
+
**Task ID:** ${task.id}
|
|
48
|
+
**Task Title:** ${task.title}
|
|
49
|
+
**Task Status:** in_progress
|
|
50
|
+
${rejectionSection}
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Coder Execution
|
|
54
|
+
|
|
55
|
+
**Exit Code:** ${exit_code}
|
|
56
|
+
**Timed Out:** ${timed_out}
|
|
57
|
+
**Duration:** ${duration_seconds}s
|
|
58
|
+
|
|
59
|
+
**Output (last 2000 chars):**
|
|
60
|
+
\`\`\`
|
|
61
|
+
${stdout_tail}
|
|
62
|
+
\`\`\`
|
|
63
|
+
${stderrSection}
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Git State
|
|
67
|
+
|
|
68
|
+
**Commits Made:** ${commits.length}
|
|
69
|
+
${commitsSection}
|
|
70
|
+
|
|
71
|
+
**Files Changed:** ${files_changed.length}
|
|
72
|
+
${filesSection}
|
|
73
|
+
|
|
74
|
+
**Uncommitted Changes:** ${has_uncommitted_changes}
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Decision Rules
|
|
79
|
+
|
|
80
|
+
### 1. Error States
|
|
81
|
+
- Exit code non-zero + timeout → \`error\` (process killed)
|
|
82
|
+
- Exit code non-zero + no commits + no changes → \`error\` (failed to start)
|
|
83
|
+
- Stderr contains "fatal" / "Permission denied" → \`error\`
|
|
84
|
+
|
|
85
|
+
### 2. Incomplete Work
|
|
86
|
+
- Exit 0 but no commits and no changes → \`retry\` (did nothing)
|
|
87
|
+
- Timeout but has commits/changes → \`stage_commit_submit\` (save progress)
|
|
88
|
+
- Output contains "need more time" / "continuing" → \`retry\`
|
|
89
|
+
|
|
90
|
+
### 3. Completion Without Commit
|
|
91
|
+
- Exit 0 + uncommitted changes + completion signal → \`stage_commit_submit\`
|
|
92
|
+
- Look for: "changes ready", "implementation complete", "finished"
|
|
93
|
+
|
|
94
|
+
### 4. Normal Completion
|
|
95
|
+
- Exit 0 + commits exist → \`submit\`
|
|
96
|
+
- Most common happy path
|
|
97
|
+
|
|
98
|
+
### 5. Uncertainty Default
|
|
99
|
+
- When signals conflict → \`retry\` (safer than error)
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Output Format (JSON ONLY)
|
|
104
|
+
|
|
105
|
+
\`\`\`json
|
|
106
|
+
{
|
|
107
|
+
"action": "submit" | "retry" | "stage_commit_submit" | "error",
|
|
108
|
+
"reasoning": "One sentence why (max 100 chars)",
|
|
109
|
+
"commits": ["sha1", "sha2"],
|
|
110
|
+
"commit_message": "Only if stage_commit_submit",
|
|
111
|
+
"next_status": "review" | "in_progress" | "failed",
|
|
112
|
+
"metadata": {
|
|
113
|
+
"files_changed": 0,
|
|
114
|
+
"confidence": "high" | "medium" | "low",
|
|
115
|
+
"exit_clean": true,
|
|
116
|
+
"has_commits": false
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
\`\`\`
|
|
120
|
+
|
|
121
|
+
### Field Rules
|
|
122
|
+
|
|
123
|
+
**action:**
|
|
124
|
+
- \`submit\` → Work complete, has commits, ready for review
|
|
125
|
+
- \`retry\` → Incomplete or unclear, run coder again
|
|
126
|
+
- \`stage_commit_submit\` → Work complete but not committed
|
|
127
|
+
- \`error\` → Fatal issue, needs human intervention
|
|
128
|
+
|
|
129
|
+
**next_status:**
|
|
130
|
+
- \`review\` for submit and stage_commit_submit
|
|
131
|
+
- \`in_progress\` for retry
|
|
132
|
+
- \`failed\` for error
|
|
133
|
+
|
|
134
|
+
**confidence:**
|
|
135
|
+
- \`high\` - Clear signals, obvious decision
|
|
136
|
+
- \`medium\` - Reasonable inference from context
|
|
137
|
+
- \`low\` - Uncertain, making best guess
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Examples
|
|
142
|
+
|
|
143
|
+
### Example 1: Normal Completion
|
|
144
|
+
\`\`\`json
|
|
145
|
+
{
|
|
146
|
+
"action": "submit",
|
|
147
|
+
"reasoning": "Clean exit with 2 commits",
|
|
148
|
+
"commits": ["abc123", "def456"],
|
|
149
|
+
"commit_message": null,
|
|
150
|
+
"next_status": "review",
|
|
151
|
+
"metadata": {
|
|
152
|
+
"files_changed": 3,
|
|
153
|
+
"confidence": "high",
|
|
154
|
+
"exit_clean": true,
|
|
155
|
+
"has_commits": true
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
\`\`\`
|
|
159
|
+
|
|
160
|
+
### Example 2: Uncommitted Work
|
|
161
|
+
\`\`\`json
|
|
162
|
+
{
|
|
163
|
+
"action": "stage_commit_submit",
|
|
164
|
+
"reasoning": "Work complete but not committed",
|
|
165
|
+
"commits": [],
|
|
166
|
+
"commit_message": "feat: implement task specification",
|
|
167
|
+
"next_status": "review",
|
|
168
|
+
"metadata": {
|
|
169
|
+
"files_changed": 2,
|
|
170
|
+
"confidence": "high",
|
|
171
|
+
"exit_clean": true,
|
|
172
|
+
"has_commits": false
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
\`\`\`
|
|
176
|
+
|
|
177
|
+
### Example 3: Timeout
|
|
178
|
+
\`\`\`json
|
|
179
|
+
{
|
|
180
|
+
"action": "retry",
|
|
181
|
+
"reasoning": "Timeout with no output, retrying",
|
|
182
|
+
"commits": [],
|
|
183
|
+
"commit_message": null,
|
|
184
|
+
"next_status": "in_progress",
|
|
185
|
+
"metadata": {
|
|
186
|
+
"files_changed": 0,
|
|
187
|
+
"confidence": "high",
|
|
188
|
+
"exit_clean": false,
|
|
189
|
+
"has_commits": false
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
\`\`\`
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
Analyze the context above and respond with JSON:`;
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=post-coder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-coder.js","sourceRoot":"","sources":["../../../../src/orchestrator/post-coder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAqB;IACxD,MAAM,EACJ,IAAI,EACJ,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,EACnE,SAAS,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,EAC/D,GAAG,OAAO,CAAC;IAEZ,MAAM,gBAAgB,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,gBAAgB,GAAG;0BACG,IAAI,CAAC,eAAe;uBACvB,IAAI,CAAC,eAAe,IAAI,CAAC;CAC/C,CAAC;IACA,CAAC;IAED,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,MAAM,EAAE,CAAC;QACX,aAAa,GAAG;;;EAGlB,WAAW;;CAEZ,CAAC;IACA,CAAC;IAED,OAAO;;;;;;;;;;eAUM,IAAI,CAAC,EAAE;kBACJ,IAAI,CAAC,KAAK;;EAE1B,gBAAgB;;;;;iBAKD,SAAS;iBACT,SAAS;gBACV,gBAAgB;;;;EAI9B,WAAW;;EAEX,aAAa;;;;;oBAKK,OAAO,CAAC,MAAM;EAChC,cAAc;;qBAEK,aAAa,CAAC,MAAM;EACvC,YAAY;;2BAEa,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDA0HD,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Post-Reviewer Orchestrator
|
|
3
|
+
* Analyzes reviewer output and decides task outcome
|
|
4
|
+
*/
|
|
5
|
+
import { ReviewerContext } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Generate post-reviewer orchestrator prompt
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildPostReviewerPrompt(context: ReviewerContext): string;
|
|
10
|
+
//# sourceMappingURL=post-reviewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-reviewer.d.ts","sourceRoot":"","sources":["../../../../src/orchestrator/post-reviewer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAqMxE"}
|