heyiam 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,16 +2,12 @@
2
2
  * Static HTML renderer for portfolio pages.
3
3
  *
4
4
  * Produces self-contained HTML fragments (no <html>, no <head>) using
5
- * ReactDOMServer.renderToStaticMarkup(). The output is stored in the DB
6
- * and served by Phoenix as pre-rendered content.
5
+ * Liquid templates. The output is stored in the DB and served by Phoenix
6
+ * as pre-rendered content, or written to standalone HTML files for export.
7
7
  *
8
8
  * These functions run on the Node.js server, never in the browser.
9
9
  */
10
- import React from 'react';
11
- import ReactDOMServer from 'react-dom/server';
12
- import { PortfolioPage } from './components/PortfolioPage.js';
13
- import { ProjectPage } from './components/ProjectPage.js';
14
- import { SessionPage } from './components/SessionPage.js';
10
+ import { renderProject, renderSession } from './liquid.js';
15
11
  /** Errors from the render pipeline carry a machine-readable code. */
16
12
  export class RenderError extends Error {
17
13
  code;
@@ -25,23 +21,6 @@ function collectErrors(failures) {
25
21
  const detail = failures.map((f) => `${f.field}: ${f.message}`).join('; ');
26
22
  throw new RenderError('VALIDATION_ERROR', `Render data validation failed: ${detail}`);
27
23
  }
28
- function validatePortfolio(data) {
29
- const errors = [];
30
- if (!data.user) {
31
- errors.push({ field: 'user', message: 'required' });
32
- }
33
- else {
34
- if (!data.user.username)
35
- errors.push({ field: 'user.username', message: 'required' });
36
- if (!data.user.displayName)
37
- errors.push({ field: 'user.displayName', message: 'required' });
38
- }
39
- if (!Array.isArray(data.projects)) {
40
- errors.push({ field: 'projects', message: 'must be an array' });
41
- }
42
- if (errors.length > 0)
43
- collectErrors(errors);
44
- }
45
24
  function validateProject(data) {
46
25
  const errors = [];
47
26
  if (!data.user) {
@@ -92,31 +71,16 @@ function validateSession(data) {
92
71
  // ---------------------------------------------------------------------------
93
72
  // Public API
94
73
  // ---------------------------------------------------------------------------
95
- /**
96
- * Render a portfolio page to a static HTML fragment.
97
- *
98
- * @throws {RenderError} with code VALIDATION_ERROR if required fields are missing
99
- * @throws {RenderError} with code RENDER_FAILED if ReactDOMServer throws
100
- */
101
- export function renderPortfolioHtml(data) {
102
- validatePortfolio(data);
103
- try {
104
- return ReactDOMServer.renderToStaticMarkup(React.createElement(PortfolioPage, { data }));
105
- }
106
- catch (err) {
107
- throw new RenderError('RENDER_FAILED', `Failed to render portfolio page for ${data.user.username}`, err);
108
- }
109
- }
110
74
  /**
111
75
  * Render a project page to a static HTML fragment.
112
76
  *
113
77
  * @throws {RenderError} with code VALIDATION_ERROR if required fields are missing
114
- * @throws {RenderError} with code RENDER_FAILED if ReactDOMServer throws
78
+ * @throws {RenderError} with code RENDER_FAILED if Liquid rendering fails
115
79
  */
116
- export function renderProjectHtml(data) {
80
+ export function renderProjectHtml(data, extras) {
117
81
  validateProject(data);
118
82
  try {
119
- return ReactDOMServer.renderToStaticMarkup(React.createElement(ProjectPage, { data }));
83
+ return renderProject(data, extras);
120
84
  }
121
85
  catch (err) {
122
86
  throw new RenderError('RENDER_FAILED', `Failed to render project page for ${data.project.slug}`, err);
@@ -126,12 +90,12 @@ export function renderProjectHtml(data) {
126
90
  * Render a session page to a static HTML fragment.
127
91
  *
128
92
  * @throws {RenderError} with code VALIDATION_ERROR if required fields are missing
129
- * @throws {RenderError} with code RENDER_FAILED if ReactDOMServer throws
93
+ * @throws {RenderError} with code RENDER_FAILED if Liquid rendering fails
130
94
  */
131
95
  export function renderSessionHtml(data) {
132
96
  validateSession(data);
133
97
  try {
134
- return ReactDOMServer.renderToStaticMarkup(React.createElement(SessionPage, { data }));
98
+ return renderSession(data);
135
99
  }
136
100
  catch (err) {
137
101
  throw new RenderError('RENDER_FAILED', `Failed to render session page for ${data.session.token}`, err);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/render/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,qEAAqE;AACrE,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,OAAe,EAAE,KAAe;QACxD,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAWD,SAAS,aAAa,CAAC,QAA6B;IAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,IAAI,WAAW,CAAC,kBAAkB,EAAE,kCAAkC,MAAM,EAAE,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAyB;IAClD,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,eAAe,CAAC,IAAuB;IAC9C,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,eAAe,CAAC,IAAuB;IAC9C,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAyB;IAC3D,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAExB,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,oBAAoB,CACxC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAC7C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,IAAI,WAAW,CACnB,eAAe,EACf,uCAAuC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAC3D,GAAG,CACJ,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAuB;IACvD,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtB,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,oBAAoB,CACxC,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAC3C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,IAAI,WAAW,CACnB,eAAe,EACf,qCAAqC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EACxD,GAAG,CACJ,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAuB;IACvD,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtB,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,oBAAoB,CACxC,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAC3C,CAAC;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,IAAI,WAAW,CACnB,eAAe,EACf,qCAAqC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EACzD,GAAG,CACJ,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/render/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Liquid template engine for static HTML rendering.
3
+ *
4
+ * Replaces React SSR (ReactDOMServer.renderToStaticMarkup) with
5
+ * liquidjs sync rendering. Templates live in ./templates/*.liquid.
6
+ */
7
+ import type { ProjectRenderData, SessionRenderData } from './types.js';
8
+ interface RenderProjectExtras {
9
+ arc?: Array<{
10
+ phase: number;
11
+ title: string;
12
+ description: string;
13
+ }>;
14
+ /** Full session data for charts — uses Session type from analyzer, not SessionCard */
15
+ fullSessions?: Array<Record<string, unknown>>;
16
+ }
17
+ export declare function renderProject(data: ProjectRenderData, extras?: RenderProjectExtras): string;
18
+ export declare function renderSession(data: SessionRenderData): string;
19
+ export {};
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Liquid template engine for static HTML rendering.
3
+ *
4
+ * Replaces React SSR (ReactDOMServer.renderToStaticMarkup) with
5
+ * liquidjs sync rendering. Templates live in ./templates/*.liquid.
6
+ */
7
+ import { Liquid } from 'liquidjs';
8
+ import { dirname, resolve } from 'node:path';
9
+ import { fileURLToPath } from 'node:url';
10
+ const __dirname = dirname(fileURLToPath(import.meta.url));
11
+ const engine = new Liquid({
12
+ root: resolve(__dirname, 'templates'),
13
+ extname: '.liquid',
14
+ outputEscape: 'escape',
15
+ });
16
+ // ── Custom filters ───────────────────────────────────────────
17
+ engine.registerFilter('formatDuration', (minutes) => {
18
+ if (minutes < 60)
19
+ return `${Math.round(minutes)}m`;
20
+ const hours = minutes / 60;
21
+ return hours >= 10 ? `${Math.round(hours)}h` : `${hours.toFixed(1)}h`;
22
+ });
23
+ engine.registerFilter('formatLoc', (loc) => {
24
+ return loc >= 1000 ? `${(loc / 1000).toFixed(1)}k` : String(loc);
25
+ });
26
+ engine.registerFilter('formatDate', (iso) => {
27
+ if (!iso)
28
+ return '';
29
+ try {
30
+ return new Date(iso).toLocaleDateString('en-US', {
31
+ month: 'short',
32
+ day: 'numeric',
33
+ year: 'numeric',
34
+ });
35
+ }
36
+ catch {
37
+ return iso;
38
+ }
39
+ });
40
+ engine.registerFilter('formatDateShort', (iso) => {
41
+ if (!iso)
42
+ return '';
43
+ try {
44
+ return new Date(iso).toLocaleDateString('en-US', {
45
+ month: 'short',
46
+ day: 'numeric',
47
+ });
48
+ }
49
+ catch {
50
+ return iso;
51
+ }
52
+ });
53
+ engine.registerFilter('jsonAttr', (value) => {
54
+ return JSON.stringify(value);
55
+ });
56
+ engine.registerFilter('localeNumber', (value) => {
57
+ return value.toLocaleString();
58
+ });
59
+ engine.registerFilter('stripProtocol', (url) => {
60
+ return (url || '').replace(/^https?:\/\/(www\.)?/, '').replace(/\.git$/, '');
61
+ });
62
+ // Duration color cycling for session cards
63
+ const DURATION_COLORS = ['primary', 'green', 'violet'];
64
+ engine.registerFilter('durationColor', (index) => {
65
+ return DURATION_COLORS[index % DURATION_COLORS.length];
66
+ });
67
+ export function renderProject(data, extras) {
68
+ // Pre-compute derived data for the template
69
+ const allSessions = data.allSessions || data.sessions;
70
+ const sourceCounts = {};
71
+ for (const s of data.sessions) {
72
+ const src = s.sourceTool || 'unknown';
73
+ sourceCounts[src] = (sourceCounts[src] || 0) + 1;
74
+ }
75
+ // Use full session data when available (charts need complete Session objects).
76
+ // Strip rawLog and turnTimeline — huge, unused by charts, and could break HTML attributes.
77
+ const chartSessions = (extras?.fullSessions ?? allSessions.map((s) => ({
78
+ id: s.token, title: s.title, date: s.recordedAt,
79
+ durationMinutes: s.durationMinutes, turns: s.turns,
80
+ linesOfCode: s.locChanged, status: 'enhanced',
81
+ projectName: data.project.title, rawLog: [],
82
+ skills: s.skills, source: s.sourceTool,
83
+ filesChanged: s.filesChanged,
84
+ }))).map((s) => {
85
+ const { rawLog, turnTimeline, ...rest } = s;
86
+ return { ...rest, rawLog: [] };
87
+ });
88
+ // Encode JSON safe for single-quoted HTML attributes
89
+ const sessionsJson = JSON.stringify(chartSessions).replace(/'/g, '&#39;');
90
+ const growthJson = sessionsJson; // same data for both charts
91
+ const durationLabel = data.project.totalAgentDurationMinutes ? 'You / Agents' : 'Time';
92
+ // Pick featured sessions — same logic as ProjectDetail.tsx
93
+ const featuredSessionIds = new Set();
94
+ for (const t of data.project.timeline || []) {
95
+ for (const s of t.sessions || []) {
96
+ if (s.featured) {
97
+ featuredSessionIds.add(s.sessionId);
98
+ }
99
+ }
100
+ }
101
+ // Use fullSessions (has status field) for selection, map back to SessionCard for display
102
+ const fullList = extras?.fullSessions ?? [];
103
+ const fullById = new Map(fullList.map((s) => [s.id, s]));
104
+ const cardById = new Map(data.sessions.map((s) => [s.token, s]));
105
+ // Same logic as ProjectDetail.tsx:
106
+ // 1. Featured flag from timeline
107
+ const featuredCards = data.sessions.filter((s) => featuredSessionIds.has(s.token));
108
+ if (featuredCards.length >= 6) {
109
+ // enough
110
+ }
111
+ // 2. Enhanced sessions (status !== 'draft'), sorted by LOC desc
112
+ const enhancedCards = data.sessions
113
+ .filter((s) => {
114
+ if (featuredSessionIds.has(s.token))
115
+ return false;
116
+ const full = fullById.get(s.token);
117
+ return full && (full.status === 'enhanced' || full.status === 'uploaded');
118
+ })
119
+ .sort((a, b) => b.locChanged - a.locChanged);
120
+ // 3. Draft sessions as fallback
121
+ const draftCards = data.sessions
122
+ .filter((s) => {
123
+ if (featuredSessionIds.has(s.token))
124
+ return false;
125
+ const full = fullById.get(s.token);
126
+ return !full || full.status === 'draft';
127
+ });
128
+ const combined = [...featuredCards, ...enhancedCards, ...draftCards];
129
+ const seen = new Set();
130
+ const featuredSessions = combined.filter((s) => {
131
+ if (seen.has(s.token))
132
+ return false;
133
+ seen.add(s.token);
134
+ return true;
135
+ }).slice(0, 6);
136
+ return engine.renderFileSync('project', {
137
+ ...data,
138
+ arc: extras?.arc ?? [],
139
+ featuredSessions,
140
+ sourceCounts: Object.entries(sourceCounts).map(([tool, count]) => ({ tool, count })),
141
+ sessionsJson,
142
+ growthJson,
143
+ durationLabel,
144
+ });
145
+ }
146
+ export function renderSession(data) {
147
+ return engine.renderFileSync('session', data);
148
+ }
149
+ //# sourceMappingURL=liquid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquid.js","sourceRoot":"","sources":["../../src/render/liquid.ts"],"names":[],"mappings":"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"}
@@ -58,4 +58,19 @@ export interface RouteContext {
58
58
  getProjectWithStats: (proj: ProjectInfo) => Promise<Record<string, unknown>>;
59
59
  buildPreviewPage: (title: string, bodyHtml: string, banner?: string) => string;
60
60
  }
61
+ /**
62
+ * Build the canonical session list for a project from DB rows + enhanced data.
63
+ * Used by both the dashboard detail endpoint and the export routes so the two
64
+ * never diverge.
65
+ */
66
+ export declare function buildSessionList(db: Database.Database, dirName: string, projectName: string): Session[];
67
+ /**
68
+ * Build the full project detail response — identical data for both the
69
+ * dashboard API endpoint and the HTML export. Single source of truth.
70
+ */
71
+ export declare function buildProjectDetail(db: Database.Database, proj: ProjectInfo): {
72
+ project: Record<string, unknown>;
73
+ sessions: Session[];
74
+ enhanceCache: unknown;
75
+ };
61
76
  export declare function createRouteContext(sessionsBasePath?: string, dbPath?: string): RouteContext;
@@ -10,7 +10,7 @@ import { bridgeToAnalyzer } from '../bridge.js';
10
10
  import { analyzeSession } from '../analyzer.js';
11
11
  import { loadEnhancedData, loadProjectEnhanceResult, getUploadedState, } from '../settings.js';
12
12
  import { archiveSessionFiles } from '../archive.js';
13
- import { getDatabase, openDatabase, getSessionStats as dbGetSessionStats, getSessionCount, getAllSessionMetas, getAllProjectStats, } from '../db.js';
13
+ import { getDatabase, openDatabase, getSessionStats as dbGetSessionStats, getSessionCount, getAllSessionMetas, getAllProjectStats, getSessionsByProject, } from '../db.js';
14
14
  import { ensureSessionIndexed, displayNameFromDir } from '../sync.js';
15
15
  export { displayNameFromDir };
16
16
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
@@ -47,6 +47,107 @@ export async function buildAgentSummary(childMetas, resolveStats, options) {
47
47
  }
48
48
  return agents.length > 0 ? { is_orchestrated: true, agents } : null;
49
49
  }
50
+ // ── Shared session builder ──────────────────────────────────
51
+ /**
52
+ * Build the canonical session list for a project from DB rows + enhanced data.
53
+ * Used by both the dashboard detail endpoint and the export routes so the two
54
+ * never diverge.
55
+ */
56
+ export function buildSessionList(db, dirName, projectName) {
57
+ const dbSessions = getSessionsByProject(db, dirName);
58
+ const parentRows = dbSessions.filter((r) => !r.is_subagent);
59
+ // Build child map
60
+ const childMap = new Map();
61
+ for (const r of dbSessions) {
62
+ if (r.is_subagent && r.parent_session_id) {
63
+ const children = childMap.get(r.parent_session_id) ?? [];
64
+ children.push({
65
+ sessionId: r.id,
66
+ role: r.agent_role ?? 'agent',
67
+ durationMinutes: r.duration_minutes ?? 0,
68
+ linesOfCode: (r.loc_added ?? 0) + (r.loc_removed ?? 0),
69
+ date: r.start_time ?? '',
70
+ });
71
+ childMap.set(r.parent_session_id, children);
72
+ }
73
+ }
74
+ return parentRows.map((r) => {
75
+ const enhanced = loadEnhancedData(r.id);
76
+ const children = childMap.get(r.id);
77
+ const skills = enhanced?.skills ?? (r.skills ? JSON.parse(r.skills) : []);
78
+ const locAdded = r.loc_added ?? 0;
79
+ const locRemoved = r.loc_removed ?? 0;
80
+ const filesChanged = (locAdded > 0 || locRemoved > 0)
81
+ ? [{ path: '(aggregate)', additions: locAdded, deletions: locRemoved }]
82
+ : [];
83
+ return {
84
+ id: r.id,
85
+ title: enhanced?.title ?? r.title ?? 'Untitled session',
86
+ date: r.start_time ?? '',
87
+ endTime: r.end_time ?? undefined,
88
+ durationMinutes: r.duration_minutes ?? 0,
89
+ wallClockMinutes: r.wall_clock_minutes ?? undefined,
90
+ turns: r.turns ?? 0,
91
+ linesOfCode: locAdded + locRemoved,
92
+ filesChanged,
93
+ status: (enhanced?.uploaded ? 'uploaded' : enhanced ? 'enhanced' : 'draft'),
94
+ projectName,
95
+ rawLog: [],
96
+ skills,
97
+ source: r.source,
98
+ developerTake: enhanced?.developerTake,
99
+ context: enhanced?.context,
100
+ executionPath: enhanced?.executionSteps?.map((s) => ({
101
+ stepNumber: s.stepNumber,
102
+ title: s.title,
103
+ description: s.body,
104
+ })) ?? [],
105
+ qaPairs: enhanced?.qaPairs,
106
+ toolBreakdown: [],
107
+ turnTimeline: [],
108
+ toolCalls: 0,
109
+ children,
110
+ isOrchestrated: (children?.length ?? 0) > 0,
111
+ childCount: children?.length ?? 0,
112
+ };
113
+ });
114
+ }
115
+ /**
116
+ * Build the full project detail response — identical data for both the
117
+ * dashboard API endpoint and the HTML export. Single source of truth.
118
+ */
119
+ export function buildProjectDetail(db, proj) {
120
+ const enhanceCache = loadProjectEnhanceResult(proj.dirName);
121
+ const sessionStats = buildSessionList(db, proj.dirName, proj.name);
122
+ const totalLoc = sessionStats.reduce((sum, s) => sum + (s.linesOfCode || 0), 0);
123
+ const totalDuration = sessionStats.reduce((sum, s) => sum + (s.durationMinutes || 0), 0);
124
+ const totalFiles = db.prepare('SELECT COUNT(DISTINCT file_path) as c FROM session_files WHERE session_id IN (SELECT id FROM sessions WHERE project_dir = ? AND is_subagent = 0)').get(proj.dirName).c;
125
+ const agentDurationRow = db.prepare('SELECT COALESCE(SUM(duration_minutes), 0) as total FROM sessions WHERE project_dir = ? AND is_subagent = 1').get(proj.dirName);
126
+ const totalAgentDuration = totalDuration + agentDurationRow.total;
127
+ const allSkills = [...new Set(sessionStats.flatMap((s) => s.skills || []))];
128
+ const uploaded = getUploadedState(proj.dirName);
129
+ const dates = sessionStats.map((s) => s.date).filter(Boolean).sort();
130
+ return {
131
+ project: {
132
+ name: proj.name,
133
+ dirName: proj.dirName,
134
+ sessionCount: proj.sessionCount,
135
+ description: enhanceCache?.result?.narrative ?? '',
136
+ totalLoc,
137
+ totalDuration,
138
+ totalFiles,
139
+ totalAgentDuration: totalAgentDuration > totalDuration ? totalAgentDuration : undefined,
140
+ skills: allSkills,
141
+ dateRange: dates.length ? `${dates[0]}|${dates[dates.length - 1]}` : '',
142
+ lastSessionDate: dates[dates.length - 1] || null,
143
+ isUploaded: !!uploaded,
144
+ uploadedSessionCount: uploaded?.uploadedSessions?.length || 0,
145
+ enhancedAt: enhanceCache?.enhancedAt ?? null,
146
+ },
147
+ sessions: sessionStats.filter((s) => s.date),
148
+ enhanceCache: enhanceCache ?? null,
149
+ };
150
+ }
50
151
  export function createRouteContext(sessionsBasePath, dbPath) {
51
152
  const db = dbPath ? openDatabase(dbPath) : getDatabase();
52
153
  // ── getProjects ──────────────────────────────────────────
@@ -72,7 +173,7 @@ export function createRouteContext(sessionsBasePath, dbPath) {
72
173
  return [...byDir.entries()].map(([dirName, sessions]) => ({
73
174
  name: displayNameFromDir(dirName),
74
175
  dirName,
75
- sessionCount: sessions.length,
176
+ sessionCount: sessions.filter((s) => !s.isSubagent).length,
76
177
  sessions,
77
178
  }));
78
179
  }
@@ -308,15 +409,10 @@ export function createRouteContext(sessionsBasePath, dbPath) {
308
409
  }
309
410
  // ── buildPreviewPage ─────────────────────────────────────
310
411
  function buildPreviewPage(title, bodyHtml, banner) {
311
- const appCssPath = path.resolve(__dirname, '..', '..', 'app', 'src', 'App.css');
312
- const indexCssPath = path.resolve(__dirname, '..', '..', 'app', 'src', 'index.css');
412
+ const renderCssPath = path.resolve(__dirname, '..', 'render', 'templates', 'styles.css');
313
413
  let inlineCss = '';
314
414
  try {
315
- inlineCss += readFileSync(indexCssPath, 'utf-8');
316
- }
317
- catch { /* */ }
318
- try {
319
- inlineCss += readFileSync(appCssPath, 'utf-8');
415
+ inlineCss = readFileSync(renderCssPath, 'utf-8');
320
416
  }
321
417
  catch { /* */ }
322
418
  const cssTag = `<style>${inlineCss}\n/* Preview override */\nbody { overflow: auto !important; min-height: auto !important; }\n#root { min-height: auto !important; }</style>`;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/routes/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/routes/context.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { Router } from 'express';
2
- import type { RouteContext } from './context.js';
2
+ import { type RouteContext } from './context.js';
3
3
  export declare function createExportRouter(ctx: RouteContext): Router;