# P8-009: TUI Phase 1 — Slash Command Parsing ## Task Reference - Issue: #162 - Branch: feat/p8-009-tui-slash-commands ## Scope - New files: parse.ts, registry.ts, local/help.ts, local/status.ts, commands/index.ts - Modified files: use-socket.ts, input-bar.tsx, message-list.tsx, app.tsx ## Key Observations - CommandDef in @mosaicstack/types does NOT have `category` field — will omit from LOCAL_COMMANDS - CommandDef.args is `CommandArgDef[] | undefined`, not `{ usage: string }` — help.ts args rendering needs adjustment - Message role union currently: 'user' | 'assistant' | 'thinking' | 'tool' — adding 'system' - InputBar currently takes `onSubmit: (value: string) => void` — need to add slash command interception - app.tsx passes `onSubmit={socket.sendMessage}` directly — needs command-aware handler ## Assumptions - ASSUMPTION: `category` field not in CommandDef type — will skip category grouping in help output, or add it only to registry (not to CommandDef type) - ASSUMPTION: For the `args` field display in help, will use `CommandArgDef.name` and `CommandArgDef.description` - ASSUMPTION: `commands:manifest` event type may not be in ServerToClientEvents — will handle via socket.on with casting if needed ## Status - [ ] Create commands directory structure - [ ] Implement parse.ts - [ ] Implement registry.ts - [ ] Implement local/help.ts - [ ] Implement local/status.ts - [ ] Implement commands/index.ts - [ ] Modify use-socket.ts - [ ] Modify input-bar.tsx - [ ] Modify message-list.tsx - [ ] Modify app.tsx - [ ] Run quality gates - [ ] Commit + Push + PR + CI