@sjawhar/opencode-legion-envoy 1.33.0 → 1.34.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.
@@ -13809,21 +13809,22 @@ var dispatchToolSpecs = [
13809
13809
  },
13810
13810
  {
13811
13811
  name: "dispatch_issue_update",
13812
- 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 route. 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}`,
13812
+ 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}`,
13813
13813
  arguments: (z) => ({
13814
13814
  issue: z.string().describe(ISSUE_REFERENCE),
13815
13815
  status: z.enum(ISSUE_STATUSES).describe("New lifecycle status.").optional(),
13816
13816
  title: z.string({ min: 1 }).describe("Replacement title.").optional(),
13817
13817
  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(),
13818
13818
  external_links: z.array(z.string({ min: 1 })).describe("URLs to link; merged into the issue's existing external links by URL.").optional(),
13819
- route: z.string().describe("Route the issue to role:<name> or session:<id>; an empty string clears it.").optional()
13819
+ route: z.string().describe("Route the issue to role:<name> or session:<id>; an empty string clears it.").optional(),
13820
+ parent: z.string().describe("Parent issue key in the same project; an empty string clears the parent.").optional()
13820
13821
  }),
13821
13822
  validation: {
13822
13823
  check: (value) => {
13823
13824
  const input = value;
13824
- return typeof input.status === "string" || typeof input.title === "string" || Array.isArray(input.labels) || Array.isArray(input.external_links) || typeof input.route === "string";
13825
+ 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";
13825
13826
  },
13826
- message: "Issue update requires at least one field besides issue: status, title, labels, external_links, or route."
13827
+ message: "Issue update requires at least one field besides issue: status, title, labels, external_links, route, or parent."
13827
13828
  },
13828
13829
  strict: true
13829
13830
  },
@@ -16020,6 +16021,7 @@ async function executeDispatchTool(input) {
16020
16021
  const status = optionalString(args, "status");
16021
16022
  const title = optionalString(args, "title");
16022
16023
  const route = optionalString(args, "route");
16024
+ const parent = optionalString(args, "parent");
16023
16025
  const labels = Array.isArray(args.labels) ? args.labels : undefined;
16024
16026
  const requestedLinks = Array.isArray(args.external_links) ? [...new Set(args.external_links)] : undefined;
16025
16027
  let newLinks = [];
@@ -16032,6 +16034,7 @@ async function executeDispatchTool(input) {
16032
16034
  ...title === undefined ? {} : { title },
16033
16035
  ...labels === undefined ? {} : { labels },
16034
16036
  ...route === undefined ? {} : { route },
16037
+ ...parent === undefined ? {} : { parent: parent === "" ? null : parent },
16035
16038
  ...requestedLinks === undefined ? {} : { external_links: [...before.external_links, ...newLinks.map((url) => ({ url }))] },
16036
16039
  actor
16037
16040
  });
@@ -16043,7 +16046,8 @@ async function executeDispatchTool(input) {
16043
16046
  ...requestedLinks === undefined ? [] : [
16044
16047
  newLinks.length === 0 ? `already linked ${requestedLinks.join(", ")} ${linkCount}` : `linked ${newLinks.join(", ")} ${linkCount}`
16045
16048
  ],
16046
- ...route === undefined ? [] : [after.route === null ? "route cleared" : `route ${after.route}`]
16049
+ ...route === undefined ? [] : [after.route === null ? "route cleared" : `route ${after.route}`],
16050
+ ...parent === undefined ? [] : [after.parent === null ? "parent cleared" : `parent -> ${after.parent}`]
16047
16051
  ];
16048
16052
  return {
16049
16053
  text: `${after.key}: ${changes.join("; ")} ${notSubscribed(issueTopic(after.key))}`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sjawhar/opencode-legion-envoy",
3
- "version": "1.33.0",
3
+ "version": "1.34.0",
4
4
  "type": "module",
5
5
  "main": "dist/src/server.js",
6
6
  "exports": {
@@ -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