heyiam 0.1.7 → 0.1.8
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.
- package/dist/analyzer.d.ts +3 -3
- package/dist/archive.d.ts +14 -0
- package/dist/archive.js +125 -0
- package/dist/archive.js.map +1 -0
- package/dist/auth.d.ts +0 -6
- package/dist/auth.js +2 -4
- package/dist/auth.js.map +1 -1
- package/dist/autostart.d.ts +19 -0
- package/dist/autostart.js +103 -0
- package/dist/autostart.js.map +1 -0
- package/dist/bridge.d.ts +0 -2
- package/dist/bridge.js +33 -4
- package/dist/bridge.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/context-export.d.ts +22 -0
- package/dist/context-export.js +230 -0
- package/dist/context-export.js.map +1 -0
- package/dist/daemon-install.d.ts +23 -0
- package/dist/daemon-install.js +155 -0
- package/dist/daemon-install.js.map +1 -0
- package/dist/db.d.ts +118 -0
- package/dist/db.js +444 -0
- package/dist/db.js.map +1 -0
- package/dist/export.d.ts +30 -0
- package/dist/export.js +377 -0
- package/dist/export.js.map +1 -0
- package/dist/format-utils.d.ts +6 -0
- package/dist/format-utils.js +15 -0
- package/dist/format-utils.js.map +1 -0
- package/dist/index.js +474 -117
- package/dist/index.js.map +1 -1
- package/dist/llm/project-enhance.js +1 -1
- package/dist/parsers/claude.js +73 -0
- package/dist/parsers/claude.js.map +1 -1
- package/dist/parsers/codex.js +1 -1
- package/dist/parsers/codex.js.map +1 -1
- package/dist/parsers/cursor.d.ts +2 -0
- package/dist/parsers/cursor.js +14 -26
- package/dist/parsers/cursor.js.map +1 -1
- package/dist/parsers/gemini.d.ts +3 -2
- package/dist/parsers/gemini.js +198 -21
- package/dist/parsers/gemini.js.map +1 -1
- package/dist/parsers/index.d.ts +1 -1
- package/dist/parsers/index.js +23 -7
- package/dist/parsers/index.js.map +1 -1
- package/dist/parsers/types.d.ts +27 -1
- package/dist/render/build-render-data.d.ts +59 -0
- package/dist/render/build-render-data.js +101 -0
- package/dist/render/build-render-data.js.map +1 -0
- package/dist/render/components/PortfolioPage.d.ts +4 -0
- package/dist/render/components/PortfolioPage.js +16 -0
- package/dist/render/components/PortfolioPage.js.map +1 -0
- package/dist/render/components/ProjectPage.d.ts +4 -0
- package/dist/render/components/ProjectPage.js +101 -0
- package/dist/render/components/ProjectPage.js.map +1 -0
- package/dist/render/components/SessionPage.d.ts +4 -0
- package/dist/render/components/SessionPage.js +29 -0
- package/dist/render/components/SessionPage.js.map +1 -0
- package/dist/render/index.d.ts +37 -0
- package/dist/render/index.js +140 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/types.d.ts +121 -0
- package/dist/render/types.js +9 -0
- package/dist/render/types.js.map +1 -0
- package/dist/routes/archive.d.ts +3 -0
- package/dist/routes/archive.js +56 -0
- package/dist/routes/archive.js.map +1 -0
- package/dist/routes/auth.d.ts +3 -0
- package/dist/routes/auth.js +116 -0
- package/dist/routes/auth.js.map +1 -0
- package/dist/routes/context.d.ts +61 -0
- package/dist/routes/context.js +356 -0
- package/dist/routes/context.js.map +1 -0
- package/dist/routes/dashboard.d.ts +3 -0
- package/dist/routes/dashboard.js +103 -0
- package/dist/routes/dashboard.js.map +1 -0
- package/dist/routes/enhance.d.ts +3 -0
- package/dist/routes/enhance.js +305 -0
- package/dist/routes/enhance.js.map +1 -0
- package/dist/routes/export.d.ts +3 -0
- package/dist/routes/export.js +145 -0
- package/dist/routes/export.js.map +1 -0
- package/dist/routes/index.d.ts +12 -0
- package/dist/routes/index.js +13 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/preview.d.ts +3 -0
- package/dist/routes/preview.js +191 -0
- package/dist/routes/preview.js.map +1 -0
- package/dist/routes/projects.d.ts +3 -0
- package/dist/routes/projects.js +356 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/publish.d.ts +3 -0
- package/dist/routes/publish.js +466 -0
- package/dist/routes/publish.js.map +1 -0
- package/dist/routes/search.d.ts +3 -0
- package/dist/routes/search.js +110 -0
- package/dist/routes/search.js.map +1 -0
- package/dist/routes/sessions.d.ts +3 -0
- package/dist/routes/sessions.js +103 -0
- package/dist/routes/sessions.js.map +1 -0
- package/dist/routes/settings.d.ts +3 -0
- package/dist/routes/settings.js +30 -0
- package/dist/routes/settings.js.map +1 -0
- package/dist/screenshot.d.ts +5 -2
- package/dist/screenshot.js +187 -13
- package/dist/screenshot.js.map +1 -1
- package/dist/search.d.ts +30 -0
- package/dist/search.js +153 -0
- package/dist/search.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.js +55 -1318
- package/dist/server.js.map +1 -1
- package/dist/settings.d.ts +23 -6
- package/dist/settings.js +36 -12
- package/dist/settings.js.map +1 -1
- package/dist/source-audit.d.ts +29 -0
- package/dist/source-audit.js +203 -0
- package/dist/source-audit.js.map +1 -0
- package/dist/sync.d.ts +74 -0
- package/dist/sync.js +358 -0
- package/dist/sync.js.map +1 -0
- package/dist/transcript.d.ts +68 -0
- package/dist/transcript.js +268 -0
- package/dist/transcript.js.map +1 -0
- package/package.json +5 -1
- package/app/dist/assets/html2canvas-Cwn_rrOw.js +0 -5
- package/app/dist/assets/index-CEQyTkgN.js +0 -14
- package/app/dist/assets/index-DLh5xRE8.css +0 -1
- package/app/dist/favicon.svg +0 -5
- package/app/dist/icons.svg +0 -24
- package/app/dist/index.html +0 -20
- package/dist/machine-key.d.ts +0 -10
- package/dist/machine-key.js +0 -51
- package/dist/machine-key.js.map +0 -1
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
import { getProvider } from '../llm/index.js';
|
|
3
|
+
import { triageSessions } from '../llm/triage.js';
|
|
4
|
+
import { enhanceProject, refineNarrative } from '../llm/project-enhance.js';
|
|
5
|
+
import { getAnthropicApiKey, saveEnhancedData, loadEnhancedData, deleteEnhancedData, loadFreshProjectEnhanceResult, saveProjectEnhanceResult, loadProjectEnhanceResult, buildProjectFingerprint, getUploadedState, } from '../settings.js';
|
|
6
|
+
export function createEnhanceRouter(ctx) {
|
|
7
|
+
const router = Router();
|
|
8
|
+
// Triage endpoint -- AI selects which sessions are worth showcasing (SSE stream)
|
|
9
|
+
router.post('/api/projects/:project/triage', async (req, res) => {
|
|
10
|
+
if (!getAnthropicApiKey()) {
|
|
11
|
+
res.status(400).json({ error: { code: 'NO_API_KEY', message: 'No Anthropic API key configured. Add one in Settings or set ANTHROPIC_API_KEY.' } });
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const { project } = req.params;
|
|
15
|
+
const projects = await ctx.getProjects();
|
|
16
|
+
const proj = projects.find((p) => p.name === project || p.dirName === project);
|
|
17
|
+
if (!proj) {
|
|
18
|
+
res.status(404).json({ error: { code: 'PROJECT_NOT_FOUND', message: 'Project not found' } });
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
res.writeHead(200, {
|
|
22
|
+
'Content-Type': 'text/event-stream',
|
|
23
|
+
'Cache-Control': 'no-cache',
|
|
24
|
+
Connection: 'keep-alive',
|
|
25
|
+
});
|
|
26
|
+
const send = (event) => {
|
|
27
|
+
res.write(`data: ${JSON.stringify(event)}\n\n`);
|
|
28
|
+
};
|
|
29
|
+
try {
|
|
30
|
+
const total = proj.sessions.length;
|
|
31
|
+
const sessionsWithStats = [];
|
|
32
|
+
for (let i = 0; i < proj.sessions.length; i++) {
|
|
33
|
+
const meta = proj.sessions[i];
|
|
34
|
+
send({ type: 'loading_stats', sessionId: meta.sessionId, index: i, total });
|
|
35
|
+
const stats = await ctx.getSessionStats(meta, proj.name);
|
|
36
|
+
sessionsWithStats.push({
|
|
37
|
+
sessionId: meta.sessionId,
|
|
38
|
+
path: meta.path,
|
|
39
|
+
title: stats.date ? `Session ${meta.sessionId.slice(0, 8)}` : meta.sessionId,
|
|
40
|
+
duration: stats.duration,
|
|
41
|
+
loc: stats.loc,
|
|
42
|
+
turns: stats.turns,
|
|
43
|
+
files: stats.files,
|
|
44
|
+
skills: stats.skills,
|
|
45
|
+
date: stats.date,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
const useLLM = req.body?.useLLM !== false;
|
|
49
|
+
const result = await triageSessions(sessionsWithStats, useLLM, (event) => {
|
|
50
|
+
send(event);
|
|
51
|
+
});
|
|
52
|
+
const published = getUploadedState(proj.dirName);
|
|
53
|
+
const alreadyUploaded = published?.uploadedSessions ?? [];
|
|
54
|
+
send({ type: 'result', ...result, alreadyUploaded });
|
|
55
|
+
res.end();
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
send({ type: 'error', code: 'TRIAGE_FAILED', message: err.message });
|
|
59
|
+
res.end();
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
// Enhance a single session
|
|
63
|
+
router.post('/api/projects/:project/sessions/:id/enhance', async (req, res) => {
|
|
64
|
+
try {
|
|
65
|
+
const { project, id } = req.params;
|
|
66
|
+
const projects = await ctx.getProjects();
|
|
67
|
+
const proj = projects.find((p) => p.name === project || p.dirName === project);
|
|
68
|
+
if (!proj) {
|
|
69
|
+
res.status(404).json({ error: { code: 'PROJECT_NOT_FOUND', message: 'Project not found' } });
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const meta = proj.sessions.find((s) => s.sessionId === id);
|
|
73
|
+
if (!meta) {
|
|
74
|
+
res.status(404).json({ error: { code: 'SESSION_NOT_FOUND', message: 'Session not found' } });
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const session = await ctx.loadSession(meta.path, proj.name, meta.sessionId);
|
|
78
|
+
const provider = getProvider();
|
|
79
|
+
const result = await provider.enhance(session);
|
|
80
|
+
saveEnhancedData(id, result);
|
|
81
|
+
console.log(`[enhance] Saved enhanced data for ${id}`);
|
|
82
|
+
res.json({ result, provider: provider.name });
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
const error = err;
|
|
86
|
+
res.status(500).json({
|
|
87
|
+
error: {
|
|
88
|
+
code: error.code ?? 'ENHANCE_FAILED',
|
|
89
|
+
message: error.message,
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
// Delete locally-saved enhanced data
|
|
95
|
+
router.delete('/api/sessions/:id/enhanced', (_req, res) => {
|
|
96
|
+
const { id } = _req.params;
|
|
97
|
+
deleteEnhancedData(id);
|
|
98
|
+
console.log(`[enhance] Deleted enhanced data for ${id}`);
|
|
99
|
+
res.json({ ok: true });
|
|
100
|
+
});
|
|
101
|
+
// Enhancement status
|
|
102
|
+
router.get('/api/enhance/status', async (_req, res) => {
|
|
103
|
+
try {
|
|
104
|
+
if (getAnthropicApiKey()) {
|
|
105
|
+
res.json({ mode: 'local', remaining: null });
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
res.json({ mode: 'none', remaining: 0, message: 'No API key configured' });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
res.json({ mode: 'unknown', remaining: null });
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
// Project enhance -- enhance selected sessions + generate project narrative (SSE)
|
|
116
|
+
router.post('/api/projects/:project/enhance-project', async (req, res) => {
|
|
117
|
+
const { project } = req.params;
|
|
118
|
+
const { selectedSessionIds, skippedSessions, force } = req.body;
|
|
119
|
+
if (!Array.isArray(selectedSessionIds) || selectedSessionIds.length === 0) {
|
|
120
|
+
res.status(400).json({ error: { code: 'INVALID_INPUT', message: 'selectedSessionIds must be a non-empty array' } });
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (!getAnthropicApiKey()) {
|
|
124
|
+
res.status(400).json({ error: { code: 'NO_API_KEY', message: 'No Anthropic API key configured. Add one in Settings or set ANTHROPIC_API_KEY.' } });
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
res.writeHead(200, {
|
|
128
|
+
'Content-Type': 'text/event-stream',
|
|
129
|
+
'Cache-Control': 'no-cache',
|
|
130
|
+
Connection: 'keep-alive',
|
|
131
|
+
});
|
|
132
|
+
const send = (data) => {
|
|
133
|
+
res.write(`data: ${JSON.stringify(data)}\n\n`);
|
|
134
|
+
};
|
|
135
|
+
try {
|
|
136
|
+
const projects = await ctx.getProjects();
|
|
137
|
+
const proj = projects.find((p) => p.name === project || p.dirName === project);
|
|
138
|
+
if (!proj) {
|
|
139
|
+
send({ type: 'error', code: 'PROJECT_NOT_FOUND', message: 'Project not found' });
|
|
140
|
+
res.end();
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (!force) {
|
|
144
|
+
const cached = loadFreshProjectEnhanceResult(proj.dirName, selectedSessionIds);
|
|
145
|
+
if (cached) {
|
|
146
|
+
send({ type: 'cached', enhancedAt: cached.enhancedAt });
|
|
147
|
+
send({ type: 'done', result: cached.result });
|
|
148
|
+
res.end();
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const staleCache = loadProjectEnhanceResult(proj.dirName);
|
|
153
|
+
if (staleCache) {
|
|
154
|
+
const currentFp = buildProjectFingerprint(selectedSessionIds);
|
|
155
|
+
if (staleCache.fingerprint !== currentFp) {
|
|
156
|
+
send({ type: 'stale_cache', previousEnhancedAt: staleCache.enhancedAt });
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const provider = getProvider();
|
|
160
|
+
const sessionSummaries = [];
|
|
161
|
+
const CONCURRENCY = 3;
|
|
162
|
+
for (let i = 0; i < selectedSessionIds.length; i += CONCURRENCY) {
|
|
163
|
+
const batch = selectedSessionIds.slice(i, i + CONCURRENCY);
|
|
164
|
+
await Promise.all(batch.map(async (sessionId) => {
|
|
165
|
+
const meta = proj.sessions.find((s) => s.sessionId === sessionId);
|
|
166
|
+
if (!meta)
|
|
167
|
+
return;
|
|
168
|
+
const existing = loadEnhancedData(sessionId);
|
|
169
|
+
if (existing) {
|
|
170
|
+
send({ type: 'session_progress', sessionId, status: 'skipped', title: existing.title, skills: existing.skills });
|
|
171
|
+
sessionSummaries.push({
|
|
172
|
+
sessionId,
|
|
173
|
+
title: existing.title,
|
|
174
|
+
developerTake: existing.developerTake,
|
|
175
|
+
skills: existing.skills,
|
|
176
|
+
executionSteps: existing.executionSteps.map((s) => ({ title: s.title, body: s.body })),
|
|
177
|
+
duration: 0,
|
|
178
|
+
loc: 0,
|
|
179
|
+
turns: 0,
|
|
180
|
+
files: 0,
|
|
181
|
+
date: existing.enhancedAt,
|
|
182
|
+
});
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
send({ type: 'session_progress', sessionId, status: 'enhancing' });
|
|
186
|
+
try {
|
|
187
|
+
const session = await ctx.loadSession(meta.path, proj.name, sessionId);
|
|
188
|
+
const result = await provider.enhance(session);
|
|
189
|
+
saveEnhancedData(sessionId, result);
|
|
190
|
+
send({ type: 'session_progress', sessionId, status: 'done', title: result.title, skills: result.skills });
|
|
191
|
+
sessionSummaries.push({
|
|
192
|
+
sessionId,
|
|
193
|
+
title: result.title,
|
|
194
|
+
developerTake: result.developerTake,
|
|
195
|
+
skills: result.skills,
|
|
196
|
+
executionSteps: result.executionSteps.map((s) => ({ title: s.title, body: s.body })),
|
|
197
|
+
duration: session.durationMinutes ?? 0,
|
|
198
|
+
loc: session.linesOfCode ?? 0,
|
|
199
|
+
turns: session.turns ?? 0,
|
|
200
|
+
files: session.filesChanged?.length ?? 0,
|
|
201
|
+
date: session.date ?? '',
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
console.error(`[enhance-project] Session ${sessionId} failed:`, err.message);
|
|
206
|
+
send({ type: 'session_progress', sessionId, status: 'failed', error: err.message });
|
|
207
|
+
}
|
|
208
|
+
}));
|
|
209
|
+
}
|
|
210
|
+
for (const summary of sessionSummaries) {
|
|
211
|
+
if (summary.duration === 0) {
|
|
212
|
+
const meta = proj.sessions.find((s) => s.sessionId === summary.sessionId);
|
|
213
|
+
if (meta) {
|
|
214
|
+
const stats = await ctx.getSessionStats(meta, proj.name);
|
|
215
|
+
summary.duration = stats.duration;
|
|
216
|
+
summary.loc = stats.loc;
|
|
217
|
+
summary.turns = stats.turns;
|
|
218
|
+
summary.files = stats.files;
|
|
219
|
+
summary.date = stats.date || summary.date;
|
|
220
|
+
summary.correctionCount = undefined;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
send({ type: 'project_enhance', status: 'generating' });
|
|
225
|
+
const projectResult = await enhanceProject(sessionSummaries, skippedSessions ?? [], (event) => {
|
|
226
|
+
send({ type: event.type, text: event.text });
|
|
227
|
+
});
|
|
228
|
+
saveProjectEnhanceResult(proj.dirName, selectedSessionIds, projectResult);
|
|
229
|
+
send({ type: 'done', result: projectResult });
|
|
230
|
+
res.end();
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
console.error('[enhance-project] Failed:', err.message);
|
|
234
|
+
send({ type: 'error', code: 'ENHANCE_FAILED', message: err.message });
|
|
235
|
+
res.end();
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
// Save project enhance result explicitly
|
|
239
|
+
router.post('/api/projects/:project/enhance-save', async (req, res) => {
|
|
240
|
+
const { project } = req.params;
|
|
241
|
+
const { selectedSessionIds, result, repoUrl, projectUrl, screenshotBase64 } = req.body;
|
|
242
|
+
if (!Array.isArray(selectedSessionIds) || !result?.narrative) {
|
|
243
|
+
res.status(400).json({ error: { code: 'INVALID_INPUT', message: 'selectedSessionIds and result are required' } });
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
try {
|
|
247
|
+
const projects = await ctx.getProjects();
|
|
248
|
+
const proj = projects.find((p) => p.name === project || p.dirName === project);
|
|
249
|
+
if (!proj) {
|
|
250
|
+
res.status(404).json({ error: { code: 'PROJECT_NOT_FOUND', message: 'Project not found' } });
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
saveProjectEnhanceResult(proj.dirName, selectedSessionIds, result, undefined, { repoUrl, projectUrl, screenshotBase64 });
|
|
254
|
+
res.json({ saved: true, enhancedAt: new Date().toISOString() });
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
res.status(500).json({ error: { code: 'SAVE_FAILED', message: err.message } });
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
// Get cached project enhance result
|
|
261
|
+
router.get('/api/projects/:project/enhance-cache', async (req, res) => {
|
|
262
|
+
const { project } = req.params;
|
|
263
|
+
try {
|
|
264
|
+
const projects = await ctx.getProjects();
|
|
265
|
+
const proj = projects.find((p) => p.name === project || p.dirName === project);
|
|
266
|
+
if (!proj) {
|
|
267
|
+
res.status(404).json({ error: { code: 'PROJECT_NOT_FOUND', message: 'Project not found' } });
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
const cached = loadProjectEnhanceResult(proj.dirName);
|
|
271
|
+
if (!cached) {
|
|
272
|
+
res.status(404).json({ error: { code: 'NO_CACHE', message: 'No cached enhance result' } });
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
const currentFp = buildProjectFingerprint(cached.selectedSessionIds);
|
|
276
|
+
const isFresh = cached.fingerprint === currentFp;
|
|
277
|
+
res.json({
|
|
278
|
+
...cached,
|
|
279
|
+
isFresh,
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
catch (err) {
|
|
283
|
+
res.status(500).json({ error: { code: 'CACHE_READ_FAILED', message: err.message } });
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
// Narrative refinement
|
|
287
|
+
router.post('/api/projects/:project/refine-narrative', async (req, res) => {
|
|
288
|
+
try {
|
|
289
|
+
const { draftNarrative, draftTimeline, answers } = req.body;
|
|
290
|
+
if (!draftNarrative || typeof draftNarrative !== 'string') {
|
|
291
|
+
res.status(400).json({ error: { code: 'INVALID_INPUT', message: 'draftNarrative is required' } });
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
const refined = await refineNarrative(draftNarrative, draftTimeline ?? [], answers ?? []);
|
|
295
|
+
res.json(refined);
|
|
296
|
+
}
|
|
297
|
+
catch (err) {
|
|
298
|
+
res.status(500).json({
|
|
299
|
+
error: { code: 'REFINE_FAILED', message: err.message },
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
return router;
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=enhance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhance.js","sourceRoot":"","sources":["../../src/routes/enhance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import { execFileSync } from 'node:child_process';
|
|
5
|
+
import { parseSession } from '../parsers/index.js';
|
|
6
|
+
import { bridgeToAnalyzer } from '../bridge.js';
|
|
7
|
+
import { analyzeSession } from '../analyzer.js';
|
|
8
|
+
import { loadProjectEnhanceResult } from '../settings.js';
|
|
9
|
+
import { exportMarkdown, exportHtml, generateHtmlFiles, createZipBuffer } from '../export.js';
|
|
10
|
+
const EXPORTS_BASE = path.resolve(process.env.HOME || '~', '.config', 'heyiam', 'exports');
|
|
11
|
+
/** Validate that an output path is within the safe exports directory. */
|
|
12
|
+
function safeExportPath(outputPath, dirName, format) {
|
|
13
|
+
const defaultPath = path.join(EXPORTS_BASE, dirName, format);
|
|
14
|
+
if (!outputPath)
|
|
15
|
+
return defaultPath;
|
|
16
|
+
const resolved = path.resolve(outputPath);
|
|
17
|
+
if (!resolved.startsWith(EXPORTS_BASE))
|
|
18
|
+
return defaultPath;
|
|
19
|
+
return resolved;
|
|
20
|
+
}
|
|
21
|
+
async function loadProjectSessions(ctx, dirName) {
|
|
22
|
+
const projects = await ctx.getProjects();
|
|
23
|
+
const proj = projects.find((p) => p.dirName === dirName);
|
|
24
|
+
if (!proj)
|
|
25
|
+
return [];
|
|
26
|
+
const sessions = [];
|
|
27
|
+
for (const meta of proj.sessions) {
|
|
28
|
+
try {
|
|
29
|
+
const parsed = await parseSession(meta.path);
|
|
30
|
+
const bridged = bridgeToAnalyzer(parsed, { sessionId: meta.sessionId, projectName: proj.name });
|
|
31
|
+
sessions.push(analyzeSession(bridged));
|
|
32
|
+
}
|
|
33
|
+
catch { /* skip unparseable sessions */ }
|
|
34
|
+
}
|
|
35
|
+
return sessions;
|
|
36
|
+
}
|
|
37
|
+
export function createExportRouter(ctx) {
|
|
38
|
+
const router = Router();
|
|
39
|
+
router.post('/api/projects/:project/save-local', async (req, res) => {
|
|
40
|
+
try {
|
|
41
|
+
const dirName = String(req.params.project);
|
|
42
|
+
const cache = loadProjectEnhanceResult(dirName);
|
|
43
|
+
if (!cache) {
|
|
44
|
+
res.status(404).json({ error: 'No enhance result found' });
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const sessions = await loadProjectSessions(ctx, dirName);
|
|
48
|
+
const outputPath = path.join(EXPORTS_BASE, dirName, 'markdown');
|
|
49
|
+
const result = await exportMarkdown(dirName, cache, sessions, outputPath);
|
|
50
|
+
res.json(result);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
console.error('[save-local]', err.message);
|
|
54
|
+
res.status(500).json({ error: 'Save local failed' });
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
router.post('/api/projects/:project/export-markdown', async (req, res) => {
|
|
58
|
+
try {
|
|
59
|
+
const dirName = String(req.params.project);
|
|
60
|
+
const outputPath = req.body?.outputPath;
|
|
61
|
+
const cache = loadProjectEnhanceResult(dirName);
|
|
62
|
+
if (!cache) {
|
|
63
|
+
res.status(404).json({ error: 'No enhance result found' });
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const sessions = await loadProjectSessions(ctx, dirName);
|
|
67
|
+
const outDir = safeExportPath(outputPath, dirName, 'markdown');
|
|
68
|
+
const result = await exportMarkdown(dirName, cache, sessions, outDir);
|
|
69
|
+
res.json(result);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
console.error('[export-markdown]', err.message);
|
|
73
|
+
res.status(500).json({ error: 'Markdown export failed' });
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
router.post('/api/projects/:project/export-html', async (req, res) => {
|
|
77
|
+
try {
|
|
78
|
+
const dirName = String(req.params.project);
|
|
79
|
+
const outputPath = req.body?.outputPath;
|
|
80
|
+
const cache = loadProjectEnhanceResult(dirName);
|
|
81
|
+
if (!cache) {
|
|
82
|
+
res.status(404).json({ error: 'No enhance result found' });
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const sessions = await loadProjectSessions(ctx, dirName);
|
|
86
|
+
const outDir = safeExportPath(outputPath, dirName, 'html');
|
|
87
|
+
const result = await exportHtml(dirName, cache, sessions, outDir);
|
|
88
|
+
res.json(result);
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
console.error('[export-html]', err.message);
|
|
92
|
+
res.status(500).json({ error: 'HTML export failed' });
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
// Download HTML as zip (no disk writes)
|
|
96
|
+
router.get('/api/projects/:project/download-html', async (req, res) => {
|
|
97
|
+
try {
|
|
98
|
+
const dirName = String(req.params.project);
|
|
99
|
+
const cache = loadProjectEnhanceResult(dirName);
|
|
100
|
+
if (!cache) {
|
|
101
|
+
res.status(404).json({ error: 'No enhance result found' });
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const sessions = await loadProjectSessions(ctx, dirName);
|
|
105
|
+
const htmlFiles = generateHtmlFiles(dirName, cache, sessions);
|
|
106
|
+
const zipBuffer = createZipBuffer(htmlFiles);
|
|
107
|
+
const filename = `${dirName.replace(/[^a-zA-Z0-9_-]/g, '_')}.zip`;
|
|
108
|
+
res.setHeader('Content-Type', 'application/zip');
|
|
109
|
+
res.setHeader('Content-Disposition', `attachment; filename="${filename}"`);
|
|
110
|
+
res.setHeader('Content-Length', zipBuffer.length);
|
|
111
|
+
res.send(zipBuffer);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
console.error('[download-html]', err.message);
|
|
115
|
+
res.status(500).json({ error: 'HTML download failed' });
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
// Open directory (macOS) — restricted to the exports directory
|
|
119
|
+
router.post('/api/open-directory', (req, res) => {
|
|
120
|
+
try {
|
|
121
|
+
const dirPath = req.body?.path;
|
|
122
|
+
if (!dirPath || typeof dirPath !== 'string') {
|
|
123
|
+
res.status(400).json({ error: 'Missing path' });
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const resolved = path.resolve(dirPath);
|
|
127
|
+
if (!resolved.startsWith(EXPORTS_BASE)) {
|
|
128
|
+
res.status(403).json({ error: 'Path outside allowed directory' });
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (!fs.existsSync(resolved) || !fs.statSync(resolved).isDirectory()) {
|
|
132
|
+
res.status(400).json({ error: 'Path is not an existing directory' });
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
execFileSync('open', [resolved]);
|
|
136
|
+
res.json({ ok: true });
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
console.error('[open-directory]', err.message);
|
|
140
|
+
res.status(500).json({ error: 'Failed to open directory' });
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
return router;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/routes/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { createRouteContext, type RouteContext } from './context.js';
|
|
2
|
+
export { createProjectsRouter } from './projects.js';
|
|
3
|
+
export { createEnhanceRouter } from './enhance.js';
|
|
4
|
+
export { createPublishRouter } from './publish.js';
|
|
5
|
+
export { createSearchRouter } from './search.js';
|
|
6
|
+
export { createSessionsRouter } from './sessions.js';
|
|
7
|
+
export { createArchiveRouter } from './archive.js';
|
|
8
|
+
export { createAuthRouter } from './auth.js';
|
|
9
|
+
export { createSettingsRouter } from './settings.js';
|
|
10
|
+
export { createExportRouter } from './export.js';
|
|
11
|
+
export { createPreviewRouter } from './preview.js';
|
|
12
|
+
export { createDashboardRouter } from './dashboard.js';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { createRouteContext } from './context.js';
|
|
2
|
+
export { createProjectsRouter } from './projects.js';
|
|
3
|
+
export { createEnhanceRouter } from './enhance.js';
|
|
4
|
+
export { createPublishRouter } from './publish.js';
|
|
5
|
+
export { createSearchRouter } from './search.js';
|
|
6
|
+
export { createSessionsRouter } from './sessions.js';
|
|
7
|
+
export { createArchiveRouter } from './archive.js';
|
|
8
|
+
export { createAuthRouter } from './auth.js';
|
|
9
|
+
export { createSettingsRouter } from './settings.js';
|
|
10
|
+
export { createExportRouter } from './export.js';
|
|
11
|
+
export { createPreviewRouter } from './preview.js';
|
|
12
|
+
export { createDashboardRouter } from './dashboard.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
|