Contributing Code
Coding Standards
- TypeScript — Strict mode, ESM only (
"type": "module") - ESLint —
typescript-eslintwithconsistent-type-imports - No circular deps — Core defines interfaces, other packages implement
- Graceful degradation — Never crash on individual tool/plugin failures
- Zero external deps — Prefer built-in APIs (Node.js http, Bun fetch) over npm packages
Adding a Tool
- Create
packages/tools/src/your-tool/index.ts - Implement the
Toolinterface frommemoryblock - Export from
packages/tools/src/index.ts - Register in
createDefaultRegistry() - Add to
_documentation/tools-reference.md
Adding a Plugin
packages/plugins/your-plugin/
├── package.json ← name: @memoryblock/plugin-your-plugin
├── tsconfig.json ← extends: ../../../tsconfig.json
└── src/
└── index.ts ← export const tools = [yourTool];
- Create the directory structure above
package.jsonshould depend onmemoryblock: "workspace:*"- Export a
toolsarray of{ definition, execute }objects - Add to
packages/plugins/installer/registry/plugins.json - Run
pnpm install && pnpm buildto verify
Adding an Adapter
- Create
packages/adapters/src/your-adapter/index.ts - Implement the
LLMAdapterinterface frommemoryblock - Export from
packages/adapters/src/index.ts - Register in the adapter factory
Adding a Channel
- Create
packages/channels/src/your-channel/index.ts - Implement the
Channelinterface frommemoryblock - Export from
packages/channels/src/index.ts - Register in the channel factory
Testing Changes
pnpm dev:build # Compile all packages
pnpm dev:lint # Check for lint errors
pnpm dev:verify # Full failsafe test suite
pnpm mblk:status # Verify CLI works
pnpm dev:server # Verify web UI + API works