@surething/cockpit 1.0.233 → 1.0.235

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 (225) hide show
  1. package/.next-prod/BUILD_ID +1 -1
  2. package/.next-prod/app-path-routes-manifest.json +3 -3
  3. package/.next-prod/build-manifest.json +3 -3
  4. package/.next-prod/prerender-manifest.json +3 -3
  5. package/.next-prod/react-loadable-manifest.json +7 -0
  6. package/.next-prod/server/app/_global-error/page.js.nft.json +1 -1
  7. package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next-prod/server/app/_global-error.html +1 -1
  9. package/.next-prod/server/app/_global-error.rsc +1 -1
  10. package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/.next-prod/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  13. package/.next-prod/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/.next-prod/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +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 +10 -2
  19. package/.next-prod/server/app/_not-found.rsc +29 -20
  20. package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +29 -20
  21. package/.next-prod/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +12 -4
  23. package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  24. package/.next-prod/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  25. package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/.next-prod/server/app/api/agent/test/route.js.nft.json +1 -1
  27. package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
  28. package/.next-prod/server/app/api/chat/codex/route.js +1 -1
  29. package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
  30. package/.next-prod/server/app/api/chat/deepseek/route.js +1 -1
  31. package/.next-prod/server/app/api/chat/deepseek/route.js.nft.json +1 -1
  32. package/.next-prod/server/app/api/chat/kimi/route.js +1 -1
  33. package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
  34. package/.next-prod/server/app/api/chat/ollama/route.js +1 -1
  35. package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
  36. package/.next-prod/server/app/api/chat/pty-input/route.js.nft.json +1 -1
  37. package/.next-prod/server/app/api/chat/route.js +1 -1
  38. package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
  39. package/.next-prod/server/app/api/chat/stop/route.js +1 -1
  40. package/.next-prod/server/app/api/chat/stop/route.js.nft.json +1 -1
  41. package/.next-prod/server/app/api/claude-stats/route.js.nft.json +1 -1
  42. package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
  43. package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
  44. package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
  45. package/.next-prod/server/app/api/db/connect/route.js.nft.json +1 -1
  46. package/.next-prod/server/app/api/db/disconnect/route.js.nft.json +1 -1
  47. package/.next-prod/server/app/api/db/export/route.js.nft.json +1 -1
  48. package/.next-prod/server/app/api/db/query/route.js.nft.json +1 -1
  49. package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
  50. package/.next-prod/server/app/api/dev/spans/route.js.nft.json +1 -1
  51. package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
  52. package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
  53. package/.next-prod/server/app/api/files/blame/route.js.nft.json +1 -1
  54. package/.next-prod/server/app/api/files/clipboard/route.js.nft.json +1 -1
  55. package/.next-prod/server/app/api/files/copy/route.js.nft.json +1 -1
  56. package/.next-prod/server/app/api/files/delete/route.js.nft.json +1 -1
  57. package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
  58. package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
  59. package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
  60. package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
  61. package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
  62. package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
  63. package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
  64. package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
  65. package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
  66. package/.next-prod/server/app/api/files/stat/route.js.nft.json +1 -1
  67. package/.next-prod/server/app/api/files/text/route.js.nft.json +1 -1
  68. package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
  69. package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
  70. package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
  71. package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
  72. package/.next-prod/server/app/api/git/current-branch/route.js.nft.json +1 -1
  73. package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
  74. package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
  75. package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
  76. package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
  77. package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
  78. package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
  79. package/.next-prod/server/app/api/global-state/route.js +1 -1
  80. package/.next-prod/server/app/api/global-state/route.js.nft.json +1 -1
  81. package/.next-prod/server/app/api/health/route.js.nft.json +1 -1
  82. package/.next-prod/server/app/api/jupyter/load/route.js.nft.json +1 -1
  83. package/.next-prod/server/app/api/jupyter/save/route.js.nft.json +1 -1
  84. package/.next-prod/server/app/api/jupyter/shutdown/route.js.nft.json +1 -1
  85. package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
  86. package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
  87. package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
  88. package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
  89. package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
  90. package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
  91. package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
  92. package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
  93. package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
  94. package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
  95. package/.next-prod/server/app/api/mysql/schemas/route.js.nft.json +1 -1
  96. package/.next-prod/server/app/api/neo4j/connect/route.js.nft.json +1 -1
  97. package/.next-prod/server/app/api/neo4j/disconnect/route.js.nft.json +1 -1
  98. package/.next-prod/server/app/api/neo4j/query/route.js.nft.json +1 -1
  99. package/.next-prod/server/app/api/neo4j/schema/route.js.nft.json +1 -1
  100. package/.next-prod/server/app/api/note/route.js.nft.json +1 -1
  101. package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
  102. package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
  103. package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
  104. package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
  105. package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
  106. package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
  107. package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
  108. package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
  109. package/.next-prod/server/app/api/projectGraph/affected/route.js.nft.json +1 -1
  110. package/.next-prod/server/app/api/projectGraph/callees/route.js.nft.json +1 -1
  111. package/.next-prod/server/app/api/projectGraph/callers/route.js.nft.json +1 -1
  112. package/.next-prod/server/app/api/projectGraph/coedit/route.js.nft.json +1 -1
  113. package/.next-prod/server/app/api/projectGraph/context/route.js.nft.json +1 -1
  114. package/.next-prod/server/app/api/projectGraph/file/route.js.nft.json +1 -1
  115. package/.next-prod/server/app/api/projectGraph/file-functions/route.js.nft.json +1 -1
  116. package/.next-prod/server/app/api/projectGraph/impact/route.js.nft.json +1 -1
  117. package/.next-prod/server/app/api/projectGraph/related/route.js.nft.json +1 -1
  118. package/.next-prod/server/app/api/projectGraph/risk/route.js.nft.json +1 -1
  119. package/.next-prod/server/app/api/projectGraph/search/route.js.nft.json +1 -1
  120. package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
  121. package/.next-prod/server/app/api/push/public-key/route.js +1 -1
  122. package/.next-prod/server/app/api/push/public-key/route.js.nft.json +1 -1
  123. package/.next-prod/server/app/api/push/subscribe/route.js +1 -1
  124. package/.next-prod/server/app/api/push/subscribe/route.js.nft.json +1 -1
  125. package/.next-prod/server/app/api/push/unsubscribe/route.js +1 -1
  126. package/.next-prod/server/app/api/push/unsubscribe/route.js.nft.json +1 -1
  127. package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
  128. package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
  129. package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
  130. package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
  131. package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
  132. package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
  133. package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
  134. package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
  135. package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
  136. package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
  137. package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
  138. package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
  139. package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
  140. package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
  141. package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
  142. package/.next-prod/server/app/api/scheduled-tasks/route.js +1 -1
  143. package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
  144. package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
  145. package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
  146. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
  147. package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
  148. package/.next-prod/server/app/api/session-by-path/route.js +1 -1
  149. package/.next-prod/server/app/api/session-by-path/route.js.nft.json +1 -1
  150. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js.nft.json +1 -1
  151. package/.next-prod/server/app/api/sessions/projects/route.js.nft.json +1 -1
  152. package/.next-prod/server/app/api/sessions/route.js.nft.json +1 -1
  153. package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
  154. package/.next-prod/server/app/api/skills/[id]/route.js.nft.json +1 -1
  155. package/.next-prod/server/app/api/skills/content/route.js.nft.json +1 -1
  156. package/.next-prod/server/app/api/skills/route.js.nft.json +1 -1
  157. package/.next-prod/server/app/api/terminal/aliases/route.js.nft.json +1 -1
  158. package/.next-prod/server/app/api/terminal/autocomplete/route.js.nft.json +1 -1
  159. package/.next-prod/server/app/api/terminal/bubble-order/route.js.nft.json +1 -1
  160. package/.next-prod/server/app/api/terminal/env/route.js.nft.json +1 -1
  161. package/.next-prod/server/app/api/terminal/history/route.js.nft.json +1 -1
  162. package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
  163. package/.next-prod/server/app/favicon.ico/route.js.nft.json +1 -1
  164. package/.next-prod/server/app/m/page.js +2 -2
  165. package/.next-prod/server/app/m/page.js.nft.json +1 -1
  166. package/.next-prod/server/app/m/page_client-reference-manifest.js +1 -1
  167. package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  168. package/.next-prod/server/app/page.js +1 -1
  169. package/.next-prod/server/app/page.js.nft.json +1 -1
  170. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  171. package/.next-prod/server/app/project/page.js +1 -1
  172. package/.next-prod/server/app/project/page.js.nft.json +1 -1
  173. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  174. package/.next-prod/server/app/review/[id]/page.js +2 -2
  175. package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
  176. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  177. package/.next-prod/server/app-paths-manifest.json +3 -3
  178. package/.next-prod/server/chunks/{1035.js → 5897.js} +2 -2
  179. package/.next-prod/server/chunks/7338.js +1 -1
  180. package/.next-prod/server/chunks/9658.js +26 -26
  181. package/.next-prod/server/chunks/9830.js +1 -1
  182. package/.next-prod/server/middleware-build-manifest.js +1 -1
  183. package/.next-prod/server/middleware-react-loadable-manifest.js +1 -1
  184. package/.next-prod/server/pages/404.html +10 -2
  185. package/.next-prod/server/pages/500.html +1 -1
  186. package/.next-prod/server/server-reference-manifest.json +1 -1
  187. package/.next-prod/static/chunks/{2625-bc4748f0cd7db618.js → 1332-5e141e2acf28015a.js} +10 -10
  188. package/.next-prod/static/chunks/{217-92f800c2c438c550.js → 217-656e1fdbc820d9dd.js} +4 -4
  189. package/.next-prod/static/chunks/2502-fb8682bc7a61e04d.js +4 -0
  190. package/.next-prod/static/chunks/{2576-11e41242c7dd98f1.js → 2576-47a83a4d8066d196.js} +11 -11
  191. package/.next-prod/static/chunks/4523.3f277a24fbcfde6d.js +138 -0
  192. package/.next-prod/static/chunks/9304-ddde9008da31b2ce.js +1 -0
  193. package/.next-prod/static/chunks/app/{layout-ac2f1f67df01cc89.js → layout-e9ada9458f95f29c.js} +1 -1
  194. package/.next-prod/static/chunks/app/m/page-06a5ea22c02892d1.js +1 -0
  195. package/.next-prod/static/chunks/app/{page-1f0a6f49656a4c52.js → page-8f349cc054af0d5b.js} +1 -1
  196. package/.next-prod/static/chunks/app/project/{page-1f0a6f49656a4c52.js → page-8f349cc054af0d5b.js} +1 -1
  197. package/.next-prod/static/chunks/app/review/[id]/{page-39fa3a843adf617e.js → page-0c5d03d65758c7dc.js} +1 -1
  198. package/.next-prod/static/chunks/webpack-2c71a79c277961bc.js +1 -0
  199. package/.next-prod/static/css/44a979b47b165c63.css +1 -0
  200. package/.next-prod/trace +13 -13
  201. package/.next-prod/trace-build +1 -1
  202. package/README.md +27 -1
  203. package/README.zh.md +27 -1
  204. package/bin/cock-browser.mjs +12 -9
  205. package/bin/cock.mjs +5 -5
  206. package/bin/postinstall.mjs +6 -6
  207. package/chrome-extension/automation.js +45 -40
  208. package/chrome-extension/background.js +70 -67
  209. package/chrome-extension/content.js +38 -38
  210. package/chrome-extension/disguise.js +4 -4
  211. package/chrome-extension/network-capture.js +16 -16
  212. package/dist/{chunk-VHFWPI2X.mjs → chunk-IQXDXTI7.mjs} +35 -4
  213. package/dist/scheduledTasks.mjs +8 -14
  214. package/dist/wsServer.mjs +9 -31
  215. package/next.config.mjs +4 -2
  216. package/package.json +5 -4
  217. package/public/boot.js +8 -0
  218. package/server.mjs +122 -26
  219. package/.next-prod/server/chunks/7003.js +0 -1
  220. package/.next-prod/static/chunks/471-504b396c8302f4f2.js +0 -4
  221. package/.next-prod/static/chunks/app/m/page-8b1af6f31b60c485.js +0 -1
  222. package/.next-prod/static/chunks/webpack-dbba7fa77ee1faa4.js +0 -1
  223. package/.next-prod/static/css/fa7218e60ff464b5.css +0 -1
  224. /package/.next-prod/static/{WfNQMmytl62j_8KtgCW9_ → cfyYtf1Sz25gcv6tfZqFF}/_buildManifest.js +0 -0
  225. /package/.next-prod/static/{WfNQMmytl62j_8KtgCW9_ → cfyYtf1Sz25gcv6tfZqFF}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=1035,exports.ids=[1035],exports.modules={51035:(a,b,c)=>{c.d(b,{T:()=>n});var d=c(79830),e=c(82940),f=c(29021),g=c(33873),h=c(7939);let i={qa:{zh:`---
1
+ "use strict";exports.id=5897,exports.ids=[5897],exports.modules={51035:(a,b,c)=>{c.d(b,{T:()=>n});var d=c(79830),e=c(82940),f=c(29021),g=c(33873),h=c(7939);let i={qa:{zh:`---
2
2
  name: qa
3
3
  description: "进入需求澄清讨论模式:理解并复述需求,对不明确点回问确认,只输出理解不改代码,遵循 KISS。"
4
4
  ---
@@ -1330,4 +1330,4 @@ ${a}`}var m=c(55511);async function n(a,b,c){let{sessionId:n,images:o,cwd:p,lang
1330
1330
 
1331
1331
  ${a.label}${a.body}`:a.pointer}let s=r.map((a,b)=>{var c,e;let f=(c=b+1,e=a.marker,"zh"===d?"@"===e?`步骤 ${c}(用 subagent 执行):`:`步骤 ${c}(主会话执行):`:"@"===e?`Step ${c} (run in a subagent): `:`Step ${c} (run in the main session): `),g=a.body?`
1332
1332
  ${a.label}${a.body}`:"";return`${f}
1333
- ${a.pointer}${g}`}),t=[];return o&&t.push(o),t.push("zh"===d?"请按以下步骤依次完成:":"Complete the following steps in order:",s.join("\n\n")),t.join("\n\n")}(r,q):r;if(!(s&&"string"==typeof s||o&&o.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 t="string"==typeof s?s:void 0,u=new AbortController,v="string"==typeof b.runId&&b.runId||(0,m.randomUUID)(),w=n||v,x=n,y=!1;if(!(0,e.AD)(w,p||"",t))return{ok:!1,status:409,error:"run already active"};(0,e.e5)(w,()=>{y=!0,u.abort()}),p&&n&&(0,d.CS)(p,n,"loading",void 0,t).catch(()=>{});let z={prompt:t,images:o,cwd:p||"",sessionId:n,params:b,signal:u.signal,emit(a){y||(0,e.ah)(w,a)},rekey(a){a&&((0,e.GS)(w,a),w=a,x=a,p&&(0,d.CS)(p,a,"loading",void 0,t).catch(()=>{}))},currentKey:()=>w};return(async()=>{try{await a.runner.run(z)}catch(b){if(u.signal.aborted){y=!0,(0,e.HS)(w,"idle");return}if(console.error(`[engine:${a.name}] run error:`,b),z.emit({type:"error",error:b instanceof Error?b.message:String(b)}),(0,e.HS)(w,"error"),y=!0,p&&x){let a=await (0,d.Pn)(p,x).catch(()=>void 0);await (0,d.CS)(p,x,"unread",a).catch(()=>{})}return}if(p&&x){let b=await (a.runner.resolveTitle?a.runner.resolveTitle(p,x).catch(()=>void 0):Promise.resolve(void 0));await (0,d.CS)(p,x,"unread",b).catch(()=>{})}y=!0,(0,e.HS)(w,"idle")})(),{ok:!0,runKey:w,sessionId:x??null}}},82940:(a,b,c)=>{c.d(b,{AD:()=>j,GS:()=>l,HS:()=>m,Si:()=>n,Y6:()=>r,ah:()=>k,e5:()=>q,j$:()=>p,yQ:()=>o});let d=globalThis,e=d.__cockpitRunRegistry??(d.__cockpitRunRegistry=new Map),f=d.__cockpitRunListeners??(d.__cockpitRunListeners=new Map),g=d.__cockpitRunSeqByKey??(d.__cockpitRunSeqByKey=new Map);function h(a){for(let b of(a.seq+=1,a.keys))g.set(b,a.seq);return a.seq}function i(a,b){for(let c of a.keys){let a=f.get(c);if(a)for(let c of a)try{c(b)}catch{}}}function j(a,b,c){let d=e.get(a);if(d?.status==="running")return!1;let f=d?.seq??g.get(a)??0;if(d)for(let a of(d.evictTimer&&clearTimeout(d.evictTimer),d.keys))e.delete(a);return e.set(a,{keys:new Set([a]),cwd:b,status:"running",seq:f,events:[],updatedAt:Date.now()}),c&&k(a,{type:"user",_human:!0,message:{role:"user",content:c}}),!0}function k(a,b){let c=e.get(a);c&&"running"===c.status&&(h(c),c.events.push(b),c.updatedAt=Date.now(),i(c,{seq:c.seq,message:b}))}function l(a,b){let c=e.get(a);c&&(c.sessionId=b,a!==b&&(c.keys.add(b),e.set(b,c)))}function m(a,b="idle"){let c=e.get(a);if(c){if("running"!==c.status){"idle"===c.status&&"error"===b&&(c.status="error");return}c.status=b,c.updatedAt=Date.now(),h(c),i(c,{seq:c.seq,message:{type:"run-ended",status:b}}),c.evictTimer&&clearTimeout(c.evictTimer),c.evictTimer=setTimeout(()=>{for(let a of c.keys)e.delete(a)},6e4)}}function n(a){let b=e.get(a);return b?{status:b.status,seq:b.seq,events:b.events.slice()}:null}function o(a){return e.get(a)?.status==="running"}function p(a){return e.get(a)?.sessionId??null}function q(a,b){let c=e.get(a);c&&(c.abort=b)}function r(a){let b=e.get(a);if(!b)return!1;try{b.abort?.()}catch{}return k(a,{type:"result",subtype:"stopped"}),m(a,"idle"),!0}}};
1333
+ ${a.pointer}${g}`}),t=[];return o&&t.push(o),t.push("zh"===d?"请按以下步骤依次完成:":"Complete the following steps in order:",s.join("\n\n")),t.join("\n\n")}(r,q):r;if(!(s&&"string"==typeof s||o&&o.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 t="string"==typeof s?s:void 0,u=new AbortController,v="string"==typeof b.runId&&b.runId||(0,m.randomUUID)(),w=n||v,x=n,y=!1;if(!(0,e.AD)(w,p||"",t,v))return{ok:!1,status:409,error:"run already active"};(0,e.e5)(w,()=>{y=!0,u.abort()}),p&&n&&(0,d.CS)(p,n,"loading",void 0,t).catch(()=>{});let z={prompt:t,images:o,cwd:p||"",sessionId:n,params:b,signal:u.signal,emit(a){y||(0,e.ah)(w,a)},rekey(a){a&&((0,e.GS)(w,a),w=a,x=a,p&&(0,d.CS)(p,a,"loading",void 0,t).catch(()=>{}))},currentKey:()=>w};return(async()=>{try{await a.runner.run(z)}catch(b){if(u.signal.aborted){y=!0,(0,e.HS)(w,"idle");return}if(console.error(`[engine:${a.name}] run error:`,b),z.emit({type:"error",error:b instanceof Error?b.message:String(b)}),(0,e.HS)(w,"error"),y=!0,p&&x){let a=await (0,d.Pn)(p,x).catch(()=>void 0);await (0,d.CS)(p,x,"unread",a).catch(()=>{})}return}if(p&&x){let b=await (a.runner.resolveTitle?a.runner.resolveTitle(p,x).catch(()=>void 0):Promise.resolve(void 0));await (0,d.CS)(p,x,"unread",b).catch(()=>{})}y=!0,(0,e.HS)(w,"idle")})(),{ok:!0,runKey:w,sessionId:x??null}}},72891:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{OZ:()=>o,RL:()=>n,k9:()=>p,ok:()=>l});var e=c(37625),f=c(52693),g=c(18412),h=c(89705),i=c(94506),j=c(770),k=a([i]);i=(k.then?(await k)():k)[0];let l=(a,b=200)=>new Response(JSON.stringify(a),{status:b,headers:{"content-type":"application/json"}}),m=a=>{let b=e.od(a);if(f.Ru(b)){let a=b.value,c=(0,j.Sh)(a);return new Response(JSON.stringify({error:(a=>{let b=a.message;if("string"==typeof b&&b.length>0)return b;let c=a.cause;if(c instanceof Error&&c.message.length>0)return c.message;switch(a._tag){case"ValidationError":return`Invalid ${a.field}: ${a.reason}`;case"NotFoundError":return`${a.resource} not found: ${a.id}`;case"PermissionError":return`Permission denied: ${a.action} on ${a.resource}`;case"DBError":return`${a.db} ${a.op} failed`;case"FSError":return`${a.op} ${a.path} failed`;case"WSError":return`${a.proto} ${a.kind} failed`;case"AgentError":return`${a.provider} ${a.kind} failed`;default:return a._tag}})(a),tag:a._tag}),{status:c,headers:{"content-type":"application/json"}})}return console.error("[handler] uncaught defect:\n"+e.j9(a)),new Response(JSON.stringify({error:"Internal Server Error",tag:"InternalError"}),{status:500,headers:{"content-type":"application/json"}})},n=a=>async b=>{let c=await i.s9.runPromiseExit(a(b));return g.YW(c,{onFailure:a=>m(a),onSuccess:a=>a})},o=a=>async(b,c)=>{let d=await c.params,e=await i.s9.runPromiseExit(a(b,d));return g.YW(e,{onFailure:a=>m(a),onSuccess:a=>a})},p=a=>h.$mh({try:()=>a.json(),catch:()=>new j.yI({field:"body",reason:"invalid JSON"})});d()}catch(a){d(a)}})},82940:(a,b,c)=>{c.d(b,{AD:()=>j,GS:()=>l,HS:()=>m,Si:()=>n,Y6:()=>r,ah:()=>k,e5:()=>q,j$:()=>p,yQ:()=>o});let d=globalThis,e=d.__cockpitRunRegistry??(d.__cockpitRunRegistry=new Map),f=d.__cockpitRunListeners??(d.__cockpitRunListeners=new Map),g=d.__cockpitRunSeqByKey??(d.__cockpitRunSeqByKey=new Map);function h(a){for(let b of(a.seq+=1,a.keys))g.set(b,a.seq);return a.seq}function i(a,b){for(let c of a.keys){let a=f.get(c);if(a)for(let c of a)try{c(b)}catch{}}}function j(a,b,c,d){let f=e.get(a);if(f?.status==="running")return!1;let h=f?.seq??g.get(a)??0;if(f)for(let a of(f.evictTimer&&clearTimeout(f.evictTimer),f.keys))e.delete(a);let i=Date.now();return e.set(a,{keys:new Set([a]),cwd:b,status:"running",seq:h,events:[],startedAt:i,updatedAt:i}),c&&k(a,{type:"user",_human:!0,...d?{_turnId:d}:{},_ts:i,message:{role:"user",content:c}}),!0}function k(a,b){let c=e.get(a);c&&"running"===c.status&&(h(c),c.events.push(b),c.updatedAt=Date.now(),i(c,{seq:c.seq,message:b}))}function l(a,b){let c=e.get(a);c&&(c.sessionId=b,a!==b&&(c.keys.add(b),e.set(b,c)))}function m(a,b="idle"){let c=e.get(a);if(c){if("running"!==c.status){"idle"===c.status&&"error"===b&&(c.status="error");return}c.status=b,c.updatedAt=Date.now(),h(c),i(c,{seq:c.seq,message:{type:"run-ended",status:b}}),c.evictTimer&&clearTimeout(c.evictTimer),c.evictTimer=setTimeout(()=>{for(let a of c.keys)e.delete(a)},6e4)}}function n(a){let b=e.get(a);return b?{status:b.status,seq:b.seq,events:b.events.slice(),startedAt:b.startedAt}:null}function o(a){return e.get(a)?.status==="running"}function p(a){return e.get(a)?.sessionId??null}function q(a,b){let c=e.get(a);c&&(c.abort=b)}function r(a){let b=e.get(a);if(!b)return!1;try{b.abort?.()}catch{}return k(a,{type:"result",subtype:"stopped"}),m(a,"idle"),!0}}};
@@ -13,7 +13,7 @@ ${p}
13
13
 
14
14
  `),g.set(c.toolCallId,{id:c.toolCallId,name:c.toolName,args:JSON.stringify(a)});break}case"tool-result":{let a=String(c.output);d?.onToolResult?.(c.toolCallId,a),b(`data: ${JSON.stringify({type:"user",message:{content:[{type:"tool_result",tool_use_id:c.toolCallId,content:a,is_error:!1}]}})}
15
15
 
16
- `)}}for(let a of g.values())try{f.push({id:a.id,name:a.name,args:JSON.parse(a.args)})}catch{f.push({id:a.id,name:a.name,args:{}})}return{text:e,toolCalls:f}}let G={name:"ollama",preflight:async a=>"string"==typeof a.prompt&&a.prompt.trim()?{ok:!0}:{ok:!1,status:400,error:"ollama requires a text prompt"},runner:{async run(a){var b,c,i,j;let k=a.cwd||process.cwd(),r=a.currentKey();a.rekey(r);let s="string"==typeof a.params.model&&a.params.model||"qwen3.5:35b-a3b-coding-nvfp4",t=a.prompt,u=b=>{if(!b.startsWith("data: [DONE]"))try{a.emit(JSON.parse(b.slice(6)))}catch{}},v=[...function(a,b){let c=l(a,b);if(!(0,g.existsSync)(c))return[];let d=(0,g.readFileSync)(c,"utf-8").split("\n").filter(Boolean),e=[],f=[];for(let a of d)try{let b=JSON.parse(a);if("string"==typeof b.role&&"content"in b){e.push(b);continue}"string"==typeof b.type&&f.push(b)}catch{}if(0===f.length)return e;let h=new Map,i=new Set,j=new Set;for(let a of f){if("assistant"===a.type&&Array.isArray(a.message?.content))for(let b of a.message.content)"tool_use"===b.type&&b.id&&(i.add(b.id),b.name&&h.set(b.id,b.name));if("user"===a.type&&Array.isArray(a.message?.content))for(let b of a.message.content)"tool_result"===b.type&&b.tool_use_id&&j.add(b.tool_use_id)}let k=[];for(let a of f){if("user"===a.type&&a.message?.role==="user"&&Array.isArray(a.message.content)){let b=a.message.content.filter(a=>"text"===a.type).map(a=>a.text||"").join("\n");k.push({role:"user",content:b});continue}if("assistant"===a.type&&Array.isArray(a.message?.content)){let b=[];for(let c of a.message.content)if("text"===c.type)b.push({type:"text",text:c.text||""});else if("tool_use"===c.type){let a=c.id||"";if(!a||!j.has(a))continue;let d=c.name||h.get(a)||"tool";b.push({type:"tool-call",toolCallId:a,toolName:d,input:c.input||{}})}1===b.length&&"text"===b[0].type?k.push({role:"assistant",content:String(b[0].text||"")}):b.length>0?k.push({role:"assistant",content:b}):k.push({role:"assistant",content:""});continue}if("user"===a.type&&Array.isArray(a.message?.content))for(let b of a.message.content.filter(a=>"tool_result"===a.type&&!!a.tool_use_id)){let a=b.tool_use_id||"";if(!a||!i.has(a))continue;let c=h.get(a)||"tool";k.push({role:"tool",content:[{type:"tool-result",toolCallId:a,toolName:c,output:b.is_error?{type:"error-text",value:b.content||""}:{type:"text",value:b.content||""}}]})}}return k}(k,r),{role:"user",content:t}];b={uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString()},m(k,r,{type:"user",uuid:b?.uuid,sessionId:r,timestamp:b?.timestamp,message:{role:"user",content:[{type:"text",text:t}]}}),u(`data: ${JSON.stringify({type:"system",subtype:"init",session_id:r})}
16
+ `)}}for(let a of g.values())try{f.push({id:a.id,name:a.name,args:JSON.parse(a.args)})}catch{f.push({id:a.id,name:a.name,args:{}})}return{text:e,toolCalls:f}}let G={name:"ollama",preflight:async a=>"string"==typeof a.prompt&&a.prompt.trim()?{ok:!0}:{ok:!1,status:400,error:"ollama requires a text prompt"},runner:{async run(a){var b,c,i,j;let k=a.cwd||process.cwd(),r=a.currentKey();a.rekey(r);let s="string"==typeof a.params.model&&a.params.model||"qwen3.5:35b-a3b-coding-nvfp4",t=a.prompt,u=b=>{if(!b.startsWith("data: [DONE]"))try{a.emit(JSON.parse(b.slice(6)))}catch{}},v=[...function(a,b){let c=l(a,b);if(!(0,g.existsSync)(c))return[];let d=(0,g.readFileSync)(c,"utf-8").split("\n").filter(Boolean),e=[];for(let a of d)try{let b=JSON.parse(a);"string"==typeof b.type&&e.push(b)}catch{}let f=new Map,h=new Set,i=new Set;for(let a of e){if("assistant"===a.type&&Array.isArray(a.message?.content))for(let b of a.message.content)"tool_use"===b.type&&b.id&&(h.add(b.id),b.name&&f.set(b.id,b.name));if("user"===a.type&&Array.isArray(a.message?.content))for(let b of a.message.content)"tool_result"===b.type&&b.tool_use_id&&i.add(b.tool_use_id)}let j=[];for(let a of e){if("user"===a.type&&a.message?.role==="user"&&Array.isArray(a.message.content)){let b=a.message.content.filter(a=>"text"===a.type).map(a=>a.text||"").join("\n");j.push({role:"user",content:b});continue}if("assistant"===a.type&&Array.isArray(a.message?.content)){let b=[];for(let c of a.message.content)if("text"===c.type)b.push({type:"text",text:c.text||""});else if("tool_use"===c.type){let a=c.id||"";if(!a||!i.has(a))continue;let d=c.name||f.get(a)||"tool";b.push({type:"tool-call",toolCallId:a,toolName:d,input:c.input||{}})}1===b.length&&"text"===b[0].type?j.push({role:"assistant",content:String(b[0].text||"")}):b.length>0?j.push({role:"assistant",content:b}):j.push({role:"assistant",content:""});continue}if("user"===a.type&&Array.isArray(a.message?.content))for(let b of a.message.content.filter(a=>"tool_result"===a.type&&!!a.tool_use_id)){let a=b.tool_use_id||"";if(!a||!h.has(a))continue;let c=f.get(a)||"tool";j.push({role:"tool",content:[{type:"tool-result",toolCallId:a,toolName:c,output:b.is_error?{type:"error-text",value:b.content||""}:{type:"text",value:b.content||""}}]})}}return j}(k,r),{role:"user",content:t}];b={uuid:(0,e.randomUUID)(),timestamp:new Date().toISOString()},m(k,r,{type:"user",uuid:b?.uuid,sessionId:r,timestamp:b?.timestamp,message:{role:"user",content:[{type:"text",text:t}]}}),u(`data: ${JSON.stringify({type:"system",subtype:"init",session_id:r})}
17
17
 
18
18
  `);let A=(0,d.gM)({model:(0,f.q)(s),system:`You are a coding agent. You help the user build and modify software using the provided tools.
19
19