NebulaFlow follows a strict TypeScript style guide. Please adhere to the following:
import type { Foo } from './bar' when only types are used.node: protocol (e.g., import * as fs from 'node:fs').lowerCamelCasePascalCasePascalCase (e.g., NodeType)We use Biome for linting and formatting.
npm run check (typecheck + lint)npm run biome (also aliased as npm run format)The project uses the following Biome rules (see biome.jsonc):
useNodejsImportProtocol: error (enforces node: protocol)useImportType: error (enforces type imports)useExportType: error (enforces type exports)noUnusedImports: error.noUselessTernary: error.NebulaFlow uses a Vertical Slice Architecture (VSA). Key slices:
workflow/Web/ – React UI, React Flow graph, node components, sidebars.workflow/Application/ – Message handling, command orchestration, lifecycle.workflow/Core/ – Pure types, models, validation.workflow/DataAccess/ – File system and shell adapters.workflow/WorkflowExecution/ – Graph execution engine, node runners.workflow/LLMIntegration/ – SDK integration, workspace configuration.workflow/Shared/ – Generic primitives (Host, Infrastructure).Rule: Keep related code together. Avoid creating global utilities unless used by 3+ unrelated slices.
any..spec.ts) for pure logic. Manual testing for UI/integration.The project includes VS Code settings in .vscode/. Recommended extensions:
Ensure your editor respects the project’s .editorconfig (if present) and Biome settings.
The repository uses husky and lint‑staged (if configured) to run checks before commits. If not, run npm run check manually before pushing.
Last Updated: 2026-01-21