@cortexkit/aft 0.48.1 → 0.49.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":"doctor-filters.d.ts","sourceRoot":"","sources":["../../src/commands/doctor-filters.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAO,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,eAAe,CAAC;IACtC,UAAU,CAAC,EAAE,OAAO,aAAa,CAAC;IAClC,eAAe,CAAC,EAAE,OAAO,yBAAyB,CAAC;IACnD,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EACF,SAAS,GACT,MAAM,GACN,SAAS,GACT,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AASD,wBAAgB,sBAAsB,IAAI,IAAI,CAW7C;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DrF;AAmHD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,SAAgB,GAC1B,MAAM,CA4BR;AA2BD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE,MAAM,EACZ,WAAW,SAAgB,GAC1B,MAAM,GAAG,IAAI,CAmBf;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAE7D"}
1
+ {"version":3,"file":"doctor-filters.d.ts","sourceRoot":"","sources":["../../src/commands/doctor-filters.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAO,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,eAAe,CAAC;IACtC,UAAU,CAAC,EAAE,OAAO,aAAa,CAAC;IAClC,eAAe,CAAC,EAAE,OAAO,yBAAyB,CAAC;IACnD,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EACF,SAAS,GACT,MAAM,GACN,SAAS,GACT,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AASD,wBAAgB,sBAAsB,IAAI,IAAI,CAW7C;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DrF;AAmHD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,SAAgB,GAC1B,MAAM,CA4BR;AA2BD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,mBAAmB,EAC7B,IAAI,EAAE,MAAM,EACZ,WAAW,SAAgB,GAC1B,MAAM,GAAG,IAAI,CAmBf;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAE7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D,OAAO,EAEL,KAAK,gBAAgB,EAKtB,MAAM,uBAAuB,CAAC;AAe/B,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AAOvE,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,WAAW,GAAG,cAAc,CAAC;AAE9E,eAAO,MAAM,2BAA2B,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,EAapF,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,iBAAiB,EAAqB,CAAC;AAEhF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,MAAM,WAAW,CAAC;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAyIvE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAOnE;AA4BD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAgD5B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,IAAI,sBAAsB,CAsDzD;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC5E,OAAO,EAAE,MAAM,CAAC;CACjB;AA2ID,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,EAAE,EAC1B,MAAM,EAAE,gBAAgB,GACvB,iBAAiB,EAAE,CAqFrB;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAIvE;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAK9F;AAyKD,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAQ1F;AAsGD,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhF;AAmFD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../../src/commands/lsp.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAKrE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,cAAc,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,eAAe,CAAC;IACtC,UAAU,CAAC,EAAE,OAAO,aAAa,CAAC;IAClC,eAAe,CAAC,EAAE,OAAO,yBAAyB,CAAC;CACpD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;IAC9B,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,iBAAiB,GAAG,sBAAsB,GAAG,WAAW,GAAG,MAAM,CAAC;IAC1F,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAkBD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAAsB,GAClC,MAAM,CAoBR;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkE7E;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAwD3F;AA2FD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAapF"}
1
+ {"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../../src/commands/lsp.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAKrE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,cAAc,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,eAAe,CAAC;IACtC,UAAU,CAAC,EAAE,OAAO,aAAa,CAAC;IAClC,eAAe,CAAC,EAAE,OAAO,yBAAyB,CAAC;CACpD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;IAC9B,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,iBAAiB,GAAG,sBAAsB,GAAG,WAAW,GAAG,MAAM,CAAC;IAC1F,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAkBD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAAsB,GAClC,MAAM,CAoBR;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkE7E;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAwD3F;AA2FD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAapF"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAKA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2E9D"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAMA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2E9D"}
package/dist/index.d.ts CHANGED
@@ -6,8 +6,5 @@
6
6
  * (OpenCode, Pi) is auto-detected from installed config paths; explicit
7
7
  * `--harness <name>` overrides detection.
8
8
  */
9
- declare const command: string;
10
- declare const args: string[];
11
- declare function printHelp(): void;
12
- declare function main(): Promise<number>;
9
+ export {};
13
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,QAAA,MAAM,OAAO,QAAkB,CAAC;AAChC,QAAA,MAAM,IAAI,UAAwB,CAAC;AAEnC,iBAAS,SAAS,IAAI,IAAI,CA0BzB;AAED,iBAAe,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CA2BrC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
package/dist/index.js CHANGED
@@ -46,6 +46,9 @@ var __export = (target, all) => {
46
46
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
47
47
  var __promiseAll = (args) => Promise.all(args);
48
48
 
49
+ // src/lib/cli.ts
50
+ var CLI = "npx @cortexkit/aft";
51
+
49
52
  // ../aft-bridge/dist/active-logger.js
50
53
  function loggerGlobal() {
51
54
  return globalThis;
@@ -141,6 +144,7 @@ function sleep(ms) {
141
144
  }
142
145
 
143
146
  // ../aft-bridge/dist/bash-hints.js
147
+ import * as fs from "node:fs";
144
148
  import * as os from "node:os";
145
149
  import * as path from "node:path";
146
150
  function maybeAppendConflictsHint(output) {
@@ -214,12 +218,19 @@ function shouldSuppressGrepSearchHint(command, projectRoot) {
214
218
  const operands = collectPathOperands(firstStage, firstToken.end);
215
219
  if (operands.length === 0)
216
220
  return false;
221
+ let sawInProjectOperand = false;
217
222
  for (const operand of operands) {
218
223
  if (isDynamicPathOperand(operand))
219
224
  continue;
220
- if (isPathInsideProject(resolvedRoot, effectiveCwd, operand))
221
- return false;
225
+ const resolvedOperand = resolvePathOperand(effectiveCwd, operand);
226
+ if (!isPathInsideProject(resolvedRoot, effectiveCwd, operand))
227
+ continue;
228
+ sawInProjectOperand = true;
229
+ if (shouldSuppressResolvedPath(resolvedOperand))
230
+ return true;
222
231
  }
232
+ if (sawInProjectOperand)
233
+ return false;
223
234
  }
224
235
  return sawCodeSearchStatement;
225
236
  }
@@ -318,6 +329,17 @@ function isPathInsideProject(resolvedRoot, baseCwd, operand) {
318
329
  const rel = path.relative(resolvedRoot, resolved);
319
330
  return rel === "" || !rel.startsWith("..") && !path.isAbsolute(rel);
320
331
  }
332
+ function shouldSuppressResolvedPath(resolved) {
333
+ try {
334
+ const stats = fs.statSync(resolved);
335
+ if (stats.isFile())
336
+ return true;
337
+ const ageMs = Date.now() - stats.mtimeMs;
338
+ return ageMs >= 0 && ageMs < GREP_SEARCH_FRESHNESS_WINDOW_MS;
339
+ } catch {
340
+ return false;
341
+ }
342
+ }
321
343
  function splitTopLevelStatements(command) {
322
344
  const statements = [];
323
345
  let start = 0;
@@ -490,7 +512,7 @@ function skipSpaces(input, start) {
490
512
  }
491
513
  var CONFLICT_HINT = `
492
514
 
493
- [Hint] Use aft_conflicts to see all conflict regions across files in a single call.`, GREP_SEARCH_AFT_SEARCH_HINT = "DO NOT search code by running grep/rg in bash — it is unindexed, unranked, and serial. Use the `aft_search` tool instead (it auto-routes concepts, identifiers, regex, and literals).", GREP_SEARCH_GREP_HINT = "DO NOT search code by running grep/rg in bash — it is unindexed, unranked, and serial. Use the `grep` tool instead (indexed and ranked).", GREP_SEARCH_HINT_PREFIX = "DO NOT search code by running grep/rg in bash —";
515
+ [Hint] Use aft_conflicts to see all conflict regions across files in a single call.`, GREP_SEARCH_AFT_SEARCH_HINT = "DO NOT search code by running grep/rg in bash — it is unindexed, unranked, and serial. Use the `aft_search` tool instead (it auto-routes concepts, identifiers, regex, and literals).", GREP_SEARCH_GREP_HINT = "DO NOT search code by running grep/rg in bash — it is unindexed, unranked, and serial. Use the `grep` tool instead (indexed and ranked).", GREP_SEARCH_HINT_PREFIX = "DO NOT search code by running grep/rg in bash —", GREP_SEARCH_FRESHNESS_WINDOW_MS = 60000;
494
516
  var init_bash_hints = () => {};
495
517
 
496
518
  // ../aft-bridge/dist/bash-timeout.js
@@ -1970,7 +1992,7 @@ var init_platform = __esm(() => {
1970
1992
  // ../aft-bridge/dist/downloader.js
1971
1993
  import { spawnSync } from "node:child_process";
1972
1994
  import { createHash as createHash2, randomUUID } from "node:crypto";
1973
- import { chmodSync, closeSync, copyFileSync, createWriteStream, existsSync as existsSync2, mkdirSync, openSync, readFileSync as readFileSync3, renameSync, rmSync, statSync, unlinkSync, writeSync } from "node:fs";
1995
+ import { chmodSync, closeSync, copyFileSync, createWriteStream, existsSync as existsSync2, mkdirSync, openSync, readFileSync as readFileSync3, renameSync, rmSync, statSync as statSync2, unlinkSync, writeSync } from "node:fs";
1974
1996
  import { homedir as homedir4 } from "node:os";
1975
1997
  import { join as join3 } from "node:path";
1976
1998
  import { Readable } from "node:stream";
@@ -1980,7 +2002,7 @@ function readBinaryVersion(binaryPath) {
1980
2002
  const result = spawnSync(binaryPath, ["--version"], {
1981
2003
  encoding: "utf-8",
1982
2004
  stdio: ["pipe", "pipe", "pipe"],
1983
- timeout: 5000
2005
+ timeout: 60000
1984
2006
  });
1985
2007
  const stdoutVersion = result.stdout?.trim();
1986
2008
  const stderrVersion = result.stderr?.trim();
@@ -2185,7 +2207,7 @@ async function acquireDownloadLock(lockPath) {
2185
2207
  if (code !== "EEXIST")
2186
2208
  throw err;
2187
2209
  try {
2188
- const ageMs = Date.now() - statSync(lockPath).mtimeMs;
2210
+ const ageMs = Date.now() - statSync2(lockPath).mtimeMs;
2189
2211
  if (ageMs > DOWNLOAD_LOCK_STALE_MS) {
2190
2212
  rmSync(lockPath, { force: true });
2191
2213
  continue;
@@ -2400,6 +2422,27 @@ ${reflowText}`;
2400
2422
  return " Auto-formatted.";
2401
2423
  }
2402
2424
 
2425
+ // ../aft-bridge/dist/error-contract.js
2426
+ function toolErrorFromResponse(command, response) {
2427
+ const code = typeof response.code === "string" && response.code.length > 0 ? response.code : "unknown_error";
2428
+ const message = typeof response.message === "string" && response.message.length > 0 ? response.message : `${command} failed`;
2429
+ return new AftToolError(message, code, response);
2430
+ }
2431
+ var AftToolError;
2432
+ var init_error_contract = __esm(() => {
2433
+ AftToolError = class AftToolError extends Error {
2434
+ code;
2435
+ response;
2436
+ constructor(message, code, response) {
2437
+ const cause = { code, message, response };
2438
+ super(message, { cause });
2439
+ this.name = "AftToolError";
2440
+ this.code = code;
2441
+ this.response = response;
2442
+ }
2443
+ };
2444
+ });
2445
+
2403
2446
  // ../aft-bridge/dist/format.js
2404
2447
  function formatTokenCount(n) {
2405
2448
  if (!Number.isFinite(n) || n < 0)
@@ -2803,7 +2846,7 @@ var init_resolver = __esm(() => {
2803
2846
 
2804
2847
  // ../aft-bridge/dist/migration.js
2805
2848
  import { spawnSync as spawnSync2 } from "node:child_process";
2806
- import { closeSync as closeSync3, existsSync as existsSync5, mkdirSync as mkdirSync4, openSync as openSync3, readFileSync as readFileSync5, renameSync as renameSync4, rmSync as rmSync2, statSync as statSync2, unlinkSync as unlinkSync3, writeFileSync as writeFileSync2 } from "node:fs";
2849
+ import { closeSync as closeSync3, existsSync as existsSync5, mkdirSync as mkdirSync4, openSync as openSync3, readFileSync as readFileSync5, renameSync as renameSync4, rmSync as rmSync2, statSync as statSync3, unlinkSync as unlinkSync3, writeFileSync as writeFileSync2 } from "node:fs";
2807
2850
  import { homedir as homedir8, tmpdir } from "node:os";
2808
2851
  import { basename, dirname as dirname3, join as join7, resolve as resolve4 } from "node:path";
2809
2852
  function dataHome2() {
@@ -2940,7 +2983,7 @@ function acquireConfigMigrationLock(lockDir) {
2940
2983
  if (code !== "EEXIST")
2941
2984
  throw err;
2942
2985
  try {
2943
- const ageMs = Date.now() - statSync2(lockDir).mtimeMs;
2986
+ const ageMs = Date.now() - statSync3(lockDir).mtimeMs;
2944
2987
  if (ageMs > 60000) {
2945
2988
  rmSync2(lockDir, { recursive: true, force: true });
2946
2989
  continue;
@@ -3263,7 +3306,7 @@ var init_migration = __esm(() => {
3263
3306
 
3264
3307
  // ../aft-bridge/dist/npm-resolver.js
3265
3308
  import { execFileSync } from "node:child_process";
3266
- import { readdirSync, statSync as statSync3 } from "node:fs";
3309
+ import { readdirSync, statSync as statSync4 } from "node:fs";
3267
3310
  import { homedir as homedir9 } from "node:os";
3268
3311
  import { delimiter, dirname as dirname4, isAbsolute as isAbsolute3, join as join8 } from "node:path";
3269
3312
  function defaultDeps() {
@@ -3279,7 +3322,7 @@ function npmBinaryName(platform) {
3279
3322
  }
3280
3323
  function isFile(p) {
3281
3324
  try {
3282
- return statSync3(p).isFile();
3325
+ return statSync4(p).isFile();
3283
3326
  } catch {
3284
3327
  return false;
3285
3328
  }
@@ -3398,7 +3441,7 @@ var init_npm_resolver = () => {};
3398
3441
  // ../aft-bridge/dist/onnx-runtime.js
3399
3442
  import { execFileSync as execFileSync2 } from "node:child_process";
3400
3443
  import { createHash as createHash3 } from "node:crypto";
3401
- import { chmodSync as chmodSync3, closeSync as closeSync4, copyFileSync as copyFileSync3, createWriteStream as createWriteStream2, existsSync as existsSync6, lstatSync, mkdirSync as mkdirSync5, openSync as openSync4, readdirSync as readdirSync2, readFileSync as readFileSync6, readlinkSync, realpathSync, rmSync as rmSync3, statSync as statSync4, symlinkSync, unlinkSync as unlinkSync4, writeFileSync as writeFileSync3 } from "node:fs";
3444
+ import { chmodSync as chmodSync3, closeSync as closeSync4, copyFileSync as copyFileSync3, createWriteStream as createWriteStream2, existsSync as existsSync6, lstatSync, mkdirSync as mkdirSync5, openSync as openSync4, readdirSync as readdirSync2, readFileSync as readFileSync6, readlinkSync, realpathSync, rmSync as rmSync3, statSync as statSync5, symlinkSync, unlinkSync as unlinkSync4, writeFileSync as writeFileSync3 } from "node:fs";
3402
3445
  import { basename as basename2, dirname as dirname5, isAbsolute as isAbsolute4, join as join9, relative as relative2, resolve as resolve5, win32 } from "node:path";
3403
3446
  import { Readable as Readable2 } from "node:stream";
3404
3447
  import { pipeline as pipeline2 } from "node:stream/promises";
@@ -3491,7 +3534,7 @@ function cleanupAbandonedStagingDirs(onnxBaseDir) {
3491
3534
  abandoned = true;
3492
3535
  } else {
3493
3536
  try {
3494
- const ageMs = Date.now() - statSync4(stagingDir).mtimeMs;
3537
+ const ageMs = Date.now() - statSync5(stagingDir).mtimeMs;
3495
3538
  abandoned = ageMs > STALE_LOCK_MS;
3496
3539
  } catch {
3497
3540
  abandoned = true;
@@ -3925,7 +3968,7 @@ function writeOnnxInstalledMeta(installDir, version, sha256, archiveSha256) {
3925
3968
  function readOnnxInstalledMeta(installDir) {
3926
3969
  const path2 = join9(installDir, ONNX_INSTALLED_META_FILE);
3927
3970
  try {
3928
- if (!statSync4(path2).isFile())
3971
+ if (!statSync5(path2).isFile())
3929
3972
  return null;
3930
3973
  const raw = readFileSync6(path2, "utf8");
3931
3974
  const parsed = JSON.parse(raw);
@@ -3976,7 +4019,7 @@ ${new Date().toISOString()}
3976
4019
  const parsed = Number.parseInt(firstLine, 10);
3977
4020
  if (Number.isFinite(parsed) && parsed > 0)
3978
4021
  owningPid = parsed;
3979
- lockMtimeMs = statSync4(lockPath).mtimeMs;
4022
+ lockMtimeMs = statSync5(lockPath).mtimeMs;
3980
4023
  } catch {
3981
4024
  return tryClaim();
3982
4025
  }
@@ -4126,6 +4169,492 @@ var init_onnx_runtime = __esm(() => {
4126
4169
  };
4127
4170
  });
4128
4171
 
4172
+ // ../aft-bridge/dist/path-aliases.js
4173
+ function isWellFormedUnicodeString(value) {
4174
+ for (let index = 0;index < value.length; index++) {
4175
+ const codeUnit = value.charCodeAt(index);
4176
+ if (codeUnit >= 55296 && codeUnit <= 56319) {
4177
+ const next = value.charCodeAt(index + 1);
4178
+ if (next < 56320 || next > 57343 || Number.isNaN(next))
4179
+ return false;
4180
+ index++;
4181
+ } else if (codeUnit >= 56320 && codeUnit <= 57343) {
4182
+ return false;
4183
+ }
4184
+ }
4185
+ return true;
4186
+ }
4187
+ function hasOwn(record, key) {
4188
+ return Object.hasOwn(record, key);
4189
+ }
4190
+ function invalidPathValue(property) {
4191
+ throw new InvalidRequestError(`'${property}' must be a non-empty well-formed Unicode string`);
4192
+ }
4193
+ function pathValue(record, property) {
4194
+ const value = record[property];
4195
+ if (typeof value !== "string" || value.length === 0 || !isWellFormedUnicodeString(value)) {
4196
+ invalidPathValue(property);
4197
+ }
4198
+ return value;
4199
+ }
4200
+ function normalizeAliasPair(record, canonical, legacy, required) {
4201
+ const hasCanonical = hasOwn(record, canonical);
4202
+ const hasLegacy = hasOwn(record, legacy);
4203
+ if (!hasCanonical && !hasLegacy) {
4204
+ if (required) {
4205
+ throw new InvalidRequestError(`'${canonical}' is required`);
4206
+ }
4207
+ return;
4208
+ }
4209
+ if (hasCanonical && hasLegacy) {
4210
+ let canonicalValue;
4211
+ let legacyValue;
4212
+ try {
4213
+ canonicalValue = pathValue(record, canonical);
4214
+ legacyValue = pathValue(record, legacy);
4215
+ } catch {
4216
+ throw new InvalidRequestError(`Invalid request: '${canonical}' and '${legacy}' must both be non-empty well-formed Unicode strings`);
4217
+ }
4218
+ if (canonicalValue !== legacyValue) {
4219
+ throw new InvalidRequestError(`Invalid request: '${canonical}' and '${legacy}' must contain equal decoded strings`);
4220
+ }
4221
+ delete record[legacy];
4222
+ return;
4223
+ }
4224
+ if (hasCanonical) {
4225
+ pathValue(record, canonical);
4226
+ return;
4227
+ }
4228
+ record[canonical] = pathValue(record, legacy);
4229
+ delete record[legacy];
4230
+ }
4231
+ function validateOptionalCanonicalPath(record, property) {
4232
+ if (hasOwn(record, property))
4233
+ pathValue(record, property);
4234
+ }
4235
+ function normalizeZoomTargets(record) {
4236
+ if (!hasOwn(record, "targets"))
4237
+ return;
4238
+ const targets = record.targets;
4239
+ const normalizeTarget = (target, index) => {
4240
+ if (!target || typeof target !== "object" || Array.isArray(target)) {
4241
+ throw new InvalidRequestError(`'targets[${index}].path' must be a non-empty string`);
4242
+ }
4243
+ const source = target;
4244
+ const emptyTarget = source.symbol === "" && (hasOwn(source, "path") && source.path === "" || hasOwn(source, "filePath") && source.filePath === "");
4245
+ if (emptyTarget)
4246
+ return { ...source };
4247
+ const normalized = { ...source };
4248
+ try {
4249
+ normalizeAliasPair(normalized, "path", "filePath", true);
4250
+ } catch (error2) {
4251
+ if (error2 instanceof InvalidRequestError) {
4252
+ throw new InvalidRequestError(error2.message.replace("'filePath'", `'targets[${index}].filePath'`).replace("'path'", `'targets[${index}].path'`));
4253
+ }
4254
+ throw error2;
4255
+ }
4256
+ return normalized;
4257
+ };
4258
+ if (Array.isArray(targets)) {
4259
+ if (targets.length === 0)
4260
+ return;
4261
+ record.targets = targets.map(normalizeTarget);
4262
+ return;
4263
+ }
4264
+ if (targets && typeof targets === "object") {
4265
+ record.targets = normalizeTarget(targets, 0);
4266
+ }
4267
+ }
4268
+ function bareToolName(toolName) {
4269
+ const bare = toolName.startsWith("aft_") ? toolName.slice(4) : toolName;
4270
+ if (bare === "read" || bare === "write" || bare === "edit" || bare === "zoom" || bare === "callgraph" || bare === "safety" || bare === "move" || bare === "import" || bare === "refactor" || bare === "grep" || bare === "search" || bare === "conflicts") {
4271
+ return bare;
4272
+ }
4273
+ return;
4274
+ }
4275
+ function prepareCanonicalPathArguments(toolName, rawArguments) {
4276
+ if (!rawArguments || typeof rawArguments !== "object" || Array.isArray(rawArguments)) {
4277
+ throw new InvalidRequestError("tool arguments must be an object");
4278
+ }
4279
+ const tool = bareToolName(toolName);
4280
+ const record = { ...rawArguments };
4281
+ if (!tool)
4282
+ return record;
4283
+ switch (tool) {
4284
+ case "read":
4285
+ case "write":
4286
+ case "edit":
4287
+ case "move":
4288
+ case "import":
4289
+ case "refactor":
4290
+ normalizeAliasPair(record, "path", "filePath", true);
4291
+ break;
4292
+ case "zoom":
4293
+ normalizeAliasPair(record, "path", "filePath", false);
4294
+ normalizeZoomTargets(record);
4295
+ break;
4296
+ case "callgraph":
4297
+ normalizeAliasPair(record, "path", "filePath", true);
4298
+ normalizeAliasPair(record, "toPath", "toFile", false);
4299
+ break;
4300
+ case "safety":
4301
+ normalizeAliasPair(record, "path", "filePath", false);
4302
+ break;
4303
+ case "grep":
4304
+ case "search":
4305
+ case "conflicts":
4306
+ validateOptionalCanonicalPath(record, "path");
4307
+ break;
4308
+ }
4309
+ return record;
4310
+ }
4311
+ function prepareCanonicalEditArguments(toolName, rawArguments) {
4312
+ if (!rawArguments || typeof rawArguments !== "object" || Array.isArray(rawArguments)) {
4313
+ throw new InvalidRequestError("tool arguments must be an object");
4314
+ }
4315
+ const raw = rawArguments;
4316
+ const record = copyOwnProperties(raw);
4317
+ normalizeEditPathAlias(record);
4318
+ const suppliedLineFields = ["startLine", "endLine"].filter((key) => hasOwn(record, key));
4319
+ if (suppliedLineFields.length > 0) {
4320
+ throw new InvalidRequestError(`edit: top-level ${suppliedLineFields.map((key) => `'${key}'`).join(" and ")} are invalid; ` + "line-range fields are valid only inside 'edits[]'. " + "Use edits: [{ startLine, endLine, content }].");
4321
+ }
4322
+ const isOpenCodeRetiredBoundary = toolName === "aft_edit";
4323
+ const retiredFields = ["file", "mode"].filter((key) => hasOwn(record, key));
4324
+ if (retiredFields.length > 0 && isOpenCodeRetiredBoundary) {
4325
+ throw new InvalidRequestError("aft_edit: the retired `mode`/`file` edit form is no longer supported; use `path` with " + "exactly one of `appendContent`, `edits`, or `symbol` plus `content`.");
4326
+ }
4327
+ const unknownRootKeys = Object.getOwnPropertyNames(record).filter((key) => !EDIT_ROOT_CANONICAL_KEYS.has(key) && !EDIT_ROOT_COMPATIBILITY_KEYS.has(key) && key !== "filePath").sort();
4328
+ if (unknownRootKeys.length > 0) {
4329
+ throw new InvalidRequestError(formatUnknownKeys(unknownRootKeys));
4330
+ }
4331
+ const modes = editModesPresent(record);
4332
+ if (hasOrphanedSymbolContent(record)) {
4333
+ throw new InvalidRequestError("edit: 'content' requires a non-empty string 'symbol' when symbol mode is selected");
4334
+ }
4335
+ if (modes.length > 1) {
4336
+ throw new InvalidRequestError(`edit: conflicting modes: ${modes.join(", ")}. ` + OMIT_OPTIONAL_FIELDS_STEERING);
4337
+ }
4338
+ if (modes.length === 0) {
4339
+ throw new InvalidRequestError("edit: exactly one of `appendContent`, `edits`, or `symbol` plus `content` is required. " + OMIT_OPTIONAL_FIELDS_STEERING);
4340
+ }
4341
+ const mode = modes[0];
4342
+ if (mode === "appendContent") {
4343
+ if (typeof record.appendContent !== "string") {
4344
+ throw new InvalidRequestError("edit: 'appendContent' must be a string");
4345
+ }
4346
+ } else if (mode === "edits") {
4347
+ const parsedEdits = parseEditArray(record.edits);
4348
+ record.edits = parsedEdits.map((item, index) => normalizeEditItem(item, index));
4349
+ } else if (mode === "symbol/content") {
4350
+ if (!hasOwn(record, "symbol") || typeof record.symbol !== "string") {
4351
+ throw new InvalidRequestError("edit: 'symbol' must be a string when symbol mode is selected");
4352
+ }
4353
+ if (!hasOwn(record, "content") || typeof record.content !== "string") {
4354
+ throw new InvalidRequestError("edit: symbol mode requires both 'symbol' and 'content' string properties");
4355
+ }
4356
+ } else {
4357
+ const item = {};
4358
+ for (const key of EDIT_ROOT_COMPATIBILITY_KEYS) {
4359
+ if (hasOwn(record, key))
4360
+ item[key] = record[key];
4361
+ }
4362
+ record.edits = [normalizeEditItem(item, 0)];
4363
+ for (const key of EDIT_ROOT_COMPATIBILITY_KEYS)
4364
+ delete record[key];
4365
+ }
4366
+ validateEditPath(record);
4367
+ return record;
4368
+ }
4369
+ function normalizeEditPathAlias(record) {
4370
+ const hasCanonical = hasOwn(record, "path");
4371
+ const hasLegacy = hasOwn(record, "filePath");
4372
+ if (!hasCanonical && !hasLegacy)
4373
+ return;
4374
+ if (hasCanonical && hasLegacy) {
4375
+ let canonical;
4376
+ let legacy;
4377
+ try {
4378
+ canonical = pathValue(record, "path");
4379
+ legacy = pathValue(record, "filePath");
4380
+ } catch {
4381
+ throw new InvalidRequestError("Invalid request: 'path' and 'filePath' must both be non-empty well-formed Unicode strings");
4382
+ }
4383
+ if (canonical !== legacy) {
4384
+ throw new InvalidRequestError("Invalid request: 'path' and 'filePath' must contain equal decoded strings");
4385
+ }
4386
+ delete record.filePath;
4387
+ return;
4388
+ }
4389
+ if (!hasCanonical) {
4390
+ record.path = pathValue(record, "filePath");
4391
+ delete record.filePath;
4392
+ }
4393
+ }
4394
+ function validateEditPath(record) {
4395
+ if (!hasOwn(record, "path")) {
4396
+ throw new InvalidRequestError("'path' is required");
4397
+ }
4398
+ pathValue(record, "path");
4399
+ }
4400
+ function formatUnknownKeys(keys) {
4401
+ return `Unrecognized keys: ${keys.map((key) => `"${key}"`).join(", ")}`;
4402
+ }
4403
+ function editModesPresent(record) {
4404
+ const hasAppendContent = isNonEmptyString(record.appendContent);
4405
+ if (!hasAppendContent)
4406
+ delete record.appendContent;
4407
+ const hasEdits = normalizeEditArraySentinels(record);
4408
+ if (!hasEdits)
4409
+ delete record.edits;
4410
+ const hasSymbol = isNonEmptyString(record.symbol);
4411
+ if (!hasSymbol) {
4412
+ delete record.symbol;
4413
+ if (record.content === null || record.content === "")
4414
+ delete record.content;
4415
+ } else if (record.content === null) {
4416
+ delete record.content;
4417
+ }
4418
+ const hasSingleEdit = isNonEmptyString(record.oldString);
4419
+ if (!hasSingleEdit) {
4420
+ for (const key of EDIT_ROOT_COMPATIBILITY_KEYS)
4421
+ delete record[key];
4422
+ } else {
4423
+ for (const key of ["newString", "replaceAll", "occurrence"]) {
4424
+ if (record[key] === null)
4425
+ delete record[key];
4426
+ }
4427
+ }
4428
+ const modes = [];
4429
+ if (hasAppendContent)
4430
+ modes.push("appendContent");
4431
+ if (hasEdits)
4432
+ modes.push("edits");
4433
+ if (hasSymbol)
4434
+ modes.push("symbol/content");
4435
+ if (hasSingleEdit)
4436
+ modes.push("oldString/newString");
4437
+ return modes;
4438
+ }
4439
+ function isNonEmptyString(value) {
4440
+ return typeof value === "string" && value.length > 0;
4441
+ }
4442
+ function isEditSentinelItem(item) {
4443
+ if (!item || typeof item !== "object" || Array.isArray(item))
4444
+ return false;
4445
+ const record = item;
4446
+ if (record.oldString !== "")
4447
+ return false;
4448
+ const newStringEmpty = !hasOwn(record, "newString") || record.newString === "" || record.newString === null;
4449
+ if (!newStringEmpty)
4450
+ return false;
4451
+ return !hasOwn(record, "content") || record.content === "" || record.content === null;
4452
+ }
4453
+ function normalizeEditArraySentinels(record) {
4454
+ const value = record.edits;
4455
+ if (Array.isArray(value)) {
4456
+ const survivors = value.filter((item) => !isEditSentinelItem(item));
4457
+ if (survivors.length === 0)
4458
+ return false;
4459
+ record.edits = survivors;
4460
+ return true;
4461
+ }
4462
+ if (typeof value !== "string" || value.length === 0)
4463
+ return false;
4464
+ try {
4465
+ const parsed = JSON.parse(value);
4466
+ if (!Array.isArray(parsed))
4467
+ return true;
4468
+ const survivors = parsed.filter((item) => !isEditSentinelItem(item));
4469
+ if (survivors.length === 0)
4470
+ return false;
4471
+ record.edits = survivors;
4472
+ return true;
4473
+ } catch {
4474
+ return true;
4475
+ }
4476
+ }
4477
+ function hasOrphanedSymbolContent(record) {
4478
+ return isNonEmptyString(record.content) && !isNonEmptyString(record.symbol);
4479
+ }
4480
+ function parseEditArray(value) {
4481
+ if (typeof value === "string") {
4482
+ let parsed;
4483
+ try {
4484
+ parsed = JSON.parse(value);
4485
+ } catch {
4486
+ throw new InvalidRequestError("edit: 'edits' must contain valid JSON representing an array");
4487
+ }
4488
+ if (!Array.isArray(parsed)) {
4489
+ throw new InvalidRequestError("edit: 'edits' JSON must have an array root");
4490
+ }
4491
+ if (parsed.length === 0) {
4492
+ throw new InvalidRequestError("edit: 'edits' array must not be empty");
4493
+ }
4494
+ return parsed;
4495
+ }
4496
+ if (!Array.isArray(value)) {
4497
+ throw new InvalidRequestError("edit: 'edits' must be a non-empty array");
4498
+ }
4499
+ if (value.length === 0) {
4500
+ throw new InvalidRequestError("edit: 'edits' array must not be empty");
4501
+ }
4502
+ return value;
4503
+ }
4504
+ function normalizeEditItem(value, index) {
4505
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
4506
+ throw new InvalidRequestError(`edit: edits[${index}] must be an object`);
4507
+ }
4508
+ const source = value;
4509
+ const item = copyOwnProperties(source);
4510
+ normalizeItemAlias(item, "oldString", "oldText");
4511
+ normalizeItemAlias(item, "newString", "newText");
4512
+ const hasFindField = ["oldString", "newString", "replaceAll", "occurrence"].some((key) => hasOwn(item, key));
4513
+ const hasRangeField = ["startLine", "endLine", "content"].some((key) => hasOwn(item, key));
4514
+ if (hasFindField && hasRangeField) {
4515
+ throw new InvalidRequestError(`edit: edits[${index}] mixes find/replace and line-range fields`);
4516
+ }
4517
+ if (hasFindField) {
4518
+ if (!hasOwn(item, "oldString") || typeof item.oldString !== "string") {
4519
+ throw new InvalidRequestError(`edit: edits[${index}] requires string 'oldString'`);
4520
+ }
4521
+ if (hasOwn(item, "newString") && typeof item.newString !== "string") {
4522
+ throw new InvalidRequestError(`edit: edits[${index}].newString must be a string`);
4523
+ }
4524
+ coerceEditScalars(item, index);
4525
+ validateEditItemKeys(item, index);
4526
+ return item;
4527
+ }
4528
+ if (hasRangeField) {
4529
+ for (const key of ["startLine", "endLine"]) {
4530
+ const value2 = item[key];
4531
+ if (typeof value2 === "string" && /^[0-9]+$/.test(value2.trim())) {
4532
+ item[key] = Number(value2.trim());
4533
+ }
4534
+ if (!hasOwn(item, key) || !isPositiveSafeInteger(item[key])) {
4535
+ throw new InvalidRequestError(`edit: edits[${index}].${key} must be a positive integer`);
4536
+ }
4537
+ }
4538
+ if (item.startLine > item.endLine) {
4539
+ throw new InvalidRequestError(`edit: edits[${index}] requires startLine <= endLine`);
4540
+ }
4541
+ if (!hasOwn(item, "content") || typeof item.content !== "string") {
4542
+ throw new InvalidRequestError(`edit: edits[${index}] requires string 'content'`);
4543
+ }
4544
+ validateEditItemKeys(item, index);
4545
+ return item;
4546
+ }
4547
+ throw new InvalidRequestError(`edit: edits[${index}] must be a find/replace or line-range item`);
4548
+ }
4549
+ function normalizeItemAlias(item, canonical, legacy) {
4550
+ if (hasOwn(item, legacy)) {
4551
+ if (!hasOwn(item, canonical))
4552
+ item[canonical] = item[legacy];
4553
+ delete item[legacy];
4554
+ }
4555
+ }
4556
+ function validateEditItemKeys(item, index) {
4557
+ const unknown = Object.getOwnPropertyNames(item).filter((key) => !EDIT_ITEM_KEYS.has(key)).sort();
4558
+ if (unknown.length > 0) {
4559
+ throw new InvalidRequestError(`edit: edits[${index}] contains ${formatUnknownKeys(unknown)}`);
4560
+ }
4561
+ }
4562
+ function coerceEditScalars(item, index) {
4563
+ if (hasOwn(item, "replaceAll") && hasOwn(item, "occurrence")) {
4564
+ throw new InvalidRequestError(`edit: edits[${index}] cannot contain both 'replaceAll' and 'occurrence'`);
4565
+ }
4566
+ if (hasOwn(item, "replaceAll"))
4567
+ item.replaceAll = coerceEditBoolean(item.replaceAll, index);
4568
+ if (hasOwn(item, "occurrence")) {
4569
+ const occurrence = coerceEditOccurrence(item.occurrence, index);
4570
+ if (occurrence === undefined)
4571
+ delete item.occurrence;
4572
+ else
4573
+ item.occurrence = occurrence;
4574
+ }
4575
+ }
4576
+ function coerceEditBoolean(value, index) {
4577
+ if (typeof value === "boolean")
4578
+ return value;
4579
+ if (typeof value === "number" && Number.isFinite(value) && (value === 0 || value === 1)) {
4580
+ return value === 1;
4581
+ }
4582
+ if (typeof value === "string") {
4583
+ if (value === "1")
4584
+ return true;
4585
+ if (value === "0")
4586
+ return false;
4587
+ if (/^(?:true|false)$/i.test(value))
4588
+ return value.toLowerCase() === "true";
4589
+ }
4590
+ throw new InvalidRequestError(`edit: edits[${index}].replaceAll must be a boolean, true/false string, or 0/1`);
4591
+ }
4592
+ function coerceEditOccurrence(value, index) {
4593
+ if (value === null)
4594
+ return;
4595
+ if (typeof value === "string") {
4596
+ const trimmed = value.replace(ASCII_TRIM, "");
4597
+ if (trimmed.length === 0 || ASCII_WHITESPACE.test(trimmed))
4598
+ return;
4599
+ if (!/^[+]?[0-9]+$/.test(trimmed)) {
4600
+ throw new InvalidRequestError(`edit: edits[${index}].occurrence must be a positive integer`);
4601
+ }
4602
+ try {
4603
+ const parsed = BigInt(trimmed);
4604
+ if (parsed < 1n || parsed > BigInt(MAX_SAFE_INTEGER))
4605
+ throw new Error("out of range");
4606
+ return Number(parsed);
4607
+ } catch {
4608
+ throw new InvalidRequestError(`edit: edits[${index}].occurrence must be a positive integer`);
4609
+ }
4610
+ }
4611
+ if (typeof value === "number" && isPositiveSafeInteger(value))
4612
+ return value;
4613
+ throw new InvalidRequestError(`edit: edits[${index}].occurrence must be a positive integer`);
4614
+ }
4615
+ function isPositiveSafeInteger(value) {
4616
+ return typeof value === "number" && Number.isSafeInteger(value) && value >= 1;
4617
+ }
4618
+ function copyOwnProperties(source) {
4619
+ const copy = Object.create(null);
4620
+ for (const key of Object.getOwnPropertyNames(source))
4621
+ copy[key] = source[key];
4622
+ return copy;
4623
+ }
4624
+ var InvalidRequestError, EDIT_ROOT_COMPATIBILITY_KEYS, EDIT_ROOT_CANONICAL_KEYS, EDIT_ITEM_KEYS, ASCII_WHITESPACE, ASCII_TRIM, MAX_SAFE_INTEGER, OMIT_OPTIONAL_FIELDS_STEERING = "Omit unused optional fields entirely; do not send empty strings or empty arrays for them.";
4625
+ var init_path_aliases = __esm(() => {
4626
+ init_error_contract();
4627
+ InvalidRequestError = class InvalidRequestError extends AftToolError {
4628
+ constructor(message) {
4629
+ super(message, "invalid_request", {
4630
+ success: false,
4631
+ code: "invalid_request",
4632
+ message
4633
+ });
4634
+ this.name = "InvalidRequestError";
4635
+ }
4636
+ };
4637
+ EDIT_ROOT_COMPATIBILITY_KEYS = new Set([
4638
+ "oldString",
4639
+ "newString",
4640
+ "replaceAll",
4641
+ "occurrence"
4642
+ ]);
4643
+ EDIT_ROOT_CANONICAL_KEYS = new Set(["path", "appendContent", "edits", "symbol", "content"]);
4644
+ EDIT_ITEM_KEYS = new Set([
4645
+ "oldString",
4646
+ "newString",
4647
+ "replaceAll",
4648
+ "occurrence",
4649
+ "startLine",
4650
+ "endLine",
4651
+ "content"
4652
+ ]);
4653
+ ASCII_WHITESPACE = /^[\t\n\v\f\r ]+$/;
4654
+ ASCII_TRIM = /^[\t\n\v\f\r ]+|[\t\n\v\f\r ]+$/g;
4655
+ MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;
4656
+ });
4657
+
4129
4658
  // ../aft-bridge/dist/project-identity.js
4130
4659
  import { createHash as createHash4 } from "node:crypto";
4131
4660
  import { realpathSync as realpathSync2 } from "node:fs";
@@ -4788,7 +5317,7 @@ var init_envelope = __esm(() => {
4788
5317
  });
4789
5318
 
4790
5319
  // ../../node_modules/.bun/@cortexkit+subc-client@0.5.0/node_modules/@cortexkit/subc-client/dist/connection-file.js
4791
- import { promises as fs } from "node:fs";
5320
+ import { promises as fs2 } from "node:fs";
4792
5321
  function toBytes(value, field) {
4793
5322
  if (!Array.isArray(value) || value.some((n) => typeof n !== "number")) {
4794
5323
  throw new ConnectionFileError(`connection file field '${field}' must be a JSON array of bytes`);
@@ -4812,7 +5341,7 @@ function validate(info) {
4812
5341
  async function verifyOwnerOnly(path2) {
4813
5342
  if (process.platform === "win32")
4814
5343
  return;
4815
- const stat2 = await fs.stat(path2);
5344
+ const stat2 = await fs2.stat(path2);
4816
5345
  const mode = stat2.mode & 511;
4817
5346
  if ((mode & 63) !== 0) {
4818
5347
  throw new ConnectionFileError(`connection file ${path2} has insecure permissions 0o${mode.toString(8)}; expected owner-only 0600`);
@@ -4820,7 +5349,7 @@ async function verifyOwnerOnly(path2) {
4820
5349
  }
4821
5350
  async function readConnectionFile(path2) {
4822
5351
  await verifyOwnerOnly(path2);
4823
- const raw = await fs.readFile(path2, "utf8");
5352
+ const raw = await fs2.readFile(path2, "utf8");
4824
5353
  let parsed;
4825
5354
  try {
4826
5355
  parsed = JSON.parse(raw);
@@ -5118,7 +5647,7 @@ var init_socket = __esm(() => {
5118
5647
  });
5119
5648
 
5120
5649
  // ../../node_modules/.bun/@cortexkit+subc-client@0.5.0/node_modules/@cortexkit/subc-client/dist/client.js
5121
- import { promises as fs2 } from "node:fs";
5650
+ import { promises as fs3 } from "node:fs";
5122
5651
  import { debuglog } from "node:util";
5123
5652
 
5124
5653
  class SubcClient {
@@ -5855,7 +6384,7 @@ function isRetryableRouteOpenCode(code) {
5855
6384
  }
5856
6385
  async function connectionFileExists(path2) {
5857
6386
  try {
5858
- await fs2.access(path2);
6387
+ await fs3.access(path2);
5859
6388
  return true;
5860
6389
  } catch {
5861
6390
  return false;
@@ -7531,6 +8060,7 @@ function unwrapRustZoomBatchEnvelope(response) {
7531
8060
  var exports_dist = {};
7532
8061
  __export(exports_dist, {
7533
8062
  unwrapRustZoomBatchEnvelope: () => unwrapRustZoomBatchEnvelope,
8063
+ toolErrorFromResponse: () => toolErrorFromResponse,
7534
8064
  timeoutForCommand: () => timeoutForCommand,
7535
8065
  tagStderrLine: () => tagStderrLine,
7536
8066
  stripJsoncSymbols: () => stripJsoncSymbols,
@@ -7555,6 +8085,8 @@ __export(exports_dist, {
7555
8085
  readConfigTiers: () => readConfigTiers,
7556
8086
  projectRootKeyHash: () => projectRootKeyHash,
7557
8087
  probeNpmVersion: () => probeNpmVersion,
8088
+ prepareCanonicalPathArguments: () => prepareCanonicalPathArguments,
8089
+ prepareCanonicalEditArguments: () => prepareCanonicalEditArguments,
7558
8090
  platformKey: () => platformKey,
7559
8091
  parseStatusBarCounts: () => parseStatusBarCounts,
7560
8092
  npmSpawnEnv: () => npmSpawnEnv,
@@ -7562,6 +8094,7 @@ __export(exports_dist, {
7562
8094
  maybeAppendGrepSearchHint: () => maybeAppendGrepSearchHint,
7563
8095
  maybeAppendConflictsHint: () => maybeAppendConflictsHint,
7564
8096
  markAnnouncementSeen: () => markAnnouncementSeen,
8097
+ isWellFormedUnicodeString: () => isWellFormedUnicodeString,
7565
8098
  isTerminalStatus: () => isTerminalStatus,
7566
8099
  isRustZoomBatchEnvelope: () => isRustZoomBatchEnvelope,
7567
8100
  isOrtAutoDownloadSupported: () => isOrtAutoDownloadSupported,
@@ -7617,12 +8150,14 @@ __export(exports_dist, {
7617
8150
  PI_ONLY_KEYS: () => PI_ONLY_KEYS,
7618
8151
  OPENCODE_ONLY_KEYS: () => OPENCODE_ONLY_KEYS,
7619
8152
  LONG_RUNNING_COMMAND_TIMEOUT_MS: () => LONG_RUNNING_COMMAND_TIMEOUT_MS,
8153
+ InvalidRequestError: () => InvalidRequestError,
7620
8154
  HomeProjectRootError: () => HomeProjectRootError,
7621
8155
  DEFAULT_LOG_GENERATIONS: () => DEFAULT_LOG_GENERATIONS,
7622
8156
  DEFAULT_LOG_BYTES: () => DEFAULT_LOG_BYTES,
7623
8157
  BridgeTransportTimeoutError: () => BridgeTransportTimeoutError,
7624
8158
  BridgePool: () => BridgePool,
7625
- BinaryBridge: () => BinaryBridge
8159
+ BinaryBridge: () => BinaryBridge,
8160
+ AftToolError: () => AftToolError
7626
8161
  });
7627
8162
  var init_dist2 = __esm(() => {
7628
8163
  init_active_logger();
@@ -7634,9 +8169,11 @@ var init_dist2 = __esm(() => {
7634
8169
  init_config_tiers();
7635
8170
  init_downloader();
7636
8171
  init_durable_log();
8172
+ init_error_contract();
7637
8173
  init_migration();
7638
8174
  init_npm_resolver();
7639
8175
  init_onnx_runtime();
8176
+ init_path_aliases();
7640
8177
  init_paths();
7641
8178
  init_platform();
7642
8179
  init_pool();
@@ -7874,13 +8411,13 @@ var init_binary_probe = __esm(async () => {
7874
8411
  });
7875
8412
 
7876
8413
  // src/lib/fs-util.ts
7877
- import { existsSync as existsSync8, readdirSync as readdirSync3, statSync as statSync5 } from "node:fs";
8414
+ import { existsSync as existsSync8, readdirSync as readdirSync3, statSync as statSync6 } from "node:fs";
7878
8415
  import { join as join13 } from "node:path";
7879
8416
  function dirSize(path2) {
7880
8417
  if (!existsSync8(path2)) {
7881
8418
  return 0;
7882
8419
  }
7883
- const stat2 = statSync5(path2);
8420
+ const stat2 = statSync6(path2);
7884
8421
  if (stat2.isFile()) {
7885
8422
  return stat2.size;
7886
8423
  }
@@ -15751,7 +16288,7 @@ var init_self_version = () => {};
15751
16288
 
15752
16289
  // src/adapters/opencode.ts
15753
16290
  import { execSync as execSync3 } from "node:child_process";
15754
- import { existsSync as existsSync10, readFileSync as readFileSync8, rmSync as rmSync4, statSync as statSync6 } from "node:fs";
16291
+ import { existsSync as existsSync10, readFileSync as readFileSync8, rmSync as rmSync4, statSync as statSync7 } from "node:fs";
15755
16292
  import { homedir as homedir14 } from "node:os";
15756
16293
  import { dirname as dirname7, join as join14, parse, resolve as resolve7 } from "node:path";
15757
16294
  import { fileURLToPath } from "node:url";
@@ -15817,7 +16354,7 @@ function pathPointsToOurPlugin(entry) {
15817
16354
  try {
15818
16355
  if (!existsSync10(fsPath))
15819
16356
  return false;
15820
- let searchDir = statSync6(fsPath).isDirectory() ? fsPath : dirname7(fsPath);
16357
+ let searchDir = statSync7(fsPath).isDirectory() ? fsPath : dirname7(fsPath);
15821
16358
  let pkgJsonPath = null;
15822
16359
  while (true) {
15823
16360
  const candidate = join14(searchDir, "package.json");
@@ -18111,7 +18648,7 @@ __export(exports_setup, {
18111
18648
  runSetup: () => runSetup
18112
18649
  });
18113
18650
  async function runSetup(argv) {
18114
- intro("AFT setup");
18651
+ intro(`${CLI} setup`);
18115
18652
  const adapters = await resolveAdaptersForCommand(argv, {
18116
18653
  allowMulti: true,
18117
18654
  verb: "setup"
@@ -18120,7 +18657,7 @@ async function runSetup(argv) {
18120
18657
  for (const adapter of adapters) {
18121
18658
  log2.info(`${adapter.displayName}: configuring ${adapter.pluginPackageName}…`);
18122
18659
  if (!adapter.isInstalled()) {
18123
- log2.warn(`${adapter.displayName} host not found on PATH. ${adapter.getInstallHint()} and rerun \`aft setup\`.`);
18660
+ log2.warn(`${adapter.displayName} host not found on PATH. ${adapter.getInstallHint()} and rerun \`${CLI} setup\`.`);
18124
18661
  anyFailure = true;
18125
18662
  continue;
18126
18663
  }
@@ -18171,7 +18708,7 @@ function printNextSteps(adapter) {
18171
18708
  if (adapter.kind === "opencode") {
18172
18709
  note([
18173
18710
  "Restart OpenCode (or reload your session) so the plugin loads.",
18174
- "Verify with: `npx @cortexkit/aft doctor`."
18711
+ `Verify with: \`${CLI} doctor\`.`
18175
18712
  ].join(`
18176
18713
  `), "Next steps");
18177
18714
  return;
@@ -18179,7 +18716,7 @@ function printNextSteps(adapter) {
18179
18716
  if (adapter.kind === "pi") {
18180
18717
  note([
18181
18718
  "Restart your Pi session so the extension registers.",
18182
- "Verify with: `npx @cortexkit/aft doctor`."
18719
+ `Verify with: \`${CLI} doctor\`.`
18183
18720
  ].join(`
18184
18721
  `), "Next steps");
18185
18722
  }
@@ -18292,7 +18829,7 @@ The binary printed ${ctx.noiseLines.length} non-JSON line(s) to stdout — this
18292
18829
  parts.push(` | (… ${ctx.noiseLines.length - MAX_NOISE_LINES_IN_ERROR} more line(s) omitted)`);
18293
18830
  }
18294
18831
  parts.push(`
18295
- Try: npx @cortexkit/aft doctor (full diagnostics) or check ~/.cache/aft/bin/ for the right binary.`);
18832
+ Try: ${CLI} doctor (full diagnostics) or check ~/.cache/aft/bin/ for the right binary.`);
18296
18833
  }
18297
18834
  const stderrTrimmed = ctx.stderr.trim();
18298
18835
  if (stderrTrimmed) {
@@ -18315,14 +18852,14 @@ __export(exports_lsp, {
18315
18852
  printLspDoctorHelp: () => printLspDoctorHelp,
18316
18853
  findProjectRootForFile: () => findProjectRootForFile
18317
18854
  });
18318
- import { existsSync as existsSync12, readdirSync as readdirSync4, statSync as statSync7 } from "node:fs";
18855
+ import { existsSync as existsSync12, readdirSync as readdirSync4, statSync as statSync8 } from "node:fs";
18319
18856
  import { createRequire as createRequire4 } from "node:module";
18320
18857
  import { dirname as dirname8, join as join16, resolve as resolve8 } from "node:path";
18321
18858
  function findProjectRootForFile(filePath, fallbackCwd = process.cwd()) {
18322
18859
  const resolvedFile = resolve8(fallbackCwd, filePath);
18323
18860
  let dir = dirname8(resolvedFile);
18324
18861
  try {
18325
- if (existsSync12(resolvedFile) && statSync7(resolvedFile).isDirectory()) {
18862
+ if (existsSync12(resolvedFile) && statSync8(resolvedFile).isDirectory()) {
18326
18863
  dir = resolvedFile;
18327
18864
  }
18328
18865
  } catch {
@@ -18339,7 +18876,7 @@ function findProjectRootForFile(filePath, fallbackCwd = process.cwd()) {
18339
18876
  }
18340
18877
  }
18341
18878
  function printLspDoctorHelp() {
18342
- console.log("Usage: aft doctor lsp <file> [--harness opencode|pi]");
18879
+ console.log(`Usage: ${CLI} doctor lsp <file> [--harness opencode|pi]`);
18343
18880
  console.log("");
18344
18881
  console.log("Inspect what AFT's LSP layer would do for a file.");
18345
18882
  }
@@ -18489,7 +19026,7 @@ function childDirs(path2) {
18489
19026
  try {
18490
19027
  return readdirSync4(path2).map((entry) => join16(path2, entry)).filter((entry) => {
18491
19028
  try {
18492
- return statSync7(entry).isDirectory();
19029
+ return statSync8(entry).isDirectory();
18493
19030
  } catch {
18494
19031
  return false;
18495
19032
  }
@@ -18580,16 +19117,16 @@ import { existsSync as existsSync13 } from "node:fs";
18580
19117
  import { homedir as homedir16 } from "node:os";
18581
19118
  import { relative as relative3, resolve as resolve9 } from "node:path";
18582
19119
  function printDoctorFiltersHelp() {
18583
- console.log("Usage: aft doctor filters [--show <name>] [trust|untrust]");
19120
+ console.log(`Usage: ${CLI} doctor filters [--show <name>] [trust|untrust]`);
18584
19121
  console.log("");
18585
19122
  console.log("Inspect declarative TOML compression filters.");
18586
19123
  console.log("");
18587
19124
  console.log("Commands:");
18588
- console.log(" aft doctor filters List built-in, user, and project filters");
18589
- console.log(" aft doctor filters --show <name> Show resolved TOML for a filter");
18590
- console.log(" aft doctor filters trust Trust current project's .aft/filters");
18591
- console.log(" aft doctor filters trust --list List trusted filter project paths");
18592
- console.log(" aft doctor filters untrust Remove trusted project paths");
19125
+ console.log(` ${CLI} doctor filters List built-in, user, and project filters`);
19126
+ console.log(` ${CLI} doctor filters --show <name> Show resolved TOML for a filter`);
19127
+ console.log(` ${CLI} doctor filters trust Trust current project's .aft/filters`);
19128
+ console.log(` ${CLI} doctor filters trust --list List trusted filter project paths`);
19129
+ console.log(` ${CLI} doctor filters untrust Remove trusted project paths`);
18593
19130
  }
18594
19131
  async function runDoctorFilters(options) {
18595
19132
  const mode = parseMode(options.argv);
@@ -18743,7 +19280,7 @@ function pushSection(lines, title, filters, titleHasOpenParen = false) {
18743
19280
  }
18744
19281
  for (const filter of filters) {
18745
19282
  const description = filter.error ? `invalid — ${filter.error}` : truncate(filter.description ?? "");
18746
- const trust = filter.source.startsWith("project") && filter.trusted === false ? filter.error ? " (untrusted)" : " (untrusted — run `aft doctor filters trust` to enable)" : "";
19283
+ const trust = filter.source.startsWith("project") && filter.trusted === false ? filter.error ? " (untrusted)" : ` (untrusted — run \`${CLI} doctor filters trust\` to enable)` : "";
18747
19284
  lines.push(` ${filter.name.padEnd(20)} ${description}${trust}`.trimEnd());
18748
19285
  }
18749
19286
  }
@@ -18818,7 +19355,7 @@ var init_doctor_filters = __esm(async () => {
18818
19355
  });
18819
19356
 
18820
19357
  // src/lib/binary-cache.ts
18821
- import { existsSync as existsSync14, readdirSync as readdirSync5, statSync as statSync8 } from "node:fs";
19358
+ import { existsSync as existsSync14, readdirSync as readdirSync5, statSync as statSync9 } from "node:fs";
18822
19359
  import { join as join17 } from "node:path";
18823
19360
  function getBinaryCacheInfo(activeVersion) {
18824
19361
  const path2 = getAftBinaryCacheDir();
@@ -18832,7 +19369,7 @@ function getBinaryCacheInfo(activeVersion) {
18832
19369
  }
18833
19370
  const versions = readdirSync5(path2).filter((entry) => {
18834
19371
  try {
18835
- return statSync8(join17(path2, entry)).isDirectory();
19372
+ return statSync9(join17(path2, entry)).isDirectory();
18836
19373
  } catch {
18837
19374
  return false;
18838
19375
  }
@@ -18930,7 +19467,7 @@ var init_sanitize = __esm(() => {
18930
19467
  });
18931
19468
 
18932
19469
  // src/lib/bridge-tool-failures.ts
18933
- import { closeSync as closeSync5, existsSync as existsSync15, openSync as openSync5, readSync as readSync2, statSync as statSync9 } from "node:fs";
19470
+ import { closeSync as closeSync5, existsSync as existsSync15, openSync as openSync5, readSync as readSync2, statSync as statSync10 } from "node:fs";
18934
19471
  function resolveBridgePluginLogPath() {
18935
19472
  const isTestEnv = process.env.BUN_TEST === "1" || false;
18936
19473
  return resolveAftLogPath(isTestEnv ? "aft-plugin-test.log" : "aft-plugin.log");
@@ -18940,7 +19477,7 @@ function tailLogFileBytes(path2, maxBytes) {
18940
19477
  return "";
18941
19478
  let fd = null;
18942
19479
  try {
18943
- const size = statSync9(path2).size;
19480
+ const size = statSync10(path2).size;
18944
19481
  if (size === 0)
18945
19482
  return "";
18946
19483
  const readLength = Math.min(size, maxBytes);
@@ -19072,7 +19609,7 @@ var init_bridge_tool_failures = __esm(() => {
19072
19609
  });
19073
19610
 
19074
19611
  // src/lib/legacy-storage.ts
19075
- import { existsSync as existsSync16, readdirSync as readdirSync6, statSync as statSync10 } from "node:fs";
19612
+ import { existsSync as existsSync16, readdirSync as readdirSync6, statSync as statSync11 } from "node:fs";
19076
19613
  import { join as join18 } from "node:path";
19077
19614
  function summarizeLegacyPartitionDuplication(storageRoot) {
19078
19615
  if (!existsSync16(storageRoot)) {
@@ -19177,14 +19714,14 @@ function safeReadDir(path2) {
19177
19714
  }
19178
19715
  function isDirectory(path2) {
19179
19716
  try {
19180
- return statSync10(path2).isDirectory();
19717
+ return statSync11(path2).isDirectory();
19181
19718
  } catch {
19182
19719
  return false;
19183
19720
  }
19184
19721
  }
19185
19722
  function safeFileSize(path2) {
19186
19723
  try {
19187
- return statSync10(path2).isFile() ? statSync10(path2).size : 0;
19724
+ return statSync11(path2).isFile() ? statSync11(path2).size : 0;
19188
19725
  } catch {
19189
19726
  return 0;
19190
19727
  }
@@ -19196,7 +19733,7 @@ var init_legacy_storage = __esm(() => {
19196
19733
  });
19197
19734
 
19198
19735
  // src/lib/lsp-cache.ts
19199
- import { existsSync as existsSync17, readdirSync as readdirSync7, rmSync as rmSync5, statSync as statSync11 } from "node:fs";
19736
+ import { existsSync as existsSync17, readdirSync as readdirSync7, rmSync as rmSync5, statSync as statSync12 } from "node:fs";
19200
19737
  import { join as join19 } from "node:path";
19201
19738
  function inspectDir(path2) {
19202
19739
  if (!existsSync17(path2)) {
@@ -19213,7 +19750,7 @@ function inspectDir(path2) {
19213
19750
  for (const name of names) {
19214
19751
  const full = join19(path2, name);
19215
19752
  try {
19216
- if (!statSync11(full).isDirectory())
19753
+ if (!statSync12(full).isDirectory())
19217
19754
  continue;
19218
19755
  const size = dirSize(full);
19219
19756
  entries.push({
@@ -19488,7 +20025,7 @@ import {
19488
20025
  existsSync as existsSync19,
19489
20026
  openSync as openSync6,
19490
20027
  readSync as readSync3,
19491
- statSync as statSync12
20028
+ statSync as statSync13
19492
20029
  } from "node:fs";
19493
20030
  async function collectDiagnostics(adapters) {
19494
20031
  const cliVersion = getSelfVersion();
@@ -19579,7 +20116,7 @@ async function diagnoseHarness(adapter) {
19579
20116
  logFile: {
19580
20117
  path: logPath,
19581
20118
  exists: existsSync19(logPath),
19582
- sizeKb: existsSync19(logPath) ? Math.round(statSync12(logPath).size / 1024) : 0
20119
+ sizeKb: existsSync19(logPath) ? Math.round(statSync13(logPath).size / 1024) : 0
19583
20120
  }
19584
20121
  };
19585
20122
  }
@@ -19693,7 +20230,7 @@ function collectDiagnosticIssues(report) {
19693
20230
  severity: "high",
19694
20231
  scope: "AFT binary",
19695
20232
  message: `No aft binary matching CLI ${report.cliVersion} was detected.`,
19696
- remediation: "Run `aft doctor --fix` to download the matching binary, or start an AFT-enabled session to trigger plugin-side install."
20233
+ remediation: `Run \`${CLI} doctor --fix\` to download the matching binary, or start an AFT-enabled session to trigger plugin-side install.`
19697
20234
  });
19698
20235
  }
19699
20236
  for (const h2 of report.harnesses) {
@@ -19703,7 +20240,7 @@ function collectDiagnosticIssues(report) {
19703
20240
  severity: "high",
19704
20241
  scope: h2.displayName,
19705
20242
  message: "Host CLI is not installed or is not on PATH.",
19706
- remediation: `Install ${h2.displayName} and rerun \`aft doctor\`.`
20243
+ remediation: `Install ${h2.displayName} and rerun \`${CLI} doctor\`.`
19707
20244
  });
19708
20245
  continue;
19709
20246
  }
@@ -19713,7 +20250,7 @@ function collectDiagnosticIssues(report) {
19713
20250
  severity: "medium",
19714
20251
  scope: h2.displayName,
19715
20252
  message: "AFT plugin is not registered with this harness.",
19716
- remediation: "Run `aft setup` or `aft doctor --fix` to register the plugin."
20253
+ remediation: `Run \`${CLI} setup\` or \`${CLI} doctor --fix\` to register the plugin.`
19717
20254
  });
19718
20255
  }
19719
20256
  if (h2.aftConfig.parseError) {
@@ -19735,7 +20272,7 @@ function collectDiagnosticIssues(report) {
19735
20272
  severity: "medium",
19736
20273
  scope: h2.displayName,
19737
20274
  message: h2.onnxRuntime.ignoredSystemPath ? `ONNX Runtime at ${h2.onnxRuntime.ignoredSystemPath} has a ${h2.onnxRuntime.ignoredSystemReason}; no compatible runtime was detected.` : "ONNX Runtime is required for semantic search but was not detected.",
19738
- remediation: `Run \`aft doctor --fix\` or install ONNX Runtime manually (${h2.onnxRuntime.installHint}).`
20275
+ remediation: `Run \`${CLI} doctor --fix\` or install ONNX Runtime manually (${h2.onnxRuntime.installHint}).`
19739
20276
  });
19740
20277
  }
19741
20278
  if (h2.onnxRuntime.cachedCompatible === false) {
@@ -19744,7 +20281,7 @@ function collectDiagnosticIssues(report) {
19744
20281
  severity: "medium",
19745
20282
  scope: h2.displayName,
19746
20283
  message: `Cached ONNX Runtime ${h2.onnxRuntime.cachedVersion ?? "unknown"} is incompatible (requires ${h2.onnxRuntime.requirement}).`,
19747
- remediation: "Run `aft doctor --fix` to refresh AFT-managed ONNX Runtime state."
20284
+ remediation: `Run \`${CLI} doctor --fix\` to refresh AFT-managed ONNX Runtime state.`
19748
20285
  });
19749
20286
  }
19750
20287
  if (h2.onnxRuntime.systemCompatible === false) {
@@ -19782,7 +20319,7 @@ function tailLogFile(path2, lines) {
19782
20319
  const chunkSize = 64 * 1024;
19783
20320
  let fd = null;
19784
20321
  try {
19785
- const size = statSync12(path2).size;
20322
+ const size = statSync13(path2).size;
19786
20323
  fd = openSync6(path2, "r");
19787
20324
  const chunks = [];
19788
20325
  let position = size;
@@ -20070,7 +20607,7 @@ var init_onnx_fix = __esm(() => {
20070
20607
  });
20071
20608
 
20072
20609
  // src/lib/sessions.ts
20073
- import { existsSync as existsSync21, readdirSync as readdirSync9, readFileSync as readFileSync10, statSync as statSync13 } from "node:fs";
20610
+ import { existsSync as existsSync21, readdirSync as readdirSync9, readFileSync as readFileSync10, statSync as statSync14 } from "node:fs";
20074
20611
  import { createRequire as createRequire5 } from "node:module";
20075
20612
  import { homedir as homedir18 } from "node:os";
20076
20613
  import { basename as basename4, join as join22 } from "node:path";
@@ -20137,7 +20674,7 @@ function listPiSessionsFromDir(sessionsDir) {
20137
20674
  return [];
20138
20675
  const files = collectJsonlFiles(sessionsDir).map((filePath) => {
20139
20676
  try {
20140
- const stats = statSync13(filePath);
20677
+ const stats = statSync14(filePath);
20141
20678
  return { filePath, mtimeMs: stats.mtimeMs };
20142
20679
  } catch {
20143
20680
  return null;
@@ -20277,7 +20814,7 @@ import {
20277
20814
  readFileSync as readFileSync11,
20278
20815
  realpathSync as realpathSync5,
20279
20816
  rmSync as rmSync7,
20280
- statSync as statSync14,
20817
+ statSync as statSync15,
20281
20818
  writeFileSync as writeFileSync5
20282
20819
  } from "node:fs";
20283
20820
  import { tmpdir as tmpdir2 } from "node:os";
@@ -20286,7 +20823,7 @@ async function runDoctor(options) {
20286
20823
  if (options.issue) {
20287
20824
  return runIssueFlow(options.argv);
20288
20825
  }
20289
- intro("AFT doctor");
20826
+ intro(`${CLI} doctor`);
20290
20827
  if (options.fix) {
20291
20828
  return runFixFlow(options.argv);
20292
20829
  }
@@ -20303,11 +20840,11 @@ async function runDoctor(options) {
20303
20840
  const hasEnabledRegisteredHarness = report.harnesses.some((h2) => h2.pluginRegistered && h2.aftConfig.enabled);
20304
20841
  const hasRegisteredHarness = report.harnesses.some((h2) => h2.pluginRegistered);
20305
20842
  if (hasEnabledRegisteredHarness) {
20306
- log2.warn(" no matching aft binary detected — run `aft doctor --fix` to download, or it will install automatically when an AFT-enabled session makes its first tool call");
20843
+ log2.warn(` no matching aft binary detected — run \`${CLI} doctor --fix\` to download, or it will install automatically when an AFT-enabled session makes its first tool call`);
20307
20844
  } else if (hasRegisteredHarness) {
20308
20845
  log2.info(" no matching aft binary detected; all registered AFT harnesses are disabled by config");
20309
20846
  } else {
20310
- log2.warn(" no matching aft binary detected — run `aft doctor --fix` to download");
20847
+ log2.warn(` no matching aft binary detected — run \`${CLI} doctor --fix\` to download`);
20311
20848
  }
20312
20849
  logUnmatchedBinaryCandidates(report.cliVersion);
20313
20850
  }
@@ -20331,7 +20868,7 @@ async function runDoctor(options) {
20331
20868
  log2.info(` AFT disabled by config${h2.aftConfig.enabledSource ? ` (${h2.aftConfig.enabledSource})` : ""}; plugin will stay inert`);
20332
20869
  }
20333
20870
  if (!h2.pluginRegistered) {
20334
- log2.warn(" plugin registration can be fixed with `aft setup` or `aft doctor --fix`");
20871
+ log2.warn(` plugin registration can be fixed with \`${CLI} setup\` or \`${CLI} doctor --fix\``);
20335
20872
  }
20336
20873
  log2.info(` aft config: ${h2.aftConfig.exists ? h2.configPaths.aftConfig : "(not set)"}`);
20337
20874
  if (h2.aftConfig.parseError) {
@@ -20339,7 +20876,7 @@ async function runDoctor(options) {
20339
20876
  } else if (h2.aftConfig.exists) {
20340
20877
  const { value } = readJsoncFile(h2.configPaths.aftConfig);
20341
20878
  const schemaSet = value?.$schema === AFT_SCHEMA_URL;
20342
- log2.info(` aft config $schema: ${schemaSet ? "set" : "not set — run `aft doctor --fix` for editor autocomplete"}`);
20879
+ log2.info(` aft config $schema: ${schemaSet ? "set" : `not set — run \`${CLI} doctor --fix\` for editor autocomplete`}`);
20343
20880
  }
20344
20881
  log2.info(` storage: ${formatDoctorStorageStatus(h2)}`);
20345
20882
  if (h2.onnxRuntime.required) {
@@ -20357,7 +20894,7 @@ async function runDoctor(options) {
20357
20894
  parts.push(`not installed — ${h2.onnxRuntime.installHint}`);
20358
20895
  }
20359
20896
  if (h2.onnxRuntime.cachedCompatible === false || h2.onnxRuntime.systemCompatible === false) {
20360
- parts.push("needs reinstall — run `aft doctor --fix`");
20897
+ parts.push(`needs reinstall — run \`${CLI} doctor --fix\``);
20361
20898
  }
20362
20899
  log2.info(` onnx runtime: ${parts.join(" · ")}`);
20363
20900
  } else {
@@ -20370,7 +20907,7 @@ async function runDoctor(options) {
20370
20907
  }
20371
20908
  if (hadProblems) {
20372
20909
  logDoctorIssues(report);
20373
- note("Run `aft setup` or `aft doctor --fix` to register AFT with any harness showing `plugin registered: no`. Run `aft doctor --fix` for ONNX Runtime issues or to download a missing aft binary.", "Tips");
20910
+ note(`Run \`${CLI} setup\` or \`${CLI} doctor --fix\` to register AFT with any harness showing \`plugin registered: no\`. Run \`${CLI} doctor --fix\` for ONNX Runtime issues or to download a missing aft binary.`, "Tips");
20374
20911
  outro("Done — some issues found.");
20375
20912
  return 1;
20376
20913
  }
@@ -20461,7 +20998,7 @@ function clearOldBinaries() {
20461
20998
  const dir = join23(info.path, version);
20462
20999
  let bytes = 0;
20463
21000
  try {
20464
- bytes = statSync14(dir).isDirectory() ? dirSize(dir) : 0;
21001
+ bytes = statSync15(dir).isDirectory() ? dirSize(dir) : 0;
20465
21002
  } catch {
20466
21003
  bytes = 0;
20467
21004
  }
@@ -20741,7 +21278,7 @@ async function runFixFlow(argv) {
20741
21278
  const onnxResult = await runOnnxFix(adapters, report, { yes: true });
20742
21279
  if (onnxResult === null && !binaryDownloaded && !binaryDownloadSkipped && !binaryDownloadError && storageSummary.created === 0 && storageSummary.errors === 0 && schemaSummary.changed === 0 && schemaSummary.errors === 0 && pluginUpdateSummary.updated === 0 && pluginUpdateSummary.errors === 0) {
20743
21280
  log2.info("No auto-fixable issues detected.");
20744
- note("If you're still seeing 'Semantic Index: failed' in the TUI sidebar, run `aft doctor` (without --fix) for a full diagnostic dump.", "Tip");
21281
+ note(`If you're still seeing 'Semantic Index: failed' in the TUI sidebar, run \`${CLI} doctor\` (without --fix) for a full diagnostic dump.`, "Tip");
20745
21282
  const afterReport2 = await collectDiagnostics(adapters);
20746
21283
  const stillHasProblems2 = hasDoctorProblems(afterReport2);
20747
21284
  outro(stillHasProblems2 ? "Done — some issues remain." : "Done.");
@@ -20791,7 +21328,7 @@ async function confirmBinaryDownloadDespitePluginSkew(report, argv) {
20791
21328
  return true;
20792
21329
  }
20793
21330
  if (decision === "skip") {
20794
- log2.info("Skipped binary download. Update the plugin to @latest, then rerun `aft doctor --fix`.");
21331
+ log2.info(`Skipped binary download. Update the plugin to @latest, then rerun \`${CLI} doctor --fix\`.`);
20795
21332
  return false;
20796
21333
  }
20797
21334
  return confirm2("Download/cache the CLI-matching binary anyway for after you update the plugin?", false);
@@ -20975,9 +21512,9 @@ function shortSessionId(id) {
20975
21512
  return bareId.length <= 12 ? bareId : bareId.slice(0, 12);
20976
21513
  }
20977
21514
  async function runIssueFlow(argv) {
20978
- intro("AFT doctor --issue");
21515
+ intro(`${CLI} doctor --issue`);
20979
21516
  if (!isInteractiveTerminal()) {
20980
- note("Non-interactive terminal — not collecting or filing automatically. Run `aft doctor --issue` from an interactive terminal so you can describe and review the report before filing.", "Manual filing");
21517
+ note(`Non-interactive terminal — not collecting or filing automatically. Run \`${CLI} doctor --issue\` from an interactive terminal so you can describe and review the report before filing.`, "Manual filing");
20981
21518
  outro("Done.");
20982
21519
  return 0;
20983
21520
  }
@@ -21145,11 +21682,11 @@ function printHelp() {
21145
21682
  console.log(" (default: auto-detect, prompt if multiple detected)");
21146
21683
  console.log("");
21147
21684
  console.log(" Usage:");
21148
- console.log(" npx @cortexkit/aft setup");
21149
- console.log(" npx @cortexkit/aft doctor");
21150
- console.log(" npx @cortexkit/aft doctor lsp ./src/main.py");
21151
- console.log(" npx @cortexkit/aft doctor --clear");
21152
- console.log(" npx @cortexkit/aft doctor --issue");
21685
+ console.log(` ${CLI} setup`);
21686
+ console.log(` ${CLI} doctor`);
21687
+ console.log(` ${CLI} doctor lsp ./src/main.py`);
21688
+ console.log(` ${CLI} doctor --clear`);
21689
+ console.log(` ${CLI} doctor --issue`);
21153
21690
  console.log("");
21154
21691
  }
21155
21692
  async function main() {
@@ -1 +1 @@
1
- {"version":3,"file":"aft-bridge.d.ts","sourceRoot":"","sources":["../../src/lib/aft-bridge.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAwBD,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,WAAW,CAAC,CAKtB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,UAAU,EAAE,GACrB,OAAO,CAAC,WAAW,EAAE,CAAC,CA6FxB"}
1
+ {"version":3,"file":"aft-bridge.d.ts","sourceRoot":"","sources":["../../src/lib/aft-bridge.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAwBD,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,WAAW,CAAC,CAKtB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,UAAU,EAAE,GACrB,OAAO,CAAC,WAAW,EAAE,CAAC,CA6FxB"}
@@ -0,0 +1,2 @@
1
+ export declare const CLI = "npx @cortexkit/aft";
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/lib/cli.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,GAAG,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexkit/aft",
3
- "version": "0.48.1",
3
+ "version": "0.49.1",
4
4
  "type": "module",
5
5
  "description": "Unified CLI for Agent File Tools (AFT) — setup, doctor, and diagnostics across supported agent harnesses (OpenCode, Pi)",
6
6
  "license": "MIT",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@clack/prompts": "^1.6.0",
27
- "@cortexkit/aft-bridge": "0.48.1",
27
+ "@cortexkit/aft-bridge": "0.49.1",
28
28
  "comment-json": "^4.6.2"
29
29
  },
30
30
  "devDependencies": {