- Add MemoryInsights class in @fusion/core for AI-powered memory audit generation - Add post-run hook to CronRunner for triggering memory summarization after scheduled tasks - Wire memory background processing in both dashboard and serve commands - Add memoryAuditEnabled and memoryAuditSchedule settings for configurable automation - Fix startup ordering: sync automation before cronRunner.start() to prevent race conditions - Add comprehensive tests for memory-insights and dashboard/serve integration - Update contributing.md and settings-reference.md with documentation
2.8 KiB
Contributing
Thanks for contributing to Fusion.
Development Setup
Prerequisites
- Node.js (current LTS recommended)
- pnpm (
packageManageris pnpm) - Git
piruntime/auth configured for AI features
Install dependencies
pnpm install
Build all packages
pnpm build
Workspace Package Overview
| Package | Purpose |
|---|---|
@fusion/core |
Shared domain types, stores, persistence, and core utilities |
@fusion/dashboard |
Express API + React UI |
@fusion/engine |
Scheduling, triage, execution, merge orchestration |
@fusion/tui |
Ink-based terminal UI components |
@gsxdsm/fusion |
Published CLI + pi extension |
Development Workflow
pnpm dev # build + run CLI entrypoint in dev mode
pnpm dev:ui # dashboard dev server only
pnpm typecheck # workspace typechecks
pnpm test # workspace test suite
pnpm build # workspace builds
Testing Requirements
Use real test runs (not manual verification substitutes):
pnpm test
pnpm test:coverage
pnpm test:coverage:core
pnpm test:coverage:engine
pnpm test:coverage:cli
pnpm test:coverage:dashboard
Build Standalone Executables
Fusion supports standalone binary builds through Bun compile scripts in the CLI package.
pnpm build:exe # build host-target executable
pnpm build:exe:all # build multi-target executables
Release Process
Fusion uses Changesets + version PR workflow.
- See RELEASING.md for release flow details.
- For published package behavior changes, include a changeset.
Code Signing
Release binary signing setup is documented here:
Git / Commit Conventions
Use task-ID-scoped conventional commits:
feat(FN-XXX): ...fix(FN-XXX): ...test(FN-XXX): ...docs(FN-XXX): ...(for documentation-only changes)
Project Memory
When enabled, agents can read/write durable project memory:
.fusion/memory.md
Use it for reusable patterns, constraints, and pitfalls that should persist across tasks.
Background Memory Summarization
Fusion can automatically extract insights from working memory and distill them into long-term memory. Enable via insightExtractionEnabled setting:
.fusion/memory-insights.md— Long-term distilled insights.fusion/memory-audit.md— Audit report after each extraction run
See Settings Reference for configuration details.
SQLite Test Runner Pitfall
When running engine tests with Vitest and node:sqlite, ensure the engine Vitest config uses thread pool mode:
- ✅
pool: "threads" - ❌
pool: "vmThreads"
node:sqlite fails under Vitest VM contexts; using threads avoids that failure mode.