agents-reverse-engineer 0.4.1 → 0.4.3
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 +14 -14
- package/dist/change-detection/detector.d.ts +10 -0
- package/dist/change-detection/detector.d.ts.map +1 -1
- package/dist/change-detection/detector.js +12 -0
- package/dist/change-detection/detector.js.map +1 -1
- package/dist/change-detection/index.d.ts +1 -1
- package/dist/change-detection/index.d.ts.map +1 -1
- package/dist/change-detection/index.js +1 -1
- package/dist/change-detection/index.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +0 -3
- package/dist/cli/init.js.map +1 -1
- package/dist/discovery/filters/index.d.ts +3 -2
- package/dist/discovery/filters/index.d.ts.map +1 -1
- package/dist/discovery/filters/index.js +43 -17
- package/dist/discovery/filters/index.js.map +1 -1
- package/dist/generation/budget/chunker.d.ts +5 -2
- package/dist/generation/budget/chunker.d.ts.map +1 -1
- package/dist/generation/budget/chunker.js +28 -13
- package/dist/generation/budget/chunker.js.map +1 -1
- package/dist/generation/orchestrator.d.ts +4 -0
- package/dist/generation/orchestrator.d.ts.map +1 -1
- package/dist/generation/orchestrator.js +20 -2
- package/dist/generation/orchestrator.js.map +1 -1
- package/dist/generation/prompts/builder.d.ts.map +1 -1
- package/dist/generation/prompts/builder.js +22 -21
- package/dist/generation/prompts/builder.js.map +1 -1
- package/dist/installer/banner.js +5 -5
- package/dist/installer/operations.d.ts.map +1 -1
- package/dist/installer/operations.js +47 -36
- package/dist/installer/operations.js.map +1 -1
- package/dist/installer/uninstall.d.ts.map +1 -1
- package/dist/installer/uninstall.js +55 -9
- package/dist/installer/uninstall.js.map +1 -1
- package/dist/integration/templates.d.ts.map +1 -1
- package/dist/integration/templates.js +5 -11
- package/dist/integration/templates.js.map +1 -1
- package/dist/orchestration/index.d.ts +1 -0
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/orchestration/index.js +4 -0
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/plan-tracker.d.ts +34 -0
- package/dist/orchestration/plan-tracker.d.ts.map +1 -0
- package/dist/orchestration/plan-tracker.js +59 -0
- package/dist/orchestration/plan-tracker.js.map +1 -0
- package/dist/orchestration/runner.d.ts +1 -1
- package/dist/orchestration/runner.d.ts.map +1 -1
- package/dist/orchestration/runner.js +108 -45
- package/dist/orchestration/runner.js.map +1 -1
- package/hooks/dist/opencode-are-check-update.js +76 -0
- package/hooks/dist/opencode-are-session-end.js +50 -0
- package/package.json +1 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progress tracker that updates GENERATION-PLAN.md checkboxes during generation.
|
|
3
|
+
*
|
|
4
|
+
* Maintains the markdown content in memory for fast updates and serializes
|
|
5
|
+
* disk writes via a promise chain to handle concurrent Phase 1 completions.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { writeFile, mkdir } from 'node:fs/promises';
|
|
10
|
+
import * as path from 'node:path';
|
|
11
|
+
import { CONFIG_DIR } from '../config/loader.js';
|
|
12
|
+
/**
|
|
13
|
+
* Tracks generation progress by ticking checkboxes in GENERATION-PLAN.md.
|
|
14
|
+
*
|
|
15
|
+
* Create one instance at the start of `executeGenerate()`, call `markDone()`
|
|
16
|
+
* as tasks complete, and `flush()` before returning.
|
|
17
|
+
*/
|
|
18
|
+
export class PlanTracker {
|
|
19
|
+
content;
|
|
20
|
+
planPath;
|
|
21
|
+
writeQueue = Promise.resolve();
|
|
22
|
+
constructor(projectRoot, initialMarkdown) {
|
|
23
|
+
this.planPath = path.join(projectRoot, CONFIG_DIR, 'GENERATION-PLAN.md');
|
|
24
|
+
this.content = initialMarkdown;
|
|
25
|
+
}
|
|
26
|
+
/** Write the initial plan file to disk. */
|
|
27
|
+
async initialize() {
|
|
28
|
+
try {
|
|
29
|
+
await mkdir(path.dirname(this.planPath), { recursive: true });
|
|
30
|
+
await writeFile(this.planPath, this.content, 'utf8');
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// Non-critical — generation continues without tracking
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Mark a task as done by replacing its checkbox.
|
|
38
|
+
*
|
|
39
|
+
* The caller must pass the exact path as it appears in the markdown:
|
|
40
|
+
* - File: `src/cli/init.ts`
|
|
41
|
+
* - Directory: `src/cli/AGENTS.md` (caller appends `/AGENTS.md`)
|
|
42
|
+
* - Root doc: `CLAUDE.md`
|
|
43
|
+
*/
|
|
44
|
+
markDone(itemPath) {
|
|
45
|
+
const before = this.content;
|
|
46
|
+
this.content = this.content.replace(`- [ ] \`${itemPath}\``, `- [x] \`${itemPath}\``);
|
|
47
|
+
if (this.content === before)
|
|
48
|
+
return; // no match — skip write
|
|
49
|
+
// Queue a serialized write so concurrent markDone() calls don't corrupt the file
|
|
50
|
+
this.writeQueue = this.writeQueue
|
|
51
|
+
.then(() => writeFile(this.planPath, this.content, 'utf8'))
|
|
52
|
+
.catch(() => { });
|
|
53
|
+
}
|
|
54
|
+
/** Wait for all queued writes to finish. */
|
|
55
|
+
async flush() {
|
|
56
|
+
await this.writeQueue;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=plan-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-tracker.js","sourceRoot":"","sources":["../../src/orchestration/plan-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACd,OAAO,CAAS;IACP,QAAQ,CAAS;IAC1B,UAAU,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAEtD,YAAY,WAAmB,EAAE,eAAuB;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC;IACjC,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAgB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CACjC,WAAW,QAAQ,IAAI,EACvB,WAAW,QAAQ,IAAI,CACxB,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM;YAAE,OAAO,CAAC,wBAAwB;QAE7D,iFAAiF;QACjF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;aAC9B,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aAC1D,KAAK,CAAC,GAAG,EAAE,GAAoB,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* The three execution phases match the {@link ExecutionPlan} dependency graph:
|
|
8
8
|
* 1. **File analysis** -- concurrent AI calls with configurable parallelism
|
|
9
|
-
* 2. **Directory docs** --
|
|
9
|
+
* 2. **Directory docs** -- concurrent per depth level, post-order AGENTS.md generation
|
|
10
10
|
* 3. **Root documents** -- sequential AI calls for CLAUDE.md, ARCHITECTURE.md, etc.
|
|
11
11
|
*
|
|
12
12
|
* @module
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/orchestration/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,2BAA2B,CAAC;AAK9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/orchestration/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,2BAA2B,CAAC;AAK9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAYlD,OAAO,KAAK,EAEV,UAAU,EACV,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,aAAa;IACxB,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAE5C;;;;;OAKG;gBACS,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB;IAK5D;;;;;;;;;;OAUG;IACG,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IAoU/D;;;;;;;;;;;OAWG;IACG,aAAa,CACjB,cAAc,EAAE,UAAU,EAAE,EAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC;CAiOvB"}
|
|
@@ -6,20 +6,22 @@
|
|
|
6
6
|
*
|
|
7
7
|
* The three execution phases match the {@link ExecutionPlan} dependency graph:
|
|
8
8
|
* 1. **File analysis** -- concurrent AI calls with configurable parallelism
|
|
9
|
-
* 2. **Directory docs** --
|
|
9
|
+
* 2. **Directory docs** -- concurrent per depth level, post-order AGENTS.md generation
|
|
10
10
|
* 3. **Root documents** -- sequential AI calls for CLAUDE.md, ARCHITECTURE.md, etc.
|
|
11
11
|
*
|
|
12
12
|
* @module
|
|
13
13
|
*/
|
|
14
14
|
import * as path from 'node:path';
|
|
15
|
-
import { readFile, writeFile
|
|
15
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
16
16
|
import { writeSumFile, readSumFile } from '../generation/writers/sum.js';
|
|
17
17
|
import { writeAgentsMd } from '../generation/writers/agents-md.js';
|
|
18
|
-
import {
|
|
18
|
+
import { computeContentHashFromString } from '../change-detection/index.js';
|
|
19
19
|
import { detectFileType } from '../generation/detection/detector.js';
|
|
20
20
|
import { buildPrompt, buildDirectoryPrompt } from '../generation/prompts/index.js';
|
|
21
21
|
import { checkCodeVsDoc, checkCodeVsCode, buildInconsistencyReport, formatReportForCli, } from '../quality/index.js';
|
|
22
|
+
import { formatExecutionPlanAsMarkdown } from '../generation/executor.js';
|
|
22
23
|
import { runPool } from './pool.js';
|
|
24
|
+
import { PlanTracker } from './plan-tracker.js';
|
|
23
25
|
import { ProgressReporter } from './progress.js';
|
|
24
26
|
// ---------------------------------------------------------------------------
|
|
25
27
|
// CommandRunner
|
|
@@ -71,14 +73,18 @@ export class CommandRunner {
|
|
|
71
73
|
*/
|
|
72
74
|
async executeGenerate(plan) {
|
|
73
75
|
const reporter = new ProgressReporter(plan.fileTasks.length, this.options.quiet ?? false);
|
|
76
|
+
// Initialize plan tracker (writes GENERATION-PLAN.md with checkboxes)
|
|
77
|
+
const planTracker = new PlanTracker(plan.projectRoot, formatExecutionPlanAsMarkdown(plan));
|
|
78
|
+
await planTracker.initialize();
|
|
74
79
|
const runStart = Date.now();
|
|
75
80
|
let filesProcessed = 0;
|
|
76
81
|
let filesFailed = 0;
|
|
77
82
|
// -------------------------------------------------------------------
|
|
78
83
|
// Pre-Phase 1: Cache old .sum content for stale documentation detection
|
|
84
|
+
// Throttled to avoid opening too many file descriptors at once.
|
|
79
85
|
// -------------------------------------------------------------------
|
|
80
86
|
const oldSumCache = new Map();
|
|
81
|
-
|
|
87
|
+
const sumReadTasks = plan.fileTasks.map((task) => async () => {
|
|
82
88
|
try {
|
|
83
89
|
const existing = await readSumFile(`${task.absolutePath}.sum`);
|
|
84
90
|
if (existing) {
|
|
@@ -88,28 +94,31 @@ export class CommandRunner {
|
|
|
88
94
|
catch {
|
|
89
95
|
// No old .sum to compare -- skip
|
|
90
96
|
}
|
|
91
|
-
}
|
|
97
|
+
});
|
|
98
|
+
await runPool(sumReadTasks, { concurrency: 20 });
|
|
92
99
|
// -------------------------------------------------------------------
|
|
93
100
|
// Phase 1: File analysis (concurrent)
|
|
94
101
|
// -------------------------------------------------------------------
|
|
102
|
+
// Cache source content during Phase 1, reused for inconsistency detection
|
|
103
|
+
const sourceContentCache = new Map();
|
|
95
104
|
const fileTasks = plan.fileTasks.map((task, taskIndex) => async () => {
|
|
96
105
|
reporter.onFileStart(task.path);
|
|
97
106
|
const callStart = Date.now();
|
|
98
107
|
// Read the source file
|
|
99
108
|
const sourceContent = await readFile(task.absolutePath, 'utf-8');
|
|
109
|
+
sourceContentCache.set(task.path, sourceContent);
|
|
100
110
|
// Call AI with the task's prompts
|
|
101
111
|
const response = await this.aiService.call({
|
|
102
112
|
prompt: task.userPrompt,
|
|
103
113
|
systemPrompt: task.systemPrompt,
|
|
104
114
|
});
|
|
105
|
-
// Track file size for telemetry
|
|
106
|
-
const fileStat = await stat(task.absolutePath);
|
|
115
|
+
// Track file size for telemetry (from in-memory content, avoids stat syscall)
|
|
107
116
|
this.aiService.addFilesReadToLastEntry([{
|
|
108
117
|
path: task.path,
|
|
109
|
-
sizeBytes:
|
|
118
|
+
sizeBytes: Buffer.byteLength(sourceContent, 'utf-8'),
|
|
110
119
|
}]);
|
|
111
|
-
// Compute content hash
|
|
112
|
-
const contentHash =
|
|
120
|
+
// Compute content hash from already-loaded content (avoids second readFile)
|
|
121
|
+
const contentHash = computeContentHashFromString(sourceContent);
|
|
113
122
|
// Build .sum file content
|
|
114
123
|
const sumContent = {
|
|
115
124
|
summary: response.text,
|
|
@@ -143,6 +152,7 @@ export class CommandRunner {
|
|
|
143
152
|
const v = result.value;
|
|
144
153
|
filesProcessed++;
|
|
145
154
|
reporter.onFileDone(v.path, v.durationMs, v.tokensIn, v.tokensOut, v.model);
|
|
155
|
+
planTracker.markDone(v.path);
|
|
146
156
|
}
|
|
147
157
|
else {
|
|
148
158
|
filesFailed++;
|
|
@@ -179,17 +189,24 @@ export class CommandRunner {
|
|
|
179
189
|
dirGroups.set(dir, [filePath]);
|
|
180
190
|
}
|
|
181
191
|
}
|
|
182
|
-
// Run checks per directory group
|
|
183
|
-
|
|
192
|
+
// Run checks per directory group (throttled to avoid excessive parallel I/O)
|
|
193
|
+
const dirEntries = Array.from(dirGroups.entries());
|
|
194
|
+
const dirCheckResults = [];
|
|
195
|
+
const dirCheckTasks = dirEntries.map(([, groupPaths], groupIndex) => async () => {
|
|
196
|
+
const dirIssues = [];
|
|
184
197
|
const filesForCodeVsCode = [];
|
|
198
|
+
// Process files within this group sequentially to limit I/O
|
|
185
199
|
for (const filePath of groupPaths) {
|
|
186
200
|
const absoluteFilePath = `${plan.projectRoot}/${filePath}`;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
201
|
+
// Use cached content from Phase 1 (avoids re-read)
|
|
202
|
+
let sourceContent = sourceContentCache.get(filePath);
|
|
203
|
+
if (!sourceContent) {
|
|
204
|
+
try {
|
|
205
|
+
sourceContent = await readFile(absoluteFilePath, 'utf-8');
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
continue; // File unreadable, skip
|
|
209
|
+
}
|
|
193
210
|
}
|
|
194
211
|
filesForCodeVsCode.push({ path: filePath, content: sourceContent });
|
|
195
212
|
// Old-doc check: detects stale documentation
|
|
@@ -198,7 +215,7 @@ export class CommandRunner {
|
|
|
198
215
|
const oldIssue = checkCodeVsDoc(sourceContent, oldSum, filePath);
|
|
199
216
|
if (oldIssue) {
|
|
200
217
|
oldIssue.description += ' (stale documentation)';
|
|
201
|
-
|
|
218
|
+
dirIssues.push(oldIssue);
|
|
202
219
|
}
|
|
203
220
|
}
|
|
204
221
|
// New-doc check: detects LLM omissions in freshly generated .sum
|
|
@@ -207,7 +224,7 @@ export class CommandRunner {
|
|
|
207
224
|
if (newSum) {
|
|
208
225
|
const newIssue = checkCodeVsDoc(sourceContent, newSum, filePath);
|
|
209
226
|
if (newIssue) {
|
|
210
|
-
|
|
227
|
+
dirIssues.push(newIssue);
|
|
211
228
|
}
|
|
212
229
|
}
|
|
213
230
|
}
|
|
@@ -217,8 +234,14 @@ export class CommandRunner {
|
|
|
217
234
|
}
|
|
218
235
|
// Code-vs-code check scoped to this directory group
|
|
219
236
|
const codeIssues = checkCodeVsCode(filesForCodeVsCode);
|
|
220
|
-
|
|
221
|
-
|
|
237
|
+
dirIssues.push(...codeIssues);
|
|
238
|
+
dirCheckResults[groupIndex] = dirIssues;
|
|
239
|
+
});
|
|
240
|
+
await runPool(dirCheckTasks, { concurrency: 10 });
|
|
241
|
+
const allIssuesFlat = dirCheckResults.filter(Boolean).flat();
|
|
242
|
+
allIssues.push(...allIssuesFlat);
|
|
243
|
+
// Release cached source content to free memory
|
|
244
|
+
sourceContentCache.clear();
|
|
222
245
|
if (allIssues.length > 0) {
|
|
223
246
|
const report = buildInconsistencyReport(allIssues, {
|
|
224
247
|
projectRoot: plan.projectRoot,
|
|
@@ -236,16 +259,39 @@ export class CommandRunner {
|
|
|
236
259
|
console.error(`[quality] Inconsistency detection failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
237
260
|
}
|
|
238
261
|
// -------------------------------------------------------------------
|
|
239
|
-
// Phase 2: Directory docs (
|
|
262
|
+
// Phase 2: Directory docs (concurrent per depth level, post-order)
|
|
240
263
|
// -------------------------------------------------------------------
|
|
264
|
+
// Group directory tasks by depth so same-depth dirs run in parallel
|
|
265
|
+
// while maintaining post-order (children before parents)
|
|
266
|
+
const dirsByDepth = new Map();
|
|
241
267
|
for (const dirTask of plan.directoryTasks) {
|
|
242
|
-
const
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
268
|
+
const depth = dirTask.metadata.depth ?? 0;
|
|
269
|
+
const group = dirsByDepth.get(depth);
|
|
270
|
+
if (group) {
|
|
271
|
+
group.push(dirTask);
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
dirsByDepth.set(depth, [dirTask]);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
// Process depth levels in descending order (deepest first = post-order)
|
|
278
|
+
const depthLevels = Array.from(dirsByDepth.keys()).sort((a, b) => b - a);
|
|
279
|
+
for (const depth of depthLevels) {
|
|
280
|
+
const dirsAtDepth = dirsByDepth.get(depth);
|
|
281
|
+
const dirTasks = dirsAtDepth.map((dirTask) => async () => {
|
|
282
|
+
const prompt = await buildDirectoryPrompt(dirTask.absolutePath, plan.projectRoot);
|
|
283
|
+
const dirResponse = await this.aiService.call({
|
|
284
|
+
prompt: prompt.user,
|
|
285
|
+
systemPrompt: prompt.system,
|
|
286
|
+
});
|
|
287
|
+
await writeAgentsMd(dirTask.absolutePath, plan.projectRoot, dirResponse.text);
|
|
288
|
+
reporter.onDirectoryDone(dirTask.path);
|
|
289
|
+
planTracker.markDone(`${dirTask.path}/AGENTS.md`);
|
|
290
|
+
});
|
|
291
|
+
await runPool(dirTasks, {
|
|
292
|
+
concurrency: Math.min(this.options.concurrency, dirsAtDepth.length),
|
|
293
|
+
failFast: this.options.failFast,
|
|
246
294
|
});
|
|
247
|
-
await writeAgentsMd(dirTask.absolutePath, plan.projectRoot, dirResponse.text);
|
|
248
|
-
reporter.onDirectoryDone(dirTask.path);
|
|
249
295
|
}
|
|
250
296
|
// -------------------------------------------------------------------
|
|
251
297
|
// Phase 3: Root documents (sequential)
|
|
@@ -257,7 +303,10 @@ export class CommandRunner {
|
|
|
257
303
|
});
|
|
258
304
|
await writeFile(rootTask.outputPath, response.text, 'utf-8');
|
|
259
305
|
reporter.onRootDone(rootTask.path);
|
|
306
|
+
planTracker.markDone(rootTask.path);
|
|
260
307
|
}
|
|
308
|
+
// Ensure all plan tracker writes are flushed
|
|
309
|
+
await planTracker.flush();
|
|
261
310
|
// -------------------------------------------------------------------
|
|
262
311
|
// Build and print summary
|
|
263
312
|
// -------------------------------------------------------------------
|
|
@@ -301,12 +350,15 @@ export class CommandRunner {
|
|
|
301
350
|
const runStart = Date.now();
|
|
302
351
|
let filesProcessed = 0;
|
|
303
352
|
let filesFailed = 0;
|
|
353
|
+
// Cache source content during update, reused for inconsistency detection
|
|
354
|
+
const updateSourceCache = new Map();
|
|
304
355
|
const updateTasks = filesToAnalyze.map((file, fileIndex) => async () => {
|
|
305
356
|
reporter.onFileStart(file.path);
|
|
306
357
|
const callStart = Date.now();
|
|
307
358
|
const absolutePath = `${projectRoot}/${file.path}`;
|
|
308
359
|
// Read the source file
|
|
309
360
|
const sourceContent = await readFile(absolutePath, 'utf-8');
|
|
361
|
+
updateSourceCache.set(file.path, sourceContent);
|
|
310
362
|
// Detect file type and build prompt
|
|
311
363
|
const fileType = detectFileType(file.path, sourceContent);
|
|
312
364
|
const prompt = buildPrompt({
|
|
@@ -319,14 +371,13 @@ export class CommandRunner {
|
|
|
319
371
|
prompt: prompt.user,
|
|
320
372
|
systemPrompt: prompt.system,
|
|
321
373
|
});
|
|
322
|
-
// Track file size for telemetry
|
|
323
|
-
const fileStat = await stat(absolutePath);
|
|
374
|
+
// Track file size for telemetry (from in-memory content, avoids stat syscall)
|
|
324
375
|
this.aiService.addFilesReadToLastEntry([{
|
|
325
376
|
path: file.path,
|
|
326
|
-
sizeBytes:
|
|
377
|
+
sizeBytes: Buffer.byteLength(sourceContent, 'utf-8'),
|
|
327
378
|
}]);
|
|
328
|
-
// Compute content hash
|
|
329
|
-
const contentHash =
|
|
379
|
+
// Compute content hash from already-loaded content (avoids second readFile)
|
|
380
|
+
const contentHash = computeContentHashFromString(sourceContent);
|
|
330
381
|
// Build .sum file content
|
|
331
382
|
const sumContent = {
|
|
332
383
|
summary: response.text,
|
|
@@ -396,17 +447,23 @@ export class CommandRunner {
|
|
|
396
447
|
dirGroups.set(dir, [filePath]);
|
|
397
448
|
}
|
|
398
449
|
}
|
|
399
|
-
// Run checks per directory group
|
|
400
|
-
|
|
450
|
+
// Run checks per directory group (throttled to avoid excessive parallel I/O)
|
|
451
|
+
const updateDirEntries = Array.from(dirGroups.entries());
|
|
452
|
+
const updateDirResults = [];
|
|
453
|
+
const updateDirCheckTasks = updateDirEntries.map(([, groupPaths], groupIndex) => async () => {
|
|
454
|
+
const dirIssues = [];
|
|
401
455
|
const filesForCodeVsCode = [];
|
|
402
456
|
for (const filePath of groupPaths) {
|
|
403
457
|
const absoluteFilePath = `${projectRoot}/${filePath}`;
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
458
|
+
// Use cached content from update phase (avoids re-read)
|
|
459
|
+
let sourceContent = updateSourceCache.get(filePath);
|
|
460
|
+
if (!sourceContent) {
|
|
461
|
+
try {
|
|
462
|
+
sourceContent = await readFile(absoluteFilePath, 'utf-8');
|
|
463
|
+
}
|
|
464
|
+
catch {
|
|
465
|
+
continue;
|
|
466
|
+
}
|
|
410
467
|
}
|
|
411
468
|
filesForCodeVsCode.push({ path: filePath, content: sourceContent });
|
|
412
469
|
// New-doc check: detects LLM omissions in freshly generated .sum
|
|
@@ -415,7 +472,7 @@ export class CommandRunner {
|
|
|
415
472
|
if (newSum) {
|
|
416
473
|
const newIssue = checkCodeVsDoc(sourceContent, newSum, filePath);
|
|
417
474
|
if (newIssue) {
|
|
418
|
-
|
|
475
|
+
dirIssues.push(newIssue);
|
|
419
476
|
}
|
|
420
477
|
}
|
|
421
478
|
}
|
|
@@ -425,8 +482,14 @@ export class CommandRunner {
|
|
|
425
482
|
}
|
|
426
483
|
// Code-vs-code check scoped to this directory group
|
|
427
484
|
const codeIssues = checkCodeVsCode(filesForCodeVsCode);
|
|
428
|
-
|
|
429
|
-
|
|
485
|
+
dirIssues.push(...codeIssues);
|
|
486
|
+
updateDirResults[groupIndex] = dirIssues;
|
|
487
|
+
});
|
|
488
|
+
await runPool(updateDirCheckTasks, { concurrency: 10 });
|
|
489
|
+
const allIssuesFlat = updateDirResults.filter(Boolean).flat();
|
|
490
|
+
allIssues.push(...allIssuesFlat);
|
|
491
|
+
// Release cached source content to free memory
|
|
492
|
+
updateSourceCache.clear();
|
|
430
493
|
if (allIssues.length > 0) {
|
|
431
494
|
const report = buildInconsistencyReport(allIssues, {
|
|
432
495
|
projectRoot,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/orchestration/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/orchestration/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAE5E,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEnF,OAAO,EACL,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAOjD,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,aAAa;IACxB,2CAA2C;IAC1B,SAAS,CAAY;IAEtC,gCAAgC;IACf,OAAO,CAAoB;IAE5C;;;;;OAKG;IACH,YAAY,SAAoB,EAAE,OAA0B;QAC1D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,eAAe,CAAC,IAAmB;QACvC,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,CAAC,SAAS,CAAC,MAAM,EACrB,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAC5B,CAAC;QAEF,sEAAsE;QACtE,MAAM,WAAW,GAAG,IAAI,WAAW,CACjC,IAAI,CAAC,WAAW,EAChB,6BAA6B,CAAC,IAAI,CAAC,CACpC,CAAC;QACF,MAAM,WAAW,CAAC,UAAU,EAAE,CAAC;QAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,sEAAsE;QACtE,wEAAwE;QACxE,gEAAgE;QAChE,sEAAsE;QAEtE,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0B,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACrC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE;YACnB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,GAAG,IAAI,CAAC,YAAY,MAAM,CAAC,CAAC;gBAC/D,IAAI,QAAQ,EAAE,CAAC;oBACb,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,iCAAiC;YACnC,CAAC;QACH,CAAC,CACF,CAAC;QACF,MAAM,OAAO,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QAEjD,sEAAsE;QACtE,sCAAsC;QACtC,sEAAsE;QAEtE,0EAA0E;QAC1E,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAErD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAClC,CAAC,IAAmB,EAAE,SAAiB,EAAE,EAAE,CAAC,KAAK,IAA6B,EAAE;YAC9E,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE7B,uBAAuB;YACvB,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACjE,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAEjD,kCAAkC;YAClC,MAAM,QAAQ,GAAe,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBACrD,MAAM,EAAE,IAAI,CAAC,UAAU;gBACvB,YAAY,EAAE,IAAI,CAAC,YAAY;aAChC,CAAC,CAAC;YAEH,8EAA8E;YAC9E,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;oBACtC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC;iBACrD,CAAC,CAAC,CAAC;YAEJ,4EAA4E;YAC5E,MAAM,WAAW,GAAG,4BAA4B,CAAC,aAAa,CAAC,CAAC;YAEhE,0BAA0B;YAC1B,MAAM,UAAU,GAAmB;gBACjC,OAAO,EAAE,QAAQ,CAAC,IAAI;gBACtB,QAAQ,EAAE;oBACR,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACtC,eAAe,EAAE,EAAE;oBACnB,YAAY,EAAE,EAAE;oBAChB,QAAQ,EAAE,EAAE;iBACb;gBACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,SAAS;gBAC7C,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,WAAW;aACZ,CAAC;YAEF,kBAAkB;YAClB,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAElD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,QAAQ,CAAC,WAAW;gBAC9B,SAAS,EAAE,QAAQ,CAAC,YAAY;gBAChC,UAAU;gBACV,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,OAAO,CAC/B,SAAS,EACT;YACE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YACrC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;SAChC,EACD,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACnC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBACvB,cAAc,EAAE,CAAC;gBACjB,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC5E,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,WAAW,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,CAAC;gBAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC9E,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CACF,CAAC;QAEF,sEAAsE;QACtE,uDAAuD;QACvD,sEAAsE;QAEtE,IAAI,wBAAwB,GAAG,CAAC,CAAC;QACjC,IAAI,yBAAyB,GAAG,CAAC,CAAC;QAClC,IAAI,mBAAkF,CAAC;QAEvF,IAAI,CAAC;YACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtC,MAAM,SAAS,GAAoB,EAAE,CAAC;YAEtC,8DAA8D;YAC9D,MAAM,cAAc,GAAa,EAAE,CAAC;YACpC,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACnC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,2BAA2B;YAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;YAC9C,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;gBACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YAED,6EAA6E;YAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,MAAM,eAAe,GAAsB,EAAE,CAAC;YAC9C,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAClC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE;gBACzC,MAAM,SAAS,GAAoB,EAAE,CAAC;gBACtC,MAAM,kBAAkB,GAA6C,EAAE,CAAC;gBAExE,4DAA4D;gBAC5D,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;oBAClC,MAAM,gBAAgB,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,QAAQ,EAAE,CAAC;oBAE3D,mDAAmD;oBACnD,IAAI,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACrD,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,IAAI,CAAC;4BACH,aAAa,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;wBAC5D,CAAC;wBAAC,MAAM,CAAC;4BACP,SAAS,CAAC,wBAAwB;wBACpC,CAAC;oBACH,CAAC;oBAED,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;oBAEpE,6CAA6C;oBAC7C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACzC,IAAI,MAAM,EAAE,CAAC;wBACX,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;wBACjE,IAAI,QAAQ,EAAE,CAAC;4BACb,QAAQ,CAAC,WAAW,IAAI,wBAAwB,CAAC;4BACjD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC3B,CAAC;oBACH,CAAC;oBAED,iEAAiE;oBACjE,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,gBAAgB,MAAM,CAAC,CAAC;wBAC5D,IAAI,MAAM,EAAE,CAAC;4BACX,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;4BACjE,IAAI,QAAQ,EAAE,CAAC;gCACb,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;4BAC3B,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,0CAA0C;oBAC5C,CAAC;gBACH,CAAC;gBAED,oDAAoD;gBACpD,MAAM,UAAU,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;gBACvD,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;gBAE9B,eAAe,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;YAC1C,CAAC,CACF,CAAC;YACF,MAAM,OAAO,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YAElD,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7D,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YAEjC,+CAA+C;YAC/C,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAE3B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,EAAE;oBACjD,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,YAAY,EAAE,cAAc,CAAC,MAAM;oBACnC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB;iBAC5C,CAAC,CAAC;gBAEH,wBAAwB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;gBACpD,yBAAyB,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;gBACtD,mBAAmB,GAAG,MAAM,CAAC;gBAE7B,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sDAAsD;YACtD,OAAO,CAAC,KAAK,CAAC,6CAA6C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjH,CAAC;QAED,sEAAsE;QACtE,mEAAmE;QACnE,sEAAsE;QAEtE,oEAAoE;QACpE,yDAAyD;QACzD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAsC,CAAC;QAClE,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAI,OAAO,CAAC,QAAQ,CAAC,KAAgB,IAAI,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEzE,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;YAE5C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAC9B,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE;gBACtB,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBAClF,MAAM,WAAW,GAAe,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBACxD,MAAM,EAAE,MAAM,CAAC,IAAI;oBACnB,YAAY,EAAE,MAAM,CAAC,MAAM;iBAC5B,CAAC,CAAC;gBACH,MAAM,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC9E,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvC,WAAW,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,YAAY,CAAC,CAAC;YACpD,CAAC,CACF,CAAC;YAEF,MAAM,OAAO,CAAC,QAAQ,EAAE;gBACtB,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC;gBACnE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;aAChC,CAAC,CAAC;QACL,CAAC;QAED,sEAAsE;QACtE,uCAAuC;QACvC,sEAAsE;QAEtE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBACzC,MAAM,EAAE,QAAQ,CAAC,UAAU;gBAC3B,YAAY,EAAE,QAAQ,CAAC,YAAY;aACpC,CAAC,CAAC;YAEH,MAAM,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7D,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,6CAA6C;QAC7C,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;QAE1B,sEAAsE;QACtE,0BAA0B;QAC1B,sEAAsE;QAEtE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;QAE9C,MAAM,OAAO,GAAe;YAC1B,cAAc;YACd,WAAW;YACX,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;YAC5C,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;YAC9C,eAAe;YACf,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,eAAe,EAAE,SAAS,CAAC,eAAe;YAC1C,wBAAwB;YACxB,yBAAyB;YACzB,mBAAmB;SACpB,CAAC;QAEF,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAE9D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,aAAa,CACjB,cAA4B,EAC5B,WAAmB,EACnB,MAAc;QAEd,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,cAAc,CAAC,MAAM,EACrB,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAC5B,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,yEAAyE;QACzE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEpD,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CACpC,CAAC,IAAgB,EAAE,SAAiB,EAAE,EAAE,CAAC,KAAK,IAA6B,EAAE;YAC3E,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,GAAG,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAEnD,uBAAuB;YACvB,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC5D,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAEhD,oCAAoC;YACpC,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,WAAW,CAAC;gBACzB,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,OAAO,EAAE,aAAa;gBACtB,QAAQ;aACT,CAAC,CAAC;YAEH,UAAU;YACV,MAAM,QAAQ,GAAe,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBACrD,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,YAAY,EAAE,MAAM,CAAC,MAAM;aAC5B,CAAC,CAAC;YAEH,8EAA8E;YAC9E,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;oBACtC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC;iBACrD,CAAC,CAAC,CAAC;YAEJ,4EAA4E;YAC5E,MAAM,WAAW,GAAG,4BAA4B,CAAC,aAAa,CAAC,CAAC;YAEhE,0BAA0B;YAC1B,MAAM,UAAU,GAAmB;gBACjC,OAAO,EAAE,QAAQ,CAAC,IAAI;gBACtB,QAAQ,EAAE;oBACR,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACtC,eAAe,EAAE,EAAE;oBACnB,YAAY,EAAE,EAAE;oBAChB,QAAQ,EAAE,EAAE;iBACb;gBACD,QAAQ;gBACR,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,WAAW;aACZ,CAAC;YAEF,kBAAkB;YAClB,MAAM,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,QAAQ,CAAC,WAAW;gBAC9B,SAAS,EAAE,QAAQ,CAAC,YAAY;gBAChC,UAAU;gBACV,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,OAAO,CAC/B,WAAW,EACX;YACE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YACrC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;SAChC,EACD,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACnC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBACvB,cAAc,EAAE,CAAC;gBACjB,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YAC9E,CAAC;iBAAM,CAAC;gBACN,WAAW,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,CAAC;gBAC1D,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC9E,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CACF,CAAC;QAEF,sEAAsE;QACtE,wDAAwD;QACxD,sEAAsE;QAEtE,IAAI,8BAA8B,GAAG,CAAC,CAAC;QACvC,IAAI,+BAA+B,GAAG,CAAC,CAAC;QACxC,IAAI,yBAAwF,CAAC;QAE7F,IAAI,CAAC;YACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtC,MAAM,SAAS,GAAoB,EAAE,CAAC;YAEtC,4CAA4C;YAC5C,MAAM,cAAc,GAAa,EAAE,CAAC;YACpC,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACnC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,2BAA2B;YAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;YAC9C,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;gBACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YAED,6EAA6E;YAC7E,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,MAAM,gBAAgB,GAAsB,EAAE,CAAC;YAC/C,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,GAAG,CAC9C,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE;gBACzC,MAAM,SAAS,GAAoB,EAAE,CAAC;gBACtC,MAAM,kBAAkB,GAA6C,EAAE,CAAC;gBAExE,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;oBAClC,MAAM,gBAAgB,GAAG,GAAG,WAAW,IAAI,QAAQ,EAAE,CAAC;oBAEtD,wDAAwD;oBACxD,IAAI,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACpD,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,IAAI,CAAC;4BACH,aAAa,GAAG,MAAM,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;wBAC5D,CAAC;wBAAC,MAAM,CAAC;4BACP,SAAS;wBACX,CAAC;oBACH,CAAC;oBAED,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;oBAEpE,iEAAiE;oBACjE,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,gBAAgB,MAAM,CAAC,CAAC;wBAC5D,IAAI,MAAM,EAAE,CAAC;4BACX,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;4BACjE,IAAI,QAAQ,EAAE,CAAC;gCACb,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;4BAC3B,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,0BAA0B;oBAC5B,CAAC;gBACH,CAAC;gBAED,oDAAoD;gBACpD,MAAM,UAAU,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;gBACvD,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;gBAE9B,gBAAgB,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;YAC3C,CAAC,CACF,CAAC;YACF,MAAM,OAAO,CAAC,mBAAmB,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YAExD,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9D,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YAEjC,+CAA+C;YAC/C,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAE1B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,EAAE;oBACjD,WAAW;oBACX,YAAY,EAAE,cAAc,CAAC,MAAM;oBACnC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB;iBAC5C,CAAC,CAAC;gBAEH,8BAA8B,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC1D,+BAA+B,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC5D,yBAAyB,GAAG,MAAM,CAAC;gBAEnC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,6CAA6C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjH,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;QAE9C,MAAM,OAAO,GAAe;YAC1B,cAAc;YACd,WAAW;YACX,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;YAC5C,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;YAC9C,eAAe;YACf,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,eAAe,EAAE,SAAS,CAAC,eAAe;YAC1C,wBAAwB,EAAE,8BAA8B;YACxD,yBAAyB,EAAE,+BAA+B;YAC1D,mBAAmB,EAAE,yBAAyB;SAC/C,CAAC;QAEF,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAE9D,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,SAAS,cAAc,CAAC,YAAoB;IAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,wCAAwC;QACxC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,wDAAwD;YACxD,OAAO,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QACxE,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* ARE Update Check Plugin for OpenCode
|
|
4
|
+
*
|
|
5
|
+
* Checks for ARE updates in background, writes result to cache.
|
|
6
|
+
* OpenCode equivalent of the Claude/Gemini SessionStart hook.
|
|
7
|
+
*
|
|
8
|
+
* Cache file: ~/.config/opencode/cache/are-update-check.json
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
12
|
+
import { homedir } from 'os';
|
|
13
|
+
import { join } from 'path';
|
|
14
|
+
import { spawn } from 'child_process';
|
|
15
|
+
|
|
16
|
+
export const AreCheckUpdate = async () => {
|
|
17
|
+
return {
|
|
18
|
+
event: {
|
|
19
|
+
'session.created': async () => {
|
|
20
|
+
const homeDir = homedir();
|
|
21
|
+
const cwd = process.cwd();
|
|
22
|
+
const cacheDir = join(homeDir, '.config', 'opencode', 'cache');
|
|
23
|
+
const cacheFile = join(cacheDir, 'are-update-check.json');
|
|
24
|
+
|
|
25
|
+
// ARE-VERSION file locations (check project first, then global)
|
|
26
|
+
const projectVersionFile = join(cwd, '.opencode', 'ARE-VERSION');
|
|
27
|
+
const globalVersionFile = join(homeDir, '.config', 'opencode', 'ARE-VERSION');
|
|
28
|
+
|
|
29
|
+
// Ensure cache directory exists
|
|
30
|
+
if (!existsSync(cacheDir)) {
|
|
31
|
+
mkdirSync(cacheDir, { recursive: true });
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Run check in background (spawn background process)
|
|
35
|
+
const child = spawn(process.execPath, ['-e', `
|
|
36
|
+
const fs = require('fs');
|
|
37
|
+
const { execSync } = require('child_process');
|
|
38
|
+
|
|
39
|
+
const cacheFile = ${JSON.stringify(cacheFile)};
|
|
40
|
+
const projectVersionFile = ${JSON.stringify(projectVersionFile)};
|
|
41
|
+
const globalVersionFile = ${JSON.stringify(globalVersionFile)};
|
|
42
|
+
|
|
43
|
+
// Check project directory first (local install), then global
|
|
44
|
+
let installed = '0.0.0';
|
|
45
|
+
try {
|
|
46
|
+
if (fs.existsSync(projectVersionFile)) {
|
|
47
|
+
installed = fs.readFileSync(projectVersionFile, 'utf8').trim();
|
|
48
|
+
} else if (fs.existsSync(globalVersionFile)) {
|
|
49
|
+
installed = fs.readFileSync(globalVersionFile, 'utf8').trim();
|
|
50
|
+
}
|
|
51
|
+
} catch (e) {}
|
|
52
|
+
|
|
53
|
+
let latest = null;
|
|
54
|
+
try {
|
|
55
|
+
latest = execSync('npm view agents-reverse-engineer version', { encoding: 'utf8', timeout: 10000, windowsHide: true }).trim();
|
|
56
|
+
} catch (e) {}
|
|
57
|
+
|
|
58
|
+
const result = {
|
|
59
|
+
update_available: latest && installed !== latest,
|
|
60
|
+
installed,
|
|
61
|
+
latest: latest || 'unknown',
|
|
62
|
+
checked: Math.floor(Date.now() / 1000)
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
fs.writeFileSync(cacheFile, JSON.stringify(result));
|
|
66
|
+
`], {
|
|
67
|
+
stdio: 'ignore',
|
|
68
|
+
detached: true,
|
|
69
|
+
windowsHide: true,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
child.unref();
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* ARE Session End Plugin for OpenCode
|
|
4
|
+
*
|
|
5
|
+
* Triggers `are update` when session ends (if there are uncommitted changes).
|
|
6
|
+
* OpenCode equivalent of the Claude/Gemini SessionEnd hook.
|
|
7
|
+
*
|
|
8
|
+
* Runs in background to avoid blocking session close.
|
|
9
|
+
*
|
|
10
|
+
* Disable via:
|
|
11
|
+
* - Environment variable: ARE_DISABLE_HOOK=1
|
|
12
|
+
* - Config file: hook_enabled: false in .agents-reverse-engineer.yaml
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { execSync, spawn } from 'child_process';
|
|
16
|
+
import { existsSync, readFileSync } from 'fs';
|
|
17
|
+
|
|
18
|
+
export const AreSessionEnd = async () => {
|
|
19
|
+
return {
|
|
20
|
+
event: {
|
|
21
|
+
'session.deleted': async () => {
|
|
22
|
+
// Check for disable flag
|
|
23
|
+
if (process.env.ARE_DISABLE_HOOK === '1') return;
|
|
24
|
+
|
|
25
|
+
// Check config file for permanent disable
|
|
26
|
+
const configPath = '.agents-reverse-engineer.yaml';
|
|
27
|
+
if (existsSync(configPath)) {
|
|
28
|
+
const config = readFileSync(configPath, 'utf-8');
|
|
29
|
+
if (config.includes('hook_enabled: false')) return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Check git status - skip if no changes
|
|
33
|
+
try {
|
|
34
|
+
const status = execSync('git status --porcelain', { encoding: 'utf-8' });
|
|
35
|
+
if (!status.trim()) return;
|
|
36
|
+
} catch {
|
|
37
|
+
// Not a git repo or git not available - exit silently
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Run update in background (don't block session close)
|
|
42
|
+
const child = spawn('npx', ['agents-reverse-engineer@latest', 'update', '--quiet'], {
|
|
43
|
+
stdio: 'ignore',
|
|
44
|
+
detached: true,
|
|
45
|
+
});
|
|
46
|
+
child.unref();
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
};
|