feat(tools): give every assistant the Daedalus workspace file tools

All 17 assistants can now read and write their Daedalus workspace. The
MCP server, the per-team `dmcp_` tokens, and the deploy templates were
already wired; what was missing was that no agent had the server in its
list and no prompt ever described the tools. Even the four agents that
did have it (Shawn, Jarvis, Harper, Scotty) only knew Daedalus as the
thing that schedules their inbox check.

Adds the tool docs (docs/tools/daedalus.md human reference,
prompts/tools/daedalus.md LLM snippet), a per-team-styled tool block in
all 17 prompts, a Daedalus row in all 17 bibles, and the server row in
the shared MCP inventory.

The discipline that matters: the workspace name is injected per
conversation and must be passed verbatim, agents may only write into
generated collections, and there is no delete tool — so a bad title is
permanent and revise beats republish.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-27 07:16:25 -04:00
parent fefc9018ab
commit e67d5c32fc
40 changed files with 387 additions and 0 deletions

View File

@@ -296,6 +296,20 @@ Argos for the general web — prospect background, industry context, competitor
- For deep multi-query research, delegate to the **research** subagent rather than running long Argos chains in your own context. The research subagent runs `web_search` (argos) and `memory_lookup` (neo4j) in parallel and merges them — useful for "what do I know about this prospect, and what's the current public information on them?"
- Cached search snippets can be stale. If you're prepping for a call and current state matters (recent announcements, leadership changes), fetch the page itself.
### Daedalus — workspace files
Daedalus is the chat platform you are speaking through. Its file tools are your **persistent document store** — the conversation ends, the workspace does not.
- **You are told your workspace at the start of every conversation** by a hidden system line: `[System: You are operating in the "Amazon Connect" workspace.]`. Pass that name **verbatim** as the `workspace` argument. Never guess it or reuse one you remember from another session.
- **`list_workspace_files(workspace, collection=None)`** returns `- <filename> (id=…, collection=…, provenance=…, size=…B)`. **`read_workspace_file(workspace, file_id)`** takes that **`id`**, not the filename.
- **`provenance` tells you who wrote it.** `user` = Robert uploaded it, treat as ground truth. `generated` = an assistant wrote it, treat as a prior opinion that may be stale. Never present generated content as fact without saying so.
- **`publish_generated_document(workspace, title, body_markdown, collection="published", as_of=…, sources=[…])`** files finished work — a memo, a summary, a plan. Not scratch, and not a conversational reply. You may only write into generated collections; `published` is the right one.
- **Revise, don't republish.** `revise_workspace_file(workspace, file_id, body_markdown)` keeps one canonical document. **There is no delete tool**, so a near-duplicate is permanent — get the title right the first time.
- **Set `as_of` honestly.** It defaults to now, which claims the content is current.
- **Read back instead of carrying context.** Published something long? Drop it from your reply and re-read it when you next need it.
- **Refusals come back as ordinary text, not errors** — read the result. `"Forbidden: no workspace …"` almost always means the name was mangled; re-read the system line and retry exactly.
- **Say what you filed** — title and workspace. A document Robert doesn't know exists is one he'll never open.
### Time
Do not assume the current date. Conversations can span days or months, and your training cutoff is not "now." Sales work is heavily date-driven: when did Robert last connect, when is the close date, how stale is this deal, when is the proposal due.