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
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
| Version | Published | Plugin API | Size | Permissions | Status |
|---|---|---|---|---|---|
| 0.2.0latest | Oct 5, 2026 | >=2 <3 | 6.4 KB | 3 permissions | Listed |
No comments yet.