clawmini 0.0.5 → 0.0.7

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 (49) hide show
  1. package/dist/daemon/index.mjs +1 -2
  2. package/dist/daemon/index.mjs.map +1 -1
  3. package/dist/web/_app/immutable/chunks/{C20lZMGz.js → G_zz-Gou.js} +1 -1
  4. package/dist/web/_app/immutable/chunks/bBmtyQMj.js +1 -0
  5. package/{web/.svelte-kit/output/client/_app/immutable/entry/app.BgB5VkRU.js → dist/web/_app/immutable/entry/app.CJmSwntr.js} +2 -2
  6. package/dist/web/_app/immutable/entry/start.ZpUrT2ak.js +1 -0
  7. package/dist/web/_app/immutable/nodes/{0.C9oFZP9h.js → 0.CYS8iApT.js} +1 -1
  8. package/dist/web/_app/immutable/nodes/{1.BON2Wk6k.js → 1.Bli0Hqzn.js} +1 -1
  9. package/dist/web/_app/immutable/nodes/{3.CIs4tjjw.js → 3.Dr0ot9sV.js} +1 -1
  10. package/dist/web/_app/immutable/nodes/{4.DLarELN4.js → 4.oBhvQhcA.js} +1 -1
  11. package/dist/web/_app/immutable/nodes/{5.CE_QKy_3.js → 5.BBGQ_i84.js} +1 -1
  12. package/dist/web/_app/version.json +1 -1
  13. package/dist/web/index.html +6 -6
  14. package/package.json +1 -1
  15. package/src/cli/e2e/messages.test.ts +5 -2
  16. package/src/daemon/utils/spawn.ts +2 -1
  17. package/templates/environments/macos/sandbox.sb +8 -0
  18. package/templates/environments/macos-proxy/allowlist.txt +4 -0
  19. package/templates/environments/macos-proxy/proxy.mjs +25 -20
  20. package/templates/environments/macos-proxy/sandbox.sb +8 -0
  21. package/templates/gemini/.gemini/settings.json +6 -1
  22. package/templates/gemini/settings.json +4 -4
  23. package/templates/gemini-claw/.gemini/settings.json +6 -1
  24. package/templates/gemini-claw/GEMINI.md +1 -1
  25. package/templates/gemini-claw/settings.json +4 -4
  26. package/web/.svelte-kit/generated/server/internal.js +1 -1
  27. package/web/.svelte-kit/output/client/.vite/manifest.json +29 -29
  28. package/web/.svelte-kit/output/client/_app/immutable/chunks/{C20lZMGz.js → G_zz-Gou.js} +1 -1
  29. package/web/.svelte-kit/output/client/_app/immutable/chunks/bBmtyQMj.js +1 -0
  30. package/{dist/web/_app/immutable/entry/app.BgB5VkRU.js → web/.svelte-kit/output/client/_app/immutable/entry/app.CJmSwntr.js} +2 -2
  31. package/web/.svelte-kit/output/client/_app/immutable/entry/start.ZpUrT2ak.js +1 -0
  32. package/web/.svelte-kit/output/client/_app/immutable/nodes/{0.C9oFZP9h.js → 0.CYS8iApT.js} +1 -1
  33. package/web/.svelte-kit/output/client/_app/immutable/nodes/{1.BON2Wk6k.js → 1.Bli0Hqzn.js} +1 -1
  34. package/web/.svelte-kit/output/client/_app/immutable/nodes/{3.CIs4tjjw.js → 3.Dr0ot9sV.js} +1 -1
  35. package/web/.svelte-kit/output/client/_app/immutable/nodes/{4.DLarELN4.js → 4.oBhvQhcA.js} +1 -1
  36. package/web/.svelte-kit/output/client/_app/immutable/nodes/{5.CE_QKy_3.js → 5.BBGQ_i84.js} +1 -1
  37. package/web/.svelte-kit/output/client/_app/version.json +1 -1
  38. package/web/.svelte-kit/output/server/chunks/internal.js +1 -1
  39. package/web/.svelte-kit/output/server/manifest-full.js +1 -1
  40. package/web/.svelte-kit/output/server/manifest.js +1 -1
  41. package/web/.svelte-kit/output/server/nodes/0.js +1 -1
  42. package/web/.svelte-kit/output/server/nodes/1.js +1 -1
  43. package/web/.svelte-kit/output/server/nodes/3.js +1 -1
  44. package/web/.svelte-kit/output/server/nodes/4.js +1 -1
  45. package/web/.svelte-kit/output/server/nodes/5.js +1 -1
  46. package/dist/web/_app/immutable/chunks/C9lbZ-kT.js +0 -1
  47. package/dist/web/_app/immutable/entry/start.DuxJo6av.js +0 -1
  48. package/web/.svelte-kit/output/client/_app/immutable/chunks/C9lbZ-kT.js +0 -1
  49. package/web/.svelte-kit/output/client/_app/immutable/entry/start.DuxJo6av.js +0 -1
@@ -1,4 +1,4 @@
1
- import{b as Kt,c as at,a as w,f as L,t as Jt}from"../chunks/BmRlVmv6.js";import{a as Ar}from"../chunks/DhD271EB.js";import{h as Rt,i as Hn,M as ft,t as ue,d as Bn,L as Rr,aO as Lr,k as Gn,S as Ir,aD as Cr,aK as Dr,aE as Or,J as Mr,aP as Nr,aQ as Pr,f as Ce,p as Ft,a as Ut,F as zr,r as y,w as u,G as un,c as S,I as Ne,l as Wn,n as st,D as O,aN as en,s as q,C as qe}from"../chunks/CME08kGM.js";import{s as ke,d as $r,e as qn,a as tn}from"../chunks/DMtIqaiV.js";import{l as mn,s as kn,p as nn,b as or,r as Fr,i as J}from"../chunks/B6YN0Nuq.js";import{I as xn,s as bn,a as Ur,d as Hr,c as Br,e as jn,B as Lt,h as je}from"../chunks/CK9JZLaG.js";import{i as It}from"../chunks/C9lbZ-kT.js";import{a as Ze}from"../chunks/DsIToJCP.js";import"../chunks/Ck3rYNON.js";function Gr(s,e,n=!1,r=!1,t=!1,o=!1){var i=s,p="";if(n){var c=s;Rt&&(i=Hn(ft(c)))}ue(()=>{var g=Rr;if(p===(p=e()??"")){Rt&&Bn();return}if(n&&!Rt){g.nodes=null,c.innerHTML=p,p!==""&&Kt(ft(c),c.lastChild);return}if(g.nodes!==null&&(Lr(g.nodes.start,g.nodes.end),g.nodes=null),p!==""){if(Rt){Gn.data;for(var f=Bn(),b=f;f!==null&&(f.nodeType!==Ir||f.data!=="");)b=f,f=Cr(f);if(f===null)throw Dr(),Or;Kt(Gn,b),i=Hn(f);return}var v=r?Nr:t?Pr:void 0,C=Mr(r?"svg":t?"math":"template",v);C.innerHTML=p;var E=r||t?C:C.content;if(Kt(ft(E),E.lastChild),r||t)for(;ft(E);)i.before(ft(E));else i.before(E)}})}function Wr(s,e){const n=mn(e,["children","$$slots","$$events","$$legacy"]);const r=[["circle",{cx:"12",cy:"12",r:"10"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16"}]];xn(s,kn({name:"circle-alert"},()=>n,{get iconNode(){return r},children:(t,o)=>{var i=at(),p=Ce(i);bn(p,e,"default",{}),w(t,i)},$$slots:{default:!0}}))}function qr(s,e){const n=mn(e,["children","$$slots","$$events","$$legacy"]);const r=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 6v6l4 2"}]];xn(s,kn({name:"clock"},()=>n,{get iconNode(){return r},children:(t,o)=>{var i=at(),p=Ce(i);bn(p,e,"default",{}),w(t,i)},$$slots:{default:!0}}))}function jr(s,e){const n=mn(e,["children","$$slots","$$events","$$legacy"]);const r=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z"}],["path",{d:"m21.854 2.147-10.94 10.939"}]];xn(s,kn({name:"send"},()=>n,{get iconNode(){return r},children:(t,o)=>{var i=at(),p=Ce(i);bn(p,e,"default",{}),w(t,i)},$$slots:{default:!0}}))}const Zr=async({params:s,fetch:e,depends:n})=>{const{id:r}=s;n(`app:chat:${r}`);try{const t=await e(`/api/chats/${r}`);if(t.ok){const o=await t.json();return{id:r,messages:o}}}catch(t){console.error(t)}return{id:r,messages:[]}},Za=Object.freeze(Object.defineProperty({__proto__:null,load:Zr},Symbol.toStringTag,{value:"Module"}));var Yr=L("<textarea></textarea>");function Xr(s,e){Ft(e,!0);let n=nn(e,"ref",15,null),r=nn(e,"value",15),t=nn(e,"data-slot",3,"textarea"),o=Fr(e,["$$slots","$$events","$$legacy","ref","value","class","data-slot"]);var i=Yr();zr(i),Ur(i,p=>({"data-slot":t(),class:p,...o}),[()=>Br("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e.class)]),or(i,p=>n(p),()=>n()),Hr(i,r),w(s,i),Ut()}function vn(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Ve=vn();function lr(s){Ve=s}var Ye={exec:()=>null};function A(s,e=""){let n=typeof s=="string"?s:s.source,r={replace:(t,o)=>{let i=typeof o=="string"?o:o.source;return i=i.replace(pe.caret,"$1"),n=n.replace(t,i),r},getRegex:()=>new RegExp(n,e)};return r}var Vr=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),pe={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}#`),htmlBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}>`)},Qr=/^(?:[ \t]*(?:\n|$))+/,Kr=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Jr=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,yt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,es=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,_n=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,cr=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ur=A(cr).replace(/bull/g,_n).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),ts=A(cr).replace(/bull/g,_n).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),wn=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,ns=/^[^\n]+/,Tn=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,rs=A(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Tn).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),ss=A(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,_n).getRegex(),Ht="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",yn=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,as=A("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",yn).replace("tag",Ht).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),pr=A(wn).replace("hr",yt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ht).getRegex(),is=A(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",pr).getRegex(),Sn={blockquote:is,code:Kr,def:rs,fences:Jr,heading:es,hr:yt,html:as,lheading:ur,list:ss,newline:Qr,paragraph:pr,table:Ye,text:ns},Zn=A("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",yt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ht).getRegex(),os={...Sn,lheading:ts,table:Zn,paragraph:A(wn).replace("hr",yt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Zn).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ht).getRegex()},ls={...Sn,html:A(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",yn).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Ye,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:A(wn).replace("hr",yt).replace("heading",` *#{1,6} *[^
1
+ import{b as Kt,c as at,a as w,f as L,t as Jt}from"../chunks/BmRlVmv6.js";import{a as Ar}from"../chunks/DhD271EB.js";import{h as Rt,i as Hn,M as ft,t as ue,d as Bn,L as Rr,aO as Lr,k as Gn,S as Ir,aD as Cr,aK as Dr,aE as Or,J as Mr,aP as Nr,aQ as Pr,f as Ce,p as Ft,a as Ut,F as zr,r as y,w as u,G as un,c as S,I as Ne,l as Wn,n as st,D as O,aN as en,s as q,C as qe}from"../chunks/CME08kGM.js";import{s as ke,d as $r,e as qn,a as tn}from"../chunks/DMtIqaiV.js";import{l as mn,s as kn,p as nn,b as or,r as Fr,i as J}from"../chunks/B6YN0Nuq.js";import{I as xn,s as bn,a as Ur,d as Hr,c as Br,e as jn,B as Lt,h as je}from"../chunks/CK9JZLaG.js";import{i as It}from"../chunks/bBmtyQMj.js";import{a as Ze}from"../chunks/DsIToJCP.js";import"../chunks/Ck3rYNON.js";function Gr(s,e,n=!1,r=!1,t=!1,o=!1){var i=s,p="";if(n){var c=s;Rt&&(i=Hn(ft(c)))}ue(()=>{var g=Rr;if(p===(p=e()??"")){Rt&&Bn();return}if(n&&!Rt){g.nodes=null,c.innerHTML=p,p!==""&&Kt(ft(c),c.lastChild);return}if(g.nodes!==null&&(Lr(g.nodes.start,g.nodes.end),g.nodes=null),p!==""){if(Rt){Gn.data;for(var f=Bn(),b=f;f!==null&&(f.nodeType!==Ir||f.data!=="");)b=f,f=Cr(f);if(f===null)throw Dr(),Or;Kt(Gn,b),i=Hn(f);return}var v=r?Nr:t?Pr:void 0,C=Mr(r?"svg":t?"math":"template",v);C.innerHTML=p;var E=r||t?C:C.content;if(Kt(ft(E),E.lastChild),r||t)for(;ft(E);)i.before(ft(E));else i.before(E)}})}function Wr(s,e){const n=mn(e,["children","$$slots","$$events","$$legacy"]);const r=[["circle",{cx:"12",cy:"12",r:"10"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16"}]];xn(s,kn({name:"circle-alert"},()=>n,{get iconNode(){return r},children:(t,o)=>{var i=at(),p=Ce(i);bn(p,e,"default",{}),w(t,i)},$$slots:{default:!0}}))}function qr(s,e){const n=mn(e,["children","$$slots","$$events","$$legacy"]);const r=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 6v6l4 2"}]];xn(s,kn({name:"clock"},()=>n,{get iconNode(){return r},children:(t,o)=>{var i=at(),p=Ce(i);bn(p,e,"default",{}),w(t,i)},$$slots:{default:!0}}))}function jr(s,e){const n=mn(e,["children","$$slots","$$events","$$legacy"]);const r=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z"}],["path",{d:"m21.854 2.147-10.94 10.939"}]];xn(s,kn({name:"send"},()=>n,{get iconNode(){return r},children:(t,o)=>{var i=at(),p=Ce(i);bn(p,e,"default",{}),w(t,i)},$$slots:{default:!0}}))}const Zr=async({params:s,fetch:e,depends:n})=>{const{id:r}=s;n(`app:chat:${r}`);try{const t=await e(`/api/chats/${r}`);if(t.ok){const o=await t.json();return{id:r,messages:o}}}catch(t){console.error(t)}return{id:r,messages:[]}},Za=Object.freeze(Object.defineProperty({__proto__:null,load:Zr},Symbol.toStringTag,{value:"Module"}));var Yr=L("<textarea></textarea>");function Xr(s,e){Ft(e,!0);let n=nn(e,"ref",15,null),r=nn(e,"value",15),t=nn(e,"data-slot",3,"textarea"),o=Fr(e,["$$slots","$$events","$$legacy","ref","value","class","data-slot"]);var i=Yr();zr(i),Ur(i,p=>({"data-slot":t(),class:p,...o}),[()=>Br("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e.class)]),or(i,p=>n(p),()=>n()),Hr(i,r),w(s,i),Ut()}function vn(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Ve=vn();function lr(s){Ve=s}var Ye={exec:()=>null};function A(s,e=""){let n=typeof s=="string"?s:s.source,r={replace:(t,o)=>{let i=typeof o=="string"?o:o.source;return i=i.replace(pe.caret,"$1"),n=n.replace(t,i),r},getRegex:()=>new RegExp(n,e)};return r}var Vr=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),pe={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:s=>new RegExp(`^( {0,3}${s})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}#`),htmlBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:s=>new RegExp(`^ {0,${Math.min(3,s-1)}}>`)},Qr=/^(?:[ \t]*(?:\n|$))+/,Kr=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Jr=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,yt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,es=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,_n=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,cr=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ur=A(cr).replace(/bull/g,_n).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),ts=A(cr).replace(/bull/g,_n).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),wn=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,ns=/^[^\n]+/,Tn=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,rs=A(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Tn).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),ss=A(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,_n).getRegex(),Ht="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",yn=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,as=A("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",yn).replace("tag",Ht).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),pr=A(wn).replace("hr",yt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ht).getRegex(),is=A(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",pr).getRegex(),Sn={blockquote:is,code:Kr,def:rs,fences:Jr,heading:es,hr:yt,html:as,lheading:ur,list:ss,newline:Qr,paragraph:pr,table:Ye,text:ns},Zn=A("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",yt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ht).getRegex(),os={...Sn,lheading:ts,table:Zn,paragraph:A(wn).replace("hr",yt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Zn).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Ht).getRegex()},ls={...Sn,html:A(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",yn).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Ye,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:A(wn).replace("hr",yt).replace("heading",` *#{1,6} *[^
2
2
  ]`).replace("lheading",ur).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},cs=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,us=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,dr=/^( {2,}|\\)\n(?!\s*$)/,ps=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,it=/[\p{P}\p{S}]/u,Bt=/[\s\p{P}\p{S}]/u,En=/[^\s\p{P}\p{S}]/u,ds=A(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Bt).getRegex(),hr=/(?!~)[\p{P}\p{S}]/u,hs=/(?!~)[\s\p{P}\p{S}]/u,fs=/(?:[^\s\p{P}\p{S}]|~)/u,gs=A(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Vr?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),fr=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,ms=A(fr,"u").replace(/punct/g,it).getRegex(),ks=A(fr,"u").replace(/punct/g,hr).getRegex(),gr="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",xs=A(gr,"gu").replace(/notPunctSpace/g,En).replace(/punctSpace/g,Bt).replace(/punct/g,it).getRegex(),bs=A(gr,"gu").replace(/notPunctSpace/g,fs).replace(/punctSpace/g,hs).replace(/punct/g,hr).getRegex(),vs=A("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,En).replace(/punctSpace/g,Bt).replace(/punct/g,it).getRegex(),_s=A(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,it).getRegex(),ws="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Ts=A(ws,"gu").replace(/notPunctSpace/g,En).replace(/punctSpace/g,Bt).replace(/punct/g,it).getRegex(),ys=A(/\\(punct)/,"gu").replace(/punct/g,it).getRegex(),Ss=A(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Es=A(yn).replace("(?:-->|$)","-->").getRegex(),As=A("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Es).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Pt=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Rs=A(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Pt).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),mr=A(/^!?\[(label)\]\[(ref)\]/).replace("label",Pt).replace("ref",Tn).getRegex(),kr=A(/^!?\[(ref)\](?:\[\])?/).replace("ref",Tn).getRegex(),Ls=A("reflink|nolink(?!\\()","g").replace("reflink",mr).replace("nolink",kr).getRegex(),Yn=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,An={_backpedal:Ye,anyPunctuation:ys,autolink:Ss,blockSkip:gs,br:dr,code:us,del:Ye,delLDelim:Ye,delRDelim:Ye,emStrongLDelim:ms,emStrongRDelimAst:xs,emStrongRDelimUnd:vs,escape:cs,link:Rs,nolink:kr,punctuation:ds,reflink:mr,reflinkSearch:Ls,tag:As,text:ps,url:Ye},Is={...An,link:A(/^!?\[(label)\]\((.*?)\)/).replace("label",Pt).getRegex(),reflink:A(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Pt).getRegex()},pn={...An,emStrongRDelimAst:bs,emStrongLDelim:ks,delLDelim:_s,delRDelim:Ts,url:A(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Yn).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:A(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",Yn).getRegex()},Cs={...pn,br:A(dr).replace("{2,}","*").getRegex(),text:A(pn.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Ct={normal:Sn,gfm:os,pedantic:ls},gt={normal:An,gfm:pn,breaks:Cs,pedantic:Is},Ds={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Xn=s=>Ds[s];function Le(s,e){if(e){if(pe.escapeTest.test(s))return s.replace(pe.escapeReplace,Xn)}else if(pe.escapeTestNoEncode.test(s))return s.replace(pe.escapeReplaceNoEncode,Xn);return s}function Vn(s){try{s=encodeURI(s).replace(pe.percentDecode,"%")}catch{return null}return s}function Qn(s,e){let n=s.replace(pe.findPipe,(o,i,p)=>{let c=!1,g=i;for(;--g>=0&&p[g]==="\\";)c=!c;return c?"|":" |"}),r=n.split(pe.splitPipe),t=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),e)if(r.length>e)r.splice(e);else for(;r.length<e;)r.push("");for(;t<r.length;t++)r[t]=r[t].trim().replace(pe.slashPipe,"|");return r}function mt(s,e,n){let r=s.length;if(r===0)return"";let t=0;for(;t<r&&s.charAt(r-t-1)===e;)t++;return s.slice(0,r-t)}function Os(s,e){if(s.indexOf(e[1])===-1)return-1;let n=0;for(let r=0;r<s.length;r++)if(s[r]==="\\")r++;else if(s[r]===e[0])n++;else if(s[r]===e[1]&&(n--,n<0))return r;return n>0?-2:-1}function Ms(s,e=0){let n=e,r="";for(let t of s)if(t===" "){let o=4-n%4;r+=" ".repeat(o),n+=o}else r+=t,n++;return r}function Kn(s,e,n,r,t){let o=e.href,i=e.title||null,p=s[1].replace(t.other.outputLinkReplace,"$1");r.state.inLink=!0;let c={type:s[0].charAt(0)==="!"?"image":"link",raw:n,href:o,title:i,text:p,tokens:r.inlineTokens(p)};return r.state.inLink=!1,c}function Ns(s,e,n){let r=s.match(n.other.indentCodeCompensation);if(r===null)return e;let t=r[1];return e.split(`
3
3
  `).map(o=>{let i=o.match(n.other.beginningSpace);if(i===null)return o;let[p]=i;return p.length>=t.length?o.slice(t.length):o}).join(`
4
4
  `)}var zt=class{options;rules;lexer;constructor(s){this.options=s||Ve}space(s){let e=this.rules.block.newline.exec(s);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(s){let e=this.rules.block.code.exec(s);if(e){let n=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?n:mt(n,`
@@ -1 +1 @@
1
- import{c as W,a as l,f as w,t as D}from"../chunks/BmRlVmv6.js";import{f as z,p as be,t as j,a as _e,c as r,D as v,w as e,I as J,s as o,r as a,C as N,G as xe}from"../chunks/CME08kGM.js";import{s as M,e as ye}from"../chunks/DMtIqaiV.js";import{l as oe,s as se,i as T}from"../chunks/B6YN0Nuq.js";import{I as de,s as ie,B as H,f as we,g as $e,e as Se}from"../chunks/CK9JZLaG.js";import{i as re}from"../chunks/C9lbZ-kT.js";import{P as ke,I as U}from"../chunks/Drm9vgeP.js";import"../chunks/Ck3rYNON.js";function je($,c){const b=oe(c,["children","$$slots","$$events","$$legacy"]);const u=[["path",{d:"m12 19-7-7 7-7"}],["path",{d:"M19 12H5"}]];de($,se({name:"arrow-left"},()=>b,{get iconNode(){return u},children:(h,m)=>{var p=W(),g=z(p);ie(g,c,"default",{}),l(h,p)},$$slots:{default:!0}}))}function Je($,c){const b=oe(c,["children","$$slots","$$events","$$legacy"]);const u=[["path",{d:"M10 11v6"}],["path",{d:"M14 11v6"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}],["path",{d:"M3 6h18"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}]];de($,se({name:"trash-2"},()=>b,{get iconNode(){return u},children:(h,m)=>{var p=W(),g=z(p);ie(g,c,"default",{}),l(h,p)},$$slots:{default:!0}}))}const Me=async({params:$,fetch:c,depends:b})=>{const{id:u}=$;b(`app:chat:${u}:cron`);let h=[];try{const m=await c(`/api/chats/${u}/cron`);m.ok&&(h=await m.json())}catch(m){console.error("Failed to load cron jobs:",m)}return{id:u,cronJobs:h}},Le=Object.freeze(Object.defineProperty({__proto__:null,load:Me},Symbol.toStringTag,{value:"Module"}));var Te=w("<!> Add Job",1),Ee=w('<div class="p-3 bg-destructive/10 text-destructive text-sm rounded-md border border-destructive/20"> </div>'),Ie=w(`<form class="p-4 border rounded-lg space-y-4 bg-card text-card-foreground shadow-sm"><div class="grid grid-cols-2 gap-4"><div class="space-y-2"><label class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" for="jobId">Job ID</label> <!></div> <div class="space-y-2"><label class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" for="jobType">Schedule Type</label> <select id="jobType" class="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"><option>Cron Expression</option><option>Every (e.g. '1h', '30m')</option><option>At (ISO Date/Time)</option></select></div> <div class="space-y-2 col-span-2"><label class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" for="jobSchedule">Schedule Expression</label> <!></div> <div class="space-y-2 col-span-2"><label class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" for="jobMessage">Message / Command</label> <!></div></div> <div class="flex justify-end gap-2 pt-2"><!> <!></div></form>`),Pe=w('<div class="p-8 text-center text-muted-foreground border rounded-lg border-dashed">No cron jobs configured for this chat.</div>'),Ce=w('<!> <span class="sr-only">Delete</span>',1),De=w('<div class="flex items-center justify-between p-4 border rounded-lg bg-card text-card-foreground shadow-sm"><div class="space-y-1.5 overflow-hidden"><div class="font-medium flex items-center gap-2"><span class="truncate"> </span> <span class="shrink-0 px-2 py-0.5 text-[10px] uppercase font-bold tracking-wider rounded-full bg-secondary text-secondary-foreground"><!> <!> <!></span></div> <div class="text-sm text-muted-foreground font-mono bg-muted/50 p-1.5 rounded-md truncate"> </div></div> <!></div>'),Ne=w('<div class="grid gap-4"></div>'),ze=w('<div class="flex-1 overflow-y-auto p-6 h-full bg-background text-foreground"><div class="max-w-4xl mx-auto space-y-8"><div class="flex items-center gap-4"><a class="p-2 -ml-2 rounded-full hover:bg-muted text-muted-foreground hover:text-foreground transition-colors" title="Back to Chat"><!></a> <h1 class="text-2xl font-bold tracking-tight">Chat Settings</h1></div> <section class="space-y-4"><div class="flex items-center justify-between"><h2 class="text-xl font-semibold">Cron Jobs</h2> <!></div> <!> <!> <!></section></div></div>');function Ze($,c){be(c,!0);let b=xe(()=>c.data.cronJobs),u=J(!1),h=J(""),m=J(""),p=J(""),g=J("cron"),A=J(!1),O=J("");async function ne(s){if(confirm("Are you sure you want to delete this job?"))try{if(!(await fetch(`/api/chats/${c.data.id}/cron/${s}`,{method:"DELETE"})).ok)throw new Error("Failed to delete job");await re(`app:chat:${c.data.id}:cron`)}catch(t){alert(t instanceof Error?t.message:String(t))}}async function le(s){s.preventDefault(),v(A,!0),v(O,"");try{const t={id:e(h),message:e(m),schedule:{}};e(g)==="cron"?t.schedule.cron=e(p):e(g)==="every"?t.schedule.every=e(p):e(g)==="at"&&(t.schedule.at=e(p));const n=await fetch(`/api/chats/${c.data.id}/cron`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok){const d=await n.json();throw new Error(d.error||"Failed to add job")}v(u,!1),v(h,""),v(m,""),v(p,""),v(g,"cron"),await re(`app:chat:${c.data.id}:cron`)}catch(t){v(O,t instanceof Error?t.message:String(t),!0)}finally{v(A,!1)}}var V=ze(),X=r(V),G=r(X),L=r(G),ce=r(L);je(ce,{class:"w-5 h-5"}),a(L),N(2),a(G);var Y=o(G,2),Z=r(Y),ve=o(r(Z),2);H(ve,{variant:"outline",size:"sm",onclick:()=>v(u,!e(u)),children:(s,t)=>{var n=Te(),d=z(n);ke(d,{class:"w-4 h-4 mr-2"}),N(),l(s,n)},$$slots:{default:!0}}),a(Z);var ee=o(Z,2);{var ue=s=>{var t=Ee(),n=r(t,!0);a(t),j(()=>M(n,e(O))),l(s,t)};T(ee,s=>{e(O)&&s(ue)})}var te=o(ee,2);{var fe=s=>{var t=Ie(),n=r(t),d=r(n),_=o(r(d),2);U(_,{id:"jobId",placeholder:"e.g. daily-standup",required:!0,get value(){return e(h)},set value(f){v(h,f,!0)}}),a(d);var x=o(d,2),S=o(r(x),2),k=r(S);k.value=k.__value="cron";var I=o(k);I.value=I.__value="every";var P=o(I);P.value=P.__value="at",a(S),a(x);var E=o(x,2),K=o(r(E),2);U(K,{id:"jobSchedule",placeholder:"e.g. * * * * *, 1h, or 2024-01-01T12:00:00Z",required:!0,get value(){return e(p)},set value(f){v(p,f,!0)}}),a(E);var C=o(E,2),Q=o(r(C),2);U(Q,{id:"jobMessage",placeholder:"Command to run...",required:!0,get value(){return e(m)},set value(f){v(m,f,!0)}}),a(C),a(n);var q=o(n,2),B=r(q);H(B,{type:"button",variant:"ghost",onclick:()=>v(u,!1),children:(f,R)=>{N();var i=D("Cancel");l(f,i)},$$slots:{default:!0}});var F=o(B,2);H(F,{type:"submit",get disabled(){return e(A)},children:(f,R)=>{N();var i=D();j(()=>M(i,e(A)?"Saving...":"Save Job")),l(f,i)},$$slots:{default:!0}}),a(q),a(t),ye("submit",t,le),$e(S,()=>e(g),f=>v(g,f)),l(s,t)};T(te,s=>{e(u)&&s(fe)})}var pe=o(te,2);{var he=s=>{var t=W(),n=z(t);{var d=_=>{var x=Pe();l(_,x)};T(n,_=>{e(u)||_(d)})}l(s,t)},me=s=>{var t=Ne();Se(t,21,()=>e(b),n=>n.id,(n,d)=>{var _=De(),x=r(_),S=r(x),k=r(S),I=r(k,!0);a(k);var P=o(k,2),E=r(P);{var K=i=>{var y=D();j(()=>M(y,`cron: ${e(d).schedule.cron??""}`)),l(i,y)};T(E,i=>{e(d).schedule.cron&&i(K)})}var C=o(E,2);{var Q=i=>{var y=D();j(()=>M(y,`every: ${e(d).schedule.every??""}`)),l(i,y)};T(C,i=>{e(d).schedule.every&&i(Q)})}var q=o(C,2);{var B=i=>{var y=D();j(()=>M(y,`at: ${e(d).schedule.at??""}`)),l(i,y)};T(q,i=>{e(d).schedule.at&&i(B)})}a(P),a(S);var F=o(S,2),f=r(F);a(F),a(x);var R=o(x,2);H(R,{variant:"ghost",size:"icon",class:"shrink-0 text-destructive hover:bg-destructive/10 hover:text-destructive",onclick:()=>ne(e(d).id),children:(i,y)=>{var ae=Ce(),ge=z(ae);Je(ge,{class:"w-4 h-4"}),N(2),l(i,ae)},$$slots:{default:!0}}),a(_),j(()=>{M(I,e(d).id),M(f,`$ ${e(d).message??""}`)}),l(n,_)}),a(t),l(s,t)};T(pe,s=>{!e(b)||e(b).length===0?s(he):s(me,-1)})}a(Y),a(X),a(V),j(()=>we(L,"href",`/chats/${c.data.id??""}`)),l($,V),_e()}export{Ze as component,Le as universal};
1
+ import{c as W,a as l,f as w,t as D}from"../chunks/BmRlVmv6.js";import{f as z,p as be,t as j,a as _e,c as r,D as v,w as e,I as J,s as o,r as a,C as N,G as xe}from"../chunks/CME08kGM.js";import{s as M,e as ye}from"../chunks/DMtIqaiV.js";import{l as oe,s as se,i as T}from"../chunks/B6YN0Nuq.js";import{I as de,s as ie,B as H,f as we,g as $e,e as Se}from"../chunks/CK9JZLaG.js";import{i as re}from"../chunks/bBmtyQMj.js";import{P as ke,I as U}from"../chunks/Drm9vgeP.js";import"../chunks/Ck3rYNON.js";function je($,c){const b=oe(c,["children","$$slots","$$events","$$legacy"]);const u=[["path",{d:"m12 19-7-7 7-7"}],["path",{d:"M19 12H5"}]];de($,se({name:"arrow-left"},()=>b,{get iconNode(){return u},children:(h,m)=>{var p=W(),g=z(p);ie(g,c,"default",{}),l(h,p)},$$slots:{default:!0}}))}function Je($,c){const b=oe(c,["children","$$slots","$$events","$$legacy"]);const u=[["path",{d:"M10 11v6"}],["path",{d:"M14 11v6"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}],["path",{d:"M3 6h18"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}]];de($,se({name:"trash-2"},()=>b,{get iconNode(){return u},children:(h,m)=>{var p=W(),g=z(p);ie(g,c,"default",{}),l(h,p)},$$slots:{default:!0}}))}const Me=async({params:$,fetch:c,depends:b})=>{const{id:u}=$;b(`app:chat:${u}:cron`);let h=[];try{const m=await c(`/api/chats/${u}/cron`);m.ok&&(h=await m.json())}catch(m){console.error("Failed to load cron jobs:",m)}return{id:u,cronJobs:h}},Le=Object.freeze(Object.defineProperty({__proto__:null,load:Me},Symbol.toStringTag,{value:"Module"}));var Te=w("<!> Add Job",1),Ee=w('<div class="p-3 bg-destructive/10 text-destructive text-sm rounded-md border border-destructive/20"> </div>'),Ie=w(`<form class="p-4 border rounded-lg space-y-4 bg-card text-card-foreground shadow-sm"><div class="grid grid-cols-2 gap-4"><div class="space-y-2"><label class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" for="jobId">Job ID</label> <!></div> <div class="space-y-2"><label class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" for="jobType">Schedule Type</label> <select id="jobType" class="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"><option>Cron Expression</option><option>Every (e.g. '1h', '30m')</option><option>At (ISO Date/Time)</option></select></div> <div class="space-y-2 col-span-2"><label class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" for="jobSchedule">Schedule Expression</label> <!></div> <div class="space-y-2 col-span-2"><label class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" for="jobMessage">Message / Command</label> <!></div></div> <div class="flex justify-end gap-2 pt-2"><!> <!></div></form>`),Pe=w('<div class="p-8 text-center text-muted-foreground border rounded-lg border-dashed">No cron jobs configured for this chat.</div>'),Ce=w('<!> <span class="sr-only">Delete</span>',1),De=w('<div class="flex items-center justify-between p-4 border rounded-lg bg-card text-card-foreground shadow-sm"><div class="space-y-1.5 overflow-hidden"><div class="font-medium flex items-center gap-2"><span class="truncate"> </span> <span class="shrink-0 px-2 py-0.5 text-[10px] uppercase font-bold tracking-wider rounded-full bg-secondary text-secondary-foreground"><!> <!> <!></span></div> <div class="text-sm text-muted-foreground font-mono bg-muted/50 p-1.5 rounded-md truncate"> </div></div> <!></div>'),Ne=w('<div class="grid gap-4"></div>'),ze=w('<div class="flex-1 overflow-y-auto p-6 h-full bg-background text-foreground"><div class="max-w-4xl mx-auto space-y-8"><div class="flex items-center gap-4"><a class="p-2 -ml-2 rounded-full hover:bg-muted text-muted-foreground hover:text-foreground transition-colors" title="Back to Chat"><!></a> <h1 class="text-2xl font-bold tracking-tight">Chat Settings</h1></div> <section class="space-y-4"><div class="flex items-center justify-between"><h2 class="text-xl font-semibold">Cron Jobs</h2> <!></div> <!> <!> <!></section></div></div>');function Ze($,c){be(c,!0);let b=xe(()=>c.data.cronJobs),u=J(!1),h=J(""),m=J(""),p=J(""),g=J("cron"),A=J(!1),O=J("");async function ne(s){if(confirm("Are you sure you want to delete this job?"))try{if(!(await fetch(`/api/chats/${c.data.id}/cron/${s}`,{method:"DELETE"})).ok)throw new Error("Failed to delete job");await re(`app:chat:${c.data.id}:cron`)}catch(t){alert(t instanceof Error?t.message:String(t))}}async function le(s){s.preventDefault(),v(A,!0),v(O,"");try{const t={id:e(h),message:e(m),schedule:{}};e(g)==="cron"?t.schedule.cron=e(p):e(g)==="every"?t.schedule.every=e(p):e(g)==="at"&&(t.schedule.at=e(p));const n=await fetch(`/api/chats/${c.data.id}/cron`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok){const d=await n.json();throw new Error(d.error||"Failed to add job")}v(u,!1),v(h,""),v(m,""),v(p,""),v(g,"cron"),await re(`app:chat:${c.data.id}:cron`)}catch(t){v(O,t instanceof Error?t.message:String(t),!0)}finally{v(A,!1)}}var V=ze(),X=r(V),G=r(X),L=r(G),ce=r(L);je(ce,{class:"w-5 h-5"}),a(L),N(2),a(G);var Y=o(G,2),Z=r(Y),ve=o(r(Z),2);H(ve,{variant:"outline",size:"sm",onclick:()=>v(u,!e(u)),children:(s,t)=>{var n=Te(),d=z(n);ke(d,{class:"w-4 h-4 mr-2"}),N(),l(s,n)},$$slots:{default:!0}}),a(Z);var ee=o(Z,2);{var ue=s=>{var t=Ee(),n=r(t,!0);a(t),j(()=>M(n,e(O))),l(s,t)};T(ee,s=>{e(O)&&s(ue)})}var te=o(ee,2);{var fe=s=>{var t=Ie(),n=r(t),d=r(n),_=o(r(d),2);U(_,{id:"jobId",placeholder:"e.g. daily-standup",required:!0,get value(){return e(h)},set value(f){v(h,f,!0)}}),a(d);var x=o(d,2),S=o(r(x),2),k=r(S);k.value=k.__value="cron";var I=o(k);I.value=I.__value="every";var P=o(I);P.value=P.__value="at",a(S),a(x);var E=o(x,2),K=o(r(E),2);U(K,{id:"jobSchedule",placeholder:"e.g. * * * * *, 1h, or 2024-01-01T12:00:00Z",required:!0,get value(){return e(p)},set value(f){v(p,f,!0)}}),a(E);var C=o(E,2),Q=o(r(C),2);U(Q,{id:"jobMessage",placeholder:"Command to run...",required:!0,get value(){return e(m)},set value(f){v(m,f,!0)}}),a(C),a(n);var q=o(n,2),B=r(q);H(B,{type:"button",variant:"ghost",onclick:()=>v(u,!1),children:(f,R)=>{N();var i=D("Cancel");l(f,i)},$$slots:{default:!0}});var F=o(B,2);H(F,{type:"submit",get disabled(){return e(A)},children:(f,R)=>{N();var i=D();j(()=>M(i,e(A)?"Saving...":"Save Job")),l(f,i)},$$slots:{default:!0}}),a(q),a(t),ye("submit",t,le),$e(S,()=>e(g),f=>v(g,f)),l(s,t)};T(te,s=>{e(u)&&s(fe)})}var pe=o(te,2);{var he=s=>{var t=W(),n=z(t);{var d=_=>{var x=Pe();l(_,x)};T(n,_=>{e(u)||_(d)})}l(s,t)},me=s=>{var t=Ne();Se(t,21,()=>e(b),n=>n.id,(n,d)=>{var _=De(),x=r(_),S=r(x),k=r(S),I=r(k,!0);a(k);var P=o(k,2),E=r(P);{var K=i=>{var y=D();j(()=>M(y,`cron: ${e(d).schedule.cron??""}`)),l(i,y)};T(E,i=>{e(d).schedule.cron&&i(K)})}var C=o(E,2);{var Q=i=>{var y=D();j(()=>M(y,`every: ${e(d).schedule.every??""}`)),l(i,y)};T(C,i=>{e(d).schedule.every&&i(Q)})}var q=o(C,2);{var B=i=>{var y=D();j(()=>M(y,`at: ${e(d).schedule.at??""}`)),l(i,y)};T(q,i=>{e(d).schedule.at&&i(B)})}a(P),a(S);var F=o(S,2),f=r(F);a(F),a(x);var R=o(x,2);H(R,{variant:"ghost",size:"icon",class:"shrink-0 text-destructive hover:bg-destructive/10 hover:text-destructive",onclick:()=>ne(e(d).id),children:(i,y)=>{var ae=Ce(),ge=z(ae);Je(ge,{class:"w-4 h-4"}),N(2),l(i,ae)},$$slots:{default:!0}}),a(_),j(()=>{M(I,e(d).id),M(f,`$ ${e(d).message??""}`)}),l(n,_)}),a(t),l(s,t)};T(pe,s=>{!e(b)||e(b).length===0?s(he):s(me,-1)})}a(Y),a(X),a(V),j(()=>we(L,"href",`/chats/${c.data.id??""}`)),l($,V),_e()}export{Ze as component,Le as universal};
@@ -1 +1 @@
1
- {"version":"1774968897068"}
1
+ {"version":"1774990913507"}
@@ -3,11 +3,11 @@
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1, interactive-widget=resizes-content" />
6
- <link href="/_app/immutable/entry/start.DuxJo6av.js" rel="modulepreload">
7
- <link href="/_app/immutable/chunks/C9lbZ-kT.js" rel="modulepreload">
6
+ <link href="/_app/immutable/entry/start.ZpUrT2ak.js" rel="modulepreload">
7
+ <link href="/_app/immutable/chunks/bBmtyQMj.js" rel="modulepreload">
8
8
  <link href="/_app/immutable/chunks/CME08kGM.js" rel="modulepreload">
9
9
  <link href="/_app/immutable/chunks/DhD271EB.js" rel="modulepreload">
10
- <link href="/_app/immutable/entry/app.BgB5VkRU.js" rel="modulepreload">
10
+ <link href="/_app/immutable/entry/app.CJmSwntr.js" rel="modulepreload">
11
11
  <link href="/_app/immutable/chunks/DMtIqaiV.js" rel="modulepreload">
12
12
  <link href="/_app/immutable/chunks/BmRlVmv6.js" rel="modulepreload">
13
13
  <link href="/_app/immutable/chunks/B6YN0Nuq.js" rel="modulepreload">
@@ -18,15 +18,15 @@
18
18
  <div style="display: contents">
19
19
  <script>
20
20
  {
21
- __sveltekit_k36okf = {
21
+ __sveltekit_1pko3tl = {
22
22
  base: ""
23
23
  };
24
24
 
25
25
  const element = document.currentScript.parentElement;
26
26
 
27
27
  Promise.all([
28
- import("/_app/immutable/entry/start.DuxJo6av.js"),
29
- import("/_app/immutable/entry/app.BgB5VkRU.js")
28
+ import("/_app/immutable/entry/start.ZpUrT2ak.js"),
29
+ import("/_app/immutable/entry/app.CJmSwntr.js")
30
30
  ]).then(([kit, app]) => {
31
31
  kit.start(app, element);
32
32
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawmini",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "type": "module",
5
5
  "workspaces": [
6
6
  "web"
@@ -19,8 +19,11 @@ describe('E2E Messages Tests', () => {
19
19
  expect(code).toBe(0);
20
20
  expect(stdout).toContain('Message sent successfully.');
21
21
 
22
- const daemonLog = fs.readFileSync(path.resolve(e2eDir, '.clawmini/daemon.log'), 'utf8');
23
- expect(daemonLog).toContain('e2e test message');
22
+ const chatLog = fs.readFileSync(
23
+ path.resolve(e2eDir, '.clawmini/chats/default/chat.jsonl'),
24
+ 'utf8'
25
+ );
26
+ expect(chatLog).toContain('e2e test message');
24
27
  });
25
28
 
26
29
  it('should send a message to a specific chat', async () => {
@@ -1,7 +1,7 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  import type { RunCommandFn } from '../agent/types.js';
3
3
 
4
- const LOG_TO_TERMINAL = true;
4
+ const LOG_TO_TERMINAL = false;
5
5
 
6
6
  export const runCommand: RunCommandFn = async ({
7
7
  command,
@@ -11,6 +11,7 @@ export const runCommand: RunCommandFn = async ({
11
11
  signal,
12
12
  }: Parameters<RunCommandFn>[0] & { logToTerminal?: boolean }) => {
13
13
  return new Promise<{ stdout: string; stderr: string; exitCode: number }>((resolve, reject) => {
14
+ console.log('RUN: ', command);
14
15
  const p = spawn(command, { shell: true, cwd, env, signal });
15
16
 
16
17
  if (stdin && p.stdin) {
@@ -18,4 +18,12 @@
18
18
  (literal "/dev/null")
19
19
  (literal "/dev/ptmx")
20
20
  (regex #"^/dev/ttys[0-9]*$")
21
+ )
22
+
23
+ ;; deny access to .clawmini folder
24
+ (deny file-read*
25
+ (subpath (string-append (param "WORKSPACE") "/.clawmini"))
26
+ )
27
+ (deny file-write*
28
+ (subpath (string-append (param "WORKSPACE") "/.clawmini"))
21
29
  )
@@ -1 +1,5 @@
1
+ # Gemini CLI
1
2
  generativelanguage.googleapis.com
3
+ oauth2.googleapis.com
4
+ play.googleapis.com
5
+ cloudcode-pa.googleapis.com
@@ -15,13 +15,12 @@ function isAllowed(hostname) {
15
15
  return hostname === 'generativelanguage.googleapis.com';
16
16
  }
17
17
  const content = fs.readFileSync(allowlistPath, 'utf8');
18
- const allowedDomains = content.split('\n')
19
- .map(line => line.trim())
20
- .filter(line => line.length > 0 && !line.startsWith('#'));
21
-
22
- return allowedDomains.some(domain =>
23
- hostname === domain || hostname.endsWith(`.${domain}`)
24
- );
18
+ const allowedDomains = content
19
+ .split('\n')
20
+ .map((line) => line.trim())
21
+ .filter((line) => line.length > 0 && !line.startsWith('#'));
22
+
23
+ return allowedDomains.some((domain) => hostname === domain || hostname.endsWith(`.${domain}`));
25
24
  } catch (err) {
26
25
  console.error('Error reading allowlist:', err);
27
26
  return false;
@@ -32,20 +31,24 @@ const server = http.createServer((req, res) => {
32
31
  try {
33
32
  const url = new URL(req.url);
34
33
  if (!isAllowed(url.hostname)) {
35
- console.log(`[HTTP] Blocked: ${url.hostname}`);
34
+ console.log(`[${new Date().toISOString()}] [HTTP] Blocked: ${url.hostname}`);
36
35
  res.writeHead(403);
37
36
  res.end('Domain not allowed by proxy allowlist\n');
38
37
  return;
39
38
  }
40
- console.log(`[HTTP] Allowed: ${url.hostname}`);
41
-
42
- const proxyReq = http.request(url, {
43
- method: req.method,
44
- headers: req.headers,
45
- }, (proxyRes) => {
46
- res.writeHead(proxyRes.statusCode, proxyRes.headers);
47
- proxyRes.pipe(res, { end: true });
48
- });
39
+ // console.log(`[HTTP] Allowed: ${url.hostname}`);
40
+
41
+ const proxyReq = http.request(
42
+ url,
43
+ {
44
+ method: req.method,
45
+ headers: req.headers,
46
+ },
47
+ (proxyRes) => {
48
+ res.writeHead(proxyRes.statusCode, proxyRes.headers);
49
+ proxyRes.pipe(res, { end: true });
50
+ }
51
+ );
49
52
  req.pipe(proxyReq, { end: true });
50
53
  proxyReq.on('error', (err) => {
51
54
  res.writeHead(500);
@@ -61,13 +64,15 @@ server.on('connect', (req, clientSocket, head) => {
61
64
  try {
62
65
  const { port, hostname } = new URL(`http://${req.url}`);
63
66
  if (!isAllowed(hostname)) {
64
- console.log(`[HTTPS] Blocked: ${hostname}`);
67
+ // Log the domain and timestamp
68
+ console.log(`[${new Date().toISOString()}] [HTTPS] Blocked: ${hostname}`);
65
69
  clientSocket.write('HTTP/1.1 403 Forbidden\r\n\r\nDomain not allowed by proxy allowlist\n');
66
70
  clientSocket.end();
67
71
  return;
68
72
  }
69
- console.log(`[HTTPS] Allowed: ${hostname}`);
70
-
73
+ // Only log blocked domains for now
74
+ // console.log(`[HTTPS] Allowed: ${hostname}`);
75
+
71
76
  const serverSocket = net.connect(port || 443, hostname, () => {
72
77
  clientSocket.write('HTTP/1.1 200 Connection Established\r\n\r\n');
73
78
  serverSocket.write(head);
@@ -20,6 +20,14 @@
20
20
  (regex #"^/dev/ttys[0-9]*$")
21
21
  )
22
22
 
23
+ ;; deny access to .clawmini folder
24
+ (deny file-read*
25
+ (subpath (string-append (param "WORKSPACE") "/.clawmini"))
26
+ )
27
+ (deny file-write*
28
+ (subpath (string-append (param "WORKSPACE") "/.clawmini"))
29
+ )
30
+
23
31
  ;; deny all network EXCEPT local proxy and basic network operations
24
32
  (deny network-outbound)
25
33
 
@@ -3,9 +3,14 @@
3
3
  "tools": {
4
4
  "exclude": [
5
5
  "ask_user",
6
- "save_memory"
6
+ "save_memory",
7
+ "enter_plan_mode",
8
+ "exit_plan_mode"
7
9
  ]
8
10
  },
11
+ "experimental": {
12
+ "enableAgents": false
13
+ },
9
14
  "hooks": {
10
15
  "BeforeTool": [
11
16
  {
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "apiTokenEnvVar": "GEMINI_CLI_CLAW_API_TOKEN",
3
3
  "commands": {
4
- "new": "gemini --output-format json --model $MODEL -p \"$CLAW_CLI_MESSAGE\"",
5
- "append": "gemini --output-format json --model $MODEL --resume $SESSION_ID -p \"$CLAW_CLI_MESSAGE\"",
4
+ "new": "gemini --yolo --output-format json --model $MODEL -p \"$CLAW_CLI_MESSAGE\"",
5
+ "append": "gemini --yolo --output-format json --model $MODEL --resume $SESSION_ID -p \"$CLAW_CLI_MESSAGE\"",
6
6
  "getSessionId": "jq -r '.session_id'",
7
7
  "getMessageContent": "jq -r '.response'"
8
8
  },
9
9
  "env": {
10
- "MODEL": "gemini-3.1-pro-preview-customtools",
10
+ "MODEL": "gemini-3.1-pro-preview",
11
11
  "GEMINI_API_KEY": true
12
12
  },
13
13
  "skillsDir": ".gemini/skills/",
@@ -22,4 +22,4 @@
22
22
  "retries": 3
23
23
  }
24
24
  ]
25
- }
25
+ }
@@ -3,9 +3,14 @@
3
3
  "tools": {
4
4
  "exclude": [
5
5
  "ask_user",
6
- "save_memory"
6
+ "save_memory",
7
+ "enter_plan_mode",
8
+ "exit_plan_mode"
7
9
  ]
8
10
  },
11
+ "experimental": {
12
+ "enableAgents": false
13
+ },
9
14
  "hooks": {
10
15
  "BeforeTool": [
11
16
  {
@@ -2,7 +2,7 @@ This folder is home. Treat it that way.
2
2
 
3
3
  ## First Run
4
4
 
5
- If `BOOTSTRAP.md` exists, that's your birth certificate. Follow it, figure out who you are, then delete it. You won't need it again. You can remove this instruction from `GEMINI.md` when complete.
5
+ If `BOOTSTRAP.md` exists, that's your birth certificate. Follow it, figure out who you are, then delete it. You won't need it again. You can remove this instruction from `GEMINI.md` when complete. Do not use a subagent for this.
6
6
 
7
7
  ## Every Session
8
8
 
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "apiTokenEnvVar": "GEMINI_CLI_CLAW_API_TOKEN",
3
3
  "commands": {
4
- "new": "gemini --output-format json --model $MODEL -p \"$CLAW_CLI_MESSAGE\"",
5
- "append": "gemini --output-format json --model $MODEL --resume $SESSION_ID -p \"$CLAW_CLI_MESSAGE\"",
4
+ "new": "gemini --yolo --output-format json --model $MODEL -p \"$CLAW_CLI_MESSAGE\"",
5
+ "append": "gemini --yolo --output-format json --model $MODEL --resume $SESSION_ID -p \"$CLAW_CLI_MESSAGE\"",
6
6
  "getSessionId": "jq -r '.session_id'",
7
7
  "getMessageContent": "jq -r '.response'"
8
8
  },
9
9
  "env": {
10
- "MODEL": "gemini-3.1-pro-preview-customtools",
10
+ "MODEL": "gemini-3.1-pro-preview",
11
11
  "GEMINI_SYSTEM_MD": "true",
12
12
  "GEMINI_API_KEY": true
13
13
  },
@@ -26,4 +26,4 @@
26
26
  "retries": 3
27
27
  }
28
28
  ]
29
- }
29
+ }
@@ -25,7 +25,7 @@ export const options = {
25
25
  app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, interactive-widget=resizes-content\" />\n\t\t" + head + "\n\t</head>\n\t<body data-sveltekit-preload-data=\"hover\">\n\t\t<div style=\"display: contents\">" + body + "</div>\n\t</body>\n</html>\n",
26
26
  error: ({ status, message }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>" + message + "</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">" + status + "</span>\n\t\t\t<div class=\"message\">\n\t\t\t\t<h1>" + message + "</h1>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n"
27
27
  },
28
- version_hash: "k36okf"
28
+ version_hash: "1pko3tl"
29
29
  };
30
30
 
31
31
  export async function get_hooks() {
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "../node_modules/@sveltejs/kit/src/runtime/client/entry.js": {
3
- "file": "_app/immutable/entry/start.DuxJo6av.js",
3
+ "file": "_app/immutable/entry/start.ZpUrT2ak.js",
4
4
  "name": "entry/start",
5
5
  "src": "../node_modules/@sveltejs/kit/src/runtime/client/entry.js",
6
6
  "isEntry": true,
7
7
  "imports": [
8
- "_C9lbZ-kT.js"
8
+ "_bBmtyQMj.js"
9
9
  ]
10
10
  },
11
11
  ".svelte-kit/generated/client-optimized/app.js": {
12
- "file": "_app/immutable/entry/app.BgB5VkRU.js",
12
+ "file": "_app/immutable/entry/app.CJmSwntr.js",
13
13
  "name": "entry/app",
14
14
  "src": ".svelte-kit/generated/client-optimized/app.js",
15
15
  "isEntry": true,
@@ -31,7 +31,7 @@
31
31
  ]
32
32
  },
33
33
  ".svelte-kit/generated/client-optimized/nodes/0.js": {
34
- "file": "_app/immutable/nodes/0.C9oFZP9h.js",
34
+ "file": "_app/immutable/nodes/0.CYS8iApT.js",
35
35
  "name": "nodes/0",
36
36
  "src": ".svelte-kit/generated/client-optimized/nodes/0.js",
37
37
  "isEntry": true,
@@ -45,9 +45,9 @@
45
45
  "_CK9JZLaG.js",
46
46
  "_Zeh-C-mx.js",
47
47
  "_Ck-be5J2.js",
48
- "_C20lZMGz.js",
48
+ "_G_zz-Gou.js",
49
49
  "_Drm9vgeP.js",
50
- "_C9lbZ-kT.js",
50
+ "_bBmtyQMj.js",
51
51
  "_Ck3rYNON.js",
52
52
  "_DsIToJCP.js"
53
53
  ],
@@ -56,7 +56,7 @@
56
56
  ]
57
57
  },
58
58
  ".svelte-kit/generated/client-optimized/nodes/1.js": {
59
- "file": "_app/immutable/nodes/1.BON2Wk6k.js",
59
+ "file": "_app/immutable/nodes/1.Bli0Hqzn.js",
60
60
  "name": "nodes/1",
61
61
  "src": ".svelte-kit/generated/client-optimized/nodes/1.js",
62
62
  "isEntry": true,
@@ -67,7 +67,7 @@
67
67
  "_CME08kGM.js",
68
68
  "_DMtIqaiV.js",
69
69
  "_DpuLqk8d.js",
70
- "_C20lZMGz.js"
70
+ "_G_zz-Gou.js"
71
71
  ]
72
72
  },
73
73
  ".svelte-kit/generated/client-optimized/nodes/2.js": {
@@ -82,7 +82,7 @@
82
82
  ]
83
83
  },
84
84
  ".svelte-kit/generated/client-optimized/nodes/3.js": {
85
- "file": "_app/immutable/nodes/3.CIs4tjjw.js",
85
+ "file": "_app/immutable/nodes/3.Dr0ot9sV.js",
86
86
  "name": "nodes/3",
87
87
  "src": ".svelte-kit/generated/client-optimized/nodes/3.js",
88
88
  "isEntry": true,
@@ -94,14 +94,14 @@
94
94
  "_B6YN0Nuq.js",
95
95
  "_CK9JZLaG.js",
96
96
  "_Zeh-C-mx.js",
97
- "_C9lbZ-kT.js",
97
+ "_bBmtyQMj.js",
98
98
  "_Drm9vgeP.js",
99
99
  "_Ck-be5J2.js",
100
100
  "_Ck3rYNON.js"
101
101
  ]
102
102
  },
103
103
  ".svelte-kit/generated/client-optimized/nodes/4.js": {
104
- "file": "_app/immutable/nodes/4.DLarELN4.js",
104
+ "file": "_app/immutable/nodes/4.oBhvQhcA.js",
105
105
  "name": "nodes/4",
106
106
  "src": ".svelte-kit/generated/client-optimized/nodes/4.js",
107
107
  "isEntry": true,
@@ -113,7 +113,7 @@
113
113
  "_DMtIqaiV.js",
114
114
  "_B6YN0Nuq.js",
115
115
  "_CK9JZLaG.js",
116
- "_C9lbZ-kT.js",
116
+ "_bBmtyQMj.js",
117
117
  "_DsIToJCP.js",
118
118
  "_Ck3rYNON.js"
119
119
  ],
@@ -122,7 +122,7 @@
122
122
  ]
123
123
  },
124
124
  ".svelte-kit/generated/client-optimized/nodes/5.js": {
125
- "file": "_app/immutable/nodes/5.CE_QKy_3.js",
125
+ "file": "_app/immutable/nodes/5.BBGQ_i84.js",
126
126
  "name": "nodes/5",
127
127
  "src": ".svelte-kit/generated/client-optimized/nodes/5.js",
128
128
  "isEntry": true,
@@ -133,7 +133,7 @@
133
133
  "_DMtIqaiV.js",
134
134
  "_B6YN0Nuq.js",
135
135
  "_CK9JZLaG.js",
136
- "_C9lbZ-kT.js",
136
+ "_bBmtyQMj.js",
137
137
  "_Drm9vgeP.js",
138
138
  "_Ck3rYNON.js"
139
139
  ]
@@ -152,21 +152,6 @@
152
152
  "_CME08kGM.js"
153
153
  ]
154
154
  },
155
- "_C20lZMGz.js": {
156
- "file": "_app/immutable/chunks/C20lZMGz.js",
157
- "name": "index",
158
- "imports": [
159
- "_C9lbZ-kT.js"
160
- ]
161
- },
162
- "_C9lbZ-kT.js": {
163
- "file": "_app/immutable/chunks/C9lbZ-kT.js",
164
- "name": "entry",
165
- "imports": [
166
- "_CME08kGM.js",
167
- "_DhD271EB.js"
168
- ]
169
- },
170
155
  "_CK9JZLaG.js": {
171
156
  "file": "_app/immutable/chunks/CK9JZLaG.js",
172
157
  "name": "Icon",
@@ -243,6 +228,13 @@
243
228
  "_CME08kGM.js"
244
229
  ]
245
230
  },
231
+ "_G_zz-Gou.js": {
232
+ "file": "_app/immutable/chunks/G_zz-Gou.js",
233
+ "name": "index",
234
+ "imports": [
235
+ "_bBmtyQMj.js"
236
+ ]
237
+ },
246
238
  "_Zeh-C-mx.js": {
247
239
  "file": "_app/immutable/chunks/Zeh-C-mx.js",
248
240
  "name": "svelte-component",
@@ -250,5 +242,13 @@
250
242
  "_CME08kGM.js",
251
243
  "_B6YN0Nuq.js"
252
244
  ]
245
+ },
246
+ "_bBmtyQMj.js": {
247
+ "file": "_app/immutable/chunks/bBmtyQMj.js",
248
+ "name": "entry",
249
+ "imports": [
250
+ "_CME08kGM.js",
251
+ "_DhD271EB.js"
252
+ ]
253
253
  }
254
254
  }
@@ -1 +1 @@
1
- import{s as e,p as r}from"./C9lbZ-kT.js";const t={get error(){return r.error},get status(){return r.status},get url(){return r.url}};e.updated.check;const a=t;export{a as p};
1
+ import{s as e,p as r}from"./bBmtyQMj.js";const t={get error(){return r.error},get status(){return r.status},get url(){return r.url}};e.updated.check;const a=t;export{a as p};