@cortexkit/aft-pi 0.45.1 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.d.ts +0 -18
- package/dist/config.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +297 -114
- package/dist/tools/hoisted.d.ts +17 -4
- package/dist/tools/hoisted.d.ts.map +1 -1
- package/dist/tools/semantic.d.ts +1 -0
- package/dist/tools/semantic.d.ts.map +1 -1
- package/package.json +8 -8
package/dist/config.d.ts
CHANGED
|
@@ -47,16 +47,7 @@ export interface InspectConfig {
|
|
|
47
47
|
tier2_soft_deadline_ms?: number;
|
|
48
48
|
max_drill_down_items?: number;
|
|
49
49
|
duplicates?: {
|
|
50
|
-
lower_bound?: number;
|
|
51
|
-
discard_cost?: number;
|
|
52
50
|
expected_mirrors?: [string, string][];
|
|
53
|
-
anonymize?: {
|
|
54
|
-
variables?: boolean;
|
|
55
|
-
fields?: boolean;
|
|
56
|
-
methods?: boolean;
|
|
57
|
-
types?: boolean;
|
|
58
|
-
literals?: boolean;
|
|
59
|
-
};
|
|
60
51
|
};
|
|
61
52
|
}
|
|
62
53
|
export interface BackupConfig {
|
|
@@ -264,16 +255,7 @@ export declare const AftConfigSchema: z.ZodObject<{
|
|
|
264
255
|
tier2_soft_deadline_ms: z.ZodOptional<z.ZodNumber>;
|
|
265
256
|
max_drill_down_items: z.ZodOptional<z.ZodNumber>;
|
|
266
257
|
duplicates: z.ZodOptional<z.ZodObject<{
|
|
267
|
-
lower_bound: z.ZodOptional<z.ZodNumber>;
|
|
268
|
-
discard_cost: z.ZodOptional<z.ZodNumber>;
|
|
269
258
|
expected_mirrors: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodString, z.ZodString], null>>>;
|
|
270
|
-
anonymize: z.ZodOptional<z.ZodObject<{
|
|
271
|
-
variables: z.ZodOptional<z.ZodBoolean>;
|
|
272
|
-
fields: z.ZodOptional<z.ZodBoolean>;
|
|
273
|
-
methods: z.ZodOptional<z.ZodBoolean>;
|
|
274
|
-
types: z.ZodOptional<z.ZodBoolean>;
|
|
275
|
-
literals: z.ZodOptional<z.ZodBoolean>;
|
|
276
|
-
}, z.core.$strip>>;
|
|
277
259
|
}, z.core.$strip>>;
|
|
278
260
|
}, z.core.$strip>>;
|
|
279
261
|
backup: z.ZodOptional<z.ZodObject<{
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,UAAU,EAMhB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,MAAM,MAAM,SAAS,GACjB,OAAO,GACP,OAAO,GACP,UAAU,GACV,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,CAAC;AAEX,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,OAAO,GACP,SAAS,GACT,MAAM,GACN,OAAO,GACP,IAAI,GACJ,aAAa,GACb,MAAM,CAAC;AAEX,gFAAgF;AAChF,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEjE,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,mBAAmB,GAAG,QAAQ,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE;QACX,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAgBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAUpE,OAAO,EACL,KAAK,SAAS,EAGd,mBAAmB,EACnB,aAAa,EAId,MAAM,aAAa,CAAC;AA6DrB,KAAK,mBAAmB,GAAG;IACzB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C,CAAC;AAEF,iBAAS,4BAA4B,CACnC,OAAO,EAAE,MAAM,mBAAmB,GAAG,SAAS,EAC9C,sBAAsB,GAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAgB,IAOrE,eAAe,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyCjF;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAgBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAUpE,OAAO,EACL,KAAK,SAAS,EAGd,mBAAmB,EACnB,aAAa,EAId,MAAM,aAAa,CAAC;AA6DrB,KAAK,mBAAmB,GAAG;IACzB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C,CAAC;AAEF,iBAAS,4BAA4B,CACnC,OAAO,EAAE,MAAM,mBAAmB,GAAG,SAAS,EAC9C,sBAAsB,GAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAgB,IAOrE,eAAe,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyCjF;AA4ED,iBAAS,0BAA0B,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,GAC7C,IAAI,CAUN;AAED,iBAAS,wBAAwB,CAC/B,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,UAAU,CAAC,GACtD,OAAO,CAGT;AAED,iBAAS,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG9E;AASD,iBAAe,iCAAiC,CAAC,OAAO,EAAE;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC,OAAO,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC1E,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoChB;AAED;;;;;;;;GAQG;AACH,iBAAS,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,GAAG;IACrE,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAqEA;AAED;;;;GAIG;AACH,yBAA+B,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAohB9D;AAED,eAAO,MAAM,QAAQ;;;;;;;CAOpB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11860,11 +11860,11 @@ class BridgePool {
|
|
|
11860
11860
|
function normalizeKey(projectRoot) {
|
|
11861
11861
|
return canonicalizeProjectRoot(projectRoot);
|
|
11862
11862
|
}
|
|
11863
|
-
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.
|
|
11863
|
+
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.4/node_modules/@cortexkit/subc-client/dist/client.js
|
|
11864
11864
|
import { promises as fs2 } from "node:fs";
|
|
11865
11865
|
import { debuglog } from "node:util";
|
|
11866
11866
|
|
|
11867
|
-
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.
|
|
11867
|
+
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.4/node_modules/@cortexkit/subc-client/dist/auth.js
|
|
11868
11868
|
import { createHmac, randomBytes, timingSafeEqual } from "node:crypto";
|
|
11869
11869
|
var NONCE_LEN = 32;
|
|
11870
11870
|
var MAX_AUTH_MESSAGE_LEN = 4096;
|
|
@@ -11928,7 +11928,7 @@ async function authenticateClient(sock, conn, deadlineMs) {
|
|
|
11928
11928
|
await writeMessage(sock, { client_auth: Array.from(clientAuth) }, deadlineMs);
|
|
11929
11929
|
}
|
|
11930
11930
|
|
|
11931
|
-
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.
|
|
11931
|
+
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.4/node_modules/@cortexkit/subc-client/dist/connection-file.js
|
|
11932
11932
|
import { promises as fs } from "node:fs";
|
|
11933
11933
|
var SCHEMA_VERSION = 1;
|
|
11934
11934
|
var MIN_KEY_LEN = 32;
|
|
@@ -11997,13 +11997,13 @@ async function readConnectionFile(path2) {
|
|
|
11997
11997
|
return info;
|
|
11998
11998
|
}
|
|
11999
11999
|
|
|
12000
|
-
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.
|
|
12000
|
+
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.4/node_modules/@cortexkit/subc-client/dist/envelope.js
|
|
12001
12001
|
var PROTOCOL_VERSION = 1;
|
|
12002
12002
|
var HEADER_LEN = 17;
|
|
12003
12003
|
var FROZEN_PREFIX_LEN = 5;
|
|
12004
12004
|
var MAX_FRAME_BODY_LEN = 64 * 1024 * 1024;
|
|
12005
12005
|
var FrameType;
|
|
12006
|
-
((FrameType2)
|
|
12006
|
+
(function(FrameType2) {
|
|
12007
12007
|
FrameType2[FrameType2["Request"] = 0] = "Request";
|
|
12008
12008
|
FrameType2[FrameType2["Response"] = 1] = "Response";
|
|
12009
12009
|
FrameType2[FrameType2["Push"] = 2] = "Push";
|
|
@@ -12016,11 +12016,17 @@ var FrameType;
|
|
|
12016
12016
|
FrameType2[FrameType2["Hello"] = 9] = "Hello";
|
|
12017
12017
|
FrameType2[FrameType2["HelloAck"] = 10] = "HelloAck";
|
|
12018
12018
|
FrameType2[FrameType2["Goodbye"] = 11] = "Goodbye";
|
|
12019
|
-
})(FrameType
|
|
12020
|
-
var FRAME_TYPE_MAX =
|
|
12019
|
+
})(FrameType || (FrameType = {}));
|
|
12020
|
+
var FRAME_TYPE_MAX = FrameType.Goodbye;
|
|
12021
12021
|
function isPureHeader(ty) {
|
|
12022
|
-
return ty ===
|
|
12023
|
-
}
|
|
12022
|
+
return ty === FrameType.Cancel || ty === FrameType.Ping || ty === FrameType.Pong || ty === FrameType.Goodbye;
|
|
12023
|
+
}
|
|
12024
|
+
var Priority;
|
|
12025
|
+
(function(Priority2) {
|
|
12026
|
+
Priority2[Priority2["Passive"] = 0] = "Passive";
|
|
12027
|
+
Priority2[Priority2["Interactive"] = 1] = "Interactive";
|
|
12028
|
+
Priority2[Priority2["Background"] = 2] = "Background";
|
|
12029
|
+
})(Priority || (Priority = {}));
|
|
12024
12030
|
var FLAG_BINARY = 1;
|
|
12025
12031
|
var FLAG_PRIORITY_MASK = 6;
|
|
12026
12032
|
var FLAG_PRIORITY_SHIFT = 1;
|
|
@@ -12104,7 +12110,7 @@ function encodeFrame(frame) {
|
|
|
12104
12110
|
return out;
|
|
12105
12111
|
}
|
|
12106
12112
|
|
|
12107
|
-
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.
|
|
12113
|
+
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.4/node_modules/@cortexkit/subc-client/dist/socket.js
|
|
12108
12114
|
import net from "node:net";
|
|
12109
12115
|
|
|
12110
12116
|
class SocketClosedError extends Error {
|
|
@@ -12296,14 +12302,14 @@ class SubcSocket {
|
|
|
12296
12302
|
}
|
|
12297
12303
|
}
|
|
12298
12304
|
|
|
12299
|
-
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.
|
|
12305
|
+
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.4/node_modules/@cortexkit/subc-client/dist/client.js
|
|
12300
12306
|
var debug = debuglog("subc-client");
|
|
12301
12307
|
var DEFAULT_HANDSHAKE_TIMEOUT_MS = 1e4;
|
|
12302
12308
|
var DEFAULT_REQUEST_TIMEOUT_MS = 30000;
|
|
12303
12309
|
var TIMEOUT_ARBITRATION_GRACE_MS = 50;
|
|
12304
12310
|
var REQUEST_DEADLINE_MARKER = "request_deadline";
|
|
12305
12311
|
var DEADLINE_NO_DROP_CODE = "deadline_exceeded_no_drop_observed";
|
|
12306
|
-
var ROUTE_OPEN_RETRY_DEADLINE_MS =
|
|
12312
|
+
var ROUTE_OPEN_RETRY_DEADLINE_MS = 30000;
|
|
12307
12313
|
var BODY_READ_TIMEOUT_MS = 30000;
|
|
12308
12314
|
var EMPTY_BODY = new Uint8Array(0);
|
|
12309
12315
|
var DEFAULT_MANAGED_TARGET_KIND = "management_surface";
|
|
@@ -12385,12 +12391,13 @@ class SubcClient {
|
|
|
12385
12391
|
}
|
|
12386
12392
|
async request(routeChannel, body, opts = {}) {
|
|
12387
12393
|
const bytes = body instanceof Uint8Array ? body : this.encode(body);
|
|
12388
|
-
const priority = opts.priority ??
|
|
12394
|
+
const priority = opts.priority ?? Priority.Interactive;
|
|
12389
12395
|
const reply = await this.send(routeChannel, bytes, priority, opts.timeoutMs, opts.onProgress);
|
|
12390
12396
|
return this.parseJson(reply);
|
|
12391
12397
|
}
|
|
12392
12398
|
async call(moduleId, method, params, opts = {}) {
|
|
12393
12399
|
const body = params === undefined ? { method } : { method, params };
|
|
12400
|
+
let retriedUnknownChannel = false;
|
|
12394
12401
|
for (;; ) {
|
|
12395
12402
|
const routeChannel = await this.cachedRouteChannel(moduleId, opts);
|
|
12396
12403
|
try {
|
|
@@ -12398,6 +12405,11 @@ class SubcClient {
|
|
|
12398
12405
|
} catch (err) {
|
|
12399
12406
|
if (!(err instanceof SubcCallError))
|
|
12400
12407
|
throw this.terminalCallError("managed call failed", err);
|
|
12408
|
+
if (err.code === "unknown_channel" && !retriedUnknownChannel && !this.closeStarted) {
|
|
12409
|
+
retriedUnknownChannel = true;
|
|
12410
|
+
this.evictRouteChannel(routeChannel);
|
|
12411
|
+
continue;
|
|
12412
|
+
}
|
|
12401
12413
|
if (err.kind === "not_sent") {
|
|
12402
12414
|
try {
|
|
12403
12415
|
await this.reconnectAfterDrop(err);
|
|
@@ -12415,7 +12427,7 @@ class SubcClient {
|
|
|
12415
12427
|
}
|
|
12416
12428
|
subscribe(routeChannel, body, onEvent, opts = {}) {
|
|
12417
12429
|
const bytes = body instanceof Uint8Array ? body : this.encode(body);
|
|
12418
|
-
const priority = opts.priority ??
|
|
12430
|
+
const priority = opts.priority ?? Priority.Interactive;
|
|
12419
12431
|
const corr = this.nextCorr++;
|
|
12420
12432
|
const key = `${routeChannel}:${corr}`;
|
|
12421
12433
|
const closed = new Promise((resolve7, reject) => {
|
|
@@ -12431,7 +12443,7 @@ class SubcClient {
|
|
|
12431
12443
|
timer: null,
|
|
12432
12444
|
subscription: true
|
|
12433
12445
|
});
|
|
12434
|
-
const frame = buildFrame(
|
|
12446
|
+
const frame = buildFrame(FrameType.Request, buildFlags(false, priority, false), routeChannel, corr, bytes);
|
|
12435
12447
|
this.sock.write(encodeFrame(frame), Date.now() + DEFAULT_REQUEST_TIMEOUT_MS).catch((err) => {
|
|
12436
12448
|
const p = this.pending.get(key);
|
|
12437
12449
|
if (p)
|
|
@@ -12443,7 +12455,7 @@ class SubcClient {
|
|
|
12443
12455
|
if (cancelled)
|
|
12444
12456
|
return;
|
|
12445
12457
|
cancelled = true;
|
|
12446
|
-
const cancel = buildFrame(
|
|
12458
|
+
const cancel = buildFrame(FrameType.Cancel, buildFlags(false, priority, false), routeChannel, corr, EMPTY_BODY);
|
|
12447
12459
|
this.sock.write(encodeFrame(cancel), Date.now() + DEFAULT_REQUEST_TIMEOUT_MS).catch(() => {});
|
|
12448
12460
|
};
|
|
12449
12461
|
return { unsubscribe, closed };
|
|
@@ -12494,7 +12506,7 @@ class SubcClient {
|
|
|
12494
12506
|
sendRouteGoodbye(channel) {
|
|
12495
12507
|
if (this.closedErr)
|
|
12496
12508
|
return;
|
|
12497
|
-
const goodbye = buildFrame(
|
|
12509
|
+
const goodbye = buildFrame(FrameType.Goodbye, buildFlags(false, Priority.Interactive, false), channel, 0n, EMPTY_BODY);
|
|
12498
12510
|
this.sock.write(encodeFrame(goodbye), Date.now() + DEFAULT_REQUEST_TIMEOUT_MS).catch(() => {});
|
|
12499
12511
|
}
|
|
12500
12512
|
static async openConnection(opts) {
|
|
@@ -12511,14 +12523,14 @@ class SubcClient {
|
|
|
12511
12523
|
return { sock, conn };
|
|
12512
12524
|
}
|
|
12513
12525
|
async controlRpc(body) {
|
|
12514
|
-
return this.send(0, body,
|
|
12526
|
+
return this.send(0, body, Priority.Interactive, undefined, undefined);
|
|
12515
12527
|
}
|
|
12516
12528
|
send(channel, body, priority, timeoutMs, onProgress) {
|
|
12517
12529
|
if (this.closedErr)
|
|
12518
12530
|
return Promise.reject(this.closedErr);
|
|
12519
12531
|
const corr = this.nextCorr++;
|
|
12520
12532
|
const key = `${channel}:${corr}`;
|
|
12521
|
-
const frame = buildFrame(
|
|
12533
|
+
const frame = buildFrame(FrameType.Request, buildFlags(false, priority, false), channel, corr, body);
|
|
12522
12534
|
return new Promise((resolve7, reject) => {
|
|
12523
12535
|
const ms = timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
|
|
12524
12536
|
const pending = {
|
|
@@ -12558,7 +12570,7 @@ class SubcClient {
|
|
|
12558
12570
|
}
|
|
12559
12571
|
async managedRequest(routeChannel, body, opts) {
|
|
12560
12572
|
const bytes = body instanceof Uint8Array ? body : this.encode(body);
|
|
12561
|
-
const priority = opts.priority ??
|
|
12573
|
+
const priority = opts.priority ?? Priority.Interactive;
|
|
12562
12574
|
try {
|
|
12563
12575
|
const reply = await this.sendManaged(routeChannel, bytes, priority, opts.timeoutMs, opts.onProgress);
|
|
12564
12576
|
return this.parseJson(reply);
|
|
@@ -12574,7 +12586,7 @@ class SubcClient {
|
|
|
12574
12586
|
}
|
|
12575
12587
|
const corr = this.nextCorr++;
|
|
12576
12588
|
const key = `${channel}:${corr}`;
|
|
12577
|
-
const frame = buildFrame(
|
|
12589
|
+
const frame = buildFrame(FrameType.Request, buildFlags(false, priority, false), channel, corr, body);
|
|
12578
12590
|
let handedToSocket = false;
|
|
12579
12591
|
const classifyFailure = (err) => {
|
|
12580
12592
|
if (!handedToSocket) {
|
|
@@ -12733,6 +12745,9 @@ class SubcClient {
|
|
|
12733
12745
|
return;
|
|
12734
12746
|
} catch (err) {
|
|
12735
12747
|
if (!isConsumerReconnectTransient(err) || attempt >= this.opts.reconnectBackoff.maxAttempts) {
|
|
12748
|
+
if (err instanceof AuthError && attempt > 1) {
|
|
12749
|
+
throw new AuthError(`reconnect gave up after ${attempt} attempts: ${err.message} — the connection file and the daemon's key disagree persistently ` + `(daemon restarting in a loop, split connection-file paths, or a genuinely foreign daemon on this port); ` + `check the daemon, then restart this host app`);
|
|
12750
|
+
}
|
|
12736
12751
|
throw err;
|
|
12737
12752
|
}
|
|
12738
12753
|
await this.opts.sleep(delay);
|
|
@@ -12801,26 +12816,27 @@ class SubcClient {
|
|
|
12801
12816
|
const pending = this.pending.get(key);
|
|
12802
12817
|
if (pending) {
|
|
12803
12818
|
switch (frame.header.ty) {
|
|
12804
|
-
case
|
|
12805
|
-
case
|
|
12819
|
+
case FrameType.Push:
|
|
12820
|
+
case FrameType.StreamData:
|
|
12806
12821
|
pending.onProgress?.(frame.body);
|
|
12807
12822
|
return;
|
|
12808
|
-
case
|
|
12809
|
-
case
|
|
12823
|
+
case FrameType.Response:
|
|
12824
|
+
case FrameType.StreamEnd:
|
|
12810
12825
|
this.settle(key, pending, () => pending.resolve(frame));
|
|
12811
12826
|
return;
|
|
12812
|
-
case
|
|
12827
|
+
case FrameType.Error:
|
|
12813
12828
|
this.settle(key, pending, () => pending.reject(this.errorFromFrame(frame)));
|
|
12814
12829
|
return;
|
|
12815
12830
|
default:
|
|
12816
12831
|
return;
|
|
12817
12832
|
}
|
|
12818
12833
|
}
|
|
12819
|
-
if (frame.header.ty ===
|
|
12834
|
+
if (frame.header.ty === FrameType.Goodbye) {
|
|
12820
12835
|
this.failChannel(frame.header.channel, new SubcError("route closed by subc (GOODBYE)"));
|
|
12836
|
+
this.evictRouteChannel(frame.header.channel);
|
|
12821
12837
|
return;
|
|
12822
12838
|
}
|
|
12823
|
-
if (frame.header.ty ===
|
|
12839
|
+
if (frame.header.ty === FrameType.Response || frame.header.ty === FrameType.Error || frame.header.ty === FrameType.StreamEnd) {
|
|
12824
12840
|
debug("dropped terminal frame with no waiter: type=%d channel=%d corr=%s port=%s", frame.header.ty, frame.header.channel, frame.header.corr, this.sock.localPort() ?? "?");
|
|
12825
12841
|
return;
|
|
12826
12842
|
}
|
|
@@ -12846,6 +12862,13 @@ class SubcClient {
|
|
|
12846
12862
|
return new SubcError(Buffer.from(frame.body).toString("utf8") || "subc error");
|
|
12847
12863
|
}
|
|
12848
12864
|
}
|
|
12865
|
+
evictRouteChannel(channel) {
|
|
12866
|
+
for (const cached of this.routes.values()) {
|
|
12867
|
+
if (cached.channel === channel && cached.generation === this.generation) {
|
|
12868
|
+
cached.channel = null;
|
|
12869
|
+
}
|
|
12870
|
+
}
|
|
12871
|
+
}
|
|
12849
12872
|
failChannel(channel, err) {
|
|
12850
12873
|
for (const [key, pending] of this.pending) {
|
|
12851
12874
|
if (pending.channel === channel) {
|
|
@@ -12892,7 +12915,9 @@ function isConsumerReconnectTransient(err) {
|
|
|
12892
12915
|
return true;
|
|
12893
12916
|
if (err instanceof SubcCallError)
|
|
12894
12917
|
return err.kind === "not_sent" || err.kind === "outcome_unknown";
|
|
12895
|
-
if (err instanceof
|
|
12918
|
+
if (err instanceof AuthError)
|
|
12919
|
+
return true;
|
|
12920
|
+
if (err instanceof SubcError || err instanceof ConnectionFileError)
|
|
12896
12921
|
return false;
|
|
12897
12922
|
const code = errorCode(err);
|
|
12898
12923
|
return code === "ECONNREFUSED" || code === "ECONNRESET" || code === "EPIPE" || code === "ETIMEDOUT" || code === "ENOENT";
|
|
@@ -12945,14 +12970,51 @@ function causeMessage(cause) {
|
|
|
12945
12970
|
return "";
|
|
12946
12971
|
return `: ${cause instanceof Error ? cause.message : String(cause)}`;
|
|
12947
12972
|
}
|
|
12948
|
-
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.
|
|
12973
|
+
// ../../node_modules/.bun/@cortexkit+subc-client@0.3.4/node_modules/@cortexkit/subc-client/dist/provider.js
|
|
12949
12974
|
import { Buffer as Buffer2 } from "node:buffer";
|
|
12950
12975
|
var DEFAULT_HANDSHAKE_TIMEOUT_MS2 = 1e4;
|
|
12951
12976
|
var BODY_READ_TIMEOUT_MS2 = 30000;
|
|
12952
12977
|
var WRITE_TIMEOUT_MS = 30000;
|
|
12953
12978
|
var DEFAULT_RESTORED_DEBOUNCE_MS = 250;
|
|
12979
|
+
var DEFAULT_PROVIDER_HANDLER_CAPACITY = 64;
|
|
12980
|
+
var HEALTH_CHECK_OP = "health.check";
|
|
12954
12981
|
var HELLO_CORR = 1n;
|
|
12955
12982
|
|
|
12983
|
+
class AsyncPermitPool {
|
|
12984
|
+
available;
|
|
12985
|
+
waiters = [];
|
|
12986
|
+
constructor(capacity) {
|
|
12987
|
+
if (!Number.isInteger(capacity) || capacity <= 0) {
|
|
12988
|
+
throw new SubcProviderError("provider handler capacity must be a positive integer", "invalid_handler_capacity");
|
|
12989
|
+
}
|
|
12990
|
+
this.available = capacity;
|
|
12991
|
+
}
|
|
12992
|
+
async acquire() {
|
|
12993
|
+
if (this.available > 0) {
|
|
12994
|
+
this.available -= 1;
|
|
12995
|
+
return this.releaseOnce();
|
|
12996
|
+
}
|
|
12997
|
+
await new Promise((resolve7) => {
|
|
12998
|
+
this.waiters.push(resolve7);
|
|
12999
|
+
});
|
|
13000
|
+
return this.releaseOnce();
|
|
13001
|
+
}
|
|
13002
|
+
releaseOnce() {
|
|
13003
|
+
let released = false;
|
|
13004
|
+
return () => {
|
|
13005
|
+
if (released)
|
|
13006
|
+
return;
|
|
13007
|
+
released = true;
|
|
13008
|
+
const next = this.waiters.shift();
|
|
13009
|
+
if (next) {
|
|
13010
|
+
next();
|
|
13011
|
+
} else {
|
|
13012
|
+
this.available += 1;
|
|
13013
|
+
}
|
|
13014
|
+
};
|
|
13015
|
+
}
|
|
13016
|
+
}
|
|
13017
|
+
|
|
12956
13018
|
class SubcProviderError extends Error {
|
|
12957
13019
|
code;
|
|
12958
13020
|
constructor(message, code) {
|
|
@@ -12971,6 +13033,7 @@ class SubcProvider {
|
|
|
12971
13033
|
closeStarted = false;
|
|
12972
13034
|
closedErr = null;
|
|
12973
13035
|
inflight = new Map;
|
|
13036
|
+
requestGate = new AsyncPermitPool(DEFAULT_PROVIDER_HANDLER_CAPACITY);
|
|
12974
13037
|
reconnecting = null;
|
|
12975
13038
|
generation = 1;
|
|
12976
13039
|
connectionEpoch = 1;
|
|
@@ -13009,7 +13072,7 @@ class SubcProvider {
|
|
|
13009
13072
|
this.cancelRestoredDebounce();
|
|
13010
13073
|
const sock = this.sock;
|
|
13011
13074
|
try {
|
|
13012
|
-
await sendFrame(sock, buildFrame(
|
|
13075
|
+
await sendFrame(sock, buildFrame(FrameType.Goodbye, controlFlags(), 0, 0n, new Uint8Array(0)));
|
|
13013
13076
|
} catch {} finally {
|
|
13014
13077
|
sock.close();
|
|
13015
13078
|
this.finishClosed();
|
|
@@ -13060,21 +13123,21 @@ class SubcProvider {
|
|
|
13060
13123
|
}
|
|
13061
13124
|
async dispatch(frame, sock, generation) {
|
|
13062
13125
|
switch (frame.header.ty) {
|
|
13063
|
-
case
|
|
13126
|
+
case FrameType.Ping:
|
|
13064
13127
|
if (frame.header.channel === 0) {
|
|
13065
|
-
await this.sendOn(sock, generation, buildFrameWithVersion(frame.header.ver,
|
|
13128
|
+
await this.sendOn(sock, generation, buildFrameWithVersion(frame.header.ver, FrameType.Pong, frame.header.flags, 0, frame.header.corr, new Uint8Array(0)));
|
|
13066
13129
|
}
|
|
13067
13130
|
return true;
|
|
13068
|
-
case
|
|
13131
|
+
case FrameType.Goodbye:
|
|
13069
13132
|
if (frame.header.channel === 0)
|
|
13070
13133
|
return false;
|
|
13071
13134
|
this.abortChannel(generation, frame.header.channel);
|
|
13072
13135
|
await this.opts.onRouteGone?.(frame.header.channel);
|
|
13073
13136
|
return true;
|
|
13074
|
-
case
|
|
13137
|
+
case FrameType.Cancel:
|
|
13075
13138
|
this.inflight.get(routeKey(generation, frame.header.channel, frame.header.corr))?.abort();
|
|
13076
13139
|
return true;
|
|
13077
|
-
case
|
|
13140
|
+
case FrameType.Request:
|
|
13078
13141
|
if (frame.header.channel === 0) {
|
|
13079
13142
|
await this.handleControlRequest(frame, sock, generation);
|
|
13080
13143
|
} else {
|
|
@@ -13109,6 +13172,14 @@ class SubcProvider {
|
|
|
13109
13172
|
}
|
|
13110
13173
|
async handleControlRequest(frame, sock, generation) {
|
|
13111
13174
|
const request = parseJson(frame.body);
|
|
13175
|
+
if (request.op === HEALTH_CHECK_OP) {
|
|
13176
|
+
this.handleHealthRequest(frame, sock, generation).catch((err) => {
|
|
13177
|
+
if (!this.closeStarted && this.sock === sock && this.generation === generation) {
|
|
13178
|
+
console.warn("SubcProvider health handler failed after its request was dispatched", err);
|
|
13179
|
+
}
|
|
13180
|
+
});
|
|
13181
|
+
return;
|
|
13182
|
+
}
|
|
13112
13183
|
if (request.op !== "route.bind") {
|
|
13113
13184
|
throw new SubcProviderError(`unsupported module control request ${request.op ?? "<missing op>"}`);
|
|
13114
13185
|
}
|
|
@@ -13124,41 +13195,67 @@ class SubcProvider {
|
|
|
13124
13195
|
await this.sendError(frame, rejection.code, rejection.message, controlFlags(), sock, generation);
|
|
13125
13196
|
return;
|
|
13126
13197
|
}
|
|
13127
|
-
await this.sendOn(sock, generation, buildFrameWithVersion(frame.header.ver,
|
|
13198
|
+
await this.sendOn(sock, generation, buildFrameWithVersion(frame.header.ver, FrameType.Response, controlFlags(), 0, frame.header.corr, encodeJson({ op: "route.bind" })));
|
|
13128
13199
|
}
|
|
13129
13200
|
async handleDataRequest(frame, sock, generation) {
|
|
13130
13201
|
const { channel, corr, ver } = frame.header;
|
|
13131
13202
|
const key = routeKey(generation, channel, corr);
|
|
13132
13203
|
const controller = new AbortController;
|
|
13133
13204
|
this.inflight.set(key, controller);
|
|
13134
|
-
const dataFlags = buildFlags(false,
|
|
13205
|
+
const dataFlags = buildFlags(false, Priority.Interactive, false);
|
|
13135
13206
|
const ctx = {
|
|
13136
13207
|
signal: controller.signal,
|
|
13137
13208
|
currentEpoch: () => this.connectionEpoch,
|
|
13138
13209
|
emit: async (eventBody) => {
|
|
13139
13210
|
if (controller.signal.aborted)
|
|
13140
13211
|
return;
|
|
13141
|
-
await this.sendOn(sock, generation, buildFrameWithVersion(ver,
|
|
13212
|
+
await this.sendOn(sock, generation, buildFrameWithVersion(ver, FrameType.StreamData, dataFlags, channel, corr, eventBody));
|
|
13142
13213
|
}
|
|
13143
13214
|
};
|
|
13215
|
+
const releasePermit = await (this.requestGate ?? new AsyncPermitPool(DEFAULT_PROVIDER_HANDLER_CAPACITY)).acquire();
|
|
13144
13216
|
try {
|
|
13145
13217
|
const body = await this.opts.handler(channel, frame.body, ctx);
|
|
13146
13218
|
if (body === undefined) {
|
|
13147
|
-
await this.sendOn(sock, generation, buildFrameWithVersion(ver,
|
|
13219
|
+
await this.sendOn(sock, generation, buildFrameWithVersion(ver, FrameType.StreamEnd, dataFlags, channel, corr, new Uint8Array(0)));
|
|
13148
13220
|
} else if (body instanceof Uint8Array) {
|
|
13149
|
-
await this.sendOn(sock, generation, buildFrameWithVersion(ver,
|
|
13221
|
+
await this.sendOn(sock, generation, buildFrameWithVersion(ver, FrameType.Response, dataFlags, channel, corr, body));
|
|
13150
13222
|
} else {
|
|
13151
13223
|
throw new SubcProviderError("provider handler must return a Uint8Array or void", "invalid_handler_response");
|
|
13152
13224
|
}
|
|
13153
13225
|
} catch (err) {
|
|
13154
13226
|
await this.sendError(frame, err instanceof SubcProviderError && err.code ? err.code : "handler_error", err instanceof Error ? err.message : String(err), dataFlags, sock, generation);
|
|
13155
13227
|
} finally {
|
|
13228
|
+
releasePermit();
|
|
13229
|
+
if (this.inflight.get(key) === controller)
|
|
13230
|
+
this.inflight.delete(key);
|
|
13231
|
+
}
|
|
13232
|
+
}
|
|
13233
|
+
async handleHealthRequest(frame, sock, generation) {
|
|
13234
|
+
const { channel, corr, ver } = frame.header;
|
|
13235
|
+
const key = routeKey(generation, channel, corr);
|
|
13236
|
+
const controller = new AbortController;
|
|
13237
|
+
this.inflight.set(key, controller);
|
|
13238
|
+
const releasePermit = await (this.requestGate ?? new AsyncPermitPool(DEFAULT_PROVIDER_HANDLER_CAPACITY)).acquire();
|
|
13239
|
+
try {
|
|
13240
|
+
if (controller.signal.aborted)
|
|
13241
|
+
return;
|
|
13242
|
+
const report = await this.opts.health();
|
|
13243
|
+
await this.sendOn(sock, generation, buildFrameWithVersion(ver, FrameType.Response, controlFlags(), channel, corr, encodeJson({
|
|
13244
|
+
op: HEALTH_CHECK_OP,
|
|
13245
|
+
status: report.status,
|
|
13246
|
+
...report.detail === undefined ? {} : { detail: report.detail },
|
|
13247
|
+
...report.metrics === undefined ? {} : { metrics: report.metrics }
|
|
13248
|
+
})));
|
|
13249
|
+
} catch (err) {
|
|
13250
|
+
await this.sendError(frame, err instanceof SubcProviderError && err.code ? err.code : "health_error", err instanceof Error ? err.message : String(err), controlFlags(), sock, generation);
|
|
13251
|
+
} finally {
|
|
13252
|
+
releasePermit();
|
|
13156
13253
|
if (this.inflight.get(key) === controller)
|
|
13157
13254
|
this.inflight.delete(key);
|
|
13158
13255
|
}
|
|
13159
13256
|
}
|
|
13160
13257
|
async sendError(frame, code, message, flags, sock, generation) {
|
|
13161
|
-
await this.sendOn(sock, generation, buildFrameWithVersion(frame.header.ver,
|
|
13258
|
+
await this.sendOn(sock, generation, buildFrameWithVersion(frame.header.ver, FrameType.Error, flags, frame.header.channel, frame.header.corr, encodeJson({ code, message })));
|
|
13162
13259
|
}
|
|
13163
13260
|
async sendOn(sock, generation, frame) {
|
|
13164
13261
|
if (this.sock !== sock || this.generation !== generation || this.closeStarted || this.closedErr)
|
|
@@ -13298,6 +13395,7 @@ function normalizeProviderConnectOptions(opts) {
|
|
|
13298
13395
|
connectionFile: opts.connectionFile,
|
|
13299
13396
|
manifest: opts.manifest,
|
|
13300
13397
|
handler: opts.handler,
|
|
13398
|
+
health: opts.health ?? (() => ({ status: "ok" })),
|
|
13301
13399
|
handshakeTimeoutMs: opts.handshakeTimeoutMs,
|
|
13302
13400
|
controlOps: opts.controlOps,
|
|
13303
13401
|
onBind: opts.onBind,
|
|
@@ -13309,12 +13407,19 @@ function normalizeProviderConnectOptions(opts) {
|
|
|
13309
13407
|
launchNonce: opts.launchNonce
|
|
13310
13408
|
};
|
|
13311
13409
|
}
|
|
13410
|
+
function normalizedControlOps(controlOps) {
|
|
13411
|
+
if (controlOps === null)
|
|
13412
|
+
return null;
|
|
13413
|
+
const merged = new Set(controlOps ?? []);
|
|
13414
|
+
merged.add(HEALTH_CHECK_OP);
|
|
13415
|
+
return [...merged];
|
|
13416
|
+
}
|
|
13312
13417
|
function buildHelloFrame(opts) {
|
|
13313
13418
|
const nonce = launchNonce(opts);
|
|
13314
|
-
return buildFrame(
|
|
13419
|
+
return buildFrame(FrameType.Hello, controlFlags(), 0, HELLO_CORR, encodeJson({
|
|
13315
13420
|
manifest: normalizeManifest(opts.manifest),
|
|
13316
13421
|
protocol_ver: PROTOCOL_VERSION,
|
|
13317
|
-
control_ops: opts.controlOps
|
|
13422
|
+
control_ops: normalizedControlOps(opts.controlOps),
|
|
13318
13423
|
...nonce ? { launch_nonce: nonce } : {}
|
|
13319
13424
|
}));
|
|
13320
13425
|
}
|
|
@@ -13325,7 +13430,9 @@ function isProviderReconnectTransient(err) {
|
|
|
13325
13430
|
return true;
|
|
13326
13431
|
if (err instanceof SocketWriteNotQueuedError || err instanceof SocketWriteQueuedError)
|
|
13327
13432
|
return true;
|
|
13328
|
-
if (err instanceof
|
|
13433
|
+
if (err instanceof AuthError)
|
|
13434
|
+
return true;
|
|
13435
|
+
if (err instanceof ConnectionFileError)
|
|
13329
13436
|
return false;
|
|
13330
13437
|
const code = errorCode2(err);
|
|
13331
13438
|
return code === "ECONNREFUSED" || code === "ECONNRESET" || code === "EPIPE" || code === "ETIMEDOUT" || code === "ENOENT";
|
|
@@ -13342,7 +13449,7 @@ async function pauseBeforeStateRetry() {
|
|
|
13342
13449
|
await new Promise((resolve7) => setTimeout(resolve7, 0));
|
|
13343
13450
|
}
|
|
13344
13451
|
function controlFlags() {
|
|
13345
|
-
return buildFlags(false,
|
|
13452
|
+
return buildFlags(false, Priority.Passive, false);
|
|
13346
13453
|
}
|
|
13347
13454
|
async function sendFrame(sock, frame) {
|
|
13348
13455
|
await sock.write(encodeFrame(frame), Date.now() + WRITE_TIMEOUT_MS);
|
|
@@ -13352,9 +13459,9 @@ async function expectHelloAck(sock, deadline) {
|
|
|
13352
13459
|
const body = header.len === 0 ? new Uint8Array(0) : await sock.readExact(header.len, deadline);
|
|
13353
13460
|
const frame = { header, body };
|
|
13354
13461
|
switch (header.ty) {
|
|
13355
|
-
case
|
|
13462
|
+
case FrameType.HelloAck:
|
|
13356
13463
|
return parseJson(body);
|
|
13357
|
-
case
|
|
13464
|
+
case FrameType.Error: {
|
|
13358
13465
|
const error2 = parseJson(body);
|
|
13359
13466
|
throw new SubcProviderError(`subc rejected HELLO: ${error2.code ?? "unknown"} — ${error2.message ?? "subc error"}`, error2.code);
|
|
13360
13467
|
}
|
|
@@ -13420,6 +13527,7 @@ function normalizeProviderRole(role) {
|
|
|
13420
13527
|
role: "tool_provider",
|
|
13421
13528
|
tools: role.tools.map((tool) => ({
|
|
13422
13529
|
name: tool.name,
|
|
13530
|
+
...tool.description === undefined ? {} : { description: tool.description },
|
|
13423
13531
|
execution_mode: tool.execution_mode,
|
|
13424
13532
|
schema: tool.schema
|
|
13425
13533
|
})),
|
|
@@ -13594,6 +13702,9 @@ class BgSubscription {
|
|
|
13594
13702
|
function isRecord(value) {
|
|
13595
13703
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
13596
13704
|
}
|
|
13705
|
+
function isUnknownChannelError(err) {
|
|
13706
|
+
return err instanceof SubcError && err.code === "unknown_channel";
|
|
13707
|
+
}
|
|
13597
13708
|
function safeCloseRoute(client, channel) {
|
|
13598
13709
|
try {
|
|
13599
13710
|
client.closeRouteChannel(channel).catch(() => {
|
|
@@ -13673,7 +13784,7 @@ class SubcTransport {
|
|
|
13673
13784
|
if (!options)
|
|
13674
13785
|
return {};
|
|
13675
13786
|
const preview = options.preview;
|
|
13676
|
-
const timeoutMs = options.timeoutMs;
|
|
13787
|
+
const timeoutMs = options.transportTimeoutMs ?? options.timeoutMs;
|
|
13677
13788
|
const onProgress = options.onProgress;
|
|
13678
13789
|
return { preview, timeoutMs, onProgress };
|
|
13679
13790
|
}
|
|
@@ -13743,45 +13854,66 @@ class SubcTransportPool {
|
|
|
13743
13854
|
record.inflight += 1;
|
|
13744
13855
|
try {
|
|
13745
13856
|
const client = await this.ensureClient();
|
|
13746
|
-
|
|
13747
|
-
throw new RouteTornDownError("subc session closed");
|
|
13748
|
-
}
|
|
13749
|
-
let channel;
|
|
13750
|
-
let entry;
|
|
13751
|
-
try {
|
|
13752
|
-
({ channel, entry } = await this.routeChannel(client, identity, record));
|
|
13857
|
+
const openRoute = async () => {
|
|
13753
13858
|
if (!this.isCurrentSession(key, record)) {
|
|
13754
13859
|
throw new RouteTornDownError("subc session closed");
|
|
13755
13860
|
}
|
|
13756
|
-
|
|
13757
|
-
|
|
13861
|
+
try {
|
|
13862
|
+
const opened = await this.routeChannel(client, identity, record);
|
|
13863
|
+
if (!this.isCurrentSession(key, record)) {
|
|
13864
|
+
throw new RouteTornDownError("subc session closed");
|
|
13865
|
+
}
|
|
13866
|
+
return opened;
|
|
13867
|
+
} catch (err) {
|
|
13868
|
+
if (err instanceof RouteTornDownError)
|
|
13869
|
+
throw err;
|
|
13870
|
+
if (isConsumerReconnectTransient(err) && this.isCurrentSession(key, record) && this.client === client) {
|
|
13871
|
+
this.dropClient(client);
|
|
13872
|
+
}
|
|
13758
13873
|
throw err;
|
|
13759
|
-
if (isConsumerReconnectTransient(err) && this.isCurrentSession(key, record) && this.client === client) {
|
|
13760
|
-
this.dropClient(client);
|
|
13761
|
-
}
|
|
13762
|
-
throw err;
|
|
13763
|
-
}
|
|
13764
|
-
try {
|
|
13765
|
-
const reply = await client.request(channel, body, { timeoutMs, onProgress });
|
|
13766
|
-
if (this.isCurrentSession(key, record) && this.client === client) {
|
|
13767
|
-
this.transportFailures = 0;
|
|
13768
13874
|
}
|
|
13769
|
-
|
|
13770
|
-
|
|
13771
|
-
|
|
13772
|
-
|
|
13773
|
-
entry.closed = true;
|
|
13875
|
+
};
|
|
13876
|
+
const clearRouteEntry = (entry2) => {
|
|
13877
|
+
if (record.routeEntry === entry2) {
|
|
13878
|
+
entry2.closed = true;
|
|
13774
13879
|
record.routeEntry = null;
|
|
13775
13880
|
}
|
|
13881
|
+
};
|
|
13882
|
+
const handleRequestFailure = (err, entry2) => {
|
|
13883
|
+
clearRouteEntry(entry2);
|
|
13776
13884
|
if (this.isCurrentSession(key, record) && this.client === client) {
|
|
13777
13885
|
if (isConsumerReconnectTransient(err)) {
|
|
13778
13886
|
this.transportFailures = 0;
|
|
13779
13887
|
this.dropClient(client);
|
|
13780
|
-
} else if (++this.transportFailures >= MAX_CONSECUTIVE_TRANSPORT_FAILURES) {
|
|
13888
|
+
} else if (!isUnknownChannelError(err) && ++this.transportFailures >= MAX_CONSECUTIVE_TRANSPORT_FAILURES) {
|
|
13781
13889
|
this.transportFailures = 0;
|
|
13782
13890
|
this.dropClient(client);
|
|
13783
13891
|
}
|
|
13784
13892
|
}
|
|
13893
|
+
};
|
|
13894
|
+
const requestOnRoute = async (channel2) => {
|
|
13895
|
+
const reply = await client.request(channel2, body, { timeoutMs, onProgress });
|
|
13896
|
+
if (this.isCurrentSession(key, record) && this.client === client) {
|
|
13897
|
+
this.transportFailures = 0;
|
|
13898
|
+
}
|
|
13899
|
+
this.ensureBgSubscription(identity, record);
|
|
13900
|
+
return reply;
|
|
13901
|
+
};
|
|
13902
|
+
let { channel, entry } = await openRoute();
|
|
13903
|
+
try {
|
|
13904
|
+
return await requestOnRoute(channel);
|
|
13905
|
+
} catch (err) {
|
|
13906
|
+
if (isUnknownChannelError(err) && this.isCurrentSession(key, record) && this.client === client) {
|
|
13907
|
+
clearRouteEntry(entry);
|
|
13908
|
+
({ channel, entry } = await openRoute());
|
|
13909
|
+
try {
|
|
13910
|
+
return await requestOnRoute(channel);
|
|
13911
|
+
} catch (retryErr) {
|
|
13912
|
+
handleRequestFailure(retryErr, entry);
|
|
13913
|
+
throw retryErr;
|
|
13914
|
+
}
|
|
13915
|
+
}
|
|
13916
|
+
handleRequestFailure(err, entry);
|
|
13785
13917
|
throw err;
|
|
13786
13918
|
}
|
|
13787
13919
|
} finally {
|
|
@@ -14778,7 +14910,7 @@ import {
|
|
|
14778
14910
|
// package.json
|
|
14779
14911
|
var package_default = {
|
|
14780
14912
|
name: "@cortexkit/aft-pi",
|
|
14781
|
-
version: "0.
|
|
14913
|
+
version: "0.46.0",
|
|
14782
14914
|
type: "module",
|
|
14783
14915
|
description: "Pi coding agent extension for Agent File Tools (AFT) — tree-sitter and LSP-powered code analysis",
|
|
14784
14916
|
main: "dist/index.js",
|
|
@@ -14801,19 +14933,19 @@ var package_default = {
|
|
|
14801
14933
|
"test:unit": "bun test src/__tests__ --path-ignore-patterns 'src/__tests__/e2e/**'"
|
|
14802
14934
|
},
|
|
14803
14935
|
dependencies: {
|
|
14804
|
-
"@cortexkit/aft-bridge": "0.
|
|
14936
|
+
"@cortexkit/aft-bridge": "0.46.0",
|
|
14805
14937
|
"comment-json": "^5.0.0",
|
|
14806
14938
|
diff: "^8.0.4",
|
|
14807
14939
|
typebox: "1.1.38",
|
|
14808
14940
|
zod: "^4.4.3"
|
|
14809
14941
|
},
|
|
14810
14942
|
optionalDependencies: {
|
|
14811
|
-
"@cortexkit/aft-darwin-arm64": "0.
|
|
14812
|
-
"@cortexkit/aft-darwin-x64": "0.
|
|
14813
|
-
"@cortexkit/aft-linux-arm64": "0.
|
|
14814
|
-
"@cortexkit/aft-linux-x64": "0.
|
|
14815
|
-
"@cortexkit/aft-win32-arm64": "0.
|
|
14816
|
-
"@cortexkit/aft-win32-x64": "0.
|
|
14943
|
+
"@cortexkit/aft-darwin-arm64": "0.46.0",
|
|
14944
|
+
"@cortexkit/aft-darwin-x64": "0.46.0",
|
|
14945
|
+
"@cortexkit/aft-linux-arm64": "0.46.0",
|
|
14946
|
+
"@cortexkit/aft-linux-x64": "0.46.0",
|
|
14947
|
+
"@cortexkit/aft-win32-arm64": "0.46.0",
|
|
14948
|
+
"@cortexkit/aft-win32-x64": "0.46.0"
|
|
14817
14949
|
},
|
|
14818
14950
|
devDependencies: {
|
|
14819
14951
|
"@earendil-works/pi-coding-agent": "^0.80.2",
|
|
@@ -29818,16 +29950,7 @@ var InspectConfigSchema = exports_external.object({
|
|
|
29818
29950
|
tier2_soft_deadline_ms: exports_external.number().int().positive().optional(),
|
|
29819
29951
|
max_drill_down_items: exports_external.number().int().positive().max(100).optional(),
|
|
29820
29952
|
duplicates: exports_external.object({
|
|
29821
|
-
|
|
29822
|
-
discard_cost: exports_external.number().int().min(0).optional(),
|
|
29823
|
-
expected_mirrors: exports_external.array(exports_external.tuple([exports_external.string().trim().min(1), exports_external.string().trim().min(1)])).optional(),
|
|
29824
|
-
anonymize: exports_external.object({
|
|
29825
|
-
variables: exports_external.boolean().optional(),
|
|
29826
|
-
fields: exports_external.boolean().optional(),
|
|
29827
|
-
methods: exports_external.boolean().optional(),
|
|
29828
|
-
types: exports_external.boolean().optional(),
|
|
29829
|
-
literals: exports_external.boolean().optional()
|
|
29830
|
-
}).optional()
|
|
29953
|
+
expected_mirrors: exports_external.array(exports_external.tuple([exports_external.string().trim().min(1), exports_external.string().trim().min(1)])).optional()
|
|
29831
29954
|
}).optional()
|
|
29832
29955
|
});
|
|
29833
29956
|
var BackupConfigSchema = exports_external.object({
|
|
@@ -30109,16 +30232,9 @@ function mergeInspectConfig(baseInspect, overrideInspect) {
|
|
|
30109
30232
|
...overrideInspect,
|
|
30110
30233
|
duplicates: baseInspect?.duplicates || overrideInspect?.duplicates ? {
|
|
30111
30234
|
...baseInspect?.duplicates,
|
|
30112
|
-
...overrideInspect?.duplicates
|
|
30113
|
-
anonymize: baseInspect?.duplicates?.anonymize || overrideInspect?.duplicates?.anonymize ? {
|
|
30114
|
-
...baseInspect?.duplicates?.anonymize,
|
|
30115
|
-
...overrideInspect?.duplicates?.anonymize
|
|
30116
|
-
} : undefined
|
|
30235
|
+
...overrideInspect?.duplicates
|
|
30117
30236
|
} : undefined
|
|
30118
30237
|
};
|
|
30119
|
-
if (inspect.duplicates && inspect.duplicates.anonymize === undefined) {
|
|
30120
|
-
delete inspect.duplicates.anonymize;
|
|
30121
|
-
}
|
|
30122
30238
|
if (Object.values(inspect).every((value) => value === undefined)) {
|
|
30123
30239
|
return;
|
|
30124
30240
|
}
|
|
@@ -32461,6 +32577,15 @@ var WriteParams = Type2.Object({
|
|
|
32461
32577
|
})),
|
|
32462
32578
|
content: Type2.String({ description: "Full file contents to write" })
|
|
32463
32579
|
});
|
|
32580
|
+
var BatchEditParams = Type2.Object({
|
|
32581
|
+
oldString: Type2.Optional(Type2.String({ description: "Text to find for a batch find/replace edit" })),
|
|
32582
|
+
newString: Type2.Optional(Type2.String({ description: "Replacement text for a batch find/replace edit" })),
|
|
32583
|
+
startLine: Type2.Optional(Type2.Any({ description: "1-based start line for a batch line-range edit" })),
|
|
32584
|
+
endLine: Type2.Optional(Type2.Any({ description: "1-based end line for a batch line-range edit" })),
|
|
32585
|
+
content: Type2.Optional(Type2.String({
|
|
32586
|
+
description: "Replacement text for a batch line-range edit (empty string deletes the lines)"
|
|
32587
|
+
}))
|
|
32588
|
+
});
|
|
32464
32589
|
var EditParams = Type2.Object({
|
|
32465
32590
|
filePath: Type2.Optional(Type2.String({
|
|
32466
32591
|
description: "Path to the file to edit (absolute or relative to project root)"
|
|
@@ -32473,7 +32598,10 @@ var EditParams = Type2.Object({
|
|
|
32473
32598
|
replaceAll: Type2.Optional(Type2.Boolean({ description: "Replace every occurrence" })),
|
|
32474
32599
|
occurrence: optionalInt(0, Number.MAX_SAFE_INTEGER),
|
|
32475
32600
|
appendContent: Type2.Optional(Type2.String({
|
|
32476
|
-
description: "Append text to the end of the file (creates the file if missing, parent dirs auto-created). When set, oldString/newString are ignored."
|
|
32601
|
+
description: "Append text to the end of the file (creates the file if missing, parent dirs auto-created). When set, edits/oldString/newString are ignored."
|
|
32602
|
+
})),
|
|
32603
|
+
edits: Type2.Optional(Type2.Array(BatchEditParams, {
|
|
32604
|
+
description: "Batch edits — array of { oldString, newString } or { startLine, endLine, content } objects applied atomically to one file."
|
|
32477
32605
|
}))
|
|
32478
32606
|
});
|
|
32479
32607
|
var GrepParams = Type2.Object({
|
|
@@ -32490,6 +32618,47 @@ function readPathArg(args) {
|
|
|
32490
32618
|
function mutationFilePathArg(args) {
|
|
32491
32619
|
return coerceAliasedStringParam(args.filePath, args.path);
|
|
32492
32620
|
}
|
|
32621
|
+
function hasOwn(record2, key) {
|
|
32622
|
+
return Object.hasOwn(record2, key);
|
|
32623
|
+
}
|
|
32624
|
+
function validateBatchEdit(edit, index) {
|
|
32625
|
+
if (!edit || typeof edit !== "object" || Array.isArray(edit)) {
|
|
32626
|
+
throw new Error(`batch: edit[${index}] must be an object`);
|
|
32627
|
+
}
|
|
32628
|
+
const record2 = edit;
|
|
32629
|
+
if (typeof record2.oldString === "string") {
|
|
32630
|
+
return;
|
|
32631
|
+
}
|
|
32632
|
+
if (hasOwn(record2, "startLine")) {
|
|
32633
|
+
if (typeof record2.startLine !== "number" || !Number.isInteger(record2.startLine) || record2.startLine < 0) {
|
|
32634
|
+
throw new Error(`batch: edit[${index}] 'startLine' must be a positive integer (1-based)`);
|
|
32635
|
+
}
|
|
32636
|
+
if (record2.startLine === 0) {
|
|
32637
|
+
throw new Error(`batch: edit[${index}] 'startLine' must be >= 1 (1-based)`);
|
|
32638
|
+
}
|
|
32639
|
+
if (typeof record2.endLine !== "number" || !Number.isInteger(record2.endLine) || record2.endLine < 0) {
|
|
32640
|
+
throw new Error(`batch: edit[${index}] 'endLine' must be a positive integer (1-based)`);
|
|
32641
|
+
}
|
|
32642
|
+
if (record2.endLine === 0) {
|
|
32643
|
+
throw new Error(`batch: edit[${index}] 'endLine' must be >= 1 (1-based)`);
|
|
32644
|
+
}
|
|
32645
|
+
return;
|
|
32646
|
+
}
|
|
32647
|
+
throw new Error(`batch: edit[${index}] must have either 'oldString' or 'startLine'/'endLine'`);
|
|
32648
|
+
}
|
|
32649
|
+
function validateBatchEdits(edits) {
|
|
32650
|
+
if (edits === undefined)
|
|
32651
|
+
return;
|
|
32652
|
+
if (!Array.isArray(edits)) {
|
|
32653
|
+
throw new Error("batch: missing required param 'edits' (expected array)");
|
|
32654
|
+
}
|
|
32655
|
+
if (edits.length === 0) {
|
|
32656
|
+
throw new Error("batch: 'edits' array must not be empty");
|
|
32657
|
+
}
|
|
32658
|
+
edits.forEach((edit, index) => {
|
|
32659
|
+
validateBatchEdit(edit, index);
|
|
32660
|
+
});
|
|
32661
|
+
}
|
|
32493
32662
|
function renderReadCall(args, theme, context) {
|
|
32494
32663
|
const text = reuseText(context.lastComponent);
|
|
32495
32664
|
const filePath = args ? readPathArg(args) : undefined;
|
|
@@ -32597,28 +32766,35 @@ PDFs aren't supported on the Pi harness yet.`, response);
|
|
|
32597
32766
|
pi.registerTool({
|
|
32598
32767
|
name: "edit",
|
|
32599
32768
|
label: "edit",
|
|
32600
|
-
description: "
|
|
32601
|
-
promptSnippet: "
|
|
32769
|
+
description: "Edit part of a file via `appendContent`, batch `edits[]`, or `oldString`/`newString` find-and-replace. Mode priority: appendContent > edits > oldString. Find/replace errors on multiple matches — use `occurrence` or `replaceAll: true`.",
|
|
32770
|
+
promptSnippet: "Partial file edits via appendContent, edits[], or oldString/newString (mode priority: appendContent > edits > oldString).",
|
|
32602
32771
|
promptGuidelines: [
|
|
32603
32772
|
"Prefer edit over write when changing part of an existing file.",
|
|
32604
|
-
"
|
|
32605
|
-
"Use
|
|
32773
|
+
"Use appendContent when adding text to the end of a file.",
|
|
32774
|
+
"Use edits[] for multiple atomic changes in one file.",
|
|
32775
|
+
"Include enough surrounding context in oldString to make the match unique, or set replaceAll/occurrence explicitly."
|
|
32606
32776
|
],
|
|
32607
32777
|
parameters: EditParams,
|
|
32608
32778
|
async execute(_toolCallId, params, _signal, _onUpdate, extCtx) {
|
|
32779
|
+
const argsRecord = params;
|
|
32780
|
+
if (argsRecord.startLine !== undefined || argsRecord.endLine !== undefined) {
|
|
32781
|
+
throw new Error("edit: 'startLine'/'endLine' are not top-level parameters. " + "For line-range edits, nest them inside the `edits` array: " + '`edits: [{ startLine: N, endLine: M, content: "..." }]`. ' + "For find/replace, use `oldString`/`newString` instead.");
|
|
32782
|
+
}
|
|
32609
32783
|
const filePathArg = mutationFilePathArg(params);
|
|
32610
32784
|
if (typeof filePathArg !== "string") {
|
|
32611
32785
|
throw new Error("edit: missing required parameter `filePath`");
|
|
32612
32786
|
}
|
|
32787
|
+
if (params.appendContent === undefined)
|
|
32788
|
+
validateBatchEdits(params.edits);
|
|
32613
32789
|
const filePath = await resolvePathArg(extCtx.cwd, filePathArg);
|
|
32614
32790
|
await assertExternalDirectoryPermission(extCtx, filePath, {
|
|
32615
32791
|
restrictToProjectRoot: surface.restrictToProjectRoot
|
|
32616
32792
|
});
|
|
32617
32793
|
const bridge = bridgeFor(ctx, extCtx.cwd);
|
|
32618
32794
|
const rawArgs = { filePath: filePathArg };
|
|
32619
|
-
for (const key of ["appendContent", "oldString", "newString"]) {
|
|
32620
|
-
if (
|
|
32621
|
-
rawArgs[key] =
|
|
32795
|
+
for (const key of ["appendContent", "edits", "oldString", "newString"]) {
|
|
32796
|
+
if (argsRecord[key] !== undefined)
|
|
32797
|
+
rawArgs[key] = argsRecord[key];
|
|
32622
32798
|
}
|
|
32623
32799
|
if (params.replaceAll !== undefined)
|
|
32624
32800
|
rawArgs.replaceAll = coerceBoolean(params.replaceAll);
|
|
@@ -32682,6 +32858,7 @@ function buildMutationResult(response) {
|
|
|
32682
32858
|
const additions = diffObj?.additions ?? 0;
|
|
32683
32859
|
const deletions = diffObj?.deletions ?? 0;
|
|
32684
32860
|
const replacements = response.replacements;
|
|
32861
|
+
const editsApplied = response.edits_applied;
|
|
32685
32862
|
const diagnostics = response.lsp_diagnostics;
|
|
32686
32863
|
const truncated = diffObj?.truncated === true;
|
|
32687
32864
|
const noOp = response.no_op === true;
|
|
@@ -32728,6 +32905,7 @@ ${formatDiagnosticsText(diagnostics)}`;
|
|
|
32728
32905
|
additions,
|
|
32729
32906
|
deletions,
|
|
32730
32907
|
replacements,
|
|
32908
|
+
editsApplied,
|
|
32731
32909
|
diagnostics,
|
|
32732
32910
|
truncated: truncated || undefined,
|
|
32733
32911
|
formatted,
|
|
@@ -32802,7 +32980,8 @@ ${theme.fg("error", errorText || "edit failed")}`);
|
|
|
32802
32980
|
const additions = details?.additions ?? 0;
|
|
32803
32981
|
const deletions = details?.deletions ?? 0;
|
|
32804
32982
|
const text = reuseText(context.lastComponent);
|
|
32805
|
-
const
|
|
32983
|
+
const countDetail = typeof details?.editsApplied === "number" && details.editsApplied > 1 ? `, ${details.editsApplied} edits` : typeof details?.replacements === "number" && details.replacements > 1 ? `, ${details.replacements} replacements` : "";
|
|
32984
|
+
const summary = theme.fg("success", `+${additions}/-${deletions}${countDetail}`);
|
|
32806
32985
|
let suffix = "";
|
|
32807
32986
|
if (details?.truncated) {
|
|
32808
32987
|
suffix = ` ${theme.fg("muted", "(diff truncated)")}`;
|
|
@@ -35377,6 +35556,9 @@ var SearchParams2 = Type13.Object({
|
|
|
35377
35556
|
includeTests: Type13.Optional(Type13.Boolean({
|
|
35378
35557
|
default: false,
|
|
35379
35558
|
description: "Include test files (*.test.*, *_test.rs, __tests__/, …) plus test-support, fixture, mock, snapshot, and corpus files. Defaults to false."
|
|
35559
|
+
})),
|
|
35560
|
+
path: Type13.Optional(Type13.String({
|
|
35561
|
+
description: "Search a different project root (absolute or ~ path). Requires that project to have been indexed by AFT."
|
|
35380
35562
|
}))
|
|
35381
35563
|
});
|
|
35382
35564
|
function buildSemanticSections(args, payload, theme) {
|
|
@@ -35484,6 +35666,8 @@ function registerSemanticTool(pi, ctx) {
|
|
|
35484
35666
|
req.hint = params.hint;
|
|
35485
35667
|
if (params.includeTests !== undefined)
|
|
35486
35668
|
req.includeTests = params.includeTests;
|
|
35669
|
+
if (params.path !== undefined)
|
|
35670
|
+
req.path = params.path;
|
|
35487
35671
|
const response = await callToolCall(bridge, "search", req, extCtx);
|
|
35488
35672
|
if (response.success === false) {
|
|
35489
35673
|
throw new Error(response.text || response.message || "search failed");
|
|
@@ -35658,13 +35842,12 @@ var PLUGIN_VERSION = (() => {
|
|
|
35658
35842
|
return "0.0.0";
|
|
35659
35843
|
}
|
|
35660
35844
|
})();
|
|
35661
|
-
var ANNOUNCEMENT_VERSION = "0.
|
|
35845
|
+
var ANNOUNCEMENT_VERSION = "0.46.0";
|
|
35662
35846
|
var ANNOUNCEMENT_FEATURES = [
|
|
35663
|
-
"
|
|
35664
|
-
"
|
|
35665
|
-
"
|
|
35666
|
-
"
|
|
35667
|
-
"Bridges now detect an updated aft binary on disk and respawn onto it automatically."
|
|
35847
|
+
"Search index changes persist on clean shutdown, so restarts and cross-worktree searches see current results.",
|
|
35848
|
+
"Cross-project search: sessions can search sibling checkouts read-only, serving borrowed indexes with drift warnings instead of failing.",
|
|
35849
|
+
"Duplicate detection requires a 10-line minimum span, ending flags on 3-4 line idiomatic blocks.",
|
|
35850
|
+
"Pi edit tool supports batch edits[] arrays, matching OpenCode."
|
|
35668
35851
|
];
|
|
35669
35852
|
var ANNOUNCEMENT_FOOTER = "Join us on Discord: https://discord.gg/DSa65w8wuf";
|
|
35670
35853
|
var ALL_ONLY_TOOLS = new Set(["aft_callgraph", "aft_delete", "aft_move", "aft_refactor"]);
|
package/dist/tools/hoisted.d.ts
CHANGED
|
@@ -16,8 +16,18 @@
|
|
|
16
16
|
* `read` and `grep` keep the default text-only result rendering because our
|
|
17
17
|
* payload (`path`, `pattern`) already aligns with Pi's built-in arg shape.
|
|
18
18
|
*/
|
|
19
|
-
import { type AgentToolResult, type ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
19
|
+
import { type AgentToolResult, type ExtensionAPI, type Theme } from "@earendil-works/pi-coding-agent";
|
|
20
|
+
import { type Component, Container, Text } from "@earendil-works/pi-tui";
|
|
20
21
|
import type { PluginContext } from "../types.js";
|
|
22
|
+
/**
|
|
23
|
+
* Local shape for Pi's render context — the real type is exposed by
|
|
24
|
+
* `@earendil-works/pi-coding-agent`'s internals but not publicly exported.
|
|
25
|
+
* We only read `lastComponent` and `isError` here; everything else is ignored.
|
|
26
|
+
*/
|
|
27
|
+
interface RenderContextLike {
|
|
28
|
+
lastComponent: Component | undefined;
|
|
29
|
+
isError: boolean;
|
|
30
|
+
}
|
|
21
31
|
/**
|
|
22
32
|
* Enforce AFT's `restrict_to_project_root` isolation for an out-of-root target.
|
|
23
33
|
*
|
|
@@ -59,6 +69,7 @@ interface FileMutationDetails {
|
|
|
59
69
|
additions: number;
|
|
60
70
|
deletions: number;
|
|
61
71
|
replacements?: number;
|
|
72
|
+
editsApplied?: number;
|
|
62
73
|
diagnostics?: unknown[];
|
|
63
74
|
/**
|
|
64
75
|
* True when Rust returned `diff.truncated = true` — the before/after strings
|
|
@@ -93,11 +104,13 @@ interface FileMutationDetails {
|
|
|
93
104
|
}
|
|
94
105
|
export declare function registerHoistedTools(pi: ExtensionAPI, ctx: PluginContext, surface: ToolSurfaceFlags): void;
|
|
95
106
|
/**
|
|
96
|
-
* Shape
|
|
97
|
-
*
|
|
98
|
-
*
|
|
107
|
+
* Shape a bridge mutation response into an `AgentToolResult` Pi can render.
|
|
108
|
+
* Exported for unit tests covering truncation, diagnostics, and batch-edit
|
|
109
|
+
* summaries without spinning up a real bridge.
|
|
99
110
|
*/
|
|
100
111
|
export declare function buildMutationResult(response: Record<string, unknown>): AgentToolResult<FileMutationDetails>;
|
|
112
|
+
export declare function renderMutationCall(toolName: "write" | "edit", filePath: string | undefined, theme: Theme, context: RenderContextLike): Text;
|
|
113
|
+
export declare function renderMutationResult(result: AgentToolResult<FileMutationDetails>, theme: Theme, context: RenderContextLike): Container | Text;
|
|
101
114
|
/** Resolve a path argument to an absolute path if it exists, expanding `~`. */
|
|
102
115
|
export declare function resolvePathArg(cwd: string, path: string): Promise<string>;
|
|
103
116
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hoisted.d.ts","sourceRoot":"","sources":["../../src/tools/hoisted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"hoisted.d.ts","sourceRoot":"","sources":["../../src/tools/hoisted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAEjB,KAAK,KAAK,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,SAAS,EAAE,SAAS,EAAU,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAwDjD;;;;GAIG;AACH,UAAU,iBAAiB;IACzB,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;CAClB;AAoFD;;;;;;;;;GASG;AACH,wBAAsB,iCAAiC,CACrD,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAO,GAChD,OAAO,CAAC,IAAI,CAAC,CAwBf;AAiGD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,kEAAkE;AAClE,UAAU,mBAAmB;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA8ED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAsPN;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,eAAe,CAAC,mBAAmB,CAAC,CAmFtC;AAuED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,GAAG,MAAM,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,GACzB,IAAI,CAON;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,GACzB,SAAS,GAAG,IAAI,CAmDlB;AAQD,+EAA+E;AAC/E,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA0B3D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,mBAAmB,EAAE,OAAO,EAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAER"}
|
package/dist/tools/semantic.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ declare const SearchParams: Type.TObject<{
|
|
|
12
12
|
topK: Type.TOptional<Type.TInteger>;
|
|
13
13
|
hint: Type.TOptional<Type.TUnion<[Type.TLiteral<"regex">, Type.TLiteral<"literal">, Type.TLiteral<"semantic">, Type.TLiteral<"auto">]>>;
|
|
14
14
|
includeTests: Type.TOptional<Type.TBoolean>;
|
|
15
|
+
path: Type.TOptional<Type.TString>;
|
|
15
16
|
}>;
|
|
16
17
|
/** Exported for renderer unit tests. */
|
|
17
18
|
export declare function buildSemanticSections(args: Static<typeof SearchParams>, payload: unknown, theme: Theme): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/tools/semantic.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAOL,KAAK,iBAAiB,EAKvB,MAAM,qBAAqB,CAAC;AAW7B,QAAA,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/tools/semantic.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAOL,KAAK,iBAAiB,EAKvB,MAAM,qBAAqB,CAAC;AAW7B,QAAA,MAAM,YAAY;;;;;;EAuChB,CAAC;AAEH,wCAAwC;AACxC,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,CAAC,OAAO,YAAY,CAAC,EACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACX,MAAM,EAAE,CAuFV;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,OAAO,YAAY,CAAC,EACjC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,yCAG3B;AAED,wCAAwC;AACxC,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAChC,IAAI,EAAE,MAAM,CAAC,OAAO,YAAY,CAAC,EACjC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,sFAO3B;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAgD/E"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cortexkit/aft-pi",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.46.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Pi coding agent extension for Agent File Tools (AFT) — tree-sitter and LSP-powered code analysis",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -23,19 +23,19 @@
|
|
|
23
23
|
"test:unit": "bun test src/__tests__ --path-ignore-patterns 'src/__tests__/e2e/**'"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@cortexkit/aft-bridge": "0.
|
|
26
|
+
"@cortexkit/aft-bridge": "0.46.0",
|
|
27
27
|
"comment-json": "^5.0.0",
|
|
28
28
|
"diff": "^8.0.4",
|
|
29
29
|
"typebox": "1.1.38",
|
|
30
30
|
"zod": "^4.4.3"
|
|
31
31
|
},
|
|
32
32
|
"optionalDependencies": {
|
|
33
|
-
"@cortexkit/aft-darwin-arm64": "0.
|
|
34
|
-
"@cortexkit/aft-darwin-x64": "0.
|
|
35
|
-
"@cortexkit/aft-linux-arm64": "0.
|
|
36
|
-
"@cortexkit/aft-linux-x64": "0.
|
|
37
|
-
"@cortexkit/aft-win32-arm64": "0.
|
|
38
|
-
"@cortexkit/aft-win32-x64": "0.
|
|
33
|
+
"@cortexkit/aft-darwin-arm64": "0.46.0",
|
|
34
|
+
"@cortexkit/aft-darwin-x64": "0.46.0",
|
|
35
|
+
"@cortexkit/aft-linux-arm64": "0.46.0",
|
|
36
|
+
"@cortexkit/aft-linux-x64": "0.46.0",
|
|
37
|
+
"@cortexkit/aft-win32-arm64": "0.46.0",
|
|
38
|
+
"@cortexkit/aft-win32-x64": "0.46.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@earendil-works/pi-coding-agent": "^0.80.2",
|