From 2f7208150a6df0463f78e3de7282a4e4e63972eb Mon Sep 17 00:00:00 2001 From: Lex Christopherson Date: Tue, 24 Mar 2026 06:04:29 -0600 Subject: [PATCH] fix(gsd): resolve 4 TS compilation errors from parser migration - github-sync/sync.ts: import parseRoadmap/parsePlan from parsers-legacy - auto-worktree.ts: replace dangling roadmap.title with getMilestone() DB query - markdown-renderer.ts: add explicit type annotations on lazy-loaded parser callbacks Co-Authored-By: Claude Opus 4.6 (1M context) --- src/resources/extensions/github-sync/sync.ts | 3 ++- src/resources/extensions/gsd/auto-worktree.ts | 4 +++- src/resources/extensions/gsd/markdown-renderer.ts | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/resources/extensions/github-sync/sync.ts b/src/resources/extensions/github-sync/sync.ts index 2fc5fac3a..fb1939f70 100644 --- a/src/resources/extensions/github-sync/sync.ts +++ b/src/resources/extensions/github-sync/sync.ts @@ -10,7 +10,8 @@ import { existsSync, readdirSync } from "node:fs"; import { join } from "node:path"; -import { loadFile, parseRoadmap, parsePlan, parseSummary } from "../gsd/files.js"; +import { loadFile, parseSummary } from "../gsd/files.js"; +import { parseRoadmap, parsePlan } from "../gsd/parsers-legacy.js"; import { resolveMilestoneFile, resolveSliceFile, diff --git a/src/resources/extensions/gsd/auto-worktree.ts b/src/resources/extensions/gsd/auto-worktree.ts index 930444604..d6070fea4 100644 --- a/src/resources/extensions/gsd/auto-worktree.ts +++ b/src/resources/extensions/gsd/auto-worktree.ts @@ -22,6 +22,7 @@ import { GSDError, GSD_IO_ERROR, GSD_GIT_ERROR } from "./errors.js"; import { reconcileWorktreeDb, isDbAvailable, + getMilestone, getMilestoneSlices, } from "./gsd-db.js"; import { atomicWriteSync } from "./atomic-write.js"; @@ -1035,8 +1036,9 @@ export function mergeMilestoneToMain( } // 6. Build rich commit message + const dbMilestone = getMilestone(milestoneId); const milestoneTitle = - roadmap.title.replace(/^M\d+:\s*/, "").trim() || milestoneId; + (dbMilestone?.title ?? "").replace(/^M\d+:\s*/, "").trim() || milestoneId; const subject = `feat(${milestoneId}): ${milestoneTitle}`; let body = ""; if (completedSlices.length > 0) { diff --git a/src/resources/extensions/gsd/markdown-renderer.ts b/src/resources/extensions/gsd/markdown-renderer.ts index e6cc0fb90..6e7b7ac23 100644 --- a/src/resources/extensions/gsd/markdown-renderer.ts +++ b/src/resources/extensions/gsd/markdown-renderer.ts @@ -803,7 +803,7 @@ export function detectStaleRenders(basePath: string): StaleEntry[] { for (const slice of slices) { const isCompleteInDb = slice.status === "complete"; - const roadmapSlice = parsed.slices.find(s => s.id === slice.id); + const roadmapSlice = parsed.slices.find((s: { id: string }) => s.id === slice.id); if (!roadmapSlice) continue; if (isCompleteInDb && !roadmapSlice.done) { @@ -836,7 +836,7 @@ export function detectStaleRenders(basePath: string): StaleEntry[] { for (const task of tasks) { const isDoneInDb = task.status === "done" || task.status === "complete"; - const planTask = parsed.tasks.find(t => t.id === task.id); + const planTask = parsed.tasks.find((t: { id: string }) => t.id === task.id); if (!planTask) continue; if (isDoneInDb && !planTask.done) {