piclaw 0.0.20 → 0.0.21

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 (245) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/defult-D5RLDUrI.js +1 -0
  3. package/.output/public/assets/{dist-D-Hc5HbQ.js → dist-BH_oa-kv.js} +1 -1
  4. package/.output/public/assets/index-7JvURuHy.js +204 -0
  5. package/.output/public/assets/index-K43slwjJ.css +1 -0
  6. package/.output/public/index.html +11 -2
  7. package/.output/server/_chunks/app.mjs +138 -104
  8. package/.output/server/_chunks/config.mjs +4 -0
  9. package/.output/server/_chunks/dummy.mjs +1 -1
  10. package/.output/server/_chunks/logger.mjs +1 -1
  11. package/.output/server/_chunks/notes.mjs +1 -3
  12. package/.output/server/_chunks/renderer-template.mjs +1 -1
  13. package/.output/server/_chunks/sandbox.mjs +217 -0
  14. package/.output/server/_chunks/server.mjs +411 -291
  15. package/.output/server/_chunks/terminal.mjs +47 -8
  16. package/.output/server/_chunks/virtual.mjs +192 -54
  17. package/.output/server/_id_.delete.mjs +5 -2
  18. package/.output/server/_id_2.delete.mjs +8 -0
  19. package/.output/server/_jid_.delete.mjs +0 -1
  20. package/.output/server/_jid_.patch.mjs +21 -3
  21. package/.output/server/_jid_2.delete.mjs +0 -1
  22. package/.output/server/_libs/@acemir/cssom+[...].mjs +2269 -1137
  23. package/.output/server/_libs/@google/genai.mjs +348 -284
  24. package/.output/server/_libs/@mariozechner/pi-agent-core+[...].mjs +381 -2073
  25. package/.output/server/_libs/@mariozechner/pi-coding-agent+[...].mjs +236 -136
  26. package/.output/server/_libs/_.mjs +3 -2
  27. package/.output/server/_libs/_10.mjs +2 -4
  28. package/.output/server/_libs/_11.mjs +2 -4
  29. package/.output/server/_libs/_12.mjs +2 -3
  30. package/.output/server/_libs/_13.mjs +2 -3
  31. package/.output/server/_libs/_14.mjs +2 -4
  32. package/.output/server/_libs/_15.mjs +2 -4
  33. package/.output/server/_libs/_16.mjs +2 -3
  34. package/.output/server/_libs/_17.mjs +2 -4
  35. package/.output/server/_libs/_18.mjs +2 -2
  36. package/.output/server/_libs/_19.mjs +2 -2
  37. package/.output/server/_libs/_2.mjs +3 -3
  38. package/.output/server/_libs/_20.mjs +2 -2
  39. package/.output/server/_libs/_21.mjs +2 -2
  40. package/.output/server/_libs/_22.mjs +2 -2
  41. package/.output/server/_libs/_23.mjs +2 -2
  42. package/.output/server/_libs/_24.mjs +2 -2
  43. package/.output/server/_libs/_25.mjs +2 -2
  44. package/.output/server/_libs/_26.mjs +2 -2
  45. package/.output/server/_libs/_27.mjs +2 -2
  46. package/.output/server/_libs/_28.mjs +2 -2
  47. package/.output/server/_libs/_29.mjs +2 -2
  48. package/.output/server/_libs/_3.mjs +3 -3
  49. package/.output/server/_libs/_30.mjs +2 -2
  50. package/.output/server/_libs/_31.mjs +2 -2
  51. package/.output/server/_libs/_32.mjs +2 -2
  52. package/.output/server/_libs/_33.mjs +2 -2
  53. package/.output/server/_libs/_34.mjs +2 -2
  54. package/.output/server/_libs/_35.mjs +2 -2
  55. package/.output/server/_libs/_36.mjs +2 -2
  56. package/.output/server/_libs/_37.mjs +2 -2
  57. package/.output/server/_libs/_38.mjs +2 -2
  58. package/.output/server/_libs/_39.mjs +2 -2
  59. package/.output/server/_libs/_4.mjs +4 -3
  60. package/.output/server/_libs/_40.mjs +2 -2
  61. package/.output/server/_libs/_41.mjs +2 -2
  62. package/.output/server/_libs/_42.mjs +2 -2
  63. package/.output/server/_libs/_43.mjs +2 -2
  64. package/.output/server/_libs/_44.mjs +2 -2
  65. package/.output/server/_libs/_45.mjs +2 -2
  66. package/.output/server/_libs/_46.mjs +2 -2
  67. package/.output/server/_libs/_47.mjs +2 -2
  68. package/.output/server/_libs/_48.mjs +2 -2
  69. package/.output/server/_libs/_49.mjs +2 -2
  70. package/.output/server/_libs/_5.mjs +2 -3
  71. package/.output/server/_libs/_50.mjs +2 -2
  72. package/.output/server/_libs/_51.mjs +2 -2
  73. package/.output/server/_libs/_52.mjs +2 -2
  74. package/.output/server/_libs/_53.mjs +2 -2
  75. package/.output/server/_libs/_54.mjs +2 -2
  76. package/.output/server/_libs/_55.mjs +2 -2
  77. package/.output/server/_libs/_56.mjs +2 -2
  78. package/.output/server/_libs/_57.mjs +2 -2
  79. package/.output/server/_libs/_58.mjs +2 -2
  80. package/.output/server/_libs/_59.mjs +2 -2
  81. package/.output/server/_libs/_6.mjs +2 -3
  82. package/.output/server/_libs/_60.mjs +2 -2
  83. package/.output/server/_libs/_61.mjs +2 -2
  84. package/.output/server/_libs/_62.mjs +2 -2
  85. package/.output/server/_libs/_63.mjs +2 -2
  86. package/.output/server/_libs/_64.mjs +2 -2
  87. package/.output/server/_libs/_65.mjs +2 -2
  88. package/.output/server/_libs/_66.mjs +2 -2
  89. package/.output/server/_libs/_67.mjs +2 -2
  90. package/.output/server/_libs/_68.mjs +2 -2
  91. package/.output/server/_libs/_69.mjs +2 -2
  92. package/.output/server/_libs/_7.mjs +2 -5
  93. package/.output/server/_libs/_70.mjs +2 -2
  94. package/.output/server/_libs/_71.mjs +2 -2
  95. package/.output/server/_libs/_72.mjs +2 -2
  96. package/.output/server/_libs/_73.mjs +2 -2
  97. package/.output/server/_libs/_74.mjs +2 -2
  98. package/.output/server/_libs/_75.mjs +2 -2
  99. package/.output/server/_libs/_76.mjs +2 -2
  100. package/.output/server/_libs/_77.mjs +2 -2
  101. package/.output/server/_libs/_78.mjs +2 -2
  102. package/.output/server/_libs/_79.mjs +2 -2
  103. package/.output/server/_libs/_8.mjs +2 -3
  104. package/.output/server/_libs/_80.mjs +2 -2
  105. package/.output/server/_libs/_81.mjs +2 -2
  106. package/.output/server/_libs/_82.mjs +2 -2
  107. package/.output/server/_libs/_83.mjs +2 -2
  108. package/.output/server/_libs/_84.mjs +2 -2
  109. package/.output/server/_libs/_85.mjs +2 -2
  110. package/.output/server/_libs/_86.mjs +2 -2
  111. package/.output/server/_libs/_87.mjs +2 -2
  112. package/.output/server/_libs/_88.mjs +2 -2
  113. package/.output/server/_libs/_89.mjs +2 -2
  114. package/.output/server/_libs/_9.mjs +2 -4
  115. package/.output/server/_libs/_90.mjs +5 -2
  116. package/.output/server/_libs/_91.mjs +3 -2
  117. package/.output/server/_libs/_92.mjs +2 -2
  118. package/.output/server/_libs/_93.mjs +2 -2
  119. package/.output/server/_libs/_94.mjs +2 -2
  120. package/.output/server/_libs/agent-base.mjs +1 -1
  121. package/.output/server/_libs/cheerio+[...].mjs +1 -1
  122. package/.output/server/_libs/data-uri-to-buffer.mjs +2 -67
  123. package/.output/server/_libs/data-urls+[...].mjs +1 -1
  124. package/.output/server/_libs/diff.mjs +1 -1
  125. package/.output/server/_libs/exodus__bytes.mjs +99 -81
  126. package/.output/server/_libs/fetch-blob+node-domexception.mjs +1 -1
  127. package/.output/server/_libs/h3+rou3+srvx.mjs +34 -4
  128. package/.output/server/_libs/html-encoding-sniffer.mjs +1 -1
  129. package/.output/server/_libs/https-proxy-agent.mjs +2 -2
  130. package/.output/server/_libs/jsdom.mjs +1 -1
  131. package/.output/server/_libs/just-bash+[...].mjs +4676 -3916
  132. package/.output/server/_libs/mariozechner__jiti.mjs +1 -1
  133. package/.output/server/_libs/mariozechner__pi-ai.mjs +1472 -0
  134. package/.output/server/_libs/md4x.mjs +1 -1
  135. package/.output/server/_libs/node-fetch.mjs +14 -14
  136. package/.output/server/_libs/node-liblzma.mjs +1 -1
  137. package/.output/server/_libs/silvia-odwyer__photon-node.mjs +1 -1
  138. package/.output/server/_routes/api/auth/status.mjs +25 -6
  139. package/.output/server/_routes/api/config2.mjs +2 -0
  140. package/.output/server/_routes/api/files/groups.mjs +0 -1
  141. package/.output/server/_routes/api/groups.mjs +4 -2
  142. package/.output/server/_routes/api/groups2.mjs +14 -5
  143. package/.output/server/_routes/api/health.mjs +0 -1
  144. package/.output/server/_routes/api/pi/apikey.mjs +0 -1
  145. package/.output/server/_routes/api/pi/apikey_providers.mjs +0 -1
  146. package/.output/server/_routes/api/pi/commands.mjs +1 -2
  147. package/.output/server/_routes/api/pi/login/events.mjs +0 -1
  148. package/.output/server/_routes/api/pi/login/respond.mjs +0 -1
  149. package/.output/server/_routes/api/pi/login.mjs +0 -1
  150. package/.output/server/_routes/api/pi/logout.mjs +0 -1
  151. package/.output/server/_routes/api/pi/models.mjs +0 -1
  152. package/.output/server/_routes/api/pi/status.mjs +0 -1
  153. package/.output/server/_routes/api/sandbox.mjs +26 -0
  154. package/.output/server/_routes/api/sandbox2.mjs +17 -0
  155. package/.output/server/_routes/api/send.mjs +12 -12
  156. package/.output/server/_routes/api/status.mjs +0 -1
  157. package/.output/server/_routes/api/stop.mjs +0 -1
  158. package/.output/server/_routes/api/tasks2.mjs +0 -1
  159. package/.output/server/_routes/api/telegram/setup.mjs +0 -1
  160. package/.output/server/_routes/api/telegram/status.mjs +0 -1
  161. package/.output/server/_routes/api/terminal2.mjs +2 -1
  162. package/.output/server/_routes/api/tunnel/setup.mjs +0 -1
  163. package/.output/server/_runtime.mjs +1 -2
  164. package/.output/server/index.mjs +1 -1
  165. package/.output/server/node_modules/amdefine/amdefine.js +301 -0
  166. package/.output/server/node_modules/amdefine/package.json +16 -0
  167. package/.output/server/node_modules/compressjs/lib/BWT.js +420 -0
  168. package/.output/server/node_modules/compressjs/lib/BWTC.js +234 -0
  169. package/.output/server/node_modules/compressjs/lib/BitStream.js +108 -0
  170. package/.output/server/node_modules/compressjs/lib/Bzip2.js +936 -0
  171. package/.output/server/node_modules/compressjs/lib/CRC32.js +105 -0
  172. package/.output/server/node_modules/compressjs/lib/Context1Model.js +56 -0
  173. package/.output/server/node_modules/compressjs/lib/DefSumModel.js +152 -0
  174. package/.output/server/node_modules/compressjs/lib/DeflateDistanceModel.js +55 -0
  175. package/.output/server/node_modules/compressjs/lib/Dmc.js +197 -0
  176. package/.output/server/node_modules/compressjs/lib/DummyRangeCoder.js +81 -0
  177. package/.output/server/node_modules/compressjs/lib/FenwickModel.js +194 -0
  178. package/.output/server/node_modules/compressjs/lib/Huffman.js +514 -0
  179. package/.output/server/node_modules/compressjs/lib/HuffmanAllocator.js +227 -0
  180. package/.output/server/node_modules/compressjs/lib/LogDistanceModel.js +46 -0
  181. package/.output/server/node_modules/compressjs/lib/Lzjb.js +300 -0
  182. package/.output/server/node_modules/compressjs/lib/LzjbR.js +241 -0
  183. package/.output/server/node_modules/compressjs/lib/Lzp3.js +273 -0
  184. package/.output/server/node_modules/compressjs/lib/MTFModel.js +208 -0
  185. package/.output/server/node_modules/compressjs/lib/NoModel.js +46 -0
  186. package/.output/server/node_modules/compressjs/lib/PPM.js +343 -0
  187. package/.output/server/node_modules/compressjs/lib/RangeCoder.js +238 -0
  188. package/.output/server/node_modules/compressjs/lib/Simple.js +111 -0
  189. package/.output/server/node_modules/compressjs/lib/Stream.js +53 -0
  190. package/.output/server/node_modules/compressjs/lib/Util.js +324 -0
  191. package/.output/server/node_modules/compressjs/lib/freeze.js +14 -0
  192. package/.output/server/node_modules/compressjs/main.js +29 -0
  193. package/.output/server/node_modules/compressjs/package.json +35 -0
  194. package/.output/server/package.json +2 -1
  195. package/README.md +10 -1
  196. package/lib/index.d.mts +1 -0
  197. package/lib/index.mjs +1 -0
  198. package/lib/piclaw.mjs +100 -0
  199. package/lib/utils.mjs +96 -0
  200. package/package.json +16 -11
  201. package/.output/public/assets/defult-DtwgaiMA.js +0 -1
  202. package/.output/public/assets/index-B5n0eraW.css +0 -1
  203. package/.output/public/assets/index-DUbn6fuj.js +0 -205
  204. package/.output/server/_libs/@aws-crypto/crc32+[...].mjs +0 -299
  205. package/.output/server/_libs/@aws-sdk/client-bedrock-runtime+[...].mjs +0 -17828
  206. package/.output/server/_libs/@aws-sdk/credential-provider-http+[...].mjs +0 -122
  207. package/.output/server/_libs/@aws-sdk/credential-provider-ini+[...].mjs +0 -417
  208. package/.output/server/_libs/@aws-sdk/credential-provider-process+[...].mjs +0 -54
  209. package/.output/server/_libs/@aws-sdk/credential-provider-sso+[...].mjs +0 -1151
  210. package/.output/server/_libs/@aws-sdk/credential-provider-web-identity+[...].mjs +0 -50
  211. package/.output/server/_libs/@smithy/credential-provider-imds+[...].mjs +0 -369
  212. package/.output/server/_libs/@tootallnate/quickjs-emscripten+[...].mjs +0 -3011
  213. package/.output/server/_libs/_100.mjs +0 -2
  214. package/.output/server/_libs/_101.mjs +0 -2
  215. package/.output/server/_libs/_102.mjs +0 -2
  216. package/.output/server/_libs/_103.mjs +0 -5
  217. package/.output/server/_libs/_104.mjs +0 -3
  218. package/.output/server/_libs/_105.mjs +0 -2
  219. package/.output/server/_libs/_106.mjs +0 -3
  220. package/.output/server/_libs/_107.mjs +0 -2
  221. package/.output/server/_libs/_108.mjs +0 -2
  222. package/.output/server/_libs/_95.mjs +0 -2
  223. package/.output/server/_libs/_96.mjs +0 -2
  224. package/.output/server/_libs/_97.mjs +0 -2
  225. package/.output/server/_libs/_98.mjs +0 -2
  226. package/.output/server/_libs/_99.mjs +0 -2
  227. package/.output/server/_libs/amdefine.mjs +0 -188
  228. package/.output/server/_libs/ast-types.mjs +0 -2270
  229. package/.output/server/_libs/aws-sdk__nested-clients.mjs +0 -3141
  230. package/.output/server/_libs/basic-ftp.mjs +0 -1906
  231. package/.output/server/_libs/compressjs.mjs +0 -50
  232. package/.output/server/_libs/degenerator+[...].mjs +0 -9964
  233. package/.output/server/_libs/get-uri.mjs +0 -413
  234. package/.output/server/_libs/http-proxy-agent.mjs +0 -123
  235. package/.output/server/_libs/ip-address.mjs +0 -1423
  236. package/.output/server/_libs/lru-cache.mjs +0 -732
  237. package/.output/server/_libs/netmask.mjs +0 -139
  238. package/.output/server/_libs/pac-proxy-agent+[...].mjs +0 -3104
  239. package/.output/server/_libs/proxy-agent+proxy-from-env.mjs +0 -204
  240. package/.output/server/_libs/smithy__core.mjs +0 -192
  241. package/.output/server/node_modules/tslib/modules/index.js +0 -70
  242. package/.output/server/node_modules/tslib/modules/package.json +0 -3
  243. package/.output/server/node_modules/tslib/package.json +0 -47
  244. package/.output/server/node_modules/tslib/tslib.js +0 -484
  245. package/bin/piclaw.mjs +0 -195
@@ -1,6 +1,5 @@
1
1
  import { a as getDevice, c as parseCookies, d as touchDevice, n as COOKIE_NAME, o as makeSetCookie } from "./auth.mjs";
2
- import "../_libs/@aws-sdk/client-bedrock-runtime+[...].mjs";
3
- import { a as defineHandler, d as toEventHandler, n as HTTPError, o as defineLazyEventHandler, p as NodeResponse, s as defineMiddleware, t as H3Core, u as proxyRequest } from "../_libs/h3+rou3+srvx.mjs";
2
+ import { a as defineHandler, f as toEventHandler, m as NodeResponse, n as HTTPError, o as defineLazyEventHandler, s as defineMiddleware, t as H3Core, u as proxyRequest } from "../_libs/h3+rou3+srvx.mjs";
4
3
  import { t as HookableCore } from "../_libs/hookable.mjs";
5
4
  import { n as server_default } from "./server.mjs";
6
5
  import "../_libs/@mariozechner/pi-agent-core+[...].mjs";
@@ -80,142 +79,142 @@ var public_assets_data_default = {
80
79
  "/icon-192.png": {
81
80
  "type": "image/png",
82
81
  "etag": "\"1ed8-HRm0wMoc1YcKORc1dxMZZIs4XqM\"",
83
- "mtime": "2026-03-05T02:52:54.672Z",
82
+ "mtime": "2026-03-05T20:48:22.901Z",
84
83
  "size": 7896,
85
84
  "path": "../public/icon-192.png"
86
85
  },
87
86
  "/icon-512.png": {
88
87
  "type": "image/png",
89
88
  "etag": "\"61b1-w2AVse8SydUKs9vEM9tKbfXakcc\"",
90
- "mtime": "2026-03-05T02:52:54.673Z",
89
+ "mtime": "2026-03-05T20:48:22.901Z",
91
90
  "size": 25009,
92
91
  "path": "../public/icon-512.png"
93
92
  },
94
93
  "/icon.svg": {
95
94
  "type": "image/svg+xml",
96
95
  "etag": "\"41a-ki4Lp5uMw3sCqMRSciVIHajM4ps\"",
97
- "mtime": "2026-03-05T02:52:54.672Z",
96
+ "mtime": "2026-03-05T20:48:22.901Z",
98
97
  "size": 1050,
99
98
  "path": "../public/icon.svg"
100
99
  },
101
100
  "/index.html": {
102
101
  "type": "text/html; charset=utf-8",
103
- "etag": "\"408-eqMSW0pVwiG2Bys6h+lQtGKNgQw\"",
104
- "mtime": "2026-03-05T02:52:54.604Z",
105
- "size": 1032,
102
+ "etag": "\"593-i9ceRAzAQpumHWT433QoPzP7trM\"",
103
+ "mtime": "2026-03-05T20:48:22.862Z",
104
+ "size": 1427,
106
105
  "path": "../public/index.html"
107
106
  },
108
- "/manifest.json": {
109
- "type": "application/json",
110
- "etag": "\"21c-+ajOSgCwd9Z+fs01GNQu1MQTwuk\"",
111
- "mtime": "2026-03-05T02:52:54.673Z",
112
- "size": 540,
113
- "path": "../public/manifest.json"
114
- },
115
107
  "/reset.html": {
116
108
  "type": "text/html; charset=utf-8",
117
109
  "etag": "\"e8f-ShXrVZaJ0i30oN0foalVLUdrgYk\"",
118
- "mtime": "2026-03-05T02:52:54.673Z",
110
+ "mtime": "2026-03-05T20:48:22.901Z",
119
111
  "size": 3727,
120
112
  "path": "../public/reset.html"
121
113
  },
122
114
  "/sw.js": {
123
115
  "type": "text/javascript; charset=utf-8",
124
116
  "etag": "\"765-FHQ7M5HcgHxyZi8sVv0/baOJWD8\"",
125
- "mtime": "2026-03-05T02:52:54.673Z",
117
+ "mtime": "2026-03-05T20:48:22.901Z",
126
118
  "size": 1893,
127
119
  "path": "../public/sw.js"
128
120
  },
121
+ "/manifest.json": {
122
+ "type": "application/json",
123
+ "etag": "\"21c-+ajOSgCwd9Z+fs01GNQu1MQTwuk\"",
124
+ "mtime": "2026-03-05T20:48:22.901Z",
125
+ "size": 540,
126
+ "path": "../public/manifest.json"
127
+ },
129
128
  "/assets/GeistPixel-Square-CwnHaJd_.woff2": {
130
129
  "type": "font/woff2",
131
130
  "etag": "\"6fc8-Nl3X3tuURsyt3ex8iF9PBK3Fymk\"",
132
- "mtime": "2026-03-05T02:52:54.603Z",
131
+ "mtime": "2026-03-05T20:48:22.861Z",
133
132
  "size": 28616,
134
133
  "path": "../public/assets/GeistPixel-Square-CwnHaJd_.woff2"
135
134
  },
136
- "/assets/defult-DtwgaiMA.js": {
135
+ "/assets/defult-D5RLDUrI.js": {
137
136
  "type": "text/javascript; charset=utf-8",
138
- "etag": "\"5be-VHiDtG2AKvxCa5X355tD9/GdaU4\"",
139
- "mtime": "2026-03-05T02:52:54.600Z",
140
- "size": 1470,
141
- "path": "../public/assets/defult-DtwgaiMA.js"
137
+ "etag": "\"5cd-wWLpazRnh6aEcrSXaekPu0e3LRk\"",
138
+ "mtime": "2026-03-05T20:48:22.860Z",
139
+ "size": 1485,
140
+ "path": "../public/assets/defult-D5RLDUrI.js"
142
141
  },
143
142
  "/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2": {
144
143
  "type": "font/woff2",
145
144
  "etag": "\"3964-jfUkxTfHRj1cpO33jEsDk2lkrvM\"",
146
- "mtime": "2026-03-05T02:52:54.603Z",
145
+ "mtime": "2026-03-05T20:48:22.861Z",
147
146
  "size": 14692,
148
147
  "path": "../public/assets/geist-cyrillic-wght-normal-CHSlOQsW.woff2"
149
148
  },
150
149
  "/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2": {
151
150
  "type": "font/woff2",
152
151
  "etag": "\"3bcc-oSFlPnDlb7fAcQTPv6sqm6NgXXU\"",
153
- "mtime": "2026-03-05T02:52:54.603Z",
152
+ "mtime": "2026-03-05T20:48:22.861Z",
154
153
  "size": 15308,
155
154
  "path": "../public/assets/geist-latin-ext-wght-normal-DMtmJ5ZE.woff2"
156
155
  },
157
156
  "/assets/geist-latin-wght-normal-Dm3htQBi.woff2": {
158
157
  "type": "font/woff2",
159
158
  "etag": "\"6ef0-pZqr0k2V92t+lxQ/ogxqTIOgDGM\"",
160
- "mtime": "2026-03-05T02:52:54.603Z",
159
+ "mtime": "2026-03-05T20:48:22.862Z",
161
160
  "size": 28400,
162
161
  "path": "../public/assets/geist-latin-wght-normal-Dm3htQBi.woff2"
163
162
  },
164
163
  "/assets/geist-mono-cyrillic-wght-normal-BZdD_g9V.woff2": {
165
164
  "type": "font/woff2",
166
165
  "etag": "\"3148-fDEowP3hdBu549ke2NSllgnKwFo\"",
167
- "mtime": "2026-03-05T02:52:54.603Z",
166
+ "mtime": "2026-03-05T20:48:22.862Z",
168
167
  "size": 12616,
169
168
  "path": "../public/assets/geist-mono-cyrillic-wght-normal-BZdD_g9V.woff2"
170
169
  },
171
170
  "/assets/geist-mono-latin-ext-wght-normal-b6lpi8_2.woff2": {
172
171
  "type": "font/woff2",
173
172
  "etag": "\"32f4-mFhyUXRKosFvmVg6XWwBAV3kvk4\"",
174
- "mtime": "2026-03-05T02:52:54.603Z",
173
+ "mtime": "2026-03-05T20:48:22.862Z",
175
174
  "size": 13044,
176
175
  "path": "../public/assets/geist-mono-latin-ext-wght-normal-b6lpi8_2.woff2"
177
176
  },
178
177
  "/assets/geist-mono-latin-wght-normal-Cjtb1TV-.woff2": {
179
178
  "type": "font/woff2",
180
179
  "etag": "\"7a88-DQWpi033XojA2ZmNMyp8i2zZURE\"",
181
- "mtime": "2026-03-05T02:52:54.603Z",
180
+ "mtime": "2026-03-05T20:48:22.862Z",
182
181
  "size": 31368,
183
182
  "path": "../public/assets/geist-mono-latin-wght-normal-Cjtb1TV-.woff2"
184
183
  },
185
- "/assets/index-B5n0eraW.css": {
184
+ "/assets/index-K43slwjJ.css": {
186
185
  "type": "text/css; charset=utf-8",
187
- "etag": "\"12465-3MgOvNY2DsyslSP6qkQS0cIuUpM\"",
188
- "mtime": "2026-03-05T02:52:54.603Z",
189
- "size": 74853,
190
- "path": "../public/assets/index-B5n0eraW.css"
186
+ "etag": "\"135fb-zTkqASNX7Pvm3wLJmP2ooi8MCkY\"",
187
+ "mtime": "2026-03-05T20:48:22.862Z",
188
+ "size": 79355,
189
+ "path": "../public/assets/index-K43slwjJ.css"
191
190
  },
192
191
  "/assets/md4x-CNLJ57xO.wasm": {
193
192
  "type": "application/wasm",
194
193
  "etag": "\"41116-fXWw13Hb4mtmx1zqWY937G5o04w\"",
195
- "mtime": "2026-03-05T02:52:54.604Z",
194
+ "mtime": "2026-03-05T20:48:22.862Z",
196
195
  "size": 266518,
197
196
  "path": "../public/assets/md4x-CNLJ57xO.wasm"
198
197
  },
199
198
  "/assets/md4x-CyfQToGJ.js": {
200
199
  "type": "text/javascript; charset=utf-8",
201
200
  "etag": "\"38-QLTgoA+K9j0djblpu5tawfdfO5c\"",
202
- "mtime": "2026-03-05T02:52:54.602Z",
201
+ "mtime": "2026-03-05T20:48:22.861Z",
203
202
  "size": 56,
204
203
  "path": "../public/assets/md4x-CyfQToGJ.js"
205
204
  },
206
- "/assets/index-DUbn6fuj.js": {
205
+ "/assets/dist-BH_oa-kv.js": {
207
206
  "type": "text/javascript; charset=utf-8",
208
- "etag": "\"12dd6d-troVxib1c/e+Rdvryy/8DkrkY/k\"",
209
- "mtime": "2026-03-05T02:52:54.599Z",
210
- "size": 1236333,
211
- "path": "../public/assets/index-DUbn6fuj.js"
207
+ "etag": "\"16e8b9-eKD68lKcWgL2KIjd7XYrwbTvOJE\"",
208
+ "mtime": "2026-03-05T20:48:22.861Z",
209
+ "size": 1501369,
210
+ "path": "../public/assets/dist-BH_oa-kv.js"
212
211
  },
213
- "/assets/dist-D-Hc5HbQ.js": {
212
+ "/assets/index-7JvURuHy.js": {
214
213
  "type": "text/javascript; charset=utf-8",
215
- "etag": "\"16e8b9-vg8QzTs62M2gmAM27AHvtjw9p/4\"",
216
- "mtime": "2026-03-05T02:52:54.602Z",
217
- "size": 1501369,
218
- "path": "../public/assets/dist-D-Hc5HbQ.js"
214
+ "etag": "\"1314ab-rlVhnCt0436TgqLGRpssRR5GONo\"",
215
+ "mtime": "2026-03-05T20:48:22.859Z",
216
+ "size": 1250475,
217
+ "path": "../public/assets/index-7JvURuHy.js"
219
218
  }
220
219
  };
221
220
  function readAsset(id) {
@@ -290,7 +289,13 @@ var PUBLIC_PREFIXES = ["/api/auth/"];
290
289
  var device_auth_default = defineMiddleware(async (event, next) => {
291
290
  const pathname = event.url.pathname;
292
291
  if (!pathname.startsWith("/api/")) return next();
293
- const deviceId = parseCookies(event.req.headers.get("cookie") || "")[COOKIE_NAME];
292
+ const cookies = parseCookies(event.req.headers.get("cookie") || "");
293
+ const deviceId = cookies[COOKIE_NAME];
294
+ const appSecret = process.env.PICLAW_APP_SECRET;
295
+ if (appSecret && cookies["piclaw_app_token"] === appSecret) {
296
+ if (deviceId) event.context.deviceId = deviceId;
297
+ return next();
298
+ }
294
299
  if (PUBLIC_PREFIXES.some((p) => pathname.startsWith(p))) return next();
295
300
  if (!deviceId) throw new HTTPError("Device not registered", { status: 401 });
296
301
  const device = await getDevice(deviceId);
@@ -353,7 +358,7 @@ var _lazy_zxmisQ = defineLazyEventHandler(() => import("../_routes/api/chats.mjs
353
358
  var _lazy_FCzSbE = defineLazyEventHandler(() => import("../_routes/api/config.mjs"));
354
359
  var _lazy_g8U0Ne = defineLazyEventHandler(() => import("../_routes/api/config2.mjs"));
355
360
  var _lazy_WwSK4s = defineLazyEventHandler(() => import("../_routes/api/device_events.mjs"));
356
- var _lazy_WbrfDt = defineLazyEventHandler(() => import("../_libs/_108.mjs"));
361
+ var _lazy_WbrfDt = defineLazyEventHandler(() => import("../_libs/_94.mjs"));
357
362
  var _lazy_Cc2xrp = defineLazyEventHandler(() => import("../_routes/api/files/delete.mjs"));
358
363
  var _lazy_S352Hh = defineLazyEventHandler(() => import("../_routes/api/files/groups.mjs"));
359
364
  var _lazy_h04WvL = defineLazyEventHandler(() => import("../_routes/api/files.mjs"));
@@ -396,6 +401,9 @@ var _lazy_BroS7q = defineLazyEventHandler(() => import("../_routes/api/resources
396
401
  var _lazy_IdxSZC = defineLazyEventHandler(() => import("../_routes/api/resources/kill.mjs"));
397
402
  var _lazy_r6Q53x = defineLazyEventHandler(() => import("../_routes/api/resources/ports.mjs"));
398
403
  var _lazy_kp8jE9 = defineLazyEventHandler(() => import("../_routes/api/resources/processes.mjs"));
404
+ var _lazy_6yvNQ3 = defineLazyEventHandler(() => import("../_id_.delete.mjs"));
405
+ var _lazy_Os3TTN = defineLazyEventHandler(() => import("../_routes/api/sandbox.mjs"));
406
+ var _lazy_9Excp1 = defineLazyEventHandler(() => import("../_routes/api/sandbox2.mjs"));
399
407
  var _lazy_Cf90g9 = defineLazyEventHandler(() => import("../_routes/api/send.mjs"));
400
408
  var _lazy_f46SiX = defineLazyEventHandler(() => import("../_routes/api/status.mjs"));
401
409
  var _lazy_fUZGDL = defineLazyEventHandler(() => import("../_routes/api/stop.mjs"));
@@ -407,7 +415,7 @@ var _lazy_a4eaQ4 = defineLazyEventHandler(() => import("../_routes/api/tasks.mjs
407
415
  var _lazy_y4X9HC = defineLazyEventHandler(() => import("../_routes/api/tasks2.mjs"));
408
416
  var _lazy_s4mtPg = defineLazyEventHandler(() => import("../_routes/api/telegram/setup.mjs"));
409
417
  var _lazy_lqAhEC = defineLazyEventHandler(() => import("../_routes/api/telegram/status.mjs"));
410
- var _lazy_hwedry = defineLazyEventHandler(() => import("../_id_.delete.mjs"));
418
+ var _lazy_hwedry = defineLazyEventHandler(() => import("../_id_2.delete.mjs"));
411
419
  var _lazy_jKIB9c = defineLazyEventHandler(() => import("../_id_2.patch.mjs"));
412
420
  var _lazy_SNxV59 = defineLazyEventHandler(() => import("../_routes/api/terminal/[id]/input.mjs"));
413
421
  var _lazy_2wGwm5 = defineLazyEventHandler(() => import("../_routes/api/terminal/[id]/nudge.mjs"));
@@ -419,7 +427,7 @@ var _lazy_GBBzFJ = defineLazyEventHandler(() => import("../_routes/api/tunnel/pa
419
427
  var _lazy_ikDCsl = defineLazyEventHandler(() => import("../_routes/api/tunnel/setup.mjs"));
420
428
  var _lazy_PyoJFH = defineLazyEventHandler(() => import("../_routes/api/tunnel/status.mjs"));
421
429
  var _lazy_sfQTMO = defineLazyEventHandler(() => import("../_...path_.get.mjs"));
422
- var _lazy_lIU8fq = defineLazyEventHandler(() => import("./renderer-template.mjs"));
430
+ var _lazy_2jdFi6 = defineLazyEventHandler(() => import("./renderer-template.mjs"));
423
431
  const findRoute = /* @__PURE__ */ (() => {
424
432
  const $0 = {
425
433
  route: "/api/auth/approve",
@@ -628,112 +636,124 @@ const findRoute = /* @__PURE__ */ (() => {
628
636
  method: "get",
629
637
  handler: _lazy_kp8jE9
630
638
  }, $52 = {
639
+ route: "/api/sandbox",
640
+ method: "get",
641
+ handler: _lazy_Os3TTN
642
+ }, $53 = {
643
+ route: "/api/sandbox",
644
+ method: "post",
645
+ handler: _lazy_9Excp1
646
+ }, $54 = {
631
647
  route: "/api/send",
632
648
  method: "post",
633
649
  handler: _lazy_Cf90g9
634
- }, $53 = {
650
+ }, $55 = {
635
651
  route: "/api/status",
636
652
  method: "get",
637
653
  handler: _lazy_f46SiX
638
- }, $54 = {
654
+ }, $56 = {
639
655
  route: "/api/stop",
640
656
  method: "post",
641
657
  handler: _lazy_fUZGDL
642
- }, $55 = {
658
+ }, $57 = {
643
659
  route: "/api/store/plugins",
644
660
  method: "get",
645
661
  handler: _lazy_nBHtiI
646
- }, $56 = {
662
+ }, $58 = {
647
663
  route: "/api/store/skills",
648
664
  method: "get",
649
665
  handler: _lazy_qwcxy0
650
- }, $57 = {
666
+ }, $59 = {
651
667
  route: "/api/stream",
652
668
  method: "get",
653
669
  handler: _lazy_BCmuoq
654
- }, $58 = {
670
+ }, $60 = {
655
671
  route: "/api/tasks",
656
672
  method: "get",
657
673
  handler: _lazy_a4eaQ4
658
- }, $59 = {
674
+ }, $61 = {
659
675
  route: "/api/tasks",
660
676
  method: "post",
661
677
  handler: _lazy_y4X9HC
662
- }, $60 = {
678
+ }, $62 = {
663
679
  route: "/api/telegram/setup",
664
680
  method: "post",
665
681
  handler: _lazy_s4mtPg
666
- }, $61 = {
682
+ }, $63 = {
667
683
  route: "/api/telegram/status",
668
684
  method: "get",
669
685
  handler: _lazy_lqAhEC
670
- }, $62 = {
686
+ }, $64 = {
671
687
  route: "/api/terminal",
672
688
  method: "get",
673
689
  handler: _lazy_thB4Sz
674
- }, $63 = {
690
+ }, $65 = {
675
691
  route: "/api/terminal",
676
692
  method: "post",
677
693
  handler: _lazy_vnbFXO
678
- }, $64 = {
694
+ }, $66 = {
679
695
  route: "/api/tunnel/password",
680
696
  method: "get",
681
697
  handler: _lazy_GBBzFJ
682
- }, $65 = {
698
+ }, $67 = {
683
699
  route: "/api/tunnel/setup",
684
700
  method: "post",
685
701
  handler: _lazy_ikDCsl
686
- }, $66 = {
702
+ }, $68 = {
687
703
  route: "/api/tunnel/status",
688
704
  method: "get",
689
705
  handler: _lazy_PyoJFH
690
- }, $67 = {
706
+ }, $69 = {
691
707
  route: "/api/chats/:jid",
692
708
  method: "delete",
693
709
  handler: _lazy_XlgjaQ
694
- }, $68 = {
710
+ }, $70 = {
695
711
  route: "/api/groups/:jid",
696
712
  method: "delete",
697
713
  handler: _lazy_EWoGjx
698
- }, $69 = {
714
+ }, $71 = {
699
715
  route: "/api/groups/:jid",
700
716
  method: "patch",
701
717
  handler: _lazy_RpSu7h
702
- }, $70 = {
718
+ }, $72 = {
719
+ route: "/api/sandbox/:id",
720
+ method: "delete",
721
+ handler: _lazy_6yvNQ3
722
+ }, $73 = {
703
723
  route: "/api/tasks/:id",
704
724
  method: "patch",
705
725
  handler: _lazy_E6g8OK
706
- }, $71 = {
726
+ }, $74 = {
707
727
  route: "/api/terminal/:id",
708
728
  method: "delete",
709
729
  handler: _lazy_hwedry
710
- }, $72 = {
730
+ }, $75 = {
711
731
  route: "/api/terminal/:id",
712
732
  method: "patch",
713
733
  handler: _lazy_jKIB9c
714
- }, $73 = {
734
+ }, $76 = {
715
735
  route: "/api/terminal/:id/input",
716
736
  method: "post",
717
737
  handler: _lazy_SNxV59
718
- }, $74 = {
738
+ }, $77 = {
719
739
  route: "/api/terminal/:id/nudge",
720
740
  method: "post",
721
741
  handler: _lazy_2wGwm5
722
- }, $75 = {
742
+ }, $78 = {
723
743
  route: "/api/terminal/:id/resize",
724
744
  method: "post",
725
745
  handler: _lazy_EST4ov
726
- }, $76 = {
746
+ }, $79 = {
727
747
  route: "/api/terminal/:id/stream",
728
748
  method: "get",
729
749
  handler: _lazy_K7Xq0B
730
- }, $77 = {
750
+ }, $80 = {
731
751
  route: "/api/uploads/**:path",
732
752
  method: "get",
733
753
  handler: _lazy_sfQTMO
734
- }, $78 = {
754
+ }, $81 = {
735
755
  route: "/**",
736
- handler: _lazy_lIU8fq
756
+ handler: _lazy_2jdFi6
737
757
  };
738
758
  return (m, p) => {
739
759
  if (p.charCodeAt(p.length - 1) === 47) p = p.slice(0, -1) || "/";
@@ -875,46 +895,50 @@ const findRoute = /* @__PURE__ */ (() => {
875
895
  if (p === "/api/resources/processes") {
876
896
  if (m === "GET") return { data: $51 };
877
897
  }
898
+ if (p === "/api/sandbox") {
899
+ if (m === "GET") return { data: $52 };
900
+ if (m === "POST") return { data: $53 };
901
+ }
878
902
  if (p === "/api/send") {
879
- if (m === "POST") return { data: $52 };
903
+ if (m === "POST") return { data: $54 };
880
904
  }
881
905
  if (p === "/api/status") {
882
- if (m === "GET") return { data: $53 };
906
+ if (m === "GET") return { data: $55 };
883
907
  }
884
908
  if (p === "/api/stop") {
885
- if (m === "POST") return { data: $54 };
909
+ if (m === "POST") return { data: $56 };
886
910
  }
887
911
  if (p === "/api/store/plugins") {
888
- if (m === "GET") return { data: $55 };
912
+ if (m === "GET") return { data: $57 };
889
913
  }
890
914
  if (p === "/api/store/skills") {
891
- if (m === "GET") return { data: $56 };
915
+ if (m === "GET") return { data: $58 };
892
916
  }
893
917
  if (p === "/api/stream") {
894
- if (m === "GET") return { data: $57 };
918
+ if (m === "GET") return { data: $59 };
895
919
  }
896
920
  if (p === "/api/tasks") {
897
- if (m === "GET") return { data: $58 };
898
- if (m === "POST") return { data: $59 };
921
+ if (m === "GET") return { data: $60 };
922
+ if (m === "POST") return { data: $61 };
899
923
  }
900
924
  if (p === "/api/telegram/setup") {
901
- if (m === "POST") return { data: $60 };
925
+ if (m === "POST") return { data: $62 };
902
926
  }
903
927
  if (p === "/api/telegram/status") {
904
- if (m === "GET") return { data: $61 };
928
+ if (m === "GET") return { data: $63 };
905
929
  }
906
930
  if (p === "/api/terminal") {
907
- if (m === "GET") return { data: $62 };
908
- if (m === "POST") return { data: $63 };
931
+ if (m === "GET") return { data: $64 };
932
+ if (m === "POST") return { data: $65 };
909
933
  }
910
934
  if (p === "/api/tunnel/password") {
911
- if (m === "GET") return { data: $64 };
935
+ if (m === "GET") return { data: $66 };
912
936
  }
913
937
  if (p === "/api/tunnel/setup") {
914
- if (m === "POST") return { data: $65 };
938
+ if (m === "POST") return { data: $67 };
915
939
  }
916
940
  if (p === "/api/tunnel/status") {
917
- if (m === "GET") return { data: $66 };
941
+ if (m === "GET") return { data: $68 };
918
942
  }
919
943
  let s = p.split("/"), l = s.length - 1;
920
944
  if (s[1] === "api") {
@@ -922,7 +946,7 @@ const findRoute = /* @__PURE__ */ (() => {
922
946
  if (l === 3 || l === 2) {
923
947
  if (m === "DELETE") {
924
948
  if (l >= 3) return {
925
- data: $67,
949
+ data: $69,
926
950
  params: { "jid": s[3] }
927
951
  };
928
952
  }
@@ -932,23 +956,33 @@ const findRoute = /* @__PURE__ */ (() => {
932
956
  if (l === 3 || l === 2) {
933
957
  if (m === "DELETE") {
934
958
  if (l >= 3) return {
935
- data: $68,
959
+ data: $70,
936
960
  params: { "jid": s[3] }
937
961
  };
938
962
  }
939
963
  if (m === "PATCH") {
940
964
  if (l >= 3) return {
941
- data: $69,
965
+ data: $71,
942
966
  params: { "jid": s[3] }
943
967
  };
944
968
  }
945
969
  }
946
970
  }
971
+ if (s[2] === "sandbox") {
972
+ if (l === 3 || l === 2) {
973
+ if (m === "DELETE") {
974
+ if (l >= 3) return {
975
+ data: $72,
976
+ params: { "id": s[3] }
977
+ };
978
+ }
979
+ }
980
+ }
947
981
  if (s[2] === "tasks") {
948
982
  if (l === 3 || l === 2) {
949
983
  if (m === "PATCH") {
950
984
  if (l >= 3) return {
951
- data: $70,
985
+ data: $73,
952
986
  params: { "id": s[3] }
953
987
  };
954
988
  }
@@ -958,13 +992,13 @@ const findRoute = /* @__PURE__ */ (() => {
958
992
  if (l === 3 || l === 2) {
959
993
  if (m === "DELETE") {
960
994
  if (l >= 3) return {
961
- data: $71,
995
+ data: $74,
962
996
  params: { "id": s[3] }
963
997
  };
964
998
  }
965
999
  if (m === "PATCH") {
966
1000
  if (l >= 3) return {
967
- data: $72,
1001
+ data: $75,
968
1002
  params: { "id": s[3] }
969
1003
  };
970
1004
  }
@@ -972,7 +1006,7 @@ const findRoute = /* @__PURE__ */ (() => {
972
1006
  if (s[4] === "input") {
973
1007
  if (l === 4) {
974
1008
  if (m === "POST") return {
975
- data: $73,
1009
+ data: $76,
976
1010
  params: { "id": s[3] }
977
1011
  };
978
1012
  }
@@ -980,7 +1014,7 @@ const findRoute = /* @__PURE__ */ (() => {
980
1014
  if (s[4] === "nudge") {
981
1015
  if (l === 4) {
982
1016
  if (m === "POST") return {
983
- data: $74,
1017
+ data: $77,
984
1018
  params: { "id": s[3] }
985
1019
  };
986
1020
  }
@@ -988,7 +1022,7 @@ const findRoute = /* @__PURE__ */ (() => {
988
1022
  if (s[4] === "resize") {
989
1023
  if (l === 4) {
990
1024
  if (m === "POST") return {
991
- data: $75,
1025
+ data: $78,
992
1026
  params: { "id": s[3] }
993
1027
  };
994
1028
  }
@@ -996,7 +1030,7 @@ const findRoute = /* @__PURE__ */ (() => {
996
1030
  if (s[4] === "stream") {
997
1031
  if (l === 4) {
998
1032
  if (m === "GET") return {
999
- data: $76,
1033
+ data: $79,
1000
1034
  params: { "id": s[3] }
1001
1035
  };
1002
1036
  }
@@ -1005,14 +1039,14 @@ const findRoute = /* @__PURE__ */ (() => {
1005
1039
  if (s[2] === "uploads") {
1006
1040
  if (m === "GET") {
1007
1041
  if (l >= 2) return {
1008
- data: $77,
1042
+ data: $80,
1009
1043
  params: { "path": s.slice(3).join("/") }
1010
1044
  };
1011
1045
  }
1012
1046
  }
1013
1047
  }
1014
1048
  return {
1015
- data: $78,
1049
+ data: $81,
1016
1050
  params: { "_": s.slice(1).join("/") }
1017
1051
  };
1018
1052
  };
@@ -50,6 +50,10 @@ var CONFIG_DEFS = {
50
50
  env: "BRAVE_API_KEY",
51
51
  default: void 0
52
52
  },
53
+ sandbox: {
54
+ env: "SANDBOX",
55
+ default: void 0
56
+ },
53
57
  timezone: {
54
58
  env: "TZ",
55
59
  default: Intl.DateTimeFormat().resolvedOptions().timeZone
@@ -1,4 +1,4 @@
1
- import { a as __require } from "../_runtime.mjs";
1
+ import { i as __require } from "../_runtime.mjs";
2
2
  import path from "node:path";
3
3
  import { execFile } from "node:child_process";
4
4
  /**
@@ -111,7 +111,7 @@ var levelToNotificationType = {
111
111
  var _deviceBus;
112
112
  function notifyLog(level, tag, message) {
113
113
  if (!_deviceBus) {
114
- import("../_libs/_102.mjs").then((m) => {
114
+ import("../_libs/_88.mjs").then((m) => {
115
115
  _deviceBus = m.deviceBus;
116
116
  _deviceBus.notify({
117
117
  title: `[${tag}] ${message}`.slice(0, 120),
@@ -24,10 +24,8 @@ function writeNote(ref, content) {
24
24
  fs.mkdirSync(path.dirname(filePath), { recursive: true });
25
25
  fs.writeFileSync(filePath, content);
26
26
  }
27
- /** Delete a note. Returns true if it existed. Virtual session notes cannot be deleted. */
27
+ /** Delete a note. Returns true if it existed. */
28
28
  function deleteNote(ref) {
29
- const { category } = parseRef(ref);
30
- if (category === VIRTUAL_CATEGORY) return false;
31
29
  const filePath = resolveNotePath(ref);
32
30
  if (!fs.existsSync(filePath)) return false;
33
31
  fs.unlinkSync(filePath);
@@ -1,5 +1,5 @@
1
1
  import { r as HTTPResponse } from "../_libs/h3+rou3+srvx.mjs";
2
- const rendererTemplate = () => new HTTPResponse("<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta\n name=\"viewport\"\n content=\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover, interactive-widget=resizes-content\"\n />\n <title>PiClaw</title>\n <meta name=\"theme-color\" content=\"#0a0e14\" />\n <meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n <meta name=\"mobile-web-app-capable\" content=\"yes\" />\n <link rel=\"icon\" type=\"image/svg+xml\" href=\"/icon.svg\" />\n <link rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/icon-192.png\" />\n <link rel=\"apple-touch-icon\" href=\"/icon-192.png\" />\n <link rel=\"manifest\" href=\"/manifest.json\" />\n </head>\n <body style=\"background-color: #0a0e14\">\n <div id=\"app\"></div>\n <script type=\"module\" src=\"/src/app/index.ts\"><\/script>\n </body>\n</html>\n", { headers: { "content-type": "text/html; charset=utf-8" } });
2
+ const rendererTemplate = () => new HTTPResponse("<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <meta\n name=\"viewport\"\n content=\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover, interactive-widget=resizes-content\"\n />\n <title>PiClaw</title>\n <meta name=\"theme-color\" content=\"#0a0e14\" />\n <meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n <meta name=\"mobile-web-app-capable\" content=\"yes\" />\n <link rel=\"icon\" type=\"image/svg+xml\" href=\"/icon.svg\" />\n <link rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/icon-192.png\" />\n <link rel=\"apple-touch-icon\" href=\"/icon-192.png\" />\n <link rel=\"manifest\" href=\"/manifest.json\" />\n </head>\n <body style=\"background-color: #0a0e14\">\n <div id=\"app\"></div>\n <script>\n // Electrobun app-window: persist appToken as cookie for auth bypass\n var t = new URLSearchParams(location.search).get(\"appToken\");\n if (t) {\n var prev = document.cookie.match(/piclaw_app_token=([^;]*)/)?.[1];\n document.cookie = \"piclaw_app_token=\" + t + \";path=/;SameSite=Lax\";\n if (prev && prev !== t) location.reload();\n }\n <\/script>\n <script type=\"module\" src=\"/src/app/index.ts\"><\/script>\n </body>\n</html>\n", { headers: { "content-type": "text/html; charset=utf-8" } });
3
3
  function renderIndexHTML(event) {
4
4
  return rendererTemplate(event.req);
5
5
  }