@surething/cockpit 1.0.275 → 1.0.276

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 (711) hide show
  1. package/.next-prod/BUILD_ID +1 -1
  2. package/.next-prod/app-path-routes-manifest.json +3 -1
  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/routes-manifest.json +14 -0
  7. package/.next-prod/server/app/_global-error/page.js +2 -2
  8. package/.next-prod/server/app/_global-error/page.js.nft.json +1 -1
  9. package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next-prod/server/app/_global-error.html +1 -1
  11. package/.next-prod/server/app/_global-error.rsc +1 -1
  12. package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  14. package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next-prod/server/app/_not-found/page.js +1 -1
  16. package/.next-prod/server/app/_not-found/page.js.nft.json +1 -1
  17. package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next-prod/server/app/_not-found.html +2 -2
  19. package/.next-prod/server/app/_not-found.rsc +3 -3
  20. package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +3 -3
  21. package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +3 -3
  22. package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  23. package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  24. package/.next-prod/server/app/api/agent/test/route.js +1 -1
  25. package/.next-prod/server/app/api/agent/test/route.js.nft.json +1 -1
  26. package/.next-prod/server/app/api/bash/route.js +1 -1
  27. package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
  28. package/.next-prod/server/app/api/bots/[id]/route.js +1 -0
  29. package/.next-prod/server/app/api/bots/[id]/route.js.nft.json +1 -0
  30. package/.next-prod/server/app/api/bots/[id]/route_client-reference-manifest.js +1 -0
  31. package/.next-prod/server/app/api/bots/route.js +1 -0
  32. package/.next-prod/server/app/api/bots/route.js.nft.json +1 -0
  33. package/.next-prod/server/app/api/bots/route_client-reference-manifest.js +1 -0
  34. package/.next-prod/server/app/api/chat/codex/route.js +1 -1
  35. package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
  36. package/.next-prod/server/app/api/chat/deepseek/route.js +1 -1
  37. package/.next-prod/server/app/api/chat/deepseek/route.js.nft.json +1 -1
  38. package/.next-prod/server/app/api/chat/glm/route.js +1 -1
  39. package/.next-prod/server/app/api/chat/glm/route.js.nft.json +1 -1
  40. package/.next-prod/server/app/api/chat/kimi/route.js +1 -1
  41. package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
  42. package/.next-prod/server/app/api/chat/ollama/route.js +1 -1
  43. package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
  44. package/.next-prod/server/app/api/chat/route.js +1 -1
  45. package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
  46. package/.next-prod/server/app/api/chat/stop/route.js +1 -1
  47. package/.next-prod/server/app/api/chat/stop/route.js.nft.json +1 -1
  48. package/.next-prod/server/app/api/claude-stats/route.js +1 -1
  49. package/.next-prod/server/app/api/claude-stats/route.js.nft.json +1 -1
  50. package/.next-prod/server/app/api/commands/route.js +1 -1
  51. package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
  52. package/.next-prod/server/app/api/comments/route.js +1 -1
  53. package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
  54. package/.next-prod/server/app/api/db/columns/route.js +2 -2
  55. package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
  56. package/.next-prod/server/app/api/db/connect/route.js +1 -1
  57. package/.next-prod/server/app/api/db/connect/route.js.nft.json +1 -1
  58. package/.next-prod/server/app/api/db/disconnect/route.js +1 -1
  59. package/.next-prod/server/app/api/db/disconnect/route.js.nft.json +1 -1
  60. package/.next-prod/server/app/api/db/export/route.js +1 -1
  61. package/.next-prod/server/app/api/db/export/route.js.nft.json +1 -1
  62. package/.next-prod/server/app/api/db/query/route.js +1 -1
  63. package/.next-prod/server/app/api/db/query/route.js.nft.json +1 -1
  64. package/.next-prod/server/app/api/db/schemas/route.js +1 -1
  65. package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
  66. package/.next-prod/server/app/api/deepseek/balance/route.js +1 -1
  67. package/.next-prod/server/app/api/deepseek/balance/route.js.nft.json +1 -1
  68. package/.next-prod/server/app/api/deepseek/credentials/route.js +1 -1
  69. package/.next-prod/server/app/api/deepseek/credentials/route.js.nft.json +1 -1
  70. package/.next-prod/server/app/api/deepseek/models/route.js +1 -1
  71. package/.next-prod/server/app/api/deepseek/models/route.js.nft.json +1 -1
  72. package/.next-prod/server/app/api/dev/spans/route.js +1 -1
  73. package/.next-prod/server/app/api/dev/spans/route.js.nft.json +1 -1
  74. package/.next-prod/server/app/api/extension/version/route.js +1 -1
  75. package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
  76. package/.next-prod/server/app/api/file/route.js +1 -1
  77. package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
  78. package/.next-prod/server/app/api/files/blame/route.js +1 -1
  79. package/.next-prod/server/app/api/files/blame/route.js.nft.json +1 -1
  80. package/.next-prod/server/app/api/files/clipboard/route.js +1 -1
  81. package/.next-prod/server/app/api/files/clipboard/route.js.nft.json +1 -1
  82. package/.next-prod/server/app/api/files/copy/route.js +1 -1
  83. package/.next-prod/server/app/api/files/copy/route.js.nft.json +1 -1
  84. package/.next-prod/server/app/api/files/delete/route.js +1 -1
  85. package/.next-prod/server/app/api/files/delete/route.js.nft.json +1 -1
  86. package/.next-prod/server/app/api/files/expanded/route.js +1 -1
  87. package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
  88. package/.next-prod/server/app/api/files/index/route.js +1 -1
  89. package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
  90. package/.next-prod/server/app/api/files/init/route.js +1 -1
  91. package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
  92. package/.next-prod/server/app/api/files/paste/route.js +1 -1
  93. package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
  94. package/.next-prod/server/app/api/files/read/route.js +1 -1
  95. package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
  96. package/.next-prod/server/app/api/files/readdir/route.js +1 -1
  97. package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
  98. package/.next-prod/server/app/api/files/recent/route.js +1 -1
  99. package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
  100. package/.next-prod/server/app/api/files/save/route.js +1 -1
  101. package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
  102. package/.next-prod/server/app/api/files/search/route.js +1 -1
  103. package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
  104. package/.next-prod/server/app/api/files/stat/route.js +1 -1
  105. package/.next-prod/server/app/api/files/stat/route.js.nft.json +1 -1
  106. package/.next-prod/server/app/api/files/text/route.js +1 -1
  107. package/.next-prod/server/app/api/files/text/route.js.nft.json +1 -1
  108. package/.next-prod/server/app/api/git/blob/route.js +1 -1
  109. package/.next-prod/server/app/api/git/blob/route.js.nft.json +1 -1
  110. package/.next-prod/server/app/api/git/branch-diff/route.js +1 -1
  111. package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
  112. package/.next-prod/server/app/api/git/branches/route.js +1 -1
  113. package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
  114. package/.next-prod/server/app/api/git/commit-diff/route.js +1 -1
  115. package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
  116. package/.next-prod/server/app/api/git/commits/route.js +1 -1
  117. package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
  118. package/.next-prod/server/app/api/git/current-branch/route.js +1 -1
  119. package/.next-prod/server/app/api/git/current-branch/route.js.nft.json +1 -1
  120. package/.next-prod/server/app/api/git/diff/route.js +1 -1
  121. package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
  122. package/.next-prod/server/app/api/git/discard/route.js +1 -1
  123. package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
  124. package/.next-prod/server/app/api/git/stage/route.js +1 -1
  125. package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
  126. package/.next-prod/server/app/api/git/status/route.js +1 -1
  127. package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
  128. package/.next-prod/server/app/api/git/unstage/route.js +1 -1
  129. package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
  130. package/.next-prod/server/app/api/git/worktree/route.js +1 -1
  131. package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
  132. package/.next-prod/server/app/api/glm/credentials/route.js +1 -1
  133. package/.next-prod/server/app/api/glm/credentials/route.js.nft.json +1 -1
  134. package/.next-prod/server/app/api/glm/models/route.js +1 -1
  135. package/.next-prod/server/app/api/glm/models/route.js.nft.json +1 -1
  136. package/.next-prod/server/app/api/glm/usage/route.js +1 -1
  137. package/.next-prod/server/app/api/glm/usage/route.js.nft.json +1 -1
  138. package/.next-prod/server/app/api/global-state/route.js +2 -2
  139. package/.next-prod/server/app/api/global-state/route.js.nft.json +1 -1
  140. package/.next-prod/server/app/api/health/route.js +1 -1
  141. package/.next-prod/server/app/api/health/route.js.nft.json +1 -1
  142. package/.next-prod/server/app/api/html-apps/[id]/route.js +1 -1
  143. package/.next-prod/server/app/api/html-apps/[id]/route.js.nft.json +1 -1
  144. package/.next-prod/server/app/api/html-apps/route.js +1 -1
  145. package/.next-prod/server/app/api/html-apps/route.js.nft.json +1 -1
  146. package/.next-prod/server/app/api/instructions/config/route.js +1 -1
  147. package/.next-prod/server/app/api/instructions/config/route.js.nft.json +1 -1
  148. package/.next-prod/server/app/api/kimi/credentials/route.js +1 -1
  149. package/.next-prod/server/app/api/kimi/credentials/route.js.nft.json +1 -1
  150. package/.next-prod/server/app/api/kimi/models/route.js +1 -1
  151. package/.next-prod/server/app/api/kimi/models/route.js.nft.json +1 -1
  152. package/.next-prod/server/app/api/kimi/usage/route.js +1 -1
  153. package/.next-prod/server/app/api/kimi/usage/route.js.nft.json +1 -1
  154. package/.next-prod/server/app/api/lsp/definition/route.js +1 -1
  155. package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
  156. package/.next-prod/server/app/api/lsp/hover/route.js +1 -1
  157. package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
  158. package/.next-prod/server/app/api/lsp/references/route.js +1 -1
  159. package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
  160. package/.next-prod/server/app/api/lsp/status/route.js +1 -1
  161. package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
  162. package/.next-prod/server/app/api/lsp/warmup/route.js +1 -1
  163. package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
  164. package/.next-prod/server/app/api/mysql/columns/route.js +1 -1
  165. package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
  166. package/.next-prod/server/app/api/mysql/connect/route.js +1 -1
  167. package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
  168. package/.next-prod/server/app/api/mysql/disconnect/route.js +1 -1
  169. package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
  170. package/.next-prod/server/app/api/mysql/export/route.js +1 -1
  171. package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
  172. package/.next-prod/server/app/api/mysql/query/route.js +1 -1
  173. package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
  174. package/.next-prod/server/app/api/mysql/schemas/route.js +1 -1
  175. package/.next-prod/server/app/api/mysql/schemas/route.js.nft.json +1 -1
  176. package/.next-prod/server/app/api/neo4j/connect/route.js +1 -1
  177. package/.next-prod/server/app/api/neo4j/connect/route.js.nft.json +1 -1
  178. package/.next-prod/server/app/api/neo4j/disconnect/route.js +1 -1
  179. package/.next-prod/server/app/api/neo4j/disconnect/route.js.nft.json +1 -1
  180. package/.next-prod/server/app/api/neo4j/query/route.js +1 -1
  181. package/.next-prod/server/app/api/neo4j/query/route.js.nft.json +1 -1
  182. package/.next-prod/server/app/api/neo4j/schema/route.js +1 -1
  183. package/.next-prod/server/app/api/neo4j/schema/route.js.nft.json +1 -1
  184. package/.next-prod/server/app/api/note/route.js +1 -1
  185. package/.next-prod/server/app/api/note/route.js.nft.json +1 -1
  186. package/.next-prod/server/app/api/ollama/config/route.js +1 -1
  187. package/.next-prod/server/app/api/ollama/config/route.js.nft.json +1 -1
  188. package/.next-prod/server/app/api/ollama/models/route.js +1 -1
  189. package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
  190. package/.next-prod/server/app/api/ollama/start/route.js +1 -1
  191. package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
  192. package/.next-prod/server/app/api/open-cursor/route.js +1 -1
  193. package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
  194. package/.next-prod/server/app/api/open-vscode/route.js +1 -1
  195. package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
  196. package/.next-prod/server/app/api/pick-folder/route.js +1 -1
  197. package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
  198. package/.next-prod/server/app/api/pinned-sessions/route.js +1 -1
  199. package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
  200. package/.next-prod/server/app/api/project-settings/route.js +1 -1
  201. package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
  202. package/.next-prod/server/app/api/project-state/route.js +2 -2
  203. package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
  204. package/.next-prod/server/app/api/projectGraph/affected/route.js +1 -1
  205. package/.next-prod/server/app/api/projectGraph/affected/route.js.nft.json +1 -1
  206. package/.next-prod/server/app/api/projectGraph/callees/route.js +1 -1
  207. package/.next-prod/server/app/api/projectGraph/callees/route.js.nft.json +1 -1
  208. package/.next-prod/server/app/api/projectGraph/callers/route.js +1 -1
  209. package/.next-prod/server/app/api/projectGraph/callers/route.js.nft.json +1 -1
  210. package/.next-prod/server/app/api/projectGraph/coedit/route.js +1 -1
  211. package/.next-prod/server/app/api/projectGraph/coedit/route.js.nft.json +1 -1
  212. package/.next-prod/server/app/api/projectGraph/context/route.js +1 -1
  213. package/.next-prod/server/app/api/projectGraph/context/route.js.nft.json +1 -1
  214. package/.next-prod/server/app/api/projectGraph/file/route.js +1 -1
  215. package/.next-prod/server/app/api/projectGraph/file/route.js.nft.json +1 -1
  216. package/.next-prod/server/app/api/projectGraph/file-functions/route.js +1 -1
  217. package/.next-prod/server/app/api/projectGraph/file-functions/route.js.nft.json +1 -1
  218. package/.next-prod/server/app/api/projectGraph/impact/route.js +1 -1
  219. package/.next-prod/server/app/api/projectGraph/impact/route.js.nft.json +1 -1
  220. package/.next-prod/server/app/api/projectGraph/related/route.js +1 -1
  221. package/.next-prod/server/app/api/projectGraph/related/route.js.nft.json +1 -1
  222. package/.next-prod/server/app/api/projectGraph/risk/route.js +1 -1
  223. package/.next-prod/server/app/api/projectGraph/risk/route.js.nft.json +1 -1
  224. package/.next-prod/server/app/api/projectGraph/search/route.js +1 -1
  225. package/.next-prod/server/app/api/projectGraph/search/route.js.nft.json +1 -1
  226. package/.next-prod/server/app/api/projects/route.js +1 -1
  227. package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
  228. package/.next-prod/server/app/api/push/public-key/route.js +1 -1
  229. package/.next-prod/server/app/api/push/public-key/route.js.nft.json +1 -1
  230. package/.next-prod/server/app/api/push/subscribe/route.js +1 -1
  231. package/.next-prod/server/app/api/push/subscribe/route.js.nft.json +1 -1
  232. package/.next-prod/server/app/api/push/unsubscribe/route.js +1 -1
  233. package/.next-prod/server/app/api/push/unsubscribe/route.js.nft.json +1 -1
  234. package/.next-prod/server/app/api/redis/command/route.js +1 -1
  235. package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
  236. package/.next-prod/server/app/api/redis/connect/route.js +1 -1
  237. package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
  238. package/.next-prod/server/app/api/redis/delete/route.js +1 -1
  239. package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
  240. package/.next-prod/server/app/api/redis/disconnect/route.js +1 -1
  241. package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
  242. package/.next-prod/server/app/api/redis/get/route.js +1 -1
  243. package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
  244. package/.next-prod/server/app/api/redis/keys/route.js +1 -1
  245. package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
  246. package/.next-prod/server/app/api/redis/set/route.js +1 -1
  247. package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
  248. package/.next-prod/server/app/api/restart/route.js +1 -1
  249. package/.next-prod/server/app/api/restart/route.js.nft.json +1 -1
  250. package/.next-prod/server/app/api/review/[id]/comments/route.js +1 -1
  251. package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
  252. package/.next-prod/server/app/api/review/[id]/replies/route.js +1 -1
  253. package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
  254. package/.next-prod/server/app/api/review/[id]/route.js +1 -1
  255. package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
  256. package/.next-prod/server/app/api/review/identify/route.js +1 -1
  257. package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
  258. package/.next-prod/server/app/api/review/order/route.js +1 -1
  259. package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
  260. package/.next-prod/server/app/api/review/route.js +1 -1
  261. package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
  262. package/.next-prod/server/app/api/review/share-info/route.js +1 -1
  263. package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
  264. package/.next-prod/server/app/api/review/users/route.js +1 -1
  265. package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
  266. package/.next-prod/server/app/api/scheduled-tasks/route.js +2 -2
  267. package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
  268. package/.next-prod/server/app/api/services/config/route.js +1 -1
  269. package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
  270. package/.next-prod/server/app/api/services/scripts/route.js +1 -1
  271. package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
  272. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js +1 -1
  273. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
  274. package/.next-prod/server/app/api/session/[sessionId]/history/route.js +1 -1
  275. package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
  276. package/.next-prod/server/app/api/session/[sessionId]/turn/route.js +2 -2
  277. package/.next-prod/server/app/api/session/[sessionId]/turn/route.js.nft.json +1 -1
  278. package/.next-prod/server/app/api/session/user-messages/route.js +1 -1
  279. package/.next-prod/server/app/api/session/user-messages/route.js.nft.json +1 -1
  280. package/.next-prod/server/app/api/session-by-path/route.js +1 -1
  281. package/.next-prod/server/app/api/session-by-path/route.js.nft.json +1 -1
  282. package/.next-prod/server/app/api/sessions/delegate/route.js +1 -1
  283. package/.next-prod/server/app/api/sessions/delegate/route.js.nft.json +1 -1
  284. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js +1 -1
  285. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js.nft.json +1 -1
  286. package/.next-prod/server/app/api/sessions/projects/route.js +1 -1
  287. package/.next-prod/server/app/api/sessions/projects/route.js.nft.json +1 -1
  288. package/.next-prod/server/app/api/sessions/route.js +1 -1
  289. package/.next-prod/server/app/api/sessions/route.js.nft.json +1 -1
  290. package/.next-prod/server/app/api/sessions/search/route.js +1 -1
  291. package/.next-prod/server/app/api/sessions/search/route.js.nft.json +1 -1
  292. package/.next-prod/server/app/api/sessions/status/route.js +1 -1
  293. package/.next-prod/server/app/api/sessions/status/route.js.nft.json +1 -1
  294. package/.next-prod/server/app/api/settings/route.js +1 -1
  295. package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
  296. package/.next-prod/server/app/api/shutdown/route.js +1 -1
  297. package/.next-prod/server/app/api/shutdown/route.js.nft.json +1 -1
  298. package/.next-prod/server/app/api/skills/[id]/route.js +1 -1
  299. package/.next-prod/server/app/api/skills/[id]/route.js.nft.json +1 -1
  300. package/.next-prod/server/app/api/skills/content/route.js +1 -1
  301. package/.next-prod/server/app/api/skills/content/route.js.nft.json +1 -1
  302. package/.next-prod/server/app/api/skills/route.js +1 -1
  303. package/.next-prod/server/app/api/skills/route.js.nft.json +1 -1
  304. package/.next-prod/server/app/api/snapshots/blob/route.js +1 -1
  305. package/.next-prod/server/app/api/snapshots/blob/route.js.nft.json +1 -1
  306. package/.next-prod/server/app/api/snapshots/diff/route.js +1 -1
  307. package/.next-prod/server/app/api/snapshots/diff/route.js.nft.json +1 -1
  308. package/.next-prod/server/app/api/snapshots/route.js +1 -1
  309. package/.next-prod/server/app/api/snapshots/route.js.nft.json +1 -1
  310. package/.next-prod/server/app/api/terminal/aliases/route.js +1 -1
  311. package/.next-prod/server/app/api/terminal/aliases/route.js.nft.json +1 -1
  312. package/.next-prod/server/app/api/terminal/autocomplete/route.js +1 -1
  313. package/.next-prod/server/app/api/terminal/autocomplete/route.js.nft.json +1 -1
  314. package/.next-prod/server/app/api/terminal/bubble-order/route.js +1 -1
  315. package/.next-prod/server/app/api/terminal/bubble-order/route.js.nft.json +1 -1
  316. package/.next-prod/server/app/api/terminal/env/route.js +1 -1
  317. package/.next-prod/server/app/api/terminal/env/route.js.nft.json +1 -1
  318. package/.next-prod/server/app/api/terminal/history/route.js +1 -1
  319. package/.next-prod/server/app/api/terminal/history/route.js.nft.json +1 -1
  320. package/.next-prod/server/app/api/update/route.js +1 -1
  321. package/.next-prod/server/app/api/update/route.js.nft.json +1 -1
  322. package/.next-prod/server/app/api/update-state/route.js +1 -1
  323. package/.next-prod/server/app/api/update-state/route.js.nft.json +1 -1
  324. package/.next-prod/server/app/api/version/route.js +1 -1
  325. package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
  326. package/.next-prod/server/app/apps/[...path]/route.js +1 -1
  327. package/.next-prod/server/app/apps/[...path]/route.js.nft.json +1 -1
  328. package/.next-prod/server/app/favicon.ico/route.js +1 -1
  329. package/.next-prod/server/app/favicon.ico/route.js.nft.json +1 -1
  330. package/.next-prod/server/app/m/page.js +1 -1
  331. package/.next-prod/server/app/m/page.js.nft.json +1 -1
  332. package/.next-prod/server/app/m/page_client-reference-manifest.js +1 -1
  333. package/.next-prod/server/app/manifest.webmanifest/route.js +2 -2
  334. package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  335. package/.next-prod/server/app/page.js +1 -1
  336. package/.next-prod/server/app/page.js.nft.json +1 -1
  337. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  338. package/.next-prod/server/app/project/page.js +1 -1
  339. package/.next-prod/server/app/project/page.js.nft.json +1 -1
  340. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  341. package/.next-prod/server/app/review/[id]/page.js +1 -1
  342. package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
  343. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  344. package/.next-prod/server/app-paths-manifest.json +3 -1
  345. package/.next-prod/server/chunks/2493.js +13 -9
  346. package/.next-prod/server/chunks/{7956.js → 3354.js} +2 -2
  347. package/.next-prod/server/chunks/6495.js +1 -1
  348. package/.next-prod/server/chunks/6548.js +1 -1
  349. package/.next-prod/server/chunks/7438.js +764 -0
  350. package/.next-prod/server/chunks/{1653.js → 8022.js} +2 -2
  351. package/.next-prod/server/middleware-build-manifest.js +1 -1
  352. package/.next-prod/server/pages/404.html +2 -2
  353. package/.next-prod/server/pages/500.html +1 -1
  354. package/.next-prod/server/server-reference-manifest.json +1 -1
  355. package/.next-prod/static/O8neHUIr3dQhe1jcOUsQ8/_buildManifest.js +1 -0
  356. package/.next-prod/static/chunks/{103-1f50be74a00f89af.js → 50015-b81552adf20a6a33.js} +2 -2
  357. package/.next-prod/static/chunks/72539-049ac78fc767d177.js +17 -0
  358. package/.next-prod/static/chunks/89656-d9dd3a8559041236.js +34 -0
  359. package/.next-prod/static/chunks/99092-5b836813f4b1d4b3.js +716 -0
  360. package/.next-prod/static/chunks/app/_global-error/{page-b56c0b18a3b4d026.js → page-e2f146f38bb4df42.js} +1 -1
  361. package/.next-prod/static/chunks/app/api/agent/test/{route-b56c0b18a3b4d026.js → route-e2f146f38bb4df42.js} +1 -1
  362. package/.next-prod/static/chunks/app/api/bash/{route-b56c0b18a3b4d026.js → route-e2f146f38bb4df42.js} +1 -1
  363. package/.next-prod/static/chunks/app/api/{chat/codex/route-b56c0b18a3b4d026.js → bots/[id]/route-e2f146f38bb4df42.js} +1 -1
  364. package/.next-prod/static/chunks/app/api/bots/route-e2f146f38bb4df42.js +1 -0
  365. package/.next-prod/static/chunks/app/api/chat/codex/route-e2f146f38bb4df42.js +1 -0
  366. package/.next-prod/static/chunks/app/api/chat/deepseek/route-e2f146f38bb4df42.js +1 -0
  367. package/.next-prod/static/chunks/app/api/chat/glm/route-e2f146f38bb4df42.js +1 -0
  368. package/.next-prod/static/chunks/app/api/chat/kimi/route-e2f146f38bb4df42.js +1 -0
  369. package/.next-prod/static/chunks/app/api/chat/ollama/route-e2f146f38bb4df42.js +1 -0
  370. package/.next-prod/static/chunks/app/api/chat/route-e2f146f38bb4df42.js +1 -0
  371. package/.next-prod/static/chunks/app/api/chat/stop/route-e2f146f38bb4df42.js +1 -0
  372. package/.next-prod/static/chunks/app/api/claude-stats/route-e2f146f38bb4df42.js +1 -0
  373. package/.next-prod/static/chunks/app/api/commands/route-e2f146f38bb4df42.js +1 -0
  374. package/.next-prod/static/chunks/app/api/comments/route-e2f146f38bb4df42.js +1 -0
  375. package/.next-prod/static/chunks/app/api/db/columns/route-e2f146f38bb4df42.js +1 -0
  376. package/.next-prod/static/chunks/app/api/db/connect/route-e2f146f38bb4df42.js +1 -0
  377. package/.next-prod/static/chunks/app/api/db/disconnect/route-e2f146f38bb4df42.js +1 -0
  378. package/.next-prod/static/chunks/app/api/db/export/route-e2f146f38bb4df42.js +1 -0
  379. package/.next-prod/static/chunks/app/api/db/query/route-e2f146f38bb4df42.js +1 -0
  380. package/.next-prod/static/chunks/app/api/db/schemas/route-e2f146f38bb4df42.js +1 -0
  381. package/.next-prod/static/chunks/app/api/deepseek/balance/route-e2f146f38bb4df42.js +1 -0
  382. package/.next-prod/static/chunks/app/api/deepseek/credentials/route-e2f146f38bb4df42.js +1 -0
  383. package/.next-prod/static/chunks/app/api/deepseek/models/route-e2f146f38bb4df42.js +1 -0
  384. package/.next-prod/static/chunks/app/api/dev/spans/route-e2f146f38bb4df42.js +1 -0
  385. package/.next-prod/static/chunks/app/api/extension/version/route-e2f146f38bb4df42.js +1 -0
  386. package/.next-prod/static/chunks/app/api/file/route-e2f146f38bb4df42.js +1 -0
  387. package/.next-prod/static/chunks/app/api/files/blame/route-e2f146f38bb4df42.js +1 -0
  388. package/.next-prod/static/chunks/app/api/files/clipboard/route-e2f146f38bb4df42.js +1 -0
  389. package/.next-prod/static/chunks/app/api/files/copy/route-e2f146f38bb4df42.js +1 -0
  390. package/.next-prod/static/chunks/app/api/files/delete/route-e2f146f38bb4df42.js +1 -0
  391. package/.next-prod/static/chunks/app/api/files/expanded/route-e2f146f38bb4df42.js +1 -0
  392. package/.next-prod/static/chunks/app/api/files/index/route-e2f146f38bb4df42.js +1 -0
  393. package/.next-prod/static/chunks/app/api/files/init/route-e2f146f38bb4df42.js +1 -0
  394. package/.next-prod/static/chunks/app/api/files/paste/route-e2f146f38bb4df42.js +1 -0
  395. package/.next-prod/static/chunks/app/api/files/read/route-e2f146f38bb4df42.js +1 -0
  396. package/.next-prod/static/chunks/app/api/files/readdir/route-e2f146f38bb4df42.js +1 -0
  397. package/.next-prod/static/chunks/app/api/files/recent/route-e2f146f38bb4df42.js +1 -0
  398. package/.next-prod/static/chunks/app/api/files/save/route-e2f146f38bb4df42.js +1 -0
  399. package/.next-prod/static/chunks/app/api/files/search/route-e2f146f38bb4df42.js +1 -0
  400. package/.next-prod/static/chunks/app/api/files/stat/route-e2f146f38bb4df42.js +1 -0
  401. package/.next-prod/static/chunks/app/api/files/text/route-e2f146f38bb4df42.js +1 -0
  402. package/.next-prod/static/chunks/app/api/git/blob/route-e2f146f38bb4df42.js +1 -0
  403. package/.next-prod/static/chunks/app/api/git/branch-diff/route-e2f146f38bb4df42.js +1 -0
  404. package/.next-prod/static/chunks/app/api/git/branches/route-e2f146f38bb4df42.js +1 -0
  405. package/.next-prod/static/chunks/app/api/git/commit-diff/route-e2f146f38bb4df42.js +1 -0
  406. package/.next-prod/static/chunks/app/api/git/commits/route-e2f146f38bb4df42.js +1 -0
  407. package/.next-prod/static/chunks/app/api/git/current-branch/route-e2f146f38bb4df42.js +1 -0
  408. package/.next-prod/static/chunks/app/api/git/diff/route-e2f146f38bb4df42.js +1 -0
  409. package/.next-prod/static/chunks/app/api/git/discard/route-e2f146f38bb4df42.js +1 -0
  410. package/.next-prod/static/chunks/app/api/git/stage/route-e2f146f38bb4df42.js +1 -0
  411. package/.next-prod/static/chunks/app/api/git/status/route-e2f146f38bb4df42.js +1 -0
  412. package/.next-prod/static/chunks/app/api/git/unstage/route-e2f146f38bb4df42.js +1 -0
  413. package/.next-prod/static/chunks/app/api/git/worktree/route-e2f146f38bb4df42.js +1 -0
  414. package/.next-prod/static/chunks/app/api/glm/credentials/route-e2f146f38bb4df42.js +1 -0
  415. package/.next-prod/static/chunks/app/api/glm/models/route-e2f146f38bb4df42.js +1 -0
  416. package/.next-prod/static/chunks/app/api/glm/usage/route-e2f146f38bb4df42.js +1 -0
  417. package/.next-prod/static/chunks/app/api/global-state/route-e2f146f38bb4df42.js +1 -0
  418. package/.next-prod/static/chunks/app/api/health/route-e2f146f38bb4df42.js +1 -0
  419. package/.next-prod/static/chunks/app/api/html-apps/[id]/route-e2f146f38bb4df42.js +1 -0
  420. package/.next-prod/static/chunks/app/api/html-apps/route-e2f146f38bb4df42.js +1 -0
  421. package/.next-prod/static/chunks/app/api/instructions/config/route-e2f146f38bb4df42.js +1 -0
  422. package/.next-prod/static/chunks/app/api/kimi/credentials/route-e2f146f38bb4df42.js +1 -0
  423. package/.next-prod/static/chunks/app/api/kimi/models/route-e2f146f38bb4df42.js +1 -0
  424. package/.next-prod/static/chunks/app/api/kimi/usage/route-e2f146f38bb4df42.js +1 -0
  425. package/.next-prod/static/chunks/app/api/lsp/definition/route-e2f146f38bb4df42.js +1 -0
  426. package/.next-prod/static/chunks/app/api/lsp/hover/route-e2f146f38bb4df42.js +1 -0
  427. package/.next-prod/static/chunks/app/api/lsp/references/route-e2f146f38bb4df42.js +1 -0
  428. package/.next-prod/static/chunks/app/api/lsp/status/route-e2f146f38bb4df42.js +1 -0
  429. package/.next-prod/static/chunks/app/api/lsp/warmup/route-e2f146f38bb4df42.js +1 -0
  430. package/.next-prod/static/chunks/app/api/mysql/columns/route-e2f146f38bb4df42.js +1 -0
  431. package/.next-prod/static/chunks/app/api/mysql/connect/route-e2f146f38bb4df42.js +1 -0
  432. package/.next-prod/static/chunks/app/api/mysql/disconnect/route-e2f146f38bb4df42.js +1 -0
  433. package/.next-prod/static/chunks/app/api/mysql/export/route-e2f146f38bb4df42.js +1 -0
  434. package/.next-prod/static/chunks/app/api/mysql/query/route-e2f146f38bb4df42.js +1 -0
  435. package/.next-prod/static/chunks/app/api/mysql/schemas/route-e2f146f38bb4df42.js +1 -0
  436. package/.next-prod/static/chunks/app/api/neo4j/connect/route-e2f146f38bb4df42.js +1 -0
  437. package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-e2f146f38bb4df42.js +1 -0
  438. package/.next-prod/static/chunks/app/api/neo4j/query/route-e2f146f38bb4df42.js +1 -0
  439. package/.next-prod/static/chunks/app/api/neo4j/schema/route-e2f146f38bb4df42.js +1 -0
  440. package/.next-prod/static/chunks/app/api/note/route-e2f146f38bb4df42.js +1 -0
  441. package/.next-prod/static/chunks/app/api/ollama/config/route-e2f146f38bb4df42.js +1 -0
  442. package/.next-prod/static/chunks/app/api/ollama/models/route-e2f146f38bb4df42.js +1 -0
  443. package/.next-prod/static/chunks/app/api/ollama/start/route-e2f146f38bb4df42.js +1 -0
  444. package/.next-prod/static/chunks/app/api/open-cursor/route-e2f146f38bb4df42.js +1 -0
  445. package/.next-prod/static/chunks/app/api/open-vscode/route-e2f146f38bb4df42.js +1 -0
  446. package/.next-prod/static/chunks/app/api/pick-folder/route-e2f146f38bb4df42.js +1 -0
  447. package/.next-prod/static/chunks/app/api/pinned-sessions/route-e2f146f38bb4df42.js +1 -0
  448. package/.next-prod/static/chunks/app/api/project-settings/route-e2f146f38bb4df42.js +1 -0
  449. package/.next-prod/static/chunks/app/api/project-state/route-e2f146f38bb4df42.js +1 -0
  450. package/.next-prod/static/chunks/app/api/projectGraph/affected/route-e2f146f38bb4df42.js +1 -0
  451. package/.next-prod/static/chunks/app/api/projectGraph/callees/route-e2f146f38bb4df42.js +1 -0
  452. package/.next-prod/static/chunks/app/api/projectGraph/callers/route-e2f146f38bb4df42.js +1 -0
  453. package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-e2f146f38bb4df42.js +1 -0
  454. package/.next-prod/static/chunks/app/api/projectGraph/context/route-e2f146f38bb4df42.js +1 -0
  455. package/.next-prod/static/chunks/app/api/projectGraph/file/route-e2f146f38bb4df42.js +1 -0
  456. package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-e2f146f38bb4df42.js +1 -0
  457. package/.next-prod/static/chunks/app/api/projectGraph/impact/route-e2f146f38bb4df42.js +1 -0
  458. package/.next-prod/static/chunks/app/api/projectGraph/related/route-e2f146f38bb4df42.js +1 -0
  459. package/.next-prod/static/chunks/app/api/projectGraph/risk/route-e2f146f38bb4df42.js +1 -0
  460. package/.next-prod/static/chunks/app/api/projectGraph/search/route-e2f146f38bb4df42.js +1 -0
  461. package/.next-prod/static/chunks/app/api/projects/route-e2f146f38bb4df42.js +1 -0
  462. package/.next-prod/static/chunks/app/api/push/public-key/route-e2f146f38bb4df42.js +1 -0
  463. package/.next-prod/static/chunks/app/api/push/subscribe/route-e2f146f38bb4df42.js +1 -0
  464. package/.next-prod/static/chunks/app/api/push/unsubscribe/route-e2f146f38bb4df42.js +1 -0
  465. package/.next-prod/static/chunks/app/api/redis/command/route-e2f146f38bb4df42.js +1 -0
  466. package/.next-prod/static/chunks/app/api/redis/connect/route-e2f146f38bb4df42.js +1 -0
  467. package/.next-prod/static/chunks/app/api/redis/delete/route-e2f146f38bb4df42.js +1 -0
  468. package/.next-prod/static/chunks/app/api/redis/disconnect/route-e2f146f38bb4df42.js +1 -0
  469. package/.next-prod/static/chunks/app/api/redis/get/route-e2f146f38bb4df42.js +1 -0
  470. package/.next-prod/static/chunks/app/api/redis/keys/route-e2f146f38bb4df42.js +1 -0
  471. package/.next-prod/static/chunks/app/api/redis/set/route-e2f146f38bb4df42.js +1 -0
  472. package/.next-prod/static/chunks/app/api/restart/route-e2f146f38bb4df42.js +1 -0
  473. package/.next-prod/static/chunks/app/api/review/[id]/comments/route-e2f146f38bb4df42.js +1 -0
  474. package/.next-prod/static/chunks/app/api/review/[id]/replies/route-e2f146f38bb4df42.js +1 -0
  475. package/.next-prod/static/chunks/app/api/review/[id]/route-e2f146f38bb4df42.js +1 -0
  476. package/.next-prod/static/chunks/app/api/review/identify/route-e2f146f38bb4df42.js +1 -0
  477. package/.next-prod/static/chunks/app/api/review/order/route-e2f146f38bb4df42.js +1 -0
  478. package/.next-prod/static/chunks/app/api/review/route-e2f146f38bb4df42.js +1 -0
  479. package/.next-prod/static/chunks/app/api/review/share-info/route-e2f146f38bb4df42.js +1 -0
  480. package/.next-prod/static/chunks/app/api/review/users/route-e2f146f38bb4df42.js +1 -0
  481. package/.next-prod/static/chunks/app/api/scheduled-tasks/route-e2f146f38bb4df42.js +1 -0
  482. package/.next-prod/static/chunks/app/api/services/config/route-e2f146f38bb4df42.js +1 -0
  483. package/.next-prod/static/chunks/app/api/services/scripts/route-e2f146f38bb4df42.js +1 -0
  484. package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-e2f146f38bb4df42.js +1 -0
  485. package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-e2f146f38bb4df42.js +1 -0
  486. package/.next-prod/static/chunks/app/api/session/[sessionId]/turn/route-e2f146f38bb4df42.js +1 -0
  487. package/.next-prod/static/chunks/app/api/session/user-messages/route-e2f146f38bb4df42.js +1 -0
  488. package/.next-prod/static/chunks/app/api/session-by-path/route-e2f146f38bb4df42.js +1 -0
  489. package/.next-prod/static/chunks/app/api/sessions/delegate/route-e2f146f38bb4df42.js +1 -0
  490. package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-e2f146f38bb4df42.js +1 -0
  491. package/.next-prod/static/chunks/app/api/sessions/projects/route-e2f146f38bb4df42.js +1 -0
  492. package/.next-prod/static/chunks/app/api/sessions/route-e2f146f38bb4df42.js +1 -0
  493. package/.next-prod/static/chunks/app/api/sessions/search/route-e2f146f38bb4df42.js +1 -0
  494. package/.next-prod/static/chunks/app/api/sessions/status/route-e2f146f38bb4df42.js +1 -0
  495. package/.next-prod/static/chunks/app/api/settings/route-e2f146f38bb4df42.js +1 -0
  496. package/.next-prod/static/chunks/app/api/shutdown/route-e2f146f38bb4df42.js +1 -0
  497. package/.next-prod/static/chunks/app/api/skills/[id]/route-e2f146f38bb4df42.js +1 -0
  498. package/.next-prod/static/chunks/app/api/skills/content/route-e2f146f38bb4df42.js +1 -0
  499. package/.next-prod/static/chunks/app/api/skills/route-e2f146f38bb4df42.js +1 -0
  500. package/.next-prod/static/chunks/app/api/snapshots/blob/route-e2f146f38bb4df42.js +1 -0
  501. package/.next-prod/static/chunks/app/api/snapshots/diff/route-e2f146f38bb4df42.js +1 -0
  502. package/.next-prod/static/chunks/app/api/snapshots/route-e2f146f38bb4df42.js +1 -0
  503. package/.next-prod/static/chunks/app/api/terminal/aliases/route-e2f146f38bb4df42.js +1 -0
  504. package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-e2f146f38bb4df42.js +1 -0
  505. package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-e2f146f38bb4df42.js +1 -0
  506. package/.next-prod/static/chunks/app/api/terminal/env/route-e2f146f38bb4df42.js +1 -0
  507. package/.next-prod/static/chunks/app/api/terminal/history/route-e2f146f38bb4df42.js +1 -0
  508. package/.next-prod/static/chunks/app/api/update/route-e2f146f38bb4df42.js +1 -0
  509. package/.next-prod/static/chunks/app/api/update-state/route-e2f146f38bb4df42.js +1 -0
  510. package/.next-prod/static/chunks/app/api/version/route-e2f146f38bb4df42.js +1 -0
  511. package/.next-prod/static/chunks/app/apps/[...path]/route-e2f146f38bb4df42.js +1 -0
  512. package/.next-prod/static/chunks/app/layout-347ca1b3228d5b23.js +1 -0
  513. package/.next-prod/static/chunks/app/manifest.webmanifest/route-e2f146f38bb4df42.js +1 -0
  514. package/.next-prod/static/chunks/app/page-2ade7ecd21636624.js +1 -0
  515. package/.next-prod/static/chunks/app/project/page-2ade7ecd21636624.js +1 -0
  516. package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-e2f146f38bb4df42.js +1 -0
  517. package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-e2f146f38bb4df42.js +1 -0
  518. package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-e2f146f38bb4df42.js +1 -0
  519. package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-e2f146f38bb4df42.js +1 -0
  520. package/.next-prod/static/css/7a02a222d1299650.css +1 -0
  521. package/.next-prod/trace +15 -15
  522. package/.next-prod/trace-build +1 -1
  523. package/.next-prod/types/app/api/bots/[id]/route.ts +353 -0
  524. package/.next-prod/types/app/api/bots/route.ts +353 -0
  525. package/.next-prod/types/routes.d.ts +3 -1
  526. package/.next-prod/types/validator.ts +18 -0
  527. package/README.md +13 -0
  528. package/README.zh.md +13 -0
  529. package/bots/README.md +86 -0
  530. package/bots/cockpit-helper/BOT.md +95 -0
  531. package/bots/cockpit-helper/commitments/active.md +3 -0
  532. package/bots/cockpit-helper/evidence/refs.md +3 -0
  533. package/bots/cockpit-helper/identity/persona.md +25 -0
  534. package/bots/cockpit-helper/identity/principles.md +49 -0
  535. package/bots/cockpit-helper/memory/facts.md +3 -0
  536. package/bots/cockpit-helper/relationships/user.md +3 -0
  537. package/dist/{chunk-JJWVBF6H.mjs → chunk-BCWVTDEZ.mjs} +648 -140
  538. package/dist/{chunk-6R4AHIIV.mjs → chunk-QY2K7YIF.mjs} +1 -1
  539. package/dist/httpApi.mjs +2 -2
  540. package/dist/scheduledTasks.mjs +80 -14
  541. package/dist/wsServer.mjs +2 -2
  542. package/package.json +2 -1
  543. package/skills/README.md +18 -2
  544. package/skills/bot/SKILL.md +155 -0
  545. package/skills/bot-run/SKILL.md +214 -0
  546. package/skills/bot-turn/SKILL.md +99 -0
  547. package/skills/bot-turn/attach.md +45 -0
  548. package/skills/bot-turn/export.md +113 -0
  549. package/skills/bot-turn/review.md +101 -0
  550. package/skills/bot-turn/writing.md +110 -0
  551. package/.next-prod/server/chunks/5750.js +0 -762
  552. package/.next-prod/static/chunks/72539-7e4ca2de5c9f3f90.js +0 -17
  553. package/.next-prod/static/chunks/89656-bc48af1f9ee9c312.js +0 -32
  554. package/.next-prod/static/chunks/99092-36ee2c49e4c4c059.js +0 -716
  555. package/.next-prod/static/chunks/app/api/chat/deepseek/route-b56c0b18a3b4d026.js +0 -1
  556. package/.next-prod/static/chunks/app/api/chat/glm/route-b56c0b18a3b4d026.js +0 -1
  557. package/.next-prod/static/chunks/app/api/chat/kimi/route-b56c0b18a3b4d026.js +0 -1
  558. package/.next-prod/static/chunks/app/api/chat/ollama/route-b56c0b18a3b4d026.js +0 -1
  559. package/.next-prod/static/chunks/app/api/chat/route-b56c0b18a3b4d026.js +0 -1
  560. package/.next-prod/static/chunks/app/api/chat/stop/route-b56c0b18a3b4d026.js +0 -1
  561. package/.next-prod/static/chunks/app/api/claude-stats/route-b56c0b18a3b4d026.js +0 -1
  562. package/.next-prod/static/chunks/app/api/commands/route-b56c0b18a3b4d026.js +0 -1
  563. package/.next-prod/static/chunks/app/api/comments/route-b56c0b18a3b4d026.js +0 -1
  564. package/.next-prod/static/chunks/app/api/db/columns/route-b56c0b18a3b4d026.js +0 -1
  565. package/.next-prod/static/chunks/app/api/db/connect/route-b56c0b18a3b4d026.js +0 -1
  566. package/.next-prod/static/chunks/app/api/db/disconnect/route-b56c0b18a3b4d026.js +0 -1
  567. package/.next-prod/static/chunks/app/api/db/export/route-b56c0b18a3b4d026.js +0 -1
  568. package/.next-prod/static/chunks/app/api/db/query/route-b56c0b18a3b4d026.js +0 -1
  569. package/.next-prod/static/chunks/app/api/db/schemas/route-b56c0b18a3b4d026.js +0 -1
  570. package/.next-prod/static/chunks/app/api/deepseek/balance/route-b56c0b18a3b4d026.js +0 -1
  571. package/.next-prod/static/chunks/app/api/deepseek/credentials/route-b56c0b18a3b4d026.js +0 -1
  572. package/.next-prod/static/chunks/app/api/deepseek/models/route-b56c0b18a3b4d026.js +0 -1
  573. package/.next-prod/static/chunks/app/api/dev/spans/route-b56c0b18a3b4d026.js +0 -1
  574. package/.next-prod/static/chunks/app/api/extension/version/route-b56c0b18a3b4d026.js +0 -1
  575. package/.next-prod/static/chunks/app/api/file/route-b56c0b18a3b4d026.js +0 -1
  576. package/.next-prod/static/chunks/app/api/files/blame/route-b56c0b18a3b4d026.js +0 -1
  577. package/.next-prod/static/chunks/app/api/files/clipboard/route-b56c0b18a3b4d026.js +0 -1
  578. package/.next-prod/static/chunks/app/api/files/copy/route-b56c0b18a3b4d026.js +0 -1
  579. package/.next-prod/static/chunks/app/api/files/delete/route-b56c0b18a3b4d026.js +0 -1
  580. package/.next-prod/static/chunks/app/api/files/expanded/route-b56c0b18a3b4d026.js +0 -1
  581. package/.next-prod/static/chunks/app/api/files/index/route-b56c0b18a3b4d026.js +0 -1
  582. package/.next-prod/static/chunks/app/api/files/init/route-b56c0b18a3b4d026.js +0 -1
  583. package/.next-prod/static/chunks/app/api/files/paste/route-b56c0b18a3b4d026.js +0 -1
  584. package/.next-prod/static/chunks/app/api/files/read/route-b56c0b18a3b4d026.js +0 -1
  585. package/.next-prod/static/chunks/app/api/files/readdir/route-b56c0b18a3b4d026.js +0 -1
  586. package/.next-prod/static/chunks/app/api/files/recent/route-b56c0b18a3b4d026.js +0 -1
  587. package/.next-prod/static/chunks/app/api/files/save/route-b56c0b18a3b4d026.js +0 -1
  588. package/.next-prod/static/chunks/app/api/files/search/route-b56c0b18a3b4d026.js +0 -1
  589. package/.next-prod/static/chunks/app/api/files/stat/route-b56c0b18a3b4d026.js +0 -1
  590. package/.next-prod/static/chunks/app/api/files/text/route-b56c0b18a3b4d026.js +0 -1
  591. package/.next-prod/static/chunks/app/api/git/blob/route-b56c0b18a3b4d026.js +0 -1
  592. package/.next-prod/static/chunks/app/api/git/branch-diff/route-b56c0b18a3b4d026.js +0 -1
  593. package/.next-prod/static/chunks/app/api/git/branches/route-b56c0b18a3b4d026.js +0 -1
  594. package/.next-prod/static/chunks/app/api/git/commit-diff/route-b56c0b18a3b4d026.js +0 -1
  595. package/.next-prod/static/chunks/app/api/git/commits/route-b56c0b18a3b4d026.js +0 -1
  596. package/.next-prod/static/chunks/app/api/git/current-branch/route-b56c0b18a3b4d026.js +0 -1
  597. package/.next-prod/static/chunks/app/api/git/diff/route-b56c0b18a3b4d026.js +0 -1
  598. package/.next-prod/static/chunks/app/api/git/discard/route-b56c0b18a3b4d026.js +0 -1
  599. package/.next-prod/static/chunks/app/api/git/stage/route-b56c0b18a3b4d026.js +0 -1
  600. package/.next-prod/static/chunks/app/api/git/status/route-b56c0b18a3b4d026.js +0 -1
  601. package/.next-prod/static/chunks/app/api/git/unstage/route-b56c0b18a3b4d026.js +0 -1
  602. package/.next-prod/static/chunks/app/api/git/worktree/route-b56c0b18a3b4d026.js +0 -1
  603. package/.next-prod/static/chunks/app/api/glm/credentials/route-b56c0b18a3b4d026.js +0 -1
  604. package/.next-prod/static/chunks/app/api/glm/models/route-b56c0b18a3b4d026.js +0 -1
  605. package/.next-prod/static/chunks/app/api/glm/usage/route-b56c0b18a3b4d026.js +0 -1
  606. package/.next-prod/static/chunks/app/api/global-state/route-b56c0b18a3b4d026.js +0 -1
  607. package/.next-prod/static/chunks/app/api/health/route-b56c0b18a3b4d026.js +0 -1
  608. package/.next-prod/static/chunks/app/api/html-apps/[id]/route-b56c0b18a3b4d026.js +0 -1
  609. package/.next-prod/static/chunks/app/api/html-apps/route-b56c0b18a3b4d026.js +0 -1
  610. package/.next-prod/static/chunks/app/api/instructions/config/route-b56c0b18a3b4d026.js +0 -1
  611. package/.next-prod/static/chunks/app/api/kimi/credentials/route-b56c0b18a3b4d026.js +0 -1
  612. package/.next-prod/static/chunks/app/api/kimi/models/route-b56c0b18a3b4d026.js +0 -1
  613. package/.next-prod/static/chunks/app/api/kimi/usage/route-b56c0b18a3b4d026.js +0 -1
  614. package/.next-prod/static/chunks/app/api/lsp/definition/route-b56c0b18a3b4d026.js +0 -1
  615. package/.next-prod/static/chunks/app/api/lsp/hover/route-b56c0b18a3b4d026.js +0 -1
  616. package/.next-prod/static/chunks/app/api/lsp/references/route-b56c0b18a3b4d026.js +0 -1
  617. package/.next-prod/static/chunks/app/api/lsp/status/route-b56c0b18a3b4d026.js +0 -1
  618. package/.next-prod/static/chunks/app/api/lsp/warmup/route-b56c0b18a3b4d026.js +0 -1
  619. package/.next-prod/static/chunks/app/api/mysql/columns/route-b56c0b18a3b4d026.js +0 -1
  620. package/.next-prod/static/chunks/app/api/mysql/connect/route-b56c0b18a3b4d026.js +0 -1
  621. package/.next-prod/static/chunks/app/api/mysql/disconnect/route-b56c0b18a3b4d026.js +0 -1
  622. package/.next-prod/static/chunks/app/api/mysql/export/route-b56c0b18a3b4d026.js +0 -1
  623. package/.next-prod/static/chunks/app/api/mysql/query/route-b56c0b18a3b4d026.js +0 -1
  624. package/.next-prod/static/chunks/app/api/mysql/schemas/route-b56c0b18a3b4d026.js +0 -1
  625. package/.next-prod/static/chunks/app/api/neo4j/connect/route-b56c0b18a3b4d026.js +0 -1
  626. package/.next-prod/static/chunks/app/api/neo4j/disconnect/route-b56c0b18a3b4d026.js +0 -1
  627. package/.next-prod/static/chunks/app/api/neo4j/query/route-b56c0b18a3b4d026.js +0 -1
  628. package/.next-prod/static/chunks/app/api/neo4j/schema/route-b56c0b18a3b4d026.js +0 -1
  629. package/.next-prod/static/chunks/app/api/note/route-b56c0b18a3b4d026.js +0 -1
  630. package/.next-prod/static/chunks/app/api/ollama/config/route-b56c0b18a3b4d026.js +0 -1
  631. package/.next-prod/static/chunks/app/api/ollama/models/route-b56c0b18a3b4d026.js +0 -1
  632. package/.next-prod/static/chunks/app/api/ollama/start/route-b56c0b18a3b4d026.js +0 -1
  633. package/.next-prod/static/chunks/app/api/open-cursor/route-b56c0b18a3b4d026.js +0 -1
  634. package/.next-prod/static/chunks/app/api/open-vscode/route-b56c0b18a3b4d026.js +0 -1
  635. package/.next-prod/static/chunks/app/api/pick-folder/route-b56c0b18a3b4d026.js +0 -1
  636. package/.next-prod/static/chunks/app/api/pinned-sessions/route-b56c0b18a3b4d026.js +0 -1
  637. package/.next-prod/static/chunks/app/api/project-settings/route-b56c0b18a3b4d026.js +0 -1
  638. package/.next-prod/static/chunks/app/api/project-state/route-b56c0b18a3b4d026.js +0 -1
  639. package/.next-prod/static/chunks/app/api/projectGraph/affected/route-b56c0b18a3b4d026.js +0 -1
  640. package/.next-prod/static/chunks/app/api/projectGraph/callees/route-b56c0b18a3b4d026.js +0 -1
  641. package/.next-prod/static/chunks/app/api/projectGraph/callers/route-b56c0b18a3b4d026.js +0 -1
  642. package/.next-prod/static/chunks/app/api/projectGraph/coedit/route-b56c0b18a3b4d026.js +0 -1
  643. package/.next-prod/static/chunks/app/api/projectGraph/context/route-b56c0b18a3b4d026.js +0 -1
  644. package/.next-prod/static/chunks/app/api/projectGraph/file/route-b56c0b18a3b4d026.js +0 -1
  645. package/.next-prod/static/chunks/app/api/projectGraph/file-functions/route-b56c0b18a3b4d026.js +0 -1
  646. package/.next-prod/static/chunks/app/api/projectGraph/impact/route-b56c0b18a3b4d026.js +0 -1
  647. package/.next-prod/static/chunks/app/api/projectGraph/related/route-b56c0b18a3b4d026.js +0 -1
  648. package/.next-prod/static/chunks/app/api/projectGraph/risk/route-b56c0b18a3b4d026.js +0 -1
  649. package/.next-prod/static/chunks/app/api/projectGraph/search/route-b56c0b18a3b4d026.js +0 -1
  650. package/.next-prod/static/chunks/app/api/projects/route-b56c0b18a3b4d026.js +0 -1
  651. package/.next-prod/static/chunks/app/api/push/public-key/route-b56c0b18a3b4d026.js +0 -1
  652. package/.next-prod/static/chunks/app/api/push/subscribe/route-b56c0b18a3b4d026.js +0 -1
  653. package/.next-prod/static/chunks/app/api/push/unsubscribe/route-b56c0b18a3b4d026.js +0 -1
  654. package/.next-prod/static/chunks/app/api/redis/command/route-b56c0b18a3b4d026.js +0 -1
  655. package/.next-prod/static/chunks/app/api/redis/connect/route-b56c0b18a3b4d026.js +0 -1
  656. package/.next-prod/static/chunks/app/api/redis/delete/route-b56c0b18a3b4d026.js +0 -1
  657. package/.next-prod/static/chunks/app/api/redis/disconnect/route-b56c0b18a3b4d026.js +0 -1
  658. package/.next-prod/static/chunks/app/api/redis/get/route-b56c0b18a3b4d026.js +0 -1
  659. package/.next-prod/static/chunks/app/api/redis/keys/route-b56c0b18a3b4d026.js +0 -1
  660. package/.next-prod/static/chunks/app/api/redis/set/route-b56c0b18a3b4d026.js +0 -1
  661. package/.next-prod/static/chunks/app/api/restart/route-b56c0b18a3b4d026.js +0 -1
  662. package/.next-prod/static/chunks/app/api/review/[id]/comments/route-b56c0b18a3b4d026.js +0 -1
  663. package/.next-prod/static/chunks/app/api/review/[id]/replies/route-b56c0b18a3b4d026.js +0 -1
  664. package/.next-prod/static/chunks/app/api/review/[id]/route-b56c0b18a3b4d026.js +0 -1
  665. package/.next-prod/static/chunks/app/api/review/identify/route-b56c0b18a3b4d026.js +0 -1
  666. package/.next-prod/static/chunks/app/api/review/order/route-b56c0b18a3b4d026.js +0 -1
  667. package/.next-prod/static/chunks/app/api/review/route-b56c0b18a3b4d026.js +0 -1
  668. package/.next-prod/static/chunks/app/api/review/share-info/route-b56c0b18a3b4d026.js +0 -1
  669. package/.next-prod/static/chunks/app/api/review/users/route-b56c0b18a3b4d026.js +0 -1
  670. package/.next-prod/static/chunks/app/api/scheduled-tasks/route-b56c0b18a3b4d026.js +0 -1
  671. package/.next-prod/static/chunks/app/api/services/config/route-b56c0b18a3b4d026.js +0 -1
  672. package/.next-prod/static/chunks/app/api/services/scripts/route-b56c0b18a3b4d026.js +0 -1
  673. package/.next-prod/static/chunks/app/api/session/[sessionId]/fork/route-b56c0b18a3b4d026.js +0 -1
  674. package/.next-prod/static/chunks/app/api/session/[sessionId]/history/route-b56c0b18a3b4d026.js +0 -1
  675. package/.next-prod/static/chunks/app/api/session/[sessionId]/turn/route-b56c0b18a3b4d026.js +0 -1
  676. package/.next-prod/static/chunks/app/api/session/user-messages/route-b56c0b18a3b4d026.js +0 -1
  677. package/.next-prod/static/chunks/app/api/session-by-path/route-b56c0b18a3b4d026.js +0 -1
  678. package/.next-prod/static/chunks/app/api/sessions/delegate/route-b56c0b18a3b4d026.js +0 -1
  679. package/.next-prod/static/chunks/app/api/sessions/projects/[encodedPath]/route-b56c0b18a3b4d026.js +0 -1
  680. package/.next-prod/static/chunks/app/api/sessions/projects/route-b56c0b18a3b4d026.js +0 -1
  681. package/.next-prod/static/chunks/app/api/sessions/route-b56c0b18a3b4d026.js +0 -1
  682. package/.next-prod/static/chunks/app/api/sessions/search/route-b56c0b18a3b4d026.js +0 -1
  683. package/.next-prod/static/chunks/app/api/sessions/status/route-b56c0b18a3b4d026.js +0 -1
  684. package/.next-prod/static/chunks/app/api/settings/route-b56c0b18a3b4d026.js +0 -1
  685. package/.next-prod/static/chunks/app/api/shutdown/route-b56c0b18a3b4d026.js +0 -1
  686. package/.next-prod/static/chunks/app/api/skills/[id]/route-b56c0b18a3b4d026.js +0 -1
  687. package/.next-prod/static/chunks/app/api/skills/content/route-b56c0b18a3b4d026.js +0 -1
  688. package/.next-prod/static/chunks/app/api/skills/route-b56c0b18a3b4d026.js +0 -1
  689. package/.next-prod/static/chunks/app/api/snapshots/blob/route-b56c0b18a3b4d026.js +0 -1
  690. package/.next-prod/static/chunks/app/api/snapshots/diff/route-b56c0b18a3b4d026.js +0 -1
  691. package/.next-prod/static/chunks/app/api/snapshots/route-b56c0b18a3b4d026.js +0 -1
  692. package/.next-prod/static/chunks/app/api/terminal/aliases/route-b56c0b18a3b4d026.js +0 -1
  693. package/.next-prod/static/chunks/app/api/terminal/autocomplete/route-b56c0b18a3b4d026.js +0 -1
  694. package/.next-prod/static/chunks/app/api/terminal/bubble-order/route-b56c0b18a3b4d026.js +0 -1
  695. package/.next-prod/static/chunks/app/api/terminal/env/route-b56c0b18a3b4d026.js +0 -1
  696. package/.next-prod/static/chunks/app/api/terminal/history/route-b56c0b18a3b4d026.js +0 -1
  697. package/.next-prod/static/chunks/app/api/update/route-b56c0b18a3b4d026.js +0 -1
  698. package/.next-prod/static/chunks/app/api/update-state/route-b56c0b18a3b4d026.js +0 -1
  699. package/.next-prod/static/chunks/app/api/version/route-b56c0b18a3b4d026.js +0 -1
  700. package/.next-prod/static/chunks/app/apps/[...path]/route-b56c0b18a3b4d026.js +0 -1
  701. package/.next-prod/static/chunks/app/layout-5e8ca15dabb4d8c2.js +0 -1
  702. package/.next-prod/static/chunks/app/manifest.webmanifest/route-b56c0b18a3b4d026.js +0 -1
  703. package/.next-prod/static/chunks/app/page-eb7a11e6dd6a9e94.js +0 -1
  704. package/.next-prod/static/chunks/app/project/page-eb7a11e6dd6a9e94.js +0 -1
  705. package/.next-prod/static/chunks/next/dist/client/components/builtin/app-error-b56c0b18a3b4d026.js +0 -1
  706. package/.next-prod/static/chunks/next/dist/client/components/builtin/forbidden-b56c0b18a3b4d026.js +0 -1
  707. package/.next-prod/static/chunks/next/dist/client/components/builtin/not-found-b56c0b18a3b4d026.js +0 -1
  708. package/.next-prod/static/chunks/next/dist/client/components/builtin/unauthorized-b56c0b18a3b4d026.js +0 -1
  709. package/.next-prod/static/css/08c892de6d5e2335.css +0 -1
  710. package/.next-prod/static/mTTTlFslhC7zzHMDXGNOW/_buildManifest.js +0 -1
  711. /package/.next-prod/static/{mTTTlFslhC7zzHMDXGNOW → O8neHUIr3dQhe1jcOUsQ8}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
1
  exports.id=2493,exports.ids=[2493],exports.modules={770:(a,b,c)=>{"use strict";c.d(b,{Sh:()=>l,Yv:()=>h,i_:()=>k,m_:()=>j,n_:()=>f,uU:()=>g,uV:()=>e,yI:()=>i});var d=c(59412);class e extends d.rN("AppError"){}class f extends d.rN("DBError"){}d.rN("WSError");class g extends d.rN("FSError"){}class h extends d.rN("AgentError"){}class i extends d.rN("ValidationError"){}class j extends d.rN("NotFoundError"){}class k extends d.rN("PermissionError"){}let l=a=>{switch(a._tag){case"ValidationError":return 400;case"PermissionError":return 403;case"NotFoundError":return 404;case"DBError":case"FSError":case"AgentError":case"WSError":return 503;default:return 500}}},1085:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{T:()=>k,z:()=>j});var e=c(89705),f=c(7517),g=c(19879),h=c(770),i=a([g]);g=(i.then?(await i)():i)[0];let j=(a,b)=>e.JkU(function*(){let c,d=yield*f.sZ3(k(a,b)),e="";for(let a of d)"text"===a._tag?e+=a.delta:"done"===a._tag&&(c=a.usage);return{message:{role:"assistant",content:e},usage:c}}).pipe(e.fRP("agent.chat",{attributes:{provider:a.provider,model:a.model}})),k=(a,b)=>f.bIC(c=>{let d,f,i=a.provider,j=(d=((a,b)=>{switch(a){case"claude":return b?{apiKey:b}:{};case"codex":return{baseUrl:"https://api.openai.com/v1",apiKey:b};case"kimi":return{baseUrl:"https://api.kimi.com/coding/",apiKey:b};case"deepseek":return{baseUrl:"https://api.deepseek.com/anthropic",apiKey:b};case"glm":return{baseUrl:"https://open.bigmodel.cn/api/anthropic",apiKey:b};case"ollama":return{}}})(a.provider,b),{model:a.model,env:{...process.env,...d.baseUrl?{ANTHROPIC_BASE_URL:d.baseUrl}:{},...d.apiKey?{ANTHROPIC_API_KEY:d.apiKey}:{}}}),k=(f=[...a.messages].reverse().find(a=>"user"===a.role),f?.content??""),l=!1;return(async()=>{try{for await(let a of(0,g.query)({prompt:k,options:j})){if(l)break;if("assistant"===a.type&&a.message?.content)for(let b of a.message.content)"text"===b.type&&b.text&&c.single({_tag:"text",delta:b.text});"result"===a.type&&c.single({_tag:"done",usage:a.usage?{inputTokens:a.usage.input_tokens??0,outputTokens:a.usage.output_tokens??0}:void 0})}c.end()}catch(a){c.fail(new h.Yv({provider:i,kind:"protocol",cause:a}))}})(),e.OH5(()=>{l=!0})});d()}catch(a){d(a)}})},1613:(a,b,c)=>{"use strict";function d(a,b,c){return b?a?c?`${a.replace(/\n+$/,"")}
2
2
 
3
- ${b}`:a+b:b:a}function e(a,b,c=!1){let d=a||[];if(!b)return d;let f=d[d.length-1];return c||f?.type!=="text"?[...d,{type:"text",text:b}]:[...d.slice(0,-1),{type:"text",text:f.text+b}]}function f(a,b){let c=a||[];return c.some(a=>"tool"===a.type&&a.id===b)?c:[...c,{type:"tool",id:b}]}c.d(b,{ur:()=>f,yk:()=>d,zG:()=>e})},2827:(a,b,c)=>{"use strict";c.d(b,{j:()=>j,t:()=>i});var d=c(89705),e=c(7517),f=c(78497),g=c(770),h=c(39876);let i=a=>d.JkU(function*(){let b,c=yield*e.sZ3(j(a)),d="";for(let a of c)"text"===a._tag?d+=a.delta:"done"===a._tag&&(b=a.usage);return{message:{role:"assistant",content:d},usage:b}}).pipe(d.fRP("agent.chat",{attributes:{provider:"ollama",model:a.model}})),j=a=>e.bIC(b=>{let c=new AbortController;return(async()=>{try{let d=await (0,h.q)(a.model);for await(let e of(0,f.gM)({model:d,messages:a.messages.map(a=>({role:a.role,content:a.content})),temperature:a.temperature??0,abortSignal:c.signal}).fullStream)if("text-delta"===e.type){let a=e.text;a&&b.single({_tag:"text",delta:a})}else if("finish"===e.type){let a=e.totalUsage;b.single({_tag:"done",usage:a?{inputTokens:a.inputTokens??0,outputTokens:a.outputTokens??0}:void 0})}b.end()}catch(a){b.fail(new g.Yv({provider:"ollama",kind:"protocol",cause:a}))}})(),d.OH5(()=>c.abort())})},4253:(a,b,c)=>{"use strict";c.d(b,{L8:()=>r,No:()=>h,Pe:()=>q,RW:()=>n,VA:()=>s,hC:()=>o,hH:()=>m,hn:()=>u,iF:()=>t,lU:()=>v,nw:()=>p,pZ:()=>g});var d=c(79748),e=c(33873),f=c.n(e);let g=0xa00000,h=0x3200000,i=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".ico",".bmp",".avif"]),j=new Set([".pdf"]),k=new Set([".doc",".docx",".xls",".xlsx",".ppt",".pptx",".zip",".tar",".gz",".rar",".7z",".exe",".dll",".so",".dylib",".mp3",".mp4",".avi",".mov",".mkv",".wav",".flac",".ttf",".otf",".woff",".woff2",".eot",".db",".sqlite",".sqlite3",".pyc",".class",".o",".a"]),l={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml",".ico":"image/x-icon",".bmp":"image/bmp",".avif":"image/avif",".pdf":"application/pdf"};function m(a){return l[a.toLowerCase()]||"application/octet-stream"}function n(a){return i.has(f().extname(a).toLowerCase())}function o(a,b){if("string"!=typeof b||0===b.length)return null;let c=f().resolve(a),d=f().resolve(c,b);return d===c||d.startsWith(c+f().sep)?d:null}async function p(a){let b;if("string"!=typeof a||0===a.length)return{ok:!1,reason:"Missing cwd parameter"};if(!f().isAbsolute(a))return{ok:!1,reason:"cwd must be an absolute path"};let c=f().resolve(a);try{b=await (0,d.stat)(c)}catch{return{ok:!1,reason:"cwd does not exist"}}return b.isDirectory()?{ok:!0,abs:c}:{ok:!1,reason:"cwd is not a directory"}}function q(a,b){return`"${a.toString(36)}-${Math.floor(b).toString(36)}"`}function r(a,b){let c=a.startsWith(".")?a.toLowerCase():f().extname(a).toLowerCase();return i.has(c)?b>h?"too-large":"image":j.has(c)?b>0x6400000?"too-large":"pdf":k.has(c)?"binary":b>g?"too-large":"text"}function s(a){let b=0,c=Math.min(a.length,1e3);for(let d=0;d<c;d++){let c=a.charCodeAt(d);if(0===c)return!0;c<32&&9!==c&&10!==c&&13!==c&&b++}return c>0&&b/c>.1}async function t(a){let b,c=!1;try{(await (0,d.lstat)(a)).isSymbolicLink()&&(c=!0,b=await (0,d.readlink)(a))}catch{}let e=await (0,d.stat)(a);return{size:e.size,mtimeMs:e.mtimeMs,isDirectory:e.isDirectory(),isSymlink:c,symlinkTarget:b}}function u(a,b){return{ETag:a,"Last-Modified":new Date(b).toUTCString(),"Cache-Control":"no-cache, must-revalidate"}}function v(a,b){return!!a&&a.split(",").map(a=>a.trim().replace(/^W\//,"")).includes(b)}},6265:(a,b,c)=>{"use strict";c.d(b,{Dk:()=>g,Hr:()=>i,V9:()=>k,Vx:()=>j});var d=c(29021),e=c(33873),f=c(7939);function g(){let a;try{a=(0,d.readdirSync)(f.SN,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name)}catch(a){return console.error(`[skills] cannot read builtin skills dir ${f.SN} — all builtin slash commands are unavailable:`,a),[]}return a.filter(a=>{try{return(0,d.statSync)(h(a)).isFile()}catch{return!1}}).sort()}function h(a){return(0,e.join)(f.SN,a,"SKILL.md")}function i(a){try{return(0,d.readFileSync)(h(a),"utf-8")}catch{return null}}function j(){return g().map(a=>{let b=i(a);return{name:a,description:b&&k(b,"description")||""}})}function k(a,b){let c=a.match(/^---\r?\n([\s\S]*?)\r?\n---/),d=(c?c[1]:a).match(RegExp(`^${b}:\\s*["']?(.+?)["']?\\s*$`,"m"));return d?d[1].trim():null}},8155:(a,b,c)=>{"use strict";c.d(b,{D:()=>s,c:()=>r});var d=c(44853),e=c(89705),f=c(1971);let g=d.eu("dev","prod")("COCKPIT_ENV").pipe(d.IQ("prod")),h=d.Yj("COCKPIT_HOST").pipe(d.IQ("127.0.0.1")),i=d.nd("COCKPIT_PORT").pipe(d.NW(()=>d.nd("PORT")),d.IQ(3457)),j=d.uK(d.Yj("COCKPIT_OPEN_PROJECT")).pipe(d.Tj(a=>"Some"===a._tag?a.value:void 0)),k=d.zM("COCKPIT_NO_OPEN").pipe(d.IQ(!1)),l=d.Yj("COCKPIT_LOG_LEVEL").pipe(d.IQ("info")),m=d.nd("COCKPIT_SNAPSHOT_KEEP_DAYS").pipe(d.IQ(7)),n=d.nd("COCKPIT_SNAPSHOT_REPO_TTL_DAYS").pipe(d.IQ(30)),o=d.nd("COCKPIT_SNAPSHOT_MAX_FILE_KB").pipe(d.IQ(2048)),p=d.nd("COCKPIT_SESSION_KEEP_DAYS").pipe(d.IQ(30)),q=d.nd("COCKPIT_DELEGATE_MAX").pipe(d.tf({message:"COCKPIT_DELEGATE_MAX must be >= 1",validation:a=>a>=1}),d.IQ(4)),r=e.JkU(function*(){let a=yield*g,b=yield*h,c=yield*i,d=yield*j,f=yield*k,r=yield*l,s=yield*m,t=yield*n,u=yield*o,v=yield*p,w=yield*q,x=yield*e.OH5(()=>{let a="u">typeof process?process.env:void 0,b=a?.HOME||a?.USERPROFILE||".",c=a?.COCKPIT_HOME;return c?c.replace(/^~(?=$|\/)/,b):b+"/.cockpit"});return{env:a,host:b,port:3457===c&&"dev"===a?3456:c,cockpitDir:x,openProject:d,openBrowser:!f,logLevel:r,logFile:x+"/logs/cockpit.log",snapshotKeepDays:s,snapshotRepoTtlDays:t,snapshotMaxFileKb:u,sessionKeepDays:v,delegateMaxConcurrent:w}}).pipe(e.QgK),s=f.Ie},12490:(a,b,c)=>{"use strict";c.d(b,{n:()=>p});var d=c(51455),e=c(76760),f=c(89705),g=c(60177),h=c(1971),i=c(15825),j=c(770),k=c(8155),l=c(7939);let m=(a,b)=>f.$mh({try:b,catch:b=>new j.uV({message:`session cleanup fs ${a} failed`,cause:b})}),n=a=>m("stat",()=>(0,d.stat)(a).then(a=>a.isDirectory())).pipe(f.DM4(()=>!1)),o=g.Io("@cockpit/SessionCleanupService"),p=h.P1(o,f.JkU(function*(){let a=yield*k.c,b=l.qC.map(b=>(0,e.join)(a.cockpitDir,b)),c=(0,e.join)(a.cockpitDir,"pinned-sessions.json"),g=Math.max(1,a.sessionKeepDays),h=f.jJl(b,a=>f.JkU(function*(){let b=yield*f.$mh({try:async()=>{let a;try{a=await (0,d.readFile)(c,"utf8")}catch(a){if(a?.code==="ENOENT")return{ok:!0,ids:new Set};throw a}let b=JSON.parse(a),e=new Set;for(let a of Array.isArray(b)?b:[])a&&"string"==typeof a.sessionId&&e.add(a.sessionId);return{ok:!0,ids:e}},catch:()=>null}).pipe(f.DM4(()=>({ok:!1})));if(!b.ok)return void(yield*f.FFw("session cleanup: pinned-sessions.json is unreadable/corrupt -- skipping this pass (refusing to risk deleting protected sessions)"));let h=Date.now()-864e5*g;for(let c of yield*m("readdir root",()=>(0,d.readdir)(a)).pipe(f.DM4(()=>[]))){let i=(0,e.join)(a,c);if(!(yield*n(i)))continue;let j=yield*m("readdir cwd",()=>(0,d.readdir)(i)).pipe(f.DM4(()=>[])),k=new Map;for(let a of j){let b=(0,e.join)(i,a);if(a.endsWith(".jsonl")){let c=a.slice(0,-6),d=k.get(c)??{};d.jsonl=b,k.set(c,d)}else if(yield*n(b)){let c=k.get(a)??{};c.subdir=b,k.set(a,c)}}for(let[e,i]of k){if(b.ids.has(e))continue;let j=i.jsonl??i.subdir;j&&((yield*m("stat basis",()=>(0,d.stat)(j).then(a=>a.mtimeMs)).pipe(f.DM4(()=>1/0)))>=h||(i.jsonl&&(yield*m("rm jsonl",()=>(0,d.rm)(i.jsonl,{force:!0})).pipe(f.DM4(()=>void 0))),i.subdir&&(yield*m("rm subdir",()=>(0,d.rm)(i.subdir,{recursive:!0,force:!0})).pipe(f.DM4(()=>void 0))),yield*f.fH4(`session cleanup: removed session ${e} from ${a} under ${c} (older than ${g}d)`)))}0===(yield*m("readdir cwd (recount)",()=>(0,d.readdir)(i)).pipe(f.DM4(()=>["keep"]))).length&&(yield*m("rmdir cwd",()=>(0,d.rmdir)(i)).pipe(f.DM4(()=>void 0)))}}).pipe(f.fRP("session.cleanup")),{discard:!0});return yield*f.x6Z(h.pipe(f.h9N(a=>f.FFw(`session cleanup failed: ${a.message}`)),f.uxO(i.ji("24 hours")))),o.of({cleanup:h})}))},13286:(a,b,c)=>{"use strict";c.d(b,{m:()=>d});let d=c(60177).Io("@cockpit/SessionSearchService")},17329:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{x:()=>m});var e=c(89705),f=c(1971),g=c(90828),h=c(46303),i=c(1085),j=c(2827),k=a([i]);i=(k.then?(await k)():k)[0];let l=new Set(["rate-limit","timeout","unknown"]),m=f.Py(h.N,h.N.of({chat:a=>(a=>{switch(a.provider){case"ollama":return(0,j.t)(a);case"claude":case"codex":case"kimi":case"deepseek":case"glm":return(0,i.z)(a)}})(a).pipe(e.L5P({schedule:g.ic,while:a=>l.has(a.kind)})),stream:a=>(a=>{switch(a.provider){case"ollama":return(0,j.j)(a);case"claude":case"codex":case"kimi":case"deepseek":case"glm":return(0,i.T)(a)}})(a)}));d()}catch(a){d(a)}})},18702:(a,b,c)=>{"use strict";c.d(b,{u:()=>o});var d=c(89705),e=c(55235),f=c(1971),g=c(770),h=c(49818),i=c(15147),j=c.n(i);async function k(a){let b=new URL(a),c=b.protocol.replace(":",""),d=b.hostname,e=b.port||"7687",f=decodeURIComponent(b.username||"neo4j"),g=decodeURIComponent(b.password||""),h=`${c}://${d}:${e}`,i=j().driver(h,j().auth.basic(f,g));return await i.verifyConnectivity(),i}async function l(a,b,c){let d=a.session();try{let a=Date.now(),e=await d.run(b,c||{}),f=Date.now()-a;return{records:e.records.map(a=>{let b={};for(let c of a.keys)b[c]=function a(b){return null==b?null:j().isInt(b)?b.toNumber():b&&"object"==typeof b&&"labels"in b&&"properties"in b?{_type:"node",_id:a(b.identity),_labels:b.labels,...Object.fromEntries(Object.entries(b.properties).map(([b,c])=>[b,a(c)]))}:b&&"object"==typeof b&&"type"in b&&"start"in b&&"end"in b&&"properties"in b?{_type:"relationship",_id:a(b.identity),_relType:b.type,_start:a(b.start),_end:a(b.end),...Object.fromEntries(Object.entries(b.properties).map(([b,c])=>[b,a(c)]))}:b&&"object"==typeof b&&"segments"in b?{_type:"path",segments:b.segments.map(b=>({start:a(b.start),relationship:a(b.relationship),end:a(b.end)}))}:Array.isArray(b)?b.map(b=>a(b)):b&&"object"==typeof b&&b.constructor===Object?Object.fromEntries(Object.entries(b).map(([b,c])=>[b,a(c)])):b}(a.get(c));return b}),keys:e.records.length>0?e.records[0].keys:[],duration:f,counters:e.summary.counters.updates()}}finally{await d.close()}}let m=(a,b)=>d.$mh({try:b,catch:b=>new g.n_({db:"neo4j",op:a,cause:b})}),n=(a,b,c)=>d.JkU(function*(){let f=(yield*e.Jt(a)).get(b);if(f&&f.connectionString===c)return f.driver;f&&(yield*m("close",()=>f.driver.close()).pipe(d.NWQ(()=>d.rIH)));let g=yield*m("createDriver",()=>k(c));return yield*e.yo(a,a=>{let d=new Map(a);return d.set(b,{driver:g,connectionString:c,createdAt:Date.now()}),d}),g}),o=f.P1(h.ge,d.JkU(function*(){let a=yield*e.L8(new Map);return yield*d.U9h(()=>d.JkU(function*(){let b=yield*e.Jt(a);for(let{driver:a}of b.values())yield*d.$mh({try:()=>a.close(),catch:a=>new g.n_({db:"neo4j",op:"shutdown close",cause:a})}).pipe(d.NWQ(()=>d.rIH));yield*e.hZ(a,new Map),yield*d.fH4(`[Neo4jServiceLive] disposed ${b.size} driver(s)`)})),h.ge.of({run:(b,c,e,f)=>d.JkU(function*(){let d=yield*n(a,b,c);return(yield*m("run",()=>l(d,e,f))).records}).pipe(d.fRP("neo4j.run",{attributes:{id:b}})),runWithMeta:(b,c,e,f)=>d.JkU(function*(){let d=yield*n(a,b,c),g=yield*m("runWithMeta",()=>l(d,e,f));return{records:g.records,keys:g.keys,duration:g.duration,counters:g.counters}}).pipe(d.fRP("neo4j.runWithMeta",{attributes:{id:b}})),disconnect:b=>d.JkU(function*(){let c=(yield*e.Jt(a)).get(b);c&&(yield*m("disconnect",()=>c.driver.close()).pipe(d.NWQ(()=>d.rIH)),yield*e.yo(a,a=>{let c=new Map(a);return c.delete(b),c}))})})}))},22461:(a,b,c)=>{"use strict";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))}c.d(b,{r:()=>d})},25470:(a,b,c)=>{"use strict";c.d(b,{A:()=>l});var d=c(89705),e=c(55235),f=c(1971),g=c(38491),h=c(770),i=c(49818);let j=(a,b)=>d.$mh({try:b,catch:b=>new h.n_({db:"mysql",op:a,cause:b})}),k=(a,b,c)=>d.JkU(function*(){let f=(yield*e.Jt(a)).get(b);if(f&&f.connectionString===c)return f.pool;f&&(yield*j("end",()=>f.pool.end()).pipe(d.NWQ(()=>d.rIH)));let h=g.createPool({uri:c,connectionLimit:5,idleTimeout:6e4,connectTimeout:1e4});return yield*e.yo(a,a=>{let d=new Map(a);return d.set(b,{pool:h,connectionString:c,createdAt:Date.now()}),d}),h}),l=f.P1(i.M9,d.JkU(function*(){let a=yield*e.L8(new Map);return yield*d.U9h(()=>d.JkU(function*(){let b=yield*e.Jt(a);for(let{pool:a}of b.values())yield*d.$mh({try:()=>a.end(),catch:a=>new h.n_({db:"mysql",op:"shutdown end",cause:a})}).pipe(d.NWQ(()=>d.rIH));yield*e.hZ(a,new Map),yield*d.fH4(`[MySQLServiceLive] disposed ${b.size} pool(s)`)})),i.M9.of({query:(b,c,e,f)=>d.JkU(function*(){let d=yield*k(a,b,c),[g]=yield*j("query",()=>d.query(e,f));return g}).pipe(d.fRP("mysql.query",{attributes:{id:b}})),queryWithMeta:(b,c,e,f)=>d.JkU(function*(){let d=yield*k(a,b,c),g=performance.now(),[h,i]=yield*j("queryWithMeta",()=>d.query(e,f)),l=Math.round((performance.now()-g)*100)/100;return Array.isArray(h)&&Array.isArray(i)?{rows:h,fields:i.map(a=>({name:a.name,dataTypeID:a.columnType??0})),rowCount:h.length,command:null,duration:l}:{rows:[],fields:null,rowCount:h.affectedRows??0,command:e.trim().split(/\s+/)[0]?.toUpperCase()||"QUERY",duration:l}}).pipe(d.fRP("mysql.queryWithMeta",{attributes:{id:b}})),withTx:(b,c,e)=>d.JkU(function*(){let f=yield*k(a,b,c),g=yield*j("getConnection",()=>f.getConnection());return yield*j("BEGIN",()=>g.beginTransaction()),yield*e({query:(a,b)=>j("tx.query",()=>g.query(a,b).then(([a])=>a))}).pipe(d.Bio({onSuccess:()=>j("COMMIT",()=>g.commit()),onFailure:()=>j("ROLLBACK",()=>g.rollback()).pipe(d.NWQ(()=>d.rIH))}),d.yeE(d.OH5(()=>g.release())))}).pipe(d.fRP("mysql.withTx",{attributes:{id:b}})),disconnect:b=>d.JkU(function*(){let c=(yield*e.Jt(a)).get(b);c&&(yield*j("disconnect",()=>c.pool.end()).pipe(d.NWQ(()=>d.rIH)),yield*e.yo(a,a=>{let c=new Map(a);return c.delete(b),c}))})})}))},26479:(a,b,c)=>{"use strict";c.d(b,{CR:()=>h,my:()=>i,os:()=>g});var d=c(29021),e=c(33873),f=c(7939);function g(a,b){let c=(0,f.Kk)(a,b);if(d.existsSync(c))return{sessionPath:c,engine:"claude"};let e=(0,f.Xi)(a,b);if(d.existsSync(e))return{sessionPath:e,engine:"deepseek"};let g=(0,f.n2)(a,b);if(d.existsSync(g))return{sessionPath:g,engine:"kimi"};let h=(0,f.Rk)(a,b);if(d.existsSync(h))return{sessionPath:h,engine:"glm"};let i=(0,f.eg)(b);if(i)return{sessionPath:i,engine:"codex"};let j=(0,f.yw)(a,b);return d.existsSync(j)?{sessionPath:j,engine:"ollama"}:null}function h(a){return!!a.engine}function i(a,b,c){switch(a.engine){case"claude":return(0,f.Kk)(b,c);case"deepseek":return(0,f.Xi)(b,c);case"kimi":return(0,f.n2)(b,c);case"glm":return(0,f.Rk)(b,c);case"ollama":return(0,f.yw)(b,c);case"codex":{let a=new Date,b=a=>String(a).padStart(2,"0"),d=String(a.getFullYear()),g=b(a.getMonth()+1),h=b(a.getDate()),i=`${d}-${g}-${h}T${b(a.getHours())}-${b(a.getMinutes())}-${b(a.getSeconds())}`;return(0,e.join)(f.yk,d,g,h,`rollout-${i}-${c}.jsonl`)}default:return null}}},26925:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{J:()=>l,v:()=>m});var e=c(89705),f=c(94506),g=c(34168),h=c(38561),i=c(95606),j=a([f]);f=(j.then?(await j)():j)[0];let n=globalThis,o=n.__cockpitSnapshotToolIndex??(n.__cockpitSnapshotToolIndex=new Map);function k(a){let b=a.message;return Array.isArray(b?.content)?b.content:[]}let p=a=>{f.s9.runFork(a.pipe(e.h9N(a=>e.FFw(`snapshot failed: ${a.message}`))))};function l(a,b,c){a&&p(e.qIB(g.M,d=>d.baseline(a,b,c)))}function m(a,b,c,d){if(a){if("assistant"===d.type){for(let a of k(d))a.id&&a.name&&o.set(a.id,{name:a.name,files:function(a){if(!a)return[];let b=[];return"string"==typeof a.file_path&&a.file_path&&b.push(a.file_path),"string"==typeof a.notebook_path&&a.notebook_path&&b.push(a.notebook_path),b}(a.input),provider:c,detail:function(a){if(a){if("string"==typeof a.description&&a.description)return a.description;if("string"==typeof a.command&&a.command)return a.command}}(a.input)});!function(){if(o.size<=4e3)return;let a=Math.floor(o.size/2);for(let b of o.keys()){if(a--<=0)break;o.delete(b)}}();return}if("user"===d.type)for(let f of k(d)){if(!f.tool_use_id)continue;let d=o.get(f.tool_use_id);if(d&&o.delete(f.tool_use_id),d&&h.W.has(d.name))continue;let j=f.tool_use_id;(0,i.NQ)(a),p(e.qIB(g.M,e=>e.record({cwd:a,sessionKey:b,provider:c,toolId:j,toolName:d?.name??"tool",toolFiles:d?.files??[],toolDetail:d?.detail})).pipe(e.yeE(e.OH5(()=>(0,i.UT)(a)))))}}}d()}catch(a){d(a)}})},28303:a=>{function b(a){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}b.keys=()=>[],b.resolve=b,b.id=28303,a.exports=b},30816:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{m:()=>q});var e=c(95169),f=c(7939),g=c(79830),h=c(46122),i=c(65699),j=a([h]);h=(j.then?(await j)():j)[0];let l=new Set(["Write","Edit","MultiEdit","NotebookEdit"]),m=new Set(["low","medium","high","xhigh","max"]),n=new Set(["claude-fable-5-1","claude-fable-5","claude-opus-5","claude-opus-4-8"]),o=new Set(["claude-fable-5-1","claude-fable-5","claude-opus-5","claude-opus-4-8","claude-sonnet-5"]),p=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function k(a,b){let c,d,{permissionMode:f}=a.params,g="plan"===f,h=function(a){let b="string"==typeof a.params.model&&a.params.model.trim()?a.params.model.trim():void 0;if(b)return"1m"===a.params.claudeContextWindow?`${b}[1m]`:b}(a),i=function(a){let b="string"==typeof a.params.model?a.params.model.trim():"";if("claude-haiku-4-5"===b)return;let c="string"==typeof a.params.claudeEffort?a.params.claudeEffort:void 0;if(c&&"ultrathink"!==c)return"ultracode"===c?"xhigh":"xhigh"!==c||o.has(b)?"max"===c&&"claude-sonnet-4-6"===b?"high":m.has(c)?c:void 0:"max"}(a),j=(c={},d="string"==typeof a.params.model?a.params.model.trim():"",!0===a.params.claudeFastMode&&(c.fastMode=!0),void 0!==a.params.claudeThinking&&(c.alwaysThinkingEnabled=a.params.claudeThinking),"ultracode"===a.params.claudeEffort&&n.has(d)&&(c.ultracode=!0),Object.keys(c).length>0?c:void 0),k="string"==typeof a.params.newSessionId&&p.test(a.params.newSessionId)?a.params.newSessionId:void 0;return(c,d,f)=>({...b&&!f?{sessionId:d}:d?{resume:d}:!f&&k?{sessionId:k}:{},...a.cwd&&{cwd:a.cwd},...h?{model:h}:{},...i?{effort:i}:{},...j?{settings:j}:{},settingSources:["user","project","local"],permissionMode:g?"plan":"bypassPermissions",...!g&&{allowDangerouslySkipPermissions:!0},...g&&{canUseTool:async(a,b,c)=>(function(a,b,c){if("ExitPlanMode"===a)return{behavior:"deny",message:"Plan presented to the user. There is no approval dialog to click in this environment — the user approves by turning off Plan mode (via the plan card button) and resending, which then executes. Do not ask the user to confirm in a popup; stop here.",interrupt:!0};if(l.has(a)){let d=[b.file_path,b.notebook_path,b.path,c?.blockedPath].find(a=>"string"==typeof a);return d&&/(^|\/)\.claude\/plans\//.test(d)?{behavior:"allow",updatedInput:b}:{behavior:"deny",message:`Plan mode is read-only and this environment has no approval dialog, so "${a}"${d?` on ${d}`:""} can't run. Only writes under .claude/plans/ are allowed. Capture the intended changes in your plan instead of editing files now.`}}return{behavior:"allow",updatedInput:b}})(a,b,c)},includePartialMessages:!0,abortController:c,env:(0,e.u)({COCKPIT_RUN_ID:a.currentKey()})})}let q={name:"claude",runner:{async run(a){let b=function(a){if("ultrathink"!==a.params.claudeEffort)return a;let b=a.prompt??"";return/\bultrathink\b/i.test(b)?a:{...a,prompt:`Ultrathink:
3
+ ${b}`:a+b:b:a}function e(a,b,c=!1){let d=a||[];if(!b)return d;let f=d[d.length-1];return c||f?.type!=="text"?[...d,{type:"text",text:b}]:[...d.slice(0,-1),{type:"text",text:f.text+b}]}function f(a,b){let c=a||[];return c.some(a=>"tool"===a.type&&a.id===b)?c:[...c,{type:"tool",id:b}]}c.d(b,{ur:()=>f,yk:()=>d,zG:()=>e})},2827:(a,b,c)=>{"use strict";c.d(b,{j:()=>j,t:()=>i});var d=c(89705),e=c(7517),f=c(78497),g=c(770),h=c(39876);let i=a=>d.JkU(function*(){let b,c=yield*e.sZ3(j(a)),d="";for(let a of c)"text"===a._tag?d+=a.delta:"done"===a._tag&&(b=a.usage);return{message:{role:"assistant",content:d},usage:b}}).pipe(d.fRP("agent.chat",{attributes:{provider:"ollama",model:a.model}})),j=a=>e.bIC(b=>{let c=new AbortController;return(async()=>{try{let d=await (0,h.q)(a.model);for await(let e of(0,f.gM)({model:d,messages:a.messages.map(a=>({role:a.role,content:a.content})),temperature:a.temperature??0,abortSignal:c.signal}).fullStream)if("text-delta"===e.type){let a=e.text;a&&b.single({_tag:"text",delta:a})}else if("finish"===e.type){let a=e.totalUsage;b.single({_tag:"done",usage:a?{inputTokens:a.inputTokens??0,outputTokens:a.outputTokens??0}:void 0})}b.end()}catch(a){b.fail(new g.Yv({provider:"ollama",kind:"protocol",cause:a}))}})(),d.OH5(()=>c.abort())})},4253:(a,b,c)=>{"use strict";c.d(b,{L8:()=>r,No:()=>h,Pe:()=>q,RW:()=>n,VA:()=>s,hC:()=>o,hH:()=>m,hn:()=>u,iF:()=>t,lU:()=>v,nw:()=>p,pZ:()=>g});var d=c(79748),e=c(33873),f=c.n(e);let g=0xa00000,h=0x3200000,i=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".ico",".bmp",".avif"]),j=new Set([".pdf"]),k=new Set([".doc",".docx",".xls",".xlsx",".ppt",".pptx",".zip",".tar",".gz",".rar",".7z",".exe",".dll",".so",".dylib",".mp3",".mp4",".avi",".mov",".mkv",".wav",".flac",".ttf",".otf",".woff",".woff2",".eot",".db",".sqlite",".sqlite3",".pyc",".class",".o",".a"]),l={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml",".ico":"image/x-icon",".bmp":"image/bmp",".avif":"image/avif",".pdf":"application/pdf"};function m(a){return l[a.toLowerCase()]||"application/octet-stream"}function n(a){return i.has(f().extname(a).toLowerCase())}function o(a,b){if("string"!=typeof b||0===b.length)return null;let c=f().resolve(a),d=f().resolve(c,b);return d===c||d.startsWith(c+f().sep)?d:null}async function p(a){let b;if("string"!=typeof a||0===a.length)return{ok:!1,reason:"Missing cwd parameter"};if(!f().isAbsolute(a))return{ok:!1,reason:"cwd must be an absolute path"};let c=f().resolve(a);try{b=await (0,d.stat)(c)}catch{return{ok:!1,reason:"cwd does not exist"}}return b.isDirectory()?{ok:!0,abs:c}:{ok:!1,reason:"cwd is not a directory"}}function q(a,b){return`"${a.toString(36)}-${Math.floor(b).toString(36)}"`}function r(a,b){let c=a.startsWith(".")?a.toLowerCase():f().extname(a).toLowerCase();return i.has(c)?b>h?"too-large":"image":j.has(c)?b>0x6400000?"too-large":"pdf":k.has(c)?"binary":b>g?"too-large":"text"}function s(a){let b=0,c=Math.min(a.length,1e3);for(let d=0;d<c;d++){let c=a.charCodeAt(d);if(0===c)return!0;c<32&&9!==c&&10!==c&&13!==c&&b++}return c>0&&b/c>.1}async function t(a){let b,c=!1;try{(await (0,d.lstat)(a)).isSymbolicLink()&&(c=!0,b=await (0,d.readlink)(a))}catch{}let e=await (0,d.stat)(a);return{size:e.size,mtimeMs:e.mtimeMs,isDirectory:e.isDirectory(),isSymlink:c,symlinkTarget:b}}function u(a,b){return{ETag:a,"Last-Modified":new Date(b).toUTCString(),"Cache-Control":"no-cache, must-revalidate"}}function v(a,b){return!!a&&a.split(",").map(a=>a.trim().replace(/^W\//,"")).includes(b)}},6265:(a,b,c)=>{"use strict";c.d(b,{AA:()=>i,Dk:()=>g,Hr:()=>k,V9:()=>m,Vx:()=>l,jN:()=>j});var d=c(29021),e=c(33873),f=c(7939);function g(){let a;try{a=(0,d.readdirSync)(f.SN,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name)}catch(a){return console.error(`[skills] cannot read builtin skills dir ${f.SN} — all builtin slash commands are unavailable:`,a),[]}return a.filter(a=>{try{return(0,d.statSync)(h(a)).isFile()}catch{return!1}}).sort()}function h(a){return(0,e.join)(f.SN,a,"SKILL.md")}function i(a){try{return(0,d.readdirSync)((0,e.join)(f.SN,a),{withFileTypes:!0}).filter(a=>a.isFile()&&a.name.endsWith(".md")&&"SKILL.md"!==a.name).map(a=>a.name).sort()}catch{return[]}}function j(a,b){try{return(0,d.readFileSync)((0,e.join)(f.SN,a,b),"utf-8")}catch{return null}}function k(a){try{return(0,d.readFileSync)(h(a),"utf-8")}catch{return null}}function l(){return g().map(a=>{let b=k(a);return{name:a,description:b&&m(b,"description")||"",hidden:"true"===(b&&m(b,"hidden"))}})}function m(a,b){let c=a.match(/^---\r?\n([\s\S]*?)\r?\n---/),d=(c?c[1]:a).match(RegExp(`^${b}:\\s*["']?(.+?)["']?\\s*$`,"m"));return d?d[1].trim():null}},8155:(a,b,c)=>{"use strict";c.d(b,{D:()=>s,c:()=>r});var d=c(44853),e=c(89705),f=c(1971);let g=d.eu("dev","prod")("COCKPIT_ENV").pipe(d.IQ("prod")),h=d.Yj("COCKPIT_HOST").pipe(d.IQ("127.0.0.1")),i=d.nd("COCKPIT_PORT").pipe(d.NW(()=>d.nd("PORT")),d.IQ(3457)),j=d.uK(d.Yj("COCKPIT_OPEN_PROJECT")).pipe(d.Tj(a=>"Some"===a._tag?a.value:void 0)),k=d.zM("COCKPIT_NO_OPEN").pipe(d.IQ(!1)),l=d.Yj("COCKPIT_LOG_LEVEL").pipe(d.IQ("info")),m=d.nd("COCKPIT_SNAPSHOT_KEEP_DAYS").pipe(d.IQ(7)),n=d.nd("COCKPIT_SNAPSHOT_REPO_TTL_DAYS").pipe(d.IQ(30)),o=d.nd("COCKPIT_SNAPSHOT_MAX_FILE_KB").pipe(d.IQ(2048)),p=d.nd("COCKPIT_SESSION_KEEP_DAYS").pipe(d.IQ(30)),q=d.nd("COCKPIT_DELEGATE_MAX").pipe(d.tf({message:"COCKPIT_DELEGATE_MAX must be >= 1",validation:a=>a>=1}),d.IQ(4)),r=e.JkU(function*(){let a=yield*g,b=yield*h,c=yield*i,d=yield*j,f=yield*k,r=yield*l,s=yield*m,t=yield*n,u=yield*o,v=yield*p,w=yield*q,x=yield*e.OH5(()=>{let a="u">typeof process?process.env:void 0,b=a?.HOME||a?.USERPROFILE||".",c=a?.COCKPIT_HOME;return c?c.replace(/^~(?=$|\/)/,b):b+"/.cockpit"});return{env:a,host:b,port:3457===c&&"dev"===a?3456:c,cockpitDir:x,openProject:d,openBrowser:!f,logLevel:r,logFile:x+"/logs/cockpit.log",snapshotKeepDays:s,snapshotRepoTtlDays:t,snapshotMaxFileKb:u,sessionKeepDays:v,delegateMaxConcurrent:w}}).pipe(e.QgK),s=f.Ie},12490:(a,b,c)=>{"use strict";c.d(b,{n:()=>p});var d=c(51455),e=c(76760),f=c(89705),g=c(60177),h=c(1971),i=c(15825),j=c(770),k=c(8155),l=c(7939);let m=(a,b)=>f.$mh({try:b,catch:b=>new j.uV({message:`session cleanup fs ${a} failed`,cause:b})}),n=a=>m("stat",()=>(0,d.stat)(a).then(a=>a.isDirectory())).pipe(f.DM4(()=>!1)),o=g.Io("@cockpit/SessionCleanupService"),p=h.P1(o,f.JkU(function*(){let a=yield*k.c,b=l.qC.map(b=>(0,e.join)(a.cockpitDir,b)),c=(0,e.join)(a.cockpitDir,"pinned-sessions.json"),g=Math.max(1,a.sessionKeepDays),h=f.jJl(b,a=>f.JkU(function*(){let b=yield*f.$mh({try:async()=>{let a;try{a=await (0,d.readFile)(c,"utf8")}catch(a){if(a?.code==="ENOENT")return{ok:!0,ids:new Set};throw a}let b=JSON.parse(a),e=new Set;for(let a of Array.isArray(b)?b:[])a&&"string"==typeof a.sessionId&&e.add(a.sessionId);return{ok:!0,ids:e}},catch:()=>null}).pipe(f.DM4(()=>({ok:!1})));if(!b.ok)return void(yield*f.FFw("session cleanup: pinned-sessions.json is unreadable/corrupt -- skipping this pass (refusing to risk deleting protected sessions)"));let h=Date.now()-864e5*g;for(let c of yield*m("readdir root",()=>(0,d.readdir)(a)).pipe(f.DM4(()=>[]))){let i=(0,e.join)(a,c);if(!(yield*n(i)))continue;let j=yield*m("readdir cwd",()=>(0,d.readdir)(i)).pipe(f.DM4(()=>[])),k=new Map;for(let a of j){let b=(0,e.join)(i,a);if(a.endsWith(".jsonl")){let c=a.slice(0,-6),d=k.get(c)??{};d.jsonl=b,k.set(c,d)}else if(yield*n(b)){let c=k.get(a)??{};c.subdir=b,k.set(a,c)}}for(let[e,i]of k){if(b.ids.has(e))continue;let j=i.jsonl??i.subdir;j&&((yield*m("stat basis",()=>(0,d.stat)(j).then(a=>a.mtimeMs)).pipe(f.DM4(()=>1/0)))>=h||(i.jsonl&&(yield*m("rm jsonl",()=>(0,d.rm)(i.jsonl,{force:!0})).pipe(f.DM4(()=>void 0))),i.subdir&&(yield*m("rm subdir",()=>(0,d.rm)(i.subdir,{recursive:!0,force:!0})).pipe(f.DM4(()=>void 0))),yield*f.fH4(`session cleanup: removed session ${e} from ${a} under ${c} (older than ${g}d)`)))}0===(yield*m("readdir cwd (recount)",()=>(0,d.readdir)(i)).pipe(f.DM4(()=>["keep"]))).length&&(yield*m("rmdir cwd",()=>(0,d.rmdir)(i)).pipe(f.DM4(()=>void 0)))}}).pipe(f.fRP("session.cleanup")),{discard:!0});return yield*f.x6Z(h.pipe(f.h9N(a=>f.FFw(`session cleanup failed: ${a.message}`)),f.uxO(i.ji("24 hours")))),o.of({cleanup:h})}))},13286:(a,b,c)=>{"use strict";c.d(b,{m:()=>d});let d=c(60177).Io("@cockpit/SessionSearchService")},17329:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{x:()=>m});var e=c(89705),f=c(1971),g=c(90828),h=c(46303),i=c(1085),j=c(2827),k=a([i]);i=(k.then?(await k)():k)[0];let l=new Set(["rate-limit","timeout","unknown"]),m=f.Py(h.N,h.N.of({chat:a=>(a=>{switch(a.provider){case"ollama":return(0,j.t)(a);case"claude":case"codex":case"kimi":case"deepseek":case"glm":return(0,i.z)(a)}})(a).pipe(e.L5P({schedule:g.ic,while:a=>l.has(a.kind)})),stream:a=>(a=>{switch(a.provider){case"ollama":return(0,j.j)(a);case"claude":case"codex":case"kimi":case"deepseek":case"glm":return(0,i.T)(a)}})(a)}));d()}catch(a){d(a)}})},18702:(a,b,c)=>{"use strict";c.d(b,{u:()=>o});var d=c(89705),e=c(55235),f=c(1971),g=c(770),h=c(49818),i=c(15147),j=c.n(i);async function k(a){let b=new URL(a),c=b.protocol.replace(":",""),d=b.hostname,e=b.port||"7687",f=decodeURIComponent(b.username||"neo4j"),g=decodeURIComponent(b.password||""),h=`${c}://${d}:${e}`,i=j().driver(h,j().auth.basic(f,g));return await i.verifyConnectivity(),i}async function l(a,b,c){let d=a.session();try{let a=Date.now(),e=await d.run(b,c||{}),f=Date.now()-a;return{records:e.records.map(a=>{let b={};for(let c of a.keys)b[c]=function a(b){return null==b?null:j().isInt(b)?b.toNumber():b&&"object"==typeof b&&"labels"in b&&"properties"in b?{_type:"node",_id:a(b.identity),_labels:b.labels,...Object.fromEntries(Object.entries(b.properties).map(([b,c])=>[b,a(c)]))}:b&&"object"==typeof b&&"type"in b&&"start"in b&&"end"in b&&"properties"in b?{_type:"relationship",_id:a(b.identity),_relType:b.type,_start:a(b.start),_end:a(b.end),...Object.fromEntries(Object.entries(b.properties).map(([b,c])=>[b,a(c)]))}:b&&"object"==typeof b&&"segments"in b?{_type:"path",segments:b.segments.map(b=>({start:a(b.start),relationship:a(b.relationship),end:a(b.end)}))}:Array.isArray(b)?b.map(b=>a(b)):b&&"object"==typeof b&&b.constructor===Object?Object.fromEntries(Object.entries(b).map(([b,c])=>[b,a(c)])):b}(a.get(c));return b}),keys:e.records.length>0?e.records[0].keys:[],duration:f,counters:e.summary.counters.updates()}}finally{await d.close()}}let m=(a,b)=>d.$mh({try:b,catch:b=>new g.n_({db:"neo4j",op:a,cause:b})}),n=(a,b,c)=>d.JkU(function*(){let f=(yield*e.Jt(a)).get(b);if(f&&f.connectionString===c)return f.driver;f&&(yield*m("close",()=>f.driver.close()).pipe(d.NWQ(()=>d.rIH)));let g=yield*m("createDriver",()=>k(c));return yield*e.yo(a,a=>{let d=new Map(a);return d.set(b,{driver:g,connectionString:c,createdAt:Date.now()}),d}),g}),o=f.P1(h.ge,d.JkU(function*(){let a=yield*e.L8(new Map);return yield*d.U9h(()=>d.JkU(function*(){let b=yield*e.Jt(a);for(let{driver:a}of b.values())yield*d.$mh({try:()=>a.close(),catch:a=>new g.n_({db:"neo4j",op:"shutdown close",cause:a})}).pipe(d.NWQ(()=>d.rIH));yield*e.hZ(a,new Map),yield*d.fH4(`[Neo4jServiceLive] disposed ${b.size} driver(s)`)})),h.ge.of({run:(b,c,e,f)=>d.JkU(function*(){let d=yield*n(a,b,c);return(yield*m("run",()=>l(d,e,f))).records}).pipe(d.fRP("neo4j.run",{attributes:{id:b}})),runWithMeta:(b,c,e,f)=>d.JkU(function*(){let d=yield*n(a,b,c),g=yield*m("runWithMeta",()=>l(d,e,f));return{records:g.records,keys:g.keys,duration:g.duration,counters:g.counters}}).pipe(d.fRP("neo4j.runWithMeta",{attributes:{id:b}})),disconnect:b=>d.JkU(function*(){let c=(yield*e.Jt(a)).get(b);c&&(yield*m("disconnect",()=>c.driver.close()).pipe(d.NWQ(()=>d.rIH)),yield*e.yo(a,a=>{let c=new Map(a);return c.delete(b),c}))})})}))},21310:(a,b,c)=>{"use strict";c.d(b,{_:()=>w});var d=c(77598),e=c(73024),f=c(76760),g=c.n(f),h=c(89705),i=c(1971),j=c(770),k=c(30416),l=c(7939),m=c(61846),n=c(99697);let o={bots:[]},p=()=>(0,l.PR)(l.YC,o),q=a=>(0,e.readFileSync)(a,"utf8"),r=a=>a.bots.map(a=>(0,m.If)(g(),a,q)),s=a=>new j.yI({field:"path",reason:a}),t=(a,b,c)=>{let d=c?.code;if(!d||"ENOENT"===d)return s(`${a} not found: ${b}`);let e=c instanceof Error?c.message:String(c);return s(`cannot read ${b} (${d}): ${e}`)},u=a=>{let b=(0,n.cm)(),c=new Set(b.flatMap(a=>[a.path,(0,n.FZ)((0,n.pz)(a.id))]));return[...b,...a.filter(a=>!c.has(a.path))]},v=h.$mh({try:async()=>u(r(await p())),catch:a=>new j.uU({path:l.YC,op:"read",cause:a})}),w=i.Py(k.u,{list:v,add:a=>h.JkU(function*(){let b=a.trim();if(!b)return yield*h.fJG(s("missing"));if(!g().isAbsolute(b))return yield*h.fJG(s("must be absolute"));let c=(0,m.On)(g(),b).dir,f=yield*h.SvU({try:()=>e.realpathSync.native(c),catch:a=>t("directory",c,a)}),i=(0,n.KU)(f);if(i)return{...i,alreadyExists:!0};let k=(0,m.On)(g(),f).manifest,o=yield*h.SvU({try:()=>q(k),catch:a=>t("BOT.md",k,a)}),v=yield*h.SvU({try:()=>(0,m.WK)(g(),o,f),catch:a=>s(a instanceof Error?a.message:String(a))}),w=yield*h.$mh({try:()=>(0,l.Ux)(l.YC,async()=>{let a=await p(),b=a.bots.find(a=>a.path===f);if(b)return{kind:"existing",bot:(0,m.If)(g(),b,q)};let c=(0,m.Sz)(u(r(a)),v.name,f);if(c)return{kind:"clash",bot:c};let e={id:`bot-${(0,d.randomUUID)()}`,path:f,addedAt:new Date().toISOString()};return await (0,l.An)(l.YC,{bots:[...a.bots,e]}),{kind:"added",record:e}}),catch:a=>new j.uU({path:l.YC,op:"write",cause:a})});switch(w.kind){case"existing":return{...w.bot,alreadyExists:!0};case"clash":return yield*h.fJG(s(`@${v.name} is already registered at ${w.bot.path}`));case"added":return{...w.record,valid:!0,...v,alreadyExists:!1}}}),remove:a=>h.JkU(function*(){return(0,n.k9)(a)?yield*h.fJG(new j.yI({field:"id",reason:"built-in Bots cannot be removed"})):(yield*h.$mh({try:()=>(0,l.Ux)(l.YC,async()=>{let b=await p();return!!b.bots.some(b=>b.id===a)&&(await (0,l.An)(l.YC,{bots:b.bots.filter(b=>b.id!==a)}),!0)}),catch:a=>new j.uU({path:l.YC,op:"write",cause:a})}))?void 0:yield*h.fJG(new j.m_({resource:"bot",id:a}))})})},22461:(a,b,c)=>{"use strict";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))}c.d(b,{r:()=>d})},25470:(a,b,c)=>{"use strict";c.d(b,{A:()=>l});var d=c(89705),e=c(55235),f=c(1971),g=c(38491),h=c(770),i=c(49818);let j=(a,b)=>d.$mh({try:b,catch:b=>new h.n_({db:"mysql",op:a,cause:b})}),k=(a,b,c)=>d.JkU(function*(){let f=(yield*e.Jt(a)).get(b);if(f&&f.connectionString===c)return f.pool;f&&(yield*j("end",()=>f.pool.end()).pipe(d.NWQ(()=>d.rIH)));let h=g.createPool({uri:c,connectionLimit:5,idleTimeout:6e4,connectTimeout:1e4});return yield*e.yo(a,a=>{let d=new Map(a);return d.set(b,{pool:h,connectionString:c,createdAt:Date.now()}),d}),h}),l=f.P1(i.M9,d.JkU(function*(){let a=yield*e.L8(new Map);return yield*d.U9h(()=>d.JkU(function*(){let b=yield*e.Jt(a);for(let{pool:a}of b.values())yield*d.$mh({try:()=>a.end(),catch:a=>new h.n_({db:"mysql",op:"shutdown end",cause:a})}).pipe(d.NWQ(()=>d.rIH));yield*e.hZ(a,new Map),yield*d.fH4(`[MySQLServiceLive] disposed ${b.size} pool(s)`)})),i.M9.of({query:(b,c,e,f)=>d.JkU(function*(){let d=yield*k(a,b,c),[g]=yield*j("query",()=>d.query(e,f));return g}).pipe(d.fRP("mysql.query",{attributes:{id:b}})),queryWithMeta:(b,c,e,f)=>d.JkU(function*(){let d=yield*k(a,b,c),g=performance.now(),[h,i]=yield*j("queryWithMeta",()=>d.query(e,f)),l=Math.round((performance.now()-g)*100)/100;return Array.isArray(h)&&Array.isArray(i)?{rows:h,fields:i.map(a=>({name:a.name,dataTypeID:a.columnType??0})),rowCount:h.length,command:null,duration:l}:{rows:[],fields:null,rowCount:h.affectedRows??0,command:e.trim().split(/\s+/)[0]?.toUpperCase()||"QUERY",duration:l}}).pipe(d.fRP("mysql.queryWithMeta",{attributes:{id:b}})),withTx:(b,c,e)=>d.JkU(function*(){let f=yield*k(a,b,c),g=yield*j("getConnection",()=>f.getConnection());return yield*j("BEGIN",()=>g.beginTransaction()),yield*e({query:(a,b)=>j("tx.query",()=>g.query(a,b).then(([a])=>a))}).pipe(d.Bio({onSuccess:()=>j("COMMIT",()=>g.commit()),onFailure:()=>j("ROLLBACK",()=>g.rollback()).pipe(d.NWQ(()=>d.rIH))}),d.yeE(d.OH5(()=>g.release())))}).pipe(d.fRP("mysql.withTx",{attributes:{id:b}})),disconnect:b=>d.JkU(function*(){let c=(yield*e.Jt(a)).get(b);c&&(yield*j("disconnect",()=>c.pool.end()).pipe(d.NWQ(()=>d.rIH)),yield*e.yo(a,a=>{let c=new Map(a);return c.delete(b),c}))})})}))},26479:(a,b,c)=>{"use strict";c.d(b,{CR:()=>h,my:()=>i,os:()=>g});var d=c(29021),e=c(33873),f=c(7939);function g(a,b){let c=(0,f.Kk)(a,b);if(d.existsSync(c))return{sessionPath:c,engine:"claude"};let e=(0,f.Xi)(a,b);if(d.existsSync(e))return{sessionPath:e,engine:"deepseek"};let g=(0,f.n2)(a,b);if(d.existsSync(g))return{sessionPath:g,engine:"kimi"};let h=(0,f.Rk)(a,b);if(d.existsSync(h))return{sessionPath:h,engine:"glm"};let i=(0,f.eg)(b);if(i)return{sessionPath:i,engine:"codex"};let j=(0,f.yw)(a,b);return d.existsSync(j)?{sessionPath:j,engine:"ollama"}:null}function h(a){return!!a.engine}function i(a,b,c){switch(a.engine){case"claude":return(0,f.Kk)(b,c);case"deepseek":return(0,f.Xi)(b,c);case"kimi":return(0,f.n2)(b,c);case"glm":return(0,f.Rk)(b,c);case"ollama":return(0,f.yw)(b,c);case"codex":{let a=new Date,b=a=>String(a).padStart(2,"0"),d=String(a.getFullYear()),g=b(a.getMonth()+1),h=b(a.getDate()),i=`${d}-${g}-${h}T${b(a.getHours())}-${b(a.getMinutes())}-${b(a.getSeconds())}`;return(0,e.join)(f.yk,d,g,h,`rollout-${i}-${c}.jsonl`)}default:return null}}},26925:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{J:()=>l,v:()=>m});var e=c(89705),f=c(94506),g=c(34168),h=c(38561),i=c(95606),j=a([f]);f=(j.then?(await j)():j)[0];let n=globalThis,o=n.__cockpitSnapshotToolIndex??(n.__cockpitSnapshotToolIndex=new Map);function k(a){let b=a.message;return Array.isArray(b?.content)?b.content:[]}let p=a=>{f.s9.runFork(a.pipe(e.h9N(a=>e.FFw(`snapshot failed: ${a.message}`))))};function l(a,b,c){a&&p(e.qIB(g.M,d=>d.baseline(a,b,c)))}function m(a,b,c,d){if(a){if("assistant"===d.type){for(let a of k(d))a.id&&a.name&&o.set(a.id,{name:a.name,files:function(a){if(!a)return[];let b=[];return"string"==typeof a.file_path&&a.file_path&&b.push(a.file_path),"string"==typeof a.notebook_path&&a.notebook_path&&b.push(a.notebook_path),b}(a.input),provider:c,detail:function(a){if(a){if("string"==typeof a.description&&a.description)return a.description;if("string"==typeof a.command&&a.command)return a.command}}(a.input)});!function(){if(o.size<=4e3)return;let a=Math.floor(o.size/2);for(let b of o.keys()){if(a--<=0)break;o.delete(b)}}();return}if("user"===d.type)for(let f of k(d)){if(!f.tool_use_id)continue;let d=o.get(f.tool_use_id);if(d&&o.delete(f.tool_use_id),d&&h.W.has(d.name))continue;let j=f.tool_use_id;(0,i.NQ)(a),p(e.qIB(g.M,e=>e.record({cwd:a,sessionKey:b,provider:c,toolId:j,toolName:d?.name??"tool",toolFiles:d?.files??[],toolDetail:d?.detail})).pipe(e.yeE(e.OH5(()=>(0,i.UT)(a)))))}}}d()}catch(a){d(a)}})},28303:a=>{function b(a){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}b.keys=()=>[],b.resolve=b,b.id=28303,a.exports=b},30416:(a,b,c)=>{"use strict";c.d(b,{u:()=>d});let d=c(60177).Io("@cockpit/BotRegistryService")},30816:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{m:()=>q});var e=c(95169),f=c(7939),g=c(79830),h=c(46122),i=c(65699),j=a([h]);h=(j.then?(await j)():j)[0];let l=new Set(["Write","Edit","MultiEdit","NotebookEdit"]),m=new Set(["low","medium","high","xhigh","max"]),n=new Set(["claude-fable-5-1","claude-fable-5","claude-opus-5","claude-opus-4-8"]),o=new Set(["claude-fable-5-1","claude-fable-5","claude-opus-5","claude-opus-4-8","claude-sonnet-5"]),p=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function k(a,b){let c,d,{permissionMode:f}=a.params,g="plan"===f,h=function(a){let b="string"==typeof a.params.model&&a.params.model.trim()?a.params.model.trim():void 0;if(b)return"1m"===a.params.claudeContextWindow?`${b}[1m]`:b}(a),i=function(a){let b="string"==typeof a.params.model?a.params.model.trim():"";if("claude-haiku-4-5"===b)return;let c="string"==typeof a.params.claudeEffort?a.params.claudeEffort:void 0;if(c&&"ultrathink"!==c)return"ultracode"===c?"xhigh":"xhigh"!==c||o.has(b)?"max"===c&&"claude-sonnet-4-6"===b?"high":m.has(c)?c:void 0:"max"}(a),j=(c={},d="string"==typeof a.params.model?a.params.model.trim():"",!0===a.params.claudeFastMode&&(c.fastMode=!0),void 0!==a.params.claudeThinking&&(c.alwaysThinkingEnabled=a.params.claudeThinking),"ultracode"===a.params.claudeEffort&&n.has(d)&&(c.ultracode=!0),Object.keys(c).length>0?c:void 0),k="string"==typeof a.params.newSessionId&&p.test(a.params.newSessionId)?a.params.newSessionId:void 0;return(c,d,f)=>({...b&&!f?{sessionId:d}:d?{resume:d}:!f&&k?{sessionId:k}:{},...a.cwd&&{cwd:a.cwd},...h?{model:h}:{},...i?{effort:i}:{},...j?{settings:j}:{},settingSources:["user","project","local"],permissionMode:g?"plan":"bypassPermissions",...!g&&{allowDangerouslySkipPermissions:!0},...g&&{canUseTool:async(a,b,c)=>(function(a,b,c){if("ExitPlanMode"===a)return{behavior:"deny",message:"Plan presented to the user. There is no approval dialog to click in this environment — the user approves by turning off Plan mode (via the plan card button) and resending, which then executes. Do not ask the user to confirm in a popup; stop here.",interrupt:!0};if(l.has(a)){let d=[b.file_path,b.notebook_path,b.path,c?.blockedPath].find(a=>"string"==typeof a);return d&&/(^|\/)\.claude\/plans\//.test(d)?{behavior:"allow",updatedInput:b}:{behavior:"deny",message:`Plan mode is read-only and this environment has no approval dialog, so "${a}"${d?` on ${d}`:""} can't run. Only writes under .claude/plans/ are allowed. Capture the intended changes in your plan instead of editing files now.`}}return{behavior:"allow",updatedInput:b}})(a,b,c)},includePartialMessages:!0,abortController:c,env:(0,e.ug)({COCKPIT_RUN_ID:a.currentKey(),COCKPIT_CWD:a.cwd||void 0})})}let q={name:"claude",runner:{async run(a){let b=function(a){if("ultrathink"!==a.params.claudeEffort)return a;let b=a.prompt??"";return/\bultrathink\b/i.test(b)?a:{...a,prompt:`Ultrathink:
4
4
  ${b}`}}(a);if(!(!0===b.params.noHistory&&b.sessionId))return void await (0,h.M)(b,k(b,!1));let c=(0,f.Kk)(b.cwd,b.sessionId),d=(0,i.Kk)(c);try{await (0,h.M)(b,k(b,!0))}finally{d&&(0,i.v8)(c)}},resolveTitle:(a,b)=>(0,g.Pn)(a,b)}};d()}catch(a){d(a)}})},33286:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{T:()=>l});var e=c(79830),f=c(82940),g=c(26925),h=c(88151),i=c(55511),j=c(35369),k=a([g]);async function l(a,b,c){let{sessionId:d,images:k,cwd:l,language:m}=b;if(d&&(0,f.yQ)(d))return{ok:!1,status:409,error:"session is already running"};let n=b.prompt,o="string"==typeof n?(0,h.M)(n,m,c):n;if(!(o&&"string"==typeof o||k&&k.length>0))return{ok:!1,status:400,error:"Missing prompt or images"};if(a.preflight){let c=await a.preflight(b);if(!c.ok)return c}let p="string"==typeof o?o:void 0,q=new AbortController,r="string"==typeof b.runId&&b.runId||(0,i.randomUUID)(),s=d||r,t=d,u=!1;if(!(0,f.AD)(s,l||"",p,r))return{ok:!1,status:409,error:"run already active"};(0,f.e5)(s,()=>{u=!0,q.abort()}),l&&d&&(0,e.CS)(l,d,"loading",void 0,p,a.name).catch(()=>{}),(0,g.J)(l||"",s,a.name);let v={prompt:p,images:k,cwd:l||"",sessionId:d,params:b,signal:q.signal,emit(b){u||((0,f.ah)(s,b),(0,g.v)(l||"",s,a.name,b))},rekey(b){b&&((0,f.GS)(s,b),s=b,t=b,l&&(0,e.CS)(l,b,"loading",void 0,p,a.name).catch(()=>{}))},currentKey:()=>s};return(async()=>{try{await a.runner.run(v)}catch(b){if(q.signal.aborted){u=!0,(0,f.HS)(s,"idle");return}if(console.error(`[engine:${a.name}] run error:`,b),v.emit({type:"error",error:(0,j.l)(b)}),(0,f.HS)(s,"error"),u=!0,l&&t){let b=await (0,e.Pn)(l,t).catch(()=>void 0);await (0,e.CS)(l,t,"unread",b,void 0,a.name).catch(()=>{})}return}if(l&&t){let b=await (a.runner.resolveTitle?a.runner.resolveTitle(l,t).catch(()=>void 0):Promise.resolve(void 0));await (0,e.CS)(l,t,"unread",b,void 0,a.name).catch(()=>{})}u=!0,(0,f.HS)(s,"idle")})(),{ok:!0,runKey:s,sessionId:t??null}}g=(k.then?(await k)():k)[0],d()}catch(a){d(a)}})},34104:(a,b,c)=>{"use strict";c.d(b,{I:()=>i});var d=c(89705),e=c(1971),f=c(770),g=c(49818);let h=a=>d.fJG(new f.n_({db:"mongo",op:a,cause:Error("MongoServiceLive not implemented (mongodb driver not installed)")})),i=e.Py(g.g8,g.g8.of({find:()=>h("find"),command:()=>h("command"),disconnect:()=>d.rIH}))},34168:(a,b,c)=>{"use strict";c.d(b,{M:()=>d});let d=c(60177).Io("@cockpit/SnapshotService")},35369:(a,b,c)=>{"use strict";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}c.d(b,{l:()=>d})},35765:(a,b,c)=>{"use strict";c.d(b,{fI:()=>h,yh:()=>j});var d=c(64396),e=c(1971),f=c(78820);let g=a=>{switch((a??"").toLowerCase()){case"all":return d.u8;case"trace":return d.Cn;case"debug":return d.y;case"info":default:return d.R2;case"warning":case"warn":return d.N5;case"error":return d.$D;case"fatal":return d.Lj;case"none":return d.NV}},h=e.Um(f.j9,f.dl(g(process.env.COCKPIT_LOG_LEVEL))),i=async(a,b)=>{let{appendFile:d,mkdir:e}=await Promise.resolve().then(c.t.bind(c,79748,23)),{dirname:f}=await Promise.resolve().then(c.t.bind(c,33873,23));try{await e(f(b),{recursive:!0}),await d(b,a+"\n","utf-8")}catch{}},j=a=>e.Um(f.j9,f.WQ(f.L8(({logLevel:b,message:c,date:d,fiberId:e,spans:f,annotations:g})=>{i(JSON.stringify({time:d.toISOString(),level:b.label,fiber:"object"==typeof e&&null!==e&&"id"in e?e.id:String(e),msg:Array.isArray(c)&&1===c.length?c[0]:c,spans:Array.from(f).map(a=>({label:a.label,startTime:a.startTime})),annotations:Object.fromEntries(g)}),a)})),f.dl(g(process.env.COCKPIT_LOG_LEVEL)))},37871:(a,b,c)=>{"use strict";c.d(b,{P:()=>n});var d=c(89705),e=c(55235),f=c(7517),g=c(20473),h=c(1971),i=c(79298),j=c.n(i),k=c(770),l=c(49818);let m=(a,b)=>d.$mh({try:b,catch:b=>new k.n_({db:"redis",op:a,cause:b})}),n=h.P1(l.HE,d.JkU(function*(){let a=yield*e.L8(new Map);return yield*d.U9h(()=>d.JkU(function*(){let b=yield*e.Jt(a);for(let{client:a}of b.values())yield*d.$mh({try:()=>a.quit(),catch:a=>new k.n_({db:"redis",op:"shutdown quit",cause:a})}).pipe(d.NWQ(()=>d.rIH));yield*e.hZ(a,new Map),yield*d.fH4(`[RedisServiceLive] disposed ${b.size} client(s)`)})),l.HE.of({command:(b,c,f,g)=>d.JkU(function*(){let h=yield*d.JkU(function*(){let f=(yield*e.Jt(a)).get(b);if(f&&f.connectionString===c){if("ready"===f.client.status)return f.client;yield*m("quit",()=>f.client.quit()).pipe(d.NWQ(()=>d.rIH))}else f&&(yield*m("quit",()=>f.client.quit()).pipe(d.NWQ(()=>d.rIH)));let g=yield*m("connect",async()=>{let a=new(j())(c,{lazyConnect:!0,connectTimeout:1e4,maxRetriesPerRequest:1});return await a.connect(),a});return yield*e.yo(a,a=>{let d=new Map(a);return d.set(b,{client:g,connectionString:c,createdAt:Date.now()}),d}),g});return yield*m("call",()=>h.call(f,...g??[]))}).pipe(d.fRP("redis.command",{attributes:{id:b,cmd:f}})),subscribe:(a,b,c)=>f.A2M(d.JkU(function*(){let a=yield*g.dT(),e=yield*d.Q56(m("subscribeConnect",async()=>{let a=new(j())(b,{lazyConnect:!0,connectTimeout:1e4,maxRetriesPerRequest:1});return await a.connect(),a}),a=>d.$mh({try:()=>a.quit(),catch:()=>new k.n_({db:"redis",op:"subscribeQuit",cause:null})}).pipe(d.NWQ(()=>d.rIH))),h=c.includes("*")||c.includes("?");return yield*m("psubscribe",()=>h?e.psubscribe(c):e.subscribe(c)),e.on(h?"pmessage":"message",(...b)=>{let c=h?b[1]:b[0],e=h?b[2]:b[1];d.MY7(g.x(a,{channel:c,message:e}))}),f.gJc(a)})),disconnect:b=>d.JkU(function*(){let c=(yield*e.Jt(a)).get(b);c&&(yield*m("disconnect",()=>c.client.quit()).pipe(d.NWQ(()=>d.rIH)),yield*e.yo(a,a=>{let c=new Map(a);return c.delete(b),c}))})})}))},38003:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{H:()=>p});var e=c(89705),f=c(55235),g=c(1971),h=c(7517),i=c(64939),j=c(770),k=c(49818),l=a([i]);let{Pool:m}=(i=(l.then?(await l)():l)[0]).default,n=(a,b)=>e.$mh({try:b,catch:b=>new j.n_({db:"pg",op:a,cause:b})}),o=(a,b,c)=>e.JkU(function*(){let d=(yield*f.Jt(a)).get(b);if(d&&d.connectionString===c)return d.pool;d&&(yield*n("end",()=>d.pool.end()).pipe(e.NWQ(()=>e.rIH)));let g=new m({connectionString:c,max:5,idleTimeoutMillis:6e4,connectionTimeoutMillis:1e4});return yield*f.yo(a,a=>{let d=new Map(a);return d.set(b,{pool:g,connectionString:c,createdAt:Date.now()}),d}),g}),p=g.P1(k.HG,e.JkU(function*(){let a=yield*f.L8(new Map);return yield*e.U9h(()=>e.JkU(function*(){let b=yield*f.Jt(a);for(let{pool:a}of b.values())yield*e.$mh({try:()=>a.end(),catch:a=>new j.n_({db:"pg",op:"shutdown end",cause:a})}).pipe(e.NWQ(()=>e.rIH));yield*f.hZ(a,new Map),yield*e.fH4(`[PgServiceLive] disposed ${b.size} pool(s)`)})),k.HG.of({query:(b,c,d,f)=>e.JkU(function*(){let e=yield*o(a,b,c);return(yield*n("query",()=>e.query(d,f))).rows}).pipe(e.fRP("pg.query",{attributes:{id:b}})),queryWithMeta:(b,c,d,f)=>e.JkU(function*(){let e=yield*o(a,b,c),g=performance.now(),h=yield*n("queryWithMeta",()=>e.query(d,f)),i=Math.round((performance.now()-g)*100)/100;return{rows:h.rows??[],fields:h.fields?h.fields.map(a=>({name:a.name,dataTypeID:a.dataTypeID})):null,rowCount:h.rowCount??null,command:h.command??null,duration:i}}).pipe(e.fRP("pg.queryWithMeta",{attributes:{id:b}})),stream:(b,c,d,f)=>h.oAg(e.JkU(function*(){let e=yield*o(a,b,c),g=yield*n("query",()=>e.query(d,f));return h.Tsr(g.rows)})),withTx:(b,c,d)=>e.JkU(function*(){let f=yield*o(a,b,c),g=yield*n("connect",()=>f.connect());return yield*n("BEGIN",()=>g.query("BEGIN")),yield*d({query:(a,b)=>n("tx.query",()=>g.query(a,b).then(a=>a.rows))}).pipe(e.Bio({onSuccess:()=>n("COMMIT",()=>g.query("COMMIT")),onFailure:()=>n("ROLLBACK",()=>g.query("ROLLBACK")).pipe(e.NWQ(()=>e.rIH))}),e.yeE(e.OH5(()=>g.release())))}).pipe(e.fRP("pg.withTx",{attributes:{id:b}})),disconnect:b=>e.JkU(function*(){let c=(yield*f.Jt(a)).get(b);c&&(yield*n("disconnect",()=>c.pool.end()).pipe(e.NWQ(()=>e.rIH)),yield*f.yo(a,a=>{let c=new Map(a);return c.delete(b),c}))})})}));d()}catch(a){d(a)}})},38561:(a,b,c)=>{"use strict";c.d(b,{W:()=>d});let d=new Set(["Read","Grep","Glob","LS","WebSearch","WebFetch","NotebookRead","TodoRead","AskUserQuestion","ExitPlanMode","TodoWrite","Skill"])},39876:(a,b,c)=>{"use strict";c.d(b,{a:()=>h,q:()=>g});var d=c(91078),e=c(69310);let f=async(a,b)=>{if(b&&"string"==typeof b.body)try{let a=JSON.parse(b.body);if(Array.isArray(a.messages)){let c=!1;for(let b of a.messages)b&&"assistant"===b.role&&null==b.content&&(b.content="",c=!0);c&&(b={...b,body:JSON.stringify(a)})}}catch{}return fetch(a,b)};async function g(a){let{baseUrl:b,apiKey:c}=await (0,e.jh)();return(0,d.ry)({apiKey:c,baseURL:`${b}/v1/`,fetch:f}).chat(a)}function h(a){return(0,d.ry)({apiKey:a.apiKey,baseURL:a.baseURL}).chat(a.modelName)}},40516:(a,b,c)=>{"use strict";c.d(b,{$G:()=>O,$H:()=>h,BZ:()=>P,Bn:()=>m,C4:()=>e,F3:()=>H,Hq:()=>S,JD:()=>j,L8:()=>Y,RA:()=>d,U6:()=>p,Uk:()=>n,VW:()=>B,Y8:()=>o,Zj:()=>I,dR:()=>F,dr:()=>U,hO:()=>M,iN:()=>C,jB:()=>i,nE:()=>T,nq:()=>Q,o4:()=>K,p7:()=>R,q4:()=>E,tq:()=>N,zB:()=>$});let d="[Image]",e={bash:"Bash",applyPatch:"ApplyPatch",read:"Read",task:"Task",todo:"TodoWrite",webSearch:"WebSearch",webFetch:"WebFetch",imageGeneration:"Write"},f="mcp__",g=(a,b)=>`${f}${a}__${b}`,h="spawn_agent",i="wait_agent",j="agent_message",k="update_plan",l="view_image",m="exec",n=new Set(["apply_patch",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===l?e.read:a}function p(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 q(a){if(a.error?.message)return a.error.message;if(null===a.result||void 0===a.result)return"";if("string"==typeof a.result)return a.result;let b=a.result.content;if(Array.isArray(b)){let a=b.filter(a=>!!a&&"object"==typeof a).filter(a=>"string"==typeof a.text).map(a=>a.text).join("");if(a)return a}return JSON.stringify(a.result,null,2)}let r=/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`/g,s={n:"\n",r:"\r",t:" ",b:"\b",f:"\f",v:"\v",0:"\0"};function t(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)):s[b]??b)}let u=/^[A-Za-z_$][A-Za-z0-9_$]*/,v=/^(-?\d[\d_]*(?:\.\d*)?(?:[eE][+-]?\d+)?|true|false|null|undefined)/,w=a=>{for(;a.i<a.s.length&&/\s/.test(a.s[a.i]);)a.i++};function x(a){let b=a.s[a.i];if('"'!==b&&"'"!==b&&"`"!==b)return null;let c=a.i;for(a.i++;a.i<a.s.length;){let d=a.s[a.i];if("\\"===d){a.i+=2;continue}if(d===b)return a.i++,t(a.s.slice(c,a.i));a.i++}return null}function y(a){if("{"!==a.s[a.i])return null;a.i++;let b={};for(;;){if(w(a),"}"===a.s[a.i])return a.i++,{v:b};if(a.i>=a.s.length)return null;let c=null,d=a.s[a.i];if('"'===d||"'"===d||"`"===d)c=x(a);else{let b=u.exec(a.s.slice(a.i));b&&(c=b[0],a.i+=b[0].length)}if(null===c||(w(a),":"!==a.s[a.i]))return null;a.i++;let e=function a(b){w(b);let c=b.s[b.i];if(void 0===c)return null;if('"'===c||"'"===c||"`"===c){let a=x(b);return null===a?null:{v:a}}if("{"===c)return y(b);if("["===c){var d=b;if("["!==d.s[d.i])return null;d.i++;let c=[];for(;;){if(w(d),"]"===d.s[d.i])return d.i++,{v:c};if(d.i>=d.s.length)return null;let b=a(d);if(!b)return null;if(c.push(b.v),w(d),","===d.s[d.i]){d.i++;continue}if("]"===d.s[d.i])return d.i++,{v:c};return null}return}let e=v.exec(b.s.slice(b.i));if(!e)return null;b.i+=e[0].length;let f=e[0];if("true"===f)return{v:!0};if("false"===f)return{v:!1};if("null"===f||"undefined"===f)return{v:null};let g=Number(f.replace(/_/g,""));return Number.isNaN(g)?null:{v:g}}(a);if(!e)return null;if(b[c]=e.v,w(a),","===a.s[a.i]){a.i++;continue}if("}"===a.s[a.i])return a.i++,{v:b};return null}}function z(a,b){let c=a.indexOf("{",b);if(-1===c)return null;let d=y({s:a,i:c});return d&&d.v&&"object"==typeof d.v?d.v:null}let A=/tools\.([A-Za-z_$][A-Za-z0-9_$]*)\s*\(/g;function B(a){let b,c=function(a){let b;for(r.lastIndex=0;b=r.exec(a);){let a=t(b[0]);if(a.includes("*** Begin Patch"))return a}return null}(a);if(c)return{kind:"patch",patch:c};let d=-1===(b=a.indexOf("tools.exec_command("))?null:z(a,b);if(d)return{kind:"exec",command:"string"==typeof d.cmd?d.cmd:"",args:d};let e=function(a){let b;for(A.lastIndex=0;b=A.exec(a);){let c=b[1];if("exec_command"===c||"apply_patch"===c)continue;let d=z(a,b.index);if(d)return{tool:c,args:d}}return null}(a);return e?{kind:"other",tool:e.tool,args:e.args}:{kind:"unknown"}}function C(a){let b=B(a);return"patch"===b.kind?{name:e.applyPatch,input:function(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}}(b.patch)}:"exec"===b.kind?{name:e.bash,input:U("exec_command",b.args)}:"other"===b.kind?{name:o(b.tool),input:U(b.tool,b.args)}:{name:e.bash,input:{command:a}}}function D(a){let b=JSON.stringify(a)??"";return b.length<=4e3?b:`${b.slice(0,4e3)}… (${b.length} chars truncated)`}function E(a){if(null==a)return"";if("string"==typeof a)return a;if(Array.isArray(a))return a.map(E).join("");if("object"==typeof a){let b=a.text;return"string"==typeof b?b:!function(a){let{type:b,image_url:c}=a;return"string"==typeof c||"input_image"===b||"output_image"===b}(a)?D(a):d}return String(a)}function F(a){if(!a||"token_count"!==a.type)return null;let b=a.info;if(!b||"object"!=typeof b)return null;let c=b.last_token_usage;if(!c||"object"!=typeof c)return null;let d=a=>"number"==typeof c[a]?c[a]:void 0,e={...void 0!==d("input_tokens")?{input_tokens:d("input_tokens")}:{},...void 0!==d("output_tokens")?{output_tokens:d("output_tokens")}:{},...void 0!==d("cached_input_tokens")?{cache_read_input_tokens:d("cached_input_tokens")}:{},...void 0!==d("cache_write_input_tokens")?{cache_creation_input_tokens:d("cache_write_input_tokens")}:{}};return Object.keys(e).length>0?e:null}let G=new Set(["function_call","function_call_output","custom_tool_call","custom_tool_call_output"]);function H(a){if(!a||"string"!=typeof a.type||G.has(a.type))return null;let b="string"==typeof a.call_id?a.call_id:"";return b?{callId:b,name:"string"==typeof a.name&&a.name?a.name:a.type,input:function(a){let b=a.arguments;if(b&&"object"==typeof b&&!Array.isArray(b))return b;if("string"==typeof b&&b.trim()){try{let a=JSON.parse(b);if(a&&"object"==typeof a&&!Array.isArray(a))return a}catch{}return{arguments:b}}return"string"==typeof a.input&&a.input?{input:a.input}:{}}(a)}:null}function I(a){if(void 0!==a.output)return E(a.output);let{type:b,id:c,call_id:d,...e}=a;return Object.keys(e).length>0?D(e):""}let J=new Set(["completed","errored","interrupted","not_found","failed"]);function K(a,b){let c="string"==typeof a.message?a.message:"",d=L.test(c.trim()),e=d?"":c,f="string"==typeof a.agent_type?a.agent_type:"string"==typeof a.task_name?M(a.task_name):void 0;return{...f?{subagent_type:f}:{},description:P(b?.nickname,f,e),...d?{message_encrypted:!0}:{prompt:e},...b?.agentId?{agent_id:b.agentId}:{}}}let L=/^gAAAAA[A-Za-z0-9_-]{32,}={0,2}$/;function M(a){let b=a.split("/").filter(Boolean);return b[b.length-1]||a}function N(a){if(!a)return null;let b=a.item,c="sub_agent_activity"===a.type?{...a,callId:a.event_id}:b&&"SubAgentActivity"===b.type?{...b,callId:b.id}:null;if(!c)return null;let{callId:d,agent_thread_id:e}=c;return"string"==typeof d&&d&&"string"==typeof e&&e?{callId:d,agentThreadId:e,..."string"==typeof c.agent_path?{agentPath:c.agent_path}:{},..."string"==typeof c.kind?{kind:c.kind}:{}}:null}function O(a){if(!a||a.type!==j)return null;let b="string"==typeof a.author?a.author:"";if(!b)return null;let c=Array.isArray(a.content)?a.content.map(a=>"string"==typeof a?.text?a.text:"").join(""):"string"==typeof a.content?a.content:"",d=c.match(/^Message Type:\s*(\S+)/m)?.[1],e=c.match(/^Payload:[ \t]*$/m),f=c;if(e?.index!==void 0){let a=c.indexOf("\n",e.index);-1!==a&&(f=c.slice(a+1))}return{author:b,..."string"==typeof a.recipient?{recipient:a.recipient}:{},text:f.trim()||c.trim(),final:!d||"FINAL_ANSWER"===d}}function P(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 Q(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 R(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:J.has(c)})}return d}function S(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:J.has(c)}]:[]}):[]}function T(a){return a.message||`(agent ${a.status})`}function U(a,b){if(a===h)return K(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(a===l&&"string"==typeof b.path){let{path:a,...c}=b;return{...c,file_path:b.path}}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 V=/^<image\b[^>]*>$/i,W=/<\/?image\b[^>]*>/gi,X=/^data:(image\/(?:png|jpeg|webp|gif));base64,([\s\S]*)$/;function Y(a){return{text:(a?.filter(a=>"input_text"===a.type&&a.text&&!V.test(a.text.trim())).map(a=>a.text).join("")||"").replace(W,""),images:a?.filter(a=>"input_image"===a.type&&a.image_url).map(a=>{let b;return(b=a.image_url.match(X))?{type:"base64",media_type:b[1],data:b[2]}:null}).filter(a=>null!==a)||[]}}let Z=a=>{let b=a.changes;if(!b)return[];let c=a=>{if("string"==typeof a)return a;let b=(a?.kind&&"object"==typeof a.kind?a.kind.type:a?.kind)??a?.type;return"string"==typeof b?b:"update"};return Array.isArray(b)?b.map(a=>({path:a?.path||"",kind:c(a)})):Object.entries(b).map(([a,b])=>({path:a,kind:c(b)}))};function $(a){var b,c,f;let h=a.call_id||a.id||"";if(!h)return null;switch(!(b=a.type)?"":b.replace(/^([A-Z])/,a=>a.toLowerCase()).replace(/([a-z0-9])([A-Z])/g,"$1_$2").toLowerCase()){case"command_execution":return{id:h,name:e.bash,input:{command:"string"==typeof(c=a.command)?c:Array.isArray(c)?c.map(a=>{let b=String(a);return/[\s"'$`\\|&;<>()]/.test(b)?`'${b.replace(/'/g,"'\\''")}'`:b}).join(" "):""},result:a.aggregated_output||`(exit code: ${a.exit_code??"unknown"})`};case"file_change":let i;return{id:h,name:e.applyPatch,input:{changes:Z(a)},result:0===(i=Z(a)).length?"apply_patch":i.map(a=>`${a.kind} ${a.path}`.trim()).join("\n")};case"mcp_tool_call":return{id:h,name:g(a.server||"mcp",a.tool||"tool"),input:a.arguments||{},result:q(a)||`(${a.status||"completed"})`};case"web_search":{let{name:b,input:c,result:d}=p(a.query,a.action);return{id:h,name:b,input:c,result:d}}case"todo_list":{let b,c={todos:(a.items??[]).flatMap(a=>"string"==typeof a?.text?[{content:a.text,status:a.status||(a.completed?"completed":"pending")}]:[])};return{id:h,name:e.todo,input:c,result:(b=(f=c.todos).filter(a=>"completed"===a.status).length,`${b}/${f.length} completed`)}}case"image_view":return{id:h,name:e.read,input:{file_path:a.path||""},result:d};case"image_generation":return{id:h,name:e.imageGeneration,input:{file_path:a.savedPath||"",...a.revisedPrompt?{prompt:a.revisedPrompt}:{}},result:a.savedPath||`(${a.status||"completed"})`};case"dynamic_tool_call":return{id:h,name:g(a.namespace||"tool",a.tool||"call"),input:a.arguments||{},result:q(a)||`(${a.status||"completed"})`};default:return null}}},41726:(a,b,c)=>{"use strict";c.d(b,{iX:()=>h,mw:()=>f,o5:()=>g,oO:()=>i});var d=c(7939);function e(a){return{file:a,async read(){let b=await (0,d.JE)(a,{});return b.apiKey?.trim()??""},async write(b){await (0,d.An)(a,{apiKey:b})}}}let f=e(d.B0),g=e(d.N8),h=e(d.nm);function i(a){return a?a.length<=8?a.replace(/./g,"•"):`${a.slice(0,3)}${"•".repeat(Math.max(4,a.length-7))}${a.slice(-4)}`:""}},44872:(a,b,c)=>{"use strict";c.d(b,{eI:()=>H});var d=c(31421),e=c(77598),f=c(51455),g=c(76760),h=c(69181),i=c(89705),j=c(1971),k=c(75342),l=c(770),m=c(8155),n=c(13286),o=c(7939),p=c(94370),q=c(52139),r=c(48922);let s="#cockpit-corpus v1",t="#---",u=["ollama","deepseek","kimi","glm"],v=a=>{let b=a.split("\n");if(b[0]!==s)return null;let c={};for(let a of b.slice(1,7)){if(a===t)break;let b=a.match(/^#(\w+): ?(.*)$/);b&&(c[b[1]]=b[2])}return c.engine&&c.sessionId?{engine:c.engine,sessionId:c.sessionId,cwd:c.cwd||null,title:c.title??"",updatedAt:Number(c.updatedAt)||0}:null},w=(a,b)=>{let c=a.toLowerCase(),d=b.map(a=>c.indexOf(a.toLowerCase())).filter(a=>a>=0).sort((a,b)=>a-b)[0]??0,e=Math.max(0,d-120),f=Math.min(a.length,d+120);return`${e>0?"…":""}${a.slice(e,f)}${f<a.length?"…":""}`},x=(a,b,c)=>i.$mh({try:c,catch:c=>new l.uU({path:a,op:b,cause:c})}),y=(a,b)=>x(a,"read",()=>(0,f.readFile)(a,"utf8")).pipe(i.qIB(a=>i.SvU(()=>JSON.parse(a))),i.DM4(()=>b)),z=(a,b)=>i.jGc(x(a,"read",()=>(0,f.open)(a,"r")),c=>x(a,"read",async()=>{let a=Buffer.alloc(b),{bytesRead:d}=await c.read(a,0,b,0);return a.subarray(0,d).toString("utf-8")}),a=>i.$mh(()=>a.close()).pipe(i.XeO)),A={mkdir:f.mkdir,writeFile:f.writeFile,rename:f.rename,rm:f.rm},B=async(a,b,c=A)=>{await c.mkdir((0,g.dirname)(a),{recursive:!0});let d=`${a}.${(0,e.randomUUID)()}.tmp`;await c.writeFile(d,b).then(()=>c.rename(d,a)).catch(async a=>{throw await c.rm(d,{force:!0}).catch(()=>void 0),a})},C=a=>x(a,"read",()=>(0,f.readdir)(a)).pipe(i.TjK(a=>a.filter(a=>a.endsWith(".jsonl")&&!a.startsWith("agent-"))),i.DM4(()=>[])),D=i.JkU(function*(){let a=[],b=(b,c)=>i.JkU(function*(){for(let d of yield*x(c,"read",()=>(0,f.readdir)(c,{withFileTypes:!0})).pipe(i.TjK(a=>a.filter(a=>a.isDirectory()).map(a=>a.name)),i.DM4(()=>[])))for(let e of yield*C((0,g.join)(c,d)))a.push({engine:b,sessionId:e.slice(0,-6),sourcePath:(0,g.join)(c,d,e),cwd:null,encodedDir:d})});for(let a of(yield*b("claude",o.mT),u))yield*b(a,(0,o.B3)(a));for(let b of yield*i.SvU(()=>(0,o.Rc)()).pipe(i.DM4(()=>[])))a.push({engine:"codex",sessionId:b.id,sourcePath:b.path,cwd:b.cwd||null,encodedDir:null});return a}),E=a=>z(a,262144).pipe(i.TjK(a=>{for(let b of a.split("\n")){if(!b.includes('"cwd"'))continue;let a=h.Sv(()=>JSON.parse(b));if(h.FG(a)&&"string"==typeof a.right.cwd&&a.right.cwd)return a.right.cwd}return null}),i.DM4(()=>null)),F=(a,b)=>i.JkU(function*(){if(a.cwd)return a.cwd;if("claude"===a.engine){let c=yield*E(a.sourcePath);if(c)return a.encodedDir&&b.set(a.encodedDir,c),c}let c=a.cwd??(a.encodedDir?b.get(a.encodedDir)??null:null);if(c||!a.encodedDir)return c;let d=(0,g.join)(o.mT,a.encodedDir);for(let c of yield*C(d)){let e=yield*E((0,g.join)(d,c));if(e)return b.set(a.encodedDir,e),e}return null}),G=a=>z(a,8192).pipe(i.TjK(v),i.DM4(()=>null)),H=j.QZ(n.m,i.JkU(function*(){let a,b=yield*m.c,c=(0,g.join)(b.cockpitDir,"search-corpus"),e=yield*i.VHZ(16);return n.m.of({sync:e.withPermits(16)((a=b.cockpitDir,i.JkU(function*(){let b,d=(0,g.join)(c,"manifest.json");yield*x(c,"mkdir",()=>(0,f.mkdir)(c,{recursive:!0}));let e=yield*y(d,{}),j=yield*D,k=yield*(b=j.flatMap(a=>a.cwd?[a.cwd]:[]),i.JkU(function*(){let c=new Map,d=a=>{"string"==typeof a&&a&&c.set((0,p.O)(a),a)},e=yield*y((0,g.join)(a,"projects.json"),{}),f=yield*y(o.v4,{});for(let a of e.projects??[])d(a.cwd);for(let a of f.sessions??[])d(a.cwd);for(let a of b)d(a);return c})),m={},n=[];for(let a of j){let b=yield*x(a.sourcePath,"stat",()=>(0,f.stat)(a.sourcePath)).pipe(i.uKv);if("None"===b._tag)continue;let d=`${Math.floor(b.value.mtimeMs)}-${b.value.size}`,h=(0,g.join)(c,a.engine,`${a.sessionId}.txt`),j=e[a.sourcePath],l=void 0!==j&&j.fingerprint===d,o=void 0!==j&&(""===j.corpusPath||"Some"===(yield*x(j.corpusPath,"stat",()=>(0,f.stat)(j.corpusPath)).pipe(i.uKv))._tag);if(l&&o){let c=j.cwd??null,e=null===c?yield*F(a,k):c;if(e===c){m[a.sourcePath]={fingerprint:d,corpusPath:j.corpusPath,cwd:c};continue}n.push({source:a,fingerprint:d,corpusPath:h,mtimeMs:b.value.mtimeMs,cwd:e});continue}n.push({source:a,fingerprint:d,corpusPath:h,mtimeMs:b.value.mtimeMs,cwd:void 0})}let q=yield*i.jJl(n,({source:a,fingerprint:b,corpusPath:c,mtimeMs:d,cwd:g})=>i.JkU(function*(){let j=void 0!==g?g:yield*F(a,k),m=yield*i.gPK(i.$mh({try:()=>"codex"===a.engine?(0,r.Lw)(a.sourcePath):(0,r.qG)(a.sourcePath),catch:b=>new l.uV({message:`failed to parse transcript ${a.sourcePath}`,cause:b})}).pipe(i.TjK(b=>{var c;let e,f,g=b.messages.filter(a=>("user"===a.role||"assistant"===a.role)&&a.content.trim()).map(a=>({role:a.role,content:a.content}));return 0===g.length?null:(c={engine:a.engine,sessionId:a.sessionId,cwd:j,title:b.title,updatedAt:d},e=[s,`#engine: ${c.engine}`,`#sessionId: ${c.sessionId}`,`#cwd: ${c.cwd??""}`,`#title: ${c.title.replace(/\s+/g," ").trim()}`,`#updatedAt: ${Math.floor(c.updatedAt)}`,t],f=g.map(a=>`${"user"===a.role?"U":"A"}: ${a.content.trim()}`),`${e.join("\n")}
5
5
  ${f.join("\n")}
6
6
  `)})));if(h.OC(m))return yield*i.FFw("session search: unreadable transcript, will retry").pipe(i.swY({path:a.sourcePath,error:m.left.message})),[a.sourcePath,e[a.sourcePath]??null];let n=m.right,o=n?x(c,"write",()=>B(c,n)).pipe(i.as({fingerprint:b,corpusPath:c,cwd:j})):x(c,"rm",()=>(0,f.rm)(c,{force:!0})).pipe(i.as({fingerprint:b,corpusPath:"",cwd:j})),p=yield*o.pipe(i.h9N(a=>i.FFw("session search: failed to write corpus file").pipe(i.swY({path:a.path}),i.as(null))));return[a.sourcePath,p]}),{concurrency:4});for(let[a,b]of q)b&&(m[a]=b);let u=0;for(let[a,b]of Object.entries(e))!(void 0!==m[a]||q.some(([b])=>b===a))&&(b.corpusPath&&(yield*x(b.corpusPath,"rm",()=>(0,f.rm)(b.corpusPath,{force:!0})).pipe(i.XeO)),u++);return yield*x(d,"write",()=>B(d,JSON.stringify(m))),{sources:j.length,indexed:Object.values(m).filter(a=>a.corpusPath).length,rebuilt:q.length,removed:u}}))).pipe(i.fRP("sessionSearch.sync")),search:a=>e.withPermits(1)(i.JkU(function*(){let b,e=((a,b)=>{let c=new Map;for(let{file:d,line:e,lineNumber:f}of a){if(f<=7&&5!==f)continue;let a=e.toLowerCase(),g=b.filter(b=>a.includes(b.toLowerCase()));if(0===g.length)continue;let h=c.get(d)??{matchCount:0,matchedTerms:new Set,snippets:[]};h.matchCount++,g.forEach(a=>h.matchedTerms.add(a)),h.snippets.length<3&&h.snippets.push(w(e,g)),c.set(d,h)}return c})((yield*(b=a.terms,i.bIC(a=>{let e=["--json","--ignore-case","--fixed-strings","--max-count","50","--glob","*.txt",...b.flatMap(a=>["-e",a]),c],f=(0,d.execFile)(k.rgPath,e,{maxBuffer:0x4000000,timeout:15e3},(b,c)=>{b&&1!==b.code?a(i.fJG(new l.uV({message:"ripgrep failed",cause:b}))):a(i.PyW(c??""))});return i.OH5(()=>{f.kill()})}))).split("\n").flatMap(a=>{if(!a.startsWith('{"type":"match"'))return[];let b=h.Sv(()=>JSON.parse(a));if(h.OC(b))return[];let c=b.right.data,d=c?.path?.text,e=c?.lines?.text,f=c?.line_number;return d&&"string"==typeof e&&"number"==typeof f?[{file:d,line:e.replace(/\n$/,""),lineNumber:f}]:[]}),a.terms),f=a.cwd?a.cwd.replace(/\/+$/,""):void 0,j=[];for(let[b,c]of e){let d=yield*G((0,g.resolve)(b));d&&(!f||d.cwd===f||d.cwd?.startsWith(`${f}/`))&&(void 0!==a.since&&d.updatedAt<a.since||j.push({...d,link:d.cwd?(0,q.l)(d.cwd,d.sessionId):null,matchCount:c.matchCount,matchedTerms:[...c.matchedTerms],snippets:c.snippets}))}return j.sort((a,b)=>b.matchedTerms.length-a.matchedTerms.length||b.matchCount-a.matchCount||b.updatedAt-a.updatedAt),j.slice(0,a.limit)})).pipe(i.fRP("sessionSearch.search"))})}))},46122:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{M:()=>g});var e=c(19879),f=a([e]);async function g(a,b){let c=!!(a.images&&a.images.length>0),d=[];if(a.images)for(let b of a.images)d.push({type:"image",source:{type:"base64",media_type:b.media_type,data:b.data}});a.prompt&&d.push({type:"text",text:a.prompt});let f=c?d:a.prompt??"",g=new Set,h=()=>{};a.signal.aborted||a.signal.addEventListener("abort",()=>h(),{once:!0});for(let c=0;c<=1;c++){let d=!1,i=new Promise(a=>{h=()=>{d||(d=!0,a())}});a.signal.aborted&&h();let j=c>0,k={type:"user",message:{role:"user",content:j?"continue":f},parent_tool_use_id:null,session_id:a.sessionId||`session-${a.currentKey()}`},l=async function*(){yield k,await i}(),m=function(a){let b=new AbortController;return a.signal.aborted?b.abort():a.signal.addEventListener("abort",()=>b.abort(),{once:!0}),b}(a),n=j?a.currentKey():a.sessionId,o={...j?{...b(m,n,!0),resume:n}:b(m,a.sessionId,!1),stderr:function(){let a=0;return b=>{if(a>1e4)return;a+=b.length;let c=b.trimEnd();c&&console.error(`[claude:stderr] ${c}`),a>1e4&&console.error("[claude:stderr] … further output suppressed")}}()},p=(0,e.query)({prompt:l,options:o}),q=!1;for await(let b of p){if(a.signal.aborted){h();break}if("system"===b.type&&"init"===b.subtype&&b.session_id&&a.rekey(b.session_id),"system"===b.type&&"background_tasks_changed"===b.subtype)for(let a of(g.clear(),b.tasks??[]))a.ambient||g.add(a.task_id);"system"===b.type&&"task_started"===b.subtype&&b.task_id&&!b.ambient&&g.add(b.task_id),"system"===b.type&&"task_notification"===b.subtype&&b.task_id&&g.delete(b.task_id),"result"===b.type&&(q=!0),a.emit(b),"result"===b.type&&0===g.size&&h()}if(h(),q||a.signal.aborted)break}}e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},46303:(a,b,c)=>{"use strict";c.d(b,{N:()=>d});let d=c(60177).Io("@cockpit/AgentService")},46690:(a,b,c)=>{"use strict";c.d(b,{g:()=>f,m2:()=>e});let d=new Set(["completed","failed","stopped"]);function e(a){return"object"!=typeof a||null===a||!0!==a.isAsync&&"async_launched"!==a.status?null:"string"==typeof a.agentId&&a.agentId?a.agentId:null}function f(a){var b;if(!a.includes("<task-notification>"))return null;let c=b=>a.match(RegExp(`<${b}>([\\s\\S]*?)</${b}>`))?.[1]?.trim()||void 0,e="string"==typeof(b=c("status"))&&d.has(b)?b:null;return{taskId:c("task-id"),toolUseId:c("tool-use-id"),...e?{status:e}:{},summary:c("summary")}}},48922:(a,b,c)=>{"use strict";c.d(b,{Lw:()=>o,qG:()=>k,qr:()=>m});var d=c(29021),e=c(4984),f=c(98084),g=c(46690),h=c(89812),i=c(1613),j=c(40516);async function k(a,b={}){let c,{limit:j,beforeTurnIndex:m,fromTurnIndex:o}=b,p=d.createReadStream(a),q=e.createInterface({input:p,crlfDelay:1/0}),r=[],s="",t="",u=[];for await(let a of q)try{let b=JSON.parse(a);if("user"===b.type||"assistant"===b.type){if("user"===b.type&&r.length>0){let a=r[r.length-1];if("user"===a.type&&a.timestamp&&b.timestamp&&1e3>Math.abs(new Date(b.timestamp).getTime()-new Date(a.timestamp).getTime())&&JSON.stringify(a.message?.content)===JSON.stringify(b.message?.content))continue}if(r.push(b),"assistant"===b.type&&b.message?.usage&&(c=b.message.usage),(0,f.l)(b)&&b.message?.content){let a=b.message.content;if("string"==typeof a)u.push(a);else if(Array.isArray(a))for(let b of a.filter(a=>"text"===a.type))b.text&&u.push(b.text)}}"ai-title"===b.type&&b.aiTitle&&(s=b.aiTitle),"summary"===b.type&&b.summary&&(t=b.summary)}catch{}let v=function(a){let b=[],c=null,d=!1,e=new Map,h=new Map,j=new Map;for(let b of a){if("user"===b.type&&b.message?.content&&Array.isArray(b.message.content)){for(let a of b.message.content)if("tool_result"===a.type&&a.tool_use_id){e.set(a.tool_use_id,a.content||"");let c=(0,g.m2)(b.toolUseResult);c&&j.set(a.tool_use_id,{status:"unknown",id:c})}}if("user"===b.type&&"task-notification"===(0,f.k)(b)){let a=(0,g.g)(n(b));a?.toolUseId&&a.status&&j.set(a.toolUseId,{...j.get(a.toolUseId),status:a.status,...a.taskId?{id:a.taskId}:{},...a.summary?{summary:a.summary}:{}})}if("user"===b.type&&"skill"===(0,f.k)(b)&&b.sourceToolUseID){let a=n(b);a&&h.set(b.sourceToolUseID,a)}}for(let g of a){if("user"===g.type&&g.message?.role==="user"&&g.message?.content){let a=(0,f.k)(g);if(a){if("skill"!==a){let d=function(a,b){let c=n(a);if("task-notification"===b){let b=c.match(/<summary>([\s\S]*?)<\/summary>/)?.[1]?.trim(),d=c.match(/<status>([\s\S]*?)<\/status>/)?.[1]?.trim();return{id:a.uuid||`sysevent-${Date.now()}`,role:"system",content:b||c.trim().slice(0,200),timestamp:a.timestamp,systemEvent:{kind:"task-notification",detail:c.trim(),...d?{status:d}:{}}}}let d=c.trim();return d?{id:a.uuid||`sysevent-${Date.now()}`,role:"system",content:d,timestamp:a.timestamp,systemEvent:{kind:"meta"}}:null}(g,a);d&&(c&&(b.push(c),c=null),b.push(d))}continue}let d=g.message.content;if("string"==typeof d){c&&(b.push(c),c=null);let a={id:g.uuid||`user-${Date.now()}`,role:"user",content:d,timestamp:g.timestamp};b.push(a);continue}if(!Array.isArray(d))continue;let e=d.filter(a=>"text"===a.type),h=d.filter(a=>"image"===a.type&&a.source);if(e.length>0||h.length>0){c&&(b.push(c),c=null);let a={id:g.uuid||`user-${Date.now()}`,role:"user",content:e.map(a=>a.text||"").join("\n"),timestamp:g.timestamp};h.length>0&&(a.images=h.map(a=>({type:"base64",media_type:a.source?.media_type||"image/png",data:a.source?.data||""}))),b.push(a)}}if("assistant"===g.type&&g.message?.content){let a=g.message.content;if(!Array.isArray(a))continue;let b=a.filter(a=>"text"===a.type),f=a.filter(a=>"tool_use"===a.type);if(b.length>0){let a=b.map(a=>a.text||"").join("");c?(c.content=(0,i.yk)(c.content,a,d),c.parts=(0,i.zG)(c.parts,a,d)):c={id:g.uuid||`assistant-${Date.now()}`,role:"assistant",content:a,parts:(0,i.zG)([],a),timestamp:g.timestamp,toolCalls:[]},d=!1}if(f.length>0)for(let a of(c||(c={id:g.uuid||`assistant-${Date.now()}`,role:"assistant",content:"",parts:[],timestamp:g.timestamp,toolCalls:[]}),d=!0,f))a.name&&a.id&&(c.parts=(0,i.ur)(c.parts,a.id),c.toolCalls.push({id:a.id,name:a.name,input:a.input||{},result:e.get(a.id),isLoading:!1,...j.has(a.id)?{task:j.get(a.id)}:{},...h.has(a.id)?{skillContent:h.get(a.id)}:{}}))}}return c&&b.push(c),b}(r),w=(0,h.K)(s,t,u),x=l(v),y=x.length;if(void 0===j&&void 0===o)return{messages:v,title:w,usage:c,totalTurns:y,hasMore:!1,startTurnIndex:0};let z=void 0!==m?m:y,A=void 0!==o?Math.min(Math.max(0,o),z):Math.max(0,z-j),B=A>0;return{messages:x.slice(A,z).flat(),title:w,usage:c,totalTurns:y,hasMore:B,startTurnIndex:A}}function l(a){let b=[],c=[];for(let d of a)"user"===d.role?(c.length>0&&b.push(c),c=[d]):c.push(d);return c.length>0&&b.push(c),b}async function m(a,b){let c="codex"===b?await o(a):await k(a),d=l(c.messages),e=[];return d.forEach((a,b)=>{let c=a[0];c?.role==="user"&&e.push({id:c.id,turnIndex:b,timestamp:c.timestamp,content:c.content})}),{entries:e,totalTurns:d.length,title:c.title}}function n(a){let b=a.message?.content;return"string"==typeof b?b:Array.isArray(b)?b.filter(a=>"text"===a.type).map(a=>a.text||"").join("\n"):""}async function o(a){let b,c=d.createReadStream(a),f=e.createInterface({input:c,crlfDelay:1/0}),g=[],h=null,k="Untitled Session",l=0,m=!1,n=new Map,o=new Map,p=new Set,q=new Map,r=new Set,s=new Map,t=()=>{h&&(g.push(h),h=null,m=!1)},u=a=>(h||(h={id:`codex-assistant-${l++}`,role:"assistant",content:"",parts:[],toolCalls:[],timestamp:a}),h);for await(let a of f){let c;if(!a.trim())continue;try{c=JSON.parse(a)}catch{continue}let{type:d,payload:e,timestamp:f}=c;if(e){if("response_item"===d){if("message"===e.type&&"user"===e.role){let{text:a,images:b}=(0,j.L8)(e.content);if(0===b.length&&(!a||a.startsWith("<")||a.startsWith("#")))continue;t(),g.push({id:`codex-user-${l++}`,role:"user",content:a,...b.length>0?{images:b}:{},timestamp:f}),"Untitled Session"===k&&(k=(a||j.RA).slice(0,80))}if("message"===e.type&&"assistant"===e.role){let a=e.content?.filter(a=>"output_text"===a.type&&a.text).map(a=>a.text).join("")||"";if(a){let b=u(f);b.content=(0,i.yk)(b.content||"",a,m),b.parts=(0,i.zG)(b.parts,a,m),m=!1}}if(e.type,e.type===j.JD){let a=(0,j.$G)(e);if(a?.final&&a.text){let b=s.get(a.author);b&&(b.result=a.text)}}if("function_call"===e.type&&e.name){let a=e.name;if(a===j.jB&&e.call_id&&p.add(e.call_id),a===j.$H){let b=u(f),c={};try{c=JSON.parse(e.arguments||"{}")}catch{}b.toolCalls=b.toolCalls||[];let d=e.call_id||`tool-${l++}`;b.parts=(0,i.ur)(b.parts,d);let g={id:d,name:(0,j.Y8)(a),input:(0,j.dr)(a,c),isLoading:!1};b.toolCalls.push(g),q.set(d,g),n.set(d,g),m=!0}}if("function_call_output"===e.type&&e.call_id){let a=e.call_id,b=n.get(a),c=(0,j.q4)(e.output);if(b){let a=(0,j.nq)(c);a&&(o.set(a.agentId,b),b.input={...b.input,agent_id:a.agentId,description:(0,j.BZ)(a.nickname,"string"==typeof b.input.subagent_type?b.input.subagent_type:void 0,"string"==typeof b.input.prompt?b.input.prompt:"")})}else if(p.has(a))for(let a of(0,j.p7)(c)){if(!a.done)continue;let b=o.get(a.agentId);b&&(b.result=(0,j.nE)(a))}else{u(f);let b=q.get(a);b&&(b.result=c,b.isLoading=!1)}}if("custom_tool_call"===e.type&&e.name){let a=j.Uk.has(e.name),b=e.name===j.Bn,c=b?(0,j.VW)(e.input||"").kind:null;if(!(a&&(!b||"exec"===c||"patch"===c))){let b=u(f);b.toolCalls=b.toolCalls||[];let c=e.call_id||`tool-${l++}`;b.parts=(0,i.ur)(b.parts,c);let{name:d,input:g}=a?(0,j.iN)(e.input||""):{name:e.name,input:{input:e.input||""}},h={id:c,name:d,input:g,isLoading:!1};b.toolCalls.push(h),q.set(c,h),m=!0}}if("custom_tool_call_output"===e.type&&e.call_id){u(f);let a=q.get(e.call_id);a&&(a.result=(0,j.q4)(e.output),a.isLoading=!1)}let a=(0,j.F3)(e);if(a){let b=u(f),c=q.get(a.callId);if(c)c.result=(0,j.Zj)(e),c.isLoading=!1;else{b.toolCalls=b.toolCalls||[],b.parts=(0,i.ur)(b.parts,a.callId);let c={id:a.callId,name:a.name,input:a.input,isLoading:!1};b.toolCalls.push(c),q.set(a.callId,c),m=!0}}}if("event_msg"===d){let a=(0,j.tq)(e),b=a?n.get(a.callId):void 0;a&&b&&(o.set(a.agentThreadId,b),a.agentPath&&s.set(a.agentPath,b),b.input={...b.input,agent_id:a.agentThreadId})}if("event_msg"===d&&"item_completed"===e.type&&e.item){let a=(0,j.zB)(e.item);if(a&&!r.has(a.id)){r.add(a.id);let b=u(f);b.toolCalls=b.toolCalls||[],b.parts=(0,i.ur)(b.parts,a.id),b.toolCalls.push({id:a.id,name:a.name,input:a.input,result:a.result,isLoading:!1}),m=!0}}if("event_msg"===d&&"web_search_end"===e.type&&e.call_id&&!r.has(e.call_id)){r.add(e.call_id);let a=u(f),{name:b,input:c,result:d}=(0,j.U6)(e.query,e.action);a.toolCalls=a.toolCalls||[],a.parts=(0,i.ur)(a.parts,e.call_id),a.toolCalls.push({id:e.call_id,name:b,input:c,result:d,isLoading:!1}),m=!0}if("event_msg"===d&&"task_complete"===e.type&&e.error?.message){let a=u(f),b=`⚠️ ${e.error.message}`;a.content=(0,i.yk)(a.content||"",b,!0),a.parts=(0,i.zG)(a.parts,b,!0)}if("event_msg"===d){let a=(0,j.dR)(e);a&&(b=a)}if("response_completed"===d){let a=e.usage;a&&(b=a),t()}}}return t(),{messages:g,title:k,usage:b}}},49818:(a,b,c)=>{"use strict";c.d(b,{HE:()=>g,HG:()=>e,M9:()=>f,g8:()=>i,ge:()=>h});var d=c(60177);let e=d.Io("@cockpit/PgService"),f=d.Io("@cockpit/MySQLService"),g=d.Io("@cockpit/RedisService"),h=d.Io("@cockpit/Neo4jService"),i=d.Io("@cockpit/MongoService")},52139:(a,b,c)=>{"use strict";function d(a,b){return`/project?cwd=${encodeURIComponent(a)}&sessionId=${encodeURIComponent(b)}&view=agent`}c.d(b,{l:()=>d})},52272:(a,b,c)=>{"use strict";c.d(b,{ND:()=>F});var d=c(22461),e=c(79646),f=c(41204),g=c(29021),h=c(33873);let i={"x86_64-unknown-linux-musl":"@openai/codex-linux-x64","aarch64-unknown-linux-musl":"@openai/codex-linux-arm64","x86_64-apple-darwin":"@openai/codex-darwin-x64","aarch64-apple-darwin":"@openai/codex-darwin-arm64","x86_64-pc-windows-msvc":"@openai/codex-win32-x64","aarch64-pc-windows-msvc":"@openai/codex-win32-arm64"},j=a=>{try{return(0,g.statSync)(a).isFile()}catch{return!1}};function k(...a){return a.filter(a=>{try{return(0,g.statSync)(a).isDirectory()}catch{return!1}})}class l extends Error{constructor(a){super(a),this.name="CodexAppServerAborted"}}class m extends Error{constructor(a,b,c){super(a),this.code=b,this.data=c,this.name="CodexAppServerError"}}class n{constructor(a,b){for(const c of(this.opts=b,this.pending=new Map,this.nextId=1,this.closed=!1,this.exitReason=null,this.child=a,o(a.stdout,a=>this.onLine(a)),o(a.stderr,a=>{a.trim()&&b.onStderr?.(a)}),a.on("error",a=>this.fail(a)),[a.stdin,a.stdout,a.stderr]))c.on("error",a=>this.fail(a));a.on("exit",(a,b)=>{this.fail(new m(`codex app-server exited (${b?`signal ${b}`:`code ${a??"null"}`})`))})}static start(a){let b=function(){let a,b=function(a=process.platform,b=process.arch){switch(a){case"linux":case"android":if("x64"===b)return"x86_64-unknown-linux-musl";if("arm64"===b)return"aarch64-unknown-linux-musl";return null;case"darwin":if("x64"===b)return"x86_64-apple-darwin";if("arm64"===b)return"aarch64-apple-darwin";return null;case"win32":if("x64"===b)return"x86_64-pc-windows-msvc";if("arm64"===b)return"aarch64-pc-windows-msvc";return null;default:return null}}();if(!b)throw Error(`Codex: unsupported platform ${process.platform} (${process.arch})`);let c=i[b],d=process.env.COCKPIT_ROOT||process.cwd(),e="win32"===process.platform?"codex.exe":"codex";for(let f of(a=c.split("/"),[(0,h.join)(d,"node_modules",...a),(0,h.join)(d,"node_modules","@openai/codex","node_modules",...a)])){let a=(0,h.join)(f,"vendor",b),c=(0,h.join)(a,"bin",e);if(j(c)&&j((0,h.join)(a,"codex-package.json")))return{executablePath:c,pathDirs:k((0,h.join)(a,"codex-path"))};let d=(0,h.join)(a,"codex",e);if(j(d))return{executablePath:d,pathDirs:k((0,h.join)(a,"path"))}}throw Error(`Codex: cannot locate ${c} under ${d}. Reinstall so npm fetches optional dependencies, or run: cockpit update`)}(),c={...a.env};return!function(a,b,c=process.platform){if(0===b.length)return;let d=function(a,b=process.platform){if("win32"!==b)return"PATH";let c=Object.keys(a).filter(a=>"path"===a.toLowerCase());return c.includes("Path")?"Path":c[c.length-1]??"PATH"}(a,c);if("win32"===c)for(let b of Object.keys(a))"path"===b.toLowerCase()&&b!==d&&delete a[b];let e=(a[d]??"").split(h.delimiter).filter(a=>a.length>0&&!b.includes(a));a[d]=[...b,...e].join(h.delimiter)}(c,b.pathDirs),new n((0,e.spawn)(b.executablePath,["app-server"],{cwd:a.cwd,env:c,stdio:["pipe","pipe","pipe"]}),a)}fail(a){if(!this.exitReason){for(let[,b]of(this.exitReason=a,this.pending))b.reject(a);this.pending.clear(),this.opts.onClosed?.(a)}}onLine(a){let b;if(!a.trim())return;try{b=JSON.parse(a)}catch{return}let c=b.id;if("number"==typeof c&&"string"==typeof b.method)return void this.write({id:c,error:{code:-32601,message:`Unhandled server request: ${b.method}`}});if("number"==typeof c){let a=this.pending.get(c);if(!a)return;this.pending.delete(c);let d=b.error;d?a.reject(new m(d.message??"codex app-server error",d.code,d.data)):a.resolve(b.result??{});return}if("string"==typeof b.method)try{this.opts.onNotification({method:b.method,params:b.params??{}})}catch(a){this.fail(a instanceof Error?a:new m(String(a)))}}write(a){this.closed||this.child.stdin.write(`${JSON.stringify(a)}
@@ -8,7 +8,7 @@ ${f.join("\n")}
8
8
 
9
9
  ${c.text}
10
10
 
11
- </details>`}]}}));let d=(0,A.zB)(c);d&&(q.has(d.id)||(H(d.input.command||d.name,`tool-start:${d.id}`),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:d.id,name:d.name,input:d.input}]}})),H(d.result,`tool-result:${d.id}`),a.emit({type:"user",message:{content:[{tool_use_id:d.id,content:d.result}]}}),q.delete(d.id)),"collab_tool_call"===c.type&&(b=>{if(b.tool===A.$H)return(a=>{var b;let c=a.receiver_thread_ids??[],d=t,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}(z(d).spawn,v+w,c[0]):null;w+=1;let f=(b=a).call_id||b.id||`tool-${(0,u.randomUUID)()}`;if(D.has(f))return;let g=e?.args&&Object.keys(e.args).length>0?e.args:{message:a.prompt||""},h=(0,A.o4)(g,{nickname:e?.nickname,agentId:c[0]||e?.agentId});for(let a of c)y.set(a,f);F(f,h,e?.agentPath)})(b);for(let c of(0,A.Hq)(b.agents_states)){if(!c.done)continue;let b=y.get(c.agentId);b&&(a.emit({type:"user",message:{content:[{tool_use_id:b,content:(0,A.nE)(c)}]}}),q.delete(b),y.delete(c.agentId))}})(c);break}case"item.started":{let c=b.item;if(c){let b=(0,A.zB)(c);b&&!q.has(b.id)&&(q.set(b.id,b.id),H(b.input.command||b.name,`tool-start:${b.id}`),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:b.id,name:b.name,input:b.input}]}}))}break}case"turn.completed":{G(!0);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":n=!0,o=Error(b.error?.message||"Codex turn failed");break;case"error":n=!0,o=Error(b.message||"Codex error")}},bindRollout:a=>{a&&a!==t&&(t=a,B=!1,C())},noteAssistantText(a){n||H(a)},assertSuccess(){if(o)throw o}}}(a),l=new r,m=null,o=null,p=new Promise(a=>{o=a}),q=null;try{e=n.start({env:(0,t.u)({COCKPIT_RUN_ID:a.currentKey()}),...a.cwd?{cwd:a.cwd}:{},onNotification:b=>{for(let c of l.handle(b)){if("text-delta"===c.kind){k.noteAssistantText(c.text),a.emit({type:"stream_event",event:{type:"content_block_delta",delta:{type:"text_delta",text:c.text}}});continue}k.handle(c.event),"turn.completed"===c.event.type&&(m="completed"),"turn.failed"===c.event.type&&(m="failed")}m&&o?.()},onStderr:a=>console.error(`[codex app-server] ${a}`),onClosed:a=>{q=a,o?.()}})}catch(a){throw C(j),a}let w=()=>e.dispose(!0);a.signal.aborted?w():a.signal.addEventListener("abort",w,{once:!0});let x=()=>{if(a.signal.aborted)throw Error("codex run aborted during startup")};try{let b,d;await e.request("initialize",{clientInfo:{name:"cockpit",title:"Cockpit",version:"1"},capabilities:{experimentalApi:!0}}),e.notify("initialized"),x();let f=(d=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),{...a.params.model?{model:a.params.model}:{},...d?{effort:d}:{},...a.cwd?{cwd:a.cwd}:{},sandbox:"danger-full-access",approvalPolicy:"never"}),g=null;if(a.sessionId)try{b=await e.request("thread/resume",{threadId:a.sessionId,...f})}catch(c){g=c instanceof Error?c.message:String(c),console.error(`[codex app-server] thread/resume failed for ${a.sessionId} — starting a fresh thread (history not carried over): ${g}`),b=await e.request("thread/start",f)}else b=await e.request("thread/start",f);let h=b.thread,i=h?.id;if(!i)throw Error("codex app-server returned no thread id");k.bindRollout(h?.path),l.bindThread(i),k.handle({type:"thread.started",thread_id:i}),g&&a.emit({type:"system",subtype:"notice",notice:"codex_resume_failed",previous_session_id:a.sessionId,session_id:i,error:g}),x();let n=await e.request("turn/start",{threadId:i,input:(c=a.prompt??"",[{type:"text",text:j.length>0?c||A.RA:c},...j.map(a=>({type:"localImage",path:a}))])});a.signal.removeEventListener("abort",w);let o=n.turn?.id;if(o&&l.noteOwnTurn(i,o),await Promise.race([p,new Promise(b=>{if(a.signal.aborted)return b();a.signal.addEventListener("abort",()=>b(),{once:!0})})]),a.signal.aborted&&await D(e,l),k.assertSuccess(),q&&!a.signal.aborted&&!m)throw q}finally{a.signal.removeEventListener("abort",w),e.dispose(),C(j)}}let F={name:"codex",runner:{async run(a){if(!0!==a.params.noHistory||!a.sessionId)return void await E(a);let b=(0,s.eg)(a.sessionId),c=!!b&&function(a){if(!g.existsSync(a))return!1;let b=w(a);g.existsSync(b)&&z(a);let c=x(a)[0];if(!c||!y(c))throw Error(`Cannot run Codex independent task: ${a} has no session_meta`);g.mkdirSync((0,h.dirname)(b),{recursive:!0}),g.renameSync(a,b);try{g.writeFileSync(a,`${c}
11
+ </details>`}]}}));let d=(0,A.zB)(c);d&&(q.has(d.id)||(H(d.input.command||d.name,`tool-start:${d.id}`),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:d.id,name:d.name,input:d.input}]}})),H(d.result,`tool-result:${d.id}`),a.emit({type:"user",message:{content:[{tool_use_id:d.id,content:d.result}]}}),q.delete(d.id)),"collab_tool_call"===c.type&&(b=>{if(b.tool===A.$H)return(a=>{var b;let c=a.receiver_thread_ids??[],d=t,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}(z(d).spawn,v+w,c[0]):null;w+=1;let f=(b=a).call_id||b.id||`tool-${(0,u.randomUUID)()}`;if(D.has(f))return;let g=e?.args&&Object.keys(e.args).length>0?e.args:{message:a.prompt||""},h=(0,A.o4)(g,{nickname:e?.nickname,agentId:c[0]||e?.agentId});for(let a of c)y.set(a,f);F(f,h,e?.agentPath)})(b);for(let c of(0,A.Hq)(b.agents_states)){if(!c.done)continue;let b=y.get(c.agentId);b&&(a.emit({type:"user",message:{content:[{tool_use_id:b,content:(0,A.nE)(c)}]}}),q.delete(b),y.delete(c.agentId))}})(c);break}case"item.started":{let c=b.item;if(c){let b=(0,A.zB)(c);b&&!q.has(b.id)&&(q.set(b.id,b.id),H(b.input.command||b.name,`tool-start:${b.id}`),a.emit({type:"assistant",message:{content:[{type:"tool_use",id:b.id,name:b.name,input:b.input}]}}))}break}case"turn.completed":{G(!0);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":n=!0,o=Error(b.error?.message||"Codex turn failed");break;case"error":n=!0,o=Error(b.message||"Codex error")}},bindRollout:a=>{a&&a!==t&&(t=a,B=!1,C())},noteAssistantText(a){n||H(a)},assertSuccess(){if(o)throw o}}}(a),l=new r,m=null,o=null,p=new Promise(a=>{o=a}),q=null;try{e=n.start({env:(0,t.ug)({COCKPIT_RUN_ID:a.currentKey(),COCKPIT_CWD:a.cwd||void 0}),...a.cwd?{cwd:a.cwd}:{},onNotification:b=>{for(let c of l.handle(b)){if("text-delta"===c.kind){k.noteAssistantText(c.text),a.emit({type:"stream_event",event:{type:"content_block_delta",delta:{type:"text_delta",text:c.text}}});continue}k.handle(c.event),"turn.completed"===c.event.type&&(m="completed"),"turn.failed"===c.event.type&&(m="failed")}m&&o?.()},onStderr:a=>console.error(`[codex app-server] ${a}`),onClosed:a=>{q=a,o?.()}})}catch(a){throw C(j),a}let w=()=>e.dispose(!0);a.signal.aborted?w():a.signal.addEventListener("abort",w,{once:!0});let x=()=>{if(a.signal.aborted)throw Error("codex run aborted during startup")};try{let b,d;await e.request("initialize",{clientInfo:{name:"cockpit",title:"Cockpit",version:"1"},capabilities:{experimentalApi:!0}}),e.notify("initialized"),x();let f=(d=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),{...a.params.model?{model:a.params.model}:{},...d?{effort:d}:{},...a.cwd?{cwd:a.cwd}:{},sandbox:"danger-full-access",approvalPolicy:"never"}),g=null;if(a.sessionId)try{b=await e.request("thread/resume",{threadId:a.sessionId,...f})}catch(c){g=c instanceof Error?c.message:String(c),console.error(`[codex app-server] thread/resume failed for ${a.sessionId} — starting a fresh thread (history not carried over): ${g}`),b=await e.request("thread/start",f)}else b=await e.request("thread/start",f);let h=b.thread,i=h?.id;if(!i)throw Error("codex app-server returned no thread id");k.bindRollout(h?.path),l.bindThread(i),k.handle({type:"thread.started",thread_id:i}),g&&a.emit({type:"system",subtype:"notice",notice:"codex_resume_failed",previous_session_id:a.sessionId,session_id:i,error:g}),x();let n=await e.request("turn/start",{threadId:i,input:(c=a.prompt??"",[{type:"text",text:j.length>0?c||A.RA:c},...j.map(a=>({type:"localImage",path:a}))])});a.signal.removeEventListener("abort",w);let o=n.turn?.id;if(o&&l.noteOwnTurn(i,o),await Promise.race([p,new Promise(b=>{if(a.signal.aborted)return b();a.signal.addEventListener("abort",()=>b(),{once:!0})})]),a.signal.aborted&&await D(e,l),k.assertSuccess(),q&&!a.signal.aborted&&!m)throw q}finally{a.signal.removeEventListener("abort",w),e.dispose(),C(j)}}let F={name:"codex",runner:{async run(a){if(!0!==a.params.noHistory||!a.sessionId)return void await E(a);let b=(0,s.eg)(a.sessionId),c=!!b&&function(a){if(!g.existsSync(a))return!1;let b=w(a);g.existsSync(b)&&z(a);let c=x(a)[0];if(!c||!y(c))throw Error(`Cannot run Codex independent task: ${a} has no session_meta`);g.mkdirSync((0,h.dirname)(b),{recursive:!0}),g.renameSync(a,b);try{g.writeFileSync(a,`${c}
12
12
  `,"utf-8")}catch(c){throw g.existsSync(b)&&!g.existsSync(a)&&g.renameSync(b,a),c}return!0}(b);try{await E(a)}finally{c&&b&&z(b)}}}}},56180:(a,b,c)=>{"use strict";c.d(b,{u:()=>h});var d=c(7939),e=c(59419),f=c(39876);let g={sessionsRoot:(0,d.B3)("ollama"),defaultModel:"qwen3.5:35b-a3b-coding-nvfp4",createModel:a=>(0,f.q)(a)},h={name:"ollama",preflight:async a=>(0,e.p)(a),runner:{run:a=>(0,e.o)(a,g)}}},58120:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{kT:()=>E});var e=c(51455),f=c(76760),g=c(77598),h=c(31840),i=c(89705),j=c(69181),k=c(1971),l=c(55235),m=c(770),n=c(8155),o=c(77654),p=c(52139),q=c(33286),r=c(81869),s=c(82940),t=c(26479),u=c(48922),v=a([r,q]);[r,q]=v.then?(await v)():v;let w=["claude","codex","deepseek","kimi","glm","ollama"],x=h.YA(60),y=1048576,z=a=>"string"==typeof a&&a.trim()?a.trim():void 0,A=(a,b)=>new m.yI({field:a,reason:b}),B=a=>i.JkU(function*(){let b=z(a.cwd);if(!b||!(0,f.isAbsolute)(b))return yield*i.fJG(A("cwd","must be an absolute path"));if(!(yield*i.$mh(()=>(0,e.stat)(b)).pipe(i.TjK(a=>a.isDirectory()),i.DM4(()=>!1))))return yield*i.fJG(A("cwd","directory does not exist"));let c=z(a.engine)??"claude";if(!w.includes(c))return yield*i.fJG(A("engine",`expected one of ${w.join(", ")}`));let d=z(a.prompt),g=z(a.briefPath);if(!d&&!g)return yield*i.fJG(A("prompt","prompt or briefPath is required"));if(g){if(!(0,f.isAbsolute)(g))return yield*i.fJG(A("briefPath","must be an absolute path"));if(!(yield*i.$mh(()=>(0,e.stat)(g)).pipe(i.TjK(a=>a.isFile()),i.DM4(()=>!1))))return yield*i.fJG(A("briefPath","file does not exist"))}let h=d?d.split("\n")[0]:(0,f.basename)(g),j=(z(a.title)??h).replace(/\s+/g," ").slice(0,80),k=z(a.model);return{cwd:b,engine:c,title:j,...k&&{model:k},...d&&{prompt:d},...g&&{briefPath:g}}}),C=(a,b)=>{let c=a.split("\n");return(b?c.slice(1):c).flatMap(a=>{if(!a.trim())return[];let b=j.Sv(()=>JSON.parse(a));return j.FG(b)?[b.right]:[]})},D=(a,b)=>i.jGc(i.$mh({try:()=>(0,e.open)(a,"r"),catch:b=>new m.uV({message:`failed to open transcript ${a}`,cause:b})}),c=>i.$mh({try:async()=>{let{size:a}=await c.stat(),d=Math.min(a,b),e=Buffer.alloc(d);return await c.read(e,0,d,a-d),{text:e.toString("utf-8"),cut:a>d}},catch:b=>new m.uV({message:`failed to read transcript ${a}`,cause:b})}),a=>i.$mh(()=>a.close()).pipe(i.XeO)),E=k.QZ(o._,i.JkU(function*(){let a=(yield*n.c).delegateMaxConcurrent,b=yield*l.L8({runs:[],reserved:0}),c=l.JP(b,b=>{var c;let d;return c=s.yQ,(d=b.runs.filter(c)).length+b.reserved>=a?[!1,{runs:d,reserved:b.reserved}]:[!0,{runs:d,reserved:b.reserved+1}]}).pipe(i.W$I(a=>a,()=>A("engine",`too many delegated sessions running (max ${a}); try again when one finishes`)),i.NLW),d=l.yo(b,a=>({...a,reserved:a.reserved-1}));return o._.of({validate:B,delegate:(a,e)=>i.JkU(function*(){let h=(0,r.E)(a.engine);if(!h)return yield*i.fJG(A("engine",`no engine spec for ${a.engine}`));let j=yield*i.OH5(()=>{if(!e)return null;let a=(0,s.K4)(e);return a?.cwd&&a.sessionId?{cwd:a.cwd,sessionId:a.sessionId,link:(0,p.l)(a.cwd,a.sessionId)}:null}),k=(0,g.randomUUID)(),n=yield*i.jGc(c,()=>i.JkU(function*(){let c=yield*i.$mh({try:()=>{let b;return(0,q.T)(h,{prompt:(b=[`Task: ${a.title}`],j&&b.push(`[Delegated from Cockpit session ${j.link} (${(0,f.basename)(j.cwd)})]`),b.push(""),a.prompt&&b.push(a.prompt),a.briefPath&&b.push(`Read this task brief first, then carry it out: ${a.briefPath}`),b.join("\n")),cwd:a.cwd,engine:a.engine,runId:k,..."claude"===a.engine&&{newSessionId:k},...a.model&&{model:a.model}})},catch:b=>new m.Yv({provider:a.engine,kind:"unknown",cause:b})});return c.ok?(yield*l.yo(b,a=>({...a,runs:[...a.runs,c.runKey]})),c.runKey):yield*i.fJG(A("engine",c.error))}),()=>d),o="codex"===a.engine?yield*i.bIC(a=>{let b=!1,c=()=>{},d=d=>{b||(b=!0,c(),a(d))},e=(0,s.j$)(n);if(e)return void d(i.PyW(e));c=(0,s.fV)(n,({message:a})=>{if("system"===a.type&&"init"===a.subtype&&"string"==typeof a.session_id&&a.session_id)d(i.PyW(a.session_id));else if("run-ended"===a.type){let b=(0,s.j$)(n);d(b?i.PyW(b):i.fJG(new m.Yv({provider:"codex",kind:"protocol",cause:Error(`run ended (${a.status}) before a session id was assigned`)})))}});let f=(0,s.j$)(n);return f?d(i.PyW(f)):(0,s.yQ)(n)||d(i.fJG(new m.Yv({provider:"codex",kind:"protocol",cause:Error("run ended before a session id was assigned")}))),i.OH5(()=>c())}).pipe(i.ANz({duration:x,onTimeout:()=>new m.Yv({provider:"codex",kind:"timeout",cause:Error("timed out waiting for the session id")})})).pipe(i.sFT(()=>i.OH5(()=>(0,s.Y6)(n)))):k;return{cwd:a.cwd,engine:a.engine,...a.model&&{model:a.model},sessionId:o,link:(0,p.l)(a.cwd,o),title:a.title,createdAt:Date.now(),...j&&{parent:j}}}).pipe(i.fRP("delegation.delegate",{attributes:{engine:a.engine}})),status:(a,b,c)=>{let d;return(d=c?.full===!0,i.JkU(function*(){var c,e;let f,g=yield*i.OH5(()=>(0,s.yQ)(b)),h=yield*i.OH5(()=>(0,t.os)(a,b)),j=(0,p.l)(a,b);if(!h)return g?{cwd:a,sessionId:b,engine:null,title:"",status:"running",lastReply:null,lastReplyTruncated:!1,link:j}:yield*i.fJG(new m.m_({resource:"session",id:b}));let k=yield*i.$mh({try:()=>"codex"===h.engine?(0,u.Lw)(h.sessionPath):(0,u.qG)(h.sessionPath),catch:a=>new m.uV({message:`failed to parse transcript ${h.sessionPath}`,cause:a})}),l=h.engine,n=g?"running":yield*((a,b,c=y)=>i.JkU(function*(){let d=c;for(;;){let c=yield*D(a,d),e=b(C(c.text,c.cut));if(null!==e)return e;if(!c.cut)return"incomplete";d*=4}}))(h.sessionPath,a=>{var b,c,d;let e,f;return"codex"===l?(e=[...a].reverse().find(a=>"event_msg"===a.type&&["task_complete","task_started","turn_aborted"].includes(a.payload?.type??"")))?e.payload?.type!=="task_complete"?"incomplete":e.payload.error?"failed":"done":null:(b=a,c=l,(f=[...b].reverse().find(a=>("user"===a.type||"assistant"===a.type)&&!a.isMeta))?"assistant"!==f.type?"incomplete":"claude"===c?f.isApiErrorMessage?"failed":f.message?.stop_reason==="end_turn"?"done":"incomplete":f.message?.usage!==void 0?"done":(d=f.message?.content,"string"==typeof d?d:!Array.isArray(d)?"":d.filter(a=>!!a&&"object"==typeof a&&"text"===a.type).map(a=>a.text??"").join("")).trimStart().startsWith("⚠️")?"failed":"incomplete":null)});return{cwd:a,sessionId:b,engine:h.engine,title:k.title,status:n,...(c=k.messages,e=d?1/0:4e3,f=[...c].reverse().find(a=>"assistant"===a.role&&a.content.trim())?.content.trim()??null,null===f||f.length<=e?{lastReply:f,lastReplyTruncated:!1}:{lastReply:f.slice(0,e),lastReplyTruncated:!0}),link:j}})).pipe(i.fRP("delegation.status"))}})}));d()}catch(a){d(a)}})},59419:(a,b,c)=>{"use strict";c.d(b,{p:()=>I,o:()=>J});var d=c(78497),e=c(55511),f=c(29021),g=c(33873),h=c(94370);function i(a,b){return(0,g.join)(a,(0,h.O)(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 ====
13
13
  Original: ${o(a.length)} (${a.length} chars) \xb7 Kept: head ${o(l.length)} + tail ${o(m.length)} \xb7 Dropped: ${o(n)}
14
14
  ${p}
@@ -90,23 +90,27 @@ Accuracy:
90
90
 
91
91
  [read lines ${k}-${i} of ${e} — ${l} more line(s) remain; call Read again with offset=${i+1}]`:`
92
92
 
93
- [read lines ${k}-${i} of ${e} — end of file]`;return j+m}catch(a){return`Error reading file: ${a.message}`}}}),Write:(0,n.z6)({description:"Write a file to disk. Params: { thought, file_path (absolute), content }. Creates or overwrites. Prefer Edit for modifying existing files; use Write for new files or full rewrites. Do NOT create documentation (*.md/README) unless explicitly requested."+D,inputSchema:(0,n.jN)(o.object({thought:C,file_path:o.string(),content:o.string()})),execute:async({file_path:a,content:b})=>{try{if(!(0,g.isAbsolute)(a))return"Error: file_path must be an absolute path.";return(0,f.writeFileSync)(a,b,"utf-8"),`File written: ${a}`}catch(a){return`Error writing file: ${a.message}`}}}),Edit:(0,n.z6)({description:"Edit a file by exact string replacement. Params: { thought, replace_all, file_path (absolute), old_string, new_string }. If replace_all is false, replaces the first occurrence. old_string must match exactly."+D,inputSchema:(0,n.jN)(o.object({thought:C,replace_all:o.boolean().default(!1),file_path:o.string(),old_string:o.string(),new_string:o.string()})),execute:async({replace_all:a,file_path:b,old_string:c,new_string:d})=>{try{if(!(0,g.isAbsolute)(b))return"Error: file_path must be an absolute path.";let e=(0,f.readFileSync)(b,"utf-8");if(!e.includes(c))return`Error: old_string not found in ${b}. The file may have changed.`;let h=a?e.split(c).join(d):e.replace(c,d);return(0,f.writeFileSync)(b,h,"utf-8"),`File edited: ${b}`}catch(a){return`Error editing file: ${a.message}`}}}),Bash:(0,n.z6)({description:'Run a shell command. Params: { thought, command, description?, timeout? (ms) }. Output is capped at ~64KB — both head and tail are preserved with an explicit truncation marker. On failure, stderr tail is prioritized (the last lines usually carry the real error). When truncation happens the full output is automatically spilled to a temp file; the marker will include its absolute path — call Read({ file_path, offset, limit }) on that path to page through the complete output WITHOUT re-running the command (critical for expensive or side-effectful commands like builds, installs, or POST requests). IMPORTANT: an EMPTY tool_result is impossible — if the command produced no stdout, the tool returns an explicit "(exit 0 — empty stdout...)" annotation. Do NOT interpret such a result as "output was truncated"; it means the command itself produced nothing (often a bug in the command, e.g. an un-invoked arrow function, a silent failure writing to stderr, or a command that intentionally produces no stdout).'+D,inputSchema:(0,n.jN)(o.object({thought:C,command:o.string(),description:o.string().optional(),timeout:o.number().int().min(1).max(6e5).optional()})),execute:async({command:a,timeout:b})=>{try{let{stdout:c,stderr:d}=await x(a,{cwd:h.cwd,encoding:"utf-8",timeout:b??6e4,maxBuffer:0xa00000,env:(0,w.u)({FORCE_COLOR:"0",CI:"1",COCKPIT_RUN_ID:h.runId})});if(0===c.length){if(0===d.length)return"(exit 0 — empty stdout and empty stderr. The command produced no output at all; NOT a truncation. Common causes: (a) an arrow function was defined but not invoked — wrap as `(async()=>{...})()`; (b) the command intentionally prints nothing on success; (c) output went to a file instead of stdout.)";let a=B(d,63800,{label:"stderr",bias:"tail"});return`(exit 0 — empty stdout; stderr below is NOT an error but a side-channel message since exit code was 0)
93
+ [read lines ${k}-${i} of ${e} — end of file]`;return j+m}catch(a){return`Error reading file: ${a.message}`}}}),Write:(0,n.z6)({description:"Write a file to disk. Params: { thought, file_path (absolute), content }. Creates or overwrites. Prefer Edit for modifying existing files; use Write for new files or full rewrites. Do NOT create documentation (*.md/README) unless explicitly requested."+D,inputSchema:(0,n.jN)(o.object({thought:C,file_path:o.string(),content:o.string()})),execute:async({file_path:a,content:b})=>{try{if(!(0,g.isAbsolute)(a))return"Error: file_path must be an absolute path.";return(0,f.writeFileSync)(a,b,"utf-8"),`File written: ${a}`}catch(a){return`Error writing file: ${a.message}`}}}),Edit:(0,n.z6)({description:"Edit a file by exact string replacement. Params: { thought, replace_all, file_path (absolute), old_string, new_string }. If replace_all is false, replaces the first occurrence. old_string must match exactly."+D,inputSchema:(0,n.jN)(o.object({thought:C,replace_all:o.boolean().default(!1),file_path:o.string(),old_string:o.string(),new_string:o.string()})),execute:async({replace_all:a,file_path:b,old_string:c,new_string:d})=>{try{if(!(0,g.isAbsolute)(b))return"Error: file_path must be an absolute path.";let e=(0,f.readFileSync)(b,"utf-8");if(!e.includes(c))return`Error: old_string not found in ${b}. The file may have changed.`;let h=a?e.split(c).join(d):e.replace(c,d);return(0,f.writeFileSync)(b,h,"utf-8"),`File edited: ${b}`}catch(a){return`Error editing file: ${a.message}`}}}),Bash:(0,n.z6)({description:'Run a shell command. Params: { thought, command, description?, timeout? (ms) }. Output is capped at ~64KB — both head and tail are preserved with an explicit truncation marker. On failure, stderr tail is prioritized (the last lines usually carry the real error). When truncation happens the full output is automatically spilled to a temp file; the marker will include its absolute path — call Read({ file_path, offset, limit }) on that path to page through the complete output WITHOUT re-running the command (critical for expensive or side-effectful commands like builds, installs, or POST requests). IMPORTANT: an EMPTY tool_result is impossible — if the command produced no stdout, the tool returns an explicit "(exit 0 — empty stdout...)" annotation. Do NOT interpret such a result as "output was truncated"; it means the command itself produced nothing (often a bug in the command, e.g. an un-invoked arrow function, a silent failure writing to stderr, or a command that intentionally produces no stdout).'+D,inputSchema:(0,n.jN)(o.object({thought:C,command:o.string(),description:o.string().optional(),timeout:o.number().int().min(1).max(6e5).optional()})),execute:async({command:a,timeout:b})=>{try{let{stdout:c,stderr:d}=await x(a,{cwd:h.cwd,encoding:"utf-8",timeout:b??6e4,maxBuffer:0xa00000,env:(0,w.ug)({FORCE_COLOR:"0",CI:"1",COCKPIT_RUN_ID:h.runId,COCKPIT_CWD:h.cwd||void 0})});if(0===c.length){if(0===d.length)return"(exit 0 — empty stdout and empty stderr. The command produced no output at all; NOT a truncation. Common causes: (a) an arrow function was defined but not invoked — wrap as `(async()=>{...})()`; (b) the command intentionally prints nothing on success; (c) output went to a file instead of stdout.)";let a=B(d,63800,{label:"stderr",bias:"tail"});return`(exit 0 — empty stdout; stderr below is NOT an error but a side-channel message since exit code was 0)
94
94
 
95
95
  --- stderr ---
96
96
  ${a}`}let e=c.length>64e3?await A(c,"bash"):void 0;return B(c,64e3,{label:"stdout",spillPath:e})}catch(f){let a=f.message,b=f.stderr?.toString()||"",c=`Error: ${a}
97
97
  `,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")+`
98
98
 
99
- ...[${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:
99
+ ...[${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.ug)({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:
100
100
  ${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}]}})}
101
101
 
102
102
  `)}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})}
103
103
 
104
- `),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}}},61994:(a,b,c)=>{"use strict";c.d(b,{k7:()=>k,tl:()=>j});var d=c(7939),e=c(79830),f=c(59419),g=c(39876);async function h(){return(0,d.JE)(d.tP,{})}function i(a,b,c){if(!a.regions)return a.endpoints;let d=b.region||a.regions.defaultFor(c);return a.regions.byId[d]??a.endpoints}async function j(a){let b=await h();return i(a,b.engines?.[a.name]??{},b.language)}function k(a){return{name:a.name,async preflight(b){var c,d,e;let g=await h(),i=g.engines?.[a.name]??{};if(!await a.apiKey.read())return{ok:!1,status:400,error:`${a.label} API key is not configured. Open the ${a.label} picker in the chat header to set one.`};let j=(0,f.p)(b);return j.ok?(c="string"==typeof b.model?b.model:void 0,d=i.builtinModel,e=a.defaultModel,b.model="string"==typeof c&&c.trim()?c.trim():d&&d.trim()?d.trim():e,{ok:!0}):j},runner:{async run(b){let c=await a.apiKey.read(),e=await h(),j=e.engines?.[a.name]??{},k=i(a,j,e.language);await (0,f.o)(b,{sessionsRoot:(0,d.B3)(a.name),defaultModel:a.defaultModel,createModel:async a=>(0,g.a)({baseURL:k.openAiBaseUrl,apiKey:c,modelName:a}),...void 0!==a.builtinTemperature&&{temperature:a.builtinTemperature}})},resolveTitle:(a,b)=>(0,e.Pn)(a,b)}}}},64419:(a,b,c)=>{"use strict";c.d(b,{BV:()=>m,Eb:()=>k,Ju:()=>o,S8:()=>n,YN:()=>j,dK:()=>i,kW:()=>p,m6:()=>l,wZ:()=>h});var d=c(89705),e=c(52693);let f=globalThis,g=f.__cockpitSpanRing??={buffer:[],index:new Map};function h(a){if(g.buffer.push(a),g.index.set(a.spanId,g.buffer.length-1),g.buffer.length>500){g.buffer.shift(),g.index.clear();for(let a=0;a<g.buffer.length;a++)g.index.set(g.buffer[a].spanId,a)}}function i(a,b,c){let d=g.index.get(a);if(void 0===d)return;let e=g.buffer[d];if(!e)return;let f=Number(b-BigInt(e.startTimeNs))/1e6;g.buffer[d]={...e,endTimeNs:b.toString(),durationMs:Math.round(100*f)/100,status:"Success"===c._tag?"ok":"error",errorMessage:"Failure"===c._tag?function(a){if(a instanceof Error)return a.message;if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}(c.cause):void 0}}function j(a,b,c){let d=g.index.get(a);if(void 0===d)return;let e=g.buffer[d];e&&(g.buffer[d]={...e,attributes:{...e.attributes,[b]:c}})}function k(a,b,c,d){let e=g.index.get(a);if(void 0===e)return;let f=g.buffer[e];f&&(g.buffer[e]={...f,events:[...f.events,{name:b,timeNs:c.toString(),attributes:d}]})}let l=(a={})=>d.OH5(()=>(function(a={}){let b=g.buffer;if(a.errorsOnly&&(b=b.filter(a=>"error"===a.status)),a.traceId&&(b=b.filter(b=>b.traceId===a.traceId)),a.namePrefix){let c=a.namePrefix;b=b.filter(a=>a.name.startsWith(c))}if("number"==typeof a.minDurationMs){let c=a.minDurationMs;b=b.filter(a=>(a.durationMs??0)>=c)}return"number"==typeof a.limit&&a.limit>0&&(b=b.slice(-a.limit)),b})(a)),m=()=>d.OH5(()=>{g.buffer.length=0,g.index.clear()}),n=()=>d.OH5(()=>({capacity:500,size:g.buffer.length,oldestStartNs:g.buffer[0]?.startTimeNs??null}));function o(a,b,c,d,e,f){return{traceId:b,spanId:a,parentSpanId:c,name:d,kind:e,startTimeNs:f.toString(),endTimeNs:null,durationMs:null,attributes:{},events:[],status:"started"}}function p(a){return e.Ru(a)?a.value.spanId:null}},65699:(a,b,c)=>{"use strict";c.d(b,{Kk:()=>h,v8:()=>i});var d=c(29021),e=c(33873);function f(a){return(0,e.join)(a.replace(/\.jsonl$/,""),"nohistory-backup.jsonl")}function g(a){return d.readFileSync(a,"utf-8").split("\n").filter(a=>a.trim().length>0)}function h(a){if(!d.existsSync(a))return!1;let b=f(a);return d.existsSync(b)&&i(a),d.mkdirSync((0,e.join)(b,".."),{recursive:!0}),d.renameSync(a,b),!0}function i(a){let b=f(a);if(!d.existsSync(b))return"none";let c=g(b),h=d.existsSync(a)?g(a):[];if(0===h.length||!function(a){for(let b of a)try{JSON.parse(b)}catch{return!1}return!0}(h)){var i,j;return i=b,j=a,d.existsSync(j)&&d.unlinkSync(j),d.renameSync(i,j),"restored"}let k=(0,e.basename)(a).replace(/\.jsonl$/,""),l=function(a){for(let b=a.length-1;b>=0;b--)try{let c=JSON.parse(a[b]);if("string"==typeof c.uuid)return c.uuid}catch{}return null}(c),m=[...c,...h.map(a=>(function(a,b,c){try{let d=JSON.parse(a);return b&&"parentUuid"in d&&null===d.parentUuid&&(d.parentUuid=b),"string"==typeof d.sessionId&&(d.sessionId=c),JSON.stringify(d)}catch{return a}})(a,l,k))];return d.writeFileSync(a,m.join("\n")+"\n","utf-8"),d.unlinkSync(b),"merged"}},67928:(a,b,c)=>{"use strict";c.d(b,{SY:()=>h,YR:()=>f});var d=c(41726),e=c(61994);let f="https://api.kimi.com/coding/v1",g={name:"kimi",label:"Kimi",endpoints:{openAiBaseUrl:f},defaultModel:"k3",apiKey:d.o5,builtinTemperature:null},h=(0,e.k7)(g)},69310:(a,b,c)=>{"use strict";c.d(b,{Pg:()=>h,QD:()=>k,jV:()=>i,jh:()=>j});var d=c(7939);let e="http://127.0.0.1:11434";function f(a){return a.replace(/\/v1\/?$/,"").replace(/\/+$/,"")}async function g(){return(0,d.JE)(d.Lr,{})}async function h(a){return(0,d.N9)(d.Lr,{},b=>{let c={...b};if(void 0!==a.baseUrl){let b=a.baseUrl.trim();b?c.baseUrl=b:delete c.baseUrl}if(void 0!==a.apiKey){let b=a.apiKey.trim();b?c.apiKey=b:delete c.apiKey}return c})}async function i(){let a=await g();return f(a.baseUrl?.trim()||process.env.OLLAMA_BASE_URL||e)}async function j(){let a=await g();return{baseUrl:f(a.baseUrl?.trim()||process.env.OLLAMA_BASE_URL||e),apiKey:a.apiKey?.trim()||process.env.OLLAMA_API_KEY||"ollama"}}async function k(){var a;let b,c,d,h,i=await g();return i.baseUrl?.trim()?(b=f(i.baseUrl.trim()),c="file"):process.env.OLLAMA_BASE_URL?(b=f(process.env.OLLAMA_BASE_URL),c="env"):(b=e,c="default"),i.apiKey?.trim()?(d=i.apiKey.trim(),h="file"):process.env.OLLAMA_API_KEY?(d=process.env.OLLAMA_API_KEY,h="env"):(d="",h="default"),{baseUrl:b,baseUrlSource:c,hasKey:!!d,maskedKey:(a=d)?a.length<=8?a.replace(/./g,"•"):`${a.slice(0,3)}${"•".repeat(Math.max(4,a.length-7))}${a.slice(-4)}`:"",keySource:h}}},72587:(a,b,c)=>{"use strict";c.d(b,{gh:()=>g,ux:()=>h});var d=c(41726),e=c(61994);let f={cn:{openAiBaseUrl:"https://open.bigmodel.cn/api/coding/paas/v4"},global:{openAiBaseUrl:"https://api.z.ai/api/coding/paas/v4"}};Object.keys(f);let g={name:"glm",label:"GLM",endpoints:f.cn,regions:{byId:f,defaultFor:function(a){return"en"===a?"global":"cn"}},defaultModel:"glm-5.3",apiKey:d.iX},h=(0,e.k7)(g)},72891:(a,b,c)=>{"use strict";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)}})},77654:(a,b,c)=>{"use strict";c.d(b,{_:()=>d});let d=c(60177).Io("@cockpit/DelegationService")},81869:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{E:()=>l});var e=c(30816),f=c(86184),g=c(56180),h=c(67928),i=c(72587),j=c(52272),k=a([e]);let m={claude:(e=(k.then?(await k)():k)[0]).m,deepseek:f.e,ollama:g.u,kimi:h.SY,glm:i.ux,codex:j.ND};function l(a){return m[a??"claude"]}d()}catch(a){d(a)}})},82843:(a,b,c)=>{"use strict";c.d(b,{i:()=>i});var d=c(1971),e=c(89705),f=c(55235),g=c(27968);let h=c(60177).Io("@cockpit/Scheduler"),i=d.P1(h,e.JkU(function*(){let a=yield*f.L8(new Map);return yield*e.U9h(()=>e.JkU(function*(){for(let b of(yield*f.Jt(a)).values())yield*g.G(b);yield*f.hZ(a,new Map)})),h.of({schedule:(b,c,d)=>e.JkU(function*(){let h=yield*f.Jt(a).pipe(e.TjK(a=>a.get(b)));h&&(yield*g.G(h));let i=yield*e.x6Z(c.pipe(e.uxO(d),e.sFT(a=>e.vVN(`[scheduler] task '${b}' failed`).pipe(e.swY("error",String(a))))));return yield*f.yo(a,a=>new Map(a).set(b,i)),yield*e.fH4(`[scheduler] task '${b}' started`),{id:b,fiber:i}}),list:e.JkU(function*(){return Array.from((yield*f.Jt(a)).keys())}),cancel:b=>e.JkU(function*(){let c=(yield*f.Jt(a)).get(b);c&&(yield*g.G(c),yield*f.yo(a,a=>{let c=new Map(a);return c.delete(b),c}),yield*e.fH4(`[scheduler] task '${b}' cancelled`))})})}))},86184:(a,b,c)=>{"use strict";c.d(b,{e:()=>g});var d=c(41726),e=c(61994);let f={name:"deepseek",label:"DeepSeek",endpoints:{openAiBaseUrl:"https://api.deepseek.com/v1"},defaultModel:"deepseek-v4-pro",apiKey:d.mw},g=(0,e.k7)(f)},86232:(a,b,c)=>{"use strict";c.d(b,{an:()=>k,wy:()=>l});var d=c(52693),e=c(69061),f=c(1971),g=c(64419);let h=a=>{let b="abcdef0123456789",c="";for(let d=0;d<a;d++)c+=b.charAt(Math.floor(Math.random()*b.length));return c};class i{constructor(a,b,c,e,f,i){this.name=a,this.parent=b,this.context=c,this.startTime=f,this.kind=i,this._tag="Span",this.sampled=!0,this.attributes=new Map,this.events=[],this.traceId=d.Ru(b)?b.value.traceId:h(32),this.spanId=h(16),this.status={_tag:"Started",startTime:f},this.links=Array.from(e),(0,g.wZ)((0,g.Ju)(this.spanId,this.traceId,(0,g.kW)(b),a,i,f))}end(a,b){this.status={_tag:"Ended",endTime:a,exit:b,startTime:this.status.startTime},(0,g.dK)(this.spanId,a,"Success"===b._tag?{_tag:"Success"}:{_tag:"Failure",cause:b.cause})}attribute(a,b){this.attributes.set(a,b),(0,g.YN)(this.spanId,a,b)}event(a,b,c){this.events.push([a,b,c??{}]),(0,g.Eb)(this.spanId,a,b,c)}addLinks(a){this.links.push(...a)}}let j=e.L8({span:(a,b,c,d,e,f)=>new i(a,b,c,d,e,f),context:a=>a()}),k=f.Py(e.sh,j),l=f.Ie},88151:(a,b,c)=>{"use strict";c.d(b,{M:()=>j});var d=c(29021),e=c(33873),f=c(7939),g=c(6265);let h=(0,e.join)(f.Kv,"skills"),i=/^\s*([/@])(\S+?)(?:\s+|$)/;function j(a,b="en",c){let l,m=b.startsWith("zh")?"zh":"en",n=function(){try{let a=JSON.parse((0,d.readFileSync)(f.GB,"utf-8")),b=[];for(let c of a.skills??[]){let a=function(a){try{return(0,g.V9)((0,d.readFileSync)(a,"utf-8"),"name")}catch{return null}}(c.path);a&&b.push({name:a,path:c.path})}return b}catch{return[]}}(),o=new Set((0,g.Dk)()),p=a.split("\n"),q=[];if(p.forEach((a,b)=>{let c,d=a.match(i);d&&(c=d[2],o.has(c)||n.some(a=>a.name===c))&&q.push({i:b,marker:d[1],cmd:d[2],rest:a.slice(d[0].length).trim()})}),0===q.length)return a;let r=q.length>=2||q.some(a=>"@"===a.marker),s=(l=process.env.COCKPIT_PORT||process.env.PORT||"3457",`http://localhost:${l}`),t=new Map,u=new Set,v=[],w=new Set;q.forEach((a,b)=>{let c=b+1<q.length?q[b+1].i:p.length,f=[];a.rest&&f.push(a.rest);for(let b=a.i+1;b<c&&""!==p[b].trim();b++)f.push(p[b].trim()),u.add(b);let i=function(a,b,c){let f=c.find(b=>b.name===a);if(f)return{name:a,path:f.path,content:null};let i=(0,g.Hr)(a);if(null===i)return console.error(`[skills] builtin "${a}" disappeared while resolving it`),{name:a,path:null,content:null};let j=i.replaceAll("{{BASE_URL}}",b),k=function(a,b){try{let c=(0,e.join)(h,a);(0,d.mkdirSync)(c,{recursive:!0});let f=(0,e.join)(c,"SKILL.md");return(0,d.writeFileSync)(f,b.endsWith("\n")?b:`${b}
105
- `,"utf-8"),f}catch{return null}}(a,j);return k?{name:a,path:k,content:null}:{name:a,path:null,content:j}}(a.cmd,s,n);t.set(a.i,function(a,b,c,d,e){if(b.path){let f=e?`[${k(a,d)}\xb7${b.name}]`:`[${b.name}]`;return c?`${f} ${c}`:f}let f=e?`[${k(a,d)}] `:"",g=c?"zh"===d?`,然后:${c}`:`, then: ${c}`:"";return`${f}${b.content??""}${g}`}(a.marker,i,f.join("\n"),m,r)),i.path&&!w.has(i.name)&&(w.add(i.name),v.push({name:i.name,path:i.path}))});let x=[];for(let a=0;a<p.length;a++)u.has(a)||x.push(t.get(a)??p[a]);let y=x.join("\n");if(v.length>0){let a="zh"===m?"请先读取以下 skill 文件,再据此执行:":"Read these skill files first, then act accordingly:",b="zh"===m?"":": ",c=v.map(a=>`- ${a.name}${b}${a.path}`).join("\n");y=`${y}
104
+ `),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}}},61846:(a,b,c)=>{"use strict";c.d(b,{If:()=>j,On:()=>h,Pz:()=>e,Sz:()=>l,WK:()=>i,dJ:()=>k,xy:()=>g});var d=c(90426);let e="BOT.md",f=/^[a-z0-9][a-z0-9-]{0,63}$/,g=a=>f.test(a),h=(a,b)=>{let c=a.basename(b).toLowerCase()===e.toLowerCase()?a.dirname(b):a.join(b);return{dir:c,manifest:a.join(c,e)}},i=(a,b,c)=>{let e=b.match(/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/),f={};if(e){let a=d.Ay.load(e[1]);if(null!=a){if("object"!=typeof a||Array.isArray(a))throw Error("BOT.md frontmatter must be a mapping");f=a}}let h=a.basename(c).toLowerCase(),i="string"==typeof f.name&&f.name.trim()?f.name.trim():h;if(!g(i))throw Error(`Bot name "${i}" must match [a-z0-9][a-z0-9-]*`);return{name:i,description:"string"==typeof f.description?f.description.trim():""}},j=(a,b,c)=>{let{dir:d,manifest:e}=h(a,b.path);try{return{...b,valid:!0,...i(a,c(e),d)}}catch(c){return{...b,valid:!1,name:a.basename(d),error:c instanceof Error?c.message:String(c)}}},k=(a,b)=>{let c=new Map;for(let d of b)d.valid&&!c.has(d.name)&&c.set(d.name,h(a,d.path).manifest);return c},l=(a,b,c)=>a.find(a=>a.valid&&a.name===b&&a.path!==c)},61994:(a,b,c)=>{"use strict";c.d(b,{k7:()=>k,tl:()=>j});var d=c(7939),e=c(79830),f=c(59419),g=c(39876);async function h(){return(0,d.JE)(d.tP,{})}function i(a,b,c){if(!a.regions)return a.endpoints;let d=b.region||a.regions.defaultFor(c);return a.regions.byId[d]??a.endpoints}async function j(a){let b=await h();return i(a,b.engines?.[a.name]??{},b.language)}function k(a){return{name:a.name,async preflight(b){var c,d,e;let g=await h(),i=g.engines?.[a.name]??{};if(!await a.apiKey.read())return{ok:!1,status:400,error:`${a.label} API key is not configured. Open the ${a.label} picker in the chat header to set one.`};let j=(0,f.p)(b);return j.ok?(c="string"==typeof b.model?b.model:void 0,d=i.builtinModel,e=a.defaultModel,b.model="string"==typeof c&&c.trim()?c.trim():d&&d.trim()?d.trim():e,{ok:!0}):j},runner:{async run(b){let c=await a.apiKey.read(),e=await h(),j=e.engines?.[a.name]??{},k=i(a,j,e.language);await (0,f.o)(b,{sessionsRoot:(0,d.B3)(a.name),defaultModel:a.defaultModel,createModel:async a=>(0,g.a)({baseURL:k.openAiBaseUrl,apiKey:c,modelName:a}),...void 0!==a.builtinTemperature&&{temperature:a.builtinTemperature}})},resolveTitle:(a,b)=>(0,e.Pn)(a,b)}}}},64419:(a,b,c)=>{"use strict";c.d(b,{BV:()=>m,Eb:()=>k,Ju:()=>o,S8:()=>n,YN:()=>j,dK:()=>i,kW:()=>p,m6:()=>l,wZ:()=>h});var d=c(89705),e=c(52693);let f=globalThis,g=f.__cockpitSpanRing??={buffer:[],index:new Map};function h(a){if(g.buffer.push(a),g.index.set(a.spanId,g.buffer.length-1),g.buffer.length>500){g.buffer.shift(),g.index.clear();for(let a=0;a<g.buffer.length;a++)g.index.set(g.buffer[a].spanId,a)}}function i(a,b,c){let d=g.index.get(a);if(void 0===d)return;let e=g.buffer[d];if(!e)return;let f=Number(b-BigInt(e.startTimeNs))/1e6;g.buffer[d]={...e,endTimeNs:b.toString(),durationMs:Math.round(100*f)/100,status:"Success"===c._tag?"ok":"error",errorMessage:"Failure"===c._tag?function(a){if(a instanceof Error)return a.message;if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}(c.cause):void 0}}function j(a,b,c){let d=g.index.get(a);if(void 0===d)return;let e=g.buffer[d];e&&(g.buffer[d]={...e,attributes:{...e.attributes,[b]:c}})}function k(a,b,c,d){let e=g.index.get(a);if(void 0===e)return;let f=g.buffer[e];f&&(g.buffer[e]={...f,events:[...f.events,{name:b,timeNs:c.toString(),attributes:d}]})}let l=(a={})=>d.OH5(()=>(function(a={}){let b=g.buffer;if(a.errorsOnly&&(b=b.filter(a=>"error"===a.status)),a.traceId&&(b=b.filter(b=>b.traceId===a.traceId)),a.namePrefix){let c=a.namePrefix;b=b.filter(a=>a.name.startsWith(c))}if("number"==typeof a.minDurationMs){let c=a.minDurationMs;b=b.filter(a=>(a.durationMs??0)>=c)}return"number"==typeof a.limit&&a.limit>0&&(b=b.slice(-a.limit)),b})(a)),m=()=>d.OH5(()=>{g.buffer.length=0,g.index.clear()}),n=()=>d.OH5(()=>({capacity:500,size:g.buffer.length,oldestStartNs:g.buffer[0]?.startTimeNs??null}));function o(a,b,c,d,e,f){return{traceId:b,spanId:a,parentSpanId:c,name:d,kind:e,startTimeNs:f.toString(),endTimeNs:null,durationMs:null,attributes:{},events:[],status:"started"}}function p(a){return e.Ru(a)?a.value.spanId:null}},65699:(a,b,c)=>{"use strict";c.d(b,{Kk:()=>h,v8:()=>i});var d=c(29021),e=c(33873);function f(a){return(0,e.join)(a.replace(/\.jsonl$/,""),"nohistory-backup.jsonl")}function g(a){return d.readFileSync(a,"utf-8").split("\n").filter(a=>a.trim().length>0)}function h(a){if(!d.existsSync(a))return!1;let b=f(a);return d.existsSync(b)&&i(a),d.mkdirSync((0,e.join)(b,".."),{recursive:!0}),d.renameSync(a,b),!0}function i(a){let b=f(a);if(!d.existsSync(b))return"none";let c=g(b),h=d.existsSync(a)?g(a):[];if(0===h.length||!function(a){for(let b of a)try{JSON.parse(b)}catch{return!1}return!0}(h)){var i,j;return i=b,j=a,d.existsSync(j)&&d.unlinkSync(j),d.renameSync(i,j),"restored"}let k=(0,e.basename)(a).replace(/\.jsonl$/,""),l=function(a){for(let b=a.length-1;b>=0;b--)try{let c=JSON.parse(a[b]);if("string"==typeof c.uuid)return c.uuid}catch{}return null}(c),m=[...c,...h.map(a=>(function(a,b,c){try{let d=JSON.parse(a);return b&&"parentUuid"in d&&null===d.parentUuid&&(d.parentUuid=b),"string"==typeof d.sessionId&&(d.sessionId=c),JSON.stringify(d)}catch{return a}})(a,l,k))];return d.writeFileSync(a,m.join("\n")+"\n","utf-8"),d.unlinkSync(b),"merged"}},67928:(a,b,c)=>{"use strict";c.d(b,{SY:()=>h,YR:()=>f});var d=c(41726),e=c(61994);let f="https://api.kimi.com/coding/v1",g={name:"kimi",label:"Kimi",endpoints:{openAiBaseUrl:f},defaultModel:"k3",apiKey:d.o5,builtinTemperature:null},h=(0,e.k7)(g)},69310:(a,b,c)=>{"use strict";c.d(b,{Pg:()=>h,QD:()=>k,jV:()=>i,jh:()=>j});var d=c(7939);let e="http://127.0.0.1:11434";function f(a){return a.replace(/\/v1\/?$/,"").replace(/\/+$/,"")}async function g(){return(0,d.JE)(d.Lr,{})}async function h(a){return(0,d.N9)(d.Lr,{},b=>{let c={...b};if(void 0!==a.baseUrl){let b=a.baseUrl.trim();b?c.baseUrl=b:delete c.baseUrl}if(void 0!==a.apiKey){let b=a.apiKey.trim();b?c.apiKey=b:delete c.apiKey}return c})}async function i(){let a=await g();return f(a.baseUrl?.trim()||process.env.OLLAMA_BASE_URL||e)}async function j(){let a=await g();return{baseUrl:f(a.baseUrl?.trim()||process.env.OLLAMA_BASE_URL||e),apiKey:a.apiKey?.trim()||process.env.OLLAMA_API_KEY||"ollama"}}async function k(){var a;let b,c,d,h,i=await g();return i.baseUrl?.trim()?(b=f(i.baseUrl.trim()),c="file"):process.env.OLLAMA_BASE_URL?(b=f(process.env.OLLAMA_BASE_URL),c="env"):(b=e,c="default"),i.apiKey?.trim()?(d=i.apiKey.trim(),h="file"):process.env.OLLAMA_API_KEY?(d=process.env.OLLAMA_API_KEY,h="env"):(d="",h="default"),{baseUrl:b,baseUrlSource:c,hasKey:!!d,maskedKey:(a=d)?a.length<=8?a.replace(/./g,"•"):`${a.slice(0,3)}${"•".repeat(Math.max(4,a.length-7))}${a.slice(-4)}`:"",keySource:h}}},72587:(a,b,c)=>{"use strict";c.d(b,{gh:()=>g,ux:()=>h});var d=c(41726),e=c(61994);let f={cn:{openAiBaseUrl:"https://open.bigmodel.cn/api/coding/paas/v4"},global:{openAiBaseUrl:"https://api.z.ai/api/coding/paas/v4"}};Object.keys(f);let g={name:"glm",label:"GLM",endpoints:f.cn,regions:{byId:f,defaultFor:function(a){return"en"===a?"global":"cn"}},defaultModel:"glm-5.3",apiKey:d.iX},h=(0,e.k7)(g)},72891:(a,b,c)=>{"use strict";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)}})},77654:(a,b,c)=>{"use strict";c.d(b,{_:()=>d});let d=c(60177).Io("@cockpit/DelegationService")},81869:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{E:()=>l});var e=c(30816),f=c(86184),g=c(56180),h=c(67928),i=c(72587),j=c(52272),k=a([e]);let m={claude:(e=(k.then?(await k)():k)[0]).m,deepseek:f.e,ollama:g.u,kimi:h.SY,glm:i.ux,codex:j.ND};function l(a){return m[a??"claude"]}d()}catch(a){d(a)}})},82843:(a,b,c)=>{"use strict";c.d(b,{i:()=>i});var d=c(1971),e=c(89705),f=c(55235),g=c(27968);let h=c(60177).Io("@cockpit/Scheduler"),i=d.P1(h,e.JkU(function*(){let a=yield*f.L8(new Map);return yield*e.U9h(()=>e.JkU(function*(){for(let b of(yield*f.Jt(a)).values())yield*g.G(b);yield*f.hZ(a,new Map)})),h.of({schedule:(b,c,d)=>e.JkU(function*(){let h=yield*f.Jt(a).pipe(e.TjK(a=>a.get(b)));h&&(yield*g.G(h));let i=yield*e.x6Z(c.pipe(e.uxO(d),e.sFT(a=>e.vVN(`[scheduler] task '${b}' failed`).pipe(e.swY("error",String(a))))));return yield*f.yo(a,a=>new Map(a).set(b,i)),yield*e.fH4(`[scheduler] task '${b}' started`),{id:b,fiber:i}}),list:e.JkU(function*(){return Array.from((yield*f.Jt(a)).keys())}),cancel:b=>e.JkU(function*(){let c=(yield*f.Jt(a)).get(b);c&&(yield*g.G(c),yield*f.yo(a,a=>{let c=new Map(a);return c.delete(b),c}),yield*e.fH4(`[scheduler] task '${b}' cancelled`))})})}))},86184:(a,b,c)=>{"use strict";c.d(b,{e:()=>g});var d=c(41726),e=c(61994);let f={name:"deepseek",label:"DeepSeek",endpoints:{openAiBaseUrl:"https://api.deepseek.com/v1"},defaultModel:"deepseek-v4-pro",apiKey:d.mw},g=(0,e.k7)(f)},86232:(a,b,c)=>{"use strict";c.d(b,{an:()=>k,wy:()=>l});var d=c(52693),e=c(69061),f=c(1971),g=c(64419);let h=a=>{let b="abcdef0123456789",c="";for(let d=0;d<a;d++)c+=b.charAt(Math.floor(Math.random()*b.length));return c};class i{constructor(a,b,c,e,f,i){this.name=a,this.parent=b,this.context=c,this.startTime=f,this.kind=i,this._tag="Span",this.sampled=!0,this.attributes=new Map,this.events=[],this.traceId=d.Ru(b)?b.value.traceId:h(32),this.spanId=h(16),this.status={_tag:"Started",startTime:f},this.links=Array.from(e),(0,g.wZ)((0,g.Ju)(this.spanId,this.traceId,(0,g.kW)(b),a,i,f))}end(a,b){this.status={_tag:"Ended",endTime:a,exit:b,startTime:this.status.startTime},(0,g.dK)(this.spanId,a,"Success"===b._tag?{_tag:"Success"}:{_tag:"Failure",cause:b.cause})}attribute(a,b){this.attributes.set(a,b),(0,g.YN)(this.spanId,a,b)}event(a,b,c){this.events.push([a,b,c??{}]),(0,g.Eb)(this.spanId,a,b,c)}addLinks(a){this.links.push(...a)}}let j=e.L8({span:(a,b,c,d,e,f)=>new i(a,b,c,d,e,f),context:a=>a()}),k=f.Py(e.sh,j),l=f.Ie},88151:(a,b,c)=>{"use strict";c.d(b,{M:()=>m});var d=c(29021),e=c(33873),f=c.n(e),g=c(7939),h=c(61846),i=c(99697),j=c(6265);let k=(0,e.join)(g.Kv,"skills"),l=/^\s*(\/@|\/|@)(\S+?)(?:\s+|$)/;function m(a,b="en",c){let e,k=b.startsWith("zh")?"zh":"en",q=function(){try{let a=JSON.parse((0,d.readFileSync)(g.GB,"utf-8")),b=[];for(let c of a.skills??[]){let a=function(a){try{return(0,j.V9)((0,d.readFileSync)(a,"utf-8"),"name")}catch{return null}}(c.path);a&&b.push({name:a,path:c.path})}return b}catch{return[]}}(),r=new Set((0,j.Dk)()),{bots:s,corrupt:t}=function(){let a,b=(0,i.cm)(),c=a=>(0,h.dJ)(f(),[...b,...a]);try{a=(0,d.readFileSync)(g.YC,"utf-8")}catch{return{bots:c([]),corrupt:!1}}try{let b=JSON.parse(a),e=a=>(0,d.readFileSync)(a,"utf-8");return{bots:c((b.bots??[]).map(a=>(0,h.If)(f(),a,e))),corrupt:!1}}catch(a){return console.error(`[skills] ${g.YC} does not parse — every registered @bot line is left as plain text:`,a),{bots:c([]),corrupt:!0}}}(),u=[],v=a.split("\n"),w=[];if(v.forEach((a,b)=>{let c,d=a.match(l);if(!d)return;let e=d[1];(c=d[2],"@"===e?s.has(c):r.has(c)||q.some(a=>a.name===c))?w.push({i:b,marker:e,cmd:d[2],rest:a.slice(d[0].length).trim()}):"@"===e&&(r.has(d[2])||q.some(a=>a.name===d[2])?(console.warn(`[skills] "@${d[2]}" is not a registered Bot; the subagent form is now "/@${d[2]}" — left as plain text`),u.push(`@${d[2]} → the subagent form for a skill is now /@${d[2]}`)):t&&u.push(`@${d[2]} → could not be resolved: ${g.YC} does not parse`))}),0===w.length)return n(a,u,k);let x=w.length>=2||w.some(a=>"/"!==a.marker),y=(e=process.env.COCKPIT_PORT||process.env.PORT||"3457",`http://localhost:${e}`),z=new Map,A=new Set,B=[],C=new Set;w.forEach((a,b)=>{let c=b+1<w.length?w[b+1].i:v.length,d=[];a.rest&&d.push(a.rest);for(let b=a.i+1;b<c&&""!==v[b].trim();b++)d.push(v[b].trim()),A.add(b);let e="@"===a.marker?{name:`@${a.cmd}`,path:s.get(a.cmd),content:null}:p(a.cmd,y,q);z.set(a.i,function(a,b,c,d,e){if(b.path){let f=e?`[${o(a,d)}\xb7${b.name}]`:`[${b.name}]`;return c?`${f} ${c}`:f}let f=e?`[${o(a,d)}] `:"",g=c?"zh"===d?`,然后:${c}`:`, then: ${c}`:"";return`${f}${b.content??""}${g}`}(a.marker,e,d.join("\n"),k,x)),e.path&&!C.has(e.name)&&(C.add(e.name),B.push({name:e.name,path:e.path,kind:"@"===a.marker?"handoff":"read"}))});let D=null;if(w.some(a=>"@"===a.marker)){let a=p("bot-run",y,q);a.path&&!C.has(a.name)?(C.add(a.name),B.push({name:a.name,path:a.path,kind:"read"})):a.path||(D=a.content);let b=p("bot-turn",y,q);b.path&&!C.has(b.name)&&(C.add(b.name),B.unshift({name:b.name,path:b.path,kind:"handoff"}))}let E=[];for(let a=0;a<v.length;a++)A.has(a)||E.push(z.get(a)??v[a]);let F=E.join("\n"),G=(a,b)=>{let c=B.filter(b=>b.kind===a);if(0===c.length)return null;let d="zh"===k?":":": ";return`${b}
105
+ ${c.map(a=>`- ${a.name}${d}${a.path}`).join("\n")}`},H=[G("read","zh"===k?"请先读取以下 skill 文件,再据此执行:":"Read these skill files first, then act accordingly:"),G("handoff","zh"===k?"以下文件交给你派发的子会话去读,你只转交路径,不要自己打开:":"These files are for the session you delegate to. Pass the paths along; do not open them yourself:"),D].filter(a=>null!==a);return H.length>0&&(F=`${F}
106
106
 
107
- ${a}
108
- ${c}`}return y}function k(a,b){return"@"===a?"subagent":"zh"===b?"主会话":"main session"}},90828:(a,b,c)=>{"use strict";c.d(b,{ic:()=>f});var d=c(15825),e=c(31840);d.EV(e.YA(1),1.5).pipe(d.gP(d.ji(e.YA(10))),d.y$(d.t5(10))),d.EV(e.ne(200),2).pipe(d.gP(d.ji(e.YA(5))),d.y$(d.t5(5)));let f=d.EV(e.YA(1),2).pipe(d.et,d.gP(d.ji(e.YA(30))),d.y$(d.t5(8)));d.ji(e.YA(30)),d.ji(e.YA(1)),d.ji(e.YA(30)),e.ne(50),d.BW},94506:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{s9:()=>z});var e=c(1971),f=c(89705),g=c(16171),h=c(8155),i=c(35765),j=c(86232),k=c(38003),l=c(25470),m=c(37871),n=c(18702),o=c(34104),p=c(82843),q=c(17329),r=c(95606),s=c(12490),t=c(44872),u=c(58120),v=a([k,q,u]);[k,q,u]=v.then?(await v)():v;let w="dev"===process.env.COCKPIT_ENV,x=e.vM(f.JkU(function*(){let a=yield*h.c,b=w?i.fI:(0,i.yh)(a.logFile),c=w?j.an:j.wy;return e.Um(b,c,h.D)})),y=e.Um(x,k.H,l.A,m.P,n.u,o.I,p.i,q.x,r.en,s.n,t.eI,u.kT),z=g.L8(y);d()}catch(a){d(a)}})},95169:(a,b,c)=>{"use strict";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}},95606:(a,b,c)=>{"use strict";c.d(b,{NQ:()=>E,UT:()=>F,en:()=>K});var d=c(31421),e=c(77598),f=c(51455),g=c(76760),h=c(89705),i=c(1971),j=c(15825),k=c(770),l=c(8155),m=c(4253),n=c(34168);let o=[".git/","node_modules/",".next/","dist/","build/","out/","coverage/",".turbo/",".cache/","__pycache__/",".venv/","venv/","target/","*.log",".DS_Store",".env",".env.*","*.pem","*.p12","id_rsa*","id_ed25519*"],p=(a,b=!1)=>{let c=(0,e.createHash)("sha256").update(a,"utf8").digest("hex");return`${(0,g.basename)(a).replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,32)||"project"}-${b?c:c.slice(0,12)}`},q=a=>{let b=a.getFullYear(),c=String(a.getMonth()+1).padStart(2,"0"),d=String(a.getDate()).padStart(2,"0");return`${b}-${c}-${d}`},r=a=>{let[b,c,d,...e]=a.split("\x1f");if(!b)return null;let f=e.join("\x1f"),g=(a=>{let b={};for(let c of a.split("\n")){let a=/^Cockpit-([A-Za-z-]+):\s*(.*)$/.exec(c);a&&(b[a[1]]=a[2])}return b})(f),h=[];if(g["Tool-Files"])try{let a=JSON.parse(g["Tool-Files"]);Array.isArray(a)&&(h=a.filter(a=>"string"==typeof a))}catch{h=[]}return{hash:b,parent:c?c.split(" ")[0]:null,timestamp:Number(d)||0,subject:f.split("\n")[0]??"",sessionKey:g.Session??null,toolId:g["Tool-Id"]??null,toolName:g.Tool??null,toolFiles:h,provider:g.Provider??null,baseline:"baseline"===g.Kind}},s=(a,b,c,e)=>h.$mh({try:()=>new Promise(f=>{let h=(0,d.execFile)("git",c,{env:{...process.env,GIT_DIR:a,...b?{GIT_WORK_TREE:b}:{},GIT_TERMINAL_PROMPT:"0",LC_ALL:"C",GIT_INDEX_FILE:(0,g.join)(a,"index")},cwd:b??a,maxBuffer:0x4000000},(a,b,c)=>{let d=a?.code;f({code:a?"number"==typeof d?d:1:0,stdout:String(b),stderr:String(c)})});void 0!==e&&h.stdin?.end(e)}),catch:a=>new k.uV({message:`git ${c[0]} spawn failed`,cause:a})}),t=(a,b,c,d)=>s(a,b,c,d).pipe(h.W$I(a=>0===a.code,a=>new k.uV({message:`git ${c.join(" ")} exited ${a.code}: ${a.stderr.slice(0,400)}`}))),u=/beyond a symbolic link/,v=globalThis,w=v.__cockpitSnapshotSemaphores??(v.__cockpitSnapshotSemaphores=new Map),x=(a,b)=>{let c=w.get(a);return c||(c=h.RIP(1),w.set(a,c)),c.withPermits(1)(b)},y=(a,b)=>h.$mh({try:b,catch:b=>new k.uV({message:`snapshot fs ${a} failed`,cause:b})}),z=a=>h.$mh({try:async()=>{let b;try{b=await (0,f.readFile)((0,g.join)(a,"meta.json"),"utf8")}catch{return{state:"missing",meta:null}}try{return{state:"ok",meta:JSON.parse(b)}}catch{return{state:"corrupt",meta:null}}},catch:()=>new k.uV({message:"unreachable"})}).pipe(h.DM4(()=>({state:"missing",meta:null}))),A=a=>z(a).pipe(h.TjK(a=>a.meta)),B=(a,b)=>y("write meta",async()=>{let c=(0,g.join)(a,"meta.json.tmp");await (0,f.writeFile)(c,JSON.stringify(b,null,2),"utf8"),await (0,f.rename)(c,(0,g.join)(a,"meta.json"))}),C=globalThis,D=C.__cockpitSnapshotPendingRecords??(C.__cockpitSnapshotPendingRecords=new Map),E=a=>{D.set(a,(D.get(a)??0)+1)},F=a=>{let b=(D.get(a)??1)-1;b<=0?D.delete(a):D.set(a,b)},G=a=>D.get(a)??0,H=(a,b)=>h.JkU(function*(){let c=(0,g.join)(a,p(b)),d=yield*A(c);return d&&d.cwd!==b?(yield*h.FFw(`snapshot repo hash collision: ${c} belongs to ${d.cwd}; using full-hash dir for ${b}`),(0,g.join)(a,p(b,!0))):c}),I=(a,b,c,d)=>h.JkU(function*(){let e=c.cwd,i=yield*H(a,e),j={committed:!1};if("baseline"===d&&G(e)>0)return j;let l=a=>h.JkU(function*(){yield*h.FFw(`snapshot suspended for 6h: ${a} — check .gitignore of ${e}`);let b=yield*A(i);return yield*B(i,{cwd:e,createdAt:b?.createdAt??Date.now(),lastSnapshotAt:b?.lastSnapshotAt??Date.now(),guardTrippedAt:Date.now()}),j}),m=h.JkU(function*(){0===(yield*s(i,e,["rev-parse","--quiet","--verify","HEAD"])).code&&(yield*t(i,e,["read-tree","HEAD"]));let a=(yield*t(i,e,["status","--porcelain","-z","-uall","--no-renames"])).stdout.split("\0").filter(Boolean);if(0===a.length)return{staged:!1};if(a.length>5e4)return yield*l(`${a.length} changed files exceeds 50000`),{staged:!1};let c=[],d=[];for(let b of a){let a=b.slice(3);a&&("D"===b[0]||"D"===b[1]?d.push(a):c.push(a))}let j=yield*h.Q7R(c.map(a=>y("stat",()=>(0,f.stat)((0,g.join)(e,a)).then(a=>a.isFile()?a.size:0)).pipe(h.DM4(()=>-1))),{concurrency:16}),m=[],n=0;for(let a=0;a<c.length;a++)!(j[a]<0)&&(j[a]>b||(m.push(c[a]),n+=j[a]));return n>0x40000000?(yield*l(`${Math.round(n/1048576)}MB of changes exceeds ${Math.round(1024)}MB`),{staged:!1}):0===m.length&&0===d.length?{staged:!1}:(d.length>0&&(yield*t(i,e,["rm","--cached","--quiet","--ignore-unmatch","--pathspec-from-file=-","--pathspec-file-nul"],d.map(a=>`:(literal)${a}`).join("\0"))),m.length>0&&(yield*h.JkU(function*(){let a=["add","-A","--force","--pathspec-from-file=-","--pathspec-file-nul"],b=yield*s(i,e,a,m.map(a=>`:(literal)${a}`).join("\0"));if(0!==b.code){if(!u.test(b.stderr))return yield*h.fJG(new k.uV({message:`git add exited ${b.code}: ${b.stderr.slice(0,400)}`}));for(let b of m){let c=yield*s(i,e,a,`:(literal)${b}`);if(0!==c.code){if(!u.test(c.stderr))return yield*h.fJG(new k.uV({message:`git add ${b} exited ${c.code}: ${c.stderr.slice(0,400)}`}));yield*t(i,e,["rm","--cached","--quiet","--ignore-unmatch","--",`:(literal)${b}`])}}}})),{staged:!0})});return yield*x(i,h.JkU(function*(){var a,b,l;let n,p,r,u;if("baseline"===d&&G(e)>0)return j;yield*h.JkU(function*(){if(yield*y("stat HEAD",()=>(0,f.stat)((0,g.join)(i,"HEAD")).then(()=>!0)).pipe(h.DM4(()=>!1)))return;for(let[a,b]of(yield*y("mkdir",()=>(0,f.mkdir)(i,{recursive:!0})),yield*t(i,null,["init","--quiet","--bare",i]),[["core.bare","false"],["core.logAllRefUpdates","false"],["gc.auto","0"],["user.name","cockpit-snapshot"],["user.email","snapshot@cockpit.local"],["commit.gpgsign","false"]]))yield*t(i,null,["config",a,b]);yield*y("write exclude",()=>(0,f.writeFile)((0,g.join)(i,"info","exclude"),o.join("\n")+"\n","utf8"));let a=Date.now();yield*B(i,{cwd:e,createdAt:a,lastSnapshotAt:a})});let v=yield*A(i);if(v?.guardTrippedAt&&Date.now()-v.guardTrippedAt<216e5||(yield*(n=q(new Date),h.JkU(function*(){let a=`refs/heads/snap/${n}`;if(0!==(yield*s(i,e,["rev-parse","--quiet","--verify",a])).code){let a=(yield*t(i,e,["for-each-ref","--sort=refname","--format=%(refname:short)","refs/heads/snap/"])).stdout.trim().split("\n").filter(Boolean).pop();if(a){let b=yield*t(i,e,["commit-tree",`${a}^{tree}`,"-m",`baseline (rollover from ${a})
107
+ ${H.join("\n\n")}`),n(F,u,k)}function n(a,b,c){return 0===b.length?a:`${a}
108
+
109
+ ${"zh"===c?"以下 @ 开头的行没有被识别,已按普通文本处理,请告知用户:":"These @ lines were not recognised and were left as plain text. Tell the user:"}
110
+ ${b.map(a=>`- ${a}`).join("\n")}`}function o(a,b){return"/"!==a?"subagent":"zh"===b?"主会话":"main session"}function p(a,b,c){let f=c.find(b=>b.name===a);if(f)return{name:a,path:f.path,content:null};let g=(0,j.Hr)(a);if(null===g)return console.error(`[skills] builtin "${a}" disappeared while resolving it`),{name:a,path:null,content:null};let h=q(g,b),i=function(a,b,c){try{let f=(0,e.join)(k,a);(0,d.mkdirSync)(f,{recursive:!0});let g=(0,e.join)(f,"SKILL.md");for(let h of((0,d.writeFileSync)(g,b.endsWith("\n")?b:`${b}
111
+ `,"utf-8"),(0,j.AA)(a))){let b=(0,j.jN)(a,h);if(null!==b)try{(0,d.writeFileSync)((0,e.join)(f,h),q(b,c),"utf-8")}catch(b){console.error(`[skills] builtin "${a}": cannot write reference file ${h}:`,b)}}return g}catch{return null}}(a,h,b);return i?{name:a,path:i,content:null}:{name:a,path:null,content:h}}function q(a,b){return a.replaceAll("{{BASE_URL}}",b).replaceAll("{{COCKPIT_DIR}}",g.Kv)}},90828:(a,b,c)=>{"use strict";c.d(b,{ic:()=>f});var d=c(15825),e=c(31840);d.EV(e.YA(1),1.5).pipe(d.gP(d.ji(e.YA(10))),d.y$(d.t5(10))),d.EV(e.ne(200),2).pipe(d.gP(d.ji(e.YA(5))),d.y$(d.t5(5)));let f=d.EV(e.YA(1),2).pipe(d.et,d.gP(d.ji(e.YA(30))),d.y$(d.t5(8)));d.ji(e.YA(30)),d.ji(e.YA(1)),d.ji(e.YA(30)),e.ne(50),d.BW},94506:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{s9:()=>A});var e=c(1971),f=c(89705),g=c(16171),h=c(8155),i=c(35765),j=c(86232),k=c(38003),l=c(25470),m=c(37871),n=c(18702),o=c(34104),p=c(82843),q=c(17329),r=c(95606),s=c(12490),t=c(44872),u=c(58120),v=c(21310),w=a([k,q,u]);[k,q,u]=w.then?(await w)():w;let x="dev"===process.env.COCKPIT_ENV,y=e.vM(f.JkU(function*(){let a=yield*h.c,b=x?i.fI:(0,i.yh)(a.logFile),c=x?j.an:j.wy;return e.Um(b,c,h.D)})),z=e.Um(y,k.H,l.A,m.P,n.u,o.I,p.i,q.x,r.en,s.n,t.eI,u.kT,v._),A=g.L8(z);d()}catch(a){d(a)}})},95169:(a,b,c)=>{"use strict";c.d(b,{ug:()=>e});let d=["NODE_ENV","NEXT_DEPLOYMENT_ID","TURBOPACK","PORT"];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}},95606:(a,b,c)=>{"use strict";c.d(b,{NQ:()=>E,UT:()=>F,en:()=>K});var d=c(31421),e=c(77598),f=c(51455),g=c(76760),h=c(89705),i=c(1971),j=c(15825),k=c(770),l=c(8155),m=c(4253),n=c(34168);let o=[".git/","node_modules/",".next/","dist/","build/","out/","coverage/",".turbo/",".cache/","__pycache__/",".venv/","venv/","target/","*.log",".DS_Store",".env",".env.*","*.pem","*.p12","id_rsa*","id_ed25519*"],p=(a,b=!1)=>{let c=(0,e.createHash)("sha256").update(a,"utf8").digest("hex");return`${(0,g.basename)(a).replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,32)||"project"}-${b?c:c.slice(0,12)}`},q=a=>{let b=a.getFullYear(),c=String(a.getMonth()+1).padStart(2,"0"),d=String(a.getDate()).padStart(2,"0");return`${b}-${c}-${d}`},r=a=>{let[b,c,d,...e]=a.split("\x1f");if(!b)return null;let f=e.join("\x1f"),g=(a=>{let b={};for(let c of a.split("\n")){let a=/^Cockpit-([A-Za-z-]+):\s*(.*)$/.exec(c);a&&(b[a[1]]=a[2])}return b})(f),h=[];if(g["Tool-Files"])try{let a=JSON.parse(g["Tool-Files"]);Array.isArray(a)&&(h=a.filter(a=>"string"==typeof a))}catch{h=[]}return{hash:b,parent:c?c.split(" ")[0]:null,timestamp:Number(d)||0,subject:f.split("\n")[0]??"",sessionKey:g.Session??null,toolId:g["Tool-Id"]??null,toolName:g.Tool??null,toolFiles:h,provider:g.Provider??null,baseline:"baseline"===g.Kind}},s=(a,b,c,e)=>h.$mh({try:()=>new Promise(f=>{let h=(0,d.execFile)("git",c,{env:{...process.env,GIT_DIR:a,...b?{GIT_WORK_TREE:b}:{},GIT_TERMINAL_PROMPT:"0",LC_ALL:"C",GIT_INDEX_FILE:(0,g.join)(a,"index")},cwd:b??a,maxBuffer:0x4000000},(a,b,c)=>{let d=a?.code;f({code:a?"number"==typeof d?d:1:0,stdout:String(b),stderr:String(c)})});void 0!==e&&h.stdin?.end(e)}),catch:a=>new k.uV({message:`git ${c[0]} spawn failed`,cause:a})}),t=(a,b,c,d)=>s(a,b,c,d).pipe(h.W$I(a=>0===a.code,a=>new k.uV({message:`git ${c.join(" ")} exited ${a.code}: ${a.stderr.slice(0,400)}`}))),u=/beyond a symbolic link/,v=globalThis,w=v.__cockpitSnapshotSemaphores??(v.__cockpitSnapshotSemaphores=new Map),x=(a,b)=>{let c=w.get(a);return c||(c=h.RIP(1),w.set(a,c)),c.withPermits(1)(b)},y=(a,b)=>h.$mh({try:b,catch:b=>new k.uV({message:`snapshot fs ${a} failed`,cause:b})}),z=a=>h.$mh({try:async()=>{let b;try{b=await (0,f.readFile)((0,g.join)(a,"meta.json"),"utf8")}catch{return{state:"missing",meta:null}}try{return{state:"ok",meta:JSON.parse(b)}}catch{return{state:"corrupt",meta:null}}},catch:()=>new k.uV({message:"unreachable"})}).pipe(h.DM4(()=>({state:"missing",meta:null}))),A=a=>z(a).pipe(h.TjK(a=>a.meta)),B=(a,b)=>y("write meta",async()=>{let c=(0,g.join)(a,"meta.json.tmp");await (0,f.writeFile)(c,JSON.stringify(b,null,2),"utf8"),await (0,f.rename)(c,(0,g.join)(a,"meta.json"))}),C=globalThis,D=C.__cockpitSnapshotPendingRecords??(C.__cockpitSnapshotPendingRecords=new Map),E=a=>{D.set(a,(D.get(a)??0)+1)},F=a=>{let b=(D.get(a)??1)-1;b<=0?D.delete(a):D.set(a,b)},G=a=>D.get(a)??0,H=(a,b)=>h.JkU(function*(){let c=(0,g.join)(a,p(b)),d=yield*A(c);return d&&d.cwd!==b?(yield*h.FFw(`snapshot repo hash collision: ${c} belongs to ${d.cwd}; using full-hash dir for ${b}`),(0,g.join)(a,p(b,!0))):c}),I=(a,b,c,d)=>h.JkU(function*(){let e=c.cwd,i=yield*H(a,e),j={committed:!1};if("baseline"===d&&G(e)>0)return j;let l=a=>h.JkU(function*(){yield*h.FFw(`snapshot suspended for 6h: ${a} — check .gitignore of ${e}`);let b=yield*A(i);return yield*B(i,{cwd:e,createdAt:b?.createdAt??Date.now(),lastSnapshotAt:b?.lastSnapshotAt??Date.now(),guardTrippedAt:Date.now()}),j}),m=h.JkU(function*(){0===(yield*s(i,e,["rev-parse","--quiet","--verify","HEAD"])).code&&(yield*t(i,e,["read-tree","HEAD"]));let a=(yield*t(i,e,["status","--porcelain","-z","-uall","--no-renames"])).stdout.split("\0").filter(Boolean);if(0===a.length)return{staged:!1};if(a.length>5e4)return yield*l(`${a.length} changed files exceeds 50000`),{staged:!1};let c=[],d=[];for(let b of a){let a=b.slice(3);a&&("D"===b[0]||"D"===b[1]?d.push(a):c.push(a))}let j=yield*h.Q7R(c.map(a=>y("stat",()=>(0,f.stat)((0,g.join)(e,a)).then(a=>a.isFile()?a.size:0)).pipe(h.DM4(()=>-1))),{concurrency:16}),m=[],n=0;for(let a=0;a<c.length;a++)!(j[a]<0)&&(j[a]>b||(m.push(c[a]),n+=j[a]));return n>0x40000000?(yield*l(`${Math.round(n/1048576)}MB of changes exceeds ${Math.round(1024)}MB`),{staged:!1}):0===m.length&&0===d.length?{staged:!1}:(d.length>0&&(yield*t(i,e,["rm","--cached","--quiet","--ignore-unmatch","--pathspec-from-file=-","--pathspec-file-nul"],d.map(a=>`:(literal)${a}`).join("\0"))),m.length>0&&(yield*h.JkU(function*(){let a=["add","-A","--force","--pathspec-from-file=-","--pathspec-file-nul"],b=yield*s(i,e,a,m.map(a=>`:(literal)${a}`).join("\0"));if(0!==b.code){if(!u.test(b.stderr))return yield*h.fJG(new k.uV({message:`git add exited ${b.code}: ${b.stderr.slice(0,400)}`}));for(let b of m){let c=yield*s(i,e,a,`:(literal)${b}`);if(0!==c.code){if(!u.test(c.stderr))return yield*h.fJG(new k.uV({message:`git add ${b} exited ${c.code}: ${c.stderr.slice(0,400)}`}));yield*t(i,e,["rm","--cached","--quiet","--ignore-unmatch","--",`:(literal)${b}`])}}}})),{staged:!0})});return yield*x(i,h.JkU(function*(){var a,b,l;let n,p,r,u;if("baseline"===d&&G(e)>0)return j;yield*h.JkU(function*(){if(yield*y("stat HEAD",()=>(0,f.stat)((0,g.join)(i,"HEAD")).then(()=>!0)).pipe(h.DM4(()=>!1)))return;for(let[a,b]of(yield*y("mkdir",()=>(0,f.mkdir)(i,{recursive:!0})),yield*t(i,null,["init","--quiet","--bare",i]),[["core.bare","false"],["core.logAllRefUpdates","false"],["gc.auto","0"],["user.name","cockpit-snapshot"],["user.email","snapshot@cockpit.local"],["commit.gpgsign","false"]]))yield*t(i,null,["config",a,b]);yield*y("write exclude",()=>(0,f.writeFile)((0,g.join)(i,"info","exclude"),o.join("\n")+"\n","utf8"));let a=Date.now();yield*B(i,{cwd:e,createdAt:a,lastSnapshotAt:a})});let v=yield*A(i);if(v?.guardTrippedAt&&Date.now()-v.guardTrippedAt<216e5||(yield*(n=q(new Date),h.JkU(function*(){let a=`refs/heads/snap/${n}`;if(0!==(yield*s(i,e,["rev-parse","--quiet","--verify",a])).code){let a=(yield*t(i,e,["for-each-ref","--sort=refname","--format=%(refname:short)","refs/heads/snap/"])).stdout.trim().split("\n").filter(Boolean).pop();if(a){let b=yield*t(i,e,["commit-tree",`${a}^{tree}`,"-m",`baseline (rollover from ${a})
109
112
 
110
113
  Cockpit-Kind: baseline`]);yield*t(i,e,["branch",`snap/${n}`,b.stdout.trim()])}}yield*t(i,e,["symbolic-ref","HEAD",a])})),!(yield*m.pipe(h.L5P({times:1}))).staged))return j;let w=(c.toolFiles??[]).map(a=>((a,b)=>{if(!(0,g.isAbsolute)(b))return b;let c=(0,g.relative)(a,b);return c&&!c.startsWith("..")?c.split(g.sep).join("/"):b})(e,a)),x=(a=c,b=w,l=d,p=b.length>0?1===b.length?b[0]:`${b[0]} +${b.length-1}`:a.toolDetail??"",r="baseline"===l?"baseline":`[${a.toolName??"tool"}] ${p}`.replace(/[\u0000-\u001f\u007f]+/g," ").replace(/\s+/g," ").trim().slice(0,80),u=[`Cockpit-Kind: ${l}`,`Cockpit-Session: ${a.sessionKey}`,`Cockpit-Provider: ${a.provider}`,...a.toolId?[`Cockpit-Tool-Id: ${a.toolId}`]:[],...a.toolName?[`Cockpit-Tool: ${a.toolName}`]:[],...b.length?[`Cockpit-Tool-Files: ${JSON.stringify(b)}`]:[]],`${r}
111
114
 
112
- ${u.join("\n")}`),z=yield*s(i,e,["commit","--quiet","--no-verify","-m",x]);if(0!==z.code)return/nothing to commit|nothing added to commit/.test(z.stdout+z.stderr)?j:yield*h.fJG(new k.uV({message:`git commit failed: ${(z.stderr||z.stdout).slice(0,400)}`}));let C=yield*t(i,e,["rev-parse","HEAD"]),D=yield*A(i);return yield*B(i,{cwd:e,createdAt:D?.createdAt??Date.now(),lastSnapshotAt:Date.now()}),{committed:!0,hash:C.stdout.trim()}}))}).pipe(h.fRP("snapshot.record",{attributes:{cwd:c.cwd,tool:c.toolName??d}})),J=(a,b,c,d)=>s(a,b,["show",`${c}:${d}`]).pipe(h.TjK(a=>0===a.code?a.stdout:null),h.DM4(()=>null)),K=i.P1(n.M,h.JkU(function*(){let a,b,c=yield*l.c,e=(0,g.join)(c.cockpitDir,"snapshots"),i=1024*c.snapshotMaxFileKb,o=(a=c.snapshotKeepDays,b=c.snapshotRepoTtlDays,h.JkU(function*(){let c=yield*y("readdir",()=>(0,f.readdir)(e)).pipe(h.DM4(()=>[])),d=Date.now(),i=q(new Date(d-(a-1)*864e5)),j=a=>h.JkU(function*(){let{state:c,meta:e}=yield*z(a);if("corrupt"===c)return"corrupt";if("missing"===c)return(yield*y("stat dir",()=>(0,f.stat)(a).then(a=>a.mtimeMs)).pipe(h.DM4(()=>d)))<d-24*b*36e5?"stale":"keep";let g=!(yield*y("stat cwd",()=>(0,f.stat)(e.cwd).then(a=>a.isDirectory())).pipe(h.DM4(()=>!1)));return e.lastSnapshotAt<d-24*b*36e5||g?"stale":"keep"}),k=a=>y("stat HEAD",()=>(0,f.stat)((0,g.join)(a,"HEAD")).then(()=>!0)).pipe(h.DM4(()=>!1));for(let a of c){let b=(0,g.join)(e,a);if(!(yield*y("stat dir",()=>(0,f.stat)(b).then(a=>a.isDirectory())).pipe(h.DM4(()=>!1))))continue;if(!(yield*k(b))){yield*x(b,h.JkU(function*(){(yield*k(b))||(yield*h.fH4(`snapshot cleanup: removing debris dir ${a}`),yield*y("rm debris",()=>(0,f.rm)(b,{recursive:!0,force:!0})).pipe(h.DM4(()=>void 0)))}));continue}let c=yield*j(b);if("corrupt"===c){yield*h.FFw(`snapshot cleanup: ${a} has an unreadable meta.json — keeping repo (refusing to delete on corrupt metadata)`);continue}if("stale"===c){yield*x(b,h.JkU(function*(){(yield*j(b))==="stale"&&(yield*h.fH4(`snapshot cleanup: removing repo ${a} (stale or cwd gone)`),yield*y("rm repo",()=>(0,f.rm)(b,{recursive:!0,force:!0})).pipe(h.DM4(()=>void 0)))}));continue}let d=(yield*s(b,null,["for-each-ref","--format=%(refname:short)","refs/heads/snap/"]).pipe(h.TjK(a=>0===a.code?a.stdout.trim().split("\n").filter(Boolean):[]))).filter(a=>{let b=a.slice(5);return/^\d{4}-\d{2}-\d{2}$/.test(b)&&b<i});if(d.length>0){let c=yield*x(b,h.JkU(function*(){yield*t(b,null,["symbolic-ref","HEAD",`refs/heads/snap/${q(new Date)}`]);let c=0;for(let e of d){let d=yield*s(b,null,["branch","-D",e]);0===d.code?c++:yield*h.FFw(`snapshot cleanup: failed to delete ${e} in ${a}: ${d.stderr.slice(0,200)}`)}return c>0&&(yield*s(b,null,["reflog","expire","--expire=now","--all"]),yield*s(b,null,["gc","--prune=now","--quiet"])),c}));yield*h.fH4(`snapshot cleanup: ${a} dropped ${c}/${d.length} day branch(es) older than ${i}`)}}}).pipe(h.fRP("snapshot.cleanup")));return yield*h.x6Z(o.pipe(h.h9N(a=>h.FFw(`snapshot cleanup failed: ${a.message}`)),h.uxO(j.ji("24 hours")))),n.M.of({record:a=>I(e,i,a,"tool"),baseline:(a,b,c)=>I(e,i,{cwd:a,sessionKey:b,provider:c},"baseline"),listByToolIds:(a,b,c)=>h.JkU(function*(){if(0===b.length)return[];let d=yield*H(e,a);if(!(yield*y("stat HEAD",()=>(0,f.stat)((0,g.join)(d,"HEAD")).then(()=>!0)).pipe(h.DM4(()=>!1))))return[];let i=yield*s(d,a,["log","--all","--date-order","--reverse","--format=%x1e%H%x1f%P%x1f%ct%x1f%B"]);if(0!==i.code)return[];let j=new Set(b);return i.stdout.split("\x1e").filter(Boolean).map(r).filter(a=>!!a&&!!a.toolId&&j.has(a.toolId)&&(!c||a.sessionKey===c))}).pipe(h.fRP("snapshot.listByToolIds",{attributes:{cwd:a}})),diff:(a,b)=>h.JkU(function*(){if(!/^[0-9a-f]{6,40}$/i.test(b))return yield*h.fJG(new k.yI({field:"commit",reason:"invalid commit hash"}));let c=yield*H(e,a);if(!(yield*y("stat HEAD",()=>(0,f.stat)((0,g.join)(c,"HEAD")).then(()=>!0)).pipe(h.DM4(()=>!1))))return yield*h.fJG(new k.m_({resource:"snapshot-repo",id:a}));let d=r((yield*t(c,a,["log","-1","--format=%x1e%H%x1f%P%x1f%ct%x1f%B",b])).stdout.split("\x1e").filter(Boolean)[0]??"");if(!d)return yield*h.fJG(new k.yI({field:"commit",reason:"commit not found"}));let i=d.parent??"4b825dc642cb6eb9a060e54bf8d69288fbee4904",j=yield*t(c,a,["diff-tree","-r","-z","--no-renames","--name-status",i,d.hash]),l=yield*t(c,a,["diff-tree","-r","-z","--no-renames","--numstat",i,d.hash]),n=new Set,o=new Map;for(let a of l.stdout.split("\0").filter(Boolean)){let b=/^(\S+)\t(\S+)\t([^]*)$/.exec(a);b&&("-"===b[1]||"-"===b[2]?n.add(b[3]):o.set(b[3],{additions:Number(b[1])||0,deletions:Number(b[2])||0}))}let p=j.stdout.split("\0").filter(Boolean),q=[];for(let b=0;b+1<p.length&&q.length<200;b+=2){let e=p[b],f=p[b+1],g="A"===e?"added":"D"===e?"deleted":"modified",h=n.has(f),j=null,k=null;!h&&("added"!==g&&(j=yield*J(c,a,i,f)),"deleted"!==g&&(k=yield*J(c,a,d.hash,f)),((j?.length??0)>512e3||(k?.length??0)>512e3)&&(j=null,k=null));let l=o.get(f),r=h&&(0,m.RW)(f);q.push({path:f,status:g,binary:h,additions:l?.additions??0,deletions:l?.deletions??0,oldContent:j,newContent:k,...r?{isImage:!0,oldRev:"added"===g?null:i,newRev:"deleted"===g?null:d.hash}:{}})}let s=p.length/2>q.length;return{commit:d,files:q,truncated:s}}).pipe(h.fRP("snapshot.diff",{attributes:{cwd:a,commit:b}})),blob:(a,b,c)=>h.JkU(function*(){if(!/^[0-9a-f]{6,40}$/i.test(b))return yield*h.fJG(new k.yI({field:"rev",reason:"invalid commit hash"}));if(!c||(0,g.isAbsolute)(c)||c.split("/").includes(".."))return yield*h.fJG(new k.yI({field:"file",reason:"invalid path"}));if(!(0,m.RW)(c))return yield*h.fJG(new k.yI({field:"file",reason:"not an image"}));let f=yield*H(e,a);return new Uint8Array((yield*h.$mh({try:()=>new Promise((e,h)=>{(0,d.execFile)("git",["show",`${b}:${c}`],{env:{...process.env,GIT_DIR:f,GIT_WORK_TREE:a,GIT_TERMINAL_PROMPT:"0",LC_ALL:"C",GIT_INDEX_FILE:(0,g.join)(f,"index")},cwd:a,maxBuffer:m.No,encoding:"buffer"},(a,b)=>a?h(a):e(b))}),catch:()=>new k.m_({resource:"snapshot-blob",id:`${b}:${c}`})})))}).pipe(h.fRP("snapshot.blob",{attributes:{cwd:a,rev:b}})),cleanup:o})}))},98084:(a,b,c)=>{"use strict";function d(a){return a.isMeta&&a.sourceToolUseID?"skill":a.origin?.kind==="task-notification"?"task-notification":a.origin?.kind&&"human"!==a.origin.kind||a.isMeta||a.isCompactSummary?"meta":null}function e(a){if("user"!==a.type||null!==d(a))return!1;let b=a.message?.content;return"string"==typeof b?b.length>0:!!Array.isArray(b)&&b.some(a=>a?.type==="text")}c.d(b,{k:()=>d,l:()=>e})}};
115
+ ${u.join("\n")}`),z=yield*s(i,e,["commit","--quiet","--no-verify","-m",x]);if(0!==z.code)return/nothing to commit|nothing added to commit/.test(z.stdout+z.stderr)?j:yield*h.fJG(new k.uV({message:`git commit failed: ${(z.stderr||z.stdout).slice(0,400)}`}));let C=yield*t(i,e,["rev-parse","HEAD"]),D=yield*A(i);return yield*B(i,{cwd:e,createdAt:D?.createdAt??Date.now(),lastSnapshotAt:Date.now()}),{committed:!0,hash:C.stdout.trim()}}))}).pipe(h.fRP("snapshot.record",{attributes:{cwd:c.cwd,tool:c.toolName??d}})),J=(a,b,c,d)=>s(a,b,["show",`${c}:${d}`]).pipe(h.TjK(a=>0===a.code?a.stdout:null),h.DM4(()=>null)),K=i.P1(n.M,h.JkU(function*(){let a,b,c=yield*l.c,e=(0,g.join)(c.cockpitDir,"snapshots"),i=1024*c.snapshotMaxFileKb,o=(a=c.snapshotKeepDays,b=c.snapshotRepoTtlDays,h.JkU(function*(){let c=yield*y("readdir",()=>(0,f.readdir)(e)).pipe(h.DM4(()=>[])),d=Date.now(),i=q(new Date(d-(a-1)*864e5)),j=a=>h.JkU(function*(){let{state:c,meta:e}=yield*z(a);if("corrupt"===c)return"corrupt";if("missing"===c)return(yield*y("stat dir",()=>(0,f.stat)(a).then(a=>a.mtimeMs)).pipe(h.DM4(()=>d)))<d-24*b*36e5?"stale":"keep";let g=!(yield*y("stat cwd",()=>(0,f.stat)(e.cwd).then(a=>a.isDirectory())).pipe(h.DM4(()=>!1)));return e.lastSnapshotAt<d-24*b*36e5||g?"stale":"keep"}),k=a=>y("stat HEAD",()=>(0,f.stat)((0,g.join)(a,"HEAD")).then(()=>!0)).pipe(h.DM4(()=>!1));for(let a of c){let b=(0,g.join)(e,a);if(!(yield*y("stat dir",()=>(0,f.stat)(b).then(a=>a.isDirectory())).pipe(h.DM4(()=>!1))))continue;if(!(yield*k(b))){yield*x(b,h.JkU(function*(){(yield*k(b))||(yield*h.fH4(`snapshot cleanup: removing debris dir ${a}`),yield*y("rm debris",()=>(0,f.rm)(b,{recursive:!0,force:!0})).pipe(h.DM4(()=>void 0)))}));continue}let c=yield*j(b);if("corrupt"===c){yield*h.FFw(`snapshot cleanup: ${a} has an unreadable meta.json — keeping repo (refusing to delete on corrupt metadata)`);continue}if("stale"===c){yield*x(b,h.JkU(function*(){(yield*j(b))==="stale"&&(yield*h.fH4(`snapshot cleanup: removing repo ${a} (stale or cwd gone)`),yield*y("rm repo",()=>(0,f.rm)(b,{recursive:!0,force:!0})).pipe(h.DM4(()=>void 0)))}));continue}let d=(yield*s(b,null,["for-each-ref","--format=%(refname:short)","refs/heads/snap/"]).pipe(h.TjK(a=>0===a.code?a.stdout.trim().split("\n").filter(Boolean):[]))).filter(a=>{let b=a.slice(5);return/^\d{4}-\d{2}-\d{2}$/.test(b)&&b<i});if(d.length>0){let c=yield*x(b,h.JkU(function*(){yield*t(b,null,["symbolic-ref","HEAD",`refs/heads/snap/${q(new Date)}`]);let c=0;for(let e of d){let d=yield*s(b,null,["branch","-D",e]);0===d.code?c++:yield*h.FFw(`snapshot cleanup: failed to delete ${e} in ${a}: ${d.stderr.slice(0,200)}`)}return c>0&&(yield*s(b,null,["reflog","expire","--expire=now","--all"]),yield*s(b,null,["gc","--prune=now","--quiet"])),c}));yield*h.fH4(`snapshot cleanup: ${a} dropped ${c}/${d.length} day branch(es) older than ${i}`)}}}).pipe(h.fRP("snapshot.cleanup")));return yield*h.x6Z(o.pipe(h.h9N(a=>h.FFw(`snapshot cleanup failed: ${a.message}`)),h.uxO(j.ji("24 hours")))),n.M.of({record:a=>I(e,i,a,"tool"),baseline:(a,b,c)=>I(e,i,{cwd:a,sessionKey:b,provider:c},"baseline"),listByToolIds:(a,b,c)=>h.JkU(function*(){if(0===b.length)return[];let d=yield*H(e,a);if(!(yield*y("stat HEAD",()=>(0,f.stat)((0,g.join)(d,"HEAD")).then(()=>!0)).pipe(h.DM4(()=>!1))))return[];let i=yield*s(d,a,["log","--all","--date-order","--reverse","--format=%x1e%H%x1f%P%x1f%ct%x1f%B"]);if(0!==i.code)return[];let j=new Set(b);return i.stdout.split("\x1e").filter(Boolean).map(r).filter(a=>!!a&&!!a.toolId&&j.has(a.toolId)&&(!c||a.sessionKey===c))}).pipe(h.fRP("snapshot.listByToolIds",{attributes:{cwd:a}})),diff:(a,b)=>h.JkU(function*(){if(!/^[0-9a-f]{6,40}$/i.test(b))return yield*h.fJG(new k.yI({field:"commit",reason:"invalid commit hash"}));let c=yield*H(e,a);if(!(yield*y("stat HEAD",()=>(0,f.stat)((0,g.join)(c,"HEAD")).then(()=>!0)).pipe(h.DM4(()=>!1))))return yield*h.fJG(new k.m_({resource:"snapshot-repo",id:a}));let d=r((yield*t(c,a,["log","-1","--format=%x1e%H%x1f%P%x1f%ct%x1f%B",b])).stdout.split("\x1e").filter(Boolean)[0]??"");if(!d)return yield*h.fJG(new k.yI({field:"commit",reason:"commit not found"}));let i=d.parent??"4b825dc642cb6eb9a060e54bf8d69288fbee4904",j=yield*t(c,a,["diff-tree","-r","-z","--no-renames","--name-status",i,d.hash]),l=yield*t(c,a,["diff-tree","-r","-z","--no-renames","--numstat",i,d.hash]),n=new Set,o=new Map;for(let a of l.stdout.split("\0").filter(Boolean)){let b=/^(\S+)\t(\S+)\t([^]*)$/.exec(a);b&&("-"===b[1]||"-"===b[2]?n.add(b[3]):o.set(b[3],{additions:Number(b[1])||0,deletions:Number(b[2])||0}))}let p=j.stdout.split("\0").filter(Boolean),q=[];for(let b=0;b+1<p.length&&q.length<200;b+=2){let e=p[b],f=p[b+1],g="A"===e?"added":"D"===e?"deleted":"modified",h=n.has(f),j=null,k=null;!h&&("added"!==g&&(j=yield*J(c,a,i,f)),"deleted"!==g&&(k=yield*J(c,a,d.hash,f)),((j?.length??0)>512e3||(k?.length??0)>512e3)&&(j=null,k=null));let l=o.get(f),r=h&&(0,m.RW)(f);q.push({path:f,status:g,binary:h,additions:l?.additions??0,deletions:l?.deletions??0,oldContent:j,newContent:k,...r?{isImage:!0,oldRev:"added"===g?null:i,newRev:"deleted"===g?null:d.hash}:{}})}let s=p.length/2>q.length;return{commit:d,files:q,truncated:s}}).pipe(h.fRP("snapshot.diff",{attributes:{cwd:a,commit:b}})),blob:(a,b,c)=>h.JkU(function*(){if(!/^[0-9a-f]{6,40}$/i.test(b))return yield*h.fJG(new k.yI({field:"rev",reason:"invalid commit hash"}));if(!c||(0,g.isAbsolute)(c)||c.split("/").includes(".."))return yield*h.fJG(new k.yI({field:"file",reason:"invalid path"}));if(!(0,m.RW)(c))return yield*h.fJG(new k.yI({field:"file",reason:"not an image"}));let f=yield*H(e,a);return new Uint8Array((yield*h.$mh({try:()=>new Promise((e,h)=>{(0,d.execFile)("git",["show",`${b}:${c}`],{env:{...process.env,GIT_DIR:f,GIT_WORK_TREE:a,GIT_TERMINAL_PROMPT:"0",LC_ALL:"C",GIT_INDEX_FILE:(0,g.join)(f,"index")},cwd:a,maxBuffer:m.No,encoding:"buffer"},(a,b)=>a?h(a):e(b))}),catch:()=>new k.m_({resource:"snapshot-blob",id:`${b}:${c}`})})))}).pipe(h.fRP("snapshot.blob",{attributes:{cwd:a,rev:b}})),cleanup:o})}))},98084:(a,b,c)=>{"use strict";function d(a){return a.isMeta&&a.sourceToolUseID?"skill":a.origin?.kind==="task-notification"?"task-notification":a.origin?.kind&&"human"!==a.origin.kind||a.isMeta||a.isCompactSummary?"meta":null}function e(a){if("user"!==a.type||null!==d(a))return!1;let b=a.message?.content;return"string"==typeof b?b.length>0:!!Array.isArray(b)&&b.some(a=>a?.type==="text")}c.d(b,{k:()=>d,l:()=>e})},99697:(a,b,c)=>{"use strict";c.d(b,{FZ:()=>m,KU:()=>y,cm:()=>w,k9:()=>k,pz:()=>l});var d=c(55511),e=c(29021),f=c(33873),g=c.n(f),h=c(7939),i=c(61846);let j="builtin:",k=a=>a.startsWith(j),l=a=>k(a)?a.slice(j.length):"",m=a=>(0,f.join)(h.II,a),n=a=>(0,f.join)(h.PM,a),o=a=>{try{return(0,e.statSync)((0,f.join)(a,i.Pz)).isFile()}catch{return!1}},p=(0,f.join)(h.PM,".builtin-installs.json"),q=a=>(0,d.createHash)("sha256").update((0,e.readFileSync)(a)).digest("hex");function r(a){let b=new Map,c=d=>{for(let g of(0,e.readdirSync)((0,f.join)(a,d),{withFileTypes:!0})){let e=d?`${d}/${g.name}`:g.name;g.isDirectory()?c(e):g.isFile()&&b.set(e,q((0,f.join)(a,e)))}};return c(""),b}let s=a=>{let b=(0,d.createHash)("sha256");for(let c of[...a.keys()].sort())b.update(`${c}\0${a.get(c)}\0`);return b.digest("hex")};function t(a,b){let c=`${a}.old`,d=!1;try{try{(0,e.renameSync)(b,c),d=!0}catch(a){if(a?.code!=="ENOENT")throw a}(0,e.renameSync)(a,b),d&&(0,e.rmSync)(c,{recursive:!0,force:!0})}catch(a){throw d&&!(0,e.existsSync)(b)&&(0,e.renameSync)(c,b),a}finally{(0,e.rmSync)(a,{recursive:!0,force:!0})}}let u=a=>{let b=(0,f.join)(h.PM,`.${a}.installing-${process.pid}-${Date.now()}`);return(0,e.mkdirSync)(h.PM,{recursive:!0}),(0,e.rmSync)(b,{recursive:!0,force:!0}),b};function v(a){try{let b=(0,e.readFileSync)((0,f.join)(a,i.Pz),"utf-8");return{ok:!0,...(0,i.WK)(g(),b,a)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}function w(){let a;try{a=(0,e.readdirSync)(h.II,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name).sort()}catch(a){return"ENOENT"!==a?.code&&console.error(`[bots] cannot read builtin bots dir ${h.II} — all builtin Bots are unavailable:`,a),[]}let b=(()=>{try{let a=JSON.parse((0,e.readFileSync)(p,"utf-8"));return a&&"object"==typeof a&&!Array.isArray(a)?a:{}}catch{return{}}})(),c=!1,d=[];for(let k of a){if(!o(m(k)))continue;if(!(0,i.xy)(k)){console.error(`[bots] builtin Bot directory "${k}" is not a usable Bot name and was skipped`);continue}if(!o(n(k))){let a=v(m(k));if(!a.ok){console.error(`[bots] builtin Bot "${k}" is not usable and was skipped: ${a.error}`);continue}}let{dir:a,installed:l,changed:p}=function(a,b){try{return{...function(a,b){if(!(0,i.xy)(a))throw Error(`"${a}" is not a valid built-in Bot name`);let c=n(a),d=m(a);if(!o(d))throw Error(`no built-in Bot named "${a}"`);if(!o(c)){let f=r(d),g=u(a);try{(0,e.cpSync)(d,g,{recursive:!0}),t(g,c)}catch(a){if(!o(c))throw a}return b[a]={seed:s(f),files:Object.fromEntries(f)},{dir:c,changed:!0}}let h=b[a];if(!h?.files)return{dir:c,changed:!1};let j=s(r(d));return h.seed===j||(0,e.existsSync)((0,f.join)(c,".locks","write"))?{dir:c,changed:!1}:(b[a]={seed:j,files:function(a,b,c){let d=m(a),h=r(d),i=r(b),j={...c},k=[],l=[];for(let a of new Set([...Object.keys(c),...h.keys()])){let b=c[a],d=h.get(a),e=i.get(a);if(void 0===b){void 0!==d&&void 0===e&&(k.push(a),j[a]=d);continue}e===b&&(void 0===d?(l.push(a),delete j[a]):d!==b&&(k.push(a),j[a]=d))}if(0===k.length&&0===l.length)return j;let n=u(a);try{for(let a of((0,e.cpSync)(b,n,{recursive:!0}),l))!function(a,b){(0,e.rmSync)((0,f.join)(a,b),{force:!0});for(let c=g().dirname(b);c&&"."!==c;c=g().dirname(c))try{if((0,e.readdirSync)((0,f.join)(a,c)).length>0)return;(0,e.rmdirSync)((0,f.join)(a,c))}catch{return}}(n,a);for(let a of k)(0,e.mkdirSync)((0,f.join)(n,g().dirname(a)),{recursive:!0}),(0,e.cpSync)((0,f.join)(d,a),(0,f.join)(n,a));t(n,b)}catch(a){throw(0,e.rmSync)(n,{recursive:!0,force:!0}),a}return j}(a,c,h.files)},{dir:c,changed:!0})}(a,b),installed:!0}}catch(b){return console.error(`[bots] cannot install builtin Bot "${a}" into ${h.PM} — using the read-only copy:`,b),{dir:m(a),installed:!1,changed:!1}}}(k,b);c||=p;let q=v(a),w={id:`${j}${k}`,path:a,addedAt:"",builtin:!0};q.ok?d.push({...w,valid:!0,name:q.name,description:q.description}):l?d.push({...w,valid:!1,name:k,error:q.error}):console.error(`[bots] builtin Bot "${k}" became unreadable and was skipped: ${q.error}`)}return c&&(a=>{try{(0,e.mkdirSync)(h.PM,{recursive:!0});let b=`${p}.${process.pid}.tmp`;(0,e.writeFileSync)(b,`${JSON.stringify(a,null,2)}
116
+ `),(0,e.renameSync)(b,p)}catch(a){console.error(`[bots] cannot record builtin Bot installs in ${p}:`,a)}})(b),d}let x=a=>{try{return e.realpathSync.native(a)}catch{return a}};function y(a){let b=x(a);return w().find(c=>[c.path,m(l(c.id))].some(c=>c===a||x(c)===b))}}};