@rallycry/conveyor-mcp 4.3.29 → 4.3.30

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.
@@ -615,6 +615,18 @@ var ConveyorConnection = class {
615
615
  }
616
616
  return result;
617
617
  }
618
+ /**
619
+ * Move a card under a new parent, or detach it with an explicit null.
620
+ * `parentTaskId` rides the rest-spread rather than a conditional one so a
621
+ * null survives the call — stripping it would silently no-op a detach.
622
+ */
623
+ setTaskParent(params) {
624
+ const { projectId, ...rest } = params;
625
+ return this.call("setProjectTaskParent", {
626
+ projectId: this.resolveProjectId(projectId),
627
+ ...rest
628
+ });
629
+ }
618
630
  updateSubtask(params) {
619
631
  const { projectId, ...rest } = params;
620
632
  return this.call("updateProjectSubtask", {
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConveyorConnection
4
- } from "./chunk-BKGMG2T3.js";
4
+ } from "./chunk-X3EHPZNH.js";
5
5
 
6
6
  // src/cli.ts
7
7
  import { createRequire } from "module";
@@ -760,11 +760,46 @@ var listSubtasksContract = defineToolContract({
760
760
  }
761
761
  }
762
762
  });
763
+ var SET_PARENT_ORDINAL = "Position among the new parent's children. Defaults to after every existing sibling. A detached card has no siblings to order against, so it only matters when you adopt.";
764
+ var SET_PARENT_WARNINGS = "The move is reported, never refused: a card that already has a pull request, live compute, a release, children of its own, or dependency edges that now cross packs comes back with a warning in the result. Its branch is NOT re-cut against the new parent's feature branch.";
765
+ var setTaskParentContract = defineToolContract({
766
+ name: "set_task_parent",
767
+ agent: {
768
+ description: `Adopt an EXISTING card into this card's pack, or eject one of this card's children. The card keeps its own chat, plan, and history \u2014 it moves under (or out from) the current card, inherits the board, and lands after the current children. To make a NEW child use create_subtask instead. ${SET_PARENT_WARNINGS}`,
769
+ fields: {
770
+ taskId: f.string({
771
+ desc: "Id, slug, or branch name of the card to move. Must live in this project."
772
+ }),
773
+ detach: f.optional(
774
+ f.boolean({
775
+ desc: "Eject the card from this pack instead of adopting it \u2014 it becomes a standalone card and stops following the parent's status. The card must already be a child of the current card."
776
+ })
777
+ ),
778
+ ordinal: f.optional(f.number({ desc: SET_PARENT_ORDINAL })),
779
+ followParentStatus: f.optional(f.boolean({ desc: AGENT_FOLLOW_PARENT_STATUS }))
780
+ }
781
+ },
782
+ mcp: {
783
+ description: `Re-parent an existing card: pass a parentTaskId to adopt it into that card's pack, or null to detach it into a standalone card. The card keeps its chat, plan, and history; adopting also moves it to the parent's board and orders it after the parent's existing children. Use create_subtask for a NEW child, and move_card to move a card to another PROJECT. Pass projectId to target a specific project; otherwise the configured default project is used. ${SET_PARENT_WARNINGS}`,
784
+ fields: {
785
+ projectId: mcpProjectId,
786
+ taskId: f.string({ desc: "Id or slug of the card to move" }),
787
+ parentTaskId: f.nullable(
788
+ f.string({
789
+ desc: "Id or slug of the new parent, or null to detach the card from its current parent. Must be in the same project, and can be neither the card itself nor one of its own descendants."
790
+ })
791
+ ),
792
+ ordinal: f.optional(f.number({ desc: SET_PARENT_ORDINAL })),
793
+ followParentStatus: f.optional(f.boolean({ desc: MCP_FOLLOW_PARENT_STATUS }))
794
+ }
795
+ }
796
+ });
763
797
  var subtasksContracts = [
764
798
  createSubtaskContract,
765
799
  updateSubtaskContract,
766
800
  deleteSubtaskContract,
767
- listSubtasksContract
801
+ listSubtasksContract,
802
+ setTaskParentContract
768
803
  ];
769
804
  var mcpTaskIdOrSlug = f.string({ desc: "The task ID or slug" });
770
805
  var listTaskFilesContract = defineToolContract({
@@ -1989,11 +2024,28 @@ function registerDeleteSubtask(server2, conn2) {
1989
2024
  };
1990
2025
  });
1991
2026
  }
2027
+ function registerSetTaskParent(server2, conn2) {
2028
+ registerContractTool(server2, setTaskParentContract, async (params) => {
2029
+ const result = await conn2.setTaskParent(params);
2030
+ const from = result.previousParentTaskId ?? "none";
2031
+ const to = result.parentSlug ?? result.parentTaskId ?? "none";
2032
+ const warnings = result.warnings.length > 0 ? ` Warnings: ${result.warnings.join(", ")}.` : "";
2033
+ return {
2034
+ content: [
2035
+ {
2036
+ type: "text",
2037
+ text: `Card ${result.slug} re-parented: ${from} -> ${to} (status: ${result.status}).${warnings}`
2038
+ }
2039
+ ]
2040
+ };
2041
+ });
2042
+ }
1992
2043
  function registerSubtaskTools(server2, conn2) {
1993
2044
  registerCreateSubtask(server2, conn2);
1994
2045
  registerUpdateSubtask(server2, conn2);
1995
2046
  registerListSubtasks(server2, conn2);
1996
2047
  registerDeleteSubtask(server2, conn2);
2048
+ registerSetTaskParent(server2, conn2);
1997
2049
  }
1998
2050
 
1999
2051
  // src/tools/dependencies.ts
@@ -260,6 +260,17 @@ interface OnboardingStepReport {
260
260
  }>;
261
261
  checks: OnboardingCheck[];
262
262
  }
263
+ /** Result of `set_task_parent` — mirrors the API's `ReparentCardResult`. */
264
+ interface SetTaskParentResult {
265
+ id: string;
266
+ slug: string;
267
+ status: string;
268
+ previousParentTaskId: string | null;
269
+ parentTaskId: string | null;
270
+ parentSlug: string | null;
271
+ /** Conditions reported rather than enforced: the move landed regardless. */
272
+ warnings: string[];
273
+ }
263
274
  interface MoveCardResult {
264
275
  cardId: string;
265
276
  sourceProjectId: string;
@@ -675,6 +686,18 @@ declare class ConveyorConnection {
675
686
  id: string;
676
687
  slug: string;
677
688
  }>;
689
+ /**
690
+ * Move a card under a new parent, or detach it with an explicit null.
691
+ * `parentTaskId` rides the rest-spread rather than a conditional one so a
692
+ * null survives the call — stripping it would silently no-op a detach.
693
+ */
694
+ setTaskParent(params: {
695
+ projectId?: string;
696
+ taskId: string;
697
+ parentTaskId: string | null;
698
+ ordinal?: number;
699
+ followParentStatus?: boolean;
700
+ }): Promise<SetTaskParentResult>;
678
701
  updateSubtask(params: {
679
702
  projectId?: string;
680
703
  subtaskId: string;
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { A as ActivePtySession, d as ConveyorConnection, e as ConveyorMcpConfig, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-SVcp2_Qd.js';
1
+ export { A as ActivePtySession, d as ConveyorConnection, e as ConveyorMcpConfig, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-CRkBLz5w.js';
2
2
  export { AttachTunnelOptions, ResolvedPtySession, RunTunnelOptions, TunnelConnection, TunnelHandle, TunnelSession, TunnelTty, WaitForPtySessionOptions, attachTunnel, runTunnel, waitForPtySession } from './tunnel.js';
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-HIVOGGE3.js";
6
6
  import {
7
7
  ConveyorConnection
8
- } from "./chunk-BKGMG2T3.js";
8
+ } from "./chunk-X3EHPZNH.js";
9
9
  export {
10
10
  ConveyorConnection,
11
11
  attachTunnel,
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-HIVOGGE3.js";
5
5
  import {
6
6
  ConveyorConnection
7
- } from "./chunk-BKGMG2T3.js";
7
+ } from "./chunk-X3EHPZNH.js";
8
8
 
9
9
  // src/tunnel-cli.ts
10
10
  var HELP = `conveyor-tunnel \u2014 attach your local terminal to a cloud Claude Code session.
package/dist/tunnel.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as ActivePtySession, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-SVcp2_Qd.js';
1
+ import { A as ActivePtySession, P as PtyAttachSnapshot, c as PtyDataChunk } from './connection-CRkBLz5w.js';
2
2
 
3
3
  /**
4
4
  * The slice of {@link ConveyorConnection} the tunnel needs. Defined as a
package/dist/wait-cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConveyorConnection
4
- } from "./chunk-BKGMG2T3.js";
4
+ } from "./chunk-X3EHPZNH.js";
5
5
  import {
6
6
  runWait
7
7
  } from "./chunk-OPZL4NDT.js";
@@ -1,4 +1,4 @@
1
- import { C as CardCollectionPage, a as CardCollectionDelta } from './connection-SVcp2_Qd.js';
1
+ import { C as CardCollectionPage, a as CardCollectionDelta } from './connection-CRkBLz5w.js';
2
2
  import { WaitFilter, WaitResult } from './wait.js';
3
3
 
4
4
  /**
package/dist/wait.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { b as CardCollectionItem } from './connection-SVcp2_Qd.js';
1
+ import { b as CardCollectionItem } from './connection-CRkBLz5w.js';
2
2
 
3
3
  /**
4
4
  * `conveyor-wait` engine — block until a card becomes actionable on a board.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rallycry/conveyor-mcp",
3
- "version": "4.3.29",
3
+ "version": "4.3.30",
4
4
  "description": "Conveyor MCP server for Claude Code PM integration",
5
5
  "keywords": [
6
6
  "claude",