@cortexkit/aft 0.57.1 → 0.58.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/adapters/opencode.d.ts +27 -0
- package/dist/adapters/opencode.d.ts.map +1 -1
- package/dist/adapters/pi.d.ts.map +1 -1
- package/dist/adapters/types.d.ts +14 -0
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/commands/backups.d.ts +7 -0
- package/dist/commands/backups.d.ts.map +1 -0
- package/dist/commands/doctor.d.ts +35 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/setup.d.ts +26 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/doctor/features.d.ts +39 -0
- package/dist/doctor/features.d.ts.map +1 -0
- package/dist/doctor/opencode.d.ts +10 -0
- package/dist/doctor/opencode.d.ts.map +1 -1
- package/dist/index.js +3442 -732
- package/dist/lib/binary-install.d.ts +42 -0
- package/dist/lib/binary-install.d.ts.map +1 -0
- package/dist/lib/binary-probe.d.ts.map +1 -1
- package/dist/lib/bridge-tool-failures.d.ts.map +1 -1
- package/dist/lib/cli-logger.d.ts +34 -0
- package/dist/lib/cli-logger.d.ts.map +1 -0
- package/dist/lib/config-migration.d.ts +37 -0
- package/dist/lib/config-migration.d.ts.map +1 -0
- package/dist/lib/diagnostics.d.ts +14 -1
- package/dist/lib/diagnostics.d.ts.map +1 -1
- package/dist/lib/feature-plan.d.ts +111 -0
- package/dist/lib/feature-plan.d.ts.map +1 -0
- package/dist/lib/fs-errors.d.ts +34 -0
- package/dist/lib/fs-errors.d.ts.map +1 -0
- package/dist/lib/jsonc.d.ts.map +1 -1
- package/dist/lib/omp-helpers.d.ts +1 -1
- package/dist/lib/omp-helpers.d.ts.map +1 -1
- package/dist/lib/onnx-fix.d.ts.map +1 -1
- package/dist/lib/onnx.d.ts +18 -0
- package/dist/lib/onnx.d.ts.map +1 -1
- package/dist/lib/plugin-load.d.ts +51 -0
- package/dist/lib/plugin-load.d.ts.map +1 -0
- package/dist/lib/sanitize.d.ts +6 -0
- package/dist/lib/sanitize.d.ts.map +1 -1
- package/dist/setup/feature-list.d.ts +89 -0
- package/dist/setup/feature-list.d.ts.map +1 -0
- package/dist/setup/feature-wizard.d.ts +69 -0
- package/dist/setup/feature-wizard.d.ts.map +1 -0
- package/dist/setup/host-generation.d.ts +6 -0
- package/dist/setup/host-generation.d.ts.map +1 -1
- package/dist/setup/opencode-config.d.ts +53 -0
- package/dist/setup/opencode-config.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -28,10 +28,37 @@ export declare class OpenCodeAdapter implements HarnessAdapter {
|
|
|
28
28
|
* Register the TUI sidebar plugin in tui.json(c). Only setup/doctor call
|
|
29
29
|
* this: the plugin itself must never auto-inject the entry at load time,
|
|
30
30
|
* because that silently undoes a user's deliberate removal on every launch.
|
|
31
|
+
*
|
|
32
|
+
* V1 only. OpenCode 2 resolves a TUI plugin from the package's own `tui`
|
|
33
|
+
* entrypoint, so there is nothing to register: the GA CLI (checked against
|
|
34
|
+
* 2.0.14) contains no reference to `tui.json` or `tui.jsonc` at all. Writing
|
|
35
|
+
* the file there left a config the host never reads, which reads to a user
|
|
36
|
+
* like a setup step that did something.
|
|
31
37
|
*/
|
|
32
38
|
ensureTuiPluginEntry(): Promise<PluginEntryResult>;
|
|
39
|
+
tuiPluginEntryApplies(): boolean;
|
|
33
40
|
needsTuiPluginEntryUpdate(): boolean;
|
|
34
41
|
private ensureConfigEntry;
|
|
42
|
+
/**
|
|
43
|
+
* Whether OpenCode 2's built-in shell tool plugin is removed in the server
|
|
44
|
+
* config. `not_applicable` on any host that is not known to be OpenCode 2:
|
|
45
|
+
* OpenCode 1 has no such plugin, and an unresolved generation must not be
|
|
46
|
+
* guessed at.
|
|
47
|
+
*/
|
|
48
|
+
hostShellState(): "disabled" | "enabled" | "not_applicable";
|
|
49
|
+
/** Whether the user AFT config leaves AFT's bash registered and runnable. */
|
|
50
|
+
aftBashEnabled(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Add (`disabled: true`) or remove the `-opencode.tool.shell` entry in the
|
|
53
|
+
* OpenCode 2 server config. Idempotent; refuses on any other generation.
|
|
54
|
+
*/
|
|
55
|
+
setHostShellDisabled(disabled: boolean): PluginEntryResult;
|
|
56
|
+
/**
|
|
57
|
+
* Run a config write, turning a filesystem failure into an error result.
|
|
58
|
+
* A host installed with `sudo npm i -g` can leave its config directory owned
|
|
59
|
+
* by root; setup and doctor must report that with the fix, not crash.
|
|
60
|
+
*/
|
|
61
|
+
private tryWrite;
|
|
35
62
|
private configEntryNeedsUpdate;
|
|
36
63
|
getPluginCacheInfo(): PluginCacheInfo;
|
|
37
64
|
getStorageDir(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/adapters/opencode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/adapters/opencode.ts"],"names":[],"mappings":"AAgBA,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AAgBrC,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAgKpB,qBAAa,eAAgB,YAAW,cAAc;IACpD,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IACpC,QAAQ,CAAC,WAAW,cAAc;IAClC,QAAQ,CAAC,iBAAiB,6BAAe;IACzC,QAAQ,CAAC,sBAAsB,SAAgB;IAC/C,OAAO,CAAC,aAAa,CAAoC;IAEzD,WAAW,IAAI,OAAO;IAatB,oBAAoB,IAAI,qBAAqB;IAK7C;;;;;;;OAOG;IACH,gBAAgB,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI;IAIxD,OAAO,CAAC,gBAAgB;IAIxB,cAAc,IAAI,MAAM,GAAG,IAAI;IAO/B,iBAAiB,IAAI,kBAAkB;IAqBvC,cAAc,IAAI,OAAO;IAMnB,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAKrD,sBAAsB,IAAI,OAAO;IAKjC,iBAAiB,IAAI,OAAO;IAO5B;;;;;;;;;;OAUG;IACG,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAsBxD,qBAAqB,IAAI,OAAO;IAIhC,yBAAyB,IAAI,OAAO;IAWpC,OAAO,CAAC,iBAAiB;IAuDzB;;;;;OAKG;IACH,cAAc,IAAI,UAAU,GAAG,SAAS,GAAG,gBAAgB;IAM3D,6EAA6E;IAC7E,cAAc,IAAI,OAAO;IAKzB;;;OAGG;IACH,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,iBAAiB;IA0D1D;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,sBAAsB;IAe9B,kBAAkB,IAAI,eAAe;IAiCrC,aAAa,IAAI,MAAM;IAIvB,UAAU,IAAI,MAAM;IAIpB,cAAc,IAAI,MAAM;IAIlB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAC9C,MAAM,EACF,SAAS,GACT,qBAAqB,GACrB,YAAY,GACZ,WAAW,GACX,gBAAgB,GAChB,OAAO,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IAgDF,qEAAqE;IACrE,mBAAmB,IAAI,MAAM;IAI7B,mEAAmE;IACnE,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAWlD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../src/adapters/pi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../src/adapters/pi.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AA+IpB,qBAAa,SAAU,YAAW,cAAc;IAC9C,QAAQ,CAAC,IAAI,EAAG,IAAI,CAAU;IAC9B,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,iBAAiB,uBAAe;IACzC,QAAQ,CAAC,sBAAsB,2BAAgB;IAE/C,WAAW,IAAI,OAAO;IAUtB,cAAc,IAAI,MAAM,GAAG,IAAI;IAwB/B,iBAAiB,IAAI,kBAAkB;IAoBvC,cAAc,IAAI,OAAO;IAInB,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAmCrD,kBAAkB,IAAI,eAAe;IA+BrC,aAAa,IAAI,MAAM;IAIvB,UAAU,IAAI,MAAM;IAIpB,cAAc,IAAI,MAAM;IAIlB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;QAC/C,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,gBAAgB,GAAG,OAAO,CAAC;QAC5E,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAUF,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAWlD"}
|
package/dist/adapters/types.d.ts
CHANGED
|
@@ -30,6 +30,14 @@ export interface PluginCacheInfo {
|
|
|
30
30
|
cached?: string;
|
|
31
31
|
latest?: string;
|
|
32
32
|
exists: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* The npm registration the harness config holds for the plugin, exactly as
|
|
35
|
+
* written (for example `@cortexkit/aft-opencode` or
|
|
36
|
+
* `@cortexkit/aft-opencode@0.57.2`). Only OpenCode reports it; doctor uses it
|
|
37
|
+
* to say whether `doctor --fix` must pin the entry as well as update the
|
|
38
|
+
* plugin.
|
|
39
|
+
*/
|
|
40
|
+
configuredEntry?: string;
|
|
33
41
|
}
|
|
34
42
|
export interface PluginEntryResult {
|
|
35
43
|
/** True if the plugin was added or was already present. */
|
|
@@ -71,6 +79,12 @@ export interface HarnessAdapter {
|
|
|
71
79
|
*/
|
|
72
80
|
hasTuiPluginEntry?(): boolean;
|
|
73
81
|
ensureTuiPluginEntry?(): Promise<PluginEntryResult>;
|
|
82
|
+
/**
|
|
83
|
+
* Whether this host reads a TUI config entry at all. OpenCode 2 loads the
|
|
84
|
+
* TUI plugin from the package's own entrypoint, so a missing tui.json entry
|
|
85
|
+
* there is not something to repair. Absent means the entry applies.
|
|
86
|
+
*/
|
|
87
|
+
tuiPluginEntryApplies?(): boolean;
|
|
74
88
|
getPluginCacheInfo(): PluginCacheInfo;
|
|
75
89
|
getStorageDir(): string;
|
|
76
90
|
getLogFile(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC/C,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3C,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CAC7C;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC/C,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3C,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CAC7C;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,EAAE,EAAE,OAAO,CAAC;IACZ,qEAAqE;IACrE,MAAM,EAAE,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,gBAAgB,GAAG,OAAO,CAAC;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IAExC;;;;;OAKG;IACH,WAAW,IAAI,OAAO,CAAC;IACvB,cAAc,IAAI,MAAM,GAAG,IAAI,CAAC;IAEhC,iBAAiB,IAAI,kBAAkB,CAAC;IAExC;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAAC;IAE1B;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEhD;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,OAAO,CAAC;IAC9B,oBAAoB,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD;;;;OAIG;IACH,qBAAqB,CAAC,IAAI,OAAO,CAAC;IAElC,kBAAkB,IAAI,eAAe,CAAC;IACtC,aAAa,IAAI,MAAM,CAAC;IACxB,UAAU,IAAI,MAAM,CAAC;IAErB,yDAAyD;IACzD,cAAc,IAAI,MAAM,CAAC;IAEzB;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QACxC,MAAM,EACF,SAAS,GACT,qBAAqB,GACrB,YAAY,GACZ,WAAW,GACX,gBAAgB,GAChB,OAAO,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,mIAAmI;QACnI,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;CACJ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Forward `backups <subcommand>` to the native binary. The Rust command owns
|
|
3
|
+
* argument validation, the dry-run default, and routing the purge through a
|
|
4
|
+
* running AFT daemon, so this wrapper adds no behavior of its own.
|
|
5
|
+
*/
|
|
6
|
+
export declare function runBackups(argv: string[]): number;
|
|
7
|
+
//# sourceMappingURL=backups.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backups.d.ts","sourceRoot":"","sources":["../../src/commands/backups.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAgBjD"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import type { HarnessAdapter } from "../adapters/types.js";
|
|
2
|
+
import { type GitState } from "../doctor/features.js";
|
|
3
|
+
import { type BinaryDownloader } from "../lib/binary-install.js";
|
|
2
4
|
import { collectDiagnostics, type DiagnosticReport } from "../lib/diagnostics.js";
|
|
5
|
+
import { type NativeRunner } from "../lib/feature-plan.js";
|
|
3
6
|
import { resolveAdaptersForCommand } from "../lib/harness-select.js";
|
|
4
7
|
import { type ClearResult } from "../lib/lsp-cache.js";
|
|
5
8
|
import { runOnnxFix } from "../lib/onnx-fix.js";
|
|
9
|
+
import { type FeatureSetupDeps, type GhStatus } from "../setup/feature-wizard.js";
|
|
6
10
|
import { type OpenCodeHostDetection } from "../setup/host-generation.js";
|
|
7
11
|
export type DoctorClearTarget = "plugin-cache" | "lsp-cache" | "binary-cache";
|
|
8
12
|
export declare const DOCTOR_CLEAR_TARGET_OPTIONS: {
|
|
@@ -23,6 +27,18 @@ export interface DoctorOptions {
|
|
|
23
27
|
detectOpenCodeHost?: () => OpenCodeHostDetection;
|
|
24
28
|
/** Optional ONNX repair override lets tests exercise --fix without a download. */
|
|
25
29
|
applyOnnxFix?: typeof runOnnxFix;
|
|
30
|
+
/** `doctor --reconfigure`: rerun the feature wizard. */
|
|
31
|
+
reconfigure?: boolean;
|
|
32
|
+
/** Native binary runner for the feature plan and config migration (tests stub it). */
|
|
33
|
+
runNative?: NativeRunner;
|
|
34
|
+
/** Overrides for the reconfigure wizard's prompts. */
|
|
35
|
+
features?: FeatureSetupDeps;
|
|
36
|
+
/** Binary downloader for --fix (tests stub it). */
|
|
37
|
+
downloadBinary?: BinaryDownloader;
|
|
38
|
+
/** `npm install` runner for the --fix plugin update (tests stub it). */
|
|
39
|
+
runNpmInstall?: PluginNpmInstaller;
|
|
40
|
+
/** GitHub CLI check for the GitHub read/write report (tests stub it). */
|
|
41
|
+
checkGh?: () => GhStatus;
|
|
26
42
|
}
|
|
27
43
|
export interface RemovalHealth {
|
|
28
44
|
available: boolean;
|
|
@@ -33,6 +49,11 @@ export interface RemovalHealth {
|
|
|
33
49
|
runningBackgroundTasks?: number;
|
|
34
50
|
undoHistorySessions?: number;
|
|
35
51
|
message?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Whether AFT may run git. The same status request that reports removal
|
|
54
|
+
* state carries it, so doctor learns it without a second binary call.
|
|
55
|
+
*/
|
|
56
|
+
git?: GitState;
|
|
36
57
|
}
|
|
37
58
|
export interface CacheClearSummary {
|
|
38
59
|
hadErrors: boolean;
|
|
@@ -61,6 +82,8 @@ export declare function buildDoctorProfileArgs(argv: string[]): string[];
|
|
|
61
82
|
/** Run the native sampler directly so doctor does not add its normal diagnostics output. */
|
|
62
83
|
export declare function runDoctorProfile(argv: string[]): number;
|
|
63
84
|
export declare function runDoctor(options: DoctorOptions): Promise<number>;
|
|
85
|
+
/** The doctor invocation as the user typed it, for the run's header. */
|
|
86
|
+
export declare function doctorCommandLine(argv: string[]): string;
|
|
64
87
|
declare function collectRemovalHealth(adapters: HarnessAdapter[]): Promise<RemovalHealth>;
|
|
65
88
|
/** Render AFT's durable removal costs; the section is shown even when state is unavailable. */
|
|
66
89
|
export declare function renderRemovalSection(health: RemovalHealth): string[];
|
|
@@ -89,10 +112,21 @@ export interface BinaryCacheClearResult {
|
|
|
89
112
|
keptVersion: string | null;
|
|
90
113
|
}
|
|
91
114
|
export declare function clearOldBinaries(): BinaryCacheClearResult;
|
|
115
|
+
/**
|
|
116
|
+
* The doctor line for OpenCode 2's built-in shell tool plugin, or null on any
|
|
117
|
+
* other host. A warning only when AFT's bash is enabled and the host's shell is
|
|
118
|
+
* still there beside it; `doctor --fix` and `aft setup` disable it then.
|
|
119
|
+
*/
|
|
120
|
+
export declare function hostShellDoctorLine(adapter: HarnessAdapter | undefined): {
|
|
121
|
+
level: "info" | "warn";
|
|
122
|
+
text: string;
|
|
123
|
+
} | null;
|
|
92
124
|
export interface DoctorFixPlanItem {
|
|
93
|
-
kind: "plugin" | "plugin-update" | "binary" | "onnx" | "storage" | "schema";
|
|
125
|
+
kind: "plugin" | "plugin-update" | "binary" | "onnx" | "storage" | "schema" | "config";
|
|
94
126
|
message: string;
|
|
95
127
|
}
|
|
128
|
+
/** Runs `npm install` in a plugin cache directory; tests stub it. */
|
|
129
|
+
export type PluginNpmInstaller = (installDir: string) => Promise<void>;
|
|
96
130
|
export declare function buildDoctorFixPlan(adapters: HarnessAdapter[], report: DiagnosticReport): DoctorFixPlanItem[];
|
|
97
131
|
export declare function shouldSkipDoctorFixConfirmation(argv: string[]): boolean;
|
|
98
132
|
export declare function doctorSkewBinaryDownloadDecision(argv: string[]): "prompt" | "proceed" | "skip";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"
|
|
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":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAgB/C"}
|
package/dist/commands/setup.d.ts
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
|
+
import { OpenCodeAdapter } from "../adapters/opencode.js";
|
|
2
|
+
import { type BinaryDownloader } from "../lib/binary-install.js";
|
|
1
3
|
import { resolveAdaptersForCommand } from "../lib/harness-select.js";
|
|
4
|
+
import { type FeatureSetupDeps } from "../setup/feature-wizard.js";
|
|
2
5
|
import { type OpenCodeHostDetection } from "../setup/host-generation.js";
|
|
3
6
|
export interface SetupOptions {
|
|
4
7
|
resolveAdapters?: typeof resolveAdaptersForCommand;
|
|
5
8
|
detectOpenCodeHost?: () => OpenCodeHostDetection;
|
|
9
|
+
/** Overrides for the feature step (native runner, prompts). */
|
|
10
|
+
features?: FeatureSetupDeps;
|
|
11
|
+
/** Path of an installed binary matching this CLI, or null (tests stub it). */
|
|
12
|
+
findBinary?: (version: string) => string | null;
|
|
13
|
+
/** Binary downloader (tests stub it; defaults to the one doctor --fix uses). */
|
|
14
|
+
downloadBinary?: BinaryDownloader;
|
|
15
|
+
/** Answers the OpenCode 2 host-shell question (tests stub it; defaults to a prompt). */
|
|
16
|
+
confirmHostShell?: (message: string, defaultYes: boolean) => Promise<boolean>;
|
|
17
|
+
/** Whether setup may prompt; defaults to whether stdin is a terminal. */
|
|
18
|
+
interactive?: boolean;
|
|
6
19
|
}
|
|
7
20
|
export declare function runSetup(argv: string[], options?: SetupOptions): Promise<number>;
|
|
21
|
+
export declare const HOST_SHELL_QUESTION = "OpenCode's own shell tool: disable it so agents use AFT's bash?";
|
|
22
|
+
/**
|
|
23
|
+
* Offer to remove OpenCode 2's built-in shell tool plugin.
|
|
24
|
+
*
|
|
25
|
+
* OpenCode 2 registers its own command tool, `shell`, beside AFT's `bash`, and
|
|
26
|
+
* rewrites the description of anything named `shell`. Removing the host's
|
|
27
|
+
* shell plugin (`-opencode.tool.shell` under `plugins`) leaves AFT's bash as
|
|
28
|
+
* the one command tool. The default follows whether AFT's bash is enabled: with
|
|
29
|
+
* bash disabled, removing the host's shell would leave no command tool at all.
|
|
30
|
+
* A terminal run asks; `--yes` and non-terminal runs apply the default. Either
|
|
31
|
+
* way the write is idempotent. Other hosts are skipped.
|
|
32
|
+
*/
|
|
33
|
+
export declare function offerHostShellDisable(adapter: OpenCodeAdapter, argv: string[], options?: SetupOptions): Promise<"ok" | "failed" | "skipped">;
|
|
8
34
|
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -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":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,KAAK,gBAAgB,EAAmB,MAAM,0BAA0B,CAAC;AAMlF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAIrE,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAwB,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAE/F,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,EAAE,OAAO,yBAAyB,CAAC;IACnD,kBAAkB,CAAC,EAAE,MAAM,qBAAqB,CAAC;IACjD,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,8EAA8E;IAC9E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAChD,gFAAgF;IAChF,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,wFAAwF;IACxF,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9E,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAwD1F;AAwFD,eAAO,MAAM,mBAAmB,oEACmC,CAAC;AAEpE;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC,CAyBtC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { SetupPlan } from "../lib/feature-plan.js";
|
|
2
|
+
import type { GhStatus } from "../setup/feature-wizard.js";
|
|
3
|
+
/** Whether AFT may run git, as the binary's status reports it. */
|
|
4
|
+
export interface GitState {
|
|
5
|
+
available: boolean;
|
|
6
|
+
/** Machine-readable cause, e.g. `macos_developer_tools_missing`. */
|
|
7
|
+
reason?: string;
|
|
8
|
+
/** The explanation and remedy the sidebar shows for the same state. */
|
|
9
|
+
message?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* What AFT does with git, in user terms. Without git each of these is either
|
|
13
|
+
* unavailable (aft_conflicts) or takes the fallback the engine uses outside a
|
|
14
|
+
* repository, so the list names what the user loses.
|
|
15
|
+
*/
|
|
16
|
+
export declare const GIT_BACKED_FEATURES: string[];
|
|
17
|
+
export interface FeatureStatusFinding {
|
|
18
|
+
/** One line naming the problem. */
|
|
19
|
+
text: string;
|
|
20
|
+
/** What to do about it, when there is something to do. */
|
|
21
|
+
remedy?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface FeatureStatusReport {
|
|
24
|
+
/** One compressed line per plan group. */
|
|
25
|
+
lines: string[];
|
|
26
|
+
/** Features that are turned on but cannot work here; doctor counts these as problems. */
|
|
27
|
+
problems: FeatureStatusFinding[];
|
|
28
|
+
/** Machine facts that switch features off without being a fault (a Mac without developer tools). */
|
|
29
|
+
notes: FeatureStatusFinding[];
|
|
30
|
+
}
|
|
31
|
+
export interface FeatureStatusContext {
|
|
32
|
+
/** GitHub CLI state; asked only when GitHub read or write is on. */
|
|
33
|
+
checkGh?: () => GhStatus;
|
|
34
|
+
/** Git state from the binary's status, or null when it could not be asked. */
|
|
35
|
+
git?: GitState | null;
|
|
36
|
+
}
|
|
37
|
+
/** Build the Features section from the plan and the machine facts doctor can check. */
|
|
38
|
+
export declare function renderFeatureStatus(plan: SetupPlan, context?: FeatureStatusContext): FeatureStatusReport;
|
|
39
|
+
//# sourceMappingURL=features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/doctor/features.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAqB3D,kEAAkE;AAClE,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,UAM/B,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,yFAAyF;IACzF,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,oGAAoG;IACpG,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,QAAQ,CAAC;IACzB,8EAA8E;IAC9E,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CACvB;AAuED,uFAAuF;AACvF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CAgErB"}
|
|
@@ -15,7 +15,17 @@ export interface OpenCodeDoctorResult {
|
|
|
15
15
|
takenLoadPath: OpenCodeLoadPath | null;
|
|
16
16
|
pluginVersion: string | null;
|
|
17
17
|
problems: string[];
|
|
18
|
+
/**
|
|
19
|
+
* The entry-needs-pinning line when it is one of `problems`, so a caller
|
|
20
|
+
* that reports the same fix another way can leave it out.
|
|
21
|
+
*/
|
|
22
|
+
pinProblem: string | null;
|
|
18
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* The problem line for an entry `doctor --fix` would rewrite. It names the
|
|
26
|
+
* entry --fix writes, so the report and the fix always agree.
|
|
27
|
+
*/
|
|
28
|
+
export declare function pinProblem(entry: string, pinned: string): string;
|
|
19
29
|
export declare function expectedOpenCodeLoadPath(detection: OpenCodeHostDetection): OpenCodeLoadPath | null;
|
|
20
30
|
export declare function diagnoseOpenCodeLoad(input: OpenCodeDoctorInput): OpenCodeDoctorResult;
|
|
21
31
|
//# sourceMappingURL=opencode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/doctor/opencode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/doctor/opencode.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAuB,MAAM,6BAA6B,CAAC;AAe9F,eAAO,MAAM,mBAAmB,oFAItB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,qBAAqB,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AA2GD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhE;AAuBD,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,qBAAqB,GAC/B,gBAAgB,GAAG,IAAI,CAQzB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB,CA8CrF"}
|