@sjawhar/opencode-legion-envoy 1.13.0 → 1.14.0
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 +11 -4
- package/package.json +1 -1
- package/skills/dispatch/SKILL.md +13 -9
package/dist/src/server.js
CHANGED
|
@@ -13594,6 +13594,11 @@ var askEventPayloadFields = {
|
|
|
13594
13594
|
question: string2().optional(),
|
|
13595
13595
|
options: array(object({ label: string2().optional() })).nullish(),
|
|
13596
13596
|
answer: object({ selected: array(string2()).nullish(), text: string2().nullish() }).nullish(),
|
|
13597
|
+
anchor: object({
|
|
13598
|
+
quote: string2().optional(),
|
|
13599
|
+
mark_id: string2().optional(),
|
|
13600
|
+
block_id: string2().nullable().optional()
|
|
13601
|
+
}).passthrough().nullish(),
|
|
13597
13602
|
resolution: object({
|
|
13598
13603
|
kind: _enum2(["retracted", "resolved"]).optional(),
|
|
13599
13604
|
reason: string2().optional(),
|
|
@@ -13621,12 +13626,14 @@ var AskEditedEventPayloadSchema = object({
|
|
|
13621
13626
|
var CommentEventPayloadSchema = object({
|
|
13622
13627
|
id: string2().optional(),
|
|
13623
13628
|
artifact_name: string2().optional(),
|
|
13629
|
+
project_key: string2().optional(),
|
|
13630
|
+
artifact_slug: string2().optional(),
|
|
13624
13631
|
body: string2().optional(),
|
|
13625
13632
|
reply_to: string2().nullish(),
|
|
13626
13633
|
ask_id: string2().nullish(),
|
|
13627
13634
|
ask_question: string2().optional(),
|
|
13628
13635
|
ask_state: _enum2(["open", "answered", "resolved"]).optional(),
|
|
13629
|
-
anchor: object({ quote: string2().optional() }).nullish(),
|
|
13636
|
+
anchor: object({ block_id: string2().nullable().optional(), quote: string2().optional() }).nullish(),
|
|
13630
13637
|
suggestion: object({ replace_with: string2().optional() }).nullish(),
|
|
13631
13638
|
author: object({ kind: string2(), id: string2() }).optional(),
|
|
13632
13639
|
created_at: string2().optional()
|
|
@@ -13758,7 +13765,7 @@ var dispatchToolSpecs = [
|
|
|
13758
13765
|
},
|
|
13759
13766
|
{
|
|
13760
13767
|
name: "dispatch_ask",
|
|
13761
|
-
description: "Open a durable, answerable decision or human to-do on an issue or project document. Do not use it for a status update or discussion; " + "use dispatch_message instead. Use kind: action for a to-do a human must complete; it has fixed Done / Can't answers. " + "Anchor a document question, thread reply_to/reply_to_ask, or cite a dispatch:// " +
|
|
13768
|
+
description: "Open a durable, answerable decision or human to-do on an issue or project document. Do not use it for a status update or discussion; " + "use dispatch_message instead. Use kind: action for a to-do a human must complete; it has fixed Done / Can't answers. " + "Anchor a document question, thread reply_to/reply_to_ask, or cite a dispatch:// " + 'reference \u2014 it must be answerable from its own text and anchor alone, never "see above". A quote anchor is pinned to its block. Question is at most 800 ' + `characters and has at most 8 options. ${OWNER_REFERENCE}`,
|
|
13762
13769
|
arguments: (z) => ({
|
|
13763
13770
|
issue: z.string().describe(ISSUE_REFERENCE).optional(),
|
|
13764
13771
|
project: z.string().describe("Project key owning the document.").optional(),
|
|
@@ -13812,7 +13819,7 @@ var dispatchToolSpecs = [
|
|
|
13812
13819
|
},
|
|
13813
13820
|
{
|
|
13814
13821
|
name: "dispatch_comment",
|
|
13815
|
-
description: "Add review feedback to an issue or project document quote, or reply to a question asked with dispatch_ask. " + "Do not use it for an exact replacement; use " + `dispatch_suggest instead. Body is at most 2,000 characters. ${OWNER_REFERENCE}`,
|
|
13822
|
+
description: "Add review feedback to an issue or project document quote, or reply to a question asked with dispatch_ask. " + "Do not use it for an exact replacement; use " + `dispatch_suggest instead. A quote anchor is pinned to its block. Body is at most 2,000 characters. ${OWNER_REFERENCE}`,
|
|
13816
13823
|
arguments: (z) => ({
|
|
13817
13824
|
issue: z.string().describe(ISSUE_REFERENCE).optional(),
|
|
13818
13825
|
project: z.string().describe("Project key owning the document.").optional(),
|
|
@@ -13821,7 +13828,7 @@ var dispatchToolSpecs = [
|
|
|
13821
13828
|
quote: z.string().describe("Optional exact quoted document text.").optional(),
|
|
13822
13829
|
occurrence: z.number({ int: true, min: 0 }).describe("Optional zero-based occurrence of quote.").optional(),
|
|
13823
13830
|
body: z.string({ max: 2000 }).describe("Review comment, at most 2,000 characters."),
|
|
13824
|
-
reply_to: z.string().describe("
|
|
13831
|
+
reply_to: z.string().describe("Full id of a comment to reply to; replying to any comment in a thread continues that " + "thread (an ask's clarification thread included).").optional(),
|
|
13825
13832
|
reply_to_ask: z.string().describe("Optional ask id to reply to, threading this comment under that question. Mutually " + "exclusive with reply_to.").optional()
|
|
13826
13833
|
}),
|
|
13827
13834
|
validation: documentOwnerValidation(true)
|
package/package.json
CHANGED
package/skills/dispatch/SKILL.md
CHANGED
|
@@ -127,8 +127,10 @@ recommendation and its reason last, in `question`. Never put file paths, line nu
|
|
|
127
127
|
numbers, document versions, or role tokens in the question; if the human needs that detail, anchor
|
|
128
128
|
the ask to the document passage instead. Apply the phone test from "Writing for the human" before
|
|
129
129
|
posting. Anchor a document question with `anchor: { artifact, quote, occurrence? }`; `occurrence`
|
|
130
|
-
is zero-based and selects a repeated quote
|
|
131
|
-
|
|
130
|
+
is zero-based and selects a repeated quote. A quote anchor is pinned to its lowest complete
|
|
131
|
+
containing block while retaining its quote as display text, so rewording the passage keeps it
|
|
132
|
+
attached; a quote spanning top-level blocks, and existing anchors without a block, stay readable
|
|
133
|
+
against their original document version if their quote disappears.
|
|
132
134
|
|
|
133
135
|
An ask must be answerable from its own text and its anchor alone. Anchor a question about a document passage with `anchor`; thread one
|
|
134
136
|
about a comment with `reply_to`; thread a follow-up on your own ask with `reply_to_ask`; cite anything else with a `dispatch://`
|
|
@@ -179,10 +181,11 @@ in its Conversation card and reply thread. Resolution is not an answer: it never
|
|
|
179
181
|
resolved. A human may reply to an open or answered ask; so may you, e.g. after finding the answer — use `reply_to_ask` on
|
|
180
182
|
`dispatch_comment` (mutually exclusive with `reply_to`).
|
|
181
183
|
|
|
182
|
-
A human
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
184
|
+
A human answers or asks back from the same field; a question-shaped free-text answer is offered as a clarification first. A human
|
|
185
|
+
reply while your ask is still open (the delivered `comment.created` carries `ask_state: open`) is a request for clarification, not
|
|
186
|
+
an answer: the human did not understand the question or needs more before choosing. The ask now waits on you in their Inbox. Answer
|
|
187
|
+
in the same thread with `dispatch_comment({ reply_to_ask })`, or reword the question itself with `dispatch_edit_ask` when the wording
|
|
188
|
+
was the problem; either puts the ask back in front of them. Do not open a second ask.
|
|
186
189
|
|
|
187
190
|
## Approval of a spec
|
|
188
191
|
|
|
@@ -289,9 +292,10 @@ dispatch_comment({ issue?, project?, artifact?, ref?, quote?, occurrence?, body,
|
|
|
289
292
|
|
|
290
293
|
It returns issue or project-document owner details plus `comment` and, for writes, `topic`.
|
|
291
294
|
`ref` names the owner (an issue or project-document reference) in place of `issue`/`project`.
|
|
292
|
-
`quote` requires `artifact`;
|
|
293
|
-
|
|
294
|
-
|
|
295
|
+
`quote` requires `artifact`; its anchor is pinned to the containing block while retaining the quote
|
|
296
|
+
for display. Omit both for a floating issue comment. A reply (`reply_to`/`reply_to_ask`) takes no
|
|
297
|
+
`quote`; it belongs to its parent's anchor. Reply to any comment in a thread; the server keeps
|
|
298
|
+
threads flat. A reply to a resolved thread reopens it. Use `reply_to_ask` to reply directly under a
|
|
295
299
|
question asked with `dispatch_ask`. Comments are edited only by their author from the dashboard. A
|
|
296
300
|
delivered `comment.created` event carries the comment `id`; reply to it with
|
|
297
301
|
`dispatch_comment({ reply_to: <id> })`.
|