Problem: Provider type (github/gitlab) was auto-detected on every createProvider() call but never persisted, causing loss of configuration after session restart. Solution: - Add 'provider' field to Project type - Store detected provider type during project registration - Pass stored provider type to createProvider() calls Changes: - lib/projects.ts: Add provider field to Project type - lib/tools/project-register.ts: Save providerType to projects.json - lib/tool-helpers.ts: Pass project.provider to createProvider - lib/services/*.ts: Pass project.provider to createProvider Impact: Issue tracker source now persists across restarts. Existing projects will auto-detect on next use and should be re-registered or manually edited to add provider field. Fixes #193
This commit is contained in:
@@ -22,6 +22,8 @@ export type Project = {
|
||||
deployBranch: string;
|
||||
/** Messaging channel for this project's group (e.g. "telegram", "whatsapp", "discord", "slack"). Stored at registration time. */
|
||||
channel?: string;
|
||||
/** Issue tracker provider type (github or gitlab). Auto-detected at registration, stored for reuse. */
|
||||
provider?: "github" | "gitlab";
|
||||
/** Project-level role execution: parallel (DEV+QA can run simultaneously) or sequential (only one role at a time). Default: parallel */
|
||||
roleExecution?: "parallel" | "sequential";
|
||||
maxDevWorkers?: number;
|
||||
|
||||
@@ -304,7 +304,7 @@ async function performHealthPass(
|
||||
project: any,
|
||||
sessions: SessionLookup | null,
|
||||
): Promise<number> {
|
||||
const { provider } = await createProvider({ repo: project.repo });
|
||||
const { provider } = await createProvider({ repo: project.repo, provider: project.provider });
|
||||
let fixedCount = 0;
|
||||
|
||||
for (const role of getAllRoleIds()) {
|
||||
|
||||
@@ -110,7 +110,7 @@ export async function fetchProjectQueues(
|
||||
project: Project,
|
||||
workflow: WorkflowConfig = DEFAULT_WORKFLOW,
|
||||
): Promise<Record<string, Issue[]>> {
|
||||
const { provider } = await createProvider({ repo: project.repo });
|
||||
const { provider } = await createProvider({ repo: project.repo, provider: project.provider });
|
||||
const queueLabels = getQueueLabelsWithPriority(workflow);
|
||||
const queues: Record<string, Issue[]> = {};
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ export async function projectTick(opts: {
|
||||
const project = (await readProjects(workspaceDir)).projects[groupId];
|
||||
if (!project) return { pickups: [], skipped: [{ reason: `Project not found: ${groupId}` }] };
|
||||
|
||||
const provider = opts.provider ?? (await createProvider({ repo: project.repo })).provider;
|
||||
const provider = opts.provider ?? (await createProvider({ repo: project.repo, provider: project.provider })).provider;
|
||||
const roleExecution = project.roleExecution ?? "parallel";
|
||||
const roles: Role[] = targetRole ? [targetRole] : getAllRoleIds() as Role[];
|
||||
|
||||
|
||||
@@ -36,9 +36,10 @@ export async function resolveProject(
|
||||
|
||||
/**
|
||||
* Create an issue provider for a project.
|
||||
* Uses stored provider type from project config if available, otherwise auto-detects.
|
||||
*/
|
||||
export async function resolveProvider(project: Project): Promise<ProviderWithType> {
|
||||
return createProvider({ repo: project.repo });
|
||||
return createProvider({ repo: project.repo, provider: project.provider });
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -161,6 +161,7 @@ export function createProjectRegisterTool() {
|
||||
baseBranch,
|
||||
deployBranch,
|
||||
channel,
|
||||
provider: providerType,
|
||||
roleExecution,
|
||||
dev: emptyWorkerState([...getLevelsForRole("dev")]),
|
||||
qa: emptyWorkerState([...getLevelsForRole("qa")]),
|
||||
|
||||
Reference in New Issue
Block a user