🎼 CodeConductor

Project Manager Handoff Report — Incoming PM Edition

v0.2.0 Linear: Backlog Publisher: Teambotics
Report date: April 23, 2026
Last Notion sync: April 10, 2026
Repo branch: master
VS Code target: ^1.86.0
Runtime: Node.js 18+
Language: JavaScript
Test suite: 746 passing
📋

Project Overview

ℹ️
For the incoming PM CodeConductor is a multi-agent coordination layer for software development teams. It ships as a VS Code extension plus a standalone MCP (Model Context Protocol) server that any AI coding agent — Claude Code, GitHub Copilot, OpenAI Codex, Cursor — can connect to in order to avoid conflicts and hand off work on a shared codebase. The project is now at v0.2.0 on master. A packaged VSIX for v0.1.0 exists in the repo root. The Linear project is currently in Backlog status while the v0.1.0 Release Readiness milestone has several open items (see Linear section below).
24
MCP Tools
746
Tests Passing
100+
Agent Templates
20
VS Code Commands
6
Open Linear Issues
2
Blocking Lint Bugs

CodeConductor evolved from an earlier project called AgentSync. The VS Code extension was rebranded in v0.1.1 as Teambotics CodeBuddy for marketplace presence, while the underlying coordination protocol retained the CodeConductor name. Both names appear in docs and config keys — the canonical command prefix is codebuddy.* with legacy codeconductor.* aliases still active.

✅

Section 1 — Implemented Features & How to Use Them

17 features fully shipped
✅
All core features are fully implemented, tested, and documented. Phases 1–3 (Core Library, MCP Server, VS Code Extension) are marked Done in Linear. No stubs or placeholder implementations exist in the working source.
Agent Session Management DONE

Full session lifecycle: start, heartbeat, pause, redirect, end, and cancel. Sessions are persisted to SQLite and surfaced in the VS Code tree view and dashboard in real time.

  • Sessions include agent name, model tier, file-lock intent, and token budget
  • Stale sessions auto-expire after a configurable inactivity window
  • Multiple agents can hold concurrent sessions; the dashboard shows all active sessions
How to use — from an AI agent via MCP
cc_start_session({ agentName: "dev-agent", modelTier: "tier3", intent: ["src/app.js"] }) cc_heartbeat({ sessionId: "...", progress: "Refactoring auth module" }) cc_end_session({ sessionId: "..." })
How to use — from VS Code

Command Palette → CodeBuddy: Start Session, or click the session node in the CodeBuddy sidebar tree.

Core Layer MCP Tool
Advisory File Locking DONE

Prevents concurrent agents from editing the same files. Supports two enforcement modes configurable per repo:

  • warn — conflicting agent receives a warning but is not blocked
  • block — second agent cannot acquire the lock until the first releases it
  • Exclusive and shared lock modes (read-only vs. write intent)
  • Lock state is visible in the sidebar under the "Locks" tree node
How to use — MCP
cc_lock_files({ sessionId, files: ["src/auth.js"], mode: "exclusive" }) cc_check_files({ files: ["src/auth.js"] }) // check without acquiring cc_release_files({ sessionId }) // release all locks for session
Configure enforcement mode — .codebuddy.json
{ "fileLocking": { "mode": "block" } }
Core Layer MCP Tool Config-driven
Structured Work Handoffs DONE

Agents create structured handoff objects to pass work to other agents or human reviewers. Supports priority queuing, pipeline chains, and model-tier recommendations.

  • Handoffs include title, description, priority, required capabilities, and context snapshot
  • Pipeline chains allow sequential agent workflows to auto-advance
  • Incoming PM tip: handoffs are the primary mechanism for agent-to-agent task delegation
How to use — MCP
cc_create_handoff({ title: "Review auth PR", priority: 2, requiredCapabilities: ["code-review"] }) cc_claim_handoff({ handoffId: "..." }) // agent picks it up cc_get_next_task({ agentCapabilities: ["code-review"] }) // auto-match
Core Layer MCP Tool
Real-time VS Code Dashboard DONE

Two dashboard surfaces: a compact sidebar panel and a full-screen editor panel. Both show live agent sessions, file locks, handoffs, and health status.

  • Sidebar: compact view, always visible in the Activity Bar
  • Full panel: detailed session cards, lock tables, handoff queue
  • Human intervention controls: pause, redirect, end, claim handoff from the UI
How to open

Command Palette → CodeBuddy: Open Dashboard

Or click the 🎼 icon in the Activity Bar sidebar.

Toggle compact/full: CodeBuddy: Toggle Dashboard Mode

Extension Layer
MCP Server (24 Tools) DONE

Standalone MCP server exposing 24 cc_* tools over stdio transport. Any MCP-compatible AI agent can connect without the VS Code extension being present.

  • Groups: Sessions (7), Locks (3), Handoffs (5), Agents (3), Context & Budget (6)
  • Compatible clients: Claude Code, GitHub Copilot (MCP preview), Cursor, any MCP SDK client
Configure in .mcp.json
{ "mcpServers": { "codebuddy": { "command": "node", "args": ["out/codebuddy-server.js"] } } }

Full tool reference: docs/API.md  |  Integration guide: docs/MCP-INTEGRATION.md

MCP Layer 24 Tools
Agent Template Catalog (100+) DONE

Over 100 Markdown agent templates organized into 10 categories. Templates define agent personality, capabilities, and tool-use preferences.

  • Categories: Engineering, Design, Marketing, Product, Project Management, Strategy, Support, Testing, Specialized, Spatial Computing
  • Used by cc_match_agents and cc_get_agent_prompt to build system prompts
How to use — MCP
cc_list_agents() // browse all templates cc_match_agents({ requiredCapabilities: ["frontend", "react"] }) cc_get_agent_prompt({ agentId: "frontend-engineer" })

Templates live in templates/agents/. Add new .md files to extend the catalog — no code changes required.

Core Layer MCP Tool
Token Budget Tracking DONE

Per-session token accounting with configurable budget limits and warning thresholds. Agents can query remaining budget before performing expensive operations.

  • VS Code settings: codebuddy.tokenBudget.maxTokensDefault (default 120 000)
  • Warning fires at codebuddy.tokenBudget.sessionDurationWarningMinutes
  • Budget-aware model tier recommendations via cc_get_model_recommendation
How to use — MCP
cc_record_token_usage({ sessionId, tokensUsed: 4200, operation: "refactor" }) cc_get_budget_status({ sessionId }) cc_get_model_recommendation({ sessionId })
Core Layer MCP Tool Config-driven
Context Capsule & AST Scoping DONE

Compresses the current workspace state into a handoff-friendly context object. AST context extraction (via Tree-sitter) scopes context to the relevant code symbols rather than whole files.

  • Supports JS, JSX, TS, TSX out of the box
  • Capsule saved to .codebuddy/context-capsule.json
How to use — MCP
cc_context_capsule({ sessionId }) // full workspace snapshot cc_get_context_scope({ sessionId, filePath: "src/auth.js", symbol: "loginUser" })
Core Layer MCP Tool
Persistent Agent Wiki (v0.2.0) DONE

A project-local knowledge base that agents can read and write. Implemented as structured Markdown files under .codebuddy/wiki/. Inspired by the Karpathy LLM Wiki pattern.

  • Survives session boundaries — knowledge persists across agent restarts
  • Added in v0.2.0 alongside the external dashboard WebSocket server
Core Layer
Health Check Tracking DONE

Tracks build, test, and deploy health across the workspace. Health state is emitted at session end and surfaced in the dashboard.

  • Agents record health outcomes; the dashboard shows a traffic-light view
  • Run via cc_end_session — health checks fire automatically
Core Layer
Repo-Local Configuration DONE

Per-repo settings in .codebuddy.json control locking behavior, tool gating, wiki, token budgets, and agent routing preferences. Supports a legacy .codeconductor.json path as well.

Minimal .codebuddy.json example
{ "fileLocking": { "mode": "warn" }, "tokenBudget": { "maxTokens": 80000 } }

Full schema reference: docs/CONFIGURATION.md

Config-driven Extension Layer
External Dashboard WebSocket Server DONE (v0.2.0)

A lightweight WebSocket server (ws) that allows external browser or tooling clients to subscribe to real-time CodeConductor state events without running inside VS Code.

  • Useful for CI dashboards, team overview screens, and non-VS Code agents
  • Implementation: src/extension/websocket-server.js
Extension Layer

All 20 VS Code Commands

Command ID Label Description
codebuddy.startSessionStart SessionStart a new agent coordination session
codebuddy.endSessionEnd SessionEnd the active session and release all locks
codebuddy.lockFilesLock FilesAcquire advisory file locks for the current session
codebuddy.releaseFilesRelease FilesRelease all held file locks
codebuddy.pauseAgentPause AgentPublish a pause directive to the active agent
codebuddy.redirectAgentRedirect AgentPublish a redirect directive with new instructions
codebuddy.heartbeatSend HeartbeatManually send a session keepalive
codebuddy.createHandoffCreate HandoffCreate a new work handoff for another agent
codebuddy.claimNextHandoffClaim HandoffClaim the next available open handoff
codebuddy.toggleServerToggle ServerStart or stop the MCP server process
codebuddy.openDashboardOpen DashboardOpen the full-screen coordination dashboard
codebuddy.toggleDashboardModeToggle Dashboard ModeSwitch between compact sidebar and full panel
codebuddy.quickRefreshQuick RefreshForce refresh all dashboard and tree view surfaces
codebuddy.tree.pauseSessionPause (tree)Pause session from the tree view context menu
codebuddy.tree.endSessionEnd (tree)End session from the tree view
codebuddy.tree.releaseLockRelease Lock (tree)Release a specific lock from the tree view
codebuddy.tree.claimHandoffClaim (tree)Claim a handoff from the tree view
codebuddy.tree.completeHandoffComplete (tree)Mark a claimed handoff complete from the tree view
Legacy codeconductor.* aliases are registered for all commands for backward compatibility with pre-v0.1.1 setups.
🔧

Section 2 — Work in Progress / Partially Formed

4 areas with known gaps
⚠️
No stubs in working code, but known gaps exist The codebase contains zero TODO/FIXME/WIP comments in implementation files. However, the Linear backlog and the repo's own HANDOFF_REPORT.md document several items that block a clean v0.1.0 public release. These are tracked under the v0.1.0 Release Readiness milestone in Linear.
ESLint Errors Blocking Pre-commit (TEA-243) BUG — HIGH

What's broken: npm run lint fails with a no-case-declarations error in src/extension/dashboard-actions.js line 80. A const is declared inside a case block without braces. Two additional no-unused-vars warnings exist in dashboard-provider.js.

Impact: The Husky pre-commit hook would fail on any committer's machine. The extension works at runtime — this is a lint-level issue only.

Fix: Wrap the offending case block in {}. Two-minute change. Remove or prefix unused vars with _.

Bug Blocks Pre-commit
No E2E Tests for Dashboard Webview (TEA-242) TESTING — HIGH

What's missing: Unit tests exist for dashboard model, actions, and HTML generation. However, the sidebar webview (dashboard-provider.js) and full panel (dashboard-panel.js, webview/dashboard.js) have no end-to-end rendering tests.

Impact: UI changes can silently break the webview with no test failure. This is the most significant quality gap before a Marketplace publish.

Approach candidates: @vscode/test-electron integration runner, or a lightweight webview screenshot harness.

Testing
Lint Artifact Files Committed to Git CLEANUP

What's wrong: Three files with local Windows absolute paths were committed: lint-results.json, lint-results.txt, lint.json. These are development artifacts that should be in .gitignore.

Impact: Noise for other developers. Will expose contributor machine paths in git history.

Fix: Add to .gitignore, remove from tracking with git rm --cached.

Cleanup
MCP Server Tools — Incomplete Test Coverage TESTING — MEDIUM

What's missing: The 24 MCP server tool handlers (src/server/tools/) and the resource layer (src/server/resources.js) lack a dedicated test suite. Core library behavior is well-covered, but the MCP transport + tool dispatch layer is tested only indirectly.

Impact: A regression in an MCP tool handler could ship without a failing test. Medium risk given the stable core underneath.

Testing MCP Layer
Synchronous SQLite Writes (Performance) PERF — MEDIUM

What's slow: Every write to the SQLite store calls db.export() + fs.writeFileSync() synchronously, blocking the Node.js event loop. Documented in docs/IMPLEMENTATION-PLAN.md.

Impact: Measurable latency with 10+ concurrent agents. Not a problem in single-agent or low-frequency use cases.

Proposed fix: Debounced async write queue with ~300ms batching. src/core/store.js is the only file to change.

Performance Core Layer
Missing Docs: TROUBLESHOOTING & ROADMAP (TEA-244) DOCS — MEDIUM

The README.md links to docs/TROUBLESHOOTING.md and docs/ROADMAP.md. One or both may be absent or stub-only. This creates broken links for first-time users reading the README.

Fix: Either create the missing docs or update the README to remove/replace the links. Tracked as TEA-244.

Docs
Phase 4 Dashboard — Incomplete Hardening (TEA-187) IN PROGRESS

Phase 4 (Real-time Dashboard + Human Oversight) is marked In Progress in Linear. The dashboard surfaces exist and render correctly, but the phase definition included release-grade smoke coverage and gap validation between current UI and original spec — those are still open (TEA-242 is the child issue).

Extension Layer Testing
v0.1.0 GitHub Release & Marketplace Publish Not Done (TEA-240, TEA-241) RELEASE

The packaged codeconductor-0.1.0.vsix exists in the repo root and the CHANGELOG documents v0.1.0. However, the GitHub release has not been published and the extension has not been submitted to the VS Code Marketplace. Both are open Todo items in Linear.

Note: The repo is now at v0.2.0 on master, meaning the next publish will need to decide whether to backfill v0.1.0 or publish v0.2.0 directly.

Release
🗺️

Section 3 — Features Yet to Come

v0.x polish + v2.0 vision

Near-term (v0.x — pre-Marketplace)

🏁 v0.1.0 Release Readiness Active milestone in Linear

The open milestone in Linear tracks the final polish items before the first public release. All items have been triaged and Linear issues created.

  • ● TEA-243 — Fix dashboard lint errors (High, Bug)
  • ● TEA-242 — Add E2E dashboard smoke coverage (High, Testing)
  • ● TEA-241 — Publish to VS Code Marketplace (High, Release)
  • ● TEA-240 — Publish GitHub release + attach VSIX (High, Release)
  • ● TEA-244 — Create missing docs (Medium)
  • ● Remove lint artifact files from git tracking

Medium-term (v0.x after release)

Async Store Persistence

Debounced async write queue for SQLite persistence, eliminating the synchronous writeFileSync on every state change. Estimated 2–4 hour implementation in src/core/store.js.

Performance
Full MCP Tool Test Suite

Dedicated src/server/__tests__/tools.test.js and resources.test.js covering all 24 MCP tools and the resource exposure layer. Framework exists — needs test authoring.

TestingMCP Layer
Phase 5: Orchestration Engine (TEA-188)

Event-driven routing engine that automatically dispatches work between agents. Listens for session_end and handoff_created events, evaluates routing rules from config, and advances pipeline chains. Tracked in Linear as Todo.

  • Capability-based agent matching
  • Priority + round-robin ranking
  • Config-driven routing rules
Core LayerNew MCP Tool

Long-term (v2.0 Vision — Documented in docs/PLAN-v2.0-Frontend-Backend.md)

React/Vite Frontend Separation

Separate the dashboard into a standalone React/Vite frontend application backed by an Express server. This would enable team-wide dashboards running outside of VS Code — on a shared monitor, CI display, or web portal.

v2.0
Real-time Collaborative Dashboard

WebSocket-driven collaborative dashboard where multiple team members and agents see the same live view. The WebSocket server foundation exists in v0.2.0; the full collaborative UI is v2.0 scope.

v2.0
Agent Performance Analytics

Dashboard charts showing token usage per agent, handoff completion rates, session duration distributions, and model tier efficiency metrics. Backend tracking already exists — UI is the gap.

v2.0
Token Budget Forecasting UI

Visual prediction of token burn rate based on session history. The per-session tracking backend is complete in src/core/token-budget.js; the forecasting chart layer is deferred to v2.0.

v2.0
Full SQLite Transaction Support

Replace sql.js (in-memory WASM SQLite) with a native SQLite binding (better-sqlite3 or equivalent) to unlock proper transaction isolation and WAL mode for high-concurrency scenarios.

v2.0Core Layer
◈

Linear Issue Tracker — CodeConductor Project

16 issues total · 8 done · 2 in progress · 6 open
ℹ️
Linear project is currently in Backlog status The project was created on 2026-03-22. Active phases (1–3) are done. Phases 4–6 are partially in progress. Phase 5 (Orchestration Engine) has not been started. The v0.1.0 Release Readiness milestone has 5 open Todo items.

Done

TEA-184
Phase 1: Core Library Extraction
All core modules extracted into src/core/ — sessions, locks, handoffs, health, events, git, store, token budget, AST context, summaries, protocol enforcement.
HIGH
TEA-185
Phase 2: MCP Server
24 cc_* tools exposed over stdio. Full API documented in docs/API.md.
URGENT
TEA-186
Phase 3: VS Code Extension Rewire
Extension commands, dashboard surfaces, and server lifecycle fully wired to core library and MCP server.
HIGH
TEA-226
Repo-local configuration and preference support
.codeconductor.json / .codebuddy.json preference system implemented and tested.
Feature
HIGH
TEA-227
Fix extension server startup path in empty workspace
Server now resolves from extension install path rather than workspace path.
Bug
HIGH
TEA-228
Fix extension activation when no workspace folder is open
Extension activates correctly in empty VS Code windows.
Bug
HIGH
TEA-229
Create design and architecture diagrams for CodeConductor
FigJam diagrams created: User Journey, System Architecture, Agent Lifecycle.
PM
MED
TEA-245
Add canonical Notion and Linear project links to repo docs
docs/PROJECT-LINKS.md created. Notion hub and Linear project linked from README and CONTRIBUTING.
MED

In Progress

TEA-187
Phase 4: Real-time Dashboard + Human Oversight
Dashboard is functional. Remaining gap: release-grade E2E smoke coverage (child: TEA-242).
In Progress
HIGH
TEA-189
Phase 6: Polish + Migration
Parent of the v0.1.0 Release Readiness milestone items. Children: TEA-240, 241, 243, 244.
In Progress
MED

Todo / Open

TEA-188
Phase 5: Orchestration Engine
Event-driven routing engine for automatic agent dispatch. Not yet started. Full spec in issue description.
Todo
MED
TEA-243
Fix remaining dashboard lint findings before release
no-case-declarations in dashboard-actions.js:80. Blocks clean npm run lint.
BugTodo
HIGH
TEA-242
Add end-to-end dashboard smoke coverage for webview surfaces
Sidebar and panel webviews have no E2E rendering tests. Choose test harness and implement.
TestingTodo
HIGH
TEA-241
Publish CodeConductor to the VS Code Marketplace
Verify publisher credentials, confirm package metadata, validate install path after publish. Depends on TEA-240.
ReleaseTodo
HIGH
TEA-240
Publish CodeConductor v0.1.0 GitHub release and attach VSIX artifact
Tag release, attach codeconductor-0.1.0.vsix, align release notes with CHANGELOG. Must decide: publish v0.1.0 or skip to v0.2.0.
ReleaseTodo
HIGH
TEA-244
Create missing docs for README parity and release troubleshooting
README links to docs/TROUBLESHOOTING.md and/or docs/ROADMAP.md. Verify existence; create or remove stale links.
Todo
MED
🏗️

Architecture Overview

Layer 1 — VS Code Extension

  • extension.js — Activation & lifecycle
  • server-manager.js — Spawns/kills MCP server
  • commands.js — 20 command registrations
  • tree-view.js — Activity Bar sidebar tree
  • status-bar.js — Connection status indicator
  • dashboard-provider.js — Sidebar webview
  • dashboard-panel.js — Full-screen editor panel
  • dashboard-html.js — CSP-safe HTML generator
  • dashboard-model.js — Aggregates MCP resources
  • dashboard-actions.js — UI → MCP tool dispatch
  • websocket-server.js — External WS broadcast

Layer 2 — MCP Server

  • server/index.js — Bootstrap
  • server/tools/ — 24 cc_* tool handlers
  • server/resources.js — MCP resource exposure
  • server/transport.js — Stdio transport
  • @modelcontextprotocol/sdk — Protocol SDK
  • Connects to: Claude Code, Copilot, Cursor

Layer 3 — Core Library

  • store.js — SQLite via sql.js (WASM)
  • sessions.js — Session lifecycle
  • locks.js — Advisory file locking
  • handoffs.js — Work item routing
  • health.js — Build/test/deploy tracking
  • events.js — In-process event bus
  • agent-catalog.js — 100+ templates
  • context-capsule.js — Workspace compression
  • token-budget.js — Per-session accounting
  • wiki.js — Persistent knowledge base
  • ast-context.js — Tree-sitter AST scoping
  • repo-preferences.js — Config loading

State Persistence

State is persisted to .codebuddy/state.db via sql.js (SQLite over WASM — no native binaries). An in-process event bus propagates state changes from the core library to the extension UI in real time. The wiki lives at .codebuddy/wiki/ as Markdown files.

Build & Distribution

Bundler: esbuild → out/extension.js & out/codebuddy-server.js
Packaging: @vscode/vsce → .vsix
Tests: Jest 29 · 746 passing · 28 suites
CI: GitHub Actions (Node 18 & 20 matrix)
Linting: ESLint 8 + Prettier 3 + Husky hooks
VS Code mock: src/test/__mocks__/vscode.js
📊

Completeness Matrix

Feature Implemented Tested Documented Notes
Session Management✅ 100%✅✅Full lifecycle
File Locking✅ 100%✅✅warn/block modes
Handoff Workflows✅ 100%✅✅Chains, priorities, tiers
Health Checks✅ 100%✅✅Build/test/deploy
Agent Catalog✅ 100%✅✅100+ templates, 10 categories
Context Capsule✅ 100%✅✅Workspace compression
Token Budget✅ 100%✅✅Backend complete; no forecasting UI
Wiki✅ 100%✅✅v0.2.0 addition
AST Context✅ 100%✅✅Tree-sitter; JS/TS/JSX/TSX
MCP Tools (24)✅ 100%⚠️ Partial✅Server tools lack dedicated test suite
VS Code Extension✅ 100%✅✅All 20 commands registered
Dashboard — Sidebar✅ 100%✅✅Unit-tested; renders live data
Dashboard — Full Panel✅ 100%⚠️ No E2E✅TEA-242 open
WebSocket Server✅ 100%⚠️ Minimal✅External dashboard foundation
Repo Preferences✅ 100%✅✅.codebuddy.json + legacy path
Protocol Enforcement✅ 100%✅✅LimitIT compliance
Git Integration✅ 100%✅✅Status, diff, log utilities
Orchestration Engine❌ Not started❌⚠️ Spec in TEA-188Phase 5 — Todo in Linear
Marketplace Publish❌ Not done——TEA-241 open
GitHub Release v0.1.0❌ Not done——TEA-240 open; VSIX exists
Lint passes cleanly❌ Failing——TEA-243 — fix is trivial
🎯

Immediate Actions for the Incoming PM

WEEK 1 — BLOCKER Fix lint errors and clean up git artifacts

Fix no-case-declarations in src/extension/dashboard-actions.js:80 (add braces around case block). Remove lint-results.json, lint-results.txt, lint.json from git tracking. Linear: TEA-243.

WEEK 1–2 Decide v0.1.0 vs v0.2.0 for public release

The repo is at v0.2.0 on master but no GitHub release exists. The packaged VSIX says v0.1.0. Decide whether to tag and publish v0.1.0 from history or publish v0.2.0 as the first public release. Affects TEA-240 and TEA-241.

WEEK 2 Commission E2E dashboard smoke tests

Assign TEA-242 to a dev. The @vscode/test-electron harness is the recommended approach. Without this, any dashboard regression ships silently.

WEEK 2–3 Publish GitHub release and Marketplace listing

Once lint is clean, create the GitHub release and publish to the VS Code Marketplace under the Teambotics publisher. Verify package.json marketplace metadata before submitting. TEA-240, TEA-241.

MONTH 1 Kick off Phase 5: Orchestration Engine (TEA-188)

This is the next major feature milestone. Full spec exists in the Linear issue. Needs an engineer assigned. The core event bus and handoff infrastructure it depends on are complete.

ONGOING Keep Notion Hub and Linear in sync

The Notion hub was last verified against the repo on 2026-04-10. The canonical link map is in docs/PROJECT-LINKS.md. When the repo shape or project framing changes materially, update both the Notion Hub and the Linear current-state doc.