clawpad 0.4.16 → 0.4.17

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 (168) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +8 -8
  3. package/.next/standalone/.next/build-manifest.json +2 -2
  4. package/.next/standalone/.next/prerender-manifest.json +3 -3
  5. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  7. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.rsc +4 -4
  17. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  18. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  19. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  20. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  22. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/.next/standalone/.next/server/app/api/ai/write/route_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/api/changes/[id]/route_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/api/changes/record/route_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/api/changes/revert/route_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/api/changes/run/route_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/api/chat/abort/route_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/api/chat/route.js +1 -1
  31. package/.next/standalone/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/api/files/pages/[...path]/route_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/api/files/recent/route_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/api/files/search/route_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/api/files/spaces/[space]/pages/route_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/api/files/spaces/route_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/api/files/watch/route.js +2 -2
  38. package/.next/standalone/.next/server/app/api/files/watch/route_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/api/gateway/config/route_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/api/gateway/detect/route_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/api/gateway/events/route_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/api/gateway/features/route_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/api/gateway/history/route_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/api/gateway/resolve/route_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/api/gateway/sessions/route_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/api/gateway/status/route_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/api/openclaw/commands/route_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/api/settings/search-status/route_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/api/setup/bootstrap/route_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/api/setup/bootstrap-workspace/route_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/api/setup/status/route_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/api/setup/trigger-onboarding/route_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/index.html +1 -1
  56. package/.next/standalone/.next/server/app/index.rsc +4 -4
  57. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  58. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
  59. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  60. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -4
  61. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  62. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/settings/connection/page_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/settings/connection.html +1 -1
  65. package/.next/standalone/.next/server/app/settings/connection.rsc +4 -4
  66. package/.next/standalone/.next/server/app/settings/connection.segments/_full.segment.rsc +4 -4
  67. package/.next/standalone/.next/server/app/settings/connection.segments/_head.segment.rsc +1 -1
  68. package/.next/standalone/.next/server/app/settings/connection.segments/_index.segment.rsc +4 -4
  69. package/.next/standalone/.next/server/app/settings/connection.segments/_tree.segment.rsc +2 -2
  70. package/.next/standalone/.next/server/app/settings/connection.segments/settings/connection/__PAGE__.segment.rsc +1 -1
  71. package/.next/standalone/.next/server/app/settings/connection.segments/settings/connection.segment.rsc +1 -1
  72. package/.next/standalone/.next/server/app/settings/connection.segments/settings.segment.rsc +1 -1
  73. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/settings/relay/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/settings/relay.html +1 -1
  76. package/.next/standalone/.next/server/app/settings/relay.rsc +4 -4
  77. package/.next/standalone/.next/server/app/settings/relay.segments/_full.segment.rsc +4 -4
  78. package/.next/standalone/.next/server/app/settings/relay.segments/_head.segment.rsc +1 -1
  79. package/.next/standalone/.next/server/app/settings/relay.segments/_index.segment.rsc +4 -4
  80. package/.next/standalone/.next/server/app/settings/relay.segments/_tree.segment.rsc +2 -2
  81. package/.next/standalone/.next/server/app/settings/relay.segments/settings/relay/__PAGE__.segment.rsc +1 -1
  82. package/.next/standalone/.next/server/app/settings/relay.segments/settings/relay.segment.rsc +1 -1
  83. package/.next/standalone/.next/server/app/settings/relay.segments/settings.segment.rsc +1 -1
  84. package/.next/standalone/.next/server/app/settings.html +1 -1
  85. package/.next/standalone/.next/server/app/settings.rsc +4 -4
  86. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +4 -4
  87. package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  88. package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +4 -4
  89. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  90. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  91. package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  92. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/setup.html +1 -1
  94. package/.next/standalone/.next/server/app/setup.rsc +5 -5
  95. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +5 -5
  96. package/.next/standalone/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  97. package/.next/standalone/.next/server/app/setup.segments/_index.segment.rsc +4 -4
  98. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  99. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +2 -2
  100. package/.next/standalone/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  101. package/.next/standalone/.next/server/app/waitlist/page_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/waitlist.html +1 -1
  103. package/.next/standalone/.next/server/app/waitlist.rsc +4 -4
  104. package/.next/standalone/.next/server/app/waitlist.segments/_full.segment.rsc +4 -4
  105. package/.next/standalone/.next/server/app/waitlist.segments/_head.segment.rsc +1 -1
  106. package/.next/standalone/.next/server/app/waitlist.segments/_index.segment.rsc +4 -4
  107. package/.next/standalone/.next/server/app/waitlist.segments/_tree.segment.rsc +2 -2
  108. package/.next/standalone/.next/server/app/waitlist.segments/waitlist/__PAGE__.segment.rsc +1 -1
  109. package/.next/standalone/.next/server/app/waitlist.segments/waitlist.segment.rsc +1 -1
  110. package/.next/standalone/.next/server/app/workspace/[...path]/page.js +2 -2
  111. package/.next/standalone/.next/server/app/workspace/[...path]/page.js.nft.json +1 -1
  112. package/.next/standalone/.next/server/app/workspace/[...path]/page_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/workspace/page.js +1 -1
  114. package/.next/standalone/.next/server/app/workspace/page.js.nft.json +1 -1
  115. package/.next/standalone/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/workspace/search/page.js +1 -1
  117. package/.next/standalone/.next/server/app/workspace/search/page.js.nft.json +1 -1
  118. package/.next/standalone/.next/server/app/workspace/search/page_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/workspace/search.html +2 -2
  120. package/.next/standalone/.next/server/app/workspace/search.rsc +5 -5
  121. package/.next/standalone/.next/server/app/workspace/search.segments/_full.segment.rsc +5 -5
  122. package/.next/standalone/.next/server/app/workspace/search.segments/_head.segment.rsc +1 -1
  123. package/.next/standalone/.next/server/app/workspace/search.segments/_index.segment.rsc +4 -4
  124. package/.next/standalone/.next/server/app/workspace/search.segments/_tree.segment.rsc +2 -2
  125. package/.next/standalone/.next/server/app/workspace/search.segments/workspace/search/__PAGE__.segment.rsc +1 -1
  126. package/.next/standalone/.next/server/app/workspace/search.segments/workspace/search.segment.rsc +1 -1
  127. package/.next/standalone/.next/server/app/workspace/search.segments/workspace.segment.rsc +2 -2
  128. package/.next/standalone/.next/server/app/workspace.html +2 -2
  129. package/.next/standalone/.next/server/app/workspace.rsc +5 -5
  130. package/.next/standalone/.next/server/app/workspace.segments/_full.segment.rsc +5 -5
  131. package/.next/standalone/.next/server/app/workspace.segments/_head.segment.rsc +1 -1
  132. package/.next/standalone/.next/server/app/workspace.segments/_index.segment.rsc +4 -4
  133. package/.next/standalone/.next/server/app/workspace.segments/_tree.segment.rsc +2 -2
  134. package/.next/standalone/.next/server/app/workspace.segments/workspace/__PAGE__.segment.rsc +1 -1
  135. package/.next/standalone/.next/server/app/workspace.segments/workspace.segment.rsc +2 -2
  136. package/.next/standalone/.next/server/app-paths-manifest.json +8 -8
  137. package/.next/standalone/.next/server/chunks/2461.js +1 -1
  138. package/.next/standalone/.next/server/chunks/2470.js +1 -1
  139. package/.next/standalone/.next/server/chunks/{7174.js → 2518.js} +2 -2
  140. package/.next/standalone/.next/server/chunks/3114.js +1 -1
  141. package/.next/standalone/.next/server/chunks/3251.js +2 -2
  142. package/.next/standalone/.next/server/chunks/534.js +2 -2
  143. package/.next/standalone/.next/server/pages/404.html +1 -1
  144. package/.next/standalone/.next/server/pages/500.html +2 -2
  145. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  146. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +1 -0
  147. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  148. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +42 -0
  149. package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +30 -0
  150. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/LICENSE +191 -0
  151. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
  152. package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +46 -0
  153. package/.next/standalone/package.json +1 -1
  154. package/.next/static/chunks/1285-4a6c410db884bf7b.js +9 -0
  155. package/.next/static/chunks/{7230-ae3fcfca93b2ad80.js → 4512-d722f6ea7cf6241b.js} +5 -5
  156. package/.next/static/chunks/app/layout-57d1abd59f4edb90.js +1 -0
  157. package/.next/static/chunks/app/workspace/[...path]/page-3d66400a5ed06c49.js +38 -0
  158. package/.next/static/chunks/app/workspace/layout-5b1e29fb406cff83.js +6 -0
  159. package/.next/static/chunks/{ba12c10f-cb1126b897816a0f.js → ba12c10f-60ae8f6a2f0b4dd3.js} +1 -1
  160. package/.next/static/css/ee598b7014e1ece1.css +1 -0
  161. package/package.json +1 -1
  162. package/.next/static/chunks/1285-5a2da086334493ab.js +0 -9
  163. package/.next/static/chunks/app/layout-6fad2f96726e757a.js +0 -1
  164. package/.next/static/chunks/app/workspace/[...path]/page-463022f5d199eabc.js +0 -38
  165. package/.next/static/chunks/app/workspace/layout-be10d7f09b35ca6d.js +0 -6
  166. package/.next/static/css/b5d2bd8e17641061.css +0 -1
  167. /package/.next/static/{MLsn_n4XcPWPE4HF1L3qC → mut1jCnDAviqx0VdlAtkQ}/_buildManifest.js +0 -0
  168. /package/.next/static/{MLsn_n4XcPWPE4HF1L3qC → mut1jCnDAviqx0VdlAtkQ}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- exports.id=2470,exports.ids=[2470],exports.modules={9062:(a,b,c)=>{"use strict";c.d(b,{Toaster:()=>l});var d=c(48249),e=c(49681),f=c(41160),g=c(31675),h=c(2276),i=c(40560),j=c(8696),k=c(90707);let l=({...a})=>{let{theme:b="system"}=(0,j.D)();return(0,d.jsx)(k.l$,{theme:b,className:"toaster group",icons:{success:(0,d.jsx)(e.A,{className:"size-4"}),info:(0,d.jsx)(f.A,{className:"size-4"}),warning:(0,d.jsx)(g.A,{className:"size-4"}),error:(0,d.jsx)(h.A,{className:"size-4"}),loading:(0,d.jsx)(i.A,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},...a})}},13482:(a,b,c)=>{"use strict";c.d(b,{b:()=>d});let d=(0,c(31417).v)(a=>({lastEvent:void 0,events:[],updatedAt:void 0,addEvent:b=>a(a=>{let c=function(a,b){if(b)return b;let c=(a??"").toLowerCase();if(c){if("failed"===c)return"error";if("sent"===c)return"alert";if(c.startsWith("ok"))return"ok"}}(b.status,b.indicatorType),d={...b,indicatorType:c,actionable:"alert"===c||"error"===c},e=[d,...a.events];return e.length>20&&(e.length=20),{lastEvent:d,events:e,updatedAt:Date.now()}}),clear:()=>a({lastEvent:void 0,events:[],updatedAt:void 0})}))},23535:(a,b,c)=>{"use strict";c.d(b,{Providers:()=>n});var d=c(48249),e=c(8696),f=c(97638),g=c(5023),h=c(55296),i=c(67484),j=c(80405),k=c(97032),l=c(13482);function m(){return(0,k.z)(a=>a.detect),(0,k.z)(a=>a.connect),(0,j.e)(a=>a.addItem),(0,k.z)(a=>a.setWSStatus),(0,k.z)(a=>a.setAgentStatus),(0,l.b)(a=>a.addEvent),(0,i.useRef)(new Map),(0,i.useRef)(0),(0,i.useRef)(0),(0,i.useRef)(0),(0,j.e)(a=>a.addItem),(0,i.useRef)(null),(0,i.useRef)(new Set),(0,i.useRef)(!1),null}function n({children:a}){let[b]=(0,i.useState)(()=>new f.E({defaultOptions:{queries:{staleTime:6e4,refetchOnWindowFocus:!1}}}));return(0,d.jsx)(e.N,{attribute:"class",defaultTheme:"system",enableSystem:!0,disableTransitionOnChange:!0,children:(0,d.jsx)(g.Ht,{client:b,children:(0,d.jsxs)(h.Bc,{delayDuration:300,children:[(0,d.jsx)(m,{}),a]})})})}c(98500),c(34351),c(88650)},27728:(a,b,c)=>{"use strict";c.d(b,{Toaster:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call Toaster() from the server but Toaster is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/clawpad/clawpad/src/components/ui/sonner.tsx","Toaster")},34351:(a,b,c)=>{"use strict";c.d(b,{W:()=>d});let d=(0,c(31417).v)((a,b)=>({sessionKey:null,activeRun:null,activeFiles:new Set,lastFileTouchAt:null,changeSets:[],review:{open:!1,changeSetId:null,filePath:null},dismissed:new Set,loading:!1,error:void 0,setSessionKey:b=>a({sessionKey:b}),setActiveRun:b=>a({activeRun:b,...b?{}:{lastFileTouchAt:null}}),touchFile:b=>a(a=>{let c=new Set(a.activeFiles);return c.add(b),{activeFiles:c,lastFileTouchAt:Date.now()}}),clearActiveFiles:()=>a({activeFiles:new Set,lastFileTouchAt:null}),loadChangeSets:async()=>{let c=b().sessionKey;if(c){a({loading:!0,error:void 0});try{let b=await fetch(`/api/changes?sessionKey=${encodeURIComponent(c)}`);if(!b.ok)throw Error("Failed to load change sets");let d=await b.json();a({changeSets:d,loading:!1})}catch(b){a({loading:!1,error:String(b)})}}},openReview:(b,c)=>a({review:{open:!0,changeSetId:b,filePath:c}}),closeReview:()=>a({review:{open:!1,changeSetId:null,filePath:null}}),dismissChangeSet:b=>a(a=>{let c=new Set(a.dismissed);return c.add(b),{dismissed:c}})}))},41044:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95547,23))},41560:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95547,23)),Promise.resolve().then(c.t.bind(c,15098,23)),Promise.resolve().then(c.t.bind(c,47644,23)),Promise.resolve().then(c.t.bind(c,33859,23)),Promise.resolve().then(c.t.bind(c,98099,23)),Promise.resolve().then(c.t.bind(c,16237,23)),Promise.resolve().then(c.t.bind(c,98562,23)),Promise.resolve().then(c.t.bind(c,36675,23))},42893:(a,b,c)=>{"use strict";c.d(b,{cn:()=>f});var d=c(99314),e=c(96862);function f(...a){return(0,e.QP)((0,d.$)(a))}},51288:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81921,23)),Promise.resolve().then(c.t.bind(c,60440,23)),Promise.resolve().then(c.t.bind(c,84342,23)),Promise.resolve().then(c.t.bind(c,82265,23)),Promise.resolve().then(c.t.bind(c,35421,23)),Promise.resolve().then(c.t.bind(c,61335,23)),Promise.resolve().then(c.t.bind(c,70664,23)),Promise.resolve().then(c.bind(c,74661))},55296:(a,b,c)=>{"use strict";c.d(b,{Bc:()=>g,ZI:()=>j,k$:()=>i,m_:()=>h});var d=c(48249);c(67484);var e=c(33159),f=c(42893);function g({delayDuration:a=0,...b}){return(0,d.jsx)(e.Provider,{"data-slot":"tooltip-provider",delayDuration:a,...b})}function h({...a}){return(0,d.jsx)(g,{children:(0,d.jsx)(e.Root,{"data-slot":"tooltip",...a})})}function i({...a}){return(0,d.jsx)(e.Trigger,{"data-slot":"tooltip-trigger",...a})}function j({className:a,sideOffset:b=0,children:c,...g}){return(0,d.jsx)(e.Portal,{children:(0,d.jsxs)(e.Content,{"data-slot":"tooltip-content",sideOffset:b,className:(0,f.cn)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",a),...g,children:[c,(0,d.jsx)(e.Arrow,{className:"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}},61135:()=>{},70440:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(88868);let e=async a=>[{type:"image/x-icon",sizes:"256x256",url:(0,d.fillMetadataSegment)(".",await a.params,"favicon.ico")+"?50c20623341a5f1c"}]},73736:(a,b,c)=>{"use strict";c.d(b,{Providers:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call Providers() from the server but Providers is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/clawpad/clawpad/src/components/providers.tsx","Providers")},76537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>l,metadata:()=>k});var d=c(5735),e=c(64264),f=c.n(e),g=c(37936),h=c.n(g),i=c(73736),j=c(27728);c(61135);let k={title:"ClawPad",description:"The workspace for OpenClaw",icons:{icon:[{url:"/favicon.ico"},{url:"/favicon.png",type:"image/png"}],apple:"/brand/apple-touch-icon.png"}};function l({children:a}){return(0,d.jsx)("html",{lang:"en",suppressHydrationWarning:!0,className:`${h().variable} ${f().variable}`,children:(0,d.jsx)("body",{className:"font-sans antialiased",children:(0,d.jsxs)(i.Providers,{children:[a,(0,d.jsx)(j.Toaster,{})]})})})}},80405:(a,b,c)=>{"use strict";c.d(b,{e:()=>f});var d=c(31417);let e=0,f=(0,d.v)(a=>({items:[],addItem:b=>a(a=>({items:[{...b,id:`activity-${Date.now()}-${++e}`},...a.items].slice(0,20)})),clear:()=>a({items:[]})}))},88650:(a,b,c)=>{"use strict";c.d(b,{Sz:()=>d,ke:()=>e});let d="__root__",e="General"},88939:(a,b,c)=>{Promise.resolve().then(c.bind(c,23535)),Promise.resolve().then(c.bind(c,9062))},93780:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81921,23))},94515:(a,b,c)=>{Promise.resolve().then(c.bind(c,73736)),Promise.resolve().then(c.bind(c,27728))},97032:(a,b,c)=>{"use strict";c.d(b,{z:()=>f});var d=c(31417);let e="http://127.0.0.1:18789",f=(0,d.v)((a,b)=>({connected:!1,connecting:!1,wsStatus:"disconnected",wsError:void 0,reason:null,url:e,token:void 0,agentName:void 0,source:void 0,sessions:[],agentStatus:"idle",error:void 0,manualOverrideDirty:!1,detect:async b=>{try{b?.resetManual&&await fetch("/api/gateway/config",{method:"DELETE"}).catch(()=>void 0);let c=await fetch("/api/gateway/detect");if(!c.ok)throw Error("Failed to detect gateway");let d=await c.json();d&&a({url:d.url||e,token:d.token||void 0,agentName:d.agentName||void 0,source:d.source||void 0,manualOverrideDirty:!1})}catch(b){a({reason:"server_unreachable",error:`Detection failed: ${String(b)}`})}},connect:async()=>{let{url:c,token:d,manualOverrideDirty:e}=b();a({connecting:!0,error:void 0,reason:null});try{if(e&&c&&c.trim()){let a=await fetch("/api/gateway/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:c,token:d})});if(!a.ok){let b=await a.json().catch(()=>({error:"Failed to save gateway configuration"}));throw Error("string"==typeof b?.error?b.error:"Failed to save gateway configuration")}}let f=await fetch("/api/gateway/status");if(!f.ok)throw Error("Failed to check gateway status");let g=await f.json();g.connected?(a({connected:!0,connecting:!1,agentName:g.agentName||b().agentName,source:e?"clawpad.override":g.source||b().source,manualOverrideDirty:!1,reason:null,error:void 0}),b().loadSessions()):a({connected:!1,connecting:!1,reason:g.reason??"gateway_unreachable",error:g.error||`Cannot connect to ${c}`})}catch(b){a({connected:!1,connecting:!1,reason:"server_unreachable",error:`ClawPad server unreachable: ${String(b)}`})}},disconnect:()=>{a({connected:!1,connecting:!1,wsStatus:"disconnected",reason:null,sessions:[],agentStatus:"idle",error:void 0})},loadSessions:async()=>{try{let b=await fetch("/api/gateway/sessions");if(!b.ok)return;let c=(await b.json()).sessions??[],d=c.some(a=>"active"===a.status),e=c.some(a=>"thinking"===a.status);a({sessions:c,agentStatus:d?"active":e?"thinking":"idle"})}catch{}},setUrl:b=>a({url:b,manualOverrideDirty:!0}),setToken:b=>a({token:b||void 0,manualOverrideDirty:!0}),setWSStatus:(c,d)=>{a({wsStatus:c,wsError:"connected"===c?void 0:d?.error}),"connected"===c?a({connected:!0,connecting:!1,reason:null,error:void 0}):"connecting"===c||"reconnecting"===c?a({connected:!1,connecting:!0,reason:d?.reason??"gateway_unreachable"}):a({connected:!1,connecting:!1,reason:d?.reason??b().reason??"gateway_unreachable"})},setAgentStatus:b=>a({agentStatus:b})}))},98500:(a,b,c)=>{"use strict";c.d(b,{M:()=>l});var d=c(31417);function e(a){return a.toLowerCase().trim().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[\u{1F600}-\u{1F64F}\u{1F300}-\u{1F5FF}\u{1F680}-\u{1F6FF}\u{1F1E0}-\u{1F1FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}]/gu,"").replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}var f=c(88650);let g={spaces:null,recent:null,pages:new Map},h=1;function i(a){}function j(a){return a?a.split("/").map(a=>e(a)).filter(Boolean):[]}async function k(a,b){let c=new AbortController,d=setTimeout(()=>c.abort(),b.timeoutMs),e=()=>c.abort();b.signal.addEventListener("abort",e,{once:!0});try{let b=await fetch(a,{signal:c.signal});if(!b.ok)throw Error(`Request failed: ${b.status}`);return await b.json()}finally{clearTimeout(d),b.signal.removeEventListener("abort",e)}}let l=(0,d.v)((a,b)=>({spaces:[],expandedSpaces:new Set,expandedFolders:new Set,appearanceHydrated:!1,sidebarOpen:!0,sidebarWidth:240,activePage:null,recentPages:[],chatPanelOpen:!0,spacesStatus:"idle",recentStatus:"idle",pagesStatusBySpace:new Map,spacesError:null,recentError:null,pagesErrorBySpace:new Map,loadingSpaces:!1,loadingPages:new Map,pagesBySpace:new Map,lastLoadedAt:{spaces:null,recent:null,pagesBySpace:new Map},lastError:null,loadSpaces:async c=>{let d=c?.timeoutMs??8e3;if(g.spaces){if(!c?.force)return g.spaces.promise;g.spaces.controller.abort()}let e=h++,f=new AbortController,i=b().spaces.length>0;c?.silent&&i||a({spacesStatus:"loading",loadingSpaces:!0,spacesError:null});let j=(async()=>{try{let b=await k("/api/files/spaces",{timeoutMs:d,signal:f.signal});if(g.spaces?.requestId!==e)return;a(a=>({spaces:b,spacesStatus:"success",loadingSpaces:!1,spacesError:null,lastError:null,lastLoadedAt:{...a.lastLoadedAt,spaces:Date.now()}}))}catch(c){if(g.spaces?.requestId!==e)return;let b=c instanceof Error?"AbortError"===c.name?"Timed out loading spaces":c.message:"Failed to load spaces";a(a=>({spacesStatus:a.spaces.length>0?"success":"error",loadingSpaces:!1,spacesError:b,lastError:b}))}finally{g.spaces?.requestId===e&&(g.spaces=null)}})();return g.spaces={promise:j,controller:f,requestId:e},j},loadPages:async(c,d)=>{let e=d?.timeoutMs??8e3,f=g.pages.get(c);if(f){if(!d?.force)return f.promise;f.controller.abort()}let i=h++,j=new AbortController,l=(b().pagesBySpace.get(c)??[]).length>0;a(a=>{let b=new Map(a.pagesStatusBySpace),e=new Map(a.pagesErrorBySpace),f=new Map(a.loadingPages);return d?.silent&&l||b.set(c,"loading"),e.set(c,null),f.set(c,!0),{pagesStatusBySpace:b,pagesErrorBySpace:e,loadingPages:f}});let m=(async()=>{try{let b=await k(`/api/files/spaces/${encodeURIComponent(c)}/pages?recursive=true`,{timeoutMs:e,signal:j.signal}),d=g.pages.get(c);if(!d||d.requestId!==i)return;a(a=>{let d=new Map(a.pagesBySpace);d.set(c,b);let e=new Map(a.pagesStatusBySpace);e.set(c,"success");let f=new Map(a.pagesErrorBySpace);f.set(c,null);let g=new Map(a.loadingPages);g.set(c,!1);let h=new Map(a.lastLoadedAt.pagesBySpace);return h.set(c,Date.now()),{pagesBySpace:d,pagesStatusBySpace:e,pagesErrorBySpace:f,loadingPages:g,lastError:null,lastLoadedAt:{...a.lastLoadedAt,pagesBySpace:h}}})}catch(e){let b=g.pages.get(c);if(!b||b.requestId!==i)return;let d=e instanceof Error?"AbortError"===e.name?`Timed out loading pages for ${c}`:e.message:`Failed to load pages for ${c}`;a(a=>{let b=(a.pagesBySpace.get(c)??[]).length>0,e=new Map(a.pagesStatusBySpace);e.set(c,b?"success":"error");let f=new Map(a.pagesErrorBySpace);f.set(c,d);let g=new Map(a.loadingPages);return g.set(c,!1),{pagesStatusBySpace:e,pagesErrorBySpace:f,loadingPages:g,lastError:d}})}finally{let a=g.pages.get(c);a?.requestId===i&&g.pages.delete(c)}})();return g.pages.set(c,{promise:m,controller:j,requestId:i}),m},loadRecentPages:async c=>{let d=c?.timeoutMs??8e3;if(g.recent){if(!c?.force)return g.recent.promise;g.recent.controller.abort()}let e=h++,f=new AbortController,i=b().recentPages.length>0;c?.silent&&i||a({recentStatus:"loading",recentError:null});let j=(async()=>{try{let b=await k("/api/files/recent?limit=5",{timeoutMs:d,signal:f.signal});if(g.recent?.requestId!==e)return;a(a=>({recentPages:b,recentStatus:"success",recentError:null,lastError:null,lastLoadedAt:{...a.lastLoadedAt,recent:Date.now()}}))}catch(c){if(g.recent?.requestId!==e)return;let b=c instanceof Error?"AbortError"===c.name?"Timed out loading recent pages":c.message:"Failed to load recent pages";a(a=>({recentStatus:a.recentPages.length>0?"success":"error",recentError:b,lastError:b}))}finally{g.recent?.requestId===e&&(g.recent=null)}})();return g.recent={promise:j,controller:f,requestId:e},j},setActivePage:b=>a(a=>{if(!b)return{activePage:null};let c=b.replace(/\.md$/,"").split("/").filter(Boolean);if(c.length<=1)return{activePage:b};let d=c[0],e=a.spaces.some(a=>a.path===d),g=e?d:f.Sz,h=e?c.slice(1,-1):c.slice(0,-1),i=new Set(a.expandedFolders),j=g;for(let a of h)j=`${j}/${a}`,i.add(j);return{activePage:b,expandedFolders:i}}),toggleSpace:c=>{let{expandedSpaces:d,pagesBySpace:e}=b(),f=new Set(d);f.has(c)?f.delete(c):(f.add(c),e.has(c)||b().loadPages(c)),a({expandedSpaces:f})},toggleFolder:c=>{let{expandedFolders:d}=b(),e=new Set(d);e.has(c)?e.delete(c):e.add(c),a({expandedFolders:e})},toggleSidebar:()=>a(a=>{let b=!a.sidebarOpen;return i(b),{sidebarOpen:b}}),hydrateAppearance:()=>{b().appearanceHydrated||a(a=>({appearanceHydrated:!0,sidebarOpen:!0,sidebarWidth:Number.isFinite(240)&&!0?240:a.sidebarWidth}))},setSidebarOpen:b=>{a({sidebarOpen:b})},setSidebarWidth:c=>{b().sidebarWidth!==c&&a({sidebarWidth:c})},toggleChatPanel:()=>a(a=>({chatPanelOpen:!a.chatPanelOpen})),setChatPanelOpen:b=>a({chatPanelOpen:b}),createSpace:async a=>{let c=e(a);if(!c)throw Error("Space name results in an empty folder name.");let d=await fetch("/api/files/spaces",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:c})});if(!d.ok){let a="Failed to create space";try{let b=await d.json();b?.error&&(a=b.error)}catch{}throw Error(a)}return await b().loadSpaces({force:!0,silent:!0}),c},createPage:async(c,d,g)=>{let h=e(d);if(!h)throw Error("Title results in an empty filename.");let i=j(g?.folderPath),k=[...c===f.Sz?i:[c,...i],h],l=k.join("/"),m=k.map(a=>encodeURIComponent(a)).join("/"),n=new Date().toISOString(),o=await fetch(`/api/files/pages/${m}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:`
1
+ exports.id=2470,exports.ids=[2470],exports.modules={9062:(a,b,c)=>{"use strict";c.d(b,{Toaster:()=>l});var d=c(48249),e=c(49681),f=c(41160),g=c(31675),h=c(2276),i=c(40560),j=c(8696),k=c(90707);let l=({...a})=>{let{theme:b="system"}=(0,j.D)();return(0,d.jsx)(k.l$,{theme:b,className:"toaster group",icons:{success:(0,d.jsx)(e.A,{className:"size-4"}),info:(0,d.jsx)(f.A,{className:"size-4"}),warning:(0,d.jsx)(g.A,{className:"size-4"}),error:(0,d.jsx)(h.A,{className:"size-4"}),loading:(0,d.jsx)(i.A,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},...a})}},13482:(a,b,c)=>{"use strict";c.d(b,{b:()=>d});let d=(0,c(31417).v)(a=>({lastEvent:void 0,events:[],updatedAt:void 0,addEvent:b=>a(a=>{let c=function(a,b){if(b)return b;let c=(a??"").toLowerCase();if(c){if("failed"===c)return"error";if("sent"===c)return"alert";if(c.startsWith("ok"))return"ok"}}(b.status,b.indicatorType),d={...b,indicatorType:c,actionable:"alert"===c||"error"===c},e=[d,...a.events];return e.length>20&&(e.length=20),{lastEvent:d,events:e,updatedAt:Date.now()}}),clear:()=>a({lastEvent:void 0,events:[],updatedAt:void 0})}))},23535:(a,b,c)=>{"use strict";c.d(b,{Providers:()=>n});var d=c(48249),e=c(8696),f=c(97638),g=c(5023),h=c(55296),i=c(67484),j=c(80405),k=c(97032),l=c(13482);function m(){return(0,k.z)(a=>a.detect),(0,k.z)(a=>a.connect),(0,j.e)(a=>a.addItem),(0,k.z)(a=>a.setWSStatus),(0,k.z)(a=>a.setAgentStatus),(0,l.b)(a=>a.addEvent),(0,i.useRef)(new Map),(0,i.useRef)(0),(0,i.useRef)(0),(0,i.useRef)(0),(0,j.e)(a=>a.addItem),(0,i.useRef)(null),(0,i.useRef)(new Set),(0,i.useRef)(!1),(0,i.useRef)(!1),(0,i.useRef)(null),null}function n({children:a}){let[b]=(0,i.useState)(()=>new f.E({defaultOptions:{queries:{staleTime:6e4,refetchOnWindowFocus:!1}}}));return(0,d.jsx)(e.N,{attribute:"class",defaultTheme:"system",enableSystem:!0,disableTransitionOnChange:!0,children:(0,d.jsx)(g.Ht,{client:b,children:(0,d.jsxs)(h.Bc,{delayDuration:300,children:[(0,d.jsx)(m,{}),a]})})})}c(98500),c(34351),c(88650)},27728:(a,b,c)=>{"use strict";c.d(b,{Toaster:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call Toaster() from the server but Toaster is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/clawpad/clawpad/src/components/ui/sonner.tsx","Toaster")},34351:(a,b,c)=>{"use strict";c.d(b,{W:()=>d});let d=(0,c(31417).v)((a,b)=>({sessionKey:null,activeRun:null,activeFiles:new Set,lastFileTouchAt:null,changeSets:[],review:{open:!1,changeSetId:null,filePath:null},dismissed:new Set,loading:!1,error:void 0,setSessionKey:b=>a({sessionKey:b}),setActiveRun:b=>a({activeRun:b,...b?{}:{lastFileTouchAt:null}}),touchFile:b=>a(a=>{let c=new Set(a.activeFiles);return c.add(b),{activeFiles:c,lastFileTouchAt:Date.now()}}),clearActiveFiles:()=>a({activeFiles:new Set,lastFileTouchAt:null}),loadChangeSets:async()=>{let c=b().sessionKey;if(c){a({loading:!0,error:void 0});try{let b=await fetch(`/api/changes?sessionKey=${encodeURIComponent(c)}`);if(!b.ok)throw Error("Failed to load change sets");let d=await b.json();a({changeSets:d,loading:!1})}catch(b){a({loading:!1,error:String(b)})}}},openReview:(b,c)=>a({review:{open:!0,changeSetId:b,filePath:c}}),closeReview:()=>a({review:{open:!1,changeSetId:null,filePath:null}}),dismissChangeSet:b=>a(a=>{let c=new Set(a.dismissed);return c.add(b),{dismissed:c}})}))},41044:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95547,23))},41560:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95547,23)),Promise.resolve().then(c.t.bind(c,15098,23)),Promise.resolve().then(c.t.bind(c,47644,23)),Promise.resolve().then(c.t.bind(c,33859,23)),Promise.resolve().then(c.t.bind(c,98099,23)),Promise.resolve().then(c.t.bind(c,16237,23)),Promise.resolve().then(c.t.bind(c,98562,23)),Promise.resolve().then(c.t.bind(c,36675,23))},42893:(a,b,c)=>{"use strict";c.d(b,{cn:()=>f});var d=c(99314),e=c(96862);function f(...a){return(0,e.QP)((0,d.$)(a))}},51288:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81921,23)),Promise.resolve().then(c.t.bind(c,60440,23)),Promise.resolve().then(c.t.bind(c,84342,23)),Promise.resolve().then(c.t.bind(c,82265,23)),Promise.resolve().then(c.t.bind(c,35421,23)),Promise.resolve().then(c.t.bind(c,61335,23)),Promise.resolve().then(c.t.bind(c,70664,23)),Promise.resolve().then(c.bind(c,74661))},55296:(a,b,c)=>{"use strict";c.d(b,{Bc:()=>g,ZI:()=>j,k$:()=>i,m_:()=>h});var d=c(48249);c(67484);var e=c(33159),f=c(42893);function g({delayDuration:a=0,...b}){return(0,d.jsx)(e.Provider,{"data-slot":"tooltip-provider",delayDuration:a,...b})}function h({...a}){return(0,d.jsx)(g,{children:(0,d.jsx)(e.Root,{"data-slot":"tooltip",...a})})}function i({...a}){return(0,d.jsx)(e.Trigger,{"data-slot":"tooltip-trigger",...a})}function j({className:a,sideOffset:b=0,children:c,...g}){return(0,d.jsx)(e.Portal,{children:(0,d.jsxs)(e.Content,{"data-slot":"tooltip-content",sideOffset:b,className:(0,f.cn)("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",a),...g,children:[c,(0,d.jsx)(e.Arrow,{className:"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}},61135:()=>{},70440:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(88868);let e=async a=>[{type:"image/x-icon",sizes:"256x256",url:(0,d.fillMetadataSegment)(".",await a.params,"favicon.ico")+"?50c20623341a5f1c"}]},73736:(a,b,c)=>{"use strict";c.d(b,{Providers:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call Providers() from the server but Providers is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/clawpad/clawpad/src/components/providers.tsx","Providers")},76537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>l,metadata:()=>k});var d=c(5735),e=c(64264),f=c.n(e),g=c(37936),h=c.n(g),i=c(73736),j=c(27728);c(61135);let k={title:"ClawPad",description:"The workspace for OpenClaw",icons:{icon:[{url:"/favicon.ico"},{url:"/favicon.png",type:"image/png"}],apple:"/brand/apple-touch-icon.png"}};function l({children:a}){return(0,d.jsx)("html",{lang:"en",suppressHydrationWarning:!0,className:`${h().variable} ${f().variable}`,children:(0,d.jsx)("body",{className:"font-sans antialiased",children:(0,d.jsxs)(i.Providers,{children:[a,(0,d.jsx)(j.Toaster,{})]})})})}},80405:(a,b,c)=>{"use strict";c.d(b,{e:()=>f});var d=c(31417);let e=0,f=(0,d.v)(a=>({items:[],addItem:b=>a(a=>({items:[{...b,id:`activity-${Date.now()}-${++e}`},...a.items].slice(0,20)})),clear:()=>a({items:[]})}))},88650:(a,b,c)=>{"use strict";c.d(b,{Sz:()=>d,ke:()=>e});let d="__root__",e="General"},88939:(a,b,c)=>{Promise.resolve().then(c.bind(c,23535)),Promise.resolve().then(c.bind(c,9062))},93780:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81921,23))},94515:(a,b,c)=>{Promise.resolve().then(c.bind(c,73736)),Promise.resolve().then(c.bind(c,27728))},97032:(a,b,c)=>{"use strict";c.d(b,{z:()=>f});var d=c(31417);let e="http://127.0.0.1:18789",f=(0,d.v)((a,b)=>({connected:!1,connecting:!1,wsStatus:"disconnected",wsError:void 0,reason:null,url:e,token:void 0,agentName:void 0,source:void 0,sessions:[],agentStatus:"idle",error:void 0,manualOverrideDirty:!1,detect:async b=>{try{b?.resetManual&&await fetch("/api/gateway/config",{method:"DELETE"}).catch(()=>void 0);let c=await fetch("/api/gateway/detect");if(!c.ok)throw Error("Failed to detect gateway");let d=await c.json();d&&a({url:d.url||e,token:d.token||void 0,agentName:d.agentName||void 0,source:d.source||void 0,manualOverrideDirty:!1})}catch(b){a({reason:"server_unreachable",error:`Detection failed: ${String(b)}`})}},connect:async()=>{let{url:c,token:d,manualOverrideDirty:e}=b();a({connecting:!0,error:void 0,reason:null});try{if(e&&c&&c.trim()){let a=await fetch("/api/gateway/config",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:c,token:d})});if(!a.ok){let b=await a.json().catch(()=>({error:"Failed to save gateway configuration"}));throw Error("string"==typeof b?.error?b.error:"Failed to save gateway configuration")}}let f=await fetch("/api/gateway/status");if(!f.ok)throw Error("Failed to check gateway status");let g=await f.json();g.connected?(a({connected:!0,connecting:!1,agentName:g.agentName||b().agentName,source:e?"clawpad.override":g.source||b().source,manualOverrideDirty:!1,reason:null,error:void 0}),b().loadSessions()):a({connected:!1,connecting:!1,reason:g.reason??"gateway_unreachable",error:g.error||`Cannot connect to ${c}`})}catch(b){a({connected:!1,connecting:!1,reason:"server_unreachable",error:`ClawPad server unreachable: ${String(b)}`})}},disconnect:()=>{a({connected:!1,connecting:!1,wsStatus:"disconnected",reason:null,sessions:[],agentStatus:"idle",error:void 0})},loadSessions:async()=>{try{let b=await fetch("/api/gateway/sessions");if(!b.ok)return;let c=(await b.json()).sessions??[],d=c.some(a=>"active"===a.status),e=c.some(a=>"thinking"===a.status);a({sessions:c,agentStatus:d?"active":e?"thinking":"idle"})}catch{}},setUrl:b=>a({url:b,manualOverrideDirty:!0}),setToken:b=>a({token:b||void 0,manualOverrideDirty:!0}),setWSStatus:(c,d)=>{a({wsStatus:c,wsError:"connected"===c?void 0:d?.error}),"connected"===c?a({connected:!0,connecting:!1,reason:null,error:void 0}):"connecting"===c||"reconnecting"===c?a({connected:!1,connecting:!0,reason:d?.reason??"gateway_unreachable"}):a({connected:!1,connecting:!1,reason:d?.reason??b().reason??"gateway_unreachable"})},setAgentStatus:b=>a({agentStatus:b})}))},98500:(a,b,c)=>{"use strict";c.d(b,{M:()=>l});var d=c(31417);function e(a){return a.toLowerCase().trim().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[\u{1F600}-\u{1F64F}\u{1F300}-\u{1F5FF}\u{1F680}-\u{1F6FF}\u{1F1E0}-\u{1F1FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}]/gu,"").replace(/[^a-z0-9-]+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}var f=c(88650);let g={spaces:null,recent:null,pages:new Map},h=1;function i(a){}function j(a){return a?a.split("/").map(a=>e(a)).filter(Boolean):[]}async function k(a,b){let c=new AbortController,d=setTimeout(()=>c.abort(),b.timeoutMs),e=()=>c.abort();b.signal.addEventListener("abort",e,{once:!0});try{let b=await fetch(a,{signal:c.signal});if(!b.ok)throw Error(`Request failed: ${b.status}`);return await b.json()}finally{clearTimeout(d),b.signal.removeEventListener("abort",e)}}let l=(0,d.v)((a,b)=>({spaces:[],expandedSpaces:new Set,expandedFolders:new Set,appearanceHydrated:!1,sidebarOpen:!0,sidebarWidth:240,activePage:null,recentPages:[],chatPanelOpen:!0,spacesStatus:"idle",recentStatus:"idle",pagesStatusBySpace:new Map,spacesError:null,recentError:null,pagesErrorBySpace:new Map,loadingSpaces:!1,loadingPages:new Map,pagesBySpace:new Map,lastLoadedAt:{spaces:null,recent:null,pagesBySpace:new Map},lastError:null,loadSpaces:async c=>{let d=c?.timeoutMs??8e3;if(g.spaces){if(!c?.force)return g.spaces.promise;g.spaces.controller.abort()}let e=h++,f=new AbortController,i=b().spaces.length>0;c?.silent&&i||a({spacesStatus:"loading",loadingSpaces:!0,spacesError:null});let j=(async()=>{try{let b=await k("/api/files/spaces",{timeoutMs:d,signal:f.signal});if(g.spaces?.requestId!==e)return;a(a=>({spaces:b,spacesStatus:"success",loadingSpaces:!1,spacesError:null,lastError:null,lastLoadedAt:{...a.lastLoadedAt,spaces:Date.now()}}))}catch(c){if(g.spaces?.requestId!==e)return;let b=c instanceof Error?"AbortError"===c.name?"Timed out loading spaces":c.message:"Failed to load spaces";a(a=>({spacesStatus:a.spaces.length>0?"success":"error",loadingSpaces:!1,spacesError:b,lastError:b}))}finally{g.spaces?.requestId===e&&(g.spaces=null)}})();return g.spaces={promise:j,controller:f,requestId:e},j},loadPages:async(c,d)=>{let e=d?.timeoutMs??8e3,f=g.pages.get(c);if(f){if(!d?.force)return f.promise;f.controller.abort()}let i=h++,j=new AbortController,l=(b().pagesBySpace.get(c)??[]).length>0;a(a=>{let b=new Map(a.pagesStatusBySpace),e=new Map(a.pagesErrorBySpace),f=new Map(a.loadingPages);return d?.silent&&l||b.set(c,"loading"),e.set(c,null),f.set(c,!0),{pagesStatusBySpace:b,pagesErrorBySpace:e,loadingPages:f}});let m=(async()=>{try{let b=await k(`/api/files/spaces/${encodeURIComponent(c)}/pages?recursive=true`,{timeoutMs:e,signal:j.signal}),d=g.pages.get(c);if(!d||d.requestId!==i)return;a(a=>{let d=new Map(a.pagesBySpace);d.set(c,b);let e=new Map(a.pagesStatusBySpace);e.set(c,"success");let f=new Map(a.pagesErrorBySpace);f.set(c,null);let g=new Map(a.loadingPages);g.set(c,!1);let h=new Map(a.lastLoadedAt.pagesBySpace);return h.set(c,Date.now()),{pagesBySpace:d,pagesStatusBySpace:e,pagesErrorBySpace:f,loadingPages:g,lastError:null,lastLoadedAt:{...a.lastLoadedAt,pagesBySpace:h}}})}catch(e){let b=g.pages.get(c);if(!b||b.requestId!==i)return;let d=e instanceof Error?"AbortError"===e.name?`Timed out loading pages for ${c}`:e.message:`Failed to load pages for ${c}`;a(a=>{let b=(a.pagesBySpace.get(c)??[]).length>0,e=new Map(a.pagesStatusBySpace);e.set(c,b?"success":"error");let f=new Map(a.pagesErrorBySpace);f.set(c,d);let g=new Map(a.loadingPages);return g.set(c,!1),{pagesStatusBySpace:e,pagesErrorBySpace:f,loadingPages:g,lastError:d}})}finally{let a=g.pages.get(c);a?.requestId===i&&g.pages.delete(c)}})();return g.pages.set(c,{promise:m,controller:j,requestId:i}),m},loadRecentPages:async c=>{let d=c?.timeoutMs??8e3;if(g.recent){if(!c?.force)return g.recent.promise;g.recent.controller.abort()}let e=h++,f=new AbortController,i=b().recentPages.length>0;c?.silent&&i||a({recentStatus:"loading",recentError:null});let j=(async()=>{try{let b=await k("/api/files/recent?limit=5",{timeoutMs:d,signal:f.signal});if(g.recent?.requestId!==e)return;a(a=>({recentPages:b,recentStatus:"success",recentError:null,lastError:null,lastLoadedAt:{...a.lastLoadedAt,recent:Date.now()}}))}catch(c){if(g.recent?.requestId!==e)return;let b=c instanceof Error?"AbortError"===c.name?"Timed out loading recent pages":c.message:"Failed to load recent pages";a(a=>({recentStatus:a.recentPages.length>0?"success":"error",recentError:b,lastError:b}))}finally{g.recent?.requestId===e&&(g.recent=null)}})();return g.recent={promise:j,controller:f,requestId:e},j},setActivePage:b=>a(a=>{if(!b)return{activePage:null};let c=b.replace(/\.md$/,"").split("/").filter(Boolean);if(c.length<=1)return{activePage:b};let d=c[0],e=a.spaces.some(a=>a.path===d),g=e?d:f.Sz,h=e?c.slice(1,-1):c.slice(0,-1),i=new Set(a.expandedFolders),j=g;for(let a of h)j=`${j}/${a}`,i.add(j);return{activePage:b,expandedFolders:i}}),toggleSpace:c=>{let{expandedSpaces:d,pagesBySpace:e}=b(),f=new Set(d);f.has(c)?f.delete(c):(f.add(c),e.has(c)||b().loadPages(c)),a({expandedSpaces:f})},toggleFolder:c=>{let{expandedFolders:d}=b(),e=new Set(d);e.has(c)?e.delete(c):e.add(c),a({expandedFolders:e})},toggleSidebar:()=>a(a=>{let b=!a.sidebarOpen;return i(b),{sidebarOpen:b}}),hydrateAppearance:()=>{b().appearanceHydrated||a(a=>({appearanceHydrated:!0,sidebarOpen:!0,sidebarWidth:Number.isFinite(240)&&!0?240:a.sidebarWidth}))},setSidebarOpen:b=>{a({sidebarOpen:b})},setSidebarWidth:c=>{b().sidebarWidth!==c&&a({sidebarWidth:c})},toggleChatPanel:()=>a(a=>({chatPanelOpen:!a.chatPanelOpen})),setChatPanelOpen:b=>a({chatPanelOpen:b}),createSpace:async a=>{let c=e(a);if(!c)throw Error("Space name results in an empty folder name.");let d=await fetch("/api/files/spaces",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:c})});if(!d.ok){let a="Failed to create space";try{let b=await d.json();b?.error&&(a=b.error)}catch{}throw Error(a)}return await b().loadSpaces({force:!0,silent:!0}),c},createPage:async(c,d,g)=>{let h=e(d);if(!h)throw Error("Title results in an empty filename.");let i=j(g?.folderPath),k=[...c===f.Sz?i:[c,...i],h],l=k.join("/"),m=k.map(a=>encodeURIComponent(a)).join("/"),n=new Date().toISOString(),o=await fetch(`/api/files/pages/${m}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:`
2
2
  # ${d}
3
3
 
4
4
  `,meta:{title:d}})});if(!o.ok){let a="Failed to create page";try{let b=await o.json();b?.error&&(a=b.error)}catch{}throw Error(a)}let p=await o.json().catch(()=>null),q={title:d,path:`${l}.md`,space:c,icon:p?.meta?.icon,created:p?.meta?.created??n,modified:p?.meta?.modified??n,size:Number(p?.meta?.size??0),tags:Array.isArray(p?.meta?.tags)?p?.meta?.tags:void 0};return a(a=>{let b=[q,...a.recentPages.filter(a=>a.path!==q.path)].slice(0,5),d=new Map(a.pagesBySpace);if(d.has(c)){let a=d.get(c)??[];d.set(c,[q,...a.filter(a=>a.path!==q.path)])}return{recentPages:b,recentStatus:"success",pagesBySpace:d}}),b().loadRecentPages({force:!0,silent:!0}),b().pagesBySpace.has(c)&&b().loadPages(c,{force:!0,silent:!0}),b().loadSpaces({force:!0,silent:!0}),l},createFolder:async(a,c,d)=>{let f=j(c);if(0===f.length)throw Error("Folder path is empty.");let g=(d?.starterPageName??"README").trim();if(!e(g))throw Error("Starter page name is empty.");let h=f.join("/");return b().createPage(a,g,{folderPath:h})},deletePage:async c=>{let d=c.split("/").map(a=>encodeURIComponent(a)).join("/");if(!(await fetch(`/api/files/pages/${d}`,{method:"DELETE"})).ok)throw Error("Failed to delete page");let e=c.includes("/")?c.split("/")[0]:f.Sz;a(a=>{let b=a.recentPages.filter(a=>a.path!==c),d=new Map(a.pagesBySpace);if(d.has(e)){let a=d.get(e)??[];d.set(e,a.filter(a=>a.path!==c))}return{recentPages:b,pagesBySpace:d}}),b().loadPages(e,{force:!0,silent:!0}),b().loadRecentPages({force:!0,silent:!0}),b().loadSpaces({force:!0,silent:!0});let{activePage:g}=b();g===c&&a({activePage:null})}}))}};