Add /ask contract; clarify peers, query vs control, identity gap
This commit is contained in:
44
AGENTS.md
44
AGENTS.md
@@ -27,6 +27,9 @@ Five steps, in order:
|
||||
The reply can be text, spoken audio (TTS), Artemis commands, a notification, an
|
||||
email, or a mix. TTS can play on the house speakers or on the phone.
|
||||
|
||||
A question about another project's data goes to that project's `/ask` endpoint.
|
||||
See `docs/ask-contract.md`. The Hub never learns a project's data model.
|
||||
|
||||
## The dividing line
|
||||
|
||||
> Does this need a decision, or does it need to happen?
|
||||
@@ -48,19 +51,26 @@ email, or a mix. TTS can play on the house speakers or on the phone.
|
||||
7. Restricted actions need **tap-to-approve** on the admin app.
|
||||
8. Only the admin app changes parental controls.
|
||||
9. A new ability registers with the Hub. Build it once.
|
||||
10. A data project answers `/ask` read-only. Never change state on a query.
|
||||
11. High-consequence control does not route through the Hub. The admin app calls
|
||||
the service directly.
|
||||
|
||||
## Build order
|
||||
|
||||
0. **Agree the `/ask` contract.** Both sides build to `docs/ask-contract.md`.
|
||||
Nothing else starts until this is frozen.
|
||||
1. **Thin slice, end to end.** Issue a Paperclip API key. File one job from a
|
||||
script. Get the result announced back. Prove the round trip.
|
||||
2. **Hub skeleton.** Hear → understand → route → answer, with one destination.
|
||||
3. **Approval flow.** "Did you ask for this?" on the admin app.
|
||||
4. **Internet control.** Standalone service with a plain API. Device-side
|
||||
enforcement. Admin-only.
|
||||
5. **Artemis.** Standalone service with a plain API. Screen control only.
|
||||
6. **Move Jervis's tools** into the Hub. Jervis becomes voice-only.
|
||||
7. **Phone Kotlin app.** Wake word, voice to the Hub, replies and approvals.
|
||||
8. **Email and school pipelines.** Stay independent. Connect when ready.
|
||||
2. **Hub skeleton.** Hear → understand → route → answer, against a fake project
|
||||
that speaks `/ask`. One real destination (speakers).
|
||||
3. **Identity.** Decide how the Hub knows who is speaking.
|
||||
4. **Approval flow.** "Did you ask for this?" on the admin app.
|
||||
5. **One real data project** to the contract (email or school). Prove `/ask`.
|
||||
6. **Internet control.** Separate service and portal. Control stays app-only.
|
||||
7. **Artemis.** Separate service. Screen control only.
|
||||
8. **Move Jervis's tools** into the Hub. Jervis becomes voice-only.
|
||||
9. **Phone Kotlin app.** Wake word, voice to the Hub, replies and approvals.
|
||||
10. **Remaining pipelines** connect when ready.
|
||||
|
||||
## Definition of done (phase 1)
|
||||
|
||||
@@ -70,16 +80,20 @@ email, or a mix. TTS can play on the house speakers or on the phone.
|
||||
|
||||
## How this project relates to the other projects
|
||||
|
||||
This project owns the **shared Hub**. It does not own the destinations.
|
||||
This project owns the **shared Hub**. It does **not** own the other projects.
|
||||
|
||||
| Project | Relation |
|
||||
Every other project is a **peer**. Each has its own folder, repo, port,
|
||||
interface, and build. Each can be built and used without the Hub. The Hub is an
|
||||
**extra** way in, not the only one.
|
||||
|
||||
| Project | Talk direction |
|
||||
|---|---|
|
||||
| Email agent | Own pipeline. Reports through the Hub when ready. |
|
||||
| Compass / NHS | Own pipeline. Reports through the Hub when ready. |
|
||||
| Internet use control | Destination. Exposes a plain API. The Hub calls it. |
|
||||
| Artemis | Destination. Exposes a plain API. The Hub calls it. |
|
||||
| Email agent | Hub asks it (`/ask`). It tells the Hub (`/notify`). n8n scans it. |
|
||||
| Compass / NHS | Hub asks it (`/ask`). It tells the Hub (`/notify`). n8n scans it. |
|
||||
| Internet use control | Hub **asks** it. **Control goes through its own apps, not the Hub.** |
|
||||
| Artemis | Hub calls it to act. Nothing comes back. |
|
||||
| Jervis | Becomes voice-only. Its tools move here. |
|
||||
| dsh | Calls the Hub for actions. |
|
||||
| dsh | Calls the Hub for actions. Keeps its own chat. |
|
||||
|
||||
Each project writes its own docs. Do not copy theirs here. Link to them.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user