Files
Codewalkers/docs/cli-config.md
Lukas May 34578d39c6 refactor: Restructure monorepo to apps/server/ and apps/web/ layout
Move src/ → apps/server/ and packages/web/ → apps/web/ to adopt
standard monorepo conventions (apps/ for runnable apps, packages/
for reusable libraries). Update all config files, shared package
imports, test fixtures, and documentation to reflect new paths.

Key fixes:
- Update workspace config to ["apps/*", "packages/*"]
- Update tsconfig.json rootDir/include for apps/server/
- Add apps/web/** to vitest exclude list
- Update drizzle.config.ts schema path
- Fix ensure-schema.ts migration path detection (3 levels up in dev,
  2 levels up in dist)
- Fix tests/integration/cli-server.test.ts import paths
- Update packages/shared imports to apps/server/ paths
- Update all docs/ files with new paths
2026-03-03 11:22:53 +01:00

159 lines
5.6 KiB
Markdown

# CLI & Configuration
`apps/server/cli/` — CLI commands, `apps/server/config/` — workspace configuration, `apps/server/bin/` — entry point.
## Entry Point
`apps/server/bin/cw.ts` — hashbang entry that imports and runs the CLI.
## CLI Framework
Uses **Commander.js** for command parsing.
## Global Flags
- `-s, --server` — Start coordination server in foreground
- `-p, --port <number>` — Server port (default: 3847, env: `CW_PORT`)
- `-d, --debug` — Enable debug mode (archive agent workdirs before cleanup)
## Commands
### System
| Command | Description |
|---------|-------------|
| `cw init` | Create `.cwrc` workspace file in current directory |
| `cw start` | Start coordination server (see Server Wiring below) |
| `cw stop` | Stop running server (reads PID file, sends signal) |
| `cw status` | Query server health endpoint |
| `cw id [-n count]` | Generate nanoid(s) offline |
### Agent Management (`cw agent`)
| Command | Description |
|---------|-------------|
| `spawn <prompt> --task <id> [--name] [--provider] [--initiative] [--cwd]` | Spawn agent |
| `stop <name>` | Stop running agent |
| `delete <name>` | Delete agent, clean workdir/branches/logs |
| `list` | List all agents with status |
| `get <name>` | Agent details (ID, task, session, worktree, status) |
| `resume <name> <answers>` | Resume with JSON answers or single string |
| `result <name>` | Get execution result |
### Task Management (`cw task`)
| Command | Description |
|---------|-------------|
| `list --parent\|--phase\|--initiative <id>` | List tasks with counts |
| `get <taskId>` | Task details |
| `status <taskId> <status>` | Update status |
### Dispatch (`cw dispatch`)
| Command | Description |
|---------|-------------|
| `queue <taskId>` | Queue task for dispatch |
| `next` | Dispatch next available task |
| `status` | Show queue status |
| `complete <taskId>` | Mark task complete |
### Initiative Management (`cw initiative`)
| Command | Description |
|---------|-------------|
| `create <name> [--project <ids...>]` | Create initiative |
| `list [-s status]` | List initiatives |
| `get <id>` | Initiative details |
| `phases <initiativeId>` | List phases |
### Architect (`cw architect`)
| Command | Description |
|---------|-------------|
| `discuss <initiativeId> [-c context]` | Start discussion agent |
| `plan <initiativeId> [-s summary]` | Start plan agent |
| `detail <phaseId> [-t taskName] [-c context]` | Detail phase into tasks |
### Phase (`cw phase`)
| Command | Description |
|---------|-------------|
| `add-dependency --phase <id> --depends-on <id>` | Add dependency edge |
| `dependencies <phaseId>` | List dependencies |
| `queue <phaseId>` | Queue approved phase |
| `dispatch` | Dispatch next phase |
| `queue-status` | Show phase queue |
### Merge & Coordination (`cw merge`, `cw coordinate`)
| Command | Description |
|---------|-------------|
| `merge queue <taskId>` | Queue task for merge |
| `merge status` | Show merge queue |
| `merge next` | Show next mergeable task |
| `coordinate [-t branch]` | Process all ready merges (default: main) |
### Messages (`cw message`)
| Command | Description |
|---------|-------------|
| `list [--agent <id>] [--status <s>]` | List messages |
| `read <messageId>` | Read full message |
| `respond <messageId> <response>` | Respond to message |
### Projects (`cw project`)
| Command | Description |
|---------|-------------|
| `register --name <n> --url <u>` | Register git repo |
| `list` | List projects |
| `delete <id>` | Delete project |
### Preview Deployments (`cw preview`)
| Command | Description |
|---------|-------------|
| `start --initiative <id> --project <id> --branch <branch> [--phase <id>]` | Start Docker preview |
| `stop <previewId>` | Stop and clean up preview |
| `list [--initiative <id>]` | List active previews |
| `status <previewId>` | Get preview status with service details |
### Inter-Agent Conversation (`cw listen`, `cw ask`, `cw answer`)
| Command | Description |
|---------|-------------|
| `listen --agent-id <id> [--poll-interval <ms>] [--timeout <ms>]` | Poll for pending questions, print JSON, exit |
| `ask <question> --from <agentId> [--agent-id\|--phase-id\|--task-id <target>] [--poll-interval <ms>] [--timeout <ms>]` | Ask question, block until answered, print answer |
| `answer <answer> --conversation-id <id>` | Answer a pending conversation |
All three commands output JSON for programmatic agent consumption.
### Accounts (`cw account`)
| Command | Description |
|---------|-------------|
| `add [--provider] [--email] [--token]` | Auto-discover, manually register, or register with setup token |
| `list` | Show accounts with exhaustion status |
| `remove <id>` | Remove account |
| `refresh` | Clear expired exhaustion markers |
## Server Wiring
The CLI is the composition root. It creates concrete implementations and passes them as `contextDeps`:
```
ServerContextDeps = Omit<TrpcAdapterOptions, 'eventBus' | 'serverStartedAt' | 'processCount'>
```
This includes all repositories, managers, and the credential manager. The server adds `eventBus`, `serverStartedAt`, and `processCount` at startup.
## Workspace Configuration
`apps/server/config/` module:
### .cwrc File
JSON file at workspace root that marks a `cw` workspace:
```json
{ "version": 1 }
```
### findWorkspaceRoot()
Walks up directory tree looking for `.cwrc` file. Returns the directory containing it, or throws if not found.
### Schema
Currently `{ version: 1 }` — extend with new top-level keys as needed.
### Files
| File | Purpose |
|------|---------|
| `types.ts` | CwrcConfig type definition |
| `cwrc.ts` | findWorkspaceRoot(), readCwrc(), writeCwrc() |
| `index.ts` | Public API exports |