@sjawhar/pi-legion 8.14.0 → 8.14.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/legion.js +3 -3
- package/dist/skills/legion-architect/SKILL.md +35 -18
- package/package.json +1 -1
package/dist/legion.js
CHANGED
|
@@ -14020,7 +14020,7 @@ var dispatchToolSpecs = [
|
|
|
14020
14020
|
{
|
|
14021
14021
|
name: "dispatch_issue",
|
|
14022
14022
|
example: { project: "DSP", title: "Native workspace" },
|
|
14023
|
-
description: "Create a native Dispatch issue for newly tracked work. Search first with dispatch search; if potentially duplicate issues exist, this returns 409 POSSIBLE_DUPLICATE unless --force is set after reading them. " + "A spec holding an ask block whose body breaks its content rule (one or more question paragraphs, then at most one bullet list of options, last) is refused with 400 INVALID_ASK_BLOCK. " + `Do not use it when an existing issue already covers the work; read or update that issue instead. ${ISSUE_REFERENCE}`,
|
|
14023
|
+
description: "Create a native Dispatch issue for newly tracked work. Search first with dispatch search; if potentially duplicate issues exist, this returns 409 POSSIBLE_DUPLICATE unless --force is set after reading them. " + "When passing a spec, before calling, have a fresh read-only reader check it against the code and the human's words, then resolve every finding; a Legion architect uses `plan-gap-analyst`. " + "A spec holding an ask block whose body breaks its content rule (one or more question paragraphs, then at most one bullet list of options, last) is refused with 400 INVALID_ASK_BLOCK. " + `Do not use it when an existing issue already covers the work; read or update that issue instead. ${ISSUE_REFERENCE}`,
|
|
14024
14024
|
arguments: (z2) => ({
|
|
14025
14025
|
project: z2.string().describe("Project key for the new issue."),
|
|
14026
14026
|
title: z2.string({ max: ISSUE_TITLE_MAX }).describe("Concise issue title, at most 1,000 characters."),
|
|
@@ -14286,7 +14286,7 @@ var dispatchToolSpecs = [
|
|
|
14286
14286
|
{
|
|
14287
14287
|
name: "dispatch_request_approval",
|
|
14288
14288
|
example: { issue: "DSP-1", summary: "A live sync replaces the nightly export." },
|
|
14289
|
-
description: "Ask a human to approve a document at its current version. Opens an approval ask (Approve / " + "Request changes) in the human's Inbox whose question names the document and version, " + "followed by the summary; the answer pins a review to that version and arrives as " + "artifact.approved or artifact.changes_requested. An open request follows the document: a " + "later version moves it to that version and leaves it waiting on you, as a human's reply in " + "its thread does. Only the first move since the request was opened or handed back sends an " + "event, and never to the session whose version made it; dispatch doc-read shows whom it " + "waits on. Once the revision is complete and " + HUMAN_AGREED_TO_DOCUMENT + ", call this again to hand that same Inbox row back. The request carries nothing new. A " + "call while it already waits on the human hands nothing back: the same summary changes " + "nothing, and a different one is refused, since it would rewrite the card the human is " + "reading. Approve and Request changes each close the request, so the next call opens a new " + "one. Call it once per revision, when the revision is complete, never after each edit. An " + "approval goes stale when the document changes after it: request approval again once that " + "revision is complete and " + HUMAN_AGREED_TO_DOCUMENT + ". A new version of a Legion root spec closes its armed design gate until a human approves " + "it. " + "Refused, with nothing sent, while the document holds an open decision block, even when a " + "human asked for approval: the refusal names each block; ask the human to answer or waive " + "it first. " + OWNER_REFERENCE,
|
|
14289
|
+
description: "Ask a human to approve a document at its current version. Before calling, have a fresh read-only reader check the spec against the code and the human's words, then resolve every finding; a Legion architect uses `plan-gap-analyst`. Opens an approval ask (Approve / " + "Request changes) in the human's Inbox whose question names the document and version, " + "followed by the summary; the answer pins a review to that version and arrives as " + "artifact.approved or artifact.changes_requested. An open request follows the document: a " + "later version moves it to that version and leaves it waiting on you, as a human's reply in " + "its thread does. Only the first move since the request was opened or handed back sends an " + "event, and never to the session whose version made it; dispatch doc-read shows whom it " + "waits on. Once the revision is complete and " + HUMAN_AGREED_TO_DOCUMENT + ", call this again to hand that same Inbox row back. The request carries nothing new. A " + "call while it already waits on the human hands nothing back: the same summary changes " + "nothing, and a different one is refused, since it would rewrite the card the human is " + "reading. Approve and Request changes each close the request, so the next call opens a new " + "one. Call it once per revision, when the revision is complete, never after each edit. An " + "approval goes stale when the document changes after it: request approval again once that " + "revision is complete and " + HUMAN_AGREED_TO_DOCUMENT + ". A new version of a Legion root spec closes its armed design gate until a human approves " + "it. " + "Refused, with nothing sent, while the document holds an open decision block, even when a " + "human asked for approval: the refusal names each block; ask the human to answer or waive " + "it first. " + OWNER_REFERENCE,
|
|
14290
14290
|
arguments: (z2) => ({
|
|
14291
14291
|
issue: z2.string().describe(ISSUE_REFERENCE).optional(),
|
|
14292
14292
|
project: z2.string().describe("Project key owning the document.").optional(),
|
|
@@ -15244,7 +15244,7 @@ function onEnvoyRoleRegained(listener) {
|
|
|
15244
15244
|
// package.json
|
|
15245
15245
|
var package_default = {
|
|
15246
15246
|
name: "@sjawhar/pi-legion",
|
|
15247
|
-
version: "8.14.
|
|
15247
|
+
version: "8.14.2",
|
|
15248
15248
|
license: "Apache-2.0",
|
|
15249
15249
|
type: "module",
|
|
15250
15250
|
omp: {
|
|
@@ -97,20 +97,36 @@ not request approval and do not wait for `design-approved`; the gate opens at re
|
|
|
97
97
|
sub-architect on a child issue has no policy line and never runs the gate: the root approval
|
|
98
98
|
covers the tree. When the gate is armed, run this exact sequence **before the tree's work starts**:
|
|
99
99
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
EOF
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
100
|
+
1. Extend the primary document in place:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
dispatch doc-edit --issue <root issue> --ops-json-file - <<'EOF'
|
|
104
|
+
...
|
|
105
|
+
EOF
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
2. Settle its decision blocks as [Approval of a spec](skill://dispatch/SKILL.md#approval-of-a-spec)
|
|
109
|
+
says.
|
|
110
|
+
3. Run `task(agent="plan-gap-analyst")` with the current root spec, the code and command output
|
|
111
|
+
it relies on, and the human's words; resolve every finding in the root spec.
|
|
112
|
+
4. Request approval:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
dispatch request-approval --issue <root issue> --summary '<what the human is approving>'
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The primary document is the default; the command prints `Approval requested for spec.md
|
|
119
|
+
(document id <UUID>) at version <N> …`.
|
|
120
|
+
5. Register that document version with the daemon:
|
|
121
|
+
|
|
122
|
+
```ts
|
|
123
|
+
legion({
|
|
124
|
+
op: "register_gate",
|
|
125
|
+
issue: "<root issue>",
|
|
126
|
+
artifactId: "<UUID>", // the document id the request printed
|
|
127
|
+
version: <N>, // the version the human is asked to approve
|
|
128
|
+
})
|
|
129
|
+
```
|
|
114
130
|
|
|
115
131
|
The decision blocks come first: settle every one as
|
|
116
132
|
[Approval of a spec](skill://dispatch/SKILL.md#approval-of-a-spec) says before you request approval;
|
|
@@ -142,9 +158,10 @@ read covers a human who answers the question between your `dispatch request-appr
|
|
|
142
158
|
yourself.
|
|
143
159
|
|
|
144
160
|
Then park. Do not release a wave until a later delivered wake shows `design-approved` on the root;
|
|
145
|
-
the daemon starts no phase in the tree before then. On `design-changes-requested`, revise the
|
|
146
|
-
|
|
147
|
-
|
|
161
|
+
the daemon starts no phase in the tree before then. On `design-changes-requested`, (1) revise the
|
|
162
|
+
spec as the human's reason asks, (2) run `task(agent="plan-gap-analyst")` with that new version,
|
|
163
|
+
the code and command output it relies on, and the human's words, then resolve every finding, and
|
|
164
|
+
(3) request approval again and stay parked.
|
|
148
165
|
|
|
149
166
|
**After approval, the root spec changes only when what the tree delivers, or a decision a human
|
|
150
167
|
settled, changes.** Approval is pinned to the spec version: any new version of the root spec closes
|
|
@@ -152,7 +169,7 @@ the gate again with no wake (you made the edit, or the `artifact.version` event
|
|
|
152
169
|
you). So edit an approved root spec only when its Summary, its Acceptance, the tree's scope, or a
|
|
153
170
|
decision a human settled in one of its decision blocks changes. Such a change is a point the human
|
|
154
171
|
has not agreed to: put the problem behind it to them as its own decision block, with its evidence,
|
|
155
|
-
at the end of the section it changes,
|
|
172
|
+
at the end of the section it changes, then repeat steps 2 through 5 once they have answered
|
|
156
173
|
it. Release no new wave until the next `design-approved` arrives — work already in flight
|
|
157
174
|
continues. Every merger's `READY` in the tree is refused until a human approves
|
|
158
175
|
the latest version. A settled decision is the human's. A plan that would overturn one goes back to
|