@cortexkit/aft-pi 0.52.2 → 0.53.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,7 +22,7 @@ pi install npm:@cortexkit/aft-pi@0.13.1
22
22
 
23
23
  ### Hoisted built-in overrides
24
24
 
25
- Pi's default `read`, `write`, `edit`, and `grep` are replaced with AFT-backed versions.
25
+ Pi's default `read`, `write`, `edit`, and `grep` are replaced with AFT-backed versions by default. Set `hoist_builtin_tools: false` to keep Pi's native tools and use `aft_read`, `aft_write`, `aft_edit`, `aft_grep`, and `aft_bash` for AFT instead; AFT background-bash companions remain `bash_status`, `bash_watch`, `bash_write`, and `bash_kill`.
26
26
 
27
27
  | Tool | Pi built-in | AFT replacement |
28
28
  | ------- | ------------------------ | -------------------------------------------------------------------------------------------- |
@@ -69,6 +69,10 @@ All keys are optional. Example:
69
69
  // "minimal" | "recommended" (default) | "all"
70
70
  "tool_surface": "recommended",
71
71
 
72
+ // Default true replaces Pi's native file and bash tools.
73
+ // Set false to retain Pi's tools and use aft_read/aft_write/aft_edit/aft_bash for AFT.
74
+ "hoist_builtin_tools": false,
75
+
72
76
  // Auto-format on write/edit using project formatter config.
73
77
  "format_on_edit": true,
74
78
 
@@ -119,7 +123,7 @@ Sensitive semantic backend fields (`backend`, `base_url`, `api_key_env`) are onl
119
123
  | Tier | Tools |
120
124
  | ----------------- | ----------------------------------------------------------------------------------------------------------------------- |
121
125
  | `minimal` | `aft_outline`, `aft_zoom`, `aft_safety` |
122
- | `recommended` (default) | `minimal` + hoisted `read`/`write`/`edit` + `aft_import` + `ast_grep_*` + `lsp_diagnostics` + `aft_conflicts` + (optional) `grep` + (optional) `aft_search` |
126
+ | `recommended` (default) | `minimal` + `read`/`write`/`edit` (or `aft_` alternatives when hoisting is disabled) + `aft_import` + `ast_grep_*` + `lsp_diagnostics` + `aft_conflicts` + (optional) `grep`/`aft_grep` + (optional) `aft_search` |
123
127
  | `all` | `recommended` + `aft_callgraph` + `aft_delete` + `aft_move` + `aft_refactor` |
124
128
 
125
129
  ## Architecture
package/dist/config.d.ts CHANGED
@@ -161,6 +161,8 @@ export interface AftConfig {
161
161
  checker?: Record<string, Checker>;
162
162
  /** Configure-time missing-tool warning delivery. Default: toast. */
163
163
  configure_warnings_delivery?: ConfigureWarningsDelivery;
164
+ /** Replace host-native read/write/edit/grep/bash with AFT tools. Default: true; false registers AFT's replacements under aft_ names. */
165
+ hoist_builtin_tools?: boolean;
164
166
  tool_surface?: ToolSurface;
165
167
  disabled_tools?: string[];
166
168
  restrict_to_project_root?: boolean;
@@ -288,6 +290,7 @@ export declare const AftConfigSchema: z.ZodPreprocess<z.ZodObject<{
288
290
  log: "log";
289
291
  chat: "chat";
290
292
  }>>;
293
+ hoist_builtin_tools: z.ZodOptional<z.ZodBoolean>;
291
294
  tool_surface: z.ZodOptional<z.ZodEnum<{
292
295
  minimal: "minimal";
293
296
  recommended: "recommended";
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9922,7 +9922,7 @@ function isEmptyParam(value) {
9922
9922
  return false;
9923
9923
  }
9924
9924
  // ../aft-bridge/dist/config-keys.js
9925
- var OPENCODE_ONLY_KEYS = ["hoist_builtin_tools", "auto_update"];
9925
+ var OPENCODE_ONLY_KEYS = ["auto_update"];
9926
9926
  function stripHarnessSpecificConfigKeys(value, keys) {
9927
9927
  if (!value || typeof value !== "object" || Array.isArray(value))
9928
9928
  return value;
@@ -17461,7 +17461,7 @@ import {
17461
17461
  // package.json
17462
17462
  var package_default = {
17463
17463
  name: "@cortexkit/aft-pi",
17464
- version: "0.52.2",
17464
+ version: "0.53.0",
17465
17465
  type: "module",
17466
17466
  description: "Pi coding agent extension for Agent File Tools (AFT) — tree-sitter and LSP-powered code analysis",
17467
17467
  main: "dist/index.js",
@@ -17484,19 +17484,19 @@ var package_default = {
17484
17484
  "test:unit": "bun test src/__tests__ --path-ignore-patterns 'src/__tests__/e2e/**'"
17485
17485
  },
17486
17486
  dependencies: {
17487
- "@cortexkit/aft-bridge": "0.52.2",
17487
+ "@cortexkit/aft-bridge": "0.53.0",
17488
17488
  "comment-json": "^5.0.0",
17489
17489
  diff: "^8.0.4",
17490
17490
  typebox: "1.1.38",
17491
17491
  zod: "^4.4.3"
17492
17492
  },
17493
17493
  optionalDependencies: {
17494
- "@cortexkit/aft-darwin-arm64": "0.52.2",
17495
- "@cortexkit/aft-darwin-x64": "0.52.2",
17496
- "@cortexkit/aft-linux-arm64": "0.52.2",
17497
- "@cortexkit/aft-linux-x64": "0.52.2",
17498
- "@cortexkit/aft-win32-arm64": "0.52.2",
17499
- "@cortexkit/aft-win32-x64": "0.52.2"
17494
+ "@cortexkit/aft-darwin-arm64": "0.53.0",
17495
+ "@cortexkit/aft-darwin-x64": "0.53.0",
17496
+ "@cortexkit/aft-linux-arm64": "0.53.0",
17497
+ "@cortexkit/aft-linux-x64": "0.53.0",
17498
+ "@cortexkit/aft-win32-arm64": "0.53.0",
17499
+ "@cortexkit/aft-win32-x64": "0.53.0"
17500
17500
  },
17501
17501
  devDependencies: {
17502
17502
  "@earendil-works/pi-coding-agent": "^0.80.2",
@@ -17640,13 +17640,16 @@ function coerceAftStatus(response) {
17640
17640
  project_root: readNullableString(response.project_root),
17641
17641
  canonical_root: readNullableString(response.canonical_root),
17642
17642
  cache_role: readString(response.cache_role, "not_initialized"),
17643
+ degraded: readBoolean(response.degraded),
17644
+ degraded_reasons: Array.isArray(response.degraded_reasons) ? response.degraded_reasons.filter((r) => typeof r === "string") : [],
17643
17645
  message: typeof response.message === "string" ? response.message : undefined,
17644
17646
  features: {
17645
17647
  format_on_edit: readBoolean(features.format_on_edit),
17646
17648
  validate_on_edit: readString(features.validate_on_edit, "off"),
17647
17649
  restrict_to_project_root: readBoolean(features.restrict_to_project_root),
17648
17650
  search_index: readBoolean(features.search_index ?? features.experimental_search_index),
17649
- semantic_search: readBoolean(features.semantic_search ?? features.experimental_semantic_search)
17651
+ semantic_search: readBoolean(features.semantic_search ?? features.experimental_semantic_search),
17652
+ callgraph_store: readBoolean(features.callgraph_store)
17650
17653
  },
17651
17654
  search_index: {
17652
17655
  status: readString(searchIndex.status, "unknown"),
@@ -17697,21 +17700,10 @@ function formatStatusDialogMessage(status) {
17697
17700
  `AFT version: ${status.version}`,
17698
17701
  `Project root: ${status.project_root ?? "(not configured)"}`,
17699
17702
  `Canonical root: ${status.canonical_root ?? "(not configured)"}`,
17700
- `Cache role: ${formatCacheRoleLabel(status.cache_role)}`,
17701
- "",
17702
- "Enabled features",
17703
- `- format_on_edit: ${formatFlag(status.features.format_on_edit)}`,
17704
- `- search_index: ${formatFlag(status.features.search_index)}`,
17705
- `- semantic_search: ${formatFlag(status.features.semantic_search)}`,
17706
- "",
17707
- "Search index",
17708
- `- status: ${status.search_index.status}`,
17709
- `- files: ${formatCount(status.search_index.files)}`,
17710
- `- trigrams: ${formatCount(status.search_index.trigrams)}`,
17711
- "",
17712
- "Semantic index",
17713
- `- status: ${formatSemanticIndexStatus(status.semantic_index.status, status.semantic_index.stage)}`
17703
+ `Cache role: ${formatCacheRoleLabel(status.cache_role)}`
17714
17704
  ];
17705
+ appendDegradedStatus(lines, status, false);
17706
+ lines.push("", "Enabled features", `- format_on_edit: ${formatFlag(status.features.format_on_edit)}`, `- search_index: ${formatFlag(status.features.search_index)}`, `- semantic_search: ${formatFlag(status.features.semantic_search)}`, `- callgraph_store: ${formatFlag(status.features.callgraph_store)}`, "", "Search index", `- status: ${status.search_index.status}`, `- files: ${formatCount(status.search_index.files)}`, `- trigrams: ${formatCount(status.search_index.trigrams)}`, "", "Semantic index", `- status: ${formatSemanticIndexStatus(status.semantic_index.status, status.semantic_index.stage)}`);
17715
17707
  const refreshing = formatSemanticRefreshing(status.semantic_index.refreshing_count);
17716
17708
  if (refreshing) {
17717
17709
  lines.push(`- ${refreshing}`);
@@ -17761,6 +17753,15 @@ function formatStatusDialogMessage(status) {
17761
17753
  return lines.join(`
17762
17754
  `);
17763
17755
  }
17756
+ function appendDegradedStatus(lines, status, markdown) {
17757
+ if (!status.degraded || status.degraded_reasons.length === 0)
17758
+ return;
17759
+ lines.push("", markdown ? "### Degraded mode" : "Degraded mode");
17760
+ for (const reason of status.degraded_reasons) {
17761
+ const detail = reason === "home_root" ? "project root is your home directory; heavy indexes are disabled" : reason;
17762
+ lines.push(`- ${detail}`);
17763
+ }
17764
+ }
17764
17765
 
17765
17766
  // src/tools/_shared.ts
17766
17767
  import { existsSync as existsSync9 } from "node:fs";
@@ -17771,7 +17772,8 @@ var optionalInt = (min, max, description = "(integer)") => Type.Optional(Type.Un
17771
17772
  function withPathAliasPreparation(tool) {
17772
17773
  const existing = tool.prepareArguments;
17773
17774
  const prepare = (args) => {
17774
- const prepared = tool.name === "edit" ? prepareCanonicalEditArguments(tool.name, args) : prepareCanonicalPathArguments(tool.name, args);
17775
+ const isEditTool = tool.name === "edit" || tool.name === "aft_edit";
17776
+ const prepared = isEditTool ? prepareCanonicalEditArguments("edit", args) : prepareCanonicalPathArguments(tool.name, args);
17775
17777
  return existing ? existing(prepared) : prepared;
17776
17778
  };
17777
17779
  return {
@@ -17998,7 +18000,7 @@ function renderInner(s, error3, theme, innerWidth) {
17998
18000
  lines.push(line);
17999
18001
  lines.push("");
18000
18002
  lines.push(theme.fg("muted", "Features"));
18001
- lines.push(` ${featureBadge("format_on_edit", s.features.format_on_edit, theme)} ${featureBadge("search_index", s.features.search_index, theme)} ${featureBadge("semantic_search", s.features.semantic_search, theme)}`);
18003
+ lines.push(` ${featureBadge("format_on_edit", s.features.format_on_edit, theme)} ${featureBadge("search_index", s.features.search_index, theme)} ${featureBadge("semantic_search", s.features.semantic_search, theme)} ${featureBadge("callgraph_store", s.features.callgraph_store, theme)}`);
18002
18004
  const compressionRows = formatCompressionStatusRows(s.compression);
18003
18005
  if (compressionRows.length > 0) {
18004
18006
  lines.push("");
@@ -32648,6 +32650,7 @@ var AftConfigSchema = exports_external.preprocess((value) => stripHarnessSpecifi
32648
32650
  formatter: exports_external.record(exports_external.string(), FormatterEnum).optional(),
32649
32651
  checker: exports_external.record(exports_external.string(), CheckerEnum).optional(),
32650
32652
  configure_warnings_delivery: ConfigureWarningsDeliveryEnum.optional(),
32653
+ hoist_builtin_tools: exports_external.boolean().optional(),
32651
32654
  tool_surface: exports_external.enum(["minimal", "recommended", "all"]).optional(),
32652
32655
  disabled_tools: exports_external.array(exports_external.string()).optional(),
32653
32656
  restrict_to_project_root: exports_external.boolean().optional(),
@@ -32831,6 +32834,12 @@ function recordConfigParseFailure(configPath, errorMessage) {
32831
32834
  configLoadErrors.push({ path: configPath, message: errorMessage });
32832
32835
  warn2(formatConfigParseFailureMessage(configPath, errorMessage));
32833
32836
  }
32837
+ function warnIgnoredHarnessSpecificConfigKeys(config2, configPath) {
32838
+ const ignored = OPENCODE_ONLY_KEYS.filter((key) => Object.hasOwn(config2, key));
32839
+ if (ignored.length === 0)
32840
+ return;
32841
+ warn2(`Ignoring OpenCode-only config key${ignored.length === 1 ? "" : "s"} ${ignored.map((key) => `\`${key}\``).join(", ")} in ${configPath}; ${ignored.length === 1 ? "it has" : "they have"} no effect on the Pi harness.`);
32842
+ }
32834
32843
  function loadConfigFromPath(configPath) {
32835
32844
  try {
32836
32845
  if (!existsSync10(configPath))
@@ -32843,6 +32852,7 @@ function loadConfigFromPath(configPath) {
32843
32852
  }
32844
32853
  migrateRawConfig(rawConfig, configPath, { log: log2, warn: warn2 });
32845
32854
  const cleanConfig = stripJsoncSymbols(rawConfig);
32855
+ warnIgnoredHarnessSpecificConfigKeys(cleanConfig, configPath);
32846
32856
  const result = AftConfigSchema.safeParse(cleanConfig);
32847
32857
  if (result.success) {
32848
32858
  log2(`Config loaded from ${configPath}`);
@@ -33006,6 +33016,7 @@ var PROJECT_SAFE_TOP_LEVEL_FIELDS = new Set([
33006
33016
  "enabled",
33007
33017
  "edit_mode",
33008
33018
  "tool_surface",
33019
+ "hoist_builtin_tools",
33009
33020
  "format_on_edit",
33010
33021
  "validate_on_edit",
33011
33022
  "configure_warnings_delivery",
@@ -35087,111 +35098,31 @@ import { Type as Type2 } from "typebox";
35087
35098
 
35088
35099
  // src/tools/diff-format.ts
35089
35100
  import { diffLines } from "diff";
35090
- var DEFAULT_CONTEXT_LINES = 4;
35091
- function formatDiffForPi(oldContent, newContent, contextLines = DEFAULT_CONTEXT_LINES) {
35092
- const parts = diffLines(oldContent, newContent);
35093
- const output = [];
35094
- const oldLines = oldContent.split(`
35095
- `);
35096
- const newLines = newContent.split(`
35097
- `);
35098
- const maxLineNum = Math.max(oldLines.length, newLines.length);
35099
- const lineNumWidth = String(maxLineNum).length;
35100
- const pad = (n) => String(n).padStart(lineNumWidth, " ");
35101
- const blank = " ".repeat(lineNumWidth);
35102
- let oldLineNum = 1;
35103
- let newLineNum = 1;
35104
- let lastWasChange = false;
35105
- let firstChangedLine;
35106
- for (let i = 0;i < parts.length; i++) {
35107
- const part = parts[i];
35108
- const raw = part.value.split(`
35109
- `);
35110
- if (raw[raw.length - 1] === "")
35111
- raw.pop();
35112
- if (part.added || part.removed) {
35113
- if (firstChangedLine === undefined)
35114
- firstChangedLine = newLineNum;
35115
- for (const line of raw) {
35116
- if (part.added) {
35117
- output.push(`+${pad(newLineNum)} ${line}`);
35118
- newLineNum++;
35119
- } else {
35120
- output.push(`-${pad(oldLineNum)} ${line}`);
35121
- oldLineNum++;
35122
- }
35123
- }
35124
- lastWasChange = true;
35125
- continue;
35126
- }
35127
- const nextIsChange = i < parts.length - 1 && (parts[i + 1].added || parts[i + 1].removed);
35128
- const hasLeading = lastWasChange;
35129
- const hasTrailing = nextIsChange;
35130
- if (hasLeading && hasTrailing) {
35131
- if (raw.length <= contextLines * 2) {
35132
- for (const line of raw) {
35133
- output.push(` ${pad(oldLineNum)} ${line}`);
35134
- oldLineNum++;
35135
- newLineNum++;
35136
- }
35137
- } else {
35138
- for (const line of raw.slice(0, contextLines)) {
35139
- output.push(` ${pad(oldLineNum)} ${line}`);
35140
- oldLineNum++;
35141
- newLineNum++;
35142
- }
35143
- const skipped = raw.length - contextLines * 2;
35144
- output.push(` ${blank} ...`);
35145
- oldLineNum += skipped;
35146
- newLineNum += skipped;
35147
- for (const line of raw.slice(raw.length - contextLines)) {
35148
- output.push(` ${pad(oldLineNum)} ${line}`);
35149
- oldLineNum++;
35150
- newLineNum++;
35151
- }
35152
- }
35153
- } else if (hasLeading) {
35154
- const shown = raw.slice(0, contextLines);
35155
- for (const line of shown) {
35156
- output.push(` ${pad(oldLineNum)} ${line}`);
35157
- oldLineNum++;
35158
- newLineNum++;
35159
- }
35160
- const skipped = raw.length - shown.length;
35161
- if (skipped > 0) {
35162
- output.push(` ${blank} ...`);
35163
- oldLineNum += skipped;
35164
- newLineNum += skipped;
35165
- }
35166
- } else if (hasTrailing) {
35167
- const shownCount = Math.min(contextLines, raw.length);
35168
- const shown = raw.slice(raw.length - shownCount);
35169
- const skipped = raw.length - shown.length;
35170
- if (skipped > 0) {
35171
- output.push(` ${blank} ...`);
35172
- oldLineNum += skipped;
35173
- newLineNum += skipped;
35174
- }
35175
- for (const line of shown) {
35176
- output.push(` ${pad(oldLineNum)} ${line}`);
35177
- oldLineNum++;
35178
- newLineNum++;
35179
- }
35180
- } else {
35181
- oldLineNum += raw.length;
35182
- newLineNum += raw.length;
35183
- }
35184
- lastWasChange = false;
35185
- }
35186
- return { diff: output.join(`
35187
- `), firstChangedLine };
35188
- }
35189
35101
 
35190
35102
  // src/tools/render-helpers.ts
35191
35103
  import { homedir as homedir13 } from "node:os";
35192
35104
  import { renderDiff } from "@earendil-works/pi-coding-agent";
35193
35105
  import { Container, Spacer, Text } from "@earendil-works/pi-tui";
35194
35106
  var NATIVE_COLLAPSED_RESULT_MAX_LINES = 5;
35107
+ function normalizeTerminalText(text) {
35108
+ return text.replace(/\r/g, "");
35109
+ }
35110
+
35111
+ class TerminalSafeComponent {
35112
+ component;
35113
+ constructor(component) {
35114
+ this.component = component;
35115
+ }
35116
+ render(width) {
35117
+ return this.component.render(width).map(normalizeTerminalText);
35118
+ }
35119
+ invalidate() {
35120
+ this.component.invalidate?.();
35121
+ }
35122
+ handleInput(data) {
35123
+ this.component.handleInput?.(data);
35124
+ }
35125
+ }
35195
35126
  function reuseText(last) {
35196
35127
  return last instanceof Text ? last : new Text("", 0, 0);
35197
35128
  }
@@ -35244,8 +35175,10 @@ function collapsibleResult({
35244
35175
  expanded,
35245
35176
  context
35246
35177
  }) {
35247
- if (expanded === true || full.render(200).length <= NATIVE_COLLAPSED_RESULT_MAX_LINES) {
35248
- return full;
35178
+ const renderedAtCollapseWidth = full.render(200);
35179
+ const terminalSafeFull = renderedAtCollapseWidth.some((line) => line.includes("\r")) ? new TerminalSafeComponent(full) : full;
35180
+ if (expanded === true || renderedAtCollapseWidth.length <= NATIVE_COLLAPSED_RESULT_MAX_LINES) {
35181
+ return terminalSafeFull;
35249
35182
  }
35250
35183
  const text = reuseText(context.lastComponent);
35251
35184
  text.setText(`
@@ -35356,18 +35289,122 @@ function formatUnifiedDiffForPi(unifiedDiff) {
35356
35289
  if (entries.length === 0)
35357
35290
  return "";
35358
35291
  const width = String(entries.reduce((max, entry) => Math.max(max, entry.line), 1)).length;
35359
- return entries.map((entry) => `${entry.prefix}${String(entry.line).padStart(width, " ")} ${entry.text}`).join(`
35360
- `);
35292
+ return normalizeTerminalText(entries.map((entry) => `${entry.prefix}${String(entry.line).padStart(width, " ")} ${entry.text}`).join(`
35293
+ `));
35361
35294
  }
35362
35295
  function renderUnifiedDiff(unifiedDiff) {
35363
35296
  const piDiff = formatUnifiedDiffForPi(unifiedDiff);
35364
35297
  if (!piDiff)
35365
35298
  return "";
35366
35299
  try {
35367
- return renderDiff(piDiff);
35300
+ return normalizeTerminalText(renderDiff(piDiff));
35368
35301
  } catch {
35369
- return piDiff;
35302
+ return normalizeTerminalText(piDiff);
35303
+ }
35304
+ }
35305
+
35306
+ // src/tools/diff-format.ts
35307
+ var DEFAULT_CONTEXT_LINES = 4;
35308
+ function formatDiffForPi(oldContent, newContent, contextLines = DEFAULT_CONTEXT_LINES) {
35309
+ const parts = diffLines(oldContent, newContent);
35310
+ const output = [];
35311
+ const oldLines = oldContent.split(`
35312
+ `);
35313
+ const newLines = newContent.split(`
35314
+ `);
35315
+ const maxLineNum = Math.max(oldLines.length, newLines.length);
35316
+ const lineNumWidth = String(maxLineNum).length;
35317
+ const pad = (n) => String(n).padStart(lineNumWidth, " ");
35318
+ const blank = " ".repeat(lineNumWidth);
35319
+ let oldLineNum = 1;
35320
+ let newLineNum = 1;
35321
+ let lastWasChange = false;
35322
+ let firstChangedLine;
35323
+ for (let i = 0;i < parts.length; i++) {
35324
+ const part = parts[i];
35325
+ const raw = part.value.split(`
35326
+ `);
35327
+ if (raw[raw.length - 1] === "")
35328
+ raw.pop();
35329
+ if (part.added || part.removed) {
35330
+ if (firstChangedLine === undefined)
35331
+ firstChangedLine = newLineNum;
35332
+ for (const line of raw) {
35333
+ if (part.added) {
35334
+ output.push(`+${pad(newLineNum)} ${line}`);
35335
+ newLineNum++;
35336
+ } else {
35337
+ output.push(`-${pad(oldLineNum)} ${line}`);
35338
+ oldLineNum++;
35339
+ }
35340
+ }
35341
+ lastWasChange = true;
35342
+ continue;
35343
+ }
35344
+ const nextIsChange = i < parts.length - 1 && (parts[i + 1].added || parts[i + 1].removed);
35345
+ const hasLeading = lastWasChange;
35346
+ const hasTrailing = nextIsChange;
35347
+ if (hasLeading && hasTrailing) {
35348
+ if (raw.length <= contextLines * 2) {
35349
+ for (const line of raw) {
35350
+ output.push(` ${pad(oldLineNum)} ${line}`);
35351
+ oldLineNum++;
35352
+ newLineNum++;
35353
+ }
35354
+ } else {
35355
+ for (const line of raw.slice(0, contextLines)) {
35356
+ output.push(` ${pad(oldLineNum)} ${line}`);
35357
+ oldLineNum++;
35358
+ newLineNum++;
35359
+ }
35360
+ const skipped = raw.length - contextLines * 2;
35361
+ output.push(` ${blank} ...`);
35362
+ oldLineNum += skipped;
35363
+ newLineNum += skipped;
35364
+ for (const line of raw.slice(raw.length - contextLines)) {
35365
+ output.push(` ${pad(oldLineNum)} ${line}`);
35366
+ oldLineNum++;
35367
+ newLineNum++;
35368
+ }
35369
+ }
35370
+ } else if (hasLeading) {
35371
+ const shown = raw.slice(0, contextLines);
35372
+ for (const line of shown) {
35373
+ output.push(` ${pad(oldLineNum)} ${line}`);
35374
+ oldLineNum++;
35375
+ newLineNum++;
35376
+ }
35377
+ const skipped = raw.length - shown.length;
35378
+ if (skipped > 0) {
35379
+ output.push(` ${blank} ...`);
35380
+ oldLineNum += skipped;
35381
+ newLineNum += skipped;
35382
+ }
35383
+ } else if (hasTrailing) {
35384
+ const shownCount = Math.min(contextLines, raw.length);
35385
+ const shown = raw.slice(raw.length - shownCount);
35386
+ const skipped = raw.length - shown.length;
35387
+ if (skipped > 0) {
35388
+ output.push(` ${blank} ...`);
35389
+ oldLineNum += skipped;
35390
+ newLineNum += skipped;
35391
+ }
35392
+ for (const line of shown) {
35393
+ output.push(` ${pad(oldLineNum)} ${line}`);
35394
+ oldLineNum++;
35395
+ newLineNum++;
35396
+ }
35397
+ } else {
35398
+ oldLineNum += raw.length;
35399
+ newLineNum += raw.length;
35400
+ }
35401
+ lastWasChange = false;
35370
35402
  }
35403
+ return {
35404
+ diff: normalizeTerminalText(output.join(`
35405
+ `)),
35406
+ firstChangedLine
35407
+ };
35371
35408
  }
35372
35409
 
35373
35410
  // src/tools/hoisted.ts
@@ -35606,13 +35643,18 @@ function renderReadCall(args, theme, context) {
35606
35643
  return text;
35607
35644
  }
35608
35645
  function registerHoistedTools(pi, ctx, surface) {
35646
+ const prefix = surface.hoistBuiltinTools === false ? "aft_" : "";
35647
+ const readName = `${prefix}read`;
35648
+ const writeName = `${prefix}write`;
35649
+ const editName = `${prefix}edit`;
35650
+ const grepName = `${prefix}grep`;
35609
35651
  if (surface.hoistRead) {
35610
35652
  pi.registerTool(withPathAliasPreparation({
35611
- name: "read",
35612
- label: "read",
35653
+ name: readName,
35654
+ label: readName,
35613
35655
  description: "Read file contents with line numbers. Backed by AFT's indexed Rust reader — faster than the built-in `read` on large repos. Images are returned as attachments on vision-capable models; PDFs and non-vision models are not yet supported.",
35614
35656
  promptSnippet: "Read file contents (supports offset/limit for large files)",
35615
- promptGuidelines: ["Use read to examine files instead of cat or sed."],
35657
+ promptGuidelines: [`Use ${readName} to examine files instead of cat or sed.`],
35616
35658
  parameters: ReadParams,
35617
35659
  async execute(_toolCallId, params, _signal, _onUpdate, extCtx) {
35618
35660
  const bridge = bridgeFor(ctx, extCtx.cwd);
@@ -35674,11 +35716,11 @@ PDFs aren't supported on the Pi harness yet.`, response);
35674
35716
  if (surface.hoistWrite) {
35675
35717
  const writeBackupText = ctx.config.backup?.enabled === false ? "Backup capture is disabled by user config." : "Existing files are backed up before overwriting (undo via aft_safety).";
35676
35718
  pi.registerTool(withPathAliasPreparation({
35677
- name: "write",
35678
- label: "write",
35679
- description: `Write content to a file, creating it and parent directories automatically. ${writeBackupText} Auto-formats when the project has a formatter configured. Uses \`path\`. For partial edits, use the \`edit\` tool.`,
35719
+ name: writeName,
35720
+ label: writeName,
35721
+ description: `Write content to a file, creating it and parent directories automatically. ${writeBackupText} Auto-formats when the project has a formatter configured. Uses \`path\`. For partial edits, use the \`${editName}\` tool.`,
35680
35722
  promptSnippet: "Create or overwrite files (uses path; auto-formats)",
35681
- promptGuidelines: ["Use write only for new files or complete rewrites."],
35723
+ promptGuidelines: [`Use ${writeName} only for new files or complete rewrites.`],
35682
35724
  parameters: WriteParams,
35683
35725
  async execute(_toolCallId, params, _signal, _onUpdate, extCtx) {
35684
35726
  const filePathArg = mutationFilePathArg(params);
@@ -35710,10 +35752,10 @@ PDFs aren't supported on the Pi harness yet.`, response);
35710
35752
  }
35711
35753
  if (surface.hoistEdit && ctx.hashlineEffective === true) {
35712
35754
  pi.registerTool({
35713
- name: "edit",
35714
- label: "edit",
35755
+ name: editName,
35756
+ label: editName,
35715
35757
  description: HASHLINE_EDIT_DESCRIPTION,
35716
- promptSnippet: "Apply a tagged hashline patch through the edit tool",
35758
+ promptSnippet: `Apply a tagged hashline patch through the ${editName} tool`,
35717
35759
  promptGuidelines: [
35718
35760
  "Read a file to obtain its current hashline tag before editing it.",
35719
35761
  "Pass exactly one patch string; paths and tags belong in patch section headers."
@@ -35745,13 +35787,13 @@ PDFs aren't supported on the Pi harness yet.`, response);
35745
35787
  }
35746
35788
  if (surface.hoistEdit && ctx.hashlineEffective !== true) {
35747
35789
  pi.registerTool(withPathAliasPreparation({
35748
- name: "edit",
35749
- label: "edit",
35790
+ name: editName,
35791
+ label: editName,
35750
35792
  description: "Edit part of a file via `appendContent`, batch `edits[]`, or symbol plus `content`. Batch `{ oldString, newString, replaceAll: true }` replaces every match. Provide exactly one mode per call: appendContent, edits[], or symbol plus content (mixing modes is rejected).",
35751
35793
  promptSnippet: "Partial file edits via appendContent, edits[], or symbol plus content (exactly one mode per call).",
35752
35794
  promptGuidelines: [
35753
- "Prefer edit over write when changing part of an existing file.",
35754
- "Use appendContent when adding text to the end of a file.",
35795
+ `Prefer ${editName} over ${writeName} when changing part of an existing file.`,
35796
+ `Use ${editName} with appendContent when adding text to the end of a file.`,
35755
35797
  "Use edits[] for multiple atomic changes in one file.",
35756
35798
  "Include enough surrounding context in an edits[] find/replace item to make the match unique, or set replaceAll/occurrence explicitly."
35757
35799
  ],
@@ -35793,11 +35835,11 @@ PDFs aren't supported on the Pi harness yet.`, response);
35793
35835
  }
35794
35836
  if (surface.hoistGrep) {
35795
35837
  pi.registerTool(withPathAliasPreparation({
35796
- name: "grep",
35797
- label: "grep",
35838
+ name: grepName,
35839
+ label: grepName,
35798
35840
  description: "Search for a regex pattern across files. Uses AFT's trigram index inside the project root for fast repeated queries, and falls back to ripgrep for paths outside the project root.",
35799
35841
  promptSnippet: "Fast regex search across files (trigram-indexed inside the project root)",
35800
- promptGuidelines: ["Prefer grep over bash-invoked find/rg for in-project searches."],
35842
+ promptGuidelines: [`Prefer ${grepName} over bash-invoked find/rg for in-project searches.`],
35801
35843
  parameters: GrepParams,
35802
35844
  async execute(_toolCallId, params, _signal, _onUpdate, extCtx) {
35803
35845
  const bridge = bridgeFor(ctx, extCtx.cwd);
@@ -35980,7 +36022,7 @@ ${summary2}${suffix}`);
35980
36022
  } catch {
35981
36023
  renderedDiff = diff;
35982
36024
  }
35983
- container.addChild(new Text2(renderedDiff, 1, 0));
36025
+ container.addChild(new Text2(normalizeTerminalText(renderedDiff), 1, 0));
35984
36026
  const rawPath = context.args && typeof context.args === "object" && typeof context.args.path === "string" ? context.args.path : undefined;
35985
36027
  const summaryPath = rawPath ? ` ${shortenPath3(rawPath)}` : "";
35986
36028
  const summary = `edited${summaryPath} (+${details?.additions ?? 0}/-${details?.deletions ?? 0})`;
@@ -36435,16 +36477,18 @@ function getBashSpawnHook(pi) {
36435
36477
  }
36436
36478
  return api2.hooks?.bashSpawn;
36437
36479
  }
36438
- function registerBashTool(pi, ctx, aftSearchRegistered = false) {
36480
+ function registerBashTool(pi, ctx, aftSearchRegistered = false, registeredName = "bash", registerCompanions = true) {
36439
36481
  const spawnHook = getBashSpawnHook(pi);
36440
- const searchSteer = aftSearchRegistered ? "use `aft_search` (concepts, identifiers, regex, literals), `read`, `aft_outline`, or `aft_zoom` instead" : "use the `grep` tool, `read`, `aft_outline`, or `aft_zoom` instead";
36482
+ const readToolName = registeredName === "bash" ? "read" : "aft_read";
36483
+ const grepToolName = registeredName === "bash" ? "grep" : "aft_grep";
36484
+ const searchSteer = aftSearchRegistered ? `use \`aft_search\` (concepts, identifiers, regex, literals), \`${readToolName}\`, \`aft_outline\`, or \`aft_zoom\` instead` : `use the \`${grepToolName}\` tool, \`${readToolName}\`, \`aft_outline\`, or \`aft_zoom\` instead`;
36441
36485
  const bashCfg = resolveBashConfig(ctx.config);
36442
36486
  let hostFallbackActive = false;
36443
36487
  const compressionSentence = bashCfg.compress ? " Output is compressed by default; pass `compressed: false` for raw output. Piped commands run verbatim and show the pipeline's output; for AFT's test/build summary, run the runner without `| head`, `| tail`, or `| grep`." : "";
36444
36488
  const tasksSentence = bashCfg.background ? ' Commands run in the foreground and return inline; `wait: true` blocks until a long command finishes instead of auto-promoting, but detaches to background if you send a new message — use it when you need the result before doing anything else; keep it off otherwise so auto-promote can remind you while you work. Use `background: true` yourself ONLY when you have other useful work to do while it runs; then `bash_watch` waits on the task (sync blocks until exit/pattern, async notifies) and `bash_status` peeks at it — never background a command and immediately `bash_watch` it (that wastes a turn for what foreground returns in one), and never loop `bash_status` to wait. `pty: true` runs interactive programs (REPLs, TUIs), implies background, and is driven with `bash_status({ output_mode: "screen" })` plus `bash_write`.' : " Commands run in the foreground to completion; `timeout` is the hard kill cap (default 30 minutes).";
36445
36489
  pi.registerTool({
36446
- name: "bash",
36447
- label: "bash",
36490
+ name: registeredName,
36491
+ label: registeredName,
36448
36492
  description: `Execute shell commands.${compressionSentence}${tasksSentence}
36449
36493
 
36450
36494
  DO NOT use bash for code search or code exploration. If you are about to run grep, rg, sed, awk, find, or cat through bash to locate or read code: STOP — ${searchSteer}.`,
@@ -36574,12 +36618,16 @@ DO NOT use bash for code search or code exploration. If you are about to run gre
36574
36618
  return renderBashResult(result, theme, context, options);
36575
36619
  }
36576
36620
  });
36577
- if (bashCfg.background) {
36578
- pi.registerTool(createBashStatusTool(ctx));
36579
- pi.registerTool(createBashWatchTool(ctx));
36580
- pi.registerTool(createBashWriteTool(ctx));
36581
- pi.registerTool(createBashKillTool(ctx));
36582
- }
36621
+ if (registerCompanions)
36622
+ registerBashCompanionTools(pi, ctx);
36623
+ }
36624
+ function registerBashCompanionTools(pi, ctx) {
36625
+ if (!resolveBashConfig(ctx.config).background)
36626
+ return;
36627
+ pi.registerTool(createBashStatusTool(ctx));
36628
+ pi.registerTool(createBashWatchTool(ctx));
36629
+ pi.registerTool(createBashWriteTool(ctx));
36630
+ pi.registerTool(createBashKillTool(ctx));
36583
36631
  }
36584
36632
  function withBashHints(output, command, aftSearchRegistered, projectRoot) {
36585
36633
  return maybeAppendGrepSearchHint(maybeAppendConflictsHint(output), command, aftSearchRegistered, projectRoot);
@@ -38702,12 +38750,15 @@ var ALL_ONLY_TOOLS = new Set(["aft_callgraph", "aft_delete", "aft_move", "aft_re
38702
38750
  function resolvePiToolSurface(config2) {
38703
38751
  const surface = config2.tool_surface ?? "recommended";
38704
38752
  const disabled = new Set(config2.disabled_tools ?? []);
38753
+ const hoistBuiltinTools = config2.hoist_builtin_tools !== false;
38705
38754
  const ok = (name) => !disabled.has(name);
38755
+ const builtinToolEnabled = (bareName) => ok(hoistBuiltinTools ? bareName : `aft_${bareName}`);
38706
38756
  const allOnly = (name) => ALL_ONLY_TOOLS.has(name) && ok(name);
38707
38757
  const restrictToProjectRoot = config2.restrict_to_project_root ?? false;
38708
38758
  if (surface === "minimal") {
38709
38759
  return {
38710
- hoistBash: ok("bash"),
38760
+ hoistBuiltinTools,
38761
+ hoistBash: builtinToolEnabled("bash"),
38711
38762
  hoistRead: false,
38712
38763
  hoistWrite: false,
38713
38764
  hoistEdit: false,
@@ -38729,11 +38780,12 @@ function resolvePiToolSurface(config2) {
38729
38780
  };
38730
38781
  }
38731
38782
  const base = {
38732
- hoistBash: ok("bash"),
38733
- hoistRead: ok("read"),
38734
- hoistWrite: ok("write"),
38735
- hoistEdit: ok("edit"),
38736
- hoistGrep: ok("grep") && config2.search_index === true,
38783
+ hoistBuiltinTools,
38784
+ hoistBash: builtinToolEnabled("bash"),
38785
+ hoistRead: builtinToolEnabled("read"),
38786
+ hoistWrite: builtinToolEnabled("write"),
38787
+ hoistEdit: builtinToolEnabled("edit"),
38788
+ hoistGrep: builtinToolEnabled("grep") && config2.search_index === true,
38737
38789
  restrictToProjectRoot,
38738
38790
  outline: ok("aft_outline"),
38739
38791
  zoom: ok("aft_zoom"),
@@ -38762,7 +38814,8 @@ function resolvePiToolSurface(config2) {
38762
38814
  }
38763
38815
  function registerPiToolSurface(pi, ctx, surface) {
38764
38816
  if (surface.hoistBash && resolveBashConfig(ctx.config).enabled) {
38765
- registerBashTool(pi, ctx, surface.semantic);
38817
+ registerBashTool(pi, ctx, surface.semantic, surface.hoistBuiltinTools ? "bash" : "aft_bash", false);
38818
+ registerBashCompanionTools(pi, ctx);
38766
38819
  }
38767
38820
  registerHoistedTools(pi, ctx, surface);
38768
38821
  if (surface.outline || surface.zoom) {
@@ -38873,6 +38926,9 @@ function buildHintsFromConfig(config2, absentTools, hoistBuiltins) {
38873
38926
  });
38874
38927
  }
38875
38928
  function registerWorkflowHints(pi, config2, surface) {
38929
+ const hoistBuiltins = surface.hoistBuiltinTools;
38930
+ const grepName = hoistBuiltins ? "grep" : "aft_grep";
38931
+ const bashName = hoistBuiltins ? "bash" : "aft_bash";
38876
38932
  const absent = new Set;
38877
38933
  if (!surface.outline)
38878
38934
  absent.add("aft_outline");
@@ -38885,12 +38941,12 @@ function registerWorkflowHints(pi, config2, surface) {
38885
38941
  if (!surface.inspect)
38886
38942
  absent.add("aft_inspect");
38887
38943
  if (!surface.hoistGrep)
38888
- absent.add("grep");
38944
+ absent.add(grepName);
38889
38945
  if (!surface.hoistBash) {
38890
- absent.add("bash");
38946
+ absent.add(bashName);
38891
38947
  absent.add("bash_status");
38892
38948
  }
38893
- const hintsBlock = buildHintsFromConfig(config2, absent, true);
38949
+ const hintsBlock = buildHintsFromConfig(config2, absent, hoistBuiltins);
38894
38950
  if (!hintsBlock)
38895
38951
  return;
38896
38952
  log2(`Workflow hints injected (${hintsBlock.length} chars)`);
@@ -38947,7 +39003,7 @@ var PLUGIN_VERSION = (() => {
38947
39003
  return "0.0.0";
38948
39004
  }
38949
39005
  })();
38950
- var ANNOUNCEMENT_VERSION = "0.52.2";
39006
+ var ANNOUNCEMENT_VERSION = "0.53.0";
38951
39007
  var ANNOUNCEMENT_FEATURES = [
38952
39008
  "Callgraph stays consistent under load: edits arriving mid-rebuild can no longer be silently lost from navigation results.",
38953
39009
  "aft_zoom handles real-world .jsonc: files with comment banners above the opening brace now resolve, and not-found errors point at the segment that actually failed (thanks @iceteaSA).",
@@ -27,12 +27,15 @@ export interface AftStatusSnapshot {
27
27
  project_root: string | null;
28
28
  canonical_root: string | null;
29
29
  cache_role: string;
30
+ degraded: boolean;
31
+ degraded_reasons: string[];
30
32
  features: {
31
33
  format_on_edit: boolean;
32
34
  validate_on_edit: string;
33
35
  restrict_to_project_root: boolean;
34
36
  search_index: boolean;
35
37
  semantic_search: boolean;
38
+ callgraph_store: boolean;
36
39
  };
37
40
  search_index: {
38
41
  status: string;
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/shared/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/shared/status.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
2
2
  import type { AftConfig } from "./config.js";
3
3
  import type { PluginContext } from "./types.js";
4
4
  export interface PiToolSurface {
5
+ /** Whether AFT replaces host-native tool names instead of registering aft_ alternatives. */
6
+ hoistBuiltinTools: boolean;
5
7
  hoistBash: boolean;
6
8
  hoistRead: boolean;
7
9
  hoistWrite: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registration.d.ts","sourceRoot":"","sources":["../src/tool-registration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAc7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,aAAa,CAgErE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,aAAa,GACrB,IAAI,CAkBN"}
1
+ {"version":3,"file":"tool-registration.d.ts","sourceRoot":"","sources":["../src/tool-registration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAc7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,4FAA4F;IAC5F,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,aAAa,CAqErE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,aAAa,GACrB,IAAI,CA2BN"}
@@ -1 +1 @@
1
- {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/tools/_shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/tools/_shared.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,16 @@ interface BashKillDetails {
55
55
  }
56
56
  interface BashWatchDetails extends Record<string, unknown> {
57
57
  }
58
- export declare function registerBashTool(pi: ExtensionAPI, ctx: PluginContext, aftSearchRegistered?: boolean): void;
58
+ /** Register AFT's primary bash tool under either the host or aft_ name. */
59
+ export declare function registerBashTool(pi: ExtensionAPI, ctx: PluginContext, aftSearchRegistered?: boolean, registeredName?: string, registerCompanions?: boolean): void;
60
+ /**
61
+ * Register controls for AFT-owned background task IDs.
62
+ *
63
+ * These names deliberately do not follow the primary bash tool's prefix: Pi's
64
+ * native bash cannot create or inspect AFT task IDs, so the controls do not
65
+ * replace host-native behavior and must stay discoverable for `aft_bash`.
66
+ */
67
+ export declare function registerBashCompanionTools(pi: ExtensionAPI, ctx: PluginContext): void;
59
68
  export declare function createBashStatusTool(ctx: PluginContext): {
60
69
  name: string;
61
70
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../src/tools/bash.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"diff-format.d.ts","sourceRoot":"","sources":["../../src/tools/diff-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,YAAY,SAAwB,GACnC,aAAa,CAsGf"}
1
+ {"version":3,"file":"diff-format.d.ts","sourceRoot":"","sources":["../../src/tools/diff-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,YAAY,SAAwB,GACnC,aAAa,CA2Gf"}
@@ -47,6 +47,8 @@ export declare function assertExternalDirectoryPermission(extCtx: {
47
47
  serverValidatedRead?: boolean;
48
48
  }): Promise<void>;
49
49
  export interface ToolSurfaceFlags {
50
+ /** True keeps AFT on host-native names; false registers aft_ alternatives. */
51
+ hoistBuiltinTools?: boolean;
50
52
  hoistRead: boolean;
51
53
  hoistWrite: boolean;
52
54
  hoistEdit: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"hoisted.d.ts","sourceRoot":"","sources":["../../src/tools/hoisted.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hoisted.d.ts","sourceRoot":"","sources":["../../src/tools/hoisted.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,13 @@ export interface RenderResultOptionsLike {
13
13
  expanded?: boolean;
14
14
  isPartial?: boolean;
15
15
  }
16
+ /**
17
+ * Remove carriage returns from strings that are about to be rendered in Pi's
18
+ * terminal. A CRLF line ending is two characters in a string, but the terminal
19
+ * interprets the carriage return as "move to column zero"; if it survives in a
20
+ * rendered line, later text can overprint it while the TUI still reserves the row.
21
+ */
22
+ export declare function normalizeTerminalText(text: string): string;
16
23
  export declare function reuseText(last: Component | undefined): Text;
17
24
  export declare function reuseContainer(last: Component | undefined): Container;
18
25
  export declare function shortenPath(path: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"render-helpers.d.ts","sourceRoot":"","sources":["../../src/tools/render-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-helpers.d.ts","sourceRoot":"","sources":["../../src/tools/render-helpers.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ interface ToolSurfaceFlags {
17
17
  semantic: boolean;
18
18
  navigate: boolean;
19
19
  inspect: boolean;
20
+ hoistBuiltinTools: boolean;
20
21
  hoistGrep: boolean;
21
22
  hoistBash: boolean;
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-hints.d.ts","sourceRoot":"","sources":["../src/workflow-hints.ts"],"names":[],"mappings":"AAMA,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,CA4GzE;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,aAAa,EAAE,OAAO,GACrB,MAAM,GAAG,IAAI,CAYf;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"}
1
+ {"version":3,"file":"workflow-hints.d.ts","sourceRoot":"","sources":["../src/workflow-hints.ts"],"names":[],"mappings":"AAMA,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,CA2GzE;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,aAAa,EAAE,OAAO,GACrB,MAAM,GAAG,IAAI,CAYf;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,iBAAiB,EAAE,OAAO,CAAC;IAC3B,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,CAmCN"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexkit/aft-pi",
3
- "version": "0.52.2",
3
+ "version": "0.53.0",
4
4
  "type": "module",
5
5
  "description": "Pi coding agent extension for Agent File Tools (AFT) — tree-sitter and LSP-powered code analysis",
6
6
  "main": "dist/index.js",
@@ -23,19 +23,19 @@
23
23
  "test:unit": "bun test src/__tests__ --path-ignore-patterns 'src/__tests__/e2e/**'"
24
24
  },
25
25
  "dependencies": {
26
- "@cortexkit/aft-bridge": "0.52.2",
26
+ "@cortexkit/aft-bridge": "0.53.0",
27
27
  "comment-json": "^5.0.0",
28
28
  "diff": "^8.0.4",
29
29
  "typebox": "1.1.38",
30
30
  "zod": "^4.4.3"
31
31
  },
32
32
  "optionalDependencies": {
33
- "@cortexkit/aft-darwin-arm64": "0.52.2",
34
- "@cortexkit/aft-darwin-x64": "0.52.2",
35
- "@cortexkit/aft-linux-arm64": "0.52.2",
36
- "@cortexkit/aft-linux-x64": "0.52.2",
37
- "@cortexkit/aft-win32-arm64": "0.52.2",
38
- "@cortexkit/aft-win32-x64": "0.52.2"
33
+ "@cortexkit/aft-darwin-arm64": "0.53.0",
34
+ "@cortexkit/aft-darwin-x64": "0.53.0",
35
+ "@cortexkit/aft-linux-arm64": "0.53.0",
36
+ "@cortexkit/aft-linux-x64": "0.53.0",
37
+ "@cortexkit/aft-win32-arm64": "0.53.0",
38
+ "@cortexkit/aft-win32-x64": "0.53.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@earendil-works/pi-coding-agent": "^0.80.2",