spec-cat 0.1.44 → 0.1.46

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 (29) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{xK5F_xjP.js → BIqAiadP.js} +1 -1
  3. package/.output/public/_nuxt/{BqaOje-o.js → BIsfrp4O.js} +1 -1
  4. package/.output/public/_nuxt/{CwqI8l6M.js → ByZGFnUA.js} +49 -49
  5. package/.output/public/_nuxt/{B_IFBYSw.js → CE5wWE6n.js} +2 -2
  6. package/.output/public/_nuxt/CUoKmmxS.js +1 -0
  7. package/.output/public/_nuxt/{D_ZXiRDu.js → CjEIgEdp.js} +1 -1
  8. package/.output/public/_nuxt/CzV00gDF.js +1 -0
  9. package/.output/public/_nuxt/{BOLrA7H8.js → DIf4tF5h.js} +1 -1
  10. package/.output/public/_nuxt/{DLJ2xGMS.js → DTdHw1D1.js} +1 -1
  11. package/.output/public/_nuxt/{CDdYT-E3.js → DVcuiuw1.js} +1 -1
  12. package/.output/public/_nuxt/DXeEovpj.js +1 -0
  13. package/.output/public/_nuxt/{Ba3Pcgcf.js → DYmVuetx.js} +1 -1
  14. package/.output/public/_nuxt/builds/latest.json +1 -1
  15. package/.output/public/_nuxt/builds/meta/49ff9598-e142-4df6-bb2c-e8c36d984a47.json +1 -0
  16. package/.output/public/_nuxt/wza-2j7w.js +1 -0
  17. package/.output/server/chunks/_/codexProvider.mjs +1 -1
  18. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  19. package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
  20. package/.output/server/chunks/nitro/nitro.mjs +681 -681
  21. package/.output/server/chunks/routes/api/rebase/ai-resolve.post.mjs +154 -69
  22. package/.output/server/chunks/routes/api/rebase/ai-resolve.post.mjs.map +1 -1
  23. package/.output/server/package.json +1 -1
  24. package/package.json +1 -1
  25. package/.output/public/_nuxt/B56DSSfp.js +0 -1
  26. package/.output/public/_nuxt/BFFThwWz.js +0 -1
  27. package/.output/public/_nuxt/CaIUTuUU.js +0 -1
  28. package/.output/public/_nuxt/DXbMXlyj.js +0 -1
  29. package/.output/public/_nuxt/builds/meta/d88c9434-84d1-435a-9c24-03139ecee860.json +0 -1
@@ -1,8 +1,7 @@
1
1
  import { d as defineEventHandler, b as readBody, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
2
  import { v as validateWorktreePath, a as validateFilePath } from '../../../_/validateWorktree.mjs';
3
3
  import { g as getServerProviderSelection } from '../../../_/aiProviderSelection.mjs';
4
- import { a as getClaudeCliPath, g as getClaudeModelId } from '../../../_/claude.mjs';
5
- import { spawn } from 'node:child_process';
4
+ import { e as ensureProvidersInitialized, g as getProvider } from '../../../_/aiProviderRegistry.mjs';
6
5
  import 'node:http';
7
6
  import 'node:https';
8
7
  import 'node:crypto';
@@ -24,7 +23,142 @@ import 'node:os';
24
23
  import 'node:module';
25
24
  import 'node:fs/promises';
26
25
  import 'node:url';
27
- import '../../../_/aiProviderRegistry.mjs';
26
+
27
+ function createCollectorState() {
28
+ return {
29
+ textParts: [],
30
+ errors: []
31
+ };
32
+ }
33
+ function collectProviderText(state, event) {
34
+ switch (event.type) {
35
+ case "block_start":
36
+ if (event.blockType === "text" && typeof event.text === "string" && event.text.length > 0) {
37
+ state.textParts.push(event.text);
38
+ }
39
+ break;
40
+ case "block_delta":
41
+ if (typeof event.text === "string" && event.text.length > 0) {
42
+ state.textParts.push(event.text);
43
+ }
44
+ break;
45
+ case "error":
46
+ if (typeof event.error === "string" && event.error.trim().length > 0) {
47
+ state.errors.push(event.error.trim());
48
+ }
49
+ break;
50
+ case "turn_result":
51
+ if (event.subtype === "error") {
52
+ state.errors.push("Provider reported an execution error.");
53
+ }
54
+ break;
55
+ }
56
+ }
57
+ function capabilityLabel(capability) {
58
+ switch (capability) {
59
+ case "autoCommit":
60
+ return "auto-commit";
61
+ case "conflictResolution":
62
+ return "AI conflict resolution";
63
+ default:
64
+ return String(capability);
65
+ }
66
+ }
67
+ async function runProviderOneShot(options) {
68
+ await ensureProvidersInitialized();
69
+ const provider = getProvider(options.selection.providerId);
70
+ if (!provider) {
71
+ return {
72
+ success: false,
73
+ error: `Provider "${options.selection.providerId}" is not registered.`
74
+ };
75
+ }
76
+ if (!provider.streamChat || !provider.metadata.capabilities.streaming) {
77
+ return {
78
+ success: false,
79
+ error: `Provider "${options.selection.providerId}" does not support streaming chat.`
80
+ };
81
+ }
82
+ if (!provider.metadata.capabilities[options.capability]) {
83
+ return {
84
+ success: false,
85
+ error: `Provider "${options.selection.providerId}" does not support ${capabilityLabel(options.capability)}.`
86
+ };
87
+ }
88
+ if (!provider.isModelSupported(options.selection.modelKey)) {
89
+ return {
90
+ success: false,
91
+ error: `Model "${options.selection.modelKey}" is not supported by provider "${options.selection.providerId}".`
92
+ };
93
+ }
94
+ const collector = createCollectorState();
95
+ return await new Promise((resolve) => {
96
+ let settled = false;
97
+ const finish = (result) => {
98
+ if (settled) return;
99
+ settled = true;
100
+ resolve(result);
101
+ };
102
+ let controller;
103
+ try {
104
+ controller = provider.streamChat(
105
+ {
106
+ message: options.prompt,
107
+ selection: options.selection,
108
+ cwd: options.cwd,
109
+ permissionMode: "bypass",
110
+ ephemeral: options.selection.providerId === "codex"
111
+ },
112
+ {
113
+ onProviderJson(data) {
114
+ const events = provider.toCanonicalEvents(data);
115
+ for (const event of events) {
116
+ collectProviderText(collector, event);
117
+ }
118
+ },
119
+ onClose({ exitCode, signal, nonJsonOutput }) {
120
+ const errorLines = [
121
+ ...collector.errors,
122
+ ...nonJsonOutput.map((line) => line.trim()).filter(Boolean)
123
+ ];
124
+ const text = collector.textParts.join("").trim();
125
+ if (exitCode === 0 && errorLines.length === 0 && text.length > 0) {
126
+ finish({ success: true, text });
127
+ return;
128
+ }
129
+ const status = signal ? `Provider exited via signal ${signal}.` : `Provider exited with code ${exitCode != null ? exitCode : "unknown"}.`;
130
+ const detail = errorLines.join("\n").trim();
131
+ finish({
132
+ success: false,
133
+ error: detail ? `${status}
134
+ ${detail}` : status,
135
+ text
136
+ });
137
+ },
138
+ onError(error) {
139
+ finish({
140
+ success: false,
141
+ error: error instanceof Error ? error.message : String(error)
142
+ });
143
+ }
144
+ }
145
+ );
146
+ } catch (error) {
147
+ finish({
148
+ success: false,
149
+ error: error instanceof Error ? error.message : String(error)
150
+ });
151
+ return;
152
+ }
153
+ if (options.abortSignal) {
154
+ if (options.abortSignal.aborted) {
155
+ controller.kill();
156
+ } else {
157
+ options.abortSignal.addEventListener("abort", () => controller.kill(), { once: true });
158
+ }
159
+ }
160
+ });
161
+ }
28
162
 
29
163
  const CONTEXT_LINES = 5;
30
164
  function extractConflictBlocks(content) {
@@ -65,68 +199,6 @@ function extractConflictBlocks(content) {
65
199
  }
66
200
  return { lines, blocks };
67
201
  }
68
- async function resolveWithCli(prompt, cwd, modelKey) {
69
- const cliPath = getClaudeCliPath();
70
- const modelId = getClaudeModelId(modelKey);
71
- const args = [
72
- "-p",
73
- prompt,
74
- "--output-format",
75
- "stream-json",
76
- "--verbose",
77
- "--model",
78
- modelId,
79
- "--max-turns",
80
- "1",
81
- "--dangerously-skip-permissions"
82
- ];
83
- const proc = spawn(cliPath, args, {
84
- cwd,
85
- env: { ...process.env, NODE_NO_WARNINGS: "1" },
86
- stdio: ["pipe", "pipe", "pipe"]
87
- });
88
- proc.stdin.end();
89
- let lineBuffer = "";
90
- let resultText = "";
91
- const parseLine = (line) => {
92
- if (!line.trim()) return;
93
- try {
94
- const msg = JSON.parse(line);
95
- if (msg.type === "assistant" && typeof msg.message === "object" && msg.message) {
96
- const message = msg.message;
97
- if (Array.isArray(message.content)) {
98
- for (const block of message.content) {
99
- if (block.type === "text" && block.text) {
100
- resultText += block.text;
101
- }
102
- }
103
- }
104
- }
105
- } catch {
106
- }
107
- };
108
- proc.stdout.on("data", (chunk) => {
109
- lineBuffer += chunk.toString();
110
- const lines = lineBuffer.split("\n");
111
- lineBuffer = lines.pop() || "";
112
- for (const line of lines) parseLine(line);
113
- });
114
- const errorChunks = [];
115
- proc.stderr.on("data", (chunk) => {
116
- errorChunks.push(chunk.toString());
117
- });
118
- return await new Promise((resolve) => {
119
- proc.on("close", (code) => {
120
- if (lineBuffer.trim()) parseLine(lineBuffer);
121
- if (code === 0) {
122
- resolve({ success: true, text: resultText });
123
- } else {
124
- const stderr = errorChunks.join("").trim();
125
- resolve({ success: false, error: `CLI exited with code ${code}: ${stderr}`, text: resultText });
126
- }
127
- });
128
- });
129
- }
130
202
  function extractResolved(raw, marker) {
131
203
  const startTag = `===BLOCK_${marker}_START===`;
132
204
  const endTag = `===BLOCK_${marker}_END===`;
@@ -214,9 +286,18 @@ const aiResolve_post = defineEventHandler(async (event) => {
214
286
  }
215
287
  const prompt = buildBlockPrompt(body.filePath, blocks, body.userGuidance);
216
288
  try {
217
- const result = await resolveWithCli(prompt, body.worktreePath, selection.modelKey);
289
+ const result = await runProviderOneShot({
290
+ selection,
291
+ prompt,
292
+ cwd: body.worktreePath,
293
+ capability: "conflictResolution"
294
+ });
218
295
  if (!result.success || !result.text) {
219
- return { success: false, error: result.error || "AI resolution failed" };
296
+ return {
297
+ success: false,
298
+ error: result.error || "AI resolution failed",
299
+ providerId: selection.providerId
300
+ };
220
301
  }
221
302
  const resolvedBlocks = [];
222
303
  for (let i = 0; i < blocks.length; i++) {
@@ -240,10 +321,14 @@ const aiResolve_post = defineEventHandler(async (event) => {
240
321
  const replacementLines = resolvedBlocks[i].split("\n");
241
322
  resultLines.splice(block.startLine, block.endLine - block.startLine + 1, ...replacementLines);
242
323
  }
243
- return { success: true, resolvedContent: resultLines.join("\n") };
324
+ return {
325
+ success: true,
326
+ resolvedContent: resultLines.join("\n"),
327
+ providerId: selection.providerId
328
+ };
244
329
  } catch (error) {
245
330
  const message = error instanceof Error ? error.message : String(error);
246
- return { success: false, error: message };
331
+ return { success: false, error: message, providerId: selection.providerId };
247
332
  }
248
333
  });
249
334
 
@@ -1 +1 @@
1
- {"version":3,"file":"ai-resolve.post.mjs","sources":["../../../../../../server/api/rebase/ai-resolve.post.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-resolve.post.mjs","sources":["../../../../../../server/utils/providerOneShot.ts","../../../../../../server/api/rebase/ai-resolve.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,SAAS,oBAAA,GAAmD;AAC1D,EAAA,OAAO;AAAA,IACL,WAAW,EAAC;AAAA,IACZ,QAAQ;AAAC,GACX;AACF;AAEO,SAAS,mBAAA,CAAoB,OAAmC,KAAA,EAAsB;AAC3F,EAAA,QAAQ,MAAM,IAAA;AAAM,IAClB,KAAK,aAAA;AACH,MAAA,IAAI,KAAA,CAAM,SAAA,KAAc,MAAA,IAAU,OAAO,KAAA,CAAM,SAAS,QAAA,IAAY,KAAA,CAAM,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AACzF,QAAA,KAAA,CAAM,SAAA,CAAU,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAAA,MACjC;AACA,MAAA;AAAA,IACF,KAAK,aAAA;AACH,MAAA,IAAI,OAAO,KAAA,CAAM,IAAA,KAAS,YAAY,KAAA,CAAM,IAAA,CAAK,SAAS,CAAA,EAAG;AAC3D,QAAA,KAAA,CAAM,SAAA,CAAU,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAAA,MACjC;AACA,MAAA;AAAA,IACF,KAAK,OAAA;AACH,MAAA,IAAI,OAAO,MAAM,KAAA,KAAU,QAAA,IAAY,MAAM,KAAA,CAAM,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,EAAG;AACpE,QAAA,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,MAAM,CAAA;AAAA,MACtC;AACA,MAAA;AAAA,IACF,KAAK,aAAA;AACH,MAAA,IAAI,KAAA,CAAM,YAAY,OAAA,EAAS;AAC7B,QAAA,KAAA,CAAM,MAAA,CAAO,KAAK,uCAAuC,CAAA;AAAA,MAC3D;AACA,MAAA;AAAA;AAEN;AAEA,SAAS,gBAAgB,UAAA,EAAkD;AACzE,EAAA,QAAQ,UAAA;AAAY,IAClB,KAAK,YAAA;AACH,MAAA,OAAO,aAAA;AAAA,IACT,KAAK,oBAAA;AACH,MAAA,OAAO,wBAAA;AAAA,IACT;AACE,MAAA,OAAO,OAAO,UAAU,CAAA;AAAA;AAE9B;AAEA,eAAsB,mBAAmB,OAAA,EAMN;AACjC,EAAA,MAAM,0BAAA,EAA2B;AAEjC,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,OAAA,CAAQ,SAAA,CAAU,UAAU,CAAA;AACzD,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO,CAAA,UAAA,EAAa,OAAA,CAAQ,SAAA,CAAU,UAAU,CAAA,oBAAA;AAAA,KAClD;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,QAAA,CAAS,UAAA,IAAc,CAAC,QAAA,CAAS,QAAA,CAAS,aAAa,SAAA,EAAW;AACrE,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO,CAAA,UAAA,EAAa,OAAA,CAAQ,SAAA,CAAU,UAAU,CAAA,kCAAA;AAAA,KAClD;AAAA,EACF;AAEA,EAAA,IAA0B,CAAC,QAAA,CAAS,SAAS,YAAA,CAAa,OAAA,CAAQ,UAAU,CAAA,EAAG;AAC7E,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO,aAAa,OAAA,CAAQ,SAAA,CAAU,UAAU,CAAA,mBAAA,EAAsB,eAAA,CAAgB,OAAA,CAAQ,UAAU,CAAC,CAAA,CAAA;AAAA,KAC3G;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,QAAA,CAAS,gBAAA,CAAiB,OAAA,CAAQ,SAAA,CAAU,QAAQ,CAAA,EAAG;AAC1D,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,KAAA;AAAA,MACT,KAAA,EAAO,UAAU,OAAA,CAAQ,SAAA,CAAU,QAAQ,CAAA,gCAAA,EAAmC,OAAA,CAAQ,UAAU,UAAU,CAAA,EAAA;AAAA,KAC5G;AAAA,EACF;AAEA,EAAA,MAAM,YAAY,oBAAA,EAAqB;AAEvC,EAAA,OAAO,MAAM,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AACpC,IAAA,IAAI,OAAA,GAAU,KAAA;AACd,IAAA,MAAM,MAAA,GAAS,CAAC,MAAA,KAAkC;AAChD,MAAA,IAAI,OAAA,EAAS;AACb,MAAA,OAAA,GAAU,IAAA;AACV,MAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,IAChB,CAAA;AAEA,IAAA,IAAI,UAAA;AACJ,IAAA,IAAI;AACF,MAAA,UAAA,GAAa,QAAA,CAAS,UAAA;AAAA,QACpB;AAAA,UACE,SAAS,OAAA,CAAQ,MAAA;AAAA,UACjB,WAAW,OAAA,CAAQ,SAAA;AAAA,UACnB,KAAK,OAAA,CAAQ,GAAA;AAAA,UACb,cAAA,EAAgB,QAAA;AAAA,UAChB,SAAA,EAAW,OAAA,CAAQ,SAAA,CAAU,UAAA,KAAe;AAAA,SAC9C;AAAA,QACA;AAAA,UACE,eAAe,IAAA,EAAM;AACnB,YAAA,MAAM,MAAA,GAAS,QAAA,CAAS,iBAAA,CAAkB,IAA+C,CAAA;AACzF,YAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,cAAA,mBAAA,CAAoB,WAAW,KAAK,CAAA;AAAA,YACtC;AAAA,UACF,CAAA;AAAA,UACA,OAAA,CAAQ,EAAE,QAAA,EAAU,MAAA,EAAQ,eAAc,EAAG;AAC3C,YAAA,MAAM,UAAA,GAAa;AAAA,cACjB,GAAG,SAAA,CAAU,MAAA;AAAA,cACb,GAAG,cAAc,GAAA,CAAI,CAAA,IAAA,KAAQ,KAAK,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,OAAO;AAAA,aAC1D;AACA,YAAA,MAAM,OAAO,SAAA,CAAU,SAAA,CAAU,IAAA,CAAK,EAAE,EAAE,IAAA,EAAK;AAE/C,YAAA,IAAI,aAAa,CAAA,IAAK,UAAA,CAAW,WAAW,CAAA,IAAK,IAAA,CAAK,SAAS,CAAA,EAAG;AAChE,cAAA,MAAA,CAAO,EAAE,OAAA,EAAS,IAAA,EAAM,IAAA,EAAM,CAAA;AAC9B,cAAA;AAAA,YACF;AAEA,YAAA,MAAM,SAAS,MAAA,GACX,CAAA,2BAAA,EAA8B,MAAM,CAAA,CAAA,CAAA,GACpC,CAAA,0BAAA,EAA6B,8BAAY,SAAS,CAAA,CAAA,CAAA;AACtD,YAAA,MAAM,MAAA,GAAS,UAAA,CAAW,IAAA,CAAK,IAAI,EAAE,IAAA,EAAK;AAC1C,YAAA,MAAA,CAAO;AAAA,cACL,OAAA,EAAS,KAAA;AAAA,cACT,KAAA,EAAO,MAAA,GAAS,CAAA,EAAG,MAAM;AAAA,EAAK,MAAM,CAAA,CAAA,GAAK,MAAA;AAAA,cACzC;AAAA,aACD,CAAA;AAAA,UACH,CAAA;AAAA,UACA,QAAQ,KAAA,EAAO;AACb,YAAA,MAAA,CAAO;AAAA,cACL,OAAA,EAAS,KAAA;AAAA,cACT,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,aAC7D,CAAA;AAAA,UACH;AAAA;AACF,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,MAAA,CAAO;AAAA,QACL,OAAA,EAAS,KAAA;AAAA,QACT,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,OAC7D,CAAA;AACD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,QAAQ,WAAA,EAAa;AACvB,MAAA,IAAI,OAAA,CAAQ,YAAY,OAAA,EAAS;AAC/B,QAAA,UAAA,CAAW,IAAA,EAAK;AAAA,MAClB,CAAA,MAAO;AACL,QAAA,OAAA,CAAQ,WAAA,CAAY,gBAAA,CAAiB,OAAA,EAAS,MAAM,UAAA,CAAW,MAAK,EAAG,EAAE,IAAA,EAAM,IAAA,EAAM,CAAA;AAAA,MACvF;AAAA,IACF;AAAA,EACF,CAAC,CAAA;AACH;;ACxJA,MAAA,aAAA,GAAA,CAAA;AAkBA,SAAA,sBAAA,OAAA,EAAA;AACA,EAAA,MAAA,KAAA,GAAA,OAAA,CAAA,KAAA,CAAA,IAAA,CAAA;AACA,EAAA,MAAA,SAAA,EAAA;AAEA,EAAA,IAAA,CAAA,GAAA,CAAA;AACA,EAAA,OAAA,CAAA,GAAA,MAAA,MAAA,EAAA;AACA,IAAA,IAAA,SAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,EAAA;AACA,MAAA,MAAA,SAAA,GAAA,CAAA;AACA,MAAA,IAAA,aAAA,GAAA,EAAA;AACA,MAAA,IAAA,OAAA,GAAA,EAAA;AAGA,MAAA,KAAA,IAAA,IAAA,CAAA,GAAA,CAAA,EAAA,CAAA,GAAA,KAAA,CAAA,QAAA,CAAA,EAAA,EAAA;AACA,QAAA,IAAA,SAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,IAAA,kBAAA,EAAA,EAAA;AACA,UAAA,aAAA,GAAA,CAAA;AAAA,QACA,WAAA,SAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,EAAA;AACA,UAAA,OAAA,GAAA,CAAA;AACA,UAAA;AAAA,QACA;AAAA,MACA;AAEA,MAAA,IAAA,aAAA,KAAA,EAAA,IAAA,OAAA,KAAA,EAAA,EAAA;AACA,QAAA,MAAA,QAAA,GAAA,IAAA,CAAA,GAAA,CAAA,CAAA,EAAA,YAAA,aAAA,CAAA;AACA,QAAA,MAAA,SAAA,IAAA,CAAA,GAAA,CAAA,MAAA,MAAA,GAAA,CAAA,EAAA,UAAA,aAAA,CAAA;AACA,QAAA,MAAA,YAAA,GAAA,KAAA,CAAA,KAAA,CAAA,QAAA,EAAA,SAAA,CAAA,CAAA;AACA,QAAA,MAAA,IAAA,GAAA,MAAA,KAAA,CAAA,SAAA,GAAA,GAAA,aAAA,CAAA,CAAA,KAAA,IAAA,CAAA;AACA,QAAA,MAAA,MAAA,GAAA,MAAA,KAAA,CAAA,aAAA,GAAA,GAAA,OAAA,CAAA,CAAA,KAAA,IAAA,CAAA;AAEA,QAAA,MAAA,CAAA,IAAA,CAAA;AAAA,UACA,SAAA;AAAA,UACA,OAAA;AAAA,UACA,cAAA,EAAA,YAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA,SACA,CAAA;AACA,QAAA,CAAA,GAAA,OAAA,GAAA,CAAA;AACA,QAAA;AAAA,MACA;AAAA,IACA;AACA,IAAA,CAAA,EAAA;AAAA,EACA;AAEA,EAAA,OAAA,EAAA,OAAA,MAAA,EAAA;AACA;AAMA,SAAA,eAAA,CAAA,KAAA,MAAA,EAAA;AACA,EAAA,MAAA,QAAA,GAAA,YAAA,MAAA,CAAA,SAAA,CAAA;AACA,EAAA,MAAA,MAAA,GAAA,YAAA,MAAA,CAAA,OAAA,CAAA;AAGA,EAAA,MAAA,QAAA,GAAA,GAAA,CAAA,OAAA,CAAA,QAAA,CAAA;AACA,EAAA,MAAA,MAAA,GAAA,GAAA,CAAA,OAAA,CAAA,MAAA,CAAA;AACA,EAAA,IAAA,QAAA,KAAA,EAAA,IAAA,MAAA,KAAA,EAAA,IAAA,SAAA,QAAA,EAAA;AACA,IAAA,OAAA,GAAA,CAAA,KAAA,CAAA,QAAA,GAAA,QAAA,CAAA,MAAA,EAAA,MAAA,CAAA,CAAA,OAAA,CAAA,KAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAAA,OAAA,EAAA,CAAA;AAAA,EACA;AAGA,EAAA,MAAA,cAAA,GAAA,GAAA,CAAA,KAAA,CAAA,2BAAA,CAAA;AACA,EAAA,IAAA,cAAA,EAAA;AACA,IAAA,OAAA,eAAA,CAAA,CAAA;AAAA,EACA;AAGA,EAAA,IAAA,UAAA,CAAA,IAAA,CAAA,GAAA,CAAA,EAAA;AACA,IAAA,OAAA,IAAA;AAAA,EACA;AAGA,EAAA,MAAA,OAAA,GAAA,IAAA,IAAA,EAAA;AACA,EAAA,IAAA,8FAAA,CAAA,IAAA,CAAA,OAAA,CAAA,EAAA;AACA,IAAA,OAAA,IAAA;AAAA,EACA;AACA,EAAA,IAAA,QAAA,IAAA,CAAA,OAAA,KAAA,OAAA,CAAA,IAAA,CAAA,OAAA,CAAA,EAAA;AACA,IAAA,OAAA,IAAA;AAAA,EACA;AAEA,EAAA,OAAA,OAAA,IAAA,IAAA;AACA;AAMA,SAAA,gBAAA,CACA,QAAA,EACA,MAAA,EACA,YAAA,EACA;AACA,EAAA,MAAA,eAAA,YAAA,GAAA;AAAA,eAAA,EAAA,YAAA,CAAA,CAAA,GAAA,EAAA;AAEA,EAAA,IAAA,MAAA,CAAA,WAAA,CAAA,EAAA;AACA,IAAA,MAAA,CAAA,GAAA,OAAA,CAAA,CAAA;AACA,IAAA,OAAA,CAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA,MAAA,EASA,QAAA;AAAA;AAAA,EAEA,EAAA,cAAA,CAAA,CAAA;AAAA,EACA;AAGA,EAAA,MAAA,aAAA,GAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA,KAAA;AACA,IAAA,OAAA,CAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAAA,EACA,EAAA,cAAA,CAAA,CAAA;AAAA,EACA,CAAA,CAAA,CAAA,IAAA,CAAA,MAAA,CAAA;AAEA,EAAA,MAAA,YAAA,GAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,CAAA,KAAA;AACA,IAAA,OAAA,CAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAAA,4BAAA,EACA,IAAA,CAAA,CAAA;AAAA,SAAA,EACA,IAAA,CAAA,CAAA,OAAA,CAAA;AAAA,EACA,CAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAEA,EAAA,OAAA,CAAA,QAAA,EAAA,MAAA,CAAA,MAAA,CAAA,8BAAA,EAAA,QAAA,CAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,YAAA;;AAAA;AAAA,EAGA,YAAA;;AAAA;;AAAA,EAIA,aAAA,CAAA,CAAA;AACA;AAEA,uBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AAEA,EAAA,IAAA,EAAA,6BAAA,YAAA,CAAA,IAAA,EAAA,6BAAA,QAAA,CAAA,IAAA,EAAA,6BAAA,eAAA,CAAA,EAAA;AACA,IAAA,MAAA,YAAA,EAAA,UAAA,EAAA,GAAA,EAAA,OAAA,EAAA,4DAAA,CAAA;AAAA,EACA;AAEA,EAAA,oBAAA,CAAA,KAAA,YAAA,CAAA;AACA,EAAA,gBAAA,CAAA,KAAA,QAAA,CAAA;AAEA,EAAA,MAAA,SAAA,GAAA,MAAA,0BAAA,EAAA;AACA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,GAAA,qBAAA,CAAA,KAAA,eAAA,CAAA;AAGA,EAAA,IAAA,MAAA,CAAA,WAAA,CAAA,EAAA;AACA,IAAA,OAAA,EAAA,OAAA,EAAA,IAAA,EAAA,eAAA,EAAA,KAAA,eAAA,EAAA;AAAA,EACA;AAEA,EAAA,MAAA,SAAA,gBAAA,CAAA,IAAA,CAAA,QAAA,EAAA,MAAA,EAAA,KAAA,YAAA,CAAA;AAEA,EAAA,IAAA;AACA,IAAA,MAAA,MAAA,GAAA,MAAA,kBAAA,CAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA,IAAA,CAAA,YAAA;AAAA,MACA,UAAA,EAAA;AAAA,KACA,CAAA;AAEA,IAAA,IAAA,CAAA,MAAA,CAAA,OAAA,IAAA,CAAA,OAAA,IAAA,EAAA;AACA,MAAA,OAAA;AAAA,QACA,OAAA,EAAA,KAAA;AAAA,QACA,KAAA,EAAA,OAAA,KAAA,IAAA,sBAAA;AAAA,QACA,YAAA,SAAA,CAAA;AAAA,OACA;AAAA,IACA;AAGA,IAAA,MAAA,iBAAA,EAAA;AACA,IAAA,KAAA,IAAA,CAAA,GAAA,CAAA,EAAA,CAAA,GAAA,MAAA,CAAA,QAAA,CAAA,EAAA,EAAA;AACA,MAAA,MAAA,WAAA,eAAA,CAAA,MAAA,CAAA,MAAA,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AACA,MAAA,IAAA,aAAA,IAAA,EAAA;AACA,QAAA,MAAA,CAAA,IAAA,CAAA,MAAA,mDAAA,EAAA;AAAA,UACA,UAAA,IAAA,CAAA,QAAA;AAAA,UACA,UAAA,EAAA,CAAA;AAAA,UACA,eAAA,EAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAA,GAAA,GAAA;AAAA,SACA,CAAA;AACA,QAAA,OAAA;AAAA,UACA,OAAA,EAAA,KAAA;AAAA,UACA,OAAA,CAAA,sDAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,OAAA,MAAA,CAAA,gDAAA;AAAA,SACA;AAAA,MACA;AACA,MAAA,cAAA,CAAA,KAAA,QAAA,CAAA;AAAA,IACA;AAGA,IAAA,MAAA,WAAA,GAAA,CAAA,GAAA,KAAA,CAAA;AACA,IAAA,KAAA,IAAA,IAAA,MAAA,CAAA,MAAA,GAAA,CAAA,EAAA,CAAA,IAAA,GAAA,CAAA,EAAA,EAAA;AACA,MAAA,MAAA,KAAA,GAAA,OAAA,CAAA,CAAA;AACA,MAAA,MAAA,gBAAA,GAAA,cAAA,CAAA,CAAA,CAAA,CAAA,MAAA,IAAA,CAAA;AACA,MAAA,WAAA,CAAA,MAAA,CAAA,MAAA,SAAA,EAAA,KAAA,CAAA,UAAA,KAAA,CAAA,SAAA,GAAA,CAAA,EAAA,GAAA,gBAAA,CAAA;AAAA,IACA;AAEA,IAAA,OAAA;AAAA,MACA,OAAA,EAAA,IAAA;AAAA,MACA,eAAA,EAAA,WAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAAA,MACA,YAAA,SAAA,CAAA;AAAA,KACA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,MAAA,UAAA,KAAA,YAAA,KAAA,GAAA,KAAA,CAAA,OAAA,GAAA,OAAA,KAAA,CAAA;AACA,IAAA,OAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,OAAA,EAAA,UAAA,EAAA,UAAA,UAAA,EAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-cat-prod",
3
- "version": "0.1.44",
3
+ "version": "0.1.46",
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.44",
3
+ "version": "0.1.46",
4
4
  "description": "Spec-driven development workbench",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -1 +0,0 @@
1
- import{y as i,z as s,A as n,_ as a}from"./B_IFBYSw.js";function l(r,e){return i(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"})])}function h(r,e){return i(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4.5v15m7.5-7.5h-15"})])}function w(r,e){return i(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"})])}function k(r,e){return i(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[n("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 18 18 6M6 6l12 12"})])}const u=a("worktree",{state:()=>({worktrees:[],currentBranch:"",mainWorktree:"",workingDirectory:"",loading:!1,error:null}),getters:{activeWorktree:r=>r.worktrees.find(e=>e.isCurrent),featureWorktrees:r=>r.worktrees.filter(e=>!e.isMain),mainWorktreeInfo:r=>r.worktrees.find(e=>e.isMain),hasWorktrees:r=>r.worktrees.length>1,dirtyWorktrees:r=>r.worktrees.filter(e=>e.status==="dirty")},actions:{async initialize(){if(!this.workingDirectory)try{const{cwd:r}=await $fetch("/api/cwd");this.workingDirectory=r}catch(r){console.error("Failed to get working directory:",r),this.workingDirectory=""}},async fetchWorktrees(){await this.initialize(),this.loading=!0,this.error=null;try{const r=await $fetch("/api/worktrees",{query:{workingDirectory:this.workingDirectory}});this.worktrees=r.worktrees,this.currentBranch=r.currentBranch,this.mainWorktree=r.mainWorktree}catch(r){this.error=r instanceof Error?r.message:"Failed to fetch worktrees",console.error("Failed to fetch worktrees:",r)}finally{this.loading=!1}},async createWorktree(r){await this.initialize(),this.loading=!0,this.error=null;try{const e=await $fetch("/api/worktrees",{method:"POST",query:{workingDirectory:this.workingDirectory},body:r});return e.success&&e.worktree?this.worktrees.push(e.worktree):e.error&&(this.error=e.error),e}catch(e){const t=e instanceof Error?e.message:"Failed to create worktree";return this.error=t,{success:!1,error:t}}finally{this.loading=!1}},async deleteWorktree(r,e=!1){await this.initialize(),this.loading=!0,this.error=null;try{const t=await $fetch(`/api/worktrees/${r}`,{method:"DELETE",query:{workingDirectory:this.workingDirectory,deleteBranch:e.toString()}});return t.success?this.worktrees=this.worktrees.filter(o=>o.name!==r):t.error&&(this.error=t.error),t}catch(t){const o=t instanceof Error?t.message:"Failed to delete worktree";return this.error=o,{success:!1,error:o}}finally{this.loading=!1}},async switchWorktree(r){await this.initialize(),this.loading=!0,this.error=null;try{const e=await $fetch(`/api/worktrees/${r}/switch`,{method:"POST",query:{workingDirectory:this.workingDirectory}});return e.success?(this.worktrees=this.worktrees.map(t=>({...t,isCurrent:t.name===r})),this.currentBranch=r):e.error&&(this.error=e.error),e}catch(e){const t=e instanceof Error?e.message:"Failed to switch worktree";return this.error=t,{success:!1,error:t}}finally{this.loading=!1}},clearError(){this.error=null}}});export{l as a,h as b,w as c,k as r,u};
@@ -1 +0,0 @@
1
- import{d as C,y as s,z as a,L as g,G as o,B as u,k as B,M as D,N as j,H as M,T as E,C as b,O as T,D as F,P as k,A as t,K as c,E as $,Q as W,R as w,S,g as v,o as L,I as R,J as z}from"./B_IFBYSw.js";import{u as N,r as A,a as V,b as P,c as U}from"./B56DSSfp.js";const H=C({__name:"WorktreeStatusBadge",props:{status:{}},setup(h){const r=h,i=B(()=>({clean:{label:"clean",color:"text-retro-green bg-retro-green/20"},dirty:{label:"dirty",color:"text-retro-yellow bg-retro-yellow/20"},ahead:{label:"ahead",color:"text-retro-cyan bg-retro-cyan/20"},behind:{label:"behind",color:"text-retro-orange bg-retro-orange/20"},diverged:{label:"diverged",color:"text-retro-red bg-retro-red/20"}})[r.status]);return(n,p)=>(s(),a("span",{class:g(["px-1.5 py-0.5 text-[10px] font-mono uppercase rounded",o(i).color])},u(o(i).label),3))}}),K={class:"w-full max-w-md mx-4 bg-retro-dark border border-retro-border rounded-lg shadow-xl"},O={class:"flex items-center justify-between px-4 py-3 border-b border-retro-border"},q={key:0,class:"p-2 text-xs font-mono text-retro-red bg-retro-red/10 border border-retro-red/30 rounded"},G=["disabled"],I=["disabled"],J={class:"flex justify-end gap-2 pt-2"},Q=["disabled"],X=["disabled"],Y=C({__name:"WorktreeCreateModal",props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:["update:modelValue"],setup(h){const r=D(h,"modelValue"),i=N(),n=v(""),p=v(""),m=v(!1),x=v(""),f=async()=>{if(!n.value.trim()){x.value="Description is required";return}m.value=!0,x.value="";try{const d=await i.createWorktree({description:n.value.trim(),shortName:p.value.trim()||void 0});d.success?(n.value="",p.value="",r.value=!1):x.value=d.error||"Failed to create worktree"}catch(d){x.value=d instanceof Error?d.message:"Failed to create worktree"}finally{m.value=!1}},l=()=>{r.value=!1,n.value="",p.value="",x.value=""},_=d=>{d.key==="Escape"&&l()};return j(r,d=>{d?document.addEventListener("keydown",_):document.removeEventListener("keydown",_)}),(d,e)=>(s(),M(E,{to:"body"},[b(T,{"enter-active-class":"transition-opacity duration-200","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-200","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:F(()=>[r.value?(s(),a("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:k(l,["self"])},[t("div",K,[t("div",O,[e[2]||(e[2]=t("h3",{class:"text-sm font-mono text-retro-text"},"Create Worktree",-1)),t("button",{type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-text hover:bg-retro-panel transition-colors",onClick:l},[b(o(A),{class:"h-4 w-4"})])]),t("form",{class:"p-4 space-y-4",onSubmit:k(f,["prevent"])},[o(x)?(s(),a("div",q,u(o(x)),1)):c("",!0),t("div",null,[e[3]||(e[3]=t("label",{class:"block text-xs font-mono text-retro-muted mb-1"},[$(" Feature Description "),t("span",{class:"text-retro-red"},"*")],-1)),W(t("input",{"onUpdate:modelValue":e[0]||(e[0]=y=>w(n)?n.value=y:null),type:"text",placeholder:"e.g., Add user authentication",class:"w-full px-3 py-2 text-sm font-mono bg-retro-black border border-retro-border rounded text-retro-text placeholder-retro-subtle focus:outline-none focus:border-retro-cyan",disabled:o(m)},null,8,G),[[S,o(n)]]),e[4]||(e[4]=t("p",{class:"mt-1 text-[10px] font-mono text-retro-subtle"}," A brief description of what this feature does ",-1))]),t("div",null,[e[5]||(e[5]=t("label",{class:"block text-xs font-mono text-retro-muted mb-1"},[$(" Short Name "),t("span",{class:"text-retro-subtle"},"(optional)")],-1)),W(t("input",{"onUpdate:modelValue":e[1]||(e[1]=y=>w(p)?p.value=y:null),type:"text",placeholder:"e.g., auth",class:"w-full px-3 py-2 text-sm font-mono bg-retro-black border border-retro-border rounded text-retro-text placeholder-retro-subtle focus:outline-none focus:border-retro-cyan",disabled:o(m)},null,8,I),[[S,o(p)]]),e[6]||(e[6]=t("p",{class:"mt-1 text-[10px] font-mono text-retro-subtle"}," Override the auto-generated branch name (e.g., 001-auth instead of 001-add-user-authentication) ",-1))]),t("div",J,[t("button",{type:"button",class:"px-3 py-1.5 text-xs font-mono text-retro-muted hover:text-retro-text bg-retro-panel hover:bg-retro-border rounded transition-colors",disabled:o(m),onClick:l}," Cancel ",8,Q),t("button",{type:"submit",class:"px-3 py-1.5 text-xs font-mono text-retro-black bg-retro-cyan hover:bg-retro-cyan/80 rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:o(m)||!o(n).trim()},u(o(m)?"Creating...":"Create"),9,X)])],32)])])):c("",!0)]),_:1})]))}}),Z={class:"h-full flex flex-col bg-retro-black"},ee={class:"flex-shrink-0 h-12 flex items-center justify-between px-4 border-b border-retro-border bg-retro-dark"},te={class:"flex items-center gap-2"},oe={key:0,class:"px-4 py-2 bg-retro-red/20 border-b border-retro-red/50"},re={class:"text-xs font-mono text-retro-red"},se={class:"flex-1 overflow-y-auto p-2 space-y-1"},ne={class:"flex items-start justify-between gap-2"},ae={class:"flex-1 min-w-0"},le={class:"flex items-center gap-2"},de={key:0,class:"px-1.5 py-0.5 text-[10px] font-mono uppercase bg-retro-yellow/20 text-retro-yellow rounded"},ie={key:1,class:"px-1.5 py-0.5 text-[10px] font-mono uppercase bg-retro-cyan/20 text-retro-cyan rounded"},ce={key:0,class:"mt-1 text-xs font-mono text-retro-muted truncate"},ue={class:"text-retro-subtle"},pe={class:"mt-1 text-[10px] font-mono text-retro-subtle truncate"},me={class:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity"},xe=["onClick"],be=["onClick"],fe={key:0,class:"mt-2 text-[10px] font-mono text-retro-green"},he={key:0,class:"flex flex-col items-center justify-center py-8 text-center"},ye=C({__name:"WorktreePanel",setup(h){const r=N(),i=v(!1);L(()=>{r.fetchWorktrees()});const n=()=>{r.fetchWorktrees()},p=()=>{i.value=!0},m=async f=>{await r.switchWorktree(f)},x=async f=>{confirm(`Delete worktree "${f}"? This will remove the worktree directory.`)&&await r.deleteWorktree(f,!1)};return(f,l)=>{const _=H,d=Y;return s(),a("div",Z,[t("div",ee,[l[1]||(l[1]=t("h2",{class:"text-sm font-mono text-retro-text"},"Worktrees",-1)),t("div",te,[t("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-panel transition-colors",title:"Refresh",onClick:n},[b(o(V),{class:g(["h-4 w-4",{"animate-spin":o(r).loading}])},null,8,["class"])]),t("button",{type:"button",class:"p-1.5 rounded text-retro-muted hover:text-retro-green hover:bg-retro-panel transition-colors",title:"Create worktree",onClick:p},[b(o(P),{class:"h-4 w-4"})])])]),o(r).error?(s(),a("div",oe,[t("p",re,u(o(r).error),1)])):c("",!0),t("div",se,[(s(!0),a(R,null,z(o(r).worktrees,e=>(s(),a("div",{key:e.name,class:g(["group p-3 rounded-md border transition-colors",[e.isCurrent?"bg-retro-cyan/10 border-retro-cyan":"bg-retro-panel border-retro-border hover:border-retro-muted"]])},[t("div",ne,[t("div",ae,[t("div",le,[t("span",{class:g(["font-mono text-sm truncate",e.isCurrent?"text-retro-cyan":"text-retro-text"])},u(e.name),3),b(_,{status:e.status},null,8,["status"]),e.isMain?(s(),a("span",de," main ")):c("",!0),e.isCurrent?(s(),a("span",ie," current ")):c("",!0)]),e.lastCommit?(s(),a("div",ce,[t("span",ue,u(e.lastCommit.shortHash),1),l[2]||(l[2]=t("span",{class:"mx-1"},"·",-1)),t("span",null,u(e.lastCommit.message),1)])):c("",!0),t("div",pe,u(e.path),1)]),t("div",me,[!e.isCurrent&&!e.isMain?(s(),a("button",{key:0,type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-cyan hover:bg-retro-dark transition-colors",title:"Switch to this worktree",onClick:k(y=>m(e.name),["stop"])},[b(o(V),{class:"h-3.5 w-3.5"})],8,xe)):c("",!0),e.isMain?c("",!0):(s(),a("button",{key:1,type:"button",class:"p-1 rounded text-retro-muted hover:text-retro-red hover:bg-retro-dark transition-colors",title:"Delete worktree",onClick:k(y=>x(e.name),["stop"])},[b(o(U),{class:"h-3.5 w-3.5"})],8,be))])]),e.commitCount>0?(s(),a("div",fe,u(e.commitCount)+" commit"+u(e.commitCount>1?"s":"")+" ahead ",1)):c("",!0)],2))),128)),!o(r).loading&&o(r).worktrees.length===0?(s(),a("div",he,[...l[3]||(l[3]=[t("p",{class:"text-sm font-mono text-retro-muted"},"No worktrees found",-1),t("p",{class:"mt-1 text-xs font-mono text-retro-subtle"},"Create a new worktree to start working on a feature",-1)])])):c("",!0)]),b(d,{modelValue:o(i),"onUpdate:modelValue":l[0]||(l[0]=e=>w(i)?i.value=e:null)},null,8,["modelValue"])])}}}),ge=C({__name:"index",setup(h){return(r,i)=>{const n=ye;return s(),M(n)}}});export{ge as default};
@@ -1 +0,0 @@
1
- import{a as H,aa as C,ab as U,W,ac as A,N as T,ad as G,k as M,ae as J,af as Y,g as Q,s as N,Y as X,ag as Z,G as K,ah as ee,ai as te,aj as F,d as ae,y as g,z as p,A as _,B as w,K as S,I as V,J as I,L as k,E as se}from"./B_IFBYSw.js";import{k as re}from"./CDdYT-E3.js";const ne={trailing:!0};function oe(e,a=25,l={}){if(l={...ne,...l},!Number.isFinite(a))throw new TypeError("Expected `wait` to be a finite number");let c,r,y=[],s,t;const h=(d,u)=>(s=ie(e,d,u),s.finally(()=>{if(s=null,l.trailing&&t&&!r){const b=h(d,t);return t=null,b}}),s),D=function(...d){return l.trailing&&(t=d),s||new Promise(u=>{const b=!r&&l.leading;clearTimeout(r),r=setTimeout(()=>{r=null;const n=l.leading?c:h(this,d);t=null;for(const i of y)i(n);y=[]},a),b?(c=h(this,d),u(c)):y.push(u)})},o=d=>{d&&(clearTimeout(d),r=null)};return D.isPending=()=>!!r,D.cancel=()=>{o(r),y=[],t=null},D.flush=()=>{if(o(r),!t||s)return;const d=t;return t=null,h(this,d)},D}async function ie(e,a,l){return await e.apply(a,l)}const le=Symbol.for("nuxt:client-only"),ce=e=>e==="defer"||e===!1;function $e(...e){const a=typeof e[e.length-1]=="string"?e.pop():void 0;ue(e[0],e[1])&&e.unshift(a);let[l,c,r={}]=e,y=!1;const s=M(()=>te(l));if(typeof s.value!="string")throw new TypeError("[nuxt] [useAsyncData] key must be a string.");if(typeof c!="function")throw new TypeError("[nuxt] [useAsyncData] handler must be a function.");const t=H();r.server??=!0,r.default??=fe,r.getCachedData??=j,r.lazy??=!1,r.immediate??=!0,r.deep??=C.deep,r.dedupe??="cancel",r._functionName,t._asyncData[s.value];function h(){const n={cause:"initial",dedupe:r.dedupe};return t._asyncData[s.value]?._init||(n.cachedData=r.getCachedData(s.value,t,{cause:"initial"}),t._asyncData[s.value]=q(t,s.value,c,r,n.cachedData)),()=>t._asyncData[s.value].execute(n)}const D=h(),o=t._asyncData[s.value];o._deps++;const d=r.server!==!1&&t.payload.serverRendered;{let n=function(m){const f=t._asyncData[m];f?._deps&&(f._deps--,f._deps===0&&f?._off())};const i=J();if(i&&d&&r.immediate&&!i.sp&&(i.sp=[]),i&&!i._nuxtOnBeforeMountCbs){i._nuxtOnBeforeMountCbs=[];const m=i._nuxtOnBeforeMountCbs;U(()=>{m.forEach(f=>{f()}),m.splice(0,m.length)}),W(()=>m.splice(0,m.length))}const P=i&&(i._nuxtClientOnly||A(le,!1));d&&t.isHydrating&&(o.error.value||o.data.value!=null)?(o.pending.value=!1,o.status.value=o.error.value?"error":"success"):i&&(!P&&t.payload.serverRendered&&t.isHydrating||r.lazy)&&r.immediate?i._nuxtOnBeforeMountCbs.push(D):r.immediate&&D();const v=Y(),x=T(s,(m,f)=>{if((m||f)&&m!==f){y=!0;const R=t._asyncData[f]?.data.value!==C.value,z=t._asyncDataPromises[f]!==void 0,L={cause:"initial",dedupe:r.dedupe};if(!t._asyncData[m]?._init){let O;f&&R?O=t._asyncData[f].data.value:(O=r.getCachedData(m,t,{cause:"initial"}),L.cachedData=O),t._asyncData[m]=q(t,m,c,r,O)}t._asyncData[m]._deps++,f&&n(f),(r.immediate||R||z)&&t._asyncData[m].execute(L),F(()=>{y=!1})}},{flush:"sync"}),E=r.watch?T(r.watch,()=>{y||(t._asyncData[s.value]?._execute.isPending()&&F(()=>{t._asyncData[s.value]?._execute.flush()}),t._asyncData[s.value]?._execute({cause:"watch",dedupe:r.dedupe}))}):()=>{};v&&G(()=>{x(),E(),n(s.value)})}const u={data:B(()=>t._asyncData[s.value]?.data),pending:B(()=>t._asyncData[s.value]?.pending),status:B(()=>t._asyncData[s.value]?.status),error:B(()=>t._asyncData[s.value]?.error),refresh:(...n)=>t._asyncData[s.value]?._init?t._asyncData[s.value].execute(...n):h()(),execute:(...n)=>u.refresh(...n),clear:()=>{const n=t._asyncData[s.value];if(n?._abortController)try{n._abortController.abort(new DOMException("AsyncData aborted by user.","AbortError"))}finally{n._abortController=void 0}$(t,s.value)}},b=Promise.resolve(t._asyncDataPromises[s.value]).then(()=>u);return Object.assign(b,u),b}function B(e){return M({get(){return e()?.value},set(a){const l=e();l&&(l.value=a)}})}function ue(e,a){return!(typeof e=="string"||typeof e=="object"&&e!==null||typeof e=="function"&&typeof a=="function")}function $(e,a){a in e.payload.data&&(e.payload.data[a]=void 0),a in e.payload._errors&&(e.payload._errors[a]=C.errorValue),e._asyncData[a]&&(e._asyncData[a].data.value=void 0,e._asyncData[a].error.value=C.errorValue,e._asyncData[a].pending.value=!1,e._asyncData[a].status.value="idle"),a in e._asyncDataPromises&&(e._asyncDataPromises[a]=void 0)}function de(e,a){const l={};for(const c of a)l[c]=e[c];return l}function q(e,a,l,c,r){e.payload._errors[a]??=C.errorValue;const y=c.getCachedData!==j,s=l,t=c.deep?Q:N,h=r!=null,D=e.hook("app:data:refresh",async d=>{(!d||d.includes(a))&&await o.execute({cause:"refresh:hook"})}),o={data:t(h?r:c.default()),pending:N(!h),error:ee(e.payload._errors,a),status:N("idle"),execute:(...d)=>{const[u,b=void 0]=d,n=u&&b===void 0&&typeof u=="object"?u:{};if(e._asyncDataPromises[a]&&ce(n.dedupe??c.dedupe))return e._asyncDataPromises[a];if(n.cause==="initial"||e.isHydrating){const v="cachedData"in n?n.cachedData:c.getCachedData(a,e,{cause:n.cause??"refresh:manual"});if(v!=null)return e.payload.data[a]=o.data.value=v,o.error.value=C.errorValue,o.status.value="success",Promise.resolve(v)}o.pending.value=!0,o._abortController&&o._abortController.abort(new DOMException("AsyncData request cancelled by deduplication","AbortError")),o._abortController=new AbortController,o.status.value="pending";const i=new AbortController,P=new Promise((v,x)=>{try{const E=n.timeout??c.timeout,m=me([o._abortController?.signal,n?.signal],i.signal,E);if(m.aborted){const f=m.reason;x(f instanceof Error?f:new DOMException(String(f??"Aborted"),"AbortError"));return}return m.addEventListener("abort",()=>{const f=m.reason;x(f instanceof Error?f:new DOMException(String(f??"Aborted"),"AbortError"))},{once:!0,signal:i.signal}),Promise.resolve(s(e,{signal:m})).then(v,x)}catch(E){x(E)}}).then(async v=>{let x=v;c.transform&&(x=await c.transform(v)),c.pick&&(x=de(x,c.pick)),e.payload.data[a]=x,o.data.value=x,o.error.value=C.errorValue,o.status.value="success"}).catch(v=>{if(e._asyncDataPromises[a]&&e._asyncDataPromises[a]!==P||o._abortController?.signal.aborted)return e._asyncDataPromises[a];if(typeof DOMException<"u"&&v instanceof DOMException&&v.name==="AbortError")return o.status.value="idle",e._asyncDataPromises[a];o.error.value=Z(v),o.data.value=K(c.default()),o.status.value="error"}).finally(()=>{o.pending.value=!1,i.abort(),delete e._asyncDataPromises[a]});return e._asyncDataPromises[a]=P,e._asyncDataPromises[a]},_execute:oe((...d)=>o.execute(...d),0,{leading:!0}),_default:c.default,_deps:0,_init:!0,_hash:void 0,_off:()=>{D(),e._asyncData[a]?._init&&(e._asyncData[a]._init=!1),y||X(()=>{e._asyncData[a]?._init||($(e,a),o.execute=()=>Promise.resolve(),o.data.value=C.value)})}};return o}const fe=()=>C.value,j=(e,a,l)=>{if(a.isHydrating)return a.payload.data[e];if(l.cause!=="refresh:manual"&&l.cause!=="refresh:hook")return a.static.data[e]};function me(e,a,l){const c=e.filter(s=>!!s);if(typeof l=="number"&&l>=0){const s=AbortSignal.timeout?.(l);s&&c.push(s)}if(AbortSignal.any)return AbortSignal.any(c);const r=new AbortController;for(const s of c)if(s.aborted){const t=s.reason??new DOMException("Aborted","AbortError");try{r.abort(t)}catch{r.abort()}return r.signal}const y=()=>{const t=c.find(h=>h.aborted)?.reason??new DOMException("Aborted","AbortError");try{r.abort(t)}catch{r.abort()}};for(const s of c)s.addEventListener?.("abort",y,{once:!0,signal:a});return r.signal}const be={class:"space-y-3"},ye={key:0,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},_e={key:1,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},he={class:"text-xs font-mono text-retro-yellow"},ge={key:2,class:"rounded border border-retro-border bg-retro-panel px-4 py-3"},pe={key:3,class:"space-y-4"},ve={key:0,class:"text-xs font-mono text-retro-muted"},De={key:1,class:"text-xs font-mono text-retro-muted"},xe={class:"flex flex-col gap-2"},Ce={class:"flex flex-col gap-2"},we={class:"flex items-start justify-between gap-3"},Pe={class:"text-sm font-mono text-retro-text"},Ee={key:0,class:"text-xs font-mono text-retro-yellow"},Se={key:1,class:"text-xs font-mono text-retro-yellow"},Me={class:"text-xs text-retro-muted leading-tight"},Oe={class:"flex flex-wrap gap-2"},ke={key:0,class:"text-xs font-mono text-retro-yellow"},Be={class:"space-y-1.5"},Ne=["value","checked","disabled","onChange"],Ve={class:"flex-1 space-y-0.5"},Ie={class:"flex items-center gap-2"},Re={class:"text-sm font-mono text-retro-text"},Le={key:0,class:"text-[0.55rem] font-mono uppercase tracking-[0.25em] text-retro-cyan border border-retro-cyan rounded-full px-2 py-0.5"},Te={class:"text-xs text-retro-muted leading-tight"},je=ae({__name:"ProviderSelector",props:{providers:{},selected:{},permissionMode:{},pending:{type:Boolean},errorMessage:{}},emits:["select"],setup(e,{emit:a}){const l=e,c=a,r=[{key:"streaming",label:"Streaming"},{key:"permissions",label:"Permissions"},{key:"resume",label:"Session Resume"},{key:"autoCommit",label:"Auto Commit"}],y=M(()=>l.permissionMode==="ask"||l.permissionMode==="plan"),s=M(()=>re[l.permissionMode]),t=M(()=>!0);function h(u){const b=!y.value||u.capabilities.permissions,n=!t.value||u.capabilities.streaming;return b&&n}function D(u){return y.value&&!u.capabilities.permissions?`${u.name} cannot be used with ${s.value} because it does not expose permission prompts.`:t.value&&!u.capabilities.streaming?`${u.name} is unavailable because streaming runtime prerequisites are not satisfied.`:null}function o(u,b){h(u)&&c("select",{providerId:u.id,modelKey:b})}function d(u,b){return l.selected.providerId===u&&l.selected.modelKey===b}return(u,b)=>(g(),p("div",be,[e.pending?(g(),p("div",ye,[...b[0]||(b[0]=[_("p",{class:"text-xs font-mono text-retro-text"},"Loading providers…",-1)])])):e.errorMessage?(g(),p("div",_e,[_("p",he,"Unable to load providers: "+w(e.errorMessage),1)])):e.providers.length===0?(g(),p("div",ge,[...b[1]||(b[1]=[_("p",{class:"text-xs font-mono text-retro-muted"},"No AI providers are configured on the server. Check with your administrator.",-1)])])):(g(),p("div",pe,[y.value?(g(),p("p",ve," Permission mode "+w(s.value)+" requires a provider that supports permission prompts. Incompatible providers are disabled. ",1)):S("",!0),t.value?(g(),p("p",De," Chat currently requires a provider with streaming support. Providers without streaming are shown for preparation but disabled. ")):S("",!0),(g(!0),p(V,null,I(e.providers,n=>(g(),p("article",{key:n.id,class:k(["rounded border border-retro-border bg-retro-panel p-4 space-y-3 transition",{"border-retro-cyan bg-retro-cyan/5":e.selected.providerId===n.id,"hover:border-retro-muted":e.selected.providerId!==n.id}])},[_("div",xe,[_("div",Ce,[_("div",we,[_("span",Pe,w(n.name),1),y.value&&!n.capabilities.permissions?(g(),p("div",Ee," Permissions missing ")):t.value&&!n.capabilities.streaming?(g(),p("div",Se," Streaming missing ")):S("",!0)]),_("p",Me,w(n.description),1),_("div",Oe,[(g(),p(V,null,I(r,i=>_("span",{key:i.key,class:k(["inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-[0.6rem] font-mono uppercase tracking-[0.18em]",n.capabilities[i.key]?"border-retro-cyan/70 text-retro-cyan bg-retro-cyan/10":"border-retro-border text-retro-muted bg-retro-dark/60"])},[_("span",{class:k(["h-1.5 w-1.5 rounded-full",n.capabilities[i.key]?"bg-retro-cyan":"bg-retro-muted"])},null,2),se(" "+w(i.label),1)],2)),64))])])]),D(n)?(g(),p("p",ke,w(D(n)),1)):S("",!0),_("div",Be,[(g(!0),p(V,null,I(n.models,i=>(g(),p("label",{key:i.key,class:k(["flex items-start gap-3 px-3 py-2 rounded border cursor-pointer transition-colors",[d(n.id,i.key)?"border-retro-cyan bg-retro-cyan/10":"border-retro-border bg-retro-panel hover:border-retro-muted",h(n)?"":"opacity-60 cursor-not-allowed"]])},[_("input",{type:"radio",name:"provider-model",value:`${n.id}:${i.key}`,checked:d(n.id,i.key),disabled:!h(n),class:"mt-1 h-3.5 w-3.5 text-retro-cyan accent-retro-cyan",onChange:P=>o(n,i.key)},null,40,Ne),_("div",Ve,[_("div",Ie,[_("span",Re,w(i.label),1),i.default?(g(),p("span",Le," Default ")):S("",!0)]),_("p",Te,w(i.description),1)])],2))),128))])],2))),128))]))]))}});export{je as _,$e as u};
@@ -1 +0,0 @@
1
- import{_ as e}from"./DlAUqK2U.js";import{z as r,y as c}from"./B_IFBYSw.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":"d88c9434-84d1-435a-9c24-03139ecee860","timestamp":1776858189366,"prerendered":[]}