Official

files

Built-in files UI (JavaScript UI plugin).

The app opens the listing; nothing installs until an agent in your Plugins workspace has read the files and you enable the plugin. In a terminal: cvg install convergence/files@0.2.0

Permissions in 0.2.0

  • Read files fs.readMediumReads files in the listed places.List the files of the workspacePlaces: the open workspace
  • Read chats chats.readMediumReads your transcripts and chat lists.Refresh the file list when an agent finishes a turn
  • Show panels ui.slotsLowShows views in the listed parts of the window.Show the files button and panelSlots: railright

Files

panel.test.ts1.3 KB
// File-panel tree, selection and filtering contracts.
import assert from "node:assert/strict";
import { test } from "node:test";
import { initialState, isOpen, runFinished, selectedPath, visiblePaths } from "./panel.ts";

test("filter trims and ignores case, limits searches to 500, and leaves the full unfiltered list", () => {
  const paths = Array.from({ length: 600 }, (_, i) => `src/FILE-${i}.ts`);
  assert.equal(visiblePaths(paths, "   "), paths);
  assert.deepEqual(visiblePaths(paths, "  file-  "), paths.slice(0, 500));
  assert.deepEqual(visiblePaths(paths, "missing"), []);
});
test("panel opens pinned or previewed, and selection is only a file path", () => {
  for (const key of ["rightPanel", "rightPanelPreview"]) assert.equal(isOpen({ shared: { [key]: "files" } }), true);
  assert.equal(isOpen({}), false);
  assert.equal(isOpen({ shared: { rightPanel: "git" } }), false);
  assert.equal(selectedPath("src/a.ts"), "src/a.ts");
  assert.equal(selectedPath(null), null);
  assert.deepEqual(initialState(), {
    workspaceId: null,
    paths: [],
    loaded: false,
    query: "",
    tabs: undefined,
    activePath: null,
    follow: undefined,
  });
  assert.equal(runFinished({ event: "run_finished" }), true);
  assert.equal(runFinished({ event: "text_delta" }), false);
});

Versions

VersionPublishedPlugin APISizePermissionsStatus
0.2.0latestOct 5, 2026>=2 <36.4 KB3 permissionsListed

Reviews and comments

0 threads · 0 reviews

No comments yet.