diff --git a/src/servers/api/command-hq/directory.ts b/src/servers/api/command-hq/directory.ts index 0bac6ca1..18d87892 100644 --- a/src/servers/api/command-hq/directory.ts +++ b/src/servers/api/command-hq/directory.ts @@ -456,6 +456,23 @@ export function commanderClaudeMd(params: CommanderClaudeMdParams): string { "Write each one into `DISPATCHING.md` as you agree it, in the owner's words as much as your own. That", 'file is where somebody looks in three months to find out why a thing went where it went.', '', + '**Say what the choices ARE.** Nobody knows what a commander can do with a result — it is your job to', + 'know, not theirs to guess. What is available:', + '', + '- **Nothing.** It stays in `data/`, filed, and the owner reads it when they want to. A complete answer.', + '- **Somewhere else on this machine** — a folder they name, or beside the file it came from.', + '- **Tell them** — a notification, on the item or on a batch.', + '- **Wake a conversation they already have** — `PUT /api/chat/sessions//nudge` sends a message into', + ' an existing chat, so a category can be handed to an agent that already knows what to do with it. It', + ' arrives within the minute rather than instantly.', + '- **Start an agent on it** — the same way you spawn one to classify.', + '- **Run another platform task on it** — whatever `GET /api/tasks` offers.', + '- **Send it to another machine** — `scp` or similar, to a host and path the owner names. They arrange', + ' the access; you say plainly when it is unreachable.', + '', + 'Offer the two or three that plausibly fit what this commander produces, never the whole list. A menu', + 'of seven is the same as no menu.', + '', '**Where classification exists, propose the notification that goes with it.** An item you could not', "place is the one event where the owner's attention changes the outcome: they can tell you where it", 'belongs, and you can turn that into a rule so it never comes back. Offer that as the dispatch — a', @@ -491,7 +508,16 @@ export function commanderClaudeMd(params: CommanderClaudeMdParams): string { "Same for `DISPATCHING.md` when each category's dispatch is agreed: what happens, to where, and why", 'that category rather than in general. Write it as you agree it, not afterwards from memory.', '', - '**Once an item goes all the way through, ask what should survive it.** A pipeline leaves copies in', + 'Notifications are the LAST thing, after all of that is settled and never beside it:', + '', + '**Would you like to be notified?** — on every action · a count every so often, or at a time of day ·', + "no notifications for now · let's talk about it.", + '', + 'Last because it is the only question about how this commander TALKS to its owner rather than what it', + 'does, and it cannot be answered sensibly until they know what it does.', + '', + '**Then, last of all, ask what should survive an item that has gone all the way through.** A pipeline', + 'leaves copies in', 'several places — the original in the watched folder, what the action produced, whatever classification', 'moved. Nobody decided that; it is just what happens, and it accumulates quietly.', '', @@ -506,14 +532,6 @@ export function commanderClaudeMd(params: CommanderClaudeMdParams): string { 'Ask it plainly, once the rest works and they can see what it produces. Not during setup, when they are', 'agreeing to something they have not watched run yet.', '', - 'Notifications are the LAST thing, after all of that is settled and never beside it:', - '', - '**Would you like to be notified?** — on every action · a count every so often, or at a time of day ·', - "no notifications for now · let's talk about it.", - '', - 'Last because it is the only question about how this commander TALKS to its owner rather than what it', - 'does, and it cannot be answered sensibly until they know what it does.', - '', 'AskUserQuestion takes at most FOUR options. Where "let\'s talk about it" belongs, it is one of the', 'four — not a fifth.', '',