@cortexkit/aft-pi 0.35.4 → 0.36.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +591 -63
- package/dist/status-bar-inject.d.ts +1 -1
- package/dist/status-bar-inject.d.ts.map +1 -1
- 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/inspect.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
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,CAme9D;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";
|
|
@@ -12543,6 +12540,27 @@ class BinaryBridge {
|
|
|
12543
12540
|
}
|
|
12544
12541
|
}
|
|
12545
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
|
+
}
|
|
12546
12564
|
// ../aft-bridge/dist/downloader.js
|
|
12547
12565
|
import { spawnSync } from "node:child_process";
|
|
12548
12566
|
import { createHash, randomUUID } from "node:crypto";
|
|
@@ -12839,6 +12857,11 @@ function formatEditSummary(data) {
|
|
|
12839
12857
|
const n = data.files_modified;
|
|
12840
12858
|
return `Applied edits to ${n} file${n === 1 ? "" : "s"}.`;
|
|
12841
12859
|
}
|
|
12860
|
+
if (typeof data.total_files === "number") {
|
|
12861
|
+
const files = data.total_files;
|
|
12862
|
+
const reps = data.total_replacements ?? 0;
|
|
12863
|
+
return `Edited ${files} file${files === 1 ? "" : "s"} (${reps} replacement${reps === 1 ? "" : "s"}).`;
|
|
12864
|
+
}
|
|
12842
12865
|
const additions = data.diff?.additions ?? 0;
|
|
12843
12866
|
const deletions = data.diff?.deletions ?? 0;
|
|
12844
12867
|
const counts = `+${additions}/-${deletions}`;
|
|
@@ -14052,6 +14075,464 @@ function isProcessAlive(pid) {
|
|
|
14052
14075
|
return true;
|
|
14053
14076
|
}
|
|
14054
14077
|
}
|
|
14078
|
+
// ../aft-bridge/dist/pipe-strip.js
|
|
14079
|
+
var NOISE_FILTERS = new Set([
|
|
14080
|
+
"grep",
|
|
14081
|
+
"rg",
|
|
14082
|
+
"head",
|
|
14083
|
+
"tail",
|
|
14084
|
+
"cat",
|
|
14085
|
+
"less",
|
|
14086
|
+
"more",
|
|
14087
|
+
"sed",
|
|
14088
|
+
"awk",
|
|
14089
|
+
"cut",
|
|
14090
|
+
"sort",
|
|
14091
|
+
"uniq",
|
|
14092
|
+
"tr",
|
|
14093
|
+
"column",
|
|
14094
|
+
"fold"
|
|
14095
|
+
]);
|
|
14096
|
+
var GREP_GUARD_FLAGS = new Set([
|
|
14097
|
+
"c",
|
|
14098
|
+
"count",
|
|
14099
|
+
"q",
|
|
14100
|
+
"quiet",
|
|
14101
|
+
"o",
|
|
14102
|
+
"only-matching",
|
|
14103
|
+
"l",
|
|
14104
|
+
"files-with-matches"
|
|
14105
|
+
]);
|
|
14106
|
+
function maybeStripCompressorPipe(command, compressionEnabled) {
|
|
14107
|
+
if (!compressionEnabled)
|
|
14108
|
+
return { command, stripped: false };
|
|
14109
|
+
if (containsUnsplittableConstruct(command))
|
|
14110
|
+
return { command, stripped: false };
|
|
14111
|
+
const chain = splitTopLevelAndChain(command);
|
|
14112
|
+
if (chain === null)
|
|
14113
|
+
return { command, stripped: false };
|
|
14114
|
+
const prefix = chain.slice(0, -1).map((segment) => segment.trim()).filter(Boolean);
|
|
14115
|
+
const pipeline3 = chain[chain.length - 1] ?? "";
|
|
14116
|
+
const stages = splitTopLevelPipeline(pipeline3);
|
|
14117
|
+
if (stages.length < 2)
|
|
14118
|
+
return { command, stripped: false };
|
|
14119
|
+
const firstStage = stages[0]?.trim() ?? "";
|
|
14120
|
+
if (!isCompressorHandledRunner(firstStage))
|
|
14121
|
+
return { command, stripped: false };
|
|
14122
|
+
const filterStages = stages.slice(1).map((stage) => stage.trim());
|
|
14123
|
+
for (const stage of filterStages) {
|
|
14124
|
+
if (!filterStageIsSafeToDrop(stage))
|
|
14125
|
+
return { command, stripped: false };
|
|
14126
|
+
}
|
|
14127
|
+
const filters = filterStages.join(" | ");
|
|
14128
|
+
const rebuilt = [...prefix, firstStage].join(" && ");
|
|
14129
|
+
return {
|
|
14130
|
+
command: rebuilt,
|
|
14131
|
+
stripped: true,
|
|
14132
|
+
note: `[AFT dropped \`| ${filters}\` (compressed:false to keep)]`
|
|
14133
|
+
};
|
|
14134
|
+
}
|
|
14135
|
+
function splitTopLevelAndChain(command) {
|
|
14136
|
+
const segments = [];
|
|
14137
|
+
let start = 0;
|
|
14138
|
+
let quote = null;
|
|
14139
|
+
let escaped = false;
|
|
14140
|
+
for (let index = 0;index < command.length; index++) {
|
|
14141
|
+
const char = command[index];
|
|
14142
|
+
const next = command[index + 1];
|
|
14143
|
+
if (escaped) {
|
|
14144
|
+
escaped = false;
|
|
14145
|
+
continue;
|
|
14146
|
+
}
|
|
14147
|
+
if (char === "\\" && quote !== "'") {
|
|
14148
|
+
escaped = true;
|
|
14149
|
+
continue;
|
|
14150
|
+
}
|
|
14151
|
+
if (quote) {
|
|
14152
|
+
if (char === quote)
|
|
14153
|
+
quote = null;
|
|
14154
|
+
continue;
|
|
14155
|
+
}
|
|
14156
|
+
if (char === "'" || char === '"') {
|
|
14157
|
+
quote = char;
|
|
14158
|
+
continue;
|
|
14159
|
+
}
|
|
14160
|
+
if (char === "&" && next === "&") {
|
|
14161
|
+
segments.push(command.slice(start, index));
|
|
14162
|
+
start = index + 2;
|
|
14163
|
+
index++;
|
|
14164
|
+
continue;
|
|
14165
|
+
}
|
|
14166
|
+
if (char === "|" && next === "|")
|
|
14167
|
+
return null;
|
|
14168
|
+
if (char === ";")
|
|
14169
|
+
return null;
|
|
14170
|
+
if (char === `
|
|
14171
|
+
` || char === "\r")
|
|
14172
|
+
return null;
|
|
14173
|
+
if (char === "&") {
|
|
14174
|
+
const prev = command[index - 1];
|
|
14175
|
+
if (prev !== ">" && next !== ">")
|
|
14176
|
+
return null;
|
|
14177
|
+
}
|
|
14178
|
+
}
|
|
14179
|
+
segments.push(command.slice(start));
|
|
14180
|
+
return segments;
|
|
14181
|
+
}
|
|
14182
|
+
function splitTopLevelPipeline(command) {
|
|
14183
|
+
const stages = [];
|
|
14184
|
+
let start = 0;
|
|
14185
|
+
let quote = null;
|
|
14186
|
+
let escaped = false;
|
|
14187
|
+
for (let index = 0;index < command.length; index++) {
|
|
14188
|
+
const char = command[index];
|
|
14189
|
+
const next = command[index + 1];
|
|
14190
|
+
const previous = command[index - 1];
|
|
14191
|
+
if (escaped) {
|
|
14192
|
+
escaped = false;
|
|
14193
|
+
continue;
|
|
14194
|
+
}
|
|
14195
|
+
if (char === "\\" && quote !== "'") {
|
|
14196
|
+
escaped = true;
|
|
14197
|
+
continue;
|
|
14198
|
+
}
|
|
14199
|
+
if (quote) {
|
|
14200
|
+
if (char === quote)
|
|
14201
|
+
quote = null;
|
|
14202
|
+
continue;
|
|
14203
|
+
}
|
|
14204
|
+
if (char === "'" || char === '"') {
|
|
14205
|
+
quote = char;
|
|
14206
|
+
continue;
|
|
14207
|
+
}
|
|
14208
|
+
if (char === "|" && previous !== "|" && next !== "|") {
|
|
14209
|
+
stages.push(command.slice(start, index));
|
|
14210
|
+
start = index + 1;
|
|
14211
|
+
}
|
|
14212
|
+
}
|
|
14213
|
+
stages.push(command.slice(start));
|
|
14214
|
+
return stages;
|
|
14215
|
+
}
|
|
14216
|
+
function isCompressorHandledRunner(stage) {
|
|
14217
|
+
const tokens = tokenizeStage(stage);
|
|
14218
|
+
if (tokens.length === 0)
|
|
14219
|
+
return false;
|
|
14220
|
+
if (tokens.some((token) => token === "&&" || token === "||" || token.includes(";"))) {
|
|
14221
|
+
return false;
|
|
14222
|
+
}
|
|
14223
|
+
const first = runnerName(tokens[0]);
|
|
14224
|
+
const second = tokens[1];
|
|
14225
|
+
const third = tokens[2];
|
|
14226
|
+
const rest = tokens.slice(1);
|
|
14227
|
+
if (!first)
|
|
14228
|
+
return false;
|
|
14229
|
+
if (first === "bun")
|
|
14230
|
+
return second === "test" || second === "run" && startsWithTest(third);
|
|
14231
|
+
if (first === "npm" || first === "pnpm") {
|
|
14232
|
+
return second === "test" || second === "run" && startsWithTest(third);
|
|
14233
|
+
}
|
|
14234
|
+
if (first === "yarn") {
|
|
14235
|
+
return startsWithTest(second) || second === "run" && startsWithTest(third);
|
|
14236
|
+
}
|
|
14237
|
+
if (first === "deno")
|
|
14238
|
+
return ["test", "lint", "check", "bench"].includes(second ?? "");
|
|
14239
|
+
if (first === "npx") {
|
|
14240
|
+
return ["tsc", "eslint", "vitest", "jest", "playwright", "biome"].includes(second ?? "");
|
|
14241
|
+
}
|
|
14242
|
+
if (first === "playwright")
|
|
14243
|
+
return second === "test";
|
|
14244
|
+
if (first === "cargo") {
|
|
14245
|
+
return ["test", "build", "check", "clippy", "nextest"].includes(second ?? "");
|
|
14246
|
+
}
|
|
14247
|
+
if (first === "go")
|
|
14248
|
+
return ["test", "build", "vet"].includes(second ?? "");
|
|
14249
|
+
if (first === "gradle" || first === "gradlew") {
|
|
14250
|
+
return hasBuildTask(rest, ["test", "check", "build", "assemble", "clean"]);
|
|
14251
|
+
}
|
|
14252
|
+
if (first === "mvn" || first === "mvnw") {
|
|
14253
|
+
return hasBuildTask(rest, ["test", "verify", "package", "install"]);
|
|
14254
|
+
}
|
|
14255
|
+
if (first === "dotnet")
|
|
14256
|
+
return ["test", "build"].includes(second ?? "");
|
|
14257
|
+
if (first === "rspec")
|
|
14258
|
+
return true;
|
|
14259
|
+
if (first === "rake")
|
|
14260
|
+
return second === "test" || second === "spec";
|
|
14261
|
+
if (first === "phpunit" || first === "pest")
|
|
14262
|
+
return true;
|
|
14263
|
+
if (first === "xcodebuild")
|
|
14264
|
+
return xcodebuildHasBuildAction(rest);
|
|
14265
|
+
if (first === "swift")
|
|
14266
|
+
return second === "test" || second === "build";
|
|
14267
|
+
if (first === "make" || first === "gmake") {
|
|
14268
|
+
return hasBuildTask(rest, ["test", "check", "lint", "clean"]);
|
|
14269
|
+
}
|
|
14270
|
+
return [
|
|
14271
|
+
"vitest",
|
|
14272
|
+
"jest",
|
|
14273
|
+
"pytest",
|
|
14274
|
+
"tsc",
|
|
14275
|
+
"eslint",
|
|
14276
|
+
"biome",
|
|
14277
|
+
"ruff",
|
|
14278
|
+
"mypy",
|
|
14279
|
+
"tox",
|
|
14280
|
+
"nox"
|
|
14281
|
+
].includes(first);
|
|
14282
|
+
}
|
|
14283
|
+
function runnerName(token) {
|
|
14284
|
+
if (!token)
|
|
14285
|
+
return "";
|
|
14286
|
+
const slash = token.lastIndexOf("/");
|
|
14287
|
+
return slash === -1 ? token : token.slice(slash + 1);
|
|
14288
|
+
}
|
|
14289
|
+
function hasBuildTask(args, tasks) {
|
|
14290
|
+
const isAllowedTask = (arg) => tasks.some((task) => arg === task || arg.endsWith(`:${task}`));
|
|
14291
|
+
const isFlagOrProperty = (arg) => arg.startsWith("-") || arg.includes("=");
|
|
14292
|
+
let sawAllowed = false;
|
|
14293
|
+
for (const arg of args) {
|
|
14294
|
+
if (isFlagOrProperty(arg))
|
|
14295
|
+
continue;
|
|
14296
|
+
if (!isAllowedTask(arg))
|
|
14297
|
+
return false;
|
|
14298
|
+
sawAllowed = true;
|
|
14299
|
+
}
|
|
14300
|
+
return sawAllowed;
|
|
14301
|
+
}
|
|
14302
|
+
function startsWithTest(token) {
|
|
14303
|
+
return token?.startsWith("test") === true;
|
|
14304
|
+
}
|
|
14305
|
+
var XCODEBUILD_VALUE_FLAGS = new Set([
|
|
14306
|
+
"-scheme",
|
|
14307
|
+
"-target",
|
|
14308
|
+
"-project",
|
|
14309
|
+
"-workspace",
|
|
14310
|
+
"-configuration",
|
|
14311
|
+
"-sdk",
|
|
14312
|
+
"-destination",
|
|
14313
|
+
"-arch",
|
|
14314
|
+
"-derivedDataPath",
|
|
14315
|
+
"-resultBundlePath",
|
|
14316
|
+
"-xcconfig",
|
|
14317
|
+
"-toolchain"
|
|
14318
|
+
]);
|
|
14319
|
+
var XCODEBUILD_BUILD_ACTIONS = new Set([
|
|
14320
|
+
"build",
|
|
14321
|
+
"test",
|
|
14322
|
+
"build-for-testing",
|
|
14323
|
+
"test-without-building",
|
|
14324
|
+
"analyze"
|
|
14325
|
+
]);
|
|
14326
|
+
function xcodebuildHasBuildAction(args) {
|
|
14327
|
+
for (let i = 0;i < args.length; i++) {
|
|
14328
|
+
const arg = args[i];
|
|
14329
|
+
if (arg.startsWith("-")) {
|
|
14330
|
+
if (XCODEBUILD_VALUE_FLAGS.has(arg))
|
|
14331
|
+
i++;
|
|
14332
|
+
continue;
|
|
14333
|
+
}
|
|
14334
|
+
if (XCODEBUILD_BUILD_ACTIONS.has(arg))
|
|
14335
|
+
return true;
|
|
14336
|
+
}
|
|
14337
|
+
return false;
|
|
14338
|
+
}
|
|
14339
|
+
function containsUnsplittableConstruct(command) {
|
|
14340
|
+
let quote = null;
|
|
14341
|
+
let escaped = false;
|
|
14342
|
+
for (let i = 0;i < command.length; i++) {
|
|
14343
|
+
const char = command[i];
|
|
14344
|
+
if (escaped) {
|
|
14345
|
+
escaped = false;
|
|
14346
|
+
continue;
|
|
14347
|
+
}
|
|
14348
|
+
if (char === "\\" && quote !== "'") {
|
|
14349
|
+
escaped = true;
|
|
14350
|
+
continue;
|
|
14351
|
+
}
|
|
14352
|
+
if (quote === "'") {
|
|
14353
|
+
if (char === "'")
|
|
14354
|
+
quote = null;
|
|
14355
|
+
continue;
|
|
14356
|
+
}
|
|
14357
|
+
if (quote === '"') {
|
|
14358
|
+
if (char === '"')
|
|
14359
|
+
quote = null;
|
|
14360
|
+
else if (char === "`")
|
|
14361
|
+
return true;
|
|
14362
|
+
else if (char === "$" && command[i + 1] === "(")
|
|
14363
|
+
return true;
|
|
14364
|
+
continue;
|
|
14365
|
+
}
|
|
14366
|
+
if (char === "'" || char === '"') {
|
|
14367
|
+
quote = char;
|
|
14368
|
+
continue;
|
|
14369
|
+
}
|
|
14370
|
+
if (char === "`")
|
|
14371
|
+
return true;
|
|
14372
|
+
if (char === "(" || char === ")")
|
|
14373
|
+
return true;
|
|
14374
|
+
}
|
|
14375
|
+
return false;
|
|
14376
|
+
}
|
|
14377
|
+
var READS_FILE_OPERAND = new Set(["cat", "tac", "nl", "less", "more"]);
|
|
14378
|
+
function filterStageIsSafeToDrop(stage) {
|
|
14379
|
+
const head = tokenizeStage(stage)[0];
|
|
14380
|
+
if (!head)
|
|
14381
|
+
return false;
|
|
14382
|
+
if (head === "wc")
|
|
14383
|
+
return false;
|
|
14384
|
+
if (!NOISE_FILTERS.has(head))
|
|
14385
|
+
return false;
|
|
14386
|
+
if (/[<>]/.test(stage))
|
|
14387
|
+
return false;
|
|
14388
|
+
if (hasUnquotedBackground(stage))
|
|
14389
|
+
return false;
|
|
14390
|
+
const args = tokenizeStage(stage).slice(1);
|
|
14391
|
+
const hasFlag = (...names) => args.some((a) => names.some((n) => a === n || a.startsWith(`${n}=`)));
|
|
14392
|
+
if (head === "grep" || head === "rg") {
|
|
14393
|
+
if (hasIntentChangingGrepFlag(args))
|
|
14394
|
+
return false;
|
|
14395
|
+
if (countBareOperands(args) > 1)
|
|
14396
|
+
return false;
|
|
14397
|
+
return true;
|
|
14398
|
+
}
|
|
14399
|
+
if (head === "head" || head === "tail") {
|
|
14400
|
+
if (bareOperands(args).some((op) => !/^\d+$/.test(op)))
|
|
14401
|
+
return false;
|
|
14402
|
+
return true;
|
|
14403
|
+
}
|
|
14404
|
+
if (READS_FILE_OPERAND.has(head)) {
|
|
14405
|
+
if (countBareOperands(args) > 0)
|
|
14406
|
+
return false;
|
|
14407
|
+
return true;
|
|
14408
|
+
}
|
|
14409
|
+
if (head === "sed") {
|
|
14410
|
+
if (hasFlag("-i", "--in-place"))
|
|
14411
|
+
return false;
|
|
14412
|
+
if (countBareOperands(args) > 1)
|
|
14413
|
+
return false;
|
|
14414
|
+
return true;
|
|
14415
|
+
}
|
|
14416
|
+
if (head === "awk") {
|
|
14417
|
+
if (countBareOperands(args) > 1)
|
|
14418
|
+
return false;
|
|
14419
|
+
return true;
|
|
14420
|
+
}
|
|
14421
|
+
if (head === "sort" && hasFlag("-o", "--output"))
|
|
14422
|
+
return false;
|
|
14423
|
+
if (bareOperands(args).some((op) => op.includes("/") || op.includes(".")))
|
|
14424
|
+
return false;
|
|
14425
|
+
return true;
|
|
14426
|
+
}
|
|
14427
|
+
function bareOperands(args) {
|
|
14428
|
+
const out = [];
|
|
14429
|
+
let afterDoubleDash = false;
|
|
14430
|
+
for (const arg of args) {
|
|
14431
|
+
if (!afterDoubleDash && arg === "--") {
|
|
14432
|
+
afterDoubleDash = true;
|
|
14433
|
+
continue;
|
|
14434
|
+
}
|
|
14435
|
+
if (!afterDoubleDash && arg.startsWith("-") && arg !== "-")
|
|
14436
|
+
continue;
|
|
14437
|
+
out.push(arg);
|
|
14438
|
+
}
|
|
14439
|
+
return out;
|
|
14440
|
+
}
|
|
14441
|
+
function countBareOperands(args) {
|
|
14442
|
+
return bareOperands(args).length;
|
|
14443
|
+
}
|
|
14444
|
+
function hasUnquotedBackground(stage) {
|
|
14445
|
+
let quote = null;
|
|
14446
|
+
let escaped = false;
|
|
14447
|
+
for (let i = 0;i < stage.length; i++) {
|
|
14448
|
+
const char = stage[i];
|
|
14449
|
+
if (escaped) {
|
|
14450
|
+
escaped = false;
|
|
14451
|
+
continue;
|
|
14452
|
+
}
|
|
14453
|
+
if (char === "\\" && quote !== "'") {
|
|
14454
|
+
escaped = true;
|
|
14455
|
+
continue;
|
|
14456
|
+
}
|
|
14457
|
+
if (quote) {
|
|
14458
|
+
if (char === quote)
|
|
14459
|
+
quote = null;
|
|
14460
|
+
continue;
|
|
14461
|
+
}
|
|
14462
|
+
if (char === "'" || char === '"') {
|
|
14463
|
+
quote = char;
|
|
14464
|
+
continue;
|
|
14465
|
+
}
|
|
14466
|
+
if (char === "&") {
|
|
14467
|
+
const prev = stage[i - 1];
|
|
14468
|
+
const next = stage[i + 1];
|
|
14469
|
+
if (prev === "&" || next === "&" || prev === ">" || next === ">")
|
|
14470
|
+
continue;
|
|
14471
|
+
return true;
|
|
14472
|
+
}
|
|
14473
|
+
}
|
|
14474
|
+
return false;
|
|
14475
|
+
}
|
|
14476
|
+
function hasIntentChangingGrepFlag(args) {
|
|
14477
|
+
for (const arg of args) {
|
|
14478
|
+
if (arg === "--")
|
|
14479
|
+
return false;
|
|
14480
|
+
if (!arg.startsWith("-") || arg === "-")
|
|
14481
|
+
continue;
|
|
14482
|
+
if (arg.startsWith("--")) {
|
|
14483
|
+
const flag = arg.slice(2).split("=", 1)[0];
|
|
14484
|
+
if (GREP_GUARD_FLAGS.has(flag))
|
|
14485
|
+
return true;
|
|
14486
|
+
continue;
|
|
14487
|
+
}
|
|
14488
|
+
for (const flag of arg.slice(1)) {
|
|
14489
|
+
if (GREP_GUARD_FLAGS.has(flag))
|
|
14490
|
+
return true;
|
|
14491
|
+
}
|
|
14492
|
+
}
|
|
14493
|
+
return false;
|
|
14494
|
+
}
|
|
14495
|
+
function tokenizeStage(stage) {
|
|
14496
|
+
const tokens = [];
|
|
14497
|
+
let current = "";
|
|
14498
|
+
let quote = null;
|
|
14499
|
+
let escaped = false;
|
|
14500
|
+
for (let index = 0;index < stage.length; index++) {
|
|
14501
|
+
const char = stage[index];
|
|
14502
|
+
if (escaped) {
|
|
14503
|
+
current += char;
|
|
14504
|
+
escaped = false;
|
|
14505
|
+
continue;
|
|
14506
|
+
}
|
|
14507
|
+
if (char === "\\" && quote !== "'") {
|
|
14508
|
+
escaped = true;
|
|
14509
|
+
continue;
|
|
14510
|
+
}
|
|
14511
|
+
if (quote) {
|
|
14512
|
+
if (char === quote) {
|
|
14513
|
+
quote = null;
|
|
14514
|
+
} else {
|
|
14515
|
+
current += char;
|
|
14516
|
+
}
|
|
14517
|
+
continue;
|
|
14518
|
+
}
|
|
14519
|
+
if (char === "'" || char === '"') {
|
|
14520
|
+
quote = char;
|
|
14521
|
+
continue;
|
|
14522
|
+
}
|
|
14523
|
+
if (/\s/.test(char)) {
|
|
14524
|
+
if (current.length > 0) {
|
|
14525
|
+
tokens.push(current);
|
|
14526
|
+
current = "";
|
|
14527
|
+
}
|
|
14528
|
+
continue;
|
|
14529
|
+
}
|
|
14530
|
+
current += char;
|
|
14531
|
+
}
|
|
14532
|
+
if (current.length > 0)
|
|
14533
|
+
tokens.push(current);
|
|
14534
|
+
return tokens;
|
|
14535
|
+
}
|
|
14055
14536
|
// ../aft-bridge/dist/pool.js
|
|
14056
14537
|
import { realpathSync as realpathSync2 } from "node:fs";
|
|
14057
14538
|
import { homedir as homedir6 } from "node:os";
|
|
@@ -14974,7 +15455,7 @@ import {
|
|
|
14974
15455
|
// package.json
|
|
14975
15456
|
var package_default = {
|
|
14976
15457
|
name: "@cortexkit/aft-pi",
|
|
14977
|
-
version: "0.
|
|
15458
|
+
version: "0.36.1",
|
|
14978
15459
|
type: "module",
|
|
14979
15460
|
description: "Pi coding agent extension for Agent File Tools (AFT) — tree-sitter and LSP-powered code analysis",
|
|
14980
15461
|
main: "dist/index.js",
|
|
@@ -14997,7 +15478,7 @@ var package_default = {
|
|
|
14997
15478
|
"test:unit": "bun test src/__tests__ --path-ignore-patterns 'src/__tests__/e2e/**'"
|
|
14998
15479
|
},
|
|
14999
15480
|
dependencies: {
|
|
15000
|
-
"@cortexkit/aft-bridge": "0.
|
|
15481
|
+
"@cortexkit/aft-bridge": "0.36.1",
|
|
15001
15482
|
"@xterm/headless": "^5.5.0",
|
|
15002
15483
|
"comment-json": "^5.0.0",
|
|
15003
15484
|
diff: "^8.0.4",
|
|
@@ -15005,12 +15486,12 @@ var package_default = {
|
|
|
15005
15486
|
zod: "^4.1.8"
|
|
15006
15487
|
},
|
|
15007
15488
|
optionalDependencies: {
|
|
15008
|
-
"@cortexkit/aft-darwin-arm64": "0.
|
|
15009
|
-
"@cortexkit/aft-darwin-x64": "0.
|
|
15010
|
-
"@cortexkit/aft-linux-arm64": "0.
|
|
15011
|
-
"@cortexkit/aft-linux-x64": "0.
|
|
15012
|
-
"@cortexkit/aft-win32-arm64": "0.
|
|
15013
|
-
"@cortexkit/aft-win32-x64": "0.
|
|
15489
|
+
"@cortexkit/aft-darwin-arm64": "0.36.1",
|
|
15490
|
+
"@cortexkit/aft-darwin-x64": "0.36.1",
|
|
15491
|
+
"@cortexkit/aft-linux-arm64": "0.36.1",
|
|
15492
|
+
"@cortexkit/aft-linux-x64": "0.36.1",
|
|
15493
|
+
"@cortexkit/aft-win32-arm64": "0.36.1",
|
|
15494
|
+
"@cortexkit/aft-win32-x64": "0.36.1"
|
|
15014
15495
|
},
|
|
15015
15496
|
devDependencies: {
|
|
15016
15497
|
"@earendil-works/pi-coding-agent": "*",
|
|
@@ -15351,6 +15832,15 @@ function resolveSessionId(extCtx) {
|
|
|
15351
15832
|
const id = manager?.getSessionId?.();
|
|
15352
15833
|
return typeof id === "string" && id.length > 0 ? id : undefined;
|
|
15353
15834
|
}
|
|
15835
|
+
|
|
15836
|
+
class BridgeError extends Error {
|
|
15837
|
+
code;
|
|
15838
|
+
constructor(message, code) {
|
|
15839
|
+
super(message);
|
|
15840
|
+
this.name = "BridgeError";
|
|
15841
|
+
this.code = code;
|
|
15842
|
+
}
|
|
15843
|
+
}
|
|
15354
15844
|
async function callBridge(bridge, command, params = {}, extCtx, options) {
|
|
15355
15845
|
const timeoutMs = timeoutForCommand(command);
|
|
15356
15846
|
const merged = { ...params };
|
|
@@ -15365,7 +15855,7 @@ async function callBridge(bridge, command, params = {}, extCtx, options) {
|
|
|
15365
15855
|
};
|
|
15366
15856
|
const response = await bridge.send(command, merged, Object.keys(sendOptions).length > 0 ? sendOptions : undefined);
|
|
15367
15857
|
if (response.success === false) {
|
|
15368
|
-
throw new
|
|
15858
|
+
throw new BridgeError(formatBridgeErrorMessage(command, response, merged), typeof response.code === "string" ? response.code : "");
|
|
15369
15859
|
}
|
|
15370
15860
|
ingestBgCompletions(sessionId, response.bg_completions);
|
|
15371
15861
|
return response;
|
|
@@ -31639,7 +32129,7 @@ function sendFeatureAnnouncement(version2, features, footer, storageDir) {
|
|
|
31639
32129
|
// src/status-bar-inject.ts
|
|
31640
32130
|
var DEFAULT_SESSION = "__default__";
|
|
31641
32131
|
var emitStateBySession = new Map;
|
|
31642
|
-
function statusBarBlockForSession(sessionID, counts) {
|
|
32132
|
+
function statusBarBlockForSession(sessionID, counts, force = false) {
|
|
31643
32133
|
if (!counts)
|
|
31644
32134
|
return;
|
|
31645
32135
|
const key = sessionID ?? DEFAULT_SESSION;
|
|
@@ -31648,6 +32138,11 @@ function statusBarBlockForSession(sessionID, counts) {
|
|
|
31648
32138
|
state = createStatusBarEmitState();
|
|
31649
32139
|
emitStateBySession.set(key, state);
|
|
31650
32140
|
}
|
|
32141
|
+
if (force) {
|
|
32142
|
+
state.last = counts;
|
|
32143
|
+
state.callsSinceEmit = 0;
|
|
32144
|
+
return formatStatusBar(counts);
|
|
32145
|
+
}
|
|
31651
32146
|
return shouldEmitStatusBar(state, counts) ? formatStatusBar(counts) : undefined;
|
|
31652
32147
|
}
|
|
31653
32148
|
|
|
@@ -32752,6 +33247,15 @@ var FOREGROUND_POLL_INTERVAL_MS = 100;
|
|
|
32752
33247
|
var BASH_WAIT_POLL_INTERVAL_MS = 100;
|
|
32753
33248
|
var DEFAULT_BASH_STATUS_WAIT_TIMEOUT_MS = 30000;
|
|
32754
33249
|
var MAX_BASH_STATUS_WAIT_TIMEOUT_MS = 300000;
|
|
33250
|
+
function resolveForegroundWaitMs(configured) {
|
|
33251
|
+
const override = process.env.AFT_TEST_FOREGROUND_WAIT_MS;
|
|
33252
|
+
if (override !== undefined) {
|
|
33253
|
+
const parsed = Number(override);
|
|
33254
|
+
if (Number.isFinite(parsed) && parsed >= 0)
|
|
33255
|
+
return parsed;
|
|
33256
|
+
}
|
|
33257
|
+
return configured;
|
|
33258
|
+
}
|
|
32755
33259
|
var BASH_TRANSPORT_TIMEOUT_MS = 30000;
|
|
32756
33260
|
var BashParams = Type4.Object({
|
|
32757
33261
|
command: Type4.String({
|
|
@@ -32858,11 +33362,13 @@ function registerBashTool(pi, ctx) {
|
|
|
32858
33362
|
parameters: BashParams,
|
|
32859
33363
|
async execute(_toolCallId, params, _signal, onUpdate, extCtx) {
|
|
32860
33364
|
const bridge = bridgeFor(ctx, extCtx.cwd);
|
|
32861
|
-
const
|
|
33365
|
+
const bashCfg = resolveBashConfig(ctx.config);
|
|
33366
|
+
const foregroundWaitMs = resolveForegroundWaitMs(bashCfg.foreground_wait_window_ms);
|
|
32862
33367
|
const timeout = coerceOptionalInt(params.timeout, "timeout", 1, Number.MAX_SAFE_INTEGER);
|
|
32863
33368
|
const ptyRows = coerceOptionalInt(params.ptyRows, "ptyRows", 1, 60);
|
|
32864
33369
|
const ptyCols = coerceOptionalInt(params.ptyCols, "ptyCols", 1, 140);
|
|
32865
33370
|
const effectiveBackground = params.background === true || params.pty === true;
|
|
33371
|
+
const effectiveTimeout = effectiveBackground ? timeout : resolveBashKillTimeout(timeout, foregroundWaitMs);
|
|
32866
33372
|
let spawnContext = {
|
|
32867
33373
|
command: params.command,
|
|
32868
33374
|
cwd: params.workdir
|
|
@@ -32874,10 +33380,13 @@ function registerBashTool(pi, ctx) {
|
|
|
32874
33380
|
throw new Error(`BashSpawnHook failed: ${hookErr instanceof Error ? hookErr.message : String(hookErr)}`);
|
|
32875
33381
|
}
|
|
32876
33382
|
}
|
|
33383
|
+
const compressionEnabled = bashCfg.compress && params.compressed !== false;
|
|
33384
|
+
const pipeStrip = maybeStripCompressorPipe(spawnContext.command, compressionEnabled);
|
|
33385
|
+
const bridgeCommand = pipeStrip.command;
|
|
32877
33386
|
let streamed = "";
|
|
32878
33387
|
const response = await callBashBridge(bridge, "bash", {
|
|
32879
|
-
command:
|
|
32880
|
-
timeout,
|
|
33388
|
+
command: bridgeCommand,
|
|
33389
|
+
timeout: effectiveTimeout,
|
|
32881
33390
|
workdir: spawnContext.cwd ?? params.workdir,
|
|
32882
33391
|
env: spawnContext.env,
|
|
32883
33392
|
description: params.description,
|
|
@@ -32906,11 +33415,9 @@ function registerBashTool(pi, ctx) {
|
|
|
32906
33415
|
if (response.status === "running" && taskId) {
|
|
32907
33416
|
if (effectiveBackground) {
|
|
32908
33417
|
trackBgTask(resolveSessionId(extCtx), taskId);
|
|
32909
|
-
return bashResult(formatBackgroundLaunch(taskId, params.pty === true), {
|
|
32910
|
-
task_id: taskId
|
|
32911
|
-
});
|
|
33418
|
+
return bashResult(appendPipeStripNote(formatBackgroundLaunch(taskId, params.pty === true), pipeStrip.note), { task_id: taskId });
|
|
32912
33419
|
}
|
|
32913
|
-
const waitTimeoutMs =
|
|
33420
|
+
const waitTimeoutMs = effectiveTimeout !== undefined ? Math.min(effectiveTimeout, foregroundWaitMs) : foregroundWaitMs;
|
|
32914
33421
|
const startedAt = Date.now();
|
|
32915
33422
|
while (true) {
|
|
32916
33423
|
const status = await callBashBridge(bridge, "bash_status", { task_id: taskId }, extCtx);
|
|
@@ -32918,7 +33425,7 @@ function registerBashTool(pi, ctx) {
|
|
|
32918
33425
|
throw new Error(status.message ?? "bash_status failed");
|
|
32919
33426
|
}
|
|
32920
33427
|
if (isTerminalStatus(status.status)) {
|
|
32921
|
-
return bashResult(withBashHints(formatForegroundResult(status),
|
|
33428
|
+
return bashResult(appendPipeStripNote(withBashHints(formatForegroundResult(status)), pipeStrip.note), {
|
|
32922
33429
|
exit_code: status.exit_code,
|
|
32923
33430
|
duration_ms: status.duration_ms,
|
|
32924
33431
|
truncated: status.output_truncated,
|
|
@@ -32932,9 +33439,7 @@ function registerBashTool(pi, ctx) {
|
|
|
32932
33439
|
throw new Error(promoted.message ?? "bash_promote failed");
|
|
32933
33440
|
}
|
|
32934
33441
|
trackBgTask(resolveSessionId(extCtx), taskId);
|
|
32935
|
-
return bashResult(formatPromotionMessage(taskId,
|
|
32936
|
-
task_id: taskId
|
|
32937
|
-
});
|
|
33442
|
+
return bashResult(appendPipeStripNote(formatPromotionMessage(taskId, effectiveTimeout, foregroundWaitMs), pipeStrip.note), { task_id: taskId });
|
|
32938
33443
|
}
|
|
32939
33444
|
await sleep(FOREGROUND_POLL_INTERVAL_MS);
|
|
32940
33445
|
}
|
|
@@ -32947,7 +33452,7 @@ function registerBashTool(pi, ctx) {
|
|
|
32947
33452
|
task_id: taskId
|
|
32948
33453
|
};
|
|
32949
33454
|
const output = response.output ?? "";
|
|
32950
|
-
return bashResult(withBashHints(output,
|
|
33455
|
+
return bashResult(appendPipeStripNote(withBashHints(output), pipeStrip.note), details);
|
|
32951
33456
|
},
|
|
32952
33457
|
renderCall(args, theme, context) {
|
|
32953
33458
|
return renderBashCall(args?.command, args?.description, theme, context);
|
|
@@ -32961,6 +33466,11 @@ function registerBashTool(pi, ctx) {
|
|
|
32961
33466
|
pi.registerTool(createBashWriteTool(ctx));
|
|
32962
33467
|
pi.registerTool(createBashKillTool(ctx));
|
|
32963
33468
|
}
|
|
33469
|
+
function appendPipeStripNote(output, note) {
|
|
33470
|
+
return note ? `${output}
|
|
33471
|
+
|
|
33472
|
+
${note}` : output;
|
|
33473
|
+
}
|
|
32964
33474
|
function formatBackgroundLaunch(taskId, isPty) {
|
|
32965
33475
|
if (isPty) {
|
|
32966
33476
|
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.`;
|
|
@@ -32974,10 +33484,8 @@ function formatPromotionMessage(taskId, timeout, waitWindowMs) {
|
|
|
32974
33484
|
function formatSeconds(ms) {
|
|
32975
33485
|
return `${Number((ms / 1000).toFixed(1))}s`;
|
|
32976
33486
|
}
|
|
32977
|
-
function withBashHints(output
|
|
32978
|
-
|
|
32979
|
-
result = maybeAppendGrepHint(result, command);
|
|
32980
|
-
return result;
|
|
33487
|
+
function withBashHints(output) {
|
|
33488
|
+
return maybeAppendConflictsHint(output);
|
|
32981
33489
|
}
|
|
32982
33490
|
function formatForegroundResult(data) {
|
|
32983
33491
|
const output = data.output_preview ?? "";
|
|
@@ -33022,7 +33530,7 @@ function createBashWatchTool(ctx) {
|
|
|
33022
33530
|
return {
|
|
33023
33531
|
name: "bash_watch",
|
|
33024
33532
|
label: "bash_watch",
|
|
33025
|
-
description: "
|
|
33533
|
+
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.",
|
|
33026
33534
|
promptSnippet: "Wait for or watch a background bash task",
|
|
33027
33535
|
parameters: BashWatchParams,
|
|
33028
33536
|
async execute(_toolCallId, params, _signal, _onUpdate, extCtx) {
|
|
@@ -33289,7 +33797,7 @@ ${formatWaitSummary(details.waited, details)}`;
|
|
|
33289
33797
|
} else {
|
|
33290
33798
|
if (isTerminalStatus(details.status) && details.output_preview) {
|
|
33291
33799
|
text += `
|
|
33292
|
-
${details.output_preview
|
|
33800
|
+
${details.output_preview}`;
|
|
33293
33801
|
}
|
|
33294
33802
|
if (!isTerminalStatus(details.status)) {
|
|
33295
33803
|
text += `
|
|
@@ -33365,12 +33873,7 @@ ${theme.fg("error", errorText || "bash failed")}`);
|
|
|
33365
33873
|
const rawOutput = result.content.filter((c) => c.type === "text").map((c) => c.text ?? "").join(`
|
|
33366
33874
|
`).trim();
|
|
33367
33875
|
if (rawOutput) {
|
|
33368
|
-
|
|
33369
|
-
`);
|
|
33370
|
-
const preview = lines.length > 25 ? `... (${lines.length - 25} lines omitted)
|
|
33371
|
-
${lines.slice(-25).join(`
|
|
33372
|
-
`)}` : rawOutput;
|
|
33373
|
-
container.addChild(new Text3(preview, 1, 0));
|
|
33876
|
+
container.addChild(new Text3(rawOutput, 1, 0));
|
|
33374
33877
|
container.addChild(new Spacer3(1));
|
|
33375
33878
|
}
|
|
33376
33879
|
if (exitCode !== undefined) {
|
|
@@ -33528,7 +34031,11 @@ function registerFsTools(pi, ctx, surface) {
|
|
|
33528
34031
|
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.",
|
|
33529
34032
|
parameters: DeleteParams,
|
|
33530
34033
|
async execute(_toolCallId, params, _signal, _onUpdate, extCtx) {
|
|
33531
|
-
const
|
|
34034
|
+
const inputs = coerceStringArray(params.files);
|
|
34035
|
+
if (inputs.length === 0) {
|
|
34036
|
+
throw new Error("delete: `files` must be a non-empty array of paths");
|
|
34037
|
+
}
|
|
34038
|
+
const files = await Promise.all(inputs.map((file2) => resolvePathArg(extCtx.cwd, file2)));
|
|
33532
34039
|
const checked = new Set;
|
|
33533
34040
|
for (const file2 of files) {
|
|
33534
34041
|
if (checked.has(file2))
|
|
@@ -33551,7 +34058,7 @@ function registerFsTools(pi, ctx, surface) {
|
|
|
33551
34058
|
` + skipped.map((entry) => ` ${entry.file}: ${entry.reason}`).join(`
|
|
33552
34059
|
`));
|
|
33553
34060
|
}
|
|
33554
|
-
const summary = deleted.length === 1 && skipped.length === 0 ? `Deleted ${deleted[0]}` : `Deleted ${deleted.length}/${
|
|
34061
|
+
const summary = deleted.length === 1 && skipped.length === 0 ? `Deleted ${deleted[0]}` : `Deleted ${deleted.length}/${inputs.length} file(s)`;
|
|
33555
34062
|
return textResult(summary, {
|
|
33556
34063
|
success: true,
|
|
33557
34064
|
complete: skipped.length === 0,
|
|
@@ -33993,7 +34500,15 @@ function registerInspectTool(pi, ctx) {
|
|
|
33993
34500
|
const topK = validateOptionalTopK(params.topK);
|
|
33994
34501
|
const response = await callBridge(bridge, "inspect", { sections, scope, topK }, extCtx);
|
|
33995
34502
|
runPendingTier2Categories(bridge, tier2RefreshCategories(response), extCtx);
|
|
33996
|
-
|
|
34503
|
+
const body = response.text;
|
|
34504
|
+
if (typeof body === "string") {
|
|
34505
|
+
const diagnostics = diagnosticsSummaryPart(asRecord2(response.summary));
|
|
34506
|
+
const text = diagnostics ? body ? `${body}
|
|
34507
|
+
|
|
34508
|
+
${diagnostics}` : diagnostics : body;
|
|
34509
|
+
return textResult(text, response);
|
|
34510
|
+
}
|
|
34511
|
+
return textResult(JSON.stringify(response, null, 2), response);
|
|
33997
34512
|
},
|
|
33998
34513
|
renderCall(args, theme, context) {
|
|
33999
34514
|
return renderInspectCall(args, theme, context);
|
|
@@ -34007,6 +34522,7 @@ function registerInspectTool(pi, ctx) {
|
|
|
34007
34522
|
// src/tools/navigate.ts
|
|
34008
34523
|
import { StringEnum as StringEnum3 } from "@earendil-works/pi-ai";
|
|
34009
34524
|
import { Type as Type9 } from "typebox";
|
|
34525
|
+
var CALLGRAPH_SOFT_CODES = new Set(["symbol_not_found", "callgraph_building"]);
|
|
34010
34526
|
function navigateParamsSchema() {
|
|
34011
34527
|
return Type9.Object({
|
|
34012
34528
|
op: StringEnum3(["call_tree", "callers", "trace_to", "trace_to_symbol", "impact", "trace_data"], {
|
|
@@ -34218,8 +34734,15 @@ function registerNavigateTool(pi, ctx) {
|
|
|
34218
34734
|
req.toSymbol = params.toSymbol;
|
|
34219
34735
|
if (toFile !== undefined)
|
|
34220
34736
|
req.toFile = toFile;
|
|
34221
|
-
|
|
34222
|
-
|
|
34737
|
+
try {
|
|
34738
|
+
const response = await callBridge(bridge, params.op, req, extCtx);
|
|
34739
|
+
return textResult(JSON.stringify(response, null, 2));
|
|
34740
|
+
} catch (error50) {
|
|
34741
|
+
if (error50 instanceof BridgeError && CALLGRAPH_SOFT_CODES.has(error50.code)) {
|
|
34742
|
+
return textResult(error50.message);
|
|
34743
|
+
}
|
|
34744
|
+
throw error50;
|
|
34745
|
+
}
|
|
34223
34746
|
},
|
|
34224
34747
|
renderCall(args, theme, context) {
|
|
34225
34748
|
return renderNavigateCall(args, theme, context);
|
|
@@ -34904,7 +35427,8 @@ function registerSafetyTool(pi, ctx) {
|
|
|
34904
35427
|
throw new Error(`op='${params.op}' requires 'name'`);
|
|
34905
35428
|
}
|
|
34906
35429
|
const filePath = params.filePath ? await resolvePathArg(extCtx.cwd, params.filePath) : undefined;
|
|
34907
|
-
const
|
|
35430
|
+
const fileInputs = coerceStringArray(params.files);
|
|
35431
|
+
const files = fileInputs.length > 0 ? await Promise.all(fileInputs.map((file2) => resolvePathArg(extCtx.cwd, file2))) : undefined;
|
|
34908
35432
|
const bridge = bridgeFor(ctx, extCtx.cwd);
|
|
34909
35433
|
const restrictToProjectRoot = ctx.config.restrict_to_project_root ?? false;
|
|
34910
35434
|
if (params.op === "undo") {
|
|
@@ -35289,17 +35813,17 @@ function buildWorkflowHints(opts) {
|
|
|
35289
35813
|
const hasSearch = opts.toolSurface !== "minimal" && opts.semanticEnabled && !opts.absentTools.has("aft_search");
|
|
35290
35814
|
const hasNavigate = opts.toolSurface === "all" && !opts.absentTools.has("aft_callgraph");
|
|
35291
35815
|
const hasInspect = opts.toolSurface !== "minimal" && !opts.absentTools.has("aft_inspect");
|
|
35292
|
-
const
|
|
35816
|
+
const hasBash = !opts.absentTools.has(bashName);
|
|
35817
|
+
const hasBgBash = opts.bashBackgroundEnabled && hasBash && !opts.absentTools.has("bash_status");
|
|
35818
|
+
if (hasBash && opts.bashCompressionEnabled) {
|
|
35819
|
+
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.");
|
|
35820
|
+
}
|
|
35293
35821
|
if (hasOutline && hasZoom) {
|
|
35294
35822
|
sections.push(`**Web/URL access**: \`aft_outline({ target: "<url>" })\` first for structure, then \`aft_zoom({ url: "<url>", symbols: "<heading>" })\` for the specific section.`);
|
|
35295
35823
|
}
|
|
35296
35824
|
if (hasOutline && hasZoom && (hasGrep || hasSearch)) {
|
|
35297
|
-
|
|
35298
|
-
|
|
35299
|
-
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}`);
|
|
35300
|
-
} else {
|
|
35301
|
-
sections.push(`**Code exploration**: \`${grepName}\` to locate → \`aft_outline\` for structure → \`aft_zoom\` for symbol(s).`);
|
|
35302
|
-
}
|
|
35825
|
+
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.`;
|
|
35826
|
+
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).`);
|
|
35303
35827
|
}
|
|
35304
35828
|
if (hasInspect) {
|
|
35305
35829
|
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.");
|
|
@@ -35317,12 +35841,13 @@ function buildWorkflowHints(opts) {
|
|
|
35317
35841
|
`));
|
|
35318
35842
|
}
|
|
35319
35843
|
if (hasBgBash) {
|
|
35320
|
-
sections.push(`**Long-running commands** (builds, installs, full test suites): \`${bashName}({ background: true })\` returns immediately with a \`task_id
|
|
35844
|
+
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.`);
|
|
35321
35845
|
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: "..." })\`.`);
|
|
35322
35846
|
}
|
|
35323
35847
|
if (sections.length === 0) {
|
|
35324
35848
|
return null;
|
|
35325
35849
|
}
|
|
35850
|
+
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.");
|
|
35326
35851
|
return `${HEADING}
|
|
35327
35852
|
|
|
35328
35853
|
${sections.join(`
|
|
@@ -35335,6 +35860,7 @@ function buildHintsFromConfig(config2, absentTools, hoistBuiltins) {
|
|
|
35335
35860
|
hoistBuiltins,
|
|
35336
35861
|
semanticEnabled: config2.semantic_search === true,
|
|
35337
35862
|
bashBackgroundEnabled: resolveBashConfig(config2).background,
|
|
35863
|
+
bashCompressionEnabled: resolveBashConfig(config2).compress,
|
|
35338
35864
|
absentTools
|
|
35339
35865
|
});
|
|
35340
35866
|
}
|
|
@@ -35413,12 +35939,12 @@ var PLUGIN_VERSION = (() => {
|
|
|
35413
35939
|
return "0.0.0";
|
|
35414
35940
|
}
|
|
35415
35941
|
})();
|
|
35416
|
-
var ANNOUNCEMENT_VERSION = "0.
|
|
35942
|
+
var ANNOUNCEMENT_VERSION = "0.36.0";
|
|
35417
35943
|
var ANNOUNCEMENT_FEATURES = [
|
|
35418
|
-
"
|
|
35419
|
-
"
|
|
35420
|
-
"
|
|
35421
|
-
"
|
|
35944
|
+
"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.",
|
|
35945
|
+
"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.",
|
|
35946
|
+
"Code search steering: guidance and hints now point to `aft_search` and parallel `aft_*` tools instead of `grep`/`find` in bash.",
|
|
35947
|
+
"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."
|
|
35422
35948
|
];
|
|
35423
35949
|
var ANNOUNCEMENT_FOOTER = "Join us on Discord: https://discord.gg/DSa65w8wuf";
|
|
35424
35950
|
var ALL_ONLY_TOOLS = new Set([
|
|
@@ -35702,6 +36228,7 @@ ${lines}
|
|
|
35702
36228
|
};
|
|
35703
36229
|
pool = new BridgePool(binaryPath, poolOptions, configOverrides);
|
|
35704
36230
|
pool.setConfigureOverride("harness", "pi");
|
|
36231
|
+
pool.setConfigureOverride("aft_search_registered", resolveToolSurface(config2).semantic);
|
|
35705
36232
|
const ctx = { pool, config: config2, storageDir };
|
|
35706
36233
|
if (onnxRuntimePromise) {
|
|
35707
36234
|
onnxRuntimePromise.then((ortDylibDir) => {
|
|
@@ -35784,8 +36311,9 @@ ${lines}
|
|
|
35784
36311
|
const sessionID = resolveSessionId(extCtx);
|
|
35785
36312
|
const bgContent = await appendToolResultBgCompletions({ ctx, directory: extCtx.cwd, sessionID }, event.content);
|
|
35786
36313
|
let content = bgContent ?? event.content;
|
|
36314
|
+
const isInspect = typeof event.details === "object" && event.details !== null && "scanner_state" in event.details;
|
|
35787
36315
|
const activeBridge = pool.getActiveBridgeForRoot(extCtx.cwd);
|
|
35788
|
-
const bar = statusBarBlockForSession(sessionID, activeBridge?.getStatusBar());
|
|
36316
|
+
const bar = statusBarBlockForSession(sessionID, activeBridge?.getStatusBar(), isInspect);
|
|
35789
36317
|
if (bar)
|
|
35790
36318
|
content = [...content, { type: "text", text: bar }];
|
|
35791
36319
|
if (content === event.content)
|
|
@@ -6,7 +6,7 @@ import { type StatusBarCounts } from "@cortexkit/aft-bridge";
|
|
|
6
6
|
* emit and heartbeat not elapsed) or when counts are absent (no inspect scan
|
|
7
7
|
* has populated Tier-2 yet).
|
|
8
8
|
*/
|
|
9
|
-
export declare function statusBarBlockForSession(sessionID: string | undefined, counts: StatusBarCounts | undefined): string | undefined;
|
|
9
|
+
export declare function statusBarBlockForSession(sessionID: string | undefined, counts: StatusBarCounts | undefined, force?: boolean): string | undefined;
|
|
10
10
|
/** Drop a session's emit state (on session shutdown). */
|
|
11
11
|
export declare function clearStatusBarSession(sessionID: string | undefined): void;
|
|
12
12
|
//# sourceMappingURL=status-bar-inject.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-bar-inject.d.ts","sourceRoot":"","sources":["../src/status-bar-inject.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,uBAAuB,CAAC;AAQ/B;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,eAAe,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"status-bar-inject.d.ts","sourceRoot":"","sources":["../src/status-bar-inject.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,uBAAuB,CAAC;AAQ/B;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,eAAe,GAAG,SAAS,EACnC,KAAK,UAAQ,GACZ,MAAM,GAAG,SAAS,CAiBpB;AAED,yDAAyD;AACzD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEzE"}
|
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,CA0M3E;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":"inspect.d.ts","sourceRoot":"","sources":["../../src/tools/inspect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EAEZ,KAAK,EACN,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAML,KAAK,iBAAiB,EAIvB,MAAM,qBAAqB,CAAC;AAE7B,QAAA,MAAM,aAAa;;;;EAqBjB,CAAC;AAuPH,wCAAwC;AACxC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CA8C7E;AAED,wCAAwC;AACxC,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,CAAC,OAAO,aAAa,CAAC,EAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,yCAe3B;AAED,wCAAwC;AACxC,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAChC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,sFAI3B;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/tools/inspect.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EAEZ,KAAK,EACN,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAML,KAAK,iBAAiB,EAIvB,MAAM,qBAAqB,CAAC;AAE7B,QAAA,MAAM,aAAa;;;;EAqBjB,CAAC;AAuPH,wCAAwC;AACxC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CA8C7E;AAED,wCAAwC;AACxC,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,CAAC,OAAO,aAAa,CAAC,EAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,yCAe3B;AAED,wCAAwC;AACxC,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,EAChC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,sFAI3B;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CA2C9E"}
|
|
@@ -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.1",
|
|
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.1",
|
|
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.1",
|
|
35
|
+
"@cortexkit/aft-darwin-x64": "0.36.1",
|
|
36
|
+
"@cortexkit/aft-linux-arm64": "0.36.1",
|
|
37
|
+
"@cortexkit/aft-linux-x64": "0.36.1",
|
|
38
|
+
"@cortexkit/aft-win32-arm64": "0.36.1",
|
|
39
|
+
"@cortexkit/aft-win32-x64": "0.36.1"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@earendil-works/pi-coding-agent": "*",
|