@cortexkit/aft 0.48.0 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/doctor-filters.d.ts.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/lsp.d.ts.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/index.d.ts +1 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +486 -35
- package/dist/lib/aft-bridge.d.ts.map +1 -1
- package/dist/lib/cli.d.ts +2 -0
- package/dist/lib/cli.d.ts.map +1 -0
- package/dist/lib/diagnostics.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -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;
|
|
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":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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":"
|
|
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
|
-
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG
|
|
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;
|
|
@@ -2400,6 +2403,27 @@ ${reflowText}`;
|
|
|
2400
2403
|
return " Auto-formatted.";
|
|
2401
2404
|
}
|
|
2402
2405
|
|
|
2406
|
+
// ../aft-bridge/dist/error-contract.js
|
|
2407
|
+
function toolErrorFromResponse(command, response) {
|
|
2408
|
+
const code = typeof response.code === "string" && response.code.length > 0 ? response.code : "unknown_error";
|
|
2409
|
+
const message = typeof response.message === "string" && response.message.length > 0 ? response.message : `${command} failed`;
|
|
2410
|
+
return new AftToolError(message, code, response);
|
|
2411
|
+
}
|
|
2412
|
+
var AftToolError;
|
|
2413
|
+
var init_error_contract = __esm(() => {
|
|
2414
|
+
AftToolError = class AftToolError extends Error {
|
|
2415
|
+
code;
|
|
2416
|
+
response;
|
|
2417
|
+
constructor(message, code, response) {
|
|
2418
|
+
const cause = { code, message, response };
|
|
2419
|
+
super(message, { cause });
|
|
2420
|
+
this.name = "AftToolError";
|
|
2421
|
+
this.code = code;
|
|
2422
|
+
this.response = response;
|
|
2423
|
+
}
|
|
2424
|
+
};
|
|
2425
|
+
});
|
|
2426
|
+
|
|
2403
2427
|
// ../aft-bridge/dist/format.js
|
|
2404
2428
|
function formatTokenCount(n) {
|
|
2405
2429
|
if (!Number.isFinite(n) || n < 0)
|
|
@@ -4126,6 +4150,425 @@ var init_onnx_runtime = __esm(() => {
|
|
|
4126
4150
|
};
|
|
4127
4151
|
});
|
|
4128
4152
|
|
|
4153
|
+
// ../aft-bridge/dist/path-aliases.js
|
|
4154
|
+
function isWellFormedUnicodeString(value) {
|
|
4155
|
+
for (let index = 0;index < value.length; index++) {
|
|
4156
|
+
const codeUnit = value.charCodeAt(index);
|
|
4157
|
+
if (codeUnit >= 55296 && codeUnit <= 56319) {
|
|
4158
|
+
const next = value.charCodeAt(index + 1);
|
|
4159
|
+
if (next < 56320 || next > 57343 || Number.isNaN(next))
|
|
4160
|
+
return false;
|
|
4161
|
+
index++;
|
|
4162
|
+
} else if (codeUnit >= 56320 && codeUnit <= 57343) {
|
|
4163
|
+
return false;
|
|
4164
|
+
}
|
|
4165
|
+
}
|
|
4166
|
+
return true;
|
|
4167
|
+
}
|
|
4168
|
+
function hasOwn(record, key) {
|
|
4169
|
+
return Object.hasOwn(record, key);
|
|
4170
|
+
}
|
|
4171
|
+
function invalidPathValue(property) {
|
|
4172
|
+
throw new InvalidRequestError(`'${property}' must be a non-empty well-formed Unicode string`);
|
|
4173
|
+
}
|
|
4174
|
+
function pathValue(record, property) {
|
|
4175
|
+
const value = record[property];
|
|
4176
|
+
if (typeof value !== "string" || value.length === 0 || !isWellFormedUnicodeString(value)) {
|
|
4177
|
+
invalidPathValue(property);
|
|
4178
|
+
}
|
|
4179
|
+
return value;
|
|
4180
|
+
}
|
|
4181
|
+
function normalizeAliasPair(record, canonical, legacy, required) {
|
|
4182
|
+
const hasCanonical = hasOwn(record, canonical);
|
|
4183
|
+
const hasLegacy = hasOwn(record, legacy);
|
|
4184
|
+
if (!hasCanonical && !hasLegacy) {
|
|
4185
|
+
if (required) {
|
|
4186
|
+
throw new InvalidRequestError(`'${canonical}' is required`);
|
|
4187
|
+
}
|
|
4188
|
+
return;
|
|
4189
|
+
}
|
|
4190
|
+
if (hasCanonical && hasLegacy) {
|
|
4191
|
+
let canonicalValue;
|
|
4192
|
+
let legacyValue;
|
|
4193
|
+
try {
|
|
4194
|
+
canonicalValue = pathValue(record, canonical);
|
|
4195
|
+
legacyValue = pathValue(record, legacy);
|
|
4196
|
+
} catch {
|
|
4197
|
+
throw new InvalidRequestError(`Invalid request: '${canonical}' and '${legacy}' must both be non-empty well-formed Unicode strings`);
|
|
4198
|
+
}
|
|
4199
|
+
if (canonicalValue !== legacyValue) {
|
|
4200
|
+
throw new InvalidRequestError(`Invalid request: '${canonical}' and '${legacy}' must contain equal decoded strings`);
|
|
4201
|
+
}
|
|
4202
|
+
delete record[legacy];
|
|
4203
|
+
return;
|
|
4204
|
+
}
|
|
4205
|
+
if (hasCanonical) {
|
|
4206
|
+
pathValue(record, canonical);
|
|
4207
|
+
return;
|
|
4208
|
+
}
|
|
4209
|
+
record[canonical] = pathValue(record, legacy);
|
|
4210
|
+
delete record[legacy];
|
|
4211
|
+
}
|
|
4212
|
+
function validateOptionalCanonicalPath(record, property) {
|
|
4213
|
+
if (hasOwn(record, property))
|
|
4214
|
+
pathValue(record, property);
|
|
4215
|
+
}
|
|
4216
|
+
function normalizeZoomTargets(record) {
|
|
4217
|
+
if (!hasOwn(record, "targets"))
|
|
4218
|
+
return;
|
|
4219
|
+
const targets = record.targets;
|
|
4220
|
+
const normalizeTarget = (target, index) => {
|
|
4221
|
+
if (!target || typeof target !== "object" || Array.isArray(target)) {
|
|
4222
|
+
throw new InvalidRequestError(`'targets[${index}].path' must be a non-empty string`);
|
|
4223
|
+
}
|
|
4224
|
+
const source = target;
|
|
4225
|
+
const emptyTarget = source.symbol === "" && (hasOwn(source, "path") && source.path === "" || hasOwn(source, "filePath") && source.filePath === "");
|
|
4226
|
+
if (emptyTarget)
|
|
4227
|
+
return { ...source };
|
|
4228
|
+
const normalized = { ...source };
|
|
4229
|
+
try {
|
|
4230
|
+
normalizeAliasPair(normalized, "path", "filePath", true);
|
|
4231
|
+
} catch (error2) {
|
|
4232
|
+
if (error2 instanceof InvalidRequestError) {
|
|
4233
|
+
throw new InvalidRequestError(error2.message.replace("'filePath'", `'targets[${index}].filePath'`).replace("'path'", `'targets[${index}].path'`));
|
|
4234
|
+
}
|
|
4235
|
+
throw error2;
|
|
4236
|
+
}
|
|
4237
|
+
return normalized;
|
|
4238
|
+
};
|
|
4239
|
+
if (Array.isArray(targets)) {
|
|
4240
|
+
if (targets.length === 0)
|
|
4241
|
+
return;
|
|
4242
|
+
record.targets = targets.map(normalizeTarget);
|
|
4243
|
+
return;
|
|
4244
|
+
}
|
|
4245
|
+
if (targets && typeof targets === "object") {
|
|
4246
|
+
record.targets = normalizeTarget(targets, 0);
|
|
4247
|
+
}
|
|
4248
|
+
}
|
|
4249
|
+
function bareToolName(toolName) {
|
|
4250
|
+
const bare = toolName.startsWith("aft_") ? toolName.slice(4) : toolName;
|
|
4251
|
+
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") {
|
|
4252
|
+
return bare;
|
|
4253
|
+
}
|
|
4254
|
+
return;
|
|
4255
|
+
}
|
|
4256
|
+
function prepareCanonicalPathArguments(toolName, rawArguments) {
|
|
4257
|
+
if (!rawArguments || typeof rawArguments !== "object" || Array.isArray(rawArguments)) {
|
|
4258
|
+
throw new InvalidRequestError("tool arguments must be an object");
|
|
4259
|
+
}
|
|
4260
|
+
const tool = bareToolName(toolName);
|
|
4261
|
+
const record = { ...rawArguments };
|
|
4262
|
+
if (!tool)
|
|
4263
|
+
return record;
|
|
4264
|
+
switch (tool) {
|
|
4265
|
+
case "read":
|
|
4266
|
+
case "write":
|
|
4267
|
+
case "edit":
|
|
4268
|
+
case "move":
|
|
4269
|
+
case "import":
|
|
4270
|
+
case "refactor":
|
|
4271
|
+
normalizeAliasPair(record, "path", "filePath", true);
|
|
4272
|
+
break;
|
|
4273
|
+
case "zoom":
|
|
4274
|
+
normalizeAliasPair(record, "path", "filePath", false);
|
|
4275
|
+
normalizeZoomTargets(record);
|
|
4276
|
+
break;
|
|
4277
|
+
case "callgraph":
|
|
4278
|
+
normalizeAliasPair(record, "path", "filePath", true);
|
|
4279
|
+
normalizeAliasPair(record, "toPath", "toFile", false);
|
|
4280
|
+
break;
|
|
4281
|
+
case "safety":
|
|
4282
|
+
normalizeAliasPair(record, "path", "filePath", false);
|
|
4283
|
+
break;
|
|
4284
|
+
case "grep":
|
|
4285
|
+
case "search":
|
|
4286
|
+
case "conflicts":
|
|
4287
|
+
validateOptionalCanonicalPath(record, "path");
|
|
4288
|
+
break;
|
|
4289
|
+
}
|
|
4290
|
+
return record;
|
|
4291
|
+
}
|
|
4292
|
+
function prepareCanonicalEditArguments(toolName, rawArguments) {
|
|
4293
|
+
if (!rawArguments || typeof rawArguments !== "object" || Array.isArray(rawArguments)) {
|
|
4294
|
+
throw new InvalidRequestError("tool arguments must be an object");
|
|
4295
|
+
}
|
|
4296
|
+
const raw = rawArguments;
|
|
4297
|
+
const record = copyOwnProperties(raw);
|
|
4298
|
+
normalizeEditPathAlias(record);
|
|
4299
|
+
const suppliedLineFields = ["startLine", "endLine"].filter((key) => hasOwn(record, key));
|
|
4300
|
+
if (suppliedLineFields.length > 0) {
|
|
4301
|
+
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 }].");
|
|
4302
|
+
}
|
|
4303
|
+
const isOpenCodeRetiredBoundary = toolName === "aft_edit";
|
|
4304
|
+
const retiredFields = ["file", "mode"].filter((key) => hasOwn(record, key));
|
|
4305
|
+
if (retiredFields.length > 0 && isOpenCodeRetiredBoundary) {
|
|
4306
|
+
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`.");
|
|
4307
|
+
}
|
|
4308
|
+
const unknownRootKeys = Object.getOwnPropertyNames(record).filter((key) => !EDIT_ROOT_CANONICAL_KEYS.has(key) && !EDIT_ROOT_COMPATIBILITY_KEYS.has(key) && key !== "filePath").sort();
|
|
4309
|
+
if (unknownRootKeys.length > 0) {
|
|
4310
|
+
throw new InvalidRequestError(formatUnknownKeys(unknownRootKeys));
|
|
4311
|
+
}
|
|
4312
|
+
const modes = editModesPresent(record);
|
|
4313
|
+
if (modes.length > 1) {
|
|
4314
|
+
throw new InvalidRequestError(`edit: conflicting modes: ${modes.join(", ")}`);
|
|
4315
|
+
}
|
|
4316
|
+
if (modes.length === 0) {
|
|
4317
|
+
throw new InvalidRequestError("edit: exactly one of `appendContent`, `edits`, or `symbol` plus `content` is required");
|
|
4318
|
+
}
|
|
4319
|
+
const mode = modes[0];
|
|
4320
|
+
if (mode === "appendContent") {
|
|
4321
|
+
if (typeof record.appendContent !== "string") {
|
|
4322
|
+
throw new InvalidRequestError("edit: 'appendContent' must be a string");
|
|
4323
|
+
}
|
|
4324
|
+
} else if (mode === "edits") {
|
|
4325
|
+
const parsedEdits = parseEditArray(record.edits);
|
|
4326
|
+
record.edits = parsedEdits.map((item, index) => normalizeEditItem(item, index));
|
|
4327
|
+
} else if (mode === "symbol/content") {
|
|
4328
|
+
if (!hasOwn(record, "symbol") || typeof record.symbol !== "string") {
|
|
4329
|
+
throw new InvalidRequestError("edit: 'symbol' must be a string when symbol mode is selected");
|
|
4330
|
+
}
|
|
4331
|
+
if (!hasOwn(record, "content") || typeof record.content !== "string") {
|
|
4332
|
+
throw new InvalidRequestError("edit: symbol mode requires both 'symbol' and 'content' string properties");
|
|
4333
|
+
}
|
|
4334
|
+
} else {
|
|
4335
|
+
const item = {};
|
|
4336
|
+
for (const key of EDIT_ROOT_COMPATIBILITY_KEYS) {
|
|
4337
|
+
if (hasOwn(record, key))
|
|
4338
|
+
item[key] = record[key];
|
|
4339
|
+
}
|
|
4340
|
+
record.edits = [normalizeEditItem(item, 0)];
|
|
4341
|
+
for (const key of EDIT_ROOT_COMPATIBILITY_KEYS)
|
|
4342
|
+
delete record[key];
|
|
4343
|
+
}
|
|
4344
|
+
validateEditPath(record);
|
|
4345
|
+
return record;
|
|
4346
|
+
}
|
|
4347
|
+
function normalizeEditPathAlias(record) {
|
|
4348
|
+
const hasCanonical = hasOwn(record, "path");
|
|
4349
|
+
const hasLegacy = hasOwn(record, "filePath");
|
|
4350
|
+
if (!hasCanonical && !hasLegacy)
|
|
4351
|
+
return;
|
|
4352
|
+
if (hasCanonical && hasLegacy) {
|
|
4353
|
+
let canonical;
|
|
4354
|
+
let legacy;
|
|
4355
|
+
try {
|
|
4356
|
+
canonical = pathValue(record, "path");
|
|
4357
|
+
legacy = pathValue(record, "filePath");
|
|
4358
|
+
} catch {
|
|
4359
|
+
throw new InvalidRequestError("Invalid request: 'path' and 'filePath' must both be non-empty well-formed Unicode strings");
|
|
4360
|
+
}
|
|
4361
|
+
if (canonical !== legacy) {
|
|
4362
|
+
throw new InvalidRequestError("Invalid request: 'path' and 'filePath' must contain equal decoded strings");
|
|
4363
|
+
}
|
|
4364
|
+
delete record.filePath;
|
|
4365
|
+
return;
|
|
4366
|
+
}
|
|
4367
|
+
if (!hasCanonical) {
|
|
4368
|
+
record.path = pathValue(record, "filePath");
|
|
4369
|
+
delete record.filePath;
|
|
4370
|
+
}
|
|
4371
|
+
}
|
|
4372
|
+
function validateEditPath(record) {
|
|
4373
|
+
if (!hasOwn(record, "path")) {
|
|
4374
|
+
throw new InvalidRequestError("'path' is required");
|
|
4375
|
+
}
|
|
4376
|
+
pathValue(record, "path");
|
|
4377
|
+
}
|
|
4378
|
+
function formatUnknownKeys(keys) {
|
|
4379
|
+
return `Unrecognized keys: ${keys.map((key) => `"${key}"`).join(", ")}`;
|
|
4380
|
+
}
|
|
4381
|
+
function editModesPresent(record) {
|
|
4382
|
+
const modes = [];
|
|
4383
|
+
if (hasOwn(record, "appendContent"))
|
|
4384
|
+
modes.push("appendContent");
|
|
4385
|
+
if (hasOwn(record, "edits"))
|
|
4386
|
+
modes.push("edits");
|
|
4387
|
+
if (hasOwn(record, "symbol") || hasOwn(record, "content"))
|
|
4388
|
+
modes.push("symbol/content");
|
|
4389
|
+
if (["oldString", "newString", "replaceAll", "occurrence"].some((key) => hasOwn(record, key))) {
|
|
4390
|
+
modes.push("oldString/newString");
|
|
4391
|
+
}
|
|
4392
|
+
return modes;
|
|
4393
|
+
}
|
|
4394
|
+
function parseEditArray(value) {
|
|
4395
|
+
if (typeof value === "string") {
|
|
4396
|
+
let parsed;
|
|
4397
|
+
try {
|
|
4398
|
+
parsed = JSON.parse(value);
|
|
4399
|
+
} catch {
|
|
4400
|
+
throw new InvalidRequestError("edit: 'edits' must contain valid JSON representing an array");
|
|
4401
|
+
}
|
|
4402
|
+
if (!Array.isArray(parsed)) {
|
|
4403
|
+
throw new InvalidRequestError("edit: 'edits' JSON must have an array root");
|
|
4404
|
+
}
|
|
4405
|
+
if (parsed.length === 0) {
|
|
4406
|
+
throw new InvalidRequestError("edit: 'edits' array must not be empty");
|
|
4407
|
+
}
|
|
4408
|
+
return parsed;
|
|
4409
|
+
}
|
|
4410
|
+
if (!Array.isArray(value)) {
|
|
4411
|
+
throw new InvalidRequestError("edit: 'edits' must be a non-empty array");
|
|
4412
|
+
}
|
|
4413
|
+
if (value.length === 0) {
|
|
4414
|
+
throw new InvalidRequestError("edit: 'edits' array must not be empty");
|
|
4415
|
+
}
|
|
4416
|
+
return value;
|
|
4417
|
+
}
|
|
4418
|
+
function normalizeEditItem(value, index) {
|
|
4419
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
4420
|
+
throw new InvalidRequestError(`edit: edits[${index}] must be an object`);
|
|
4421
|
+
}
|
|
4422
|
+
const source = value;
|
|
4423
|
+
const item = copyOwnProperties(source);
|
|
4424
|
+
normalizeItemAlias(item, "oldString", "oldText");
|
|
4425
|
+
normalizeItemAlias(item, "newString", "newText");
|
|
4426
|
+
const hasFindField = ["oldString", "newString", "replaceAll", "occurrence"].some((key) => hasOwn(item, key));
|
|
4427
|
+
const hasRangeField = ["startLine", "endLine", "content"].some((key) => hasOwn(item, key));
|
|
4428
|
+
if (hasFindField && hasRangeField) {
|
|
4429
|
+
throw new InvalidRequestError(`edit: edits[${index}] mixes find/replace and line-range fields`);
|
|
4430
|
+
}
|
|
4431
|
+
if (hasFindField) {
|
|
4432
|
+
if (!hasOwn(item, "oldString") || typeof item.oldString !== "string") {
|
|
4433
|
+
throw new InvalidRequestError(`edit: edits[${index}] requires string 'oldString'`);
|
|
4434
|
+
}
|
|
4435
|
+
if (hasOwn(item, "newString") && typeof item.newString !== "string") {
|
|
4436
|
+
throw new InvalidRequestError(`edit: edits[${index}].newString must be a string`);
|
|
4437
|
+
}
|
|
4438
|
+
coerceEditScalars(item, index);
|
|
4439
|
+
validateEditItemKeys(item, index);
|
|
4440
|
+
return item;
|
|
4441
|
+
}
|
|
4442
|
+
if (hasRangeField) {
|
|
4443
|
+
for (const key of ["startLine", "endLine"]) {
|
|
4444
|
+
const value2 = item[key];
|
|
4445
|
+
if (typeof value2 === "string" && /^[0-9]+$/.test(value2.trim())) {
|
|
4446
|
+
item[key] = Number(value2.trim());
|
|
4447
|
+
}
|
|
4448
|
+
if (!hasOwn(item, key) || !isPositiveSafeInteger(item[key])) {
|
|
4449
|
+
throw new InvalidRequestError(`edit: edits[${index}].${key} must be a positive integer`);
|
|
4450
|
+
}
|
|
4451
|
+
}
|
|
4452
|
+
if (item.startLine > item.endLine) {
|
|
4453
|
+
throw new InvalidRequestError(`edit: edits[${index}] requires startLine <= endLine`);
|
|
4454
|
+
}
|
|
4455
|
+
if (!hasOwn(item, "content") || typeof item.content !== "string") {
|
|
4456
|
+
throw new InvalidRequestError(`edit: edits[${index}] requires string 'content'`);
|
|
4457
|
+
}
|
|
4458
|
+
validateEditItemKeys(item, index);
|
|
4459
|
+
return item;
|
|
4460
|
+
}
|
|
4461
|
+
throw new InvalidRequestError(`edit: edits[${index}] must be a find/replace or line-range item`);
|
|
4462
|
+
}
|
|
4463
|
+
function normalizeItemAlias(item, canonical, legacy) {
|
|
4464
|
+
if (hasOwn(item, legacy)) {
|
|
4465
|
+
if (!hasOwn(item, canonical))
|
|
4466
|
+
item[canonical] = item[legacy];
|
|
4467
|
+
delete item[legacy];
|
|
4468
|
+
}
|
|
4469
|
+
}
|
|
4470
|
+
function validateEditItemKeys(item, index) {
|
|
4471
|
+
const unknown = Object.getOwnPropertyNames(item).filter((key) => !EDIT_ITEM_KEYS.has(key)).sort();
|
|
4472
|
+
if (unknown.length > 0) {
|
|
4473
|
+
throw new InvalidRequestError(`edit: edits[${index}] contains ${formatUnknownKeys(unknown)}`);
|
|
4474
|
+
}
|
|
4475
|
+
}
|
|
4476
|
+
function coerceEditScalars(item, index) {
|
|
4477
|
+
if (hasOwn(item, "replaceAll") && hasOwn(item, "occurrence")) {
|
|
4478
|
+
throw new InvalidRequestError(`edit: edits[${index}] cannot contain both 'replaceAll' and 'occurrence'`);
|
|
4479
|
+
}
|
|
4480
|
+
if (hasOwn(item, "replaceAll"))
|
|
4481
|
+
item.replaceAll = coerceEditBoolean(item.replaceAll, index);
|
|
4482
|
+
if (hasOwn(item, "occurrence")) {
|
|
4483
|
+
const occurrence = coerceEditOccurrence(item.occurrence, index);
|
|
4484
|
+
if (occurrence === undefined)
|
|
4485
|
+
delete item.occurrence;
|
|
4486
|
+
else
|
|
4487
|
+
item.occurrence = occurrence;
|
|
4488
|
+
}
|
|
4489
|
+
}
|
|
4490
|
+
function coerceEditBoolean(value, index) {
|
|
4491
|
+
if (typeof value === "boolean")
|
|
4492
|
+
return value;
|
|
4493
|
+
if (typeof value === "number" && Number.isFinite(value) && (value === 0 || value === 1)) {
|
|
4494
|
+
return value === 1;
|
|
4495
|
+
}
|
|
4496
|
+
if (typeof value === "string") {
|
|
4497
|
+
if (value === "1")
|
|
4498
|
+
return true;
|
|
4499
|
+
if (value === "0")
|
|
4500
|
+
return false;
|
|
4501
|
+
if (/^(?:true|false)$/i.test(value))
|
|
4502
|
+
return value.toLowerCase() === "true";
|
|
4503
|
+
}
|
|
4504
|
+
throw new InvalidRequestError(`edit: edits[${index}].replaceAll must be a boolean, true/false string, or 0/1`);
|
|
4505
|
+
}
|
|
4506
|
+
function coerceEditOccurrence(value, index) {
|
|
4507
|
+
if (value === null)
|
|
4508
|
+
return;
|
|
4509
|
+
if (typeof value === "string") {
|
|
4510
|
+
const trimmed = value.replace(ASCII_TRIM, "");
|
|
4511
|
+
if (trimmed.length === 0 || ASCII_WHITESPACE.test(trimmed))
|
|
4512
|
+
return;
|
|
4513
|
+
if (!/^[+]?[0-9]+$/.test(trimmed)) {
|
|
4514
|
+
throw new InvalidRequestError(`edit: edits[${index}].occurrence must be a positive integer`);
|
|
4515
|
+
}
|
|
4516
|
+
try {
|
|
4517
|
+
const parsed = BigInt(trimmed);
|
|
4518
|
+
if (parsed < 1n || parsed > BigInt(MAX_SAFE_INTEGER))
|
|
4519
|
+
throw new Error("out of range");
|
|
4520
|
+
return Number(parsed);
|
|
4521
|
+
} catch {
|
|
4522
|
+
throw new InvalidRequestError(`edit: edits[${index}].occurrence must be a positive integer`);
|
|
4523
|
+
}
|
|
4524
|
+
}
|
|
4525
|
+
if (typeof value === "number" && isPositiveSafeInteger(value))
|
|
4526
|
+
return value;
|
|
4527
|
+
throw new InvalidRequestError(`edit: edits[${index}].occurrence must be a positive integer`);
|
|
4528
|
+
}
|
|
4529
|
+
function isPositiveSafeInteger(value) {
|
|
4530
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 1;
|
|
4531
|
+
}
|
|
4532
|
+
function copyOwnProperties(source) {
|
|
4533
|
+
const copy = Object.create(null);
|
|
4534
|
+
for (const key of Object.getOwnPropertyNames(source))
|
|
4535
|
+
copy[key] = source[key];
|
|
4536
|
+
return copy;
|
|
4537
|
+
}
|
|
4538
|
+
var InvalidRequestError, EDIT_ROOT_COMPATIBILITY_KEYS, EDIT_ROOT_CANONICAL_KEYS, EDIT_ITEM_KEYS, ASCII_WHITESPACE, ASCII_TRIM, MAX_SAFE_INTEGER;
|
|
4539
|
+
var init_path_aliases = __esm(() => {
|
|
4540
|
+
init_error_contract();
|
|
4541
|
+
InvalidRequestError = class InvalidRequestError extends AftToolError {
|
|
4542
|
+
constructor(message) {
|
|
4543
|
+
super(message, "invalid_request", {
|
|
4544
|
+
success: false,
|
|
4545
|
+
code: "invalid_request",
|
|
4546
|
+
message
|
|
4547
|
+
});
|
|
4548
|
+
this.name = "InvalidRequestError";
|
|
4549
|
+
}
|
|
4550
|
+
};
|
|
4551
|
+
EDIT_ROOT_COMPATIBILITY_KEYS = new Set([
|
|
4552
|
+
"oldString",
|
|
4553
|
+
"newString",
|
|
4554
|
+
"replaceAll",
|
|
4555
|
+
"occurrence"
|
|
4556
|
+
]);
|
|
4557
|
+
EDIT_ROOT_CANONICAL_KEYS = new Set(["path", "appendContent", "edits", "symbol", "content"]);
|
|
4558
|
+
EDIT_ITEM_KEYS = new Set([
|
|
4559
|
+
"oldString",
|
|
4560
|
+
"newString",
|
|
4561
|
+
"replaceAll",
|
|
4562
|
+
"occurrence",
|
|
4563
|
+
"startLine",
|
|
4564
|
+
"endLine",
|
|
4565
|
+
"content"
|
|
4566
|
+
]);
|
|
4567
|
+
ASCII_WHITESPACE = /^[\t\n\v\f\r ]+$/;
|
|
4568
|
+
ASCII_TRIM = /^[\t\n\v\f\r ]+|[\t\n\v\f\r ]+$/g;
|
|
4569
|
+
MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;
|
|
4570
|
+
});
|
|
4571
|
+
|
|
4129
4572
|
// ../aft-bridge/dist/project-identity.js
|
|
4130
4573
|
import { createHash as createHash4 } from "node:crypto";
|
|
4131
4574
|
import { realpathSync as realpathSync2 } from "node:fs";
|
|
@@ -7531,6 +7974,7 @@ function unwrapRustZoomBatchEnvelope(response) {
|
|
|
7531
7974
|
var exports_dist = {};
|
|
7532
7975
|
__export(exports_dist, {
|
|
7533
7976
|
unwrapRustZoomBatchEnvelope: () => unwrapRustZoomBatchEnvelope,
|
|
7977
|
+
toolErrorFromResponse: () => toolErrorFromResponse,
|
|
7534
7978
|
timeoutForCommand: () => timeoutForCommand,
|
|
7535
7979
|
tagStderrLine: () => tagStderrLine,
|
|
7536
7980
|
stripJsoncSymbols: () => stripJsoncSymbols,
|
|
@@ -7555,6 +7999,8 @@ __export(exports_dist, {
|
|
|
7555
7999
|
readConfigTiers: () => readConfigTiers,
|
|
7556
8000
|
projectRootKeyHash: () => projectRootKeyHash,
|
|
7557
8001
|
probeNpmVersion: () => probeNpmVersion,
|
|
8002
|
+
prepareCanonicalPathArguments: () => prepareCanonicalPathArguments,
|
|
8003
|
+
prepareCanonicalEditArguments: () => prepareCanonicalEditArguments,
|
|
7558
8004
|
platformKey: () => platformKey,
|
|
7559
8005
|
parseStatusBarCounts: () => parseStatusBarCounts,
|
|
7560
8006
|
npmSpawnEnv: () => npmSpawnEnv,
|
|
@@ -7562,6 +8008,7 @@ __export(exports_dist, {
|
|
|
7562
8008
|
maybeAppendGrepSearchHint: () => maybeAppendGrepSearchHint,
|
|
7563
8009
|
maybeAppendConflictsHint: () => maybeAppendConflictsHint,
|
|
7564
8010
|
markAnnouncementSeen: () => markAnnouncementSeen,
|
|
8011
|
+
isWellFormedUnicodeString: () => isWellFormedUnicodeString,
|
|
7565
8012
|
isTerminalStatus: () => isTerminalStatus,
|
|
7566
8013
|
isRustZoomBatchEnvelope: () => isRustZoomBatchEnvelope,
|
|
7567
8014
|
isOrtAutoDownloadSupported: () => isOrtAutoDownloadSupported,
|
|
@@ -7617,12 +8064,14 @@ __export(exports_dist, {
|
|
|
7617
8064
|
PI_ONLY_KEYS: () => PI_ONLY_KEYS,
|
|
7618
8065
|
OPENCODE_ONLY_KEYS: () => OPENCODE_ONLY_KEYS,
|
|
7619
8066
|
LONG_RUNNING_COMMAND_TIMEOUT_MS: () => LONG_RUNNING_COMMAND_TIMEOUT_MS,
|
|
8067
|
+
InvalidRequestError: () => InvalidRequestError,
|
|
7620
8068
|
HomeProjectRootError: () => HomeProjectRootError,
|
|
7621
8069
|
DEFAULT_LOG_GENERATIONS: () => DEFAULT_LOG_GENERATIONS,
|
|
7622
8070
|
DEFAULT_LOG_BYTES: () => DEFAULT_LOG_BYTES,
|
|
7623
8071
|
BridgeTransportTimeoutError: () => BridgeTransportTimeoutError,
|
|
7624
8072
|
BridgePool: () => BridgePool,
|
|
7625
|
-
BinaryBridge: () => BinaryBridge
|
|
8073
|
+
BinaryBridge: () => BinaryBridge,
|
|
8074
|
+
AftToolError: () => AftToolError
|
|
7626
8075
|
});
|
|
7627
8076
|
var init_dist2 = __esm(() => {
|
|
7628
8077
|
init_active_logger();
|
|
@@ -7634,9 +8083,11 @@ var init_dist2 = __esm(() => {
|
|
|
7634
8083
|
init_config_tiers();
|
|
7635
8084
|
init_downloader();
|
|
7636
8085
|
init_durable_log();
|
|
8086
|
+
init_error_contract();
|
|
7637
8087
|
init_migration();
|
|
7638
8088
|
init_npm_resolver();
|
|
7639
8089
|
init_onnx_runtime();
|
|
8090
|
+
init_path_aliases();
|
|
7640
8091
|
init_paths();
|
|
7641
8092
|
init_platform();
|
|
7642
8093
|
init_pool();
|
|
@@ -18111,7 +18562,7 @@ __export(exports_setup, {
|
|
|
18111
18562
|
runSetup: () => runSetup
|
|
18112
18563
|
});
|
|
18113
18564
|
async function runSetup(argv) {
|
|
18114
|
-
intro(
|
|
18565
|
+
intro(`${CLI} setup`);
|
|
18115
18566
|
const adapters = await resolveAdaptersForCommand(argv, {
|
|
18116
18567
|
allowMulti: true,
|
|
18117
18568
|
verb: "setup"
|
|
@@ -18120,7 +18571,7 @@ async function runSetup(argv) {
|
|
|
18120
18571
|
for (const adapter of adapters) {
|
|
18121
18572
|
log2.info(`${adapter.displayName}: configuring ${adapter.pluginPackageName}…`);
|
|
18122
18573
|
if (!adapter.isInstalled()) {
|
|
18123
|
-
log2.warn(`${adapter.displayName} host not found on PATH. ${adapter.getInstallHint()} and rerun
|
|
18574
|
+
log2.warn(`${adapter.displayName} host not found on PATH. ${adapter.getInstallHint()} and rerun \`${CLI} setup\`.`);
|
|
18124
18575
|
anyFailure = true;
|
|
18125
18576
|
continue;
|
|
18126
18577
|
}
|
|
@@ -18171,7 +18622,7 @@ function printNextSteps(adapter) {
|
|
|
18171
18622
|
if (adapter.kind === "opencode") {
|
|
18172
18623
|
note([
|
|
18173
18624
|
"Restart OpenCode (or reload your session) so the plugin loads.",
|
|
18174
|
-
|
|
18625
|
+
`Verify with: \`${CLI} doctor\`.`
|
|
18175
18626
|
].join(`
|
|
18176
18627
|
`), "Next steps");
|
|
18177
18628
|
return;
|
|
@@ -18179,7 +18630,7 @@ function printNextSteps(adapter) {
|
|
|
18179
18630
|
if (adapter.kind === "pi") {
|
|
18180
18631
|
note([
|
|
18181
18632
|
"Restart your Pi session so the extension registers.",
|
|
18182
|
-
|
|
18633
|
+
`Verify with: \`${CLI} doctor\`.`
|
|
18183
18634
|
].join(`
|
|
18184
18635
|
`), "Next steps");
|
|
18185
18636
|
}
|
|
@@ -18292,7 +18743,7 @@ The binary printed ${ctx.noiseLines.length} non-JSON line(s) to stdout — this
|
|
|
18292
18743
|
parts.push(` | (… ${ctx.noiseLines.length - MAX_NOISE_LINES_IN_ERROR} more line(s) omitted)`);
|
|
18293
18744
|
}
|
|
18294
18745
|
parts.push(`
|
|
18295
|
-
Try:
|
|
18746
|
+
Try: ${CLI} doctor (full diagnostics) or check ~/.cache/aft/bin/ for the right binary.`);
|
|
18296
18747
|
}
|
|
18297
18748
|
const stderrTrimmed = ctx.stderr.trim();
|
|
18298
18749
|
if (stderrTrimmed) {
|
|
@@ -18339,7 +18790,7 @@ function findProjectRootForFile(filePath, fallbackCwd = process.cwd()) {
|
|
|
18339
18790
|
}
|
|
18340
18791
|
}
|
|
18341
18792
|
function printLspDoctorHelp() {
|
|
18342
|
-
console.log(
|
|
18793
|
+
console.log(`Usage: ${CLI} doctor lsp <file> [--harness opencode|pi]`);
|
|
18343
18794
|
console.log("");
|
|
18344
18795
|
console.log("Inspect what AFT's LSP layer would do for a file.");
|
|
18345
18796
|
}
|
|
@@ -18580,16 +19031,16 @@ import { existsSync as existsSync13 } from "node:fs";
|
|
|
18580
19031
|
import { homedir as homedir16 } from "node:os";
|
|
18581
19032
|
import { relative as relative3, resolve as resolve9 } from "node:path";
|
|
18582
19033
|
function printDoctorFiltersHelp() {
|
|
18583
|
-
console.log(
|
|
19034
|
+
console.log(`Usage: ${CLI} doctor filters [--show <name>] [trust|untrust]`);
|
|
18584
19035
|
console.log("");
|
|
18585
19036
|
console.log("Inspect declarative TOML compression filters.");
|
|
18586
19037
|
console.log("");
|
|
18587
19038
|
console.log("Commands:");
|
|
18588
|
-
console.log(
|
|
18589
|
-
console.log(
|
|
18590
|
-
console.log(
|
|
18591
|
-
console.log(
|
|
18592
|
-
console.log(
|
|
19039
|
+
console.log(` ${CLI} doctor filters List built-in, user, and project filters`);
|
|
19040
|
+
console.log(` ${CLI} doctor filters --show <name> Show resolved TOML for a filter`);
|
|
19041
|
+
console.log(` ${CLI} doctor filters trust Trust current project's .aft/filters`);
|
|
19042
|
+
console.log(` ${CLI} doctor filters trust --list List trusted filter project paths`);
|
|
19043
|
+
console.log(` ${CLI} doctor filters untrust Remove trusted project paths`);
|
|
18593
19044
|
}
|
|
18594
19045
|
async function runDoctorFilters(options) {
|
|
18595
19046
|
const mode = parseMode(options.argv);
|
|
@@ -18743,7 +19194,7 @@ function pushSection(lines, title, filters, titleHasOpenParen = false) {
|
|
|
18743
19194
|
}
|
|
18744
19195
|
for (const filter of filters) {
|
|
18745
19196
|
const description = filter.error ? `invalid — ${filter.error}` : truncate(filter.description ?? "");
|
|
18746
|
-
const trust = filter.source.startsWith("project") && filter.trusted === false ? filter.error ? " (untrusted)" :
|
|
19197
|
+
const trust = filter.source.startsWith("project") && filter.trusted === false ? filter.error ? " (untrusted)" : ` (untrusted — run \`${CLI} doctor filters trust\` to enable)` : "";
|
|
18747
19198
|
lines.push(` ${filter.name.padEnd(20)} ${description}${trust}`.trimEnd());
|
|
18748
19199
|
}
|
|
18749
19200
|
}
|
|
@@ -19693,7 +20144,7 @@ function collectDiagnosticIssues(report) {
|
|
|
19693
20144
|
severity: "high",
|
|
19694
20145
|
scope: "AFT binary",
|
|
19695
20146
|
message: `No aft binary matching CLI ${report.cliVersion} was detected.`,
|
|
19696
|
-
remediation:
|
|
20147
|
+
remediation: `Run \`${CLI} doctor --fix\` to download the matching binary, or start an AFT-enabled session to trigger plugin-side install.`
|
|
19697
20148
|
});
|
|
19698
20149
|
}
|
|
19699
20150
|
for (const h2 of report.harnesses) {
|
|
@@ -19703,7 +20154,7 @@ function collectDiagnosticIssues(report) {
|
|
|
19703
20154
|
severity: "high",
|
|
19704
20155
|
scope: h2.displayName,
|
|
19705
20156
|
message: "Host CLI is not installed or is not on PATH.",
|
|
19706
|
-
remediation: `Install ${h2.displayName} and rerun
|
|
20157
|
+
remediation: `Install ${h2.displayName} and rerun \`${CLI} doctor\`.`
|
|
19707
20158
|
});
|
|
19708
20159
|
continue;
|
|
19709
20160
|
}
|
|
@@ -19713,7 +20164,7 @@ function collectDiagnosticIssues(report) {
|
|
|
19713
20164
|
severity: "medium",
|
|
19714
20165
|
scope: h2.displayName,
|
|
19715
20166
|
message: "AFT plugin is not registered with this harness.",
|
|
19716
|
-
remediation:
|
|
20167
|
+
remediation: `Run \`${CLI} setup\` or \`${CLI} doctor --fix\` to register the plugin.`
|
|
19717
20168
|
});
|
|
19718
20169
|
}
|
|
19719
20170
|
if (h2.aftConfig.parseError) {
|
|
@@ -19735,7 +20186,7 @@ function collectDiagnosticIssues(report) {
|
|
|
19735
20186
|
severity: "medium",
|
|
19736
20187
|
scope: h2.displayName,
|
|
19737
20188
|
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
|
|
20189
|
+
remediation: `Run \`${CLI} doctor --fix\` or install ONNX Runtime manually (${h2.onnxRuntime.installHint}).`
|
|
19739
20190
|
});
|
|
19740
20191
|
}
|
|
19741
20192
|
if (h2.onnxRuntime.cachedCompatible === false) {
|
|
@@ -19744,7 +20195,7 @@ function collectDiagnosticIssues(report) {
|
|
|
19744
20195
|
severity: "medium",
|
|
19745
20196
|
scope: h2.displayName,
|
|
19746
20197
|
message: `Cached ONNX Runtime ${h2.onnxRuntime.cachedVersion ?? "unknown"} is incompatible (requires ${h2.onnxRuntime.requirement}).`,
|
|
19747
|
-
remediation:
|
|
20198
|
+
remediation: `Run \`${CLI} doctor --fix\` to refresh AFT-managed ONNX Runtime state.`
|
|
19748
20199
|
});
|
|
19749
20200
|
}
|
|
19750
20201
|
if (h2.onnxRuntime.systemCompatible === false) {
|
|
@@ -20286,7 +20737,7 @@ async function runDoctor(options) {
|
|
|
20286
20737
|
if (options.issue) {
|
|
20287
20738
|
return runIssueFlow(options.argv);
|
|
20288
20739
|
}
|
|
20289
|
-
intro(
|
|
20740
|
+
intro(`${CLI} doctor`);
|
|
20290
20741
|
if (options.fix) {
|
|
20291
20742
|
return runFixFlow(options.argv);
|
|
20292
20743
|
}
|
|
@@ -20303,11 +20754,11 @@ async function runDoctor(options) {
|
|
|
20303
20754
|
const hasEnabledRegisteredHarness = report.harnesses.some((h2) => h2.pluginRegistered && h2.aftConfig.enabled);
|
|
20304
20755
|
const hasRegisteredHarness = report.harnesses.some((h2) => h2.pluginRegistered);
|
|
20305
20756
|
if (hasEnabledRegisteredHarness) {
|
|
20306
|
-
log2.warn(
|
|
20757
|
+
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
20758
|
} else if (hasRegisteredHarness) {
|
|
20308
20759
|
log2.info(" no matching aft binary detected; all registered AFT harnesses are disabled by config");
|
|
20309
20760
|
} else {
|
|
20310
|
-
log2.warn(
|
|
20761
|
+
log2.warn(` no matching aft binary detected — run \`${CLI} doctor --fix\` to download`);
|
|
20311
20762
|
}
|
|
20312
20763
|
logUnmatchedBinaryCandidates(report.cliVersion);
|
|
20313
20764
|
}
|
|
@@ -20331,7 +20782,7 @@ async function runDoctor(options) {
|
|
|
20331
20782
|
log2.info(` AFT disabled by config${h2.aftConfig.enabledSource ? ` (${h2.aftConfig.enabledSource})` : ""}; plugin will stay inert`);
|
|
20332
20783
|
}
|
|
20333
20784
|
if (!h2.pluginRegistered) {
|
|
20334
|
-
log2.warn(
|
|
20785
|
+
log2.warn(` plugin registration can be fixed with \`${CLI} setup\` or \`${CLI} doctor --fix\``);
|
|
20335
20786
|
}
|
|
20336
20787
|
log2.info(` aft config: ${h2.aftConfig.exists ? h2.configPaths.aftConfig : "(not set)"}`);
|
|
20337
20788
|
if (h2.aftConfig.parseError) {
|
|
@@ -20339,7 +20790,7 @@ async function runDoctor(options) {
|
|
|
20339
20790
|
} else if (h2.aftConfig.exists) {
|
|
20340
20791
|
const { value } = readJsoncFile(h2.configPaths.aftConfig);
|
|
20341
20792
|
const schemaSet = value?.$schema === AFT_SCHEMA_URL;
|
|
20342
|
-
log2.info(` aft config $schema: ${schemaSet ? "set" :
|
|
20793
|
+
log2.info(` aft config $schema: ${schemaSet ? "set" : `not set — run \`${CLI} doctor --fix\` for editor autocomplete`}`);
|
|
20343
20794
|
}
|
|
20344
20795
|
log2.info(` storage: ${formatDoctorStorageStatus(h2)}`);
|
|
20345
20796
|
if (h2.onnxRuntime.required) {
|
|
@@ -20357,7 +20808,7 @@ async function runDoctor(options) {
|
|
|
20357
20808
|
parts.push(`not installed — ${h2.onnxRuntime.installHint}`);
|
|
20358
20809
|
}
|
|
20359
20810
|
if (h2.onnxRuntime.cachedCompatible === false || h2.onnxRuntime.systemCompatible === false) {
|
|
20360
|
-
parts.push(
|
|
20811
|
+
parts.push(`needs reinstall — run \`${CLI} doctor --fix\``);
|
|
20361
20812
|
}
|
|
20362
20813
|
log2.info(` onnx runtime: ${parts.join(" · ")}`);
|
|
20363
20814
|
} else {
|
|
@@ -20370,7 +20821,7 @@ async function runDoctor(options) {
|
|
|
20370
20821
|
}
|
|
20371
20822
|
if (hadProblems) {
|
|
20372
20823
|
logDoctorIssues(report);
|
|
20373
|
-
note(
|
|
20824
|
+
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
20825
|
outro("Done — some issues found.");
|
|
20375
20826
|
return 1;
|
|
20376
20827
|
}
|
|
@@ -20741,7 +21192,7 @@ async function runFixFlow(argv) {
|
|
|
20741
21192
|
const onnxResult = await runOnnxFix(adapters, report, { yes: true });
|
|
20742
21193
|
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
21194
|
log2.info("No auto-fixable issues detected.");
|
|
20744
|
-
note(
|
|
21195
|
+
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
21196
|
const afterReport2 = await collectDiagnostics(adapters);
|
|
20746
21197
|
const stillHasProblems2 = hasDoctorProblems(afterReport2);
|
|
20747
21198
|
outro(stillHasProblems2 ? "Done — some issues remain." : "Done.");
|
|
@@ -20791,7 +21242,7 @@ async function confirmBinaryDownloadDespitePluginSkew(report, argv) {
|
|
|
20791
21242
|
return true;
|
|
20792
21243
|
}
|
|
20793
21244
|
if (decision === "skip") {
|
|
20794
|
-
log2.info(
|
|
21245
|
+
log2.info(`Skipped binary download. Update the plugin to @latest, then rerun \`${CLI} doctor --fix\`.`);
|
|
20795
21246
|
return false;
|
|
20796
21247
|
}
|
|
20797
21248
|
return confirm2("Download/cache the CLI-matching binary anyway for after you update the plugin?", false);
|
|
@@ -20975,9 +21426,9 @@ function shortSessionId(id) {
|
|
|
20975
21426
|
return bareId.length <= 12 ? bareId : bareId.slice(0, 12);
|
|
20976
21427
|
}
|
|
20977
21428
|
async function runIssueFlow(argv) {
|
|
20978
|
-
intro(
|
|
21429
|
+
intro(`${CLI} doctor --issue`);
|
|
20979
21430
|
if (!isInteractiveTerminal()) {
|
|
20980
|
-
note(
|
|
21431
|
+
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
21432
|
outro("Done.");
|
|
20982
21433
|
return 0;
|
|
20983
21434
|
}
|
|
@@ -21145,11 +21596,11 @@ function printHelp() {
|
|
|
21145
21596
|
console.log(" (default: auto-detect, prompt if multiple detected)");
|
|
21146
21597
|
console.log("");
|
|
21147
21598
|
console.log(" Usage:");
|
|
21148
|
-
console.log(
|
|
21149
|
-
console.log(
|
|
21150
|
-
console.log(
|
|
21151
|
-
console.log(
|
|
21152
|
-
console.log(
|
|
21599
|
+
console.log(` ${CLI} setup`);
|
|
21600
|
+
console.log(` ${CLI} doctor`);
|
|
21601
|
+
console.log(` ${CLI} doctor lsp ./src/main.py`);
|
|
21602
|
+
console.log(` ${CLI} doctor --clear`);
|
|
21603
|
+
console.log(` ${CLI} doctor --issue`);
|
|
21153
21604
|
console.log("");
|
|
21154
21605
|
}
|
|
21155
21606
|
async function main() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aft-bridge.d.ts","sourceRoot":"","sources":["../../src/lib/aft-bridge.ts"],"names":[],"mappings":"
|
|
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 @@
|
|
|
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":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,mBAAmB,CAAC;
|
|
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.
|
|
3
|
+
"version": "0.49.0",
|
|
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.
|
|
27
|
+
"@cortexkit/aft-bridge": "0.49.0",
|
|
28
28
|
"comment-json": "^4.6.2"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|