@cortexkit/aft-opencode 0.40.2 → 0.41.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 CHANGED
@@ -137,7 +137,6 @@ export declare const AftConfigSchema: z.ZodObject<{
137
137
  max_batch_size: z.ZodOptional<z.ZodNumber>;
138
138
  max_files: z.ZodOptional<z.ZodNumber>;
139
139
  }, z.core.$strip>>;
140
- max_callgraph_files: z.ZodOptional<z.ZodNumber>;
141
140
  auto_update: z.ZodOptional<z.ZodBoolean>;
142
141
  bridge: z.ZodOptional<z.ZodObject<{
143
142
  request_timeout_ms: z.ZodOptional<z.ZodNumber>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA6MlD;;;;;;;;;;;;;;;;GAgBG;AAQH,QAAA,MAAM,MAAM,EAAE,MAA6D,CAAC;AA+5B5E,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA4MlD;;;;;;;;;;;;;;;;GAgBG;AAQH,QAAA,MAAM,MAAM,EAAE,MAA6D,CAAC;AA+5B5E,eAAe,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -30066,7 +30066,6 @@ var AftConfigSchema = exports_external.object({
30066
30066
  lsp: LspConfigSchema.optional(),
30067
30067
  url_fetch_allow_private: exports_external.boolean().optional(),
30068
30068
  semantic: SemanticConfigSchema.optional(),
30069
- max_callgraph_files: exports_external.number().int().positive().optional(),
30070
30069
  auto_update: exports_external.boolean().optional(),
30071
30070
  bridge: BridgeConfigSchema.optional()
30072
30071
  }).strict();
@@ -30482,8 +30481,6 @@ function getStrippedTopLevelKeys(override) {
30482
30481
  stripped.push("restrict_to_project_root");
30483
30482
  if (override.url_fetch_allow_private !== undefined)
30484
30483
  stripped.push("url_fetch_allow_private");
30485
- if (override.max_callgraph_files !== undefined)
30486
- stripped.push("max_callgraph_files");
30487
30484
  if (override.auto_update !== undefined)
30488
30485
  stripped.push("auto_update");
30489
30486
  if (override.bridge !== undefined)
@@ -36231,6 +36228,31 @@ function relativeToWorktree(fp, worktree) {
36231
36228
  function formatReadFooter2(agentSpecifiedRange, data) {
36232
36229
  return formatReadFooter(agentSpecifiedRange, data, { rangeHint: "startLine/endLine" });
36233
36230
  }
36231
+ function readAttachments(data) {
36232
+ return Array.isArray(data.attachments) ? data.attachments : [];
36233
+ }
36234
+ function formatAttachmentSize(bytes) {
36235
+ if (typeof bytes !== "number" || !Number.isFinite(bytes) || bytes < 0)
36236
+ return;
36237
+ if (bytes >= 1024 * 1024)
36238
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
36239
+ if (bytes >= 1024)
36240
+ return `${Math.ceil(bytes / 1024)} KB`;
36241
+ return `${bytes} bytes`;
36242
+ }
36243
+ function formatReadAttachmentOutput(attachment) {
36244
+ const mime = typeof attachment.mime === "string" ? attachment.mime : "application/octet-stream";
36245
+ const size = formatAttachmentSize(attachment.bytes);
36246
+ if (attachment.kind === "image" || mime.startsWith("image/")) {
36247
+ const dimensions = typeof attachment.width === "number" && typeof attachment.height === "number" ? `, ${attachment.width}×${attachment.height}` : "";
36248
+ const resized = attachment.resized === true ? ", resized" : "";
36249
+ return `Read image (${mime}${dimensions}${resized}${size ? `, ${size}` : ""}).`;
36250
+ }
36251
+ if (attachment.kind === "pdf" || mime === "application/pdf") {
36252
+ return `Read PDF${size ? ` (${size})` : ""}.`;
36253
+ }
36254
+ return `Read attachment (${mime}${size ? `, ${size}` : ""}).`;
36255
+ }
36234
36256
  function buildUnifiedDiff(fp, before, after) {
36235
36257
  const beforeLines = before.split(`
36236
36258
  `);
@@ -36516,7 +36538,7 @@ Behavior:
36516
36538
  - Lines longer than 2000 characters are truncated
36517
36539
  - Output capped at 50KB
36518
36540
  - Binary files are auto-detected and return a size-only message
36519
- - Image files (.png, .jpg, .gif, .webp, etc.) and PDFs return a metadata string (format, size, path) no file content is returned
36541
+ - Supported images (PNG, JPEG, GIF, WebP) and PDFs are returned as tool attachments; range arguments are ignored for media
36520
36542
  - Directories return sorted entries with trailing / for subdirectories
36521
36543
 
36522
36544
  Examples:
@@ -36556,44 +36578,6 @@ function createReadTool(ctx) {
36556
36578
  return permissionDeniedResponse(error50.message);
36557
36579
  return permissionDeniedResponse("Permission denied.");
36558
36580
  }
36559
- const ext = path5.extname(filePath).toLowerCase();
36560
- const mimeMap = {
36561
- ".png": "image/png",
36562
- ".jpg": "image/jpeg",
36563
- ".jpeg": "image/jpeg",
36564
- ".gif": "image/gif",
36565
- ".webp": "image/webp",
36566
- ".bmp": "image/bmp",
36567
- ".ico": "image/x-icon",
36568
- ".tiff": "image/tiff",
36569
- ".tif": "image/tiff",
36570
- ".avif": "image/avif",
36571
- ".heic": "image/heic",
36572
- ".heif": "image/heif",
36573
- ".pdf": "application/pdf"
36574
- };
36575
- const mime = mimeMap[ext];
36576
- if (mime) {
36577
- const isImage = mime.startsWith("image/");
36578
- const label = isImage ? "Image" : "PDF";
36579
- let fileSize = 0;
36580
- try {
36581
- const stat = await import("node:fs/promises").then((fs6) => fs6.stat(filePath));
36582
- fileSize = stat.size;
36583
- } catch {}
36584
- const sizeStr = fileSize > 1048576 ? `${(fileSize / 1048576).toFixed(1)}MB` : fileSize > 1024 ? `${(fileSize / 1024).toFixed(0)}KB` : `${fileSize} bytes`;
36585
- const msg = `${label} read successfully`;
36586
- return {
36587
- output: `${msg} (${ext.slice(1).toUpperCase()}, ${sizeStr}). File: ${filePath}`,
36588
- title: path5.relative(projectRoot, filePath),
36589
- metadata: {
36590
- preview: msg,
36591
- filepath: filePath,
36592
- isImage,
36593
- isPdf: mime === "application/pdf"
36594
- }
36595
- };
36596
- }
36597
36581
  const rawStartLine = coerceOptionalInt(args.startLine, "startLine", 1, Number.MAX_SAFE_INTEGER);
36598
36582
  const rawEndLine = coerceOptionalInt(args.endLine, "endLine", 1, Number.MAX_SAFE_INTEGER);
36599
36583
  const rawLimit = coerceOptionalInt(args.limit, "limit", 1, Number.MAX_SAFE_INTEGER);
@@ -36618,6 +36602,31 @@ function createReadTool(ctx) {
36618
36602
  throw new Error(data.message || "read failed");
36619
36603
  }
36620
36604
  const dp = relativeToWorktree(filePath, projectRoot) || file2;
36605
+ const attachments = readAttachments(data);
36606
+ if (attachments.length > 0) {
36607
+ const toolAttachments = attachments.filter((attachment) => typeof attachment.mime === "string" && typeof attachment.data === "string").map((attachment) => ({
36608
+ type: "file",
36609
+ mime: attachment.mime,
36610
+ url: `data:${attachment.mime};base64,${attachment.data}`
36611
+ }));
36612
+ if (toolAttachments.length > 0) {
36613
+ const first = attachments[0];
36614
+ const firstMime = typeof first.mime === "string" ? first.mime : "";
36615
+ const output2 = typeof data.content === "string" && data.content.length > 0 ? data.content : formatReadAttachmentOutput(first);
36616
+ return {
36617
+ output: output2,
36618
+ title: dp,
36619
+ attachments: toolAttachments,
36620
+ metadata: {
36621
+ preview: output2,
36622
+ filepath: filePath,
36623
+ title: dp,
36624
+ isImage: first.kind === "image" || firstMime.startsWith("image/"),
36625
+ isPdf: first.kind === "pdf" || firstMime === "application/pdf"
36626
+ }
36627
+ };
36628
+ }
36629
+ }
36621
36630
  if (data.entries) {
36622
36631
  return {
36623
36632
  output: data.entries.join(`
@@ -36797,7 +36806,7 @@ function createEditTool(ctx, writeToolName = "write") {
36797
36806
  execute: async (args, context) => {
36798
36807
  const argsRecord = args;
36799
36808
  if (argsRecord.startLine !== undefined || argsRecord.endLine !== undefined) {
36800
- throw new Error("edit: 'startLine'/'endLine' are not top-level parameters. For line-range edits, nest them inside the `edits` array: `edits: [{ startLine: N, endLine: M, content: \"...\" }]`. For find/replace, use `oldString`/`newString` instead.");
36809
+ throw new Error("edit: 'startLine'/'endLine' are not top-level parameters. " + "For line-range edits, nest them inside the `edits` array: " + '`edits: [{ startLine: N, endLine: M, content: "..." }]`. ' + "For find/replace, use `oldString`/`newString` instead.");
36801
36810
  }
36802
36811
  const file2 = args.filePath;
36803
36812
  if (!file2)
@@ -37332,7 +37341,11 @@ ${fileList}`;
37332
37341
  }
37333
37342
  var DELETE_DESCRIPTION = `Delete one or more files (or directories) with backup.
37334
37343
 
37335
- ` + "Each file is backed up before deletion — use aft_safety undo to recover any of them. " + "For directories, every file inside is individually backed up before the tree is removed.\n\nDirectory deletion requires recursive: true. Without it, passing a directory returns an error.\n\nPartial success is allowed: deletable files are deleted; failed ones are reported in `skipped_files` with `complete: false`.";
37344
+ ` + "Each file is backed up before deletion — use aft_safety undo to recover any of them. " + `For directories, every file inside is individually backed up before the tree is removed.
37345
+
37346
+ ` + `Directory deletion requires recursive: true. Without it, passing a directory returns an error.
37347
+
37348
+ ` + "Partial success is allowed: deletable files are deleted; failed ones are reported in `skipped_files` with `complete: false`.";
37336
37349
  function createDeleteTool(ctx) {
37337
37350
  return {
37338
37351
  description: DELETE_DESCRIPTION,
@@ -37389,7 +37402,8 @@ function createDeleteTool(ctx) {
37389
37402
  }
37390
37403
  };
37391
37404
  }
37392
- var MOVE_DESCRIPTION = "Move or rename a file with backup. Creates parent directories for destination automatically\nNote: This moves/renames files at the OS level. To move a code symbol (function, class, type) between files while updating imports, use `aft_refactor` op='move' instead.";
37405
+ var MOVE_DESCRIPTION = `Move or rename a file with backup. Creates parent directories for destination automatically
37406
+ ` + "Note: This moves/renames files at the OS level. To move a code symbol (function, class, type) between files while updating imports, use `aft_refactor` op='move' instead.";
37393
37407
  function createMoveTool(ctx) {
37394
37408
  return {
37395
37409
  description: MOVE_DESCRIPTION,
@@ -38969,12 +38983,11 @@ var PLUGIN_VERSION = (() => {
38969
38983
  return "0.0.0";
38970
38984
  }
38971
38985
  })();
38972
- var ANNOUNCEMENT_VERSION = "0.40.0";
38986
+ var ANNOUNCEMENT_VERSION = "0.41.0";
38973
38987
  var ANNOUNCEMENT_FEATURES = [
38974
- "Groundwork for Subconscious, the CortexKit daemon: configuration now lives in one place under ~/.config/cortexkit/ and <project>/.cortexkit/ (auto-migrated). The daemon integration is dormant nothing changes in how you run AFT today.",
38975
- "Bash output never hides a failure: piped commands run exactly as written with their real exit status, cancelled tasks report as failed, and a failing run is never compressed to a clean-looking summary.",
38976
- "The top aft_search result is now the complete, ready-to-edit symbol (no re-read needed); test files are hidden from results by default.",
38977
- "format_on_edit is now off by default, and bash commands default to the foreground."
38988
+ "Search now works on repositories of any size: the trigram index behind grep and aft_search is disk-backed, so it uses a fixed, small amount of memory (Chromium dropped from ~14 GB to under 800 MB) and the old 20,000-file limit that disabled it on large repos is gone.",
38989
+ "Call-graph navigation (aft_callgraph, symbol move) no longer has a 5,000-file limit it works on repositories of any size.",
38990
+ "Semantic search (aft_search) now covers Java, Kotlin, Ruby, Swift, Scala, Lua, Perl, and R, in addition to the languages already supported."
38978
38991
  ];
38979
38992
  var ANNOUNCEMENT_FOOTER = "Join us on Discord: https://discord.gg/DSa65w8wuf";
38980
38993
  var plugin = async (input) => initializePluginForDirectory(input);
@@ -1 +1 @@
1
- {"version":3,"file":"hoisted.d.ts","sourceRoot":"","sources":["../../src/tools/hoisted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,qBAAqB,CAAC;AAItE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAkCjD,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,GAAI,IAAI,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MAChD,CAAC;AA8YtC;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,cAAc,CAkKjE;AAsrCD;;;;;;;;;GASG;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,CAqGnF"}
1
+ {"version":3,"file":"hoisted.d.ts","sourceRoot":"","sources":["../../src/tools/hoisted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,qBAAqB,CAAC;AAItE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAwEjD,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,GAAI,IAAI,MAAM,EAAE,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,MAChD,CAAC;AA8YtC;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,cAAc,CAqJjE;AAsrCD;;;;;;;;;GASG;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,CAqGnF"}
package/dist/tui.js CHANGED
@@ -7790,7 +7790,7 @@ var require_src2 = __commonJS((exports, module) => {
7790
7790
  // src/tui/index.tsx
7791
7791
  import { createMemo as createMemo2, createSignal as createSignal2, onCleanup as onCleanup2 } from "solid-js";
7792
7792
  // package.json
7793
- var version = "0.40.2";
7793
+ var version = "0.41.0";
7794
7794
 
7795
7795
  // src/shared/rpc-client.ts
7796
7796
  import { existsSync, readdirSync, readFileSync, unlinkSync } from "node:fs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexkit/aft-opencode",
3
- "version": "0.40.2",
3
+ "version": "0.41.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",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@clack/prompts": "^1.2.0",
34
- "@cortexkit/aft-bridge": "0.40.2",
34
+ "@cortexkit/aft-bridge": "0.41.0",
35
35
  "@opentui/core": "^0.4.2",
36
36
  "@opentui/solid": "^0.4.2",
37
37
  "@xterm/headless": "^5.5.0",
@@ -41,12 +41,12 @@
41
41
  "zod": "^4.1.8"
42
42
  },
43
43
  "optionalDependencies": {
44
- "@cortexkit/aft-darwin-arm64": "0.40.2",
45
- "@cortexkit/aft-darwin-x64": "0.40.2",
46
- "@cortexkit/aft-linux-arm64": "0.40.2",
47
- "@cortexkit/aft-linux-x64": "0.40.2",
48
- "@cortexkit/aft-win32-arm64": "0.40.2",
49
- "@cortexkit/aft-win32-x64": "0.40.2"
44
+ "@cortexkit/aft-darwin-arm64": "0.41.0",
45
+ "@cortexkit/aft-darwin-x64": "0.41.0",
46
+ "@cortexkit/aft-linux-arm64": "0.41.0",
47
+ "@cortexkit/aft-linux-x64": "0.41.0",
48
+ "@cortexkit/aft-win32-arm64": "0.41.0",
49
+ "@cortexkit/aft-win32-x64": "0.41.0"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@opencode-ai/plugin": "^1.17.9",