@cortexkit/aft-pi 0.35.3 → 0.36.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/bg-notifications.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +430 -147
- package/dist/tools/_shared.d.ts +10 -1
- package/dist/tools/_shared.d.ts.map +1 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/fs.d.ts.map +1 -1
- package/dist/tools/navigate.d.ts.map +1 -1
- package/dist/tools/safety.d.ts.map +1 -1
- package/dist/workflow-hints.d.ts +1 -0
- package/dist/workflow-hints.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bg-notifications.d.ts","sourceRoot":"","sources":["../src/bg-notifications.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"bg-notifications.d.ts","sourceRoot":"","sources":["../src/bg-notifications.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;AAcH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AASpE,OAAO,EACL,KAAK,SAAS,EACd,aAAa,EAId,MAAM,aAAa,CAAC;AA8DrB,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;AA4DD,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,YAAY,EAAE,MAAM,CAAC,CAAC;IACnE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiChB;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,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAwEA;AAED;;;;GAIG;AACH,yBAA+B,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAcH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AASpE,OAAO,EACL,KAAK,SAAS,EACd,aAAa,EAId,MAAM,aAAa,CAAC;AA8DrB,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;AA4DD,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,YAAY,EAAE,MAAM,CAAC,CAAC;IACnE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiChB;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,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAwEA;AAED;;;;GAIG;AACH,yBAA+B,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2d9D;AAED,eAAO,MAAM,QAAQ;;;;;;CAMpB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11678,9 +11678,6 @@ function error(message, meta) {
|
|
|
11678
11678
|
var CONFLICT_HINT = `
|
|
11679
11679
|
|
|
11680
11680
|
[Hint] Use aft_conflicts to see all conflict regions across files in a single call.`;
|
|
11681
|
-
var GREP_HINT = `
|
|
11682
|
-
|
|
11683
|
-
[Hint] Use the grep tool instead of bash for faster indexed search.`;
|
|
11684
11681
|
function maybeAppendConflictsHint(output) {
|
|
11685
11682
|
if (!output.includes("Automatic merge failed; fix conflicts"))
|
|
11686
11683
|
return output;
|
|
@@ -11688,12 +11685,12 @@ function maybeAppendConflictsHint(output) {
|
|
|
11688
11685
|
return output;
|
|
11689
11686
|
return output + CONFLICT_HINT;
|
|
11690
11687
|
}
|
|
11691
|
-
|
|
11692
|
-
|
|
11693
|
-
|
|
11694
|
-
|
|
11695
|
-
|
|
11696
|
-
return
|
|
11688
|
+
// ../aft-bridge/dist/bash-timeout.js
|
|
11689
|
+
function resolveBashKillTimeout(modelTimeout, foregroundWaitMs) {
|
|
11690
|
+
if (modelTimeout !== undefined && modelTimeout >= foregroundWaitMs) {
|
|
11691
|
+
return modelTimeout;
|
|
11692
|
+
}
|
|
11693
|
+
return;
|
|
11697
11694
|
}
|
|
11698
11695
|
// ../aft-bridge/dist/bridge.js
|
|
11699
11696
|
import { spawn } from "node:child_process";
|
|
@@ -11943,6 +11940,9 @@ class BinaryBridge {
|
|
|
11943
11940
|
hasPendingRequests() {
|
|
11944
11941
|
return this.pending.size > 0;
|
|
11945
11942
|
}
|
|
11943
|
+
getCwd() {
|
|
11944
|
+
return this.cwd;
|
|
11945
|
+
}
|
|
11946
11946
|
getCachedStatus() {
|
|
11947
11947
|
return this.cachedStatus;
|
|
11948
11948
|
}
|
|
@@ -12286,6 +12286,7 @@ class BinaryBridge {
|
|
|
12286
12286
|
const remaining = stdoutDecoder.end();
|
|
12287
12287
|
if (remaining)
|
|
12288
12288
|
this.onStdoutData(remaining);
|
|
12289
|
+
this.flushStdoutBuffer();
|
|
12289
12290
|
});
|
|
12290
12291
|
const stderrDecoder = new StringDecoder("utf8");
|
|
12291
12292
|
child.stderr?.on("data", (chunk) => {
|
|
@@ -12308,6 +12309,7 @@ class BinaryBridge {
|
|
|
12308
12309
|
return;
|
|
12309
12310
|
if (this._shuttingDown)
|
|
12310
12311
|
return;
|
|
12312
|
+
this.flushStdoutBuffer();
|
|
12311
12313
|
this.logVia(`Process exited: code=${code}, signal=${signal}`);
|
|
12312
12314
|
if (signal === "SIGTERM" || signal === "SIGKILL" || signal === "SIGHUP" || signal === "SIGINT") {
|
|
12313
12315
|
this.process = null;
|
|
@@ -12376,71 +12378,81 @@ class BinaryBridge {
|
|
|
12376
12378
|
this.stdoutBuffer = this.stdoutBuffer.slice(newlineIdx + 1);
|
|
12377
12379
|
if (!line)
|
|
12378
12380
|
continue;
|
|
12379
|
-
|
|
12380
|
-
|
|
12381
|
-
|
|
12382
|
-
|
|
12383
|
-
|
|
12384
|
-
|
|
12385
|
-
|
|
12386
|
-
|
|
12387
|
-
|
|
12388
|
-
|
|
12389
|
-
|
|
12390
|
-
|
|
12391
|
-
|
|
12392
|
-
|
|
12393
|
-
|
|
12394
|
-
|
|
12395
|
-
|
|
12396
|
-
|
|
12397
|
-
|
|
12398
|
-
|
|
12399
|
-
|
|
12400
|
-
|
|
12401
|
-
|
|
12402
|
-
|
|
12403
|
-
|
|
12404
|
-
|
|
12405
|
-
|
|
12406
|
-
this.onBashCompletion?.(response, this);
|
|
12407
|
-
continue;
|
|
12408
|
-
}
|
|
12409
|
-
if (response.type === "bash_long_running") {
|
|
12410
|
-
this.onBashLongRunning?.(response, this);
|
|
12411
|
-
continue;
|
|
12412
|
-
}
|
|
12413
|
-
if (response.type === "bash_pattern_match") {
|
|
12414
|
-
this.onBashPatternMatch?.(response, this);
|
|
12415
|
-
continue;
|
|
12416
|
-
}
|
|
12417
|
-
if (response.type === "configure_warnings") {
|
|
12418
|
-
this.handleConfigureWarningsFrame(response).catch((err) => {
|
|
12419
|
-
this.warnVia(`configure warning delivery failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
12420
|
-
});
|
|
12421
|
-
continue;
|
|
12422
|
-
}
|
|
12423
|
-
if (response.type === "status_changed") {
|
|
12424
|
-
this.handleStatusChangedFrame(response);
|
|
12425
|
-
continue;
|
|
12426
|
-
}
|
|
12427
|
-
const id = response.id;
|
|
12428
|
-
if (id && this.pending.has(id)) {
|
|
12429
|
-
const entry = this.pending.get(id);
|
|
12430
|
-
if (!entry)
|
|
12431
|
-
continue;
|
|
12432
|
-
this.pending.delete(id);
|
|
12381
|
+
this.processStdoutLine(line);
|
|
12382
|
+
}
|
|
12383
|
+
}
|
|
12384
|
+
flushStdoutBuffer() {
|
|
12385
|
+
const line = this.stdoutBuffer.trim();
|
|
12386
|
+
this.stdoutBuffer = "";
|
|
12387
|
+
if (!line)
|
|
12388
|
+
return;
|
|
12389
|
+
this.processStdoutLine(line);
|
|
12390
|
+
}
|
|
12391
|
+
processStdoutLine(line) {
|
|
12392
|
+
try {
|
|
12393
|
+
const response = JSON.parse(line);
|
|
12394
|
+
this.lastChildActivityAt = Date.now();
|
|
12395
|
+
if (response.type === "progress") {
|
|
12396
|
+
const requestId = response.request_id;
|
|
12397
|
+
const entry = requestId ? this.pending.get(requestId) : undefined;
|
|
12398
|
+
const kind = response.kind === "stderr" ? "stderr" : "stdout";
|
|
12399
|
+
const text = typeof response.chunk === "string" ? response.chunk : "";
|
|
12400
|
+
entry?.onProgress?.({ kind, text });
|
|
12401
|
+
return;
|
|
12402
|
+
}
|
|
12403
|
+
if (response.type === "permission_ask") {
|
|
12404
|
+
const requestId = response.request_id;
|
|
12405
|
+
const entry = requestId ? this.pending.get(requestId) : undefined;
|
|
12406
|
+
if (requestId && entry) {
|
|
12407
|
+
this.pending.delete(requestId);
|
|
12433
12408
|
clearTimeout(entry.timer);
|
|
12434
|
-
|
|
12435
|
-
|
|
12436
|
-
|
|
12437
|
-
|
|
12438
|
-
|
|
12439
|
-
|
|
12409
|
+
entry.resolve({
|
|
12410
|
+
success: false,
|
|
12411
|
+
code: "permission_required",
|
|
12412
|
+
message: "bash command requires permission",
|
|
12413
|
+
asks: response.asks
|
|
12414
|
+
});
|
|
12440
12415
|
}
|
|
12441
|
-
|
|
12442
|
-
this.warnVia(`Failed to parse stdout line: ${line}`);
|
|
12416
|
+
return;
|
|
12443
12417
|
}
|
|
12418
|
+
if (response.type === "bash_completed") {
|
|
12419
|
+
this.onBashCompletion?.(response, this);
|
|
12420
|
+
return;
|
|
12421
|
+
}
|
|
12422
|
+
if (response.type === "bash_long_running") {
|
|
12423
|
+
this.onBashLongRunning?.(response, this);
|
|
12424
|
+
return;
|
|
12425
|
+
}
|
|
12426
|
+
if (response.type === "bash_pattern_match") {
|
|
12427
|
+
this.onBashPatternMatch?.(response, this);
|
|
12428
|
+
return;
|
|
12429
|
+
}
|
|
12430
|
+
if (response.type === "configure_warnings") {
|
|
12431
|
+
this.handleConfigureWarningsFrame(response).catch((err) => {
|
|
12432
|
+
this.warnVia(`configure warning delivery failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
12433
|
+
});
|
|
12434
|
+
return;
|
|
12435
|
+
}
|
|
12436
|
+
if (response.type === "status_changed") {
|
|
12437
|
+
this.handleStatusChangedFrame(response);
|
|
12438
|
+
return;
|
|
12439
|
+
}
|
|
12440
|
+
const id = response.id;
|
|
12441
|
+
if (id && this.pending.has(id)) {
|
|
12442
|
+
const entry = this.pending.get(id);
|
|
12443
|
+
if (!entry)
|
|
12444
|
+
return;
|
|
12445
|
+
this.pending.delete(id);
|
|
12446
|
+
clearTimeout(entry.timer);
|
|
12447
|
+
this.consecutiveRequestTimeouts = 0;
|
|
12448
|
+
this.scheduleRestartCountReset();
|
|
12449
|
+
this.captureStatusBar(response);
|
|
12450
|
+
entry.resolve(response);
|
|
12451
|
+
} else if (typeof response.type === "string") {
|
|
12452
|
+
this.logVia(`Ignoring unknown stdout push frame type: ${response.type}`);
|
|
12453
|
+
}
|
|
12454
|
+
} catch (_err) {
|
|
12455
|
+
this.warnVia(`Failed to parse stdout line: ${line}`);
|
|
12444
12456
|
}
|
|
12445
12457
|
}
|
|
12446
12458
|
captureStatusBar(response) {
|
|
@@ -12528,6 +12540,27 @@ class BinaryBridge {
|
|
|
12528
12540
|
}
|
|
12529
12541
|
}
|
|
12530
12542
|
}
|
|
12543
|
+
// ../aft-bridge/dist/coerce.js
|
|
12544
|
+
function coerceStringArray(value) {
|
|
12545
|
+
if (Array.isArray(value)) {
|
|
12546
|
+
return value.filter((entry) => typeof entry === "string" && entry.length > 0);
|
|
12547
|
+
}
|
|
12548
|
+
if (typeof value === "string") {
|
|
12549
|
+
const trimmed = value.trim();
|
|
12550
|
+
if (trimmed.length === 0)
|
|
12551
|
+
return [];
|
|
12552
|
+
if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
|
|
12553
|
+
try {
|
|
12554
|
+
const parsed = JSON.parse(trimmed);
|
|
12555
|
+
if (Array.isArray(parsed)) {
|
|
12556
|
+
return parsed.filter((entry) => typeof entry === "string" && entry.length > 0);
|
|
12557
|
+
}
|
|
12558
|
+
} catch {}
|
|
12559
|
+
}
|
|
12560
|
+
return [value];
|
|
12561
|
+
}
|
|
12562
|
+
return [];
|
|
12563
|
+
}
|
|
12531
12564
|
// ../aft-bridge/dist/downloader.js
|
|
12532
12565
|
import { spawnSync } from "node:child_process";
|
|
12533
12566
|
import { createHash, randomUUID } from "node:crypto";
|
|
@@ -14037,6 +14070,221 @@ function isProcessAlive(pid) {
|
|
|
14037
14070
|
return true;
|
|
14038
14071
|
}
|
|
14039
14072
|
}
|
|
14073
|
+
// ../aft-bridge/dist/pipe-strip.js
|
|
14074
|
+
var NOISE_FILTERS = new Set(["grep", "rg", "head", "tail", "cat", "less", "more"]);
|
|
14075
|
+
var GREP_GUARD_FLAGS = new Set([
|
|
14076
|
+
"c",
|
|
14077
|
+
"count",
|
|
14078
|
+
"q",
|
|
14079
|
+
"quiet",
|
|
14080
|
+
"o",
|
|
14081
|
+
"only-matching",
|
|
14082
|
+
"l",
|
|
14083
|
+
"files-with-matches"
|
|
14084
|
+
]);
|
|
14085
|
+
function maybeStripCompressorPipe(command, compressionEnabled) {
|
|
14086
|
+
if (!compressionEnabled)
|
|
14087
|
+
return { command, stripped: false };
|
|
14088
|
+
const chain = splitTopLevelAndChain(command);
|
|
14089
|
+
if (chain === null)
|
|
14090
|
+
return { command, stripped: false };
|
|
14091
|
+
const prefix = chain.slice(0, -1).map((segment) => segment.trim()).filter(Boolean);
|
|
14092
|
+
const pipeline3 = chain[chain.length - 1] ?? "";
|
|
14093
|
+
const stages = splitTopLevelPipeline(pipeline3);
|
|
14094
|
+
if (stages.length < 2)
|
|
14095
|
+
return { command, stripped: false };
|
|
14096
|
+
const firstStage = stages[0]?.trim() ?? "";
|
|
14097
|
+
if (!isCompressorHandledRunner(firstStage))
|
|
14098
|
+
return { command, stripped: false };
|
|
14099
|
+
const filterStages = stages.slice(1).map((stage) => stage.trim());
|
|
14100
|
+
for (const stage of filterStages) {
|
|
14101
|
+
if (!isPlainNoiseFilter(stage))
|
|
14102
|
+
return { command, stripped: false };
|
|
14103
|
+
}
|
|
14104
|
+
const filters = filterStages.join(" | ");
|
|
14105
|
+
const rebuilt = [...prefix, firstStage].join(" && ");
|
|
14106
|
+
return {
|
|
14107
|
+
command: rebuilt,
|
|
14108
|
+
stripped: true,
|
|
14109
|
+
note: `[AFT dropped \`| ${filters}\` (compressed:false to keep)]`
|
|
14110
|
+
};
|
|
14111
|
+
}
|
|
14112
|
+
function splitTopLevelAndChain(command) {
|
|
14113
|
+
const segments = [];
|
|
14114
|
+
let start = 0;
|
|
14115
|
+
let quote = null;
|
|
14116
|
+
let escaped = false;
|
|
14117
|
+
for (let index = 0;index < command.length; index++) {
|
|
14118
|
+
const char = command[index];
|
|
14119
|
+
const next = command[index + 1];
|
|
14120
|
+
if (escaped) {
|
|
14121
|
+
escaped = false;
|
|
14122
|
+
continue;
|
|
14123
|
+
}
|
|
14124
|
+
if (char === "\\" && quote !== "'") {
|
|
14125
|
+
escaped = true;
|
|
14126
|
+
continue;
|
|
14127
|
+
}
|
|
14128
|
+
if (quote) {
|
|
14129
|
+
if (char === quote)
|
|
14130
|
+
quote = null;
|
|
14131
|
+
continue;
|
|
14132
|
+
}
|
|
14133
|
+
if (char === "'" || char === '"') {
|
|
14134
|
+
quote = char;
|
|
14135
|
+
continue;
|
|
14136
|
+
}
|
|
14137
|
+
if (char === "&" && next === "&") {
|
|
14138
|
+
segments.push(command.slice(start, index));
|
|
14139
|
+
start = index + 2;
|
|
14140
|
+
index++;
|
|
14141
|
+
continue;
|
|
14142
|
+
}
|
|
14143
|
+
if (char === "|" && next === "|")
|
|
14144
|
+
return null;
|
|
14145
|
+
if (char === ";")
|
|
14146
|
+
return null;
|
|
14147
|
+
}
|
|
14148
|
+
segments.push(command.slice(start));
|
|
14149
|
+
return segments;
|
|
14150
|
+
}
|
|
14151
|
+
function splitTopLevelPipeline(command) {
|
|
14152
|
+
const stages = [];
|
|
14153
|
+
let start = 0;
|
|
14154
|
+
let quote = null;
|
|
14155
|
+
let escaped = false;
|
|
14156
|
+
for (let index = 0;index < command.length; index++) {
|
|
14157
|
+
const char = command[index];
|
|
14158
|
+
const next = command[index + 1];
|
|
14159
|
+
const previous = command[index - 1];
|
|
14160
|
+
if (escaped) {
|
|
14161
|
+
escaped = false;
|
|
14162
|
+
continue;
|
|
14163
|
+
}
|
|
14164
|
+
if (char === "\\" && quote !== "'") {
|
|
14165
|
+
escaped = true;
|
|
14166
|
+
continue;
|
|
14167
|
+
}
|
|
14168
|
+
if (quote) {
|
|
14169
|
+
if (char === quote)
|
|
14170
|
+
quote = null;
|
|
14171
|
+
continue;
|
|
14172
|
+
}
|
|
14173
|
+
if (char === "'" || char === '"') {
|
|
14174
|
+
quote = char;
|
|
14175
|
+
continue;
|
|
14176
|
+
}
|
|
14177
|
+
if (char === "|" && previous !== "|" && next !== "|") {
|
|
14178
|
+
stages.push(command.slice(start, index));
|
|
14179
|
+
start = index + 1;
|
|
14180
|
+
}
|
|
14181
|
+
}
|
|
14182
|
+
stages.push(command.slice(start));
|
|
14183
|
+
return stages;
|
|
14184
|
+
}
|
|
14185
|
+
function isCompressorHandledRunner(stage) {
|
|
14186
|
+
const tokens = tokenizeStage(stage);
|
|
14187
|
+
if (tokens.length === 0)
|
|
14188
|
+
return false;
|
|
14189
|
+
const [first, second, third] = tokens;
|
|
14190
|
+
if (!first)
|
|
14191
|
+
return false;
|
|
14192
|
+
if (tokens.some((token) => token === "&&" || token === "||" || token.includes(";"))) {
|
|
14193
|
+
return false;
|
|
14194
|
+
}
|
|
14195
|
+
if (first === "bun")
|
|
14196
|
+
return second === "test" || second === "run" && startsWithTest(third);
|
|
14197
|
+
if (first === "cargo")
|
|
14198
|
+
return ["test", "build", "check", "clippy"].includes(second ?? "");
|
|
14199
|
+
if (first === "go")
|
|
14200
|
+
return second === "test" || second === "build";
|
|
14201
|
+
if (["npm", "pnpm"].includes(first)) {
|
|
14202
|
+
return second === "test" || second === "run" && startsWithTest(third);
|
|
14203
|
+
}
|
|
14204
|
+
if (first === "yarn")
|
|
14205
|
+
return second === "test";
|
|
14206
|
+
if (first === "playwright")
|
|
14207
|
+
return second === "test";
|
|
14208
|
+
if (first === "npx")
|
|
14209
|
+
return ["tsc", "eslint", "vitest", "jest"].includes(second ?? "");
|
|
14210
|
+
return ["vitest", "jest", "pytest", "tsc", "eslint", "biome", "ruff", "mypy"].includes(first);
|
|
14211
|
+
}
|
|
14212
|
+
function startsWithTest(token) {
|
|
14213
|
+
return token?.startsWith("test") === true;
|
|
14214
|
+
}
|
|
14215
|
+
function isPlainNoiseFilter(stage) {
|
|
14216
|
+
const tokens = tokenizeStage(stage);
|
|
14217
|
+
const head = tokens[0];
|
|
14218
|
+
if (!head)
|
|
14219
|
+
return false;
|
|
14220
|
+
if (head === "wc")
|
|
14221
|
+
return false;
|
|
14222
|
+
if (!NOISE_FILTERS.has(head))
|
|
14223
|
+
return false;
|
|
14224
|
+
if ((head === "grep" || head === "rg") && hasIntentChangingGrepFlag(tokens.slice(1)))
|
|
14225
|
+
return false;
|
|
14226
|
+
return true;
|
|
14227
|
+
}
|
|
14228
|
+
function hasIntentChangingGrepFlag(args) {
|
|
14229
|
+
for (const arg of args) {
|
|
14230
|
+
if (arg === "--")
|
|
14231
|
+
return false;
|
|
14232
|
+
if (!arg.startsWith("-") || arg === "-")
|
|
14233
|
+
continue;
|
|
14234
|
+
if (arg.startsWith("--")) {
|
|
14235
|
+
const flag = arg.slice(2).split("=", 1)[0];
|
|
14236
|
+
if (GREP_GUARD_FLAGS.has(flag))
|
|
14237
|
+
return true;
|
|
14238
|
+
continue;
|
|
14239
|
+
}
|
|
14240
|
+
for (const flag of arg.slice(1)) {
|
|
14241
|
+
if (GREP_GUARD_FLAGS.has(flag))
|
|
14242
|
+
return true;
|
|
14243
|
+
}
|
|
14244
|
+
}
|
|
14245
|
+
return false;
|
|
14246
|
+
}
|
|
14247
|
+
function tokenizeStage(stage) {
|
|
14248
|
+
const tokens = [];
|
|
14249
|
+
let current = "";
|
|
14250
|
+
let quote = null;
|
|
14251
|
+
let escaped = false;
|
|
14252
|
+
for (let index = 0;index < stage.length; index++) {
|
|
14253
|
+
const char = stage[index];
|
|
14254
|
+
if (escaped) {
|
|
14255
|
+
current += char;
|
|
14256
|
+
escaped = false;
|
|
14257
|
+
continue;
|
|
14258
|
+
}
|
|
14259
|
+
if (char === "\\" && quote !== "'") {
|
|
14260
|
+
escaped = true;
|
|
14261
|
+
continue;
|
|
14262
|
+
}
|
|
14263
|
+
if (quote) {
|
|
14264
|
+
if (char === quote) {
|
|
14265
|
+
quote = null;
|
|
14266
|
+
} else {
|
|
14267
|
+
current += char;
|
|
14268
|
+
}
|
|
14269
|
+
continue;
|
|
14270
|
+
}
|
|
14271
|
+
if (char === "'" || char === '"') {
|
|
14272
|
+
quote = char;
|
|
14273
|
+
continue;
|
|
14274
|
+
}
|
|
14275
|
+
if (/\s/.test(char)) {
|
|
14276
|
+
if (current.length > 0) {
|
|
14277
|
+
tokens.push(current);
|
|
14278
|
+
current = "";
|
|
14279
|
+
}
|
|
14280
|
+
continue;
|
|
14281
|
+
}
|
|
14282
|
+
current += char;
|
|
14283
|
+
}
|
|
14284
|
+
if (current.length > 0)
|
|
14285
|
+
tokens.push(current);
|
|
14286
|
+
return tokens;
|
|
14287
|
+
}
|
|
14040
14288
|
// ../aft-bridge/dist/pool.js
|
|
14041
14289
|
import { realpathSync as realpathSync2 } from "node:fs";
|
|
14042
14290
|
import { homedir as homedir6 } from "node:os";
|
|
@@ -14436,13 +14684,7 @@ function consumeBgCompletion(sessionID, taskId) {
|
|
|
14436
14684
|
state.consumedTaskIds.delete(evicted);
|
|
14437
14685
|
}
|
|
14438
14686
|
}
|
|
14439
|
-
|
|
14440
|
-
clearTimeout(state.debounceTimer);
|
|
14441
|
-
state.debounceTimer = null;
|
|
14442
|
-
state.firstCompletionAt = null;
|
|
14443
|
-
state.scheduledFireAt = null;
|
|
14444
|
-
state.scheduledCompletionCount = 0;
|
|
14445
|
-
}
|
|
14687
|
+
clearWakeTimerIfNoPending(state);
|
|
14446
14688
|
}
|
|
14447
14689
|
async function markBgCompletionDelivered(drainContext, taskId) {
|
|
14448
14690
|
await ackCompletions(drainContext, [
|
|
@@ -14601,16 +14843,11 @@ async function appendToolResultBgCompletions(drainContext, content) {
|
|
|
14601
14843
|
}
|
|
14602
14844
|
state.pendingLongRunning = [];
|
|
14603
14845
|
state.pendingPatternMatches = [];
|
|
14846
|
+
state.retryDelayMs = null;
|
|
14604
14847
|
state.wakeRetryAttempts = 0;
|
|
14605
14848
|
state.wakeHardStopped = false;
|
|
14606
14849
|
await ackCompletions(drainContext, completionAcks);
|
|
14607
|
-
|
|
14608
|
-
clearTimeout(state.debounceTimer);
|
|
14609
|
-
state.debounceTimer = null;
|
|
14610
|
-
state.firstCompletionAt = null;
|
|
14611
|
-
state.scheduledFireAt = null;
|
|
14612
|
-
state.scheduledCompletionCount = 0;
|
|
14613
|
-
}
|
|
14850
|
+
clearWakeTimerIfNoPending(state);
|
|
14614
14851
|
return [...content, { type: "text", text: reminder }];
|
|
14615
14852
|
}
|
|
14616
14853
|
async function handleTurnEndBgCompletions(drainContext) {
|
|
@@ -14722,13 +14959,18 @@ function wakeEligibleCompletions(state, includeDeferredCompletions) {
|
|
|
14722
14959
|
return state.pendingCompletions.filter((completion) => !state.wakeDeferredTaskIds.has(completion.task_id));
|
|
14723
14960
|
}
|
|
14724
14961
|
function clearWakeTimerIfNoPending(state) {
|
|
14725
|
-
if (state.pendingCompletions.length
|
|
14726
|
-
|
|
14727
|
-
state.debounceTimer = null;
|
|
14728
|
-
state.firstCompletionAt = null;
|
|
14729
|
-
state.scheduledFireAt = null;
|
|
14730
|
-
state.scheduledCompletionCount = 0;
|
|
14962
|
+
if (state.pendingCompletions.length > 0 || state.pendingLongRunning.length > 0 || state.pendingPatternMatches.length > 0) {
|
|
14963
|
+
return;
|
|
14731
14964
|
}
|
|
14965
|
+
if (state.debounceTimer)
|
|
14966
|
+
clearTimeout(state.debounceTimer);
|
|
14967
|
+
state.debounceTimer = null;
|
|
14968
|
+
state.firstCompletionAt = null;
|
|
14969
|
+
state.scheduledFireAt = null;
|
|
14970
|
+
state.scheduledCompletionCount = 0;
|
|
14971
|
+
state.retryDelayMs = null;
|
|
14972
|
+
state.wakeRetryAttempts = 0;
|
|
14973
|
+
state.wakeHardStopped = false;
|
|
14732
14974
|
}
|
|
14733
14975
|
function scheduleWake(state, sendWake, onSendFailure, includeDeferredCompletions = true) {
|
|
14734
14976
|
if (state.wakeHardStopped)
|
|
@@ -14965,7 +15207,7 @@ import {
|
|
|
14965
15207
|
// package.json
|
|
14966
15208
|
var package_default = {
|
|
14967
15209
|
name: "@cortexkit/aft-pi",
|
|
14968
|
-
version: "0.
|
|
15210
|
+
version: "0.36.0",
|
|
14969
15211
|
type: "module",
|
|
14970
15212
|
description: "Pi coding agent extension for Agent File Tools (AFT) — tree-sitter and LSP-powered code analysis",
|
|
14971
15213
|
main: "dist/index.js",
|
|
@@ -14988,7 +15230,7 @@ var package_default = {
|
|
|
14988
15230
|
"test:unit": "bun test src/__tests__ --path-ignore-patterns 'src/__tests__/e2e/**'"
|
|
14989
15231
|
},
|
|
14990
15232
|
dependencies: {
|
|
14991
|
-
"@cortexkit/aft-bridge": "0.
|
|
15233
|
+
"@cortexkit/aft-bridge": "0.36.0",
|
|
14992
15234
|
"@xterm/headless": "^5.5.0",
|
|
14993
15235
|
"comment-json": "^5.0.0",
|
|
14994
15236
|
diff: "^8.0.4",
|
|
@@ -14996,12 +15238,12 @@ var package_default = {
|
|
|
14996
15238
|
zod: "^4.1.8"
|
|
14997
15239
|
},
|
|
14998
15240
|
optionalDependencies: {
|
|
14999
|
-
"@cortexkit/aft-darwin-arm64": "0.
|
|
15000
|
-
"@cortexkit/aft-darwin-x64": "0.
|
|
15001
|
-
"@cortexkit/aft-linux-arm64": "0.
|
|
15002
|
-
"@cortexkit/aft-linux-x64": "0.
|
|
15003
|
-
"@cortexkit/aft-win32-arm64": "0.
|
|
15004
|
-
"@cortexkit/aft-win32-x64": "0.
|
|
15241
|
+
"@cortexkit/aft-darwin-arm64": "0.36.0",
|
|
15242
|
+
"@cortexkit/aft-darwin-x64": "0.36.0",
|
|
15243
|
+
"@cortexkit/aft-linux-arm64": "0.36.0",
|
|
15244
|
+
"@cortexkit/aft-linux-x64": "0.36.0",
|
|
15245
|
+
"@cortexkit/aft-win32-arm64": "0.36.0",
|
|
15246
|
+
"@cortexkit/aft-win32-x64": "0.36.0"
|
|
15005
15247
|
},
|
|
15006
15248
|
devDependencies: {
|
|
15007
15249
|
"@earendil-works/pi-coding-agent": "*",
|
|
@@ -15342,6 +15584,15 @@ function resolveSessionId(extCtx) {
|
|
|
15342
15584
|
const id = manager?.getSessionId?.();
|
|
15343
15585
|
return typeof id === "string" && id.length > 0 ? id : undefined;
|
|
15344
15586
|
}
|
|
15587
|
+
|
|
15588
|
+
class BridgeError extends Error {
|
|
15589
|
+
code;
|
|
15590
|
+
constructor(message, code) {
|
|
15591
|
+
super(message);
|
|
15592
|
+
this.name = "BridgeError";
|
|
15593
|
+
this.code = code;
|
|
15594
|
+
}
|
|
15595
|
+
}
|
|
15345
15596
|
async function callBridge(bridge, command, params = {}, extCtx, options) {
|
|
15346
15597
|
const timeoutMs = timeoutForCommand(command);
|
|
15347
15598
|
const merged = { ...params };
|
|
@@ -15356,7 +15607,7 @@ async function callBridge(bridge, command, params = {}, extCtx, options) {
|
|
|
15356
15607
|
};
|
|
15357
15608
|
const response = await bridge.send(command, merged, Object.keys(sendOptions).length > 0 ? sendOptions : undefined);
|
|
15358
15609
|
if (response.success === false) {
|
|
15359
|
-
throw new
|
|
15610
|
+
throw new BridgeError(formatBridgeErrorMessage(command, response, merged), typeof response.code === "string" ? response.code : "");
|
|
15360
15611
|
}
|
|
15361
15612
|
ingestBgCompletions(sessionId, response.bg_completions);
|
|
15362
15613
|
return response;
|
|
@@ -32743,6 +32994,15 @@ var FOREGROUND_POLL_INTERVAL_MS = 100;
|
|
|
32743
32994
|
var BASH_WAIT_POLL_INTERVAL_MS = 100;
|
|
32744
32995
|
var DEFAULT_BASH_STATUS_WAIT_TIMEOUT_MS = 30000;
|
|
32745
32996
|
var MAX_BASH_STATUS_WAIT_TIMEOUT_MS = 300000;
|
|
32997
|
+
function resolveForegroundWaitMs(configured) {
|
|
32998
|
+
const override = process.env.AFT_TEST_FOREGROUND_WAIT_MS;
|
|
32999
|
+
if (override !== undefined) {
|
|
33000
|
+
const parsed = Number(override);
|
|
33001
|
+
if (Number.isFinite(parsed) && parsed >= 0)
|
|
33002
|
+
return parsed;
|
|
33003
|
+
}
|
|
33004
|
+
return configured;
|
|
33005
|
+
}
|
|
32746
33006
|
var BASH_TRANSPORT_TIMEOUT_MS = 30000;
|
|
32747
33007
|
var BashParams = Type4.Object({
|
|
32748
33008
|
command: Type4.String({
|
|
@@ -32807,6 +33067,13 @@ var BashWriteParams = Type4.Object({
|
|
|
32807
33067
|
description: "Either a string of verbatim bytes (e.g. 'print(1)\\n') OR an array mixing strings " + "and { key: '<name>' } objects for atomic text+key sequences. " + "Example: [ 'iHello', { key: 'esc' }, ':wq', { key: 'enter' } ]. " + "Allowed key names: enter, return, tab, space, backspace, esc, escape, up, down, " + "left, right, home, end, page-up, page-down, delete, insert, f1..f12, ctrl-a..ctrl-z."
|
|
32808
33068
|
})
|
|
32809
33069
|
});
|
|
33070
|
+
async function callBashBridge(bridge, command, params = {}, extCtx, options) {
|
|
33071
|
+
return await callBridge(bridge, command, params, extCtx, {
|
|
33072
|
+
transportTimeoutMs: BASH_TRANSPORT_TIMEOUT_MS,
|
|
33073
|
+
...options,
|
|
33074
|
+
keepBridgeOnTimeout: true
|
|
33075
|
+
});
|
|
33076
|
+
}
|
|
32810
33077
|
function truncateToVisualLines(text, maxLines) {
|
|
32811
33078
|
const lines = text.split(`
|
|
32812
33079
|
`);
|
|
@@ -32842,11 +33109,13 @@ function registerBashTool(pi, ctx) {
|
|
|
32842
33109
|
parameters: BashParams,
|
|
32843
33110
|
async execute(_toolCallId, params, _signal, onUpdate, extCtx) {
|
|
32844
33111
|
const bridge = bridgeFor(ctx, extCtx.cwd);
|
|
32845
|
-
const
|
|
33112
|
+
const bashCfg = resolveBashConfig(ctx.config);
|
|
33113
|
+
const foregroundWaitMs = resolveForegroundWaitMs(bashCfg.foreground_wait_window_ms);
|
|
32846
33114
|
const timeout = coerceOptionalInt(params.timeout, "timeout", 1, Number.MAX_SAFE_INTEGER);
|
|
32847
33115
|
const ptyRows = coerceOptionalInt(params.ptyRows, "ptyRows", 1, 60);
|
|
32848
33116
|
const ptyCols = coerceOptionalInt(params.ptyCols, "ptyCols", 1, 140);
|
|
32849
33117
|
const effectiveBackground = params.background === true || params.pty === true;
|
|
33118
|
+
const effectiveTimeout = effectiveBackground ? timeout : resolveBashKillTimeout(timeout, foregroundWaitMs);
|
|
32850
33119
|
let spawnContext = {
|
|
32851
33120
|
command: params.command,
|
|
32852
33121
|
cwd: params.workdir
|
|
@@ -32858,10 +33127,13 @@ function registerBashTool(pi, ctx) {
|
|
|
32858
33127
|
throw new Error(`BashSpawnHook failed: ${hookErr instanceof Error ? hookErr.message : String(hookErr)}`);
|
|
32859
33128
|
}
|
|
32860
33129
|
}
|
|
33130
|
+
const compressionEnabled = bashCfg.compress && params.compressed !== false;
|
|
33131
|
+
const pipeStrip = maybeStripCompressorPipe(spawnContext.command, compressionEnabled);
|
|
33132
|
+
const bridgeCommand = pipeStrip.command;
|
|
32861
33133
|
let streamed = "";
|
|
32862
|
-
const response = await
|
|
32863
|
-
command:
|
|
32864
|
-
timeout,
|
|
33134
|
+
const response = await callBashBridge(bridge, "bash", {
|
|
33135
|
+
command: bridgeCommand,
|
|
33136
|
+
timeout: effectiveTimeout,
|
|
32865
33137
|
workdir: spawnContext.cwd ?? params.workdir,
|
|
32866
33138
|
env: spawnContext.env,
|
|
32867
33139
|
description: params.description,
|
|
@@ -32872,8 +33144,6 @@ function registerBashTool(pi, ctx) {
|
|
|
32872
33144
|
pty_rows: ptyRows,
|
|
32873
33145
|
pty_cols: ptyCols
|
|
32874
33146
|
}, extCtx, {
|
|
32875
|
-
transportTimeoutMs: BASH_TRANSPORT_TIMEOUT_MS,
|
|
32876
|
-
keepBridgeOnTimeout: true,
|
|
32877
33147
|
onProgress: ({ text }) => {
|
|
32878
33148
|
streamed += text;
|
|
32879
33149
|
const displayText = truncateToVisualLines(streamed, 100);
|
|
@@ -32896,15 +33166,15 @@ function registerBashTool(pi, ctx) {
|
|
|
32896
33166
|
task_id: taskId
|
|
32897
33167
|
});
|
|
32898
33168
|
}
|
|
32899
|
-
const waitTimeoutMs =
|
|
33169
|
+
const waitTimeoutMs = effectiveTimeout !== undefined ? Math.min(effectiveTimeout, foregroundWaitMs) : foregroundWaitMs;
|
|
32900
33170
|
const startedAt = Date.now();
|
|
32901
33171
|
while (true) {
|
|
32902
|
-
const status = await
|
|
33172
|
+
const status = await callBashBridge(bridge, "bash_status", { task_id: taskId }, extCtx);
|
|
32903
33173
|
if (status.success === false) {
|
|
32904
33174
|
throw new Error(status.message ?? "bash_status failed");
|
|
32905
33175
|
}
|
|
32906
33176
|
if (isTerminalStatus(status.status)) {
|
|
32907
|
-
return bashResult(withBashHints(formatForegroundResult(status),
|
|
33177
|
+
return bashResult(appendPipeStripNote(withBashHints(formatForegroundResult(status)), pipeStrip.note), {
|
|
32908
33178
|
exit_code: status.exit_code,
|
|
32909
33179
|
duration_ms: status.duration_ms,
|
|
32910
33180
|
truncated: status.output_truncated,
|
|
@@ -32913,12 +33183,12 @@ function registerBashTool(pi, ctx) {
|
|
|
32913
33183
|
});
|
|
32914
33184
|
}
|
|
32915
33185
|
if (Date.now() - startedAt >= waitTimeoutMs) {
|
|
32916
|
-
const promoted = await
|
|
33186
|
+
const promoted = await callBashBridge(bridge, "bash_promote", { task_id: taskId }, extCtx);
|
|
32917
33187
|
if (promoted.success === false) {
|
|
32918
33188
|
throw new Error(promoted.message ?? "bash_promote failed");
|
|
32919
33189
|
}
|
|
32920
33190
|
trackBgTask(resolveSessionId(extCtx), taskId);
|
|
32921
|
-
return bashResult(formatPromotionMessage(taskId,
|
|
33191
|
+
return bashResult(formatPromotionMessage(taskId, effectiveTimeout, foregroundWaitMs), {
|
|
32922
33192
|
task_id: taskId
|
|
32923
33193
|
});
|
|
32924
33194
|
}
|
|
@@ -32933,7 +33203,7 @@ function registerBashTool(pi, ctx) {
|
|
|
32933
33203
|
task_id: taskId
|
|
32934
33204
|
};
|
|
32935
33205
|
const output = response.output ?? "";
|
|
32936
|
-
return bashResult(withBashHints(output,
|
|
33206
|
+
return bashResult(appendPipeStripNote(withBashHints(output), pipeStrip.note), details);
|
|
32937
33207
|
},
|
|
32938
33208
|
renderCall(args, theme, context) {
|
|
32939
33209
|
return renderBashCall(args?.command, args?.description, theme, context);
|
|
@@ -32947,6 +33217,11 @@ function registerBashTool(pi, ctx) {
|
|
|
32947
33217
|
pi.registerTool(createBashWriteTool(ctx));
|
|
32948
33218
|
pi.registerTool(createBashKillTool(ctx));
|
|
32949
33219
|
}
|
|
33220
|
+
function appendPipeStripNote(output, note) {
|
|
33221
|
+
return note ? `${output}
|
|
33222
|
+
|
|
33223
|
+
${note}` : output;
|
|
33224
|
+
}
|
|
32950
33225
|
function formatBackgroundLaunch(taskId, isPty) {
|
|
32951
33226
|
if (isPty) {
|
|
32952
33227
|
return `PTY task started: ${taskId}. Use bash_status({ task_id: "${taskId}", output_mode: "screen" }) to see the visible terminal, bash_write({ task_id: "${taskId}", input: ... }) to send keystrokes. A completion reminder fires automatically when the task exits.`;
|
|
@@ -32960,10 +33235,8 @@ function formatPromotionMessage(taskId, timeout, waitWindowMs) {
|
|
|
32960
33235
|
function formatSeconds(ms) {
|
|
32961
33236
|
return `${Number((ms / 1000).toFixed(1))}s`;
|
|
32962
33237
|
}
|
|
32963
|
-
function withBashHints(output
|
|
32964
|
-
|
|
32965
|
-
result = maybeAppendGrepHint(result, command);
|
|
32966
|
-
return result;
|
|
33238
|
+
function withBashHints(output) {
|
|
33239
|
+
return maybeAppendConflictsHint(output);
|
|
32967
33240
|
}
|
|
32968
33241
|
function formatForegroundResult(data) {
|
|
32969
33242
|
const output = data.output_preview ?? "";
|
|
@@ -33008,7 +33281,7 @@ function createBashWatchTool(ctx) {
|
|
|
33008
33281
|
return {
|
|
33009
33282
|
name: "bash_watch",
|
|
33010
33283
|
label: "bash_watch",
|
|
33011
|
-
description: "
|
|
33284
|
+
description: "Watch a background bash task. Two modes. Async (background:true, requires pattern) registers a non-blocking notification and returns immediately — use this to be pinged when a specific line appears or the task exits, without freezing your turn. Sync (default) blocks until a pattern matches/the task exits/timeout, and is ONLY for short bounded waits (seconds, e.g. a dev server printing a readiness line). Do NOT sync-wait for a long task (build/test/install): blocking locks the user out until it ends — instead end your turn and let the automatic completion reminder arrive, or use async mode.",
|
|
33012
33285
|
promptSnippet: "Wait for or watch a background bash task",
|
|
33013
33286
|
parameters: BashWatchParams,
|
|
33014
33287
|
async execute(_toolCallId, params, _signal, _onUpdate, extCtx) {
|
|
@@ -33030,7 +33303,7 @@ function createBashWatchTool(ctx) {
|
|
|
33030
33303
|
markExplicitControl(sessionId, params.task_id, false);
|
|
33031
33304
|
let registered;
|
|
33032
33305
|
try {
|
|
33033
|
-
registered = await
|
|
33306
|
+
registered = await callBashBridge(bridge, "bash_notify", notifyParams, extCtx);
|
|
33034
33307
|
} catch (err) {
|
|
33035
33308
|
unmarkExplicitControl(sessionId, params.task_id);
|
|
33036
33309
|
throw err;
|
|
@@ -33040,7 +33313,6 @@ function createBashWatchTool(ctx) {
|
|
|
33040
33313
|
const message = String(registered.message ?? "bash_notify failed");
|
|
33041
33314
|
throw new Error(`${String(registered.code ?? "invalid_request")}: ${message}`);
|
|
33042
33315
|
}
|
|
33043
|
-
markExplicitControl(sessionId, params.task_id);
|
|
33044
33316
|
const watchDetails = { registered: true, watchId: registered.watch_id };
|
|
33045
33317
|
return textResult(`Watch registered: ${registered.watch_id} on task ${params.task_id}
|
|
33046
33318
|
A notification will fire when the pattern matches or the task exits.`, watchDetails);
|
|
@@ -33060,7 +33332,7 @@ function createBashWriteTool(ctx) {
|
|
|
33060
33332
|
parameters: BashWriteParams,
|
|
33061
33333
|
async execute(_toolCallId, params, _signal, _onUpdate, extCtx) {
|
|
33062
33334
|
const bridge = bridgeFor(ctx, extCtx.cwd);
|
|
33063
|
-
const data = await
|
|
33335
|
+
const data = await callBashBridge(bridge, "bash_write", { task_id: params.task_id, input: params.input }, extCtx);
|
|
33064
33336
|
return textResult(JSON.stringify({ bytes_written: data.bytes_written }, null, 2), data);
|
|
33065
33337
|
}
|
|
33066
33338
|
};
|
|
@@ -33074,7 +33346,7 @@ function createBashKillTool(ctx) {
|
|
|
33074
33346
|
parameters: BashTaskParams,
|
|
33075
33347
|
async execute(_toolCallId, params, _signal, _onUpdate, extCtx) {
|
|
33076
33348
|
const bridge = bridgeFor(ctx, extCtx.cwd);
|
|
33077
|
-
const data = await
|
|
33349
|
+
const data = await callBashBridge(bridge, "bash_kill", { task_id: params.task_id }, extCtx);
|
|
33078
33350
|
if (data.success === false) {
|
|
33079
33351
|
throw new Error(data.message ?? "bash_kill failed");
|
|
33080
33352
|
}
|
|
@@ -33113,7 +33385,7 @@ function bashKillResult(output, details) {
|
|
|
33113
33385
|
};
|
|
33114
33386
|
}
|
|
33115
33387
|
async function bashStatusSnapshot(bridge, extCtx, taskId, outputMode, options) {
|
|
33116
|
-
return await
|
|
33388
|
+
return await callBashBridge(bridge, "bash_status", { task_id: taskId, output_mode: outputMode }, extCtx, options);
|
|
33117
33389
|
}
|
|
33118
33390
|
async function waitForBashStatus(ctx, bridge, extCtx, taskId, outputMode, waitFor, waitForExit, effectiveWaitMs) {
|
|
33119
33391
|
const startedAt = Date.now();
|
|
@@ -33276,7 +33548,7 @@ ${formatWaitSummary(details.waited, details)}`;
|
|
|
33276
33548
|
} else {
|
|
33277
33549
|
if (isTerminalStatus(details.status) && details.output_preview) {
|
|
33278
33550
|
text += `
|
|
33279
|
-
${details.output_preview
|
|
33551
|
+
${details.output_preview}`;
|
|
33280
33552
|
}
|
|
33281
33553
|
if (!isTerminalStatus(details.status)) {
|
|
33282
33554
|
text += `
|
|
@@ -33352,12 +33624,7 @@ ${theme.fg("error", errorText || "bash failed")}`);
|
|
|
33352
33624
|
const rawOutput = result.content.filter((c) => c.type === "text").map((c) => c.text ?? "").join(`
|
|
33353
33625
|
`).trim();
|
|
33354
33626
|
if (rawOutput) {
|
|
33355
|
-
|
|
33356
|
-
`);
|
|
33357
|
-
const preview = lines.length > 25 ? `... (${lines.length - 25} lines omitted)
|
|
33358
|
-
${lines.slice(-25).join(`
|
|
33359
|
-
`)}` : rawOutput;
|
|
33360
|
-
container.addChild(new Text3(preview, 1, 0));
|
|
33627
|
+
container.addChild(new Text3(rawOutput, 1, 0));
|
|
33361
33628
|
container.addChild(new Spacer3(1));
|
|
33362
33629
|
}
|
|
33363
33630
|
if (exitCode !== undefined) {
|
|
@@ -33515,7 +33782,11 @@ function registerFsTools(pi, ctx, surface) {
|
|
|
33515
33782
|
description: "Delete one or more files (or directories) with backup. Each file is backed up before deletion — use `aft_safety undo` to recover any of them. " + "For directories, every file inside is individually backed up before removal. Directory deletion requires recursive: true. " + "Returns { success, complete, deleted, skipped_files }: partial success is allowed; files that fail are reported in skipped_files.",
|
|
33516
33783
|
parameters: DeleteParams,
|
|
33517
33784
|
async execute(_toolCallId, params, _signal, _onUpdate, extCtx) {
|
|
33518
|
-
const
|
|
33785
|
+
const inputs = coerceStringArray(params.files);
|
|
33786
|
+
if (inputs.length === 0) {
|
|
33787
|
+
throw new Error("delete: `files` must be a non-empty array of paths");
|
|
33788
|
+
}
|
|
33789
|
+
const files = await Promise.all(inputs.map((file2) => resolvePathArg(extCtx.cwd, file2)));
|
|
33519
33790
|
const checked = new Set;
|
|
33520
33791
|
for (const file2 of files) {
|
|
33521
33792
|
if (checked.has(file2))
|
|
@@ -33538,7 +33809,7 @@ function registerFsTools(pi, ctx, surface) {
|
|
|
33538
33809
|
` + skipped.map((entry) => ` ${entry.file}: ${entry.reason}`).join(`
|
|
33539
33810
|
`));
|
|
33540
33811
|
}
|
|
33541
|
-
const summary = deleted.length === 1 && skipped.length === 0 ? `Deleted ${deleted[0]}` : `Deleted ${deleted.length}/${
|
|
33812
|
+
const summary = deleted.length === 1 && skipped.length === 0 ? `Deleted ${deleted[0]}` : `Deleted ${deleted.length}/${inputs.length} file(s)`;
|
|
33542
33813
|
return textResult(summary, {
|
|
33543
33814
|
success: true,
|
|
33544
33815
|
complete: skipped.length === 0,
|
|
@@ -33994,6 +34265,7 @@ function registerInspectTool(pi, ctx) {
|
|
|
33994
34265
|
// src/tools/navigate.ts
|
|
33995
34266
|
import { StringEnum as StringEnum3 } from "@earendil-works/pi-ai";
|
|
33996
34267
|
import { Type as Type9 } from "typebox";
|
|
34268
|
+
var CALLGRAPH_SOFT_CODES = new Set(["symbol_not_found", "callgraph_building"]);
|
|
33997
34269
|
function navigateParamsSchema() {
|
|
33998
34270
|
return Type9.Object({
|
|
33999
34271
|
op: StringEnum3(["call_tree", "callers", "trace_to", "trace_to_symbol", "impact", "trace_data"], {
|
|
@@ -34205,8 +34477,15 @@ function registerNavigateTool(pi, ctx) {
|
|
|
34205
34477
|
req.toSymbol = params.toSymbol;
|
|
34206
34478
|
if (toFile !== undefined)
|
|
34207
34479
|
req.toFile = toFile;
|
|
34208
|
-
|
|
34209
|
-
|
|
34480
|
+
try {
|
|
34481
|
+
const response = await callBridge(bridge, params.op, req, extCtx);
|
|
34482
|
+
return textResult(JSON.stringify(response, null, 2));
|
|
34483
|
+
} catch (error50) {
|
|
34484
|
+
if (error50 instanceof BridgeError && CALLGRAPH_SOFT_CODES.has(error50.code)) {
|
|
34485
|
+
return textResult(error50.message);
|
|
34486
|
+
}
|
|
34487
|
+
throw error50;
|
|
34488
|
+
}
|
|
34210
34489
|
},
|
|
34211
34490
|
renderCall(args, theme, context) {
|
|
34212
34491
|
return renderNavigateCall(args, theme, context);
|
|
@@ -34891,7 +35170,8 @@ function registerSafetyTool(pi, ctx) {
|
|
|
34891
35170
|
throw new Error(`op='${params.op}' requires 'name'`);
|
|
34892
35171
|
}
|
|
34893
35172
|
const filePath = params.filePath ? await resolvePathArg(extCtx.cwd, params.filePath) : undefined;
|
|
34894
|
-
const
|
|
35173
|
+
const fileInputs = coerceStringArray(params.files);
|
|
35174
|
+
const files = fileInputs.length > 0 ? await Promise.all(fileInputs.map((file2) => resolvePathArg(extCtx.cwd, file2))) : undefined;
|
|
34895
35175
|
const bridge = bridgeFor(ctx, extCtx.cwd);
|
|
34896
35176
|
const restrictToProjectRoot = ctx.config.restrict_to_project_root ?? false;
|
|
34897
35177
|
if (params.op === "undo") {
|
|
@@ -35276,17 +35556,17 @@ function buildWorkflowHints(opts) {
|
|
|
35276
35556
|
const hasSearch = opts.toolSurface !== "minimal" && opts.semanticEnabled && !opts.absentTools.has("aft_search");
|
|
35277
35557
|
const hasNavigate = opts.toolSurface === "all" && !opts.absentTools.has("aft_callgraph");
|
|
35278
35558
|
const hasInspect = opts.toolSurface !== "minimal" && !opts.absentTools.has("aft_inspect");
|
|
35279
|
-
const
|
|
35559
|
+
const hasBash = !opts.absentTools.has(bashName);
|
|
35560
|
+
const hasBgBash = opts.bashBackgroundEnabled && hasBash && !opts.absentTools.has("bash_status");
|
|
35561
|
+
if (hasBash && opts.bashCompressionEnabled) {
|
|
35562
|
+
sections.push("When AFT bash output compression is on, do NOT pipe test/build commands through grep/head/tail (e.g. `bun test | grep fail`) to summarize. The compressor already keeps failures and the summary; piping hides failures. Run the command bare.");
|
|
35563
|
+
}
|
|
35280
35564
|
if (hasOutline && hasZoom) {
|
|
35281
35565
|
sections.push(`**Web/URL access**: \`aft_outline({ target: "<url>" })\` first for structure, then \`aft_zoom({ url: "<url>", symbols: "<heading>" })\` for the specific section.`);
|
|
35282
35566
|
}
|
|
35283
35567
|
if (hasOutline && hasZoom && (hasGrep || hasSearch)) {
|
|
35284
|
-
|
|
35285
|
-
|
|
35286
|
-
sections.push(`**Code exploration**: \`aft_search\` is the primary code-search tool. It auto-routes by query shape — exact identifiers, regex, error messages, natural language all use the same call. Very short queries fall back to literal scans; pass \`hint: "regex"\` / \`hint: "literal"\` / \`hint: "semantic"\` to override routing if needed. Then \`aft_outline\` for structure → \`aft_zoom\` for symbol(s).${grepFallback}`);
|
|
35287
|
-
} else {
|
|
35288
|
-
sections.push(`**Code exploration**: \`${grepName}\` to locate → \`aft_outline\` for structure → \`aft_zoom\` for symbol(s).`);
|
|
35289
|
-
}
|
|
35568
|
+
const locate = hasSearch ? '`aft_search` is the primary code-search tool: one call auto-routes concepts, identifiers, regex, error strings, and literals (pass `hint: "regex"`/`"literal"`/`"semantic"` to force a lane).' : `\`${grepName}\` (the tool — indexed and ranked) locates code.`;
|
|
35569
|
+
sections.push(`**Code exploration**: fire independent lookups in ONE parallel tool-call wave — do NOT serialize them. ${locate} Then \`aft_outline\` for structure → \`aft_zoom\` for symbol(s). DO NOT run \`grep\`/\`rg\`/\`find\` through \`bash\` to locate code — the bash path is unindexed, unranked, serial, and routinely surfaces the wrong hit. Keep \`bash\` for shell facts (git state, file metadata, processes).`);
|
|
35290
35570
|
}
|
|
35291
35571
|
if (hasInspect) {
|
|
35292
35572
|
sections.push("**Codebase health & diagnostics**: AFT does not surface compile/type errors automatically after edits — pull them with `aft_inspect`. Run it after a batch of edits and before you run tests or commit, when starting in unfamiliar code, or before a refactor/review. One call summarizes diagnostics (compile/type errors), TODOs, metrics, dead code, unused exports, and duplicates; pass `sections` for focused drill-down and `scope` to actively pull diagnostics for a specific file or directory. Its diagnostics are a fast checkpoint, not the authority — a clean `tsc` / `cargo check` / `pyright` run is the real gate. Treat `stale_categories` as a genuine stale-cache signal while an async Tier 2 refresh catches up.");
|
|
@@ -35304,12 +35584,13 @@ function buildWorkflowHints(opts) {
|
|
|
35304
35584
|
`));
|
|
35305
35585
|
}
|
|
35306
35586
|
if (hasBgBash) {
|
|
35307
|
-
sections.push(`**Long-running commands** (builds, installs, full test suites): \`${bashName}({ background: true })\` returns immediately with a \`task_id
|
|
35587
|
+
sections.push(`**Long-running commands** (builds, installs, full test suites): \`${bashName}({ background: true })\` returns immediately with a \`task_id\`, then **end your turn** — a completion reminder arrives automatically when it finishes. Do not poll \`bash_status({ task_id })\`, and do not sync-wait with \`bash_watch\` for a long task: blocking freezes your turn and locks the user out until it ends. For an early non-blocking ping on a specific output line, register an async watch \`bash_watch({ task_id, pattern, background: true })\`. \`bash_watch\` synchronous mode is only for short bounded waits (seconds, e.g. a dev server printing a readiness line), never for multi-minute jobs.`);
|
|
35308
35588
|
sections.push(`**PTY / interactive commands**: PTY mode is for interactive REPLs and terminal apps (python, node, bash itself, vim). Start with \`${bashName}({ command: "python", pty: true, background: true })\`, read the screen with \`bash_status({ task_id, output_mode: "screen" })\`, and send input with \`bash_write({ task_id, input: "..." })\`.`);
|
|
35309
35589
|
}
|
|
35310
35590
|
if (sections.length === 0) {
|
|
35311
35591
|
return null;
|
|
35312
35592
|
}
|
|
35593
|
+
sections.unshift("**Parallel tool calls**: when several read-only operations are independent, emit them in ONE response instead of serializing — file reads, structure and symbol lookups, code search, diagnostics, and git status/diff/log. Sequence only when a call depends on a prior result or when a command mutates state.");
|
|
35313
35594
|
return `${HEADING}
|
|
35314
35595
|
|
|
35315
35596
|
${sections.join(`
|
|
@@ -35322,6 +35603,7 @@ function buildHintsFromConfig(config2, absentTools, hoistBuiltins) {
|
|
|
35322
35603
|
hoistBuiltins,
|
|
35323
35604
|
semanticEnabled: config2.semantic_search === true,
|
|
35324
35605
|
bashBackgroundEnabled: resolveBashConfig(config2).background,
|
|
35606
|
+
bashCompressionEnabled: resolveBashConfig(config2).compress,
|
|
35325
35607
|
absentTools
|
|
35326
35608
|
});
|
|
35327
35609
|
}
|
|
@@ -35400,12 +35682,12 @@ var PLUGIN_VERSION = (() => {
|
|
|
35400
35682
|
return "0.0.0";
|
|
35401
35683
|
}
|
|
35402
35684
|
})();
|
|
35403
|
-
var ANNOUNCEMENT_VERSION = "0.
|
|
35685
|
+
var ANNOUNCEMENT_VERSION = "0.36.0";
|
|
35404
35686
|
var ANNOUNCEMENT_FEATURES = [
|
|
35405
|
-
"
|
|
35406
|
-
"
|
|
35407
|
-
"
|
|
35408
|
-
"
|
|
35687
|
+
"Persisted call graph: dead-code analysis runs on large repositories again (the file-count cap is gone), `aft_callgraph` queries resolve from disk, and method-call edges are more accurate across more languages.",
|
|
35688
|
+
"Bash output stops hiding failures: piping a test/build through `grep`/`head` with compression on now keeps the failures and summary instead of stripping them.",
|
|
35689
|
+
"Code search steering: guidance and hints now point to `aft_search` and parallel `aft_*` tools instead of `grep`/`find` in bash.",
|
|
35690
|
+
"Fixes: a small `timeout` no longer kills a foreground `bash` command (#102), and `aft_delete`/`aft_safety checkpoint` no longer crash on a mistyped `files` argument."
|
|
35409
35691
|
];
|
|
35410
35692
|
var ANNOUNCEMENT_FOOTER = "Join us on Discord: https://discord.gg/DSa65w8wuf";
|
|
35411
35693
|
var ALL_ONLY_TOOLS = new Set([
|
|
@@ -35689,6 +35971,7 @@ ${lines}
|
|
|
35689
35971
|
};
|
|
35690
35972
|
pool = new BridgePool(binaryPath, poolOptions, configOverrides);
|
|
35691
35973
|
pool.setConfigureOverride("harness", "pi");
|
|
35974
|
+
pool.setConfigureOverride("aft_search_registered", resolveToolSurface(config2).semantic);
|
|
35692
35975
|
const ctx = { pool, config: config2, storageDir };
|
|
35693
35976
|
if (onnxRuntimePromise) {
|
|
35694
35977
|
onnxRuntimePromise.then((ortDylibDir) => {
|
package/dist/tools/_shared.d.ts
CHANGED
|
@@ -46,7 +46,16 @@ export declare function bridgeFor(ctx: PluginContext, cwd: string): BinaryBridge
|
|
|
46
46
|
*/
|
|
47
47
|
export declare function resolveSessionId(extCtx: ExtensionContext): string | undefined;
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
49
|
+
* Error thrown by callBridge on a `success: false` response. Carries the Rust
|
|
50
|
+
* error `code` so callers can distinguish soft negatives (e.g. symbol_not_found)
|
|
51
|
+
* from genuine errors without re-parsing the message.
|
|
52
|
+
*/
|
|
53
|
+
export declare class BridgeError extends Error {
|
|
54
|
+
readonly code: string;
|
|
55
|
+
constructor(message: string, code: string);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Call a bridge command and throw a BridgeError on failure.
|
|
50
59
|
* Every tool handler should guard with `if (response.success === false)`
|
|
51
60
|
* before accessing success-only fields — this helper does it uniformly.
|
|
52
61
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/tools/_shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,8BACC,CAAC;AAExD,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,OAAO,EACV,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAWpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMpD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASlE,CAAC;AAEF,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AA2BD,8EAA8E;AAC9E,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,MAAM,CAsDR;AAsBD,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAEvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAK7E;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,MAAM,CAAC,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/tools/_shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,8BACC,CAAC;AAExD,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,OAAO,EACV,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAWpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMpD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASlE,CAAC;AAEF,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AA2BD,8EAA8E;AAC9E,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,MAAM,CAsDR;AAsBD,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAEvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAK7E;AAED;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,MAAM,CAAC,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyBlC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,GAAG,OAAO,EAC3C,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,QAAQ,GACjB,eAAe,CAAC,QAAQ,CAAC,CAK3B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,GAAG,OAAO,EAC/C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,CAAC,EAAE,QAAQ,GACjB,eAAe,CAAC,QAAQ,CAAC,CAE3B;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGvF"}
|
package/dist/tools/bash.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,gBAAgB,EAEjB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAiB5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgGjD,QAAA,MAAM,cAAc;;EAIlB,CAAC;AAEH,QAAA,MAAM,gBAAgB;;;EAUpB,CAAC;AAEH,QAAA,MAAM,eAAe;;;;;;;;EAQnB,CAAC;AAEH,QAAA,MAAM,eAAe;;;;;EA+BnB,CAAC;AAWH,UAAU,gBAAgB;IACxB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAAG;AAoD7D,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAgM3E;AAsED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa;;;;;;;;;yBASpC,MAAM,UACX,MAAM,CAAC,OAAO,gBAAgB,CAAC,WAC9B,WAAW,GAAG,SAAS,aACrB,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,UACrE,gBAAgB;EAc7B;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa;;;;;;;;;;;;;;yBASnC,MAAM,UACX,MAAM,CAAC,OAAO,eAAe,CAAC,WAC7B,WAAW,GAAG,SAAS,aACrB,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,UACpE,gBAAgB;EA2D7B;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa;;;;;;;;;;;yBAanC,MAAM,UACX,MAAM,CAAC,OAAO,eAAe,CAAC,WAC7B,WAAW,GAAG,SAAS,aACrB,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,UACpE,gBAAgB;EAe7B;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa;;;;;;;;yBASlC,MAAM,UACX,MAAM,CAAC,OAAO,cAAc,CAAC,WAC5B,WAAW,GAAG,SAAS,aACrB,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,GAAG,SAAS,UACnE,gBAAgB;EAe7B"}
|
package/dist/tools/fs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/tools/fs.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/tools/fs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,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;AAGjD,OAAO,EAEL,KAAK,iBAAiB,EAKvB,MAAM,qBAAqB,CAAC;AAE7B,QAAA,MAAM,YAAY;;;EAWhB,CAAC;AAEH,QAAA,MAAM,UAAU;;;EAOd,CAAC;AAEH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wCAAwC;AACxC,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,YAAY,GAAG,UAAU,EACnC,IAAI,EAAE,MAAM,CAAC,OAAO,YAAY,CAAC,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,EAC7D,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,yCAkB3B;AAED,wCAAwC;AACxC,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,YAAY,GAAG,UAAU,EACnC,IAAI,EAAE,MAAM,CAAC,OAAO,YAAY,CAAC,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,EAC7D,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAChC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,sFAsC3B;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,CAyH9F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/tools/navigate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,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;
|
|
1
|
+
{"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/tools/navigate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,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;AAWjD,OAAO,EAQL,KAAK,iBAAiB,EAKvB,MAAM,qBAAqB,CAAC;AAS7B,iBAAS,oBAAoB;;;;;;;;GA4B5B;AAED,KAAK,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;AA6CpE,wCAAwC;AACxC,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACX,MAAM,EAAE,CAoHV;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,iBAAiB,yCAU9F;AAED,wCAAwC;AACxC,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAChC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,sFAO3B;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAkE/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../src/tools/safety.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../src/tools/safety.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,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;AAGjD,OAAO,EAQL,KAAK,iBAAiB,EAKvB,MAAM,qBAAqB,CAAC;AAQ7B,QAAA,MAAM,YAAY;;;;;EAkBhB,CAAC;AAEH,wCAAwC;AACxC,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,CAAC,OAAO,YAAY,CAAC,EACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACX,MAAM,EAAE,CA4EV;AAED,wCAAwC;AACxC,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,OAAO,YAAY,CAAC,EACjC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,yCAO3B;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAChC,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,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CAqG7E"}
|
package/dist/workflow-hints.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-hints.d.ts","sourceRoot":"","sources":["../src/workflow-hints.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,SAAS,GAAG,aAAa,GAAG,KAAK,CAAC;IAC/C,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kEAAkE;IAClE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"workflow-hints.d.ts","sourceRoot":"","sources":["../src/workflow-hints.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,SAAS,GAAG,aAAa,GAAG,KAAK,CAAC;IAC/C,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,OAAO,CAAC;IAChC,kEAAkE;IAClE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAyFzE;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,aAAa,EAAE,OAAO,GACrB,MAAM,GAAG,IAAI,CAaf;AAMD,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,gBAAgB,GACxB,IAAI,CA+BN"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cortexkit/aft-pi",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.36.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,7 +23,7 @@
|
|
|
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.36.0",
|
|
27
27
|
"@xterm/headless": "^5.5.0",
|
|
28
28
|
"comment-json": "^5.0.0",
|
|
29
29
|
"diff": "^8.0.4",
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
"zod": "^4.1.8"
|
|
32
32
|
},
|
|
33
33
|
"optionalDependencies": {
|
|
34
|
-
"@cortexkit/aft-darwin-arm64": "0.
|
|
35
|
-
"@cortexkit/aft-darwin-x64": "0.
|
|
36
|
-
"@cortexkit/aft-linux-arm64": "0.
|
|
37
|
-
"@cortexkit/aft-linux-x64": "0.
|
|
38
|
-
"@cortexkit/aft-win32-arm64": "0.
|
|
39
|
-
"@cortexkit/aft-win32-x64": "0.
|
|
34
|
+
"@cortexkit/aft-darwin-arm64": "0.36.0",
|
|
35
|
+
"@cortexkit/aft-darwin-x64": "0.36.0",
|
|
36
|
+
"@cortexkit/aft-linux-arm64": "0.36.0",
|
|
37
|
+
"@cortexkit/aft-linux-x64": "0.36.0",
|
|
38
|
+
"@cortexkit/aft-win32-arm64": "0.36.0",
|
|
39
|
+
"@cortexkit/aft-win32-x64": "0.36.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@earendil-works/pi-coding-agent": "*",
|