@sjawhar/opencode-legion-envoy 3.1.0 → 3.1.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/src/server.js
CHANGED
|
@@ -14032,7 +14032,7 @@ var dispatchToolSpecs = [
|
|
|
14032
14032
|
ask: "01234567-0000-4000-8000-000000000001",
|
|
14033
14033
|
question: "Ship the revised plan?"
|
|
14034
14034
|
},
|
|
14035
|
-
description: "Edit an open question in place. Use it to correct or refine the same decision; retract the " + "old ask and open a new one when the decision itself changes. Previous text remains in the " + "event log. Only the asking session can edit it; answered or resolved asks cannot be edited. " + "An ask that lives as an `ask` block in a document is written in the document too, changing " + "only the fields you name - pass urgency alone and the question's wording, formatting, links " + "and comment anchors are untouched - so the edit writes a document version and closes a " + "spec's design gate until that version is " +
|
|
14035
|
+
description: "Edit an open question in place. Use it to correct or refine the same decision; retract the " + "old ask and open a new one when the decision itself changes. Previous text remains in the " + "event log. Only the asking session can edit it; answered or resolved asks cannot be edited. " + "An ask that lives as an `ask` block in a document is written in the document too, changing " + "only the fields you name - pass urgency alone and the question's wording, formatting, links " + "and comment anchors are untouched - so the edit writes a document version and closes a " + "spec's design gate until that version is " + "approved; text the block cannot carry back unchanged is refused, naming the field - an " + 'option label containing ": ", the separator between a label and its description, is one ' + "example.",
|
|
14036
14036
|
arguments: (z2) => ({
|
|
14037
14037
|
ask: z2.string().describe("Ask id (uuid); an 8+ hex prefix unique among this session's own open asks works too."),
|
|
14038
14038
|
question: z2.string({ max: ASK_QUESTION_MAX }).describe(`Replacement decision question, at most ${ASK_QUESTION_MAX} characters.`).optional(),
|
package/package.json
CHANGED
package/skills/dispatch/SKILL.md
CHANGED
|
@@ -452,8 +452,8 @@ is rewritten, so anchors inside the text you replaced move as they would for any
|
|
|
452
452
|
writes a new version, which on a spec awaiting approval closes the design gate until the new version is approved. Editing the block
|
|
453
453
|
with `dispatch_doc_edit` works too and is the way to change anything else about it, including adding formatting to a question.
|
|
454
454
|
Re-sending a field unchanged rewrites nothing, so retrying the whole ask is safe.
|
|
455
|
-
|
|
456
|
-
|
|
455
|
+
Text the block cannot carry back unchanged is refused outright, naming the field and writing nothing - an option label containing
|
|
456
|
+
`": "`, the separator between a label and its description, is one example of text that cannot survive the round trip. Blank lines separate paragraphs;
|
|
457
457
|
a single newline is kept as a line break.
|
|
458
458
|
|
|
459
459
|
An ask stays open until a human answers, unless its question no longer needs that answer. Retract a moot or superseded question, or
|
|
@@ -603,6 +603,28 @@ This publishes your phase's completion to the architect's role and clears the da
|
|
|
603
603
|
record of this issue's active phase. Do not add pipeline labels, run a controller loop, or
|
|
604
604
|
invent a different completion protocol — this is the whole contract.
|
|
605
605
|
|
|
606
|
+
**A refused completion is information, not a retry loop.** The daemon attributes your report to
|
|
607
|
+
the run whose task you took, and answers with what it found. What each answer carries, and what to
|
|
608
|
+
do:
|
|
609
|
+
|
|
610
|
+
- `HANDOFF_STALE_GENERATION` — names the issue, the run it is on, and the run your completion
|
|
611
|
+
reported. The issue has moved to a newer run since your task was given, so the work you just
|
|
612
|
+
reported belongs to a run that is over. Nothing you can repeat changes that: stop, push nothing
|
|
613
|
+
further, and tell the architect what you completed and that its run has been superseded. A task
|
|
614
|
+
for the current run arrives in this same session if the phase still needs you.
|
|
615
|
+
- `HANDOFF_NOT_CURRENT_PHASE` — names your role, the issue, and the phase it is in now. The issue
|
|
616
|
+
has left your phase; report to the architect rather than completing again.
|
|
617
|
+
- `HANDOFF_NO_RUN` — names neither: it says this claim has taken no task, so the daemon cannot
|
|
618
|
+
tell which run you are reporting. Your pane is completing outside any assignment. Say so to the
|
|
619
|
+
architect; do not re-run the phase.
|
|
620
|
+
- `HANDOFF_ALREADY_RECORDED` — names your role, the phase, the review round and the commit. This
|
|
621
|
+
exact call was received before, and its first answer stands — accepted, or one of the refusals
|
|
622
|
+
above. Sending it again changes nothing; if you did not see that first answer, tell the
|
|
623
|
+
architect so and quote this one.
|
|
624
|
+
|
|
625
|
+
Quote the answer verbatim in what you tell the architect: with the run and phase it names, the
|
|
626
|
+
difference between "my work is lost" and "my work belongs to the previous run" is visible.
|
|
627
|
+
|
|
606
628
|
**Stay in this session afterward.** Your process does not exit when your phase completes;
|
|
607
629
|
it goes idle in its pane, and after `worker_idle_retire_seconds` (default 600 s) idle with no
|
|
608
630
|
active phase the daemon retires it — your next assignment resumes this same session from its
|