@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.
- package/dist/{chunk-3O4P2KST.js → chunk-5ZINKEUR.js} +334 -320
- package/dist/chunk-5ZINKEUR.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-3O4P2KST.js.map +0 -1
|
@@ -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
|
|
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:
|
|
2594
|
-
task_id:
|
|
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:
|
|
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:
|
|
2662
|
-
source:
|
|
2663
|
-
limit:
|
|
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:
|
|
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:
|
|
2755
|
-
source:
|
|
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:
|
|
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:
|
|
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:
|
|
2806
|
-
end_time:
|
|
2807
|
-
severity:
|
|
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:
|
|
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:
|
|
2873
|
-
limit:
|
|
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:
|
|
2899
|
-
task_id:
|
|
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:
|
|
2927
|
-
task_id:
|
|
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:
|
|
2959
|
-
body:
|
|
2960
|
-
branch:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
3089
|
-
description:
|
|
3090
|
-
plan:
|
|
3091
|
-
story_point_value:
|
|
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:
|
|
3119
|
-
description:
|
|
3120
|
-
tag_names:
|
|
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:
|
|
3150
|
-
value:
|
|
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:
|
|
3174
|
-
reason:
|
|
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
|
|
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:
|
|
3235
|
-
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:
|
|
3257
|
-
description:
|
|
3258
|
-
plan:
|
|
3259
|
-
ordinal:
|
|
3260
|
-
storyPointValue:
|
|
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:
|
|
3287
|
-
title:
|
|
3288
|
-
description:
|
|
3289
|
-
plan:
|
|
3290
|
-
ordinal:
|
|
3291
|
-
storyPointValue:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
3439
|
-
storyPointValue:
|
|
3440
|
-
tagIds:
|
|
3441
|
-
githubPRUrl:
|
|
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
|
|
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:
|
|
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:
|
|
3501
|
-
|
|
3502
|
-
file:
|
|
3503
|
-
line:
|
|
3504
|
-
severity:
|
|
3505
|
-
description:
|
|
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:
|
|
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
|
|
3582
|
+
import { z as z10 } from "zod";
|
|
3539
3583
|
|
|
3540
3584
|
// src/tools/telemetry-tools.ts
|
|
3541
|
-
import { z as
|
|
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:
|
|
3937
|
-
urlPattern:
|
|
3938
|
-
minDuration:
|
|
3939
|
-
errorOnly:
|
|
3940
|
-
since:
|
|
3941
|
-
limit:
|
|
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
|
|
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:
|
|
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:
|
|
4035
|
-
condition:
|
|
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:
|
|
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:
|
|
4138
|
-
frameIndex:
|
|
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:
|
|
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:
|
|
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:
|
|
4251
|
-
limit:
|
|
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:
|
|
4279
|
-
limit:
|
|
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:
|
|
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:
|
|
4402
|
-
serverSide:
|
|
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:
|
|
4406
|
-
previewUrl:
|
|
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:
|
|
4443
|
-
line:
|
|
4444
|
-
condition:
|
|
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:
|
|
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:
|
|
4548
|
-
frameIndex:
|
|
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:
|
|
4577
|
-
line:
|
|
4578
|
-
expressions:
|
|
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:
|
|
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:
|
|
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:
|
|
4647
|
-
label:
|
|
4648
|
-
limit:
|
|
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
|
|
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:
|
|
6920
|
-
assigneeId:
|
|
6921
|
-
limit:
|
|
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:
|
|
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:
|
|
6956
|
-
searchQuery:
|
|
6957
|
-
statusFilters:
|
|
6958
|
-
limit:
|
|
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:
|
|
7019
|
-
description:
|
|
7020
|
-
plan:
|
|
7021
|
-
status:
|
|
7022
|
-
isBug:
|
|
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:
|
|
7040
|
-
title:
|
|
7041
|
-
description:
|
|
7042
|
-
plan:
|
|
7043
|
-
status:
|
|
7044
|
-
assignedUserId:
|
|
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-
|
|
7928
|
+
//# sourceMappingURL=chunk-5ZINKEUR.js.map
|