@cortexkit/aft-opencode 0.31.1 → 0.33.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/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +635 -204
- package/dist/notifications.d.ts.map +1 -1
- package/dist/patch-parser.d.ts.map +1 -1
- package/dist/shared/status.d.ts +4 -1
- package/dist/shared/status.d.ts.map +1 -1
- package/dist/shutdown-hooks.d.ts +1 -0
- package/dist/shutdown-hooks.d.ts.map +1 -1
- package/dist/tools/_shared.d.ts +13 -0
- package/dist/tools/_shared.d.ts.map +1 -1
- package/dist/tools/ast.d.ts.map +1 -1
- package/dist/tools/hoisted.d.ts.map +1 -1
- package/dist/tools/inspect.d.ts +30 -0
- package/dist/tools/inspect.d.ts.map +1 -0
- package/dist/tools/navigation.d.ts +1 -1
- package/dist/tools/reading.d.ts.map +1 -1
- package/dist/tools/refactoring.d.ts.map +1 -1
- package/dist/tools/semantic.d.ts.map +1 -1
- package/dist/tui.js +39 -3
- package/dist/workflow-hints.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/shared/status.ts +28 -5
- package/src/tui/index.tsx +18 -2
- package/src/tui/sidebar.tsx +23 -3
- package/dist/tools/lsp.d.ts +0 -7
- package/dist/tools/lsp.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,uBAAuB,CAAC;AA2K/B,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD;AAID,KAAK,UAAU,GAAG;IAChB,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpE,CAAC;AAyBF,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,EAAE,CAAC,CAqBvB;
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../src/notifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,uBAAuB,CAAC;AA2K/B,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD;AAID,KAAK,UAAU,GAAG;IAChB,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpE,CAAC;AAyBF,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,EAAE,CAAC,CAqBvB;AAmGD,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,yBAAyB,GAAG,uBAAuB,GAAG,oBAAoB,CAAC;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe3F;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C1F;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA2Cf;AA2ID,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,uBAAuB,EAC7B,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C9E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch-parser.d.ts","sourceRoot":"","sources":["../src/patch-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAqHrD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,CAqDpD;AAqMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,EAAE,GACxB,MAAM,
|
|
1
|
+
{"version":3,"file":"patch-parser.d.ts","sourceRoot":"","sources":["../src/patch-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAqHrD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,CAqDpD;AAqMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,EAAE,GACxB,MAAM,CAkHR"}
|
package/dist/shared/status.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export interface AftStatusSnapshot {
|
|
|
17
17
|
* True when at least one heavy AFT subsystem has been auto-disabled for
|
|
18
18
|
* the current project root. `degraded_reasons` enumerates why (e.g.
|
|
19
19
|
* `["home_root"]`, `["search_too_many_files:20000"]`). The sidebar / TUI
|
|
20
|
-
* dialog surface this so users know `aft_search`, `
|
|
20
|
+
* dialog surface this so users know `aft_search`, `aft_callgraph` etc.
|
|
21
21
|
* won't return results from this session and can choose to open a
|
|
22
22
|
* project subdirectory instead.
|
|
23
23
|
*/
|
|
@@ -44,6 +44,7 @@ export interface AftStatusSnapshot {
|
|
|
44
44
|
files?: number | null;
|
|
45
45
|
entries_done?: number | null;
|
|
46
46
|
entries_total?: number | null;
|
|
47
|
+
refreshing_count: number;
|
|
47
48
|
entries: number | null;
|
|
48
49
|
dimension: number | null;
|
|
49
50
|
error?: string | null;
|
|
@@ -78,6 +79,8 @@ export interface AftStatusSnapshot {
|
|
|
78
79
|
*/
|
|
79
80
|
message: string;
|
|
80
81
|
}
|
|
82
|
+
export declare function formatSemanticIndexStatus(status: string, stage?: string | null): string;
|
|
83
|
+
export declare function formatSemanticRefreshing(refreshingCount: number): string | null;
|
|
81
84
|
export declare function formatBytes(bytes: number): string;
|
|
82
85
|
export declare function coerceAftStatus(response: Record<string, unknown>): AftStatusSnapshot;
|
|
83
86
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/shared/status.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,0BAA0B,CAAC;IACpC,OAAO,EAAE,0BAA0B,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE;QACR,cAAc,EAAE,OAAO,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,wBAAwB,EAAE,OAAO,CAAC;QAClC,YAAY,EAAE,OAAO,CAAC;QACtB,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,YAAY,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC;IACF,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,CAAC;IACF,IAAI,EAAE;QACJ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iEAAiE;IACjE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,wEAAwE;IACxE,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAqDD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAajD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/shared/status.ts"],"names":[],"mappings":"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"}
|
package/dist/shutdown-hooks.d.ts
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* listener and fire duplicate shutdowns.
|
|
16
16
|
*/
|
|
17
17
|
type Cleanup = () => Promise<void> | void;
|
|
18
|
+
export declare function runCleanups(reason: string): Promise<void>;
|
|
18
19
|
/**
|
|
19
20
|
* Register a shutdown cleanup. Call from plugin initialization; returned
|
|
20
21
|
* function unregisters (use in `dispose` so plugin reloads don't leak).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown-hooks.d.ts","sourceRoot":"","sources":["../src/shutdown-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,KAAK,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"shutdown-hooks.d.ts","sourceRoot":"","sources":["../src/shutdown-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,KAAK,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAoB1C,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB/D;AA0BD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,IAAI,CAO/D"}
|
package/dist/tools/_shared.d.ts
CHANGED
|
@@ -56,6 +56,19 @@ export declare const optionalInt: (min: number, max: number) => any;
|
|
|
56
56
|
* declared more permissively.
|
|
57
57
|
*/
|
|
58
58
|
export declare function coerceOptionalInt(v: unknown, paramName: string, min: number, max: number): number | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* True when a value represents "agent did not provide this param".
|
|
61
|
+
*
|
|
62
|
+
* GPT-family models send empty strings / empty arrays / null instead of
|
|
63
|
+
* omitting optional params entirely. Use this BEFORE mutual-exclusion
|
|
64
|
+
* checks so an empty `targets: []` or `url: ""` doesn't get counted as
|
|
65
|
+
* present and trigger a misleading "X is mutually exclusive with Y" error.
|
|
66
|
+
*
|
|
67
|
+
* Treats undefined / null / "" / [] / {} as empty. Booleans and numbers
|
|
68
|
+
* (including 0 and false) are NOT empty by themselves — only string and
|
|
69
|
+
* collection sentinels qualify.
|
|
70
|
+
*/
|
|
71
|
+
export declare function isEmptyParam(value: unknown): boolean;
|
|
59
72
|
/**
|
|
60
73
|
* Per-command timeout overrides (milliseconds).
|
|
61
74
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/tools/_shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAQhF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,GACR,CAAC;AAEhD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,OAAO,EACV,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAWpB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASlE,CAAC;AAEF,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AA2BD,8EAA8E;AAC9E,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,MAAM,CAsDR;AAsBD;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAW3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,GAAG,YAAY,CAEhF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0BlC;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAE9F"}
|
|
1
|
+
{"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/tools/_shared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAQhF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,GACR,CAAC;AAEhD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,OAAO,EACV,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAWpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMpD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASlE,CAAC;AAEF,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AA2BD,8EAA8E;AAC9E,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,MAAM,CAsDR;AAsBD;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAW3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,GAAG,YAAY,CAEhF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACpC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0BlC;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAE9F"}
|
package/dist/tools/ast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/tools/ast.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAkDjD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/tools/ast.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAkDjD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA8S3E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hoisted.d.ts","sourceRoot":"","sources":["../../src/tools/hoisted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAyEjD,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,GAAI,IAAI,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MAChD,CAAC;
|
|
1
|
+
{"version":3,"file":"hoisted.d.ts","sourceRoot":"","sources":["../../src/tools/hoisted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAyEjD,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,GAAI,IAAI,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MAChD,CAAC;AA0RtC;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,cAAc,CAkKjE;AAknCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA0B/E;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA8FnF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ToolDefinition } from "@opencode-ai/plugin";
|
|
2
|
+
import type { PluginContext } from "../types.js";
|
|
3
|
+
export declare function renderInspectDiagnostics(response: Record<string, unknown>): string;
|
|
4
|
+
export interface InspectToolConfig {
|
|
5
|
+
tool_surface?: "minimal" | "recommended" | "all";
|
|
6
|
+
disabled_tools?: string[];
|
|
7
|
+
inspect?: {
|
|
8
|
+
enabled?: boolean;
|
|
9
|
+
tier2_idle_minutes?: number;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare function inspectToolSurfaceEnabled(config: InspectToolConfig): boolean;
|
|
13
|
+
export declare function shouldRegisterInspectTool(config: InspectToolConfig): boolean;
|
|
14
|
+
type TimerHandle = ReturnType<typeof setTimeout>;
|
|
15
|
+
export interface InspectTier2IdleSchedulerOptions {
|
|
16
|
+
isEnabled: () => boolean;
|
|
17
|
+
idleMinutes: () => number | undefined;
|
|
18
|
+
run: (sessionID: string) => Promise<void>;
|
|
19
|
+
warn?: (message: string) => void;
|
|
20
|
+
setTimer?: (callback: () => void, delayMs: number) => TimerHandle;
|
|
21
|
+
clearTimer?: (timer: TimerHandle) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare function createInspectTier2IdleScheduler(options: InspectTier2IdleSchedulerOptions): {
|
|
24
|
+
schedule: (sessionID: string) => void;
|
|
25
|
+
clear: (sessionID: string) => void;
|
|
26
|
+
clearAll: () => void;
|
|
27
|
+
};
|
|
28
|
+
export declare function inspectTools(ctx: PluginContext): Record<string, ToolDefinition>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=inspect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/tools/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgGjD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAWlF;AAiBD,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,KAAK,CAAC;IACjD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAE5E;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAI5E;AAED,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAEjD,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACtC,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,WAAW,CAAC;IAClE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CAC3C;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,gCAAgC;0BAmB1D,MAAM,KAAG,IAAI;uBAdhB,MAAM,KAAG,IAAI;oBAOlB,IAAI;EAwB1B;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA2D/E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ToolDefinition } from "@opencode-ai/plugin";
|
|
2
2
|
import type { PluginContext } from "../types.js";
|
|
3
3
|
/**
|
|
4
|
-
* Tool definitions for navigation
|
|
4
|
+
* Tool definitions for call-graph navigation: call_tree, callers, trace_to, trace_to_symbol, impact, and trace_data.
|
|
5
5
|
*/
|
|
6
6
|
export declare function navigationTools(ctx: PluginContext): Record<string, ToolDefinition>;
|
|
7
7
|
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reading.d.ts","sourceRoot":"","sources":["../../src/tools/reading.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"reading.d.ts","sourceRoot":"","sources":["../../src/tools/reading.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0CjD,UAAU,qBAAqB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,eAAe;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA+T/E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACnC,eAAe,CAyBjB;AA+CD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CA2ChF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refactoring.d.ts","sourceRoot":"","sources":["../../src/tools/refactoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAcjD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"refactoring.d.ts","sourceRoot":"","sources":["../../src/tools/refactoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAcjD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA4InF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/tools/semantic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/tools/semantic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAqBjD,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA6FhF"}
|
package/dist/tui.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// src/tui/index.tsx
|
|
2
2
|
import { createMemo as createMemo2, createSignal as createSignal2, onCleanup as onCleanup2 } from "solid-js";
|
|
3
3
|
// package.json
|
|
4
|
-
var version = "0.
|
|
4
|
+
var version = "0.33.0";
|
|
5
5
|
|
|
6
6
|
// src/shared/rpc-client.ts
|
|
7
7
|
import { existsSync, readdirSync, readFileSync, unlinkSync } from "node:fs";
|
|
@@ -343,6 +343,19 @@ function readCompression(value) {
|
|
|
343
343
|
session: readCompressionAggregate(compression.session)
|
|
344
344
|
};
|
|
345
345
|
}
|
|
346
|
+
function formatSemanticIndexStatus(status, stage) {
|
|
347
|
+
if ((status === "loading" || status === "building") && stage === "fingerprint_change") {
|
|
348
|
+
return "Rebuilding (model changed)";
|
|
349
|
+
}
|
|
350
|
+
return status;
|
|
351
|
+
}
|
|
352
|
+
function formatSemanticRefreshing(refreshingCount) {
|
|
353
|
+
if (!Number.isFinite(refreshingCount) || refreshingCount <= 0)
|
|
354
|
+
return null;
|
|
355
|
+
if (refreshingCount > 20)
|
|
356
|
+
return "Ready (many files refreshing)";
|
|
357
|
+
return `Ready (${refreshingCount} file(s) refreshing)`;
|
|
358
|
+
}
|
|
346
359
|
function formatBytes(bytes) {
|
|
347
360
|
if (!Number.isFinite(bytes) || bytes <= 0)
|
|
348
361
|
return "0 B";
|
|
@@ -394,6 +407,7 @@ function coerceAftStatus(response) {
|
|
|
394
407
|
files: readOptionalNumber(semanticIndex.files),
|
|
395
408
|
entries_done: readOptionalNumber(semanticIndex.entries_done),
|
|
396
409
|
entries_total: readOptionalNumber(semanticIndex.entries_total),
|
|
410
|
+
refreshing_count: readNumber(semanticIndex.refreshing_count),
|
|
397
411
|
entries: readOptionalNumber(semanticIndex.entries),
|
|
398
412
|
dimension: readOptionalNumber(semanticIndex.dimension),
|
|
399
413
|
error: readNullableString(semanticIndex.error)
|
|
@@ -690,7 +704,15 @@ var SidebarContent = (props) => {
|
|
|
690
704
|
const s = () => scopedSidebarSnapshot(status(), currentDirectory(), props.sessionID());
|
|
691
705
|
const notInitialized = () => s()?.cache_role === "not_initialized";
|
|
692
706
|
const searchStatus = () => statusDisplay(s()?.search_index?.status ?? "disabled");
|
|
693
|
-
const semanticStatus = () =>
|
|
707
|
+
const semanticStatus = () => {
|
|
708
|
+
const rawStatus = s()?.semantic_index?.status ?? "disabled";
|
|
709
|
+
const display = statusDisplay(rawStatus);
|
|
710
|
+
return {
|
|
711
|
+
...display,
|
|
712
|
+
label: formatSemanticIndexStatus(rawStatus, s()?.semantic_index?.stage)
|
|
713
|
+
};
|
|
714
|
+
};
|
|
715
|
+
const semanticRefreshing = () => formatSemanticRefreshing(s()?.semantic_index?.refreshing_count ?? 0);
|
|
694
716
|
const trigramBytes = () => s()?.disk?.trigram_disk_bytes ?? 0;
|
|
695
717
|
const semanticBytes = () => s()?.disk?.semantic_disk_bytes ?? 0;
|
|
696
718
|
const compressionRows = () => formatCompressionSidebarRows(s()?.compression);
|
|
@@ -819,6 +841,13 @@ var SidebarContent = (props) => {
|
|
|
819
841
|
value: semanticStatus().label,
|
|
820
842
|
tone: semanticStatus().tone
|
|
821
843
|
}, undefined, false, undefined, this),
|
|
844
|
+
semanticRefreshing() && /* @__PURE__ */ jsxDEV("box", {
|
|
845
|
+
width: "100%",
|
|
846
|
+
children: /* @__PURE__ */ jsxDEV("text", {
|
|
847
|
+
fg: props.theme.textMuted,
|
|
848
|
+
children: semanticRefreshing()
|
|
849
|
+
}, undefined, false, undefined, this)
|
|
850
|
+
}, undefined, false, undefined, this),
|
|
822
851
|
s()?.semantic_index?.status === "loading" && s()?.semantic_index?.entries_total != null && s().semantic_index.entries_total > 0 && /* @__PURE__ */ jsxDEV(StatRow, {
|
|
823
852
|
theme: props.theme,
|
|
824
853
|
label: "Progress",
|
|
@@ -1189,9 +1218,16 @@ var StatusDialog = (props) => {
|
|
|
1189
1218
|
/* @__PURE__ */ jsxDEV2(R, {
|
|
1190
1219
|
theme: t(),
|
|
1191
1220
|
label: "Status",
|
|
1192
|
-
value: status().semantic_index.status,
|
|
1221
|
+
value: formatSemanticIndexStatus(status().semantic_index.status, status().semantic_index.stage),
|
|
1193
1222
|
tone: statusTone(status().semantic_index.status)
|
|
1194
1223
|
}, undefined, false, undefined, this),
|
|
1224
|
+
formatSemanticRefreshing(status().semantic_index.refreshing_count) ? /* @__PURE__ */ jsxDEV2("box", {
|
|
1225
|
+
width: "100%",
|
|
1226
|
+
children: /* @__PURE__ */ jsxDEV2("text", {
|
|
1227
|
+
fg: t().textMuted,
|
|
1228
|
+
children: formatSemanticRefreshing(status().semantic_index.refreshing_count)
|
|
1229
|
+
}, undefined, false, undefined, this)
|
|
1230
|
+
}, undefined, false, undefined, this) : null,
|
|
1195
1231
|
/* @__PURE__ */ jsxDEV2(R, {
|
|
1196
1232
|
theme: t(),
|
|
1197
1233
|
label: "Entries",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-hints.d.ts","sourceRoot":"","sources":["../src/workflow-hints.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,aAAa,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,WAAW,EAAE,SAAS,GAAG,aAAa,GAAG,KAAK,CAAC;IAC/C,4EAA4E;IAC5E,aAAa,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,eAAe,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,qBAAqB,EAAE,OAAO,CAAC;IAC/B,4DAA4D;IAC5D,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"workflow-hints.d.ts","sourceRoot":"","sources":["../src/workflow-hints.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,aAAa,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,WAAW,EAAE,SAAS,GAAG,aAAa,GAAG,KAAK,CAAC;IAC/C,4EAA4E;IAC5E,aAAa,EAAE,OAAO,CAAC;IACvB,mEAAmE;IACnE,eAAe,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,qBAAqB,EAAE,OAAO,CAAC;IAC/B,4DAA4D;IAC5D,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CA0FzE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAQjG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cortexkit/aft-opencode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "OpenCode plugin for Agent File Tools (AFT) — tree-sitter and lsp powered code analysis",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
|
-
"url": "https://github.com/cortexkit/aft"
|
|
11
|
+
"url": "git+https://github.com/cortexkit/aft.git"
|
|
12
12
|
},
|
|
13
13
|
"files": [
|
|
14
14
|
"dist",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"scripts": {
|
|
21
21
|
"build": "bun build src/index.ts --outdir dist --target node --format esm --external @opencode-ai/plugin --external @opencode-ai/sdk && bun build src/tui/index.tsx --outfile dist/tui.js --target node --format esm --external @opencode-ai/plugin --external @opencode-ai/plugin/tui --external @opencode-ai/sdk --external @opentui/solid --external solid-js && tsc --emitDeclarationOnly",
|
|
22
22
|
"typecheck": "tsc --noEmit",
|
|
23
|
-
"pretest": "
|
|
23
|
+
"pretest": "node -e \"if (process.env.CI !== 'true') { const { spawnSync } = require('node:child_process'); const result = spawnSync('cargo', ['build'], { cwd: '../..', stdio: 'inherit', shell: process.platform === 'win32' }); process.exit(result.status ?? 1); } else { console.log('Skipping cargo build in CI; workflow builds agent-file-tools before tests.'); }\"",
|
|
24
24
|
"test": "bun test",
|
|
25
25
|
"test:e2e": "bun test src/__tests__/e2e/",
|
|
26
26
|
"lint": "biome check src",
|
|
@@ -29,23 +29,23 @@
|
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@clack/prompts": "^1.2.0",
|
|
32
|
-
"@cortexkit/aft-bridge": "0.
|
|
33
|
-
"@opencode-ai/plugin": "^1.15.5",
|
|
34
|
-
"@opencode-ai/sdk": "^1.15.5",
|
|
32
|
+
"@cortexkit/aft-bridge": "0.33.0",
|
|
35
33
|
"@xterm/headless": "^5.5.0",
|
|
36
34
|
"comment-json": "^4.6.2",
|
|
37
35
|
"undici": "^7.25.0",
|
|
38
36
|
"zod": "^4.1.8"
|
|
39
37
|
},
|
|
40
38
|
"optionalDependencies": {
|
|
41
|
-
"@cortexkit/aft-darwin-arm64": "0.
|
|
42
|
-
"@cortexkit/aft-darwin-x64": "0.
|
|
43
|
-
"@cortexkit/aft-linux-arm64": "0.
|
|
44
|
-
"@cortexkit/aft-linux-x64": "0.
|
|
45
|
-
"@cortexkit/aft-win32-arm64": "0.
|
|
46
|
-
"@cortexkit/aft-win32-x64": "0.
|
|
39
|
+
"@cortexkit/aft-darwin-arm64": "0.33.0",
|
|
40
|
+
"@cortexkit/aft-darwin-x64": "0.33.0",
|
|
41
|
+
"@cortexkit/aft-linux-arm64": "0.33.0",
|
|
42
|
+
"@cortexkit/aft-linux-x64": "0.33.0",
|
|
43
|
+
"@cortexkit/aft-win32-arm64": "0.33.0",
|
|
44
|
+
"@cortexkit/aft-win32-x64": "0.33.0"
|
|
47
45
|
},
|
|
48
46
|
"devDependencies": {
|
|
47
|
+
"@opencode-ai/plugin": "^1.15.11",
|
|
48
|
+
"@opencode-ai/sdk": "^1.15.11",
|
|
49
49
|
"@types/node": "^22.0.0",
|
|
50
50
|
"typescript": "^5.8.0"
|
|
51
51
|
},
|
package/src/shared/status.ts
CHANGED
|
@@ -19,7 +19,7 @@ export interface AftStatusSnapshot {
|
|
|
19
19
|
* True when at least one heavy AFT subsystem has been auto-disabled for
|
|
20
20
|
* the current project root. `degraded_reasons` enumerates why (e.g.
|
|
21
21
|
* `["home_root"]`, `["search_too_many_files:20000"]`). The sidebar / TUI
|
|
22
|
-
* dialog surface this so users know `aft_search`, `
|
|
22
|
+
* dialog surface this so users know `aft_search`, `aft_callgraph` etc.
|
|
23
23
|
* won't return results from this session and can choose to open a
|
|
24
24
|
* project subdirectory instead.
|
|
25
25
|
*/
|
|
@@ -46,6 +46,7 @@ export interface AftStatusSnapshot {
|
|
|
46
46
|
files?: number | null;
|
|
47
47
|
entries_done?: number | null;
|
|
48
48
|
entries_total?: number | null;
|
|
49
|
+
refreshing_count: number;
|
|
49
50
|
entries: number | null;
|
|
50
51
|
dimension: number | null;
|
|
51
52
|
error?: string | null;
|
|
@@ -132,6 +133,19 @@ function formatCount(value: number | null): string {
|
|
|
132
133
|
return value == null ? "—" : value.toLocaleString("en-US");
|
|
133
134
|
}
|
|
134
135
|
|
|
136
|
+
export function formatSemanticIndexStatus(status: string, stage?: string | null): string {
|
|
137
|
+
if ((status === "loading" || status === "building") && stage === "fingerprint_change") {
|
|
138
|
+
return "Rebuilding (model changed)";
|
|
139
|
+
}
|
|
140
|
+
return status;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export function formatSemanticRefreshing(refreshingCount: number): string | null {
|
|
144
|
+
if (!Number.isFinite(refreshingCount) || refreshingCount <= 0) return null;
|
|
145
|
+
if (refreshingCount > 20) return "Ready (many files refreshing)";
|
|
146
|
+
return `Ready (${refreshingCount} file(s) refreshing)`;
|
|
147
|
+
}
|
|
148
|
+
|
|
135
149
|
export function formatBytes(bytes: number): string {
|
|
136
150
|
if (!Number.isFinite(bytes) || bytes <= 0) return "0 B";
|
|
137
151
|
const units = ["B", "KB", "MB", "GB", "TB"];
|
|
@@ -190,6 +204,7 @@ export function coerceAftStatus(response: Record<string, unknown>): AftStatusSna
|
|
|
190
204
|
files: readOptionalNumber(semanticIndex.files),
|
|
191
205
|
entries_done: readOptionalNumber(semanticIndex.entries_done),
|
|
192
206
|
entries_total: readOptionalNumber(semanticIndex.entries_total),
|
|
207
|
+
refreshing_count: readNumber(semanticIndex.refreshing_count),
|
|
193
208
|
entries: readOptionalNumber(semanticIndex.entries),
|
|
194
209
|
dimension: readOptionalNumber(semanticIndex.dimension),
|
|
195
210
|
error: readNullableString(semanticIndex.error),
|
|
@@ -241,9 +256,13 @@ export function formatStatusDialogMessage(status: AftStatusSnapshot): string {
|
|
|
241
256
|
`- trigrams: ${formatCount(status.search_index.trigrams)}`,
|
|
242
257
|
"",
|
|
243
258
|
"Semantic index",
|
|
244
|
-
`- status: ${status.semantic_index.status}`,
|
|
245
|
-
`- entries: ${formatCount(status.semantic_index.entries)}`,
|
|
259
|
+
`- status: ${formatSemanticIndexStatus(status.semantic_index.status, status.semantic_index.stage)}`,
|
|
246
260
|
];
|
|
261
|
+
const refreshing = formatSemanticRefreshing(status.semantic_index.refreshing_count);
|
|
262
|
+
if (refreshing) {
|
|
263
|
+
lines.push(`- ${refreshing}`);
|
|
264
|
+
}
|
|
265
|
+
lines.push(`- entries: ${formatCount(status.semantic_index.entries)}`);
|
|
247
266
|
if (status.semantic_index.backend) {
|
|
248
267
|
lines.push(`- backend: ${status.semantic_index.backend}`);
|
|
249
268
|
}
|
|
@@ -316,9 +335,13 @@ export function formatStatusMarkdown(status: AftStatusSnapshot): string {
|
|
|
316
335
|
`- **Trigrams:** ${formatCount(status.search_index.trigrams)}`,
|
|
317
336
|
"",
|
|
318
337
|
"### Semantic index",
|
|
319
|
-
`- **Status:** \`${status.semantic_index.status}\``,
|
|
320
|
-
`- **Entries:** ${formatCount(status.semantic_index.entries)}`,
|
|
338
|
+
`- **Status:** \`${formatSemanticIndexStatus(status.semantic_index.status, status.semantic_index.stage)}\``,
|
|
321
339
|
];
|
|
340
|
+
const refreshing = formatSemanticRefreshing(status.semantic_index.refreshing_count);
|
|
341
|
+
if (refreshing) {
|
|
342
|
+
lines.push(`- **Refresh:** ${refreshing}`);
|
|
343
|
+
}
|
|
344
|
+
lines.push(`- **Entries:** ${formatCount(status.semantic_index.entries)}`);
|
|
322
345
|
if (status.semantic_index.backend) {
|
|
323
346
|
lines.push(`- **Backend:** ${status.semantic_index.backend}`);
|
|
324
347
|
}
|
package/src/tui/index.tsx
CHANGED
|
@@ -6,7 +6,13 @@ import { createMemo, createSignal, onCleanup } from "solid-js";
|
|
|
6
6
|
|
|
7
7
|
import { version as packageVersion } from "../../package.json";
|
|
8
8
|
import { AftRpcClient } from "../shared/rpc-client";
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
type AftStatusSnapshot,
|
|
11
|
+
coerceAftStatus,
|
|
12
|
+
formatBytes,
|
|
13
|
+
formatSemanticIndexStatus,
|
|
14
|
+
formatSemanticRefreshing,
|
|
15
|
+
} from "../shared/status";
|
|
10
16
|
import {
|
|
11
17
|
createAftSidebarSlot,
|
|
12
18
|
formatCompressionSidebarRows,
|
|
@@ -331,9 +337,19 @@ const StatusDialog = (props: StatusDialogProps) => {
|
|
|
331
337
|
<R
|
|
332
338
|
theme={t()}
|
|
333
339
|
label="Status"
|
|
334
|
-
value={
|
|
340
|
+
value={formatSemanticIndexStatus(
|
|
341
|
+
status()!.semantic_index.status,
|
|
342
|
+
status()!.semantic_index.stage,
|
|
343
|
+
)}
|
|
335
344
|
tone={statusTone(status()!.semantic_index.status)}
|
|
336
345
|
/>
|
|
346
|
+
{formatSemanticRefreshing(status()!.semantic_index.refreshing_count) ? (
|
|
347
|
+
<box width="100%">
|
|
348
|
+
<text fg={t().textMuted}>
|
|
349
|
+
{formatSemanticRefreshing(status()!.semantic_index.refreshing_count)}
|
|
350
|
+
</text>
|
|
351
|
+
</box>
|
|
352
|
+
) : null}
|
|
337
353
|
<R
|
|
338
354
|
theme={t()}
|
|
339
355
|
label="Entries"
|
package/src/tui/sidebar.tsx
CHANGED
|
@@ -11,7 +11,13 @@ import type { TuiPluginApi, TuiSlotPlugin, TuiThemeCurrent } from "@opencode-ai/
|
|
|
11
11
|
import { createEffect, createMemo, createSignal, on, onCleanup } from "solid-js";
|
|
12
12
|
|
|
13
13
|
import { AftRpcClient } from "../shared/rpc-client";
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
type AftStatusSnapshot,
|
|
16
|
+
coerceAftStatus,
|
|
17
|
+
formatSemanticIndexStatus,
|
|
18
|
+
formatSemanticRefreshing,
|
|
19
|
+
type StatusCompression,
|
|
20
|
+
} from "../shared/status";
|
|
15
21
|
import { resolveCortexKitStorageRoot } from "../shared/storage-paths";
|
|
16
22
|
|
|
17
23
|
const SINGLE_BORDER = { type: "single" } as any;
|
|
@@ -341,7 +347,16 @@ const SidebarContent = (props: {
|
|
|
341
347
|
// Pre-compute display values so the JSX stays readable. createMemo for
|
|
342
348
|
// each derived field would be overkill — these are cheap derivations.
|
|
343
349
|
const searchStatus = () => statusDisplay(s()?.search_index?.status ?? "disabled");
|
|
344
|
-
const semanticStatus = () =>
|
|
350
|
+
const semanticStatus = () => {
|
|
351
|
+
const rawStatus = s()?.semantic_index?.status ?? "disabled";
|
|
352
|
+
const display = statusDisplay(rawStatus);
|
|
353
|
+
return {
|
|
354
|
+
...display,
|
|
355
|
+
label: formatSemanticIndexStatus(rawStatus, s()?.semantic_index?.stage),
|
|
356
|
+
};
|
|
357
|
+
};
|
|
358
|
+
const semanticRefreshing = () =>
|
|
359
|
+
formatSemanticRefreshing(s()?.semantic_index?.refreshing_count ?? 0);
|
|
345
360
|
const trigramBytes = () => s()?.disk?.trigram_disk_bytes ?? 0;
|
|
346
361
|
const semanticBytes = () => s()?.disk?.semantic_disk_bytes ?? 0;
|
|
347
362
|
const compressionRows = () => formatCompressionSidebarRows(s()?.compression);
|
|
@@ -405,7 +420,7 @@ const SidebarContent = (props: {
|
|
|
405
420
|
)}
|
|
406
421
|
</box>
|
|
407
422
|
|
|
408
|
-
{/* Degraded reason — explains why heavy tools (aft_search,
|
|
423
|
+
{/* Degraded reason — explains why heavy tools (aft_search, aft_callgraph)
|
|
409
424
|
are disabled. Surface this prominently so users know to open a real
|
|
410
425
|
project subdirectory if they want full features. */}
|
|
411
426
|
{s()?.degraded && degradedSummary() && (
|
|
@@ -463,6 +478,11 @@ const SidebarContent = (props: {
|
|
|
463
478
|
value={semanticStatus().label}
|
|
464
479
|
tone={semanticStatus().tone}
|
|
465
480
|
/>
|
|
481
|
+
{semanticRefreshing() && (
|
|
482
|
+
<box width="100%">
|
|
483
|
+
<text fg={props.theme.textMuted}>{semanticRefreshing()}</text>
|
|
484
|
+
</box>
|
|
485
|
+
)}
|
|
466
486
|
{/* When loading, magic-context-style progress hint helps users see
|
|
467
487
|
background work is making progress instead of stuck. */}
|
|
468
488
|
{s()?.semantic_index?.status === "loading" &&
|
package/dist/tools/lsp.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { ToolDefinition } from "@opencode-ai/plugin";
|
|
2
|
-
import type { PluginContext } from "../types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Tool definitions for LSP commands: diagnostics.
|
|
5
|
-
*/
|
|
6
|
-
export declare function lspTools(ctx: PluginContext): Record<string, ToolDefinition>;
|
|
7
|
-
//# sourceMappingURL=lsp.d.ts.map
|
package/dist/tools/lsp.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../../src/tools/lsp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAsD3E"}
|