spec-cat 0.1.22 → 0.1.23

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.
Files changed (48) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{NsKpYGKU.js → -EMqkm_u.js} +1 -1
  3. package/.output/public/_nuxt/{CXuoBUW5.js → BDd_kh9e.js} +1 -1
  4. package/.output/public/_nuxt/{CXlw6va7.js → BJKzOiTU.js} +1 -1
  5. package/.output/public/_nuxt/{B6Qdx9x3.js → Bk4uZfKR.js} +1 -1
  6. package/.output/public/_nuxt/{D2jWy6Yv.js → C9Qk2Hno.js} +1 -1
  7. package/.output/public/_nuxt/{DuDc88rI.js → CDLI67Cr.js} +1 -1
  8. package/.output/public/_nuxt/{BDt4jGdk.js → CLPz4Oer.js} +1 -1
  9. package/.output/public/_nuxt/{hWTomhWa.js → CYVeOpC3.js} +1 -1
  10. package/.output/public/_nuxt/{DYq0avGL.js → CZbP5QXb.js} +1 -1
  11. package/.output/public/_nuxt/DQtVbA-s.js +150 -0
  12. package/.output/public/_nuxt/DXWMFGmi.js +1 -0
  13. package/.output/public/_nuxt/{CnyGP5yJ.js → DgiJut-o.js} +1 -1
  14. package/.output/public/_nuxt/{xDSloGc6.js → FbKhJXKu.js} +2 -2
  15. package/.output/public/_nuxt/builds/latest.json +1 -1
  16. package/.output/public/_nuxt/builds/meta/53b5c409-86a8-4624-8a0f-5bf31ab82deb.json +1 -0
  17. package/.output/public/_nuxt/useTheme.Dp77PlfC.css +1 -0
  18. package/.output/server/chunks/_/conversationStore.mjs +13 -1
  19. package/.output/server/chunks/_/conversationStore.mjs.map +1 -1
  20. package/.output/server/chunks/_/jobPersister.mjs +326 -0
  21. package/.output/server/chunks/_/jobPersister.mjs.map +1 -0
  22. package/.output/server/chunks/_/jobQueue.mjs +714 -0
  23. package/.output/server/chunks/_/jobQueue.mjs.map +1 -0
  24. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  25. package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
  26. package/.output/server/chunks/nitro/nitro.mjs +655 -647
  27. package/.output/server/chunks/routes/_ws.mjs +133 -527
  28. package/.output/server/chunks/routes/_ws.mjs.map +1 -1
  29. package/.output/server/chunks/routes/api/index.get.mjs +25 -14
  30. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  31. package/.output/server/chunks/routes/api/index.get2.mjs +14 -141
  32. package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
  33. package/.output/server/chunks/routes/api/index.get3.mjs +167 -0
  34. package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -0
  35. package/.output/server/chunks/routes/api/index.post.mjs +77 -116
  36. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  37. package/.output/server/chunks/routes/api/index.post2.mjs +149 -0
  38. package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -0
  39. package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs +48 -0
  40. package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs.map +1 -0
  41. package/.output/server/chunks/routes/api/jobs/_id_.get.mjs +55 -0
  42. package/.output/server/chunks/routes/api/jobs/_id_.get.mjs.map +1 -0
  43. package/.output/server/package.json +1 -1
  44. package/package.json +1 -1
  45. package/.output/public/_nuxt/Ce5fR5lE.js +0 -150
  46. package/.output/public/_nuxt/builds/meta/23707bc3-d223-45cd-b9db-ffcc7aca2680.json +0 -1
  47. package/.output/public/_nuxt/useTheme.CYXKgjUm.css +0 -1
  48. package/.output/public/_nuxt/z5m_gN1E.js +0 -1
@@ -1 +1 @@
1
- {"id":"23707bc3-d223-45cd-b9db-ffcc7aca2680","timestamp":1773985853063}
1
+ {"id":"53b5c409-86a8-4624-8a0f-5bf31ab82deb","timestamp":1774063107243}
@@ -0,0 +1 @@
1
+ {"id":"53b5c409-86a8-4624-8a0f-5bf31ab82deb","timestamp":1774063107243,"prerendered":[]}
@@ -0,0 +1 @@
1
+ .streaming-border[data-v-3d162cc0]{animation:streaming-bg-sweep-3d162cc0 3s ease-in-out infinite;background-image:linear-gradient(270deg,rgb(var(--color-retro-cyan)/.04),rgb(var(--color-retro-cyan)/.12),rgb(var(--color-retro-cyan)/.04),rgb(var(--color-retro-cyan)/.12))!important;border-color:rgb(var(--color-retro-cyan)/.4)!important}.streaming-active-border[data-v-3d162cc0],.streaming-border[data-v-3d162cc0]{background-color:transparent!important;background-size:300% 100%!important;overflow:hidden;position:relative}.streaming-active-border[data-v-3d162cc0]{animation:streaming-bg-sweep-3d162cc0 2s ease-in-out infinite;background-image:linear-gradient(270deg,rgb(var(--color-retro-cyan)/.08),rgb(var(--color-retro-cyan)/.2),rgb(var(--color-retro-cyan)/.08),rgb(var(--color-retro-cyan)/.2))!important;border-color:rgb(var(--color-retro-cyan)/.8)!important;box-shadow:0 0 8px rgb(var(--color-retro-cyan)/.3),0 0 0 1px rgb(var(--color-retro-cyan)/.4)}.streaming-preview-border[data-v-3d162cc0]{background-image:linear-gradient(270deg,rgb(var(--color-retro-magenta)/.03),rgb(var(--color-retro-magenta)/.08),rgb(var(--color-retro-magenta)/.03),rgb(var(--color-retro-magenta)/.08))!important;border-color:rgb(var(--color-retro-magenta)/.3)!important}.streaming-preview-active-border[data-v-3d162cc0],.streaming-preview-border[data-v-3d162cc0]{animation:streaming-bg-sweep-3d162cc0 3s ease-in-out infinite;background-color:transparent!important;background-size:300% 100%!important;overflow:hidden;position:relative}.streaming-preview-active-border[data-v-3d162cc0]{background-image:linear-gradient(270deg,rgb(var(--color-retro-cyan)/.06),rgb(var(--color-retro-magenta)/.18),rgb(var(--color-retro-cyan)/.06),rgb(var(--color-retro-magenta)/.18))!important;border-color:rgb(var(--color-retro-magenta)/.7)!important;box-shadow:0 0 0 1px rgb(var(--color-retro-magenta)/.3)}@keyframes streaming-bg-sweep-3d162cc0{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}
@@ -3,6 +3,12 @@ import { writeFile, readdir, rm, readFile, mkdir } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
4
  import { i as readSpecCatStore, j as getSpecCatDataDir } from '../nitro/nitro.mjs';
5
5
 
6
+ function generateBlockId() {
7
+ return `blk-${Date.now()}-${Math.random().toString(36).substring(2, 6)}`;
8
+ }
9
+ function generateMessageId() {
10
+ return `msg-${Date.now()}-${Math.random().toString(36).substring(2, 8)}`;
11
+ }
6
12
  const STORAGE_VERSION = 2;
7
13
  function generateConversationId() {
8
14
  return `conv-${Math.random().toString(36).slice(2, 12)}`;
@@ -10,6 +16,12 @@ function generateConversationId() {
10
16
  function generateArchivedConversationId() {
11
17
  return `arch-${Date.now()}-${Math.random().toString(36).substring(2, 8)}`;
12
18
  }
19
+ function generateConversationTitle(firstMessage) {
20
+ const MAX_LENGTH = 50;
21
+ const cleaned = firstMessage.trim().replace(/\n/g, " ");
22
+ if (cleaned.length <= MAX_LENGTH) return cleaned;
23
+ return cleaned.slice(0, MAX_LENGTH).trim() + "...";
24
+ }
13
25
  function isValidConversation(obj) {
14
26
  if (!obj || typeof obj !== "object") return false;
15
27
  const conv = obj;
@@ -186,5 +198,5 @@ async function upsertConversationInStorage(conversation, version) {
186
198
  }
187
199
  }
188
200
 
189
- export { STORAGE_VERSION as S, generateConversationId as a, generateArchivedConversationId as g, isValidConversation as i, readConversationStorageState as r, upsertConversationInStorage as u, writeConversationStorageState as w };
201
+ export { STORAGE_VERSION as S, generateConversationId as a, generateConversationTitle as b, generateMessageId as c, generateBlockId as d, generateArchivedConversationId as g, isValidConversation as i, readConversationStorageState as r, upsertConversationInStorage as u, writeConversationStorageState as w };
190
202
  //# sourceMappingURL=conversationStore.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversationStore.mjs","sources":["../../../../types/chat.ts","../../../../server/utils/conversationStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversationStore.mjs","sources":["../../../../types/chat.ts","../../../../server/utils/conversationStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,326 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { existsSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { e as eventBus, G as GLOBAL_CHANNEL } from './jobQueue.mjs';
5
+ import { c as generateMessageId, d as generateBlockId, u as upsertConversationInStorage, S as STORAGE_VERSION } from './conversationStore.mjs';
6
+ import { j as getSpecCatDataDir } from '../nitro/nitro.mjs';
7
+
8
+ const accumulators = /* @__PURE__ */ new Map();
9
+ function formatToolInputSummary(input) {
10
+ if (input.file_path) return String(input.file_path);
11
+ if (input.path) return String(input.path);
12
+ if (input.command) return String(input.command).slice(0, 50);
13
+ return "";
14
+ }
15
+ function startPersisting(conversationId, userMessage) {
16
+ const existing = accumulators.get(conversationId);
17
+ if (existing) {
18
+ existing.unsubscribe();
19
+ accumulators.delete(conversationId);
20
+ }
21
+ const assistantMessageId = generateMessageId();
22
+ const acc = {
23
+ conversationId,
24
+ userMessage,
25
+ assistantMessageId,
26
+ contentBlocks: [],
27
+ flatText: "",
28
+ currentTextBlockId: null,
29
+ currentThinkingBlockId: null,
30
+ activeTools: /* @__PURE__ */ new Map(),
31
+ providerSessionId: null,
32
+ unsubscribe: () => {
33
+ },
34
+ status: "streaming"
35
+ };
36
+ acc.unsubscribe = eventBus.subscribe(conversationId, (event) => {
37
+ handleEvent(acc, event);
38
+ });
39
+ accumulators.set(conversationId, acc);
40
+ console.log("[JobPersister] Started persisting for:", conversationId);
41
+ }
42
+ function handleEvent(acc, event) {
43
+ try {
44
+ if (event.type === "ui_event" && event.event) {
45
+ processUIEvent(acc, event.event);
46
+ return;
47
+ }
48
+ if (event.type === "done") {
49
+ if (event.denied) {
50
+ acc.status = "stopped";
51
+ } else {
52
+ markRemainingToolBlocks(acc, "complete");
53
+ acc.status = "complete";
54
+ }
55
+ finalize(acc);
56
+ return;
57
+ }
58
+ if (event.type === "error") {
59
+ markRemainingToolBlocks(acc, "error");
60
+ acc.status = "error";
61
+ const errorText = typeof event.error === "string" ? event.error : "Unknown error";
62
+ appendTextBlock(acc, `
63
+
64
+ **Error**: ${errorText}
65
+ `);
66
+ finalize(acc);
67
+ return;
68
+ }
69
+ if (event.type === "session_reset") {
70
+ const reason = typeof event.reason === "string" ? event.reason : "Session reset";
71
+ appendTextBlock(acc, `
72
+
73
+ > **Session Reset**: ${reason}
74
+
75
+ `);
76
+ return;
77
+ }
78
+ if (event.type === "permission_request") {
79
+ markRemainingToolBlocks(acc, "error");
80
+ acc.status = "stopped";
81
+ const tool = typeof event.tool === "string" ? event.tool : "Permission";
82
+ appendTextBlock(acc, `
83
+
84
+ **Permission Required**: ${tool}
85
+ `);
86
+ finalize(acc);
87
+ return;
88
+ }
89
+ } catch (err) {
90
+ console.error("[JobPersister] Error handling event:", err);
91
+ }
92
+ }
93
+ function finalize(acc) {
94
+ acc.unsubscribe();
95
+ accumulators.delete(acc.conversationId);
96
+ flush(acc);
97
+ }
98
+ function processUIEvent(acc, event) {
99
+ var _a, _b, _c, _d;
100
+ if (event.sessionId) {
101
+ acc.providerSessionId = event.sessionId;
102
+ }
103
+ switch (event.type) {
104
+ case "session_init": {
105
+ const block = {
106
+ id: generateBlockId(),
107
+ type: "session_init",
108
+ model: event.model,
109
+ tools: event.tools,
110
+ permissionMode: event.permissionMode,
111
+ cwd: event.cwd
112
+ };
113
+ acc.contentBlocks.push(block);
114
+ break;
115
+ }
116
+ case "block_start": {
117
+ const blockId = event.blockId || generateBlockId();
118
+ if (event.blockType === "text") {
119
+ const block = { id: blockId, type: "text", text: event.text || "" };
120
+ acc.contentBlocks.push(block);
121
+ acc.currentTextBlockId = blockId;
122
+ if (event.text) acc.flatText += event.text;
123
+ } else if (event.blockType === "thinking") {
124
+ const block = { id: blockId, type: "thinking", thinking: event.thinking || "" };
125
+ acc.contentBlocks.push(block);
126
+ acc.currentThinkingBlockId = blockId;
127
+ } else if (event.blockType === "tool_use" && event.toolUseId && event.name) {
128
+ const block = {
129
+ id: blockId,
130
+ type: "tool_use",
131
+ toolUseId: event.toolUseId,
132
+ name: event.name,
133
+ input: {},
134
+ inputSummary: "",
135
+ status: "running"
136
+ };
137
+ acc.contentBlocks.push(block);
138
+ acc.activeTools.set((_a = event.index) != null ? _a : 0, {
139
+ blockId,
140
+ toolUseId: event.toolUseId,
141
+ name: event.name,
142
+ inputJson: ""
143
+ });
144
+ }
145
+ break;
146
+ }
147
+ case "block_delta": {
148
+ if (event.text && acc.currentTextBlockId) {
149
+ const block = acc.contentBlocks.find((b) => b.id === acc.currentTextBlockId);
150
+ if (block && block.type === "text") {
151
+ block.text += event.text;
152
+ acc.flatText += event.text;
153
+ }
154
+ }
155
+ if (event.thinking && acc.currentThinkingBlockId) {
156
+ const block = acc.contentBlocks.find((b) => b.id === acc.currentThinkingBlockId);
157
+ if (block && block.type === "thinking") {
158
+ block.thinking += event.thinking;
159
+ }
160
+ }
161
+ if (event.partialJson && event.index !== void 0) {
162
+ const tool = acc.activeTools.get(event.index);
163
+ if (tool) {
164
+ tool.inputJson += event.partialJson;
165
+ }
166
+ }
167
+ break;
168
+ }
169
+ case "block_end": {
170
+ if (acc.currentTextBlockId) {
171
+ acc.currentTextBlockId = null;
172
+ }
173
+ if (acc.currentThinkingBlockId) {
174
+ acc.currentThinkingBlockId = null;
175
+ }
176
+ if (event.index !== void 0) {
177
+ const tool = acc.activeTools.get(event.index);
178
+ if (tool) {
179
+ let input = {};
180
+ try {
181
+ input = JSON.parse(tool.inputJson);
182
+ } catch {
183
+ }
184
+ const block = acc.contentBlocks.find((b) => b.id === tool.blockId);
185
+ if (block && block.type === "tool_use") {
186
+ const tb = block;
187
+ tb.input = input;
188
+ tb.inputSummary = formatToolInputSummary(input);
189
+ tb.status = "pending";
190
+ }
191
+ }
192
+ }
193
+ break;
194
+ }
195
+ case "tool_result": {
196
+ const toolBlock = acc.contentBlocks.find(
197
+ (b) => b.type === "tool_use" && b.toolUseId === event.toolUseId
198
+ );
199
+ if (toolBlock && toolBlock.type === "tool_use") {
200
+ toolBlock.status = event.isError ? "error" : "complete";
201
+ }
202
+ const block = {
203
+ id: generateBlockId(),
204
+ type: "tool_result",
205
+ toolUseId: event.toolUseId,
206
+ content: event.content || "",
207
+ isError: !!event.isError
208
+ };
209
+ acc.contentBlocks.push(block);
210
+ break;
211
+ }
212
+ case "turn_result": {
213
+ if (event.subtype !== "success") {
214
+ acc.status = "error";
215
+ }
216
+ if (event.subtype === "success" && event.usage) {
217
+ const block = {
218
+ id: generateBlockId(),
219
+ type: "result_summary",
220
+ totalCostUsd: (_b = event.totalCostUsd) != null ? _b : 0,
221
+ durationMs: (_c = event.durationMs) != null ? _c : 0,
222
+ numTurns: (_d = event.numTurns) != null ? _d : 0,
223
+ usage: event.usage
224
+ };
225
+ acc.contentBlocks.push(block);
226
+ }
227
+ break;
228
+ }
229
+ case "error": {
230
+ acc.status = "error";
231
+ break;
232
+ }
233
+ }
234
+ }
235
+ function appendTextBlock(acc, text) {
236
+ const block = { id: generateBlockId(), type: "text", text };
237
+ acc.contentBlocks.push(block);
238
+ acc.flatText += text;
239
+ }
240
+ function markRemainingToolBlocks(acc, status) {
241
+ for (const block of acc.contentBlocks) {
242
+ if (block.type === "tool_use") {
243
+ const tb = block;
244
+ if (tb.status === "running" || tb.status === "pending") {
245
+ tb.status = status;
246
+ }
247
+ }
248
+ }
249
+ }
250
+ async function flush(acc) {
251
+ const now = (/* @__PURE__ */ new Date()).toISOString();
252
+ const finalStatus = acc.status === "streaming" ? "complete" : acc.status;
253
+ try {
254
+ const dataDir = getSpecCatDataDir();
255
+ const filePath = join(dataDir, "conversations", `${acc.conversationId}.json`);
256
+ let conversation;
257
+ if (existsSync(filePath)) {
258
+ const raw = await readFile(filePath, "utf-8");
259
+ conversation = JSON.parse(raw);
260
+ } else {
261
+ conversation = {
262
+ id: acc.conversationId,
263
+ title: acc.userMessage.slice(0, 50),
264
+ messages: [],
265
+ createdAt: now,
266
+ updatedAt: now,
267
+ cwd: process.cwd(),
268
+ source: "scheduler"
269
+ };
270
+ }
271
+ let updated = false;
272
+ for (let i = conversation.messages.length - 1; i >= 0; i--) {
273
+ const m = conversation.messages[i];
274
+ if (m.role === "assistant" && m.status === "streaming") {
275
+ conversation.messages[i] = {
276
+ ...m,
277
+ content: acc.flatText,
278
+ contentBlocks: acc.contentBlocks,
279
+ status: finalStatus,
280
+ timestamp: now
281
+ };
282
+ updated = true;
283
+ break;
284
+ }
285
+ }
286
+ if (!updated) {
287
+ const userMsg = {
288
+ id: generateMessageId(),
289
+ role: "user",
290
+ content: acc.userMessage,
291
+ timestamp: now
292
+ };
293
+ const assistantMsg = {
294
+ id: acc.assistantMessageId,
295
+ role: "assistant",
296
+ content: acc.flatText,
297
+ contentBlocks: acc.contentBlocks,
298
+ timestamp: now,
299
+ status: finalStatus
300
+ };
301
+ conversation.messages.push(userMsg, assistantMsg);
302
+ }
303
+ conversation.updatedAt = now;
304
+ if (acc.providerSessionId) {
305
+ conversation.providerSessionId = acc.providerSessionId;
306
+ }
307
+ await upsertConversationInStorage(conversation, STORAGE_VERSION);
308
+ eventBus.emit(GLOBAL_CHANNEL, {
309
+ type: "notification",
310
+ notificationEvent: "job_persisted",
311
+ conversationId: acc.conversationId
312
+ });
313
+ console.log("[JobPersister] Flushed conversation:", {
314
+ conversationId: acc.conversationId,
315
+ status: acc.status,
316
+ blocks: acc.contentBlocks.length,
317
+ textLength: acc.flatText.length,
318
+ updatedExisting: updated
319
+ });
320
+ } catch (err) {
321
+ console.error("[JobPersister] Failed to flush conversation:", err);
322
+ }
323
+ }
324
+
325
+ export { startPersisting as s };
326
+ //# sourceMappingURL=jobPersister.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobPersister.mjs","sources":["../../../../server/utils/jobPersister.ts"],"names":[],"mappings":"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"}