Procházet zdrojové kódy

fix: remove stale summary/title fields from interview state types

Alvin Real před 4 měsíci
rodič
revize
24b392c774

+ 4 - 26
src/interview/dashboard.ts

@@ -11,12 +11,7 @@ import os from 'node:os';
 import path from 'node:path';
 import { URL } from 'node:url';
 import { log } from '../utils';
-import {
-  extractSummarySection,
-  extractTitle,
-  parseFrontmatter,
-  slugify,
-} from './document';
+import { parseFrontmatter, slugify } from './document';
 import {
   extractResumeSlug,
   isValidId,
@@ -325,18 +320,13 @@ export function createDashboardServer(config: DashboardConfig): {
           continue;
         }
 
-        // Extract title and summary using shared extractors
-        const title = extractTitle(content) || entry.replace(/\.md$/, '');
-        const summary = extractSummarySection(content);
         const baseName = entry.replace(/\.md$/, '');
         const fm = parseFrontmatter(content);
 
         items.push({
           fileName: entry,
           resumeCommand: `/interview ${baseName}`,
-          title,
-          summary:
-            summary.length > 120 ? `${summary.slice(0, 120)}\u2026` : summary,
+          title: baseName,
           sessionID: fm?.sessionID,
           directory: dir,
         });
@@ -377,10 +367,6 @@ export function createDashboardServer(config: DashboardConfig): {
         const fm = parseFrontmatter(content);
         if (!fm?.sessionID) continue;
 
-        // Extract title and summary using shared extractors
-        const title = extractTitle(content) || entry.replace(/\.md$/, '');
-        const summary = extractSummarySection(content);
-
         // Generate a stable interview ID from slugified filename
         const baseName = entry.replace(/\.md$/, '');
         const interviewId = `recovered-${slugify(baseName) || baseName}`;
@@ -395,10 +381,8 @@ export function createDashboardServer(config: DashboardConfig): {
         stateCache.set(interviewId, {
           interviewId,
           sessionID: fm.sessionID,
-          idea: title,
+          idea: baseName,
           mode: 'session-disconnected',
-          summary,
-          title,
           questions: [],
           pendingAnswers: null,
           lastUpdatedAt: fm.updatedAt
@@ -661,8 +645,6 @@ export function createDashboardServer(config: DashboardConfig): {
         sessionID,
         idea,
         mode: 'awaiting-agent',
-        summary: 'Interview created.',
-        title: idea,
         questions: [],
         pendingAnswers: null,
         lastUpdatedAt: Date.now(),
@@ -707,8 +689,6 @@ export function createDashboardServer(config: DashboardConfig): {
       if (existing) {
         // Merge state update
         if (state.mode) existing.mode = state.mode;
-        if (state.summary) existing.summary = state.summary;
-        if (state.title) existing.title = state.title;
         if (state.questions) existing.questions = state.questions;
         if (state.filePath) existing.filePath = state.filePath;
         existing.lastUpdatedAt = Date.now();
@@ -720,8 +700,6 @@ export function createDashboardServer(config: DashboardConfig): {
           sessionID: state.sessionID ?? '',
           idea: state.idea ?? '',
           mode: state.mode ?? 'awaiting-agent',
-          summary: state.summary ?? '',
-          title: state.title ?? '',
           questions: state.questions ?? [],
           pendingAnswers: null,
           lastUpdatedAt: Date.now(),
@@ -805,7 +783,7 @@ export function createDashboardServer(config: DashboardConfig): {
         markdownPath,
         mode: entry.mode,
         isBusy: entry.mode === 'awaiting-agent',
-        summary: entry.summary,
+        summary: '',
         questions: entry.questions,
         document,
         lastUpdatedAt: entry.lastUpdatedAt,

+ 0 - 4
src/interview/manager.ts

@@ -135,8 +135,6 @@ export function createInterviewManager(
             sessionID: interview.sessionID,
             idea: interview.idea,
             mode: 'awaiting-agent',
-            summary: 'Interview created.',
-            title: interview.idea,
             questions: [],
             pendingAnswers: null,
             lastUpdatedAt: Date.now(),
@@ -432,8 +430,6 @@ function stateToEntry(
     sessionID: state.interview.sessionID,
     idea: state.interview.idea,
     mode: state.mode,
-    summary: state.summary,
-    title: state.interview.idea,
     questions: state.questions.map((q) => ({
       id: q.id,
       question: q.question,

+ 1 - 1
src/interview/ui.ts

@@ -182,7 +182,7 @@ export function renderDashboardPage(
             <span class="card-status status-file">saved</span>
           </div>
           ${item.directory ? `<div class="card-dir">${escapeHtml(item.directory)}</div>` : ''}
-          <div class="card-summary">${escapeHtml(item.summary)}</div>
+          <div class="card-summary">${escapeHtml(item.summary ?? '')}</div>
           <div class="resume-row">
             <code class="resume-cmd">${escapeHtml(item.resumeCommand)}</code>
             <button class="copy-btn" data-cmd="${escapeHtml(item.resumeCommand)}" title="Copy command">Copy</button>

+ 9 - 0
src/opentui-solid.d.ts

@@ -0,0 +1,9 @@
+declare module '@opentui/solid' {
+  export namespace JSX {
+    type Element = unknown;
+  }
+
+  export function createElement(tag: string): unknown;
+  export function insert(node: unknown, child: unknown): void;
+  export function setProp(node: unknown, key: string, value: unknown): void;
+}

+ 1 - 1
tsconfig.json

@@ -12,6 +12,6 @@
     "outDir": "./dist",
     "rootDir": "./src"
   },
-  "include": ["src/**/*.ts"],
+  "include": ["src/**/*.ts", "src/**/*.d.ts"],
   "exclude": ["node_modules", "dist", "**/*.test.ts"]
 }