@intrect/openswarm 0.10.2 → 0.12.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/README.md +18 -61
- package/dist/agents/pairPipeline.d.ts.map +1 -1
- package/dist/agents/pairPipeline.js +4 -3
- package/dist/agents/pairPipeline.js.map +1 -1
- package/dist/cli/fixCommand.d.ts +91 -0
- package/dist/cli/fixCommand.d.ts.map +1 -0
- package/dist/cli/fixCommand.js +214 -0
- package/dist/cli/fixCommand.js.map +1 -0
- package/dist/cli/reviewAudit.d.ts +72 -1
- package/dist/cli/reviewAudit.d.ts.map +1 -1
- package/dist/cli/reviewAudit.js +96 -4
- package/dist/cli/reviewAudit.js.map +1 -1
- package/dist/cli/reviewMaxCommand.d.ts +2 -0
- package/dist/cli/reviewMaxCommand.d.ts.map +1 -1
- package/dist/cli/reviewMaxCommand.js +38 -9
- package/dist/cli/reviewMaxCommand.js.map +1 -1
- package/dist/cli/reviewProgress.d.ts +8 -5
- package/dist/cli/reviewProgress.d.ts.map +1 -1
- package/dist/cli/reviewProgress.js +19 -14
- package/dist/cli/reviewProgress.js.map +1 -1
- package/dist/cli.js +29 -0
- package/dist/cli.js.map +1 -1
- package/dist/orchestration/taskScheduler.d.ts.map +1 -1
- package/dist/orchestration/taskScheduler.js +10 -1
- package/dist/orchestration/taskScheduler.js.map +1 -1
- package/dist/runners/cliRunner.d.ts.map +1 -1
- package/dist/runners/cliRunner.js +21 -5
- package/dist/runners/cliRunner.js.map +1 -1
- package/dist/support/colors.d.ts +20 -0
- package/dist/support/colors.d.ts.map +1 -1
- package/dist/support/colors.js +29 -0
- package/dist/support/colors.js.map +1 -1
- package/dist/support/glyphs.d.ts +9 -0
- package/dist/support/glyphs.d.ts.map +1 -0
- package/dist/support/glyphs.js +27 -0
- package/dist/support/glyphs.js.map +1 -0
- package/dist/tui/components/AuditBoard.d.ts.map +1 -1
- package/dist/tui/components/AuditBoard.js +3 -8
- package/dist/tui/components/AuditBoard.js.map +1 -1
- package/dist/tui/components/StageTimeline.d.ts.map +1 -1
- package/dist/tui/components/StageTimeline.js +5 -4
- package/dist/tui/components/StageTimeline.js.map +1 -1
- package/dist/tui/components/Status.d.ts +14 -0
- package/dist/tui/components/Status.d.ts.map +1 -0
- package/dist/tui/components/Status.js +33 -0
- package/dist/tui/components/Status.js.map +1 -0
- package/dist/tui/components/SubagentTree.d.ts.map +1 -1
- package/dist/tui/components/SubagentTree.js +4 -4
- package/dist/tui/components/SubagentTree.js.map +1 -1
- package/dist/tui/loadingMessages.d.ts +1 -3
- package/dist/tui/loadingMessages.d.ts.map +1 -1
- package/dist/tui/loadingMessages.js +3 -5
- package/dist/tui/loadingMessages.js.map +1 -1
- package/dist/tui/theme.d.ts +17 -3
- package/dist/tui/theme.d.ts.map +1 -1
- package/dist/tui/theme.js +27 -5
- package/dist/tui/theme.js.map +1 -1
- package/package.json +1 -1
- package/dist/agents/multiLensReview.d.ts +0 -49
- package/dist/agents/multiLensReview.d.ts.map +0 -1
- package/dist/agents/multiLensReview.js +0 -148
- package/dist/agents/multiLensReview.js.map +0 -1
- package/dist/automation/backlogGrooming.d.ts +0 -21
- package/dist/automation/backlogGrooming.d.ts.map +0 -1
- package/dist/automation/backlogGrooming.js +0 -80
- package/dist/automation/backlogGrooming.js.map +0 -1
- package/dist/automation/localCI.d.ts +0 -24
- package/dist/automation/localCI.d.ts.map +0 -1
- package/dist/automation/localCI.js +0 -84
- package/dist/automation/localCI.js.map +0 -1
- package/dist/support/chat.d.ts +0 -3
- package/dist/support/chat.d.ts.map +0 -1
- package/dist/support/chat.js +0 -313
- package/dist/support/chat.js.map +0 -1
- package/dist/support/chatTui.d.ts +0 -3
- package/dist/support/chatTui.d.ts.map +0 -1
- package/dist/support/chatTui.js +0 -1225
- package/dist/support/chatTui.js.map +0 -1
- package/dist/support/quotaTracker.d.ts +0 -29
- package/dist/support/quotaTracker.d.ts.map +0 -1
- package/dist/support/quotaTracker.js +0 -89
- package/dist/support/quotaTracker.js.map +0 -1
- package/dist/tui/components/StatusBar.d.ts +0 -7
- package/dist/tui/components/StatusBar.d.ts.map +0 -1
- package/dist/tui/components/StatusBar.js +0 -8
- package/dist/tui/components/StatusBar.js.map +0 -1
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
// ============================================
|
|
2
|
-
// OpenSwarm - Multi-Lens Reviewer Fan-out (INT-2230)
|
|
3
|
-
// ============================================
|
|
4
|
-
//
|
|
5
|
-
// PoC: verify one worker result through several independent review "lenses" in
|
|
6
|
-
// parallel, then merge into a single ReviewResult. Each lens is just a focused
|
|
7
|
-
// prompt injected into `taskDescription` — no extra adapter/infra needed — so the
|
|
8
|
-
// existing reviewer agent runs N times, each told to concentrate on one concern
|
|
9
|
-
// (correctness / security / regression-risk). The merge takes the WORST decision
|
|
10
|
-
// and unions the issues/suggestions/recommendedActions so nothing a lens caught
|
|
11
|
-
// is dropped. Gated + opt-in (config.review.multiLens.enabled, default false) to
|
|
12
|
-
// avoid multiplying usage on every task.
|
|
13
|
-
import { runReviewer } from './reviewer.js';
|
|
14
|
-
import { runPool } from '../support/concurrencyPool.js';
|
|
15
|
-
import { RateLimitError } from '../adapters/rateLimitError.js';
|
|
16
|
-
/** The three default lenses a fan-out review runs in parallel. */
|
|
17
|
-
export const REVIEW_LENSES = [
|
|
18
|
-
{
|
|
19
|
-
key: 'correctness',
|
|
20
|
-
focus: 'logic errors, unhandled edge cases, off-by-one, wrong assumptions, error handling',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
key: 'security',
|
|
24
|
-
focus: 'injection, unsafe input, leaked secrets/keys, auth gaps, unsafe deserialization',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
key: 'regression-risk',
|
|
28
|
-
focus: 'breaks existing behavior, changes a shared contract, missing/!updated tests, side effects on callers',
|
|
29
|
-
},
|
|
30
|
-
];
|
|
31
|
-
/**
|
|
32
|
-
* Append a lens directive to the base task description so the reviewer
|
|
33
|
-
* concentrates on one concern. Other concerns are explicitly delegated to the
|
|
34
|
-
* sibling lenses so a single reviewer doesn't try to cover everything.
|
|
35
|
-
*/
|
|
36
|
-
export function buildLensTaskDescription(base, lens) {
|
|
37
|
-
return `${base}\n\n## Review lens: ${lens.key}\nFocus your review specifically on: ${lens.focus}. Other concerns are secondary — another reviewer covers them.`;
|
|
38
|
-
}
|
|
39
|
-
// Merge
|
|
40
|
-
/** Severity ordering: reject is worst, approve is best. */
|
|
41
|
-
const DECISION_RANK = {
|
|
42
|
-
approve: 0,
|
|
43
|
-
revise: 1,
|
|
44
|
-
reject: 2,
|
|
45
|
-
};
|
|
46
|
-
/** First non-empty line of a feedback blob, trimmed (one-line lens summary). */
|
|
47
|
-
function firstLine(text) {
|
|
48
|
-
if (!text)
|
|
49
|
-
return '';
|
|
50
|
-
for (const line of text.split('\n')) {
|
|
51
|
-
const trimmed = line.trim();
|
|
52
|
-
if (trimmed)
|
|
53
|
-
return trimmed;
|
|
54
|
-
}
|
|
55
|
-
return '';
|
|
56
|
-
}
|
|
57
|
-
/** Stable dedup of strings by trimmed/lowercased value, keeping first original. */
|
|
58
|
-
function dedupStrings(values) {
|
|
59
|
-
const seen = new Set();
|
|
60
|
-
const out = [];
|
|
61
|
-
for (const v of values) {
|
|
62
|
-
const key = v.trim().toLowerCase();
|
|
63
|
-
if (!key || seen.has(key))
|
|
64
|
-
continue;
|
|
65
|
-
seen.add(key);
|
|
66
|
-
out.push(v);
|
|
67
|
-
}
|
|
68
|
-
return out;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Combine several lens reviews into one verdict:
|
|
72
|
-
* - decision = the WORST across lenses (reject > revise > approve)
|
|
73
|
-
* - issues / suggestions / recommendedActions = deduped union
|
|
74
|
-
* - feedback = one line per lens result, joined
|
|
75
|
-
* Empty input yields a clean approve (nothing flagged).
|
|
76
|
-
*/
|
|
77
|
-
export function mergeReviewResults(results) {
|
|
78
|
-
if (results.length === 0) {
|
|
79
|
-
return { decision: 'approve', feedback: '', issues: [], suggestions: [], recommendedActions: [] };
|
|
80
|
-
}
|
|
81
|
-
let decision = 'approve';
|
|
82
|
-
for (const r of results) {
|
|
83
|
-
if (DECISION_RANK[r.decision] > DECISION_RANK[decision])
|
|
84
|
-
decision = r.decision;
|
|
85
|
-
}
|
|
86
|
-
const issues = dedupStrings(results.flatMap((r) => r.issues ?? []));
|
|
87
|
-
const suggestions = dedupStrings(results.flatMap((r) => r.suggestions ?? []));
|
|
88
|
-
const actionSeen = new Set();
|
|
89
|
-
const recommendedActions = [];
|
|
90
|
-
for (const action of results.flatMap((r) => r.recommendedActions ?? [])) {
|
|
91
|
-
const key = `${action.type}|${action.location ?? ''}|${action.title}`;
|
|
92
|
-
if (actionSeen.has(key))
|
|
93
|
-
continue;
|
|
94
|
-
actionSeen.add(key);
|
|
95
|
-
recommendedActions.push(action);
|
|
96
|
-
}
|
|
97
|
-
const feedback = results
|
|
98
|
-
.map((r) => firstLine(r.feedback))
|
|
99
|
-
.filter(Boolean)
|
|
100
|
-
.join('\n');
|
|
101
|
-
return { decision, feedback, issues, suggestions, recommendedActions };
|
|
102
|
-
}
|
|
103
|
-
// Gating
|
|
104
|
-
/**
|
|
105
|
-
* Decide whether a task is worth the extra cost of multi-lens fan-out. Triggers
|
|
106
|
-
* on a wide change surface, high priority (1=Urgent, 2=High), or an explicit
|
|
107
|
-
* `deep-review` label. Threshold defaults to 3 changed files.
|
|
108
|
-
*/
|
|
109
|
-
export function shouldFanoutReview(task, opts) {
|
|
110
|
-
const fileThreshold = opts?.fileThreshold ?? 3;
|
|
111
|
-
const fileCount = task.filesChanged?.length ?? 0;
|
|
112
|
-
if (fileCount >= fileThreshold)
|
|
113
|
-
return true;
|
|
114
|
-
if (task.priority != null && task.priority <= 2)
|
|
115
|
-
return true;
|
|
116
|
-
return !!task.labels?.includes('deep-review');
|
|
117
|
-
}
|
|
118
|
-
// Fan-out
|
|
119
|
-
/**
|
|
120
|
-
* Run every lens in parallel and merge. Each lens calls the reviewer with a
|
|
121
|
-
* lens-scoped task description. A lens that fails for a non-rate-limit reason is
|
|
122
|
-
* skipped (its slot carries an error from the pool). A RateLimitError from ANY
|
|
123
|
-
* lens propagates so the pipeline's existing usage-limit handling / claude
|
|
124
|
-
* fallback can take over (INT-2192) instead of silently dropping a lens.
|
|
125
|
-
* `deps` is injectable for tests.
|
|
126
|
-
*/
|
|
127
|
-
export async function runMultiLensReview(options, deps) {
|
|
128
|
-
const review = deps?.review ?? runReviewer;
|
|
129
|
-
const lenses = deps?.lenses ?? REVIEW_LENSES;
|
|
130
|
-
const concurrency = deps?.concurrency ?? lenses.length;
|
|
131
|
-
const settled = await runPool(lenses, concurrency, async (lens) => {
|
|
132
|
-
const result = await review({
|
|
133
|
-
...options,
|
|
134
|
-
taskDescription: buildLensTaskDescription(options.taskDescription, lens),
|
|
135
|
-
});
|
|
136
|
-
// Tag the feedback with the lens so the merged summary reads "[correctness] …".
|
|
137
|
-
return { ...result, feedback: `[${lens.key}] ${firstLine(result.feedback)}` };
|
|
138
|
-
});
|
|
139
|
-
// A rate limit on any lens means the quota is exhausted — propagate so the
|
|
140
|
-
// pipeline pauses / falls back rather than merging a partial review.
|
|
141
|
-
for (const s of settled) {
|
|
142
|
-
if (s.error instanceof RateLimitError)
|
|
143
|
-
throw s.error;
|
|
144
|
-
}
|
|
145
|
-
const ok = settled.filter((s) => s.value !== undefined).map((s) => s.value);
|
|
146
|
-
return mergeReviewResults(ok);
|
|
147
|
-
}
|
|
148
|
-
//# sourceMappingURL=multiLensReview.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multiLensReview.js","sourceRoot":"","sources":["../../src/agents/multiLensReview.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { TaskItem } from '../orchestration/decisionEngine.js';
|
|
2
|
-
import type { AdapterName } from '../adapters/index.js';
|
|
3
|
-
export type GroomingClassification = 'likely-done' | 'active' | 'obsolete';
|
|
4
|
-
export interface GroomingVerdict {
|
|
5
|
-
issueIdentifier: string;
|
|
6
|
-
classification: GroomingClassification;
|
|
7
|
-
evidence: string;
|
|
8
|
-
}
|
|
9
|
-
/** Compact, bounded repo summary (layer → sample modules) — repo-map style, NOT full files, so the
|
|
10
|
-
* grooming prompt stays small (the harness lesson: large context degrades model judgment). */
|
|
11
|
-
export declare function summarizeRepo(projectPath: string): string;
|
|
12
|
-
export declare function buildGroomingPrompt(issues: TaskItem[], repoSummary: string): string;
|
|
13
|
-
export declare function parseGroomingVerdicts(response: string): GroomingVerdict[];
|
|
14
|
-
/**
|
|
15
|
-
* Core grooming pass (INT-1609): classify each open issue against the current codebase. Pure
|
|
16
|
-
* orchestration with an injected `classify` fn so it's testable without a live model. PROPOSE-only.
|
|
17
|
-
*/
|
|
18
|
-
export declare function groomBacklog(issues: TaskItem[], repoSummary: string, classify: (prompt: string) => Promise<string>): Promise<GroomingVerdict[]>;
|
|
19
|
-
/** Real grooming pass: load the repo snapshot + classify via the configured chat model (read-only). */
|
|
20
|
-
export declare function runBacklogGrooming(issues: TaskItem[], projectPath: string, provider: AdapterName, model: string): Promise<GroomingVerdict[]>;
|
|
21
|
-
//# sourceMappingURL=backlogGrooming.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backlogGrooming.d.ts","sourceRoot":"","sources":["../../src/automation/backlogGrooming.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE3E,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,sBAAsB,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID;+FAC+F;AAC/F,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAkBnF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAqBzE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,QAAQ,EAAE,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAC5C,OAAO,CAAC,eAAe,EAAE,CAAC,CAI5B;AAED,uGAAuG;AACvG,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,QAAQ,EAAE,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,EAAE,CAAC,CAQ5B"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { loadRepoSnapshot } from '../knowledge/index.js';
|
|
2
|
-
import { runChatCompletion } from '../support/chatBackend.js';
|
|
3
|
-
const VALID_CLASSIFICATIONS = new Set(['likely-done', 'active', 'obsolete']);
|
|
4
|
-
/** Compact, bounded repo summary (layer → sample modules) — repo-map style, NOT full files, so the
|
|
5
|
-
* grooming prompt stays small (the harness lesson: large context degrades model judgment). */
|
|
6
|
-
export function summarizeRepo(projectPath) {
|
|
7
|
-
const snap = loadRepoSnapshot(projectPath);
|
|
8
|
-
if (!snap)
|
|
9
|
-
return '(no repo snapshot available)';
|
|
10
|
-
const layers = snap.project.layers
|
|
11
|
-
.slice(0, 20)
|
|
12
|
-
.map((l) => `- ${l.layer} (${l.count}): ${l.modules.slice(0, 8).join(', ')}`)
|
|
13
|
-
.join('\n');
|
|
14
|
-
return `Project ${snap.projectName} — ${snap.project.totalModules} modules.\nLayers:\n${layers}`;
|
|
15
|
-
}
|
|
16
|
-
export function buildGroomingPrompt(issues, repoSummary) {
|
|
17
|
-
const list = issues
|
|
18
|
-
.map((i) => {
|
|
19
|
-
const id = i.issueIdentifier ?? i.id;
|
|
20
|
-
const desc = i.description ? ` — ${i.description.replace(/\s+/g, ' ').slice(0, 160)}` : '';
|
|
21
|
-
return `- ${id}: ${i.title}${desc}`;
|
|
22
|
-
})
|
|
23
|
-
.join('\n');
|
|
24
|
-
return ('You are grooming a software backlog. Using the repo structure and the open issues, classify ' +
|
|
25
|
-
'EACH issue as one of:\n' +
|
|
26
|
-
'- "likely-done": the work appears already implemented in the codebase\n' +
|
|
27
|
-
'- "active": still needed / not yet done\n' +
|
|
28
|
-
'- "obsolete": no longer relevant\n\n' +
|
|
29
|
-
'Respond with ONLY a JSON array:\n' +
|
|
30
|
-
'[{"id":"<identifier>","classification":"likely-done|active|obsolete","evidence":"one short sentence"}]\n\n' +
|
|
31
|
-
`## Repo\n${repoSummary}\n\n## Open issues\n${list}`);
|
|
32
|
-
}
|
|
33
|
-
export function parseGroomingVerdicts(response) {
|
|
34
|
-
const json = response.match(/\[[\s\S]*\]/)?.[0];
|
|
35
|
-
if (!json)
|
|
36
|
-
return [];
|
|
37
|
-
try {
|
|
38
|
-
const arr = JSON.parse(json);
|
|
39
|
-
if (!Array.isArray(arr))
|
|
40
|
-
return [];
|
|
41
|
-
const out = [];
|
|
42
|
-
for (const a of arr) {
|
|
43
|
-
if (!a || typeof a !== 'object')
|
|
44
|
-
continue;
|
|
45
|
-
const r = a;
|
|
46
|
-
const id = typeof r.id === 'string' ? r.id.trim() : '';
|
|
47
|
-
if (!id)
|
|
48
|
-
continue;
|
|
49
|
-
const classification = typeof r.classification === 'string' && VALID_CLASSIFICATIONS.has(r.classification)
|
|
50
|
-
? r.classification
|
|
51
|
-
: 'active';
|
|
52
|
-
out.push({ issueIdentifier: id, classification, evidence: typeof r.evidence === 'string' ? r.evidence : '' });
|
|
53
|
-
}
|
|
54
|
-
return out;
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return [];
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Core grooming pass (INT-1609): classify each open issue against the current codebase. Pure
|
|
62
|
-
* orchestration with an injected `classify` fn so it's testable without a live model. PROPOSE-only.
|
|
63
|
-
*/
|
|
64
|
-
export async function groomBacklog(issues, repoSummary, classify) {
|
|
65
|
-
if (issues.length === 0)
|
|
66
|
-
return [];
|
|
67
|
-
const response = await classify(buildGroomingPrompt(issues, repoSummary));
|
|
68
|
-
return parseGroomingVerdicts(response);
|
|
69
|
-
}
|
|
70
|
-
/** Real grooming pass: load the repo snapshot + classify via the configured chat model (read-only). */
|
|
71
|
-
export async function runBacklogGrooming(issues, projectPath, provider, model) {
|
|
72
|
-
const repoSummary = summarizeRepo(projectPath);
|
|
73
|
-
return groomBacklog(issues, repoSummary, async (prompt) => {
|
|
74
|
-
const r = await runChatCompletion({
|
|
75
|
-
prompt, provider, model, cwd: projectPath, timeoutMs: 120_000, enableTools: false, maxTurns: 1,
|
|
76
|
-
});
|
|
77
|
-
return r.response;
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=backlogGrooming.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backlogGrooming.js","sourceRoot":"","sources":["../../src/automation/backlogGrooming.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export interface LocalCIResult {
|
|
2
|
-
/** true = all gate steps passed (or only missing-tool steps were skipped) */
|
|
3
|
-
success: boolean;
|
|
4
|
-
/** true = at least one real test/lint step actually ran */
|
|
5
|
-
ran: boolean;
|
|
6
|
-
/** human-readable log for the PR comment */
|
|
7
|
-
output: string;
|
|
8
|
-
}
|
|
9
|
-
/** A gate step: its exit code decides pass/fail (lint/typecheck/test all exit non-zero on issues). */
|
|
10
|
-
interface Step {
|
|
11
|
-
cmd: string;
|
|
12
|
-
args: string[];
|
|
13
|
-
label: string;
|
|
14
|
-
}
|
|
15
|
-
export declare function detectSteps(projectPath: string): Step[];
|
|
16
|
-
export declare const isMissingTool: (s: string) => boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Check out `branch` in `projectPath` and run the detected CI steps. Missing tools (e.g. ruff not
|
|
19
|
-
* installed) are skipped, not failed — only a tool that runs and exits non-zero counts as a CI
|
|
20
|
-
* failure. Returns `ran: false` when the project language isn't recognized or checkout fails.
|
|
21
|
-
*/
|
|
22
|
-
export declare function runLocalCI(projectPath: string, branch: string): Promise<LocalCIResult>;
|
|
23
|
-
export {};
|
|
24
|
-
//# sourceMappingURL=localCI.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"localCI.d.ts","sourceRoot":"","sources":["../../src/automation/localCI.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,GAAG,EAAE,OAAO,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,sGAAsG;AACtG,UAAU,IAAI;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAE7D,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,CAiBvD;AAED,eAAO,MAAM,aAAa,GAAI,GAAG,MAAM,YAA+D,CAAC;AAEvG;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAqC5F"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
// Local CI runner — replaces the GitHub Actions gate when Actions can't run (no cloud credits).
|
|
2
|
-
// Checks out the PR branch, detects the language, and runs the test/lint commands directly via
|
|
3
|
-
// the shell (no LLM, deterministic). prProcessor uses the result as the merge gate.
|
|
4
|
-
import { existsSync } from 'node:fs';
|
|
5
|
-
import { join } from 'node:path';
|
|
6
|
-
import { execFile } from 'node:child_process';
|
|
7
|
-
import { promisify } from 'node:util';
|
|
8
|
-
import { findProjectVenv } from '../adapters/tools.js';
|
|
9
|
-
const execFileAsync = promisify(execFile);
|
|
10
|
-
/**
|
|
11
|
-
* Build the env for CI steps with the project's Python venv on PATH. Without this, `pytest`/`ruff`
|
|
12
|
-
* resolve to system Python — which lacks the project's test deps (e.g. pytest-xdist), so a repo
|
|
13
|
-
* pytest.ini with `addopts = -n auto` fails with "unrecognized arguments: -n" and the gate wrongly
|
|
14
|
-
* blocks the PR. Mirrors the bash tool's venv resolution: repo-local .venv → OPENSWARM_PYTHON_VENV.
|
|
15
|
-
*/
|
|
16
|
-
function venvEnv(projectPath) {
|
|
17
|
-
const venv = findProjectVenv(projectPath) || process.env.OPENSWARM_PYTHON_VENV || '';
|
|
18
|
-
if (!venv)
|
|
19
|
-
return process.env;
|
|
20
|
-
return { ...process.env, VIRTUAL_ENV: venv, PATH: `${join(venv, 'bin')}:${process.env.PATH ?? ''}` };
|
|
21
|
-
}
|
|
22
|
-
export function detectSteps(projectPath) {
|
|
23
|
-
const has = (f) => existsSync(join(projectPath, f));
|
|
24
|
-
const isPython = has('pyproject.toml') || has('setup.py') || has('requirements.txt');
|
|
25
|
-
const isNode = has('package.json');
|
|
26
|
-
if (isPython) {
|
|
27
|
-
return [
|
|
28
|
-
{ cmd: 'ruff', args: ['check', '.'], label: 'ruff' },
|
|
29
|
-
{ cmd: 'pytest', args: ['-q'], label: 'pytest' },
|
|
30
|
-
];
|
|
31
|
-
}
|
|
32
|
-
if (isNode) {
|
|
33
|
-
return [
|
|
34
|
-
{ cmd: 'npx', args: ['tsc', '--noEmit'], label: 'tsc' },
|
|
35
|
-
{ cmd: 'npm', args: ['test'], label: 'npm test' },
|
|
36
|
-
];
|
|
37
|
-
}
|
|
38
|
-
return [];
|
|
39
|
-
}
|
|
40
|
-
export const isMissingTool = (s) => /command not found|ENOENT|not found|No such file/i.test(s);
|
|
41
|
-
/**
|
|
42
|
-
* Check out `branch` in `projectPath` and run the detected CI steps. Missing tools (e.g. ruff not
|
|
43
|
-
* installed) are skipped, not failed — only a tool that runs and exits non-zero counts as a CI
|
|
44
|
-
* failure. Returns `ran: false` when the project language isn't recognized or checkout fails.
|
|
45
|
-
*/
|
|
46
|
-
export async function runLocalCI(projectPath, branch) {
|
|
47
|
-
try {
|
|
48
|
-
await execFileAsync('git', ['-C', projectPath, 'fetch', 'origin'], { timeout: 60_000 });
|
|
49
|
-
await execFileAsync('git', ['-C', projectPath, 'reset', '--hard', 'HEAD'], { timeout: 30_000 }).catch(() => { });
|
|
50
|
-
await execFileAsync('git', ['-C', projectPath, 'checkout', branch], { timeout: 60_000 });
|
|
51
|
-
await execFileAsync('git', ['-C', projectPath, 'pull', 'origin', branch], { timeout: 60_000 }).catch(() => { });
|
|
52
|
-
}
|
|
53
|
-
catch (e) {
|
|
54
|
-
return { success: false, ran: false, output: `checkout failed: ${e.message}` };
|
|
55
|
-
}
|
|
56
|
-
const steps = detectSteps(projectPath);
|
|
57
|
-
if (steps.length === 0) {
|
|
58
|
-
return { success: true, ran: false, output: 'no recognized project (python/node) — local CI skipped' };
|
|
59
|
-
}
|
|
60
|
-
let success = true;
|
|
61
|
-
let ran = false;
|
|
62
|
-
let output = '';
|
|
63
|
-
const env = venvEnv(projectPath);
|
|
64
|
-
for (const s of steps) {
|
|
65
|
-
try {
|
|
66
|
-
const r = await execFileAsync(s.cmd, s.args, { cwd: projectPath, timeout: 300_000, maxBuffer: 10 * 1024 * 1024, env });
|
|
67
|
-
ran = true;
|
|
68
|
-
output += `✓ ${s.label}\n${(r.stdout || '').slice(-600)}\n`;
|
|
69
|
-
}
|
|
70
|
-
catch (e) {
|
|
71
|
-
const err = e;
|
|
72
|
-
const blob = `${err.stdout ?? ''}${err.stderr ?? ''}${err.message ?? ''}`;
|
|
73
|
-
if (isMissingTool(blob)) {
|
|
74
|
-
output += `⊘ ${s.label}: tool not installed — skipped\n`;
|
|
75
|
-
continue; // a missing tool is not a test failure
|
|
76
|
-
}
|
|
77
|
-
ran = true;
|
|
78
|
-
success = false;
|
|
79
|
-
output += `✗ ${s.label}\n${blob.slice(-1000)}\n`;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return { success, ran, output };
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=localCI.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"localCI.js","sourceRoot":"","sources":["../../src/automation/localCI.ts"],"names":[],"mappings":"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"}
|
package/dist/support/chat.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/support/chat.ts"],"names":[],"mappings":""}
|