spec-cat 0.1.60 → 0.1.62

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 (62) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/2zamijve.js +1 -0
  3. package/.output/public/_nuxt/{hL590mW_.js → BEjIzkrM.js} +54 -54
  4. package/.output/public/_nuxt/{0b9erTT7.js → BaSsfm-t.js} +1 -1
  5. package/.output/public/_nuxt/BjdLSVUw.js +1 -0
  6. package/.output/public/_nuxt/{fOeB-VHQ.js → Bz2rU2zs.js} +1 -1
  7. package/.output/public/_nuxt/{oZWZjCpV.js → D4LyIv_t.js} +1 -1
  8. package/.output/public/_nuxt/{CeUwIKdG.js → DIOhMCOf.js} +2 -2
  9. package/.output/public/_nuxt/{PyyEm6pa.js → DPOGSCeV.js} +1 -1
  10. package/.output/public/_nuxt/{BBjCHYA6.js → DeqM2TrP.js} +1 -1
  11. package/.output/public/_nuxt/{C7bEjS62.js → DwpuOtAP.js} +1 -1
  12. package/.output/public/_nuxt/{soqWbP5S.js → FfyCVKRU.js} +1 -1
  13. package/.output/public/_nuxt/{Ritd1ZTh.js → Su-Cl_JF.js} +1 -1
  14. package/.output/public/_nuxt/builds/latest.json +1 -1
  15. package/.output/public/_nuxt/builds/meta/df07a2f8-c6d6-420d-a863-ac6e0e7673e0.json +1 -0
  16. package/.output/public/_nuxt/{CtkWRKR5.js → zrVRZSxq.js} +1 -1
  17. package/.output/server/chunks/_/asyncLock.mjs +17 -0
  18. package/.output/server/chunks/_/asyncLock.mjs.map +1 -0
  19. package/.output/server/chunks/_/chatGit.mjs +19 -0
  20. package/.output/server/chunks/_/chatGit.mjs.map +1 -0
  21. package/.output/server/chunks/_/claude.mjs +2 -1
  22. package/.output/server/chunks/_/claude.mjs.map +1 -1
  23. package/.output/server/chunks/_/claudeProvider.mjs +2 -1
  24. package/.output/server/chunks/_/claudeProvider.mjs.map +1 -1
  25. package/.output/server/chunks/_/codexProvider.mjs +14 -2
  26. package/.output/server/chunks/_/codexProvider.mjs.map +1 -1
  27. package/.output/server/chunks/_/conversationStore.mjs.map +1 -1
  28. package/.output/server/chunks/_/jobQueue.mjs +1 -1
  29. package/.output/server/chunks/_/validateWorktree.mjs +1 -1
  30. package/.output/server/chunks/_/worktreePaths.mjs +1 -1
  31. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  32. package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
  33. package/.output/server/chunks/nitro/nitro.mjs +558 -558
  34. package/.output/server/chunks/routes/_ws.mjs +7 -6
  35. package/.output/server/chunks/routes/_ws.mjs.map +1 -1
  36. package/.output/server/chunks/routes/api/chat/compare.get.mjs +5 -0
  37. package/.output/server/chunks/routes/api/chat/compare.get.mjs.map +1 -1
  38. package/.output/server/chunks/routes/api/chat/finalize.post.mjs +94 -93
  39. package/.output/server/chunks/routes/api/chat/finalize.post.mjs.map +1 -1
  40. package/.output/server/chunks/routes/api/chat/generate-commit-message.post.mjs +2 -0
  41. package/.output/server/chunks/routes/api/chat/generate-commit-message.post.mjs.map +1 -1
  42. package/.output/server/chunks/routes/api/chat/preview-sync.post.mjs +28 -22
  43. package/.output/server/chunks/routes/api/chat/preview-sync.post.mjs.map +1 -1
  44. package/.output/server/chunks/routes/api/chat/preview.delete.mjs +24 -23
  45. package/.output/server/chunks/routes/api/chat/preview.delete.mjs.map +1 -1
  46. package/.output/server/chunks/routes/api/chat/preview.post.mjs +53 -48
  47. package/.output/server/chunks/routes/api/chat/preview.post.mjs.map +1 -1
  48. package/.output/server/chunks/routes/api/chat/rebase.post.mjs +39 -41
  49. package/.output/server/chunks/routes/api/chat/rebase.post.mjs.map +1 -1
  50. package/.output/server/chunks/routes/api/chat/worktree-commit.post.mjs +56 -46
  51. package/.output/server/chunks/routes/api/chat/worktree-commit.post.mjs.map +1 -1
  52. package/.output/server/chunks/routes/api/chat/worktree.delete.mjs +38 -30
  53. package/.output/server/chunks/routes/api/chat/worktree.delete.mjs.map +1 -1
  54. package/.output/server/chunks/routes/api/chat/worktree.post.mjs +73 -65
  55. package/.output/server/chunks/routes/api/chat/worktree.post.mjs.map +1 -1
  56. package/.output/server/chunks/routes/api/chat.post.mjs +16 -3
  57. package/.output/server/chunks/routes/api/chat.post.mjs.map +1 -1
  58. package/.output/server/package.json +1 -1
  59. package/package.json +1 -1
  60. package/.output/public/_nuxt/Bq8BNs4s.js +0 -1
  61. package/.output/public/_nuxt/CvPsR12A.js +0 -1
  62. package/.output/public/_nuxt/builds/meta/9d41800a-a604-4f15-8938-30e3b775a2dc.json +0 -1
@@ -1,8 +1,10 @@
1
1
  import { d as defineEventHandler, b as readBody, c as createError, e as getProjectDir, l as logger } from '../../../nitro/nitro.mjs';
2
- import { exec } from 'node:child_process';
2
+ import { execFile } from 'node:child_process';
3
3
  import { promisify } from 'node:util';
4
4
  import { a as resolvePreferredBaseBranch } from '../../../_/baseBranch.mjs';
5
5
  import { g as getChatWorktreePath } from '../../../_/worktreePaths.mjs';
6
+ import { a as assertSafeBranchName } from '../../../_/chatGit.mjs';
7
+ import { w as withLock } from '../../../_/asyncLock.mjs';
6
8
  import 'node:http';
7
9
  import 'node:https';
8
10
  import 'node:crypto';
@@ -28,7 +30,8 @@ import '../../../_/gitExec.mjs';
28
30
  import 'child_process';
29
31
  import 'util';
30
32
 
31
- const execAsync = promisify(exec);
33
+ const execFileAsync = promisify(execFile);
34
+ const CONVERSATION_ID_PATTERN = /^[A-Za-z0-9._-]+$/;
32
35
  const worktree_post = defineEventHandler(async (event) => {
33
36
  var _a;
34
37
  const body = await readBody(event);
@@ -39,17 +42,20 @@ const worktree_post = defineEventHandler(async (event) => {
39
42
  });
40
43
  }
41
44
  const { conversationId, featureId } = body;
45
+ if (!CONVERSATION_ID_PATTERN.test(conversationId)) {
46
+ throw createError({ statusCode: 400, message: "Invalid conversationId" });
47
+ }
42
48
  const requestedBaseBranch = (_a = body.baseBranch) == null ? void 0 : _a.trim();
43
49
  const projectDir = getProjectDir();
44
- const branchName = featureId || `sc/${conversationId}`;
50
+ const branchName = assertSafeBranchName(featureId || `sc/${conversationId}`, "branch");
45
51
  const worktreePath = getChatWorktreePath(conversationId, featureId);
46
52
  logger.chat.info("Creating chat worktree", { conversationId, branchName, worktreePath });
47
53
  const requestStart = process.hrtime.bigint();
48
54
  const stepDurations = {};
49
- async function execTimed(step, command, options) {
55
+ async function execTimed(step, args, options) {
50
56
  const start = process.hrtime.bigint();
51
57
  try {
52
- const result = await execAsync(command, { cwd: projectDir });
58
+ const result = await execFileAsync("git", args, { cwd: projectDir });
53
59
  const durationMs = Number(process.hrtime.bigint() - start) / 1e6;
54
60
  stepDurations[step] = durationMs;
55
61
  logger.chat.debug("Chat worktree step completed", { conversationId, step, durationMs });
@@ -63,73 +69,75 @@ const worktree_post = defineEventHandler(async (event) => {
63
69
  throw error;
64
70
  }
65
71
  }
66
- try {
67
- let baseBranch = requestedBaseBranch || "";
68
- if (!baseBranch) {
69
- baseBranch = await resolvePreferredBaseBranch(projectDir) || "";
70
- }
71
- if (!baseBranch) {
72
- return {
73
- success: false,
74
- error: "Unable to resolve a base branch for this worktree"
75
- };
76
- }
77
- if (baseBranch.startsWith("sc/")) {
78
- return {
79
- success: false,
80
- error: `Invalid base branch "${baseBranch}"`
81
- };
82
- }
83
- let base = "";
72
+ return withLock(projectDir, async () => {
84
73
  try {
85
- const { stdout: head } = await execTimed("resolve-base-head", `git rev-parse --verify "refs/heads/${baseBranch}^{commit}"`);
86
- base = head.trim();
87
- } catch {
88
- return {
89
- success: false,
90
- error: `Base branch "${baseBranch}" does not exist`
91
- };
92
- }
93
- if (featureId) {
94
- try {
95
- await execTimed("check-feature-branch-exists", `git rev-parse --verify "${branchName}"`, { logFailure: false });
74
+ let baseBranch = requestedBaseBranch || "";
75
+ if (!baseBranch) {
76
+ baseBranch = await resolvePreferredBaseBranch(projectDir) || "";
77
+ }
78
+ if (!baseBranch) {
96
79
  return {
97
80
  success: false,
98
- error: `Branch "${branchName}" already exists. Delete the existing branch or worktree first.`
81
+ error: "Unable to resolve a base branch for this worktree"
99
82
  };
83
+ }
84
+ if (baseBranch.startsWith("sc/")) {
85
+ return {
86
+ success: false,
87
+ error: `Invalid base branch "${baseBranch}"`
88
+ };
89
+ }
90
+ let base = "";
91
+ try {
92
+ const { stdout: head } = await execTimed("resolve-base-head", ["rev-parse", "--verify", `refs/heads/${baseBranch}^{commit}`]);
93
+ base = head.trim();
100
94
  } catch {
95
+ return {
96
+ success: false,
97
+ error: `Base branch "${baseBranch}" does not exist`
98
+ };
101
99
  }
100
+ if (featureId) {
101
+ try {
102
+ await execTimed("check-feature-branch-exists", ["rev-parse", "--verify", branchName], { logFailure: false });
103
+ return {
104
+ success: false,
105
+ error: `Branch "${branchName}" already exists. Delete the existing branch or worktree first.`
106
+ };
107
+ } catch {
108
+ }
109
+ }
110
+ await execTimed("worktree-add", ["worktree", "add", "-b", branchName, worktreePath, base]);
111
+ const totalDurationMs = Number(process.hrtime.bigint() - requestStart) / 1e6;
112
+ logger.chat.info("Chat worktree created", {
113
+ conversationId,
114
+ worktreePath,
115
+ branchName,
116
+ baseBranch,
117
+ totalDurationMs,
118
+ steps: stepDurations
119
+ });
120
+ return {
121
+ success: true,
122
+ worktreePath,
123
+ branch: branchName,
124
+ baseBranch
125
+ };
126
+ } catch (error) {
127
+ const errorMessage = error instanceof Error ? error.message : String(error);
128
+ const totalDurationMs = Number(process.hrtime.bigint() - requestStart) / 1e6;
129
+ logger.chat.error("Failed to create chat worktree", {
130
+ conversationId,
131
+ error: errorMessage,
132
+ totalDurationMs,
133
+ steps: stepDurations
134
+ });
135
+ return {
136
+ success: false,
137
+ error: errorMessage
138
+ };
102
139
  }
103
- await execTimed("worktree-add", `git worktree add -b "${branchName}" "${worktreePath}" "${base}"`);
104
- const totalDurationMs = Number(process.hrtime.bigint() - requestStart) / 1e6;
105
- logger.chat.info("Chat worktree created", {
106
- conversationId,
107
- worktreePath,
108
- branchName,
109
- baseBranch,
110
- totalDurationMs,
111
- steps: stepDurations
112
- });
113
- return {
114
- success: true,
115
- worktreePath,
116
- branch: branchName,
117
- baseBranch
118
- };
119
- } catch (error) {
120
- const errorMessage = error instanceof Error ? error.message : String(error);
121
- const totalDurationMs = Number(process.hrtime.bigint() - requestStart) / 1e6;
122
- logger.chat.error("Failed to create chat worktree", {
123
- conversationId,
124
- error: errorMessage,
125
- totalDurationMs,
126
- steps: stepDurations
127
- });
128
- return {
129
- success: false,
130
- error: errorMessage
131
- };
132
- }
140
+ });
133
141
  });
134
142
 
135
143
  export { worktree_post as default };
@@ -1 +1 @@
1
- {"version":3,"file":"worktree.post.mjs","sources":["../../../../../../server/api/chat/worktree.post.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree.post.mjs","sources":["../../../../../../server/api/chat/worktree.post.ts"],"names":[],"mappings":"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"}
@@ -170,14 +170,23 @@ ${context.context}`;
170
170
  res.setHeader("X-Accel-Buffering", "no");
171
171
  res.flushHeaders();
172
172
  const writeChunk = (data) => {
173
+ if (res.writableEnded || res.destroyed) return;
173
174
  res.write(data);
174
175
  if (typeof res.flush === "function") {
175
176
  res.flush();
176
177
  }
177
178
  };
179
+ const endResponse = () => {
180
+ if (res.writableEnded || res.destroyed) return;
181
+ try {
182
+ res.end();
183
+ } catch {
184
+ }
185
+ };
178
186
  const isUnexpectedExit = (exitCode) => exitCode !== 0 && exitCode !== null;
179
187
  return new Promise((resolve, reject) => {
180
188
  let controller = null;
189
+ let clientGone = false;
181
190
  const runStream = (resumeSessionId, isRetry = false, forceEphemeral = false) => {
182
191
  streamChatWithProvider(
183
192
  {
@@ -234,26 +243,30 @@ ${context.context}`;
234
243
  } else {
235
244
  writeChunk(doneEvent());
236
245
  }
237
- res.end();
246
+ endResponse();
238
247
  resolve();
239
248
  },
240
249
  onError(error) {
241
250
  console.error("[Chat API] Process error:", error);
242
251
  writeChunk(errorEvent(error.message));
243
- res.end();
252
+ endResponse();
244
253
  reject(error);
245
254
  }
246
255
  }
247
256
  ).then((activeController) => {
248
257
  controller = activeController;
258
+ if (clientGone) {
259
+ controller.kill();
260
+ }
249
261
  }).catch((error) => {
250
262
  writeChunk(errorEvent(error instanceof Error ? error.message : String(error)));
251
- res.end();
263
+ endResponse();
252
264
  reject(error);
253
265
  });
254
266
  };
255
267
  runStream(chatRequest.sessionId);
256
268
  res.on("close", () => {
269
+ clientGone = true;
257
270
  controller == null ? void 0 : controller.kill();
258
271
  });
259
272
  });
@@ -1 +1 @@
1
- {"version":3,"file":"chat.post.mjs","sources":["../../../../../server/utils/chatEventFormatters.ts","../../../../../server/utils/specSearch/contextInjector.ts","../../../../../server/api/chat.post.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.post.mjs","sources":["../../../../../server/utils/chatEventFormatters.ts","../../../../../server/utils/specSearch/contextInjector.ts","../../../../../server/api/chat.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,SAAS,kBAAkB,IAAA,EAAuB;AACvD,EAAA,OAAO,KAAK,SAAA,CAAU,EAAE,MAAM,eAAA,EAAiB,IAAA,EAAM,CAAA,GAAI,IAAA;AAC3D;AAEO,SAAS,kBAAkB,MAAA,EAAwB;AACxD,EAAA,OAAO,KAAK,SAAA,CAAU,EAAE,MAAM,eAAA,EAAiB,MAAA,EAAQ,CAAA,GAAI,IAAA;AAC7D;AAEO,SAAS,WAAW,OAAA,EAAyB;AAClD,EAAA,OAAO,IAAA,CAAK,UAAU,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,OAAA,EAAS,CAAA,GAAI,IAAA;AAC7D;AAEO,SAAS,SAAA,GAAoB;AAClC,EAAA,OAAO,KAAK,SAAA,CAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA,GAAI,IAAA;AAC5C;;ACLA,eAAsB,+BAA+B,KAAA,EAIlB;AAbnC,EAAA,IAAA,EAAA;AAcE,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,IAAA,EAAK;AAC/B,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,EAAE,UAAU,KAAA,EAAM;AAAA,EAC3B;AAEA,EAAA,MAAM,SAAA,GAAY,MAAM,YAAA,CAAa,KAAK,CAAA;AAC1C,EAAA,MAAM,OAAA,GAAU,MAAM,SAAA,CAAU,QAAA,EAAU,KAAA,EAAO;AAAA,IAC/C,SAAA;AAAA,IACA,WAAW,KAAA,CAAM,SAAA;AAAA,IACjB,KAAA,EAAA,CAAO,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,EAAA,GAAoB;AAAA,GAC5B,CAAA;AAED,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,OAAO;AAAA,MACL,QAAA,EAAU,KAAA;AAAA,MACV,OAAA,EAAS;AAAA,KACX;AAAA,EACF;AAEA,EAAA,MAAM,WAAqB,EAAC;AAC5B,EAAA,QAAA,CAAS,KAAK,2BAA2B,CAAA;AACzC,EAAA,QAAA,CAAS,KAAK,wEAAwE,CAAA;AAEtF,EAAA,KAAA,MAAW,CAAC,KAAA,EAAO,MAAM,CAAA,IAAK,OAAA,CAAQ,SAAQ,EAAG;AAC/C,IAAA,MAAM,QAAQ,MAAA,CAAO,KAAA;AACrB,IAAA,QAAA,CAAS,KAAK,EAAE,CAAA;AAChB,IAAA,QAAA,CAAS,IAAA,CAAK,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAA,EAAA,EAAK,MAAM,UAAU,CAAA,CAAA,EAAI,KAAA,CAAM,SAAS,CAAA,CAAE,CAAA;AACpE,IAAA,IAAI,KAAA,CAAM,gBAAA,CAAiB,MAAA,GAAS,CAAA,EAAG;AACrC,MAAA,QAAA,CAAS,KAAK,CAAA,aAAA,EAAgB,KAAA,CAAM,iBAAiB,IAAA,CAAK,KAAK,CAAC,CAAA,CAAE,CAAA;AAAA,IACpE;AACA,IAAA,QAAA,CAAS,IAAA,CAAK,CAAA,GAAA,EAAM,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,CAAE,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAC,CAAA,CAAE,CAAA;AAAA,EACxE;AAEA,EAAA,MAAM,aAAa,sBAAA,EAAuB;AAC1C,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,QAAA,CAAS,KAAK,EAAE,CAAA;AAChB,IAAA,QAAA,CAAS,IAAA,CAAK,CAAA,qCAAA,EAAwC,UAAU,CAAA,iCAAA,CAAmC,CAAA;AAAA,EACrG;AAEA,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,IAAA;AAAA,IACV,OAAA,EAAS,QAAA,CAAS,IAAA,CAAK,IAAI;AAAA,GAC7B;AACF;;ACrCA,MAAA,kBAAA,GAAA,+BAAA;AACA,MAAA,qBAAA,GAAA,yDAAA;AACA,MAAA,qBAAA,GAAA,kDAAA;AACA,MAAA,wBAAA,GAAA,uBAAA;AACA,MAAA,wBAAA,GAAA,mBAAA;AAEA,SAAA,4BAAA,OAAA,EAAA;AACA,EAAA,MAAA,KAAA,GAAA,OAAA,CAAA,KAAA,CAAA,kBAAA,CAAA;AACA,EAAA,OAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAA,CAAA,CAAA;AACA;AAEA,SAAA,wCAAA,OAAA,EAAA;AACA,EAAA,MAAA,OAAA,GAAA,QAAA,IAAA,EAAA;AACA,EAAA,IAAA,CAAA,SAAA,OAAA,KAAA;AACA,EAAA,IAAA,OAAA,CAAA,UAAA,CAAA,GAAA,CAAA,EAAA,OAAA,KAAA;AACA,EAAA,MAAA,WAAA,qBAAA,CAAA,IAAA,CAAA,OAAA,CAAA,IAAA,qBAAA,CAAA,KAAA,OAAA,CAAA;AACA,EAAA,MAAA,WAAA,wBAAA,CAAA,IAAA,CAAA,OAAA,CAAA,IAAA,wBAAA,CAAA,KAAA,OAAA,CAAA;AACA,EAAA,OAAA,QAAA,IAAA,QAAA;AACA;AAEA,kBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;;AACA,EAAA,MAAA,WAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AAEA,EAAA,IAAA,EAAA,CAAA,EAAA,GAAA,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAA,OAAA,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,IAAA,EAAA,2CAAA,SAAA,CAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,OAAA,CAAA,IAAA,6BAAA,EAAA;AAAA,IACA,OAAA,EAAA,WAAA,CAAA,OAAA,CAAA,KAAA,CAAA,GAAA,GAAA,CAAA;AAAA,IACA,WAAA,WAAA,CAAA,SAAA;AAAA,IACA,WAAA,WAAA,CAAA;AAAA,GACA,CAAA;AAEA,EAAA,IAAA,kBAAA,WAAA,CAAA,OAAA;AACA,EAAA,MAAA,cAAA,GAAA,WAAA,CAAA,OAAA,CAAA,KAAA,CAAA,kCAAA,CAAA;AACA,EAAA,IAAA,cAAA,EAAA;AACA,IAAA,IAAA;AACA,MAAA,MAAA,SAAA,GAAA,eAAA,CAAA,CAAA;AACA,MAAA,MAAA,OAAA,GAAA,MAAA,8BAAA,CAAA;AAAA,QACA,OAAA,WAAA,CAAA,OAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA,EAAA;AAAA,OACA,CAAA;AACA,MAAA,IAAA,OAAA,CAAA,QAAA,IAAA,OAAA,CAAA,OAAA,EAAA;AACA,QAAA,eAAA,GAAA,CAAA,EAAA,YAAA,OAAA;;AAAA,EAAA,QAAA,OAAA,CAAA,CAAA;AAAA,MACA;AAAA,IACA,SAAA,KAAA,EAAA;AACA,MAAA,OAAA,CAAA,IAAA,CAAA,oDAAA,KAAA,CAAA;AAAA,IACA;AAAA,EACA,CAAA,MAAA,IAAA,uCAAA,CAAA,WAAA,CAAA,OAAA,CAAA,EAAA;AACA,IAAA,IAAA;AACA,MAAA,MAAA,OAAA,GAAA,MAAA,8BAAA,CAAA;AAAA,QACA,OAAA,WAAA,CAAA,OAAA;AAAA,QACA,SAAA,EAAA,2BAAA,CAAA,WAAA,CAAA,OAAA,CAAA;AAAA,QACA,UAAA,EAAA;AAAA,OACA,CAAA;AACA,MAAA,IAAA,OAAA,CAAA,QAAA,IAAA,OAAA,CAAA,OAAA,EAAA;AACA,QAAA,eAAA,GAAA,CAAA,EAAA,YAAA,OAAA;;AAAA,EAAA,QAAA,OAAA,CAAA,CAAA;AAAA,MACA;AAAA,IACA,SAAA,KAAA,EAAA;AACA,MAAA,OAAA,CAAA,IAAA,CAAA,oEAAA,KAAA,CAAA;AAAA,IACA;AAAA,EACA;AAEA,EAAA,MAAA,mBAAA,aAAA,EAAA;AACA,EAAA,MAAA,kBAAA,GAAA,WAAA,CAAA,UAAA,GACA,EAAA,UAAA,EAAA,WAAA,CAAA,UAAA,EAAA,QAAA,EAAA,WAAA,CAAA,gBAAA,IAAA,EAAA,EAAA,GACA,MAAA,0BAAA,EAAA;AACA,EAAA,MAAA,SAAA,GAAA,MAAA,8BAAA,CAAA,kBAAA,CAAA;AAEA,EAAA,MAAA,gBAAA,MAAA,uBAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACA;AACA,EAAA,IAAA,aAAA,aAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA,cAAA,OAAA,CAAA;AAAA,KACA,CAAA;AAAA,EACA;AAGA,EAAA,MAAA,GAAA,GAAA,MAAA,IAAA,CAAA,GAAA;AAGA,EAAA,GAAA,CAAA,SAAA,CAAA,gBAAA,mBAAA,CAAA;AACA,EAAA,GAAA,CAAA,SAAA,CAAA,iBAAA,wBAAA,CAAA;AACA,EAAA,GAAA,CAAA,SAAA,CAAA,cAAA,YAAA,CAAA;AACA,EAAA,GAAA,CAAA,SAAA,CAAA,qBAAA,IAAA,CAAA;AACA,EAAA,GAAA,CAAA,YAAA,EAAA;AAIA,EAAA,MAAA,UAAA,GAAA,CAAA,IAAA,KAAA;AACA,IAAA,IAAA,GAAA,CAAA,aAAA,IAAA,GAAA,CAAA,SAAA,EAAA;AACA,IAAA,GAAA,CAAA,MAAA,IAAA,CAAA;AAEA,IAAA,IAAA,OAAA,GAAA,CAAA,KAAA,KAAA,UAAA,EAAA;AACA,MAAA,IAAA,KAAA,EAAA;AAAA,IACA;AAAA,EACA,CAAA;AAEA,EAAA,MAAA,cAAA,MAAA;AACA,IAAA,IAAA,GAAA,CAAA,aAAA,IAAA,GAAA,CAAA,SAAA,EAAA;AACA,IAAA,IAAA;AACA,MAAA,GAAA,CAAA,GAAA,EAAA;AAAA,IACA,CAAA,CAAA,MAAA;AAAA,IAAA;AAAA,EACA,CAAA;AAEA,EAAA,MAAA,gBAAA,GAAA,CAAA,QAAA,KAAA,QAAA,KAAA,KAAA,QAAA,KAAA,IAAA;AAGA,EAAA,OAAA,IAAA,OAAA,CAAA,CAAA,OAAA,EAAA,MAAA,KAAA;AACA,IAAA,IAAA,UAAA,GAAA,IAAA;AAKA,IAAA,IAAA,UAAA,GAAA,KAAA;AACA,IAAA,MAAA,YAAA,CAAA,eAAA,EAAA,OAAA,GAAA,KAAA,EAAA,iBAAA,KAAA,KAAA;AACA,MAAA,sBAAA;AAAA,QACA;AAAA,UACA,OAAA,EAAA,eAAA;AAAA,UACA,SAAA;AAAA,UACA,GAAA,EAAA,gBAAA;AAAA,UACA,cAAA,EAAA,QAAA;AAAA,UACA,eAAA;AAAA,UACA,SAAA,EAAA,cAAA,IAAA,SAAA,CAAA,UAAA,KAAA;AAAA,SACA;AAAA,QACA;AAAA,UACA,eAAA,IAAA,EAAA;AACA,YAAA,UAAA,CAAA,iBAAA,CAAA,IAAA,CAAA,CAAA;AAAA,UACA,CAAA;AAAA,UACA,OAAA,CAAA,EAAA,QAAA,EAAA,MAAA,EAAA,eAAA,EAAA;AACA,YAAA,MAAA,kBAAA,GAAA,wBAAA,aAAA,CAAA;AACA,YAAA,MAAA,kBAAA,GAAA,gCAAA,aAAA,CAAA;AACA,YAAA,IAAA,iBAAA,QAAA,CAAA,IAAA,sBAAA,CAAA,kBAAA,IAAA,CAAA,OAAA,EAAA;AACA,cAAA,UAAA,CAAA,iBAAA,CAAA,wFAAA,CAAA,CAAA;AACA,cAAA,SAAA,CAAA,MAAA,EAAA,MAAA,IAAA,CAAA;AACA,cAAA;AAAA,YACA;AAEA,YAAA,IAAA,gBAAA,CAAA,QAAA,CAAA,IAAA,eAAA,IAAA,CAAA,OAAA,EAAA;AACA,cAAA,MAAA,kBAAA,GAAA,UAAA,UAAA,KAAA,OAAA;AACA,cAAA,UAAA,CAAA,iBAAA;AAAA,gBACA,kBAAA,GACA,CAAA,iCAAA,EAAA,QAAA,CAAA,2CAAA,CAAA,GACA,oCAAA,QAAA,CAAA,iCAAA;AAAA,eACA,CAAA;AACA,cAAA,SAAA,CAAA,MAAA,EAAA,MAAA,kBAAA,CAAA;AACA,cAAA;AAAA,YACA;AAEA,YAAA,IAAA,gBAAA,CAAA,QAAA,CAAA,EAAA;AACA,cAAA,OAAA,CAAA,MAAA,iDAAA,EAAA;AAAA,gBACA,YAAA,SAAA,CAAA,UAAA;AAAA,gBACA,UAAA,SAAA,CAAA,QAAA;AAAA,gBACA,WAAA,WAAA,CAAA,SAAA;AAAA,gBACA,QAAA;AAAA,gBACA,MAAA;AAAA,gBACA,aAAA,EAAA,aAAA,CAAA,KAAA,CAAA,GAAA;AAAA,eACA,CAAA;AACA,cAAA,MAAA,OAAA,GAAA,6BAAA,CAAA,aAAA,EAAA,GAAA,CAAA;AACA,cAAA,MAAA,OAAA,GAAA,OAAA,GAAA,CAAA,QAAA,EAAA,OAAA,CAAA,CAAA,GAAA,EAAA;AACA,cAAA,UAAA,CAAA,UAAA,CAAA,CAAA,4CAAA,EAAA,QAAA,CAAA,EAAA,MAAA,GAAA,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA,GAAA,EAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA;AAAA,YACA,CAAA,MAAA,IAAA,QAAA,KAAA,IAAA,IAAA,MAAA,EAAA;AACA,cAAA,OAAA,CAAA,MAAA,8CAAA,EAAA;AAAA,gBACA,YAAA,SAAA,CAAA,UAAA;AAAA,gBACA,UAAA,SAAA,CAAA,QAAA;AAAA,gBACA,WAAA,WAAA,CAAA,SAAA;AAAA,gBACA,MAAA;AAAA,gBACA,aAAA,EAAA,aAAA,CAAA,KAAA,CAAA,GAAA;AAAA,eACA,CAAA;AACA,cAAA,MAAA,OAAA,GAAA,6BAAA,CAAA,aAAA,EAAA,GAAA,CAAA;AACA,cAAA,MAAA,OAAA,GAAA,OAAA,GAAA,CAAA,QAAA,EAAA,OAAA,CAAA,CAAA,GAAA,EAAA;AACA,cAAA,UAAA,CAAA,WAAA,CAAA,sCAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,CAAA;AAAA,YACA,CAAA,MAAA;AACA,cAAA,UAAA,CAAA,WAAA,CAAA;AAAA,YACA;AACA,YAAA,WAAA,EAAA;AACA,YAAA,OAAA,EAAA;AAAA,UACA,CAAA;AAAA,UACA,QAAA,KAAA,EAAA;AACA,YAAA,OAAA,CAAA,KAAA,CAAA,6BAAA,KAAA,CAAA;AACA,YAAA,UAAA,CAAA,UAAA,CAAA,KAAA,CAAA,OAAA,CAAA,CAAA;AACA,YAAA,WAAA,EAAA;AACA,YAAA,MAAA,CAAA,KAAA,CAAA;AAAA,UACA;AAAA;AACA,OACA,CACA,IAAA,CAAA,CAAA,gBAAA,KAAA;AACA,QAAA,UAAA,GAAA,gBAAA;AAEA,QAAA,IAAA,UAAA,EAAA;AACA,UAAA,UAAA,CAAA,IAAA,EAAA;AAAA,QACA;AAAA,MACA,CAAA,CAAA,CACA,KAAA,CAAA,CAAA,KAAA,KAAA;AACA,QAAA,UAAA,CAAA,UAAA,CAAA,iBAAA,KAAA,GAAA,KAAA,CAAA,UAAA,MAAA,CAAA,KAAA,CAAA,CAAA,CAAA;AACA,QAAA,WAAA,EAAA;AACA,QAAA,MAAA,CAAA,KAAA,CAAA;AAAA,MACA,CAAA,CAAA;AAAA,IACA,CAAA;AAEA,IAAA,SAAA,CAAA,YAAA,SAAA,CAAA;AAEA,IAAA,GAAA,CAAA,EAAA,CAAA,SAAA,MAAA;AACA,MAAA,UAAA,GAAA,IAAA;AACA,MAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAA,IAAA,EAAA;AAAA,IACA,CAAA,CAAA;AAAA,EACA,CAAA,CAAA;AACA,CAAA,CAAA;;;;"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-cat-prod",
3
- "version": "0.1.60",
3
+ "version": "0.1.62",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-cat",
3
- "version": "0.1.60",
3
+ "version": "0.1.62",
4
4
  "description": "Spec-driven development workbench",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -1 +0,0 @@
1
- import{M as f,$ as h,g as m}from"./CeUwIKdG.js";const p="claude",l="sonnet",g=[{value:"sonnet",label:"Sonnet",description:"Balanced performance and cost"},{value:"opus",label:"Opus",description:"Most capable, higher cost"},{value:"haiku",label:"Haiku",description:"Fast and cost-effective"}];function M(e){if(!e)return{};const t={},s=typeof e.claudeModel=="string"&&g.some(n=>n.value===e.claudeModel)?e.claudeModel:void 0;typeof e.providerId=="string"?(t.providerId=e.providerId,typeof e.providerModelKey=="string"&&e.providerModelKey.length>0?t.providerModelKey=e.providerModelKey:s?t.providerModelKey=s:t.providerModelKey=l):s&&(t.providerId="claude",t.providerModelKey=s),(e.theme==="dark"||e.theme==="light")&&(t.theme=e.theme);const r=e.permissionMode;return r&&["plan","ask","auto","bypass"].includes(String(r))&&(t.permissionMode=r),typeof e.autoGenerateCommitMessages=="boolean"&&(t.autoGenerateCommitMessages=e.autoGenerateCommitMessages),t}const y=f("settings",{state:()=>({providerId:p,providerModelKey:l,theme:"dark",permissionMode:"ask",autoGenerateCommitMessages:!1,_hydrated:!1}),getters:{providerSelection:e=>({providerId:e.providerId,modelKey:e.providerModelKey})},actions:{async hydrate(){if(!this._hydrated)try{const e=await $fetch("/api/settings"),t=M(e);t.providerId!==void 0&&(this.providerId=t.providerId),t.providerModelKey!==void 0&&(this.providerModelKey=t.providerModelKey),t.theme!==void 0&&(this.theme=t.theme),t.permissionMode!==void 0&&(this.permissionMode=t.permissionMode),t.autoGenerateCommitMessages!==void 0&&(this.autoGenerateCommitMessages=t.autoGenerateCommitMessages),this._hydrated=!0}catch(e){console.error("Failed to load settings:",e)}},setTheme(e){this.theme=e,this._saveToServer()},setProviderSelection(e){this.providerId=e.providerId,this.providerModelKey=typeof e.modelKey=="string"&&e.modelKey.length>0?e.modelKey:l,this._saveToServer(!0)},setPermissionMode(e){this.permissionMode=e,this._saveToServer()},setAutoGenerateCommitMessages(e){this.autoGenerateCommitMessages=e,this._saveToServer()},resetToDefaults(){this.providerId=p,this.providerModelKey=l,this.theme="dark",this.permissionMode="ask",this.autoGenerateCommitMessages=!1,this._saveToServer()},_saveToServer(e=!1){const t={providerId:this.providerId,providerModelKey:this.providerModelKey,claudeModel:this.providerId==="claude"?this.providerModelKey:void 0,theme:this.theme,permissionMode:this.permissionMode,autoGenerateCommitMessages:this.autoGenerateCommitMessages};$fetch("/api/settings",{method:"POST",body:t}).then(s=>{if(!e||!s?.settings)return;const r=s.settings.providerId,n=s.settings.providerModelKey;typeof r=="string"&&(this.providerId=r),typeof n=="string"&&n.length>0&&(this.providerModelKey=n)}).catch(s=>{console.error("Failed to save settings:",s)})}}}),_=Object.freeze(Object.defineProperty({__proto__:null,useSettingsStore:y},Symbol.toStringTag,{value:"Module"})),d=m([]);function S(){const e=(i,o="info",a=3e3)=>{const c=`toast-${Date.now()}-${Math.random().toString(36).slice(2)}`,v={id:c,message:i,type:o,duration:a};return d.value.push(v),a>0&&setTimeout(()=>{t(c)},a),c},t=i=>{const o=d.value.findIndex(a=>a.id===i);o!==-1&&d.value.splice(o,1)},s=(i,o)=>e(i,"success",o),r=(i,o)=>e(i,"error",o),n=(i,o)=>e(i,"info",o),u=(i,o)=>e(i,"warning",o);return{toasts:h(d),add:e,remove:t,success:s,error:r,info:n,warning:u}}const A=Object.freeze(Object.defineProperty({__proto__:null,useToast:S},Symbol.toStringTag,{value:"Module"}));function T(){return`blk-${Date.now()}-${Math.random().toString(36).substring(2,6)}`}function E(e){return Array.isArray(e.contentBlocks)&&e.contentBlocks.length>0}const K={plan:"Plan Mode",ask:"Ask Before",auto:"Auto Edit",bypass:"Bypass"},C={plan:"The assistant will create a plan before making changes",ask:"The assistant will ask before each action",auto:"The assistant can read and edit files automatically",bypass:"Skip all permission checks (dangerous)"},k=300,O=600,D=400;function b(){return`msg-${Date.now()}-${Math.random().toString(36).substring(2,8)}`}const G=2,N=100,L=80;function P(){return`conv-${Math.random().toString(36).slice(2,12)}`}function R(e){const s=e.trim().replace(/\n/g," ");return s.length<=50?s:s.slice(0,50).trim()+"..."}function $(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&typeof t.title=="string"&&Array.isArray(t.messages)&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&typeof t.cwd=="string"}function H(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.id=="string"&&typeof t.sourceConversationId=="string"&&typeof t.title=="string"&&Array.isArray(t.messages)&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&typeof t.archivedAt=="string"&&typeof t.cwd=="string"}export{l as D,N as M,D as P,G as S,L as W,S as a,H as b,k as c,O as d,P as e,p as f,b as g,R as h,$ as i,T as j,K as k,C as l,E as m,A as n,_ as s,y as u};
@@ -1 +0,0 @@
1
- import{_ as e}from"./DlAUqK2U.js";import{z as r,y as c}from"./CeUwIKdG.js";const o={};function t(n,s){return c(),r("div")}const f=e(o,[["render",t]]);export{f as default};
@@ -1 +0,0 @@
1
- {"id":"9d41800a-a604-4f15-8938-30e3b775a2dc","timestamp":1780312711107,"prerendered":[]}