@cortexkit/aft-opencode 0.27.0 → 0.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/config.d.ts CHANGED
@@ -10,6 +10,7 @@ export declare const LspServerSchema: z.ZodObject<{
10
10
  id: z.ZodString;
11
11
  }, z.core.$strip>;
12
12
  export declare const AftConfigSchema: z.ZodObject<{
13
+ $schema: z.ZodOptional<z.ZodString>;
13
14
  format_on_edit: z.ZodOptional<z.ZodBoolean>;
14
15
  formatter_timeout_secs: z.ZodOptional<z.ZodNumber>;
15
16
  validate_on_edit: z.ZodOptional<z.ZodEnum<{
@@ -119,6 +120,25 @@ export interface ConfigureExperimentalOverrides {
119
120
  experimental_lsp_ty?: boolean;
120
121
  }
121
122
  export declare function resolveLspConfigForConfigure(config: AftConfig): ConfigureLspOverrides;
123
+ /**
124
+ * Build the per-project subset of configure overrides that come from
125
+ * `aft.jsonc` (user config merged with project config). Used by the OpenCode
126
+ * plugin's per-bridge `projectConfigLoader` so each project's `aft.jsonc` wins
127
+ * over the user-level config for that project's bridge, instead of every
128
+ * bridge inheriting whatever project was visible at plugin init.
129
+ *
130
+ * **DO NOT** put genuinely-global fields here. Things like `storage_dir`,
131
+ * `_ort_dylib_dir`, `harness`, `lsp_paths_extra`, `bash_permissions` are set
132
+ * at plugin init from process state (XDG dirs, ONNX download path, etc.) and
133
+ * MUST NOT be re-derived per-bridge — they're identical across all bridges in
134
+ * one OpenCode/Pi process.
135
+ *
136
+ * **DO NOT** put fields that affect plugin-side tool registration here.
137
+ * `tool_surface`, `disabled_tools`, and `hoist_builtin_tools` lock at plugin
138
+ * init because OpenCode registers tools synchronously when the plugin
139
+ * function returns. Per-bridge changes to those fields wouldn't take effect.
140
+ */
141
+ export declare function resolveProjectOverridesForConfigure(config: AftConfig): Record<string, unknown>;
122
142
  export declare function resolveExperimentalConfigForConfigure(config: AftConfig): ConfigureExperimentalOverrides;
123
143
  type Logger = {
124
144
  log: (message: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmExB,eAAO,MAAM,eAAe;;;;;;;;;iBAE1B,CAAC;AA6CH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkEjB,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,8BAA8B;IAC7C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,sCAAsC,CAAC,EAAE,MAAM,CAAC;IAChD,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAMD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,qBAAqB,CAmDrF;AAED,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,SAAS,GAChB,8BAA8B,CAuBhC;AAED,KAAK,MAAM,GAAG;IACZ,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC;AAiGF,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,MAAsB,GAC7B;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAwD1C;AAuTD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAiDjE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmExB,eAAO,MAAM,eAAe;;;;;;;;;iBAE1B,CAAC;AA6CH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwEjB,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,8BAA8B;IAC7C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,sCAAsC,CAAC,EAAE,MAAM,CAAC;IAChD,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAMD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,qBAAqB,CAmDrF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mCAAmC,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4B9F;AAED,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,SAAS,GAChB,8BAA8B,CAuBhC;AAED,KAAK,MAAM,GAAG;IACZ,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC;AAiGF,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,MAAsB,GAC7B;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAwD1C;AAuTD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAiDjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA8JlD;;;;;;;;;;;;;;;;;;GAkBG;AAQH,QAAA,MAAM,MAAM,EAAE,MAA6D,CAAC;AAmvB5E,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA2JlD;;;;;;;;;;;;;;;;;;GAkBG;AAQH,QAAA,MAAM,MAAM,EAAE,MAA6D,CAAC;AAgwB5E,eAAe,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -9664,6 +9664,7 @@ class BridgePool {
9664
9664
  idleTimeoutMs;
9665
9665
  bridgeOptions;
9666
9666
  configOverrides;
9667
+ projectConfigLoader;
9667
9668
  logger;
9668
9669
  cleanupTimer = null;
9669
9670
  constructor(binaryPath, options = {}, configOverrides = {}) {
@@ -9671,6 +9672,7 @@ class BridgePool {
9671
9672
  this.maxPoolSize = options.maxPoolSize ?? DEFAULT_MAX_POOL_SIZE;
9672
9673
  this.idleTimeoutMs = options.idleTimeoutMs ?? DEFAULT_IDLE_TIMEOUT_MS;
9673
9674
  this.logger = options.logger;
9675
+ this.projectConfigLoader = options.projectConfigLoader;
9674
9676
  this.bridgeOptions = {
9675
9677
  timeoutMs: options.timeoutMs,
9676
9678
  maxRestarts: options.maxRestarts,
@@ -9706,7 +9708,17 @@ class BridgePool {
9706
9708
  if (this.bridges.size >= this.maxPoolSize) {
9707
9709
  this.evictLRU();
9708
9710
  }
9709
- const bridge = new BinaryBridge(this.binaryPath, key, this.bridgeOptions, this.configOverrides);
9711
+ let projectOverrides = {};
9712
+ if (this.projectConfigLoader) {
9713
+ try {
9714
+ projectOverrides = this.projectConfigLoader(key) ?? {};
9715
+ } catch (err) {
9716
+ const message = err instanceof Error ? err.message : String(err);
9717
+ this.error(`projectConfigLoader failed; using global overrides only: ${message}`);
9718
+ }
9719
+ }
9720
+ const mergedOverrides = { ...this.configOverrides, ...projectOverrides };
9721
+ const bridge = new BinaryBridge(this.binaryPath, key, this.bridgeOptions, mergedOverrides);
9710
9722
  this.bridges.set(key, { bridge, lastUsed: Date.now() });
9711
9723
  return bridge;
9712
9724
  }
@@ -24335,6 +24347,7 @@ var ExperimentalConfigSchema = exports_external.object({
24335
24347
  lsp_ty: exports_external.boolean().optional()
24336
24348
  });
24337
24349
  var AftConfigSchema = exports_external.object({
24350
+ $schema: exports_external.string().optional(),
24338
24351
  format_on_edit: exports_external.boolean().optional(),
24339
24352
  formatter_timeout_secs: exports_external.number().int().min(1).max(600).optional(),
24340
24353
  validate_on_edit: exports_external.enum(["syntax", "full"]).optional(),
@@ -24400,6 +24413,31 @@ function resolveLspConfigForConfigure(config2) {
24400
24413
  }
24401
24414
  return overrides;
24402
24415
  }
24416
+ function resolveProjectOverridesForConfigure(config2) {
24417
+ const overrides = {};
24418
+ if (config2.format_on_edit !== undefined)
24419
+ overrides.format_on_edit = config2.format_on_edit;
24420
+ if (config2.formatter_timeout_secs !== undefined)
24421
+ overrides.formatter_timeout_secs = config2.formatter_timeout_secs;
24422
+ if (config2.validate_on_edit !== undefined)
24423
+ overrides.validate_on_edit = config2.validate_on_edit;
24424
+ if (config2.formatter !== undefined)
24425
+ overrides.formatter = config2.formatter;
24426
+ if (config2.checker !== undefined)
24427
+ overrides.checker = config2.checker;
24428
+ overrides.restrict_to_project_root = config2.restrict_to_project_root ?? false;
24429
+ if (config2.search_index !== undefined)
24430
+ overrides.search_index = config2.search_index;
24431
+ if (config2.semantic_search !== undefined)
24432
+ overrides.semantic_search = config2.semantic_search;
24433
+ Object.assign(overrides, resolveExperimentalConfigForConfigure(config2));
24434
+ Object.assign(overrides, resolveLspConfigForConfigure(config2));
24435
+ if (config2.semantic !== undefined)
24436
+ overrides.semantic = config2.semantic;
24437
+ if (config2.max_callgraph_files !== undefined)
24438
+ overrides.max_callgraph_files = config2.max_callgraph_files;
24439
+ return overrides;
24440
+ }
24403
24441
  function resolveExperimentalConfigForConfigure(config2) {
24404
24442
  const overrides = {};
24405
24443
  if (config2.experimental?.bash?.rewrite !== undefined) {
@@ -25901,8 +25939,9 @@ function runInstall(spec, version2, cwd, signal) {
25901
25939
  resolve3(false);
25902
25940
  return;
25903
25941
  }
25904
- const child = spawn3("bun", ["add", target, "--cwd", cwd, "--ignore-scripts", "--silent"], {
25905
- stdio: ["ignore", "pipe", "pipe"]
25942
+ const child = spawn3("npm", ["install", "--no-save", "--ignore-scripts", "--silent", target], {
25943
+ stdio: ["ignore", "pipe", "pipe"],
25944
+ cwd
25906
25945
  });
25907
25946
  child.unref();
25908
25947
  let stderrBuf = "";
@@ -29327,6 +29366,9 @@ function createWriteTool(ctx, editToolName = "edit") {
29327
29366
  let output = data.created ? "Created new file." : "File updated.";
29328
29367
  if (data.formatted)
29329
29368
  output += " Auto-formatted.";
29369
+ if (data.no_op === true) {
29370
+ output += " No net change \u2014 the written content is byte-identical to what was already on disk.";
29371
+ }
29330
29372
  const diags = data.lsp_diagnostics;
29331
29373
  if (diags && diags.length > 0) {
29332
29374
  const errors3 = diags.filter((d) => d.severity === "error");
@@ -29575,6 +29617,11 @@ function createEditTool(ctx, writeToolName = "write") {
29575
29617
  result += `
29576
29618
 
29577
29619
  ${globSkipNote}`;
29620
+ if (data.no_op === true) {
29621
+ result += `
29622
+
29623
+ Note: no net file change \u2014 the match was found and applied, but the file content is byte-identical to before. Likely causes: oldString and newString are identical, or a formatter normalized the change away.`;
29624
+ }
29578
29625
  const diags = data.lsp_diagnostics;
29579
29626
  if (diags && diags.length > 0) {
29580
29627
  const errors3 = diags.filter((d) => d.severity === "error");
@@ -31158,15 +31205,12 @@ var PLUGIN_VERSION = (() => {
31158
31205
  return "0.0.0";
31159
31206
  }
31160
31207
  })();
31161
- var ANNOUNCEMENT_VERSION = "0.18.0";
31208
+ var ANNOUNCEMENT_VERSION = "0.27.0";
31162
31209
  var ANNOUNCEMENT_FEATURES = [
31163
- `New experimental features \u2014 AFT now optionally hoists bash:
31164
- - Run bash scripts in the background.
31165
- - Initial output compression for git, cargo, npm, bun, pnpm, pytest, tsc (more in 0.19).
31166
- - Rewrite cat/grep/find/sed/ls into AFT counterparts for faster, formatted output.
31167
- Check GitHub for how to enable.`,
31168
- "Trigram grep/glob and semantic search (aft_search) graduated out of experimental.",
31169
- "Lots of bugfixes and new end-to-end test coverage."
31210
+ "Storage moved to ~/.local/share/cortexkit/aft (~/Library/Application Support/cortexkit/aft on macOS, %APPDATA%/cortexkit/aft on Windows). Your existing data migrated automatically on first launch.",
31211
+ "Bash output compression now reports token savings \u2014 visible in /aft-status and the TUI sidebar (Session + Project totals).",
31212
+ "Seven new languages supported by aft_outline / aft_zoom / aft_search / ast_grep: Java, Ruby, Kotlin, Swift, PHP, Lua, Perl.",
31213
+ "Join us on Discord: https://discord.gg/F2uWxjGnU"
31170
31214
  ];
31171
31215
  var plugin = async (input) => initializePluginForDirectory(input);
31172
31216
  async function initializePluginForDirectory(input) {
@@ -31174,29 +31218,10 @@ async function initializePluginForDirectory(input) {
31174
31218
  await ensureStorageMigrated({ harness: "opencode", binaryPath, logger: bridgeLogger });
31175
31219
  const aftConfig = loadAftConfig(input.directory);
31176
31220
  const autoUpdateAbort = new AbortController;
31177
- const configOverrides = {};
31178
- if (aftConfig.format_on_edit !== undefined)
31179
- configOverrides.format_on_edit = aftConfig.format_on_edit;
31180
- if (aftConfig.formatter_timeout_secs !== undefined)
31181
- configOverrides.formatter_timeout_secs = aftConfig.formatter_timeout_secs;
31182
- if (aftConfig.validate_on_edit !== undefined)
31183
- configOverrides.validate_on_edit = aftConfig.validate_on_edit;
31184
- if (aftConfig.formatter !== undefined)
31185
- configOverrides.formatter = aftConfig.formatter;
31186
- if (aftConfig.checker !== undefined)
31187
- configOverrides.checker = aftConfig.checker;
31188
- configOverrides.restrict_to_project_root = aftConfig.restrict_to_project_root ?? false;
31189
- configOverrides.bash_permissions = true;
31190
- if (aftConfig.search_index !== undefined)
31191
- configOverrides.search_index = aftConfig.search_index;
31192
- if (aftConfig.semantic_search !== undefined)
31193
- configOverrides.semantic_search = aftConfig.semantic_search;
31194
- Object.assign(configOverrides, resolveExperimentalConfigForConfigure(aftConfig));
31195
- Object.assign(configOverrides, resolveLspConfigForConfigure(aftConfig));
31196
- if (aftConfig.semantic !== undefined)
31197
- configOverrides.semantic = aftConfig.semantic;
31198
- if (aftConfig.max_callgraph_files !== undefined)
31199
- configOverrides.max_callgraph_files = aftConfig.max_callgraph_files;
31221
+ const configOverrides = {
31222
+ ...resolveProjectOverridesForConfigure(aftConfig),
31223
+ bash_permissions: true
31224
+ };
31200
31225
  const isFastembedSemanticBackend = (aftConfig.semantic?.backend ?? "fastembed") === "fastembed";
31201
31226
  configOverrides.storage_dir = resolveCortexKitStorageRoot();
31202
31227
  let onnxRuntimePromise = null;
@@ -31277,6 +31302,15 @@ ${lines}
31277
31302
  const poolOptions = {
31278
31303
  errorPrefix: "[aft-plugin]",
31279
31304
  minVersion: PLUGIN_VERSION,
31305
+ projectConfigLoader: (projectRoot) => {
31306
+ try {
31307
+ const projectConfig = loadAftConfig(projectRoot);
31308
+ return resolveProjectOverridesForConfigure(projectConfig);
31309
+ } catch (err) {
31310
+ warn2(`loadAftConfig(${projectRoot}) failed; falling back to plugin-init config: ${err instanceof Error ? err.message : String(err)}`);
31311
+ return {};
31312
+ }
31313
+ },
31280
31314
  onVersionMismatch: async (binaryVersion, minVersion) => {
31281
31315
  const existing = versionUpgradePromises.get(minVersion);
31282
31316
  if (existing) {
@@ -19,7 +19,7 @@
19
19
  * installed, log a warning and keep the existing version.
20
20
  * Otherwise skip + warn.
21
21
  *
22
- * 3. Spawn `bun add <pkg>@<version> --cwd <cache_dir> --ignore-scripts`
22
+ * 3. Spawn `npm install --no-save <pkg>@<version> --ignore-scripts`
23
23
  * in the background. Drop a lockfile while running. Log progress.
24
24
  *
25
25
  * 4. The newly-installed binary will be picked up on the user's NEXT
@@ -1 +1 @@
1
- {"version":3,"file":"lsp-auto-install.d.ts","sourceRoot":"","sources":["../src/lsp-auto-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAwBH,+DAA+D;AAC/D,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,kGAAkG;IAClG,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,qCAAqC;AACrC,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;;;OAOG;IACH,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C;;;;;;;;;OASG;IACH,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAkDD,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAM/D;AA0WD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,iBAAiB,EACzB,SAAS,GAAE,OAAO,KAAa,GAC9B,iBAAiB,CAwEnB"}
1
+ {"version":3,"file":"lsp-auto-install.d.ts","sourceRoot":"","sources":["../src/lsp-auto-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAwBH,+DAA+D;AAC/D,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,kGAAkG;IAClG,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,qCAAqC;AACrC,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;;;OAOG;IACH,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C;;;;;;;;;OASG;IACH,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAkDD,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAM/D;AAqXD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,iBAAiB,EACzB,SAAS,GAAE,OAAO,KAAa,GAC9B,iBAAiB,CAwEnB"}
@@ -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;AAI1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAuEjD,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,GAAI,IAAI,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MAChD,CAAC;AAqRtC;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,cAAc,CA+JjE;AA8kCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAwB/E;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAgGnF"}
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;AAI1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAuEjD,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,GAAI,IAAI,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MAChD,CAAC;AAqRtC;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,cAAc,CA+JjE;AAmmCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAwB/E;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAgGnF"}
package/dist/tui.js CHANGED
@@ -4,7 +4,7 @@ import { createMemo as createMemo2, createSignal as createSignal2, onCleanup as
4
4
  // package.json
5
5
  var package_default = {
6
6
  name: "@cortexkit/aft-opencode",
7
- version: "0.27.0",
7
+ version: "0.27.1",
8
8
  type: "module",
9
9
  description: "OpenCode plugin for Agent File Tools (AFT) \u2014 tree-sitter and lsp powered code analysis",
10
10
  main: "dist/index.js",
@@ -28,11 +28,12 @@ var package_default = {
28
28
  test: "bun test",
29
29
  "test:e2e": "bun test src/__tests__/e2e/",
30
30
  lint: "biome check src",
31
+ schema: "bun scripts/build-schema.ts",
31
32
  prepublishOnly: "bun run build"
32
33
  },
33
34
  dependencies: {
34
35
  "@clack/prompts": "^1.2.0",
35
- "@cortexkit/aft-bridge": "0.27.0",
36
+ "@cortexkit/aft-bridge": "0.27.1",
36
37
  "@opencode-ai/plugin": "^1.15.5",
37
38
  "@opencode-ai/sdk": "^1.15.5",
38
39
  "comment-json": "^4.6.2",
@@ -40,11 +41,11 @@ var package_default = {
40
41
  zod: "^4.1.8"
41
42
  },
42
43
  optionalDependencies: {
43
- "@cortexkit/aft-darwin-arm64": "0.27.0",
44
- "@cortexkit/aft-darwin-x64": "0.27.0",
45
- "@cortexkit/aft-linux-arm64": "0.27.0",
46
- "@cortexkit/aft-linux-x64": "0.27.0",
47
- "@cortexkit/aft-win32-x64": "0.27.0"
44
+ "@cortexkit/aft-darwin-arm64": "0.27.1",
45
+ "@cortexkit/aft-darwin-x64": "0.27.1",
46
+ "@cortexkit/aft-linux-arm64": "0.27.1",
47
+ "@cortexkit/aft-linux-x64": "0.27.1",
48
+ "@cortexkit/aft-win32-x64": "0.27.1"
48
49
  },
49
50
  devDependencies: {
50
51
  "@types/node": "^22.0.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexkit/aft-opencode",
3
- "version": "0.27.0",
3
+ "version": "0.27.1",
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",
@@ -24,11 +24,12 @@
24
24
  "test": "bun test",
25
25
  "test:e2e": "bun test src/__tests__/e2e/",
26
26
  "lint": "biome check src",
27
+ "schema": "bun scripts/build-schema.ts",
27
28
  "prepublishOnly": "bun run build"
28
29
  },
29
30
  "dependencies": {
30
31
  "@clack/prompts": "^1.2.0",
31
- "@cortexkit/aft-bridge": "0.27.0",
32
+ "@cortexkit/aft-bridge": "0.27.1",
32
33
  "@opencode-ai/plugin": "^1.15.5",
33
34
  "@opencode-ai/sdk": "^1.15.5",
34
35
  "comment-json": "^4.6.2",
@@ -36,11 +37,11 @@
36
37
  "zod": "^4.1.8"
37
38
  },
38
39
  "optionalDependencies": {
39
- "@cortexkit/aft-darwin-arm64": "0.27.0",
40
- "@cortexkit/aft-darwin-x64": "0.27.0",
41
- "@cortexkit/aft-linux-arm64": "0.27.0",
42
- "@cortexkit/aft-linux-x64": "0.27.0",
43
- "@cortexkit/aft-win32-x64": "0.27.0"
40
+ "@cortexkit/aft-darwin-arm64": "0.27.1",
41
+ "@cortexkit/aft-darwin-x64": "0.27.1",
42
+ "@cortexkit/aft-linux-arm64": "0.27.1",
43
+ "@cortexkit/aft-linux-x64": "0.27.1",
44
+ "@cortexkit/aft-win32-x64": "0.27.1"
44
45
  },
45
46
  "devDependencies": {
46
47
  "@types/node": "^22.0.0",