@sjawhar/pi-envoy 10.17.0 → 10.17.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/envoy.js
CHANGED
|
@@ -34094,7 +34094,7 @@ var envoyToolSpecs = [
|
|
|
34094
34094
|
},
|
|
34095
34095
|
{
|
|
34096
34096
|
name: "envoy_publish",
|
|
34097
|
-
description: `Publish an Envoy message to any topic. ${DELIVERY_CONTRACT}`,
|
|
34097
|
+
description: `Publish an Envoy message to a notifications. topic. A role or built-in topic is delivered as its guide says; any other notifications. topic you name (a team topic such as notifications.team.deploy-squad.all) is live only: it reaches every subscribed session that holds its own NATS connection, yours included, and is not retained. A session the listener delivers to over a serve port, such as an OpenCode agent, receives nothing on such a topic and is told nothing (dispatch://INFRA-122). ${DELIVERY_CONTRACT}`,
|
|
34098
34098
|
arguments: (schema) => ({ topic: schema.string(), ...messageArguments(schema) }),
|
|
34099
34099
|
operation: EnvoyToolOperation.publish
|
|
34100
34100
|
},
|
|
@@ -32,7 +32,7 @@ dispatch search --query 'reviewer threads OR review comments'
|
|
|
32
32
|
## Design in the spec
|
|
33
33
|
|
|
34
34
|
- A design conversation with a person, or the plan that follows it, uses `skill://dispatch-brainstorming`. Read it before your first design question, the spec, or the plan. It replaces superpowers' `brainstorming` and `writing-plans` here, also when the user names one of them.
|
|
35
|
-
- Before a spec's first version and each approval request, get a fresh read-only subagent to check it. On Oh My Pi, use `task(agent="scout")`. Elsewhere, use the host's read-only agent. It checks the spec against the code, the human's words and the command output that its claims rest on. Resolve what it flags.
|
|
35
|
+
- Before a spec's first version and each approval request, get a fresh read-only subagent to check it. On Oh My Pi, use `task(agent="scout")`. Elsewhere, use the host's read-only agent. It checks the spec against the code, the human's words and the command output that its claims rest on. Scout has no shell: save that Dispatch, gh and git output to files first and give it their paths. Resolve what it flags.
|
|
36
36
|
- A Legion architect's own issue spec follows `skill://legion-architect`. Its fresh reader in that Legion session is the Legion plugin's `plan-gap-analyst` agent.
|
|
37
37
|
|
|
38
38
|
## Load the full skill before you write
|
|
@@ -133,10 +133,23 @@ top-level sessions are running). Then your messages carry no sender either, so s
|
|
|
133
133
|
in the message body. An empty address is deliberate — being handed an unrelated live session
|
|
134
134
|
would send your peers to an agent that never spawned you.
|
|
135
135
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
136
|
+
Whether a publish reaches a session turns on where that session takes its deliveries, not on
|
|
137
|
+
whether the topic is a built-in one or your own. A session that holds its own NATS connection —
|
|
138
|
+
every Oh My Pi session, and a Claude Code one — receives every message published on a subject it
|
|
139
|
+
subscribes to, whoever the source: its own publish, and a subagent's publish to a topic the
|
|
140
|
+
session that spawned you subscribes to, included. The listener skips its push to such a session
|
|
141
|
+
entirely, so the push path's skip of the source session never decides anything for it, and a
|
|
142
|
+
topic the stream retains and a team topic that travels live (below) behave alike here. The
|
|
143
|
+
session whose own publish does not come back is one the listener delivers to by push, one
|
|
144
|
+
registered with a serve port such as the OpenCode plugin; such a session receives no team topic
|
|
145
|
+
at all, since it holds no NATS subscription of its own.
|
|
146
|
+
|
|
147
|
+
A role lane is the case that needs the `agent://` hop, because a role is not a subject its holder
|
|
148
|
+
subscribes to: the listener resolves the live holder and forwards the message to it, and drops
|
|
149
|
+
the message when that holder is the session the message names as its source. Inside a `task`
|
|
150
|
+
subagent that source is the session that spawned you, so a publish to a role your parent holds is
|
|
151
|
+
accepted, answers with that holder, and reaches nobody — `envoy_publish` says so in its answer.
|
|
152
|
+
Use a `write` to the parent's `agent://` address for that one hop. `envoy_send` to any other
|
|
140
153
|
session, including a reply, is unaffected.
|
|
141
154
|
|
|
142
155
|
### Delivery capabilities
|
|
@@ -180,6 +193,16 @@ a warning naming the spelling Envoy publishes (`acme.site_io` for `acme/site.io`
|
|
|
180
193
|
that one instead. A token after the repository that is not a GitHub topic kind (`checks` in
|
|
181
194
|
`acme.widgets.checks.>`) draws a warning naming the kinds.
|
|
182
195
|
|
|
196
|
+
## Team topics
|
|
197
|
+
|
|
198
|
+
Any `notifications.` topic that no built-in source owns is yours to name: a group of sessions
|
|
199
|
+
subscribes to `notifications.team.deploy-squad.>`, and any of them publishes there with
|
|
200
|
+
`envoy_publish(topic="notifications.team.deploy-squad.all", message=...)`. Such a topic travels
|
|
201
|
+
live, as a role does: it reaches the sessions subscribed when it is published, the publisher
|
|
202
|
+
itself included when it subscribes, it is not retained, and a session that subscribes later does
|
|
203
|
+
not receive earlier messages. A topic outside `notifications.` is refused. Use a role for one
|
|
204
|
+
owner, and `envoy_send` for one session.
|
|
205
|
+
|
|
183
206
|
## Roles
|
|
184
207
|
|
|
185
208
|
Publish to a role; do not subscribe as its holder. A successful `envoy_publish` to a role returns
|