@rallycry/conveyor-agent 10.7.5 → 10.8.2
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/{chunk-CWTQXS34.js → chunk-LBMFXTIV.js} +65 -31
- package/dist/chunk-LBMFXTIV.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/runtime/entrypoint.sh +25 -2
- package/dist/chunk-CWTQXS34.js.map +0 -1
|
@@ -1941,7 +1941,11 @@ var GetCliHistoryRequestSchema = z.object({
|
|
|
1941
1941
|
source: z.enum(["agent", "application"]).optional()
|
|
1942
1942
|
});
|
|
1943
1943
|
var ListSubtasksRequestSchema = z.object({
|
|
1944
|
-
sessionId: z.string()
|
|
1944
|
+
sessionId: z.string(),
|
|
1945
|
+
/** "compact" returns the slim orchestration view (ListSubtasksCompactResponse)
|
|
1946
|
+
* with the pack build-slot picture; "full" (default — wire-compat with older
|
|
1947
|
+
* agents) returns the verbose SubtaskSummaryDTO[] including description/plan. */
|
|
1948
|
+
view: z.enum(["compact", "full"]).optional()
|
|
1945
1949
|
});
|
|
1946
1950
|
var GetDependenciesRequestSchema = z.object({
|
|
1947
1951
|
sessionId: z.string()
|
|
@@ -2070,7 +2074,13 @@ var UpdateSubtaskRequestSchema = z.object({
|
|
|
2070
2074
|
title: z.string().min(1).optional(),
|
|
2071
2075
|
description: z.string().optional(),
|
|
2072
2076
|
plan: z.string().optional(),
|
|
2077
|
+
/** Orchestration statuses only ("Planning" | "Open") — the pack parent's
|
|
2078
|
+
* sanctioned promotion path. Execution statuses stay with the build
|
|
2079
|
+
* pipeline / force_update_task_status. Enforced server-side. */
|
|
2073
2080
|
status: z.string().optional(),
|
|
2081
|
+
/** Assign a project agent to the child — accepts the agent's id or exact
|
|
2082
|
+
* name; resolved against the parent task's project server-side. */
|
|
2083
|
+
agentIdOrName: z.string().min(1).optional(),
|
|
2074
2084
|
storyPointValue: z.number().int().positive().optional(),
|
|
2075
2085
|
followParentStatus: z.boolean().optional(),
|
|
2076
2086
|
/** Replace this subtask's dependency edges with these sibling ids/slugs.
|
|
@@ -2754,10 +2764,10 @@ var ModeController = class {
|
|
|
2754
2764
|
/**
|
|
2755
2765
|
* Auto mode always bypasses the plan turn: resolveInitialMode calls
|
|
2756
2766
|
* transitionToBuilding() at boot, so the agent runs with
|
|
2757
|
-
* `--dangerously-skip-permissions` from turn 1
|
|
2758
|
-
* the card (via update_task_plan)
|
|
2759
|
-
* never
|
|
2760
|
-
* approval. Non-auto modes never bypass.
|
|
2767
|
+
* `--dangerously-skip-permissions` from turn 1. The prompts require it to
|
|
2768
|
+
* post its plan to the card (via update_task_plan) before writing code —
|
|
2769
|
+
* a record for the team, never an approval gate. Use discovery mode for a
|
|
2770
|
+
* plan turn that stops for human approval. Non-auto modes never bypass.
|
|
2761
2771
|
*/
|
|
2762
2772
|
canBypassPlanning(_context) {
|
|
2763
2773
|
return this._mode === "auto";
|
|
@@ -5329,7 +5339,7 @@ function buildPackRunnerSystemPrompt(context, config, setupLog) {
|
|
|
5329
5339
|
`Your job is to execute child tasks by firing cloud builds, reviewing their PRs, and merging them \u2014 respecting dependency chains for parallel execution.`,
|
|
5330
5340
|
``,
|
|
5331
5341
|
`## Child Task Status Lifecycle`,
|
|
5332
|
-
`- "Planning" \u2014 Not ready for execution.
|
|
5342
|
+
`- "Planning" \u2014 Not ready for execution. If its plan is solid, promote it yourself: update_subtask with status "Open" (plus storyPointValue and agentIdOrName if unset \u2014 setting story points does NOT auto-promote). Otherwise skip it (or escalate if blocking).`,
|
|
5333
5343
|
`- "Open" \u2014 Ready to execute (if dependencies are met). Use start_child_cloud_build to fire it.`,
|
|
5334
5344
|
`- "InProgress" \u2014 Currently being worked on by a Task Runner. Wait \u2014 it will move to ReviewPR when done.`,
|
|
5335
5345
|
`- "ReviewPR" \u2014 Task Runner finished and opened a PR. Review and merge it.`,
|
|
@@ -5340,7 +5350,7 @@ function buildPackRunnerSystemPrompt(context, config, setupLog) {
|
|
|
5340
5350
|
`Follow this loop each time you are launched or relaunched:`,
|
|
5341
5351
|
``,
|
|
5342
5352
|
`1. Call list_subtasks to see the current state of all child tasks.`,
|
|
5343
|
-
` The response includes PR info, agent assignment,
|
|
5353
|
+
` The response includes PR info, agent assignment, **dependency info** (dependsOn array + allDependenciesMet flag), and the **packSlots** build-slot picture.`,
|
|
5344
5354
|
` If list_subtasks returns NO children, this is a fresh parent card: break the work down now \u2014 explore the codebase, save a parent-level plan with update_task_plan, then create child tasks with create_subtask, each with a detailed plan (file:line citations, verification steps) and dependsOn set for any child that blocks on another. Then fire the ready children and continue the loop.`,
|
|
5345
5355
|
``,
|
|
5346
5356
|
`2. Evaluate children by status and dependency readiness:`,
|
|
@@ -5351,9 +5361,9 @@ function buildPackRunnerSystemPrompt(context, config, setupLog) {
|
|
|
5351
5361
|
` - "Open" + allDependenciesMet=true: Ready to fire. Use start_child_cloud_build.`,
|
|
5352
5362
|
` - "Open" + allDependenciesMet=false: Blocked \u2014 skip for now. Will be unblocked when deps complete.`,
|
|
5353
5363
|
` - "ReviewDev" / "Complete": Already done. Skip.`,
|
|
5354
|
-
` - "Planning": Not ready.
|
|
5364
|
+
` - "Planning": Not ready. Promote it with update_subtask (status "Open" + story points + agent) once its plan is solid; if it genuinely isn't plannable, notify team.`,
|
|
5355
5365
|
``,
|
|
5356
|
-
`3. Fire ALL ready "Open" tasks whose dependencies are met, not just one \u2014 independent tasks run in parallel. There is a concurrency limit: if start_child_cloud_build returns a PACK_CHILD_LIMIT error, that is backpressure, not a failure.
|
|
5366
|
+
`3. Fire ALL ready "Open" tasks whose dependencies are met, not just one \u2014 independent tasks run in parallel. There is a concurrency limit: if start_child_cloud_build returns a PACK_CHILD_LIMIT error, that is backpressure, not a failure. Check list_subtasks' packSlots to see which children hold the in-flight slots \u2014 merge or wait on them (or stop_child_build a stale holder that isn't actually running), then start more as slots free up.`,
|
|
5357
5367
|
``,
|
|
5358
5368
|
`4. After merging a PR: run \`git pull origin ${context.baseBranch}\` then re-check list_subtasks \u2014 previously blocked tasks may now be ready.`,
|
|
5359
5369
|
``,
|
|
@@ -5368,7 +5378,7 @@ function buildPackRunnerSystemPrompt(context, config, setupLog) {
|
|
|
5368
5378
|
`- Do NOT attempt to write code yourself. Your role is coordination only.`,
|
|
5369
5379
|
`- If a child is stuck in "InProgress" for an unusually long time, use get_execution_logs(childTaskId) to check its logs and escalate to the team if it appears stuck.`,
|
|
5370
5380
|
`- You can use get_task(childTaskId) to get a child's full details including PR URL and branch.`,
|
|
5371
|
-
`- list_subtasks returns
|
|
5381
|
+
`- list_subtasks (compact view, the default) returns per child: status, agent assignment (agentId), story points, PR number/state, dependency info, and holdsBuildSlot \u2014 plus a packSlots summary of in-flight environments vs the cap. Use this to verify readiness before firing builds; pass verbose:true only if you need full plan/description text.`,
|
|
5372
5382
|
`- You can use read_task_chat to check for team messages.`
|
|
5373
5383
|
];
|
|
5374
5384
|
if (context.storyPoints && context.storyPoints.length > 0) {
|
|
@@ -5837,7 +5847,7 @@ function buildPmAutoPlanningRelaunchParts() {
|
|
|
5837
5847
|
return [
|
|
5838
5848
|
`
|
|
5839
5849
|
You are in auto mode. Continue building autonomously.`,
|
|
5840
|
-
`
|
|
5850
|
+
`No plan is saved on this card yet \u2014 save a concise plan with update_task_plan before writing further code; never pause or wait for approval.`,
|
|
5841
5851
|
`Do NOT wait for team input \u2014 proceed autonomously.`
|
|
5842
5852
|
];
|
|
5843
5853
|
}
|
|
@@ -5917,12 +5927,12 @@ function buildPlanDocumentationSection(context) {
|
|
|
5917
5927
|
const hasPlan = !!context?.plan?.trim();
|
|
5918
5928
|
return [
|
|
5919
5929
|
``,
|
|
5920
|
-
`### Plan & Properties (
|
|
5930
|
+
`### Plan & Properties (post the plan BEFORE building \u2014 no approval wait)`,
|
|
5921
5931
|
`- The card is already In Progress and advances automatically (In Progress \u2192 Review PR when you open the PR). There is no plan-approval step.`,
|
|
5922
5932
|
...hasPlan ? [
|
|
5923
5933
|
`- A plan is already saved on the card. Keep it current with update_task_plan if your approach diverges materially from it.`
|
|
5924
5934
|
] : [
|
|
5925
|
-
`- No plan is saved yet:
|
|
5935
|
+
`- No plan is saved yet: BEFORE writing any code, investigate briefly (search first, read only critical files) and save a concise implementation plan with update_task_plan (file:line citations). Then start implementing immediately \u2014 the plan is a record for the team, not a gate; never pause for approval.`
|
|
5926
5936
|
],
|
|
5927
5937
|
`- Identification auto-fills title, story points, and icon with quick AI guesses. After exploring, refine the title and story points with update_task_properties if they look like placeholders. Icons are automatic \u2014 never set them.`
|
|
5928
5938
|
];
|
|
@@ -6487,10 +6497,11 @@ CRITICAL: You are in Auto mode. Do NOT report status, ask for confirmation, or g
|
|
|
6487
6497
|
];
|
|
6488
6498
|
}
|
|
6489
6499
|
return [
|
|
6490
|
-
`You are operating autonomously. No plan is saved on this card yet
|
|
6500
|
+
`You are operating autonomously. No plan is saved on this card yet.`,
|
|
6491
6501
|
`1. Search the codebase (grep/glob) to locate relevant files, then read the critical ones`,
|
|
6492
|
-
`2.
|
|
6493
|
-
`3.
|
|
6502
|
+
`2. Save a concise plan with update_task_plan BEFORE writing any code \u2014 the plan is a record for the team, not a gate; never pause or wait for approval`,
|
|
6503
|
+
`3. Implement the work, keeping the plan current if your approach changes materially`,
|
|
6504
|
+
`4. Refine story points, tags, and title (update_task_properties) if they look like placeholders`,
|
|
6494
6505
|
`Do NOT wait for team input \u2014 proceed autonomously.`
|
|
6495
6506
|
];
|
|
6496
6507
|
}
|
|
@@ -6519,8 +6530,8 @@ function buildFreshLeafInstructions(context, isAutoMode) {
|
|
|
6519
6530
|
`Begin executing the task plan above immediately.`,
|
|
6520
6531
|
`Your FIRST action should be reading the relevant source files mentioned in the plan, then writing code. Do NOT run install, build, lint, test, or dev server commands first \u2014 the environment is already set up.`
|
|
6521
6532
|
] : [
|
|
6522
|
-
`No plan is saved on this card yet. Investigate the task briefly (search first, read only critical files), then
|
|
6523
|
-
`
|
|
6533
|
+
`No plan is saved on this card yet. Investigate the task briefly (search first, read only critical files), then save a concise implementation plan with update_task_plan (file:line citations) BEFORE you start writing code.`,
|
|
6534
|
+
`Once the plan is posted, implement it immediately \u2014 do NOT pause or wait for approval; the card is already In Progress and advances automatically.`,
|
|
6524
6535
|
`Do NOT run install, build, lint, test, or dev server commands first \u2014 the environment is already set up.`
|
|
6525
6536
|
];
|
|
6526
6537
|
parts.push(
|
|
@@ -6622,7 +6633,7 @@ function buildIdleRelaunchInstructions(context, isPm, agentMode, isAuto) {
|
|
|
6622
6633
|
}
|
|
6623
6634
|
return [
|
|
6624
6635
|
`You were relaunched in auto mode. Continue building autonomously.`,
|
|
6625
|
-
`
|
|
6636
|
+
`No plan is saved on this card yet \u2014 save a concise plan with update_task_plan before writing further code; never pause or wait for approval.`,
|
|
6626
6637
|
`Do NOT wait for instructions or go idle \u2014 you are in auto mode.`
|
|
6627
6638
|
];
|
|
6628
6639
|
}
|
|
@@ -7542,7 +7553,7 @@ var DEPENDS_ON_DESCRIPTION = "Sibling subtask ids or slugs this subtask blocks o
|
|
|
7542
7553
|
function buildUpdateTaskTool(connection) {
|
|
7543
7554
|
return defineTool(
|
|
7544
7555
|
"update_task_plan",
|
|
7545
|
-
"Save the plan and/or description to the current task. In auto/building mode, save the plan as
|
|
7556
|
+
"Save the plan and/or description to the current task. In auto/building mode, save the plan BEFORE writing code and keep it current as the approach evolves \u2014 post it, then build; never pause the build waiting for approval. For children use update_subtask; for title/tags/PR use update_task_properties.",
|
|
7546
7557
|
{
|
|
7547
7558
|
plan: z9.string().optional().describe("The task plan in markdown"),
|
|
7548
7559
|
description: z9.string().optional().describe("Updated task description")
|
|
@@ -7606,12 +7617,18 @@ function buildCreateSubtaskTool(connection) {
|
|
|
7606
7617
|
function buildUpdateSubtaskTool(connection) {
|
|
7607
7618
|
return defineTool(
|
|
7608
7619
|
"update_subtask",
|
|
7609
|
-
"Update an existing subtask's fields (title, description, plan, ordinal, storyPointValue, dependsOn)
|
|
7620
|
+
"Update an existing subtask's fields (title, description, plan, ordinal, storyPointValue, dependsOn) \u2014 and the sanctioned path to make a child buildable: promote it to status Open, assign its agent (agentIdOrName), and set story points. Setting story points does NOT auto-promote; set status explicitly. For the current task use update_task_plan.",
|
|
7610
7621
|
{
|
|
7611
7622
|
subtaskId: z9.string().describe("The subtask ID to update"),
|
|
7612
7623
|
title: z9.string().optional(),
|
|
7613
7624
|
description: z9.string().optional(),
|
|
7614
7625
|
plan: z9.string().optional(),
|
|
7626
|
+
status: z9.enum(["Planning", "Open"]).optional().describe(
|
|
7627
|
+
'Move the child between "Planning" and "Open". "Open" marks it ready to execute \u2014 required before start_child_cloud_build. Execution statuses transition automatically.'
|
|
7628
|
+
),
|
|
7629
|
+
agentIdOrName: z9.string().optional().describe(
|
|
7630
|
+
"Assign a project agent to the child (agent id or exact name from the Project Agents list). Required before start_child_cloud_build."
|
|
7631
|
+
),
|
|
7615
7632
|
ordinal: z9.number().optional(),
|
|
7616
7633
|
storyPointValue: z9.number().optional().describe(SP_DESCRIPTION),
|
|
7617
7634
|
followParentStatus: z9.boolean().optional().describe(FOLLOW_PARENT_STATUS_DESCRIPTION),
|
|
@@ -7624,6 +7641,8 @@ function buildUpdateSubtaskTool(connection) {
|
|
|
7624
7641
|
title,
|
|
7625
7642
|
description,
|
|
7626
7643
|
plan,
|
|
7644
|
+
status,
|
|
7645
|
+
agentIdOrName,
|
|
7627
7646
|
storyPointValue,
|
|
7628
7647
|
followParentStatus,
|
|
7629
7648
|
dependsOn
|
|
@@ -7635,6 +7654,8 @@ function buildUpdateSubtaskTool(connection) {
|
|
|
7635
7654
|
...title !== void 0 && { title },
|
|
7636
7655
|
...description !== void 0 && { description },
|
|
7637
7656
|
...plan !== void 0 && { plan },
|
|
7657
|
+
...status !== void 0 && { status },
|
|
7658
|
+
...agentIdOrName !== void 0 && { agentIdOrName },
|
|
7638
7659
|
...storyPointValue !== void 0 && { storyPointValue },
|
|
7639
7660
|
...followParentStatus !== void 0 && { followParentStatus },
|
|
7640
7661
|
...dependsOn !== void 0 && { dependsOn }
|
|
@@ -7667,12 +7688,17 @@ function buildDeleteSubtaskTool(connection) {
|
|
|
7667
7688
|
function buildListSubtasksTool(connection) {
|
|
7668
7689
|
return defineTool(
|
|
7669
7690
|
"list_subtasks",
|
|
7670
|
-
"List all subtasks under the current parent task. Use to coordinate child work
|
|
7671
|
-
{
|
|
7672
|
-
|
|
7691
|
+
"List all subtasks under the current parent task. Default compact view returns per child: status, agent, story points, PR number/state, dependencies, and holdsBuildSlot \u2014 plus packSlots (in-flight environments vs the PACK_CHILD_LIMIT cap, and which children hold the slots). Use to coordinate child work; pass verbose:true only when you need full description/plan text (large). For non-child tasks use get_task.",
|
|
7692
|
+
{
|
|
7693
|
+
verbose: z9.boolean().optional().describe(
|
|
7694
|
+
"Return full task rows including description and plan text (large \u2014 can exceed tool result limits on big packs). Default: compact orchestration view."
|
|
7695
|
+
)
|
|
7696
|
+
},
|
|
7697
|
+
async ({ verbose }) => {
|
|
7673
7698
|
try {
|
|
7674
7699
|
const subtasks = await connection.call("listSubtasks", {
|
|
7675
|
-
sessionId: connection.sessionId
|
|
7700
|
+
sessionId: connection.sessionId,
|
|
7701
|
+
view: verbose ? "full" : "compact"
|
|
7676
7702
|
});
|
|
7677
7703
|
return textResult(JSON.stringify(subtasks, null, 2));
|
|
7678
7704
|
} catch {
|
|
@@ -7686,7 +7712,7 @@ function buildPackTools(connection) {
|
|
|
7686
7712
|
return [
|
|
7687
7713
|
defineTool(
|
|
7688
7714
|
"start_child_cloud_build",
|
|
7689
|
-
"Start a cloud build (codespace) for a child task. Preconditions: child is
|
|
7715
|
+
"Start a cloud build (codespace) for a child task. Preconditions: child status is `Open`, story points set, and an agent assigned \u2014 satisfy all three with update_subtask (status/agentIdOrName/storyPointValue) first; none happen automatically. A PACK_CHILD_LIMIT error is backpressure, not failure: check list_subtasks packSlots for which children hold the in-flight slots, merge/stop one, then retry.",
|
|
7690
7716
|
{
|
|
7691
7717
|
childTaskId: z9.string().describe("The child task ID to start a cloud build for")
|
|
7692
7718
|
},
|
|
@@ -7706,7 +7732,7 @@ function buildPackTools(connection) {
|
|
|
7706
7732
|
),
|
|
7707
7733
|
defineTool(
|
|
7708
7734
|
"stop_child_build",
|
|
7709
|
-
"Send a graceful stop signal to a running child build's agent. Not a force-kill \u2014 the agent may take a moment to wind down.",
|
|
7735
|
+
"Send a graceful stop signal to a running child build's agent. Not a force-kill \u2014 the agent may take a moment to wind down. Stopping a child eventually frees its PACK_CHILD_LIMIT build slot (see list_subtasks packSlots).",
|
|
7710
7736
|
{
|
|
7711
7737
|
childTaskId: z9.string().describe("The child task ID whose build should be stopped")
|
|
7712
7738
|
},
|
|
@@ -7935,8 +7961,15 @@ var ALWAYS_LOADED_TOOLS = /* @__PURE__ */ new Set([
|
|
|
7935
7961
|
// Review mode
|
|
7936
7962
|
"approve_code_review",
|
|
7937
7963
|
"request_code_changes",
|
|
7938
|
-
// Pack/parent orchestration
|
|
7939
|
-
|
|
7964
|
+
// Pack/parent orchestration — a 12h fleet audit (2026-07-14) found a pack
|
|
7965
|
+
// runner re-ToolSearching this exact set on EVERY wake (~28 redundant round
|
|
7966
|
+
// trips in one session). The whole orchestration loop (list → promote/assign
|
|
7967
|
+
// → fire → merge/stop) is called by virtually every pack session.
|
|
7968
|
+
"list_subtasks",
|
|
7969
|
+
"update_subtask",
|
|
7970
|
+
"start_child_cloud_build",
|
|
7971
|
+
"stop_child_build",
|
|
7972
|
+
"approve_and_merge_pr"
|
|
7940
7973
|
]);
|
|
7941
7974
|
function withAlwaysLoad(tools) {
|
|
7942
7975
|
return tools.map(
|
|
@@ -8543,9 +8576,10 @@ async function handleExitPlanMode(host, input) {
|
|
|
8543
8576
|
const missingProps = collectMissingProps(taskProps);
|
|
8544
8577
|
if (host.isParentTask) {
|
|
8545
8578
|
try {
|
|
8546
|
-
const
|
|
8579
|
+
const result = await host.connection.call("listSubtasks", {
|
|
8547
8580
|
sessionId: host.connection.sessionId
|
|
8548
8581
|
});
|
|
8582
|
+
const subtasks = Array.isArray(result) ? result : [];
|
|
8549
8583
|
const subtasksWithoutPlans = subtasks.filter(
|
|
8550
8584
|
(s) => !s.plan?.trim()
|
|
8551
8585
|
);
|
|
@@ -11247,4 +11281,4 @@ export {
|
|
|
11247
11281
|
runStartCommand,
|
|
11248
11282
|
unshallowRepo
|
|
11249
11283
|
};
|
|
11250
|
-
//# sourceMappingURL=chunk-
|
|
11284
|
+
//# sourceMappingURL=chunk-LBMFXTIV.js.map
|