@hachej/boring-ui-cli 0.1.76 → 0.1.77

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 (69) hide show
  1. package/package.json +8 -8
  2. package/public/assets/{DebugDrawer-C0lS0jW2.js → DebugDrawer-DH80atiV.js} +1 -1
  3. package/public/assets/{DiagramPane-Cl-h1bpM.js → DiagramPane-DAgdN3YX.js} +4 -4
  4. package/public/assets/{abnfDiagram-VRR7QNED-DZiJ7DQ4.js → abnfDiagram-VRR7QNED-DHFtXKha.js} +1 -1
  5. package/public/assets/{architectureDiagram-ZJ3FMSHR-3UkFqk6U.js → architectureDiagram-ZJ3FMSHR-BqXoOqPc.js} +1 -1
  6. package/public/assets/{blockDiagram-677ZJIJ3-BScqpaWr.js → blockDiagram-677ZJIJ3-CwBNw3pP.js} +1 -1
  7. package/public/assets/{c4Diagram-LMCZKHZV-CSu7UHBJ.js → c4Diagram-LMCZKHZV-DbzngMZS.js} +1 -1
  8. package/public/assets/channel-C6WZXm7Y.js +1 -0
  9. package/public/assets/{chunk-32BRIVSS-Dk99893R.js → chunk-32BRIVSS-CJKug8ts.js} +1 -1
  10. package/public/assets/{chunk-C7G6YPKG-Dz3QqHVe.js → chunk-C7G6YPKG-BFN4wniS.js} +1 -1
  11. package/public/assets/{chunk-EX3LRPZG-HPqzH6OK.js → chunk-EX3LRPZG-D_T6tXSz.js} +1 -1
  12. package/public/assets/{chunk-HOUHSVGY-5EM0gSZC.js → chunk-HOUHSVGY-OsF2bElz.js} +1 -1
  13. package/public/assets/{chunk-ICXQ74PX-C3MgA4Aa.js → chunk-ICXQ74PX-E0PPsDNl.js} +1 -1
  14. package/public/assets/{chunk-MOJQB5TN-DOce84D9.js → chunk-MOJQB5TN-CP_dQviu.js} +1 -1
  15. package/public/assets/{chunk-OGEWGWER-CsnUg3tP.js → chunk-OGEWGWER-B_ShcHCB.js} +1 -1
  16. package/public/assets/{chunk-PUDLZKDR-BsrC5eO8.js → chunk-PUDLZKDR-DCfWKUqx.js} +1 -1
  17. package/public/assets/{chunk-Q4XR5HBZ-BNGfqO_m.js → chunk-Q4XR5HBZ-DncequgQ.js} +1 -1
  18. package/public/assets/{chunk-V7JOEXUC-B2GuW8II.js → chunk-V7JOEXUC-CkWfMBya.js} +1 -1
  19. package/public/assets/{chunk-VR4S4FIN--mpfWlsA.js → chunk-VR4S4FIN-Bwauz6ax.js} +1 -1
  20. package/public/assets/{chunk-WYO6CB5R-C9AegkOL.js → chunk-WYO6CB5R-BYQBPZdV.js} +2 -2
  21. package/public/assets/{chunk-ZGVPDNZ5-DHEHWIQC.js → chunk-ZGVPDNZ5-w40EBMAk.js} +1 -1
  22. package/public/assets/classDiagram-OUVF2IWQ-D19WQ2fv.js +1 -0
  23. package/public/assets/classDiagram-v2-EOCWNBFH-D19WQ2fv.js +1 -0
  24. package/public/assets/{cynefinDiagram-TSTJHNR4-CEF6uPqy.js → cynefinDiagram-TSTJHNR4-MqlLfQLV.js} +1 -1
  25. package/public/assets/{dagre-VKFMJZFB-tAlkD532.js → dagre-VKFMJZFB-BtMel0jZ.js} +1 -1
  26. package/public/assets/{diagram-FQU43EPY-Dn3xctlD.js → diagram-FQU43EPY-BLn2JOxM.js} +1 -1
  27. package/public/assets/{diagram-G47NLZAW-DpSRoY6_.js → diagram-G47NLZAW-CcU7cY2d.js} +1 -1
  28. package/public/assets/{diagram-NH7WQ7WH-BHbqnSut.js → diagram-NH7WQ7WH-DFv5wLuq.js} +1 -1
  29. package/public/assets/{diagram-OA4YK3LP-CQJ8KQDY.js → diagram-OA4YK3LP-srdMEEtw.js} +1 -1
  30. package/public/assets/{diagram-WEI45ONY-BEsTR8Rk.js → diagram-WEI45ONY-CtD4L13_.js} +1 -1
  31. package/public/assets/{dist-J-JdY7jC.js → dist-DNd1zfJo.js} +1 -1
  32. package/public/assets/{ebnfDiagram-CCIWWBDH-p_uSL4QW.js → ebnfDiagram-CCIWWBDH-_-229G-a.js} +1 -1
  33. package/public/assets/{erDiagram-Q63AITRT-RacFfUm5.js → erDiagram-Q63AITRT-DJYYhyDf.js} +1 -1
  34. package/public/assets/flowDiagram-23GEKE2U-DVtDhScs.js +1 -0
  35. package/public/assets/{ganttDiagram-NO4QXBWP-BS4PyD_e.js → ganttDiagram-NO4QXBWP-BDWjR2BL.js} +1 -1
  36. package/public/assets/{gitGraphDiagram-IHSO6WYX-voBIAuv7.js → gitGraphDiagram-IHSO6WYX-6VNHaoaE.js} +1 -1
  37. package/public/assets/{highlighted-body-OFNGDK62-B2h0ASPW.js → highlighted-body-OFNGDK62-ClTUT11e.js} +1 -1
  38. package/public/assets/index-B52MzomI.js +871 -0
  39. package/public/assets/{infoDiagram-FWYZ7A6U-WeutUvRs.js → infoDiagram-FWYZ7A6U-C8nPo8f6.js} +1 -1
  40. package/public/assets/{ishikawaDiagram-FXEZZL3T-BpGLNXfW.js → ishikawaDiagram-FXEZZL3T-DhhRWuLD.js} +1 -1
  41. package/public/assets/{journeyDiagram-5HDEW3XC-BiRb7Ha6.js → journeyDiagram-5HDEW3XC-CTgKZqOm.js} +1 -1
  42. package/public/assets/{kanban-definition-HUTT4EX6-DJs9NiJI.js → kanban-definition-HUTT4EX6-CoVQymWJ.js} +1 -1
  43. package/public/assets/{line-CBv-a2Ot.js → line-DIJ2uGIx.js} +1 -1
  44. package/public/assets/mermaid-GHXKKRXX-NeIk_INh.js +1 -0
  45. package/public/assets/{mindmap-definition-LN4V7U3C-CWTUfRIY.js → mindmap-definition-LN4V7U3C-CnBQGuc8.js} +1 -1
  46. package/public/assets/{pegDiagram-2B236MQR-sUw4NSkU.js → pegDiagram-2B236MQR-DS30M766.js} +1 -1
  47. package/public/assets/{pieDiagram-ENE6RG2P-UbkBxs1d.js → pieDiagram-ENE6RG2P-BiFYahi8.js} +1 -1
  48. package/public/assets/{quadrantDiagram-ABIIQ3AL-CB3rn4Eq.js → quadrantDiagram-ABIIQ3AL-7RXOQFPw.js} +1 -1
  49. package/public/assets/{railroadDiagram-RFXS5EU6-Cjq5pzGd.js → railroadDiagram-RFXS5EU6-BfYMSm1Y.js} +1 -1
  50. package/public/assets/{requirementDiagram-TGXJPOKE-CDPJf54m.js → requirementDiagram-TGXJPOKE-BcPpT5PP.js} +1 -1
  51. package/public/assets/{sankeyDiagram-HTMAVEWB-BRLM92LO.js → sankeyDiagram-HTMAVEWB-BGYvXFPC.js} +1 -1
  52. package/public/assets/{sequenceDiagram-DBY2YBRQ-YlKsBVf5.js → sequenceDiagram-DBY2YBRQ-BQDw_5wi.js} +1 -1
  53. package/public/assets/{stateDiagram-2N3HPSRC-DQ9Fno99.js → stateDiagram-2N3HPSRC-tGXvsFbG.js} +1 -1
  54. package/public/assets/stateDiagram-v2-6OUMAXLB-CYSK2pph.js +1 -0
  55. package/public/assets/{swimlanes-5IMT3BWC-BHTLLNKN.js → swimlanes-5IMT3BWC-COzjOnAn.js} +1 -1
  56. package/public/assets/swimlanesDiagram-G3AALYLV-2xI_2ZRC.js +8 -0
  57. package/public/assets/{timeline-definition-FHXFAJF6-_SCRjqZU.js → timeline-definition-FHXFAJF6-D3-XwGPp.js} +1 -1
  58. package/public/assets/{vennDiagram-L72KCM5P-aDagNwee.js → vennDiagram-L72KCM5P-eBsFqZoN.js} +1 -1
  59. package/public/assets/{wardleyDiagram-EHGQE667-D6HFLB8B.js → wardleyDiagram-EHGQE667-CKvJIjcw.js} +1 -1
  60. package/public/assets/{xychartDiagram-FW5EYKEG-xqPpfLPa.js → xychartDiagram-FW5EYKEG-C49Uf4Nk.js} +1 -1
  61. package/public/index.html +9 -9
  62. package/public/assets/channel-DPFFXpXw.js +0 -1
  63. package/public/assets/classDiagram-OUVF2IWQ-D5fEFFKl.js +0 -1
  64. package/public/assets/classDiagram-v2-EOCWNBFH-D5fEFFKl.js +0 -1
  65. package/public/assets/flowDiagram-23GEKE2U-DlyPEJng.js +0 -1
  66. package/public/assets/index-DQ07U-8e.js +0 -870
  67. package/public/assets/mermaid-GHXKKRXX-5jVN_Ptc.js +0 -1
  68. package/public/assets/stateDiagram-v2-6OUMAXLB-JNHXJt1-.js +0 -1
  69. package/public/assets/swimlanesDiagram-G3AALYLV-BBxj4jD0.js +0 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hachej/boring-ui-cli",
3
- "version": "0.1.76",
3
+ "version": "0.1.77",
4
4
  "description": "Turn an agent into an app",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -21,13 +21,13 @@
21
21
  "typescript": "^6.0.3",
22
22
  "vite": "^8.1.2",
23
23
  "yaml": "^2.9.0",
24
- "@hachej/boring-agent": "0.1.76",
25
- "@hachej/boring-tasks": "0.1.76",
26
- "@hachej/boring-diagram": "0.1.76",
27
- "@hachej/boring-ask-user": "0.1.76",
28
- "@hachej/boring-ui-kit": "0.1.76",
29
- "@hachej/boring-ui-plugin-cli": "0.1.76",
30
- "@hachej/boring-workspace": "0.1.76"
24
+ "@hachej/boring-ask-user": "0.1.77",
25
+ "@hachej/boring-diagram": "0.1.77",
26
+ "@hachej/boring-tasks": "0.1.77",
27
+ "@hachej/boring-ui-kit": "0.1.77",
28
+ "@hachej/boring-agent": "0.1.77",
29
+ "@hachej/boring-ui-plugin-cli": "0.1.77",
30
+ "@hachej/boring-workspace": "0.1.77"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@tailwindcss/vite": "^4.3.1",
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{n as t,t as n}from"./jsx-runtime-CBD9r_Rc.js";import{Ct as r,G as i,St as a,Tt as o,d as s,wt as c}from"./createLucideIcon-CwPc8Vzh.js";import{A as l,E as u,M as d,N as f,T as p,j as m,k as h}from"./index-DQ07U-8e.js";var g=e(t(),1),_=e(n(),1);function v({value:e,label:t}){let[n,r]=(0,g.useState)(!1);return(0,_.jsx)(i,{type:`button`,variant:`ghost`,size:`icon-xs`,onClick:(0,g.useCallback)(()=>{p(e).then(e=>{e&&(r(!0),window.setTimeout(()=>r(!1),1200))})},[e]),className:`text-muted-foreground/60`,"aria-label":t,title:t,children:n?(0,_.jsx)(f,{className:`h-3 w-3`}):(0,_.jsx)(l,{className:`h-3 w-3`})})}function y({label:e,value:t}){return(0,_.jsxs)(`div`,{className:`rounded-md border border-border/40 bg-muted/20 p-2`,children:[(0,_.jsxs)(`div`,{className:`mb-1 flex items-center justify-between gap-2`,children:[(0,_.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:e}),(0,_.jsx)(v,{value:t,label:`Copy ${e}`})]}),(0,_.jsx)(`code`,{className:`block break-all font-mono text-[11px] leading-relaxed text-foreground dark:text-zinc-100`,children:t})]})}function b({sessionId:e}){return(0,_.jsxs)(`div`,{className:`flex flex-col gap-3 overflow-auto p-3 text-[11px] text-muted-foreground dark:text-zinc-300`,children:[(0,_.jsx)(`p`,{className:`text-muted-foreground dark:text-zinc-300`,children:`This web chat is backed by a runtime session. Use the id below for support or debugging.`}),(0,_.jsx)(y,{label:`Runtime session id`,value:e})]})}var x=2500,S=20;function C({apiBaseUrl:e,fetch:t,sessionId:n,requestHeaders:r,storageScope:a}){let[o,s]=(0,g.useState)({kind:`loading`}),[c,l]=(0,g.useState)(0),u=(0,g.useRef)(0),d=(0,g.useCallback)(()=>{u.current=0,l(e=>e+1)},[]);return(0,g.useEffect)(()=>{let i=!1,o=null;return s({kind:`loading`}),(t??globalThis.fetch.bind(globalThis))(j(e,`/api/v1/agent/sessions/${encodeURIComponent(n)}/system-prompt`),{headers:M(r,a)}).then(async e=>{if(i)return;if(e.ok){let t=await e.json();if(typeof t.systemPrompt==`string`){u.current=0,s({kind:`ok`,text:t.systemPrompt});return}}let t=(await e.json().catch(()=>null))?.error?.message??`HTTP ${e.status}`;e.status===404&&u.current<S?(s({kind:`empty`,reason:t}),o=setTimeout(()=>{i||(u.current++,l(e=>e+1))},x)):s(e.status===404?{kind:`empty`,reason:t}:{kind:`error`,reason:t})}).catch(e=>{i||s({kind:`error`,reason:e instanceof Error?e.message:String(e)})}),()=>{i=!0,o&&clearTimeout(o)}},[e,t,n,r,c,a]),(0,_.jsxs)(`div`,{className:`flex flex-col h-full min-h-0`,children:[(0,_.jsxs)(`div`,{className:`shrink-0 flex items-center justify-between px-3 pt-2 pb-1 border-b border-border/40`,children:[(0,_.jsx)(`span`,{className:`text-[10px] text-muted-foreground/80 font-mono`,children:o.kind===`ok`?`${o.text.length.toLocaleString()} chars`:o.kind===`loading`?`loading…`:o.kind===`empty`?`waiting for session · retry ${u.current}/${S}`:`error`}),o.kind!==`loading`&&(0,_.jsx)(i,{type:`button`,variant:`ghost`,size:`icon-xs`,onClick:d,className:`text-muted-foreground/60`,"aria-label":`Refresh system prompt`,children:(0,_.jsx)(h,{className:`h-3 w-3`})})]}),(o.kind===`loading`||o.kind===`empty`)&&(0,_.jsx)(`p`,{className:`text-[11px] text-muted-foreground p-3`,children:o.kind===`loading`?`Loading…`:o.reason}),o.kind===`error`&&(0,_.jsx)(`p`,{className:`text-[11px] text-destructive p-3`,children:o.reason}),o.kind===`ok`&&(0,_.jsx)(`pre`,{className:`flex-1 overflow-auto px-3 py-2 font-mono text-[11px] leading-relaxed text-foreground whitespace-pre-wrap break-words`,children:o.text})]})}function w(e){let t=e,n=t?.type??`?`;if(n===`text`){let e=String(t.text??``);return e.slice(0,80)+(e.length>80?`…`:``)}if(n===`tool-invocation`){let e=t.toolInvocation,n=String(e?.state??``);return`${e?.toolName??`?`}() · ${n}`}if(n===`reasoning`){let e=String(t.text??t.reasoning??``);return e.slice(0,80)+(e.length>80?`…`:``)}return n}function T(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n],i=r,a=i.createdAt?new Date(i.createdAt).toISOString().slice(11,23):null;for(let e=0;e<r.parts.length;e++){let i=r.parts[e];t.push({msgId:r.id,msgIndex:n,role:r.role,time:a,partIndex:e,partType:i?.type??`unknown`,part:i})}}return t}function E({messages:e}){let t=T(e),[n,r]=(0,g.useState)(null),i=(0,g.useRef)(null),a=(0,g.useRef)(t.length);return(0,g.useEffect)(()=>{t.length!==a.current&&(i.current?.scrollIntoView({behavior:`smooth`}),a.current=t.length)},[t.length]),t.length===0?(0,_.jsx)(`p`,{className:`text-[11px] text-muted-foreground p-3`,children:`No messages yet.`}):(0,_.jsxs)(`div`,{className:`flex flex-col h-full min-h-0`,children:[(0,_.jsxs)(`div`,{className:`shrink-0 px-3 pt-2 pb-1 text-[10px] text-muted-foreground/80 font-mono border-b border-border/40`,children:[e.length,` msg · `,t.length,` parts`]}),(0,_.jsxs)(`div`,{className:`flex-1 overflow-auto`,children:[t.map(e=>{let t=`${e.msgId}:${e.partIndex}`,i=n===t;return(0,_.jsxs)(`div`,{className:`border-b border-border/30 last:border-0`,children:[(0,_.jsxs)(s,{type:`button`,variant:`ghost`,onClick:()=>r(i?null:t),className:`h-auto w-full justify-start gap-1.5 rounded-none px-2 py-1.5 text-left`,children:[(0,_.jsx)(`span`,{className:`mt-0.5 shrink-0 text-muted-foreground/40`,children:i?(0,_.jsx)(d,{className:`h-3 w-3`}):(0,_.jsx)(m,{className:`h-3 w-3`})}),(0,_.jsx)(`span`,{className:`font-mono text-[10px] shrink-0 w-20`,children:e.time?(0,_.jsx)(`span`,{className:`text-muted-foreground/60`,children:e.time}):(0,_.jsxs)(`span`,{className:`text-muted-foreground/30`,children:[`m`,e.msgIndex]})}),(0,_.jsx)(`span`,{className:u(`shrink-0 font-mono text-[10px] w-14`,e.role===`user`?`text-accent`:`text-muted-foreground`),children:e.role}),(0,_.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-muted-foreground/60 w-24`,children:e.partType}),(0,_.jsx)(`span`,{className:`flex-1 min-w-0 font-mono text-[11px] text-foreground truncate`,children:w(e.part)})]}),i&&(0,_.jsx)(`pre`,{className:`px-3 pb-2 font-mono text-[10px] leading-relaxed text-foreground/80 whitespace-pre-wrap break-words bg-muted/20`,children:JSON.stringify(e.part,null,2)})]},t)}),(0,_.jsx)(`div`,{ref:i})]})]})}var D=[{id:`session`,label:`Session`},{id:`prompt`,label:`System prompt`},{id:`messages`,label:`Messages`}],O=280,k=800;function A({apiBaseUrl:e,fetch:t,sessionId:n,messages:i,requestHeaders:s,storageScope:l,width:d,onWidthChange:f}){let[p,m]=(0,g.useState)(`session`);return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(`div`,{onMouseDown:(0,g.useCallback)(e=>{e.preventDefault();let t=e.clientX,n=d,r=e=>{let r=t-e.clientX;f(Math.min(k,Math.max(O,n+r)))},i=()=>{window.removeEventListener(`mousemove`,r),window.removeEventListener(`mouseup`,i)};window.addEventListener(`mousemove`,r),window.addEventListener(`mouseup`,i)},[d,f]),className:`w-1 shrink-0 cursor-col-resize hover:bg-accent/40 active:bg-accent/60 transition-colors`,"aria-hidden":!0}),(0,_.jsx)(`aside`,{style:{width:d},className:u(`flex h-full shrink-0 flex-col border-l border-border/60`,`bg-[oklch(from_var(--background)_calc(l-0.01)_c_h)]`),children:(0,_.jsxs)(a,{value:p,onValueChange:e=>m(e),className:`flex flex-col flex-1 min-h-0 overflow-hidden`,children:[(0,_.jsx)(`header`,{className:`flex shrink-0 items-center gap-0 border-b border-border/60 px-1`,children:(0,_.jsx)(c,{variant:`line`,className:`h-auto gap-0 p-0 w-full`,children:D.map(({id:e,label:t})=>(0,_.jsx)(o,{value:e,className:`h-8 flex-none px-3 py-2 text-[11px] font-medium data-[state=active]:after:bg-[color:var(--accent)]`,children:t},e))})}),(0,_.jsx)(r,{value:`session`,forceMount:!0,className:`flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden`,children:(0,_.jsx)(b,{sessionId:n})}),(0,_.jsx)(r,{value:`prompt`,forceMount:!0,className:`flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden`,children:(0,_.jsx)(C,{apiBaseUrl:e,fetch:t,sessionId:n,requestHeaders:s,storageScope:l})}),(0,_.jsx)(r,{value:`messages`,forceMount:!0,className:`flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden`,children:(0,_.jsx)(E,{messages:i})})]})})]})}function j(e,t){return`${e?.replace(/\/$/,``)??``}${t}`}function M(e,t){if(!e&&!t)return;let n={...e??{}},r=Object.keys(n).some(e=>e.toLowerCase()===`x-boring-storage-scope`);return t&&!r&&(n[`x-boring-storage-scope`]=t),n}export{A as DebugDrawer};
1
+ import{o as e}from"./rolldown-runtime-DAXXjFlN.js";import{n as t,t as n}from"./jsx-runtime-CBD9r_Rc.js";import{Ct as r,G as i,St as a,Tt as o,d as s,wt as c}from"./createLucideIcon-CwPc8Vzh.js";import{A as l,E as u,M as d,N as f,T as p,j as m,k as h}from"./index-B52MzomI.js";var g=e(t(),1),_=e(n(),1);function v({value:e,label:t}){let[n,r]=(0,g.useState)(!1);return(0,_.jsx)(i,{type:`button`,variant:`ghost`,size:`icon-xs`,onClick:(0,g.useCallback)(()=>{p(e).then(e=>{e&&(r(!0),window.setTimeout(()=>r(!1),1200))})},[e]),className:`text-muted-foreground/60`,"aria-label":t,title:t,children:n?(0,_.jsx)(f,{className:`h-3 w-3`}):(0,_.jsx)(l,{className:`h-3 w-3`})})}function y({label:e,value:t}){return(0,_.jsxs)(`div`,{className:`rounded-md border border-border/40 bg-muted/20 p-2`,children:[(0,_.jsxs)(`div`,{className:`mb-1 flex items-center justify-between gap-2`,children:[(0,_.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-[0.16em] text-muted-foreground`,children:e}),(0,_.jsx)(v,{value:t,label:`Copy ${e}`})]}),(0,_.jsx)(`code`,{className:`block break-all font-mono text-[11px] leading-relaxed text-foreground dark:text-zinc-100`,children:t})]})}function b({sessionId:e}){return(0,_.jsxs)(`div`,{className:`flex flex-col gap-3 overflow-auto p-3 text-[11px] text-muted-foreground dark:text-zinc-300`,children:[(0,_.jsx)(`p`,{className:`text-muted-foreground dark:text-zinc-300`,children:`This web chat is backed by a runtime session. Use the id below for support or debugging.`}),(0,_.jsx)(y,{label:`Runtime session id`,value:e})]})}var x=2500,S=20;function C({apiBaseUrl:e,fetch:t,sessionId:n,requestHeaders:r,storageScope:a}){let[o,s]=(0,g.useState)({kind:`loading`}),[c,l]=(0,g.useState)(0),u=(0,g.useRef)(0),d=(0,g.useCallback)(()=>{u.current=0,l(e=>e+1)},[]);return(0,g.useEffect)(()=>{let i=!1,o=null;return s({kind:`loading`}),(t??globalThis.fetch.bind(globalThis))(j(e,`/api/v1/agent/sessions/${encodeURIComponent(n)}/system-prompt`),{headers:M(r,a)}).then(async e=>{if(i)return;if(e.ok){let t=await e.json();if(typeof t.systemPrompt==`string`){u.current=0,s({kind:`ok`,text:t.systemPrompt});return}}let t=(await e.json().catch(()=>null))?.error?.message??`HTTP ${e.status}`;e.status===404&&u.current<S?(s({kind:`empty`,reason:t}),o=setTimeout(()=>{i||(u.current++,l(e=>e+1))},x)):s(e.status===404?{kind:`empty`,reason:t}:{kind:`error`,reason:t})}).catch(e=>{i||s({kind:`error`,reason:e instanceof Error?e.message:String(e)})}),()=>{i=!0,o&&clearTimeout(o)}},[e,t,n,r,c,a]),(0,_.jsxs)(`div`,{className:`flex flex-col h-full min-h-0`,children:[(0,_.jsxs)(`div`,{className:`shrink-0 flex items-center justify-between px-3 pt-2 pb-1 border-b border-border/40`,children:[(0,_.jsx)(`span`,{className:`text-[10px] text-muted-foreground/80 font-mono`,children:o.kind===`ok`?`${o.text.length.toLocaleString()} chars`:o.kind===`loading`?`loading…`:o.kind===`empty`?`waiting for session · retry ${u.current}/${S}`:`error`}),o.kind!==`loading`&&(0,_.jsx)(i,{type:`button`,variant:`ghost`,size:`icon-xs`,onClick:d,className:`text-muted-foreground/60`,"aria-label":`Refresh system prompt`,children:(0,_.jsx)(h,{className:`h-3 w-3`})})]}),(o.kind===`loading`||o.kind===`empty`)&&(0,_.jsx)(`p`,{className:`text-[11px] text-muted-foreground p-3`,children:o.kind===`loading`?`Loading…`:o.reason}),o.kind===`error`&&(0,_.jsx)(`p`,{className:`text-[11px] text-destructive p-3`,children:o.reason}),o.kind===`ok`&&(0,_.jsx)(`pre`,{className:`flex-1 overflow-auto px-3 py-2 font-mono text-[11px] leading-relaxed text-foreground whitespace-pre-wrap break-words`,children:o.text})]})}function w(e){let t=e,n=t?.type??`?`;if(n===`text`){let e=String(t.text??``);return e.slice(0,80)+(e.length>80?`…`:``)}if(n===`tool-invocation`){let e=t.toolInvocation,n=String(e?.state??``);return`${e?.toolName??`?`}() · ${n}`}if(n===`reasoning`){let e=String(t.text??t.reasoning??``);return e.slice(0,80)+(e.length>80?`…`:``)}return n}function T(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n],i=r,a=i.createdAt?new Date(i.createdAt).toISOString().slice(11,23):null;for(let e=0;e<r.parts.length;e++){let i=r.parts[e];t.push({msgId:r.id,msgIndex:n,role:r.role,time:a,partIndex:e,partType:i?.type??`unknown`,part:i})}}return t}function E({messages:e}){let t=T(e),[n,r]=(0,g.useState)(null),i=(0,g.useRef)(null),a=(0,g.useRef)(t.length);return(0,g.useEffect)(()=>{t.length!==a.current&&(i.current?.scrollIntoView({behavior:`smooth`}),a.current=t.length)},[t.length]),t.length===0?(0,_.jsx)(`p`,{className:`text-[11px] text-muted-foreground p-3`,children:`No messages yet.`}):(0,_.jsxs)(`div`,{className:`flex flex-col h-full min-h-0`,children:[(0,_.jsxs)(`div`,{className:`shrink-0 px-3 pt-2 pb-1 text-[10px] text-muted-foreground/80 font-mono border-b border-border/40`,children:[e.length,` msg · `,t.length,` parts`]}),(0,_.jsxs)(`div`,{className:`flex-1 overflow-auto`,children:[t.map(e=>{let t=`${e.msgId}:${e.partIndex}`,i=n===t;return(0,_.jsxs)(`div`,{className:`border-b border-border/30 last:border-0`,children:[(0,_.jsxs)(s,{type:`button`,variant:`ghost`,onClick:()=>r(i?null:t),className:`h-auto w-full justify-start gap-1.5 rounded-none px-2 py-1.5 text-left`,children:[(0,_.jsx)(`span`,{className:`mt-0.5 shrink-0 text-muted-foreground/40`,children:i?(0,_.jsx)(d,{className:`h-3 w-3`}):(0,_.jsx)(m,{className:`h-3 w-3`})}),(0,_.jsx)(`span`,{className:`font-mono text-[10px] shrink-0 w-20`,children:e.time?(0,_.jsx)(`span`,{className:`text-muted-foreground/60`,children:e.time}):(0,_.jsxs)(`span`,{className:`text-muted-foreground/30`,children:[`m`,e.msgIndex]})}),(0,_.jsx)(`span`,{className:u(`shrink-0 font-mono text-[10px] w-14`,e.role===`user`?`text-accent`:`text-muted-foreground`),children:e.role}),(0,_.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-muted-foreground/60 w-24`,children:e.partType}),(0,_.jsx)(`span`,{className:`flex-1 min-w-0 font-mono text-[11px] text-foreground truncate`,children:w(e.part)})]}),i&&(0,_.jsx)(`pre`,{className:`px-3 pb-2 font-mono text-[10px] leading-relaxed text-foreground/80 whitespace-pre-wrap break-words bg-muted/20`,children:JSON.stringify(e.part,null,2)})]},t)}),(0,_.jsx)(`div`,{ref:i})]})]})}var D=[{id:`session`,label:`Session`},{id:`prompt`,label:`System prompt`},{id:`messages`,label:`Messages`}],O=280,k=800;function A({apiBaseUrl:e,fetch:t,sessionId:n,messages:i,requestHeaders:s,storageScope:l,width:d,onWidthChange:f}){let[p,m]=(0,g.useState)(`session`);return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(`div`,{onMouseDown:(0,g.useCallback)(e=>{e.preventDefault();let t=e.clientX,n=d,r=e=>{let r=t-e.clientX;f(Math.min(k,Math.max(O,n+r)))},i=()=>{window.removeEventListener(`mousemove`,r),window.removeEventListener(`mouseup`,i)};window.addEventListener(`mousemove`,r),window.addEventListener(`mouseup`,i)},[d,f]),className:`w-1 shrink-0 cursor-col-resize hover:bg-accent/40 active:bg-accent/60 transition-colors`,"aria-hidden":!0}),(0,_.jsx)(`aside`,{style:{width:d},className:u(`flex h-full shrink-0 flex-col border-l border-border/60`,`bg-[oklch(from_var(--background)_calc(l-0.01)_c_h)]`),children:(0,_.jsxs)(a,{value:p,onValueChange:e=>m(e),className:`flex flex-col flex-1 min-h-0 overflow-hidden`,children:[(0,_.jsx)(`header`,{className:`flex shrink-0 items-center gap-0 border-b border-border/60 px-1`,children:(0,_.jsx)(c,{variant:`line`,className:`h-auto gap-0 p-0 w-full`,children:D.map(({id:e,label:t})=>(0,_.jsx)(o,{value:e,className:`h-8 flex-none px-3 py-2 text-[11px] font-medium data-[state=active]:after:bg-[color:var(--accent)]`,children:t},e))})}),(0,_.jsx)(r,{value:`session`,forceMount:!0,className:`flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden`,children:(0,_.jsx)(b,{sessionId:n})}),(0,_.jsx)(r,{value:`prompt`,forceMount:!0,className:`flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden`,children:(0,_.jsx)(C,{apiBaseUrl:e,fetch:t,sessionId:n,requestHeaders:s,storageScope:l})}),(0,_.jsx)(r,{value:`messages`,forceMount:!0,className:`flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden`,children:(0,_.jsx)(E,{messages:i})})]})})]})}function j(e,t){return`${e?.replace(/\/$/,``)??``}${t}`}function M(e,t){if(!e&&!t)return;let n={...e??{}},r=Object.keys(n).some(e=>e.toLowerCase()===`x-boring-storage-scope`);return t&&!r&&(n[`x-boring-storage-scope`]=t),n}export{A as DebugDrawer};