@sjawhar/pi-legion-envoy 1.44.0 → 1.46.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/envoy.js +9 -5
- package/dist/legion.js +5 -4
- package/dist/skills/dispatch/SKILL.md +2 -1
- package/package.json +1 -1
package/dist/envoy.js
CHANGED
|
@@ -29906,21 +29906,22 @@ var dispatchToolSpecs = [
|
|
|
29906
29906
|
},
|
|
29907
29907
|
{
|
|
29908
29908
|
name: "dispatch_issue_update",
|
|
29909
|
-
description: "Update an existing issue: move its lifecycle status, retitle it, replace its labels, link a URL " + "(the pull request that delivers it, a run, a document), or set its
|
|
29909
|
+
description: "Update an existing issue: move its lifecycle status, retitle it, replace its labels, link a URL " + "(the pull request that delivers it, a run, a document), set its route, or set or clear its parent. " + "Status is one of " + `${ISSUE_STATUSES.join(", ")}; outside Legion, move it yourself as the work advances; inside ` + "Legion the daemon moves it. external_links are " + "merged into the issue's existing links by URL, so linking the pull request you just opened " + "keeps every earlier link. Priority is the human's and is not settable here. At least one " + `field besides issue is required. ${ISSUE_REFERENCE}`,
|
|
29910
29910
|
arguments: (z) => ({
|
|
29911
29911
|
issue: z.string().describe(ISSUE_REFERENCE),
|
|
29912
29912
|
status: z.enum(ISSUE_STATUSES).describe("New lifecycle status.").optional(),
|
|
29913
29913
|
title: z.string({ min: 1 }).describe("Replacement title.").optional(),
|
|
29914
29914
|
labels: z.array(z.string({ min: 1, max: 40 }), { max: 20 }).describe("Replacement label set, at most 20 labels of up to 40 characters; replaces every existing label.").optional(),
|
|
29915
29915
|
external_links: z.array(z.string({ min: 1 })).describe("URLs to link; merged into the issue's existing external links by URL.").optional(),
|
|
29916
|
-
route: z.string().describe("Route the issue to role:<name> or session:<id>; an empty string clears it.").optional()
|
|
29916
|
+
route: z.string().describe("Route the issue to role:<name> or session:<id>; an empty string clears it.").optional(),
|
|
29917
|
+
parent: z.string().describe("Parent issue key in the same project; an empty string clears the parent.").optional()
|
|
29917
29918
|
}),
|
|
29918
29919
|
validation: {
|
|
29919
29920
|
check: (value) => {
|
|
29920
29921
|
const input = value;
|
|
29921
|
-
return typeof input.status === "string" || typeof input.title === "string" || Array.isArray(input.labels) || Array.isArray(input.external_links) || typeof input.route === "string";
|
|
29922
|
+
return typeof input.status === "string" || typeof input.title === "string" || Array.isArray(input.labels) || Array.isArray(input.external_links) || typeof input.route === "string" || typeof input.parent === "string";
|
|
29922
29923
|
},
|
|
29923
|
-
message: "Issue update requires at least one field besides issue: status, title, labels, external_links, or
|
|
29924
|
+
message: "Issue update requires at least one field besides issue: status, title, labels, external_links, route, or parent."
|
|
29924
29925
|
},
|
|
29925
29926
|
strict: true
|
|
29926
29927
|
},
|
|
@@ -33083,6 +33084,7 @@ async function executeDispatchTool(input) {
|
|
|
33083
33084
|
const status = optionalString(args, "status");
|
|
33084
33085
|
const title = optionalString(args, "title");
|
|
33085
33086
|
const route = optionalString(args, "route");
|
|
33087
|
+
const parent = optionalString(args, "parent");
|
|
33086
33088
|
const labels = Array.isArray(args.labels) ? args.labels : undefined;
|
|
33087
33089
|
const requestedLinks = Array.isArray(args.external_links) ? [...new Set(args.external_links)] : undefined;
|
|
33088
33090
|
let newLinks = [];
|
|
@@ -33095,6 +33097,7 @@ async function executeDispatchTool(input) {
|
|
|
33095
33097
|
...title === undefined ? {} : { title },
|
|
33096
33098
|
...labels === undefined ? {} : { labels },
|
|
33097
33099
|
...route === undefined ? {} : { route },
|
|
33100
|
+
...parent === undefined ? {} : { parent: parent === "" ? null : parent },
|
|
33098
33101
|
...requestedLinks === undefined ? {} : { external_links: [...before.external_links, ...newLinks.map((url) => ({ url }))] },
|
|
33099
33102
|
actor
|
|
33100
33103
|
});
|
|
@@ -33106,7 +33109,8 @@ async function executeDispatchTool(input) {
|
|
|
33106
33109
|
...requestedLinks === undefined ? [] : [
|
|
33107
33110
|
newLinks.length === 0 ? `already linked ${requestedLinks.join(", ")} ${linkCount}` : `linked ${newLinks.join(", ")} ${linkCount}`
|
|
33108
33111
|
],
|
|
33109
|
-
...route === undefined ? [] : [after.route === null ? "route cleared" : `route ${after.route}`]
|
|
33112
|
+
...route === undefined ? [] : [after.route === null ? "route cleared" : `route ${after.route}`],
|
|
33113
|
+
...parent === undefined ? [] : [after.parent === null ? "parent cleared" : `parent -> ${after.parent}`]
|
|
33110
33114
|
];
|
|
33111
33115
|
return {
|
|
33112
33116
|
text: `${after.key}: ${changes.join("; ")} ${notSubscribed(issueTopic(after.key))}`,
|
package/dist/legion.js
CHANGED
|
@@ -29180,21 +29180,22 @@ var dispatchToolSpecs = [
|
|
|
29180
29180
|
},
|
|
29181
29181
|
{
|
|
29182
29182
|
name: "dispatch_issue_update",
|
|
29183
|
-
description: "Update an existing issue: move its lifecycle status, retitle it, replace its labels, link a URL " + "(the pull request that delivers it, a run, a document), or set its
|
|
29183
|
+
description: "Update an existing issue: move its lifecycle status, retitle it, replace its labels, link a URL " + "(the pull request that delivers it, a run, a document), set its route, or set or clear its parent. " + "Status is one of " + `${ISSUE_STATUSES.join(", ")}; outside Legion, move it yourself as the work advances; inside ` + "Legion the daemon moves it. external_links are " + "merged into the issue's existing links by URL, so linking the pull request you just opened " + "keeps every earlier link. Priority is the human's and is not settable here. At least one " + `field besides issue is required. ${ISSUE_REFERENCE}`,
|
|
29184
29184
|
arguments: (z) => ({
|
|
29185
29185
|
issue: z.string().describe(ISSUE_REFERENCE),
|
|
29186
29186
|
status: z.enum(ISSUE_STATUSES).describe("New lifecycle status.").optional(),
|
|
29187
29187
|
title: z.string({ min: 1 }).describe("Replacement title.").optional(),
|
|
29188
29188
|
labels: z.array(z.string({ min: 1, max: 40 }), { max: 20 }).describe("Replacement label set, at most 20 labels of up to 40 characters; replaces every existing label.").optional(),
|
|
29189
29189
|
external_links: z.array(z.string({ min: 1 })).describe("URLs to link; merged into the issue's existing external links by URL.").optional(),
|
|
29190
|
-
route: z.string().describe("Route the issue to role:<name> or session:<id>; an empty string clears it.").optional()
|
|
29190
|
+
route: z.string().describe("Route the issue to role:<name> or session:<id>; an empty string clears it.").optional(),
|
|
29191
|
+
parent: z.string().describe("Parent issue key in the same project; an empty string clears the parent.").optional()
|
|
29191
29192
|
}),
|
|
29192
29193
|
validation: {
|
|
29193
29194
|
check: (value) => {
|
|
29194
29195
|
const input = value;
|
|
29195
|
-
return typeof input.status === "string" || typeof input.title === "string" || Array.isArray(input.labels) || Array.isArray(input.external_links) || typeof input.route === "string";
|
|
29196
|
+
return typeof input.status === "string" || typeof input.title === "string" || Array.isArray(input.labels) || Array.isArray(input.external_links) || typeof input.route === "string" || typeof input.parent === "string";
|
|
29196
29197
|
},
|
|
29197
|
-
message: "Issue update requires at least one field besides issue: status, title, labels, external_links, or
|
|
29198
|
+
message: "Issue update requires at least one field besides issue: status, title, labels, external_links, route, or parent."
|
|
29198
29199
|
},
|
|
29199
29200
|
strict: true
|
|
29200
29201
|
},
|
|
@@ -122,9 +122,10 @@ status is." Waiting for the deploy lane is not a status and is never announced.
|
|
|
122
122
|
human's: set it on creation only when their intent is clear, and change it only on their word.
|
|
123
123
|
|
|
124
124
|
```ts
|
|
125
|
-
// PATCH /api/v1/issues/{key} — status, title, labels, external_links (merged by URL), route
|
|
125
|
+
// PATCH /api/v1/issues/{key} — status, title, labels, external_links (merged by URL), route, parent
|
|
126
126
|
dispatch_issue_update({ issue: "AGENTC-175", status: "testing" })
|
|
127
127
|
dispatch_issue_update({ issue: "AGENTC-175", external_links: ["https://github.com/owner/repo/pull/7"] })
|
|
128
|
+
dispatch_issue_update({ issue: "AGENTC-175", parent: "AGENTC-170" }) // same-project key; "" clears the parent
|
|
128
129
|
```
|
|
129
130
|
|
|
130
131
|
Link the pull request that delivers the issue in `external_links` when you open it; the issue page
|