Skip to content

feat: Complete Planner Monorepo - Core, Ideation, Forge, Tuner & Testbench#4

Open
jahala wants to merge 225 commits intomainfrom
jahala/initial-planner
Open

feat: Complete Planner Monorepo - Core, Ideation, Forge, Tuner & Testbench#4
jahala wants to merge 225 commits intomainfrom
jahala/initial-planner

Conversation

@jahala
Copy link
Collaborator

@jahala jahala commented Jan 31, 2026

Overview

This PR establishes the complete Planner monorepo - a comprehensive agentic architecture for structured intent authoring, execution orchestration, and adaptive learning.

217 commits | 1,317 files | 285,727 lines added


Architecture

┌─────────────────────────────────────────────────────────────────────────┐
│                              IDEATION                                   │
│  Freeform exploration → Structured understanding → Plan handoff         │
│  packages/ideation + packages/ideation-ui                               │
└───────────────────────────────┬─────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                              PLANNER                                    │
│  Versioned plans → Approval workflow → Published plan_ref               │
│  packages/planner + packages/planner-ui + packages/server               │
└───────────────────────────────┬─────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                              FORGE                                      │
│  Plan execution → Agent orchestration → Task completion                 │
│  packages/forge-core + packages/forge-ui                                │
└───────────────────────────────┬─────────────────────────────────────────┘
                                │
                                ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                              TUNER                                      │
│  Outcome collection → Adaptive learning → Model optimization            │
│  packages/tuner                                                         │
└─────────────────────────────────────────────────────────────────────────┘

1. Planner Core (packages/planner)

The structured intent authoring layer:

  • Domain Model: Plans, Steps, Versions with DAG dependencies
  • SQLite Storage: Full CRUD with 12 focused modules
  • REST API: Plan management, approval workflow, SSE events
  • MCP Server: AI tool integration for plan manipulation
  • Agent Relay: PlannerLead service for real-time collaboration

Key Features

  • Multi-scope plans (work across repos/teams/domains)
  • Versioning with structural diffs
  • Approval workflow: draft → submitted → approved → published
  • Acceptance criteria and gates for human oversight
  • Change request feedback loop from orchestrator

2. Planner UI (packages/planner-ui)

React frontend for plan authoring:

  • Plan Creation: From goal text or document import
  • Step Editor: Inline editing with acceptance criteria
  • Swimlane View: Multi-scope visualization with dependency lines
  • Approval Workflow: Status badges, submit/approve/publish actions
  • Messaging Sidebar: Direct messaging and channel communication
  • Command Palette: Cmd+K navigation at scale

Component Architecture

  • chat-bubble/ - AI chat with suggestions
  • step-editor/ - Step editing with criteria and gates
  • swimlane/ - Scope lanes with dependency visualization
  • plan-editor/ - Header, tabs, decisions view
  • PlanEditorContext - Centralized state management

3. Ideation Package (packages/ideation)

Freeform exploration before structured planning:

  • Interviewer: AI-guided discovery conversations
  • Specialists: Dynamic specialist agents for domain expertise
  • Understanding Model: Freeform → structured transformation
  • Planner Handoff: Export to PlanVersion format

Key Features

  • Session-based conversations
  • Multi-turn interviews with specialist consultation
  • Understanding blocks (goals, constraints, requirements)
  • Automatic plan generation from understanding

4. Ideation UI (packages/ideation-ui)

Canvas-based ideation interface:

  • Session Dashboard: Active sessions overview
  • Canvas Page: Block-based understanding visualization
  • Grid Layout: Responsive block arrangement
  • Handoff Dialog: Export to planner workflow

5. Forge Core (packages/forge-core)

Plan execution orchestrator:

  • Run Management: Execute published plans
  • Task Orchestration: DAG-based task scheduling
  • Agent Spawning: Real agent execution via relay
  • Gate Handling: Human approval checkpoints
  • Trajectory Capture: Agent reasoning traces

Storage Modules (15 focused files)

  • runs, tasks, gates, guardians, questions
  • trajectories, user-trajectories, artifacts
  • attempts, checkpoints, metrics, preferences, workspaces

6. Forge UI (packages/forge-ui)

Execution monitoring interface:

  • Run Dashboard: Active runs overview
  • Run Detail: Task status, agent activity, gates
  • SSE Events: Real-time progress updates

7. Tuner Package (packages/tuner)

Adaptive learning for agent optimization:

  • Outcome Collection: Task and run outcomes
  • Learning Services: Stability-controlled model updates
  • Ideation Integration: Interview quality signals
  • Model Selection: Adaptive model routing

Ideation Integration

  • IdeationConfig generation from learning
  • IdeationOutcome collection for feedback
  • PlanQualitySignal on approval of ideation-sourced plans
  • Baseline service with stability controls

8. Testbench (packages/testbench)

E2E scenario testing framework:

  • Scenario Runner: Execute test scenarios against live APIs
  • AI-Planned Mode: Generate scenarios from goals
  • Metrics Collection: Accuracy, learning rate, stability
  • Multi-Client: Planner, Forge, Tuner, Ideation clients

Key Features

  • Retry logic for HTTP clients
  • Mock and real execution modes
  • Console reporting with metrics
  • Scenario schema validation

9. Shared Packages

@plannr/errors

Unified error handling across all services:

  • ApiError, NotFoundError, BadRequestError
  • Express error middleware
  • Consistent error response format

@plannr/storage-base

Shared SQLite utilities:

  • ConnectionManager
  • BaseStorage class
  • Migration utilities

@plannr/shared-ui

Shared frontend infrastructure:

  • Tailwind preset for consistent theming
  • Common components and hooks

10. Server (packages/server)

Meta-server composing all services:

  • Planner API: Plan management endpoints
  • Ideation API: Session and interview endpoints
  • Forge API: Run and task endpoints
  • Relay Proxy: WebSocket bridge for agent communication
  • Capabilities Endpoint: Runtime feature detection

PlannerLead Service

  • Persistent relay agent for plan collaboration
  • Tool execution for plan manipulation
  • Channel-based messaging
  • Health monitoring and recovery

11. Monorepo Infrastructure

Build System

  • npm workspaces for package management
  • Unified TypeScript configs (base, node, vite)
  • Vitest for testing across all packages
  • ESLint + Prettier for code style

Tailwind Deduplication

  • Shared preset in @plannr/shared-ui
  • Consistent theming across all UIs

Storage Module Splits

  • Planner: 12 focused modules
  • Forge: 15 focused modules
  • Server: 10 planner-lead-tools modules
  • MCP: 7 tool modules

Test Coverage

Package Tests
planner-ui 738
planner 609
server 201
ideation 168
forge-core ~150
Total ~1,866

Documentation

  • CLAUDE.md - Architecture overview and coding guidelines
  • .claude/rules/ - Patterns for relay, architecture, frontend, React, Tailwind
  • docs/flow/ - Feature tracking and specifications
  • docs/ - Implementation plans and analysis

Related Projects


🤖 Generated with Claude Code

jahala and others added 30 commits January 27, 2026 15:51
Complete architecture and design documentation for the Planner layer:

Research & Analysis:
- Orchestration framework deep-dives (LangGraph, CrewAI, Temporal, AutoGen, OpenAI Agents)
- HTN/PDDL planning patterns and integration approaches
- A2A and MCP interop protocols
- Relay ecosystem analysis
- Intake/triage/portfolio patterns

Core Design:
- Three-state workflow: draft → approved → published
- Compound steps for hierarchical plans (multi-scope by default)
- AI-managed dependencies (not user-specified)
- Scopes for cross-repo/team work

UX Vision:
- Inbox-driven interface (what needs attention)
- Two screens: Inbox + Plan (everything else is a panel)
- AI behavior spectrum: silent → subtle → explicit
- 30+ user scenarios covering creation, editing, review, scale

Key decisions:
- Planner accepts any input (vague to detailed), AI helps refine
- Dependencies are AI-inferred, not manually wired
- Multi-scope plans are the norm, not the exception
- Immutability after approval (changes create new versions)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Complete architecture and design documentation for the Planner layer:

Research & Analysis:
- Orchestration framework deep-dives (LangGraph, CrewAI, Temporal, AutoGen, OpenAI Agents)
- HTN/PDDL planning patterns and integration approaches
- A2A and MCP interop protocols
- Relay ecosystem analysis
- Intake/triage/portfolio patterns

Core Design:
- Three-state workflow: draft → approved → published
- Compound steps for hierarchical plans (multi-scope by default)
- AI-managed dependencies (not user-specified)
- Scopes for cross-repo/team work

UX Vision:
- Inbox-driven interface (what needs attention)
- Two screens: Inbox + Plan (everything else is a panel)
- AI behavior spectrum: silent → subtle → explicit
- 30+ user scenarios covering creation, editing, review, scale

Key decisions:
- Planner accepts any input (vague to detailed), AI helps refine
- Dependencies are AI-inferred, not manually wired
- Multi-scope plans are the norm, not the exception
- Immutability after approval (changes create new versions)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Key clarifications:

1. Intake vs Planner boundary:
   - Intake: monitors channels (Slack, email, GitHub), detects requests, routes
   - Planner: accepts any input (vague to detailed), AI helps refine

2. Multi-scope plans are the default:
   - Real work crosses repos/teams/domains
   - Scopes group steps by context
   - "Flat single-context plan" is the exception

3. Dependencies are AI-managed:
   - Humans express intent ("X before Y")
   - AI builds the DAG from context
   - Override available but rarely needed

4. Brainstorming happens in Planner:
   - Vague input triggers AI-assisted scoping
   - Specific input triggers multi-scope plan generation

Updated: CLAUDE.md, architecture-synthesis.md, github-issue-planner-vision.md,
         planner-scale.md, planner-ui-vision.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Key clarifications:

1. Intake vs Planner boundary:
   - Intake: monitors channels (Slack, email, GitHub), detects requests, routes
   - Planner: accepts any input (vague to detailed), AI helps refine

2. Multi-scope plans are the default:
   - Real work crosses repos/teams/domains
   - Scopes group steps by context
   - "Flat single-context plan" is the exception

3. Dependencies are AI-managed:
   - Humans express intent ("X before Y")
   - AI builds the DAG from context
   - Override available but rarely needed

4. Brainstorming happens in Planner:
   - Vague input triggers AI-assisted scoping
   - Specific input triggers multi-scope plan generation

Updated: CLAUDE.md, architecture-synthesis.md, github-issue-planner-vision.md,
         planner-scale.md, planner-ui-vision.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- New: Architecture Overview issue covering full agentic stack (Intake → Portfolio → Planner → Orchestrator → Relay)
- Clarified: How Planner spawns planning agents via Agent Relay using MCP tools
- Updated: Core Vision to reflect Relay-based agent spawning
- Refined: Portfolio's role in value assessment and prioritization
- Adjusted: UI Vision terminology for consistency across documents

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Add architecture overview and refine vision documents
Add architecture overview and refine vision documents
Simplified stack diagram to reference Architecture Overview, avoiding duplication.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add flow skills system to .claude/ for Claude Code Web
- Add flow-skills docs for reference
- Create complete feature catalog with 31 features:
  - planner-core: 12 features (domain, storage, API, MCP)
  - planner-ui: 19 features (creation, editor, workflow, execution, AI)
- All features have implementation plans (159 total steps)
- Status: approved, ready for /flow todos

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add flow skills system to .claude/ for Claude Code Web
- Add flow-skills docs for reference
- Create complete feature catalog with 31 features:
  - planner-core: 12 features (domain, storage, API, MCP)
  - planner-ui: 19 features (creation, editor, workflow, execution, AI)
- All features have implementation plans (159 total steps)
- Status: approved, ready for /flow todos

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Flow-todos skill needs these to create executable todos
using Claude Code's task system instead of file-based tracking.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Flow-todos skill needs these to create executable todos
using Claude Code's task system instead of file-based tracking.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add explicit CRITICAL section stating this skill:
- Only creates TaskCreate calls
- Does NOT run npm/yarn commands
- Does NOT create files or write code
- Stops after showing todos, lets user start implementation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add explicit CRITICAL section stating this skill:
- Only creates TaskCreate calls
- Does NOT run npm/yarn commands
- Does NOT create files or write code
- Stops after showing todos, lets user start implementation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When asked to handle multiple features:
1. Create feature-level todos first (one per feature)
2. Work one feature at a time (expand to PRE/IMPL/POST/VERIFY/DOC)
3. Complete all checkpoints before moving to next feature

This prevents context overload and ensures proper sequencing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When asked to handle multiple features:
1. Create feature-level todos first (one per feature)
2. Work one feature at a time (expand to PRE/IMPL/POST/VERIFY/DOC)
3. Complete all checkpoints before moving to next feature

This prevents context overload and ensures proper sequencing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The agent was running `claude task create` bash commands.
Added explicit example showing TaskCreate is a tool invocation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The agent was running `claude task create` bash commands.
Added explicit example showing TaskCreate is a tool invocation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- "use the todo tool" instead of "TaskCreate tool"
- Remove overly specific tool invocation examples
- Focus on what to include in todos, not how to call tools

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- "use the todo tool" instead of "TaskCreate tool"
- Remove overly specific tool invocation examples
- Focus on what to include in todos, not how to call tools

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update all flow skill descriptions to be trigger-based
- Rewrite flow-todos with systematic loop-based mental model
- Agent processes features one by one in dependency order
- Handles cross-feature dependencies via DOC todo blocking
- Works for 5 todos or 500 todos with same approach

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update all flow skill descriptions to be trigger-based
- Rewrite flow-todos with systematic loop-based mental model
- Agent processes features one by one in dependency order
- Handles cross-feature dependencies via DOC todo blocking
- Works for 5 todos or 500 todos with same approach

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Agent was searching for CLI commands instead of using TaskCreate.
Added explicit mention of built-in todo tools.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Agent was searching for CLI commands instead of using TaskCreate.
Added explicit mention of built-in todo tools.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Agent was running bash looking for 'claude task' CLI.
Made explicit that these are tools invoked directly.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Agent was running bash looking for 'claude task' CLI.
Made explicit that these are tools invoked directly.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Claude Code uses TaskCreate/TaskUpdate/TaskList tools, not "todo".
Renamed skill and updated all references to use "task/tasks" terminology
to match the actual tool names and avoid confusion.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Claude Code uses TaskCreate/TaskUpdate/TaskList tools, not "todo".
Renamed skill and updated all references to use "task/tasks" terminology
to match the actual tool names and avoid confusion.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replaced all references to flow-todos with flow-tasks across:
- flow-brainstorm
- flow-change-request
- flow-discover
- flow-feature
- flow-planner
- flow-tasks
- flow-test-designer
- flow-ui-ux-validation
- flow-visualize

Ensures consistent terminology matching Claude Code's TaskCreate/TaskUpdate tools.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
jahala and others added 21 commits February 5, 2026 20:39
Update tests to match actual component implementations:

- AIConnectionBadge.test.tsx: Component uses SVG icons and Tailwind
  classes, not text characters (✓, ○) or BEM classes. Update
  assertions to check for SVG elements and Tailwind utility classes.

- useAgentOrchestration.test.ts: Mock used 'channel' property but
  the hook expects 'channelId' in message callbacks. Fix mock to
  use correct property name.

- RoleContextCard.test.tsx: In non-editable mode, component renders
  spans not inputs. Use getByText instead of getByDisplayValue.
  Field hints are title attributes, not visible text.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Interviewer class requires ANTHROPIC_API_KEY environment variable.
Add beforeAll/afterAll hooks to mock this env var in test files:

- interviewer.test.ts
- relay-integration.test.ts

This prevents "ANTHROPIC_API_KEY is required" errors during testing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update dev.sh script to use clearer naming:
- Rename start_frontend to start_planner
- Rename FRONTEND_PID_FILE to PLANNER_PID_FILE
- Update log file from .dev-frontend.log to .dev-planner.log
- Update comments and status messages

Also fix backend start to use workspace command format:
  npm run start -w server

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add local vitest.config.ts to planner package. This ensures tests
run correctly when executed from the workspace directory, as the
root vitest config paths don't resolve properly in all contexts.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Extract shared error handling into a dedicated package:
- ErrorHandler class for Express middleware
- Custom error types (ApiError, NotFoundError, BadRequestError)
- Consistent error response format across all services

Used by: server, planner, ideation, forge-core

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Extract shared SQLite storage utilities into a dedicated package:
- ConnectionManager for SQLite connection handling
- BaseStorage class with common CRUD patterns
- Migration utilities
- Type definitions for storage interfaces

Provides foundation for storage modules across planner, forge-core,
ideation, and tuner packages.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Break up monolithic sqlite.ts (~2000 lines) into domain-focused modules:

packages/planner/src/storage/sqlite/
├── index.ts          # SqliteStorage class, schema, migrations
├── plans.ts          # Plan CRUD operations
├── versions.ts       # PlanVersion operations
├── sessions.ts       # Session management
├── questions.ts      # Question/answer storage
├── improvements.ts   # Improvement suggestions
├── comments.ts       # Comment threads
├── change-requests.ts # Change request handling
├── organizations.ts  # Organization/initiative storage
├── workflow.ts       # Workflow state operations
├── trajectory.ts     # Trajectory tracking
└── converters.ts     # Row-to-domain converters

Each module handles a single domain concern, improving:
- Code navigation and discoverability
- Test isolation
- Maintenance and refactoring

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Break up forge-core storage into domain-focused modules:

packages/forge-core/src/storage/sqlite/
├── index.ts       # ForgeStorage class, schema, migrations
├── runs.ts        # Run CRUD operations
├── tasks.ts       # Task management
├── gates.ts       # Gate approval handling
├── guardians.ts   # Guardian agent storage
├── questions.ts   # Question queue
├── trajectory.ts  # Trajectory/event storage
└── converters.ts  # Row-to-domain converters

Mirrors the planner storage split pattern for consistency.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Break up monolithic tools/index.ts into domain-focused modules:

packages/planner/src/mcp/tools/
├── index.ts           # Tool registration and execution
├── shared.ts          # Common utilities and types
├── plan-tools.ts      # Plan creation/reading
├── version-tools.ts   # Version management
├── step-tools.ts      # Step CRUD operations
├── criteria-tools.ts  # Acceptance criteria tools
├── gate-tools.ts      # Gate approval tools
└── improvement-tools.ts # AI improvement suggestions

Each module is responsible for a single domain, improving
maintainability and allowing parallel development.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Break up monolithic planner-lead-tools.ts into domain-focused modules:

packages/server/src/relay/planner-lead-tools/
├── index.ts            # Tool registration, execution, exports
├── types.ts            # Shared type definitions
├── schemas.ts          # Zod schemas for tool inputs
├── plan-tools.ts       # Plan reading/analysis tools
├── step-tools.ts       # Step CRUD operations
├── question-tools.ts   # Question handling tools
├── channel-tools.ts    # Channel management tools
├── agent-relay-tools.ts    # Agent communication tools
├── agent-status-tools.ts   # Agent status monitoring
└── mock-tools.ts       # Mock responses for testing

Update planner-lead.ts and tests to import from new location.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Break up large components into focused sub-components:

ChatBubble → chat-bubble/
├── ChatBubble.tsx      # Main component (now thin)
├── MessageContent.tsx  # Message rendering
├── SuggestionCard.tsx  # AI suggestion display
└── index.ts

StepEditor → step-editor/
├── StepEditor.tsx      # Main component
├── CriteriaList.tsx    # Acceptance criteria
├── GateConfig.tsx      # Gate configuration
└── index.ts

SwimlaneView → swimlane/
├── SwimlaneView.tsx    # Main component
├── ScopeLane.tsx       # Individual scope lane
├── StepCard.tsx        # Step cards in lanes
├── DependencyLines.tsx # Dependency visualization
└── index.ts

PlanEditorPage:
├── Extract PlanEditorContext for state management
├── Reduce from ~800 lines to ~200 lines
└── Components self-contain their logic

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add runtime capability detection for UI feature flags:

GET /api/capabilities returns:
- relay: { connected, mode }
- plannerLead: { active }
- features: { aiChat, agentSpawn, realTimeSync }

Add request timeout middleware (30s default) to prevent
hanging requests from accumulating.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move shared Tailwind config to shared-ui preset:
- packages/shared-ui/src/theme/tailwind-preset.cjs

Update UI packages to extend the preset:
- planner-ui/tailwind.config.cjs
- ideation-ui/tailwind.config.cjs
- forge-ui/tailwind.config.cjs

Each package now uses:
  presets: [require('@plannr/shared-ui/theme/tailwind-preset')]

Reduces duplication and ensures consistent theming across UIs.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Create hierarchical tsconfig structure:

Root configs:
- tsconfig.base.json: Shared compiler options for all packages
- tsconfig.node.json: Node.js specific settings (extends base)
- tsconfig.vite.json: Vite/React specific settings (extends base)
- tsconfig.json: Project references for build orchestration

Package configs now extend appropriate base:
- Backend packages: extend tsconfig.node.json
- Frontend packages: extend tsconfig.vite.json

Benefits:
- Consistent compiler settings across monorepo
- Single source of truth for common options
- Package-specific overrides where needed

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Root package.json:
- Add npm workspaces configuration
- Add shared dev dependencies (vitest, typescript)
- Update scripts for monorepo operation

Package updates:
- Add @plannr/errors dependency where needed
- Add @plannr/storage-base dependency where needed
- Normalize version ranges across packages

Vite configs:
- Normalize proxy configurations
- Add SSE buffering fixes for event streams
- Consistent alias setup (@/ for src)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Scenario runner improvements:
- Add AI-planned scenario mode
- Add ideation client for E2E testing
- Add retry logic to HTTP clients (forge, planner, tuner)
- Rename synthetic/AI modes for clarity

Metrics accuracy improvements:
- Fix accuracy calculation edge cases
- Improve learning rate stability
- Add validation for metric boundaries

Config updates:
- Add ideation service configuration
- Update schema for new scenario types

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ideation:
- Update storage imports for @plannr/errors
- Fix API routes error handling
- Update server exports

forge-core:
- Update app.ts error handler import
- Fix orchestrator error handling
- Update storage index exports

Both packages now use shared @plannr/errors package
for consistent error handling.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
planner-ui:
- Remove dead code: ChatBubble.usage.md, toggle-group.example.tsx
- Add ToastContainer and ToastContext for notifications
- Add useToast hook
- Add storage-keys.ts for localStorage key management
- Add identity.ts for user ID generation
- Update context exports
- Fix relay context and hooks

planner:
- Update api middleware imports
- Update index.ts exports

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update import paths for error handling consistency.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add project-wide code formatting and linting:

- .prettierrc: Code style rules (2-space indent, single quotes, etc.)
- .prettierignore: Exclude dist, node_modules, etc.
- eslint.config.js: ESLint flat config for TypeScript

Ensures consistent code style across all packages.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add documentation for the monorepo refactoring work:
- monorepo-refactor.md: Implementation plan overview
- shared-ui-usage.md: Shared UI package usage guide
- tailwind-deduplication-summary.md: Tailwind consolidation details
- component-refactor-summary.md: Component split documentation
- phase-4-analysis.md, phase6-testbench-analysis.md: Phase analysis
- future-spawned-agent-architecture.md: Architecture planning
- TESTBENCH-GUIDE.md: Testbench usage guide

Add flow feature specs for trajectory integration:
- trajectory-service.json
- trajectory-planner-read-write.json
- trajectory-forge-read.json
- trajectory-interviewer-write.json
- trajectory-spawned-agents.json
- trajectory-testbench-verification.json
- trajectory-integration.json

Update flow/catalog.json with feature status.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@jahala jahala changed the title Initial planner implementation feat: Complete Planner Monorepo - Core, Ideation, Forge, Tuner & Testbench Feb 5, 2026
jahala and others added 8 commits February 5, 2026 21:01
Add optional chaining and null checks to fix build errors:

- Dropdown.tsx: Check item exists before accessing disabled
- MessageList.tsx: Add safety check for current/previous messages
- Modal.tsx: Use optional chaining for focus element access
- Tabs.tsx: Use optional chaining for tab disabled check
- TypingIndicator.tsx: Use optional chaining for user name access
- ThemeProvider.tsx: Return undefined in else branch of useEffect

These fixes enable strict TypeScript compilation and ensure
the StatusBar and other new components are built to dist.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Convert require() to dynamic import() in interviewer/config.ts
- Add await for async getLLMConfig() in service.ts and handlers.ts
- Add ESM __dirname shim to all Vite configs (planner-ui, forge-ui, ideation-ui)
- Update ideation/tsconfig.json to use project references for tuner
- Clean up tuner imports to use package name instead of relative paths

The root cause was require() being used in ESM modules, causing
"ReferenceError: require is not defined" at runtime.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add optional chaining for array access in history.ts
- Add non-null assertions in service.ts for relay state callbacks
- Fix blockCount property access in navigator/service.ts (use blocks not understanding.blocks)
- Add type assertions for tool result data in service.ts
- Fix EventEmitter emit/on calls with any cast to bypass typed emitter conflicts
- Correct session event type from 'session:block' to 'session:block_created'
- Add outDir to tuner tsconfig for proper build output

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create shared PhysicsBlockBase component for dashboard/canvas consistency
- Add MouseConstraint for drag interaction in physics engine
- Add jiggle effect when blocks are dropped
- Add CSS animations: pop-in, pop-out, synonym-swap, slide-out
- Update theme to cool grey sand (#f2f1ed) matching mockup
- Fix back button to always navigate to /ideation dashboard
- Remove aggressive hover:scale-150 effect on blocks
- Widen In-Progress column (1.5fr) taking from center
- Add ThemeToggle component with dark/light mode support
- Fix TypeScript strict null check errors across components

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…s, untrack local docs

- Add tuner and testbench initiatives to migration with prefix-based routing
- Generate individual feature files from inline epic sub_features (57 files, 75 steps)
- Fix trailing commas in dot-planner-enhancements.json and forge-dot-enhancements.json
- Untrack 33 local docs files (architecture, design, research) — files remain on disk
- Update .gitignore to use docs/* with !docs/flow/ negation pattern

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rules were outdated - still referenced single-app structure when the
codebase has grown to 13 packages. Consolidated duplicate files,
fixed stale paths, and documented new patterns.

Changes:
- Merge frontend.md + tailwind-design.md (eliminated 70% duplication)
- Add monorepo.md for package structure and workspace commands
- Update architecture.md with plugin architecture, multi-DB, error pkg
- Update development.md for multi-service dev and Express 5
- Update agent-relay.md paths and add bridge/spawner patterns
- Update react-patterns.md with physics engine and SSE patterns
- Sync flow skills from global config (flow-planner, flow-tasks)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The project has evolved from a single "planner-core" planning service
into "plannr" - a full agentic platform with ideation, planning,
execution (forge), and adaptive learning (tuner) across 12 packages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Generated per-package documentation covering domain model, API routes,
key exports, architecture, and development commands. Testbench already
had a README and was verified as accurate.

Packages documented: server, planner, ideation, forge-core, tuner,
planner-ui, ideation-ui, forge-ui, shared-ui, storage-base, errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants