@cortexkit/aft-opencode 0.56.1 → 0.56.2
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/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/entry/server.js +33 -16
- package/dist/index.js +28 -16
- package/package.json +8 -8
- package/src/entry/server-runtime.mjs +11 -0
package/dist/config.d.ts
CHANGED
|
@@ -104,6 +104,7 @@ export declare const AftConfigSchema: z.ZodPreprocess<z.ZodObject<{
|
|
|
104
104
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
105
105
|
diagnostics_timeout_ms: z.ZodPipe<z.ZodOptional<z.ZodNumber>, z.ZodTransform<number | undefined, number | undefined>>;
|
|
106
106
|
tier2_idle_minutes: z.ZodOptional<z.ZodNumber>;
|
|
107
|
+
tier2_pass_timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
107
108
|
categories: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
|
|
108
109
|
tier2_soft_deadline_ms: z.ZodOptional<z.ZodNumber>;
|
|
109
110
|
max_drill_down_items: z.ZodOptional<z.ZodNumber>;
|
|
@@ -298,6 +299,7 @@ export declare const AftConfigSchema: z.ZodPreprocess<z.ZodObject<{
|
|
|
298
299
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
299
300
|
diagnostics_timeout_ms: z.ZodPipe<z.ZodOptional<z.ZodNumber>, z.ZodTransform<number | undefined, number | undefined>>;
|
|
300
301
|
tier2_idle_minutes: z.ZodOptional<z.ZodNumber>;
|
|
302
|
+
tier2_pass_timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
301
303
|
categories: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
|
|
302
304
|
tier2_soft_deadline_ms: z.ZodOptional<z.ZodNumber>;
|
|
303
305
|
max_drill_down_items: z.ZodOptional<z.ZodNumber>;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,UAAU,EAQhB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmExB,oGAAoG;AACpG,eAAO,MAAM,6BAA6B;;;;EAAmC,CAAC;AAC9E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAuQtF,QAAA,MAAM,kBAAkB;;;;;iBAStB,CAAC;AAqBH,eAAO,MAAM,sCAAsC,SAAU,CAAC;AAC9D,eAAO,MAAM,kCAAkC,QAAS,CAAC;AACzD,eAAO,MAAM,kCAAkC,SAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/entry/server.js
CHANGED
|
@@ -8677,6 +8677,7 @@ class BinaryBridge {
|
|
|
8677
8677
|
pending = new Map;
|
|
8678
8678
|
outstandingBackgroundTaskIds = new Set;
|
|
8679
8679
|
nextId = 1;
|
|
8680
|
+
processGeneration = 0;
|
|
8680
8681
|
stdoutBuffer = "";
|
|
8681
8682
|
stdoutReadOffset = 0;
|
|
8682
8683
|
stderrBuffer = "";
|
|
@@ -8989,6 +8990,7 @@ class BinaryBridge {
|
|
|
8989
8990
|
}
|
|
8990
8991
|
}
|
|
8991
8992
|
const id = String(this.nextId++);
|
|
8993
|
+
const tool = command === "tool_call" && typeof params.name === "string" ? params.name : command;
|
|
8992
8994
|
let request;
|
|
8993
8995
|
if (command === "cancel_request" || Object.hasOwn(params, "command") || Object.hasOwn(params, "method")) {
|
|
8994
8996
|
const nested = { ...params };
|
|
@@ -9042,14 +9044,20 @@ class BinaryBridge {
|
|
|
9042
9044
|
return;
|
|
9043
9045
|
}
|
|
9044
9046
|
entry.reject(new Error(`${this.errorPrefix} Request "${command}" (id=${id}) timed out after ${effectiveTimeoutMs}ms`));
|
|
9045
|
-
this.handleTimeout(
|
|
9047
|
+
this.handleTimeout({
|
|
9048
|
+
requestId: id,
|
|
9049
|
+
tool: entry.tool,
|
|
9050
|
+
generation: entry.generation
|
|
9051
|
+
}, requestSessionId);
|
|
9046
9052
|
}, effectiveTimeoutMs);
|
|
9047
9053
|
const entry = {
|
|
9048
9054
|
resolve,
|
|
9049
9055
|
reject,
|
|
9050
9056
|
timer,
|
|
9051
9057
|
onProgress: options?.onProgress,
|
|
9052
|
-
command
|
|
9058
|
+
command,
|
|
9059
|
+
tool,
|
|
9060
|
+
generation: this.processGeneration
|
|
9053
9061
|
};
|
|
9054
9062
|
this.pending.set(id, entry);
|
|
9055
9063
|
if (!child?.stdin?.writable) {
|
|
@@ -9352,6 +9360,7 @@ class BinaryBridge {
|
|
|
9352
9360
|
this.handleCrash();
|
|
9353
9361
|
});
|
|
9354
9362
|
this.process = child;
|
|
9363
|
+
this.processGeneration += 1;
|
|
9355
9364
|
this.spawnedBinaryFingerprint = readBinaryFingerprint(this.binaryPath);
|
|
9356
9365
|
this.lastBinaryFingerprintCheckAt = Date.now();
|
|
9357
9366
|
this.stdoutBuffer = "";
|
|
@@ -9523,10 +9532,15 @@ class BinaryBridge {
|
|
|
9523
9532
|
this.outstandingBackgroundTaskIds.add(taskId);
|
|
9524
9533
|
}
|
|
9525
9534
|
}
|
|
9526
|
-
handleTimeout(triggeringSessionId) {
|
|
9535
|
+
handleTimeout(trigger, triggeringSessionId) {
|
|
9527
9536
|
this.consecutiveRequestTimeouts = 0;
|
|
9528
9537
|
this.spawnedBinaryFingerprint = null;
|
|
9529
|
-
|
|
9538
|
+
const abortedSiblings = Array.from(this.pending, ([requestId, entry]) => ({
|
|
9539
|
+
request_id: requestId,
|
|
9540
|
+
tool: entry.tool
|
|
9541
|
+
}));
|
|
9542
|
+
const attribution = `triggering_request_id=${trigger.requestId} ` + `triggering_tool=${JSON.stringify(trigger.tool)} ` + `bridge_generation=${trigger.generation} ` + `aborted_siblings=${JSON.stringify(abortedSiblings)}`;
|
|
9543
|
+
this.rejectAllPending(new BridgeTransportUnknownOutcomeError(`${this.errorPrefix} bridge killed during sibling timeout — request aborted; ${attribution}`));
|
|
9530
9544
|
this.outstandingBackgroundTaskIds.clear();
|
|
9531
9545
|
if (this.process) {
|
|
9532
9546
|
this.process.kill("SIGKILL");
|
|
@@ -9536,17 +9550,11 @@ class BinaryBridge {
|
|
|
9536
9550
|
this.configured = false;
|
|
9537
9551
|
const tail = this.formatStderrTail();
|
|
9538
9552
|
this.stderrTail = [];
|
|
9539
|
-
const killedMsg = tail ? `Bridge killed after timeout.${tail}` : `Bridge killed after timeout (see ${this.getLogFilePathVia()})`;
|
|
9540
|
-
if (
|
|
9541
|
-
|
|
9542
|
-
this.sessionErrorVia(triggeringSessionId, killedMsg);
|
|
9543
|
-
} else {
|
|
9544
|
-
this.errorVia(killedMsg);
|
|
9545
|
-
}
|
|
9546
|
-
} else if (triggeringSessionId) {
|
|
9547
|
-
this.sessionWarnVia(triggeringSessionId, killedMsg);
|
|
9553
|
+
const killedMsg = tail ? `Bridge killed after timeout; ${attribution}.${tail}` : `Bridge killed after timeout; ${attribution} (see ${this.getLogFilePathVia()})`;
|
|
9554
|
+
if (triggeringSessionId) {
|
|
9555
|
+
this.sessionErrorVia(triggeringSessionId, killedMsg);
|
|
9548
9556
|
} else {
|
|
9549
|
-
this.
|
|
9557
|
+
this.errorVia(killedMsg);
|
|
9550
9558
|
}
|
|
9551
9559
|
}
|
|
9552
9560
|
handleCrash(cause) {
|
|
@@ -21492,6 +21500,9 @@ function write(level, message, data, sessionId) {
|
|
|
21492
21500
|
function log2(message, data) {
|
|
21493
21501
|
write("INFO", message, data);
|
|
21494
21502
|
}
|
|
21503
|
+
function debug2(message, data) {
|
|
21504
|
+
write("DEBUG", message, data);
|
|
21505
|
+
}
|
|
21495
21506
|
function warn2(message, data) {
|
|
21496
21507
|
write("WARN", message, data);
|
|
21497
21508
|
}
|
|
@@ -21690,6 +21701,7 @@ var InspectConfigSchema = object({
|
|
|
21690
21701
|
enabled: boolean2().optional(),
|
|
21691
21702
|
diagnostics_timeout_ms: number2().int().positive().optional().transform((value) => value === undefined ? undefined : clampInspectDiagnosticsTimeoutMs(value)),
|
|
21692
21703
|
tier2_idle_minutes: number2().min(0).optional(),
|
|
21704
|
+
tier2_pass_timeout_ms: number2().int().positive().optional(),
|
|
21693
21705
|
categories: record(string2(), boolean2()).optional(),
|
|
21694
21706
|
tier2_soft_deadline_ms: number2().int().positive().optional(),
|
|
21695
21707
|
max_drill_down_items: number2().int().positive().max(100).optional(),
|
|
@@ -44000,7 +44012,7 @@ function semanticTools(ctx) {
|
|
|
44000
44012
|
`),
|
|
44001
44013
|
args: {
|
|
44002
44014
|
query: arg3(z13.string().describe("Concept, regex, literal text, filename, or capability to find. Examples: 'fuzzy match with whitespace tolerance', '^export', 'Cargo.lock'.")),
|
|
44003
|
-
topK: arg3(optionalInt(1,
|
|
44015
|
+
topK: arg3(optionalInt(1, 50).describe("Number of results (default: 10, max: 50)")),
|
|
44004
44016
|
offset: arg3(optionalInt(0, 1e5).describe("Zero-based result offset (default: 0, max: 100000).")),
|
|
44005
44017
|
includeTests: arg3(z13.boolean().optional().describe("Include test files (*.test.*, *_test.rs, __tests__/, …) plus test-support, fixture, mock, snapshot, and corpus files. Defaults to false.")),
|
|
44006
44018
|
path: arg3(z13.string().optional().describe("Only set this to search a different Git project (absolute or ~ path). Omit it for the current configured workspace, including non-Git workspace roots; this is not a subdirectory filter. Unindexed external projects use a bounded lexical fallback."))
|
|
@@ -44016,7 +44028,7 @@ function semanticTools(ctx) {
|
|
|
44016
44028
|
if (denied)
|
|
44017
44029
|
return permissionDeniedResponse(denied);
|
|
44018
44030
|
const rawArgs = { query };
|
|
44019
|
-
const topK = coerceOptionalInt(args.topK, "topK", 1,
|
|
44031
|
+
const topK = coerceOptionalInt(args.topK, "topK", 1, 50);
|
|
44020
44032
|
const offset = coerceOptionalInt(args.offset, "offset", 0, 1e5);
|
|
44021
44033
|
const includeTests = typeof args.includeTests === "boolean" ? args.includeTests : undefined;
|
|
44022
44034
|
if (topK !== undefined)
|
|
@@ -45460,6 +45472,11 @@ function makeServerEffect(overrides = {}) {
|
|
|
45460
45472
|
const dependencies = { ...defaults, ...overrides };
|
|
45461
45473
|
return (context) => {
|
|
45462
45474
|
const location = context.location;
|
|
45475
|
+
if (typeof location?.directory !== "string") {
|
|
45476
|
+
debug2("V2 effect skipped: host context has no location");
|
|
45477
|
+
return Effect5.void;
|
|
45478
|
+
}
|
|
45479
|
+
log2("AFT V2 runtime starting");
|
|
45463
45480
|
return Effect5.gen(function* () {
|
|
45464
45481
|
const runtime = yield* Effect5.promise(() => bootLocation(context, location, dependencies));
|
|
45465
45482
|
if (!runtime)
|
package/dist/index.js
CHANGED
|
@@ -8677,6 +8677,7 @@ class BinaryBridge {
|
|
|
8677
8677
|
pending = new Map;
|
|
8678
8678
|
outstandingBackgroundTaskIds = new Set;
|
|
8679
8679
|
nextId = 1;
|
|
8680
|
+
processGeneration = 0;
|
|
8680
8681
|
stdoutBuffer = "";
|
|
8681
8682
|
stdoutReadOffset = 0;
|
|
8682
8683
|
stderrBuffer = "";
|
|
@@ -8989,6 +8990,7 @@ class BinaryBridge {
|
|
|
8989
8990
|
}
|
|
8990
8991
|
}
|
|
8991
8992
|
const id = String(this.nextId++);
|
|
8993
|
+
const tool = command === "tool_call" && typeof params.name === "string" ? params.name : command;
|
|
8992
8994
|
let request;
|
|
8993
8995
|
if (command === "cancel_request" || Object.hasOwn(params, "command") || Object.hasOwn(params, "method")) {
|
|
8994
8996
|
const nested = { ...params };
|
|
@@ -9042,14 +9044,20 @@ class BinaryBridge {
|
|
|
9042
9044
|
return;
|
|
9043
9045
|
}
|
|
9044
9046
|
entry.reject(new Error(`${this.errorPrefix} Request "${command}" (id=${id}) timed out after ${effectiveTimeoutMs}ms`));
|
|
9045
|
-
this.handleTimeout(
|
|
9047
|
+
this.handleTimeout({
|
|
9048
|
+
requestId: id,
|
|
9049
|
+
tool: entry.tool,
|
|
9050
|
+
generation: entry.generation
|
|
9051
|
+
}, requestSessionId);
|
|
9046
9052
|
}, effectiveTimeoutMs);
|
|
9047
9053
|
const entry = {
|
|
9048
9054
|
resolve,
|
|
9049
9055
|
reject,
|
|
9050
9056
|
timer,
|
|
9051
9057
|
onProgress: options?.onProgress,
|
|
9052
|
-
command
|
|
9058
|
+
command,
|
|
9059
|
+
tool,
|
|
9060
|
+
generation: this.processGeneration
|
|
9053
9061
|
};
|
|
9054
9062
|
this.pending.set(id, entry);
|
|
9055
9063
|
if (!child?.stdin?.writable) {
|
|
@@ -9352,6 +9360,7 @@ class BinaryBridge {
|
|
|
9352
9360
|
this.handleCrash();
|
|
9353
9361
|
});
|
|
9354
9362
|
this.process = child;
|
|
9363
|
+
this.processGeneration += 1;
|
|
9355
9364
|
this.spawnedBinaryFingerprint = readBinaryFingerprint(this.binaryPath);
|
|
9356
9365
|
this.lastBinaryFingerprintCheckAt = Date.now();
|
|
9357
9366
|
this.stdoutBuffer = "";
|
|
@@ -9523,10 +9532,15 @@ class BinaryBridge {
|
|
|
9523
9532
|
this.outstandingBackgroundTaskIds.add(taskId);
|
|
9524
9533
|
}
|
|
9525
9534
|
}
|
|
9526
|
-
handleTimeout(triggeringSessionId) {
|
|
9535
|
+
handleTimeout(trigger, triggeringSessionId) {
|
|
9527
9536
|
this.consecutiveRequestTimeouts = 0;
|
|
9528
9537
|
this.spawnedBinaryFingerprint = null;
|
|
9529
|
-
|
|
9538
|
+
const abortedSiblings = Array.from(this.pending, ([requestId, entry]) => ({
|
|
9539
|
+
request_id: requestId,
|
|
9540
|
+
tool: entry.tool
|
|
9541
|
+
}));
|
|
9542
|
+
const attribution = `triggering_request_id=${trigger.requestId} ` + `triggering_tool=${JSON.stringify(trigger.tool)} ` + `bridge_generation=${trigger.generation} ` + `aborted_siblings=${JSON.stringify(abortedSiblings)}`;
|
|
9543
|
+
this.rejectAllPending(new BridgeTransportUnknownOutcomeError(`${this.errorPrefix} bridge killed during sibling timeout — request aborted; ${attribution}`));
|
|
9530
9544
|
this.outstandingBackgroundTaskIds.clear();
|
|
9531
9545
|
if (this.process) {
|
|
9532
9546
|
this.process.kill("SIGKILL");
|
|
@@ -9536,17 +9550,11 @@ class BinaryBridge {
|
|
|
9536
9550
|
this.configured = false;
|
|
9537
9551
|
const tail = this.formatStderrTail();
|
|
9538
9552
|
this.stderrTail = [];
|
|
9539
|
-
const killedMsg = tail ? `Bridge killed after timeout.${tail}` : `Bridge killed after timeout (see ${this.getLogFilePathVia()})`;
|
|
9540
|
-
if (
|
|
9541
|
-
|
|
9542
|
-
this.sessionErrorVia(triggeringSessionId, killedMsg);
|
|
9543
|
-
} else {
|
|
9544
|
-
this.errorVia(killedMsg);
|
|
9545
|
-
}
|
|
9546
|
-
} else if (triggeringSessionId) {
|
|
9547
|
-
this.sessionWarnVia(triggeringSessionId, killedMsg);
|
|
9553
|
+
const killedMsg = tail ? `Bridge killed after timeout; ${attribution}.${tail}` : `Bridge killed after timeout; ${attribution} (see ${this.getLogFilePathVia()})`;
|
|
9554
|
+
if (triggeringSessionId) {
|
|
9555
|
+
this.sessionErrorVia(triggeringSessionId, killedMsg);
|
|
9548
9556
|
} else {
|
|
9549
|
-
this.
|
|
9557
|
+
this.errorVia(killedMsg);
|
|
9550
9558
|
}
|
|
9551
9559
|
}
|
|
9552
9560
|
handleCrash(cause) {
|
|
@@ -21492,6 +21500,9 @@ function write(level, message, data, sessionId) {
|
|
|
21492
21500
|
function log2(message, data) {
|
|
21493
21501
|
write("INFO", message, data);
|
|
21494
21502
|
}
|
|
21503
|
+
function debug2(message, data) {
|
|
21504
|
+
write("DEBUG", message, data);
|
|
21505
|
+
}
|
|
21495
21506
|
function warn2(message, data) {
|
|
21496
21507
|
write("WARN", message, data);
|
|
21497
21508
|
}
|
|
@@ -21690,6 +21701,7 @@ var InspectConfigSchema = object({
|
|
|
21690
21701
|
enabled: boolean2().optional(),
|
|
21691
21702
|
diagnostics_timeout_ms: number2().int().positive().optional().transform((value) => value === undefined ? undefined : clampInspectDiagnosticsTimeoutMs(value)),
|
|
21692
21703
|
tier2_idle_minutes: number2().min(0).optional(),
|
|
21704
|
+
tier2_pass_timeout_ms: number2().int().positive().optional(),
|
|
21693
21705
|
categories: record(string2(), boolean2()).optional(),
|
|
21694
21706
|
tier2_soft_deadline_ms: number2().int().positive().optional(),
|
|
21695
21707
|
max_drill_down_items: number2().int().positive().max(100).optional(),
|
|
@@ -44000,7 +44012,7 @@ function semanticTools(ctx) {
|
|
|
44000
44012
|
`),
|
|
44001
44013
|
args: {
|
|
44002
44014
|
query: arg3(z13.string().describe("Concept, regex, literal text, filename, or capability to find. Examples: 'fuzzy match with whitespace tolerance', '^export', 'Cargo.lock'.")),
|
|
44003
|
-
topK: arg3(optionalInt(1,
|
|
44015
|
+
topK: arg3(optionalInt(1, 50).describe("Number of results (default: 10, max: 50)")),
|
|
44004
44016
|
offset: arg3(optionalInt(0, 1e5).describe("Zero-based result offset (default: 0, max: 100000).")),
|
|
44005
44017
|
includeTests: arg3(z13.boolean().optional().describe("Include test files (*.test.*, *_test.rs, __tests__/, …) plus test-support, fixture, mock, snapshot, and corpus files. Defaults to false.")),
|
|
44006
44018
|
path: arg3(z13.string().optional().describe("Only set this to search a different Git project (absolute or ~ path). Omit it for the current configured workspace, including non-Git workspace roots; this is not a subdirectory filter. Unindexed external projects use a bounded lexical fallback."))
|
|
@@ -44016,7 +44028,7 @@ function semanticTools(ctx) {
|
|
|
44016
44028
|
if (denied)
|
|
44017
44029
|
return permissionDeniedResponse(denied);
|
|
44018
44030
|
const rawArgs = { query };
|
|
44019
|
-
const topK = coerceOptionalInt(args.topK, "topK", 1,
|
|
44031
|
+
const topK = coerceOptionalInt(args.topK, "topK", 1, 50);
|
|
44020
44032
|
const offset = coerceOptionalInt(args.offset, "offset", 0, 1e5);
|
|
44021
44033
|
const includeTests = typeof args.includeTests === "boolean" ? args.includeTests : undefined;
|
|
44022
44034
|
if (topK !== undefined)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cortexkit/aft-opencode",
|
|
3
|
-
"version": "0.56.
|
|
3
|
+
"version": "0.56.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "OpenCode plugin for Agent File Tools (AFT) — tree-sitter and lsp powered code analysis",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@clack/prompts": "^1.6.0",
|
|
39
|
-
"@cortexkit/aft-bridge": "0.56.
|
|
39
|
+
"@cortexkit/aft-bridge": "0.56.2",
|
|
40
40
|
"@opentui/core": "0.4.3",
|
|
41
41
|
"@opentui/solid": "0.4.3",
|
|
42
42
|
"comment-json": "^4.6.2",
|
|
@@ -46,12 +46,12 @@
|
|
|
46
46
|
"zod": "^4.4.3"
|
|
47
47
|
},
|
|
48
48
|
"optionalDependencies": {
|
|
49
|
-
"@cortexkit/aft-darwin-arm64": "0.56.
|
|
50
|
-
"@cortexkit/aft-darwin-x64": "0.56.
|
|
51
|
-
"@cortexkit/aft-linux-arm64": "0.56.
|
|
52
|
-
"@cortexkit/aft-linux-x64": "0.56.
|
|
53
|
-
"@cortexkit/aft-win32-arm64": "0.56.
|
|
54
|
-
"@cortexkit/aft-win32-x64": "0.56.
|
|
49
|
+
"@cortexkit/aft-darwin-arm64": "0.56.2",
|
|
50
|
+
"@cortexkit/aft-darwin-x64": "0.56.2",
|
|
51
|
+
"@cortexkit/aft-linux-arm64": "0.56.2",
|
|
52
|
+
"@cortexkit/aft-linux-x64": "0.56.2",
|
|
53
|
+
"@cortexkit/aft-win32-arm64": "0.56.2",
|
|
54
|
+
"@cortexkit/aft-win32-x64": "0.56.2"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@opencode-ai/plugin": "^1.17.11",
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
loadAftConfig,
|
|
12
12
|
resolveBridgePoolTransportOptions,
|
|
13
13
|
} from "../config.js";
|
|
14
|
+
import { debug, log } from "../logger.js";
|
|
14
15
|
import { resolvePluginVersion } from "../plugin-version.js";
|
|
15
16
|
import { registerAftRpc } from "../rpc/register.js";
|
|
16
17
|
import { hoistedV2ToolConsumers } from "../tools/hoisted/v2.js";
|
|
@@ -83,6 +84,16 @@ export function makeServerEffect(overrides = {}) {
|
|
|
83
84
|
// The V2 host already resolved the Location before invoking the plugin. Capture
|
|
84
85
|
// it now so every registration and transport route belongs to that exact scope.
|
|
85
86
|
const location = context.location;
|
|
87
|
+
// A V1 host's bundled core loader can decode {id, effect} and call this
|
|
88
|
+
// function with a PluginHost context that has no location. Throws inside the
|
|
89
|
+
// boot body are discarded by Effect.ignoreCause, so skip when that
|
|
90
|
+
// capability is missing rather than relying on the throw.
|
|
91
|
+
if (typeof location?.directory !== "string") {
|
|
92
|
+
debug("V2 effect skipped: host context has no location");
|
|
93
|
+
return Effect.void;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
log("AFT V2 runtime starting");
|
|
86
97
|
|
|
87
98
|
return Effect.gen(function* () {
|
|
88
99
|
const runtime = yield* Effect.promise(() => bootLocation(context, location, dependencies));
|