@cortexkit/aft-opencode 0.10.1 → 0.11.1
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/cache.d.ts +14 -0
- package/dist/cli/cache.d.ts.map +1 -0
- package/dist/cli/config-paths.d.ts +11 -0
- package/dist/cli/config-paths.d.ts.map +1 -0
- package/dist/cli/diagnostics.d.ts +49 -0
- package/dist/cli/diagnostics.d.ts.map +1 -0
- package/dist/cli/doctor.d.ts +5 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/logs.d.ts +7 -0
- package/dist/cli/logs.d.ts.map +1 -0
- package/dist/cli/opencode-helpers.d.ts +4 -0
- package/dist/cli/opencode-helpers.d.ts.map +1 -0
- package/dist/cli/prompts.d.ts +14 -0
- package/dist/cli/prompts.d.ts.map +1 -0
- package/dist/cli/setup.d.ts +2 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli.js +10129 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25395 -345
- package/dist/pool.d.ts +1 -1
- package/dist/pool.d.ts.map +1 -1
- package/dist/shared/tui-config.d.ts.map +1 -1
- package/dist/shared/url-fetch.d.ts +11 -0
- package/dist/shared/url-fetch.d.ts.map +1 -0
- package/dist/tools/reading.d.ts.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +13 -9
- package/src/shared/tui-config.ts +3 -100
- package/src/shared/url-fetch.ts +237 -0
- package/dist/bridge.js +0 -325
- package/dist/bridge.js.map +0 -1
- package/dist/config.js +0 -304
- package/dist/config.js.map +0 -1
- package/dist/downloader.js +0 -198
- package/dist/downloader.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logger.js +0 -78
- package/dist/logger.js.map +0 -1
- package/dist/lsp.js +0 -79
- package/dist/lsp.js.map +0 -1
- package/dist/metadata-store.js +0 -53
- package/dist/metadata-store.js.map +0 -1
- package/dist/normalize-schemas.js +0 -45
- package/dist/normalize-schemas.js.map +0 -1
- package/dist/notifications.js +0 -307
- package/dist/notifications.js.map +0 -1
- package/dist/onnx-runtime.js +0 -203
- package/dist/onnx-runtime.js.map +0 -1
- package/dist/patch-parser.js +0 -247
- package/dist/patch-parser.js.map +0 -1
- package/dist/platform.js +0 -31
- package/dist/platform.js.map +0 -1
- package/dist/pool.js +0 -130
- package/dist/pool.js.map +0 -1
- package/dist/resolver.js +0 -179
- package/dist/resolver.js.map +0 -1
- package/dist/shared/opencode-config-dir.js +0 -26
- package/dist/shared/opencode-config-dir.js.map +0 -1
- package/dist/shared/rpc-client.js +0 -108
- package/dist/shared/rpc-client.js.map +0 -1
- package/dist/shared/rpc-server.js +0 -120
- package/dist/shared/rpc-server.js.map +0 -1
- package/dist/shared/rpc-utils.js +0 -20
- package/dist/shared/rpc-utils.js.map +0 -1
- package/dist/shared/runtime.js +0 -14
- package/dist/shared/runtime.js.map +0 -1
- package/dist/shared/status.js +0 -135
- package/dist/shared/status.js.map +0 -1
- package/dist/shared/tui-config.js +0 -134
- package/dist/shared/tui-config.js.map +0 -1
- package/dist/tools/ast.js +0 -200
- package/dist/tools/ast.js.map +0 -1
- package/dist/tools/conflicts.js +0 -20
- package/dist/tools/conflicts.js.map +0 -1
- package/dist/tools/hoisted.js +0 -870
- package/dist/tools/hoisted.js.map +0 -1
- package/dist/tools/imports.js +0 -90
- package/dist/tools/imports.js.map +0 -1
- package/dist/tools/lsp.js +0 -58
- package/dist/tools/lsp.js.map +0 -1
- package/dist/tools/navigation.js +0 -58
- package/dist/tools/navigation.js.map +0 -1
- package/dist/tools/permissions.js +0 -50
- package/dist/tools/permissions.js.map +0 -1
- package/dist/tools/reading.js +0 -229
- package/dist/tools/reading.js.map +0 -1
- package/dist/tools/refactoring.js +0 -129
- package/dist/tools/refactoring.js.map +0 -1
- package/dist/tools/safety.js +0 -83
- package/dist/tools/safety.js.map +0 -1
- package/dist/tools/search.js +0 -108
- package/dist/tools/search.js.map +0 -1
- package/dist/tools/semantic.js +0 -35
- package/dist/tools/semantic.js.map +0 -1
- package/dist/tools/structure.js +0 -157
- package/dist/tools/structure.js.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
package/dist/patch-parser.js
DELETED
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal patch parser for the opencode `*** Begin Patch` format.
|
|
3
|
-
* Ported from opencode's internal Patch module.
|
|
4
|
-
*/
|
|
5
|
-
function stripHeredoc(input) {
|
|
6
|
-
const heredocMatch = input.match(/^(?:cat\s+)?<<['"]?(\w+)['"]?\s*\n([\s\S]*?)\n\1\s*$/);
|
|
7
|
-
return heredocMatch ? heredocMatch[2] : input;
|
|
8
|
-
}
|
|
9
|
-
function parsePatchHeader(lines, startIdx) {
|
|
10
|
-
const line = lines[startIdx];
|
|
11
|
-
if (line.startsWith("*** Add File:")) {
|
|
12
|
-
const filePath = line.slice("*** Add File:".length).trim();
|
|
13
|
-
return filePath ? { filePath, nextIdx: startIdx + 1 } : null;
|
|
14
|
-
}
|
|
15
|
-
if (line.startsWith("*** Delete File:")) {
|
|
16
|
-
const filePath = line.slice("*** Delete File:".length).trim();
|
|
17
|
-
return filePath ? { filePath, nextIdx: startIdx + 1 } : null;
|
|
18
|
-
}
|
|
19
|
-
if (line.startsWith("*** Update File:")) {
|
|
20
|
-
const filePath = line.slice("*** Update File:".length).trim();
|
|
21
|
-
let movePath;
|
|
22
|
-
let nextIdx = startIdx + 1;
|
|
23
|
-
if (nextIdx < lines.length && lines[nextIdx].startsWith("*** Move to:")) {
|
|
24
|
-
movePath = lines[nextIdx].slice("*** Move to:".length).trim();
|
|
25
|
-
nextIdx++;
|
|
26
|
-
}
|
|
27
|
-
return filePath ? { filePath, movePath, nextIdx } : null;
|
|
28
|
-
}
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
function parseAddFileContent(lines, startIdx) {
|
|
32
|
-
let content = "";
|
|
33
|
-
let i = startIdx;
|
|
34
|
-
while (i < lines.length && !lines[i].startsWith("***")) {
|
|
35
|
-
if (lines[i].startsWith("+")) {
|
|
36
|
-
content += `${lines[i].substring(1)}\n`;
|
|
37
|
-
}
|
|
38
|
-
i++;
|
|
39
|
-
}
|
|
40
|
-
if (content.endsWith("\n")) {
|
|
41
|
-
content = content.slice(0, -1);
|
|
42
|
-
}
|
|
43
|
-
return { content, nextIdx: i };
|
|
44
|
-
}
|
|
45
|
-
function parseUpdateFileChunks(lines, startIdx) {
|
|
46
|
-
const chunks = [];
|
|
47
|
-
let i = startIdx;
|
|
48
|
-
while (i < lines.length && !lines[i].startsWith("***")) {
|
|
49
|
-
if (lines[i].startsWith("@@")) {
|
|
50
|
-
const contextLine = lines[i].substring(2).trim();
|
|
51
|
-
i++;
|
|
52
|
-
const oldLines = [];
|
|
53
|
-
const newLines = [];
|
|
54
|
-
let isEndOfFile = false;
|
|
55
|
-
while (i < lines.length && !lines[i].startsWith("@@") && !lines[i].startsWith("***")) {
|
|
56
|
-
const changeLine = lines[i];
|
|
57
|
-
if (changeLine === "*** End of File") {
|
|
58
|
-
isEndOfFile = true;
|
|
59
|
-
i++;
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
if (changeLine.startsWith(" ")) {
|
|
63
|
-
const content = changeLine.substring(1);
|
|
64
|
-
oldLines.push(content);
|
|
65
|
-
newLines.push(content);
|
|
66
|
-
}
|
|
67
|
-
else if (changeLine.startsWith("-")) {
|
|
68
|
-
oldLines.push(changeLine.substring(1));
|
|
69
|
-
}
|
|
70
|
-
else if (changeLine.startsWith("+")) {
|
|
71
|
-
newLines.push(changeLine.substring(1));
|
|
72
|
-
}
|
|
73
|
-
i++;
|
|
74
|
-
}
|
|
75
|
-
chunks.push({
|
|
76
|
-
old_lines: oldLines,
|
|
77
|
-
new_lines: newLines,
|
|
78
|
-
change_context: contextLine || undefined,
|
|
79
|
-
is_end_of_file: isEndOfFile || undefined,
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
i++;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return { chunks, nextIdx: i };
|
|
87
|
-
}
|
|
88
|
-
/** Maximum patch text size in bytes to prevent memory exhaustion. */
|
|
89
|
-
const MAX_PATCH_SIZE = 1024 * 1024; // 1 MB
|
|
90
|
-
/** Maximum number of hunks (file operations) per patch. */
|
|
91
|
-
const MAX_HUNKS = 500;
|
|
92
|
-
export function parsePatch(patchText) {
|
|
93
|
-
if (patchText.length > MAX_PATCH_SIZE) {
|
|
94
|
-
throw new Error(`Patch too large: ${patchText.length} bytes exceeds limit of ${MAX_PATCH_SIZE} bytes`);
|
|
95
|
-
}
|
|
96
|
-
const cleaned = stripHeredoc(patchText.trim());
|
|
97
|
-
const lines = cleaned.split("\n");
|
|
98
|
-
const hunks = [];
|
|
99
|
-
const beginIdx = lines.findIndex((line) => line.trim() === "*** Begin Patch");
|
|
100
|
-
const endIdx = lines.findIndex((line) => line.trim() === "*** End Patch");
|
|
101
|
-
if (beginIdx === -1 || endIdx === -1 || beginIdx >= endIdx) {
|
|
102
|
-
throw new Error("Invalid patch format: missing *** Begin Patch / *** End Patch markers");
|
|
103
|
-
}
|
|
104
|
-
let i = beginIdx + 1;
|
|
105
|
-
while (i < endIdx) {
|
|
106
|
-
const header = parsePatchHeader(lines, i);
|
|
107
|
-
if (!header) {
|
|
108
|
-
i++;
|
|
109
|
-
continue;
|
|
110
|
-
}
|
|
111
|
-
if (hunks.length >= MAX_HUNKS) {
|
|
112
|
-
throw new Error(`Patch exceeds maximum of ${MAX_HUNKS} file operations`);
|
|
113
|
-
}
|
|
114
|
-
if (lines[i].startsWith("*** Add File:")) {
|
|
115
|
-
const { content, nextIdx } = parseAddFileContent(lines, header.nextIdx);
|
|
116
|
-
hunks.push({ type: "add", path: header.filePath, contents: content });
|
|
117
|
-
i = nextIdx;
|
|
118
|
-
}
|
|
119
|
-
else if (lines[i].startsWith("*** Delete File:")) {
|
|
120
|
-
hunks.push({ type: "delete", path: header.filePath });
|
|
121
|
-
i = header.nextIdx;
|
|
122
|
-
}
|
|
123
|
-
else if (lines[i].startsWith("*** Update File:")) {
|
|
124
|
-
const { chunks, nextIdx } = parseUpdateFileChunks(lines, header.nextIdx);
|
|
125
|
-
hunks.push({
|
|
126
|
-
type: "update",
|
|
127
|
-
path: header.filePath,
|
|
128
|
-
move_path: header.movePath,
|
|
129
|
-
chunks,
|
|
130
|
-
});
|
|
131
|
-
i = nextIdx;
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
i++;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return hunks;
|
|
138
|
-
}
|
|
139
|
-
// ---------------------------------------------------------------------------
|
|
140
|
-
// Apply update chunks to file content
|
|
141
|
-
// ---------------------------------------------------------------------------
|
|
142
|
-
function normalizeUnicode(str) {
|
|
143
|
-
return str
|
|
144
|
-
.replace(/[\u2018\u2019\u201A\u201B]/g, "'")
|
|
145
|
-
.replace(/[\u201C\u201D\u201E\u201F]/g, '"')
|
|
146
|
-
.replace(/[\u2010\u2011\u2012\u2013\u2014\u2015]/g, "-")
|
|
147
|
-
.replace(/\u2026/g, "...")
|
|
148
|
-
.replace(/\u00A0/g, " ");
|
|
149
|
-
}
|
|
150
|
-
function tryMatch(lines, pattern, startIndex, compare, eof) {
|
|
151
|
-
if (eof) {
|
|
152
|
-
const fromEnd = lines.length - pattern.length;
|
|
153
|
-
if (fromEnd >= startIndex) {
|
|
154
|
-
let matches = true;
|
|
155
|
-
for (let j = 0; j < pattern.length; j++) {
|
|
156
|
-
if (!compare(lines[fromEnd + j], pattern[j])) {
|
|
157
|
-
matches = false;
|
|
158
|
-
break;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
if (matches)
|
|
162
|
-
return fromEnd;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
for (let i = startIndex; i <= lines.length - pattern.length; i++) {
|
|
166
|
-
let matches = true;
|
|
167
|
-
for (let j = 0; j < pattern.length; j++) {
|
|
168
|
-
if (!compare(lines[i + j], pattern[j])) {
|
|
169
|
-
matches = false;
|
|
170
|
-
break;
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
if (matches)
|
|
174
|
-
return i;
|
|
175
|
-
}
|
|
176
|
-
return -1;
|
|
177
|
-
}
|
|
178
|
-
function seekSequence(lines, pattern, startIndex, eof = false) {
|
|
179
|
-
if (pattern.length === 0)
|
|
180
|
-
return -1;
|
|
181
|
-
const exact = tryMatch(lines, pattern, startIndex, (a, b) => a === b, eof);
|
|
182
|
-
if (exact !== -1)
|
|
183
|
-
return exact;
|
|
184
|
-
const rstrip = tryMatch(lines, pattern, startIndex, (a, b) => a.trimEnd() === b.trimEnd(), eof);
|
|
185
|
-
if (rstrip !== -1)
|
|
186
|
-
return rstrip;
|
|
187
|
-
const trim = tryMatch(lines, pattern, startIndex, (a, b) => a.trim() === b.trim(), eof);
|
|
188
|
-
if (trim !== -1)
|
|
189
|
-
return trim;
|
|
190
|
-
return tryMatch(lines, pattern, startIndex, (a, b) => normalizeUnicode(a.trim()) === normalizeUnicode(b.trim()), eof);
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Apply update chunks to the original file content, producing new content.
|
|
194
|
-
* Ported from opencode's deriveNewContentsFromChunks.
|
|
195
|
-
*/
|
|
196
|
-
export function applyUpdateChunks(originalContent, filePath, chunks) {
|
|
197
|
-
const originalLines = originalContent.split("\n");
|
|
198
|
-
if (originalLines.length > 0 && originalLines[originalLines.length - 1] === "") {
|
|
199
|
-
originalLines.pop();
|
|
200
|
-
}
|
|
201
|
-
const replacements = [];
|
|
202
|
-
let lineIndex = 0;
|
|
203
|
-
for (const chunk of chunks) {
|
|
204
|
-
if (chunk.change_context) {
|
|
205
|
-
const contextIdx = seekSequence(originalLines, [chunk.change_context], lineIndex);
|
|
206
|
-
if (contextIdx === -1) {
|
|
207
|
-
throw new Error(`Failed to find context '${chunk.change_context}' in ${filePath}`);
|
|
208
|
-
}
|
|
209
|
-
lineIndex = contextIdx + 1;
|
|
210
|
-
}
|
|
211
|
-
if (chunk.old_lines.length === 0) {
|
|
212
|
-
const insertionIdx = originalLines.length > 0 && originalLines[originalLines.length - 1] === ""
|
|
213
|
-
? originalLines.length - 1
|
|
214
|
-
: originalLines.length;
|
|
215
|
-
replacements.push([insertionIdx, 0, chunk.new_lines]);
|
|
216
|
-
continue;
|
|
217
|
-
}
|
|
218
|
-
let pattern = chunk.old_lines;
|
|
219
|
-
let newSlice = chunk.new_lines;
|
|
220
|
-
let found = seekSequence(originalLines, pattern, lineIndex, chunk.is_end_of_file);
|
|
221
|
-
if (found === -1 && pattern.length > 0 && pattern[pattern.length - 1] === "") {
|
|
222
|
-
pattern = pattern.slice(0, -1);
|
|
223
|
-
if (newSlice.length > 0 && newSlice[newSlice.length - 1] === "") {
|
|
224
|
-
newSlice = newSlice.slice(0, -1);
|
|
225
|
-
}
|
|
226
|
-
found = seekSequence(originalLines, pattern, lineIndex, chunk.is_end_of_file);
|
|
227
|
-
}
|
|
228
|
-
if (found !== -1) {
|
|
229
|
-
replacements.push([found, pattern.length, newSlice]);
|
|
230
|
-
lineIndex = found + pattern.length;
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
throw new Error(`Failed to find expected lines in ${filePath}:\n${chunk.old_lines.join("\n")}`);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
replacements.sort((a, b) => a[0] - b[0]);
|
|
237
|
-
const result = [...originalLines];
|
|
238
|
-
for (let i = replacements.length - 1; i >= 0; i--) {
|
|
239
|
-
const [startIdx, oldLen, newSegment] = replacements[i];
|
|
240
|
-
result.splice(startIdx, oldLen, ...newSegment);
|
|
241
|
-
}
|
|
242
|
-
if (result.length === 0 || result[result.length - 1] !== "") {
|
|
243
|
-
result.push("");
|
|
244
|
-
}
|
|
245
|
-
return result.join("\n");
|
|
246
|
-
}
|
|
247
|
-
//# sourceMappingURL=patch-parser.js.map
|
package/dist/patch-parser.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patch-parser.js","sourceRoot":"","sources":["../src/patch-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/platform.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared platform / architecture mappings used by both the resolver and downloader.
|
|
3
|
-
*
|
|
4
|
-
* Keeping them here avoids duplication and ensures resolver + downloader always
|
|
5
|
-
* agree on the canonical platform key strings (e.g. "darwin-arm64").
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Nested map: `process.platform` → `process.arch` → platform-key string.
|
|
9
|
-
*
|
|
10
|
-
* Used by the resolver to turn the current runtime environment into the
|
|
11
|
-
* canonical key (e.g. `"darwin-arm64"`) that the rest of the system uses.
|
|
12
|
-
*/
|
|
13
|
-
export const PLATFORM_ARCH_MAP = {
|
|
14
|
-
darwin: { arm64: "darwin-arm64", x64: "darwin-x64" },
|
|
15
|
-
linux: { arm64: "linux-arm64", x64: "linux-x64" },
|
|
16
|
-
win32: { x64: "win32-x64" },
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* Flat map: platform-key string → GitHub release asset filename.
|
|
20
|
-
*
|
|
21
|
-
* Used by the downloader to turn the canonical key into the exact asset name
|
|
22
|
-
* that appears in the GitHub release (e.g. `"aft-darwin-arm64"`).
|
|
23
|
-
*/
|
|
24
|
-
export const PLATFORM_ASSET_MAP = {
|
|
25
|
-
"darwin-arm64": "aft-darwin-arm64",
|
|
26
|
-
"darwin-x64": "aft-darwin-x64",
|
|
27
|
-
"linux-arm64": "aft-linux-arm64",
|
|
28
|
-
"linux-x64": "aft-linux-x64",
|
|
29
|
-
"win32-x64": "aft-win32-x64.exe",
|
|
30
|
-
};
|
|
31
|
-
//# sourceMappingURL=platform.js.map
|
package/dist/platform.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA2C;IACvE,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,EAAE;IACpD,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE;IACjD,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,cAAc,EAAE,kBAAkB;IAClC,YAAY,EAAE,gBAAgB;IAC9B,aAAa,EAAE,iBAAiB;IAChC,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,mBAAmB;CACjC,CAAC"}
|
package/dist/pool.js
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { BinaryBridge } from "./bridge";
|
|
2
|
-
import { error, log } from "./logger.js";
|
|
3
|
-
const DEFAULT_IDLE_TIMEOUT_MS = Infinity; // keep alive as long as opencode is running
|
|
4
|
-
const DEFAULT_MAX_POOL_SIZE = 8;
|
|
5
|
-
const CLEANUP_INTERVAL_MS = 60 * 1000; // check every minute
|
|
6
|
-
/**
|
|
7
|
-
* Manages a pool of BinaryBridge instances, one per session.
|
|
8
|
-
* Each session gets its own binary process with isolated backup/undo history.
|
|
9
|
-
* Handles idle cleanup and LRU eviction when at capacity.
|
|
10
|
-
*/
|
|
11
|
-
export class BridgePool {
|
|
12
|
-
bridges = new Map();
|
|
13
|
-
binaryPath;
|
|
14
|
-
maxPoolSize;
|
|
15
|
-
idleTimeoutMs;
|
|
16
|
-
bridgeOptions;
|
|
17
|
-
configOverrides;
|
|
18
|
-
cleanupTimer = null;
|
|
19
|
-
constructor(binaryPath, options = {}, configOverrides = {}) {
|
|
20
|
-
this.binaryPath = binaryPath;
|
|
21
|
-
this.maxPoolSize = options.maxPoolSize ?? DEFAULT_MAX_POOL_SIZE;
|
|
22
|
-
this.idleTimeoutMs = options.idleTimeoutMs ?? DEFAULT_IDLE_TIMEOUT_MS;
|
|
23
|
-
this.bridgeOptions = {
|
|
24
|
-
timeoutMs: options.timeoutMs,
|
|
25
|
-
maxRestarts: options.maxRestarts,
|
|
26
|
-
minVersion: options.minVersion,
|
|
27
|
-
onVersionMismatch: options.onVersionMismatch,
|
|
28
|
-
};
|
|
29
|
-
this.configOverrides = configOverrides;
|
|
30
|
-
// Skip cleanup timer when idle timeout is Infinity (no-op) to avoid wasted cycles
|
|
31
|
-
if (Number.isFinite(this.idleTimeoutMs)) {
|
|
32
|
-
this.cleanupTimer = setInterval(() => this.cleanup(), CLEANUP_INTERVAL_MS);
|
|
33
|
-
this.cleanupTimer.unref(); // don't prevent Node from exiting
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Get or create a bridge for the given session.
|
|
38
|
-
* Each session gets its own binary process with isolated backup/undo history.
|
|
39
|
-
* The bridge's working directory is set to `directory`.
|
|
40
|
-
*/
|
|
41
|
-
/** Get any existing bridge that is configured and alive, preferring the given directory. */
|
|
42
|
-
getAnyActiveBridge(directory) {
|
|
43
|
-
// First try to find one matching this directory
|
|
44
|
-
for (const [, entry] of this.bridges) {
|
|
45
|
-
if (entry.bridge.isAlive()) {
|
|
46
|
-
entry.lastUsed = Date.now();
|
|
47
|
-
return entry.bridge;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
getBridge(directory, sessionID) {
|
|
53
|
-
const key = sessionID || directory.replace(/\/+$/, "");
|
|
54
|
-
const existing = this.bridges.get(key);
|
|
55
|
-
if (existing) {
|
|
56
|
-
existing.lastUsed = Date.now();
|
|
57
|
-
return existing.bridge;
|
|
58
|
-
}
|
|
59
|
-
// Evict LRU if at capacity
|
|
60
|
-
if (this.bridges.size >= this.maxPoolSize) {
|
|
61
|
-
this.evictLRU();
|
|
62
|
-
}
|
|
63
|
-
const normalized = directory.replace(/\/+$/, "");
|
|
64
|
-
const bridge = new BinaryBridge(this.binaryPath, normalized, this.bridgeOptions, this.configOverrides);
|
|
65
|
-
this.bridges.set(key, { bridge, lastUsed: Date.now() });
|
|
66
|
-
return bridge;
|
|
67
|
-
}
|
|
68
|
-
/** Shut down idle bridges that haven't been used within the timeout. */
|
|
69
|
-
cleanup() {
|
|
70
|
-
const now = Date.now();
|
|
71
|
-
for (const [dir, entry] of this.bridges) {
|
|
72
|
-
if (now - entry.lastUsed > this.idleTimeoutMs) {
|
|
73
|
-
entry.bridge.shutdown().catch((err) => error("cleanup shutdown failed:", err));
|
|
74
|
-
this.bridges.delete(dir);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/** Evict the least recently used bridge to make room. */
|
|
79
|
-
evictLRU() {
|
|
80
|
-
let oldestDir = null;
|
|
81
|
-
let oldestTime = Infinity;
|
|
82
|
-
for (const [dir, entry] of this.bridges) {
|
|
83
|
-
if (entry.lastUsed < oldestTime) {
|
|
84
|
-
oldestTime = entry.lastUsed;
|
|
85
|
-
oldestDir = dir;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (oldestDir) {
|
|
89
|
-
const entry = this.bridges.get(oldestDir);
|
|
90
|
-
entry?.bridge.shutdown().catch((err) => error("eviction shutdown failed:", err));
|
|
91
|
-
this.bridges.delete(oldestDir);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
/** Shut down all bridges and stop the cleanup timer. */
|
|
95
|
-
async shutdown() {
|
|
96
|
-
if (this.cleanupTimer) {
|
|
97
|
-
clearInterval(this.cleanupTimer);
|
|
98
|
-
this.cleanupTimer = null;
|
|
99
|
-
}
|
|
100
|
-
const shutdowns = Array.from(this.bridges.values()).map((e) => e.bridge.shutdown());
|
|
101
|
-
this.bridges.clear();
|
|
102
|
-
await Promise.allSettled(shutdowns);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Replace the binary path and restart all bridges.
|
|
106
|
-
* Used after downloading a newer binary version.
|
|
107
|
-
*/
|
|
108
|
-
async replaceBinary(newPath) {
|
|
109
|
-
this.binaryPath = newPath;
|
|
110
|
-
// Clear the pool so next getBridge() creates fresh bridges with the new binary.
|
|
111
|
-
// Old bridge processes are NOT killed — they continue running from the old
|
|
112
|
-
// binary (safe on all platforms since the binary is loaded in memory) and will
|
|
113
|
-
// exit naturally when their stdin/stdout are garbage collected.
|
|
114
|
-
for (const [key, entry] of this.bridges) {
|
|
115
|
-
try {
|
|
116
|
-
entry.bridge.shutdown();
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
// best-effort
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
this.bridges.clear();
|
|
123
|
-
log(`Binary path updated to ${newPath}. All bridges cleared — next calls will use the new binary.`);
|
|
124
|
-
}
|
|
125
|
-
/** Number of active bridges in the pool. */
|
|
126
|
-
get size() {
|
|
127
|
-
return this.bridges.size;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=pool.js.map
|
package/dist/pool.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
|
package/dist/resolver.js
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { execSync, spawnSync } from "node:child_process";
|
|
2
|
-
import { chmodSync, copyFileSync, existsSync, mkdirSync } from "node:fs";
|
|
3
|
-
import { createRequire } from "node:module";
|
|
4
|
-
import { homedir } from "node:os";
|
|
5
|
-
import { join } from "node:path";
|
|
6
|
-
import { ensureBinary, getCacheDir, getCachedBinaryPath } from "./downloader.js";
|
|
7
|
-
import { log, warn } from "./logger.js";
|
|
8
|
-
import { PLATFORM_ARCH_MAP } from "./platform.js";
|
|
9
|
-
/**
|
|
10
|
-
* Copy an npm platform binary to the versioned cache so we never run from
|
|
11
|
-
* node_modules directly. This prevents corruption when npm updates the
|
|
12
|
-
* package while a bridge process is running the binary.
|
|
13
|
-
*/
|
|
14
|
-
function copyToVersionedCache(npmBinaryPath) {
|
|
15
|
-
try {
|
|
16
|
-
// Get the version from the binary
|
|
17
|
-
const result = spawnSync(npmBinaryPath, ["--version"], {
|
|
18
|
-
encoding: "utf-8",
|
|
19
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
20
|
-
timeout: 5000,
|
|
21
|
-
});
|
|
22
|
-
const rawVersion = result.stdout?.trim();
|
|
23
|
-
if (!rawVersion)
|
|
24
|
-
return null;
|
|
25
|
-
// `aft --version` outputs "aft 0.9.0" — extract just the version number
|
|
26
|
-
const version = rawVersion.replace(/^aft\s+/, "");
|
|
27
|
-
const tag = version.startsWith("v") ? version : `v${version}`;
|
|
28
|
-
const cacheDir = getCacheDir();
|
|
29
|
-
const versionedDir = join(cacheDir, tag);
|
|
30
|
-
const ext = process.platform === "win32" ? ".exe" : "";
|
|
31
|
-
const cachedPath = join(versionedDir, `aft${ext}`);
|
|
32
|
-
// Already cached
|
|
33
|
-
if (existsSync(cachedPath))
|
|
34
|
-
return cachedPath;
|
|
35
|
-
// Copy to versioned cache
|
|
36
|
-
mkdirSync(versionedDir, { recursive: true });
|
|
37
|
-
const tmpPath = `${cachedPath}.tmp`;
|
|
38
|
-
copyFileSync(npmBinaryPath, tmpPath);
|
|
39
|
-
if (process.platform !== "win32") {
|
|
40
|
-
chmodSync(tmpPath, 0o755);
|
|
41
|
-
}
|
|
42
|
-
const { renameSync } = require("node:fs");
|
|
43
|
-
renameSync(tmpPath, cachedPath);
|
|
44
|
-
log(`Copied npm binary to versioned cache: ${cachedPath}`);
|
|
45
|
-
return cachedPath;
|
|
46
|
-
}
|
|
47
|
-
catch (err) {
|
|
48
|
-
warn(`Failed to copy binary to cache: ${err instanceof Error ? err.message : String(err)}`);
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Map the current `process.platform` and `process.arch` to the npm platform
|
|
54
|
-
* package suffix (e.g. `"darwin-arm64"`, `"linux-x64"`).
|
|
55
|
-
*
|
|
56
|
-
* Exported for testability — agents and scripts can call this directly to
|
|
57
|
-
* verify the platform mapping without running the full resolver.
|
|
58
|
-
*
|
|
59
|
-
* @throws {Error} with the exact `process.platform` and `process.arch` values
|
|
60
|
-
* when the combination is unsupported.
|
|
61
|
-
*/
|
|
62
|
-
export function platformKey(platform = process.platform, arch = process.arch) {
|
|
63
|
-
const archMap = PLATFORM_ARCH_MAP[platform];
|
|
64
|
-
if (!archMap) {
|
|
65
|
-
throw new Error(`Unsupported platform: ${platform} (arch: ${arch}). ` +
|
|
66
|
-
`Supported platforms: ${Object.keys(PLATFORM_ARCH_MAP).join(", ")}`);
|
|
67
|
-
}
|
|
68
|
-
const key = archMap[arch];
|
|
69
|
-
if (!key) {
|
|
70
|
-
throw new Error(`Unsupported architecture: ${arch} on platform ${platform}. ` +
|
|
71
|
-
`Supported architectures for ${platform}: ${Object.keys(archMap).join(", ")}`);
|
|
72
|
-
}
|
|
73
|
-
return key;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Locate the `aft` binary synchronously by checking (in order):
|
|
77
|
-
* 1. Cached binary from previous auto-download (~/.cache/aft/bin/)
|
|
78
|
-
* 2. npm platform package via `require.resolve(@cortexkit/aft-<platform>/bin/aft)`
|
|
79
|
-
* 3. PATH lookup via `which aft` (or `where aft` on Windows)
|
|
80
|
-
* 4. ~/.cargo/bin/aft (Rust cargo install location)
|
|
81
|
-
*
|
|
82
|
-
* Returns the absolute path to the first binary found, or null if none found.
|
|
83
|
-
*/
|
|
84
|
-
export function findBinarySync() {
|
|
85
|
-
const ext = process.platform === "win32" ? ".exe" : "";
|
|
86
|
-
// 1. Check versioned cache for the plugin's own version first
|
|
87
|
-
const pluginVersion = (() => {
|
|
88
|
-
try {
|
|
89
|
-
const req = createRequire(import.meta.url);
|
|
90
|
-
return `v${req("../package.json").version}`;
|
|
91
|
-
}
|
|
92
|
-
catch {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
})();
|
|
96
|
-
if (pluginVersion) {
|
|
97
|
-
const versionCached = getCachedBinaryPath(pluginVersion);
|
|
98
|
-
if (versionCached)
|
|
99
|
-
return versionCached;
|
|
100
|
-
}
|
|
101
|
-
// 2. Check npm platform package — copy to versioned cache to avoid
|
|
102
|
-
// corruption when npm updates the package while a bridge is running
|
|
103
|
-
try {
|
|
104
|
-
const key = platformKey();
|
|
105
|
-
const packageBin = `@cortexkit/aft-${key}/bin/aft${ext}`;
|
|
106
|
-
const req = createRequire(import.meta.url);
|
|
107
|
-
const resolved = req.resolve(packageBin);
|
|
108
|
-
if (existsSync(resolved)) {
|
|
109
|
-
const copied = copyToVersionedCache(resolved);
|
|
110
|
-
return copied ?? resolved;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
catch {
|
|
114
|
-
// npm package not installed or resolution failed
|
|
115
|
-
}
|
|
116
|
-
// 3. Check PATH
|
|
117
|
-
try {
|
|
118
|
-
const whichCmd = process.platform === "win32" ? "where aft" : "which aft";
|
|
119
|
-
const result = execSync(whichCmd, {
|
|
120
|
-
encoding: "utf-8",
|
|
121
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
122
|
-
}).trim();
|
|
123
|
-
if (result)
|
|
124
|
-
return result;
|
|
125
|
-
}
|
|
126
|
-
catch {
|
|
127
|
-
// not in PATH
|
|
128
|
-
}
|
|
129
|
-
// 4. Check ~/.cargo/bin/aft
|
|
130
|
-
const cargoPath = join(homedir(), ".cargo", "bin", `aft${ext}`);
|
|
131
|
-
if (existsSync(cargoPath))
|
|
132
|
-
return cargoPath;
|
|
133
|
-
return null;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Locate the `aft` binary, with auto-download as a last resort.
|
|
137
|
-
*
|
|
138
|
-
* Resolution order:
|
|
139
|
-
* 1. Cached binary (~/.cache/aft/bin/)
|
|
140
|
-
* 2. npm platform package (@cortexkit/aft-<platform>)
|
|
141
|
-
* 3. PATH lookup (which aft)
|
|
142
|
-
* 4. ~/.cargo/bin/aft
|
|
143
|
-
* 5. Auto-download from GitHub releases
|
|
144
|
-
*
|
|
145
|
-
* Returns the absolute path to the binary.
|
|
146
|
-
* Throws a descriptive error with install instructions if all sources fail.
|
|
147
|
-
*/
|
|
148
|
-
export async function findBinary() {
|
|
149
|
-
// Try synchronous resolution first (fast path)
|
|
150
|
-
const syncResult = findBinarySync();
|
|
151
|
-
if (syncResult) {
|
|
152
|
-
log(`Resolved binary: ${syncResult}`);
|
|
153
|
-
return syncResult;
|
|
154
|
-
}
|
|
155
|
-
// 5. Auto-download from GitHub releases
|
|
156
|
-
log("Binary not found locally, attempting auto-download...");
|
|
157
|
-
const downloaded = await ensureBinary();
|
|
158
|
-
if (downloaded)
|
|
159
|
-
return downloaded;
|
|
160
|
-
// All sources exhausted
|
|
161
|
-
throw new Error([
|
|
162
|
-
"Could not find the `aft` binary.",
|
|
163
|
-
"",
|
|
164
|
-
"Attempted sources:",
|
|
165
|
-
" - Cache directory (~/.cache/aft/bin/)",
|
|
166
|
-
" - npm platform package (@cortexkit/aft-<platform>)",
|
|
167
|
-
" - PATH lookup (which aft)",
|
|
168
|
-
" - ~/.cargo/bin/aft",
|
|
169
|
-
" - Auto-download from GitHub releases (failed)",
|
|
170
|
-
"",
|
|
171
|
-
"Install it using one of these methods:",
|
|
172
|
-
" npm install @cortexkit/aft-opencode # installs platform-specific binary via npm",
|
|
173
|
-
" cargo install aft # from crates.io",
|
|
174
|
-
" cargo build --release # from source (binary at target/release/aft)",
|
|
175
|
-
"",
|
|
176
|
-
"Or add the aft directory to your PATH.",
|
|
177
|
-
].join("\n"));
|
|
178
|
-
}
|
|
179
|
-
//# sourceMappingURL=resolver.js.map
|
package/dist/resolver.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { homedir } from "node:os";
|
|
2
|
-
import { join, resolve } from "node:path";
|
|
3
|
-
function getCliConfigDir() {
|
|
4
|
-
const envConfigDir = process.env.OPENCODE_CONFIG_DIR?.trim();
|
|
5
|
-
if (envConfigDir) {
|
|
6
|
-
return resolve(envConfigDir);
|
|
7
|
-
}
|
|
8
|
-
if (process.platform === "win32") {
|
|
9
|
-
return join(homedir(), ".config", "opencode");
|
|
10
|
-
}
|
|
11
|
-
return join(process.env.XDG_CONFIG_HOME || join(homedir(), ".config"), "opencode");
|
|
12
|
-
}
|
|
13
|
-
export function getOpenCodeConfigDir(_options) {
|
|
14
|
-
return getCliConfigDir();
|
|
15
|
-
}
|
|
16
|
-
export function getOpenCodeConfigPaths(options) {
|
|
17
|
-
const configDir = getOpenCodeConfigDir(options);
|
|
18
|
-
return {
|
|
19
|
-
configDir,
|
|
20
|
-
configJson: join(configDir, "opencode.json"),
|
|
21
|
-
configJsonc: join(configDir, "opencode.jsonc"),
|
|
22
|
-
packageJson: join(configDir, "package.json"),
|
|
23
|
-
omoConfig: join(configDir, "magic-context.jsonc"),
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=opencode-config-dir.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-config-dir.js","sourceRoot":"","sources":["../../src/shared/opencode-config-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkB1C,SAAS,eAAe;IACtB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC;IAC7D,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAkC;IACrE,OAAO,eAAe,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAiC;IACtE,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO;QACL,SAAS;QACT,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC;QAC5C,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;QAC9C,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC;QAC5C,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC;KAClD,CAAC;AACJ,CAAC"}
|