@juspay/shooter 1.6.0 → 1.6.1
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.
- package/build/client/_app/immutable/chunks/{CqfYvnci.js → Dc_Gg2H6.js} +1 -1
- package/build/client/_app/immutable/chunks/Dc_Gg2H6.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dc_Gg2H6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{y_g-KC7l.js → DlnAjkg1.js} +1 -1
- package/build/client/_app/immutable/chunks/DlnAjkg1.js.br +0 -0
- package/build/client/_app/immutable/chunks/{y_g-KC7l.js.gz → DlnAjkg1.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/{EhLZwqfu.js → YKoRJzXZ.js} +2 -2
- package/build/client/_app/immutable/chunks/YKoRJzXZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/YKoRJzXZ.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.zJvbFXsj.js → app.CFPgQOa8.js} +2 -2
- package/build/client/_app/immutable/entry/app.CFPgQOa8.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CFPgQOa8.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BnJOVqhI.js +1 -0
- package/build/client/_app/immutable/entry/start.BnJOVqhI.js.br +2 -0
- package/build/client/_app/immutable/entry/start.BnJOVqhI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.B_E4j3MX.js → 0.DR-BBF5r.js} +1 -1
- package/build/client/_app/immutable/nodes/0.DR-BBF5r.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DR-BBF5r.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.B0oFqb8X.js → 1.CNm6rAwf.js} +1 -1
- package/build/client/_app/immutable/nodes/1.CNm6rAwf.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CNm6rAwf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.Bqul0XyM.js → 2.B08usYzr.js} +1 -1
- package/build/client/_app/immutable/nodes/2.B08usYzr.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.B08usYzr.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.CTqUQKSN.js → 3.CsY6J5HS.js} +1 -1
- package/build/client/_app/immutable/nodes/3.CsY6J5HS.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CsY6J5HS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.BvjUfHnH.js → 6.CbQQ3FtZ.js} +1 -1
- package/build/client/_app/immutable/nodes/6.CbQQ3FtZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CbQQ3FtZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.5K7Od8ba.js → 7.CCKgiNNk.js} +1 -1
- package/build/client/_app/immutable/nodes/7.CCKgiNNk.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CCKgiNNk.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.Bs1DrW0_.js → 8.C7AaheUD.js} +1 -1
- package/build/client/_app/immutable/nodes/8.C7AaheUD.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.C7AaheUD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.1fMlGdqv.js → 9.DfL9kMC4.js} +1 -1
- package/build/client/_app/immutable/nodes/9.DfL9kMC4.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.DfL9kMC4.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{0-e1fgD9Mi.js → 0-DC2VLooL.js} +2 -2
- package/build/server/chunks/{0-e1fgD9Mi.js.map → 0-DC2VLooL.js.map} +1 -1
- package/build/server/chunks/{1-D2_XVthm.js → 1-XJaf8Jvf.js} +2 -2
- package/build/server/chunks/{1-D2_XVthm.js.map → 1-XJaf8Jvf.js.map} +1 -1
- package/build/server/chunks/{2-DADX86JZ.js → 2-D4Cx-1QL.js} +2 -2
- package/build/server/chunks/{2-DADX86JZ.js.map → 2-D4Cx-1QL.js.map} +1 -1
- package/build/server/chunks/{3-CHacdiCg.js → 3-CVhIEP-u.js} +2 -2
- package/build/server/chunks/{3-CHacdiCg.js.map → 3-CVhIEP-u.js.map} +1 -1
- package/build/server/chunks/{6-CWLNQu6F.js → 6-QFSbzRMP.js} +2 -2
- package/build/server/chunks/{6-CWLNQu6F.js.map → 6-QFSbzRMP.js.map} +1 -1
- package/build/server/chunks/{7-DmQ3B8uy.js → 7-CZ_YGjMV.js} +2 -2
- package/build/server/chunks/{7-DmQ3B8uy.js.map → 7-CZ_YGjMV.js.map} +1 -1
- package/build/server/chunks/{8-CnFVjQtZ.js → 8-Xe2Rugb4.js} +2 -2
- package/build/server/chunks/{8-CnFVjQtZ.js.map → 8-Xe2Rugb4.js.map} +1 -1
- package/build/server/chunks/{9-Dw7-P6aF.js → 9-IwHpC4SO.js} +2 -2
- package/build/server/chunks/{9-Dw7-P6aF.js.map → 9-IwHpC4SO.js.map} +1 -1
- package/build/server/chunks/{_server.ts-ByIrRtCx.js → _server.ts-Ds_SUGC3.js} +53 -15
- package/build/server/chunks/_server.ts-Ds_SUGC3.js.map +1 -0
- package/build/server/chunks/{_server.ts-B__YN2kX.js → _server.ts-G8OeADGj.js} +21 -3
- package/build/server/chunks/_server.ts-G8OeADGj.js.map +1 -0
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +11 -11
- package/build/server/manifest.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/modules/server/sessions/jsonl-reader.ts +75 -16
- package/src/routes/api/notify/+server.ts +31 -3
- package/build/client/_app/immutable/chunks/CqfYvnci.js.br +0 -0
- package/build/client/_app/immutable/chunks/CqfYvnci.js.gz +0 -0
- package/build/client/_app/immutable/chunks/EhLZwqfu.js.br +0 -0
- package/build/client/_app/immutable/chunks/EhLZwqfu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/y_g-KC7l.js.br +0 -0
- package/build/client/_app/immutable/entry/app.zJvbFXsj.js.br +0 -0
- package/build/client/_app/immutable/entry/app.zJvbFXsj.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.B2Jf5iFd.js +0 -1
- package/build/client/_app/immutable/entry/start.B2Jf5iFd.js.br +0 -2
- package/build/client/_app/immutable/entry/start.B2Jf5iFd.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.B_E4j3MX.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.B_E4j3MX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.B0oFqb8X.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.B0oFqb8X.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.Bqul0XyM.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.Bqul0XyM.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CTqUQKSN.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CTqUQKSN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BvjUfHnH.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BvjUfHnH.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.5K7Od8ba.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.5K7Od8ba.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.Bs1DrW0_.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Bs1DrW0_.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.1fMlGdqv.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.1fMlGdqv.js.gz +0 -0
- package/build/server/chunks/_server.ts-B__YN2kX.js.map +0 -1
- package/build/server/chunks/_server.ts-ByIrRtCx.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../chunks/CR6bkGJW.js","../chunks/PPVm8Dsz.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{_ as ke}from"../chunks/PPVm8Dsz.js";import{s as rt,a as S,f as C,c as Se,d as xe,g as Ce,h as Ie,e as Te}from"../chunks/DVl0sebP.js";import{W as ot,Y as it,g as t,Z as p,c as k,d as c,r as h,t as H,f as zt,s as m,A as je,X as qe,_ as Ee,$ as Ke,b as n,a0 as Me}from"../chunks/CJFjKwJ7.js";import{i as M}from"../chunks/BfJ-f-Tu.js";import{h as $e}from"../chunks/CsgHjHGZ.js";import{d as De,s as vt,B as tt,e as Bt,M as Pe,K as Ae,P as Rt,T as Wt,f as Ne,I as Oe}from"../chunks/CNH2HlKj.js";import{a as mt,b as Lt}from"../chunks/DDiOVAd8.js";import{b as Ft}from"../chunks/1mEchsPO.js";import{g as Y}from"../chunks/EhLZwqfu.js";import{p as Re}from"../chunks/CqfYvnci.js";import{E as We}from"../chunks/CaiJSUi3.js";import{C as Le}from"../chunks/CVtJ6yRM.js";import{p as Fe}from"../chunks/B7X-vhXI.js";function ze(g,o){ot(o,!0);let b=Fe(o,"open",15,!1);const u=p(()=>o.commands.map((y,a)=>({label:y.label,value:String(a)})));function T(y){const a=parseInt(y.value,10);o.commands[a]&&o.commands[a].action()}De(g,{get items(){return t(u)},placeholder:"Type a command...",emptyText:"No matching commands",onselect:T,get onclose(){return o.onClose},classes:"command-palette",get open(){return b()},set open(y){b(y)}}),it()}var Be=C('<div><span></span> <span class="status-label svelte-1cg9pai"> </span> <!></div>');function He(g,o){const b=p(()=>o.status==="connected"?"Connected":o.status==="reconnecting"?"Reconnecting...":"Disconnected");var u=Be();let T;var y=k(u),a=c(y,2),O=k(a,!0);h(a);var $=c(a,2);{var j=x=>{tt(x,{classes:"btn-ghost btn-sm btn-retry",get onclick(){return o.onretry},text:"Retry"})};M($,x=>{o.status==="disconnected"&&o.onretry&&x(j)})}h(u),H(()=>{T=mt(u,1,"connection-status svelte-1cg9pai",null,T,{reconnecting:o.status==="reconnecting",disconnected:o.status==="disconnected",connected:o.status==="connected"}),vt(u,"aria-label",`Connection: ${o.status??""}`),mt(y,1,`status-dot ${o.status??""}`,"svelte-1cg9pai"),rt(O,t(b))}),S(g,u)}const Ht=typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.userAgent),pt=Ht?"⌘":"Ctrl";function Ue(g){function o(b){if((Ht?b.metaKey:b.ctrlKey)&&!Ge()&&b.key==="/"){b.preventDefault(),b.stopPropagation(),g.onHelp();return}}return window.addEventListener("keydown",o,!0),{destroy(){window.removeEventListener("keydown",o,!0)}}}function Je(){return[{description:"Command palette",keys:`${pt}+K`},{description:"Keyboard shortcuts",keys:`${pt}+/`}]}function Ge(){const g=document.activeElement;if(!g)return!1;const o=g.tagName;return!!(o==="INPUT"||o==="TEXTAREA"||g.isContentEditable||g.closest(".xterm"))}var Ve=C('<div class="quick-keys svelte-64qat5" role="toolbar" aria-label="Quick terminal keys"></div>');function Qe(g,o){ot(o,!0);const b=[{escape:"",label:"Ctrl+C"},{escape:" ",label:"Tab"},{escape:"\x1B[A",label:"↑"},{escape:"\x1B[B",label:"↓"},{escape:"\x1B",label:"Esc"},{escape:"",label:"Ctrl+D"},{escape:"",label:"Ctrl+Z"}];var u=Ve();Bt(u,21,()=>b,T=>T.label,(T,y)=>{tt(T,{classes:"btn-quick-key",onclick:()=>{o.onKey(t(y).escape)},get text(){return t(y).label}})}),h(u),S(g,u),it()}var Xe=C('<div class="shortcut-row svelte-1u7lstk"><span class="shortcut-desc svelte-1u7lstk"> </span> <!></div>'),Ze=C('<div class="shortcuts-list svelte-1u7lstk"></div>');function Ye(g,o){ot(o,!0);const b=Je();var u=Se(),T=zt(u);{var y=a=>{Pe(a,{header:{text:"Keyboard Shortcuts"},get onoverlayClick(){return o.onClose},classes:"shortcuts-modal",content:$=>{var j=Ze();Bt(j,21,()=>b,x=>x.keys,(x,F)=>{var R=Xe(),d=k(R),q=k(d,!0);h(d);var P=c(d,2);Ae(P,{get keys(){return t(F).keys},classes:"shortcut-kbd"}),h(R),H(()=>rt(q,t(F).description)),S(x,R)}),h(j),S($,j)},$$slots:{content:!0}})};M(T,a=>{o.open&&a(y)})}S(g,u),it()}var tn=C('<meta name="description" content="Interactive terminal session" class="svelte-1tubujq"/>'),en=C('<div class="term-page svelte-1tubujq"><div class="term-topbar svelte-1tubujq"><div class="skeleton svelte-1tubujq" style="width: 120px; height: 20px;"></div></div> <div class="term-body-loading svelte-1tubujq"><div class="skeleton svelte-1tubujq" style="width: 100%; height: 100%;"></div></div></div>'),nn=C('<main class="main svelte-1tubujq"><div class="session-back-row svelte-1tubujq"><a href="/terminals" class="back-link svelte-1tubujq"><span class="back-arrow svelte-1tubujq">←</span> Terminals</a></div> <!></main>'),sn=C("<span></span>"),an=C('<span class="term-cwd svelte-1tubujq"> </span>'),rn=C('<a class="term-session-link svelte-1tubujq" title="View session history">Session</a>'),on=C('<div class="term-input-area svelte-1tubujq"><!> <div class="term-input-bar svelte-1tubujq"><!> <!></div></div>'),ln=C('<div class="term-exited-bar svelte-1tubujq"><span class="svelte-1tubujq">Process exited</span> <!></div>'),cn=C('<div class="term-page svelte-1tubujq"><div class="term-topbar svelte-1tubujq"><div class="term-topbar-left svelte-1tubujq"><a href="/terminals" class="term-back svelte-1tubujq" aria-label="Back to terminals">←</a> <span class="term-command-name svelte-1tubujq"> </span> <!> <!> <!> <!> <!></div> <div class="term-topbar-right svelte-1tubujq"><!> <button class="term-shortcuts-btn svelte-1tubujq" type="button" aria-label="Keyboard shortcuts">?</button> <!></div></div> <div class="term-body svelte-1tubujq"></div> <!> <div class="term-chat-body svelte-1tubujq"><!></div> <!></div>'),un=C("<!> <!> <!>",1);function xn(g,o){ot(o,!0);const b=()=>Ie(Re,"$page",u),[u,T]=Ce(),y=["claude","opencode"];let a=m(null),O=m(!0),$=m(null),j=m(!1),x=m(!1),F=m(!1),R=m(null),d=m("raw"),q=m("disconnected"),P=m("disconnected"),z=m(""),D=m(je([])),ht=m(!1),U=m(null),lt=m(null),A=null,gt=null,W=m(!1),ct=m(!1),f=null,L=null,v=!1;const J=p(()=>b().params.id),G=p(()=>t(a)?y.includes((t(a).command.split("/").pop()||"").toLowerCase()):!1),B=p(()=>t(a)?.status==="running"),bt=p(()=>t(a)?.command.split("/").pop()||"terminal"),Ut=p(()=>t(G)?"AI":"SHELL"),Jt=p(()=>t(G)?"pill-badge-ai":"pill-badge-shell"),Gt=["Raw","Chat"],yt=p(()=>t(d)==="raw"?t(q):t(P)),Vt=p(()=>t(d)==="raw"?0:1),wt=p(()=>Xt(t(R)||t(a)?.cwd||"")),Qt=p(()=>{const e=[{action:()=>{Y("/")},label:"Go to Home"},{action:()=>{Y("/terminals")},label:"Go to Terminals"},{action:()=>{Y("/config")},label:"Go to Settings"},{action:()=>{n(W,!0)},label:"Show keyboard shortcuts"}];return t(B)&&e.push({action:()=>{kt()},label:"Kill terminal"}),e});function Xt(e){if(!e)return"";const s="";let r=e;if(typeof navigator<"u"){const l=e.split("/");l.length>=3&&l[1]==="Users"?r=`~/${l.slice(3).join("/")}`:l.length>=3&&l[1]==="home"&&(r=`~/${l.slice(3).join("/")}`)}if(r.length>30){const l=r.split("/");if(l.length>2)return`.../${l.slice(-2).join("/")}`}return r||s}function V(){try{const e=localStorage.getItem("shooter_config");if(!e)return null;const s=JSON.parse(e);return typeof s?.apiKey=="string"&&s.apiKey?s:null}catch{return null}}async function Zt(){const e=V();if(!e){n($,"No configuration found. Please configure settings first."),n(O,!1);return}try{const s=await fetch(`/api/terminals/${t(J)}`,{headers:{Authorization:`Bearer ${e.apiKey}`}});if(!s.ok){n($,s.status===404?"Terminal not found":"Failed to load terminal",!0),n(O,!1);return}n(a,await s.json(),!0)}catch{n($,"Failed to connect to server")}n(O,!1)}async function _t(){const e=V();if(!e)return null;try{const s=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${e.apiKey}`},method:"POST"});return s.ok?(await s.json()).ticket:null}catch{return null}}async function kt(){if(!t(a)||t(j))return;const e=V();if(e){n(j,!0);try{(await fetch(`/api/terminals/${t(J)}`,{headers:{Authorization:`Bearer ${e.apiKey}`},method:"DELETE"})).ok?Y("/terminals"):n(j,!1)}catch{n(j,!1)}}}async function Yt(){if(!t(a)||t(x))return;const e=V();if(e){n(x,!0);try{(await fetch(`/api/terminals/${t(J)}`,{headers:{Authorization:`Bearer ${e.apiKey}`},method:"DELETE"})).ok?Y("/terminals"):n(x,!1)}catch{n(x,!1)}}}async function ut(){if(!t(U)||!t(a)||v)return;const s=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}${t(a).ws}`,r=async()=>{const l=await _t();if(!l)throw new Error("Failed to obtain WebSocket ticket");return l};try{const{createTerminal:l}=await ke(async()=>{const{createTerminal:E}=await import("../chunks/CR6bkGJW.js");return{createTerminal:E}},__vite__mapDeps([0,1]),import.meta.url);if(v||!t(U))return;const w=await l({apiKey:V()?.apiKey,container:t(U),fontSize:window.innerWidth<768?12:14,getTicket:r,onActivity:E=>{v||n(F,E,!0)},onCwd:E=>{v||n(R,E,!0)},onDisconnect:()=>{v||n(q,"reconnecting")},onExit:E=>{!v&&t(a)&&(n(a,{...t(a),exitCode:E,exitedAt:new Date().toISOString(),status:"exited"},!0),n(q,"disconnected"))},onReconnect:()=>{v||n(q,"connected")},terminalId:t(J),wsUrl:s});if(v){w.dispose();return}A=w,n(q,"connected")}catch(l){console.error("Failed to initialize terminal:",l),n(q,"disconnected")}}function St(){A&&(A.dispose(),A=null)}async function et(){if(!t(a)||v||f&&(f.readyState===WebSocket.OPEN||f.readyState===WebSocket.CONNECTING))return;const e=await _t();if(!e||v||!t(a)){n(P,"disconnected");return}const r=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}${t(a).sessionWs}?ticket=${e}`;f=new WebSocket(r),f.onopen=()=>{v||(n(P,"connected"),f?.send(JSON.stringify({sessionId:t(J),type:"subscribe"})))},f.onmessage=l=>{if(!v)try{const w=JSON.parse(l.data);te(w)}catch{}},f.onclose=()=>{!v&&t(a)?.status==="running"&&(n(P,"reconnecting"),L&&clearTimeout(L),L=setTimeout(()=>{L=null,!v&&t(a)?.status==="running"&&et()},2e3))},f.onerror=()=>{v||n(P,"disconnected")}}function Q(){return t(D)}function te(e){if(e.type==="history"){const s=e.messages||[];n(D,s.map(r=>({id:r.id,parts:r.content,role:r.role,timestamp:r.timestamp})),!0)}else if(e.type==="message"){const s=typeof e.role=="string"?e.role:"assistant",r=s==="user"?"user":s==="system"?"system":"assistant",l={id:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:e.content||[],role:r,timestamp:(typeof e.timestamp=="string"?e.timestamp:"")||new Date().toISOString()};n(D,Q().concat(l),!0)}else if(e.type==="tool-use"){const s={id:e.id||`tool-${Date.now()}`,input:e.input||{},toolName:e.name,type:"tool_use"},r={id:`tool-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"assistant",timestamp:new Date().toISOString()};n(D,Q().concat(r),!0)}else if(e.type==="tool-result"){const s={isError:e.isError||!1,output:e.output||"",toolUseId:e.id,type:"tool_result"},r={id:`result-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"system",timestamp:new Date().toISOString()};n(D,Q().concat(r),!0)}else if(e.type==="thinking"){const s={content:e.text||"",type:"thinking"},r=Q(),l=r.length-1;if(l>=0&&r[l].role==="assistant"){const w=r[l],E={id:w.id,parts:w.parts.concat(s),role:w.role,timestamp:w.timestamp};n(D,[...r.slice(0,l),E],!0)}else{const w={id:`think-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"assistant",timestamp:new Date().toISOString()};n(D,r.concat(w),!0)}}else if(e.type==="error"){const s={content:e.message||"Unknown error",type:"text"},r={id:`err-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"system",timestamp:new Date().toISOString()};n(D,Q().concat(r),!0)}else e.type==="session-end"&&(n(ht,!0),t(a)&&n(a,{...t(a),status:"exited"},!0))}function xt(){L&&(clearTimeout(L),L=null),f&&(f.onclose=null,f.close(),f=null)}function Ct(){t(z).trim()&&(A&&t(q)==="connected"&&A.sendInput(`${t(z)}\r`),n(z,""),t(lt)?.focus())}function ee(e){!e.trim()||f?.readyState!==WebSocket.OPEN||f.send(JSON.stringify({text:e,type:"send-input"}))}function It(){f?.readyState===WebSocket.OPEN&&f.send(JSON.stringify({type:"cancel"}))}function ne(e){t(d)==="raw"?A&&t(q)==="connected"&&A.sendInput(e):t(d)==="chat"&&e===""&&It()}function se(e){e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),Ct())}let nt=!1,st=!1;function ae(e){e!==t(d)&&(n(d,e,!0),e==="raw"&&!nt?(requestAnimationFrame(()=>{ut()}),nt=!0):e==="chat"&&!st&&(et(),st=!0))}function re(){t(d)==="raw"?(St(),n(q,"reconnecting"),ut(),nt=!0):(xt(),n(P,"reconnecting"),et(),st=!0)}qe(async()=>{await Zt(),!v&&(gt=Ue({onHelp:()=>{n(W,!t(W))}}),!(!t(a)||t($))&&(t(G)&&window.innerWidth<768?n(d,"chat"):n(d,"raw"),t(d)==="raw"?(requestAnimationFrame(()=>{ut()}),nt=!0):(et(),st=!0)))}),Ee(()=>{v=!0,St(),xt(),gt?.destroy()});var Tt=un();$e("1tubujq",e=>{var s=tn();Ke(()=>{Me.title=`${t(bt)??""} - Terminal - Shooter`}),S(e,s)});var jt=zt(Tt);{var oe=e=>{var s=en();S(e,s)},ie=e=>{var s=nn(),r=c(k(s),2);We(r,{icon:"alert-triangle",title:"Error",get description(){return t($)}}),h(s),S(e,s)},le=e=>{var s=cn(),r=k(s),l=k(r),w=c(k(l),2),E=k(w,!0);h(w);var Et=c(w,2);Rt(Et,{get text(){return t(Ut)},get classes(){return t(Jt)}});var Kt=c(Et,2);{var ue=i=>{{let _=p(()=>t(F)?"Active":"Idle");Wt(i,{get text(){return t(_)},position:"bottom",children:(K,N)=>{var I=sn();H(()=>mt(I,1,`activity-dot ${t(F)?"activity-active":"activity-idle"}`,"svelte-1tubujq")),S(K,I)},$$slots:{default:!0}})}};M(Kt,i=>{t(B)&&i(ue)})}var Mt=c(Kt,2);{var de=i=>{{let _=p(()=>t(R)||t(a)?.cwd||"");Wt(i,{get text(){return t(_)},position:"bottom",children:(K,N)=>{var I=an(),X=k(I,!0);h(I),H(()=>rt(X,t(wt))),S(K,I)},$$slots:{default:!0}})}};M(Mt,i=>{t(wt)&&i(de)})}var $t=c(Mt,2);He($t,{get status(){return t(yt)},onretry:re});var fe=c($t,2);{var ve=i=>{const _=p(()=>t(a).sessionFile??"");var K=rn();H(N=>vt(K,"href",`/session/${N??""}`),[()=>t(_).split(/[\\/]/).pop()?.replace(".jsonl","")||""]),S(i,K)};M(fe,i=>{t(G)&&t(a)?.sessionFile&&i(ve)})}h(l);var Dt=c(l,2),Pt=k(Dt);{var me=i=>{Ne(i,{get items(){return Gt},get activeIndex(){return t(Vt)},onchange:_=>{ae(_===0?"raw":"chat")},classes:"term-tabs"})};M(Pt,i=>{t(G)&&i(me)})}var dt=c(Pt,2),pe=c(dt,2);{var he=i=>{tt(i,{classes:"btn-danger btn-sm",onclick:kt,get disabled(){return t(j)},get showLoader(){return t(j)},text:"Kill"})},ge=i=>{tt(i,{classes:"btn-secondary btn-sm",onclick:Yt,get disabled(){return t(x)},get showLoader(){return t(x)},text:"Remove"})};M(pe,i=>{t(B)?i(he):i(ge,-1)})}h(Dt),h(r);var ft=c(r,2);let At;Ft(ft,i=>n(U,i),()=>t(U));var Nt=c(ft,2);{var be=i=>{var _=on(),K=k(_);Qe(K,{onKey:ne});var N=c(K,2),I=k(N);Ft(Oe(I,{dataType:"text",useTextArea:!0,placeholder:"Type command... (Shift+Enter for new line)",classes:"input-mono term-input-field",onKeyDown:se,get value(){return t(z)},set value(Z){n(z,Z,!0)}}),Z=>n(lt,Z,!0),()=>t(lt));var X=c(I,2);{let Z=p(()=>!t(z).trim());tt(X,{classes:"btn-primary btn-send",onclick:Ct,get disabled(){return t(Z)},text:"↵"})}h(N),h(_),S(i,_)};M(Nt,i=>{t(B)&&t(d)==="raw"&&i(be)})}var at=c(Nt,2);let Ot;var ye=k(at);Le(ye,{get messages(){return t(D)},get connectionState(){return t(yt)},get sessionEnded(){return t(ht)},get showInput(){return t(B)},onSendInput:ee,onCancel:It}),h(at);var we=c(at,2);{var _e=i=>{var _=ln(),K=c(k(_),2);{var N=I=>{{let X=p(()=>t(a).exitCode!==0?"pill-exit-error":"pill-exit-ok");Rt(I,{get text(){return`code ${t(a).exitCode??""}`},get classes(){return t(X)}})}};M(K,I=>{t(a).exitCode!==null&&I(N)})}h(_),S(i,_)};M(we,i=>{t(B)||i(_e)})}h(s),H(()=>{rt(E,t(bt)),vt(dt,"title",`${pt??""}+/ for shortcuts`),At=Lt(ft,"",At,{display:t(d)==="raw"?"flex":"none"}),Ot=Lt(at,"",Ot,{display:t(d)==="chat"?"flex":"none"})}),Te("click",dt,()=>{n(W,!t(W))}),S(e,s)};M(jt,e=>{t(O)?e(oe):t($)?e(ie,1):t(a)&&e(le,2)})}var qt=c(jt,2);Ye(qt,{get open(){return t(W)},onClose:()=>{n(W,!1)}});var ce=c(qt,2);ze(ce,{get commands(){return t(Qt)},onClose:()=>{n(ct,!1)},get open(){return t(ct)},set open(e){n(ct,e,!0)}}),S(g,Tt),it(),T()}xe(["click"]);export{xn as component};
|
|
2
|
+
import{_ as ke}from"../chunks/PPVm8Dsz.js";import{s as rt,a as S,f as C,c as Se,d as xe,g as Ce,h as Ie,e as Te}from"../chunks/DVl0sebP.js";import{W as ot,Y as it,g as t,Z as p,c as k,d as c,r as h,t as H,f as zt,s as m,A as je,X as qe,_ as Ee,$ as Ke,b as n,a0 as Me}from"../chunks/CJFjKwJ7.js";import{i as M}from"../chunks/BfJ-f-Tu.js";import{h as $e}from"../chunks/CsgHjHGZ.js";import{d as De,s as vt,B as tt,e as Bt,M as Pe,K as Ae,P as Rt,T as Wt,f as Ne,I as Oe}from"../chunks/CNH2HlKj.js";import{a as mt,b as Lt}from"../chunks/DDiOVAd8.js";import{b as Ft}from"../chunks/1mEchsPO.js";import{g as Y}from"../chunks/YKoRJzXZ.js";import{p as Re}from"../chunks/Dc_Gg2H6.js";import{E as We}from"../chunks/CaiJSUi3.js";import{C as Le}from"../chunks/CVtJ6yRM.js";import{p as Fe}from"../chunks/B7X-vhXI.js";function ze(g,o){ot(o,!0);let b=Fe(o,"open",15,!1);const u=p(()=>o.commands.map((y,a)=>({label:y.label,value:String(a)})));function T(y){const a=parseInt(y.value,10);o.commands[a]&&o.commands[a].action()}De(g,{get items(){return t(u)},placeholder:"Type a command...",emptyText:"No matching commands",onselect:T,get onclose(){return o.onClose},classes:"command-palette",get open(){return b()},set open(y){b(y)}}),it()}var Be=C('<div><span></span> <span class="status-label svelte-1cg9pai"> </span> <!></div>');function He(g,o){const b=p(()=>o.status==="connected"?"Connected":o.status==="reconnecting"?"Reconnecting...":"Disconnected");var u=Be();let T;var y=k(u),a=c(y,2),O=k(a,!0);h(a);var $=c(a,2);{var j=x=>{tt(x,{classes:"btn-ghost btn-sm btn-retry",get onclick(){return o.onretry},text:"Retry"})};M($,x=>{o.status==="disconnected"&&o.onretry&&x(j)})}h(u),H(()=>{T=mt(u,1,"connection-status svelte-1cg9pai",null,T,{reconnecting:o.status==="reconnecting",disconnected:o.status==="disconnected",connected:o.status==="connected"}),vt(u,"aria-label",`Connection: ${o.status??""}`),mt(y,1,`status-dot ${o.status??""}`,"svelte-1cg9pai"),rt(O,t(b))}),S(g,u)}const Ht=typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.userAgent),pt=Ht?"⌘":"Ctrl";function Ue(g){function o(b){if((Ht?b.metaKey:b.ctrlKey)&&!Ge()&&b.key==="/"){b.preventDefault(),b.stopPropagation(),g.onHelp();return}}return window.addEventListener("keydown",o,!0),{destroy(){window.removeEventListener("keydown",o,!0)}}}function Je(){return[{description:"Command palette",keys:`${pt}+K`},{description:"Keyboard shortcuts",keys:`${pt}+/`}]}function Ge(){const g=document.activeElement;if(!g)return!1;const o=g.tagName;return!!(o==="INPUT"||o==="TEXTAREA"||g.isContentEditable||g.closest(".xterm"))}var Ve=C('<div class="quick-keys svelte-64qat5" role="toolbar" aria-label="Quick terminal keys"></div>');function Qe(g,o){ot(o,!0);const b=[{escape:"",label:"Ctrl+C"},{escape:" ",label:"Tab"},{escape:"\x1B[A",label:"↑"},{escape:"\x1B[B",label:"↓"},{escape:"\x1B",label:"Esc"},{escape:"",label:"Ctrl+D"},{escape:"",label:"Ctrl+Z"}];var u=Ve();Bt(u,21,()=>b,T=>T.label,(T,y)=>{tt(T,{classes:"btn-quick-key",onclick:()=>{o.onKey(t(y).escape)},get text(){return t(y).label}})}),h(u),S(g,u),it()}var Xe=C('<div class="shortcut-row svelte-1u7lstk"><span class="shortcut-desc svelte-1u7lstk"> </span> <!></div>'),Ze=C('<div class="shortcuts-list svelte-1u7lstk"></div>');function Ye(g,o){ot(o,!0);const b=Je();var u=Se(),T=zt(u);{var y=a=>{Pe(a,{header:{text:"Keyboard Shortcuts"},get onoverlayClick(){return o.onClose},classes:"shortcuts-modal",content:$=>{var j=Ze();Bt(j,21,()=>b,x=>x.keys,(x,F)=>{var R=Xe(),d=k(R),q=k(d,!0);h(d);var P=c(d,2);Ae(P,{get keys(){return t(F).keys},classes:"shortcut-kbd"}),h(R),H(()=>rt(q,t(F).description)),S(x,R)}),h(j),S($,j)},$$slots:{content:!0}})};M(T,a=>{o.open&&a(y)})}S(g,u),it()}var tn=C('<meta name="description" content="Interactive terminal session" class="svelte-1tubujq"/>'),en=C('<div class="term-page svelte-1tubujq"><div class="term-topbar svelte-1tubujq"><div class="skeleton svelte-1tubujq" style="width: 120px; height: 20px;"></div></div> <div class="term-body-loading svelte-1tubujq"><div class="skeleton svelte-1tubujq" style="width: 100%; height: 100%;"></div></div></div>'),nn=C('<main class="main svelte-1tubujq"><div class="session-back-row svelte-1tubujq"><a href="/terminals" class="back-link svelte-1tubujq"><span class="back-arrow svelte-1tubujq">←</span> Terminals</a></div> <!></main>'),sn=C("<span></span>"),an=C('<span class="term-cwd svelte-1tubujq"> </span>'),rn=C('<a class="term-session-link svelte-1tubujq" title="View session history">Session</a>'),on=C('<div class="term-input-area svelte-1tubujq"><!> <div class="term-input-bar svelte-1tubujq"><!> <!></div></div>'),ln=C('<div class="term-exited-bar svelte-1tubujq"><span class="svelte-1tubujq">Process exited</span> <!></div>'),cn=C('<div class="term-page svelte-1tubujq"><div class="term-topbar svelte-1tubujq"><div class="term-topbar-left svelte-1tubujq"><a href="/terminals" class="term-back svelte-1tubujq" aria-label="Back to terminals">←</a> <span class="term-command-name svelte-1tubujq"> </span> <!> <!> <!> <!> <!></div> <div class="term-topbar-right svelte-1tubujq"><!> <button class="term-shortcuts-btn svelte-1tubujq" type="button" aria-label="Keyboard shortcuts">?</button> <!></div></div> <div class="term-body svelte-1tubujq"></div> <!> <div class="term-chat-body svelte-1tubujq"><!></div> <!></div>'),un=C("<!> <!> <!>",1);function xn(g,o){ot(o,!0);const b=()=>Ie(Re,"$page",u),[u,T]=Ce(),y=["claude","opencode"];let a=m(null),O=m(!0),$=m(null),j=m(!1),x=m(!1),F=m(!1),R=m(null),d=m("raw"),q=m("disconnected"),P=m("disconnected"),z=m(""),D=m(je([])),ht=m(!1),U=m(null),lt=m(null),A=null,gt=null,W=m(!1),ct=m(!1),f=null,L=null,v=!1;const J=p(()=>b().params.id),G=p(()=>t(a)?y.includes((t(a).command.split("/").pop()||"").toLowerCase()):!1),B=p(()=>t(a)?.status==="running"),bt=p(()=>t(a)?.command.split("/").pop()||"terminal"),Ut=p(()=>t(G)?"AI":"SHELL"),Jt=p(()=>t(G)?"pill-badge-ai":"pill-badge-shell"),Gt=["Raw","Chat"],yt=p(()=>t(d)==="raw"?t(q):t(P)),Vt=p(()=>t(d)==="raw"?0:1),wt=p(()=>Xt(t(R)||t(a)?.cwd||"")),Qt=p(()=>{const e=[{action:()=>{Y("/")},label:"Go to Home"},{action:()=>{Y("/terminals")},label:"Go to Terminals"},{action:()=>{Y("/config")},label:"Go to Settings"},{action:()=>{n(W,!0)},label:"Show keyboard shortcuts"}];return t(B)&&e.push({action:()=>{kt()},label:"Kill terminal"}),e});function Xt(e){if(!e)return"";const s="";let r=e;if(typeof navigator<"u"){const l=e.split("/");l.length>=3&&l[1]==="Users"?r=`~/${l.slice(3).join("/")}`:l.length>=3&&l[1]==="home"&&(r=`~/${l.slice(3).join("/")}`)}if(r.length>30){const l=r.split("/");if(l.length>2)return`.../${l.slice(-2).join("/")}`}return r||s}function V(){try{const e=localStorage.getItem("shooter_config");if(!e)return null;const s=JSON.parse(e);return typeof s?.apiKey=="string"&&s.apiKey?s:null}catch{return null}}async function Zt(){const e=V();if(!e){n($,"No configuration found. Please configure settings first."),n(O,!1);return}try{const s=await fetch(`/api/terminals/${t(J)}`,{headers:{Authorization:`Bearer ${e.apiKey}`}});if(!s.ok){n($,s.status===404?"Terminal not found":"Failed to load terminal",!0),n(O,!1);return}n(a,await s.json(),!0)}catch{n($,"Failed to connect to server")}n(O,!1)}async function _t(){const e=V();if(!e)return null;try{const s=await fetch("/api/ws-ticket",{headers:{Authorization:`Bearer ${e.apiKey}`},method:"POST"});return s.ok?(await s.json()).ticket:null}catch{return null}}async function kt(){if(!t(a)||t(j))return;const e=V();if(e){n(j,!0);try{(await fetch(`/api/terminals/${t(J)}`,{headers:{Authorization:`Bearer ${e.apiKey}`},method:"DELETE"})).ok?Y("/terminals"):n(j,!1)}catch{n(j,!1)}}}async function Yt(){if(!t(a)||t(x))return;const e=V();if(e){n(x,!0);try{(await fetch(`/api/terminals/${t(J)}`,{headers:{Authorization:`Bearer ${e.apiKey}`},method:"DELETE"})).ok?Y("/terminals"):n(x,!1)}catch{n(x,!1)}}}async function ut(){if(!t(U)||!t(a)||v)return;const s=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}${t(a).ws}`,r=async()=>{const l=await _t();if(!l)throw new Error("Failed to obtain WebSocket ticket");return l};try{const{createTerminal:l}=await ke(async()=>{const{createTerminal:E}=await import("../chunks/CR6bkGJW.js");return{createTerminal:E}},__vite__mapDeps([0,1]),import.meta.url);if(v||!t(U))return;const w=await l({apiKey:V()?.apiKey,container:t(U),fontSize:window.innerWidth<768?12:14,getTicket:r,onActivity:E=>{v||n(F,E,!0)},onCwd:E=>{v||n(R,E,!0)},onDisconnect:()=>{v||n(q,"reconnecting")},onExit:E=>{!v&&t(a)&&(n(a,{...t(a),exitCode:E,exitedAt:new Date().toISOString(),status:"exited"},!0),n(q,"disconnected"))},onReconnect:()=>{v||n(q,"connected")},terminalId:t(J),wsUrl:s});if(v){w.dispose();return}A=w,n(q,"connected")}catch(l){console.error("Failed to initialize terminal:",l),n(q,"disconnected")}}function St(){A&&(A.dispose(),A=null)}async function et(){if(!t(a)||v||f&&(f.readyState===WebSocket.OPEN||f.readyState===WebSocket.CONNECTING))return;const e=await _t();if(!e||v||!t(a)){n(P,"disconnected");return}const r=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}${t(a).sessionWs}?ticket=${e}`;f=new WebSocket(r),f.onopen=()=>{v||(n(P,"connected"),f?.send(JSON.stringify({sessionId:t(J),type:"subscribe"})))},f.onmessage=l=>{if(!v)try{const w=JSON.parse(l.data);te(w)}catch{}},f.onclose=()=>{!v&&t(a)?.status==="running"&&(n(P,"reconnecting"),L&&clearTimeout(L),L=setTimeout(()=>{L=null,!v&&t(a)?.status==="running"&&et()},2e3))},f.onerror=()=>{v||n(P,"disconnected")}}function Q(){return t(D)}function te(e){if(e.type==="history"){const s=e.messages||[];n(D,s.map(r=>({id:r.id,parts:r.content,role:r.role,timestamp:r.timestamp})),!0)}else if(e.type==="message"){const s=typeof e.role=="string"?e.role:"assistant",r=s==="user"?"user":s==="system"?"system":"assistant",l={id:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:e.content||[],role:r,timestamp:(typeof e.timestamp=="string"?e.timestamp:"")||new Date().toISOString()};n(D,Q().concat(l),!0)}else if(e.type==="tool-use"){const s={id:e.id||`tool-${Date.now()}`,input:e.input||{},toolName:e.name,type:"tool_use"},r={id:`tool-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"assistant",timestamp:new Date().toISOString()};n(D,Q().concat(r),!0)}else if(e.type==="tool-result"){const s={isError:e.isError||!1,output:e.output||"",toolUseId:e.id,type:"tool_result"},r={id:`result-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"system",timestamp:new Date().toISOString()};n(D,Q().concat(r),!0)}else if(e.type==="thinking"){const s={content:e.text||"",type:"thinking"},r=Q(),l=r.length-1;if(l>=0&&r[l].role==="assistant"){const w=r[l],E={id:w.id,parts:w.parts.concat(s),role:w.role,timestamp:w.timestamp};n(D,[...r.slice(0,l),E],!0)}else{const w={id:`think-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"assistant",timestamp:new Date().toISOString()};n(D,r.concat(w),!0)}}else if(e.type==="error"){const s={content:e.message||"Unknown error",type:"text"},r={id:`err-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,parts:[s],role:"system",timestamp:new Date().toISOString()};n(D,Q().concat(r),!0)}else e.type==="session-end"&&(n(ht,!0),t(a)&&n(a,{...t(a),status:"exited"},!0))}function xt(){L&&(clearTimeout(L),L=null),f&&(f.onclose=null,f.close(),f=null)}function Ct(){t(z).trim()&&(A&&t(q)==="connected"&&A.sendInput(`${t(z)}\r`),n(z,""),t(lt)?.focus())}function ee(e){!e.trim()||f?.readyState!==WebSocket.OPEN||f.send(JSON.stringify({text:e,type:"send-input"}))}function It(){f?.readyState===WebSocket.OPEN&&f.send(JSON.stringify({type:"cancel"}))}function ne(e){t(d)==="raw"?A&&t(q)==="connected"&&A.sendInput(e):t(d)==="chat"&&e===""&&It()}function se(e){e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),Ct())}let nt=!1,st=!1;function ae(e){e!==t(d)&&(n(d,e,!0),e==="raw"&&!nt?(requestAnimationFrame(()=>{ut()}),nt=!0):e==="chat"&&!st&&(et(),st=!0))}function re(){t(d)==="raw"?(St(),n(q,"reconnecting"),ut(),nt=!0):(xt(),n(P,"reconnecting"),et(),st=!0)}qe(async()=>{await Zt(),!v&&(gt=Ue({onHelp:()=>{n(W,!t(W))}}),!(!t(a)||t($))&&(t(G)&&window.innerWidth<768?n(d,"chat"):n(d,"raw"),t(d)==="raw"?(requestAnimationFrame(()=>{ut()}),nt=!0):(et(),st=!0)))}),Ee(()=>{v=!0,St(),xt(),gt?.destroy()});var Tt=un();$e("1tubujq",e=>{var s=tn();Ke(()=>{Me.title=`${t(bt)??""} - Terminal - Shooter`}),S(e,s)});var jt=zt(Tt);{var oe=e=>{var s=en();S(e,s)},ie=e=>{var s=nn(),r=c(k(s),2);We(r,{icon:"alert-triangle",title:"Error",get description(){return t($)}}),h(s),S(e,s)},le=e=>{var s=cn(),r=k(s),l=k(r),w=c(k(l),2),E=k(w,!0);h(w);var Et=c(w,2);Rt(Et,{get text(){return t(Ut)},get classes(){return t(Jt)}});var Kt=c(Et,2);{var ue=i=>{{let _=p(()=>t(F)?"Active":"Idle");Wt(i,{get text(){return t(_)},position:"bottom",children:(K,N)=>{var I=sn();H(()=>mt(I,1,`activity-dot ${t(F)?"activity-active":"activity-idle"}`,"svelte-1tubujq")),S(K,I)},$$slots:{default:!0}})}};M(Kt,i=>{t(B)&&i(ue)})}var Mt=c(Kt,2);{var de=i=>{{let _=p(()=>t(R)||t(a)?.cwd||"");Wt(i,{get text(){return t(_)},position:"bottom",children:(K,N)=>{var I=an(),X=k(I,!0);h(I),H(()=>rt(X,t(wt))),S(K,I)},$$slots:{default:!0}})}};M(Mt,i=>{t(wt)&&i(de)})}var $t=c(Mt,2);He($t,{get status(){return t(yt)},onretry:re});var fe=c($t,2);{var ve=i=>{const _=p(()=>t(a).sessionFile??"");var K=rn();H(N=>vt(K,"href",`/session/${N??""}`),[()=>t(_).split(/[\\/]/).pop()?.replace(".jsonl","")||""]),S(i,K)};M(fe,i=>{t(G)&&t(a)?.sessionFile&&i(ve)})}h(l);var Dt=c(l,2),Pt=k(Dt);{var me=i=>{Ne(i,{get items(){return Gt},get activeIndex(){return t(Vt)},onchange:_=>{ae(_===0?"raw":"chat")},classes:"term-tabs"})};M(Pt,i=>{t(G)&&i(me)})}var dt=c(Pt,2),pe=c(dt,2);{var he=i=>{tt(i,{classes:"btn-danger btn-sm",onclick:kt,get disabled(){return t(j)},get showLoader(){return t(j)},text:"Kill"})},ge=i=>{tt(i,{classes:"btn-secondary btn-sm",onclick:Yt,get disabled(){return t(x)},get showLoader(){return t(x)},text:"Remove"})};M(pe,i=>{t(B)?i(he):i(ge,-1)})}h(Dt),h(r);var ft=c(r,2);let At;Ft(ft,i=>n(U,i),()=>t(U));var Nt=c(ft,2);{var be=i=>{var _=on(),K=k(_);Qe(K,{onKey:ne});var N=c(K,2),I=k(N);Ft(Oe(I,{dataType:"text",useTextArea:!0,placeholder:"Type command... (Shift+Enter for new line)",classes:"input-mono term-input-field",onKeyDown:se,get value(){return t(z)},set value(Z){n(z,Z,!0)}}),Z=>n(lt,Z,!0),()=>t(lt));var X=c(I,2);{let Z=p(()=>!t(z).trim());tt(X,{classes:"btn-primary btn-send",onclick:Ct,get disabled(){return t(Z)},text:"↵"})}h(N),h(_),S(i,_)};M(Nt,i=>{t(B)&&t(d)==="raw"&&i(be)})}var at=c(Nt,2);let Ot;var ye=k(at);Le(ye,{get messages(){return t(D)},get connectionState(){return t(yt)},get sessionEnded(){return t(ht)},get showInput(){return t(B)},onSendInput:ee,onCancel:It}),h(at);var we=c(at,2);{var _e=i=>{var _=ln(),K=c(k(_),2);{var N=I=>{{let X=p(()=>t(a).exitCode!==0?"pill-exit-error":"pill-exit-ok");Rt(I,{get text(){return`code ${t(a).exitCode??""}`},get classes(){return t(X)}})}};M(K,I=>{t(a).exitCode!==null&&I(N)})}h(_),S(i,_)};M(we,i=>{t(B)||i(_e)})}h(s),H(()=>{rt(E,t(bt)),vt(dt,"title",`${pt??""}+/ for shortcuts`),At=Lt(ft,"",At,{display:t(d)==="raw"?"flex":"none"}),Ot=Lt(at,"",Ot,{display:t(d)==="chat"?"flex":"none"})}),Te("click",dt,()=>{n(W,!t(W))}),S(e,s)};M(jt,e=>{t(O)?e(oe):t($)?e(ie,1):t(a)&&e(le,2)})}var qt=c(jt,2);Ye(qt,{get open(){return t(W)},onClose:()=>{n(W,!1)}});var ce=c(qt,2);ze(ce,{get commands(){return t(Qt)},onClose:()=>{n(ct,!1)},get open(){return t(ct)},set open(e){n(ct,e,!0)}}),S(g,Tt),it(),T()}xe(["click"]);export{xn as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"
|
|
1
|
+
{"version":"1776393329149"}
|
|
Binary file
|
|
Binary file
|
|
@@ -15,9 +15,9 @@ const index = 0;
|
|
|
15
15
|
let component_cache;
|
|
16
16
|
const component = async () => component_cache ??= (await import('./_layout.svelte-DllETxmJ.js')).default;
|
|
17
17
|
const server_id = "src/routes/+layout.server.ts";
|
|
18
|
-
const imports = ["_app/immutable/nodes/0.
|
|
18
|
+
const imports = ["_app/immutable/nodes/0.DR-BBF5r.js","_app/immutable/chunks/DVl0sebP.js","_app/immutable/chunks/CJFjKwJ7.js","_app/immutable/chunks/DDiOVAd8.js","_app/immutable/chunks/YKoRJzXZ.js","_app/immutable/chunks/Dc_Gg2H6.js","_app/immutable/chunks/CmczWE_d.js","_app/immutable/chunks/B7X-vhXI.js"];
|
|
19
19
|
const stylesheets = ["_app/immutable/assets/markdown.Dc-OSJWY.css","_app/immutable/assets/0.BhZOCxO4.css"];
|
|
20
20
|
const fonts = [];
|
|
21
21
|
|
|
22
22
|
export { component, fonts, imports, index, _layout_server_ts as server, server_id, stylesheets };
|
|
23
|
-
//# sourceMappingURL=0-
|
|
23
|
+
//# sourceMappingURL=0-DC2VLooL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"0-
|
|
1
|
+
{"version":3,"file":"0-DC2VLooL.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_layout.server.ts.js","../../../.svelte-kit/adapter-node/nodes/0.js"],"sourcesContent":["import { b as private_env } from \"../../chunks/shared-server.js\";\nimport { g as getProviderAvailability } from \"../../chunks/providers.js\";\nconst load = () => ({\n aiProviders: getProviderAvailability(private_env),\n neurolinkProvider: private_env.NEUROLINK_PROVIDER ?? \"\"\n});\nexport {\n load\n};\n","import * as server from '../entries/pages/_layout.server.ts.js';\n\nexport const index = 0;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/+layout.server.ts\";\nexport const imports = [\"_app/immutable/nodes/0.DR-BBF5r.js\",\"_app/immutable/chunks/DVl0sebP.js\",\"_app/immutable/chunks/CJFjKwJ7.js\",\"_app/immutable/chunks/DDiOVAd8.js\",\"_app/immutable/chunks/YKoRJzXZ.js\",\"_app/immutable/chunks/Dc_Gg2H6.js\",\"_app/immutable/chunks/CmczWE_d.js\",\"_app/immutable/chunks/B7X-vhXI.js\"];\nexport const stylesheets = [\"_app/immutable/assets/markdown.Dc-OSJWY.css\",\"_app/immutable/assets/0.BhZOCxO4.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;;AAEA,MAAM,IAAI,GAAG,OAAO;AACpB,EAAE,WAAW,EAAE,uBAAuB,CAAC,WAAW,CAAC;AACnD,EAAE,iBAAiB,EAAE,WAAW,CAAC,kBAAkB,IAAI;AACvD,CAAC,CAAC;;;;;;;ACHU,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,8BAAoC,CAAC,EAAE;AAElG,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5S,MAAC,WAAW,GAAG,CAAC,6CAA6C,CAAC,sCAAsC;AACpG,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const index = 1;
|
|
2
2
|
let component_cache;
|
|
3
3
|
const component = async () => component_cache ??= (await import('./_error.svelte-DkIwmECt.js')).default;
|
|
4
|
-
const imports = ["_app/immutable/nodes/1.
|
|
4
|
+
const imports = ["_app/immutable/nodes/1.CNm6rAwf.js","_app/immutable/chunks/DVl0sebP.js","_app/immutable/chunks/CJFjKwJ7.js","_app/immutable/chunks/BfJ-f-Tu.js","_app/immutable/chunks/CsgHjHGZ.js","_app/immutable/chunks/YKoRJzXZ.js","_app/immutable/chunks/Dc_Gg2H6.js"];
|
|
5
5
|
const stylesheets = ["_app/immutable/assets/1.BYutk3aU.css"];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=1-
|
|
9
|
+
//# sourceMappingURL=1-XJaf8Jvf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1-
|
|
1
|
+
{"version":3,"file":"1-XJaf8Jvf.js","sources":["../../../.svelte-kit/adapter-node/nodes/1.js"],"sourcesContent":["\n\nexport const index = 1;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_error.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/1.CNm6rAwf.js\",\"_app/immutable/chunks/DVl0sebP.js\",\"_app/immutable/chunks/CJFjKwJ7.js\",\"_app/immutable/chunks/BfJ-f-Tu.js\",\"_app/immutable/chunks/CsgHjHGZ.js\",\"_app/immutable/chunks/YKoRJzXZ.js\",\"_app/immutable/chunks/Dc_Gg2H6.js\"];\nexport const stylesheets = [\"_app/immutable/assets/1.BYutk3aU.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,6BAAmC,CAAC,EAAE;AACjG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACxQ,MAAC,WAAW,GAAG,CAAC,sCAAsC;AACtD,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -13,9 +13,9 @@ const index = 2;
|
|
|
13
13
|
let component_cache;
|
|
14
14
|
const component = async () => component_cache ??= (await import('./_page.svelte-DDSzYLUs.js')).default;
|
|
15
15
|
const server_id = "src/routes/+page.server.ts";
|
|
16
|
-
const imports = ["_app/immutable/nodes/2.
|
|
16
|
+
const imports = ["_app/immutable/nodes/2.B08usYzr.js","_app/immutable/chunks/DVl0sebP.js","_app/immutable/chunks/CJFjKwJ7.js","_app/immutable/chunks/BfJ-f-Tu.js","_app/immutable/chunks/CNH2HlKj.js","_app/immutable/chunks/DDiOVAd8.js","_app/immutable/chunks/1mEchsPO.js","_app/immutable/chunks/B7X-vhXI.js","_app/immutable/chunks/CsgHjHGZ.js","_app/immutable/chunks/YKoRJzXZ.js","_app/immutable/chunks/CtrCjGZT.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/CaiJSUi3.js","_app/immutable/chunks/CmczWE_d.js","_app/immutable/chunks/BLszSzTT.js","_app/immutable/chunks/CGMJxf7r.js","_app/immutable/chunks/BRkqKgVG.js","_app/immutable/chunks/pRcLbE0d.js"];
|
|
17
17
|
const stylesheets = ["_app/immutable/assets/markdown.Dc-OSJWY.css","_app/immutable/assets/Phone.FQEfwCX2.css","_app/immutable/assets/2.Dk9NfqnS.css"];
|
|
18
18
|
const fonts = [];
|
|
19
19
|
|
|
20
20
|
export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
|
|
21
|
-
//# sourceMappingURL=2-
|
|
21
|
+
//# sourceMappingURL=2-D4Cx-1QL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"2-
|
|
1
|
+
{"version":3,"file":"2-D4Cx-1QL.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/2.js"],"sourcesContent":["import { b as private_env } from \"../../chunks/shared-server.js\";\nconst load = () => ({\n googleAiConfigured: Boolean(private_env.GOOGLE_AI_API_KEY?.trim())\n});\nexport {\n load\n};\n","import * as server from '../entries/pages/_page.server.ts.js';\n\nexport const index = 2;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/2.B08usYzr.js\",\"_app/immutable/chunks/DVl0sebP.js\",\"_app/immutable/chunks/CJFjKwJ7.js\",\"_app/immutable/chunks/BfJ-f-Tu.js\",\"_app/immutable/chunks/CNH2HlKj.js\",\"_app/immutable/chunks/DDiOVAd8.js\",\"_app/immutable/chunks/1mEchsPO.js\",\"_app/immutable/chunks/B7X-vhXI.js\",\"_app/immutable/chunks/CsgHjHGZ.js\",\"_app/immutable/chunks/YKoRJzXZ.js\",\"_app/immutable/chunks/CtrCjGZT.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/CaiJSUi3.js\",\"_app/immutable/chunks/CmczWE_d.js\",\"_app/immutable/chunks/BLszSzTT.js\",\"_app/immutable/chunks/CGMJxf7r.js\",\"_app/immutable/chunks/BRkqKgVG.js\",\"_app/immutable/chunks/pRcLbE0d.js\"];\nexport const stylesheets = [\"_app/immutable/assets/markdown.Dc-OSJWY.css\",\"_app/immutable/assets/Phone.FQEfwCX2.css\",\"_app/immutable/assets/2.Dk9NfqnS.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;AACA,MAAM,IAAI,GAAG,OAAO;AACpB,EAAE,kBAAkB,EAAE,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,EAAE;AACnE,CAAC,CAAC;;;;;;;ACDU,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAkC,CAAC,EAAE;AAEhG,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACppB,MAAC,WAAW,GAAG,CAAC,6CAA6C,CAAC,0CAA0C,CAAC,sCAAsC;AAC/I,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -13,9 +13,9 @@ const index = 3;
|
|
|
13
13
|
let component_cache;
|
|
14
14
|
const component = async () => component_cache ??= (await import('./_page.svelte-JIkgFUFf.js')).default;
|
|
15
15
|
const server_id = "src/routes/activity/+page.server.ts";
|
|
16
|
-
const imports = ["_app/immutable/nodes/3.
|
|
16
|
+
const imports = ["_app/immutable/nodes/3.CsY6J5HS.js","_app/immutable/chunks/DVl0sebP.js","_app/immutable/chunks/CJFjKwJ7.js","_app/immutable/chunks/BfJ-f-Tu.js","_app/immutable/chunks/CsgHjHGZ.js","_app/immutable/chunks/YKoRJzXZ.js","_app/immutable/chunks/CNH2HlKj.js","_app/immutable/chunks/DDiOVAd8.js","_app/immutable/chunks/1mEchsPO.js","_app/immutable/chunks/B7X-vhXI.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/BLszSzTT.js","_app/immutable/chunks/CGMJxf7r.js","_app/immutable/chunks/BRkqKgVG.js","_app/immutable/chunks/pRcLbE0d.js"];
|
|
17
17
|
const stylesheets = ["_app/immutable/assets/markdown.Dc-OSJWY.css","_app/immutable/assets/Phone.FQEfwCX2.css","_app/immutable/assets/3.DHxQoulp.css"];
|
|
18
18
|
const fonts = [];
|
|
19
19
|
|
|
20
20
|
export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
|
|
21
|
-
//# sourceMappingURL=3-
|
|
21
|
+
//# sourceMappingURL=3-CVhIEP-u.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3-
|
|
1
|
+
{"version":3,"file":"3-CVhIEP-u.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/activity/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/3.js"],"sourcesContent":["import { b as private_env } from \"../../../chunks/shared-server.js\";\nconst load = () => ({\n googleAiConfigured: Boolean(private_env.GOOGLE_AI_API_KEY?.trim())\n});\nexport {\n load\n};\n","import * as server from '../entries/pages/activity/_page.server.ts.js';\n\nexport const index = 3;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/activity/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/activity/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/3.CsY6J5HS.js\",\"_app/immutable/chunks/DVl0sebP.js\",\"_app/immutable/chunks/CJFjKwJ7.js\",\"_app/immutable/chunks/BfJ-f-Tu.js\",\"_app/immutable/chunks/CsgHjHGZ.js\",\"_app/immutable/chunks/YKoRJzXZ.js\",\"_app/immutable/chunks/CNH2HlKj.js\",\"_app/immutable/chunks/DDiOVAd8.js\",\"_app/immutable/chunks/1mEchsPO.js\",\"_app/immutable/chunks/B7X-vhXI.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/BLszSzTT.js\",\"_app/immutable/chunks/CGMJxf7r.js\",\"_app/immutable/chunks/BRkqKgVG.js\",\"_app/immutable/chunks/pRcLbE0d.js\"];\nexport const stylesheets = [\"_app/immutable/assets/markdown.Dc-OSJWY.css\",\"_app/immutable/assets/Phone.FQEfwCX2.css\",\"_app/immutable/assets/3.DHxQoulp.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":";;AACA,MAAM,IAAI,GAAG,OAAO;AACpB,EAAE,kBAAkB,EAAE,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,EAAE;AACnE,CAAC,CAAC;;;;;;;ACDU,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA2C,CAAC,EAAE;AAEzG,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACxiB,MAAC,WAAW,GAAG,CAAC,6CAA6C,CAAC,0CAA0C,CAAC,sCAAsC;AAC/I,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const index = 6;
|
|
2
2
|
let component_cache;
|
|
3
3
|
const component = async () => component_cache ??= (await import('./_page.svelte-fcX09N4d.js')).default;
|
|
4
|
-
const imports = ["_app/immutable/nodes/6.
|
|
4
|
+
const imports = ["_app/immutable/nodes/6.CbQQ3FtZ.js","_app/immutable/chunks/DVl0sebP.js","_app/immutable/chunks/CJFjKwJ7.js","_app/immutable/chunks/BfJ-f-Tu.js","_app/immutable/chunks/CNH2HlKj.js","_app/immutable/chunks/DDiOVAd8.js","_app/immutable/chunks/1mEchsPO.js","_app/immutable/chunks/B7X-vhXI.js","_app/immutable/chunks/CsgHjHGZ.js","_app/immutable/chunks/YKoRJzXZ.js","_app/immutable/chunks/DlnAjkg1.js","_app/immutable/chunks/CtrCjGZT.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/CaiJSUi3.js","_app/immutable/chunks/CmczWE_d.js","_app/immutable/chunks/BLszSzTT.js"];
|
|
5
5
|
const stylesheets = ["_app/immutable/assets/markdown.Dc-OSJWY.css","_app/immutable/assets/Phone.FQEfwCX2.css","_app/immutable/assets/6.BFUut--w.css"];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=6-
|
|
9
|
+
//# sourceMappingURL=6-QFSbzRMP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"6-
|
|
1
|
+
{"version":3,"file":"6-QFSbzRMP.js","sources":["../../../.svelte-kit/adapter-node/nodes/6.js"],"sourcesContent":["\n\nexport const index = 6;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/project/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/6.CbQQ3FtZ.js\",\"_app/immutable/chunks/DVl0sebP.js\",\"_app/immutable/chunks/CJFjKwJ7.js\",\"_app/immutable/chunks/BfJ-f-Tu.js\",\"_app/immutable/chunks/CNH2HlKj.js\",\"_app/immutable/chunks/DDiOVAd8.js\",\"_app/immutable/chunks/1mEchsPO.js\",\"_app/immutable/chunks/B7X-vhXI.js\",\"_app/immutable/chunks/CsgHjHGZ.js\",\"_app/immutable/chunks/YKoRJzXZ.js\",\"_app/immutable/chunks/DlnAjkg1.js\",\"_app/immutable/chunks/CtrCjGZT.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/CaiJSUi3.js\",\"_app/immutable/chunks/CmczWE_d.js\",\"_app/immutable/chunks/BLszSzTT.js\"];\nexport const stylesheets = [\"_app/immutable/assets/markdown.Dc-OSJWY.css\",\"_app/immutable/assets/Phone.FQEfwCX2.css\",\"_app/immutable/assets/6.BFUut--w.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA0C,CAAC,EAAE;AACxG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5kB,MAAC,WAAW,GAAG,CAAC,6CAA6C,CAAC,0CAA0C,CAAC,sCAAsC;AAC/I,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const index = 7;
|
|
2
2
|
let component_cache;
|
|
3
3
|
const component = async () => component_cache ??= (await import('./_page.svelte-CpL3R-VI.js')).default;
|
|
4
|
-
const imports = ["_app/immutable/nodes/7.
|
|
4
|
+
const imports = ["_app/immutable/nodes/7.CCKgiNNk.js","_app/immutable/chunks/DVl0sebP.js","_app/immutable/chunks/CJFjKwJ7.js","_app/immutable/chunks/BfJ-f-Tu.js","_app/immutable/chunks/CsgHjHGZ.js","_app/immutable/chunks/CNH2HlKj.js","_app/immutable/chunks/DDiOVAd8.js","_app/immutable/chunks/1mEchsPO.js","_app/immutable/chunks/B7X-vhXI.js","_app/immutable/chunks/DlnAjkg1.js","_app/immutable/chunks/YKoRJzXZ.js","_app/immutable/chunks/CtrCjGZT.js","_app/immutable/chunks/CVtJ6yRM.js","_app/immutable/chunks/CGMJxf7r.js"];
|
|
5
5
|
const stylesheets = ["_app/immutable/assets/markdown.Dc-OSJWY.css","_app/immutable/assets/Phone.FQEfwCX2.css","_app/immutable/assets/ChatView.CwWbzIL-.css","_app/immutable/assets/7.BTOx7yt7.css"];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=7-
|
|
9
|
+
//# sourceMappingURL=7-CZ_YGjMV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"7-
|
|
1
|
+
{"version":3,"file":"7-CZ_YGjMV.js","sources":["../../../.svelte-kit/adapter-node/nodes/7.js"],"sourcesContent":["\n\nexport const index = 7;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/session/_id_/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/7.CCKgiNNk.js\",\"_app/immutable/chunks/DVl0sebP.js\",\"_app/immutable/chunks/CJFjKwJ7.js\",\"_app/immutable/chunks/BfJ-f-Tu.js\",\"_app/immutable/chunks/CsgHjHGZ.js\",\"_app/immutable/chunks/CNH2HlKj.js\",\"_app/immutable/chunks/DDiOVAd8.js\",\"_app/immutable/chunks/1mEchsPO.js\",\"_app/immutable/chunks/B7X-vhXI.js\",\"_app/immutable/chunks/DlnAjkg1.js\",\"_app/immutable/chunks/YKoRJzXZ.js\",\"_app/immutable/chunks/CtrCjGZT.js\",\"_app/immutable/chunks/CVtJ6yRM.js\",\"_app/immutable/chunks/CGMJxf7r.js\"];\nexport const stylesheets = [\"_app/immutable/assets/markdown.Dc-OSJWY.css\",\"_app/immutable/assets/Phone.FQEfwCX2.css\",\"_app/immutable/assets/ChatView.CwWbzIL-.css\",\"_app/immutable/assets/7.BTOx7yt7.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA+C,CAAC,EAAE;AAC7G,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACpgB,MAAC,WAAW,GAAG,CAAC,6CAA6C,CAAC,0CAA0C,CAAC,6CAA6C,CAAC,sCAAsC;AAC7L,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const index = 8;
|
|
2
2
|
let component_cache;
|
|
3
3
|
const component = async () => component_cache ??= (await import('./_page.svelte-Co5sF7W-.js')).default;
|
|
4
|
-
const imports = ["_app/immutable/nodes/8.
|
|
4
|
+
const imports = ["_app/immutable/nodes/8.C7AaheUD.js","_app/immutable/chunks/DVl0sebP.js","_app/immutable/chunks/CJFjKwJ7.js","_app/immutable/chunks/BfJ-f-Tu.js","_app/immutable/chunks/CNH2HlKj.js","_app/immutable/chunks/DDiOVAd8.js","_app/immutable/chunks/1mEchsPO.js","_app/immutable/chunks/B7X-vhXI.js","_app/immutable/chunks/CsgHjHGZ.js","_app/immutable/chunks/YKoRJzXZ.js","_app/immutable/chunks/CtrCjGZT.js","_app/immutable/chunks/gQJcRhou.js","_app/immutable/chunks/CaiJSUi3.js","_app/immutable/chunks/CmczWE_d.js","_app/immutable/chunks/BLszSzTT.js"];
|
|
5
5
|
const stylesheets = ["_app/immutable/assets/markdown.Dc-OSJWY.css","_app/immutable/assets/Phone.FQEfwCX2.css","_app/immutable/assets/8.eZGZN-BF.css"];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=8-
|
|
9
|
+
//# sourceMappingURL=8-Xe2Rugb4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"8-
|
|
1
|
+
{"version":3,"file":"8-Xe2Rugb4.js","sources":["../../../.svelte-kit/adapter-node/nodes/8.js"],"sourcesContent":["\n\nexport const index = 8;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/terminals/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/8.C7AaheUD.js\",\"_app/immutable/chunks/DVl0sebP.js\",\"_app/immutable/chunks/CJFjKwJ7.js\",\"_app/immutable/chunks/BfJ-f-Tu.js\",\"_app/immutable/chunks/CNH2HlKj.js\",\"_app/immutable/chunks/DDiOVAd8.js\",\"_app/immutable/chunks/1mEchsPO.js\",\"_app/immutable/chunks/B7X-vhXI.js\",\"_app/immutable/chunks/CsgHjHGZ.js\",\"_app/immutable/chunks/YKoRJzXZ.js\",\"_app/immutable/chunks/CtrCjGZT.js\",\"_app/immutable/chunks/gQJcRhou.js\",\"_app/immutable/chunks/CaiJSUi3.js\",\"_app/immutable/chunks/CmczWE_d.js\",\"_app/immutable/chunks/BLszSzTT.js\"];\nexport const stylesheets = [\"_app/immutable/assets/markdown.Dc-OSJWY.css\",\"_app/immutable/assets/Phone.FQEfwCX2.css\",\"_app/immutable/assets/8.eZGZN-BF.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA4C,CAAC,EAAE;AAC1G,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACxiB,MAAC,WAAW,GAAG,CAAC,6CAA6C,CAAC,0CAA0C,CAAC,sCAAsC;AAC/I,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const index = 9;
|
|
2
2
|
let component_cache;
|
|
3
3
|
const component = async () => component_cache ??= (await import('./_page.svelte-Y9-O5a5w.js')).default;
|
|
4
|
-
const imports = ["_app/immutable/nodes/9.
|
|
4
|
+
const imports = ["_app/immutable/nodes/9.DfL9kMC4.js","_app/immutable/chunks/PPVm8Dsz.js","_app/immutable/chunks/DVl0sebP.js","_app/immutable/chunks/CJFjKwJ7.js","_app/immutable/chunks/BfJ-f-Tu.js","_app/immutable/chunks/CsgHjHGZ.js","_app/immutable/chunks/CNH2HlKj.js","_app/immutable/chunks/DDiOVAd8.js","_app/immutable/chunks/1mEchsPO.js","_app/immutable/chunks/B7X-vhXI.js","_app/immutable/chunks/YKoRJzXZ.js","_app/immutable/chunks/Dc_Gg2H6.js","_app/immutable/chunks/CaiJSUi3.js","_app/immutable/chunks/CmczWE_d.js","_app/immutable/chunks/CVtJ6yRM.js","_app/immutable/chunks/CGMJxf7r.js"];
|
|
5
5
|
const stylesheets = ["_app/immutable/assets/markdown.Dc-OSJWY.css","_app/immutable/assets/Phone.FQEfwCX2.css","_app/immutable/assets/ChatView.CwWbzIL-.css","_app/immutable/assets/9.DwS5ZHBh.css"];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=9-
|
|
9
|
+
//# sourceMappingURL=9-IwHpC4SO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"9-
|
|
1
|
+
{"version":3,"file":"9-IwHpC4SO.js","sources":["../../../.svelte-kit/adapter-node/nodes/9.js"],"sourcesContent":["\n\nexport const index = 9;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/terminals/_id_/_page.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/9.DfL9kMC4.js\",\"_app/immutable/chunks/PPVm8Dsz.js\",\"_app/immutable/chunks/DVl0sebP.js\",\"_app/immutable/chunks/CJFjKwJ7.js\",\"_app/immutable/chunks/BfJ-f-Tu.js\",\"_app/immutable/chunks/CsgHjHGZ.js\",\"_app/immutable/chunks/CNH2HlKj.js\",\"_app/immutable/chunks/DDiOVAd8.js\",\"_app/immutable/chunks/1mEchsPO.js\",\"_app/immutable/chunks/B7X-vhXI.js\",\"_app/immutable/chunks/YKoRJzXZ.js\",\"_app/immutable/chunks/Dc_Gg2H6.js\",\"_app/immutable/chunks/CaiJSUi3.js\",\"_app/immutable/chunks/CmczWE_d.js\",\"_app/immutable/chunks/CVtJ6yRM.js\",\"_app/immutable/chunks/CGMJxf7r.js\"];\nexport const stylesheets = [\"_app/immutable/assets/markdown.Dc-OSJWY.css\",\"_app/immutable/assets/Phone.FQEfwCX2.css\",\"_app/immutable/assets/ChatView.CwWbzIL-.css\",\"_app/immutable/assets/9.DwS5ZHBh.css\"];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAiD,CAAC,EAAE;AAC/G,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5kB,MAAC,WAAW,GAAG,CAAC,6CAA6C,CAAC,0CAA0C,CAAC,6CAA6C,CAAC,sCAAsC;AAC7L,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -295,7 +295,7 @@ function listProjectsWithSessions() {
|
|
|
295
295
|
continue;
|
|
296
296
|
}
|
|
297
297
|
sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());
|
|
298
|
-
const realPath = sessions.find((s) => s.projectPath && !s.projectPath.includes(".claude/projects"))?.projectPath || readCwdFromProjectDir(projectDir, sessions) || (dir.startsWith("-") ? dir.replace(/-/g, "/") : `/${dir.replace(/-/g, "/")}`);
|
|
298
|
+
const realPath = sessions.find((s) => s.projectPath && !s.projectPath.includes(".claude/projects"))?.projectPath || readCwdFromProjectDir(projectDir, sessions) || decodeClaudeProjectDir(dir) || (dir.startsWith("-") ? dir.replace(/-/g, "/") : `/${dir.replace(/-/g, "/")}`);
|
|
299
299
|
const pathSegments = realPath.split("/").filter(Boolean);
|
|
300
300
|
const projectName = pathSegments.slice(-2).join("/");
|
|
301
301
|
projects.push({
|
|
@@ -311,6 +311,9 @@ function listProjectsWithSessions() {
|
|
|
311
311
|
(a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()
|
|
312
312
|
);
|
|
313
313
|
}
|
|
314
|
+
function bytesReadEnded(chunk) {
|
|
315
|
+
return chunk.length > 0 && chunk.charCodeAt(chunk.length - 1) === 10;
|
|
316
|
+
}
|
|
314
317
|
function cleanTitle(prompt) {
|
|
315
318
|
let cleaned = prompt.replace(/<command-message>.*?<\/command-message>/gs, "").replace(/<command-name>.*?<\/command-name>/gs, "").replace(/<command-args>.*?<\/command-args>/gs, "").replace(/<local-command-caveat>.*?<\/local-command-caveat>/gs, "").replace(/<local-command-stdout>.*?<\/local-command-stdout>/gs, "").replace(/<system-reminder>.*?<\/system-reminder>/gs, "").replace(/<task-notification>.*?<\/task-notification>/gs, "");
|
|
316
319
|
let prev = "";
|
|
@@ -331,6 +334,37 @@ function cleanTitle(prompt) {
|
|
|
331
334
|
}
|
|
332
335
|
return firstLine;
|
|
333
336
|
}
|
|
337
|
+
function decodeClaudeProjectDir(encoded) {
|
|
338
|
+
if (!encoded.startsWith("-")) {
|
|
339
|
+
return null;
|
|
340
|
+
}
|
|
341
|
+
const parts = encoded.slice(1).split("-");
|
|
342
|
+
if (parts.length === 0) {
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
345
|
+
let currentPath = "/";
|
|
346
|
+
let i = 0;
|
|
347
|
+
while (i < parts.length) {
|
|
348
|
+
let matchedTo = -1;
|
|
349
|
+
for (let j = parts.length; j > i; j--) {
|
|
350
|
+
const segment = parts.slice(i, j).join("-");
|
|
351
|
+
const candidate = path.join(currentPath, segment);
|
|
352
|
+
try {
|
|
353
|
+
if (fs.statSync(candidate).isDirectory()) {
|
|
354
|
+
matchedTo = j;
|
|
355
|
+
break;
|
|
356
|
+
}
|
|
357
|
+
} catch {
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
if (matchedTo === -1) {
|
|
361
|
+
return null;
|
|
362
|
+
}
|
|
363
|
+
currentPath = path.join(currentPath, parts.slice(i, matchedTo).join("-"));
|
|
364
|
+
i = matchedTo;
|
|
365
|
+
}
|
|
366
|
+
return currentPath;
|
|
367
|
+
}
|
|
334
368
|
function getProjectDir() {
|
|
335
369
|
const projectPath = process.cwd();
|
|
336
370
|
const encoded = projectPath.replace(/\//g, "-");
|
|
@@ -418,6 +452,7 @@ function listSessionsForProject(projectDir) {
|
|
|
418
452
|
}
|
|
419
453
|
}
|
|
420
454
|
function readCwdFromProjectDir(projectDir, sessions) {
|
|
455
|
+
const READ_BYTES = 65536;
|
|
421
456
|
for (const session of sessions) {
|
|
422
457
|
try {
|
|
423
458
|
const filePath = path.join(projectDir, `${session.id}.jsonl`);
|
|
@@ -425,24 +460,27 @@ function readCwdFromProjectDir(projectDir, sessions) {
|
|
|
425
460
|
continue;
|
|
426
461
|
}
|
|
427
462
|
const fd = fs.openSync(filePath, "r");
|
|
428
|
-
let
|
|
463
|
+
let chunk;
|
|
429
464
|
try {
|
|
430
|
-
const buf = Buffer.alloc(
|
|
431
|
-
const bytesRead = fs.readSync(fd, buf, 0,
|
|
432
|
-
|
|
465
|
+
const buf = Buffer.alloc(READ_BYTES);
|
|
466
|
+
const bytesRead = fs.readSync(fd, buf, 0, READ_BYTES, 0);
|
|
467
|
+
chunk = buf.toString("utf-8", 0, bytesRead);
|
|
433
468
|
} finally {
|
|
434
469
|
fs.closeSync(fd);
|
|
435
470
|
}
|
|
436
|
-
const
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
471
|
+
const lines = chunk.split("\n");
|
|
472
|
+
const completeLines = bytesReadEnded(chunk) ? lines : lines.slice(0, -1);
|
|
473
|
+
for (const line of completeLines) {
|
|
474
|
+
if (!line.trim()) {
|
|
475
|
+
continue;
|
|
476
|
+
}
|
|
477
|
+
try {
|
|
478
|
+
const entry = JSON.parse(line);
|
|
479
|
+
if (typeof entry.cwd === "string" && entry.cwd) {
|
|
480
|
+
return entry.cwd;
|
|
481
|
+
}
|
|
482
|
+
} catch {
|
|
444
483
|
}
|
|
445
|
-
} catch {
|
|
446
484
|
}
|
|
447
485
|
} catch {
|
|
448
486
|
}
|
|
@@ -722,4 +760,4 @@ const GET = ({ request, url }) => {
|
|
|
722
760
|
};
|
|
723
761
|
|
|
724
762
|
export { GET };
|
|
725
|
-
//# sourceMappingURL=_server.ts-
|
|
763
|
+
//# sourceMappingURL=_server.ts-Ds_SUGC3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_server.ts-Ds_SUGC3.js","sources":["../../../.svelte-kit/adapter-node/entries/endpoints/api/sessions/_server.ts.js"],"sourcesContent":["import { v as validateAuth } from \"../../../../chunks/auth.js\";\nimport * as crypto from \"crypto\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport Database from \"better-sqlite3\";\nimport { r as resolveOpenCodeDbPath } from \"../../../../chunks/opencode-db-path.js\";\nimport { json } from \"@sveltejs/kit\";\nfunction extractToolResultText(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (Array.isArray(content)) {\n return content.filter((c) => isRecord(c) && c.type === \"text\").map((c) => {\n const text = c.text;\n return typeof text === \"string\" ? text : \"\";\n }).join(\"\\n\");\n }\n return \"\";\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction str(obj, key) {\n const v = obj[key];\n return typeof v === \"string\" ? v : \"\";\n}\nfunction toContentBlocks(raw) {\n if (Array.isArray(raw)) {\n return raw.filter((item) => isRecord(item));\n }\n if (isRecord(raw)) {\n return [raw];\n }\n return [];\n}\nconst SKIP_EVENT_TYPES = /* @__PURE__ */ new Set([\n \"config\",\n \"heartbeat\",\n \"metadata\",\n \"result\",\n \"summary\",\n \"system\"\n]);\nfunction parseAssistantBlock(block) {\n if (!block || typeof block !== \"object\") {\n return null;\n }\n switch (block.type) {\n case \"text\":\n return { content: block.text || \"\", type: \"text\" };\n case \"thinking\":\n return { content: block.thinking || \"\", type: \"thinking\" };\n case \"tool_use\":\n return {\n id: block.id || \"\",\n input: block.input || {},\n toolName: block.name || \"Unknown\",\n type: \"tool_use\"\n };\n default:\n return null;\n }\n}\nfunction parseJsonlLine(line, assistantTurns, messageIndex) {\n const messages = [];\n const assistantCompleted = [];\n const entry = JSON.parse(line);\n if (!isRecord(entry)) {\n return { assistantCompleted, messages };\n }\n const entryType = str(entry, \"type\");\n if (SKIP_EVENT_TYPES.has(entryType)) {\n return { assistantCompleted, messages };\n }\n const entryTimestamp = str(entry, \"timestamp\");\n const entryUuid = str(entry, \"uuid\");\n if (entryType === \"user\") {\n const msg = isRecord(entry.message) ? entry.message : null;\n if (!msg?.content) {\n return { assistantCompleted, messages };\n }\n const parts = [];\n const blocks = toContentBlocks(msg.content);\n if (Array.isArray(msg.content)) {\n for (const item of msg.content) {\n if (typeof item === \"string\") {\n parts.push({ content: item, type: \"text\" });\n }\n }\n } else if (typeof msg.content === \"string\") {\n parts.push({ content: msg.content, type: \"text\" });\n }\n for (const block of blocks) {\n const blockType = str(block, \"type\");\n if (!blockType) {\n continue;\n }\n if (blockType === \"text\") {\n parts.push({ content: str(block, \"text\"), type: \"text\" });\n } else if (blockType === \"tool_result\") {\n let output = extractToolResultText(block.content);\n const toolUseResult = isRecord(entry.toolUseResult) ? entry.toolUseResult : null;\n if (toolUseResult?.content !== void 0) {\n output = extractToolResultText(toolUseResult.content);\n }\n parts.push({\n isError: typeof block.is_error === \"boolean\" ? block.is_error : false,\n output: output.slice(0, 2e3),\n toolUseId: str(block, \"tool_use_id\"),\n type: \"tool_result\"\n });\n }\n }\n if (parts.length > 0 && parts.some((p) => p.type === \"text\")) {\n messages.push({\n id: entryUuid || `user-${messageIndex}`,\n parts: parts.filter((p) => p.type === \"text\"),\n role: \"user\",\n timestamp: entryTimestamp\n });\n }\n const toolResults = parts.filter((p) => p.type === \"tool_result\");\n if (toolResults.length > 0) {\n messages.push({\n id: `tool-result-${entryUuid || messageIndex}`,\n parts: toolResults,\n role: \"system\",\n timestamp: entryTimestamp\n });\n }\n } else if (entryType === \"assistant\") {\n const msg = isRecord(entry.message) ? entry.message : null;\n if (!msg?.content) {\n return { assistantCompleted, messages };\n }\n const blocks = toContentBlocks(msg.content);\n const msgId = str(msg, \"id\") || entryUuid;\n for (const block of blocks) {\n const part = parseAssistantBlock(block);\n if (!part) {\n continue;\n }\n if (!assistantTurns.has(msgId)) {\n assistantTurns.set(msgId, { parts: [], timestamp: entryTimestamp });\n }\n const turn = assistantTurns.get(msgId);\n if (turn) {\n turn.parts.push(part);\n }\n }\n if (msg.stop_reason) {\n const turn = assistantTurns.get(msgId);\n if (turn && turn.parts.length > 0) {\n assistantCompleted.push({\n id: msgId,\n parts: turn.parts,\n role: \"assistant\",\n timestamp: turn.timestamp\n });\n assistantTurns.delete(msgId);\n }\n }\n }\n return { assistantCompleted, messages };\n}\nfunction parseJsonlText(text, assistantTurns, startIndex) {\n const lines = text.split(\"\\n\").filter((line) => line.trim());\n const allMessages = [];\n let idx = startIndex;\n for (const line of lines) {\n try {\n const { assistantCompleted, messages } = parseJsonlLine(line, assistantTurns, idx);\n allMessages.push(...messages, ...assistantCompleted);\n idx++;\n } catch {\n }\n }\n return allMessages;\n}\nconst SYSTEM_TAG_PREFIXES = [\n \"<local-command\",\n \"<command-name>\",\n \"<command-message>\",\n \"<command-args>\",\n \"<local-command-stdout>\",\n \"<local-command-caveat>\",\n \"<system-reminder>\",\n \"<task-notification>\"\n];\nfunction extractContentText(content) {\n if (typeof content === \"string\") {\n return content.trim();\n }\n if (Array.isArray(content)) {\n for (const b of content) {\n if (typeof b === \"string\" && b.trim()) {\n return b.trim();\n }\n if (typeof b === \"object\" && b !== null) {\n const block = b;\n if (block.type === \"text\" && typeof block.text === \"string\" && block.text.trim()) {\n return block.text.trim();\n }\n }\n }\n }\n return \"\";\n}\nfunction findFirstUserPrompt(content) {\n for (const line of content.split(\"\\n\")) {\n if (!line.trim()) {\n continue;\n }\n try {\n const entry = JSON.parse(line);\n if (entry.type !== \"user\") {\n continue;\n }\n const msg = entry.message;\n if (!msg?.content) {\n continue;\n }\n const text = extractContentText(msg.content);\n if (!text || SYSTEM_TAG_PREFIXES.some((p) => text.startsWith(p))) {\n continue;\n }\n return text;\n } catch {\n continue;\n }\n }\n return \"\";\n}\nfunction shortHash$1(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst CLAUDE_PROJECTS_DIR = path.join(process.env.HOME || \"\", \".claude\", \"projects\");\nfunction getSessionConversation(sessionId, offset = 0, limit = 100, projectId) {\n const projectDir = projectId ? path.join(CLAUDE_PROJECTS_DIR, projectId) : getProjectDir();\n const jsonlPath = path.join(projectDir, `${sessionId}.jsonl`);\n if (!fs.existsSync(jsonlPath)) {\n return [];\n }\n try {\n const raw = fs.readFileSync(jsonlPath, \"utf-8\");\n const assistantTurns = /* @__PURE__ */ new Map();\n const messages = parseJsonlText(raw, assistantTurns, 0);\n for (const [msgId, turn] of assistantTurns) {\n if (turn.parts.length > 0) {\n messages.push({\n id: msgId,\n parts: turn.parts,\n role: \"assistant\",\n timestamp: turn.timestamp\n });\n }\n }\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && startIdx < messages.length && messages[startIdx].role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[sessions] Failed to parse session JSONL:\", error);\n return [];\n }\n}\nfunction listProjectsWithSessions() {\n if (!fs.existsSync(CLAUDE_PROJECTS_DIR)) {\n return [];\n }\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(CLAUDE_PROJECTS_DIR).filter((d) => {\n const fullPath = path.join(CLAUDE_PROJECTS_DIR, d);\n try {\n return fs.statSync(fullPath).isDirectory();\n } catch {\n return false;\n }\n });\n } catch {\n return [];\n }\n const projects = [];\n for (const dir of projectDirs) {\n const projectDir = path.join(CLAUDE_PROJECTS_DIR, dir);\n const sessions = listSessionsForProject(projectDir);\n if (sessions.length === 0) {\n continue;\n }\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const realPath = sessions.find((s) => s.projectPath && !s.projectPath.includes(\".claude/projects\"))?.projectPath || readCwdFromProjectDir(projectDir, sessions) || decodeClaudeProjectDir(dir) || (dir.startsWith(\"-\") ? dir.replace(/-/g, \"/\") : `/${dir.replace(/-/g, \"/\")}`);\n const pathSegments = realPath.split(\"/\").filter(Boolean);\n const projectName = pathSegments.slice(-2).join(\"/\");\n projects.push({\n fullPath: realPath,\n id: shortHash$1(realPath),\n lastModified: sessions[0]?.modified || \"\",\n name: projectName,\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction bytesReadEnded(chunk) {\n return chunk.length > 0 && chunk.charCodeAt(chunk.length - 1) === 10;\n}\nfunction cleanTitle(prompt) {\n let cleaned = prompt.replace(/<command-message>.*?<\\/command-message>/gs, \"\").replace(/<command-name>.*?<\\/command-name>/gs, \"\").replace(/<command-args>.*?<\\/command-args>/gs, \"\").replace(/<local-command-caveat>.*?<\\/local-command-caveat>/gs, \"\").replace(/<local-command-stdout>.*?<\\/local-command-stdout>/gs, \"\").replace(/<system-reminder>.*?<\\/system-reminder>/gs, \"\").replace(/<task-notification>.*?<\\/task-notification>/gs, \"\");\n let prev = \"\";\n while (prev !== cleaned) {\n prev = cleaned;\n cleaned = cleaned.replace(/<[^>]*>/g, \"\").replace(/</g, \"\");\n }\n cleaned = cleaned.trim();\n if (!cleaned) {\n return \"Untitled Session\";\n }\n const firstLine = cleaned.split(\"\\n\")[0].trim();\n if (!firstLine) {\n return \"Untitled Session\";\n }\n if (firstLine.length > 80) {\n return `${firstLine.slice(0, 77)}...`;\n }\n return firstLine;\n}\nfunction decodeClaudeProjectDir(encoded) {\n if (!encoded.startsWith(\"-\")) {\n return null;\n }\n const parts = encoded.slice(1).split(\"-\");\n if (parts.length === 0) {\n return null;\n }\n let currentPath = \"/\";\n let i = 0;\n while (i < parts.length) {\n let matchedTo = -1;\n for (let j = parts.length; j > i; j--) {\n const segment = parts.slice(i, j).join(\"-\");\n const candidate = path.join(currentPath, segment);\n try {\n if (fs.statSync(candidate).isDirectory()) {\n matchedTo = j;\n break;\n }\n } catch {\n }\n }\n if (matchedTo === -1) {\n return null;\n }\n currentPath = path.join(currentPath, parts.slice(i, matchedTo).join(\"-\"));\n i = matchedTo;\n }\n return currentPath;\n}\nfunction getProjectDir() {\n const projectPath = process.cwd();\n const encoded = projectPath.replace(/\\//g, \"-\");\n return path.join(CLAUDE_PROJECTS_DIR, encoded);\n}\nfunction listSessionsForProject(projectDir) {\n const indexPath = path.join(projectDir, \"sessions-index.json\");\n if (!fs.existsSync(indexPath)) {\n return [];\n }\n try {\n const raw = fs.readFileSync(indexPath, \"utf-8\");\n const index = JSON.parse(raw);\n const indexedIds = /* @__PURE__ */ new Set();\n const sessions = index.entries.filter((e) => !e.isSidechain).filter((e) => {\n const jsonlFile = path.join(projectDir, `${e.sessionId}.jsonl`);\n return fs.existsSync(jsonlFile);\n }).map((entry) => {\n indexedIds.add(entry.sessionId);\n return {\n created: entry.created || \"\",\n gitBranch: entry.gitBranch || \"\",\n id: entry.sessionId,\n messageCount: entry.messageCount || 0,\n modified: entry.modified || \"\",\n projectPath: entry.projectPath || \"\",\n source: \"claude-code\",\n summary: entry.summary || \"\",\n title: cleanTitle(entry.firstPrompt || entry.summary || \"Untitled Session\")\n };\n });\n try {\n const files = fs.readdirSync(projectDir);\n for (const file of files) {\n if (!file.endsWith(\".jsonl\")) {\n continue;\n }\n const sessionId = file.replace(\".jsonl\", \"\");\n if (indexedIds.has(sessionId)) {\n continue;\n }\n const filePath = path.join(projectDir, file);\n const stat = fs.statSync(filePath);\n let firstPrompt = \"Active Session\";\n let messageCount = 0;\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n let countPos = 0;\n while (countPos < content.length) {\n const nl = content.indexOf(\"\\n\", countPos);\n const lineEnd = nl === -1 ? content.length : nl;\n const line = content.substring(countPos, lineEnd);\n if (line.includes('\"type\":\"user\"') || line.includes('\"type\":\"assistant\"')) {\n messageCount++;\n }\n if (nl === -1) {\n break;\n }\n countPos = nl + 1;\n }\n const prompt = findFirstUserPrompt(content);\n if (prompt) {\n firstPrompt = prompt;\n }\n } catch {\n }\n sessions.push({\n created: stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: sessionId,\n messageCount,\n modified: stat.mtime.toISOString(),\n projectPath: \"\",\n source: \"claude-code\",\n summary: \"\",\n title: cleanTitle(firstPrompt)\n });\n }\n } catch {\n }\n return sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n } catch (error) {\n console.error(\"[sessions] Failed to read sessions index:\", error);\n return [];\n }\n}\nfunction readCwdFromProjectDir(projectDir, sessions) {\n const READ_BYTES = 65536;\n for (const session of sessions) {\n try {\n const filePath = path.join(projectDir, `${session.id}.jsonl`);\n if (!fs.existsSync(filePath)) {\n continue;\n }\n const fd = fs.openSync(filePath, \"r\");\n let chunk;\n try {\n const buf = Buffer.alloc(READ_BYTES);\n const bytesRead = fs.readSync(fd, buf, 0, READ_BYTES, 0);\n chunk = buf.toString(\"utf-8\", 0, bytesRead);\n } finally {\n fs.closeSync(fd);\n }\n const lines = chunk.split(\"\\n\");\n const completeLines = bytesReadEnded(chunk) ? lines : lines.slice(0, -1);\n for (const line of completeLines) {\n if (!line.trim()) {\n continue;\n }\n try {\n const entry = JSON.parse(line);\n if (typeof entry.cwd === \"string\" && entry.cwd) {\n return entry.cwd;\n }\n } catch {\n }\n }\n } catch {\n }\n }\n return \"\";\n}\nfunction shortHash(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst OPENCODE_DB_PATH = resolveOpenCodeDbPath();\nfunction getOpenCodeConversation(sessionId, offset = 0, limit = 200) {\n const db = getDb();\n if (!db) {\n return [];\n }\n try {\n const messages = db.prepare(\n `\n SELECT id, session_id, time_created, data FROM (\n SELECT id, session_id, time_created, data\n FROM message\n WHERE session_id = ?\n ORDER BY time_created DESC\n LIMIT ? OFFSET ?\n ) ORDER BY time_created ASC\n `\n ).all(sessionId, limit, offset);\n const messageIds = messages.map((m) => m.id);\n if (messageIds.length === 0) {\n return [];\n }\n const placeholders = messageIds.map(() => \"?\").join(\",\");\n const parts = db.prepare(\n `\n SELECT id, message_id, time_created, data\n FROM part\n WHERE message_id IN (${placeholders})\n ORDER BY time_created ASC\n `\n ).all(...messageIds);\n const partsByMessage = /* @__PURE__ */ new Map();\n for (const part of parts) {\n if (!partsByMessage.has(part.message_id)) {\n partsByMessage.set(part.message_id, []);\n }\n const bucket = partsByMessage.get(part.message_id);\n if (bucket) {\n bucket.push(part);\n }\n }\n const result = [];\n for (const msg of messages) {\n let msgData = {};\n try {\n msgData = JSON.parse(msg.data);\n } catch {\n }\n const role = msgData.role === \"user\" ? \"user\" : \"assistant\";\n const msgParts = partsByMessage.get(msg.id) || [];\n const convertedParts = [];\n for (const part of msgParts) {\n let partData = {};\n try {\n partData = JSON.parse(part.data);\n } catch {\n continue;\n }\n const converted = convertOpenCodePart(partData);\n if (converted) {\n convertedParts.push(converted);\n }\n }\n if (convertedParts.length > 0) {\n result.push({\n id: msg.id,\n parts: convertedParts,\n role,\n timestamp: new Date(msg.time_created).toISOString()\n });\n }\n }\n return result;\n } catch (error) {\n console.error(\"[opencode] Failed to read conversation:\", error);\n return [];\n } finally {\n db.close();\n }\n}\nfunction listOpenCodeProjects() {\n const db = getDb();\n if (!db) {\n return [];\n }\n try {\n const sessions = db.prepare(\n `\n SELECT id, directory, title, slug, time_created, time_updated, parent_id\n FROM session\n WHERE time_archived IS NULL OR time_archived = 0\n ORDER BY time_updated DESC\n `\n ).all();\n const msgCounts = db.prepare(`SELECT session_id, COUNT(*) as count FROM message GROUP BY session_id`).all();\n const msgCountMap = new Map(msgCounts.map((r) => [r.session_id, r.count]));\n const projectMap = /* @__PURE__ */ new Map();\n for (const row of sessions) {\n const dir = row.directory || \"unknown\";\n if (!projectMap.has(dir)) {\n projectMap.set(dir, []);\n }\n const sessionInfo = {\n created: new Date(row.time_created).toISOString(),\n gitBranch: \"\",\n id: row.id,\n messageCount: msgCountMap.get(row.id) || 0,\n modified: new Date(row.time_updated).toISOString(),\n projectPath: dir,\n source: \"opencode\",\n summary: \"\",\n title: row.title || row.slug || \"Untitled Session\"\n };\n const bucket = projectMap.get(dir);\n if (bucket) {\n bucket.push(sessionInfo);\n }\n }\n const projects = [];\n for (const [dir, dirSessions] of projectMap) {\n const pathSegments = dir.split(\"/\").filter(Boolean);\n const projectName = pathSegments.slice(-2).join(\"/\");\n dirSessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n projects.push({\n fullPath: dir,\n id: shortHash(dir),\n lastModified: dirSessions[0]?.modified || \"\",\n name: `${projectName} (OpenCode)`,\n sessionCount: dirSessions.length,\n sessions: dirSessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n } catch (error) {\n console.error(\"[opencode] Failed to read sessions:\", error);\n return [];\n } finally {\n db.close();\n }\n}\nfunction convertOpenCodePart(data) {\n const type = data.type;\n switch (type) {\n case \"reasoning\":\n return {\n content: data.text || \"\",\n type: \"thinking\"\n };\n case \"text\":\n return {\n content: data.text || \"\",\n type: \"text\"\n };\n case \"tool\": {\n const state = data.state;\n return {\n id: data.callID || data.id || \"\",\n input: state?.input || {},\n toolName: data.tool || \"Unknown\",\n type: \"tool_use\"\n };\n }\n default:\n return null;\n }\n}\nfunction getDb() {\n if (!fs.existsSync(OPENCODE_DB_PATH)) {\n return null;\n }\n try {\n return new Database(OPENCODE_DB_PATH, { readonly: true });\n } catch {\n return null;\n }\n}\nlet cachedProjects = null;\nlet cacheTimestamp = 0;\nconst CACHE_TTL_MS = 5e3;\nfunction getMergedProjects() {\n const now = Date.now();\n if (cachedProjects && now - cacheTimestamp < CACHE_TTL_MS) {\n return cachedProjects;\n }\n const claudeProjects = listProjectsWithSessions();\n const openCodeProjects = listOpenCodeProjects();\n const projectsByPath = /* @__PURE__ */ new Map();\n for (const p of claudeProjects) {\n projectsByPath.set(p.fullPath, { ...p });\n }\n for (const op of openCodeProjects) {\n const existing = projectsByPath.get(op.fullPath);\n if (existing) {\n existing.sessions.push(...op.sessions);\n existing.sessions.sort(\n (a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime()\n );\n existing.sessionCount = existing.sessions.length;\n existing.lastModified = existing.sessions[0]?.modified || existing.lastModified;\n existing.name = existing.name.replace(\" (OpenCode)\", \"\");\n } else {\n op.name = op.name.replace(\" (OpenCode)\", \"\");\n projectsByPath.set(op.fullPath, { ...op });\n }\n }\n cachedProjects = [...projectsByPath.values()].sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n cacheTimestamp = now;\n return cachedProjects;\n}\nconst GET = ({ request, url }) => {\n const authError = validateAuth(request);\n if (authError) {\n return authError;\n }\n if (url.searchParams.get(\"refresh\") === \"true\") {\n cachedProjects = null;\n cacheTimestamp = 0;\n }\n const sessionId = url.searchParams.get(\"id\");\n if (sessionId) {\n const projectId = url.searchParams.get(\"project\") || \"\";\n const rawOffset = parseInt(url.searchParams.get(\"offset\") || \"0\");\n const rawLimit = parseInt(url.searchParams.get(\"limit\") || \"200\");\n const offset2 = Number.isFinite(rawOffset) && rawOffset >= 0 ? rawOffset : 0;\n const limit2 = Number.isFinite(rawLimit) && rawLimit >= 1 ? Math.min(rawLimit, 500) : 200;\n const allProjects2 = getMergedProjects();\n const matchedProject = projectId ? allProjects2.find((p) => p.id === projectId) : void 0;\n const claudeProjectDir = matchedProject ? matchedProject.fullPath.replace(/\\//g, \"-\") : void 0;\n let messages = getSessionConversation(sessionId, offset2, limit2, claudeProjectDir);\n if (messages.length === 0) {\n messages = getOpenCodeConversation(sessionId, offset2, limit2);\n }\n let sessionInfo = null;\n for (const project of allProjects2) {\n if (projectId && project.id !== projectId) {\n continue;\n }\n const found = project.sessions.find((s) => s.id === sessionId);\n if (found) {\n sessionInfo = found;\n break;\n }\n }\n if (!sessionInfo) {\n return json({ error: \"Session not found\" }, { status: 404 });\n }\n return json({\n messages,\n session: sessionInfo,\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n });\n }\n const allProjects = getMergedProjects();\n const limit = parseInt(url.searchParams.get(\"limit\") || \"0\");\n const offset = parseInt(url.searchParams.get(\"offset\") || \"0\");\n const total = allProjects.length;\n const paginatedProjects = limit > 0 ? allProjects.slice(offset, offset + limit) : allProjects;\n return json({\n count: allProjects.reduce((sum, p) => sum + p.sessionCount, 0),\n projects: paginatedProjects,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n total\n });\n};\nexport {\n GET\n};\n"],"names":[],"mappings":"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"}
|