@cef-ai/eslint-plugin
v1.0.0
Published
Editor-time lint rules for CEF agents. Each **agent** rule mirrors a check that `cef build` performs, so warnings in your editor agree with build failures in CI.
Downloads
278
Readme
@cef-ai/eslint-plugin
Editor-time lint rules for CEF agents. Each agent rule mirrors a
check that cef build performs, so warnings in your editor agree with
build failures in CI.
The plugin also exports one architectural-boundary rule,
no-web3-imports, which the SDK monorepo applies to its own source to
keep chain/web3 imports confined to @cef-ai/account. It is not part
of the agent build and is deliberately excluded from recommended — see
Architectural rules below.
Install
pnpm add -D @cef-ai/eslint-pluginConfigure
The plugin ships a recommended config that turns every agent rule on
(no-web3-imports is excluded — it is an SDK-internal rule, see below).
The three "declared alias / type" rules accept options carrying the
declared sets so the rule can flag undeclared usage without a
type-checker.
// .eslintrc.cjs
module.exports = {
plugins: ["@cef-ai"],
extends: ["plugin:@cef-ai/recommended"],
rules: {
"@cef-ai/cubby-declared-alias": ["error", { aliases: ["history"] }],
"@cef-ai/model-declared-alias": ["error", { aliases: ["llm"] }],
"@cef-ai/publish-declared-type": [
"error",
{ knownEventTypes: ["assistant_message"] },
],
},
};cef typegen is expected to emit a snippet wiring these option arrays
from cef.config.ts (cubbies[].alias, models keys) and from the
project's KnownEventTypes declarations / declared publishes. Until
typegen drives this end-to-end, hand-write the arrays to match your
config.
Agent rules (in recommended)
These are the rules cef build enforces. The recommended config turns
all of them on.
| Rule | What it flags |
| --- | --- |
| @cef-ai/on-event-literal | @OnEvent(...) must take a string literal, never a variable or expression. |
| @cef-ai/engagement-id-literal | An engagement id argument must be a string literal, never a variable or expression. |
| @cef-ai/publish-declared-type | ctx.publish(t, ...) first argument must be a string literal AND a known event type. |
| @cef-ai/cubby-declared-alias | ctx.cubby("alias") must use a string literal AND a declared cubby alias. |
| @cef-ai/model-declared-alias | ctx.models.X must reference a declared model alias. |
| @cef-ai/no-banned-imports | Imports must not target Node built-ins (fs, net, http, child_process, ...) or unsafe sync DB / network npm packages. |
cef build enforces the same rules and aborts the build on the first
violation; this plugin gives you the same feedback at edit time without
waiting for a build cycle.
Architectural rules (not in recommended)
| Rule | What it flags |
| --- | --- |
| @cef-ai/no-web3-imports | Chain/web3 imports (@polkadot/*, @cere-ddc-sdk/*, cere-ddc-sdk-js) outside @cef-ai/account. |
no-web3-imports enforces an SDK-monorepo boundary, not an agent-build
check, so it is not in recommended and cef build does not run it.
The monorepo applies it repo-wide in its own root .eslintrc.json and
turns it off for @cef-ai/account (the one package where chain types
belong); the optional allow list is an escape hatch for intentional
exceptions. If you are fencing your own packages off from web3, enable it
explicitly:
// .eslintrc.cjs (repo-internal, not for agents)
rules: {
"@cef-ai/no-web3-imports": ["error", { allow: ["@polkadot/", "cere-ddc-sdk-js"] }],
}Companion packages
@cef-ai/agent-sdk— the decorators andContextshape these rules check against.@cef-ai/cli—cef build, where the same checks run as part of the bundle pipeline; full banned-import list lives in the agent-sdk spec.
References
- Agent SDK spec:
../../../company-memory-bank/specs/platform/03-components/agent-sdk.md§7 (lints + banned imports).
The ../company-memory-bank/... path points at an internal sibling repo
and is not browsable from a fresh clone.
