@surething/cockpit 1.0.258 → 1.0.260

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 (248) hide show
  1. package/.next-prod/BUILD_ID +1 -1
  2. package/.next-prod/app-path-routes-manifest.json +2 -2
  3. package/.next-prod/build-manifest.json +2 -2
  4. package/.next-prod/cockpit-build.json +1 -1
  5. package/.next-prod/prerender-manifest.json +4 -4
  6. package/.next-prod/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next-prod/server/app/_global-error.html +1 -1
  9. package/.next-prod/server/app/_global-error.rsc +1 -1
  10. package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next-prod/server/app/_not-found/page.js +1 -1
  14. package/.next-prod/server/app/_not-found/page.js.nft.json +1 -1
  15. package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/.next-prod/server/app/_not-found.html +2 -2
  17. package/.next-prod/server/app/_not-found.rsc +3 -3
  18. package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +3 -3
  19. package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +3 -3
  20. package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  21. package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  22. package/.next-prod/server/app/api/agent/test/route.js.nft.json +1 -1
  23. package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
  24. package/.next-prod/server/app/api/chat/codex/route.js +1 -1
  25. package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
  26. package/.next-prod/server/app/api/chat/deepseek/route.js +1 -1
  27. package/.next-prod/server/app/api/chat/deepseek/route.js.nft.json +1 -1
  28. package/.next-prod/server/app/api/chat/glm/route.js +1 -1
  29. package/.next-prod/server/app/api/chat/glm/route.js.nft.json +1 -1
  30. package/.next-prod/server/app/api/chat/kimi/route.js +1 -1
  31. package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
  32. package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
  33. package/.next-prod/server/app/api/chat/route.js +1 -1
  34. package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
  35. package/.next-prod/server/app/api/chat/stop/route.js +1 -1
  36. package/.next-prod/server/app/api/chat/stop/route.js.nft.json +1 -1
  37. package/.next-prod/server/app/api/claude-stats/route.js.nft.json +1 -1
  38. package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
  39. package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
  40. package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
  41. package/.next-prod/server/app/api/db/connect/route.js.nft.json +1 -1
  42. package/.next-prod/server/app/api/db/disconnect/route.js.nft.json +1 -1
  43. package/.next-prod/server/app/api/db/export/route.js.nft.json +1 -1
  44. package/.next-prod/server/app/api/db/query/route.js.nft.json +1 -1
  45. package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
  46. package/.next-prod/server/app/api/deepseek/balance/route.js.nft.json +1 -1
  47. package/.next-prod/server/app/api/deepseek/credentials/route.js.nft.json +1 -1
  48. package/.next-prod/server/app/api/deepseek/models/route.js.nft.json +1 -1
  49. package/.next-prod/server/app/api/dev/spans/route.js.nft.json +1 -1
  50. package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
  51. package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
  52. package/.next-prod/server/app/api/files/blame/route.js.nft.json +1 -1
  53. package/.next-prod/server/app/api/files/clipboard/route.js.nft.json +1 -1
  54. package/.next-prod/server/app/api/files/copy/route.js.nft.json +1 -1
  55. package/.next-prod/server/app/api/files/delete/route.js.nft.json +1 -1
  56. package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
  57. package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
  58. package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
  59. package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
  60. package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
  61. package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
  62. package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
  63. package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
  64. package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
  65. package/.next-prod/server/app/api/files/stat/route.js.nft.json +1 -1
  66. package/.next-prod/server/app/api/files/text/route.js.nft.json +1 -1
  67. package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
  68. package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
  69. package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
  70. package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
  71. package/.next-prod/server/app/api/git/current-branch/route.js.nft.json +1 -1
  72. package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
  73. package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
  74. package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
  75. package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
  76. package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
  77. package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
  78. package/.next-prod/server/app/api/glm/credentials/route.js.nft.json +1 -1
  79. package/.next-prod/server/app/api/glm/models/route.js +1 -1
  80. package/.next-prod/server/app/api/glm/models/route.js.nft.json +1 -1
  81. package/.next-prod/server/app/api/glm/usage/route.js +1 -1
  82. package/.next-prod/server/app/api/glm/usage/route.js.nft.json +1 -1
  83. package/.next-prod/server/app/api/global-state/route.js.nft.json +1 -1
  84. package/.next-prod/server/app/api/health/route.js.nft.json +1 -1
  85. package/.next-prod/server/app/api/html-apps/[id]/route.js +1 -1
  86. package/.next-prod/server/app/api/html-apps/[id]/route.js.nft.json +1 -1
  87. package/.next-prod/server/app/api/html-apps/route.js +1 -1
  88. package/.next-prod/server/app/api/html-apps/route.js.nft.json +1 -1
  89. package/.next-prod/server/app/api/jupyter/load/route.js.nft.json +1 -1
  90. package/.next-prod/server/app/api/jupyter/save/route.js.nft.json +1 -1
  91. package/.next-prod/server/app/api/jupyter/shutdown/route.js.nft.json +1 -1
  92. package/.next-prod/server/app/api/kimi/credentials/route.js.nft.json +1 -1
  93. package/.next-prod/server/app/api/kimi/models/route.js +1 -1
  94. package/.next-prod/server/app/api/kimi/models/route.js.nft.json +1 -1
  95. package/.next-prod/server/app/api/kimi/usage/route.js +1 -1
  96. package/.next-prod/server/app/api/kimi/usage/route.js.nft.json +1 -1
  97. package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
  98. package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
  99. package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
  100. package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
  101. package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
  102. package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
  103. package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
  104. package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
  105. package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
  106. package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
  107. package/.next-prod/server/app/api/mysql/schemas/route.js.nft.json +1 -1
  108. package/.next-prod/server/app/api/neo4j/connect/route.js.nft.json +1 -1
  109. package/.next-prod/server/app/api/neo4j/disconnect/route.js.nft.json +1 -1
  110. package/.next-prod/server/app/api/neo4j/query/route.js.nft.json +1 -1
  111. package/.next-prod/server/app/api/neo4j/schema/route.js.nft.json +1 -1
  112. package/.next-prod/server/app/api/note/route.js.nft.json +1 -1
  113. package/.next-prod/server/app/api/ollama/config/route.js.nft.json +1 -1
  114. package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
  115. package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
  116. package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
  117. package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
  118. package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
  119. package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
  120. package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
  121. package/.next-prod/server/app/api/project-state/route.js +1 -1
  122. package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
  123. package/.next-prod/server/app/api/projectGraph/affected/route.js.nft.json +1 -1
  124. package/.next-prod/server/app/api/projectGraph/callees/route.js.nft.json +1 -1
  125. package/.next-prod/server/app/api/projectGraph/callers/route.js.nft.json +1 -1
  126. package/.next-prod/server/app/api/projectGraph/coedit/route.js.nft.json +1 -1
  127. package/.next-prod/server/app/api/projectGraph/context/route.js.nft.json +1 -1
  128. package/.next-prod/server/app/api/projectGraph/file/route.js.nft.json +1 -1
  129. package/.next-prod/server/app/api/projectGraph/file-functions/route.js.nft.json +1 -1
  130. package/.next-prod/server/app/api/projectGraph/impact/route.js.nft.json +1 -1
  131. package/.next-prod/server/app/api/projectGraph/related/route.js.nft.json +1 -1
  132. package/.next-prod/server/app/api/projectGraph/risk/route.js.nft.json +1 -1
  133. package/.next-prod/server/app/api/projectGraph/search/route.js.nft.json +1 -1
  134. package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
  135. package/.next-prod/server/app/api/prompts/config/route.js.nft.json +1 -1
  136. package/.next-prod/server/app/api/push/public-key/route.js.nft.json +1 -1
  137. package/.next-prod/server/app/api/push/subscribe/route.js.nft.json +1 -1
  138. package/.next-prod/server/app/api/push/unsubscribe/route.js.nft.json +1 -1
  139. package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
  140. package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
  141. package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
  142. package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
  143. package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
  144. package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
  145. package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
  146. package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
  147. package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
  148. package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
  149. package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
  150. package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
  151. package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
  152. package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
  153. package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
  154. package/.next-prod/server/app/api/scheduled-tasks/route.js +2 -2
  155. package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
  156. package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
  157. package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
  158. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js +1 -1
  159. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
  160. package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
  161. package/.next-prod/server/app/api/session-by-path/route.js +1 -1
  162. package/.next-prod/server/app/api/session-by-path/route.js.nft.json +1 -1
  163. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js +1 -1
  164. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js.nft.json +1 -1
  165. package/.next-prod/server/app/api/sessions/projects/route.js +1 -1
  166. package/.next-prod/server/app/api/sessions/projects/route.js.nft.json +1 -1
  167. package/.next-prod/server/app/api/sessions/route.js.nft.json +1 -1
  168. package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
  169. package/.next-prod/server/app/api/skills/[id]/route.js.nft.json +1 -1
  170. package/.next-prod/server/app/api/skills/content/route.js.nft.json +1 -1
  171. package/.next-prod/server/app/api/skills/route.js.nft.json +1 -1
  172. package/.next-prod/server/app/api/snapshots/diff/route.js.nft.json +1 -1
  173. package/.next-prod/server/app/api/snapshots/route.js.nft.json +1 -1
  174. package/.next-prod/server/app/api/terminal/aliases/route.js.nft.json +1 -1
  175. package/.next-prod/server/app/api/terminal/autocomplete/route.js.nft.json +1 -1
  176. package/.next-prod/server/app/api/terminal/bubble-order/route.js.nft.json +1 -1
  177. package/.next-prod/server/app/api/terminal/env/route.js.nft.json +1 -1
  178. package/.next-prod/server/app/api/terminal/history/route.js.nft.json +1 -1
  179. package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
  180. package/.next-prod/server/app/apps/[...path]/route.js +1 -1
  181. package/.next-prod/server/app/apps/[...path]/route.js.nft.json +1 -1
  182. package/.next-prod/server/app/favicon.ico/route.js.nft.json +1 -1
  183. package/.next-prod/server/app/m/page.js +1 -1
  184. package/.next-prod/server/app/m/page.js.nft.json +1 -1
  185. package/.next-prod/server/app/m/page_client-reference-manifest.js +1 -1
  186. package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  187. package/.next-prod/server/app/page.js +1 -1
  188. package/.next-prod/server/app/page.js.nft.json +1 -1
  189. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  190. package/.next-prod/server/app/project/page.js +1 -1
  191. package/.next-prod/server/app/project/page.js.nft.json +1 -1
  192. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  193. package/.next-prod/server/app/review/[id]/page.js +1 -1
  194. package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
  195. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  196. package/.next-prod/server/app-paths-manifest.json +2 -2
  197. package/.next-prod/server/chunks/151.js +1 -0
  198. package/.next-prod/server/chunks/3286.js +448 -294
  199. package/.next-prod/server/chunks/{8557.js → 3641.js} +5 -5
  200. package/.next-prod/server/chunks/5750.js +16 -9
  201. package/.next-prod/server/chunks/6495.js +1 -1
  202. package/.next-prod/server/chunks/6548.js +1 -1
  203. package/.next-prod/server/chunks/816.js +2 -0
  204. package/.next-prod/server/chunks/841.js +12 -10
  205. package/.next-prod/server/chunks/9352.js +4 -4
  206. package/.next-prod/server/chunks/9830.js +1 -1
  207. package/.next-prod/server/middleware-build-manifest.js +1 -1
  208. package/.next-prod/server/pages/404.html +2 -2
  209. package/.next-prod/server/pages/500.html +1 -1
  210. package/.next-prod/server/server-reference-manifest.json +1 -1
  211. package/.next-prod/static/chunks/1157-164bcf046a0a9b15.js +32 -0
  212. package/.next-prod/static/chunks/1372-d16d68b1b03a345a.js +15 -0
  213. package/.next-prod/static/chunks/{9592-a657fb9eb995b64d.js → 4333-9e6709e96d3ec973.js} +7 -7
  214. package/.next-prod/static/chunks/{225-75b2e22f496b56a1.js → 6160-958532439d324185.js} +2 -2
  215. package/.next-prod/static/chunks/6784-09dffdb0e8ca7fb3.js +381 -0
  216. package/.next-prod/static/chunks/app/{layout-bec1cf218bc88d81.js → layout-ab52fc1a83af968b.js} +1 -1
  217. package/.next-prod/static/chunks/app/m/page-7dcf56a65528216f.js +1 -0
  218. package/.next-prod/static/chunks/app/{page-5e6dbc9731415743.js → page-5de8b6584e328a6f.js} +1 -1
  219. package/.next-prod/static/chunks/app/project/{page-5e6dbc9731415743.js → page-5de8b6584e328a6f.js} +1 -1
  220. package/.next-prod/static/css/83c134c954630942.css +1 -0
  221. package/.next-prod/trace +14 -14
  222. package/.next-prod/trace-build +1 -1
  223. package/README.md +1 -1
  224. package/README.zh.md +1 -1
  225. package/apps/devkit/app.jsx +728 -0
  226. package/apps/devkit/index.html +178 -0
  227. package/apps/devkit/md5.js +98 -0
  228. package/dist/{chunk-L5TWVHYB.mjs → chunk-B5LXMESP.mjs} +19 -9
  229. package/dist/{chunk-YEZ3U3F2.mjs → chunk-CLPJYIFC.mjs} +1 -1
  230. package/dist/{chunk-RSRPFWNL.mjs → chunk-TU3GL2HK.mjs} +1 -27
  231. package/dist/httpApi.mjs +2 -2
  232. package/dist/scheduledTasks.mjs +692 -483
  233. package/dist/{server-UZPDELUK.mjs → server-2UJDVZ32.mjs} +2 -2
  234. package/dist/wsServer.mjs +5 -4
  235. package/package.json +1 -1
  236. package/public/agent-icons/claude.svg +1 -0
  237. package/public/agent-icons/codex.svg +1 -0
  238. package/public/agent-icons/deepseek.svg +1 -0
  239. package/public/agent-icons/glm.svg +1 -0
  240. package/public/agent-icons/kimi.svg +1 -0
  241. package/public/agent-icons/ollama.svg +1 -0
  242. package/.next-prod/static/chunks/1372-cc9afa045dc4eb5e.js +0 -15
  243. package/.next-prod/static/chunks/6784-500e233d3e8f6b41.js +0 -381
  244. package/.next-prod/static/chunks/7482-8478af06d5aa0972.js +0 -25
  245. package/.next-prod/static/chunks/app/m/page-aff83d3f5f4047c5.js +0 -1
  246. package/.next-prod/static/css/2334aed02a409f57.css +0 -1
  247. /package/.next-prod/static/{ZFNy0XuBWptMqEQGi7GTy → 4Jgc-wu2w_CC8iS5G1QZf}/_buildManifest.js +0 -0
  248. /package/.next-prod/static/{ZFNy0XuBWptMqEQGi7GTy → 4Jgc-wu2w_CC8iS5G1QZf}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=841,exports.ids=[841],exports.modules={35369:(a,b,c)=>{c.d(b,{l:()=>d});function d(a){let b;if(null==a)return"Unknown error";if("string"==typeof a)return a.trim()||"Unknown error";if("object"!=typeof a)return String(a);let c="string"==typeof a.message?a.message.trim():"",d=function(a){if("string"==typeof a&&a.trim())try{let b=JSON.parse(a),c=b.error;if(c&&"object"==typeof c){let a=c.message;if("string"==typeof a&&a.trim())return a.trim()}if("string"==typeof c&&c.trim())return c.trim();if("string"==typeof b.message&&b.message.trim())return b.message.trim();return}catch{let b=a.trim();return b.length<=300?b:void 0}}(a.responseBody),e="number"==typeof a.statusCode?a.statusCode:void 0;if(!(b=d&&c&&!c.includes(d)?`${c} — ${d}`:d||c)){try{b=JSON.stringify(a)}catch{b=String(a)}b&&"{}"!==b||(b="Request failed")}return e?`[HTTP ${e}] ${b}`:b}},59419:(a,b,c)=>{c.d(b,{p:()=>G,o:()=>H});var d=c(78497),e=c(55511),f=c(29021),g=c(33873),h=c(7939);function i(a,b){return(0,g.join)(a,(0,h.O0)(b))}function j(a,b,c){return(0,g.join)(i(a,b),`${c}.jsonl`)}function k(a,b,c,d){let e=i(a,b);(0,f.mkdirSync)(e,{recursive:!0});let g=j(a,b,c);(0,f.appendFileSync)(g,JSON.stringify(d)+"\n","utf-8")}function l(a,b,c,d,e){k(a,b,c,{type:"assistant",uuid:e?.uuid,sessionId:c,timestamp:e?.timestamp,message:{role:"assistant",content:d,...e?.usage?{usage:e.usage}:{}}})}function m(a,b,c,d,e,f){k(a,b,c,{type:"user",uuid:f?.uuid,sessionId:c,timestamp:f?.timestamp,message:{content:[{type:"tool_result",tool_use_id:d,content:e,is_error:!!f?.is_error}]}})}var n=c(61948),o=c(52868),p=c(79748),q=c(21820),r=c(79646),s=c(28354),t=c(63742),u=c.n(t),v=c(75342),w=c(95169);let x=(0,s.promisify)(r.exec),y=(0,s.promisify)(r.execFile),z=(0,g.join)((0,q.tmpdir)(),"cockpit-tool-outputs");async function A(a,b){try{await (0,p.mkdir)(z,{recursive:!0});try{let a=await (0,p.readdir)(z);if(a.length>=200){let b=(await Promise.all(a.map(async a=>{let b=(0,g.join)(z,a);try{return{p:b,mtime:(await (0,p.stat)(b)).mtimeMs}}catch{return null}}))).filter(a=>null!==a);b.sort((a,b)=>a.mtime-b.mtime);let c=b.slice(0,Math.max(0,b.length-200+1));await Promise.all(c.map(({p:a})=>(0,p.unlink)(a).catch(()=>void 0)))}}catch{}let c=Date.now().toString(36),d=Math.random().toString(36).slice(2,8),e=(0,g.join)(z,`${b}-${c}-${d}.log`);return await (0,p.writeFile)(e,a,"utf-8"),e}catch{return}}function B(a,b,c={}){if(a.length<=b)return a;let{label:d="output",bias:e="balanced",spillPath:f}=c,g=Math.max(0,b-520),h=Math.floor(g*("tail"===e?.2:.6)),i=g-h,j=h;if(h>0){let b=a.lastIndexOf("\n",h);b>.5*h&&(j=b)}let k=a.length-i;if(i>0&&k>0){let b=a.indexOf("\n",k);-1!==b&&b<a.length-.5*i&&(k=b+1)}let l=a.slice(0,j),m=a.slice(k),n=a.length-l.length-m.length,o=a=>(a/1024).toFixed(1)+" KB",p=f?`full output saved to ${f} — call Read({ file_path: "${f}", offset, limit }) to page through`:"narrow the query, page through (head/tail/sed), or redirect to a file";return`==== ${d.toUpperCase()} TRUNCATED ====
1
+ "use strict";exports.id=841,exports.ids=[841],exports.modules={22461:(a,b,c)=>{c.d(b,{r:()=>d});function d(a){let b=0,c=0;for(let d of a)/[\u3040-\u30ff\u3400-\u9fff\uf900-\ufaff\u{20000}-\u{2a6df}\uac00-\ud7af]/u.test(d)?b+=1:c+=1;return Math.max(1,Math.ceil(b+c/4))}},35369:(a,b,c)=>{c.d(b,{l:()=>d});function d(a){let b;if(null==a)return"Unknown error";if("string"==typeof a)return a.trim()||"Unknown error";if("object"!=typeof a)return String(a);let c="string"==typeof a.message?a.message.trim():"",d=function(a){if("string"==typeof a&&a.trim())try{let b=JSON.parse(a),c=b.error;if(c&&"object"==typeof c){let a=c.message;if("string"==typeof a&&a.trim())return a.trim()}if("string"==typeof c&&c.trim())return c.trim();if("string"==typeof b.message&&b.message.trim())return b.message.trim();return}catch{let b=a.trim();return b.length<=300?b:void 0}}(a.responseBody),e="number"==typeof a.statusCode?a.statusCode:void 0;if(!(b=d&&c&&!c.includes(d)?`${c} — ${d}`:d||c)){try{b=JSON.stringify(a)}catch{b=String(a)}b&&"{}"!==b||(b="Request failed")}return e?`[HTTP ${e}] ${b}`:b}},59419:(a,b,c)=>{c.d(b,{p:()=>I,o:()=>J});var d=c(78497),e=c(55511),f=c(29021),g=c(33873),h=c(7939);function i(a,b){return(0,g.join)(a,(0,h.O0)(b))}function j(a,b,c){return(0,g.join)(i(a,b),`${c}.jsonl`)}function k(a,b,c,d){let e=i(a,b);(0,f.mkdirSync)(e,{recursive:!0});let g=j(a,b,c);(0,f.appendFileSync)(g,JSON.stringify(d)+"\n","utf-8")}function l(a,b,c,d,e){k(a,b,c,{type:"assistant",uuid:e?.uuid,sessionId:c,timestamp:e?.timestamp,message:{role:"assistant",content:d,...e?.usage?{usage:e.usage}:{}}})}function m(a,b,c,d,e,f){k(a,b,c,{type:"user",uuid:f?.uuid,sessionId:c,timestamp:f?.timestamp,message:{content:[{type:"tool_result",tool_use_id:d,content:e,is_error:!!f?.is_error}]}})}var n=c(61948),o=c(52868),p=c(79748),q=c(21820),r=c(79646),s=c(28354),t=c(63742),u=c.n(t),v=c(75342),w=c(95169);let x=(0,s.promisify)(r.exec),y=(0,s.promisify)(r.execFile),z=(0,g.join)((0,q.tmpdir)(),"cockpit-tool-outputs");async function A(a,b){try{await (0,p.mkdir)(z,{recursive:!0});try{let a=await (0,p.readdir)(z);if(a.length>=200){let b=(await Promise.all(a.map(async a=>{let b=(0,g.join)(z,a);try{return{p:b,mtime:(await (0,p.stat)(b)).mtimeMs}}catch{return null}}))).filter(a=>null!==a);b.sort((a,b)=>a.mtime-b.mtime);let c=b.slice(0,Math.max(0,b.length-200+1));await Promise.all(c.map(({p:a})=>(0,p.unlink)(a).catch(()=>void 0)))}}catch{}let c=Date.now().toString(36),d=Math.random().toString(36).slice(2,8),e=(0,g.join)(z,`${b}-${c}-${d}.log`);return await (0,p.writeFile)(e,a,"utf-8"),e}catch{return}}function B(a,b,c={}){if(a.length<=b)return a;let{label:d="output",bias:e="balanced",spillPath:f}=c,g=Math.max(0,b-520),h=Math.floor(g*("tail"===e?.2:.6)),i=g-h,j=h;if(h>0){let b=a.lastIndexOf("\n",h);b>.5*h&&(j=b)}let k=a.length-i;if(i>0&&k>0){let b=a.indexOf("\n",k);-1!==b&&b<a.length-.5*i&&(k=b+1)}let l=a.slice(0,j),m=a.slice(k),n=a.length-l.length-m.length,o=a=>(a/1024).toFixed(1)+" KB",p=f?`full output saved to ${f} — call Read({ file_path: "${f}", offset, limit }) to page through`:"narrow the query, page through (head/tail/sed), or redirect to a file";return`==== ${d.toUpperCase()} TRUNCATED ====
2
2
  Original: ${o(a.length)} (${a.length} chars) \xb7 Kept: head ${o(l.length)} + tail ${o(m.length)} \xb7 Dropped: ${o(n)}
3
3
  ${p}
4
4
  ==========================
@@ -7,15 +7,17 @@ ${p}
7
7
 
8
8
  ...[${d} truncated here — ${o(n)} dropped; see banner at top for full-output path]
9
9
 
10
- `+m}let C=o.string().describe("PREVIOUS result assessment → THIS action reason → EXPECTED outcome"),D=' The "thought" param MUST follow this format: "PREVIOUS: [last result] → THIS: [action + why] → EXPECT: [expected result]".';var E=c(35369);async function F(a,b,c,d){let e="",f=[],g=new Map;for await(let c of a)switch(c.type){case"text-delta":e+=c.text,b(`data: ${JSON.stringify({type:"stream_event",event:{type:"content_block_delta",delta:{type:"text_delta",text:c.text}}})}
10
+ `+m}let C=o.string().describe("PREVIOUS result assessment → THIS action reason → EXPECTED outcome"),D=' The "thought" param MUST follow this format: "PREVIOUS: [last result] → THIS: [action + why] → EXPECT: [expected result]".';var E=c(22461),F=c(35369);function G(a,b){b(`data: ${JSON.stringify({type:"usage_update",output_tokens:Math.max(0,Math.round(a))})}
11
11
 
12
- `);break;case"tool-call":{e&&(d?.onTextFlush?.(e),e="");let a=c.input||{};d?.onToolCall?.(c.toolCallId,c.toolName,a),b(`data: ${JSON.stringify({type:"assistant",message:{content:[{type:"tool_use",id:c.toolCallId,name:c.toolName,input:a}]}})}
12
+ `)}async function H(a,b,c,d){let e="",f=0,g=[],h=new Map;for await(let c of a)switch(c.type){case"text-delta":e+=c.text,G(f+=(0,E.r)(c.text),b),b(`data: ${JSON.stringify({type:"stream_event",event:{type:"content_block_delta",delta:{type:"text_delta",text:c.text}}})}
13
13
 
14
- `),g.set(c.toolCallId,{id:c.toolCallId,name:c.toolName,args:JSON.stringify(a)});break}case"tool-result":{let a=String(c.output);d?.onToolResult?.(c.toolCallId,a,!1),b(`data: ${JSON.stringify({type:"user",message:{content:[{type:"tool_result",tool_use_id:c.toolCallId,content:a,is_error:!1}]}})}
14
+ `);break;case"finish-step":break;case"tool-call":{e&&(d?.onTextFlush?.(e),e="");let a=c.input||{};G(f+=(0,E.r)(`${c.toolName} ${JSON.stringify(a)}`),b),d?.onToolCall?.(c.toolCallId,c.toolName,a),b(`data: ${JSON.stringify({type:"assistant",message:{content:[{type:"tool_use",id:c.toolCallId,name:c.toolName,input:a}]}})}
15
15
 
16
- `);break}case"tool-error":{let a=function(a){if(a instanceof Error)return a.message||String(a);if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}(c.error);d?.onToolResult?.(c.toolCallId,a,!0),b(`data: ${JSON.stringify({type:"user",message:{content:[{type:"tool_result",tool_use_id:c.toolCallId,content:a,is_error:!0}]}})}
16
+ `),h.set(c.toolCallId,{id:c.toolCallId,name:c.toolName,args:JSON.stringify(a)});break}case"tool-result":{let a=String(c.output);G(f+=(0,E.r)(a),b),d?.onToolResult?.(c.toolCallId,a,!1),b(`data: ${JSON.stringify({type:"user",message:{content:[{type:"tool_result",tool_use_id:c.toolCallId,content:a,is_error:!1}]}})}
17
17
 
18
- `);break}case"error":throw Error((0,E.l)(c.error),{cause:c.error})}for(let a of g.values())try{f.push({id:a.id,name:a.name,args:JSON.parse(a.args)})}catch{f.push({id:a.id,name:a.name,args:{}})}return{text:e,toolCalls:f}}function G(a){return"string"==typeof a.prompt&&a.prompt.trim()?{ok:!0}:{ok:!1,status:400,error:"The built-in agent requires a text prompt"}}async function H(a,b){var c,h,i,p;let{sessionsRoot:q}=b,r=a.cwd||process.cwd(),s=a.currentKey();a.rekey(s);let t="string"==typeof a.params.model&&a.params.model||b.defaultModel,z=a.prompt,G=b=>{if(!b.startsWith("data: [DONE]"))try{a.emit(JSON.parse(b.slice(6)))}catch{}},H=[...!0===a.params.noHistory?[]:function(a,b,c){let d=j(a,b,c);if(!(0,f.existsSync)(d))return[];let e=(0,f.readFileSync)(d,"utf-8").split("\n").filter(Boolean),g=[];for(let a of e)try{let b=JSON.parse(a);"string"==typeof b.type&&g.push(b)}catch{}let h=new Map,i=new Set,k=new Set;for(let a of g){if("assistant"===a.type&&Array.isArray(a.message?.content))for(let b of a.message.content)"tool_use"===b.type&&b.id&&(i.add(b.id),b.name&&h.set(b.id,b.name));if("user"===a.type&&Array.isArray(a.message?.content))for(let b of a.message.content)"tool_result"===b.type&&b.tool_use_id&&k.add(b.tool_use_id)}let l=[],m=[],n=()=>{let a=m.filter(a=>"text"!==a.type||String(a.text||"").length>0);m=[],0!==a.length&&(1===a.length&&"text"===a[0].type?l.push({role:"assistant",content:String(a[0].text||"")}):l.push({role:"assistant",content:a}))};for(let a of g){if("user"===a.type&&a.message?.role==="user"&&Array.isArray(a.message.content)){let b=a.message.content.filter(a=>"text"===a.type).map(a=>a.text||"").join("\n");if(n(),!b)continue;l.push({role:"user",content:b});continue}if("assistant"===a.type&&Array.isArray(a.message?.content)){for(let b of a.message.content)if("text"===b.type)m.push({type:"text",text:b.text||""});else if("tool_use"===b.type){let a=b.id||"";if(!a||!k.has(a))continue;let c=b.name||h.get(a)||"tool";m.push({type:"tool-call",toolCallId:a,toolName:c,input:b.input||{}})}continue}if("user"===a.type&&Array.isArray(a.message?.content))for(let b of a.message.content.filter(a=>"tool_result"===a.type&&!!a.tool_use_id)){let a=b.tool_use_id||"";if(!a||!i.has(a))continue;n();let c=h.get(a)||"tool";l.push({role:"tool",content:[{type:"tool-result",toolCallId:a,toolName:c,output:b.is_error?{type:"error-text",value:b.content||""}:{type:"text",value:b.content||""}}]})}}return n(),l}(q,r,s),{role:"user",content:z}];c={uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString()},k(q,r,s,{type:"user",uuid:c?.uuid,sessionId:s,timestamp:c?.timestamp,message:{role:"user",content:[{type:"text",text:z}]}}),G(`data: ${JSON.stringify({type:"system",subtype:"init",session_id:s})}
18
+ `);break}case"tool-error":{let a=function(a){if(a instanceof Error)return a.message||String(a);if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}(c.error);G(f+=(0,E.r)(a),b),d?.onToolResult?.(c.toolCallId,a,!0),b(`data: ${JSON.stringify({type:"user",message:{content:[{type:"tool_result",tool_use_id:c.toolCallId,content:a,is_error:!0}]}})}
19
+
20
+ `);break}case"error":throw Error((0,F.l)(c.error),{cause:c.error})}for(let a of h.values())try{g.push({id:a.id,name:a.name,args:JSON.parse(a.args)})}catch{g.push({id:a.id,name:a.name,args:{}})}return{text:e,toolCalls:g}}function I(a){return"string"==typeof a.prompt&&a.prompt.trim()?{ok:!0}:{ok:!1,status:400,error:"The built-in agent requires a text prompt"}}async function J(a,b){var c,h,i,p;let{sessionsRoot:q}=b,r=a.cwd||process.cwd(),s=a.currentKey();a.rekey(s);let t="string"==typeof a.params.model&&a.params.model||b.defaultModel,z=a.prompt,E=b=>{if(!b.startsWith("data: [DONE]"))try{a.emit(JSON.parse(b.slice(6)))}catch{}},G=[...!0===a.params.noHistory?[]:function(a,b,c){let d=j(a,b,c);if(!(0,f.existsSync)(d))return[];let e=(0,f.readFileSync)(d,"utf-8").split("\n").filter(Boolean),g=[];for(let a of e)try{let b=JSON.parse(a);"string"==typeof b.type&&g.push(b)}catch{}let h=new Map,i=new Set,k=new Set;for(let a of g){if("assistant"===a.type&&Array.isArray(a.message?.content))for(let b of a.message.content)"tool_use"===b.type&&b.id&&(i.add(b.id),b.name&&h.set(b.id,b.name));if("user"===a.type&&Array.isArray(a.message?.content))for(let b of a.message.content)"tool_result"===b.type&&b.tool_use_id&&k.add(b.tool_use_id)}let l=[],m=[],n=()=>{let a=m.filter(a=>"text"!==a.type||String(a.text||"").length>0);m=[],0!==a.length&&(1===a.length&&"text"===a[0].type?l.push({role:"assistant",content:String(a[0].text||"")}):l.push({role:"assistant",content:a}))};for(let a of g){if("user"===a.type&&a.message?.role==="user"&&Array.isArray(a.message.content)){let b=a.message.content.filter(a=>"text"===a.type).map(a=>a.text||"").join("\n");if(n(),!b)continue;l.push({role:"user",content:b});continue}if("assistant"===a.type&&Array.isArray(a.message?.content)){for(let b of a.message.content)if("text"===b.type)m.push({type:"text",text:b.text||""});else if("tool_use"===b.type){let a=b.id||"";if(!a||!k.has(a))continue;let c=b.name||h.get(a)||"tool";m.push({type:"tool-call",toolCallId:a,toolName:c,input:b.input||{}})}continue}if("user"===a.type&&Array.isArray(a.message?.content))for(let b of a.message.content.filter(a=>"tool_result"===a.type&&!!a.tool_use_id)){let a=b.tool_use_id||"";if(!a||!i.has(a))continue;n();let c=h.get(a)||"tool";l.push({role:"tool",content:[{type:"tool-result",toolCallId:a,toolName:c,output:b.is_error?{type:"error-text",value:b.content||""}:{type:"text",value:b.content||""}}]})}}return n(),l}(q,r,s),{role:"user",content:z}];c={uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString()},k(q,r,s,{type:"user",uuid:c?.uuid,sessionId:s,timestamp:c?.timestamp,message:{role:"user",content:[{type:"text",text:z}]}}),E(`data: ${JSON.stringify({type:"system",subtype:"init",session_id:s})}
19
21
 
20
22
  `);let I=await b.createModel(t),J=(0,d.gM)({model:I,system:`You are a coding agent. You help the user build and modify software using the provided tools.
21
23
 
@@ -73,7 +75,7 @@ Accuracy:
73
75
  ## Output
74
76
 
75
77
  - Be concise. Lead with the action or answer.
76
- - Only elaborate on decisions, blockers, or milestones.`,messages:H,tools:(h={cwd:r,todos:[]},{Read:(0,n.z6)({description:'Read a file. Params: { thought, file_path (absolute), offset (1-based line), limit (lines, default 600, max 4000) }. Returns the selected lines as text, followed by a footer like "[read lines X-Y of Z]" so you always know whether the file has more content. When the footer shows more lines remain, call Read again with a higher offset.'+D,inputSchema:(0,n.jN)(o.object({thought:C,file_path:o.string(),offset:o.number().int().min(1).default(1),limit:o.number().int().min(1).max(4e3).default(600)})),execute:async({file_path:a,offset:b,limit:c})=>{try{if(!(0,g.isAbsolute)(a))return"Error: file_path must be an absolute path.";let d=(0,f.readFileSync)(a,"utf-8").split("\n"),e=d.length,h=Math.max(0,b-1),i=Math.min(e,h+c),j=d.slice(h,i).join("\n"),k=h+1,l=e-i,m=l>0?`
78
+ - Only elaborate on decisions, blockers, or milestones.`,messages:G,tools:(h={cwd:r,todos:[]},{Read:(0,n.z6)({description:'Read a file. Params: { thought, file_path (absolute), offset (1-based line), limit (lines, default 600, max 4000) }. Returns the selected lines as text, followed by a footer like "[read lines X-Y of Z]" so you always know whether the file has more content. When the footer shows more lines remain, call Read again with a higher offset.'+D,inputSchema:(0,n.jN)(o.object({thought:C,file_path:o.string(),offset:o.number().int().min(1).default(1),limit:o.number().int().min(1).max(4e3).default(600)})),execute:async({file_path:a,offset:b,limit:c})=>{try{if(!(0,g.isAbsolute)(a))return"Error: file_path must be an absolute path.";let d=(0,f.readFileSync)(a,"utf-8").split("\n"),e=d.length,h=Math.max(0,b-1),i=Math.min(e,h+c),j=d.slice(h,i).join("\n"),k=h+1,l=e-i,m=l>0?`
77
79
 
78
80
  [read lines ${k}-${i} of ${e} — ${l} more line(s) remain; call Read again with offset=${i+1}]`:`
79
81
 
@@ -84,8 +86,8 @@ ${a}`}let e=c.length>64e3?await A(c,"bash"):void 0;return B(c,64e3,{label:"stdou
84
86
  `,d=Math.max(0,64e3-c.length),e=b.length>d?await A(b,"bash-stderr"):void 0;return c+B(b,d,{label:"stderr",bias:"tail",spillPath:e})}}}),Glob:(0,n.z6)({description:'Find files matching a glob pattern (fast-glob style). Params: { thought, pattern }. Runs relative to cwd and returns up to 100 paths (newline-delimited). When more than 100 match, the full list is spilled to a temp file and an explicit "...[N more paths omitted — M total; full list saved to ...]" footer is appended; call Read({ file_path, offset, limit }) on that path to page through the complete list, or tighten the pattern. Supports **, {}, [], *, ?.'+D,inputSchema:(0,n.jN)(o.object({thought:C,pattern:o.string()})),execute:async({pattern:a})=>{try{let b=await u()(a,{cwd:h.cwd,onlyFiles:!0,unique:!0,dot:!0,followSymbolicLinks:!0,ignore:["**/node_modules/**","**/.git/**"]});if(0===b.length)return"(no matches)";if(b.length<=100)return b.join("\n");let c=b.length-100,d=await A(b.join("\n"),"glob"),e=d?`full list saved to ${d} — call Read({ file_path: "${d}", offset, limit }) to page through all ${b.length} paths, or tighten the pattern`:"tighten the pattern to see the rest";return b.slice(0,100).join("\n")+`
85
87
 
86
88
  ...[${c} more paths omitted — ${b.length} total; ${e}]`}catch(a){return`Error: ${a.message}`}}}),Grep:(0,n.z6)({description:'Search for a pattern using ripgrep. Params: { thought, pattern, path (absolute, optional), ignore_case (default true), output_mode, "-n" }. ALWAYS use Grep for searching (never run rg/grep via Bash). output_mode: "content" returns matching lines; "files_with_matches" returns file paths; "count" returns counts. Output is capped at ~32KB (head + tail preserved with an explicit truncation marker). ripgrep also caps matches at 1000/file as a safety net. When truncation happens the full results are spilled to a temp file and the marker gives you its path — call Read({ file_path, offset, limit }) to page through, or tighten the pattern / restrict the path for a smaller result.'+D,inputSchema:(0,n.jN)(o.object({thought:C,pattern:o.string(),path:o.string().optional(),ignore_case:o.boolean().default(!0),output_mode:o.enum(["content","files_with_matches","count"]).default("content"),"-n":o.boolean().optional()})),execute:async({pattern:a,path:b,ignore_case:c,output_mode:d,"-n":e})=>{try{if(b&&!(0,g.isAbsolute)(b))return"Error: path must be an absolute path.";let f=b||h.cwd,i=["--no-heading","--color","never","--max-columns","500"];c&&i.push("--ignore-case");let j="1000";"files_with_matches"===d?(i.push("--files-with-matches"),i.push("--max-count",j)):"count"===d?i.push("--count"):(e??!0)&&(i.push("--line-number"),i.push("--max-count",j)),i.push("--",a,f);let{stdout:k}=await y(v.rgPath,i,{encoding:"utf-8",timeout:15e3,maxBuffer:0xa00000,env:(0,w.u)({FORCE_COLOR:"0"})}),l=k.length>32e3?await A(k,"grep"):void 0;return B(k,32e3,{label:"grep results",spillPath:l})}catch(a){if(1===a.code)return"(no matches)";return`Error: ${a.message}`}}}),TodoWrite:(0,n.z6)({description:"Plan and track progress. Use this as your FIRST tool call to break down the task into steps, then update after each step completes. Params: { thought, todos: [{ content, status, activeForm? }] }. Replaces the entire list. Statuses: pending | in_progress | completed. Keep at most one in_progress."+D,inputSchema:(0,n.jN)(o.object({thought:C,todos:o.array(o.object({content:o.string(),status:o.enum(["pending","in_progress","completed"]),activeForm:o.string().optional()}))})),execute:async({todos:a})=>{h.todos=a;let b=a.map(a=>`- [${a.status}] ${a.content}`).join("\n");return`Todo list updated:
87
- ${b}`}})}),stopWhen:(0,d.wS)(256),...null===b.temperature?{}:{temperature:b.temperature??0},abortSignal:a.signal,onError:({error:a})=>{console.error(`[builtinAgent] provider error: ${(0,E.l)(a)}`)}});Promise.resolve(J.usage).catch(()=>{});let K=new Map,L=a=>{if(0!==K.size){for(let[b]of K){try{m(q,r,s,b,a,{uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString(),is_error:!0})}catch{}try{G(`data: ${JSON.stringify({type:"user",message:{content:[{type:"tool_result",tool_use_id:b,content:a,is_error:!0}]}})}
89
+ ${b}`}})}),stopWhen:(0,d.wS)(256),...null===b.temperature?{}:{temperature:b.temperature??0},abortSignal:a.signal,onError:({error:a})=>{console.error(`[builtinAgent] provider error: ${(0,F.l)(a)}`)}});Promise.resolve(J.usage).catch(()=>{});let K=new Map,L=a=>{if(0!==K.size){for(let[b]of K){try{m(q,r,s,b,a,{uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString(),is_error:!0})}catch{}try{E(`data: ${JSON.stringify({type:"user",message:{content:[{type:"tool_result",tool_use_id:b,content:a,is_error:!0}]}})}
88
90
 
89
- `)}catch{}}K.clear()}};try{let{text:b}=await F(J.fullStream,G,s,{onToolCall:(a,b,c)=>{try{K.set(a,{name:b,input:c}),l(q,r,s,[{type:"tool_use",id:a,name:b,input:c}],{uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString()})}catch{}},onToolResult:(a,b,c)=>{try{K.delete(a),m(q,r,s,a,b,{uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString(),is_error:!!c})}catch{}},onTextFlush:a=>{try{l(q,r,s,[{type:"text",text:a}],{uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString()})}catch{}}}),c=await J.usage;i=c.inputTokens||0,p=c.outputTokens||0,G(`data: ${JSON.stringify({type:"result",subtype:"success",usage:{input_tokens:i,output_tokens:p,cache_creation_input_tokens:0,cache_read_input_tokens:0},total_cost_usd:0})}
91
+ `)}catch{}}K.clear()}};try{let{text:b}=await H(J.fullStream,E,s,{onToolCall:(a,b,c)=>{try{K.set(a,{name:b,input:c}),l(q,r,s,[{type:"tool_use",id:a,name:b,input:c}],{uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString()})}catch{}},onToolResult:(a,b,c)=>{try{K.delete(a),m(q,r,s,a,b,{uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString(),is_error:!!c})}catch{}},onTextFlush:a=>{try{l(q,r,s,[{type:"text",text:a}],{uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString()})}catch{}}}),c=await J.usage;i=c.inputTokens||0,p=c.outputTokens||0,E(`data: ${JSON.stringify({type:"result",subtype:"success",usage:{input_tokens:i,output_tokens:p,cache_creation_input_tokens:0,cache_read_input_tokens:0},total_cost_usd:0})}
90
92
 
91
- `),a.signal.aborted||l(q,r,s,b?[{type:"text",text:b}]:[],{uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString(),usage:{input_tokens:c.inputTokens||0,output_tokens:c.outputTokens||0,cache_creation_input_tokens:0,cache_read_input_tokens:0}})}catch(b){if(a.signal.aborted)return void L("Tool call cancelled (request aborted).");L("Tool call failed (stream error).");try{l(q,r,s,[{type:"text",text:`⚠️ ${(0,E.l)(b)}`}],{uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString()})}catch{}throw b}}},72891:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{OZ:()=>o,RL:()=>n,k9:()=>p,ok:()=>l});var e=c(37625),f=c(52693),g=c(18412),h=c(89705),i=c(94506),j=c(770),k=a([i]);i=(k.then?(await k)():k)[0];let l=(a,b=200)=>new Response(JSON.stringify(a),{status:b,headers:{"content-type":"application/json"}}),m=a=>{let b=e.od(a);if(f.Ru(b)){let a=b.value,c=(0,j.Sh)(a);return new Response(JSON.stringify({error:(a=>{let b=a.message;if("string"==typeof b&&b.length>0)return b;let c=a.cause;if(c instanceof Error&&c.message.length>0)return c.message;switch(a._tag){case"ValidationError":return`Invalid ${a.field}: ${a.reason}`;case"NotFoundError":return`${a.resource} not found: ${a.id}`;case"PermissionError":return`Permission denied: ${a.action} on ${a.resource}`;case"DBError":return`${a.db} ${a.op} failed`;case"FSError":return`${a.op} ${a.path} failed`;case"WSError":return`${a.proto} ${a.kind} failed`;case"AgentError":return`${a.provider} ${a.kind} failed`;default:return a._tag}})(a),tag:a._tag}),{status:c,headers:{"content-type":"application/json"}})}return console.error("[handler] uncaught defect:\n"+e.j9(a)),new Response(JSON.stringify({error:"Internal Server Error",tag:"InternalError"}),{status:500,headers:{"content-type":"application/json"}})},n=a=>async b=>{let c=await i.s9.runPromiseExit(a(b));return g.YW(c,{onFailure:a=>m(a),onSuccess:a=>a})},o=a=>async(b,c)=>{let d=await c.params,e=await i.s9.runPromiseExit(a(b,d));return g.YW(e,{onFailure:a=>m(a),onSuccess:a=>a})},p=a=>h.$mh({try:()=>a.json(),catch:()=>new j.yI({field:"body",reason:"invalid JSON"})});d()}catch(a){d(a)}})},95169:(a,b,c)=>{c.d(b,{u:()=>e});let d=["NODE_ENV","NEXT_DEPLOYMENT_ID","TURBOPACK"];function e(a={},b=process.env){let c={};for(let[a,d]of Object.entries(b))void 0!==d&&(c[a]=d);for(let a of d)delete c[a];for(let[b,d]of Object.entries(a))void 0===d?delete c[b]:c[b]=d;return c}}};
93
+ `),a.signal.aborted||l(q,r,s,b?[{type:"text",text:b}]:[],{uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString(),usage:{input_tokens:c.inputTokens||0,output_tokens:c.outputTokens||0,cache_creation_input_tokens:0,cache_read_input_tokens:0}})}catch(b){if(a.signal.aborted)return void L("Tool call cancelled (request aborted).");L("Tool call failed (stream error).");try{l(q,r,s,[{type:"text",text:`⚠️ ${(0,F.l)(b)}`}],{uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString()})}catch{}throw b}}},72891:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{OZ:()=>o,RL:()=>n,k9:()=>p,ok:()=>l});var e=c(37625),f=c(52693),g=c(18412),h=c(89705),i=c(94506),j=c(770),k=a([i]);i=(k.then?(await k)():k)[0];let l=(a,b=200)=>new Response(JSON.stringify(a),{status:b,headers:{"content-type":"application/json"}}),m=a=>{let b=e.od(a);if(f.Ru(b)){let a=b.value,c=(0,j.Sh)(a);return new Response(JSON.stringify({error:(a=>{let b=a.message;if("string"==typeof b&&b.length>0)return b;let c=a.cause;if(c instanceof Error&&c.message.length>0)return c.message;switch(a._tag){case"ValidationError":return`Invalid ${a.field}: ${a.reason}`;case"NotFoundError":return`${a.resource} not found: ${a.id}`;case"PermissionError":return`Permission denied: ${a.action} on ${a.resource}`;case"DBError":return`${a.db} ${a.op} failed`;case"FSError":return`${a.op} ${a.path} failed`;case"WSError":return`${a.proto} ${a.kind} failed`;case"AgentError":return`${a.provider} ${a.kind} failed`;default:return a._tag}})(a),tag:a._tag}),{status:c,headers:{"content-type":"application/json"}})}return console.error("[handler] uncaught defect:\n"+e.j9(a)),new Response(JSON.stringify({error:"Internal Server Error",tag:"InternalError"}),{status:500,headers:{"content-type":"application/json"}})},n=a=>async b=>{let c=await i.s9.runPromiseExit(a(b));return g.YW(c,{onFailure:a=>m(a),onSuccess:a=>a})},o=a=>async(b,c)=>{let d=await c.params,e=await i.s9.runPromiseExit(a(b,d));return g.YW(e,{onFailure:a=>m(a),onSuccess:a=>a})},p=a=>h.$mh({try:()=>a.json(),catch:()=>new j.yI({field:"body",reason:"invalid JSON"})});d()}catch(a){d(a)}})},95169:(a,b,c)=>{c.d(b,{u:()=>e});let d=["NODE_ENV","NEXT_DEPLOYMENT_ID","TURBOPACK"];function e(a={},b=process.env){let c={};for(let[a,d]of Object.entries(b))void 0!==d&&(c[a]=d);for(let a of d)delete c[a];for(let[b,d]of Object.entries(a))void 0===d?delete c[b]:c[b]=d;return c}}};
@@ -1,6 +1,6 @@
1
- "use strict";exports.id=9352,exports.ids=[9352],exports.modules={29352:(a,b,c)=>{c.d(b,{ND:()=>w});var d=c(7939),e=c(95169),f=c(55511),g=c(29021),h=c(41204),i=c(33873),j=c(21820);function k(a){return`${a}.nohistory-backup`}function l(a){return g.readFileSync(a,"utf-8").split("\n").filter(a=>a.trim().length>0)}function m(a){try{let b=JSON.parse(a);return"session_meta"===b.type&&"string"==typeof b.payload?.id&&"string"==typeof b.payload?.cwd}catch{return!1}}function n(a){var b,c;let d=k(a);if(!g.existsSync(d))return"none";let e=l(d),f=g.existsSync(a)?l(a):[],h=f[0]&&m(f[0])?f.slice(1):f;return 0===h.length||!function(a){for(let b of a)try{JSON.parse(b)}catch{return!1}return!0}(h)?(b=d,c=a,g.existsSync(c)&&g.unlinkSync(c),g.renameSync(b,c),"restored"):(g.writeFileSync(a,[...e,...h].join("\n")+"\n","utf-8"),g.unlinkSync(d),"merged")}var o=c(40516);let p={"image/png":".png","image/jpeg":".jpg","image/webp":".webp","image/gif":".gif"};function q(a){return a.call_id||a.id||`tool-${(0,f.randomUUID)()}`}let r=new Set(["exec_command","shell_command","local_shell"]),s=a=>a.replace(/[/\\]+$/,"").split(/[/\\]/).pop()||a;function t(a){return a.replace(/\s+/g," ").trim()}function u(a){return{...a.params.model?{model:a.params.model}:{},...a.cwd?{workingDirectory:a.cwd}:{},sandboxMode:"danger-full-access",approvalPolicy:"never",skipGitRepoCheck:!0}}async function v(a){let b,k=a.images&&a.images.length>0?(m=a.images,b=(0,i.join)((0,j.tmpdir)(),"cockpit-codex-images"),(0,g.existsSync)(b)||(0,g.mkdirSync)(b,{recursive:!0}),m.map((a,c)=>{let d=p[a.media_type]||".png",e=(0,i.join)(b,`img-${Date.now()}-${c}${d}`);return(0,g.writeFileSync)(e,Buffer.from(a.data,"base64")),e})):[],l=function(a){let b,c,e,i,j,k,l,m,n,{sessionId:p}=a,u=!1,v=null,w=new Map,x=null,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=new Map,H=p||null,I=0,J=new Map,K=(b=null,c=0,e="",i=new h.StringDecoder("utf8"),j=[],k=[],l=[],m=[],n=a=>{b=a,c=0,e="",i=new h.StringDecoder("utf8"),j.length=0,k.length=0,l.length=0,m.length=0},a=>{a!==b&&n(a);let d=0;try{d=(0,g.statSync)(a).size}catch{return{exec:j,patch:k,spawn:l,mcp:m}}if(d<c&&n(a),d===c)return{exec:j,patch:k,spawn:l,mcp:m};let f="";try{let b=(0,g.openSync)(a,"r");try{let a=d-c,e=Buffer.allocUnsafe(a),h=(0,g.readSync)(b,e,0,a,c);f=i.write(e.subarray(0,h)),c+=h}finally{(0,g.closeSync)(b)}}catch{return{exec:j,patch:k,spawn:l,mcp:m}}let h=e+f,p=h.lastIndexOf("\n");return -1===p?e=h:(e=h.slice(p+1),!function(a,b,c,d,e){for(let f of a.split("\n")){let a;if(!f.trim())continue;try{a=JSON.parse(f)}catch{continue}let g=a.payload;if(g){if("function_call"===g.type&&g.name&&r.has(g.name)){let a="";try{a=String(JSON.parse(g.arguments||"{}").cmd||"")}catch{}b.push({callId:g.call_id,cmd:a})}else if("custom_tool_call"===g.type&&"apply_patch"===g.name)c.push({callId:g.call_id,files:function(a){let b,c=[],d=/^\*\*\* (?:Add|Update|Delete) File: (.+)$/gm;for(;b=d.exec(a);)c.push(b[1].trim());return c}(g.input||"")});else if("function_call"===g.type&&g.name&&g.namespace?.startsWith(o.wL))e.push({callId:g.call_id,server:g.namespace.slice(o.wL.length),tool:g.name});else if("function_call"===g.type&&g.name===o.$H){let a={};try{a=JSON.parse(g.arguments||"{}")}catch{}d.push({callId:g.call_id,args:a})}else if("function_call_output"===g.type&&g.call_id){let a=d.find(a=>a.callId===g.call_id&&!a.agentId);if(a){let b=(0,o.nq)(g.output||"");b&&(a.agentId=b.agentId,a.nickname=b.nickname)}}}}}(h.slice(0,p),j,k,l,m)),{exec:j,patch:k,spawn:l,mcp:m}});if(p)try{if(x=(0,d.eg)(p)){let a=K(x);y=a.exec.length,z=a.patch.length,C=a.spawn.length,E=a.mcp.length}}catch{x=null,y=0,z=0,C=0,E=0}let L=()=>{if(x||!H||I>=8)return x;I+=1;try{x=(0,d.eg)(H)}catch{x=null}return x},M=a=>{let b=a.id||a.call_id||`codex-${(0,f.randomUUID)()}`,c=J.get(b);if(c)return c;let d=q(a),e=L();if(!a.call_id&&e){let b=function(a,b,c){var d;let e,f=a[b];if(!f?.callId)return null;let g=t(f.cmd),h=t((e=(d=c||"").match(/^\/bin\/\S+ -lc (['"])([\s\S]*)\1\s*$/))?e[2]:d),i=t(c||"");return!h||h===g||g.startsWith(h)||h.startsWith(g)||g&&i.includes(g)&&i.length-g.length<=32?f.callId:null}(K(e).exec,y+A,a.command||"");b&&(d=b)}return J.set(b,d),A+=1,d},N=a=>{let b=a.id||a.call_id||`codex-${(0,f.randomUUID)()}`,c=J.get(b);if(c)return c;let d=q(a),e=L();if(!a.call_id&&e){let b=(a.changes||[]).map(a=>a.path||"").filter(Boolean),c=function(a,b,c){let d=a[b];if(!d?.callId)return null;if(0===d.files.length||0===c.length)return d.callId;let e=new Set(d.files.map(s));return c.some(a=>e.has(s(a)))?d.callId:null}(K(e).patch,z+B,b);c&&(d=c)}return J.set(b,d),B+=1,d},O=a=>({changes:(a.changes||[]).map(a=>({path:a.path||"",kind:a.kind||"update"}))}),P=(b,c)=>{let d=(a=>{let b=a.id||`codex-${(0,f.randomUUID)()}`,c=J.get(b);if(c)return c;let d=q(a),e=L();if(!a.call_id&&e){var g,h,i,j;let b,c=(g=K(e).mcp,h=E+F,i=a.server,j=a.tool,b=g[h],!b?.callId||i&&j&&(b.server!==i||b.tool!==j)?null:b.callId);c&&(d=c)}return J.set(b,d),F+=1,d})(b),e=(0,o.Dn)(b.server||"mcp",b.tool||"tool");w.has(d)||(w.set(d,d),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:d,name:e,input:b.arguments||{}}]}})),c&&(a.emit({type:"user",message:{content:[{tool_use_id:d,content:(0,o.YU)(b)||`(${b.status||"completed"})`}]}}),w.delete(d))};return{handle:b=>{if(!u)switch(b.type){case"thread.started":{let c=b.thread_id||`codex-${(0,f.randomUUID)()}`;b.thread_id&&(H=b.thread_id),a.rekey(c),a.emit({type:"system",subtype:"init",session_id:c}),L();break}case"item.completed":{let c,d,e=b.item;if(!e)break;if("agent_message"===e.type&&e.text&&a.emit({type:"assistant",message:{content:[{type:"text",text:e.text}]}}),"error"===e.type&&(e.message||e.text)&&a.emit({type:"error",error:e.message||e.text}),"reasoning"===e.type&&e.text&&a.emit({type:"assistant",message:{content:[{type:"text",text:`<details><summary>Reasoning</summary>
1
+ "use strict";exports.id=9352,exports.ids=[9352],exports.modules={29352:(a,b,c)=>{c.d(b,{ND:()=>y});var d=c(22461),e=c(7939),f=c(95169),g=c(55511),h=c(29021),i=c(41204),j=c(33873),k=c(21820);function l(a){return`${a}.nohistory-backup`}function m(a){return h.readFileSync(a,"utf-8").split("\n").filter(a=>a.trim().length>0)}function n(a){try{let b=JSON.parse(a);return"session_meta"===b.type&&"string"==typeof b.payload?.id&&"string"==typeof b.payload?.cwd}catch{return!1}}function o(a){var b,c;let d=l(a);if(!h.existsSync(d))return"none";let e=m(d),f=h.existsSync(a)?m(a):[],g=f[0]&&n(f[0])?f.slice(1):f;return 0===g.length||!function(a){for(let b of a)try{JSON.parse(b)}catch{return!1}return!0}(g)?(b=d,c=a,h.existsSync(c)&&h.unlinkSync(c),h.renameSync(b,c),"restored"):(h.writeFileSync(a,[...e,...g].join("\n")+"\n","utf-8"),h.unlinkSync(d),"merged")}var p=c(40516);let q={"image/png":".png","image/jpeg":".jpg","image/webp":".webp","image/gif":".gif"};function r(a){return a.call_id||a.id||`tool-${(0,g.randomUUID)()}`}let s=new Set(["exec_command","shell_command","local_shell"]);function t(a){let b,c=[],d=/^\*\*\* (?:Add|Update|Delete) File: (.+)$/gm;for(;b=d.exec(a);)c.push(b[1].trim());return c}let u=a=>a.replace(/[/\\]+$/,"").split(/[/\\]/).pop()||a;function v(a){return a.replace(/\s+/g," ").trim()}function w(a){let b=function(a){switch(a){case"minimal":case"low":case"medium":case"high":case"xhigh":case"max":case"ultra":return a;default:return}}(a.params.codexReasoningEffort);return{...a.params.model?{model:a.params.model}:{},...b?{modelReasoningEffort:b}:{},...a.cwd?{workingDirectory:a.cwd}:{},sandboxMode:"danger-full-access",approvalPolicy:"never",skipGitRepoCheck:!0}}async function x(a){let b,l=a.images&&a.images.length>0?(n=a.images,b=(0,j.join)((0,k.tmpdir)(),"cockpit-codex-images"),(0,h.existsSync)(b)||(0,h.mkdirSync)(b,{recursive:!0}),n.map((a,c)=>{let d=q[a.media_type]||".png",e=(0,j.join)(b,`img-${Date.now()}-${c}${d}`);return(0,h.writeFileSync)(e,Buffer.from(a.data,"base64")),e})):[],m=function(a){let b,c,f,j,k,l,m,n,o,{sessionId:q}=a,w=!1,x=null,y=0,z=new Map,A=new Set,B=null,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=new Map,L=q||null,M=0,N=new Map,O=(b=null,c=0,f="",j=new i.StringDecoder("utf8"),k=[],l=[],m=[],n=[],o=a=>{b=a,c=0,f="",j=new i.StringDecoder("utf8"),k.length=0,l.length=0,m.length=0,n.length=0},a=>{a!==b&&o(a);let d=0;try{d=(0,h.statSync)(a).size}catch{return{exec:k,patch:l,spawn:m,mcp:n}}if(d<c&&o(a),d===c)return{exec:k,patch:l,spawn:m,mcp:n};let e="";try{let b=(0,h.openSync)(a,"r");try{let a=d-c,f=Buffer.allocUnsafe(a),g=(0,h.readSync)(b,f,0,a,c);e=j.write(f.subarray(0,g)),c+=g}finally{(0,h.closeSync)(b)}}catch{return{exec:k,patch:l,spawn:m,mcp:n}}let g=f+e,i=g.lastIndexOf("\n");return -1===i?f=g:(f=g.slice(i+1),!function(a,b,c,d,e){for(let f of a.split("\n")){let a;if(!f.trim())continue;try{a=JSON.parse(f)}catch{continue}let g=a.payload;if(g){if("function_call"===g.type&&g.name&&s.has(g.name)){let a="";try{a=String(JSON.parse(g.arguments||"{}").cmd||"")}catch{}b.push({callId:g.call_id,cmd:a})}else if("custom_tool_call"===g.type&&g.name===p.yM)c.push({callId:g.call_id,files:t(g.input||"")});else if("custom_tool_call"===g.type&&g.name===p.Bn){let a=(0,p.VW)(g.input||"");"exec"===a.kind?b.push({callId:g.call_id,cmd:a.command}):"patch"===a.kind&&c.push({callId:g.call_id,files:t(a.patch)})}else if("function_call"===g.type&&g.name&&g.namespace?.startsWith(p.wL))e.push({callId:g.call_id,server:g.namespace.slice(p.wL.length),tool:g.name});else if("function_call"===g.type&&g.name===p.$H){let a={};try{a=JSON.parse(g.arguments||"{}")}catch{}d.push({callId:g.call_id,args:a})}else if("function_call_output"===g.type&&g.call_id){let a=d.find(a=>a.callId===g.call_id&&!a.agentId);if(a){let b=(0,p.nq)(g.output||"");b&&(a.agentId=b.agentId,a.nickname=b.nickname)}}}}}(g.slice(0,i),k,l,m,n)),{exec:k,patch:l,spawn:m,mcp:n}});if(q)try{if(B=(0,e.eg)(q)){let a=O(B);C=a.exec.length,D=a.patch.length,G=a.spawn.length,I=a.mcp.length}}catch{B=null,C=0,D=0,G=0,I=0}let P=()=>{if(B||!L||M>=8)return B;M+=1;try{B=(0,e.eg)(L)}catch{B=null}return B},Q=a=>{let b=a.id||a.call_id||`codex-${(0,g.randomUUID)()}`,c=N.get(b);if(c)return c;let d=r(a),e=P();if(!a.call_id&&e){let b=function(a,b,c){var d;let e,f=a[b];if(!f?.callId)return null;let g=v(f.cmd),h=v((e=(d=c||"").match(/^\/bin\/\S+ -lc (['"])([\s\S]*)\1\s*$/))?e[2]:d),i=v(c||"");return!h||h===g||g.startsWith(h)||h.startsWith(g)||g&&i.includes(g)&&i.length-g.length<=32?f.callId:null}(O(e).exec,C+E,a.command||"");b&&(d=b)}return N.set(b,d),E+=1,d},R=a=>{let b=a.id||a.call_id||`codex-${(0,g.randomUUID)()}`,c=N.get(b);if(c)return c;let d=r(a),e=P();if(!a.call_id&&e){let b=(a.changes||[]).map(a=>a.path||"").filter(Boolean),c=function(a,b,c){let d=a[b];if(!d?.callId)return null;if(0===d.files.length||0===c.length)return d.callId;let e=new Set(d.files.map(u));return c.some(a=>e.has(u(a)))?d.callId:null}(O(e).patch,D+F,b);c&&(d=c)}return N.set(b,d),F+=1,d},S=a=>({changes:(a.changes||[]).map(a=>({path:a.path||"",kind:a.kind||"update"}))}),T=a=>{let b=a.changes||[];return 0===b.length?"apply_patch":b.map(a=>`${a.kind||"update"} ${a.path||""}`.trim()).join("\n")},U=(b,c)=>{let d=(a=>{let b=a.id||`codex-${(0,g.randomUUID)()}`,c=N.get(b);if(c)return c;let d=r(a),e=P();if(!a.call_id&&e){var f,h,i,j;let b,c=(f=O(e).mcp,h=I+J,i=a.server,j=a.tool,b=f[h],!b?.callId||i&&j&&(b.server!==i||b.tool!==j)?null:b.callId);c&&(d=c)}return N.set(b,d),J+=1,d})(b),e=(0,p.Dn)(b.server||"mcp",b.tool||"tool");z.has(d)||(z.set(d,d),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:d,name:e,input:b.arguments||{}}]}})),c&&(a.emit({type:"user",message:{content:[{tool_use_id:d,content:(0,p.YU)(b)||`(${b.status||"completed"})`}]}}),z.delete(d))},V=(b,c)=>{if(c){if(A.has(c))return;A.add(c)}y+=(0,d.r)(b),a.emit({type:"usage_update",output_tokens:y})};return{handle:b=>{if(!w)switch(b.type){case"thread.started":{let c=b.thread_id||`codex-${(0,g.randomUUID)()}`;b.thread_id&&(L=b.thread_id),a.rekey(c),a.emit({type:"system",subtype:"init",session_id:c}),P();break}case"item.completed":{let c=b.item;if(!c)break;if("agent_message"===c.type&&c.text&&(V(c.text),a.emit({type:"assistant",message:{content:[{type:"text",text:c.text}]}})),"error"===c.type&&(c.message||c.text)&&(V(c.message||c.text||""),a.emit({type:"error",error:c.message||c.text})),"reasoning"===c.type&&c.text&&(V(c.text),a.emit({type:"assistant",message:{content:[{type:"text",text:`<details><summary>Reasoning</summary>
2
2
 
3
- ${e.text}
3
+ ${c.text}
4
4
 
5
- </details>`}]}}),"command_execution"===e.type){let b=M(e);w.has(b)||a.emit({type:"assistant",message:{content:[{type:"tool_use",id:b,name:o.C4.bash,input:{command:e.command||""}}]}}),a.emit({type:"user",message:{content:[{tool_use_id:b,content:e.aggregated_output||`(exit code: ${e.exit_code??"unknown"})`}]}}),w.delete(b)}if("collab_tool_call"===e.type&&(b=>{if(b.tool===o.$H)return(b=>{let c=b.receiver_thread_ids??[],d=L(),e=d?function(a,b,c){if(c){let b=a.find(a=>a.agentId===c);if(b?.callId)return b}let d=a[b];return d?.callId?d:null}(K(d).spawn,C+D,c[0]):null;D+=1;let f=e?.callId||q(b),g=e?.args&&Object.keys(e.args).length>0?e.args:{message:b.prompt||""},h=(0,o.o4)(g,{nickname:e?.nickname,agentId:c[0]||e?.agentId});for(let a of c)G.set(a,f);w.set(f,f),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:f,name:o.C4.task,input:h}]}})})(b);for(let c of(0,o.Hq)(b.agents_states)){if(!c.done)continue;let b=G.get(c.agentId);b&&(a.emit({type:"user",message:{content:[{tool_use_id:b,content:(0,o.nE)(c)}]}}),w.delete(b),G.delete(c.agentId))}})(e),"mcp_tool_call"===e.type&&P(e,!0),"web_search"===e.type&&(b=>{let c=q(b),{name:d,input:e,result:f}=(0,o.U6)(b.query,b.action);a.emit({type:"assistant",message:{content:[{type:"tool_use",id:c,name:d,input:e}]}}),a.emit({type:"user",message:{content:[{tool_use_id:c,content:f}]}})})(e),"todo_list"===e.type&&(c=q(e),d=(0,o.qW)(e.items),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:c,name:o.C4.todo,input:d}]}}),a.emit({type:"user",message:{content:[{tool_use_id:c,content:(0,o.uz)(d.todos)}]}})),"file_change"===e.type){let b,c=N(e);w.has(c)||a.emit({type:"assistant",message:{content:[{type:"tool_use",id:c,name:o.C4.applyPatch,input:O(e)}]}}),a.emit({type:"user",message:{content:[{tool_use_id:c,content:0===(b=e.changes||[]).length?"apply_patch":b.map(a=>`${a.kind||"update"} ${a.path||""}`.trim()).join("\n")}]}}),w.delete(c)}break}case"item.started":{let c=b.item;if(c?.type==="mcp_tool_call"&&P(c,!1),c?.type==="command_execution"&&c.command){let b=M(c);w.set(b,b),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:b,name:o.C4.bash,input:{command:c.command}}]}})}if(c?.type==="file_change"&&(c.changes?.length??0)>0){let b=N(c);w.set(b,b),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:b,name:o.C4.applyPatch,input:O(c)}]}})}break}case"turn.completed":{let c=b.usage||{};a.emit({type:"result",subtype:"success",usage:{input_tokens:c.input_tokens||0,output_tokens:c.output_tokens||0,cache_creation_input_tokens:c.cache_write_input_tokens||0,cache_read_input_tokens:c.cached_input_tokens||0},total_cost_usd:0});break}case"turn.failed":u=!0,v=Error(b.error?.message||"Codex turn failed");break;case"error":u=!0,v=Error(b.message||"Codex error")}},assertSuccess(){if(v)throw v}}}(a);try{let b,{Codex:d}=await c.e(9312).then(c.bind(c,19312)),f=(0,e.u)({});try{b=new d({env:f})}catch(a){if(!(a instanceof Error?a.message:"").includes("Unable to locate Codex CLI binaries"))throw a;b=new d({codexPathOverride:"codex",env:f})}let g=a.sessionId?b.resumeThread(a.sessionId,u(a)):b.startThread(u(a)),{events:h}=await g.runStreamed((n=a.prompt??"",0===k.length?n:[{type:"text",text:n||o.RA},...k.map(a=>({type:"local_image",path:a}))]),{signal:a.signal});for await(let a of h)l.handle(a);l.assertSuccess()}finally{var m,n;for(let a of k)try{(0,g.unlinkSync)(a)}catch{}}}let w={name:"codex",runner:{async run(a){if(!0!==a.params.noHistory||!a.sessionId)return void await v(a);let b=(0,d.eg)(a.sessionId),c=!!b&&function(a){if(!g.existsSync(a))return!1;let b=k(a);g.existsSync(b)&&n(a);let c=l(a)[0];if(!c||!m(c))throw Error(`Cannot run Codex independent task: ${a} has no session_meta`);g.mkdirSync((0,i.dirname)(b),{recursive:!0}),g.renameSync(a,b);try{g.writeFileSync(a,`${c}
6
- `,"utf-8")}catch(c){throw g.existsSync(b)&&!g.existsSync(a)&&g.renameSync(b,a),c}return!0}(b);try{await v(a)}finally{c&&b&&n(b)}}}}},40516:(a,b,c)=>{c.d(b,{$H:()=>h,BZ:()=>t,C4:()=>e,Dn:()=>g,Hq:()=>w,L8:()=>C,RA:()=>d,TB:()=>q,U6:()=>o,Y8:()=>l,YU:()=>p,dr:()=>y,g$:()=>j,jB:()=>i,nE:()=>x,nq:()=>u,o4:()=>s,p7:()=>v,qW:()=>m,uz:()=>n,wL:()=>f});let d="[Image]",e={bash:"Bash",applyPatch:"ApplyPatch",task:"Task",todo:"TodoWrite",webSearch:"WebSearch",webFetch:"WebFetch"},f="mcp__",g=(a,b)=>`${f}${a}__${b}`,h="spawn_agent",i="wait_agent",j=new Set([h,i,"close_agent","send_input","resume_agent"]),k="update_plan";function l(a,b){return b?.startsWith(f)?`${b}__${a}`:"shell_command"===a||"exec_command"===a?e.bash:"apply_patch"===a?e.applyPatch:a===h?e.task:a===k?e.todo:a}function m(a){return{todos:(a??[]).flatMap(a=>"string"==typeof a?.text?[{content:a.text,status:a.completed?"completed":"pending"}]:[])}}function n(a){let b=a.filter(a=>"completed"===a.status).length;return`${b}/${a.length} completed`}function o(a,b){if(b?.type==="open_page"&&b.url)return{name:e.webFetch,input:{url:b.url},result:b.url};let c=b?.query||a||"",d=b?.queries?.length?b.queries:c?[c]:[];return{name:e.webSearch,input:{query:c},result:d.join("\n")}}function p(a){return a.error?.message?a.error.message:null===a.result||void 0===a.result?"":"string"==typeof a.result?a.result:JSON.stringify(a.result,null,2)}function q(a){let b,c=[],d=/^\*\*\* (Add|Update|Delete) File: (.+)$/gm;for(;b=d.exec(a);)c.push({path:b[2].trim(),kind:b[1].toLowerCase()});return{changes:c}}let r=new Set(["completed","errored","interrupted","not_found","failed"]);function s(a,b){let c="string"==typeof a.message?a.message:"",d="string"==typeof a.agent_type?a.agent_type:void 0;return{...d?{subagent_type:d}:{},description:t(b?.nickname,d,c),prompt:c,...b?.agentId?{agent_id:b.agentId}:{}}}function t(a,b,c){if(a)return b?`${a} (${b})`:a;let d=c.split("\n",1)[0]?.trim()||"";return d?d.slice(0,80):b||"subagent"}function u(a){try{let b=JSON.parse(a);if("string"!=typeof b?.agent_id||!b.agent_id)return null;return{agentId:b.agent_id,..."string"==typeof b.nickname?{nickname:b.nickname}:{}}}catch{return null}}function v(a){let b;try{b=JSON.parse(a)}catch{return[]}let c=b?.status;if(!c||"object"!=typeof c)return[];let d=[];for(let[a,b]of Object.entries(c)){if(!b||"object"!=typeof b)continue;let[c,e]=Object.entries(b)[0]??[];c&&d.push({agentId:a,status:c,message:"string"==typeof e?e:"",done:r.has(c)})}return d}function w(a){return a&&"object"==typeof a?Object.entries(a).flatMap(([a,b])=>{let c="string"==typeof b?.status?b.status:"";return c?[{agentId:a,status:c,message:"string"==typeof b?.message?b.message:"",done:r.has(c)}]:[]}):[]}function x(a){return a.message||`(agent ${a.status})`}function y(a,b){if(a===h)return s(b);if(a===k)return{todos:(Array.isArray(b.plan)?b.plan:[]).flatMap(a=>"string"!=typeof a?.step?[]:[{content:a.step,status:"string"==typeof a.status?a.status:"pending"}])};if(l(a)!==e.bash||"string"==typeof b.command||"string"!=typeof b.cmd)return b;let{cmd:c,...d}=b;return{...d,command:b.cmd}}let z=/^<image\b[^>]*>$/i,A=/<\/?image\b[^>]*>/gi,B=/^data:(image\/(?:png|jpeg|webp|gif));base64,([\s\S]*)$/;function C(a){return{text:(a?.filter(a=>"input_text"===a.type&&a.text&&!z.test(a.text.trim())).map(a=>a.text).join("")||"").replace(A,""),images:a?.filter(a=>"input_image"===a.type&&a.image_url).map(a=>{let b;return(b=a.image_url.match(B))?{type:"base64",media_type:b[1],data:b[2]}:null}).filter(a=>null!==a)||[]}}}};
5
+ </details>`}]}})),"command_execution"===c.type){let b=Q(c);z.has(b)||(V(c.command||p.C4.bash,`command-start:${b}`),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:b,name:p.C4.bash,input:{command:c.command||""}}]}})),V(c.aggregated_output||`(exit code: ${c.exit_code??"unknown"})`,`command-result:${b}`),a.emit({type:"user",message:{content:[{tool_use_id:b,content:c.aggregated_output||`(exit code: ${c.exit_code??"unknown"})`}]}}),z.delete(b)}if("collab_tool_call"===c.type&&(b=>{if(b.tool===p.$H)return(b=>{let c=b.receiver_thread_ids??[],d=P(),e=d?function(a,b,c){if(c){let b=a.find(a=>a.agentId===c);if(b?.callId)return b}let d=a[b];return d?.callId?d:null}(O(d).spawn,G+H,c[0]):null;H+=1;let f=e?.callId||r(b),g=e?.args&&Object.keys(e.args).length>0?e.args:{message:b.prompt||""},h=(0,p.o4)(g,{nickname:e?.nickname,agentId:c[0]||e?.agentId});for(let a of c)K.set(a,f);z.set(f,f),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:f,name:p.C4.task,input:h}]}})})(b);for(let c of(0,p.Hq)(b.agents_states)){if(!c.done)continue;let b=K.get(c.agentId);b&&(a.emit({type:"user",message:{content:[{tool_use_id:b,content:(0,p.nE)(c)}]}}),z.delete(b),K.delete(c.agentId))}})(c),"mcp_tool_call"===c.type&&(V(`${c.server||"mcp"} ${c.tool||""} ${JSON.stringify(c.result??c.error??"")}`),U(c,!0)),"web_search"===c.type&&(V(JSON.stringify(c.action||c.query||"web_search")),(b=>{let c=r(b),{name:d,input:e,result:f}=(0,p.U6)(b.query,b.action);a.emit({type:"assistant",message:{content:[{type:"tool_use",id:c,name:d,input:e}]}}),a.emit({type:"user",message:{content:[{tool_use_id:c,content:f}]}})})(c)),"todo_list"===c.type){let b,d;V(JSON.stringify(c.items||[])),b=r(c),d=(0,p.qW)(c.items),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:b,name:p.C4.todo,input:d}]}}),a.emit({type:"user",message:{content:[{tool_use_id:b,content:(0,p.uz)(d.todos)}]}})}if("file_change"===c.type){let b=R(c);z.has(b)||(V(T(c),`patch-start:${b}`),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:b,name:p.C4.applyPatch,input:S(c)}]}})),V(T(c),`patch-result:${b}`),a.emit({type:"user",message:{content:[{tool_use_id:b,content:T(c)}]}}),z.delete(b)}break}case"item.started":{let c=b.item;if(c?.type==="mcp_tool_call"&&U(c,!1),c?.type==="command_execution"&&c.command){let b=Q(c);z.set(b,b),V(c.command,`command-start:${b}`),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:b,name:p.C4.bash,input:{command:c.command}}]}})}if(c?.type==="file_change"&&(c.changes?.length??0)>0){let b=R(c);z.set(b,b),V(T(c),`patch-start:${b}`),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:b,name:p.C4.applyPatch,input:S(c)}]}})}break}case"turn.completed":{let c=b.usage||{};a.emit({type:"result",subtype:"success",usage:{input_tokens:c.input_tokens||0,output_tokens:c.output_tokens||0,cache_creation_input_tokens:c.cache_write_input_tokens||0,cache_read_input_tokens:c.cached_input_tokens||0},total_cost_usd:0});break}case"turn.failed":w=!0,x=Error(b.error?.message||"Codex turn failed");break;case"error":w=!0,x=Error(b.message||"Codex error")}},assertSuccess(){if(x)throw x}}}(a);try{let b,{Codex:d}=await c.e(9312).then(c.bind(c,19312)),e=(0,f.u)({});try{b=new d({env:e})}catch(a){if(!(a instanceof Error?a.message:"").includes("Unable to locate Codex CLI binaries"))throw a;b=new d({codexPathOverride:"codex",env:e})}let g=a.sessionId?b.resumeThread(a.sessionId,w(a)):b.startThread(w(a)),{events:h}=await g.runStreamed((o=a.prompt??"",0===l.length?o:[{type:"text",text:o||p.RA},...l.map(a=>({type:"local_image",path:a}))]),{signal:a.signal});for await(let a of h)m.handle(a);m.assertSuccess()}finally{var n,o;for(let a of l)try{(0,h.unlinkSync)(a)}catch{}}}let y={name:"codex",runner:{async run(a){if(!0!==a.params.noHistory||!a.sessionId)return void await x(a);let b=(0,e.eg)(a.sessionId),c=!!b&&function(a){if(!h.existsSync(a))return!1;let b=l(a);h.existsSync(b)&&o(a);let c=m(a)[0];if(!c||!n(c))throw Error(`Cannot run Codex independent task: ${a} has no session_meta`);h.mkdirSync((0,j.dirname)(b),{recursive:!0}),h.renameSync(a,b);try{h.writeFileSync(a,`${c}
6
+ `,"utf-8")}catch(c){throw h.existsSync(b)&&!h.existsSync(a)&&h.renameSync(b,a),c}return!0}(b);try{await x(a)}finally{c&&b&&o(b)}}}}},40516:(a,b,c)=>{c.d(b,{$H:()=>h,BZ:()=>B,Bn:()=>m,C4:()=>e,Dn:()=>g,Hq:()=>E,L8:()=>K,RA:()=>d,TB:()=>t,U6:()=>r,Uk:()=>n,VW:()=>w,Y8:()=>o,YU:()=>s,dr:()=>G,g$:()=>j,iN:()=>x,jB:()=>i,nE:()=>F,nq:()=>C,o4:()=>A,p7:()=>D,q4:()=>y,qW:()=>p,uz:()=>q,wL:()=>f,yM:()=>l});let d="[Image]",e={bash:"Bash",applyPatch:"ApplyPatch",task:"Task",todo:"TodoWrite",webSearch:"WebSearch",webFetch:"WebFetch"},f="mcp__",g=(a,b)=>`${f}${a}__${b}`,h="spawn_agent",i="wait_agent",j=new Set([h,i,"close_agent","send_input","resume_agent"]),k="update_plan",l="apply_patch",m="exec",n=new Set([l,m]);function o(a,b){return b?.startsWith(f)?`${b}__${a}`:"shell_command"===a||"exec_command"===a?e.bash:"apply_patch"===a?e.applyPatch:a===h?e.task:a===k?e.todo:a}function p(a){return{todos:(a??[]).flatMap(a=>"string"==typeof a?.text?[{content:a.text,status:a.completed?"completed":"pending"}]:[])}}function q(a){let b=a.filter(a=>"completed"===a.status).length;return`${b}/${a.length} completed`}function r(a,b){if(b?.type==="open_page"&&b.url)return{name:e.webFetch,input:{url:b.url},result:b.url};let c=b?.query||a||"",d=b?.queries?.length?b.queries:c?[c]:[];return{name:e.webSearch,input:{query:c},result:d.join("\n")}}function s(a){return a.error?.message?a.error.message:null===a.result||void 0===a.result?"":"string"==typeof a.result?a.result:JSON.stringify(a.result,null,2)}function t(a){let b,c=[],d=/^\*\*\* (Add|Update|Delete) File: (.+)$/gm;for(;b=d.exec(a);)c.push({path:b[2].trim(),kind:b[1].toLowerCase()});return{changes:c}}let u=/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`/g,v={n:"\n",r:"\r",t:" ",b:"\b",f:"\f",v:"\v",0:"\0"};function w(a){let b=function(a){let b;for(u.lastIndex=0;b=u.exec(a);){let a=function(a){if(a.startsWith('"'))try{return JSON.parse(a)}catch{}return a.slice(1,-1).replace(/\\(u\{[0-9a-fA-F]+\}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{2}|[\s\S])/g,(a,b)=>b.startsWith("u{")?String.fromCodePoint(parseInt(b.slice(2,-1),16)):b.startsWith("u")||b.startsWith("x")?String.fromCharCode(parseInt(b.slice(1),16)):v[b]??b)}(b[0]);if(a.includes("*** Begin Patch"))return a}return null}(a);if(b)return{kind:"patch",patch:b};let c=function(a){let b=a.indexOf("tools.exec_command(");if(-1===b)return null;let c=a.indexOf("{",b);if(-1===c)return null;let d=0,e="";for(let b=c;b<a.length;b++){let f=a[b];if(e){"\\"===f?b++:f===e&&(e="");continue}if('"'===f||"'"===f||"`"===f){e=f;continue}if("{"===f)d++;else if("}"===f&&0==--d)try{let d=JSON.parse(a.slice(c,b+1));return d&&"object"==typeof d?d:null}catch{break}}return null}(a);return c?{kind:"exec",command:"string"==typeof c.cmd?c.cmd:"",args:c}:{kind:"unknown"}}function x(a){let b=w(a);return"patch"===b.kind?{name:e.applyPatch,input:t(b.patch)}:"exec"===b.kind?{name:e.bash,input:G("exec_command",b.args)}:{name:e.bash,input:{command:a}}}function y(a){if(null==a)return"";if("string"==typeof a)return a;if(Array.isArray(a))return a.map(y).join("");if("object"==typeof a){let b=a.text;return"string"==typeof b?b:JSON.stringify(a)}return String(a)}let z=new Set(["completed","errored","interrupted","not_found","failed"]);function A(a,b){let c="string"==typeof a.message?a.message:"",d="string"==typeof a.agent_type?a.agent_type:void 0;return{...d?{subagent_type:d}:{},description:B(b?.nickname,d,c),prompt:c,...b?.agentId?{agent_id:b.agentId}:{}}}function B(a,b,c){if(a)return b?`${a} (${b})`:a;let d=c.split("\n",1)[0]?.trim()||"";return d?d.slice(0,80):b||"subagent"}function C(a){try{let b=JSON.parse(a);if("string"!=typeof b?.agent_id||!b.agent_id)return null;return{agentId:b.agent_id,..."string"==typeof b.nickname?{nickname:b.nickname}:{}}}catch{return null}}function D(a){let b;try{b=JSON.parse(a)}catch{return[]}let c=b?.status;if(!c||"object"!=typeof c)return[];let d=[];for(let[a,b]of Object.entries(c)){if(!b||"object"!=typeof b)continue;let[c,e]=Object.entries(b)[0]??[];c&&d.push({agentId:a,status:c,message:"string"==typeof e?e:"",done:z.has(c)})}return d}function E(a){return a&&"object"==typeof a?Object.entries(a).flatMap(([a,b])=>{let c="string"==typeof b?.status?b.status:"";return c?[{agentId:a,status:c,message:"string"==typeof b?.message?b.message:"",done:z.has(c)}]:[]}):[]}function F(a){return a.message||`(agent ${a.status})`}function G(a,b){if(a===h)return A(b);if(a===k)return{todos:(Array.isArray(b.plan)?b.plan:[]).flatMap(a=>"string"!=typeof a?.step?[]:[{content:a.step,status:"string"==typeof a.status?a.status:"pending"}])};if(o(a)!==e.bash||"string"==typeof b.command||"string"!=typeof b.cmd)return b;let{cmd:c,...d}=b;return{...d,command:b.cmd}}let H=/^<image\b[^>]*>$/i,I=/<\/?image\b[^>]*>/gi,J=/^data:(image\/(?:png|jpeg|webp|gif));base64,([\s\S]*)$/;function K(a){return{text:(a?.filter(a=>"input_text"===a.type&&a.text&&!H.test(a.text.trim())).map(a=>a.text).join("")||"").replace(I,""),images:a?.filter(a=>"input_image"===a.type&&a.image_url).map(a=>{let b;return(b=a.image_url.match(J))?{type:"base64",media_type:b[1],data:b[2]}:null}).filter(a=>null!==a)||[]}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=9830,exports.ids=[9830],exports.modules={38433:(a,b,c)=>{c.d(b,{SG:()=>m,a_:()=>l,hO:()=>k,lG:()=>j});var d=c(51181),e=c.n(d),f=c(7939);let g=null,h="https://github.com/Surething-io/cockpit";async function i(){if(g)return g;let a=await (0,f.Ux)(f.tP,async()=>{let a=await (0,f.JE)(f.tP,{});if(a.push?.publicKey&&a.push?.privateKey){let b=!function(a){if(!a||a.includes("localhost"))return!1;if(a.startsWith("https://"))return!0;let b=/^mailto:[^\s@]+@([^\s@]+)$/.exec(a);return!!b&&b[1].includes(".")}(a.push.subject)?h:a.push.subject;return b!==a.push.subject&&await (0,f.An)(f.tP,{...a,push:{...a.push,subject:b}}),{publicKey:a.push.publicKey,privateKey:a.push.privateKey,subject:b}}let b=e().generateVAPIDKeys(),c={publicKey:b.publicKey,privateKey:b.privateKey,subject:h};return await (0,f.An)(f.tP,{...a,push:c}),c});return e().setVapidDetails(a.subject,a.publicKey,a.privateKey),g=a,a}async function j(){return(await i()).publicKey}async function k(a){await (0,f.Ux)(f.n6,async()=>{let b=await (0,f.JE)(f.n6,{subscriptions:[]});b.subscriptions.some(b=>b.endpoint===a.endpoint)||(b.subscriptions.push(a),await (0,f.An)(f.n6,b))})}async function l(a){await (0,f.Ux)(f.n6,async()=>{let b=await (0,f.JE)(f.n6,{subscriptions:[]}),c=b.subscriptions.filter(b=>b.endpoint!==a);c.length!==b.subscriptions.length&&await (0,f.An)(f.n6,{subscriptions:c})})}async function m(a){try{await i()}catch{return{sent:0,pruned:0}}let b=await (0,f.JE)(f.n6,{subscriptions:[]});if(0===b.subscriptions.length)return{sent:0,pruned:0};let c=JSON.stringify(a),d=[],g=0;return await Promise.all(b.subscriptions.map(async a=>{try{await e().sendNotification(a,c),g++}catch(c){let b=c?.statusCode;if(404===b||410===b)d.push(a.endpoint);else{let d=a.endpoint;try{d=new URL(a.endpoint).host}catch{}console.error(`[push] send failed (${b??"?"}) to ${d}: ${c?.body||c?.message||"unknown"}`)}}})),d.length&&await (0,f.Ux)(f.n6,async()=>{let a=await (0,f.JE)(f.n6,{subscriptions:[]});await (0,f.An)(f.n6,{subscriptions:a.subscriptions.filter(a=>!d.includes(a.endpoint))})}),{sent:g,pruned:d.length}}},79830:(a,b,c)=>{c.d(b,{BN:()=>t,CS:()=>m,Pn:()=>n,Ru:()=>u,j8:()=>s});var d=c(7939),e=c(29021),f=c(4984),g=c(33873),h=c(38433),i=c(89812);let j=[d.Kk,d.yw,d.im,d.Xi,d.SE,d.n2,d.Iy,d.Rk];function k(a,b){for(let c of j){let d=c(a,b);if((0,e.existsSync)(d))return d}return null}function l(a){if(!a)return a;let b=[...a];return b.length<=50?a:b.slice(0,50).join("")+"…"}async function m(a,b,c,f,i){if((0,e.existsSync)(a))return(0,d.Ux)(d.v4,async()=>{let e=await (0,d.JE)(d.v4,{sessions:[]});for(let a of e.sessions)a.status||(a.status=a.isLoading?"loading":"normal",delete a.isLoading);let j=e.sessions.findIndex(c=>c.cwd===a&&c.sessionId===b),k=j>=0?e.sessions[j]:void 0,m={cwd:a,sessionId:b,lastActive:Date.now(),status:c,title:l(f||k?.title),lastUserMessage:l(i||k?.lastUserMessage)};j>=0?e.sessions[j]=m:e.sessions.push(m),e.sessions.sort((a,b)=>b.lastActive-a.lastActive);let n=Date.now()-6048e5,o=Math.min(100,Math.max(15,e.sessions.filter(a=>a.lastActive>=n).length));e.sessions=e.sessions.slice(0,o),await (0,d.An)(d.v4,e),"unread"===c&&k?.status!=="unread"&&(async()=>{let c=await p(a,b).catch(()=>void 0)||m.lastUserMessage;await (0,h.SG)({title:(0,g.basename)(a)||"Cockpit",body:l(c)||m.title||"",data:{cwd:a,sessionId:b}})})().catch(()=>{})})}async function n(a,b){let c=k(a,b);if(c)return z(c);let f=(0,d.eg)(b);return f&&(0,e.existsSync)(f)&&await D(f)||"Untitled Session"}async function o(a,b){let c=k(a,b);if(c)return await A(c);let f=(0,d.eg)(b);return f&&(0,e.existsSync)(f)?await C(f):[]}async function p(a,b){let c=await o(a,b);return c[c.length-1]}let q=new Map;async function r(a,b){let c=function(a,b){let c=k(a,b);if(c)return{path:c,read:B};let f=(0,d.eg)(b);return f&&(0,e.existsSync)(f)?{path:f,read:async a=>({aiTitle:"",summary:"",messages:await C(a)})}:null}(a,b);if(!c)return{aiTitle:"",summary:"",messages:[]};let f="";try{var g;let a;g=c.path,a=(0,e.statSync)(g),f=`${a.mtimeMs}-${a.size}`;let b=q.get(c.path);if(b&&b.fingerprint===f)return q.delete(c.path),q.set(c.path,b),b.content}catch{}let h=await c.read(c.path);if(f&&(q.delete(c.path),q.set(c.path,{fingerprint:f,content:h}),q.size>40)){let a=q.keys().next().value;void 0!==a&&q.delete(a)}return h}async function s(a,b,c){let{aiTitle:d,summary:e,messages:f}=await r(a,b),g=(0,i.K)(d,e,f),h=f[f.length-1],j=c?.includeSearchText?[e,...f].join("\n").toLowerCase():"";return f.length<=10?{title:g,lastUserMessage:h,firstMessages:f.map(a=>l(a)),lastMessages:[],searchText:j}:{title:g,lastUserMessage:h,firstMessages:f.slice(0,5).map(a=>l(a)),lastMessages:f.slice(-5).map(a=>l(a)),searchText:j}}async function t(a){let b=new Map;return Promise.all(a.map(async a=>{let c=(await (a=>{let c=b.get(a);if(c)return c;let e=(0,d.JE)((0,d.Mx)(a),{}).then(a=>a.engines??{}).catch(()=>({}));return b.set(a,e),e})(a.cwd))[a.sessionId];return c?{...a,engine:c}:a}))}async function u(a=15){let b=await (0,d.JE)(d.v4,{sessions:[]});for(let a of b.sessions)a.status||(a.status=a.isLoading?"loading":"normal");b.sessions.sort((a,b)=>b.lastActive-a.lastActive);let c=b.sessions.slice(0,a);return t(await Promise.all(c.map(async a=>{if("loading"===a.status&&a.lastUserMessage)return a;try{let b=await s(a.cwd,a.sessionId);return{...a,title:"Untitled Session"!==b.title?b.title:a.title??b.title,lastUserMessage:b.lastUserMessage??a.lastUserMessage,firstMessages:b.firstMessages,lastMessages:b.lastMessages}}catch{return a}})))}function v(a){let b=a.replace(/<command-[^>]*>[\s\S]*?<\/command-[^>]*>/g,"");return(b=b.replace(/<local-command-[^>]*>[\s\S]*?<\/local-command-[^>]*>/g,"")).trim()}function w(a){return!(a.startsWith("This session is being continued")||a.startsWith("Caveat: The messages below"))&&!!a.trim()}let x=['"type":"user"','"type": "user"','"type":"summary"','"type": "summary"','"type":"ai-title"','"type": "ai-title"'];function y(a){for(let b of x)if(a.includes(b))return!0;return!1}async function z(a){try{let b=(0,e.createReadStream)(a),c=(0,f.createInterface)({input:b,crlfDelay:1/0}),d="",g="",h=[];for await(let a of c)if(a.trim()&&y(a))try{let b=JSON.parse(a);if("ai-title"===b.type&&b.aiTitle&&(d=b.aiTitle),"summary"===b.type&&b.summary&&(g=b.summary),"user"===b.type){let a=b.message;if(!a?.content)continue;if("string"==typeof a.content)h.push(a.content);else if(Array.isArray(a.content))for(let b of a.content)"text"===b.type&&b.text&&h.push(b.text)}}catch{}return(0,i.K)(d,g,h)}catch{return"Untitled Session"}}async function A(a){let b=[];try{let c=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:c,crlfDelay:1/0}))if(a.trim()&&y(a))try{let c=JSON.parse(a);if("user"!==c.type)continue;let d=c.message;if(!d?.content)continue;let e="";if("string"==typeof d.content)e=d.content;else if(Array.isArray(d.content)){for(let a of d.content)if("text"===a.type&&a.text){e=a.text;break}}if(!e)continue;let f=v(e);f&&w(f)&&b.push(f)}catch{}}catch{}return b}async function B(a){let b="",c="",d=[];try{let g=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:g,crlfDelay:1/0}))if(a.trim()&&y(a))try{let e=JSON.parse(a);if("ai-title"===e.type&&e.aiTitle){b=e.aiTitle;continue}if("summary"===e.type&&e.summary){c=e.summary;continue}if("user"!==e.type)continue;let f=e.message;if(!f?.content)continue;let g="";if("string"==typeof f.content)g=f.content;else if(Array.isArray(f.content)){for(let a of f.content)if("text"===a.type&&a.text){g=a.text;break}}if(!g)continue;let h=v(g);h&&w(h)&&d.push(h)}catch{}}catch{}return{aiTitle:b,summary:c,messages:d}}async function C(a){let b=[];try{let c=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:c,crlfDelay:1/0})){let c;if(!a.trim())continue;try{c=JSON.parse(a)}catch{continue}if("response_item"!==c.type)continue;let d=c.payload;if(!d||"message"!==d.type||"user"!==d.role)continue;let e=d.content?.filter(a=>"input_text"===a.type&&a.text).map(a=>a.text).join("")||"";if(!e||e.startsWith("<")||e.startsWith("#"))continue;let f=v(e);f&&w(f)&&b.push(f)}}catch{}return b}async function D(a){try{let b=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:b,crlfDelay:1/0})){let b;if(!a.trim())continue;try{b=JSON.parse(a)}catch{continue}if("response_item"!==b.type)continue;let c=b.payload;if(!c||"message"!==c.type||"user"!==c.role)continue;let d=c.content?.filter(a=>"input_text"===a.type&&a.text).map(a=>a.text).join("")||"";if(!(!d||d.startsWith("<")||d.startsWith("#")))return d.slice(0,80)}return}catch{return}}},89812:(a,b,c)=>{c.d(b,{K:()=>d});function d(a,b,c){if(a)return a;if(b)return b;let d="";for(let a of c){let b=function(a){let b=a.match(/<command-args>([^<]*)<\/command-args>/);if(b&&b[1].trim())return b[1].trim();let c=a.match(/<command-name>([^<]*)<\/command-name>/);if(c&&c[1].trim())return c[1].trim();let d=a.replace(/<command-message>[^<]*<\/command-message>/g,"");return(d=(d=(d=(d=d.replace(/<command-name>[^<]*<\/command-name>/g,"")).replace(/<command-args>[^<]*<\/command-args>/g,"")).replace(/<local-command-stdout>[\s\S]*?<\/local-command-stdout>/g,"")).replace(/<local-command-caveat>[\s\S]*?<\/local-command-caveat>/g,"")).trim()}(a);if(b){if(b.startsWith("/")&&!d){d=b;continue}if(d)return`${d} ${b}`;return b}}return d||"Untitled Session"}}};
1
+ "use strict";exports.id=9830,exports.ids=[9830],exports.modules={38433:(a,b,c)=>{c.d(b,{SG:()=>m,a_:()=>l,hO:()=>k,lG:()=>j});var d=c(51181),e=c.n(d),f=c(7939);let g=null,h="https://github.com/Surething-io/cockpit";async function i(){if(g)return g;let a=await (0,f.Ux)(f.tP,async()=>{let a=await (0,f.JE)(f.tP,{});if(a.push?.publicKey&&a.push?.privateKey){let b=!function(a){if(!a||a.includes("localhost"))return!1;if(a.startsWith("https://"))return!0;let b=/^mailto:[^\s@]+@([^\s@]+)$/.exec(a);return!!b&&b[1].includes(".")}(a.push.subject)?h:a.push.subject;return b!==a.push.subject&&await (0,f.An)(f.tP,{...a,push:{...a.push,subject:b}}),{publicKey:a.push.publicKey,privateKey:a.push.privateKey,subject:b}}let b=e().generateVAPIDKeys(),c={publicKey:b.publicKey,privateKey:b.privateKey,subject:h};return await (0,f.An)(f.tP,{...a,push:c}),c});return e().setVapidDetails(a.subject,a.publicKey,a.privateKey),g=a,a}async function j(){return(await i()).publicKey}async function k(a){await (0,f.Ux)(f.n6,async()=>{let b=await (0,f.JE)(f.n6,{subscriptions:[]});b.subscriptions.some(b=>b.endpoint===a.endpoint)||(b.subscriptions.push(a),await (0,f.An)(f.n6,b))})}async function l(a){await (0,f.Ux)(f.n6,async()=>{let b=await (0,f.JE)(f.n6,{subscriptions:[]}),c=b.subscriptions.filter(b=>b.endpoint!==a);c.length!==b.subscriptions.length&&await (0,f.An)(f.n6,{subscriptions:c})})}async function m(a){try{await i()}catch{return{sent:0,pruned:0}}let b=await (0,f.JE)(f.n6,{subscriptions:[]});if(0===b.subscriptions.length)return{sent:0,pruned:0};let c=JSON.stringify(a),d=[],g=0;return await Promise.all(b.subscriptions.map(async a=>{try{await e().sendNotification(a,c),g++}catch(c){let b=c?.statusCode;if(404===b||410===b)d.push(a.endpoint);else{let d=a.endpoint;try{d=new URL(a.endpoint).host}catch{}console.error(`[push] send failed (${b??"?"}) to ${d}: ${c?.body||c?.message||"unknown"}`)}}})),d.length&&await (0,f.Ux)(f.n6,async()=>{let a=await (0,f.JE)(f.n6,{subscriptions:[]});await (0,f.An)(f.n6,{subscriptions:a.subscriptions.filter(a=>!d.includes(a.endpoint))})}),{sent:g,pruned:d.length}}},79830:(a,b,c)=>{c.d(b,{BN:()=>t,CS:()=>m,Pn:()=>n,Ru:()=>u,j8:()=>s});var d=c(7939),e=c(29021),f=c(4984),g=c(33873),h=c(38433),i=c(89812);let j=[d.Kk,d.yw,d.Xi,d.n2,d.Rk];function k(a,b){for(let c of j){let d=c(a,b);if((0,e.existsSync)(d))return d}return null}function l(a){if(!a)return a;let b=[...a];return b.length<=50?a:b.slice(0,50).join("")+"…"}async function m(a,b,c,f,i){if((0,e.existsSync)(a))return(0,d.Ux)(d.v4,async()=>{let e=await (0,d.JE)(d.v4,{sessions:[]});for(let a of e.sessions)a.status||(a.status=a.isLoading?"loading":"normal",delete a.isLoading);let j=e.sessions.findIndex(c=>c.cwd===a&&c.sessionId===b),k=j>=0?e.sessions[j]:void 0,m={cwd:a,sessionId:b,lastActive:Date.now(),status:c,title:l(f||k?.title),lastUserMessage:l(i||k?.lastUserMessage)};j>=0?e.sessions[j]=m:e.sessions.push(m),e.sessions.sort((a,b)=>b.lastActive-a.lastActive);let n=Date.now()-6048e5,o=Math.min(100,Math.max(15,e.sessions.filter(a=>a.lastActive>=n).length));e.sessions=e.sessions.slice(0,o),await (0,d.An)(d.v4,e),"unread"===c&&k?.status!=="unread"&&(async()=>{let c=await p(a,b).catch(()=>void 0)||m.lastUserMessage;await (0,h.SG)({title:(0,g.basename)(a)||"Cockpit",body:l(c)||m.title||"",data:{cwd:a,sessionId:b}})})().catch(()=>{})})}async function n(a,b){let c=k(a,b);if(c)return z(c);let f=(0,d.eg)(b);return f&&(0,e.existsSync)(f)&&await D(f)||"Untitled Session"}async function o(a,b){let c=k(a,b);if(c)return await A(c);let f=(0,d.eg)(b);return f&&(0,e.existsSync)(f)?await C(f):[]}async function p(a,b){let c=await o(a,b);return c[c.length-1]}let q=new Map;async function r(a,b){let c=function(a,b){let c=k(a,b);if(c)return{path:c,read:B};let f=(0,d.eg)(b);return f&&(0,e.existsSync)(f)?{path:f,read:async a=>({aiTitle:"",summary:"",messages:await C(a)})}:null}(a,b);if(!c)return{aiTitle:"",summary:"",messages:[]};let f="";try{var g;let a;g=c.path,a=(0,e.statSync)(g),f=`${a.mtimeMs}-${a.size}`;let b=q.get(c.path);if(b&&b.fingerprint===f)return q.delete(c.path),q.set(c.path,b),b.content}catch{}let h=await c.read(c.path);if(f&&(q.delete(c.path),q.set(c.path,{fingerprint:f,content:h}),q.size>40)){let a=q.keys().next().value;void 0!==a&&q.delete(a)}return h}async function s(a,b,c){let{aiTitle:d,summary:e,messages:f}=await r(a,b),g=(0,i.K)(d,e,f),h=f[f.length-1],j=c?.includeSearchText?[e,...f].join("\n").toLowerCase():"";return f.length<=10?{title:g,lastUserMessage:h,firstMessages:f.map(a=>l(a)),lastMessages:[],searchText:j}:{title:g,lastUserMessage:h,firstMessages:f.slice(0,5).map(a=>l(a)),lastMessages:f.slice(-5).map(a=>l(a)),searchText:j}}async function t(a){let b=new Map;return Promise.all(a.map(async a=>{let c=(await (a=>{let c=b.get(a);if(c)return c;let e=(0,d.JE)((0,d.Mx)(a),{}).then(a=>a.engines??{}).catch(()=>({}));return b.set(a,e),e})(a.cwd))[a.sessionId];return c?{...a,engine:c}:a}))}async function u(a=15){let b=await (0,d.JE)(d.v4,{sessions:[]});for(let a of b.sessions)a.status||(a.status=a.isLoading?"loading":"normal");b.sessions.sort((a,b)=>b.lastActive-a.lastActive);let c=b.sessions.slice(0,a);return t(await Promise.all(c.map(async a=>{if("loading"===a.status&&a.lastUserMessage)return a;try{let b=await s(a.cwd,a.sessionId);return{...a,title:"Untitled Session"!==b.title?b.title:a.title??b.title,lastUserMessage:b.lastUserMessage??a.lastUserMessage,firstMessages:b.firstMessages,lastMessages:b.lastMessages}}catch{return a}})))}function v(a){let b=a.replace(/<command-[^>]*>[\s\S]*?<\/command-[^>]*>/g,"");return(b=b.replace(/<local-command-[^>]*>[\s\S]*?<\/local-command-[^>]*>/g,"")).trim()}function w(a){return!(a.startsWith("This session is being continued")||a.startsWith("Caveat: The messages below"))&&!!a.trim()}let x=['"type":"user"','"type": "user"','"type":"summary"','"type": "summary"','"type":"ai-title"','"type": "ai-title"'];function y(a){for(let b of x)if(a.includes(b))return!0;return!1}async function z(a){try{let b=(0,e.createReadStream)(a),c=(0,f.createInterface)({input:b,crlfDelay:1/0}),d="",g="",h=[];for await(let a of c)if(a.trim()&&y(a))try{let b=JSON.parse(a);if("ai-title"===b.type&&b.aiTitle&&(d=b.aiTitle),"summary"===b.type&&b.summary&&(g=b.summary),"user"===b.type){let a=b.message;if(!a?.content)continue;if("string"==typeof a.content)h.push(a.content);else if(Array.isArray(a.content))for(let b of a.content)"text"===b.type&&b.text&&h.push(b.text)}}catch{}return(0,i.K)(d,g,h)}catch{return"Untitled Session"}}async function A(a){let b=[];try{let c=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:c,crlfDelay:1/0}))if(a.trim()&&y(a))try{let c=JSON.parse(a);if("user"!==c.type)continue;let d=c.message;if(!d?.content)continue;let e="";if("string"==typeof d.content)e=d.content;else if(Array.isArray(d.content)){for(let a of d.content)if("text"===a.type&&a.text){e=a.text;break}}if(!e)continue;let f=v(e);f&&w(f)&&b.push(f)}catch{}}catch{}return b}async function B(a){let b="",c="",d=[];try{let g=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:g,crlfDelay:1/0}))if(a.trim()&&y(a))try{let e=JSON.parse(a);if("ai-title"===e.type&&e.aiTitle){b=e.aiTitle;continue}if("summary"===e.type&&e.summary){c=e.summary;continue}if("user"!==e.type)continue;let f=e.message;if(!f?.content)continue;let g="";if("string"==typeof f.content)g=f.content;else if(Array.isArray(f.content)){for(let a of f.content)if("text"===a.type&&a.text){g=a.text;break}}if(!g)continue;let h=v(g);h&&w(h)&&d.push(h)}catch{}}catch{}return{aiTitle:b,summary:c,messages:d}}async function C(a){let b=[];try{let c=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:c,crlfDelay:1/0})){let c;if(!a.trim())continue;try{c=JSON.parse(a)}catch{continue}if("response_item"!==c.type)continue;let d=c.payload;if(!d||"message"!==d.type||"user"!==d.role)continue;let e=d.content?.filter(a=>"input_text"===a.type&&a.text).map(a=>a.text).join("")||"";if(!e||e.startsWith("<")||e.startsWith("#"))continue;let f=v(e);f&&w(f)&&b.push(f)}}catch{}return b}async function D(a){try{let b=(0,e.createReadStream)(a);for await(let a of(0,f.createInterface)({input:b,crlfDelay:1/0})){let b;if(!a.trim())continue;try{b=JSON.parse(a)}catch{continue}if("response_item"!==b.type)continue;let c=b.payload;if(!c||"message"!==c.type||"user"!==c.role)continue;let d=c.content?.filter(a=>"input_text"===a.type&&a.text).map(a=>a.text).join("")||"";if(!(!d||d.startsWith("<")||d.startsWith("#")))return d.slice(0,80)}return}catch{return}}},89812:(a,b,c)=>{c.d(b,{K:()=>d});function d(a,b,c){if(a)return a;if(b)return b;let d="";for(let a of c){let b=function(a){let b=a.match(/<command-args>([^<]*)<\/command-args>/);if(b&&b[1].trim())return b[1].trim();let c=a.match(/<command-name>([^<]*)<\/command-name>/);if(c&&c[1].trim())return c[1].trim();let d=a.replace(/<command-message>[^<]*<\/command-message>/g,"");return(d=(d=(d=(d=d.replace(/<command-name>[^<]*<\/command-name>/g,"")).replace(/<command-args>[^<]*<\/command-args>/g,"")).replace(/<local-command-stdout>[\s\S]*?<\/local-command-stdout>/g,"")).replace(/<local-command-caveat>[\s\S]*?<\/local-command-caveat>/g,"")).trim()}(a);if(b){if(b.startsWith("/")&&!d){d=b;continue}if(d)return`${d} ${b}`;return b}}return d||"Untitled Session"}}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/ZFNy0XuBWptMqEQGi7GTy/_buildManifest.js","static/ZFNy0XuBWptMqEQGi7GTy/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-ce60587570394496.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-d7cddff008311ab3.js","static/chunks/main-app-1eb2a3d94fb55bbf.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/4Jgc-wu2w_CC8iS5G1QZf/_buildManifest.js","static/4Jgc-wu2w_CC8iS5G1QZf/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-ce60587570394496.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-d7cddff008311ab3.js","static/chunks/main-app-1eb2a3d94fb55bbf.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html><html lang="en" class="overflow-hidden"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/5c0c2bcbaa4149ca-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/e33280be1b23649f.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/52b314bf20332f7c.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/2334aed02a409f57.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ce60587570394496.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-d7cddff008311ab3.js" async=""></script><script src="/_next/static/chunks/main-app-1eb2a3d94fb55bbf.js" async=""></script><script src="/_next/static/chunks/app/global-error-3c48d7d42c672863.js" async=""></script><script src="/_next/static/chunks/d3ac728e-ee038320ef1e4bdf.js" async=""></script><script src="/_next/static/chunks/96c8525a-f1e0653013503d49.js" async=""></script><script src="/_next/static/chunks/bc21e3dd-a78364524623b9b0.js" async=""></script><script src="/_next/static/chunks/70e0d97a-bbb0ec05083da54f.js" async=""></script><script src="/_next/static/chunks/54a60aa6-9f9f856e5049cd65.js" async=""></script><script src="/_next/static/chunks/1332-e26fddaef359ce51.js" async=""></script><script src="/_next/static/chunks/225-75b2e22f496b56a1.js" async=""></script><script src="/_next/static/chunks/9592-a657fb9eb995b64d.js" async=""></script><script src="/_next/static/chunks/6784-500e233d3e8f6b41.js" async=""></script><script src="/_next/static/chunks/1372-cc9afa045dc4eb5e.js" async=""></script><script src="/_next/static/chunks/2032-f224a93f7a22bc21.js" async=""></script><script src="/_next/static/chunks/7482-8478af06d5aa0972.js" async=""></script><script src="/_next/static/chunks/app/page-5e6dbc9731415743.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#f9f9fb" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#111113" media="(prefers-color-scheme: dark)"/><title>OpenCockpit</title><meta name="description" content="OpenCockpit is a local-first AI development hub with chat agents, a file explorer, terminals, and browser bubbles in one swipeable workspace. One seat. One AI."/><link rel="manifest" href="/manifest.webmanifest"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="Cockpit"/><meta name="apple-mobile-web-app-status-bar-style" content="default"/><link rel="icon" href="/favicon.ico?a49a3c8f7b751288" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/icons/icon-192x192.png"/><link rel="apple-touch-icon" href="/icons/icon-192x192.png"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script>// Runs before React hydrates (see app/layout.tsx <Script strategy="beforeInteractive">).
1
+ <!DOCTYPE html><html lang="en" class="overflow-hidden"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/5c0c2bcbaa4149ca-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bb3ef058b751a6ad-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/e33280be1b23649f.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/52b314bf20332f7c.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/83c134c954630942.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ce60587570394496.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-d7cddff008311ab3.js" async=""></script><script src="/_next/static/chunks/main-app-1eb2a3d94fb55bbf.js" async=""></script><script src="/_next/static/chunks/app/global-error-3c48d7d42c672863.js" async=""></script><script src="/_next/static/chunks/d3ac728e-ee038320ef1e4bdf.js" async=""></script><script src="/_next/static/chunks/96c8525a-f1e0653013503d49.js" async=""></script><script src="/_next/static/chunks/bc21e3dd-a78364524623b9b0.js" async=""></script><script src="/_next/static/chunks/70e0d97a-bbb0ec05083da54f.js" async=""></script><script src="/_next/static/chunks/54a60aa6-9f9f856e5049cd65.js" async=""></script><script src="/_next/static/chunks/1332-e26fddaef359ce51.js" async=""></script><script src="/_next/static/chunks/6160-958532439d324185.js" async=""></script><script src="/_next/static/chunks/4333-9e6709e96d3ec973.js" async=""></script><script src="/_next/static/chunks/6784-09dffdb0e8ca7fb3.js" async=""></script><script src="/_next/static/chunks/1372-d16d68b1b03a345a.js" async=""></script><script src="/_next/static/chunks/2032-f224a93f7a22bc21.js" async=""></script><script src="/_next/static/chunks/1157-164bcf046a0a9b15.js" async=""></script><script src="/_next/static/chunks/app/page-5de8b6584e328a6f.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#f9f9fb" media="(prefers-color-scheme: light)"/><meta name="theme-color" content="#111113" media="(prefers-color-scheme: dark)"/><title>OpenCockpit</title><meta name="description" content="OpenCockpit is a local-first AI development hub with chat agents, a file explorer, terminals, and browser bubbles in one swipeable workspace. One seat. One AI."/><link rel="manifest" href="/manifest.webmanifest"/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="Cockpit"/><meta name="apple-mobile-web-app-status-bar-style" content="default"/><link rel="icon" href="/favicon.ico?a49a3c8f7b751288" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/icons/icon-192x192.png"/><link rel="apple-touch-icon" href="/icons/icon-192x192.png"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script>// Runs before React hydrates (see app/layout.tsx <Script strategy="beforeInteractive">).
2
2
  // Three jobs:
3
3
  // 1. Redirect narrow viewports to the mobile route /m (before first paint).
4
4
  // 2. Apply the persisted theme class to <html> before first paint to avoid FOUC.
@@ -54,4 +54,4 @@
54
54
  });
55
55
  }
56
56
  })();
57
- </script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_c1a059 __variable_3c557b antialiased overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>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)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><div class="fixed top-4 left-1/2 -translate-x-1/2 z-[100] flex flex-col items-center gap-2"></div><script src="/_next/static/chunks/webpack-ce60587570394496.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n8:I[26719,[\"4219\",\"static/chunks/app/global-error-3c48d7d42c672863.js\"],\"default\"]\n:HL[\"/_next/static/media/5c0c2bcbaa4149ca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/bb3ef058b751a6ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/e33280be1b23649f.css\",\"style\"]\n:HL[\"/_next/static/css/52b314bf20332f7c.css\",\"style\"]\n:HL[\"/_next/static/css/2334aed02a409f57.css\",\"style\"]\n2:Ta46,// Runs before React hydrates (see app/layout.tsx \u003cScript strategy=\"beforeInteractive\"\u003e).\n// Three jobs:\n// 1. Redirect narrow viewports to the mobile route /m (before first paint).\n// 2. Apply the persisted theme class to \u003chtml\u003e before first paint to avoid FOUC.\n// 3. Unregister any leftover Service Workers from the PWA era (PWA has been removed).\n(function () {\n // Mobile redirect — runs first and bails out the rest on redirect.\n // Signal is VIEWPORT WIDTH (not User-Agent): it's what actually decides whether the\n // desktop 3-panel layout fits. Runs synchronously in \u003chead\u003e before the body paints,\n // so the desktop UI never flashes. Escape hatch: the /m \"use desktop\" action sets\n // `cockpit-force-desktop` in localStorage, which suppresses the redirect thereafter.\n try {\n var path = window.location.pathname;\n var onMobileRoute = path === '/m' || path.indexOf('/m/') === 0;\n var forceDesktop = false;\n try { forceDesktop = !!localStorage.getItem('cockpit-force-desktop'); } catch (_e) {}\n // Never redirect inside an iframe: the desktop shell embeds /project in a\n // frame that is 42px (sidebar) narrower than the window, so a tablet-width\n // top page (e.g. 768px iPad) would otherwise nest the mobile UI inside the\n // desktop shell — and drop the sessionId in the process. The media query is\n // only meaningful for the top-level viewport.\n var isTopWindow = true;\n try { isTopWindow = window.self === window.top; } catch (_e) {}\n if (\n isTopWindow \u0026\u0026\n !onMobileRoute \u0026\u0026\n !forceDesktop \u0026\u0026\n window.matchMedia \u0026\u0026\n window.matchMedia('(max-width: 767px)').matches\n ) {\n window.location.replace('/m' + window.location.search);\n return; // stop further boot work; the page is navigating away\n }\n } catch (_e) {}\n\n try {\n var theme = localStorage.getItem('theme') || 'dark';\n var resolved = theme;\n if (theme === 'system') {\n resolved = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n document.documentElement.classList.add(resolved);\n } catch (e) {}\n\n // Clean up legacy Service Workers from the old PWA era, but KEEP our\n // push-only SW (/push-sw.js) — it powers Web Push notifications and does no\n // caching, so it doesn't reintroduce the offline behavior we removed.\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.getRegistrations().then(function (regs) {\n regs.forEach(function (r) {\n var url = (r.active \u0026\u0026 r.active.scriptURL) || '';\n if (url.indexOf('/push-sw.js') === -1) r.unregister();\n });\n });\n }\n})();\n6:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/e33280be1b23649f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52b314bf20332f7c.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/2334aed02a409f57.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"className\":\"overflow-hidden\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$2\"}}]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_c1a059 __variable_3c557b antialiased overflow-hidden\",\"children\":\"$L3\"}]]}]]}],{\"children\":[\"$L4\",{\"children\":[\"$L5\",{},null,false,null]},null,false,\"$6\"]},null,false,null],\"$L7\",false]],\"m\":\"$undefined\",\"G\":[\"$8\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"ZFNy0XuBWptMqEQGi7GTy\"}\n9:I[29729,[\"7330\",\"static/chunks/d3ac728e-ee038320ef1e4bdf.js\",\"8216\",\"static/chunks/96c8525a-f1e0653013503d49.js\",\"4281\",\"static/chunks/bc21e3dd-a78364524623b9b0.js\",\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-9f9f856e5049cd65.js\",\"1332\",\"static/chunks/1332-e26fddaef359ce51.js\",\"225\",\"static/chunks/225-75b2e22f496b56a1.js\",\"9592\",\"static/chunks/9592-a657fb9eb995b64d.js\",\"6784\",\"static/chunks/6784-500e233d3e8f6b41.js\",\"1372\",\"static/chunks/1372-cc9afa045dc4eb5e.js\",\"2032\",\"static/chunks/2032-f224a93f7a22bc21.js\",\"7482\",\"static/chunks/7482-8478af06d5aa0972.js\",\"8974\",\"static/chunks/app/page-5e6dbc9731415743.js\"],\"Providers\"]\na:I[57121,[],\"\"]\nb:I[74581,[],\"\"]\nc:I[90484,[],\"OutletBoundary\"]\nd:\"$Sreact.suspense\"\nf:I[90484,[],\"ViewportBoundary\"]\n11:I[90484,[],\"MetadataBoundary\"]\n3:[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]\n4:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n5:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"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.\"}]}]]}]}]],null,[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$d\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@e\"}]}]]}]\n7:[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L11\",null,{\"children\":[\"$\",\"$d\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L12\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n6:C\n10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#f9f9fb\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#111113\",\"media\":\"(prefers-color-scheme: dark)\"}]]\n13:I[86869,[],\"IconMark\"]\ne:null\n12:[[\"$\",\"title\",\"0\",{\"children\":\"OpenCockpit\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"OpenCockpit is a local-first AI development hub with chat agents, a file explorer, terminals, and browser bubbles in one swipeable workspace. One seat. One AI.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Cockpit\"}],[\"$\",\"meta\",\"5\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"default\"}],[\"$\",\"link\",\"6\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?a49a3c8f7b751288\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"7\",{\"rel\":\"icon\",\"href\":\"/icons/icon-192x192.png\"}],[\"$\",\"link\",\"8\",{\"rel\":\"apple-touch-icon\",\"href\":\"/icons/icon-192x192.png\"}],[\"$\",\"$L13\",\"9\",{}]]\n"])</script></body></html>
57
+ </script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_c1a059 __variable_3c557b antialiased overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>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)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><div class="fixed top-4 left-1/2 -translate-x-1/2 z-[100] flex flex-col items-center gap-2"></div><script src="/_next/static/chunks/webpack-ce60587570394496.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n8:I[26719,[\"4219\",\"static/chunks/app/global-error-3c48d7d42c672863.js\"],\"default\"]\n:HL[\"/_next/static/media/5c0c2bcbaa4149ca-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/bb3ef058b751a6ad-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/e33280be1b23649f.css\",\"style\"]\n:HL[\"/_next/static/css/52b314bf20332f7c.css\",\"style\"]\n:HL[\"/_next/static/css/83c134c954630942.css\",\"style\"]\n2:Ta46,// Runs before React hydrates (see app/layout.tsx \u003cScript strategy=\"beforeInteractive\"\u003e).\n// Three jobs:\n// 1. Redirect narrow viewports to the mobile route /m (before first paint).\n// 2. Apply the persisted theme class to \u003chtml\u003e before first paint to avoid FOUC.\n// 3. Unregister any leftover Service Workers from the PWA era (PWA has been removed).\n(function () {\n // Mobile redirect — runs first and bails out the rest on redirect.\n // Signal is VIEWPORT WIDTH (not User-Agent): it's what actually decides whether the\n // desktop 3-panel layout fits. Runs synchronously in \u003chead\u003e before the body paints,\n // so the desktop UI never flashes. Escape hatch: the /m \"use desktop\" action sets\n // `cockpit-force-desktop` in localStorage, which suppresses the redirect thereafter.\n try {\n var path = window.location.pathname;\n var onMobileRoute = path === '/m' || path.indexOf('/m/') === 0;\n var forceDesktop = false;\n try { forceDesktop = !!localStorage.getItem('cockpit-force-desktop'); } catch (_e) {}\n // Never redirect inside an iframe: the desktop shell embeds /project in a\n // frame that is 42px (sidebar) narrower than the window, so a tablet-width\n // top page (e.g. 768px iPad) would otherwise nest the mobile UI inside the\n // desktop shell — and drop the sessionId in the process. The media query is\n // only meaningful for the top-level viewport.\n var isTopWindow = true;\n try { isTopWindow = window.self === window.top; } catch (_e) {}\n if (\n isTopWindow \u0026\u0026\n !onMobileRoute \u0026\u0026\n !forceDesktop \u0026\u0026\n window.matchMedia \u0026\u0026\n window.matchMedia('(max-width: 767px)').matches\n ) {\n window.location.replace('/m' + window.location.search);\n return; // stop further boot work; the page is navigating away\n }\n } catch (_e) {}\n\n try {\n var theme = localStorage.getItem('theme') || 'dark';\n var resolved = theme;\n if (theme === 'system') {\n resolved = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n document.documentElement.classList.add(resolved);\n } catch (e) {}\n\n // Clean up legacy Service Workers from the old PWA era, but KEEP our\n // push-only SW (/push-sw.js) — it powers Web Push notifications and does no\n // caching, so it doesn't reintroduce the offline behavior we removed.\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.getRegistrations().then(function (regs) {\n regs.forEach(function (r) {\n var url = (r.active \u0026\u0026 r.active.scriptURL) || '';\n if (url.indexOf('/push-sw.js') === -1) r.unregister();\n });\n });\n }\n})();\n6:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/e33280be1b23649f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52b314bf20332f7c.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/83c134c954630942.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"className\":\"overflow-hidden\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$2\"}}]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_c1a059 __variable_3c557b antialiased overflow-hidden\",\"children\":\"$L3\"}]]}]]}],{\"children\":[\"$L4\",{\"children\":[\"$L5\",{},null,false,null]},null,false,\"$6\"]},null,false,null],\"$L7\",false]],\"m\":\"$undefined\",\"G\":[\"$8\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"4Jgc-wu2w_CC8iS5G1QZf\"}\n9:I[29729,[\"7330\",\"static/chunks/d3ac728e-ee038320ef1e4bdf.js\",\"8216\",\"static/chunks/96c8525a-f1e0653013503d49.js\",\"4281\",\"static/chunks/bc21e3dd-a78364524623b9b0.js\",\"5004\",\"static/chunks/70e0d97a-bbb0ec05083da54f.js\",\"277\",\"static/chunks/54a60aa6-9f9f856e5049cd65.js\",\"1332\",\"static/chunks/1332-e26fddaef359ce51.js\",\"6160\",\"static/chunks/6160-958532439d324185.js\",\"4333\",\"static/chunks/4333-9e6709e96d3ec973.js\",\"6784\",\"static/chunks/6784-09dffdb0e8ca7fb3.js\",\"1372\",\"static/chunks/1372-d16d68b1b03a345a.js\",\"2032\",\"static/chunks/2032-f224a93f7a22bc21.js\",\"1157\",\"static/chunks/1157-164bcf046a0a9b15.js\",\"8974\",\"static/chunks/app/page-5de8b6584e328a6f.js\"],\"Providers\"]\na:I[57121,[],\"\"]\nb:I[74581,[],\"\"]\nc:I[90484,[],\"OutletBoundary\"]\nd:\"$Sreact.suspense\"\nf:I[90484,[],\"ViewportBoundary\"]\n11:I[90484,[],\"MetadataBoundary\"]\n3:[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]\n4:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$La\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lb\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n5:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"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.\"}]}]]}]}]],null,[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$d\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@e\"}]}]]}]\n7:[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L11\",null,{\"children\":[\"$\",\"$d\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L12\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n6:C\n10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#f9f9fb\",\"media\":\"(prefers-color-scheme: light)\"}],[\"$\",\"meta\",\"3\",{\"name\":\"theme-color\",\"content\":\"#111113\",\"media\":\"(prefers-color-scheme: dark)\"}]]\n13:I[86869,[],\"IconMark\"]\ne:null\n12:[[\"$\",\"title\",\"0\",{\"children\":\"OpenCockpit\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"OpenCockpit is a local-first AI development hub with chat agents, a file explorer, terminals, and browser bubbles in one swipeable workspace. One seat. One AI.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"Cockpit\"}],[\"$\",\"meta\",\"5\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"default\"}],[\"$\",\"link\",\"6\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?a49a3c8f7b751288\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"7\",{\"rel\":\"icon\",\"href\":\"/icons/icon-192x192.png\"}],[\"$\",\"link\",\"8\",{\"rel\":\"apple-touch-icon\",\"href\":\"/icons/icon-192x192.png\"}],[\"$\",\"$L13\",\"9\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ce60587570394496.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-d7cddff008311ab3.js" async=""></script><script src="/_next/static/chunks/main-app-1eb2a3d94fb55bbf.js" async=""></script><script src="/_next/static/chunks/app/global-error-3c48d7d42c672863.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-ce60587570394496.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[26719,[\"4219\",\"static/chunks/app/global-error-3c48d7d42c672863.js\"],\"default\"]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"ZFNy0XuBWptMqEQGi7GTy\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\nb:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ce60587570394496.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-d7cddff008311ab3.js" async=""></script><script src="/_next/static/chunks/main-app-1eb2a3d94fb55bbf.js" async=""></script><script src="/_next/static/chunks/app/global-error-3c48d7d42c672863.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-ce60587570394496.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[26719,[\"4219\",\"static/chunks/app/global-error-3c48d7d42c672863.js\"],\"default\"]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"4Jgc-wu2w_CC8iS5G1QZf\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\nb:[]\n"])</script></body></html>
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"b2Zpoab/jYZxiddbsKLNwOXrVR5+sG+1uDfRQiK18Ao="}
1
+ {"node":{},"edge":{},"encryptionKey":"D+XRPrMLpenST2NGNHI83kOtGCHq1JCPgEp84Jm1HaM="}