@rallycry/conveyor-agent 7.0.13 → 7.0.15

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.
@@ -907,6 +907,8 @@ var PlanSync = class {
907
907
 
908
908
  // ../shared/dist/index.js
909
909
  import { z } from "zod";
910
+ import { z as z2 } from "zod";
911
+ import { z as z3 } from "zod";
910
912
  var MAX_FILE_SIZE_BYTES = 25 * 1024 * 1024;
911
913
  var EMBED_THRESHOLD_IMAGES = 5 * 1024 * 1024;
912
914
  var EMBED_THRESHOLD_TEXT = 2 * 1024 * 1024;
@@ -1125,157 +1127,6 @@ var UpdateChildStatusRequestSchema = z.object({
1125
1127
  childTaskId: z.string(),
1126
1128
  status: z.string()
1127
1129
  });
1128
- var RegisterProjectAgentRequestSchema = z.object({
1129
- projectId: z.string(),
1130
- capabilities: z.array(z.string())
1131
- });
1132
- var ProjectRunnerHeartbeatRequestSchema = z.object({
1133
- projectId: z.string()
1134
- });
1135
- var ReportProjectAgentStatusRequestSchema = z.object({
1136
- projectId: z.string(),
1137
- status: z.enum(["busy", "idle"]),
1138
- activeChatId: z.string().nullish(),
1139
- activeTaskId: z.string().nullish(),
1140
- activeBranch: z.string().nullish()
1141
- });
1142
- var DisconnectProjectRunnerRequestSchema = z.object({
1143
- projectId: z.string()
1144
- });
1145
- var GetProjectAgentContextRequestSchema = z.object({
1146
- projectId: z.string()
1147
- });
1148
- var GetProjectChatHistoryRequestSchema = z.object({
1149
- projectId: z.string(),
1150
- limit: z.number().int().positive().optional().default(50),
1151
- chatId: z.string().optional()
1152
- });
1153
- var PostProjectAgentMessageRequestSchema = z.object({
1154
- projectId: z.string(),
1155
- content: z.string().min(1),
1156
- chatId: z.string().optional()
1157
- });
1158
- var ListProjectTasksRequestSchema = z.object({
1159
- projectId: z.string(),
1160
- status: z.string().optional(),
1161
- assigneeId: z.string().optional(),
1162
- limit: z.number().int().positive().optional().default(50)
1163
- });
1164
- var GetProjectTaskRequestSchema = z.object({
1165
- projectId: z.string(),
1166
- taskId: z.string()
1167
- });
1168
- var SearchProjectTasksRequestSchema = z.object({
1169
- projectId: z.string(),
1170
- tagNames: z.array(z.string()).optional(),
1171
- searchQuery: z.string().optional(),
1172
- statusFilters: z.array(z.string()).optional(),
1173
- limit: z.number().int().positive().optional().default(20)
1174
- });
1175
- var ListProjectTagsRequestSchema = z.object({
1176
- projectId: z.string()
1177
- });
1178
- var GetProjectSummaryRequestSchema = z.object({
1179
- projectId: z.string()
1180
- });
1181
- var CreateProjectTaskRequestSchema = z.object({
1182
- projectId: z.string(),
1183
- title: z.string().min(1),
1184
- description: z.string().optional(),
1185
- plan: z.string().optional(),
1186
- status: z.string().optional(),
1187
- isBug: z.boolean().optional()
1188
- });
1189
- var UpdateProjectTaskRequestSchema = z.object({
1190
- projectId: z.string(),
1191
- taskId: z.string(),
1192
- title: z.string().optional(),
1193
- description: z.string().optional(),
1194
- plan: z.string().optional(),
1195
- status: z.string().optional(),
1196
- assignedUserId: z.string().nullish()
1197
- });
1198
- var ReportProjectAgentEventRequestSchema = z.object({
1199
- projectId: z.string(),
1200
- event: z.record(z.string(), z.unknown())
1201
- });
1202
- var ReportTagAuditProgressRequestSchema = z.object({
1203
- projectId: z.string(),
1204
- requestId: z.string(),
1205
- activity: z.object({
1206
- tool: z.string(),
1207
- input: z.string().optional(),
1208
- timestamp: z.string()
1209
- })
1210
- });
1211
- var ReportTagAuditResultRequestSchema = z.object({
1212
- projectId: z.string(),
1213
- requestId: z.string(),
1214
- recommendations: z.array(z.record(z.string(), z.unknown())),
1215
- summary: z.string(),
1216
- complete: z.boolean()
1217
- });
1218
- var ReportNewCommitsDetectedRequestSchema = z.object({
1219
- projectId: z.string(),
1220
- commits: z.array(
1221
- z.object({
1222
- sha: z.string(),
1223
- message: z.string(),
1224
- author: z.string()
1225
- })
1226
- ),
1227
- branch: z.string()
1228
- });
1229
- var ReportEnvironmentReadyRequestSchema = z.object({
1230
- projectId: z.string(),
1231
- branch: z.string(),
1232
- setupComplete: z.boolean(),
1233
- startCommandRunning: z.boolean()
1234
- });
1235
- var ReportEnvSwitchProgressRequestSchema = z.object({
1236
- projectId: z.string(),
1237
- step: z.string(),
1238
- progress: z.number(),
1239
- message: z.string().optional()
1240
- });
1241
- var ForwardProjectChatMessageRequestSchema = z.object({
1242
- projectId: z.string(),
1243
- chatId: z.string(),
1244
- content: z.string().min(1),
1245
- targetUserId: z.string().optional()
1246
- });
1247
- var CancelQueuedProjectMessageRequestSchema = z.object({
1248
- projectId: z.string(),
1249
- index: z.number().int().nonnegative()
1250
- });
1251
- var GetProjectCliHistoryRequestSchema = z.object({
1252
- projectId: z.string(),
1253
- limit: z.number().int().positive().optional().default(50),
1254
- source: z.string().optional()
1255
- });
1256
- var PostToProjectTaskChatRequestSchema = z.object({
1257
- projectId: z.string(),
1258
- taskId: z.string(),
1259
- content: z.string()
1260
- });
1261
- var GetProjectTaskCliRequestSchema = z.object({
1262
- projectId: z.string(),
1263
- taskId: z.string(),
1264
- limit: z.number().int().positive().optional().default(50),
1265
- source: z.string().optional()
1266
- });
1267
- var StartProjectBuildRequestSchema = z.object({
1268
- projectId: z.string(),
1269
- taskId: z.string()
1270
- });
1271
- var StopProjectBuildRequestSchema = z.object({
1272
- projectId: z.string(),
1273
- taskId: z.string()
1274
- });
1275
- var ApproveProjectMergePRRequestSchema = z.object({
1276
- projectId: z.string(),
1277
- childTaskId: z.string()
1278
- });
1279
1130
  var GetAgentStatusRequestSchema = z.object({
1280
1131
  taskId: z.string()
1281
1132
  });
@@ -1371,7 +1222,200 @@ var RegisterProjectAgentResponseSchema = z.object({
1371
1222
  agentSettings: z.record(z.string(), z.unknown()).nullable(),
1372
1223
  branchSwitchCommand: z.string().nullable()
1373
1224
  });
1225
+ var RegisterProjectAgentRequestSchema = z2.object({
1226
+ projectId: z2.string(),
1227
+ capabilities: z2.array(z2.string())
1228
+ });
1229
+ var ProjectRunnerHeartbeatRequestSchema = z2.object({
1230
+ projectId: z2.string()
1231
+ });
1232
+ var ReportProjectAgentStatusRequestSchema = z2.object({
1233
+ projectId: z2.string(),
1234
+ status: z2.enum(["busy", "idle"]),
1235
+ activeChatId: z2.string().nullish(),
1236
+ activeTaskId: z2.string().nullish(),
1237
+ activeBranch: z2.string().nullish()
1238
+ });
1239
+ var DisconnectProjectRunnerRequestSchema = z2.object({
1240
+ projectId: z2.string()
1241
+ });
1242
+ var GetProjectAgentContextRequestSchema = z2.object({
1243
+ projectId: z2.string()
1244
+ });
1245
+ var GetProjectChatHistoryRequestSchema = z2.object({
1246
+ projectId: z2.string(),
1247
+ limit: z2.number().int().positive().optional().default(50),
1248
+ chatId: z2.string().optional()
1249
+ });
1250
+ var PostProjectAgentMessageRequestSchema = z2.object({
1251
+ projectId: z2.string(),
1252
+ content: z2.string().min(1),
1253
+ chatId: z2.string().optional()
1254
+ });
1255
+ var ListProjectTasksRequestSchema = z2.object({
1256
+ projectId: z2.string(),
1257
+ status: z2.string().optional(),
1258
+ assigneeId: z2.string().optional(),
1259
+ limit: z2.number().int().positive().optional().default(50)
1260
+ });
1261
+ var GetProjectTaskRequestSchema = z2.object({
1262
+ projectId: z2.string(),
1263
+ taskId: z2.string()
1264
+ });
1265
+ var SearchProjectTasksRequestSchema = z2.object({
1266
+ projectId: z2.string(),
1267
+ tagNames: z2.array(z2.string()).optional(),
1268
+ searchQuery: z2.string().optional(),
1269
+ statusFilters: z2.array(z2.string()).optional(),
1270
+ limit: z2.number().int().positive().optional().default(20)
1271
+ });
1272
+ var ListProjectTagsRequestSchema = z2.object({
1273
+ projectId: z2.string()
1274
+ });
1275
+ var GetProjectSummaryRequestSchema = z2.object({
1276
+ projectId: z2.string()
1277
+ });
1278
+ var CreateProjectTaskRequestSchema = z2.object({
1279
+ projectId: z2.string(),
1280
+ title: z2.string().min(1),
1281
+ description: z2.string().optional(),
1282
+ plan: z2.string().optional(),
1283
+ status: z2.string().optional(),
1284
+ isBug: z2.boolean().optional()
1285
+ });
1286
+ var UpdateProjectTaskRequestSchema = z2.object({
1287
+ projectId: z2.string(),
1288
+ taskId: z2.string(),
1289
+ title: z2.string().optional(),
1290
+ description: z2.string().optional(),
1291
+ plan: z2.string().optional(),
1292
+ status: z2.string().optional(),
1293
+ assignedUserId: z2.string().nullish()
1294
+ });
1295
+ var ReportProjectAgentEventRequestSchema = z2.object({
1296
+ projectId: z2.string(),
1297
+ event: z2.record(z2.string(), z2.unknown())
1298
+ });
1299
+ var ReportTagAuditProgressRequestSchema = z2.object({
1300
+ projectId: z2.string(),
1301
+ requestId: z2.string(),
1302
+ activity: z2.object({
1303
+ tool: z2.string(),
1304
+ input: z2.string().optional(),
1305
+ timestamp: z2.string()
1306
+ })
1307
+ });
1308
+ var ReportTagAuditResultRequestSchema = z2.object({
1309
+ projectId: z2.string(),
1310
+ requestId: z2.string(),
1311
+ recommendations: z2.array(z2.record(z2.string(), z2.unknown())),
1312
+ summary: z2.string(),
1313
+ complete: z2.boolean()
1314
+ });
1315
+ var ReportNewCommitsDetectedRequestSchema = z2.object({
1316
+ projectId: z2.string(),
1317
+ commits: z2.array(
1318
+ z2.object({
1319
+ sha: z2.string(),
1320
+ message: z2.string(),
1321
+ author: z2.string()
1322
+ })
1323
+ ),
1324
+ branch: z2.string()
1325
+ });
1326
+ var ReportEnvironmentReadyRequestSchema = z2.object({
1327
+ projectId: z2.string(),
1328
+ branch: z2.string(),
1329
+ setupComplete: z2.boolean(),
1330
+ startCommandRunning: z2.boolean()
1331
+ });
1332
+ var ReportEnvSwitchProgressRequestSchema = z2.object({
1333
+ projectId: z2.string(),
1334
+ step: z2.string(),
1335
+ progress: z2.number(),
1336
+ message: z2.string().optional()
1337
+ });
1338
+ var ForwardProjectChatMessageRequestSchema = z2.object({
1339
+ projectId: z2.string(),
1340
+ chatId: z2.string(),
1341
+ content: z2.string().min(1),
1342
+ targetUserId: z2.string().optional()
1343
+ });
1344
+ var CancelQueuedProjectMessageRequestSchema = z2.object({
1345
+ projectId: z2.string(),
1346
+ index: z2.number().int().nonnegative()
1347
+ });
1348
+ var GetProjectCliHistoryRequestSchema = z2.object({
1349
+ projectId: z2.string(),
1350
+ limit: z2.number().int().positive().optional().default(50),
1351
+ source: z2.string().optional()
1352
+ });
1353
+ var PostToProjectTaskChatRequestSchema = z2.object({
1354
+ projectId: z2.string(),
1355
+ taskId: z2.string(),
1356
+ content: z2.string()
1357
+ });
1358
+ var GetProjectTaskCliRequestSchema = z2.object({
1359
+ projectId: z2.string(),
1360
+ taskId: z2.string(),
1361
+ limit: z2.number().int().positive().optional().default(50),
1362
+ source: z2.string().optional()
1363
+ });
1364
+ var StartProjectBuildRequestSchema = z2.object({
1365
+ projectId: z2.string(),
1366
+ taskId: z2.string()
1367
+ });
1368
+ var StopProjectBuildRequestSchema = z2.object({
1369
+ projectId: z2.string(),
1370
+ taskId: z2.string()
1371
+ });
1372
+ var ApproveProjectMergePRRequestSchema = z2.object({
1373
+ projectId: z2.string(),
1374
+ childTaskId: z2.string()
1375
+ });
1374
1376
  var CRITICAL_AUTOMATED_SOURCES = /* @__PURE__ */ new Set(["ci_failure", "review_trigger"]);
1377
+ var StartTaskAuditRequestSchema = z3.object({
1378
+ projectId: z3.string(),
1379
+ taskIds: z3.array(z3.string()).min(1)
1380
+ });
1381
+ var ReportTaskAuditProgressRequestSchema = z3.object({
1382
+ projectId: z3.string(),
1383
+ requestId: z3.string(),
1384
+ taskId: z3.string(),
1385
+ activity: z3.string()
1386
+ });
1387
+ var ReportTaskAuditResultRequestSchema = z3.object({
1388
+ projectId: z3.string(),
1389
+ requestId: z3.string(),
1390
+ taskId: z3.string(),
1391
+ summary: z3.string(),
1392
+ turnGrades: z3.array(
1393
+ z3.object({
1394
+ turnIndex: z3.number(),
1395
+ phase: z3.enum(["planning", "building", "human"]),
1396
+ grade: z3.enum(["correct", "neutral", "blunder"]),
1397
+ reasoning: z3.string(),
1398
+ eventType: z3.string(),
1399
+ eventSummary: z3.string()
1400
+ })
1401
+ ),
1402
+ planningAccuracy: z3.number().nullable(),
1403
+ buildingAccuracy: z3.number().nullable(),
1404
+ humanAccuracy: z3.number().nullable(),
1405
+ planningCorrect: z3.number(),
1406
+ planningNeutral: z3.number(),
1407
+ planningBlunder: z3.number(),
1408
+ buildingCorrect: z3.number(),
1409
+ buildingNeutral: z3.number(),
1410
+ buildingBlunder: z3.number(),
1411
+ humanCorrect: z3.number(),
1412
+ humanNeutral: z3.number(),
1413
+ humanBlunder: z3.number(),
1414
+ suggestionIds: z3.array(z3.string()),
1415
+ auditCostUsd: z3.number().nullable(),
1416
+ model: z3.string().nullable(),
1417
+ error: z3.string().optional()
1418
+ });
1375
1419
 
1376
1420
  // src/execution/pack-runner-prompt.ts
1377
1421
  function findLastAgentMessageIndex(history) {
@@ -2556,7 +2600,7 @@ async function buildInitialPrompt(mode, context, isAuto, agentMode) {
2556
2600
  }
2557
2601
 
2558
2602
  // src/tools/common-tools.ts
2559
- import { z as z2 } from "zod";
2603
+ import { z as z4 } from "zod";
2560
2604
 
2561
2605
  // src/tools/helpers.ts
2562
2606
  function textResult(text) {
@@ -2590,8 +2634,8 @@ function buildReadTaskChatTool(connection) {
2590
2634
  "read_task_chat",
2591
2635
  "Read recent messages from a task chat. Omit task_id to read the current task's chat, or provide a child task ID to read a child's chat.",
2592
2636
  {
2593
- limit: z2.number().optional().describe("Number of recent messages to fetch (default 20)"),
2594
- task_id: z2.string().optional().describe("Child task ID to read chat from. Omit to read the current task's chat.")
2637
+ limit: z4.number().optional().describe("Number of recent messages to fetch (default 20)"),
2638
+ task_id: z4.string().optional().describe("Child task ID to read chat from. Omit to read the current task's chat.")
2595
2639
  },
2596
2640
  async ({ limit, task_id }) => {
2597
2641
  try {
@@ -2635,7 +2679,7 @@ function buildGetTaskTool(connection) {
2635
2679
  "get_task",
2636
2680
  "Look up a task by slug or ID to get its title, description, plan, and status",
2637
2681
  {
2638
- slug_or_id: z2.string().describe("The task slug (e.g. 'my-task') or CUID")
2682
+ slug_or_id: z4.string().describe("The task slug (e.g. 'my-task') or CUID")
2639
2683
  },
2640
2684
  async ({ slug_or_id }) => {
2641
2685
  try {
@@ -2658,9 +2702,9 @@ function buildGetTaskCliTool(connection) {
2658
2702
  "get_task_cli",
2659
2703
  "Read CLI execution logs from a task. Returns agent reasoning, tool calls, setup output, and other execution events. Use 'source' to filter: 'agent' for agent reasoning/tool calls only, 'application' for setup/dev-server output only.",
2660
2704
  {
2661
- task_id: z2.string().optional().describe("Task ID or slug. Omit to read logs from the current task."),
2662
- source: z2.enum(["agent", "application"]).optional().describe("Filter by log source. Omit for all logs."),
2663
- limit: z2.number().optional().describe("Max number of log entries to return (default 50, max 500).")
2705
+ task_id: z4.string().optional().describe("Task ID or slug. Omit to read logs from the current task."),
2706
+ source: z4.enum(["agent", "application"]).optional().describe("Filter by log source. Omit for all logs."),
2707
+ limit: z4.number().optional().describe("Max number of log entries to return (default 50, max 500).")
2664
2708
  },
2665
2709
  async ({ task_id, source, limit }) => {
2666
2710
  try {
@@ -2720,7 +2764,7 @@ function buildGetTaskFileTool(connection) {
2720
2764
  return defineTool(
2721
2765
  "get_task_file",
2722
2766
  "Get a specific task file's content and download URL by file ID",
2723
- { fileId: z2.string().describe("The file ID to retrieve") },
2767
+ { fileId: z4.string().describe("The file ID to retrieve") },
2724
2768
  async ({ fileId }) => {
2725
2769
  try {
2726
2770
  const file = await connection.call("getTaskFile", {
@@ -2751,8 +2795,8 @@ function buildSearchIncidentsTool(connection) {
2751
2795
  "search_incidents",
2752
2796
  "Search incidents in the current project. Optionally filter by status (Open, Acknowledged, Investigating, Resolved, Closed) or source.",
2753
2797
  {
2754
- status: z2.string().optional().describe("Filter by incident status"),
2755
- source: z2.string().optional().describe("Filter by source (e.g., 'conveyor', 'agent', 'build')")
2798
+ status: z4.string().optional().describe("Filter by incident status"),
2799
+ source: z4.string().optional().describe("Filter by source (e.g., 'conveyor', 'agent', 'build')")
2756
2800
  },
2757
2801
  async ({ status, source }) => {
2758
2802
  try {
@@ -2776,7 +2820,7 @@ function buildGetTaskIncidentsTool(connection) {
2776
2820
  "get_task_incidents",
2777
2821
  "Get all incidents linked to the current task (or a specified task). Returns full incident details including title, description, severity, status, and source.",
2778
2822
  {
2779
- task_id: z2.string().optional().describe("Task ID (defaults to current task)")
2823
+ task_id: z4.string().optional().describe("Task ID (defaults to current task)")
2780
2824
  },
2781
2825
  async ({ task_id }) => {
2782
2826
  try {
@@ -2799,12 +2843,12 @@ function buildQueryGcpLogsTool(connection) {
2799
2843
  "query_gcp_logs",
2800
2844
  "Query GCP Cloud Logging for the current project. Returns log entries matching the given filters. Use severity to filter by minimum log level. The project's GCP credentials are used automatically.",
2801
2845
  {
2802
- filter: z2.string().optional().describe(
2846
+ filter: z4.string().optional().describe(
2803
2847
  `Cloud Logging filter expression (e.g., 'resource.type="gce_instance"'). Max 1000 chars.`
2804
2848
  ),
2805
- start_time: z2.string().optional().describe("Start time in ISO 8601 format (e.g., '2024-01-01T00:00:00Z')"),
2806
- end_time: z2.string().optional().describe("End time in ISO 8601 format (e.g., '2024-01-02T00:00:00Z')"),
2807
- severity: z2.enum([
2849
+ start_time: z4.string().optional().describe("Start time in ISO 8601 format (e.g., '2024-01-01T00:00:00Z')"),
2850
+ end_time: z4.string().optional().describe("End time in ISO 8601 format (e.g., '2024-01-02T00:00:00Z')"),
2851
+ severity: z4.enum([
2808
2852
  "DEFAULT",
2809
2853
  "DEBUG",
2810
2854
  "INFO",
@@ -2815,7 +2859,7 @@ function buildQueryGcpLogsTool(connection) {
2815
2859
  "ALERT",
2816
2860
  "EMERGENCY"
2817
2861
  ]).optional().describe("Minimum severity level to filter by (default: all levels)"),
2818
- page_size: z2.number().optional().describe("Number of log entries to return (default 100, max 500)")
2862
+ page_size: z4.number().optional().describe("Number of log entries to return (default 100, max 500)")
2819
2863
  },
2820
2864
  async ({ filter, start_time, end_time, severity, page_size }) => {
2821
2865
  try {
@@ -2869,8 +2913,8 @@ function buildGetSuggestionsTool(connection) {
2869
2913
  "get_suggestions",
2870
2914
  "List project suggestions sorted by vote score. Use this to see what the team thinks is important.",
2871
2915
  {
2872
- status: z2.string().optional().describe("Filter by status: Open, Accepted, Rejected, Implemented"),
2873
- limit: z2.number().optional().describe("Max results (default 20)")
2916
+ status: z4.string().optional().describe("Filter by status: Open, Accepted, Rejected, Implemented"),
2917
+ limit: z4.number().optional().describe("Max results (default 20)")
2874
2918
  },
2875
2919
  async ({ status: _status, limit: _limit }) => {
2876
2920
  try {
@@ -2895,8 +2939,8 @@ function buildPostToChatTool(connection) {
2895
2939
  "post_to_chat",
2896
2940
  "Post a message to a task chat. Your normal replies already appear in chat \u2014 only use this for explicit out-of-band updates or posting to a child task's chat.",
2897
2941
  {
2898
- message: z2.string().describe("The message to post to the team"),
2899
- task_id: z2.string().optional().describe("Child task ID to post to. Omit to post to the current task's chat.")
2942
+ message: z4.string().describe("The message to post to the team"),
2943
+ task_id: z4.string().optional().describe("Child task ID to post to. Omit to post to the current task's chat.")
2900
2944
  },
2901
2945
  async ({ message, task_id }) => {
2902
2946
  try {
@@ -2923,8 +2967,8 @@ function buildForceUpdateTaskStatusTool(connection) {
2923
2967
  "force_update_task_status",
2924
2968
  "EMERGENCY ONLY: Force-override a task's Kanban status. Status transitions happen automatically (building sets InProgress, PR creation sets ReviewPR, merge sets ReviewDev). Only use this if an automatic transition failed or a task is stuck in the wrong status. Omit task_id to update the current task, or provide a child task ID.",
2925
2969
  {
2926
- status: z2.enum(["InProgress", "ReviewPR", "ReviewDev", "Complete"]).describe("The new status for the task"),
2927
- task_id: z2.string().optional().describe("Child task ID to update. Omit to update the current task.")
2970
+ status: z4.enum(["InProgress", "ReviewPR", "ReviewDev", "Complete"]).describe("The new status for the task"),
2971
+ task_id: z4.string().optional().describe("Child task ID to update. Omit to update the current task.")
2928
2972
  },
2929
2973
  async ({ status, task_id }) => {
2930
2974
  try {
@@ -2955,15 +2999,15 @@ function buildCreatePullRequestTool(connection, config) {
2955
2999
  "create_pull_request",
2956
3000
  "Create a GitHub pull request for this task. Automatically stages uncommitted changes, commits them, and pushes before creating the PR. Use this instead of gh CLI or git commands to create PRs.",
2957
3001
  {
2958
- title: z2.string().describe("The PR title"),
2959
- body: z2.string().describe("The PR description/body in markdown"),
2960
- branch: z2.string().optional().describe(
3002
+ title: z4.string().describe("The PR title"),
3003
+ body: z4.string().describe("The PR description/body in markdown"),
3004
+ branch: z4.string().optional().describe(
2961
3005
  "The head branch name for the PR. If the task doesn't have a branch set, this will be used. Defaults to the task's existing branch."
2962
3006
  ),
2963
- baseBranch: z2.string().optional().describe(
3007
+ baseBranch: z4.string().optional().describe(
2964
3008
  "The base branch to target for the PR (e.g. 'main', 'develop'). Defaults to the project's configured dev branch."
2965
3009
  ),
2966
- commitMessage: z2.string().optional().describe(
3010
+ commitMessage: z4.string().optional().describe(
2967
3011
  "Commit message for staging uncommitted changes. If not provided, a default message based on the PR title will be used."
2968
3012
  )
2969
3013
  },
@@ -3041,7 +3085,7 @@ function buildAddDependencyTool(connection) {
3041
3085
  "add_dependency",
3042
3086
  "Add a dependency \u2014 this task cannot start until the specified task is merged to dev",
3043
3087
  {
3044
- depends_on_slug_or_id: z2.string().describe("Slug or ID of the task this task depends on")
3088
+ depends_on_slug_or_id: z4.string().describe("Slug or ID of the task this task depends on")
3045
3089
  },
3046
3090
  async ({ depends_on_slug_or_id }) => {
3047
3091
  try {
@@ -3063,7 +3107,7 @@ function buildRemoveDependencyTool(connection) {
3063
3107
  "remove_dependency",
3064
3108
  "Remove a dependency from this task",
3065
3109
  {
3066
- depends_on_slug_or_id: z2.string().describe("Slug or ID of the task to remove as dependency")
3110
+ depends_on_slug_or_id: z4.string().describe("Slug or ID of the task to remove as dependency")
3067
3111
  },
3068
3112
  async ({ depends_on_slug_or_id }) => {
3069
3113
  try {
@@ -3085,10 +3129,10 @@ function buildCreateFollowUpTaskTool(connection) {
3085
3129
  "create_follow_up_task",
3086
3130
  "Create a follow-up task in this project that depends on the current task. Use for out-of-scope work, v1.1 features, or cleanup that should happen after this task merges.",
3087
3131
  {
3088
- title: z2.string().describe("Follow-up task title"),
3089
- description: z2.string().optional().describe("Brief description of the follow-up work"),
3090
- plan: z2.string().optional().describe("Implementation plan if known"),
3091
- story_point_value: z2.number().optional().describe("Story point estimate (1=Common, 2=Magic, 3=Rare, 5=Unique)")
3132
+ title: z4.string().describe("Follow-up task title"),
3133
+ description: z4.string().optional().describe("Brief description of the follow-up work"),
3134
+ plan: z4.string().optional().describe("Implementation plan if known"),
3135
+ story_point_value: z4.number().optional().describe("Story point estimate (1=Common, 2=Magic, 3=Rare, 5=Unique)")
3092
3136
  },
3093
3137
  async ({ title, description, plan, story_point_value }) => {
3094
3138
  try {
@@ -3115,9 +3159,9 @@ function buildCreateSuggestionTool(connection) {
3115
3159
  "create_suggestion",
3116
3160
  "Suggest a feature, improvement, or idea for the project. If you want to recommend something \u2014 a document, a rule, a feature, a task, an optimization \u2014 use this tool. If a similar suggestion already exists, your vote will be added to it instead of creating a duplicate.",
3117
3161
  {
3118
- title: z2.string().describe("Short title for the suggestion"),
3119
- description: z2.string().optional().describe("Details about the suggestion"),
3120
- tag_names: z2.array(z2.string()).optional().describe("Tag names to categorize the suggestion")
3162
+ title: z4.string().describe("Short title for the suggestion"),
3163
+ description: z4.string().optional().describe("Details about the suggestion"),
3164
+ tag_names: z4.array(z4.string()).optional().describe("Tag names to categorize the suggestion")
3121
3165
  },
3122
3166
  async ({ title, description, tag_names }) => {
3123
3167
  try {
@@ -3146,8 +3190,8 @@ function buildVoteSuggestionTool(connection) {
3146
3190
  "vote_suggestion",
3147
3191
  "Vote on a project suggestion. Use +1 to upvote or -1 to downvote.",
3148
3192
  {
3149
- suggestion_id: z2.string().describe("The suggestion ID to vote on"),
3150
- value: z2.number().refine((v) => v === 1 || v === -1, { message: "Value must be 1 or -1" }).describe("+1 to upvote, -1 to downvote")
3193
+ suggestion_id: z4.string().describe("The suggestion ID to vote on"),
3194
+ value: z4.number().refine((v) => v === 1 || v === -1, { message: "Value must be 1 or -1" }).describe("+1 to upvote, -1 to downvote")
3151
3195
  },
3152
3196
  async ({ suggestion_id, value }) => {
3153
3197
  try {
@@ -3170,8 +3214,8 @@ function buildScaleUpResourcesTool(connection) {
3170
3214
  "scale_up_resources",
3171
3215
  "Scale up the pod's CPU and memory resources. Use before running dev servers, tests, builds, or other resource-intensive operations. Phases: 'setup' (installs, basic dev servers), 'build' (full dev servers, test suites, typecheck, builds). Actual CPU/memory values are configured per-project. Scaling is one-way (up only).",
3172
3216
  {
3173
- tier: z2.enum(["initial", "setup", "build"]).describe("The resource phase to scale up to"),
3174
- reason: z2.string().optional().describe("Brief reason for scaling (e.g., 'running test suite')")
3217
+ tier: z4.enum(["initial", "setup", "build"]).describe("The resource phase to scale up to"),
3218
+ reason: z4.string().optional().describe("Brief reason for scaling (e.g., 'running test suite')")
3175
3219
  },
3176
3220
  async ({ tier, reason }) => {
3177
3221
  try {
@@ -3224,15 +3268,15 @@ function buildCommonTools(connection, config) {
3224
3268
  }
3225
3269
 
3226
3270
  // src/tools/pm-tools.ts
3227
- import { z as z3 } from "zod";
3271
+ import { z as z5 } from "zod";
3228
3272
  var SP_DESCRIPTION = "Story point value (1=Common, 2=Magic, 3=Rare, 5=Unique)";
3229
3273
  function buildUpdateTaskTool(connection) {
3230
3274
  return defineTool(
3231
3275
  "update_task",
3232
3276
  "Save the finalized task plan and/or description",
3233
3277
  {
3234
- plan: z3.string().optional().describe("The task plan in markdown"),
3235
- description: z3.string().optional().describe("Updated task description")
3278
+ plan: z5.string().optional().describe("The task plan in markdown"),
3279
+ description: z5.string().optional().describe("Updated task description")
3236
3280
  },
3237
3281
  async ({ plan, description }) => {
3238
3282
  try {
@@ -3253,11 +3297,11 @@ function buildCreateSubtaskTool(connection) {
3253
3297
  "create_subtask",
3254
3298
  "Create a subtask under the current parent task. Use for breaking complex tasks into smaller pieces.",
3255
3299
  {
3256
- title: z3.string().describe("Subtask title"),
3257
- description: z3.string().optional().describe("Brief description"),
3258
- plan: z3.string().optional().describe("Implementation plan in markdown"),
3259
- ordinal: z3.number().optional().describe("Step/order number (0-based)"),
3260
- storyPointValue: z3.number().optional().describe(SP_DESCRIPTION)
3300
+ title: z5.string().describe("Subtask title"),
3301
+ description: z5.string().optional().describe("Brief description"),
3302
+ plan: z5.string().optional().describe("Implementation plan in markdown"),
3303
+ ordinal: z5.number().optional().describe("Step/order number (0-based)"),
3304
+ storyPointValue: z5.number().optional().describe(SP_DESCRIPTION)
3261
3305
  },
3262
3306
  async ({ title, description, plan, ordinal, storyPointValue }) => {
3263
3307
  try {
@@ -3283,12 +3327,12 @@ function buildUpdateSubtaskTool(connection) {
3283
3327
  "update_subtask",
3284
3328
  "Update an existing subtask's fields",
3285
3329
  {
3286
- subtaskId: z3.string().describe("The subtask ID to update"),
3287
- title: z3.string().optional(),
3288
- description: z3.string().optional(),
3289
- plan: z3.string().optional(),
3290
- ordinal: z3.number().optional(),
3291
- storyPointValue: z3.number().optional().describe(SP_DESCRIPTION)
3330
+ subtaskId: z5.string().describe("The subtask ID to update"),
3331
+ title: z5.string().optional(),
3332
+ description: z5.string().optional(),
3333
+ plan: z5.string().optional(),
3334
+ ordinal: z5.number().optional(),
3335
+ storyPointValue: z5.number().optional().describe(SP_DESCRIPTION)
3292
3336
  },
3293
3337
  async ({ subtaskId, title, description, plan, storyPointValue }) => {
3294
3338
  try {
@@ -3311,7 +3355,7 @@ function buildDeleteSubtaskTool(connection) {
3311
3355
  return defineTool(
3312
3356
  "delete_subtask",
3313
3357
  "Delete a subtask",
3314
- { subtaskId: z3.string().describe("The subtask ID to delete") },
3358
+ { subtaskId: z5.string().describe("The subtask ID to delete") },
3315
3359
  async ({ subtaskId }) => {
3316
3360
  try {
3317
3361
  await connection.call("deleteSubtask", {
@@ -3349,7 +3393,7 @@ function buildPackTools(connection) {
3349
3393
  "start_child_cloud_build",
3350
3394
  "Start a cloud build for a child task. The child must be in Open status with story points and an agent assigned.",
3351
3395
  {
3352
- childTaskId: z3.string().describe("The child task ID to start a cloud build for")
3396
+ childTaskId: z5.string().describe("The child task ID to start a cloud build for")
3353
3397
  },
3354
3398
  async ({ childTaskId }) => {
3355
3399
  try {
@@ -3369,7 +3413,7 @@ function buildPackTools(connection) {
3369
3413
  "stop_child_build",
3370
3414
  "Stop a running cloud build for a child task. Sends a stop signal to the child agent.",
3371
3415
  {
3372
- childTaskId: z3.string().describe("The child task ID whose build should be stopped")
3416
+ childTaskId: z5.string().describe("The child task ID whose build should be stopped")
3373
3417
  },
3374
3418
  async ({ childTaskId }) => {
3375
3419
  try {
@@ -3389,7 +3433,7 @@ function buildPackTools(connection) {
3389
3433
  "approve_and_merge_pr",
3390
3434
  "Approve and merge a child task's pull request. Only succeeds if all CI/CD checks are passing. Returns an error if checks are pending (retry after waiting) or failed (investigate). The child task must be in ReviewPR status.",
3391
3435
  {
3392
- childTaskId: z3.string().describe("The child task ID whose PR should be approved and merged")
3436
+ childTaskId: z5.string().describe("The child task ID whose PR should be approved and merged")
3393
3437
  },
3394
3438
  async ({ childTaskId }) => {
3395
3439
  try {
@@ -3427,7 +3471,7 @@ function buildPmTools(connection, options) {
3427
3471
  }
3428
3472
 
3429
3473
  // src/tools/discovery-tools.ts
3430
- import { z as z4 } from "zod";
3474
+ import { z as z6 } from "zod";
3431
3475
  var SP_DESCRIPTION2 = "Story point value (1=Common, 2=Magic, 3=Rare, 5=Unique)";
3432
3476
  function buildDiscoveryTools(connection) {
3433
3477
  return [
@@ -3435,10 +3479,10 @@ function buildDiscoveryTools(connection) {
3435
3479
  "update_task_properties",
3436
3480
  "Set one or more task properties in a single call. All fields are optional \u2014 only include the fields you want to update.",
3437
3481
  {
3438
- title: z4.string().optional().describe("The new task title"),
3439
- storyPointValue: z4.number().optional().describe(SP_DESCRIPTION2),
3440
- tagIds: z4.array(z4.string()).optional().describe("Array of tag IDs to assign"),
3441
- githubPRUrl: z4.string().url().optional().describe("GitHub pull request URL to link to this task")
3482
+ title: z6.string().optional().describe("The new task title"),
3483
+ storyPointValue: z6.number().optional().describe(SP_DESCRIPTION2),
3484
+ tagIds: z6.array(z6.string()).optional().describe("Array of tag IDs to assign"),
3485
+ githubPRUrl: z6.string().url().optional().describe("GitHub pull request URL to link to this task")
3442
3486
  },
3443
3487
  async ({ title, storyPointValue, tagIds, githubPRUrl }) => {
3444
3488
  try {
@@ -3467,14 +3511,14 @@ function buildDiscoveryTools(connection) {
3467
3511
  }
3468
3512
 
3469
3513
  // src/tools/code-review-tools.ts
3470
- import { z as z5 } from "zod";
3514
+ import { z as z7 } from "zod";
3471
3515
  function buildCodeReviewTools(connection) {
3472
3516
  return [
3473
3517
  defineTool(
3474
3518
  "approve_code_review",
3475
3519
  "Approve the code review. Use this when the code passes all review criteria and is ready to merge.",
3476
3520
  {
3477
- summary: z5.string().describe("Brief summary of what was reviewed and why it looks good")
3521
+ summary: z7.string().describe("Brief summary of what was reviewed and why it looks good")
3478
3522
  },
3479
3523
  async ({ summary }) => {
3480
3524
  const content = `**Code Review: Approved** :white_check_mark:
@@ -3497,15 +3541,15 @@ ${summary}`;
3497
3541
  "request_code_changes",
3498
3542
  "Request changes during code review. Use this when substantive issues are found that need to be fixed before merge.",
3499
3543
  {
3500
- issues: z5.array(
3501
- z5.object({
3502
- file: z5.string().describe("File path where the issue was found"),
3503
- line: z5.number().optional().describe("Line number (if applicable)"),
3504
- severity: z5.enum(["critical", "major", "minor"]).describe("Issue severity"),
3505
- description: z5.string().describe("What is wrong and how to fix it")
3544
+ issues: z7.array(
3545
+ z7.object({
3546
+ file: z7.string().describe("File path where the issue was found"),
3547
+ line: z7.number().optional().describe("Line number (if applicable)"),
3548
+ severity: z7.enum(["critical", "major", "minor"]).describe("Issue severity"),
3549
+ description: z7.string().describe("What is wrong and how to fix it")
3506
3550
  })
3507
3551
  ).describe("List of issues found during review"),
3508
- summary: z5.string().describe("Brief overall summary of the review findings")
3552
+ summary: z7.string().describe("Brief overall summary of the review findings")
3509
3553
  },
3510
3554
  async ({ issues, summary }) => {
3511
3555
  const issueLines = issues.map((issue) => {
@@ -3535,10 +3579,10 @@ ${issueLines}`;
3535
3579
  }
3536
3580
 
3537
3581
  // src/tools/debug-tools.ts
3538
- import { z as z8 } from "zod";
3582
+ import { z as z10 } from "zod";
3539
3583
 
3540
3584
  // src/tools/telemetry-tools.ts
3541
- import { z as z6 } from "zod";
3585
+ import { z as z8 } from "zod";
3542
3586
 
3543
3587
  // src/debug/telemetry-injector.ts
3544
3588
  var BUFFER_SIZE = 200;
@@ -3933,12 +3977,12 @@ function buildGetTelemetryTool(manager) {
3933
3977
  "debug_get_telemetry",
3934
3978
  "Query structured telemetry events (HTTP requests, database queries, Socket.IO events, errors) captured from the running dev server. Returns filtered, structured data instead of raw logs.",
3935
3979
  {
3936
- type: z6.enum(["http", "db", "socket", "error"]).optional().describe("Filter by event type"),
3937
- urlPattern: z6.string().optional().describe("Regex pattern to filter HTTP events by URL"),
3938
- minDuration: z6.number().optional().describe("Minimum duration in ms \u2014 only return events slower than this"),
3939
- errorOnly: z6.boolean().optional().describe("Only return error events and HTTP 4xx/5xx responses"),
3940
- since: z6.number().optional().describe("Only return events after this timestamp (ms since epoch)"),
3941
- limit: z6.number().optional().describe("Max events to return (default: 20, from most recent)")
3980
+ type: z8.enum(["http", "db", "socket", "error"]).optional().describe("Filter by event type"),
3981
+ urlPattern: z8.string().optional().describe("Regex pattern to filter HTTP events by URL"),
3982
+ minDuration: z8.number().optional().describe("Minimum duration in ms \u2014 only return events slower than this"),
3983
+ errorOnly: z8.boolean().optional().describe("Only return error events and HTTP 4xx/5xx responses"),
3984
+ since: z8.number().optional().describe("Only return events after this timestamp (ms since epoch)"),
3985
+ limit: z8.number().optional().describe("Max events to return (default: 20, from most recent)")
3942
3986
  },
3943
3987
  async ({ type, urlPattern, minDuration, errorOnly, since, limit }) => {
3944
3988
  const clientOrErr = requireDebugClient(manager);
@@ -4008,7 +4052,7 @@ function buildTelemetryTools(manager) {
4008
4052
  }
4009
4053
 
4010
4054
  // src/tools/client-debug-tools.ts
4011
- import { z as z7 } from "zod";
4055
+ import { z as z9 } from "zod";
4012
4056
  function requirePlaywrightClient(manager) {
4013
4057
  if (!manager.isClientDebugMode()) {
4014
4058
  return "Client debug mode is not active. Use debug_enter_mode with clientSide: true first.";
@@ -4028,11 +4072,11 @@ function buildClientBreakpointTools(manager) {
4028
4072
  "debug_set_client_breakpoint",
4029
4073
  "Set a breakpoint in client-side code running in the headless Chromium browser. V8 resolves source maps automatically, so original .tsx/.ts file paths work. Use this for React components, client utilities, and browser-side code.",
4030
4074
  {
4031
- file: z7.string().describe(
4075
+ file: z9.string().describe(
4032
4076
  "Original source file path (e.g., src/components/App.tsx) \u2014 source maps resolve automatically"
4033
4077
  ),
4034
- line: z7.number().describe("Line number (1-based) in the original source file"),
4035
- condition: z7.string().optional().describe("JavaScript condition expression \u2014 breakpoint only triggers when truthy")
4078
+ line: z9.number().describe("Line number (1-based) in the original source file"),
4079
+ condition: z9.string().optional().describe("JavaScript condition expression \u2014 breakpoint only triggers when truthy")
4036
4080
  },
4037
4081
  async ({ file, line, condition }) => {
4038
4082
  const clientOrErr = requirePlaywrightClient(manager);
@@ -4054,7 +4098,7 @@ Breakpoint ID: ${breakpointId}${sourceMapNote}`
4054
4098
  "debug_remove_client_breakpoint",
4055
4099
  "Remove a previously set client-side breakpoint by its ID.",
4056
4100
  {
4057
- breakpointId: z7.string().describe("The breakpoint ID returned by debug_set_client_breakpoint")
4101
+ breakpointId: z9.string().describe("The breakpoint ID returned by debug_set_client_breakpoint")
4058
4102
  },
4059
4103
  async ({ breakpointId }) => {
4060
4104
  const clientOrErr = requirePlaywrightClient(manager);
@@ -4134,8 +4178,8 @@ ${JSON.stringify(queuedHits, null, 2)}`
4134
4178
  "debug_evaluate_client",
4135
4179
  "Evaluate a JavaScript expression in the client-side browser context. When paused at a client breakpoint, evaluates in the paused scope. Can access DOM, window, React internals, etc.",
4136
4180
  {
4137
- expression: z7.string().describe("JavaScript expression to evaluate in the browser context"),
4138
- frameIndex: z7.number().optional().describe("Call stack frame index (0 = top frame). Defaults to the top frame.")
4181
+ expression: z9.string().describe("JavaScript expression to evaluate in the browser context"),
4182
+ frameIndex: z9.number().optional().describe("Call stack frame index (0 = top frame). Defaults to the top frame.")
4139
4183
  },
4140
4184
  async ({ expression, frameIndex }) => {
4141
4185
  const clientOrErr = requirePlaywrightClient(manager);
@@ -4208,7 +4252,7 @@ function buildClientInteractionTools(manager) {
4208
4252
  "debug_navigate_client",
4209
4253
  "Navigate the headless browser to a specific URL. Use this to reproduce specific flows or visit different pages.",
4210
4254
  {
4211
- url: z7.string().describe("URL to navigate to (e.g., http://localhost:3000/dashboard)")
4255
+ url: z9.string().describe("URL to navigate to (e.g., http://localhost:3000/dashboard)")
4212
4256
  },
4213
4257
  async ({ url }) => {
4214
4258
  const clientOrErr = requirePlaywrightClient(manager);
@@ -4225,7 +4269,7 @@ function buildClientInteractionTools(manager) {
4225
4269
  "debug_click_client",
4226
4270
  "Click an element on the page in the headless browser. Use CSS selectors to target elements. Useful for reproducing bugs by interacting with the UI programmatically.",
4227
4271
  {
4228
- selector: z7.string().describe(
4272
+ selector: z9.string().describe(
4229
4273
  "CSS selector of the element to click (e.g., 'button.submit', '#login-form input[type=submit]')"
4230
4274
  )
4231
4275
  },
@@ -4247,8 +4291,8 @@ function buildClientConsoleTool(manager) {
4247
4291
  "debug_get_client_console",
4248
4292
  "Get console messages captured from the headless browser. Includes console.log, warn, error, etc.",
4249
4293
  {
4250
- level: z7.string().optional().describe("Filter by console level: log, warn, error, info, debug"),
4251
- limit: z7.number().optional().describe("Maximum number of recent messages to return (default: all)")
4294
+ level: z9.string().optional().describe("Filter by console level: log, warn, error, info, debug"),
4295
+ limit: z9.number().optional().describe("Maximum number of recent messages to return (default: all)")
4252
4296
  },
4253
4297
  // oxlint-disable-next-line require-await
4254
4298
  async ({ level, limit }) => {
@@ -4275,8 +4319,8 @@ function buildClientNetworkTool(manager) {
4275
4319
  "debug_get_client_network",
4276
4320
  "Get network requests captured from the headless browser. Shows URLs, methods, status codes, and timing.",
4277
4321
  {
4278
- filter: z7.string().optional().describe("Regex pattern to filter requests by URL"),
4279
- limit: z7.number().optional().describe("Maximum number of recent requests to return (default: all)")
4322
+ filter: z9.string().optional().describe("Regex pattern to filter requests by URL"),
4323
+ limit: z9.number().optional().describe("Maximum number of recent requests to return (default: all)")
4280
4324
  },
4281
4325
  // oxlint-disable-next-line require-await
4282
4326
  async ({ filter, limit }) => {
@@ -4304,7 +4348,7 @@ function buildClientErrorsTool(manager) {
4304
4348
  "debug_get_client_errors",
4305
4349
  "Get uncaught errors captured from the headless browser. Includes error messages and source-mapped stack traces.",
4306
4350
  {
4307
- limit: z7.number().optional().describe("Maximum number of recent errors to return (default: all)")
4351
+ limit: z9.number().optional().describe("Maximum number of recent errors to return (default: all)")
4308
4352
  },
4309
4353
  // oxlint-disable-next-line require-await
4310
4354
  async ({ limit }) => {
@@ -4398,12 +4442,12 @@ function buildDebugLifecycleTools(manager) {
4398
4442
  "debug_enter_mode",
4399
4443
  "Activate debug mode: restarts the dev server with Node.js --inspect flag and connects the CDP debugger. Optionally launch a headless Chromium browser for client-side debugging. Use serverSide for backend breakpoints, clientSide for frontend breakpoints, or both for full-stack.",
4400
4444
  {
4401
- hypothesis: z8.string().optional().describe("Your hypothesis about the bug \u2014 helps track debugging intent"),
4402
- serverSide: z8.boolean().optional().describe(
4445
+ hypothesis: z10.string().optional().describe("Your hypothesis about the bug \u2014 helps track debugging intent"),
4446
+ serverSide: z10.boolean().optional().describe(
4403
4447
  "Enable server-side Node.js debugging (default: true if clientSide is not set)"
4404
4448
  ),
4405
- clientSide: z8.boolean().optional().describe("Enable client-side browser debugging via headless Chromium + Playwright"),
4406
- previewUrl: z8.string().optional().describe(
4449
+ clientSide: z10.boolean().optional().describe("Enable client-side browser debugging via headless Chromium + Playwright"),
4450
+ previewUrl: z10.string().optional().describe(
4407
4451
  "Preview URL for client-side debugging (e.g., http://localhost:3000). Required when clientSide is true."
4408
4452
  )
4409
4453
  },
@@ -4439,9 +4483,9 @@ function buildBreakpointTools(manager) {
4439
4483
  "debug_set_breakpoint",
4440
4484
  "Set a breakpoint at the specified file and line number. Optionally provide a condition expression that must evaluate to true for the breakpoint to pause execution.",
4441
4485
  {
4442
- file: z8.string().describe("Absolute or relative file path to set the breakpoint in"),
4443
- line: z8.number().describe("Line number (1-based) to set the breakpoint on"),
4444
- condition: z8.string().optional().describe("JavaScript condition expression \u2014 breakpoint only triggers when truthy")
4486
+ file: z10.string().describe("Absolute or relative file path to set the breakpoint in"),
4487
+ line: z10.number().describe("Line number (1-based) to set the breakpoint on"),
4488
+ condition: z10.string().optional().describe("JavaScript condition expression \u2014 breakpoint only triggers when truthy")
4445
4489
  },
4446
4490
  async ({ file, line, condition }) => {
4447
4491
  const clientOrErr = requireDebugClient2(manager);
@@ -4463,7 +4507,7 @@ Breakpoint ID: ${breakpointId}`
4463
4507
  "debug_remove_breakpoint",
4464
4508
  "Remove a previously set breakpoint by its ID.",
4465
4509
  {
4466
- breakpointId: z8.string().describe("The breakpoint ID returned by debug_set_breakpoint")
4510
+ breakpointId: z10.string().describe("The breakpoint ID returned by debug_set_breakpoint")
4467
4511
  },
4468
4512
  async ({ breakpointId }) => {
4469
4513
  const clientOrErr = requireDebugClient2(manager);
@@ -4544,8 +4588,8 @@ ${JSON.stringify(queuedHits, null, 2)}`
4544
4588
  "debug_evaluate",
4545
4589
  "Evaluate a JavaScript expression in the current paused scope (or globally if not paused). When paused, use frameIndex to evaluate in a specific call frame.",
4546
4590
  {
4547
- expression: z8.string().describe("The JavaScript expression to evaluate"),
4548
- frameIndex: z8.number().optional().describe("Call stack frame index (0 = top frame). Defaults to the top frame.")
4591
+ expression: z10.string().describe("The JavaScript expression to evaluate"),
4592
+ frameIndex: z10.number().optional().describe("Call stack frame index (0 = top frame). Defaults to the top frame.")
4549
4593
  },
4550
4594
  async ({ expression, frameIndex }) => {
4551
4595
  const clientOrErr = requireDebugClient2(manager);
@@ -4573,12 +4617,12 @@ function buildProbeManagementTools(manager) {
4573
4617
  "debug_add_probe",
4574
4618
  "Add a debug probe at a specific code location. Captures expression values each time the line executes \u2014 without pausing or modifying source files. Like console.log but better: structured, no diff pollution, auto-cleaned on debug exit.",
4575
4619
  {
4576
- file: z8.string().describe("File path to probe"),
4577
- line: z8.number().describe("Line number (1-based) to probe"),
4578
- expressions: z8.array(z8.string()).describe(
4620
+ file: z10.string().describe("File path to probe"),
4621
+ line: z10.number().describe("Line number (1-based) to probe"),
4622
+ expressions: z10.array(z10.string()).describe(
4579
4623
  'JavaScript expressions to capture when the line executes (e.g., ["req.params.id", "user.role"])'
4580
4624
  ),
4581
- label: z8.string().optional().describe("Optional label for this probe (defaults to file:line)")
4625
+ label: z10.string().optional().describe("Optional label for this probe (defaults to file:line)")
4582
4626
  },
4583
4627
  async ({ file, line, expressions, label }) => {
4584
4628
  const clientOrErr = requireDebugClient2(manager);
@@ -4603,7 +4647,7 @@ Trigger the code path, then use debug_get_probe_results to see captured values.`
4603
4647
  "debug_remove_probe",
4604
4648
  "Remove a previously set debug probe by its ID.",
4605
4649
  {
4606
- probeId: z8.string().describe("The probe ID returned by debug_add_probe")
4650
+ probeId: z10.string().describe("The probe ID returned by debug_add_probe")
4607
4651
  },
4608
4652
  async ({ probeId }) => {
4609
4653
  const clientOrErr = requireDebugClient2(manager);
@@ -4643,9 +4687,9 @@ function buildProbeResultTools(manager) {
4643
4687
  "debug_get_probe_results",
4644
4688
  "Fetch captured probe hit data. Returns expression values from each time a probed line executed.",
4645
4689
  {
4646
- probeId: z8.string().optional().describe("Filter results by probe ID (resolves to its label)"),
4647
- label: z8.string().optional().describe("Filter results by probe label"),
4648
- limit: z8.number().optional().describe("Maximum number of recent hits to return (default: all)")
4690
+ probeId: z10.string().optional().describe("Filter results by probe ID (resolves to its label)"),
4691
+ label: z10.string().optional().describe("Filter results by probe label"),
4692
+ limit: z10.number().optional().describe("Maximum number of recent hits to return (default: all)")
4649
4693
  },
4650
4694
  async ({ probeId, label, limit }) => {
4651
4695
  const clientOrErr = requireDebugClient2(manager);
@@ -6008,7 +6052,6 @@ var SessionRunner = class _SessionRunner {
6008
6052
  stopped = false;
6009
6053
  hasCompleted = false;
6010
6054
  interrupted = false;
6011
- _isReviewing = false;
6012
6055
  taskContext = null;
6013
6056
  fullContext = null;
6014
6057
  queryBridge = null;
@@ -6125,9 +6168,6 @@ var SessionRunner = class _SessionRunner {
6125
6168
  if (!this.stopped && this.pendingMessages.length === 0) {
6126
6169
  await this.maybeSendPRNudge();
6127
6170
  }
6128
- if (!this.stopped && this.pendingMessages.length === 0) {
6129
- await this.maybeTransitionToReview();
6130
- }
6131
6171
  if (!this.stopped) {
6132
6172
  process.stderr.write(
6133
6173
  `[conveyor-agent] Listening for messages (mode: ${this.mode.effectiveMode})
@@ -6342,38 +6382,8 @@ var SessionRunner = class _SessionRunner {
6342
6382
  await this.refreshTaskContext();
6343
6383
  }
6344
6384
  }
6345
- // ── Same-box review transition ─────────────────────────────────
6346
- async maybeTransitionToReview() {
6347
- if (!this.config.isAuto || this._isReviewing) return;
6348
- await this.refreshTaskContext();
6349
- if (!this.taskContext?.githubPRUrl || this.taskContext.status !== "ReviewPR") return;
6350
- this._isReviewing = true;
6351
- try {
6352
- this.mode.handleModeChange("review");
6353
- process.stderr.write(
6354
- `[conveyor-agent] Auto-transitioning to review mode (same-box code review)
6355
- `
6356
- );
6357
- this.connection.sendEvent({
6358
- type: "mode_transition",
6359
- from: "building",
6360
- to: "review"
6361
- });
6362
- this.connection.emitModeChanged("review");
6363
- const reviewPrompt = [
6364
- `You have just created a PR for this task. Now perform a self-review of your changes.`,
6365
- `Run \`git diff ${this.fullContext?.baseBranch ?? "dev"}..HEAD\` to see all changes.`,
6366
- `Review the changes according to the review criteria in your instructions.`,
6367
- `If you find issues, fix them directly, commit, and push. Then approve the review.`,
6368
- `If everything looks good, approve the review using \`approve_code_review\`.`
6369
- ].join("\n");
6370
- await this.setState("running");
6371
- await this.executeQuery(reviewPrompt);
6372
- } finally {
6373
- this._isReviewing = false;
6374
- }
6375
- }
6376
6385
  // ── Context & bridge construction ────────────────────────────────
6386
+ // oxlint-disable-next-line complexity
6377
6387
  buildFullContext(ctx) {
6378
6388
  const chatHistory = mapChatHistory(ctx.chatHistory);
6379
6389
  return {
@@ -6400,7 +6410,8 @@ var SessionRunner = class _SessionRunner {
6400
6410
  projectTags: ctx.projectTags ?? void 0,
6401
6411
  taskTagIds: ctx.taskTagIds ?? void 0,
6402
6412
  projectObjectives: ctx.projectObjectives ?? void 0,
6403
- incidents: ctx.incidents ?? void 0
6413
+ incidents: ctx.incidents ?? void 0,
6414
+ agentSettings: ctx.agentSettings ?? null
6404
6415
  };
6405
6416
  }
6406
6417
  createQueryBridge() {
@@ -6451,6 +6462,9 @@ var SessionRunner = class _SessionRunner {
6451
6462
  this.connection.emitModeChanged(this.mode.effectiveMode);
6452
6463
  this.softStop();
6453
6464
  } else if (action.type === "restart_query") {
6465
+ if (this.fullContext && action.newMode === "review") {
6466
+ this.fullContext.claudeSessionId = null;
6467
+ }
6454
6468
  this.connection.emitModeChanged(action.newMode);
6455
6469
  this.softStop();
6456
6470
  }
@@ -6908,7 +6922,7 @@ import * as path from "path";
6908
6922
  import { fileURLToPath } from "url";
6909
6923
 
6910
6924
  // src/tools/project-tools.ts
6911
- import { z as z9 } from "zod";
6925
+ import { z as z11 } from "zod";
6912
6926
  function buildTaskListTools(connection) {
6913
6927
  const projectId = connection.projectId;
6914
6928
  return [
@@ -6916,9 +6930,9 @@ function buildTaskListTools(connection) {
6916
6930
  "list_tasks",
6917
6931
  "List tasks in the project. Optionally filter by status or assignee.",
6918
6932
  {
6919
- status: z9.string().optional().describe("Filter by task status"),
6920
- assigneeId: z9.string().optional().describe("Filter by assigned user ID"),
6921
- limit: z9.number().optional().describe("Max number of tasks to return (default 50)")
6933
+ status: z11.string().optional().describe("Filter by task status"),
6934
+ assigneeId: z11.string().optional().describe("Filter by assigned user ID"),
6935
+ limit: z11.number().optional().describe("Max number of tasks to return (default 50)")
6922
6936
  },
6923
6937
  async (params) => {
6924
6938
  try {
@@ -6935,7 +6949,7 @@ function buildTaskListTools(connection) {
6935
6949
  defineTool(
6936
6950
  "get_task",
6937
6951
  "Get detailed information about a task including chat messages, child tasks, and session.",
6938
- { task_id: z9.string().describe("The task ID to look up") },
6952
+ { task_id: z11.string().describe("The task ID to look up") },
6939
6953
  async ({ task_id }) => {
6940
6954
  try {
6941
6955
  const task = await connection.call("getProjectTask", { projectId, taskId: task_id });
@@ -6952,10 +6966,10 @@ function buildTaskListTools(connection) {
6952
6966
  "search_tasks",
6953
6967
  "Search tasks by tags, text query, or status filters.",
6954
6968
  {
6955
- tagNames: z9.array(z9.string()).optional().describe("Filter by tag names"),
6956
- searchQuery: z9.string().optional().describe("Text search in title/description"),
6957
- statusFilters: z9.array(z9.string()).optional().describe("Filter by statuses"),
6958
- limit: z9.number().optional().describe("Max results (default 20)")
6969
+ tagNames: z11.array(z11.string()).optional().describe("Filter by tag names"),
6970
+ searchQuery: z11.string().optional().describe("Text search in title/description"),
6971
+ statusFilters: z11.array(z11.string()).optional().describe("Filter by statuses"),
6972
+ limit: z11.number().optional().describe("Max results (default 20)")
6959
6973
  },
6960
6974
  async (params) => {
6961
6975
  try {
@@ -7015,11 +7029,11 @@ function buildMutationTools(connection) {
7015
7029
  "create_task",
7016
7030
  "Create a new task in the project.",
7017
7031
  {
7018
- title: z9.string().describe("Task title"),
7019
- description: z9.string().optional().describe("Task description"),
7020
- plan: z9.string().optional().describe("Implementation plan in markdown"),
7021
- status: z9.string().optional().describe("Initial status (default: Planning)"),
7022
- isBug: z9.boolean().optional().describe("Whether this is a bug report")
7032
+ title: z11.string().describe("Task title"),
7033
+ description: z11.string().optional().describe("Task description"),
7034
+ plan: z11.string().optional().describe("Implementation plan in markdown"),
7035
+ status: z11.string().optional().describe("Initial status (default: Planning)"),
7036
+ isBug: z11.boolean().optional().describe("Whether this is a bug report")
7023
7037
  },
7024
7038
  async (params) => {
7025
7039
  try {
@@ -7036,12 +7050,12 @@ function buildMutationTools(connection) {
7036
7050
  "update_task",
7037
7051
  "Update an existing task's title, description, plan, status, or assignee.",
7038
7052
  {
7039
- task_id: z9.string().describe("The task ID to update"),
7040
- title: z9.string().optional().describe("New title"),
7041
- description: z9.string().optional().describe("New description"),
7042
- plan: z9.string().optional().describe("New plan in markdown"),
7043
- status: z9.string().optional().describe("New status"),
7044
- assignedUserId: z9.string().nullable().optional().describe("Assign to user ID, or null to unassign")
7053
+ task_id: z11.string().describe("The task ID to update"),
7054
+ title: z11.string().optional().describe("New title"),
7055
+ description: z11.string().optional().describe("New description"),
7056
+ plan: z11.string().optional().describe("New plan in markdown"),
7057
+ status: z11.string().optional().describe("New status"),
7058
+ assignedUserId: z11.string().nullable().optional().describe("Assign to user ID, or null to unassign")
7045
7059
  },
7046
7060
  async ({ task_id, ...fields }) => {
7047
7061
  try {
@@ -7911,4 +7925,4 @@ export {
7911
7925
  loadForwardPorts,
7912
7926
  loadConveyorConfig
7913
7927
  };
7914
- //# sourceMappingURL=chunk-3O4P2KST.js.map
7928
+ //# sourceMappingURL=chunk-5ZINKEUR.js.map