@rallycry/conveyor-agent 10.13.66 → 10.13.68

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.
@@ -2435,6 +2435,13 @@ var DeleteSubtaskRequestSchema = z4.object({
2435
2435
  sessionId: z4.string(),
2436
2436
  subtaskId: z4.string()
2437
2437
  });
2438
+ var SetSubtaskParentRequestSchema = z4.object({
2439
+ sessionId: z4.string(),
2440
+ taskId: z4.string().min(1),
2441
+ detach: z4.boolean().optional(),
2442
+ ordinal: z4.number().int().nonnegative().optional(),
2443
+ followParentStatus: z4.boolean().optional()
2444
+ });
2438
2445
  var GetTaskPropertiesRequestSchema = z4.object({
2439
2446
  sessionId: z4.string()
2440
2447
  });
@@ -2893,6 +2900,16 @@ var CreateProjectTaskRequestSchema = z5.object({
2893
2900
  subProjectId: z5.string().nullable().optional(),
2894
2901
  requestingUserId: z5.string().optional()
2895
2902
  });
2903
+ var SetProjectTaskParentRequestSchema = z5.object({
2904
+ projectId: z5.string(),
2905
+ /** Card to move — id or slug. */
2906
+ taskId: z5.string().min(1),
2907
+ /** New parent (id or slug), or null to detach. */
2908
+ parentTaskId: z5.string().min(1).nullable(),
2909
+ ordinal: z5.number().int().nonnegative().optional(),
2910
+ followParentStatus: z5.boolean().optional(),
2911
+ requestingUserId: z5.string().optional()
2912
+ }).strict();
2896
2913
  var UpdateProjectTaskRequestSchema = z5.object({
2897
2914
  projectId: z5.string(),
2898
2915
  taskId: z5.string(),
@@ -8404,12 +8421,12 @@ function findLastAgentMessageIndex2(history) {
8404
8421
  }
8405
8422
  return -1;
8406
8423
  }
8407
- function formatProjectAgents(projectAgents) {
8424
+ function formatProjectAgents(agents) {
8408
8425
  const parts = [``, `## Project Agents`];
8409
- for (const pa of projectAgents) {
8410
- const role = pa.role ? `role: ${pa.role}` : "role: unassigned";
8411
- const sp = pa.storyPoints === null || pa.storyPoints === void 0 ? "" : `, story points: ${pa.storyPoints}`;
8412
- parts.push(`- ${pa.agent.name} (${role}${sp})`);
8426
+ for (const agent of agents) {
8427
+ const role = agent.role ? `role: ${agent.role}` : "role: unassigned";
8428
+ const sp = agent.storyPoints === null || agent.storyPoints === void 0 ? "" : `, story points: ${agent.storyPoints}`;
8429
+ parts.push(`- ${agent.name} (${role}${sp})`);
8413
8430
  }
8414
8431
  return parts;
8415
8432
  }
@@ -8508,8 +8525,8 @@ function buildPackRunnerSystemPrompt(context, config, setupLog) {
8508
8525
  if (context.storyPoints && context.storyPoints.length > 0) {
8509
8526
  parts.push(...formatStoryPoints(context.storyPoints));
8510
8527
  }
8511
- if (context.projectAgents && context.projectAgents.length > 0) {
8512
- parts.push(...formatProjectAgents(context.projectAgents));
8528
+ if (context.agents && context.agents.length > 0) {
8529
+ parts.push(...formatProjectAgents(context.agents));
8513
8530
  }
8514
8531
  if (setupLog.length > 0) {
8515
8532
  parts.push(``, `## Environment setup log`, "```", ...setupLog, "```");
@@ -9588,10 +9605,10 @@ function buildReviewPrompt(context) {
9588
9605
  }
9589
9606
 
9590
9607
  // src/execution/system-prompt.ts
9591
- function formatProjectAgentLine(pa) {
9592
- const role = pa.role ? `role: ${pa.role}` : "role: unassigned";
9593
- const sp = pa.storyPoints === null || pa.storyPoints === void 0 ? "" : `, story points: ${pa.storyPoints}`;
9594
- return `- ${pa.agent.name} (${role}${sp})`;
9608
+ function formatProjectAgentLine(agent) {
9609
+ const role = agent.role ? `role: ${agent.role}` : "role: unassigned";
9610
+ const sp = agent.storyPoints === null || agent.storyPoints === void 0 ? "" : `, story points: ${agent.storyPoints}`;
9611
+ return `- ${agent.name} (${role}${sp})`;
9595
9612
  }
9596
9613
  function buildPmPreamble(context) {
9597
9614
  const parts = [
@@ -9620,10 +9637,10 @@ You are the Project Manager for this set of tasks.`,
9620
9637
  `Use the subtask tools (create_subtask, update_subtask, list_subtasks) to manage work breakdown.`
9621
9638
  );
9622
9639
  }
9623
- if (context.projectAgents && context.projectAgents.length > 0) {
9640
+ if (context.agents && context.agents.length > 0) {
9624
9641
  parts.push(`
9625
9642
  Project Agents:`);
9626
- for (const pa of context.projectAgents) {
9643
+ for (const pa of context.agents) {
9627
9644
  parts.push(formatProjectAgentLine(pa));
9628
9645
  }
9629
9646
  }
@@ -10792,11 +10809,46 @@ var listSubtasksContract = defineToolContract({
10792
10809
  }
10793
10810
  }
10794
10811
  });
10812
+ 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.";
10813
+ 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.";
10814
+ var setTaskParentContract = defineToolContract({
10815
+ name: "set_task_parent",
10816
+ agent: {
10817
+ 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}`,
10818
+ fields: {
10819
+ taskId: f.string({
10820
+ desc: "Id, slug, or branch name of the card to move. Must live in this project."
10821
+ }),
10822
+ detach: f.optional(
10823
+ f.boolean({
10824
+ 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."
10825
+ })
10826
+ ),
10827
+ ordinal: f.optional(f.number({ desc: SET_PARENT_ORDINAL })),
10828
+ followParentStatus: f.optional(f.boolean({ desc: AGENT_FOLLOW_PARENT_STATUS }))
10829
+ }
10830
+ },
10831
+ mcp: {
10832
+ 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}`,
10833
+ fields: {
10834
+ projectId: mcpProjectId,
10835
+ taskId: f.string({ desc: "Id or slug of the card to move" }),
10836
+ parentTaskId: f.nullable(
10837
+ f.string({
10838
+ 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."
10839
+ })
10840
+ ),
10841
+ ordinal: f.optional(f.number({ desc: SET_PARENT_ORDINAL })),
10842
+ followParentStatus: f.optional(f.boolean({ desc: MCP_FOLLOW_PARENT_STATUS }))
10843
+ }
10844
+ }
10845
+ });
10795
10846
  var subtasksContracts = [
10796
10847
  createSubtaskContract,
10797
10848
  updateSubtaskContract,
10798
10849
  deleteSubtaskContract,
10799
- listSubtasksContract
10850
+ listSubtasksContract,
10851
+ setTaskParentContract
10800
10852
  ];
10801
10853
  var mcpTaskIdOrSlug = f.string({ desc: "The task ID or slug" });
10802
10854
  var listTaskFilesContract = defineToolContract({
@@ -12039,12 +12091,33 @@ function buildCreateSubtaskTool(connection) {
12039
12091
  });
12040
12092
  const unmatched = result.unmatchedTags ?? [];
12041
12093
  const tagNote = unmatched.length > 0 ? ` These tag names matched no project tag and were skipped: ${unmatched.join(", ")}. Use list_tags to see the glossary.` : "";
12094
+ return textResult(`Subtask created with ID: ${result.id} (slug: ${result.slug})${tagNote}`);
12095
+ } catch (error) {
12042
12096
  return textResult(
12043
- `Subtask created with ID: ${result.id} (slug: ${result.slug})${tagNote}`
12097
+ `Failed to create subtask: ${error instanceof Error ? error.message : "Unknown error"}`
12044
12098
  );
12099
+ }
12100
+ }
12101
+ );
12102
+ }
12103
+ function buildSetTaskParentTool(connection) {
12104
+ return defineContractTool(
12105
+ setTaskParentContract,
12106
+ async ({ taskId, detach, ordinal, followParentStatus }) => {
12107
+ try {
12108
+ const result = await connection.call("setSubtaskParent", {
12109
+ sessionId: connection.sessionId,
12110
+ taskId,
12111
+ ...detach !== void 0 && { detach },
12112
+ ...ordinal !== void 0 && { ordinal },
12113
+ ...followParentStatus !== void 0 && { followParentStatus }
12114
+ });
12115
+ const warnings = result.warnings.length > 0 ? ` Warnings: ${result.warnings.join(", ")}.` : "";
12116
+ const move = detach ? `Card ${result.slug} detached \u2014 it is now a standalone card` : `Card ${result.slug} adopted into this pack`;
12117
+ return textResult(`${move} (status: ${result.status}).${warnings}`);
12045
12118
  } catch (error) {
12046
12119
  return textResult(
12047
- `Failed to create subtask: ${error instanceof Error ? error.message : "Unknown error"}`
12120
+ `Failed to set task parent: ${error instanceof Error ? error.message : "Unknown error"}`
12048
12121
  );
12049
12122
  }
12050
12123
  }
@@ -12191,6 +12264,7 @@ function buildPmTools(connection, options) {
12191
12264
  const tools = [
12192
12265
  buildUpdateTaskTool(connection),
12193
12266
  buildCreateSubtaskTool(connection),
12267
+ buildSetTaskParentTool(connection),
12194
12268
  buildUpdateSubtaskTool(connection),
12195
12269
  buildDeleteSubtaskTool(connection),
12196
12270
  buildListSubtasksTool(connection)
@@ -16708,7 +16782,7 @@ var SessionRunner = class _SessionRunner {
16708
16782
  lastSeenMessageId: ctx.lastSeenMessageId ?? null,
16709
16783
  isParentTask: ctx.isParentTask ?? false,
16710
16784
  storyPoints: ctx.storyPoints ?? void 0,
16711
- projectAgents: ctx.projectAgents ?? void 0,
16785
+ agents: ctx.agents ?? void 0,
16712
16786
  projectTags: ctx.projectTags ?? void 0,
16713
16787
  taskTagIds: ctx.taskTagIds ?? void 0,
16714
16788
  projectObjectives: ctx.projectObjectives ?? void 0,
package/dist/cli.js CHANGED
@@ -35,7 +35,7 @@ import {
35
35
  sampleKeyUsage,
36
36
  statWorkspacePath,
37
37
  workspacePathExists
38
- } from "./chunk-75FUOUYX.js";
38
+ } from "./chunk-E3QHGYZ2.js";
39
39
  import {
40
40
  reportBootMilestone
41
41
  } from "./chunk-KG4ORL3Y.js";
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  unshallowRepo,
14
14
  updateRemoteToken,
15
15
  workspacePathExists
16
- } from "./chunk-75FUOUYX.js";
16
+ } from "./chunk-E3QHGYZ2.js";
17
17
  import "./chunk-KG4ORL3Y.js";
18
18
  import "./chunk-IA45XHOA.js";
19
19
  import {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rallycry/conveyor-agent",
3
- "version": "10.13.66",
3
+ "version": "10.13.68",
4
4
  "description": "Conveyor Agent Runner v10 - PTY harness for the task chat (SDK harness for audit/project-chat). Agent-as-User architecture with BaseService patterns. Works locally too.",
5
5
  "keywords": [
6
6
  "agent",
@@ -40,7 +40,7 @@
40
40
  "@modelcontextprotocol/sdk": "^1.12.1",
41
41
  "node-pty": "^1.0.0",
42
42
  "socket.io-client": "^4.8.3",
43
- "tar": "^7.5.19",
43
+ "tar": "^7.5.21",
44
44
  "zod": "^4.0.0"
45
45
  },
46
46
  "devDependencies": {