(params: {
taskService: ReturnType<typeof requireTaskService>;
createdTasks: readonly SpawnedTaskInfo[];
completedReports?: readonly CompletedTaskInfo[];
})
| 317 | } |
| 318 | |
| 319 | function normalizePendingTaskStatuses(params: { |
| 320 | taskService: ReturnType<typeof requireTaskService>; |
| 321 | createdTasks: readonly SpawnedTaskInfo[]; |
| 322 | completedReports?: readonly CompletedTaskInfo[]; |
| 323 | }): PendingTaskInfo[] { |
| 324 | const completedTaskIds = new Set((params.completedReports ?? []).map((report) => report.taskId)); |
| 325 | return params.createdTasks.map((createdTask) => { |
| 326 | if (completedTaskIds.has(createdTask.taskId)) { |
| 327 | return { |
| 328 | taskId: createdTask.taskId, |
| 329 | status: "completed", |
| 330 | groupKind: createdTask.groupKind, |
| 331 | label: createdTask.label, |
| 332 | }; |
| 333 | } |
| 334 | |
| 335 | const currentStatus = |
| 336 | params.taskService.getAgentTaskStatus(createdTask.taskId) ?? createdTask.status; |
| 337 | return { |
| 338 | taskId: createdTask.taskId, |
| 339 | status: |
| 340 | currentStatus === "queued" |
| 341 | ? "queued" |
| 342 | : currentStatus === "starting" |
| 343 | ? "starting" |
| 344 | : currentStatus === "interrupted" |
| 345 | ? "interrupted" |
| 346 | : "running", |
| 347 | groupKind: createdTask.groupKind, |
| 348 | label: createdTask.label, |
| 349 | }; |
| 350 | }); |
| 351 | } |
| 352 | |
| 353 | export const createTaskTool: ToolFactory = (config: ToolConfiguration) => { |
| 354 | // Only advertise the `isolation` parameter on runtimes where sharing the parent checkout is |
no test coverage detected