fix: make project field handling consistent in metadata functions

Fixes type contract violation between SessionMetadata interface and
metadata.ts implementation:

1. readMetadata(): Add fallback for required project field (project: raw["project"] ?? "")
   - Consistent with other required fields (worktree, branch, status)
   - Returns empty string for legacy files (caught by session-manager validation)

2. writeMetadata(): Write project unconditionally with other required fields
   - Moved from conditional section (if metadata.project) to unconditional
   - Consistent with worktree/branch/status handling

This ensures the implementation matches the type definition where project
is required (not optional), while maintaining backward compatibility via
empty string fallback and downstream validation.

Addresses bugbot comment: "Type change leaves readMetadata and writeMetadata
inconsistent"

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Prateek 2026-02-16 10:01:54 +05:30
parent 21e746e393
commit b79c4b8e82
1 changed files with 2 additions and 2 deletions

View File

@ -82,13 +82,13 @@ export function readMetadata(dataDir: string, sessionId: SessionId): SessionMeta
const raw = parseMetadataFile(content);
return {
project: raw["project"] ?? "",
worktree: raw["worktree"] ?? "",
branch: raw["branch"] ?? "",
status: raw["status"] ?? "unknown",
issue: raw["issue"],
pr: raw["pr"],
summary: raw["summary"],
project: raw["project"],
createdAt: raw["createdAt"],
runtimeHandle: raw["runtimeHandle"],
};
@ -118,6 +118,7 @@ export function writeMetadata(
mkdirSync(dirname(path), { recursive: true });
const data: Record<string, string> = {
project: metadata.project,
worktree: metadata.worktree,
branch: metadata.branch,
status: metadata.status,
@ -126,7 +127,6 @@ export function writeMetadata(
if (metadata.issue) data["issue"] = metadata.issue;
if (metadata.pr) data["pr"] = metadata.pr;
if (metadata.summary) data["summary"] = metadata.summary;
if (metadata.project) data["project"] = metadata.project;
if (metadata.createdAt) data["createdAt"] = metadata.createdAt;
if (metadata.runtimeHandle) data["runtimeHandle"] = metadata.runtimeHandle;