@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
- Your own `envoy_publish` never reaches the agent that spawned you. The listener delivers nothing
137
- to the session a message names as its source, and inside a subagent that source is your parent,
138
- so a publish to a role it holds — or to any topic it subscribes to — is accepted and delivered to
139
- nobody. Use a `write` to its `agent://` address for that one hop. `envoy_send` to any other
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sjawhar/pi-envoy",
3
- "version": "10.17.0",
3
+ "version": "10.17.2",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "omp": {