@cortexkit/aft-pi 0.36.0 → 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.
@@ -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,CA2d9D;AAED,eAAO,MAAM,QAAQ;;;;;;CAMpB,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
@@ -12857,6 +12857,11 @@ function formatEditSummary(data) {
12857
12857
  const n = data.files_modified;
12858
12858
  return `Applied edits to ${n} file${n === 1 ? "" : "s"}.`;
12859
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
+ }
12860
12865
  const additions = data.diff?.additions ?? 0;
12861
12866
  const deletions = data.diff?.deletions ?? 0;
12862
12867
  const counts = `+${additions}/-${deletions}`;
@@ -14071,7 +14076,23 @@ function isProcessAlive(pid) {
14071
14076
  }
14072
14077
  }
14073
14078
  // ../aft-bridge/dist/pipe-strip.js
14074
- var NOISE_FILTERS = new Set(["grep", "rg", "head", "tail", "cat", "less", "more"]);
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
+ ]);
14075
14096
  var GREP_GUARD_FLAGS = new Set([
14076
14097
  "c",
14077
14098
  "count",
@@ -14085,6 +14106,8 @@ var GREP_GUARD_FLAGS = new Set([
14085
14106
  function maybeStripCompressorPipe(command, compressionEnabled) {
14086
14107
  if (!compressionEnabled)
14087
14108
  return { command, stripped: false };
14109
+ if (containsUnsplittableConstruct(command))
14110
+ return { command, stripped: false };
14088
14111
  const chain = splitTopLevelAndChain(command);
14089
14112
  if (chain === null)
14090
14113
  return { command, stripped: false };
@@ -14098,7 +14121,7 @@ function maybeStripCompressorPipe(command, compressionEnabled) {
14098
14121
  return { command, stripped: false };
14099
14122
  const filterStages = stages.slice(1).map((stage) => stage.trim());
14100
14123
  for (const stage of filterStages) {
14101
- if (!isPlainNoiseFilter(stage))
14124
+ if (!filterStageIsSafeToDrop(stage))
14102
14125
  return { command, stripped: false };
14103
14126
  }
14104
14127
  const filters = filterStages.join(" | ");
@@ -14144,6 +14167,14 @@ function splitTopLevelAndChain(command) {
14144
14167
  return null;
14145
14168
  if (char === ";")
14146
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
+ }
14147
14178
  }
14148
14179
  segments.push(command.slice(start));
14149
14180
  return segments;
@@ -14186,45 +14217,262 @@ function isCompressorHandledRunner(stage) {
14186
14217
  const tokens = tokenizeStage(stage);
14187
14218
  if (tokens.length === 0)
14188
14219
  return false;
14189
- const [first, second, third] = tokens;
14190
- if (!first)
14191
- return false;
14192
14220
  if (tokens.some((token) => token === "&&" || token === "||" || token.includes(";"))) {
14193
14221
  return false;
14194
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;
14195
14229
  if (first === "bun")
14196
14230
  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)) {
14231
+ if (first === "npm" || first === "pnpm") {
14202
14232
  return second === "test" || second === "run" && startsWithTest(third);
14203
14233
  }
14204
- if (first === "yarn")
14205
- return second === "test";
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
+ }
14206
14242
  if (first === "playwright")
14207
14243
  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);
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;
14211
14301
  }
14212
14302
  function startsWithTest(token) {
14213
14303
  return token?.startsWith("test") === true;
14214
14304
  }
14215
- function isPlainNoiseFilter(stage) {
14216
- const tokens = tokenizeStage(stage);
14217
- const head = tokens[0];
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];
14218
14380
  if (!head)
14219
14381
  return false;
14220
14382
  if (head === "wc")
14221
14383
  return false;
14222
14384
  if (!NOISE_FILTERS.has(head))
14223
14385
  return false;
14224
- if ((head === "grep" || head === "rg") && hasIntentChangingGrepFlag(tokens.slice(1)))
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(".")))
14225
14424
  return false;
14226
14425
  return true;
14227
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
+ }
14228
14476
  function hasIntentChangingGrepFlag(args) {
14229
14477
  for (const arg of args) {
14230
14478
  if (arg === "--")
@@ -15207,7 +15455,7 @@ import {
15207
15455
  // package.json
15208
15456
  var package_default = {
15209
15457
  name: "@cortexkit/aft-pi",
15210
- version: "0.36.0",
15458
+ version: "0.36.1",
15211
15459
  type: "module",
15212
15460
  description: "Pi coding agent extension for Agent File Tools (AFT) — tree-sitter and LSP-powered code analysis",
15213
15461
  main: "dist/index.js",
@@ -15230,7 +15478,7 @@ var package_default = {
15230
15478
  "test:unit": "bun test src/__tests__ --path-ignore-patterns 'src/__tests__/e2e/**'"
15231
15479
  },
15232
15480
  dependencies: {
15233
- "@cortexkit/aft-bridge": "0.36.0",
15481
+ "@cortexkit/aft-bridge": "0.36.1",
15234
15482
  "@xterm/headless": "^5.5.0",
15235
15483
  "comment-json": "^5.0.0",
15236
15484
  diff: "^8.0.4",
@@ -15238,12 +15486,12 @@ var package_default = {
15238
15486
  zod: "^4.1.8"
15239
15487
  },
15240
15488
  optionalDependencies: {
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"
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"
15247
15495
  },
15248
15496
  devDependencies: {
15249
15497
  "@earendil-works/pi-coding-agent": "*",
@@ -31881,7 +32129,7 @@ function sendFeatureAnnouncement(version2, features, footer, storageDir) {
31881
32129
  // src/status-bar-inject.ts
31882
32130
  var DEFAULT_SESSION = "__default__";
31883
32131
  var emitStateBySession = new Map;
31884
- function statusBarBlockForSession(sessionID, counts) {
32132
+ function statusBarBlockForSession(sessionID, counts, force = false) {
31885
32133
  if (!counts)
31886
32134
  return;
31887
32135
  const key = sessionID ?? DEFAULT_SESSION;
@@ -31890,6 +32138,11 @@ function statusBarBlockForSession(sessionID, counts) {
31890
32138
  state = createStatusBarEmitState();
31891
32139
  emitStateBySession.set(key, state);
31892
32140
  }
32141
+ if (force) {
32142
+ state.last = counts;
32143
+ state.callsSinceEmit = 0;
32144
+ return formatStatusBar(counts);
32145
+ }
31893
32146
  return shouldEmitStatusBar(state, counts) ? formatStatusBar(counts) : undefined;
31894
32147
  }
31895
32148
 
@@ -33162,9 +33415,7 @@ function registerBashTool(pi, ctx) {
33162
33415
  if (response.status === "running" && taskId) {
33163
33416
  if (effectiveBackground) {
33164
33417
  trackBgTask(resolveSessionId(extCtx), taskId);
33165
- return bashResult(formatBackgroundLaunch(taskId, params.pty === true), {
33166
- task_id: taskId
33167
- });
33418
+ return bashResult(appendPipeStripNote(formatBackgroundLaunch(taskId, params.pty === true), pipeStrip.note), { task_id: taskId });
33168
33419
  }
33169
33420
  const waitTimeoutMs = effectiveTimeout !== undefined ? Math.min(effectiveTimeout, foregroundWaitMs) : foregroundWaitMs;
33170
33421
  const startedAt = Date.now();
@@ -33188,9 +33439,7 @@ function registerBashTool(pi, ctx) {
33188
33439
  throw new Error(promoted.message ?? "bash_promote failed");
33189
33440
  }
33190
33441
  trackBgTask(resolveSessionId(extCtx), taskId);
33191
- return bashResult(formatPromotionMessage(taskId, effectiveTimeout, foregroundWaitMs), {
33192
- task_id: taskId
33193
- });
33442
+ return bashResult(appendPipeStripNote(formatPromotionMessage(taskId, effectiveTimeout, foregroundWaitMs), pipeStrip.note), { task_id: taskId });
33194
33443
  }
33195
33444
  await sleep(FOREGROUND_POLL_INTERVAL_MS);
33196
33445
  }
@@ -34251,7 +34500,15 @@ function registerInspectTool(pi, ctx) {
34251
34500
  const topK = validateOptionalTopK(params.topK);
34252
34501
  const response = await callBridge(bridge, "inspect", { sections, scope, topK }, extCtx);
34253
34502
  runPendingTier2Categories(bridge, tier2RefreshCategories(response), extCtx);
34254
- return textResult(response.text ?? JSON.stringify(response, null, 2), response);
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);
34255
34512
  },
34256
34513
  renderCall(args, theme, context) {
34257
34514
  return renderInspectCall(args, theme, context);
@@ -36054,8 +36311,9 @@ ${lines}
36054
36311
  const sessionID = resolveSessionId(extCtx);
36055
36312
  const bgContent = await appendToolResultBgCompletions({ ctx, directory: extCtx.cwd, sessionID }, event.content);
36056
36313
  let content = bgContent ?? event.content;
36314
+ const isInspect = typeof event.details === "object" && event.details !== null && "scanner_state" in event.details;
36057
36315
  const activeBridge = pool.getActiveBridgeForRoot(extCtx.cwd);
36058
- const bar = statusBarBlockForSession(sessionID, activeBridge?.getStatusBar());
36316
+ const bar = statusBarBlockForSession(sessionID, activeBridge?.getStatusBar(), isInspect);
36059
36317
  if (bar)
36060
36318
  content = [...content, { type: "text", text: bar }];
36061
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,GAClC,MAAM,GAAG,SAAS,CASpB;AAED,yDAAyD;AACzD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEzE"}
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"}
@@ -1 +1 @@
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"}
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"}
@@ -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,CAmC9E"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexkit/aft-pi",
3
- "version": "0.36.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.36.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.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"
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": "*",