spec-cat 0.1.24 → 0.1.26

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 (52) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/8_4qvbip.js +36 -0
  3. package/.output/public/_nuxt/B2xLiDuD.js +1 -0
  4. package/.output/public/_nuxt/{B5CkRg11.js → BPrZX-_J.js} +1 -1
  5. package/.output/public/_nuxt/Bze5ywup.js +1 -0
  6. package/.output/public/_nuxt/{BwGW6ro4.js → BzfYDrv2.js} +2 -2
  7. package/.output/public/_nuxt/CiXy_SW9.js +64 -0
  8. package/.output/public/_nuxt/{q7giXQYI.js → DIlI3WTI.js} +1 -1
  9. package/.output/public/_nuxt/{DEYVPkjx.js → Drn_WUL3.js} +1 -1
  10. package/.output/public/_nuxt/{C3zox5gF.js → O3PivLp-.js} +1 -1
  11. package/.output/public/_nuxt/UOLai9rz.js +93 -0
  12. package/.output/public/_nuxt/{9w_2Mmlc.js → _ZoYWOkW.js} +1 -1
  13. package/.output/public/_nuxt/builds/latest.json +1 -1
  14. package/.output/public/_nuxt/builds/meta/0627033e-44b7-4d84-841a-c47017cd574d.json +1 -0
  15. package/.output/public/_nuxt/entry.mJra9RkV.css +1 -0
  16. package/.output/public/_nuxt/oZhDUS0h.js +1 -0
  17. package/.output/public/_nuxt/{BXYy_1q3.js → ovAaTTn7.js} +1 -1
  18. package/.output/public/_nuxt/useTheme.CYTdpguX.css +1 -0
  19. package/.output/server/chunks/_/eventBus.mjs +52 -0
  20. package/.output/server/chunks/_/eventBus.mjs.map +1 -0
  21. package/.output/server/chunks/_/geminiProvider.mjs +99 -25
  22. package/.output/server/chunks/_/geminiProvider.mjs.map +1 -1
  23. package/.output/server/chunks/_/jobPersister.mjs +4 -3
  24. package/.output/server/chunks/_/jobPersister.mjs.map +1 -1
  25. package/.output/server/chunks/_/jobQueue.mjs +14 -54
  26. package/.output/server/chunks/_/jobQueue.mjs.map +1 -1
  27. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  28. package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
  29. package/.output/server/chunks/nitro/nitro.mjs +696 -679
  30. package/.output/server/chunks/routes/_ws.mjs +6 -2
  31. package/.output/server/chunks/routes/_ws.mjs.map +1 -1
  32. package/.output/server/chunks/routes/api/conversations/_conversationId/archive.post.mjs +6 -0
  33. package/.output/server/chunks/routes/api/conversations/_conversationId/archive.post.mjs.map +1 -1
  34. package/.output/server/chunks/routes/api/index.get.mjs +1 -0
  35. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  36. package/.output/server/chunks/routes/api/index.post.mjs +1 -0
  37. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  38. package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs +1 -0
  39. package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs.map +1 -1
  40. package/.output/server/chunks/routes/api/jobs/_id_.get.mjs +1 -0
  41. package/.output/server/chunks/routes/api/jobs/_id_.get.mjs.map +1 -1
  42. package/.output/server/package.json +1 -1
  43. package/package.json +1 -1
  44. package/.output/public/_nuxt/4fNBhYih.js +0 -1
  45. package/.output/public/_nuxt/BIEXFa_-.js +0 -1
  46. package/.output/public/_nuxt/CTvl5rYA.js +0 -1
  47. package/.output/public/_nuxt/Cdz7yq-9.js +0 -156
  48. package/.output/public/_nuxt/D9HkWjwL.js +0 -1
  49. package/.output/public/_nuxt/DCQ8fVjv.js +0 -1
  50. package/.output/public/_nuxt/builds/meta/3ad3d42f-406b-41b2-a79c-2b068cdf0ccd.json +0 -1
  51. package/.output/public/_nuxt/entry.CE6x3Mpw.css +0 -1
  52. package/.output/public/_nuxt/useTheme.Dp77PlfC.css +0 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "date": "2026-03-21T03:27:04.379Z",
2
+ "date": "2026-03-21T10:08:19.572Z",
3
3
  "preset": "node-server",
4
4
  "framework": {
5
5
  "name": "nuxt",
@@ -0,0 +1,36 @@
1
+ import{u as Y,r as j,a as Q,C as q,_ as i,b as X,c as _,d as w,e as n,f as Z}from"./CiXy_SW9.js";import{u as ee}from"./Bze5ywup.js";import{d as te,o as se,z as a,A as t,G as c,H as S,I as A,J as I,C as o,K as oe,g as re,k as ne,y as r,L as ae,B as T}from"./BzfYDrv2.js";import"./DlAUqK2U.js";const ie={class:"h-screen flex flex-col bg-retro-black text-retro-text font-mono overflow-hidden"},le={class:"h-14 shrink-0 border-b border-retro-border bg-retro-panel/50 px-8 flex items-center justify-between"},de={class:"shrink-0 flex border-b border-retro-border bg-retro-panel/30"},pe=["onClick"],ce={class:"flex-1 min-h-0 overflow-y-auto"},ue={key:0,class:"p-8"},me={class:"grid grid-cols-2 gap-4"},be={class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},ge={key:1,class:"p-8 space-y-6 max-w-2xl mx-auto"},ke={class:"space-y-2"},xe={class:"space-y-2"},he={class:"space-y-2"},ye={class:"space-y-2"},fe={class:"space-y-2"},ve={class:"space-y-2"},_e={key:2,class:"p-8 space-y-8 max-w-2xl mx-auto"},we={class:"space-y-2"},Se={class:"space-y-2"},Ae={class:"space-y-2"},Ie={class:"space-y-2"},Te={class:"space-y-2"},Be={class:"space-y-2"},$e={class:"space-y-2"},Ue={class:"space-y-2"},Ce={class:"space-y-2"},Ee={class:"space-y-2"},Re={class:"space-y-2"},Me={class:"space-y-2"},De={class:"space-y-2"},Pe=te({__name:"design-guide",setup(Oe){const{isDark:B,toggleTheme:m}=Y(),$=ee();se(async()=>{await $.hydrate()});const b=[{id:"m1",role:"user",content:"Design System Validation Message",timestamp:new Date().toISOString()}],g={id:"blk-session-1",type:"session_init",model:"claude-sonnet-4-6",tools:["Read","Write","Edit","Bash","Glob","Grep","Agent"],permissionMode:"auto",cwd:"/Users/red/src/brick"},l={id:"blk-text-1",type:"text",text:"Here is a simple text response from the assistant."},k={id:"blk-text-2",type:"text",text:`## Markdown Rendering
2
+
3
+ This block demonstrates **bold**, *italic*, \`inline code\`, and:
4
+
5
+ \`\`\`typescript
6
+ function greet(name: string): string {
7
+ return \`Hello, \${name}!\`
8
+ }
9
+ \`\`\`
10
+
11
+ - List item one
12
+ - List item two
13
+ - List item three`},x={id:"blk-think-1",type:"thinking",thinking:"Let me check the file structure first."},h={id:"blk-think-2",type:"thinking",thinking:`I need to analyze the component architecture here. The user wants to add a design guide section for chat components. Let me look at the existing design-guide.vue to understand the current structure, then examine each chat component to understand their props and rendering logic. I should create sample data that covers all content block types: text, thinking, tool_use, tool_result, result_summary, and session_init. Each sample should demonstrate the component in a realistic state.
14
+
15
+ For tool blocks specifically, I need to cover:
16
+ - Read tool with file path
17
+ - Write tool with content preview
18
+ - Edit tool with before/after
19
+ - Command (bash) tool with command string
20
+ - Various statuses: running, pending, complete, error`},y={id:"blk-tool-read",type:"tool_use",toolUseId:"tu-read-1",name:"read",input:{file_path:"/Users/red/src/brick/pages/design-guide.vue",offset:1,limit:50},inputSummary:"Read design-guide.vue (lines 1-50)",status:"complete"},U={id:"blk-tr-read",type:"tool_result",toolUseId:"tu-read-1",content:`import { computed } from 'vue'
21
+
22
+ const items = computed(() => [
23
+ { id: 1, name: 'alpha' },
24
+ { id: 2, name: 'beta' },
25
+ ])
26
+
27
+ // ... 42 more lines ...`,isError:!1},C={id:"blk-tool-write",type:"tool_use",toolUseId:"tu-write-1",name:"write",input:{file_path:"/Users/red/src/brick/utils/helpers.ts",content:"export function formatDuration(ms: number): string {\n const s = Math.floor(ms / 1000)\n const m = Math.floor(s / 60)\n return m > 0 ? `${m}m ${s % 60}s` : `${s}s`\n}"},inputSummary:"Write utils/helpers.ts",status:"complete"},E={id:"blk-tr-write",type:"tool_result",toolUseId:"tu-write-1",content:"File written successfully.",isError:!1},f={id:"blk-tool-edit",type:"tool_use",toolUseId:"tu-edit-1",name:"edit",input:{file_path:"/Users/red/src/brick/components/chat/ChatMessage.vue",old_string:"text-retro-green",new_string:"text-retro-cyan"},inputSummary:"Edit ChatMessage.vue",status:"complete"},R={id:"blk-tr-edit",type:"tool_result",toolUseId:"tu-edit-1",content:`--- a/components/chat/ChatMessage.vue
28
+ +++ b/components/chat/ChatMessage.vue
29
+ @@ -12,7 +12,7 @@
30
+ - class="text-retro-green"
31
+ + class="text-retro-cyan"`,isError:!1},M={id:"blk-tool-bash",type:"tool_use",toolUseId:"tu-bash-1",name:"bash",input:{command:"pnpm typecheck"},inputSummary:"$ pnpm typecheck",status:"complete"},D={id:"blk-tr-bash",type:"tool_result",toolUseId:"tu-bash-1",content:`$ pnpm typecheck
32
+
33
+ > brick@0.3.0 typecheck
34
+ > nuxt typecheck
35
+
36
+ ✔ No type errors found`,isError:!1},O={id:"blk-tool-running",type:"tool_use",toolUseId:"tu-run-1",name:"bash",input:{command:"pnpm test"},inputSummary:"$ pnpm test",status:"running"},z={id:"blk-tool-pending",type:"tool_use",toolUseId:"tu-pend-1",name:"write",input:{file_path:"/Users/red/src/brick/server/api/deploy.ts",content:"// deploy logic"},inputSummary:"Write server/api/deploy.ts",status:"pending"},W={id:"blk-tool-error",type:"tool_use",toolUseId:"tu-err-1",name:"bash",input:{command:"git push origin main"},inputSummary:"$ git push origin main",status:"error"},L={id:"blk-tr-err",type:"tool_result",toolUseId:"tu-err-1",content:"Error: Permission denied. Authentication failed for remote.",isError:!0},v={id:"blk-summary-1",type:"result_summary",totalCostUsd:.0342,durationMs:45200,numTurns:3,usage:{inputTokens:12450,outputTokens:3280,cacheCreationInputTokens:8e3,cacheReadInputTokens:4200}},d=re("conversation"),N=[{key:"conversation",label:"ConversationItem"},{key:"message",label:"ChatMessage"},{key:"blocks",label:"Content Blocks"}],P={id:"msg-user-1",role:"user",content:"Can you read the design guide file and fix the color from green to cyan?",timestamp:new Date().toISOString()},F={id:"msg-user-img",role:"user",content:"Here is a screenshot of the current UI. Please fix the layout issue.",timestamp:new Date().toISOString(),attachments:[{id:"att-1",name:"screenshot.png",mimeType:"image/png",size:245e3,dataUrl:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPj/HwADBwIAMCbHYQAAAABJRU5ErkJggg=="}]},V={id:"msg-asst-1",role:"assistant",content:"",timestamp:new Date().toISOString(),status:"complete",contentBlocks:[g,x,l,y,f,k,v]},H={id:"msg-asst-stream",role:"assistant",content:"",timestamp:new Date().toISOString(),status:"streaming",contentBlocks:[h,{...l,id:"blk-text-stream",text:"I am currently analyzing the codebase to find the relevant files..."}]},K={id:"msg-asst-err",role:"assistant",content:"",timestamp:new Date().toISOString(),status:"error",contentBlocks:[{...l,id:"blk-text-err",text:"I encountered an error while processing your request."}]},G={id:"msg-asst-stop",role:"assistant",content:"",timestamp:new Date().toISOString(),status:"stopped",contentBlocks:[{...l,id:"blk-text-stop",text:"I was working on the refactor when the operation was"}]},J=ne(()=>{const u=[];for(const e of[!0,!1])u.push({id:`finalized-${e}`,label:`Finalized | ${e?"Active":"Inactive"}`,state:{isActive:e,isFinalized:!0,isPreviewing:!1,isStreaming:!1},conversation:{id:`c-f-${e}`,title:`Finalized Case (${e?"Active":"Idle"})`,messages:b,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),cwd:"/repo",finalized:!0}});for(const e of[!0,!1])for(const s of[!0,!1])for(const p of[!0,!1])u.push({id:`normal-${e}-${s}-${p}`,label:`${e?"Active":"Idle"} | ${s?"Preview":"Normal"} | ${p?"Streaming":"Static"}`,state:{isActive:e,isFinalized:!1,isPreviewing:s,isStreaming:p},conversation:{id:`c-n-${e}-${s}-${p}`,title:`${s?"Preview":"Normal"} (${e?"Active":"Idle"})`,messages:b,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),cwd:"/repo",finalized:!1,worktreeBranch:s?"feature/ui-fix":void 0,hasWorktree:s}});return u});return(u,e)=>(r(),a("div",ie,[t("header",le,[e[1]||(e[1]=t("h1",{class:"text-lg font-bold text-retro-cyan uppercase tracking-widest"},"Design Guide",-1)),t("button",{onClick:e[0]||(e[0]=(...s)=>c(m)&&c(m)(...s)),class:"p-2 rounded border border-retro-border hover:border-retro-cyan transition-colors bg-retro-black"},[c(B)?(r(),S(c(j),{key:0,class:"w-5 h-5 text-retro-yellow"})):(r(),S(c(Q),{key:1,class:"w-5 h-5 text-retro-cyan"}))])]),t("nav",de,[(r(),a(A,null,I(N,s=>t("button",{key:s.key,onClick:p=>d.value=s.key,class:ae(["px-6 py-2.5 text-xs font-bold uppercase tracking-widest border-r border-retro-border transition-colors",d.value===s.key?"text-retro-cyan bg-retro-black border-b-2 border-b-retro-cyan":"text-retro-muted hover:text-retro-text hover:bg-retro-panel/50"])},T(s.label),11,pe)),64))]),t("div",ce,[d.value==="conversation"?(r(),a("section",ue,[t("div",me,[(r(!0),a(A,null,I(J.value,s=>(r(),a("div",{key:s.id,class:"space-y-1.5 p-3 border border-retro-border rounded-lg"},[t("span",be,T(s.label),1),o(q,{conversation:s.conversation,"is-active":s.state.isActive,"is-streaming":s.state.isStreaming,"is-previewing":s.state.isPreviewing},null,8,["conversation","is-active","is-streaming","is-previewing"])]))),128))])])):d.value==="message"?(r(),a("section",ge,[t("div",ke,[e[2]||(e[2]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"User Message",-1)),o(i,{message:P})]),t("div",xe,[e[3]||(e[3]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"User Message + Image Attachment",-1)),o(i,{message:F})]),t("div",he,[e[4]||(e[4]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"Assistant | Complete",-1)),o(i,{message:V})]),t("div",ye,[e[5]||(e[5]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"Assistant | Streaming",-1)),o(i,{message:H})]),t("div",fe,[e[6]||(e[6]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"Assistant | Error",-1)),o(i,{message:K})]),t("div",ve,[e[7]||(e[7]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"Assistant | Stopped",-1)),o(i,{message:G})])])):d.value==="blocks"?(r(),a("section",_e,[t("div",we,[e[8]||(e[8]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"SessionInit",-1)),o(X,{block:g})]),t("div",Se,[e[9]||(e[9]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"TextBlock | Short",-1)),o(_,{block:l})]),t("div",Ae,[e[10]||(e[10]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"TextBlock | Markdown",-1)),o(_,{block:k})]),t("div",Ie,[e[11]||(e[11]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"ThinkingBlock | Short (auto-expanded)",-1)),o(w,{block:x})]),t("div",Te,[e[12]||(e[12]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"ThinkingBlock | Long (collapsed)",-1)),o(w,{block:h})]),t("div",Be,[e[13]||(e[13]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"ToolBlock | Read [OK]",-1)),o(n,{block:y,result:U})]),t("div",$e,[e[14]||(e[14]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"ToolBlock | Write [OK]",-1)),o(n,{block:C,result:E})]),t("div",Ue,[e[15]||(e[15]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"ToolBlock | Edit [OK] + Diff",-1)),o(n,{block:f,result:R})]),t("div",Ce,[e[16]||(e[16]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"ToolBlock | Bash [OK]",-1)),o(n,{block:M,result:D})]),t("div",Ee,[e[17]||(e[17]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"ToolBlock | Bash [RUN]",-1)),o(n,{block:O})]),t("div",Re,[e[18]||(e[18]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"ToolBlock | Write [WAIT]",-1)),o(n,{block:z})]),t("div",Me,[e[19]||(e[19]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"ToolBlock | Bash [ERR]",-1)),o(n,{block:W,result:L})]),t("div",De,[e[20]||(e[20]=t("span",{class:"px-2 py-0.5 bg-retro-panel border border-retro-border text-[10px] text-retro-muted font-bold rounded uppercase tracking-tight"},"ResultSummary",-1)),o(Z,{block:v})])])):oe("",!0)])]))}});export{Pe as default};
@@ -0,0 +1 @@
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"./BzfYDrv2.js";import{k as re}from"./Bze5ywup.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 +1 @@
1
- import{_ as s}from"./DlAUqK2U.js";import{x as i,y as a,z as u,A as e,B as o}from"./BwGW6ro4.js";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},status:{type:Number,default:500},statusText:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const r=t;return i({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,n)=>(a(),u("div",l,[n[0]||(n[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.status)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},b=s(f,[["__scopeId","data-v-6dec408c"]]);export{b as default};
1
+ import{_ as s}from"./DlAUqK2U.js";import{x as i,y as a,z as u,A as e,B as o}from"./BzfYDrv2.js";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},status:{type:Number,default:500},statusText:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const r=t;return i({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,n)=>(a(),u("div",l,[n[0]||(n[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.status)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},b=s(f,[["__scopeId","data-v-6dec408c"]]);export{b as default};
@@ -0,0 +1 @@
1
+ import{$ as f,a0 as h,g as m}from"./BzfYDrv2.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};