@cortexkit/aft-pi 0.52.0 → 0.52.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.js CHANGED
@@ -12482,6 +12482,8 @@ var AFT_MODULE_ID = "aft";
12482
12482
  var MAX_CONSECUTIVE_TRANSPORT_FAILURES = 3;
12483
12483
  var RECONNECT_RETRY_FLOOR_MS = 100;
12484
12484
  var RECONNECT_RETRY_CAP_MS = 2000;
12485
+ var ROUTE_OPEN_RELOAD_WAIT_CAP_MS = 15000;
12486
+ var ROUTE_OPEN_RELOAD_WAIT_EXHAUSTED_SUFFIX = " The AFT daemon module did not return within the 15s reload window.";
12485
12487
  var BG_STABLE_MS = 5000;
12486
12488
  function reconnectBackoffMs(attempt) {
12487
12489
  return Math.min(RECONNECT_RETRY_FLOOR_MS * 2 ** Math.min(attempt, 6), RECONNECT_RETRY_CAP_MS);
@@ -12790,6 +12792,15 @@ function isAbsentRootRouteError(err) {
12790
12792
  function absentRootError(root) {
12791
12793
  return new SubcError(`invalid route project root: project root does not exist: ${root}`, "config_divergence");
12792
12794
  }
12795
+ function reloadWindowExhaustedError(error2) {
12796
+ if (error2 instanceof Error) {
12797
+ try {
12798
+ error2.message += ROUTE_OPEN_RELOAD_WAIT_EXHAUSTED_SUFFIX;
12799
+ return error2;
12800
+ } catch {}
12801
+ }
12802
+ return new Error(`${String(error2)}${ROUTE_OPEN_RELOAD_WAIT_EXHAUSTED_SUFFIX}`);
12803
+ }
12793
12804
  function safeCloseRoute(client, route) {
12794
12805
  try {
12795
12806
  client.closeRouteChannel(route).catch(() => {
@@ -12914,6 +12925,7 @@ class SubcTransportPool {
12914
12925
  connecting = null;
12915
12926
  routeReopenRetryDelayMs = RECONNECT_RETRY_FLOOR_MS;
12916
12927
  routeReopenRetry = null;
12928
+ routeReopenRetryMs = null;
12917
12929
  sessions = new Map;
12918
12930
  rootIndex = new Map;
12919
12931
  dormantRoots = new Map;
@@ -13387,6 +13399,23 @@ class SubcTransportPool {
13387
13399
  throw error2;
13388
13400
  }
13389
13401
  };
13402
+ const openRouteAfterReloadWindow = async () => {
13403
+ let reloadWaitedMs = 0;
13404
+ while (true) {
13405
+ try {
13406
+ return await openRoute();
13407
+ } catch (error2) {
13408
+ if (!isRouteOpenReloadWindowError(error2))
13409
+ throw error2;
13410
+ const { delayMs, wait } = this.waitForRouteReopenBackoff();
13411
+ if (reloadWaitedMs + delayMs > ROUTE_OPEN_RELOAD_WAIT_CAP_MS) {
13412
+ throw reloadWindowExhaustedError(error2);
13413
+ }
13414
+ reloadWaitedMs += delayMs;
13415
+ await wait;
13416
+ }
13417
+ }
13418
+ };
13390
13419
  const clearRouteEntry = (entry) => {
13391
13420
  if (record.routeEntry !== entry)
13392
13421
  return;
@@ -13423,7 +13452,7 @@ class SubcTransportPool {
13423
13452
  this.ensureBgSubscription(identity, record);
13424
13453
  return reply;
13425
13454
  };
13426
- let routeAndEntry = await openRoute();
13455
+ let routeAndEntry = await openRouteAfterReloadWindow();
13427
13456
  try {
13428
13457
  return await requestOnRoute(routeAndEntry.route);
13429
13458
  } catch (error2) {
@@ -13431,8 +13460,8 @@ class SubcTransportPool {
13431
13460
  throw this.annotateReapError(error2, record);
13432
13461
  if (isRouteProvenAbsentError(error2) && this.isCurrentSession(key, record) && this.client === client) {
13433
13462
  clearRouteEntry(routeAndEntry.entry);
13434
- await this.waitForRouteReopenBackoff();
13435
- routeAndEntry = await openRoute();
13463
+ await this.waitForRouteReopenBackoff().wait;
13464
+ routeAndEntry = await openRouteAfterReloadWindow();
13436
13465
  try {
13437
13466
  const reply = await requestOnRoute(routeAndEntry.route);
13438
13467
  this.resetRouteReopenBackoff();
@@ -13458,17 +13487,21 @@ class SubcTransportPool {
13458
13487
  }
13459
13488
  waitForRouteReopenBackoff() {
13460
13489
  const pending = this.routeReopenRetry;
13461
- if (pending)
13462
- return pending;
13463
- const delay = this.routeReopenRetryDelayMs;
13464
- this.routeReopenRetryDelayMs = Math.min(delay * 2, RECONNECT_RETRY_CAP_MS);
13490
+ const pendingDelay = this.routeReopenRetryMs;
13491
+ if (pending && pendingDelay !== null)
13492
+ return { delayMs: pendingDelay, wait: pending };
13493
+ const delayMs = this.routeReopenRetryDelayMs;
13494
+ this.routeReopenRetryDelayMs = Math.min(delayMs * 2, RECONNECT_RETRY_CAP_MS);
13465
13495
  let retry;
13466
- retry = Promise.resolve().then(() => this.routeRetrySleep(delay)).finally(() => {
13467
- if (this.routeReopenRetry === retry)
13496
+ retry = Promise.resolve().then(() => this.routeRetrySleep(delayMs)).finally(() => {
13497
+ if (this.routeReopenRetry === retry) {
13468
13498
  this.routeReopenRetry = null;
13499
+ this.routeReopenRetryMs = null;
13500
+ }
13469
13501
  });
13470
13502
  this.routeReopenRetry = retry;
13471
- return retry;
13503
+ this.routeReopenRetryMs = delayMs;
13504
+ return { delayMs, wait: retry };
13472
13505
  }
13473
13506
  resetRouteReopenBackoff() {
13474
13507
  this.routeReopenRetryDelayMs = RECONNECT_RETRY_FLOOR_MS;
@@ -13755,6 +13788,12 @@ function isRouteGoodbyeError(error2) {
13755
13788
  }
13756
13789
  return error2.code === "route_closed" && error2.message.includes("route closed by subc");
13757
13790
  }
13791
+ function isRouteOpenReloadWindowError(error2) {
13792
+ if (error2 === null || typeof error2 !== "object")
13793
+ return false;
13794
+ const code = error2.code;
13795
+ return code === "module_reloading" || code === "module_warming" || code === "target_unavailable";
13796
+ }
13758
13797
  function hasEngineResponse(error2) {
13759
13798
  const response = error2.response;
13760
13799
  if (response !== null && typeof response === "object")
@@ -14086,7 +14125,16 @@ function platformKey(platform = process.platform, arch = process.arch) {
14086
14125
  }
14087
14126
  return key;
14088
14127
  }
14128
+ function logBinaryResolution(resolution) {
14129
+ log(`Resolved binary from ${resolution.source}: ${resolution.path}`);
14130
+ }
14089
14131
  function findBinarySync(expectedVersion) {
14132
+ const resolution = findBinarySyncInner(expectedVersion);
14133
+ if (resolution)
14134
+ logBinaryResolution(resolution);
14135
+ return resolution?.path ?? null;
14136
+ }
14137
+ function findBinarySyncInner(expectedVersion) {
14090
14138
  const ext = process.platform === "win32" ? ".exe" : "";
14091
14139
  const env = { ...process.env };
14092
14140
  const pluginVersion = expectedVersion ?? (() => {
@@ -14100,8 +14148,9 @@ function findBinarySync(expectedVersion) {
14100
14148
  if (pluginVersion) {
14101
14149
  const tag = pluginVersion.startsWith("v") ? pluginVersion : `v${pluginVersion}`;
14102
14150
  const versionCached = cachedBinaryPathFromEnv(tag, env, ext);
14103
- if (versionCached && isExpectedCachedBinary2(versionCached, pluginVersion))
14104
- return versionCached;
14151
+ if (versionCached && isExpectedCachedBinary2(versionCached, pluginVersion)) {
14152
+ return { path: versionCached, source: "versioned cache" };
14153
+ }
14105
14154
  }
14106
14155
  try {
14107
14156
  const key = platformKey();
@@ -14116,7 +14165,7 @@ function findBinarySync(expectedVersion) {
14116
14165
  warn(`npm platform package binary v${npmVersion} does not match plugin v${pluginVersion}; skipping (continuing to PATH lookup)`);
14117
14166
  } else {
14118
14167
  const copied = copyToVersionedCache(resolved, npmVersion);
14119
- return copied ?? resolved;
14168
+ return { path: copied ?? resolved, source: "npm platform package" };
14120
14169
  }
14121
14170
  }
14122
14171
  } catch {}
@@ -14134,27 +14183,28 @@ function findBinarySync(expectedVersion) {
14134
14183
  }
14135
14184
  const usable = probeBinaryCandidate(candidate, "PATH", expectedVersion);
14136
14185
  if (usable)
14137
- return usable;
14186
+ return { path: usable, source: "PATH" };
14138
14187
  }
14139
14188
  } catch {}
14140
14189
  const cargoPath = join7(homeDirFromEnv(env), ".cargo", "bin", `aft${ext}`);
14141
14190
  if (existsSync5(cargoPath)) {
14142
14191
  const usable = probeBinaryCandidate(cargoPath, "cargo", expectedVersion);
14143
14192
  if (usable)
14144
- return usable;
14193
+ return { path: usable, source: "cargo" };
14145
14194
  }
14146
14195
  return null;
14147
14196
  }
14148
14197
  async function findBinary(expectedVersion) {
14149
14198
  const syncResult = findBinarySync(expectedVersion);
14150
14199
  if (syncResult) {
14151
- log(`Resolved binary: ${syncResult}`);
14152
14200
  return syncResult;
14153
14201
  }
14154
14202
  log("Binary not found locally, attempting auto-download...");
14155
14203
  const downloaded = await ensureBinaryForResolver(expectedVersion);
14156
- if (downloaded)
14204
+ if (downloaded) {
14205
+ logBinaryResolution({ path: downloaded, source: "auto-download" });
14157
14206
  return downloaded;
14207
+ }
14158
14208
  throw new Error([
14159
14209
  "Could not find the `aft` binary.",
14160
14210
  "",
@@ -17393,7 +17443,7 @@ import {
17393
17443
  // package.json
17394
17444
  var package_default = {
17395
17445
  name: "@cortexkit/aft-pi",
17396
- version: "0.52.0",
17446
+ version: "0.52.1",
17397
17447
  type: "module",
17398
17448
  description: "Pi coding agent extension for Agent File Tools (AFT) — tree-sitter and LSP-powered code analysis",
17399
17449
  main: "dist/index.js",
@@ -17416,19 +17466,19 @@ var package_default = {
17416
17466
  "test:unit": "bun test src/__tests__ --path-ignore-patterns 'src/__tests__/e2e/**'"
17417
17467
  },
17418
17468
  dependencies: {
17419
- "@cortexkit/aft-bridge": "0.52.0",
17469
+ "@cortexkit/aft-bridge": "0.52.1",
17420
17470
  "comment-json": "^5.0.0",
17421
17471
  diff: "^8.0.4",
17422
17472
  typebox: "1.1.38",
17423
17473
  zod: "^4.4.3"
17424
17474
  },
17425
17475
  optionalDependencies: {
17426
- "@cortexkit/aft-darwin-arm64": "0.52.0",
17427
- "@cortexkit/aft-darwin-x64": "0.52.0",
17428
- "@cortexkit/aft-linux-arm64": "0.52.0",
17429
- "@cortexkit/aft-linux-x64": "0.52.0",
17430
- "@cortexkit/aft-win32-arm64": "0.52.0",
17431
- "@cortexkit/aft-win32-x64": "0.52.0"
17476
+ "@cortexkit/aft-darwin-arm64": "0.52.1",
17477
+ "@cortexkit/aft-darwin-x64": "0.52.1",
17478
+ "@cortexkit/aft-linux-arm64": "0.52.1",
17479
+ "@cortexkit/aft-linux-x64": "0.52.1",
17480
+ "@cortexkit/aft-win32-arm64": "0.52.1",
17481
+ "@cortexkit/aft-win32-x64": "0.52.1"
17432
17482
  },
17433
17483
  devDependencies: {
17434
17484
  "@earendil-works/pi-coding-agent": "^0.80.2",
@@ -35240,6 +35290,7 @@ var HASHLINE_EDIT_DESCRIPTION = [
35240
35290
  "",
35241
35291
  "Quick reference:",
35242
35292
  "- Header: `[path#TAG]`; TAG is exactly four hexadecimal digits from a current tagged read. Read every addressed row and gap boundary; REM and MV require a whole-file tagged read. Re-read after an edit before chaining: an edit-response tag can retain only changed context.",
35293
+ "- Same canonical path: multiple sections compose in patch order against pre-request coordinates.",
35243
35294
  "- Addresses: `0` (BOF), `N` (one line), `N.=M` (range; `N..=M`/`N..M` also work), `<N`/`>N` (gap before/after), `N*`/`<N*`/`>N*` (block), and `$`/`$-K` (EOF-relative). A plain `N` PUT replaces; use `<N` or `>N` to insert.",
35244
35295
  "- PUT text: `PUT <address>:` followed by one or more `+` body rows (`+` alone is blank). A final patch newline is allowed. PUT without `:` copies `@name` (or the anonymous register) and takes no body; names use `@` plus ASCII letters, digits, `_`, or `-`.",
35245
35296
  "- CUT: `CUT <address> [@name]`. REM: bare `REM` only, removing the whole file. MV: `MV <destination>` (one whitespace-free path, optional matching quotes), once and after any line operations. `*** Begin Patch`/`*** End Patch` is an optional envelope."
@@ -38727,7 +38778,7 @@ var PLUGIN_VERSION = (() => {
38727
38778
  return "0.0.0";
38728
38779
  }
38729
38780
  })();
38730
- var ANNOUNCEMENT_VERSION = "0.52.0";
38781
+ var ANNOUNCEMENT_VERSION = "0.52.1";
38731
38782
  var ANNOUNCEMENT_FEATURES = [
38732
38783
  "Callgraph stays consistent under load: edits arriving mid-rebuild can no longer be silently lost from navigation results.",
38733
38784
  "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).",
@@ -1 +1 @@
1
- {"version":3,"file":"hoisted.d.ts","sourceRoot":"","sources":["../../src/tools/hoisted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAEjB,KAAK,KAAK,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,SAAS,EAAE,SAAS,EAAU,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAyDjD;;;;GAIG;AACH,UAAU,iBAAiB;IACzB,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;CAClB;AAuFD;;;;;;;;;GASG;AACH,wBAAsB,iCAAiC,CACrD,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/E,OAAO,CAAC,IAAI,CAAC,CA6Bf;AA2HD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,kEAAkE;AAClE,UAAU,mBAAmB;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA8ED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAySN;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,eAAe,CAAC,mBAAmB,CAAC,CAmFtC;AAuED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,GAAG,MAAM,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,GACzB,IAAI,CAON;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,GACzB,SAAS,GAAG,IAAI,CAmDlB;AAQD;6BAC6B;AAC7B,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA0B3D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,mBAAmB,EAAE,OAAO,EAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAER"}
1
+ {"version":3,"file":"hoisted.d.ts","sourceRoot":"","sources":["../../src/tools/hoisted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAEjB,KAAK,KAAK,EACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,SAAS,EAAE,SAAS,EAAU,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAyDjD;;;;GAIG;AACH,UAAU,iBAAiB;IACzB,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;CAClB;AAuFD;;;;;;;;;GASG;AACH,wBAAsB,iCAAiC,CACrD,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/E,OAAO,CAAC,IAAI,CAAC,CA6Bf;AA4HD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,kEAAkE;AAClE,UAAU,mBAAmB;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA8ED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAySN;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,eAAe,CAAC,mBAAmB,CAAC,CAmFtC;AAuED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,GAAG,MAAM,EAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,GACzB,IAAI,CAON;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,GACzB,SAAS,GAAG,IAAI,CAmDlB;AAQD;6BAC6B;AAC7B,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA0B3D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,mBAAmB,EAAE,OAAO,EAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAER"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexkit/aft-pi",
3
- "version": "0.52.0",
3
+ "version": "0.52.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,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.0",
26
+ "@cortexkit/aft-bridge": "0.52.1",
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.0",
34
- "@cortexkit/aft-darwin-x64": "0.52.0",
35
- "@cortexkit/aft-linux-arm64": "0.52.0",
36
- "@cortexkit/aft-linux-x64": "0.52.0",
37
- "@cortexkit/aft-win32-arm64": "0.52.0",
38
- "@cortexkit/aft-win32-x64": "0.52.0"
33
+ "@cortexkit/aft-darwin-arm64": "0.52.1",
34
+ "@cortexkit/aft-darwin-x64": "0.52.1",
35
+ "@cortexkit/aft-linux-arm64": "0.52.1",
36
+ "@cortexkit/aft-linux-x64": "0.52.1",
37
+ "@cortexkit/aft-win32-arm64": "0.52.1",
38
+ "@cortexkit/aft-win32-x64": "0.52.1"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@earendil-works/pi-coding-agent": "^0.80.2",