feat(skills): inter-session-messaging replaces inter-session-peer-discipline
- New skill inter-session-messaging v1.0.0: SEND canon (address = folder name, file naming, frontmatter from = own folder, never write to self) + RECEIVE + POLICY (peer != authority, inbox vs board contract) - Remove inter-session-peer-discipline (merged into inter-session-messaging) - session-inbox-monitor: reference → inter-session-messaging - project-bootstrap: Step 9 address-book registration (shared wiki concepts/projects-address-book.md) - dist rebuilt + pruned
This commit is contained in:
@@ -15,7 +15,7 @@ description: >
|
||||
there; rely on the Stop-hook inbox pickup + Notify/ntfy. Pi (pi-coding-agent)
|
||||
sessions: a global extension delivers the session's own project inbox
|
||||
messages (own directory only, see the Pi section). NOT for how to
|
||||
handle a received message (→ inter-session-peer-discipline) nor the
|
||||
handle a received message (→ inter-session-messaging) nor the
|
||||
multi-machine inbox backend (→ cross-machine-inbox design).
|
||||
---
|
||||
|
||||
@@ -37,7 +37,7 @@ for free on session end. Headless sessions skip it and rely on the pull-model
|
||||
монитор почты», «настрой авто-монитор инбокса», «raise inbox monitor»,
|
||||
«auto-arm inbox watcher».
|
||||
- **NOT for** handling the content of a received message (→
|
||||
`inter-session-peer-discipline`), nor the multi-machine delivery backend (→
|
||||
`inter-session-messaging`), nor the multi-machine delivery backend (→
|
||||
`cross-machine-inbox`). This skill is only the monitor's *lifecycle* on one
|
||||
machine.
|
||||
|
||||
@@ -64,7 +64,7 @@ for free on session end. Headless sessions skip it and rely on the pull-model
|
||||
3. **Do not sweep yourself.** Killing orphans is the hook's job (it runs before
|
||||
you, at SessionStart, when no other session activity is live).
|
||||
4. **On an event** (`New inter-session message in inbox: <name>`), read
|
||||
`.agents/inbox/` and handle the message per `inter-session-peer-discipline`.
|
||||
`.agents/inbox/` and handle the message per `inter-session-messaging`.
|
||||
The Stop-hook also force-delivers any inbox messages at end of turn as a
|
||||
backstop, so nothing is lost if the monitor missed a beat.
|
||||
5. **Teardown is automatic.** The Monitor dies at session end. Do **not** add a
|
||||
@@ -95,7 +95,7 @@ for free on session end. Headless sessions skip it and rely on the pull-model
|
||||
per-inbox-path, not per-session). Known limitation; the deliberate invariant is
|
||||
"exactly one monitor per inbox per machine." If the first session is still
|
||||
active, its next Stop-hook turn still delivers inbox mail — only the real-time
|
||||
paging is lost until it re-raises. See `inter-session-peer-discipline`.
|
||||
paging is lost until it re-raises. See `inter-session-messaging`.
|
||||
- **Sweep over-match** → any *live* process whose command line contains both the
|
||||
sentinel `CLAUDE_INBOX_MONITOR` and the inbox path is killed. At a real
|
||||
SessionStart no agent/tool processes are running yet, so only the orphaned
|
||||
@@ -157,7 +157,7 @@ capability, but each session only ever touches its own project's inbox.
|
||||
hijacking one-shot scripted runs or consuming messages nobody processes.
|
||||
- **Delivery:** `pi.sendUserMessage(body, { deliverAs: "followUp", triggerTurn:
|
||||
true })` — paged into the transcript as a user message; the agent handles it
|
||||
per `inter-session-peer-discipline`. Partial writes (empty file) are skipped
|
||||
per `inter-session-messaging`. Partial writes (empty file) are skipped
|
||||
and retried next poll.
|
||||
- **Failure mode — cross-harness double-pickup:** CC and pi both sweep; the
|
||||
`.read/` move makes it first-wins, not double-processing. Two live pi sessions
|
||||
@@ -172,7 +172,7 @@ capability, but each session only ever touches its own project's inbox.
|
||||
`/clear` never fires SessionEnd.
|
||||
- **Don't raise more than one monitor.** The hook guarantees a clean slate before
|
||||
you raise.
|
||||
- **Don't handle message content here** — that's `inter-session-peer-discipline`.
|
||||
- **Don't handle message content here** — that's `inter-session-messaging`.
|
||||
- **Don't rely on this in headless** — use the pull model (Stop-hook + Notify).
|
||||
Active headless polling, if ever needed, is a separate cron Routine, not this
|
||||
skill.
|
||||
|
||||
Reference in New Issue
Block a user