Editorium is the monorepo for Ferret editor integrations. Each editor package owns its adapter-specific implementation; language intelligence remains in Ferret and its language server.
extensions/vscode/— Visual Studio Code support for Ferret Query Language files.shared/— editor-independent inputs that may be consumed by more than one integration. Protocol schemas live undershared/proto/; generated clients remain owned by each extension.scripts/— repository-level acquisition and validation tooling.
Future editor integrations belong under extensions/. Editor-specific source,
generated clients, packaging, and tests stay with their extension rather than
forming a shared editor runtime before one is needed.
ferretd.json is the sole version pin for both the daemon
bundled in distributions and the ferretd protocol schemas used to generate
editor clients. npm install and npm ci automatically download the
proto/ferretd/ tree from that exact v<version> tag into
shared/proto/ferretd/. The synchronized files and their version marker are
ignored by Git; shared/proto/google/rpc/status.proto is a separately owned,
committed third-party input shared by editor integrations.
Run synchronization explicitly when needed:
npm run proto:sync
npm run proto:sync -- --forceThe first command is a no-op when the local marker and required schemas match
ferretd.json. --force downloads and atomically replaces the managed schema
tree even when the version is unchanged. A failed download or extraction keeps
the previous tree intact.
Node.js 22 or newer and npm are required for the JavaScript workspaces.
npm install
npm run build
npm test
npm run package
npm run package:checkThe root commands run the corresponding script in every npm workspace that provides it. Committed generated clients are verified by workspace tests and can be regenerated from the synchronized inputs with:
npm run proto:generate --workspace fql
npm run proto:check --workspace fqlVS Code distribution commands acquire the explicitly pinned ferretd release,
verify its published checksum, and default to the current host target:
npm run vscode:prepare
npm run vscode:package
npm run vscode:installPass --target <target> after -- for an explicit supported target, for
example npm run vscode:package -- --target linux-arm64. Generated downloads,
staged executables, and VSIX files are ignored by Git. See
extensions/vscode/RELEASING.md for the
distribution matrix and release procedure.
- Change the single
ferretdversion inferretd.json. - Run
npm run proto:sync. - Run
npm run proto:generate --workspace fqland review generated client changes. - Run
npm test,npm run package, andnpm run package:check. - Commit the version, generated clients, and any compatibility changes; do not
commit
shared/proto/ferretd/.