clawpad 0.4.4 → 0.4.6

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 (145) 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 +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  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 +1 -1
  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 +1 -1
  23. package/.next/standalone/.next/server/app/api/ai/write/route.js +1 -1
  24. package/.next/standalone/.next/server/app/api/ai/write/route_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/api/changes/[id]/route_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/api/changes/record/route_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/api/changes/revert/route_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/api/changes/route.js +1 -1
  29. package/.next/standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/api/changes/run/route_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/api/chat/abort/route_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/api/chat/route_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/api/files/pages/[...path]/route_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/api/files/recent/route_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/api/files/search/route_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/api/files/spaces/[space]/pages/route_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/api/files/spaces/route_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/api/files/watch/route.js +1 -1
  39. package/.next/standalone/.next/server/app/api/files/watch/route_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/api/gateway/detect/route.js +1 -1
  41. package/.next/standalone/.next/server/app/api/gateway/detect/route_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/api/gateway/events/route.js +1 -1
  43. package/.next/standalone/.next/server/app/api/gateway/events/route_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/api/gateway/features/route_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/api/gateway/history/route_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/api/gateway/resolve/route_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/api/gateway/sessions/route.js +1 -1
  48. package/.next/standalone/.next/server/app/api/gateway/sessions/route_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/api/gateway/status/route.js +1 -1
  50. package/.next/standalone/.next/server/app/api/gateway/status/route_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/api/openclaw/commands/route.js +1 -1
  52. package/.next/standalone/.next/server/app/api/openclaw/commands/route_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/api/settings/search-status/route_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/api/setup/bootstrap/route_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/api/setup/bootstrap-workspace/route_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/api/setup/status/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/api/setup/trigger-onboarding/route_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/index.html +1 -1
  61. package/.next/standalone/.next/server/app/index.rsc +1 -1
  62. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  63. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  64. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  65. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  66. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  67. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/settings/connection/page_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/settings/connection.html +1 -1
  70. package/.next/standalone/.next/server/app/settings/connection.rsc +1 -1
  71. package/.next/standalone/.next/server/app/settings/connection.segments/_full.segment.rsc +1 -1
  72. package/.next/standalone/.next/server/app/settings/connection.segments/_head.segment.rsc +1 -1
  73. package/.next/standalone/.next/server/app/settings/connection.segments/_index.segment.rsc +1 -1
  74. package/.next/standalone/.next/server/app/settings/connection.segments/_tree.segment.rsc +1 -1
  75. package/.next/standalone/.next/server/app/settings/connection.segments/settings/connection/__PAGE__.segment.rsc +1 -1
  76. package/.next/standalone/.next/server/app/settings/connection.segments/settings/connection.segment.rsc +1 -1
  77. package/.next/standalone/.next/server/app/settings/connection.segments/settings.segment.rsc +1 -1
  78. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/settings/relay/page_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/settings/relay.html +1 -1
  81. package/.next/standalone/.next/server/app/settings/relay.rsc +1 -1
  82. package/.next/standalone/.next/server/app/settings/relay.segments/_full.segment.rsc +1 -1
  83. package/.next/standalone/.next/server/app/settings/relay.segments/_head.segment.rsc +1 -1
  84. package/.next/standalone/.next/server/app/settings/relay.segments/_index.segment.rsc +1 -1
  85. package/.next/standalone/.next/server/app/settings/relay.segments/_tree.segment.rsc +1 -1
  86. package/.next/standalone/.next/server/app/settings/relay.segments/settings/relay/__PAGE__.segment.rsc +1 -1
  87. package/.next/standalone/.next/server/app/settings/relay.segments/settings/relay.segment.rsc +1 -1
  88. package/.next/standalone/.next/server/app/settings/relay.segments/settings.segment.rsc +1 -1
  89. package/.next/standalone/.next/server/app/settings.html +1 -1
  90. package/.next/standalone/.next/server/app/settings.rsc +1 -1
  91. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  92. package/.next/standalone/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  93. package/.next/standalone/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  94. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  95. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
  96. package/.next/standalone/.next/server/app/settings.segments/settings.segment.rsc +1 -1
  97. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/setup.html +1 -1
  99. package/.next/standalone/.next/server/app/setup.rsc +1 -1
  100. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +1 -1
  101. package/.next/standalone/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  102. package/.next/standalone/.next/server/app/setup.segments/_index.segment.rsc +1 -1
  103. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
  104. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +1 -1
  105. package/.next/standalone/.next/server/app/setup.segments/setup.segment.rsc +1 -1
  106. package/.next/standalone/.next/server/app/waitlist/page_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/waitlist.html +1 -1
  108. package/.next/standalone/.next/server/app/waitlist.rsc +1 -1
  109. package/.next/standalone/.next/server/app/waitlist.segments/_full.segment.rsc +1 -1
  110. package/.next/standalone/.next/server/app/waitlist.segments/_head.segment.rsc +1 -1
  111. package/.next/standalone/.next/server/app/waitlist.segments/_index.segment.rsc +1 -1
  112. package/.next/standalone/.next/server/app/waitlist.segments/_tree.segment.rsc +1 -1
  113. package/.next/standalone/.next/server/app/waitlist.segments/waitlist/__PAGE__.segment.rsc +1 -1
  114. package/.next/standalone/.next/server/app/waitlist.segments/waitlist.segment.rsc +1 -1
  115. package/.next/standalone/.next/server/app/workspace/[...path]/page_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/workspace/page_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/workspace/search/page_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/workspace/search.html +2 -2
  119. package/.next/standalone/.next/server/app/workspace/search.rsc +1 -1
  120. package/.next/standalone/.next/server/app/workspace/search.segments/_full.segment.rsc +1 -1
  121. package/.next/standalone/.next/server/app/workspace/search.segments/_head.segment.rsc +1 -1
  122. package/.next/standalone/.next/server/app/workspace/search.segments/_index.segment.rsc +1 -1
  123. package/.next/standalone/.next/server/app/workspace/search.segments/_tree.segment.rsc +1 -1
  124. package/.next/standalone/.next/server/app/workspace/search.segments/workspace/search/__PAGE__.segment.rsc +1 -1
  125. package/.next/standalone/.next/server/app/workspace/search.segments/workspace/search.segment.rsc +1 -1
  126. package/.next/standalone/.next/server/app/workspace/search.segments/workspace.segment.rsc +1 -1
  127. package/.next/standalone/.next/server/app/workspace.html +2 -2
  128. package/.next/standalone/.next/server/app/workspace.rsc +1 -1
  129. package/.next/standalone/.next/server/app/workspace.segments/_full.segment.rsc +1 -1
  130. package/.next/standalone/.next/server/app/workspace.segments/_head.segment.rsc +1 -1
  131. package/.next/standalone/.next/server/app/workspace.segments/_index.segment.rsc +1 -1
  132. package/.next/standalone/.next/server/app/workspace.segments/_tree.segment.rsc +1 -1
  133. package/.next/standalone/.next/server/app/workspace.segments/workspace/__PAGE__.segment.rsc +1 -1
  134. package/.next/standalone/.next/server/app/workspace.segments/workspace.segment.rsc +1 -1
  135. package/.next/standalone/.next/server/app-paths-manifest.json +8 -8
  136. package/.next/standalone/.next/server/chunks/3016.js +1 -1
  137. package/.next/standalone/.next/server/chunks/534.js +1 -1
  138. package/.next/standalone/.next/server/chunks/8349.js +1 -1
  139. package/.next/standalone/.next/server/pages/404.html +1 -1
  140. package/.next/standalone/.next/server/pages/500.html +2 -2
  141. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  142. package/.next/standalone/package.json +1 -1
  143. package/package.json +1 -1
  144. /package/.next/static/{q8WBS9VWbJZgklpdqB8tX → CkqFlpCjRdWenNWQme1sl}/_buildManifest.js +0 -0
  145. /package/.next/static/{q8WBS9VWbJZgklpdqB8tX → CkqFlpCjRdWenNWQme1sl}/_ssgManifest.js +0 -0
@@ -1,2 +1,2 @@
1
- <!DOCTYPE html><!--q8WBS9VWbJZgklpdqB8tX--><html lang="en" class="__variable_245d8d __variable_97c177"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/27834908180db20f-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/78fec81b34c4a365.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/a6a6c7db5d43079b.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/b5d2bd8e17641061.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-d35467e84f0e8517.js"/><script src="/_next/static/chunks/4bd1b696-e5d7c65570c947b7.js" async=""></script><script src="/_next/static/chunks/3794-337d1ca25ad99a89.js" async=""></script><script src="/_next/static/chunks/main-app-a1f34f01f7efbb58.js" async=""></script><script src="/_next/static/chunks/330-60f33582af3e15a5.js" async=""></script><script src="/_next/static/chunks/7300-9984bd6aa378227a.js" async=""></script><script src="/_next/static/chunks/6609-078a8cdc853f87c6.js" async=""></script><script src="/_next/static/chunks/8935-b62f5c8bf50ff5e8.js" async=""></script><script src="/_next/static/chunks/112-8da50d6fab374e89.js" async=""></script><script src="/_next/static/chunks/1178-f2f0bd687a63b9f8.js" async=""></script><script src="/_next/static/chunks/app/layout-df1bcd23e841ae19.js" async=""></script><script src="/_next/static/chunks/ba12c10f-60ae8f6a2f0b4dd3.js" async=""></script><script src="/_next/static/chunks/4559-722e02df6a03e69f.js" async=""></script><script src="/_next/static/chunks/5403-0bffd8f59627ffd1.js" async=""></script><script src="/_next/static/chunks/9352-dcb425f6cf5347f4.js" async=""></script><script src="/_next/static/chunks/1285-4a6c410db884bf7b.js" async=""></script><script src="/_next/static/chunks/8550-1006bc90e28110d2.js" async=""></script><script src="/_next/static/chunks/9075-6844b0538e143748.js" async=""></script><script src="/_next/static/chunks/7230-ae3fcfca93b2ad80.js" async=""></script><script src="/_next/static/chunks/app/workspace/layout-e5fdab2463c57ef5.js" async=""></script><script src="/_next/static/chunks/app/workspace/page-e1500b07743ca666.js" async=""></script><meta name="next-size-adjust" content=""/><title>ClawPad</title><meta name="description" content="The workspace for OpenClaw"/><link rel="icon" href="/favicon.ico?50c20623341a5f1c" type="image/x-icon" sizes="256x256"/><link rel="icon" href="/favicon.ico"/><link rel="icon" href="/favicon.png" type="image/png"/><link rel="apple-touch-icon" href="/brand/apple-touch-icon.png"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="flex h-screen overflow-hidden"><div class="relative flex h-full shrink-0 flex-col border-r bg-sidebar" style="width:240px;min-width:208px;max-width:35vw"><div class="flex h-12 shrink-0 items-center justify-between px-3"><a class="flex items-center gap-2 text-[13px] font-semibold leading-none transition-colors hover:text-foreground/80" href="/workspace"><span class="inline-flex items-center -translate-y-[2px]"><img alt="ClawPad" loading="lazy" width="127" height="26" decoding="async" data-nimg="1" class="block" style="color:transparent" srcSet="/_next/image?url=%2Fbrand%2Flogo.png&amp;w=128&amp;q=75 1x, /_next/image?url=%2Fbrand%2Flogo.png&amp;w=256&amp;q=75 2x" src="/_next/image?url=%2Fbrand%2Flogo.png&amp;w=256&amp;q=75"/></span><span class="relative flex h-2.5 w-2.5" data-state="closed" data-slot="tooltip-trigger"><span class="relative inline-flex h-2.5 w-2.5 rounded-full ring-1 ring-[color:var(--cp-brand-border)] bg-zinc-400"></span></span></a><button data-slot="tooltip-trigger" data-variant="ghost" data-size="icon" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent dark:hover:bg-accent/50 size-9 h-7 w-7 text-muted-foreground hover:text-foreground" data-state="closed"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close h-4 w-4" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div><div class="flex-1 min-h-0 min-w-0 overflow-hidden"><div class="flex h-full w-full flex-col overflow-hidden"><div class="shrink-0 space-y-0.5 px-2"><button type="button" class="relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] transition-colors duration-200 pointer-events-auto text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground py-1.5"><span class="shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search h-4 w-4" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg></span><span class="flex-1 min-w-0 truncate text-left">Search</span><kbd class="shrink-0 rounded border border-border/70 bg-muted/70 px-1.5 py-0.5 text-[11px] font-mono font-medium leading-none tracking-tight text-muted-foreground/85">⌘K</kbd></button><button type="button" class="relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] transition-colors duration-200 pointer-events-auto text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground py-1.5"><span class="shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></span><span class="flex-1 min-w-0 truncate text-left">New Document</span><kbd class="shrink-0 rounded border border-border/70 bg-muted/70 px-1.5 py-0.5 text-[11px] font-mono font-medium leading-none tracking-tight text-muted-foreground/85">⌘N</kbd></button><button type="button" class="relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] transition-colors duration-200 pointer-events-auto text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground py-1.5"><span class="shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-plus h-4 w-4" aria-hidden="true"><path d="M12 10v6"></path><path d="M9 13h6"></path><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"></path></svg></span><span class="flex-1 min-w-0 truncate text-left">New Space</span></button></div><div data-orientation="horizontal" role="none" data-slot="separator" class="bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px my-2 shrink-0"></div><div dir="ltr" data-slot="scroll-area" class="relative min-h-0 flex-1 w-full min-w-0 px-2" style="position:relative;--radix-scroll-area-corner-width:0px;--radix-scroll-area-corner-height:0px"><style>[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}</style><div data-radix-scroll-area-viewport="" data-slot="scroll-area-viewport" class="focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&amp;&gt;div]:!block [&amp;&gt;div]:!min-w-0" style="overflow-x:hidden;overflow-y:hidden"><div style="min-width:100%;display:table"><div class="w-full py-1"><h3 class="mb-1 px-2 text-[11px] font-medium uppercase tracking-wider text-muted-foreground">Spaces</h3><p class="px-2 py-2 text-xs text-muted-foreground">No spaces yet</p></div></div></div></div><div data-orientation="horizontal" role="none" data-slot="separator" class="bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px shrink-0"></div><div class="shrink-0 space-y-0.5 px-2 py-2"><div class="flex items-center gap-2 rounded-md px-2 py-1.5 text-[13px]"><span class="relative flex h-2 w-2"><span class="relative inline-flex h-2 w-2 rounded-full bg-red-400"></span></span><span class="flex-1 text-[11px] text-muted-foreground">Disconnected</span><button class="text-[10px] text-blue-500 hover:text-blue-400 transition-colors">Retry</button></div><button type="button" class="relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] transition-colors duration-200 pointer-events-auto text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground py-1.5"><span class="shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun hidden h-4 w-4 dark:inline" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon inline h-4 w-4 dark:hidden" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg></span><span class="flex-1 min-w-0 truncate text-left"><span class="hidden dark:inline">Light Mode</span><span class="inline dark:hidden">Dark Mode</span></span></button><button type="button" class="relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] transition-colors duration-200 pointer-events-auto text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground py-1.5"><span class="shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings h-4 w-4" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></span><span class="flex-1 min-w-0 truncate text-left">Settings</span></button></div></div></div><div role="separator" aria-orientation="vertical" aria-label="Resize sidebar" class="absolute right-0 top-0 z-20 h-full w-2 cursor-col-resize group"><div class="absolute inset-y-0 right-0 w-px bg-border/70 transition-colors group-hover:bg-[color:var(--cp-brand-2)]"></div></div></div><main class="workspace-scroll-area relative z-0 flex-1 overflow-y-auto"><!--$--><div class="flex h-full items-center justify-center text-sm text-muted-foreground">Loading workspace...</div><!--$--><!--/$--><!--/$--></main><!--$?--><template id="B:0"></template><div class="flex h-full w-full flex-col p-4 gap-4"><div data-slot="skeleton" class="bg-accent animate-pulse rounded-md h-8 w-32"></div><div class="flex-1 space-y-3"><div data-slot="skeleton" class="bg-accent animate-pulse rounded-md h-16 w-3/4 ml-auto"></div><div data-slot="skeleton" class="bg-accent animate-pulse rounded-md h-24 w-4/5"></div><div data-slot="skeleton" class="bg-accent animate-pulse rounded-md h-16 w-2/3 ml-auto"></div></div><div data-slot="skeleton" class="bg-accent animate-pulse rounded-md h-12 w-full"></div></div><!--/$--></div><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><script>requestAnimationFrame(function(){$RT=performance.now()});</script><script src="/_next/static/chunks/webpack-d35467e84f0e8517.js" id="_R_" async=""></script><div hidden id="S:0"><div class="relative flex flex-col bg-background h-full shrink-0 border-l" style="width:600px;min-width:400px;max-width:40vw"><div role="separator" aria-orientation="vertical" aria-label="Resize chat panel" class="absolute left-0 top-0 z-20 h-full w-2 cursor-col-resize group"><div class="absolute inset-y-0 left-0 w-px bg-border/70 transition-colors group-hover:bg-[color:var(--cp-brand-2)]"></div></div><div class="flex shrink-0 items-center justify-between border-b px-4 h-12"><div class="flex items-center gap-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles h-4 w-4 shrink-0 text-[color:var(--cp-brand-2)]" aria-hidden="true"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path><path d="M20 2v4"></path><path d="M22 4h-4"></path><circle cx="4" cy="20" r="2"></circle></svg><span class="text-sm font-medium">Chat</span><span class="relative flex h-2 w-2" title="disconnected"><span class="relative inline-flex h-2 w-2 rounded-full bg-zinc-300 dark:bg-zinc-600"></span></span></div><div class="flex items-center gap-1"><button data-slot="button" data-variant="ghost" data-size="icon" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent dark:hover:bg-accent/50 size-9 h-8 w-8 text-muted-foreground hover:text-foreground" title="Show details" aria-pressed="false" aria-label="Show details"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eye h-4 w-4" aria-hidden="true"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg></button><button data-slot="button" data-variant="ghost" data-size="icon" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent dark:hover:bg-accent/50 size-9 h-8 w-8 text-muted-foreground hover:text-foreground" title="New chat"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square-plus h-4 w-4" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path><path d="M12 8v6"></path><path d="M9 11h6"></path></svg></button></div></div><div class="border-b border-amber-500/30 bg-amber-500/10 px-4 py-2 text-xs text-amber-700 dark:text-amber-300">OpenClaw gateway is unavailable. Start or restart the gateway to resume chat.</div><div class="flex-1 min-h-0 min-w-0 overflow-y-auto"><div class="relative flex min-h-full flex-col gap-4 p-4 pb-[calc(8rem+env(safe-area-inset-bottom,0px))] min-w-0 overflow-hidden"><div class="flex items-center justify-center gap-2 py-8 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3.5 w-3.5 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg><span class="text-xs">Loading history…</span></div></div></div><div class="shrink-0 border-t p-4"><form class="w-full"><input type="file" accept="image/png,image/jpeg,image/gif,image/webp" multiple="" class="hidden"/><div class="relative flex w-full flex-col gap-2 rounded-2xl border bg-muted/30 px-4 py-3 shadow-[0_2px_5px_rgba(0,0,0,0.04)] transition-shadow duration-150 focus-within:shadow-[0_8px_14px_rgba(0,0,0,0.08)]"><textarea placeholder="Ask your agent…" rows="2" class="w-full resize-none bg-transparent px-1 py-1 text-sm leading-relaxed placeholder:text-muted-foreground/80 focus:outline-none focus:ring-0 min-h-[44px] max-h-[150px]"></textarea><div class="flex items-center justify-between"><div class="flex items-center gap-2"><button data-slot="button" data-variant="ghost" data-size="icon" class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:hover:bg-accent/50 size-9 h-8 w-8 rounded-full text-muted-foreground/70 hover:text-foreground hover:bg-muted/60" type="button" title="Attach image" aria-label="Attach image" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button></div><button data-slot="button" data-variant="default" data-size="icon" class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-9 h-9 w-9 rounded-full bg-white text-black shadow-sm hover:bg-white/90" type="submit" aria-label="Send message" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up h-4 w-4" aria-hidden="true"><path d="m5 12 7-7 7 7"></path><path d="M12 19V5"></path></svg></button></div></div></form></div></div></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
2
- $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[37279,[\"330\",\"static/chunks/330-60f33582af3e15a5.js\",\"7300\",\"static/chunks/7300-9984bd6aa378227a.js\",\"6609\",\"static/chunks/6609-078a8cdc853f87c6.js\",\"8935\",\"static/chunks/8935-b62f5c8bf50ff5e8.js\",\"112\",\"static/chunks/112-8da50d6fab374e89.js\",\"1178\",\"static/chunks/1178-f2f0bd687a63b9f8.js\",\"7177\",\"static/chunks/app/layout-df1bcd23e841ae19.js\"],\"Providers\"]\n3:I[57121,[],\"\"]\n4:I[74581,[],\"\"]\n5:I[25044,[\"330\",\"static/chunks/330-60f33582af3e15a5.js\",\"7300\",\"static/chunks/7300-9984bd6aa378227a.js\",\"6609\",\"static/chunks/6609-078a8cdc853f87c6.js\",\"8935\",\"static/chunks/8935-b62f5c8bf50ff5e8.js\",\"112\",\"static/chunks/112-8da50d6fab374e89.js\",\"1178\",\"static/chunks/1178-f2f0bd687a63b9f8.js\",\"7177\",\"static/chunks/app/layout-df1bcd23e841ae19.js\"],\"Toaster\"]\n6:I[78616,[],\"ClientSegmentRoot\"]\n7:I[24733,[\"8803\",\"static/chunks/ba12c10f-60ae8f6a2f0b4dd3.js\",\"330\",\"static/chunks/330-60f33582af3e15a5.js\",\"7300\",\"static/chunks/7300-9984bd6aa378227a.js\",\"4559\",\"static/chunks/4559-722e02df6a03e69f.js\",\"6609\",\"static/chunks/6609-078a8cdc853f87c6.js\",\"5403\",\"static/chunks/5403-0bffd8f59627ffd1.js\",\"8935\",\"static/chunks/8935-b62f5c8bf50ff5e8.js\",\"9352\",\"static/chunks/9352-dcb425f6cf5347f4.js\",\"1285\",\"static/chunks/1285-4a6c410db884bf7b.js\",\"8550\",\"static/chunks/8550-1006bc90e28110d2.js\",\"9075\",\"static/chunks/9075-6844b0538e143748.js\",\"7230\",\"static/chunks/7230-ae3fcfca93b2ad80.js\",\"1178\",\"static/chunks/1178-f2f0bd687a63b9f8.js\",\"1807\",\"static/chunks/app/workspace/layout-e5fdab2463c57ef5.js\"],\"default\"]\n9:I[61304,[],\"ClientPageRoot\"]\na:I[59176,[\"330\",\"static/chunks/330-60f33582af3e15a5.js\",\"5403\",\"static/chunks/5403-0bffd8f59627ffd1.js\",\"1178\",\"static/chunks/1178-f2f0bd687a63b9f8.js\",\"6364\",\"static/chunks/app/workspace/page-e1500b07743ca666.js\"],\"default\"]\nd:I[90484,[],\"OutletBoundary\"]\ne:\"$Sreact.suspense\"\n10:I[90484,[],\"ViewportBoundary\"]\n12:I[90484,[],\"MetadataBoundary\"]\n14:I[27123,[],\"\"]\n:HL[\"/_next/static/media/27834908180db20f-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/78fec81b34c4a365.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/a6a6c7db5d43079b.css\",\"style\"]\n:HL[\"/_next/static/css/b5d2bd8e17641061.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"q8WBS9VWbJZgklpdqB8tX\",\"c\":[\"\",\"workspace\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"workspace\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/a6a6c7db5d43079b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/b5d2bd8e17641061.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"className\":\"__variable_245d8d __variable_97c177\",\"children\":[\"$\",\"body\",null,{\"className\":\"font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L5\",null,{}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"Component\":\"$7\",\"slots\":{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]},\"serverProvidedParams\":{\"params\":{},\"promises\":[\"$@8\"]}}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L9\",null,{\"Component\":\"$a\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":\"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params\",\"promises\":[\"$@b\",\"$@c\"]}}],null,[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@f\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L10\",null,{\"children\":\"$L11\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L12\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L13\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:\"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params\"\nb:{}\nc:\"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"15:I[86869,[],\"IconMark\"]\nf:null\n13:[[\"$\",\"title\",\"0\",{\"children\":\"ClawPad\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"The workspace for OpenClaw\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?50c20623341a5f1c\",\"type\":\"image/x-icon\",\"sizes\":\"256x256\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.png\",\"type\":\"image/png\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/brand/apple-touch-icon.png\"}],[\"$\",\"$L15\",\"6\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><!--CkqFlpCjRdWenNWQme1sl--><html lang="en" class="__variable_245d8d __variable_97c177"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/27834908180db20f-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/78fec81b34c4a365.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/a6a6c7db5d43079b.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/b5d2bd8e17641061.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-d35467e84f0e8517.js"/><script src="/_next/static/chunks/4bd1b696-e5d7c65570c947b7.js" async=""></script><script src="/_next/static/chunks/3794-337d1ca25ad99a89.js" async=""></script><script src="/_next/static/chunks/main-app-a1f34f01f7efbb58.js" async=""></script><script src="/_next/static/chunks/330-60f33582af3e15a5.js" async=""></script><script src="/_next/static/chunks/7300-9984bd6aa378227a.js" async=""></script><script src="/_next/static/chunks/6609-078a8cdc853f87c6.js" async=""></script><script src="/_next/static/chunks/8935-b62f5c8bf50ff5e8.js" async=""></script><script src="/_next/static/chunks/112-8da50d6fab374e89.js" async=""></script><script src="/_next/static/chunks/1178-f2f0bd687a63b9f8.js" async=""></script><script src="/_next/static/chunks/app/layout-df1bcd23e841ae19.js" async=""></script><script src="/_next/static/chunks/ba12c10f-60ae8f6a2f0b4dd3.js" async=""></script><script src="/_next/static/chunks/4559-722e02df6a03e69f.js" async=""></script><script src="/_next/static/chunks/5403-0bffd8f59627ffd1.js" async=""></script><script src="/_next/static/chunks/9352-dcb425f6cf5347f4.js" async=""></script><script src="/_next/static/chunks/1285-4a6c410db884bf7b.js" async=""></script><script src="/_next/static/chunks/8550-1006bc90e28110d2.js" async=""></script><script src="/_next/static/chunks/9075-6844b0538e143748.js" async=""></script><script src="/_next/static/chunks/7230-ae3fcfca93b2ad80.js" async=""></script><script src="/_next/static/chunks/app/workspace/layout-e5fdab2463c57ef5.js" async=""></script><script src="/_next/static/chunks/app/workspace/page-e1500b07743ca666.js" async=""></script><meta name="next-size-adjust" content=""/><title>ClawPad</title><meta name="description" content="The workspace for OpenClaw"/><link rel="icon" href="/favicon.ico?50c20623341a5f1c" type="image/x-icon" sizes="256x256"/><link rel="icon" href="/favicon.ico"/><link rel="icon" href="/favicon.png" type="image/png"/><link rel="apple-touch-icon" href="/brand/apple-touch-icon.png"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="flex h-screen overflow-hidden"><div class="relative flex h-full shrink-0 flex-col border-r bg-sidebar" style="width:240px;min-width:208px;max-width:35vw"><div class="flex h-12 shrink-0 items-center justify-between px-3"><a class="flex items-center gap-2 text-[13px] font-semibold leading-none transition-colors hover:text-foreground/80" href="/workspace"><span class="inline-flex items-center -translate-y-[2px]"><img alt="ClawPad" loading="lazy" width="127" height="26" decoding="async" data-nimg="1" class="block" style="color:transparent" srcSet="/_next/image?url=%2Fbrand%2Flogo.png&amp;w=128&amp;q=75 1x, /_next/image?url=%2Fbrand%2Flogo.png&amp;w=256&amp;q=75 2x" src="/_next/image?url=%2Fbrand%2Flogo.png&amp;w=256&amp;q=75"/></span><span class="relative flex h-2.5 w-2.5" data-state="closed" data-slot="tooltip-trigger"><span class="relative inline-flex h-2.5 w-2.5 rounded-full ring-1 ring-[color:var(--cp-brand-border)] bg-zinc-400"></span></span></a><button data-slot="tooltip-trigger" data-variant="ghost" data-size="icon" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent dark:hover:bg-accent/50 size-9 h-7 w-7 text-muted-foreground hover:text-foreground" data-state="closed"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close h-4 w-4" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div><div class="flex-1 min-h-0 min-w-0 overflow-hidden"><div class="flex h-full w-full flex-col overflow-hidden"><div class="shrink-0 space-y-0.5 px-2"><button type="button" class="relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] transition-colors duration-200 pointer-events-auto text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground py-1.5"><span class="shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search h-4 w-4" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg></span><span class="flex-1 min-w-0 truncate text-left">Search</span><kbd class="shrink-0 rounded border border-border/70 bg-muted/70 px-1.5 py-0.5 text-[11px] font-mono font-medium leading-none tracking-tight text-muted-foreground/85">⌘K</kbd></button><button type="button" class="relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] transition-colors duration-200 pointer-events-auto text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground py-1.5"><span class="shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></span><span class="flex-1 min-w-0 truncate text-left">New Document</span><kbd class="shrink-0 rounded border border-border/70 bg-muted/70 px-1.5 py-0.5 text-[11px] font-mono font-medium leading-none tracking-tight text-muted-foreground/85">⌘N</kbd></button><button type="button" class="relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] transition-colors duration-200 pointer-events-auto text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground py-1.5"><span class="shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-plus h-4 w-4" aria-hidden="true"><path d="M12 10v6"></path><path d="M9 13h6"></path><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"></path></svg></span><span class="flex-1 min-w-0 truncate text-left">New Space</span></button></div><div data-orientation="horizontal" role="none" data-slot="separator" class="bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px my-2 shrink-0"></div><div dir="ltr" data-slot="scroll-area" class="relative min-h-0 flex-1 w-full min-w-0 px-2" style="position:relative;--radix-scroll-area-corner-width:0px;--radix-scroll-area-corner-height:0px"><style>[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}</style><div data-radix-scroll-area-viewport="" data-slot="scroll-area-viewport" class="focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&amp;&gt;div]:!block [&amp;&gt;div]:!min-w-0" style="overflow-x:hidden;overflow-y:hidden"><div style="min-width:100%;display:table"><div class="w-full py-1"><h3 class="mb-1 px-2 text-[11px] font-medium uppercase tracking-wider text-muted-foreground">Spaces</h3><p class="px-2 py-2 text-xs text-muted-foreground">No spaces yet</p></div></div></div></div><div data-orientation="horizontal" role="none" data-slot="separator" class="bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px shrink-0"></div><div class="shrink-0 space-y-0.5 px-2 py-2"><div class="flex items-center gap-2 rounded-md px-2 py-1.5 text-[13px]"><span class="relative flex h-2 w-2"><span class="relative inline-flex h-2 w-2 rounded-full bg-red-400"></span></span><span class="flex-1 text-[11px] text-muted-foreground">Disconnected</span><button class="text-[10px] text-blue-500 hover:text-blue-400 transition-colors">Retry</button></div><button type="button" class="relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] transition-colors duration-200 pointer-events-auto text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground py-1.5"><span class="shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun hidden h-4 w-4 dark:inline" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon inline h-4 w-4 dark:hidden" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg></span><span class="flex-1 min-w-0 truncate text-left"><span class="hidden dark:inline">Light Mode</span><span class="inline dark:hidden">Dark Mode</span></span></button><button type="button" class="relative z-[1] flex w-full min-w-0 cursor-pointer items-center gap-2 rounded-md px-2 text-[13px] transition-colors duration-200 pointer-events-auto text-muted-foreground hover:bg-sidebar-accent hover:text-sidebar-foreground py-1.5"><span class="shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings h-4 w-4" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></span><span class="flex-1 min-w-0 truncate text-left">Settings</span></button></div></div></div><div role="separator" aria-orientation="vertical" aria-label="Resize sidebar" class="absolute right-0 top-0 z-20 h-full w-2 cursor-col-resize group"><div class="absolute inset-y-0 right-0 w-px bg-border/70 transition-colors group-hover:bg-[color:var(--cp-brand-2)]"></div></div></div><main class="workspace-scroll-area relative z-0 flex-1 overflow-y-auto"><!--$--><div class="flex h-full items-center justify-center text-sm text-muted-foreground">Loading workspace...</div><!--$--><!--/$--><!--/$--></main><!--$?--><template id="B:0"></template><div class="flex h-full w-full flex-col p-4 gap-4"><div data-slot="skeleton" class="bg-accent animate-pulse rounded-md h-8 w-32"></div><div class="flex-1 space-y-3"><div data-slot="skeleton" class="bg-accent animate-pulse rounded-md h-16 w-3/4 ml-auto"></div><div data-slot="skeleton" class="bg-accent animate-pulse rounded-md h-24 w-4/5"></div><div data-slot="skeleton" class="bg-accent animate-pulse rounded-md h-16 w-2/3 ml-auto"></div></div><div data-slot="skeleton" class="bg-accent animate-pulse rounded-md h-12 w-full"></div></div><!--/$--></div><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><script>requestAnimationFrame(function(){$RT=performance.now()});</script><script src="/_next/static/chunks/webpack-d35467e84f0e8517.js" id="_R_" async=""></script><div hidden id="S:0"><div class="relative flex flex-col bg-background h-full shrink-0 border-l" style="width:600px;min-width:400px;max-width:40vw"><div role="separator" aria-orientation="vertical" aria-label="Resize chat panel" class="absolute left-0 top-0 z-20 h-full w-2 cursor-col-resize group"><div class="absolute inset-y-0 left-0 w-px bg-border/70 transition-colors group-hover:bg-[color:var(--cp-brand-2)]"></div></div><div class="flex shrink-0 items-center justify-between border-b px-4 h-12"><div class="flex items-center gap-2.5"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles h-4 w-4 shrink-0 text-[color:var(--cp-brand-2)]" aria-hidden="true"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path><path d="M20 2v4"></path><path d="M22 4h-4"></path><circle cx="4" cy="20" r="2"></circle></svg><span class="text-sm font-medium">Chat</span><span class="relative flex h-2 w-2" title="disconnected"><span class="relative inline-flex h-2 w-2 rounded-full bg-zinc-300 dark:bg-zinc-600"></span></span></div><div class="flex items-center gap-1"><button data-slot="button" data-variant="ghost" data-size="icon" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent dark:hover:bg-accent/50 size-9 h-8 w-8 text-muted-foreground hover:text-foreground" title="Show details" aria-pressed="false" aria-label="Show details"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eye h-4 w-4" aria-hidden="true"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg></button><button data-slot="button" data-variant="ghost" data-size="icon" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent dark:hover:bg-accent/50 size-9 h-8 w-8 text-muted-foreground hover:text-foreground" title="New chat"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square-plus h-4 w-4" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path><path d="M12 8v6"></path><path d="M9 11h6"></path></svg></button></div></div><div class="border-b border-amber-500/30 bg-amber-500/10 px-4 py-2 text-xs text-amber-700 dark:text-amber-300">OpenClaw gateway is unavailable. Start or restart the gateway to resume chat.</div><div class="flex-1 min-h-0 min-w-0 overflow-y-auto"><div class="relative flex min-h-full flex-col gap-4 p-4 pb-[calc(8rem+env(safe-area-inset-bottom,0px))] min-w-0 overflow-hidden"><div class="flex items-center justify-center gap-2 py-8 text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-3.5 w-3.5 animate-spin" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg><span class="text-xs">Loading history…</span></div></div></div><div class="shrink-0 border-t p-4"><form class="w-full"><input type="file" accept="image/png,image/jpeg,image/gif,image/webp" multiple="" class="hidden"/><div class="relative flex w-full flex-col gap-2 rounded-2xl border bg-muted/30 px-4 py-3 shadow-[0_2px_5px_rgba(0,0,0,0.04)] transition-shadow duration-150 focus-within:shadow-[0_8px_14px_rgba(0,0,0,0.08)]"><textarea placeholder="Ask your agent…" rows="2" class="w-full resize-none bg-transparent px-1 py-1 text-sm leading-relaxed placeholder:text-muted-foreground/80 focus:outline-none focus:ring-0 min-h-[44px] max-h-[150px]"></textarea><div class="flex items-center justify-between"><div class="flex items-center gap-2"><button data-slot="button" data-variant="ghost" data-size="icon" class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:hover:bg-accent/50 size-9 h-8 w-8 rounded-full text-muted-foreground/70 hover:text-foreground hover:bg-muted/60" type="button" title="Attach image" aria-label="Attach image" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></button></div><button data-slot="button" data-variant="default" data-size="icon" class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-9 h-9 w-9 rounded-full bg-white text-black shadow-sm hover:bg-white/90" type="submit" aria-label="Send message" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up h-4 w-4" aria-hidden="true"><path d="m5 12 7-7 7 7"></path><path d="M12 19V5"></path></svg></button></div></div></form></div></div></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
2
+ $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[37279,[\"330\",\"static/chunks/330-60f33582af3e15a5.js\",\"7300\",\"static/chunks/7300-9984bd6aa378227a.js\",\"6609\",\"static/chunks/6609-078a8cdc853f87c6.js\",\"8935\",\"static/chunks/8935-b62f5c8bf50ff5e8.js\",\"112\",\"static/chunks/112-8da50d6fab374e89.js\",\"1178\",\"static/chunks/1178-f2f0bd687a63b9f8.js\",\"7177\",\"static/chunks/app/layout-df1bcd23e841ae19.js\"],\"Providers\"]\n3:I[57121,[],\"\"]\n4:I[74581,[],\"\"]\n5:I[25044,[\"330\",\"static/chunks/330-60f33582af3e15a5.js\",\"7300\",\"static/chunks/7300-9984bd6aa378227a.js\",\"6609\",\"static/chunks/6609-078a8cdc853f87c6.js\",\"8935\",\"static/chunks/8935-b62f5c8bf50ff5e8.js\",\"112\",\"static/chunks/112-8da50d6fab374e89.js\",\"1178\",\"static/chunks/1178-f2f0bd687a63b9f8.js\",\"7177\",\"static/chunks/app/layout-df1bcd23e841ae19.js\"],\"Toaster\"]\n6:I[78616,[],\"ClientSegmentRoot\"]\n7:I[24733,[\"8803\",\"static/chunks/ba12c10f-60ae8f6a2f0b4dd3.js\",\"330\",\"static/chunks/330-60f33582af3e15a5.js\",\"7300\",\"static/chunks/7300-9984bd6aa378227a.js\",\"4559\",\"static/chunks/4559-722e02df6a03e69f.js\",\"6609\",\"static/chunks/6609-078a8cdc853f87c6.js\",\"5403\",\"static/chunks/5403-0bffd8f59627ffd1.js\",\"8935\",\"static/chunks/8935-b62f5c8bf50ff5e8.js\",\"9352\",\"static/chunks/9352-dcb425f6cf5347f4.js\",\"1285\",\"static/chunks/1285-4a6c410db884bf7b.js\",\"8550\",\"static/chunks/8550-1006bc90e28110d2.js\",\"9075\",\"static/chunks/9075-6844b0538e143748.js\",\"7230\",\"static/chunks/7230-ae3fcfca93b2ad80.js\",\"1178\",\"static/chunks/1178-f2f0bd687a63b9f8.js\",\"1807\",\"static/chunks/app/workspace/layout-e5fdab2463c57ef5.js\"],\"default\"]\n9:I[61304,[],\"ClientPageRoot\"]\na:I[59176,[\"330\",\"static/chunks/330-60f33582af3e15a5.js\",\"5403\",\"static/chunks/5403-0bffd8f59627ffd1.js\",\"1178\",\"static/chunks/1178-f2f0bd687a63b9f8.js\",\"6364\",\"static/chunks/app/workspace/page-e1500b07743ca666.js\"],\"default\"]\nd:I[90484,[],\"OutletBoundary\"]\ne:\"$Sreact.suspense\"\n10:I[90484,[],\"ViewportBoundary\"]\n12:I[90484,[],\"MetadataBoundary\"]\n14:I[27123,[],\"\"]\n:HL[\"/_next/static/media/27834908180db20f-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/78fec81b34c4a365.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/a6a6c7db5d43079b.css\",\"style\"]\n:HL[\"/_next/static/css/b5d2bd8e17641061.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"CkqFlpCjRdWenNWQme1sl\",\"c\":[\"\",\"workspace\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"workspace\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/a6a6c7db5d43079b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/b5d2bd8e17641061.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"className\":\"__variable_245d8d __variable_97c177\",\"children\":[\"$\",\"body\",null,{\"className\":\"font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L5\",null,{}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"Component\":\"$7\",\"slots\":{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]},\"serverProvidedParams\":{\"params\":{},\"promises\":[\"$@8\"]}}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L9\",null,{\"Component\":\"$a\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":\"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params\",\"promises\":[\"$@b\",\"$@c\"]}}],null,[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@f\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L10\",null,{\"children\":\"$L11\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L12\",null,{\"children\":[\"$\",\"$e\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L13\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:\"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params\"\nb:{}\nc:\"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"11:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"15:I[86869,[],\"IconMark\"]\nf:null\n13:[[\"$\",\"title\",\"0\",{\"children\":\"ClawPad\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"The workspace for OpenClaw\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?50c20623341a5f1c\",\"type\":\"image/x-icon\",\"sizes\":\"256x256\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.png\",\"type\":\"image/png\"}],[\"$\",\"link\",\"5\",{\"rel\":\"apple-touch-icon\",\"href\":\"/brand/apple-touch-icon.png\"}],[\"$\",\"$L15\",\"6\",{}]]\n"])</script></body></html>
@@ -16,7 +16,7 @@ e:"$Sreact.suspense"
16
16
  :HL["/_next/static/media/78fec81b34c4a365.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
17
  :HL["/_next/static/css/a6a6c7db5d43079b.css","style"]
18
18
  :HL["/_next/static/css/b5d2bd8e17641061.css","style"]
19
- 0:{"P":null,"b":"q8WBS9VWbJZgklpdqB8tX","c":["","workspace"],"q":"","i":false,"f":[[["",{"children":["workspace",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/a6a6c7db5d43079b.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/b5d2bd8e17641061.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"className":"__variable_245d8d __variable_97c177","children":["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"children":[["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$L5",null,{}]]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L6",null,{"Component":"$7","slots":{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"serverProvidedParams":{"params":{},"promises":["$@8"]}}]]}],{"children":[["$","$1","c",{"children":[["$","$L9",null,{"Component":"$a","serverProvidedParams":{"searchParams":{},"params":"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params","promises":["$@b","$@c"]}}],null,["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L10",null,{"children":"$L11"}],["$","div",null,{"hidden":true,"children":["$","$L12",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L13"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$14",[]],"S":true}
19
+ 0:{"P":null,"b":"CkqFlpCjRdWenNWQme1sl","c":["","workspace"],"q":"","i":false,"f":[[["",{"children":["workspace",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/a6a6c7db5d43079b.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/b5d2bd8e17641061.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"className":"__variable_245d8d __variable_97c177","children":["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"children":[["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$L5",null,{}]]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L6",null,{"Component":"$7","slots":{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"serverProvidedParams":{"params":{},"promises":["$@8"]}}]]}],{"children":[["$","$1","c",{"children":[["$","$L9",null,{"Component":"$a","serverProvidedParams":{"searchParams":{},"params":"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params","promises":["$@b","$@c"]}}],null,["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L10",null,{"children":"$L11"}],["$","div",null,{"hidden":true,"children":["$","$L12",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L13"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$14",[]],"S":true}
20
20
  8:"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params"
21
21
  b:{}
22
22
  c:"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params"
@@ -16,7 +16,7 @@ e:"$Sreact.suspense"
16
16
  :HL["/_next/static/media/78fec81b34c4a365.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
17
  :HL["/_next/static/css/a6a6c7db5d43079b.css","style"]
18
18
  :HL["/_next/static/css/b5d2bd8e17641061.css","style"]
19
- 0:{"P":null,"b":"q8WBS9VWbJZgklpdqB8tX","c":["","workspace"],"q":"","i":false,"f":[[["",{"children":["workspace",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/a6a6c7db5d43079b.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/b5d2bd8e17641061.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"className":"__variable_245d8d __variable_97c177","children":["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"children":[["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$L5",null,{}]]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L6",null,{"Component":"$7","slots":{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"serverProvidedParams":{"params":{},"promises":["$@8"]}}]]}],{"children":[["$","$1","c",{"children":[["$","$L9",null,{"Component":"$a","serverProvidedParams":{"searchParams":{},"params":"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params","promises":["$@b","$@c"]}}],null,["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L10",null,{"children":"$L11"}],["$","div",null,{"hidden":true,"children":["$","$L12",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L13"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$14",[]],"S":true}
19
+ 0:{"P":null,"b":"CkqFlpCjRdWenNWQme1sl","c":["","workspace"],"q":"","i":false,"f":[[["",{"children":["workspace",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/a6a6c7db5d43079b.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/b5d2bd8e17641061.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"className":"__variable_245d8d __variable_97c177","children":["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"children":[["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$L5",null,{}]]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L6",null,{"Component":"$7","slots":{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"serverProvidedParams":{"params":{},"promises":["$@8"]}}]]}],{"children":[["$","$1","c",{"children":[["$","$L9",null,{"Component":"$a","serverProvidedParams":{"searchParams":{},"params":"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params","promises":["$@b","$@c"]}}],null,["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L10",null,{"children":"$L11"}],["$","div",null,{"hidden":true,"children":["$","$L12",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L13"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$14",[]],"S":true}
20
20
  8:"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params"
21
21
  b:{}
22
22
  c:"$0:f:0:1:1:children:0:props:children:1:props:serverProvidedParams:params"
@@ -3,4 +3,4 @@
3
3
  3:I[90484,[],"MetadataBoundary"]
4
4
  4:"$Sreact.suspense"
5
5
  5:I[86869,[],"IconMark"]
6
- 0:{"buildId":"q8WBS9VWbJZgklpdqB8tX","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"ClawPad"}],["$","meta","1",{"name":"description","content":"The workspace for OpenClaw"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?50c20623341a5f1c","type":"image/x-icon","sizes":"256x256"}],["$","link","3",{"rel":"icon","href":"/favicon.ico"}],["$","link","4",{"rel":"icon","href":"/favicon.png","type":"image/png"}],["$","link","5",{"rel":"apple-touch-icon","href":"/brand/apple-touch-icon.png"}],["$","$L5","6",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false}
6
+ 0:{"buildId":"CkqFlpCjRdWenNWQme1sl","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"ClawPad"}],["$","meta","1",{"name":"description","content":"The workspace for OpenClaw"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?50c20623341a5f1c","type":"image/x-icon","sizes":"256x256"}],["$","link","3",{"rel":"icon","href":"/favicon.ico"}],["$","link","4",{"rel":"icon","href":"/favicon.png","type":"image/png"}],["$","link","5",{"rel":"apple-touch-icon","href":"/brand/apple-touch-icon.png"}],["$","$L5","6",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false}
@@ -5,4 +5,4 @@
5
5
  5:I[25044,["330","static/chunks/330-60f33582af3e15a5.js","7300","static/chunks/7300-9984bd6aa378227a.js","6609","static/chunks/6609-078a8cdc853f87c6.js","8935","static/chunks/8935-b62f5c8bf50ff5e8.js","112","static/chunks/112-8da50d6fab374e89.js","1178","static/chunks/1178-f2f0bd687a63b9f8.js","7177","static/chunks/app/layout-df1bcd23e841ae19.js"],"Toaster"]
6
6
  :HL["/_next/static/css/a6a6c7db5d43079b.css","style"]
7
7
  :HL["/_next/static/css/b5d2bd8e17641061.css","style"]
8
- 0:{"buildId":"q8WBS9VWbJZgklpdqB8tX","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/a6a6c7db5d43079b.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/b5d2bd8e17641061.css","precedence":"next"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"className":"__variable_245d8d __variable_97c177","children":["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"children":[["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$L5",null,{}]]}]}]}]]}],"loading":null,"isPartial":false}
8
+ 0:{"buildId":"CkqFlpCjRdWenNWQme1sl","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/a6a6c7db5d43079b.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/b5d2bd8e17641061.css","precedence":"next"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"className":"__variable_245d8d __variable_97c177","children":["$","body",null,{"className":"font-sans antialiased","children":["$","$L2",null,{"children":[["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$L5",null,{}]]}]}]}]]}],"loading":null,"isPartial":false}
@@ -2,4 +2,4 @@
2
2
  :HL["/_next/static/media/78fec81b34c4a365.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
3
3
  :HL["/_next/static/css/a6a6c7db5d43079b.css","style"]
4
4
  :HL["/_next/static/css/b5d2bd8e17641061.css","style"]
5
- 0:{"buildId":"q8WBS9VWbJZgklpdqB8tX","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"workspace","paramType":null,"paramKey":"workspace","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
5
+ 0:{"buildId":"CkqFlpCjRdWenNWQme1sl","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"workspace","paramType":null,"paramKey":"workspace","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
@@ -3,7 +3,7 @@
3
3
  3:I[59176,["330","static/chunks/330-60f33582af3e15a5.js","5403","static/chunks/5403-0bffd8f59627ffd1.js","1178","static/chunks/1178-f2f0bd687a63b9f8.js","6364","static/chunks/app/workspace/page-e1500b07743ca666.js"],"default"]
4
4
  6:I[90484,[],"OutletBoundary"]
5
5
  7:"$Sreact.suspense"
6
- 0:{"buildId":"q8WBS9VWbJZgklpdqB8tX","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],null,["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
6
+ 0:{"buildId":"CkqFlpCjRdWenNWQme1sl","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],null,["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
7
7
  4:{}
8
8
  5:{}
9
9
  8:null
@@ -3,5 +3,5 @@
3
3
  3:I[24733,["8803","static/chunks/ba12c10f-60ae8f6a2f0b4dd3.js","330","static/chunks/330-60f33582af3e15a5.js","7300","static/chunks/7300-9984bd6aa378227a.js","4559","static/chunks/4559-722e02df6a03e69f.js","6609","static/chunks/6609-078a8cdc853f87c6.js","5403","static/chunks/5403-0bffd8f59627ffd1.js","8935","static/chunks/8935-b62f5c8bf50ff5e8.js","9352","static/chunks/9352-dcb425f6cf5347f4.js","1285","static/chunks/1285-4a6c410db884bf7b.js","8550","static/chunks/8550-1006bc90e28110d2.js","9075","static/chunks/9075-6844b0538e143748.js","7230","static/chunks/7230-ae3fcfca93b2ad80.js","1178","static/chunks/1178-f2f0bd687a63b9f8.js","1807","static/chunks/app/workspace/layout-e5fdab2463c57ef5.js"],"default"]
4
4
  4:I[57121,[],""]
5
5
  5:I[74581,[],""]
6
- 0:{"buildId":"q8WBS9VWbJZgklpdqB8tX","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"Component":"$3","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","template":["$","$L5",null,{}]}]},"serverProvidedParams":{"params":{},"promises":["$@6"]}}]]}],"loading":null,"isPartial":false}
6
+ 0:{"buildId":"CkqFlpCjRdWenNWQme1sl","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"Component":"$3","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","template":["$","$L5",null,{}]}]},"serverProvidedParams":{"params":{},"promises":["$@6"]}}]]}],"loading":null,"isPartial":false}
7
7
  6:"$0:rsc:props:children:1:props:serverProvidedParams:params"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "/_not-found/page": "app/_not-found/page.js",
3
- "/_global-error/page": "app/_global-error/page.js",
4
3
  "/api/ai/write/route": "app/api/ai/write/route.js",
4
+ "/_global-error/page": "app/_global-error/page.js",
5
5
  "/api/chat/abort/route": "app/api/chat/abort/route.js",
6
6
  "/api/chat/route": "app/api/chat/route.js",
7
7
  "/api/files/pages/[...path]/route": "app/api/files/pages/[...path]/route.js",
@@ -15,8 +15,8 @@
15
15
  "/api/gateway/history/route": "app/api/gateway/history/route.js",
16
16
  "/api/gateway/resolve/route": "app/api/gateway/resolve/route.js",
17
17
  "/api/gateway/sessions/route": "app/api/gateway/sessions/route.js",
18
- "/api/openclaw/commands/route": "app/api/openclaw/commands/route.js",
19
18
  "/api/gateway/status/route": "app/api/gateway/status/route.js",
19
+ "/api/openclaw/commands/route": "app/api/openclaw/commands/route.js",
20
20
  "/api/search/route": "app/api/search/route.js",
21
21
  "/api/settings/search-status/route": "app/api/settings/search-status/route.js",
22
22
  "/api/setup/bootstrap-workspace/route": "app/api/setup/bootstrap-workspace/route.js",
@@ -26,18 +26,18 @@
26
26
  "/api/version/route": "app/api/version/route.js",
27
27
  "/favicon.ico/route": "app/favicon.ico/route.js",
28
28
  "/api/changes/[id]/route": "app/api/changes/[id]/route.js",
29
- "/api/changes/run/route": "app/api/changes/run/route.js",
30
29
  "/api/changes/route": "app/api/changes/route.js",
31
- "/api/changes/record/route": "app/api/changes/record/route.js",
30
+ "/api/changes/run/route": "app/api/changes/run/route.js",
32
31
  "/api/changes/revert/route": "app/api/changes/revert/route.js",
32
+ "/api/changes/record/route": "app/api/changes/record/route.js",
33
33
  "/api/gateway/events/route": "app/api/gateway/events/route.js",
34
34
  "/page": "app/page.js",
35
35
  "/settings/connection/page": "app/settings/connection/page.js",
36
- "/settings/page": "app/settings/page.js",
37
36
  "/settings/relay/page": "app/settings/relay/page.js",
38
- "/setup/page": "app/setup/page.js",
39
37
  "/waitlist/page": "app/waitlist/page.js",
38
+ "/settings/page": "app/settings/page.js",
39
+ "/setup/page": "app/setup/page.js",
40
+ "/workspace/page": "app/workspace/page.js",
40
41
  "/workspace/[...path]/page": "app/workspace/[...path]/page.js",
41
- "/workspace/search/page": "app/workspace/search/page.js",
42
- "/workspace/page": "app/workspace/page.js"
42
+ "/workspace/search/page": "app/workspace/search/page.js"
43
43
  }
@@ -1 +1 @@
1
- exports.id=3016,exports.ids=[3016,8349],exports.modules={18349:(a,b,c)=>{"use strict";c.d(b,{detectGateway:()=>g});var d=c(79748),e=c(27843),f=c(21642);async function g(){let a=process.env.OPENCLAW_GATEWAY_URL,b=j(process.env.OPENCLAW_GATEWAY_TOKEN),c=process.env.OPENCLAW_AGENT_NAME;if(a)return{url:i(a),token:b||void 0,agentName:c||void 0,source:"env"};try{let a=(0,e.YJ)();if(a){let c=await (0,d.readFile)(a,"utf-8"),e=(0,f.N)(c),g=e.ok&&e.value&&"object"==typeof e.value?e.value:{},i=g.gateway?.port??g.port??18789,j=h(g.gateway?.bind??g.gateway?.host??g.host??"127.0.0.1");return{url:`http://${j}:${i}`,token:n(g.gateway?.auth)??b,agentName:g.name??g.agentName??void 0,source:a.includes("clawdbot.json")?"clawdbot.json":"openclaw.json"}}}catch{}return{url:"http://127.0.0.1:18789",token:void 0,agentName:void 0,source:"default"}}function h(a){return({loopback:"127.0.0.1",localhost:"127.0.0.1","0.0.0.0":"127.0.0.1","::":"127.0.0.1","::1":"127.0.0.1"})[a]??a}function i(a){return a.startsWith("http://")||a.startsWith("https://")?a.replace(/\/+$/,""):`http://${a}`}function j(a){if("string"==typeof a)return a.trim()||void 0}function k(a){let b=new Set,c=[];if("string"==typeof a)c.push(...a.split(/[,\s]+/g));else if(Array.isArray(a))for(let b of a)"string"==typeof b&&c.push(...b.split(/[,\s]+/g));for(let a of c){let c=a.trim().toLowerCase();c&&b.add(c)}return b}function l(a){return a.has("operator.admin")?100:a.has("operator.write")?90:a.has("operator.read")?20:10}function m(a){if("string"==typeof a)return j(a);if(!a||"object"!=typeof a)return;let b=a;if(!1!==b.enabled)return j(b.token??b.value??b.accessToken??b.access_token??b.bearer??b.secret)}function n(a){if(!a||"object"!=typeof a)return;let b=a,c=[],d=j(b.token);if(d){let a=k(b.scopes??b.scope);c.push({token:d,score:a.size>0?l(a)+30:50,priority:0})}let e=Array.isArray(b.tokens)?b.tokens:[];for(let a=0;a<e.length;a+=1){let b=e[a],d=m(b);if(!d)continue;let f=b&&"object"==typeof b?k(b.scopes??b.scope):new Set;c.push({token:d,score:f.size>0?l(f):25,priority:a+1})}if(0!==c.length)return c.sort((a,b)=>b.score-a.score||a.priority-b.priority),c[0]?.token}},21642:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";function loadOptionalJson5(){try{let req=eval("require"),mod=req("json5");if(mod&&"function"==typeof mod.parse)return mod}catch{}return null}function stripComments(a){let b="",c=!1,d="",e=!1,f=!1,g=!1;for(let h=0;h<a.length;h+=1){let i=a[h],j=a[h+1];if(e){"\n"===i&&(e=!1,b+=i);continue}if(f){"*"===i&&"/"===j&&(f=!1,h+=1);continue}if(c){if(b+=i,g){g=!1;continue}if("\\"===i){g=!0;continue}i===d&&(c=!1,d="");continue}if('"'===i||"'"===i){c=!0,d=i,b+=i;continue}if("/"===i&&"/"===j){e=!0,h+=1;continue}if("/"===i&&"*"===j){f=!0,h+=1;continue}b+=i}return b}function stripTrailingCommas(a){let b="",c=!1,d="",e=!1;for(let f=0;f<a.length;f+=1){let g=a[f];if(c){if(b+=g,e){e=!1;continue}if("\\"===g){e=!0;continue}g===d&&(c=!1,d="");continue}if('"'===g||"'"===g){c=!0,d=g,b+=g;continue}if(","===g){let b=f+1;for(;b<a.length&&/\s/.test(a[b]);)b+=1;let c=a[b];if("}"===c||"]"===c)continue}b+=g}return b}function parseJsonFallback(a){try{return{ok:!0,value:JSON.parse(a)}}catch{}try{let b=stripTrailingCommas(stripComments(a));return{ok:!0,value:JSON.parse(b)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}function parseOpenClawConfig(a){let b=loadOptionalJson5();if(b)try{return{ok:!0,value:b.parse(a)}}catch{}return parseJsonFallback(a)}__webpack_require__.d(__webpack_exports__,{N:()=>parseOpenClawConfig})},27843:(a,b,c)=>{"use strict";c.d(b,{We:()=>o,YJ:()=>p,l5:()=>q});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h),j=c(21642);let k=[".clawdbot"],l=["openclaw.json","clawdbot.json"];function m(a=process.env){return[...new Set([a.APPDATA?g().join(a.APPDATA,"OpenClaw"):null,a.APPDATA?g().join(a.APPDATA,"openclaw"):null,a.LOCALAPPDATA?g().join(a.LOCALAPPDATA,"OpenClaw"):null,a.LOCALAPPDATA?g().join(a.LOCALAPPDATA,"openclaw"):null,g().join(i().homedir(),"AppData","Roaming","OpenClaw"),g().join(i().homedir(),"AppData","Roaming","openclaw")].filter(a=>!!(a&&a.trim())).map(a=>g().resolve(a)))]}function n(a){let b=a.trim();return b?b.startsWith("~")?g().resolve(b.replace(/^~(?=$|[\\/])/,i().homedir())):g().resolve(b):b}function o(a=process.env){let b=a.OPENCLAW_STATE_DIR||a.CLAWDBOT_STATE_DIR;if(b&&b.trim())return n(b);if("win32"===process.platform){let b=m(a).find(a=>e().existsSync(a));if(b)return b}return g().join(i().homedir(),".openclaw")}function p(a=process.env){let b=a.OPENCLAW_CONFIG_PATH||a.CLAWDBOT_CONFIG_PATH;if(b&&b.trim()){let a=n(b);return e().existsSync(a)?a:null}let c=o(a),d="win32"===process.platform?m(a):[];for(let a of[...l.map(a=>g().join(c,a)),...d.flatMap(a=>l.map(b=>g().join(a,b))),g().join(i().homedir(),".openclaw","openclaw.json"),...k.map(a=>g().join(i().homedir(),a,"clawdbot.json"))])if(e().existsSync(a))return a;return null}function q(a=process.env){let b=p(a);if(!b)return{path:null,config:null};try{let a=e().readFileSync(b,"utf-8"),c=(0,j.N)(a);if(c.ok&&c.value&&"object"==typeof c.value)return{path:b,config:c.value}}catch{}return{path:b,config:null}}},48404:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{W:()=>j});var e=c(81210),f=c(48421),g=a([e,f]);[e,f]=g.then?(await g)():g;let k=new Map,l=3e5;function h(a){let b=k.get(a);return b?Date.now()>b.expiresAt?(k.delete(a),null):b.value:null}function i(a,b){k.set(a,{value:b,expiresAt:Date.now()+l})}async function j(a,b){let c=(a??"").trim()||"main",d=h(c);if(d)return d;let g=b?.timeoutMs??4e3,j={key:c};try{if("connected"===e.t.status){let a=await e.t.sendRPC("sessions.resolve",j,g),b=a?.key?.trim();if(b)return i(c,b),b}}catch{}try{let a=await (0,f.A)({method:"sessions.resolve",params:j,timeoutMs:g}),b=a?.key?.trim();if(b)return i(c,b),b}catch{}return c}d()}catch(a){d(a)}})},48421:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>h});var e=c(56220),f=c(18349),g=a([e]);async function h(a){let b=await (0,f.detectGateway)();if(!b)throw Error("No gateway configuration found");let c=b.url.replace(/^http/,"ws"),d=a.timeoutMs??1e4;return new Promise((f,g)=>{let h,i=0,j=!1,k=setTimeout(()=>{if(!j){j=!0;try{h?.close()}catch{}g(Error("Gateway request timed out"))}},d);function l(a,b){if(!j){j=!0,clearTimeout(k);try{h?.close()}catch{}a?g(a):f(b)}}try{h=new e.default(c)}catch(a){clearTimeout(k),g(Error(`Failed to create WebSocket: ${a}`));return}h.on("close",()=>{l(Error("WebSocket closed before response"))}),h.on("error",a=>{l(Error(`WebSocket error: ${a.message}`))}),h.on("message",c=>{let d;try{d=JSON.parse(String(c))}catch{return}if("event"===d.type&&"connect.challenge"===d.event){let a={type:"req",id:String(++i),method:"connect",params:{minProtocol:3,maxProtocol:3,client:{id:"cli",version:"0.1.0",platform:"web",mode:"ui"},role:"operator",scopes:["operator.read","operator.write","operator.admin"],caps:[],commands:[],permissions:{},auth:b.token?{token:b.token}:{}}};h.send(JSON.stringify(a));return}if("res"===d.type&&d.id===String(i)&&1===i){if(!d.ok)return void l(Error(`Gateway connect rejected: ${JSON.stringify(d.error)}`));let b={type:"req",id:String(++i),method:a.method,params:a.params??{}};return void h.send(JSON.stringify(b))}if("res"===d.type&&d.id===String(i)&&2===i)return d.ok?void l(null,d.payload):void l(Error(`Gateway RPC error: ${JSON.stringify(d.error)}`))})})}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},78335:()=>{},81210:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{t:()=>o});var e=c(56220),f=a([e]);e=(f.then?(await f)():f)[0];let g=2e3,h=3e4,i=1.8,j=.25,k=3e4,l=6e4,m={id:"webchat-ui",version:"clawpad",platform:"web",mode:"webchat"};class n{get status(){return this._status}getLastError(){return this.lastError}getLastErrorCode(){return this.lastErrorCode}getFeatures(){return this.features}async connect(a,b){a&&(this.url=a),void 0!==b&&(this.token=this.normalizeToken(b)),"connected"!==this._status&&"connecting"!==this._status&&this.doConnect()}disconnect(a){this.cancelReconnect(),this.reconnectAttempts=0,this.ws&&(this.ws.removeAllListeners(),this.ws.close(),this.ws=null),this.setStatus("disconnected"),a?.reconnect&&this.scheduleReconnect(a.reason)}onEvent(a){return this.eventListeners.add(a),()=>{this.eventListeners.delete(a)}}onStatus(a){return this.statusListeners.add(a),a(this._status),()=>{this.statusListeners.delete(a)}}get listenerCount(){return this.eventListeners.size}sendRPC(a,b,c=3e4){return new Promise((d,e)=>{if("connected"!==this._status||!this.ws)return void e(Error(`Cannot send RPC: WS status is "${this._status}"`));let f=String(++this.requestId),g=setTimeout(()=>{this.pendingRPC.delete(f),e(Error(`RPC "${a}" timed out after ${c}ms`))},c);this.pendingRPC.set(f,{resolve:d,reject:e,timer:g});let h={type:"req",id:f,method:a,params:b};try{this.ws.send(JSON.stringify(h))}catch(a){this.pendingRPC.delete(f),clearTimeout(g),e(Error(`Failed to send RPC: ${a}`))}})}async ensureConnected(a=1e4){if("connected"!==this._status){if("disconnected"===this._status){let{detectGateway:a}=await c.e(8349).then(c.bind(c,18349)),b=await a();if(b){let a=b.url.replace(/^http/,"ws");await this.connect(a,b.token)}}return new Promise((b,c)=>{if("connected"===this._status)return void b();let d=setTimeout(()=>{e(),c(Error("WS connect timed out"))},a),e=this.onStatus(a=>{"connected"===a&&(clearTimeout(d),e(),b())})})}}normalizeToken(a){return a?.trim()||void 0}buildOrigin(a){if(!a)return null;let b=a.replace(/^ws/i,"http");try{return new URL(b).origin}catch{return null}}isAuthError(a,b){let c=(a??"").toUpperCase();if("NOT_PAIRED"===c||"AUTH_REQUIRED"===c||"UNAUTHORIZED"===c)return!0;let d=(b??"").toLowerCase();return!!d&&(d.includes("device identity required")||d.includes("not paired"))}async refreshConfig(a){let b=Date.now();return this.configRefreshInFlight?this.configRefreshInFlight:b-this.lastConfigRefreshAt<5e3?void 0:(this.configRefreshInFlight=(async()=>{this.lastConfigRefreshAt=Date.now();try{let{detectGateway:a}=await c.e(8349).then(c.bind(c,18349)),b=await a();b&&(this.url=b.url,this.token=this.normalizeToken(b.token))}catch(b){console.warn("[gateway-ws] Config refresh failed:",a,b)}finally{this.configRefreshInFlight=null}})(),this.configRefreshInFlight)}setStatus(a){if(this._status!==a)for(let b of(this._status=a,"connected"===a&&(this.reconnectAttempts=0),this.statusListeners))try{b(a)}catch{}}doConnect(){this.setStatus("connecting");try{let a=this.url.replace(/^http/,"ws"),b=this.buildOrigin(this.url);this.ws=new e.default(a,b?{origin:b}:void 0)}catch(a){console.error("[gateway-ws] Failed to create WebSocket:",a),this.scheduleReconnect();return}this.ws.on("open",()=>{console.log("[gateway-ws] WebSocket opened, waiting for challenge..."),this.lastPongAt=Date.now(),this.pingInterval||(this.pingInterval=setInterval(()=>{if(this.ws){if(Date.now()-this.lastPongAt>l){try{this.ws.terminate()}catch{}return}try{this.ws.ping()}catch{}}},k))}),this.ws.on("message",a=>{this.handleMessage(String(a))}),this.ws.on("error",a=>{console.error("[gateway-ws] WebSocket error:",a.message),this.lastError=a.message,this.lastErrorCode=null}),this.ws.on("close",()=>{for(let[a,b]of(this.ws=null,this.pingInterval&&(clearInterval(this.pingInterval),this.pingInterval=null),this.pendingRPC))clearTimeout(b.timer),b.reject(Error("WebSocket closed"));this.pendingRPC.clear(),this.setStatus("disconnected"),this.scheduleReconnect()}),this.ws.on("pong",()=>{this.lastPongAt=Date.now()})}handleMessage(a){let b;try{b=JSON.parse(a)}catch{console.warn("[gateway-ws] Failed to parse frame:",a.slice(0,200));return}if("event"===b.type){let a=b;if("connect.challenge"===a.event){console.log("[gateway-ws] Received challenge, sending connect...");let b=a.payload;this.handleChallenge(b.nonce);return}for(let b of this.eventListeners)try{b(a)}catch(a){console.error("[gateway-ws] Listener error:",a)}}else if("res"===b.type){let a=b,c=this.pendingRPC.get(a.id);if(c){this.pendingRPC.delete(a.id),clearTimeout(c.timer),a.ok?c.resolve(a.payload):c.reject(Error(`RPC error: ${JSON.stringify(a.error)}`));return}if(a.ok)console.log("[gateway-ws] Connected to gateway, payload:",JSON.stringify(a.payload)),this.lastError=null,this.lastErrorCode=null,this.lastAuthError=null,this.lastAuthErrorAt=null,this.lastAuthRetryAt=null,this.updateFeatures(a.payload),this.setStatus("connected");else{let b=a.error?.code,c=a.error?.message??"connect rejected",d="string"==typeof b?b:"number"==typeof b?String(b):null;console.error("[gateway-ws] Connect rejected:",a.error),this.lastError=c,this.lastErrorCode=d,this.isAuthError(d,c)&&(this.lastAuthError=c,this.lastAuthErrorAt=Date.now()),this.disconnect({reconnect:!0,reason:"connect-rejected"})}}}async handleChallenge(a){if(!this.ws)return;this.token||await this.refreshConfig("challenge"),this.token||(this.lastAuthError="token missing",this.lastAuthErrorAt=Date.now(),this.lastError="device identity required",this.lastErrorCode="AUTH_REQUIRED");let b={type:"req",id:String(++this.requestId),method:"connect",params:{minProtocol:3,maxProtocol:3,client:m,role:"operator",scopes:["operator.read","operator.write","operator.admin"],caps:[],commands:[],permissions:{},auth:this.token?{token:this.token}:{}}};this.lastConnectToken=this.token;try{this.ws.send(JSON.stringify(b))}catch(a){console.error("[gateway-ws] Failed to send connect:",a)}}updateFeatures(a){if(!a||"object"!=typeof a)return;let b=a.features;if(!b||"object"!=typeof b)return;let c=b.methods,d=b.events,e=Array.isArray(c)?c.filter(a=>"string"==typeof a):[],f=Array.isArray(d)?d.filter(a=>"string"==typeof a):[];(e.length||f.length)&&(this.features={methods:e,events:f})}scheduleReconnect(a){if("connected"===this._status||"connecting"===this._status)return;this.cancelReconnect(),this.setStatus("reconnecting");let b=Date.now();if(this.isAuthError(this.lastErrorCode,this.lastError)){let a=this.token&&this.token!==this.lastConnectToken;if(this.lastAuthRetryAt&&b-this.lastAuthRetryAt<3e4&&!a)return;this.lastAuthRetryAt=b}let c=this.reconnectAttempts,d=Math.min(h,g*Math.pow(i,c)),e=d*j*(2*Math.random()-1),f=Math.max(500,Math.round(d+e));this.reconnectAttempts+=1,this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,"disconnected"===this._status&&(this.reconnectInFlight||(this.reconnectInFlight=!0,this.refreshConfig("reconnect").catch(()=>{}).finally(()=>{this.reconnectInFlight=!1,"disconnected"===this._status&&this.doConnect()})))},f)}cancelReconnect(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)}constructor(){this.ws=null,this._status="disconnected",this.url="ws://127.0.0.1:18789",this.reconnectTimer=null,this.requestId=0,this.lastError=null,this.lastErrorCode=null,this.lastAuthError=null,this.lastAuthErrorAt=null,this.lastAuthRetryAt=null,this.configRefreshInFlight=null,this.lastConfigRefreshAt=0,this.reconnectInFlight=!1,this.reconnectAttempts=0,this.pingInterval=null,this.lastPongAt=0,this.features=null,this.eventListeners=new Set,this.statusListeners=new Set,this.pendingRPC=new Map}}let o=new n;d()}catch(a){d(a)}})},96487:()=>{}};
1
+ exports.id=3016,exports.ids=[3016,8349],exports.modules={18349:(a,b,c)=>{"use strict";c.d(b,{detectGateway:()=>g});var d=c(79748),e=c(27843),f=c(21642);async function g(){let a=process.env.OPENCLAW_GATEWAY_URL,b=j(process.env.OPENCLAW_GATEWAY_TOKEN),c=process.env.OPENCLAW_AGENT_NAME;if(a)return{url:i(a),token:b||void 0,agentName:c||void 0,source:"env"};try{let a=(0,e.YJ)();if(a){let c=await (0,d.readFile)(a,"utf-8"),e=(0,f.N)(c),g=e.ok&&e.value&&"object"==typeof e.value?e.value:{},i=g.gateway?.port??g.port??18789,j=h(g.gateway?.bind??g.gateway?.host??g.host??"127.0.0.1");return{url:`http://${j}:${i}`,token:n(g.gateway?.auth)??b,agentName:g.name??g.agentName??void 0,source:a.includes("clawdbot.json")?"clawdbot.json":"openclaw.json"}}}catch{}return{url:"http://127.0.0.1:18789",token:void 0,agentName:void 0,source:"default"}}function h(a){return({loopback:"127.0.0.1",localhost:"127.0.0.1","0.0.0.0":"127.0.0.1","::":"127.0.0.1","::1":"127.0.0.1"})[a]??a}function i(a){return a.startsWith("http://")||a.startsWith("https://")?a.replace(/\/+$/,""):`http://${a}`}function j(a){if("string"==typeof a)return a.trim()||void 0}function k(a){let b=new Set,c=[];if("string"==typeof a)c.push(...a.split(/[,\s]+/g));else if(Array.isArray(a))for(let b of a)"string"==typeof b&&c.push(...b.split(/[,\s]+/g));for(let a of c){let c=a.trim().toLowerCase();c&&b.add(c)}return b}function l(a){return a.has("operator.admin")?100:a.has("operator.write")?90:a.has("operator.read")?20:10}function m(a){if("string"==typeof a)return j(a);if(!a||"object"!=typeof a)return;let b=a;if(!1!==b.enabled)return j(b.token??b.value??b.accessToken??b.access_token??b.bearer??b.secret)}function n(a){if(!a||"object"!=typeof a)return;let b=a,c=[],d=j(b.token);if(d){let a=k(b.scopes??b.scope);c.push({token:d,score:a.size>0?l(a)+30:50,priority:0})}let e=Array.isArray(b.tokens)?b.tokens:[];for(let a=0;a<e.length;a+=1){let b=e[a],d=m(b);if(!d)continue;let f=b&&"object"==typeof b?k(b.scopes??b.scope):new Set;c.push({token:d,score:f.size>0?l(f):25,priority:a+1})}if(0!==c.length)return c.sort((a,b)=>b.score-a.score||a.priority-b.priority),c[0]?.token}},21642:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";function loadOptionalJson5(){try{let req=eval("require"),mod=req("json5");if(mod&&"function"==typeof mod.parse)return mod}catch{}return null}function stripComments(a){let b="",c=!1,d="",e=!1,f=!1,g=!1;for(let h=0;h<a.length;h+=1){let i=a[h],j=a[h+1];if(e){"\n"===i&&(e=!1,b+=i);continue}if(f){"*"===i&&"/"===j&&(f=!1,h+=1);continue}if(c){if(b+=i,g){g=!1;continue}if("\\"===i){g=!0;continue}i===d&&(c=!1,d="");continue}if('"'===i||"'"===i){c=!0,d=i,b+=i;continue}if("/"===i&&"/"===j){e=!0,h+=1;continue}if("/"===i&&"*"===j){f=!0,h+=1;continue}b+=i}return b}function stripTrailingCommas(a){let b="",c=!1,d="",e=!1;for(let f=0;f<a.length;f+=1){let g=a[f];if(c){if(b+=g,e){e=!1;continue}if("\\"===g){e=!0;continue}g===d&&(c=!1,d="");continue}if('"'===g||"'"===g){c=!0,d=g,b+=g;continue}if(","===g){let b=f+1;for(;b<a.length&&/\s/.test(a[b]);)b+=1;let c=a[b];if("}"===c||"]"===c)continue}b+=g}return b}function parseJsonFallback(a){try{return{ok:!0,value:JSON.parse(a)}}catch{}try{let b=stripTrailingCommas(stripComments(a));return{ok:!0,value:JSON.parse(b)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}function parseOpenClawConfig(a){let b=loadOptionalJson5();if(b)try{return{ok:!0,value:b.parse(a)}}catch{}return parseJsonFallback(a)}__webpack_require__.d(__webpack_exports__,{N:()=>parseOpenClawConfig})},27843:(a,b,c)=>{"use strict";c.d(b,{We:()=>p,YJ:()=>q,l5:()=>r});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h),j=c(21642);let k=[".clawdbot"],l=["openclaw.json","clawdbot.json"];function m(a=process.env){return[...new Set([a.APPDATA?g().join(a.APPDATA,"OpenClaw"):null,a.APPDATA?g().join(a.APPDATA,"openclaw"):null,a.LOCALAPPDATA?g().join(a.LOCALAPPDATA,"OpenClaw"):null,a.LOCALAPPDATA?g().join(a.LOCALAPPDATA,"openclaw"):null,g().join(i().homedir(),"AppData","Roaming","OpenClaw"),g().join(i().homedir(),"AppData","Roaming","openclaw")].filter(a=>!!(a&&a.trim())).map(a=>g().resolve(a)))]}function n(a){let b=a.trim();return b?b.startsWith("~")?g().resolve(b.replace(/^~(?=$|[\\/])/,i().homedir())):g().resolve(b):b}function o(a){try{return e().existsSync(a)}catch{return!1}}function p(a=process.env){let b=a.OPENCLAW_STATE_DIR||a.CLAWDBOT_STATE_DIR;if(b&&b.trim())return n(b);if("win32"===process.platform){let b=m(a).find(a=>o(a));if(b)return b}return g().join(i().homedir(),".openclaw")}function q(a=process.env){let b=a.OPENCLAW_CONFIG_PATH||a.CLAWDBOT_CONFIG_PATH;if(b&&b.trim()){let a=n(b);return o(a)?a:null}let c=p(a),d="win32"===process.platform?m(a):[];for(let a of[...l.map(a=>g().join(c,a)),...d.flatMap(a=>l.map(b=>g().join(a,b))),g().join(i().homedir(),".openclaw","openclaw.json"),...k.map(a=>g().join(i().homedir(),a,"clawdbot.json"))])if(o(a))return a;return null}function r(a=process.env){let b=q(a);if(!b)return{path:null,config:null};try{let a=e().readFileSync(b,"utf-8"),c=(0,j.N)(a);if(c.ok&&c.value&&"object"==typeof c.value)return{path:b,config:c.value}}catch{}return{path:b,config:null}}},48404:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{W:()=>j});var e=c(81210),f=c(48421),g=a([e,f]);[e,f]=g.then?(await g)():g;let k=new Map,l=3e5;function h(a){let b=k.get(a);return b?Date.now()>b.expiresAt?(k.delete(a),null):b.value:null}function i(a,b){k.set(a,{value:b,expiresAt:Date.now()+l})}async function j(a,b){let c=(a??"").trim()||"main",d=h(c);if(d)return d;let g=b?.timeoutMs??4e3,j={key:c};try{if("connected"===e.t.status){let a=await e.t.sendRPC("sessions.resolve",j,g),b=a?.key?.trim();if(b)return i(c,b),b}}catch{}try{let a=await (0,f.A)({method:"sessions.resolve",params:j,timeoutMs:g}),b=a?.key?.trim();if(b)return i(c,b),b}catch{}return c}d()}catch(a){d(a)}})},48421:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>h});var e=c(56220),f=c(18349),g=a([e]);async function h(a){let b=await (0,f.detectGateway)();if(!b)throw Error("No gateway configuration found");let c=b.url.replace(/^http/,"ws"),d=a.timeoutMs??1e4;return new Promise((f,g)=>{let h,i=0,j=!1,k=setTimeout(()=>{if(!j){j=!0;try{h?.close()}catch{}g(Error("Gateway request timed out"))}},d);function l(a,b){if(!j){j=!0,clearTimeout(k);try{h?.close()}catch{}a?g(a):f(b)}}try{h=new e.default(c)}catch(a){clearTimeout(k),g(Error(`Failed to create WebSocket: ${a}`));return}h.on("close",()=>{l(Error("WebSocket closed before response"))}),h.on("error",a=>{l(Error(`WebSocket error: ${a.message}`))}),h.on("message",c=>{let d;try{d=JSON.parse(String(c))}catch{return}if("event"===d.type&&"connect.challenge"===d.event){let a={type:"req",id:String(++i),method:"connect",params:{minProtocol:3,maxProtocol:3,client:{id:"cli",version:"0.1.0",platform:"web",mode:"ui"},role:"operator",scopes:["operator.read","operator.write","operator.admin"],caps:[],commands:[],permissions:{},auth:b.token?{token:b.token}:{}}};h.send(JSON.stringify(a));return}if("res"===d.type&&d.id===String(i)&&1===i){if(!d.ok)return void l(Error(`Gateway connect rejected: ${JSON.stringify(d.error)}`));let b={type:"req",id:String(++i),method:a.method,params:a.params??{}};return void h.send(JSON.stringify(b))}if("res"===d.type&&d.id===String(i)&&2===i)return d.ok?void l(null,d.payload):void l(Error(`Gateway RPC error: ${JSON.stringify(d.error)}`))})})}e=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},78335:()=>{},81210:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{t:()=>o});var e=c(56220),f=a([e]);e=(f.then?(await f)():f)[0];let g=2e3,h=3e4,i=1.8,j=.25,k=3e4,l=6e4,m={id:"webchat-ui",version:"clawpad",platform:"web",mode:"webchat"};class n{get status(){return this._status}getLastError(){return this.lastError}getLastErrorCode(){return this.lastErrorCode}getFeatures(){return this.features}async connect(a,b){a&&(this.url=a),void 0!==b&&(this.token=this.normalizeToken(b)),"connected"!==this._status&&"connecting"!==this._status&&this.doConnect()}disconnect(a){this.cancelReconnect(),this.reconnectAttempts=0,this.ws&&(this.ws.removeAllListeners(),this.ws.close(),this.ws=null),this.setStatus("disconnected"),a?.reconnect&&this.scheduleReconnect(a.reason)}onEvent(a){return this.eventListeners.add(a),()=>{this.eventListeners.delete(a)}}onStatus(a){return this.statusListeners.add(a),a(this._status),()=>{this.statusListeners.delete(a)}}get listenerCount(){return this.eventListeners.size}sendRPC(a,b,c=3e4){return new Promise((d,e)=>{if("connected"!==this._status||!this.ws)return void e(Error(`Cannot send RPC: WS status is "${this._status}"`));let f=String(++this.requestId),g=setTimeout(()=>{this.pendingRPC.delete(f),e(Error(`RPC "${a}" timed out after ${c}ms`))},c);this.pendingRPC.set(f,{resolve:d,reject:e,timer:g});let h={type:"req",id:f,method:a,params:b};try{this.ws.send(JSON.stringify(h))}catch(a){this.pendingRPC.delete(f),clearTimeout(g),e(Error(`Failed to send RPC: ${a}`))}})}async ensureConnected(a=1e4){if("connected"!==this._status){if("disconnected"===this._status){let{detectGateway:a}=await c.e(8349).then(c.bind(c,18349)),b=await a();if(b){let a=b.url.replace(/^http/,"ws");await this.connect(a,b.token)}}return new Promise((b,c)=>{if("connected"===this._status)return void b();let d=setTimeout(()=>{e(),c(Error("WS connect timed out"))},a),e=this.onStatus(a=>{"connected"===a&&(clearTimeout(d),e(),b())})})}}normalizeToken(a){return a?.trim()||void 0}buildOrigin(a){if(!a)return null;let b=a.replace(/^ws/i,"http");try{return new URL(b).origin}catch{return null}}isAuthError(a,b){let c=(a??"").toUpperCase();if("NOT_PAIRED"===c||"AUTH_REQUIRED"===c||"UNAUTHORIZED"===c)return!0;let d=(b??"").toLowerCase();return!!d&&(d.includes("device identity required")||d.includes("not paired"))}async refreshConfig(a){let b=Date.now();return this.configRefreshInFlight?this.configRefreshInFlight:b-this.lastConfigRefreshAt<5e3?void 0:(this.configRefreshInFlight=(async()=>{this.lastConfigRefreshAt=Date.now();try{let{detectGateway:a}=await c.e(8349).then(c.bind(c,18349)),b=await a();b&&(this.url=b.url,this.token=this.normalizeToken(b.token))}catch(b){console.warn("[gateway-ws] Config refresh failed:",a,b)}finally{this.configRefreshInFlight=null}})(),this.configRefreshInFlight)}setStatus(a){if(this._status!==a)for(let b of(this._status=a,"connected"===a&&(this.reconnectAttempts=0),this.statusListeners))try{b(a)}catch{}}doConnect(){this.setStatus("connecting");try{let a=this.url.replace(/^http/,"ws"),b=this.buildOrigin(this.url);this.ws=new e.default(a,b?{origin:b}:void 0)}catch(a){console.error("[gateway-ws] Failed to create WebSocket:",a),this.scheduleReconnect();return}this.ws.on("open",()=>{console.log("[gateway-ws] WebSocket opened, waiting for challenge..."),this.lastPongAt=Date.now(),this.pingInterval||(this.pingInterval=setInterval(()=>{if(this.ws){if(Date.now()-this.lastPongAt>l){try{this.ws.terminate()}catch{}return}try{this.ws.ping()}catch{}}},k))}),this.ws.on("message",a=>{this.handleMessage(String(a))}),this.ws.on("error",a=>{console.error("[gateway-ws] WebSocket error:",a.message),this.lastError=a.message,this.lastErrorCode=null}),this.ws.on("close",()=>{for(let[a,b]of(this.ws=null,this.pingInterval&&(clearInterval(this.pingInterval),this.pingInterval=null),this.pendingRPC))clearTimeout(b.timer),b.reject(Error("WebSocket closed"));this.pendingRPC.clear(),this.setStatus("disconnected"),this.scheduleReconnect()}),this.ws.on("pong",()=>{this.lastPongAt=Date.now()})}handleMessage(a){let b;try{b=JSON.parse(a)}catch{console.warn("[gateway-ws] Failed to parse frame:",a.slice(0,200));return}if("event"===b.type){let a=b;if("connect.challenge"===a.event){console.log("[gateway-ws] Received challenge, sending connect...");let b=a.payload;this.handleChallenge(b.nonce);return}for(let b of this.eventListeners)try{b(a)}catch(a){console.error("[gateway-ws] Listener error:",a)}}else if("res"===b.type){let a=b,c=this.pendingRPC.get(a.id);if(c){this.pendingRPC.delete(a.id),clearTimeout(c.timer),a.ok?c.resolve(a.payload):c.reject(Error(`RPC error: ${JSON.stringify(a.error)}`));return}if(a.ok)console.log("[gateway-ws] Connected to gateway, payload:",JSON.stringify(a.payload)),this.lastError=null,this.lastErrorCode=null,this.lastAuthError=null,this.lastAuthErrorAt=null,this.lastAuthRetryAt=null,this.updateFeatures(a.payload),this.setStatus("connected");else{let b=a.error?.code,c=a.error?.message??"connect rejected",d="string"==typeof b?b:"number"==typeof b?String(b):null;console.error("[gateway-ws] Connect rejected:",a.error),this.lastError=c,this.lastErrorCode=d,this.isAuthError(d,c)&&(this.lastAuthError=c,this.lastAuthErrorAt=Date.now()),this.disconnect({reconnect:!0,reason:"connect-rejected"})}}}async handleChallenge(a){if(!this.ws)return;this.token||await this.refreshConfig("challenge"),this.token||(this.lastAuthError="token missing",this.lastAuthErrorAt=Date.now(),this.lastError="device identity required",this.lastErrorCode="AUTH_REQUIRED");let b={type:"req",id:String(++this.requestId),method:"connect",params:{minProtocol:3,maxProtocol:3,client:m,role:"operator",scopes:["operator.read","operator.write","operator.admin"],caps:[],commands:[],permissions:{},auth:this.token?{token:this.token}:{}}};this.lastConnectToken=this.token;try{this.ws.send(JSON.stringify(b))}catch(a){console.error("[gateway-ws] Failed to send connect:",a)}}updateFeatures(a){if(!a||"object"!=typeof a)return;let b=a.features;if(!b||"object"!=typeof b)return;let c=b.methods,d=b.events,e=Array.isArray(c)?c.filter(a=>"string"==typeof a):[],f=Array.isArray(d)?d.filter(a=>"string"==typeof a):[];(e.length||f.length)&&(this.features={methods:e,events:f})}scheduleReconnect(a){if("connected"===this._status||"connecting"===this._status)return;this.cancelReconnect(),this.setStatus("reconnecting");let b=Date.now();if(this.isAuthError(this.lastErrorCode,this.lastError)){let a=this.token&&this.token!==this.lastConnectToken;if(this.lastAuthRetryAt&&b-this.lastAuthRetryAt<3e4&&!a)return;this.lastAuthRetryAt=b}let c=this.reconnectAttempts,d=Math.min(h,g*Math.pow(i,c)),e=d*j*(2*Math.random()-1),f=Math.max(500,Math.round(d+e));this.reconnectAttempts+=1,this.reconnectTimer=setTimeout(()=>{this.reconnectTimer=null,"disconnected"===this._status&&(this.reconnectInFlight||(this.reconnectInFlight=!0,this.refreshConfig("reconnect").catch(()=>{}).finally(()=>{this.reconnectInFlight=!1,"disconnected"===this._status&&this.doConnect()})))},f)}cancelReconnect(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)}constructor(){this.ws=null,this._status="disconnected",this.url="ws://127.0.0.1:18789",this.reconnectTimer=null,this.requestId=0,this.lastError=null,this.lastErrorCode=null,this.lastAuthError=null,this.lastAuthErrorAt=null,this.lastAuthRetryAt=null,this.configRefreshInFlight=null,this.lastConfigRefreshAt=0,this.reconnectInFlight=!1,this.reconnectAttempts=0,this.pingInterval=null,this.lastPongAt=0,this.features=null,this.eventListeners=new Set,this.statusListeners=new Set,this.pendingRPC=new Map}}let o=new n;d()}catch(a){d(a)}})},96487:()=>{}};
@@ -20,4 +20,4 @@ Your workspace for OpenClaw. Documents live as markdown files in \`~/.openclaw/p
20
20
  # ${d}
21
21
 
22
22
  Start writing...
23
- `,{title:d,icon:"\uD83D\uDCDD",created:a,modified:a})}async function E(a){let b=o().join(a,"_space.yml");try{let c=await m().readFile(b,"utf-8"),d={name:o().basename(a)};for(let a of c.split("\n")){let b=a.match(/^(\w+):\s*(.+)$/);if(!b)continue;let[,c,e]=b,f=e.replace(/^["']|["']$/g,"").trim();switch(c){case"name":d.name=f;break;case"icon":d.icon=f;break;case"color":d.color=f;break;case"sort":["date-desc","date-asc","alpha","manual"].includes(f)&&(d.sort=f)}}return d}catch{return null}}async function F(a,b){let c=o().join(a,"_space.yml"),e=[];b.name&&e.push(`name: ${b.name}`),b.icon&&e.push(`icon: ${b.icon}`),b.color&&e.push(`color: "${b.color}"`),b.sort&&e.push(`sort: ${b.sort}`);try{await m().writeFile(c,e.join("\n")+"\n","utf-8")}catch(a){throw new d.i("Failed to write space metadata","IO_ERROR",c,a)}}async function G(a,b=!1){try{let c=await m().readdir(a,{withFileTypes:!0}),d=c.filter(a=>a.isFile()&&a.name.endsWith(".md")).length;if(b)for(let b of c)!b.isDirectory()||b.name.startsWith(".")||"_"===b.name||(d+=await G(o().join(a,b.name),!0));return d}catch{return 0}}async function H(a){return G(a,!1)}async function I(a,b,c){let d,f=[];try{d=await m().readdir(a,{withFileTypes:!0})}catch{return f}for(let g of d){let d=o().join(a,g.name);if(g.isFile()&&g.name.endsWith(".md"))try{let a=(0,e.fw)(d),c=await m().readFile(d,"utf-8"),i=await m().stat(d),{meta:k,content:l}=h(c);f.push({title:k.title??j(l,g.name),icon:k.icon,created:k.created??i.birthtime.toISOString(),modified:k.modified??i.mtime.toISOString(),tags:k.tags,path:a,space:b,size:i.size})}catch{}else if(c&&g.isDirectory()&&!g.name.startsWith(".")&&"_"!==g.name){let a=await I(d,b,!0);f.push(...a)}}return f}function J(a,b){switch(b){case"date-desc":return a.sort((a,b)=>new Date(b.modified).getTime()-new Date(a.modified).getTime());case"date-asc":return a.sort((a,b)=>new Date(a.modified).getTime()-new Date(b.modified).getTime());case"alpha":return a.sort((a,b)=>a.title.localeCompare(b.title));default:return a}}function K(a){return a.replace(/[-_]+/g," ").replace(/\b\w/g,a=>a.toUpperCase())}},27843:(a,b,c)=>{"use strict";c.d(b,{We:()=>o,YJ:()=>p,l5:()=>q});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h),j=c(21642);let k=[".clawdbot"],l=["openclaw.json","clawdbot.json"];function m(a=process.env){return[...new Set([a.APPDATA?g().join(a.APPDATA,"OpenClaw"):null,a.APPDATA?g().join(a.APPDATA,"openclaw"):null,a.LOCALAPPDATA?g().join(a.LOCALAPPDATA,"OpenClaw"):null,a.LOCALAPPDATA?g().join(a.LOCALAPPDATA,"openclaw"):null,g().join(i().homedir(),"AppData","Roaming","OpenClaw"),g().join(i().homedir(),"AppData","Roaming","openclaw")].filter(a=>!!(a&&a.trim())).map(a=>g().resolve(a)))]}function n(a){let b=a.trim();return b?b.startsWith("~")?g().resolve(b.replace(/^~(?=$|[\\/])/,i().homedir())):g().resolve(b):b}function o(a=process.env){let b=a.OPENCLAW_STATE_DIR||a.CLAWDBOT_STATE_DIR;if(b&&b.trim())return n(b);if("win32"===process.platform){let b=m(a).find(a=>e().existsSync(a));if(b)return b}return g().join(i().homedir(),".openclaw")}function p(a=process.env){let b=a.OPENCLAW_CONFIG_PATH||a.CLAWDBOT_CONFIG_PATH;if(b&&b.trim()){let a=n(b);return e().existsSync(a)?a:null}let c=o(a),d="win32"===process.platform?m(a):[];for(let a of[...l.map(a=>g().join(c,a)),...d.flatMap(a=>l.map(b=>g().join(a,b))),g().join(i().homedir(),".openclaw","openclaw.json"),...k.map(a=>g().join(i().homedir(),a,"clawdbot.json"))])if(e().existsSync(a))return a;return null}function q(a=process.env){let b=p(a);if(!b)return{path:null,config:null};try{let a=e().readFileSync(b,"utf-8"),c=(0,j.N)(a);if(c.ok&&c.value&&"object"==typeof c.value)return{path:b,config:c.value}}catch{}return{path:b,config:null}}},64341:(a,b,c)=>{"use strict";c.d(b,{GK:()=>w,X_:()=>n,fw:()=>u,g4:()=>s,iQ:()=>v,nW:()=>t,pP:()=>x,sZ:()=>r});var d=c(33873),e=c.n(d),f=c(21820),g=c.n(f),h=c(29021),i=c.n(h),j=c(27843),k=c(94608),l=c(72092);function m(a){return a.replace(/\\/g,"/")}function n(){let a=process.env.CLAWPAD_OPENCLAW_DIR;return a&&a.trim()?e().resolve(a):(0,j.We)()}function o(){let{config:a}=(0,j.l5)(),b=a?.agents?.defaults?.workspace;if("string"!=typeof b||!b.trim())return null;let c=b.startsWith("~")?b.replace(/^~(?=$|[\\/])/,g().homedir()):b;return e().join(e().resolve(c),"pages")}function p(a){try{return i().readdirSync(a,{withFileTypes:!0}).some(a=>!a.name.startsWith("."))}catch{return!1}}function q(){let{config:a}=(0,j.l5)(),b=a?.plugins?.entries,c=b?.["openclaw-plugin"]?.config?.pagesDir??b?.["openclaw-plugin"]?.config?.pages_dir??b?.clawpad?.config?.pagesDir??b?.clawpad?.config?.pages_dir;if("string"!=typeof c||!c.trim())return null;let d=c.startsWith("~")?c.replace(/^~(?=$|[\\/])/,g().homedir()):c;return e().resolve(d)}function r(){let a=process.env.CLAWPAD_PAGES_DIR;if(a&&a.trim())return e().resolve(a);let b=q();if(b)return b;let c=o(),d=e().join(n(),"pages");return c&&p(c)?c:p(d)?d:c||d}function s(){return e().join(n(),"trash")}function t(a){let b=a.replace(/[/\\]/g,e().sep);if(!v(b))throw new k.i(`Invalid path: "${a}" — path traversal detected or invalid characters`,"PATH_TRAVERSAL",a);let c=r();return e().join(c,b)}function u(a){let b=e().resolve(a),c=e().resolve(r());if(!b.startsWith(c+e().sep)&&b!==c)throw new k.i(`Path "${a}" is not within PAGES_DIR`,"PATH_TRAVERSAL",a);return m(e().relative(c,b))}function v(a){if(!a||""===a.trim()||a.includes("\0")||e().isAbsolute(a))return!1;let b=e().normalize(a);if(b.startsWith("..")||b.includes(`${e().sep}..`)||b.includes("/.."))return!1;let c=r(),d=e().resolve(c,b),f=e().resolve(c);return d.startsWith(f+e().sep)||d===f}function w(a){let b=m(e().normalize(a)).split("/");return b.length<=1?l.Sz:b[0]}function x(a){return a.endsWith(".md")?a:`${a}.md`}n(),r(),s()},72092:(a,b,c)=>{"use strict";c.d(b,{Gq:()=>f,Sz:()=>d,ke:()=>e});let d="__root__",e="General",f="\uD83D\uDCC4"},78335:()=>{},94608:(a,b,c)=>{"use strict";c.d(b,{i:()=>d});class d extends Error{constructor(a,b,c,d){super(a),this.code=b,this.filePath=c,this.cause=d,this.name="FileSystemError"}}},96487:()=>{}};
23
+ `,{title:d,icon:"\uD83D\uDCDD",created:a,modified:a})}async function E(a){let b=o().join(a,"_space.yml");try{let c=await m().readFile(b,"utf-8"),d={name:o().basename(a)};for(let a of c.split("\n")){let b=a.match(/^(\w+):\s*(.+)$/);if(!b)continue;let[,c,e]=b,f=e.replace(/^["']|["']$/g,"").trim();switch(c){case"name":d.name=f;break;case"icon":d.icon=f;break;case"color":d.color=f;break;case"sort":["date-desc","date-asc","alpha","manual"].includes(f)&&(d.sort=f)}}return d}catch{return null}}async function F(a,b){let c=o().join(a,"_space.yml"),e=[];b.name&&e.push(`name: ${b.name}`),b.icon&&e.push(`icon: ${b.icon}`),b.color&&e.push(`color: "${b.color}"`),b.sort&&e.push(`sort: ${b.sort}`);try{await m().writeFile(c,e.join("\n")+"\n","utf-8")}catch(a){throw new d.i("Failed to write space metadata","IO_ERROR",c,a)}}async function G(a,b=!1){try{let c=await m().readdir(a,{withFileTypes:!0}),d=c.filter(a=>a.isFile()&&a.name.endsWith(".md")).length;if(b)for(let b of c)!b.isDirectory()||b.name.startsWith(".")||"_"===b.name||(d+=await G(o().join(a,b.name),!0));return d}catch{return 0}}async function H(a){return G(a,!1)}async function I(a,b,c){let d,f=[];try{d=await m().readdir(a,{withFileTypes:!0})}catch{return f}for(let g of d){let d=o().join(a,g.name);if(g.isFile()&&g.name.endsWith(".md"))try{let a=(0,e.fw)(d),c=await m().readFile(d,"utf-8"),i=await m().stat(d),{meta:k,content:l}=h(c);f.push({title:k.title??j(l,g.name),icon:k.icon,created:k.created??i.birthtime.toISOString(),modified:k.modified??i.mtime.toISOString(),tags:k.tags,path:a,space:b,size:i.size})}catch{}else if(c&&g.isDirectory()&&!g.name.startsWith(".")&&"_"!==g.name){let a=await I(d,b,!0);f.push(...a)}}return f}function J(a,b){switch(b){case"date-desc":return a.sort((a,b)=>new Date(b.modified).getTime()-new Date(a.modified).getTime());case"date-asc":return a.sort((a,b)=>new Date(a.modified).getTime()-new Date(b.modified).getTime());case"alpha":return a.sort((a,b)=>a.title.localeCompare(b.title));default:return a}}function K(a){return a.replace(/[-_]+/g," ").replace(/\b\w/g,a=>a.toUpperCase())}},27843:(a,b,c)=>{"use strict";c.d(b,{We:()=>p,YJ:()=>q,l5:()=>r});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h),j=c(21642);let k=[".clawdbot"],l=["openclaw.json","clawdbot.json"];function m(a=process.env){return[...new Set([a.APPDATA?g().join(a.APPDATA,"OpenClaw"):null,a.APPDATA?g().join(a.APPDATA,"openclaw"):null,a.LOCALAPPDATA?g().join(a.LOCALAPPDATA,"OpenClaw"):null,a.LOCALAPPDATA?g().join(a.LOCALAPPDATA,"openclaw"):null,g().join(i().homedir(),"AppData","Roaming","OpenClaw"),g().join(i().homedir(),"AppData","Roaming","openclaw")].filter(a=>!!(a&&a.trim())).map(a=>g().resolve(a)))]}function n(a){let b=a.trim();return b?b.startsWith("~")?g().resolve(b.replace(/^~(?=$|[\\/])/,i().homedir())):g().resolve(b):b}function o(a){try{return e().existsSync(a)}catch{return!1}}function p(a=process.env){let b=a.OPENCLAW_STATE_DIR||a.CLAWDBOT_STATE_DIR;if(b&&b.trim())return n(b);if("win32"===process.platform){let b=m(a).find(a=>o(a));if(b)return b}return g().join(i().homedir(),".openclaw")}function q(a=process.env){let b=a.OPENCLAW_CONFIG_PATH||a.CLAWDBOT_CONFIG_PATH;if(b&&b.trim()){let a=n(b);return o(a)?a:null}let c=p(a),d="win32"===process.platform?m(a):[];for(let a of[...l.map(a=>g().join(c,a)),...d.flatMap(a=>l.map(b=>g().join(a,b))),g().join(i().homedir(),".openclaw","openclaw.json"),...k.map(a=>g().join(i().homedir(),a,"clawdbot.json"))])if(o(a))return a;return null}function r(a=process.env){let b=q(a);if(!b)return{path:null,config:null};try{let a=e().readFileSync(b,"utf-8"),c=(0,j.N)(a);if(c.ok&&c.value&&"object"==typeof c.value)return{path:b,config:c.value}}catch{}return{path:b,config:null}}},64341:(a,b,c)=>{"use strict";c.d(b,{GK:()=>w,X_:()=>n,fw:()=>u,g4:()=>s,iQ:()=>v,nW:()=>t,pP:()=>x,sZ:()=>r});var d=c(33873),e=c.n(d),f=c(21820),g=c.n(f),h=c(29021),i=c.n(h),j=c(27843),k=c(94608),l=c(72092);function m(a){return a.replace(/\\/g,"/")}function n(){let a=process.env.CLAWPAD_OPENCLAW_DIR;return a&&a.trim()?e().resolve(a):(0,j.We)()}function o(){let{config:a}=(0,j.l5)(),b=a?.agents?.defaults?.workspace;if("string"!=typeof b||!b.trim())return null;let c=b.startsWith("~")?b.replace(/^~(?=$|[\\/])/,g().homedir()):b;return e().join(e().resolve(c),"pages")}function p(a){try{return i().readdirSync(a,{withFileTypes:!0}).some(a=>!a.name.startsWith("."))}catch{return!1}}function q(){let{config:a}=(0,j.l5)(),b=a?.plugins?.entries,c=b?.["openclaw-plugin"]?.config?.pagesDir??b?.["openclaw-plugin"]?.config?.pages_dir??b?.clawpad?.config?.pagesDir??b?.clawpad?.config?.pages_dir;if("string"!=typeof c||!c.trim())return null;let d=c.startsWith("~")?c.replace(/^~(?=$|[\\/])/,g().homedir()):c;return e().resolve(d)}function r(){let a=process.env.CLAWPAD_PAGES_DIR;if(a&&a.trim())return e().resolve(a);let b=q();if(b)return b;let c=o(),d=e().join(n(),"pages");return c&&p(c)?c:p(d)?d:c||d}function s(){return e().join(n(),"trash")}function t(a){let b=a.replace(/[/\\]/g,e().sep);if(!v(b))throw new k.i(`Invalid path: "${a}" — path traversal detected or invalid characters`,"PATH_TRAVERSAL",a);let c=r();return e().join(c,b)}function u(a){let b=e().resolve(a),c=e().resolve(r());if(!b.startsWith(c+e().sep)&&b!==c)throw new k.i(`Path "${a}" is not within PAGES_DIR`,"PATH_TRAVERSAL",a);return m(e().relative(c,b))}function v(a){if(!a||""===a.trim()||a.includes("\0")||e().isAbsolute(a))return!1;let b=e().normalize(a);if(b.startsWith("..")||b.includes(`${e().sep}..`)||b.includes("/.."))return!1;let c=r(),d=e().resolve(c,b),f=e().resolve(c);return d.startsWith(f+e().sep)||d===f}function w(a){let b=m(e().normalize(a)).split("/");return b.length<=1?l.Sz:b[0]}function x(a){return a.endsWith(".md")?a:`${a}.md`}n(),r(),s()},72092:(a,b,c)=>{"use strict";c.d(b,{Gq:()=>f,Sz:()=>d,ke:()=>e});let d="__root__",e="General",f="\uD83D\uDCC4"},78335:()=>{},94608:(a,b,c)=>{"use strict";c.d(b,{i:()=>d});class d extends Error{constructor(a,b,c,d){super(a),this.code=b,this.filePath=c,this.cause=d,this.name="FileSystemError"}}},96487:()=>{}};
@@ -1 +1 @@
1
- "use strict";exports.id=8349,exports.ids=[8349],exports.modules={18349:(a,b,c)=>{c.d(b,{detectGateway:()=>g});var d=c(79748),e=c(27843),f=c(21642);async function g(){let a=process.env.OPENCLAW_GATEWAY_URL,b=j(process.env.OPENCLAW_GATEWAY_TOKEN),c=process.env.OPENCLAW_AGENT_NAME;if(a)return{url:i(a),token:b||void 0,agentName:c||void 0,source:"env"};try{let a=(0,e.YJ)();if(a){let c=await (0,d.readFile)(a,"utf-8"),e=(0,f.N)(c),g=e.ok&&e.value&&"object"==typeof e.value?e.value:{},i=g.gateway?.port??g.port??18789,j=h(g.gateway?.bind??g.gateway?.host??g.host??"127.0.0.1");return{url:`http://${j}:${i}`,token:n(g.gateway?.auth)??b,agentName:g.name??g.agentName??void 0,source:a.includes("clawdbot.json")?"clawdbot.json":"openclaw.json"}}}catch{}return{url:"http://127.0.0.1:18789",token:void 0,agentName:void 0,source:"default"}}function h(a){return({loopback:"127.0.0.1",localhost:"127.0.0.1","0.0.0.0":"127.0.0.1","::":"127.0.0.1","::1":"127.0.0.1"})[a]??a}function i(a){return a.startsWith("http://")||a.startsWith("https://")?a.replace(/\/+$/,""):`http://${a}`}function j(a){if("string"==typeof a)return a.trim()||void 0}function k(a){let b=new Set,c=[];if("string"==typeof a)c.push(...a.split(/[,\s]+/g));else if(Array.isArray(a))for(let b of a)"string"==typeof b&&c.push(...b.split(/[,\s]+/g));for(let a of c){let c=a.trim().toLowerCase();c&&b.add(c)}return b}function l(a){return a.has("operator.admin")?100:a.has("operator.write")?90:a.has("operator.read")?20:10}function m(a){if("string"==typeof a)return j(a);if(!a||"object"!=typeof a)return;let b=a;if(!1!==b.enabled)return j(b.token??b.value??b.accessToken??b.access_token??b.bearer??b.secret)}function n(a){if(!a||"object"!=typeof a)return;let b=a,c=[],d=j(b.token);if(d){let a=k(b.scopes??b.scope);c.push({token:d,score:a.size>0?l(a)+30:50,priority:0})}let e=Array.isArray(b.tokens)?b.tokens:[];for(let a=0;a<e.length;a+=1){let b=e[a],d=m(b);if(!d)continue;let f=b&&"object"==typeof b?k(b.scopes??b.scope):new Set;c.push({token:d,score:f.size>0?l(f):25,priority:a+1})}if(0!==c.length)return c.sort((a,b)=>b.score-a.score||a.priority-b.priority),c[0]?.token}},21642:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{function loadOptionalJson5(){try{let req=eval("require"),mod=req("json5");if(mod&&"function"==typeof mod.parse)return mod}catch{}return null}function stripComments(a){let b="",c=!1,d="",e=!1,f=!1,g=!1;for(let h=0;h<a.length;h+=1){let i=a[h],j=a[h+1];if(e){"\n"===i&&(e=!1,b+=i);continue}if(f){"*"===i&&"/"===j&&(f=!1,h+=1);continue}if(c){if(b+=i,g){g=!1;continue}if("\\"===i){g=!0;continue}i===d&&(c=!1,d="");continue}if('"'===i||"'"===i){c=!0,d=i,b+=i;continue}if("/"===i&&"/"===j){e=!0,h+=1;continue}if("/"===i&&"*"===j){f=!0,h+=1;continue}b+=i}return b}function stripTrailingCommas(a){let b="",c=!1,d="",e=!1;for(let f=0;f<a.length;f+=1){let g=a[f];if(c){if(b+=g,e){e=!1;continue}if("\\"===g){e=!0;continue}g===d&&(c=!1,d="");continue}if('"'===g||"'"===g){c=!0,d=g,b+=g;continue}if(","===g){let b=f+1;for(;b<a.length&&/\s/.test(a[b]);)b+=1;let c=a[b];if("}"===c||"]"===c)continue}b+=g}return b}function parseJsonFallback(a){try{return{ok:!0,value:JSON.parse(a)}}catch{}try{let b=stripTrailingCommas(stripComments(a));return{ok:!0,value:JSON.parse(b)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}function parseOpenClawConfig(a){let b=loadOptionalJson5();if(b)try{return{ok:!0,value:b.parse(a)}}catch{}return parseJsonFallback(a)}__webpack_require__.d(__webpack_exports__,{N:()=>parseOpenClawConfig})},27843:(a,b,c)=>{c.d(b,{We:()=>o,YJ:()=>p,l5:()=>q});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h),j=c(21642);let k=[".clawdbot"],l=["openclaw.json","clawdbot.json"];function m(a=process.env){return[...new Set([a.APPDATA?g().join(a.APPDATA,"OpenClaw"):null,a.APPDATA?g().join(a.APPDATA,"openclaw"):null,a.LOCALAPPDATA?g().join(a.LOCALAPPDATA,"OpenClaw"):null,a.LOCALAPPDATA?g().join(a.LOCALAPPDATA,"openclaw"):null,g().join(i().homedir(),"AppData","Roaming","OpenClaw"),g().join(i().homedir(),"AppData","Roaming","openclaw")].filter(a=>!!(a&&a.trim())).map(a=>g().resolve(a)))]}function n(a){let b=a.trim();return b?b.startsWith("~")?g().resolve(b.replace(/^~(?=$|[\\/])/,i().homedir())):g().resolve(b):b}function o(a=process.env){let b=a.OPENCLAW_STATE_DIR||a.CLAWDBOT_STATE_DIR;if(b&&b.trim())return n(b);if("win32"===process.platform){let b=m(a).find(a=>e().existsSync(a));if(b)return b}return g().join(i().homedir(),".openclaw")}function p(a=process.env){let b=a.OPENCLAW_CONFIG_PATH||a.CLAWDBOT_CONFIG_PATH;if(b&&b.trim()){let a=n(b);return e().existsSync(a)?a:null}let c=o(a),d="win32"===process.platform?m(a):[];for(let a of[...l.map(a=>g().join(c,a)),...d.flatMap(a=>l.map(b=>g().join(a,b))),g().join(i().homedir(),".openclaw","openclaw.json"),...k.map(a=>g().join(i().homedir(),a,"clawdbot.json"))])if(e().existsSync(a))return a;return null}function q(a=process.env){let b=p(a);if(!b)return{path:null,config:null};try{let a=e().readFileSync(b,"utf-8"),c=(0,j.N)(a);if(c.ok&&c.value&&"object"==typeof c.value)return{path:b,config:c.value}}catch{}return{path:b,config:null}}}};
1
+ "use strict";exports.id=8349,exports.ids=[8349],exports.modules={18349:(a,b,c)=>{c.d(b,{detectGateway:()=>g});var d=c(79748),e=c(27843),f=c(21642);async function g(){let a=process.env.OPENCLAW_GATEWAY_URL,b=j(process.env.OPENCLAW_GATEWAY_TOKEN),c=process.env.OPENCLAW_AGENT_NAME;if(a)return{url:i(a),token:b||void 0,agentName:c||void 0,source:"env"};try{let a=(0,e.YJ)();if(a){let c=await (0,d.readFile)(a,"utf-8"),e=(0,f.N)(c),g=e.ok&&e.value&&"object"==typeof e.value?e.value:{},i=g.gateway?.port??g.port??18789,j=h(g.gateway?.bind??g.gateway?.host??g.host??"127.0.0.1");return{url:`http://${j}:${i}`,token:n(g.gateway?.auth)??b,agentName:g.name??g.agentName??void 0,source:a.includes("clawdbot.json")?"clawdbot.json":"openclaw.json"}}}catch{}return{url:"http://127.0.0.1:18789",token:void 0,agentName:void 0,source:"default"}}function h(a){return({loopback:"127.0.0.1",localhost:"127.0.0.1","0.0.0.0":"127.0.0.1","::":"127.0.0.1","::1":"127.0.0.1"})[a]??a}function i(a){return a.startsWith("http://")||a.startsWith("https://")?a.replace(/\/+$/,""):`http://${a}`}function j(a){if("string"==typeof a)return a.trim()||void 0}function k(a){let b=new Set,c=[];if("string"==typeof a)c.push(...a.split(/[,\s]+/g));else if(Array.isArray(a))for(let b of a)"string"==typeof b&&c.push(...b.split(/[,\s]+/g));for(let a of c){let c=a.trim().toLowerCase();c&&b.add(c)}return b}function l(a){return a.has("operator.admin")?100:a.has("operator.write")?90:a.has("operator.read")?20:10}function m(a){if("string"==typeof a)return j(a);if(!a||"object"!=typeof a)return;let b=a;if(!1!==b.enabled)return j(b.token??b.value??b.accessToken??b.access_token??b.bearer??b.secret)}function n(a){if(!a||"object"!=typeof a)return;let b=a,c=[],d=j(b.token);if(d){let a=k(b.scopes??b.scope);c.push({token:d,score:a.size>0?l(a)+30:50,priority:0})}let e=Array.isArray(b.tokens)?b.tokens:[];for(let a=0;a<e.length;a+=1){let b=e[a],d=m(b);if(!d)continue;let f=b&&"object"==typeof b?k(b.scopes??b.scope):new Set;c.push({token:d,score:f.size>0?l(f):25,priority:a+1})}if(0!==c.length)return c.sort((a,b)=>b.score-a.score||a.priority-b.priority),c[0]?.token}},21642:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{function loadOptionalJson5(){try{let req=eval("require"),mod=req("json5");if(mod&&"function"==typeof mod.parse)return mod}catch{}return null}function stripComments(a){let b="",c=!1,d="",e=!1,f=!1,g=!1;for(let h=0;h<a.length;h+=1){let i=a[h],j=a[h+1];if(e){"\n"===i&&(e=!1,b+=i);continue}if(f){"*"===i&&"/"===j&&(f=!1,h+=1);continue}if(c){if(b+=i,g){g=!1;continue}if("\\"===i){g=!0;continue}i===d&&(c=!1,d="");continue}if('"'===i||"'"===i){c=!0,d=i,b+=i;continue}if("/"===i&&"/"===j){e=!0,h+=1;continue}if("/"===i&&"*"===j){f=!0,h+=1;continue}b+=i}return b}function stripTrailingCommas(a){let b="",c=!1,d="",e=!1;for(let f=0;f<a.length;f+=1){let g=a[f];if(c){if(b+=g,e){e=!1;continue}if("\\"===g){e=!0;continue}g===d&&(c=!1,d="");continue}if('"'===g||"'"===g){c=!0,d=g,b+=g;continue}if(","===g){let b=f+1;for(;b<a.length&&/\s/.test(a[b]);)b+=1;let c=a[b];if("}"===c||"]"===c)continue}b+=g}return b}function parseJsonFallback(a){try{return{ok:!0,value:JSON.parse(a)}}catch{}try{let b=stripTrailingCommas(stripComments(a));return{ok:!0,value:JSON.parse(b)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}function parseOpenClawConfig(a){let b=loadOptionalJson5();if(b)try{return{ok:!0,value:b.parse(a)}}catch{}return parseJsonFallback(a)}__webpack_require__.d(__webpack_exports__,{N:()=>parseOpenClawConfig})},27843:(a,b,c)=>{c.d(b,{We:()=>p,YJ:()=>q,l5:()=>r});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h),j=c(21642);let k=[".clawdbot"],l=["openclaw.json","clawdbot.json"];function m(a=process.env){return[...new Set([a.APPDATA?g().join(a.APPDATA,"OpenClaw"):null,a.APPDATA?g().join(a.APPDATA,"openclaw"):null,a.LOCALAPPDATA?g().join(a.LOCALAPPDATA,"OpenClaw"):null,a.LOCALAPPDATA?g().join(a.LOCALAPPDATA,"openclaw"):null,g().join(i().homedir(),"AppData","Roaming","OpenClaw"),g().join(i().homedir(),"AppData","Roaming","openclaw")].filter(a=>!!(a&&a.trim())).map(a=>g().resolve(a)))]}function n(a){let b=a.trim();return b?b.startsWith("~")?g().resolve(b.replace(/^~(?=$|[\\/])/,i().homedir())):g().resolve(b):b}function o(a){try{return e().existsSync(a)}catch{return!1}}function p(a=process.env){let b=a.OPENCLAW_STATE_DIR||a.CLAWDBOT_STATE_DIR;if(b&&b.trim())return n(b);if("win32"===process.platform){let b=m(a).find(a=>o(a));if(b)return b}return g().join(i().homedir(),".openclaw")}function q(a=process.env){let b=a.OPENCLAW_CONFIG_PATH||a.CLAWDBOT_CONFIG_PATH;if(b&&b.trim()){let a=n(b);return o(a)?a:null}let c=p(a),d="win32"===process.platform?m(a):[];for(let a of[...l.map(a=>g().join(c,a)),...d.flatMap(a=>l.map(b=>g().join(a,b))),g().join(i().homedir(),".openclaw","openclaw.json"),...k.map(a=>g().join(i().homedir(),a,"clawdbot.json"))])if(o(a))return a;return null}function r(a=process.env){let b=q(a);if(!b)return{path:null,config:null};try{let a=e().readFileSync(b,"utf-8"),c=(0,j.N)(a);if(c.ok&&c.value&&"object"==typeof c.value)return{path:b,config:c.value}}catch{}return{path:b,config:null}}}};