chore: break up command handlers
This commit is contained in:
@@ -49,6 +49,28 @@ Inbound and outbound messages are passed through a typed `AsyncQueue<T>`. The qu
|
||||
## Logging Pattern
|
||||
Use `console.error` / `console.warn` / `console.info` / `console.debug` — no external logger. Color via `picocolors` in CLI output only.
|
||||
|
||||
## CLI Command Pattern
|
||||
Each command is in its own file with a registration function:
|
||||
```ts
|
||||
// src/cli/agent.ts
|
||||
export function agentCommand(program: Command, config: Config, workspace: string): void {
|
||||
program.command('agent')
|
||||
.description('...')
|
||||
.option('-m, --message <text>', 'Single message to process')
|
||||
.action(async (opts) => { /* ... */ })
|
||||
}
|
||||
|
||||
// src/cli/commands.ts (bootstrap)
|
||||
export function createCli(): Command {
|
||||
const program = new Command('nanobot')...
|
||||
const config = loadConfig(opts.config);
|
||||
const workspace = resolveWorkspacePath(config.agent.workspacePath);
|
||||
gatewayCommand(program, config, workspace);
|
||||
agentCommand(program, config, workspace);
|
||||
return program;
|
||||
}
|
||||
```
|
||||
|
||||
## File Layout
|
||||
```
|
||||
src/
|
||||
@@ -67,8 +89,12 @@ src/
|
||||
tools/base.ts + filesystem.ts + shell.ts + web.ts + message.ts + spawn.ts + cron.ts
|
||||
channels/
|
||||
base.ts + mattermost.ts + manager.ts
|
||||
cli/commands.ts
|
||||
index.ts
|
||||
cli/
|
||||
types.ts # CommandHandler type
|
||||
commands.ts # Bootstrap - loads config, registers commands
|
||||
agent.ts # agentCommand() - interactive/single-shot mode
|
||||
gateway.ts # gatewayCommand() - full runtime with Mattermost
|
||||
index.ts
|
||||
templates/ (SOUL.md, AGENTS.md, USER.md, TOOLS.md, HEARTBEAT.md, memory/MEMORY.md)
|
||||
skills/ (copied from Python repo)
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user