@bradtaylorsf/alpha-loop 1.8.0 → 1.9.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/cli.js +4 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.js +6 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plan.d.ts +1 -0
- package/dist/commands/plan.js +298 -195
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/resume.js +6 -5
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/roadmap.js +2 -3
- package/dist/commands/roadmap.js.map +1 -1
- package/dist/commands/run.d.ts +2 -0
- package/dist/commands/run.js +33 -2
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/triage.js +12 -16
- package/dist/commands/triage.js.map +1 -1
- package/dist/commands/vision.js +4 -3
- package/dist/commands/vision.js.map +1 -1
- package/dist/lib/github.d.ts +16 -3
- package/dist/lib/github.js +151 -75
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/learning.d.ts +13 -1
- package/dist/lib/learning.js +90 -17
- package/dist/lib/learning.js.map +1 -1
- package/dist/lib/logger.d.ts +1 -0
- package/dist/lib/logger.js +2 -0
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/pipeline.js +116 -44
- package/dist/lib/pipeline.js.map +1 -1
- package/dist/lib/planning.d.ts +5 -0
- package/dist/lib/planning.js +14 -0
- package/dist/lib/planning.js.map +1 -1
- package/dist/lib/prompts.d.ts +5 -0
- package/dist/lib/prompts.js +18 -5
- package/dist/lib/prompts.js.map +1 -1
- package/dist/lib/rate-limit.d.ts +55 -0
- package/dist/lib/rate-limit.js +188 -0
- package/dist/lib/rate-limit.js.map +1 -0
- package/dist/lib/session.js +2 -1
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/validation.d.ts +69 -0
- package/dist/lib/validation.js +280 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/lib/worktree.d.ts +16 -0
- package/dist/lib/worktree.js +99 -31
- package/dist/lib/worktree.js.map +1 -1
- package/package.json +1 -1
- package/templates/agents/reviewer.md +7 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub API rate limit tracking and adaptive throttling.
|
|
3
|
+
*
|
|
4
|
+
* Wraps `exec()` to intercept all `gh` CLI calls, parse rate limit headers
|
|
5
|
+
* from GH_DEBUG=api stderr output, and apply adaptive delays to avoid
|
|
6
|
+
* hitting GitHub's primary (5,000 pts/hr) and secondary (80 mutations/min)
|
|
7
|
+
* rate limits.
|
|
8
|
+
*/
|
|
9
|
+
import { execSync } from 'node:child_process';
|
|
10
|
+
import { exec } from './shell.js';
|
|
11
|
+
import { log } from './logger.js';
|
|
12
|
+
let rateLimitState = {
|
|
13
|
+
remaining: 5000,
|
|
14
|
+
limit: 5000,
|
|
15
|
+
used: 0,
|
|
16
|
+
resetAt: 0,
|
|
17
|
+
};
|
|
18
|
+
let callCount = 0;
|
|
19
|
+
let lastMutationAt = 0;
|
|
20
|
+
let lastTier = '';
|
|
21
|
+
/** Minimum ms between mutation calls to stay under 80 mutations/min. */
|
|
22
|
+
const MUTATION_GAP_MS = 750;
|
|
23
|
+
/** How often (in calls) to log rate limit status. */
|
|
24
|
+
const LOG_INTERVAL = 10;
|
|
25
|
+
// ── Header parsing ──────────────────────────────────────────────────────────
|
|
26
|
+
/**
|
|
27
|
+
* Parse rate limit headers from GH_DEBUG=api stderr output.
|
|
28
|
+
* Returns null if headers are not found.
|
|
29
|
+
*/
|
|
30
|
+
export function parseRateLimitHeaders(stderr) {
|
|
31
|
+
const remaining = stderr.match(/X-Ratelimit-Remaining:\s*(\d+)/i);
|
|
32
|
+
const limit = stderr.match(/X-Ratelimit-Limit:\s*(\d+)/i);
|
|
33
|
+
const used = stderr.match(/X-Ratelimit-Used:\s*(\d+)/i);
|
|
34
|
+
const reset = stderr.match(/X-Ratelimit-Reset:\s*(\d+)/i);
|
|
35
|
+
if (!remaining || !limit)
|
|
36
|
+
return null;
|
|
37
|
+
return {
|
|
38
|
+
remaining: parseInt(remaining[1], 10),
|
|
39
|
+
limit: parseInt(limit[1], 10),
|
|
40
|
+
used: used ? parseInt(used[1], 10) : 0,
|
|
41
|
+
resetAt: reset ? parseInt(reset[1], 10) : 0,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Strip GH_DEBUG=api debug lines from stderr so callers see clean errors.
|
|
46
|
+
* Debug lines start with `*`, `>`, or `<` followed by a space.
|
|
47
|
+
*/
|
|
48
|
+
export function stripDebugOutput(stderr) {
|
|
49
|
+
return stderr
|
|
50
|
+
.split('\n')
|
|
51
|
+
.filter((line) => !/^[*><] /.test(line))
|
|
52
|
+
.join('\n')
|
|
53
|
+
.trim();
|
|
54
|
+
}
|
|
55
|
+
// ── Throttle tiers ──────────────────────────────────────────────────────────
|
|
56
|
+
export function getThrottleTier(ratio) {
|
|
57
|
+
if (ratio > 0.5)
|
|
58
|
+
return { tier: 'normal', delayMs: 0 };
|
|
59
|
+
if (ratio > 0.2)
|
|
60
|
+
return { tier: 'cautious', delayMs: 200 };
|
|
61
|
+
if (ratio > 0.05)
|
|
62
|
+
return { tier: 'slow', delayMs: 1000 };
|
|
63
|
+
return { tier: 'critical', delayMs: 0 }; // handled specially — waits for reset
|
|
64
|
+
}
|
|
65
|
+
/** Maximum time sleepSync will wait before throwing (60 seconds). */
|
|
66
|
+
const MAX_SLEEP_MS = 60_000;
|
|
67
|
+
/**
|
|
68
|
+
* Synchronous sleep that does NOT busy-wait.
|
|
69
|
+
* Uses child_process.execSync('sleep') for CPU-friendly blocking.
|
|
70
|
+
* Throws if requested duration exceeds MAX_SLEEP_MS.
|
|
71
|
+
*/
|
|
72
|
+
function sleepSync(ms) {
|
|
73
|
+
if (ms <= 0)
|
|
74
|
+
return;
|
|
75
|
+
if (ms > MAX_SLEEP_MS) {
|
|
76
|
+
throw new Error(`Rate limit sleep of ${Math.ceil(ms / 1000)}s exceeds maximum ${MAX_SLEEP_MS / 1000}s. ` +
|
|
77
|
+
`GitHub rate limit is likely exhausted — wait for reset or increase your limit.`);
|
|
78
|
+
}
|
|
79
|
+
// Use execSync('sleep') to block without pegging CPU
|
|
80
|
+
const seconds = ms / 1000;
|
|
81
|
+
execSync(`sleep ${seconds.toFixed(3)}`, { stdio: 'ignore' });
|
|
82
|
+
}
|
|
83
|
+
// ── Public API ──────────────────────────────────────────────────────────────
|
|
84
|
+
/** Get current rate limit status. */
|
|
85
|
+
export function getRateLimitStatus() {
|
|
86
|
+
const ratio = rateLimitState.limit > 0
|
|
87
|
+
? rateLimitState.remaining / rateLimitState.limit
|
|
88
|
+
: 1;
|
|
89
|
+
return { ...rateLimitState, ratio };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Rate-limit-aware exec wrapper for all GitHub CLI calls.
|
|
93
|
+
*
|
|
94
|
+
* - Sets GH_DEBUG=api to capture rate limit headers from stderr
|
|
95
|
+
* - Applies adaptive delay based on remaining budget
|
|
96
|
+
* - Enforces 750ms gap between mutation calls
|
|
97
|
+
* - Strips debug output from stderr before returning
|
|
98
|
+
*
|
|
99
|
+
* @param command - The gh CLI command to execute
|
|
100
|
+
* @param options - Optional cwd/timeout overrides
|
|
101
|
+
* @param mutation - Whether this is a write/mutation call (default false)
|
|
102
|
+
*/
|
|
103
|
+
export function ghExec(command, options, mutation = false) {
|
|
104
|
+
callCount++;
|
|
105
|
+
// ── Pre-call throttle ───────────────────────────────────────────────────
|
|
106
|
+
const { ratio } = getRateLimitStatus();
|
|
107
|
+
const { tier, delayMs } = getThrottleTier(ratio);
|
|
108
|
+
// Log tier transitions
|
|
109
|
+
if (tier !== lastTier && lastTier !== '') {
|
|
110
|
+
log.rate(`Throttle tier: ${lastTier} → ${tier} (${rateLimitState.remaining}/${rateLimitState.limit} remaining)`);
|
|
111
|
+
}
|
|
112
|
+
lastTier = tier;
|
|
113
|
+
// Critical: wait for reset window or apply fallback delay
|
|
114
|
+
if (tier === 'critical') {
|
|
115
|
+
if (rateLimitState.resetAt > 0) {
|
|
116
|
+
const waitMs = (rateLimitState.resetAt * 1000) - Date.now();
|
|
117
|
+
if (waitMs > 0) {
|
|
118
|
+
const waitSec = Math.ceil(waitMs / 1000);
|
|
119
|
+
log.rate(`Rate limit critical (${rateLimitState.remaining}/${rateLimitState.limit}). Waiting ${waitSec}s for reset...`);
|
|
120
|
+
sleepSync(waitMs); // throws if > MAX_SLEEP_MS
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// No reset time known yet — apply a conservative fallback delay
|
|
125
|
+
const CRITICAL_FALLBACK_MS = 5000;
|
|
126
|
+
log.rate(`Rate limit critical (${rateLimitState.remaining}/${rateLimitState.limit}). No reset time known, waiting ${CRITICAL_FALLBACK_MS / 1000}s...`);
|
|
127
|
+
sleepSync(CRITICAL_FALLBACK_MS);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else if (delayMs > 0) {
|
|
131
|
+
sleepSync(delayMs);
|
|
132
|
+
}
|
|
133
|
+
// Enforce mutation gap (secondary rate limit: 80 mutations/min)
|
|
134
|
+
if (mutation && lastMutationAt > 0) {
|
|
135
|
+
const elapsed = Date.now() - lastMutationAt;
|
|
136
|
+
if (elapsed < MUTATION_GAP_MS) {
|
|
137
|
+
sleepSync(MUTATION_GAP_MS - elapsed);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// ── Execute ─────────────────────────────────────────────────────────────
|
|
141
|
+
const result = exec(command, {
|
|
142
|
+
cwd: options?.cwd,
|
|
143
|
+
timeout: options?.timeout,
|
|
144
|
+
env: { GH_DEBUG: 'api' },
|
|
145
|
+
});
|
|
146
|
+
if (mutation) {
|
|
147
|
+
lastMutationAt = Date.now();
|
|
148
|
+
}
|
|
149
|
+
// ── Parse rate limit headers from stderr ────────────────────────────────
|
|
150
|
+
const parsed = parseRateLimitHeaders(result.stderr);
|
|
151
|
+
if (parsed) {
|
|
152
|
+
rateLimitState = parsed;
|
|
153
|
+
}
|
|
154
|
+
// Strip debug lines so callers see clean error messages
|
|
155
|
+
result.stderr = stripDebugOutput(result.stderr);
|
|
156
|
+
// ── Periodic logging ────────────────────────────────────────────────────
|
|
157
|
+
if (callCount % LOG_INTERVAL === 0) {
|
|
158
|
+
const currentRatio = rateLimitState.limit > 0
|
|
159
|
+
? rateLimitState.remaining / rateLimitState.limit
|
|
160
|
+
: 1;
|
|
161
|
+
log.rate(`${rateLimitState.remaining}/${rateLimitState.limit} remaining (${Math.round(currentRatio * 100)}%)`);
|
|
162
|
+
}
|
|
163
|
+
return result;
|
|
164
|
+
}
|
|
165
|
+
const projectCacheMap = new Map();
|
|
166
|
+
function projectCacheKey(owner, projectNum) {
|
|
167
|
+
return `${owner}/${projectNum}`;
|
|
168
|
+
}
|
|
169
|
+
/** Get cached project metadata, or null if not yet cached. */
|
|
170
|
+
export function getProjectCache(owner, projectNum) {
|
|
171
|
+
return projectCacheMap.get(projectCacheKey(owner, projectNum)) ?? null;
|
|
172
|
+
}
|
|
173
|
+
/** Store project metadata in cache. */
|
|
174
|
+
export function setProjectCache(owner, projectNum, cache) {
|
|
175
|
+
projectCacheMap.set(projectCacheKey(owner, projectNum), cache);
|
|
176
|
+
}
|
|
177
|
+
/** Clear all cached project metadata (for testing). */
|
|
178
|
+
export function clearProjectCache() {
|
|
179
|
+
projectCacheMap.clear();
|
|
180
|
+
}
|
|
181
|
+
/** Reset rate limit state (for testing). */
|
|
182
|
+
export function resetRateLimitState() {
|
|
183
|
+
rateLimitState = { remaining: 5000, limit: 5000, used: 0, resetAt: 0 };
|
|
184
|
+
callCount = 0;
|
|
185
|
+
lastMutationAt = 0;
|
|
186
|
+
lastTier = '';
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=rate-limit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../src/lib/rate-limit.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/session.js
CHANGED
|
@@ -5,6 +5,7 @@ import { mkdirSync, writeFileSync } from 'node:fs';
|
|
|
5
5
|
import { join } from 'node:path';
|
|
6
6
|
import { log } from './logger.js';
|
|
7
7
|
import { exec, formatTimestamp } from './shell.js';
|
|
8
|
+
import { ghExec } from './rate-limit.js';
|
|
8
9
|
import { createPR, updateProjectStatus } from './github.js';
|
|
9
10
|
/**
|
|
10
11
|
* Create a new session context with timestamp-based name.
|
|
@@ -278,7 +279,7 @@ export async function finalizeSession(session, config) {
|
|
|
278
279
|
// If createPR failed (e.g. nothing to compare), try creating via gh directly
|
|
279
280
|
log.warn(`createPR failed: ${err instanceof Error ? err.message : err}`);
|
|
280
281
|
try {
|
|
281
|
-
const fallback =
|
|
282
|
+
const fallback = ghExec(`gh pr create --repo "${config.repo}" --base "${config.baseBranch}" --head "${session.branch}" --title "${prTitle}" --body "Session finalization — see branch for details"`, { cwd: projectDir }, true);
|
|
282
283
|
if (fallback.exitCode === 0 && fallback.stdout.trim()) {
|
|
283
284
|
log.success(`Session PR (fallback): ${fallback.stdout.trim()}`);
|
|
284
285
|
return fallback.stdout.trim();
|
package/dist/lib/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export type ValidationIssue = {
|
|
2
|
+
number: number;
|
|
3
|
+
title: string;
|
|
4
|
+
body: string;
|
|
5
|
+
};
|
|
6
|
+
export type DependencyWarning = {
|
|
7
|
+
issueNum: number;
|
|
8
|
+
dependsOn: number;
|
|
9
|
+
reason: string;
|
|
10
|
+
};
|
|
11
|
+
export type CompletenessWarning = {
|
|
12
|
+
issueNum: number;
|
|
13
|
+
title: string;
|
|
14
|
+
score: number;
|
|
15
|
+
reasons: string[];
|
|
16
|
+
};
|
|
17
|
+
export type OverlapWarning = {
|
|
18
|
+
issueA: number;
|
|
19
|
+
issueB: number;
|
|
20
|
+
sharedFiles: string[];
|
|
21
|
+
};
|
|
22
|
+
export type ValidationReport = {
|
|
23
|
+
dependencyWarnings: DependencyWarning[];
|
|
24
|
+
reorderedQueue: ValidationIssue[];
|
|
25
|
+
completenessWarnings: CompletenessWarning[];
|
|
26
|
+
overlapWarnings: OverlapWarning[];
|
|
27
|
+
skippedIssues: number[];
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Parse issue body for dependency references like "depends on #N", "after #N", "requires #N".
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseDependencies(body: string): number[];
|
|
33
|
+
/**
|
|
34
|
+
* Extract file paths mentioned in an issue body.
|
|
35
|
+
* Looks for patterns like `src/lib/foo.ts`, backtick-wrapped paths, etc.
|
|
36
|
+
*/
|
|
37
|
+
export declare function extractFilePaths(body: string): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Score an issue's completeness for autonomous implementation.
|
|
40
|
+
* Returns 0-100; higher = more complete.
|
|
41
|
+
*/
|
|
42
|
+
export declare function scoreCompleteness(issue: ValidationIssue): {
|
|
43
|
+
score: number;
|
|
44
|
+
reasons: string[];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Check dependency ordering: if issue A depends on B, B should come before A.
|
|
48
|
+
* Returns warnings and a reordered queue.
|
|
49
|
+
*/
|
|
50
|
+
export declare function checkDependencyOrder(issues: ValidationIssue[]): {
|
|
51
|
+
warnings: DependencyWarning[];
|
|
52
|
+
reordered: ValidationIssue[];
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Detect file overlap between issues.
|
|
56
|
+
*/
|
|
57
|
+
export declare function detectOverlap(issues: ValidationIssue[]): OverlapWarning[];
|
|
58
|
+
/**
|
|
59
|
+
* Run all validation checks on a queue of issues.
|
|
60
|
+
*/
|
|
61
|
+
export declare function validateIssueQueue(issues: ValidationIssue[], completenessThreshold?: number): ValidationReport;
|
|
62
|
+
/**
|
|
63
|
+
* Print a validation summary report to stderr.
|
|
64
|
+
*/
|
|
65
|
+
export declare function printValidationReport(report: ValidationReport): void;
|
|
66
|
+
/**
|
|
67
|
+
* Post comments on issues that failed completeness validation, asking for more detail.
|
|
68
|
+
*/
|
|
69
|
+
export declare function commentOnIncompleteIssues(repo: string, report: ValidationReport): void;
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-session Validation — analyze queued issues before execution.
|
|
3
|
+
* Checks dependency ordering, completeness, duplicates, and file overlap.
|
|
4
|
+
*/
|
|
5
|
+
import { log } from './logger.js';
|
|
6
|
+
import { commentIssue } from './github.js';
|
|
7
|
+
/**
|
|
8
|
+
* Parse issue body for dependency references like "depends on #N", "after #N", "requires #N".
|
|
9
|
+
*/
|
|
10
|
+
export function parseDependencies(body) {
|
|
11
|
+
const deps = [];
|
|
12
|
+
const patterns = [
|
|
13
|
+
/depends\s+on\s+#(\d+)/gi,
|
|
14
|
+
/after\s+#(\d+)/gi,
|
|
15
|
+
/requires\s+#(\d+)/gi,
|
|
16
|
+
/blocked\s+by\s+#(\d+)/gi,
|
|
17
|
+
];
|
|
18
|
+
for (const pattern of patterns) {
|
|
19
|
+
let match;
|
|
20
|
+
while ((match = pattern.exec(body)) !== null) {
|
|
21
|
+
const num = parseInt(match[1], 10);
|
|
22
|
+
if (!deps.includes(num))
|
|
23
|
+
deps.push(num);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return deps;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Extract file paths mentioned in an issue body.
|
|
30
|
+
* Looks for patterns like `src/lib/foo.ts`, backtick-wrapped paths, etc.
|
|
31
|
+
*/
|
|
32
|
+
export function extractFilePaths(body) {
|
|
33
|
+
const paths = [];
|
|
34
|
+
// Match file paths in backticks or standalone that look like relative paths with extensions
|
|
35
|
+
const pattern = /(?:`([^`]*\/[^`]+\.[a-z]{1,5})`|(?:^|\s)((?:src|tests|lib|templates|\.alpha-loop)\/[\w./\-]+\.[a-z]{1,5}))/gm;
|
|
36
|
+
let match;
|
|
37
|
+
while ((match = pattern.exec(body)) !== null) {
|
|
38
|
+
const path = match[1] || match[2];
|
|
39
|
+
if (path && !paths.includes(path))
|
|
40
|
+
paths.push(path);
|
|
41
|
+
}
|
|
42
|
+
return paths;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Score an issue's completeness for autonomous implementation.
|
|
46
|
+
* Returns 0-100; higher = more complete.
|
|
47
|
+
*/
|
|
48
|
+
export function scoreCompleteness(issue) {
|
|
49
|
+
let score = 100;
|
|
50
|
+
const reasons = [];
|
|
51
|
+
const body = issue.body || '';
|
|
52
|
+
// Very short body
|
|
53
|
+
if (body.length < 100) {
|
|
54
|
+
score -= 40;
|
|
55
|
+
reasons.push('Issue body is very short (< 100 chars)');
|
|
56
|
+
}
|
|
57
|
+
else if (body.length < 300) {
|
|
58
|
+
score -= 15;
|
|
59
|
+
reasons.push('Issue body is brief (< 300 chars)');
|
|
60
|
+
}
|
|
61
|
+
// No acceptance criteria
|
|
62
|
+
if (!/- \[[ x]\]/i.test(body) && !/acceptance criteria/i.test(body)) {
|
|
63
|
+
score -= 25;
|
|
64
|
+
reasons.push('No acceptance criteria found');
|
|
65
|
+
}
|
|
66
|
+
// No file references
|
|
67
|
+
if (extractFilePaths(body).length === 0) {
|
|
68
|
+
score -= 10;
|
|
69
|
+
reasons.push('No file paths referenced');
|
|
70
|
+
}
|
|
71
|
+
// No code blocks or technical detail
|
|
72
|
+
if (!body.includes('```') && !body.includes('`')) {
|
|
73
|
+
score -= 10;
|
|
74
|
+
reasons.push('No code examples or inline code');
|
|
75
|
+
}
|
|
76
|
+
return { score: Math.max(0, score), reasons };
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check dependency ordering: if issue A depends on B, B should come before A.
|
|
80
|
+
* Returns warnings and a reordered queue.
|
|
81
|
+
*/
|
|
82
|
+
export function checkDependencyOrder(issues) {
|
|
83
|
+
const issueNums = new Set(issues.map((i) => i.number));
|
|
84
|
+
const depMap = new Map();
|
|
85
|
+
const warnings = [];
|
|
86
|
+
for (const issue of issues) {
|
|
87
|
+
const deps = parseDependencies(issue.body || '');
|
|
88
|
+
// Only track deps that are in the queue
|
|
89
|
+
const queueDeps = deps.filter((d) => issueNums.has(d));
|
|
90
|
+
depMap.set(issue.number, queueDeps);
|
|
91
|
+
}
|
|
92
|
+
// Check for misordering
|
|
93
|
+
const posMap = new Map(issues.map((issue, idx) => [issue.number, idx]));
|
|
94
|
+
for (const issue of issues) {
|
|
95
|
+
const deps = depMap.get(issue.number) || [];
|
|
96
|
+
for (const dep of deps) {
|
|
97
|
+
const depPos = posMap.get(dep);
|
|
98
|
+
const issuePos = posMap.get(issue.number);
|
|
99
|
+
if (depPos > issuePos) {
|
|
100
|
+
warnings.push({
|
|
101
|
+
issueNum: issue.number,
|
|
102
|
+
dependsOn: dep,
|
|
103
|
+
reason: `#${issue.number} depends on #${dep}, but #${dep} comes later in the queue`,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Topological sort for reordering
|
|
109
|
+
const reordered = topologicalSort(issues, depMap);
|
|
110
|
+
return { warnings, reordered };
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Topological sort of issues based on dependency map.
|
|
114
|
+
* Falls back to original order if cycles are detected.
|
|
115
|
+
*/
|
|
116
|
+
function topologicalSort(issues, depMap) {
|
|
117
|
+
const issueMap = new Map(issues.map((i) => [i.number, i]));
|
|
118
|
+
const visited = new Set();
|
|
119
|
+
const visiting = new Set();
|
|
120
|
+
const result = [];
|
|
121
|
+
function visit(num) {
|
|
122
|
+
if (visited.has(num))
|
|
123
|
+
return true;
|
|
124
|
+
if (visiting.has(num))
|
|
125
|
+
return false; // cycle
|
|
126
|
+
visiting.add(num);
|
|
127
|
+
const deps = depMap.get(num) || [];
|
|
128
|
+
for (const dep of deps) {
|
|
129
|
+
if (issueMap.has(dep) && !visit(dep))
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
visiting.delete(num);
|
|
133
|
+
visited.add(num);
|
|
134
|
+
const issue = issueMap.get(num);
|
|
135
|
+
if (issue)
|
|
136
|
+
result.push(issue);
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
for (const issue of issues) {
|
|
140
|
+
if (!visit(issue.number)) {
|
|
141
|
+
// Cycle detected, return original order
|
|
142
|
+
return [...issues];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return result;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Detect file overlap between issues.
|
|
149
|
+
*/
|
|
150
|
+
export function detectOverlap(issues) {
|
|
151
|
+
const warnings = [];
|
|
152
|
+
const filesByIssue = new Map();
|
|
153
|
+
for (const issue of issues) {
|
|
154
|
+
filesByIssue.set(issue.number, extractFilePaths(issue.body || ''));
|
|
155
|
+
}
|
|
156
|
+
for (let i = 0; i < issues.length; i++) {
|
|
157
|
+
for (let j = i + 1; j < issues.length; j++) {
|
|
158
|
+
const filesA = filesByIssue.get(issues[i].number) || [];
|
|
159
|
+
const filesB = filesByIssue.get(issues[j].number) || [];
|
|
160
|
+
const shared = filesA.filter((f) => filesB.includes(f));
|
|
161
|
+
if (shared.length > 0) {
|
|
162
|
+
warnings.push({
|
|
163
|
+
issueA: issues[i].number,
|
|
164
|
+
issueB: issues[j].number,
|
|
165
|
+
sharedFiles: shared,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return warnings;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Run all validation checks on a queue of issues.
|
|
174
|
+
*/
|
|
175
|
+
export function validateIssueQueue(issues, completenessThreshold = 40) {
|
|
176
|
+
// Dependency ordering
|
|
177
|
+
const { warnings: dependencyWarnings, reordered } = checkDependencyOrder(issues);
|
|
178
|
+
// Completeness scoring
|
|
179
|
+
const completenessWarnings = [];
|
|
180
|
+
const skippedIssues = [];
|
|
181
|
+
for (const issue of issues) {
|
|
182
|
+
const { score, reasons } = scoreCompleteness(issue);
|
|
183
|
+
if (score < completenessThreshold) {
|
|
184
|
+
completenessWarnings.push({
|
|
185
|
+
issueNum: issue.number,
|
|
186
|
+
title: issue.title,
|
|
187
|
+
score,
|
|
188
|
+
reasons,
|
|
189
|
+
});
|
|
190
|
+
skippedIssues.push(issue.number);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// File overlap detection
|
|
194
|
+
const overlapWarnings = detectOverlap(issues);
|
|
195
|
+
return {
|
|
196
|
+
dependencyWarnings,
|
|
197
|
+
reorderedQueue: reordered,
|
|
198
|
+
completenessWarnings,
|
|
199
|
+
overlapWarnings,
|
|
200
|
+
skippedIssues,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Print a validation summary report to stderr.
|
|
205
|
+
*/
|
|
206
|
+
export function printValidationReport(report) {
|
|
207
|
+
const BOLD = '\x1b[1m';
|
|
208
|
+
const YELLOW = '\x1b[33m';
|
|
209
|
+
const RED = '\x1b[31m';
|
|
210
|
+
const GREEN = '\x1b[32m';
|
|
211
|
+
const NC = '\x1b[0m';
|
|
212
|
+
console.error('');
|
|
213
|
+
console.error(`${BOLD} Pre-Session Validation Report${NC}`);
|
|
214
|
+
console.error('');
|
|
215
|
+
// Dependency warnings
|
|
216
|
+
if (report.dependencyWarnings.length > 0) {
|
|
217
|
+
console.error(`${YELLOW} Dependency Ordering Issues:${NC}`);
|
|
218
|
+
for (const w of report.dependencyWarnings) {
|
|
219
|
+
console.error(` ${w.reason}`);
|
|
220
|
+
}
|
|
221
|
+
console.error('');
|
|
222
|
+
}
|
|
223
|
+
// Completeness warnings
|
|
224
|
+
if (report.completenessWarnings.length > 0) {
|
|
225
|
+
console.error(`${RED} Incomplete Issues (will be skipped):${NC}`);
|
|
226
|
+
for (const w of report.completenessWarnings) {
|
|
227
|
+
console.error(` #${w.issueNum}: ${w.title} (score: ${w.score}/100)`);
|
|
228
|
+
for (const r of w.reasons) {
|
|
229
|
+
console.error(` - ${r}`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
console.error('');
|
|
233
|
+
}
|
|
234
|
+
// Overlap warnings
|
|
235
|
+
if (report.overlapWarnings.length > 0) {
|
|
236
|
+
console.error(`${YELLOW} File Overlap Warnings:${NC}`);
|
|
237
|
+
for (const w of report.overlapWarnings) {
|
|
238
|
+
console.error(` #${w.issueA} and #${w.issueB} both modify: ${w.sharedFiles.join(', ')}`);
|
|
239
|
+
}
|
|
240
|
+
console.error('');
|
|
241
|
+
}
|
|
242
|
+
const totalWarnings = report.dependencyWarnings.length + report.completenessWarnings.length + report.overlapWarnings.length;
|
|
243
|
+
if (totalWarnings === 0) {
|
|
244
|
+
console.log(`${GREEN} All issues passed validation.${NC}`);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
console.error(` ${totalWarnings} warning(s) found.`);
|
|
248
|
+
}
|
|
249
|
+
console.error('');
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Post comments on issues that failed completeness validation, asking for more detail.
|
|
253
|
+
*/
|
|
254
|
+
export function commentOnIncompleteIssues(repo, report) {
|
|
255
|
+
for (const w of report.completenessWarnings) {
|
|
256
|
+
const reasons = w.reasons.map((r) => `- ${r}`).join('\n');
|
|
257
|
+
const body = `## Pre-Session Validation: More Detail Needed
|
|
258
|
+
|
|
259
|
+
This issue was flagged during pre-session validation as needing more information for autonomous implementation (completeness score: ${w.score}/100).
|
|
260
|
+
|
|
261
|
+
**Issues found:**
|
|
262
|
+
${reasons}
|
|
263
|
+
|
|
264
|
+
**Suggestions:**
|
|
265
|
+
- Add acceptance criteria using checkbox format (\`- [ ] Criterion\`)
|
|
266
|
+
- Reference specific files that need to be modified
|
|
267
|
+
- Include code examples or expected behavior
|
|
268
|
+
- Add more technical detail about the expected implementation
|
|
269
|
+
|
|
270
|
+
_This comment was generated automatically by alpha-loop pre-session validation._`;
|
|
271
|
+
try {
|
|
272
|
+
commentIssue(repo, w.issueNum, body);
|
|
273
|
+
log.info(`Posted validation comment on #${w.issueNum}`);
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
log.warn(`Failed to post validation comment on #${w.issueNum}: ${err}`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/lib/validation.ts"],"names":[],"mappings":"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"}
|