Skip to content

Commit 73db754

Browse files
feat: send repositories array to PostHog API for multi-repo tasks
Wire the client to send the new `repositories` array format when creating multi-repo tasks. Single-repo tasks still use the legacy `repository` string for backward compat. - posthogClient.createTask: accepts `repositories` field - TaskCreationSaga.createTask: detects additional repos, sends repositories array when multiple repos are present - duplicateTask: preserves repositories array Generated-By: PostHog Code Task-Id: 230ec8e6-6781-43b4-ae30-ea24faa410dc
1 parent 0b9c854 commit 73db754

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

apps/code/src/renderer/api/posthogClient.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,14 @@ export class PostHogAPIClient {
395395
async createTask(
396396
options: Pick<Task, "description"> &
397397
Partial<
398-
Pick<Task, "title" | "repository" | "json_schema" | "origin_product">
398+
Pick<
399+
Task,
400+
| "title"
401+
| "repository"
402+
| "repositories"
403+
| "json_schema"
404+
| "origin_product"
405+
>
399406
> & {
400407
github_integration?: number | null;
401408
},
@@ -438,7 +445,9 @@ export class PostHogAPIClient {
438445
return this.createTask({
439446
description: task.description ?? "",
440447
title: task.title,
441-
repository: task.repository,
448+
// Use repositories array if available, fall back to legacy field
449+
repositories: task.repositories,
450+
repository: task.repositories?.length ? undefined : task.repository,
442451
json_schema: task.json_schema,
443452
origin_product: task.origin_product,
444453
github_integration: task.github_integration,

apps/code/src/renderer/sagas/task/task-creation.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,12 +436,37 @@ export class TaskCreationSaga extends Saga<
436436
}
437437
}
438438

439+
// Detect additional repos for multi-repo tasks
440+
const additionalRepoNames: string[] = [];
441+
if (input.additionalRepos) {
442+
for (const repo of input.additionalRepos) {
443+
const detected = await trpcClient.git.detectRepo.query({
444+
directoryPath: repo.repoPath,
445+
});
446+
if (detected) {
447+
additionalRepoNames.push(
448+
`${detected.organization}/${detected.repository}`,
449+
);
450+
}
451+
}
452+
}
453+
454+
// Use repositories array when we have multiple repos
455+
const hasMultipleRepos = repository && additionalRepoNames.length > 0;
456+
439457
return this.step({
440458
name: "task_creation",
441459
execute: async () => {
442460
const result = await this.deps.posthogClient.createTask({
443461
description: input.content ?? "",
444-
repository: repository ?? undefined,
462+
// Send repositories array for multi-repo, legacy field for single-repo
463+
repositories: hasMultipleRepos
464+
? [
465+
{ repository: repository! },
466+
...additionalRepoNames.map((r) => ({ repository: r })),
467+
]
468+
: undefined,
469+
repository: hasMultipleRepos ? undefined : (repository ?? undefined),
445470
github_integration:
446471
input.workspaceMode === "cloud"
447472
? input.githubIntegrationId

0 commit comments

Comments
 (0)