diff --git a/apps/server/src/lib/worktree-metadata.ts b/apps/server/src/lib/worktree-metadata.ts index ab0ba67c..4742a5b0 100644 --- a/apps/server/src/lib/worktree-metadata.ts +++ b/apps/server/src/lib/worktree-metadata.ts @@ -5,22 +5,14 @@ import * as secureFs from './secure-fs.js'; import * as path from 'path'; +import type { PRState, WorktreePRInfo } from '@automaker/types'; + +// Re-export types for backwards compatibility +export type { PRState, WorktreePRInfo }; /** Maximum length for sanitized branch names in filesystem paths */ const MAX_SANITIZED_BRANCH_PATH_LENGTH = 200; -/** GitHub PR states as returned by the GitHub API */ -export type PRState = 'OPEN' | 'MERGED' | 'CLOSED'; - -export interface WorktreePRInfo { - number: number; - url: string; - title: string; - /** PR state: OPEN, MERGED, or CLOSED */ - state: PRState; - createdAt: string; -} - export interface WorktreeMetadata { branch: string; createdAt: string; diff --git a/apps/server/src/routes/worktree/routes/create-pr.ts b/apps/server/src/routes/worktree/routes/create-pr.ts index 25211854..87777c69 100644 --- a/apps/server/src/routes/worktree/routes/create-pr.ts +++ b/apps/server/src/routes/worktree/routes/create-pr.ts @@ -13,6 +13,7 @@ import { } from '../common.js'; import { updateWorktreePRInfo } from '../../../lib/worktree-metadata.js'; import { createLogger } from '@automaker/utils'; +import { validatePRState } from '@automaker/types'; const logger = createLogger('CreatePR'); @@ -273,7 +274,7 @@ export function createCreatePRHandler() { number: existingPr.number, url: existingPr.url, title: existingPr.title || title, - state: existingPr.state || 'OPEN', + state: validatePRState(existingPr.state), createdAt: new Date().toISOString(), }); logger.debug( @@ -359,7 +360,7 @@ export function createCreatePRHandler() { number: existingPr.number, url: existingPr.url, title: existingPr.title || title, - state: existingPr.state || 'OPEN', + state: validatePRState(existingPr.state), createdAt: new Date().toISOString(), }); logger.debug(`Fetched and stored existing PR: #${existingPr.number}`); diff --git a/apps/server/src/routes/worktree/routes/list.ts b/apps/server/src/routes/worktree/routes/list.ts index a911fce7..e82e5c14 100644 --- a/apps/server/src/routes/worktree/routes/list.ts +++ b/apps/server/src/routes/worktree/routes/list.ts @@ -18,9 +18,9 @@ import { readAllWorktreeMetadata, updateWorktreePRInfo, type WorktreePRInfo, - type PRState, } from '../../../lib/worktree-metadata.js'; import { createLogger } from '@automaker/utils'; +import { validatePRState } from '@automaker/types'; import { checkGitHubRemote, type GitHubRemoteStatus, @@ -221,7 +221,7 @@ async function fetchGitHubPRs(projectPath: string): Promise s === state) ?? 'OPEN'; +} + +/** PR information stored in worktree metadata */ +export interface WorktreePRInfo { + number: number; + url: string; + title: string; + /** PR state: OPEN, MERGED, or CLOSED */ + state: PRState; + createdAt: string; +}