@baique/pi-web-sky 0.1.40 → 0.1.41

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 (60) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +6 -6
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/react-loadable-manifest.json +2 -2
  6. package/.next/required-server-files.js +1 -1
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_global-error.html +1 -1
  10. package/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/_not-found.html +1 -1
  16. package/.next/server/app/_not-found.rsc +2 -2
  17. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  18. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  19. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  20. package/.next/server/app/api/agent/running/route.js +1 -1
  21. package/.next/server/app/api/app-update/route.js +1 -1
  22. package/.next/server/app/api/boards/[id]/reconcile/route.js +1 -1
  23. package/.next/server/app/api/boards/[id]/route.js +1 -1
  24. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  25. package/.next/server/app/api/task-cards/[id]/route.js +1 -1
  26. package/.next/server/app/api/task-cards/route.js +1 -1
  27. package/.next/server/app/api/task-scheduler/status/route.js +1 -1
  28. package/.next/server/app/api/tasks/[id]/board/route.js +1 -1
  29. package/.next/server/app/api/tasks/[id]/route.js +1 -1
  30. package/.next/server/app/index.html +1 -1
  31. package/.next/server/app/index.rsc +4 -4
  32. package/.next/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  33. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  34. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  35. package/.next/server/app/page.js +2 -2
  36. package/.next/server/app/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app-paths-manifest.json +6 -6
  38. package/.next/server/chunks/4226.js +2 -2
  39. package/.next/server/chunks/7128.js +1 -1
  40. package/.next/server/chunks/861.js +1 -1
  41. package/.next/server/middleware-build-manifest.js +1 -1
  42. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  43. package/.next/server/pages/404.html +1 -1
  44. package/.next/server/pages/500.html +1 -1
  45. package/.next/server/server-reference-manifest.json +1 -1
  46. package/.next/static/chunks/{6582.efef0ed269bacae2.js → 6582.fb2c709abc2c5981.js} +1 -1
  47. package/.next/static/chunks/752.a05a2904b96af4d0.js +1 -0
  48. package/.next/static/chunks/app/{layout-702d3c97d297c42d.js → layout-2bec2662143a3d1b.js} +1 -1
  49. package/.next/static/chunks/app/{page-fd18462c3c937a50.js → page-e38c6cf3174fa143.js} +2 -2
  50. package/.next/static/chunks/{webpack-d17b4dde91b96c63.js → webpack-b4924d2a22ad3650.js} +1 -1
  51. package/.next/trace +8 -43
  52. package/.next/trace-build +1 -1
  53. package/lib/board-reconcile.ts +0 -1
  54. package/lib/board-types.ts +7 -2
  55. package/lib/task-card-store.test.mjs +16 -1
  56. package/lib/task-card-store.ts +11 -0
  57. package/package.json +1 -1
  58. package/.next/static/chunks/752.f41a9dcb0e6548eb.js +0 -1
  59. /package/.next/static/{12RFLqhiUZG8Sj49T1KKQ → 8V884w_cp5HEp_rRpjnCR}/_buildManifest.js +0 -0
  60. /package/.next/static/{12RFLqhiUZG8Sj49T1KKQ → 8V884w_cp5HEp_rRpjnCR}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-d17b4dde91b96c63.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-d29203733ca4633c.js" async=""></script><script src="/_next/static/chunks/main-app-b3e8a8d15d83e1f0.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-d17b4dde91b96c63.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"12RFLqhiUZG8Sj49T1KKQ\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\nb:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-b4924d2a22ad3650.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-d29203733ca4633c.js" async=""></script><script src="/_next/static/chunks/main-app-b3e8a8d15d83e1f0.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-b4924d2a22ad3650.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n7:X\n0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"8V884w_cp5HEp_rRpjnCR\"}\n7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\nb:[]\n"])</script></body></html>
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"wtZn0Y44/8pSowFYgiIM+qNYhwHmhLgowGjm1InAr88="}
1
+ {"node":{},"edge":{},"encryptionKey":"dcd1w6XLF0bc2thGV9ADLUEl3cRrCtoFUrFFvASmklc="}
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6582],{86582:(e,t,r)=>{r.r(t),r.d(t,{CanvasStage:()=>eu});var n=r(95155),o=r(12115),a=r(81750);r(53255);var i=r(39247),s=r(85610),l=r(47650),d=r(60015);function c({stats:e,contextUsage:t}){if(!e)return null;let r=e.tokens,o=e.cost??0,a=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e),i=o>0?o>=.01?`$${o.toFixed(2)}`:"<$0.01":null,s="var(--text-muted)",l=null;if(t?.contextWindow){let e=t.percent;null!==e&&e>90?s="#ef4444":null!==e&&e>70&&(s="rgba(234,179,8,0.95)"),l=null!==e?`${e.toFixed(0)}% / ${a(t.contextWindow)}`:`? / ${a(t.contextWindow)}`}let d={display:"flex",alignItems:"center",gap:4,flexShrink:0};return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,minWidth:0,fontSize:11,color:"var(--text-muted)",whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"},children:[r.input>0&&(0,n.jsxs)("span",{style:d,children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"5",y1:"8.5",x2:"5",y2:"1.5"}),(0,n.jsx)("polyline",{points:"2 4 5 1.5 8 4"})]}),a(r.input)]}),r.output>0&&(0,n.jsxs)("span",{style:d,children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"5",y1:"1.5",x2:"5",y2:"8.5"}),(0,n.jsx)("polyline",{points:"2 6 5 8.5 8 6"})]}),a(r.output)]}),r.cacheRead>0&&(0,n.jsxs)("span",{style:d,children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M8.5 5a3.5 3.5 0 1 1-1-2.45"}),(0,n.jsx)("polyline",{points:"6.5 1.5 8.5 2.5 7.5 4.5"})]}),a(r.cacheRead)]}),i&&(0,n.jsx)("span",{style:{display:"flex",alignItems:"center",color:"var(--text)",fontWeight:500,flexShrink:0},children:i}),l&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,color:s,flexShrink:0},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M1 9 L1 5 Q1 1 5 1 Q9 1 9 5 L9 9"}),(0,n.jsx)("line",{x1:"1",y1:"9",x2:"9",y2:"9"})]}),l]})]})}let u=(0,o.forwardRef)(function({sessionId:e,stats:t,contextUsage:r,todos:a},s){let{t:l}=(0,i.s)(),[d,c]=(0,o.useState)(!1),[u,m]=(0,o.useState)(!1),k=(0,o.useRef)(null),w=(0,o.useRef)(null),j=(0,o.useRef)(null);(0,o.useImperativeHandle)(s,()=>({openStats:()=>{c(!0),m(!1)}}),[]);let S=e=>{c("stats"===e),m("todo"===e)},C=(0,o.useCallback)(()=>{window.open(`/api/sessions/${encodeURIComponent(e)}/export?inline=1`,"_blank","noopener,noreferrer")},[e]),R=r?.contextWindow&&null!==r.percent?`${r.percent.toFixed(0)}% / ${b(r.contextWindow)}`:l("nav.stats"),E=a.filter(e=>"completed"!==e.status).length,W=(0,o.useCallback)(()=>{let e=k.current?.closest("[data-session-titlebar]");return e?.getBoundingClientRect().width??300},[]),L=d||u;return(0,o.useEffect)(()=>{if(!L)return;let e=e=>{let t=e.target;t instanceof Node&&(k.current?.contains(t)||document.querySelector("[data-session-nav-popover]")?.contains(t)||document.querySelector("[data-session-nav-todo]")?.contains(t)||document.querySelector(".glass-top-panel")?.contains(t))||(c(!1),m(!1))},t=e=>{"Escape"===e.key&&(c(!1),m(!1))};return document.addEventListener("pointerdown",e,!0),document.addEventListener("keydown",t,!0),()=>{document.removeEventListener("pointerdown",e,!0),document.removeEventListener("keydown",t,!0)}},[L]),(0,n.jsxs)("div",{ref:k,style:{display:"flex",alignItems:"center",gap:2,padding:"0 4px",position:"relative",pointerEvents:"all",height:"100%"},children:[(0,n.jsxs)("button",{type:"button",onClick:C,title:l("history.full"),"aria-label":l("history.full"),style:p,onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background=g},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="transparent"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M3 12a9 9 0 1 0 3-6.7L3 8"}),(0,n.jsx)("path",{d:"M3 3v5h5"}),(0,n.jsx)("path",{d:"M12 7v5l3 2"})]}),(0,n.jsx)("span",{style:x,children:l("history.full")})]}),(0,n.jsx)("span",{style:h}),(0,n.jsxs)("button",{ref:w,type:"button",onClick:()=>S(d?"none":"stats"),title:l("session.title"),"aria-label":l("session.title"),"aria-expanded":d,style:{...p,background:d?f:"transparent",color:d?"var(--accent)":"var(--text-muted)"},onMouseEnter:e=>{d||(e.currentTarget.style.color="var(--text)",e.currentTarget.style.background=g)},onMouseLeave:e=>{d||(e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="transparent")},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"12",y1:"20",x2:"12",y2:"10"}),(0,n.jsx)("line",{x1:"18",y1:"20",x2:"18",y2:"4"}),(0,n.jsx)("line",{x1:"6",y1:"20",x2:"6",y2:"16"})]}),(0,n.jsx)("span",{style:x,children:R})]}),a.length>0&&(0,n.jsxs)("button",{ref:j,type:"button",onClick:()=>S(u?"none":"todo"),title:l("todo.title"),"aria-label":l("todo.title"),"aria-expanded":u,style:{...p,background:u?f:"transparent",color:u?"var(--accent)":"var(--text-muted)"},onMouseEnter:e=>{u||(e.currentTarget.style.color="var(--text)",e.currentTarget.style.background=g)},onMouseLeave:e=>{u||(e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="transparent")},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"3",y:"4",width:"18",height:"16",rx:"3"}),(0,n.jsx)("path",{d:"M8 9h8M8 13h5"})]}),(0,n.jsx)("span",{style:x,children:l("nav.todo")}),(0,n.jsx)("span",{style:{fontSize:10,fontWeight:700,color:"var(--text-muted)"},children:E>0?E:"✓"})]}),d&&t&&(0,n.jsx)(v,{navRef:k,navWidth:W(),stats:t,contextUsage:r,onClose:()=>c(!1)}),u&&a.length>0&&(0,n.jsx)(y,{navRef:k,navWidth:W(),todos:a,onClose:()=>m(!1)})]})}),p={flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",gap:4,width:"auto",height:26,padding:"0 6px",border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",transition:"color 0.12s, background 0.12s"},x={fontSize:11,fontWeight:600,lineHeight:1,whiteSpace:"nowrap"},h={flexShrink:0,width:1,height:16,alignSelf:"center",background:"color-mix(in srgb, var(--border) 70%, transparent)",margin:"0 3px"},g="color-mix(in srgb, var(--glass-bg-strong) 40%, transparent)",f="color-mix(in srgb, var(--glass-bg-strong) 60%, transparent)";function b(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e)}function v({navRef:e,navWidth:t,stats:r,contextUsage:a,onClose:s}){let{t:d}=(0,i.s)(),[u,p]=(0,o.useState)(null),x=(0,o.useRef)(null);if((0,o.useEffect)(()=>{let r=()=>{let r=e.current;if(!r)return;let n=r.getBoundingClientRect(),o=r.closest("[data-session-titlebar]"),a=o?.getBoundingClientRect(),i=a?a.left:Math.min(n.right-t,Math.max(8,n.left));p({top:a?a.bottom:n.bottom,left:i})};r();let n=new ResizeObserver(r);return e.current&&n.observe(e.current),e.current?.closest("[data-session-titlebar]")&&n.observe(e.current.closest("[data-session-titlebar]")),window.addEventListener("resize",r),()=>{n.disconnect(),window.removeEventListener("resize",r)}},[e,t]),(0,o.useEffect)(()=>{let t=t=>{let r=t.target;x.current?.contains(r)||e.current?.contains(r)||s()};return document.addEventListener("pointerdown",t,!0),()=>document.removeEventListener("pointerdown",t,!0)},[e,s]),!u)return null;let h=r.totalActiveMs??0,g=[...r.sessionName?[{label:d("session.name"),value:r.sessionName}]:[],{label:d("session.id"),value:r.sessionId},...h>0?[{label:d("session.totalActive"),value:(e=>{if(e<=0)return"0s";let t=Math.floor(e/1e3),r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=t%60;return r>0?`${r}h ${n}m`:n>0?`${n}m ${o}s`:`${o}s`})(h)}]:[]],f=[[d("session.user"),r.userMessages.toLocaleString()],[d("session.assistant"),r.assistantMessages.toLocaleString()],[d("session.toolCalls"),r.toolCalls.toLocaleString()],[d("session.toolResults"),r.toolResults.toLocaleString()],[d("session.total"),r.totalMessages.toLocaleString()]],y=[[d("session.input"),r.tokens.input.toLocaleString()],[d("session.output"),r.tokens.output.toLocaleString()],...r.tokens.cacheRead>0?[[d("session.cacheRead"),r.tokens.cacheRead.toLocaleString()]]:[],...r.tokens.cacheWrite>0?[[d("session.cacheWrite"),r.tokens.cacheWrite.toLocaleString()]]:[],[d("session.total"),r.tokens.total.toLocaleString()],...r.cost>0?[[d("session.cost"),`$${r.cost.toFixed(4)}`]]:[],...r.contextUsage?.contextWindow?[[d("session.context"),`${null!==r.contextUsage.percent?`${r.contextUsage.percent.toFixed(1)}%`:"?"} / ${b(r.contextUsage.contextWindow)}`]]:[]],m=(e,t,r="left",o=!1)=>(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--text)",marginBottom:6},children:e}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:o?"max-content minmax(0, 1fr)":"auto minmax(0, 1fr)",columnGap:o?14:12,rowGap:4,justifyContent:o?"start":void 0},children:t.map(([t,o])=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-meta)",whiteSpace:"nowrap"},children:t}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",textAlign:r,whiteSpace:"normal"},children:o})]},`${e}:${t}`))})]}),k=(0,n.jsx)("div",{ref:x,"data-session-nav-popover":!0,role:"dialog","aria-label":d("session.title"),className:"glass-panel",style:{position:"fixed",top:u.top,left:u.left,width:t,maxHeight:"min(560px, calc(100dvh - 44px))",overflowY:"auto",zIndex:1200,padding:"12px 16px",fontSize:12,lineHeight:1.5,fontFamily:"var(--font-mono)",borderRadius:12,border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)"},children:(0,n.jsxs)("div",{style:{display:"grid",gap:16,fontSize:12,lineHeight:1.5,fontFamily:"var(--font-mono)"},children:[(0,n.jsx)(c,{stats:r,contextUsage:a}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"auto minmax(0, 1fr)",columnGap:12,rowGap:8,alignItems:"start"},children:g.map(e=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-meta)",whiteSpace:"nowrap"},children:e.label}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"},children:e.value})]},e.label))}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(160px, 0.5fr) minmax(240px, 0.7fr)",gap:24},children:[m(d("session.messages"),f),m(d("session.tokens"),y,"right",!0)]})]})});return(0,l.createPortal)(k,document.body)}function y({navRef:e,navWidth:t,todos:r,onClose:a}){let{t:s}=(0,i.s)(),[d,c]=(0,o.useState)(null),u=(0,o.useRef)(null);if((0,o.useEffect)(()=>{let r=()=>{let r=e.current;if(!r)return;let n=r.getBoundingClientRect(),o=r.closest("[data-session-titlebar]"),a=o?.getBoundingClientRect(),i=a?a.left:Math.min(n.right-t,Math.max(8,n.left));c({top:a?a.bottom:n.bottom,left:i})};r();let n=new ResizeObserver(r);return e.current&&n.observe(e.current),e.current?.closest("[data-session-titlebar]")&&n.observe(e.current.closest("[data-session-titlebar]")),window.addEventListener("resize",r),()=>{n.disconnect(),window.removeEventListener("resize",r)}},[e,t]),(0,o.useEffect)(()=>{let t=t=>{let r=t.target;u.current?.contains(r)||e.current?.contains(r)||a()};return document.addEventListener("pointerdown",t,!0),()=>document.removeEventListener("pointerdown",t,!0)},[e,a]),!d)return null;let p=(0,n.jsxs)("div",{ref:u,"data-session-nav-todo":!0,role:"menu","aria-label":s("todo.title"),className:"glass-panel",style:{position:"fixed",top:d.top,left:d.left,width:t,maxHeight:"min(440px, calc(100dvh - 44px))",overflowY:"auto",zIndex:1200,fontFamily:"inherit",borderRadius:12,border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"9px 12px",borderBottom:"1px solid color-mix(in srgb, var(--border) 70%, transparent)",fontSize:12,fontWeight:650,color:"var(--text)"},children:[s("todo.title"),(0,n.jsxs)("span",{style:{marginLeft:"auto",fontSize:11,color:"var(--text-meta)",fontWeight:500},children:[r.filter(e=>"completed"===e.status).length,"/",r.length," ",s("todo.completed")]})]}),0===r.length?(0,n.jsx)("div",{style:{padding:"12px 14px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:s("todo.empty")}):(0,n.jsx)("div",{style:{maxHeight:330,overflowY:"auto"},children:r.map(e=>{let t="completed"===e.status,r="high"===e.priority?"#ef4444":"medium"===e.priority?"rgba(234,179,8,0.9)":"var(--text-meta)";return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:8,padding:"7px 12px",borderBottom:"1px solid color-mix(in srgb, var(--border) 45%, transparent)"},children:[(0,n.jsx)("span",{"aria-hidden":"true",style:{flexShrink:0,marginTop:2,width:13,height:13,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",fontSize:10,fontWeight:800,lineHeight:1,color:t?"#fff":"transparent",background:t?"#16a34a":"color-mix(in srgb, var(--border) 70%, transparent)",border:t?"none":"1px solid color-mix(in srgb, var(--border) 80%, transparent)"},children:"✓"}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,fontSize:12,lineHeight:1.4,color:t?"var(--text-meta)":"var(--text)",textDecoration:t?"line-through":"none",wordBreak:"break-word"},children:e.content}),(0,n.jsx)("span",{"aria-hidden":"true",style:{flexShrink:0,marginTop:5,width:7,height:7,borderRadius:"50%",background:r}})]},e.id??e.content)})})]});return(0,l.createPortal)(p,document.body)}var m=r(32782),k=r(15934);let w=(0,o.memo)(function({sessionId:e,cwd:t,taskId:r,onPromote:a}){let{t:s}=(0,i.s)(),{soundEnabled:c,onSoundToggle:p,playDoneSound:x,unlockAudio:h}=(0,m.G)(),[g,f]=(0,o.useState)(null),[b,v]=(0,o.useState)(null),[y,w]=(0,o.useState)(0),S=(0,o.useRef)(null),C=(0,o.useRef)(null),R=(0,o.useRef)(null),E=!!t,W=(0,o.useRef)(null);W.current=E&&r?{taskId:r}:null;let L=(0,o.useRef)(e),z=(0,o.useRef)(t??null),I=(0,o.useRef)(E),N=(0,o.useRef)(!1),T=(0,o.useRef)(t);(0,o.useEffect)(()=>{let e=T.current;T.current=t,!e||t||I.current&&!N.current&&(I.current=!1,w(e=>e+1))},[t]);let[M,$]=(0,o.useState)(null);(0,o.useEffect)(()=>{let e=S.current?.closest("[data-board-node]"),t=e?.querySelector("[data-session-navbar-slot]")??null;$(e=>e===t?e:t)});let[D,H]=(0,o.useState)(null),[P,F]=(0,o.useState)(null),[B,A]=(0,o.useState)([]),O=(0,o.useCallback)(e=>{H(e)},[]),U=(0,o.useCallback)(()=>{R.current?.openStats()},[]),Y=(0,o.useCallback)(e=>{F(e)},[]),_=(0,o.useCallback)(e=>{A(e)},[]),q=(0,o.useCallback)(e=>{e?.id&&(N.current=!0,a?.(),(0,k.PH)(e.id))},[a]),X=(0,o.useCallback)(t=>{(0,k.PK)(e,t)},[e]),G=(0,o.useCallback)(t=>{(0,k.Wd)(e,t)},[e]),K=(0,o.useCallback)(()=>{(0,k.Ho)(e,g?.name)},[e,g?.name]),V=(0,o.useCallback)(t=>{(0,k.sV)(e,{title:"custom"===t.method?void 0:t.title,method:t.method})},[e]);return((0,o.useEffect)(()=>{let e=S.current;if(!e)return;let t=t=>{if(t.ctrlKey||t.metaKey)return;let r=t.target;r instanceof Node&&e.contains(r)&&function(e,t){let r=e instanceof Element?e:e.parentElement;for(;r&&r instanceof HTMLElement&&r!==t;){let e=r.scrollHeight>r.clientHeight,t=r.scrollWidth>r.clientWidth;if(e||t){let n=getComputedStyle(r),o=n.overflowY,a=n.overflowX;if(e&&("auto"===o||"scroll"===o||"overlay"===o)||t&&("auto"===a||"scroll"===a||"overlay"===a))return!0}r=r.parentElement}return!1}(r,e)&&t.stopPropagation()};return e.addEventListener("wheel",t),()=>{e.removeEventListener("wheel",t)}}),(0,o.useEffect)(()=>{let e=S.current;if(!e)return;let t=e=>{let t=window.getSelection();t&&t.toString().length>0&&e.stopPropagation()};return e.addEventListener("copy",t),()=>e.removeEventListener("copy",t)}),(0,o.useEffect)(()=>{if(E)return;let t=!1;return I.current?(v(null),(async()=>{try{let r=await fetch("/api/sessions",{cache:"no-store"});if(!r.ok)throw Error(`HTTP ${r.status}`);let n=(await r.json()).sessions.find(t=>t.id===e);if(t)return;n&&f(n)}catch(e){console.warn("new session metadata load failed:",e)}})(),()=>{t=!0}):(f(null),v(null),(async()=>{try{let r=await fetch("/api/sessions",{cache:"no-store"});if(!r.ok)throw Error(`HTTP ${r.status}`);let n=(await r.json()).sessions.find(t=>t.id===e);if(t)return;if(!n)return void v(s("boards.sessionMissing"));f(n),w(e=>e+1)}catch(e){t||v(e instanceof Error?e.message:String(e))}})(),()=>{t=!0})},[e,s,E]),b)?(0,n.jsx)("div",{style:j,children:(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:b})}):g||E||I.current?(0,n.jsxs)("div",{ref:S,className:"board-workbench",style:j,onPointerDown:e=>{0===e.button&&e.stopPropagation()},onPointerUp:e=>{0===e.button&&e.stopPropagation()},onClick:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:[M&&g&&(0,l.createPortal)((0,n.jsx)(u,{ref:R,sessionId:g.id,stats:D,contextUsage:P,todos:B}),M),(0,n.jsx)(d.l,{session:E||I.current?null:g,newSessionCwd:E||I.current?z.current??null:null,newSessionDraftKey:E||I.current?L.current:null,pendingNewSessionTaskRef:E||I.current?W:void 0,chatInputRef:C,inWorkbench:!0,onSessionStatsChange:O,onContextUsageChange:Y,onSessionStatsPanelOpen:U,onTodosChange:_,onOpenFile:X,onSessionCreated:E?e=>q(e):void 0,onSessionForked:G,onAgentEnd:K,onAttentionNeeded:V,soundEnabled:c,onSoundToggle:p,playDoneSound:x,unlockAudio:h},y)]}):(0,n.jsx)("div",{style:j,children:(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:s("boards.loadingSession")})})}),j={display:"flex",flexDirection:"column",width:"100%",height:"100%",overflow:"visible",color:"var(--text)"};var S=r(64536);function C(e,t=[]){let r=(0,a.FC)(),{flowToScreenPosition:n}=(0,a.VH)(),i=(0,a.PI)(),s=(0,o.useRef)(null),l=(0,o.useRef)(""),d=(0,o.useCallback)(()=>{let e=s.current;if(!e||!r)return;let t=i.getState(),o=t.nodeLookup.get(r);if(!o)return;let a=t.transform[2],d=n({x:o.position.x,y:o.position.y}),c=window.innerWidth/a,u=window.innerHeight/a,p=`${d.x.toFixed(1)}|${d.y.toFixed(1)}|${a.toFixed(3)}|${c}|${u}`;p!==l.current&&(l.current=p,e.style.width=`${c}px`,e.style.height=`${u}px`,e.style.transform=`translate(${-d.x/a}px, ${-d.y/a}px)`)},[r,i,n]),c=(0,o.useCallback)(t=>{if(!t)return;let r=t.querySelector("[data-glass-clip]");if(r){s.current=r.querySelector("[data-glass-layer]"),d();return}let n=document.createElement("div");n.dataset.glassClip="1",n.style.cssText="position:absolute;left:0;top:0;width:100%;height:100%;border-radius:inherit;overflow:hidden;pointer-events:none;z-index:-1;";let o=document.createElement("div");o.dataset.glassLayer="1",o.style.cssText=`position:absolute;left:0;top:0;pointer-events:none;will-change:transform;background-image:linear-gradient(${e}, ${e}), var(--glass-bg-image, none);background-repeat:no-repeat,no-repeat;background-size:100% 100%,100% 100%;`,n.appendChild(o),t.prepend(n),s.current=o,d()},[d]);return(0,o.useEffect)(()=>{if(!r)return;let e=0,t=()=>{e||(e=requestAnimationFrame(()=>{e=0,d()}))},n=i.subscribe(()=>t());return t(),()=>{n(),e&&cancelAnimationFrame(e)}},t),{setContainer:c}}let R=(0,o.createContext)(null);function E({value:e,children:t}){return(0,n.jsx)(R.Provider,{value:e,children:t})}function W(){let e=(0,o.useContext)(R);return e||{updateNode:()=>{},deleteNode:()=>{},normalizeNodeId:()=>{},deleteEdge:()=>{},addEdge:()=>{},addNode:()=>{},boardId:null}}function L(e,t){return e.id===t.id&&e.type===t.type&&e.data===t.data&&e.selected===t.selected&&e.width===t.width&&e.height===t.height}function z(e){let t=(0,o.memo)(e,L);return t.displayName=`MemoBoardNode(${e.displayName??e.name??"Node"})`,t}var I=r(71309);let N={session:"会话",note:"便笺",task:"任务"};function T({kind:e,color:t}){return(0,n.jsxs)("span",{title:`${N[e]} \xb7 状态由圆点颜色表示`,style:{display:"flex",alignItems:"center",gap:4,flexShrink:0,lineHeight:1},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{width:8,height:8,borderRadius:"50%",background:t,flexShrink:0}}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",whiteSpace:"nowrap"},children:N[e]})]})}let M={waiting_model:{dot:"var(--accent)",label:"thinking"},running_tools:{dot:"#f59e0b",label:"tools"},running_command:{dot:"#f59e0b",label:"command"},waiting_input:{dot:"var(--text)",label:"waiting"},idle:{dot:"var(--text-dim)",label:"idle"},"just-ended":{dot:"#10b981",label:"done"}},$=z(function({id:e,data:t,selected:r,width:i,height:l}){let{updateNode:d,deleteNode:c}=W(),{highlightId:u}=(0,I.kz)(),p=u===e,x=i??t.w??S.ZI,h=l??t.h??S.eo,g=!!t.expanded,f=(0,o.useRef)(t);f.current=t;let{title:b,projectName:v,messageCount:y,phase:m,runningMs:j,endedAt:R,lastActivityAt:E,stale:L,sessionId:z,lastReply:N,cwd:$,taskId:D}=t,H=!!$,{setContainer:P}=C("var(--board-card-glass)"),F=(0,o.useRef)(null),[B,A]=(0,o.useState)(!1),[O,U]=(0,o.useState)(""),Y=(0,o.useRef)(null),_=async()=>{if(!z)return;let r=O.trim();if(A(!1),r&&r!==b){d(e,{data:{...t,title:r}});try{(await fetch(`/api/sessions/${encodeURIComponent(z)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:r})})).ok?(0,k.z6)(z,r):d(e,{data:{...t,title:b}})}catch{d(e,{data:{...t,title:b}})}}},q=r=>{var n,o,a;if(r.stopPropagation(),H)return void c(e);let i=(n=t,o=x,a=h,n.expanded?{data:{...n,expanded:!1,expandedW:o,expandedH:a,w:n.collapsedW||S.ZI,h:n.collapsedH||S.eo},w:n.collapsedW||S.ZI,h:n.collapsedH||S.eo}:{data:{...n,expanded:!0,collapsedW:o,collapsedH:a,w:n.expandedW||840,h:n.expandedH||600},w:n.expandedW||840,h:n.expandedH||600});d(e,{data:i.data}),d(e,{width:i.w,height:i.h,style:{width:i.w,height:i.h}})},X=(0,o.useCallback)((r,n)=>{d(e,{data:{...t,w:n.width,h:n.height}})},[e,t,d]),G=(0,o.useCallback)(()=>{d(e,{data:{...f.current,cwd:"",taskId:""}})},[e,d]),K=M[m]??M.idle;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.PN,{isVisible:r,minWidth:g?600:S.ZI,minHeight:g?500:S.eo,onResize:X,keepAspectRatio:!1}),(0,n.jsx)(a.h7,{type:"target",position:s.yX.Left,className:"board-handle",style:{background:"var(--text-dim)",width:8,height:8,border:"1px solid var(--bg-panel)",opacity:.85}}),(0,n.jsx)(a.h7,{type:"source",position:s.yX.Right,className:"board-handle",style:{background:"var(--text-dim)",width:8,height:8,border:"1px solid var(--bg-panel)",opacity:.85}}),(0,n.jsxs)("div",{ref:P,"data-board-node":!0,"data-testid":`session-card-${z}`,onDoubleClick:q,style:{position:"relative",width:"100%",height:"100%",borderRadius:g?18:14,border:p?"2px solid var(--accent)":`1px solid ${L?"color-mix(in srgb, var(--border) 80%, transparent)":"color-mix(in srgb, var(--border) 60%, transparent)"}`,background:"transparent",boxShadow:r?"0 0 0 5px transparent, 0 0 16px 5px color-mix(in srgb, var(--accent) 28%, transparent), 0 2px 12px -6px rgba(0,0,0,0.18)":p?I.u:"0 2px 12px -6px rgba(0,0,0,0.18)",animation:p?"board-search-glow 1.8s ease-out forwards":void 0,opacity:L?.55:1,display:"flex",flexDirection:"column",color:"var(--text)",userSelect:"none",padding:g?8:"8px 10px 6px",cursor:"grab",overflow:g?"visible":"hidden"},children:[(0,n.jsxs)("div",{"data-session-titlebar":!0,style:{flexShrink:0,display:"flex",alignItems:"center",gap:6,padding:"0 10px",height:g?"calc(36px + env(safe-area-inset-top))":void 0,minHeight:g?void 0:20,borderBottom:g?"1px solid color-mix(in srgb, var(--border) 50%, transparent)":"none",cursor:"grab",position:"relative",...g?{}:{marginBottom:2}},children:[(0,n.jsx)(T,{kind:"session",color:K.dot}),B?(0,n.jsx)("input",{ref:Y,value:O,onChange:e=>U(e.target.value),onKeyDown:e=>{"Enter"===e.key&&_(),"Escape"===e.key&&A(!1)},onBlur:()=>void _(),className:"nodrag",style:{flex:1,minWidth:0,fontSize:12.5,fontWeight:600,padding:"2px 6px",border:"1px solid var(--accent)",borderRadius:5,outline:"none",background:"var(--side-input)",color:"var(--text)"}}):(0,n.jsx)("span",{style:{fontSize:12.5,fontWeight:600,minWidth:0,flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text)"},children:H?"New session":b||"Untitled"}),L&&(0,n.jsx)("span",{style:{flexShrink:0,fontSize:9.5,color:"var(--text-dim)",border:"1px solid color-mix(in srgb, var(--border) 70%, transparent)",borderRadius:4,padding:"0 4px"},children:"stale"}),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("div",{"data-session-navbar-slot":!0,className:"nodrag",style:{display:"flex",alignItems:"center"}}),!H&&!B&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),U(b||""),A(!0),requestAnimationFrame(()=>{Y.current?.focus(),Y.current?.select()})},title:"Rename","aria-label":"Rename",className:"nodrag",style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:20,height:20,padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-dim)",cursor:"pointer",opacity:.65},children:(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})})}),(0,n.jsx)("button",{type:"button",onClick:q,className:"nodrag",title:H?"Discard":g?"Collapse":"Expand",style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-dim)",cursor:"pointer"},children:H?(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("polyline",{points:"3 6 5 6 21 6"}),(0,n.jsx)("path",{d:"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"}),(0,n.jsx)("path",{d:"M10 11v6M14 11v6"}),(0,n.jsx)("path",{d:"M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"})]}):g?(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M18 15l-6-6-6 6"})}):(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M6 9l6 6 6-6"})})})]}),g?(0,n.jsx)("div",{className:"nodrag",style:{flex:1,minHeight:0,padding:"0 12px 0",pointerEvents:"all",overflow:"visible",cursor:"default",userSelect:"text"},children:(0,n.jsx)(w,{sessionId:z,cwd:$,taskId:D,onPromote:G})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{ref:F,className:"nowheel nodrag",style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",alignItems:"flex-start",justifyContent:"flex-start",gap:2,overflowY:"auto",overflowX:"hidden",padding:"2px 12px 0",scrollbarWidth:"thin",scrollbarColor:"color-mix(in srgb, var(--border) 70%, transparent) transparent",userSelect:"text",cursor:"default"},children:N?(0,n.jsx)("div",{style:{fontSize:11.5,lineHeight:1.45,color:"var(--text-muted)",wordBreak:"break-word",overflowWrap:"anywhere",whiteSpace:"pre-wrap",maxWidth:"100%",userSelect:"text"},children:N}):(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,fontSize:10.5,color:"var(--text-dim)"},children:[v&&(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flexShrink:1},children:v}),y>0&&(0,n.jsxs)("span",{style:{flexShrink:0,whiteSpace:"nowrap"},children:[y," msgs"]})]})}),(0,n.jsxs)("div",{style:{flexShrink:0,display:"flex",alignItems:"center",gap:6,fontSize:10,color:"var(--text-dim)",borderTop:"1px solid color-mix(in srgb, var(--border) 50%, transparent)",paddingTop:3},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{flexShrink:0},children:"\uD83D\uDD52"}),(0,n.jsx)("span",{children:function(e){if(e<=0)return"";let t=new Date(e),r=new Date;return t.getFullYear()===r.getFullYear()&&t.getMonth()===r.getMonth()&&t.getDate()===r.getDate()?t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):`${t.getMonth()+1}/${t.getDate()} ${t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}`}(E)}),(0,n.jsx)("div",{style:{flex:1}}),j>0&&"idle"!==m&&(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",whiteSpace:"nowrap",flexShrink:0},children:function(e){let t=Math.max(1,Math.round(e/1e3));if(t<60)return`${t}s`;let r=Math.floor(t/60);if(r<60)return`${r}m${t%60}s`;let n=Math.floor(r/60);return`${n}h${r%60}m`}(j)})]})]})]})]})});var D=r(32316),H=r(13439),P=r(57575),F=r(17366);r(54420);let B={blue:"#3184f8",green:"#10b981",red:"#ef4444",yellow:"#f59e0b",purple:"#8b5cf6"},A={blue:"蓝",green:"绿",red:"红",yellow:"黄",purple:"紫"},O={border:"none",background:"color-mix(in srgb, var(--border) 30%, transparent)",color:"var(--text-muted)",borderRadius:5,padding:"2px 10px",fontSize:11,cursor:"pointer"};function U({initialText:e,onDraftChange:t,onExit:r,onCancel:a,onBlurExit:i,rootRef:s}){let l=(0,o.useRef)(!1),d=(0,H.hGv)({extensions:[P.A,F.oz],content:e||"",contentType:"markdown",editorProps:{attributes:{class:"markdown-body sticky-note-editor",spellcheck:"false"}},onUpdate:({editor:e})=>{l.current||t(e.getMarkdown())},onBlur:({editor:e,event:r})=>{if(l.current)return;t(e.getMarkdown());let n=r.relatedTarget,o=s.current;o&&n instanceof Node&&o.contains(n)||i()}});(0,o.useEffect)(()=>{requestAnimationFrame(()=>{d?.commands.focus("start")})},[d]);let c=(0,o.useCallback)(()=>{l.current=!0,requestAnimationFrame(()=>{a()})},[a]),u=(0,o.useCallback)(e=>{e.stopPropagation(),"Enter"===e.key&&(e.ctrlKey||e.metaKey)?(e.preventDefault(),d&&t(d.getMarkdown()),r()):"Escape"===e.key&&(e.preventDefault(),c())},[d,t,r,c]);return(0,n.jsx)("div",{className:"nodrag nowheel sticky-note-edit-wrap","data-testid":"sticky-note-editor",onKeyDown:u,style:{flex:1,minHeight:0,overflowY:"auto",userSelect:"text",padding:"var(--bubble-pad-y, 8px) var(--bubble-pad-x, 12px)"},children:(0,n.jsx)(H.$Z$,{editor:d})})}let Y=z(function({id:e,data:t,selected:r,width:i,height:l}){let d,c,{updateNode:u,deleteNode:p}=W(),{highlightId:x}=(0,I.kz)(),h=x===e,g=t.text??"",f=t.badge??"blue",{setContainer:b}=C("var(--assistant-card-glass)"),[v,y]=(0,o.useState)(!1),[m,k]=(0,o.useState)(f),w=(0,o.useRef)(null),j=(0,o.useRef)(null),S=(0,o.useRef)(g),[R]=(0,o.useState)(()=>t.createdAt??Date.now()),[E,L]=(0,o.useState)(!1),z=(0,o.useRef)(null);(0,o.useEffect)(()=>{v&&(k(f),S.current=g)},[v,g,f]);let N=(0,o.useCallback)(e=>{S.current=e},[]),M=(0,o.useCallback)(()=>{let r=S.current;(r!==g||m!==f)&&u(e,{data:{...t,text:r,badge:m}})},[m,g,f,u,e,t]),$=(0,o.useCallback)(()=>{M(),y(!1)},[M]),H=(0,o.useCallback)(()=>{k(f),S.current=g,y(!1)},[g,f]),P=(0,o.useCallback)(()=>{M(),y(!1)},[M]),F=(0,o.useCallback)(e=>{e.stopPropagation();let t=w.current?.querySelector(".markdown-body")?.innerText??g;navigator.clipboard.writeText(t).then(()=>{L(!0),z.current&&clearTimeout(z.current),z.current=setTimeout(()=>L(!1),1200)}).catch(()=>{})},[g]);(0,o.useEffect)(()=>()=>{z.current&&clearTimeout(z.current)},[]);let Y={position:"relative",width:"100%",height:"100%",borderRadius:"var(--bubble-radius, 12px)",border:h?"2px solid var(--accent)":"1px solid var(--bubble-border)",background:"transparent",boxShadow:h?I.u:r?"0 2px 10px -6px rgba(0,0,0,0.2), 0 0 0 5px transparent, 0 0 16px 5px color-mix(in srgb, var(--accent) 28%, transparent)":"0 2px 10px -6px rgba(0,0,0,0.2)",animation:h?"board-search-glow 1.8s ease-out forwards":void 0,color:"var(--text)",display:"flex",flexDirection:"column",overflow:"hidden",fontSize:13,lineHeight:1.5,userSelect:"none",cursor:"default",padding:6},_=(0,o.useCallback)(e=>{0===e.button&&e.stopPropagation()},[]),q=(0,o.useCallback)((r,n)=>{u(e,{data:{...t,w:n.width,h:n.height}})},[e,t,u]);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.PN,{isVisible:r,minWidth:120,minHeight:60,onResize:q,keepAspectRatio:!1}),(0,n.jsx)(a.h7,{type:"target",position:s.yX.Left,className:"board-handle",style:{background:"var(--text-dim)",width:8,height:8,border:"1px solid var(--bg-panel)",opacity:.85}}),(0,n.jsx)(a.h7,{type:"source",position:s.yX.Right,className:"board-handle",style:{background:"var(--text-dim)",width:8,height:8,border:"1px solid var(--bg-panel)",opacity:.85}}),(0,n.jsxs)("div",{ref:e=>{b(e),j.current=e},"data-board-node":!0,"data-testid":`sticky-note-${e}`,style:Y,className:"nowheel",onDoubleClick:e=>{e.stopPropagation(),y(!0)},children:[(0,n.jsxs)("div",{className:v?"nodrag":"",style:{flexShrink:0,height:32,display:"flex",alignItems:"center",gap:6,padding:"0 var(--bubble-pad-x, 12px)",fontSize:10,color:"var(--text-muted)",cursor:v?"default":"grab",boxSizing:"border-box"},children:[(0,n.jsx)(T,{kind:"note",color:B[v?m:f]??B.blue}),v?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"nodrag",style:{display:"flex",alignItems:"center",gap:5},children:Object.entries(B).map(([e,t])=>(0,n.jsx)("button",{type:"button",title:`徽记\xb7${A[e]??e}`,className:"nodrag",onClick:t=>{t.stopPropagation(),k(e)},style:{width:14,height:14,padding:0,border:"none",borderRadius:"50%",background:t,cursor:"pointer",boxShadow:m===e?`0 0 0 2px var(--bg-panel), 0 0 0 3.5px ${t}`:`0 0 0 1px color-mix(in srgb, ${t} 45%, transparent)`,opacity:m===e?1:.72}},e))}),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("button",{type:"button",className:"nodrag",onClick:H,style:O,title:"放弃变更 (Esc)",children:"取消"}),(0,n.jsx)("button",{type:"button",className:"nodrag",onClick:$,style:O,title:"完成 (Ctrl+Enter)",children:"完成"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",whiteSpace:"nowrap"},children:(d=new Date(R),c=new Date,d.getFullYear()===c.getFullYear()&&d.getMonth()===c.getMonth()&&d.getDate()===c.getDate()?d.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):`${d.getMonth()+1}/${d.getDate()}`)}),(0,n.jsx)("button",{type:"button",title:E?"已复制":"复制内容",onClick:F,className:"nodrag",style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:22,height:20,padding:0,border:"none",borderRadius:5,background:"transparent",color:E?"var(--accent)":"var(--text-dim)",cursor:"pointer"},children:E?(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M20 6L9 17l-5-5"})}):(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),(0,n.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]})]}),v?(0,n.jsx)(U,{initialText:g,onDraftChange:N,onExit:$,onCancel:H,onBlurExit:P,rootRef:j},`${e}-edit`):(0,n.jsx)("div",{ref:w,className:"nowheel nodrag",style:{flex:1,minHeight:0,overflowY:"auto",padding:"4px var(--bubble-pad-x, 12px) var(--bubble-pad-y, 8px)",textAlign:"left",cursor:"text",userSelect:"text"},onPointerDown:_,onPointerUp:_,onDoubleClick:e=>{e.stopPropagation(),y(!0)},children:g.trim()?(0,n.jsx)("div",{className:"markdown-body",style:{wordBreak:"break-word"},children:(0,n.jsx)(D.oz,{children:g})}):(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontSize:12,cursor:"text"},children:"双击编辑 markdown"})})]})]})});var _=r(43561);function q(e,t){return(e??[]).filter(e=>e.kind===t).map(e=>e.targetCardId)}var X=r(20985);function G({value:e,options:t,onChange:r,width:a="100%"}){let[i,s]=(0,o.useState)(!1),[l,d]=(0,o.useState)(!1),c=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(!i)return;let e=e=>{c.current&&!c.current.contains(e.target)&&s(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[i]);let u=t.find(t=>t.value===e);return(0,n.jsxs)("div",{ref:c,style:{position:"relative",width:a},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>s(e=>!e),onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),style:{width:"100%",height:28,boxSizing:"border-box",display:"flex",alignItems:"center",gap:6,padding:"0 8px",background:i?"var(--side-active)":l?"var(--side-hover)":"transparent",border:"1px solid var(--border)",borderRadius:5,cursor:"pointer",fontSize:11,color:"var(--text)",textAlign:"left",transition:"background 0.12s"},children:[(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:u?.label??""}),(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:"var(--text-dim)"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),i&&(0,n.jsx)(X.f,{open:!0,style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:120,minWidth:120,maxHeight:200,overflowY:"auto",background:"var(--popover-glass)",border:"1px solid var(--border)",borderRadius:6,boxShadow:"0 6px 20px -6px rgba(0,0,0,0.35)",padding:4},children:t.map(t=>(0,n.jsx)("button",{type:"button",onClick:()=>{r(t.value),s(!1)},style:{display:"block",width:"100%",boxSizing:"border-box",padding:"5px 8px",border:"none",borderRadius:4,background:t.value===e?"var(--side-active)":"transparent",color:"var(--text)",fontSize:11,textAlign:"left",cursor:"pointer"},onMouseEnter:e=>{e.currentTarget.style.background="var(--side-hover)"},onMouseLeave:r=>{r.currentTarget.style.background=t.value===e?"var(--side-active)":"transparent"},children:t.label},t.value))})]})}function K({candidates:e,selected:t,onChange:r,placeholder:a="选择任务卡…",excludeId:i,width:s="100%"}){let[l,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(!1),p=(0,o.useRef)(null),x=e.filter(e=>e.id!==i),h=new Set(t);(0,o.useEffect)(()=>{if(!l)return;let e=e=>{p.current&&!p.current.contains(e.target)&&d(!1)},t=e=>{"Escape"===e.key&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[l]);let g=x.filter(e=>h.has(e.id)),f=g.length>3?g.length-3:0,b=g.slice(0,3);return(0,n.jsxs)("div",{ref:p,style:{position:"relative",width:s},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>d(e=>!e),onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),style:{width:"100%",height:28,boxSizing:"border-box",display:"flex",alignItems:"center",gap:4,padding:"0 6px",background:l?"var(--side-active)":c?"var(--side-hover)":"transparent",border:"1px solid var(--border)",borderRadius:5,cursor:"pointer",fontSize:11,color:"var(--text)",textAlign:"left",transition:"background 0.12s"},children:[b.length>0?(0,n.jsxs)(n.Fragment,{children:[b.map(e=>(0,n.jsxs)("span",{style:{flexShrink:0,display:"inline-flex",alignItems:"center",gap:3,padding:"1px 5px",borderRadius:999,background:"var(--side-selected)",color:"var(--accent)",fontFamily:"var(--font-mono)",fontSize:10},children:["#",e.number]},e.id)),f>0&&(0,n.jsxs)("span",{style:{flexShrink:0,color:"var(--text-muted)",fontSize:10},children:["+",f]})]}):(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-dim)"},children:a}),(0,n.jsx)("span",{style:{flex:1}}),(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:"var(--text-dim)"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),l&&(0,n.jsx)(X.f,{open:!0,style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:120,minWidth:160,maxHeight:180,overflowY:"auto",background:"var(--popover-glass)",border:"1px solid var(--border)",borderRadius:6,boxShadow:"0 6px 20px -6px rgba(0,0,0,0.35)",padding:4},children:0===x.length?(0,n.jsx)("div",{style:{padding:"8px",color:"var(--text-dim)",fontSize:11},children:"本看板无其他任务卡"}):x.map(e=>{let o=h.has(e.id);return(0,n.jsxs)("button",{type:"button",onClick:n=>{var o;n.stopPropagation(),o=e.id,r(h.has(o)?t.filter(e=>e!==o):[...t,o])},style:{display:"flex",alignItems:"center",gap:7,width:"100%",boxSizing:"border-box",padding:"5px 8px",border:"none",borderRadius:4,background:o?"var(--side-selected)":"transparent",color:"var(--text)",fontSize:11,textAlign:"left",cursor:"pointer"},onMouseEnter:e=>{o||(e.currentTarget.style.background="var(--side-hover)")},onMouseLeave:e=>{e.currentTarget.style.background=o?"var(--side-selected)":"transparent"},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{flexShrink:0,width:12,height:12,borderRadius:3,border:"1px solid var(--border)",background:o?"var(--accent)":"transparent",display:"inline-flex",alignItems:"center",justifyContent:"center",color:"var(--accent-contrast, #fff)"},children:o&&(0,n.jsx)("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"1.5 5 3.5 7 8.5 2"})})}),(0,n.jsxs)("span",{style:{fontFamily:"var(--font-mono)",color:"var(--text-muted)",flexShrink:0},children:["#",e.number]}),(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]},e.id)})})]})}var V=r(29608);function J({cwd:e,value:t,onChange:r}){let[a,i]=(0,o.useState)(null),[s,l]=(0,o.useState)(!1),[d,c]=(0,o.useState)(!1),[u,p]=(0,o.useState)(""),[x,h]=(0,o.useState)(!1),[g,f]=(0,o.useState)(null),b=(0,o.useRef)(null),v=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(!e)return void i(null);let t=!1;return(async()=>{try{let r=await fetch(`/api/worktrees?cwd=${encodeURIComponent(e)}`,{cache:"no-store"});if(!r.ok)return;let n=await r.json();if(t)return;i({forCwd:e,projectRoot:n.projectRoot??e,isGit:n.isGit??!1,currentWorktreePath:n.currentWorktreePath??null,worktrees:(n.worktrees??[]).map(e=>({path:e.path,branch:e.branch??null,isMain:!!e.isMain}))})}catch{t||i(null)}})(),()=>{t=!0}},[e]);let y=a?.worktrees.find(e=>e.path===t)??a?.worktrees.find(t=>t.path===e)??(a?.currentWorktreePath?a.worktrees.find(e=>e.path===a.currentWorktreePath):void 0)??a?.worktrees.find(e=>e.isMain)??null,m=async()=>{let e=u.trim();if(e&&!x&&a){h(!0),f(null);try{let t=await fetch("/api/worktrees",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:a.projectRoot,branch:e})}),n=await t.json().catch(()=>({}));if(!t.ok||!n.path){f(n.error??"创建失败"),h(!1);return}p(""),c(!1),l(!1),r(n.path)}catch(e){f(e instanceof Error?e.message:String(e))}h(!1)}};(0,o.useEffect)(()=>{if(!s)return;let e=e=>{b.current&&!b.current.contains(e.target)&&l(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[s]);let k=y?y.isMain?`主 checkout(${y.branch??""})`:y.branch??y.path:a?.isGit?"选择工作区…":"非 git 项目";return(0,n.jsxs)("div",{ref:b,style:{position:"relative"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>{l(e=>!e),f(null)},style:{width:"100%",height:28,boxSizing:"border-box",display:"flex",alignItems:"center",gap:6,padding:"0 8px",background:s?"var(--side-active)":"transparent",border:"1px solid var(--border)",borderRadius:5,cursor:"pointer",fontSize:11,color:"var(--text)",textAlign:"left",fontFamily:"var(--font-mono)"},title:y?.path??void 0,children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:y&&!y.isMain?"var(--accent)":"var(--text-dim)"},children:[(0,n.jsx)("line",{x1:"6",y1:"3",x2:"6",y2:"15"}),(0,n.jsx)("circle",{cx:"18",cy:"6",r:"3"}),(0,n.jsx)("circle",{cx:"6",cy:"18",r:"3"}),(0,n.jsx)("path",{d:"M18 9a9 9 0 0 1-9 9"})]}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:k}),(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:"var(--text-dim)"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),(0,n.jsxs)(X.f,{open:s,style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:120,minWidth:200,background:"var(--popover-glass)",border:"1px solid var(--border)",borderRadius:6,boxShadow:"0 6px 20px -6px rgba(0,0,0,0.35)",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{maxHeight:"min(40vh, 260px)",overflowY:"auto",padding:4},children:0===(a?.worktrees??[]).length?(0,n.jsx)("div",{style:{padding:"8px 10px",fontSize:11,color:"var(--text-dim)"},children:a?.isGit===!1?"非 git 项目,无法创建工作区":"暂无工作区"}):(a?.worktrees??[]).map(e=>{let o=e.path===(y?.path??t);return(0,n.jsxs)("button",{type:"button",onClick:()=>{r(e.path),l(!1),f(null)},title:e.path,style:{display:"block",width:"100%",boxSizing:"border-box",padding:"6px 8px",border:"none",borderRadius:4,background:o?"var(--side-active)":"transparent",color:"var(--text)",fontSize:11,textAlign:"left",cursor:"pointer",fontFamily:"var(--font-mono)"},onMouseEnter:e=>{o||(e.currentTarget.style.background="var(--side-hover)")},onMouseLeave:e=>{o||(e.currentTarget.style.background="transparent")},children:[(0,n.jsx)("span",{style:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.isMain?`主 checkout(${e.branch??""})`:e.branch??e.path}),(0,n.jsx)("span",{style:{display:"block",fontSize:9.5,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.path})]},e.path)})}),d?(0,n.jsxs)("div",{style:{padding:"6px 8px",borderTop:"1px solid var(--bubble-hairline)"},children:[(0,n.jsx)("input",{ref:v,value:u,onChange:e=>{p(e.target.value),f(null)},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),m()),"Escape"===e.key&&(c(!1),p(""),f(null))},placeholder:"新分支名",style:{width:"100%",fontSize:11,fontFamily:"var(--font-mono)",padding:"5px 8px",border:"1px solid var(--accent)",borderRadius:5,outline:"none",background:"var(--side-input)",color:"var(--text)",boxSizing:"border-box"}}),(0,n.jsxs)("div",{style:{display:"flex",gap:5,marginTop:5},children:[(0,n.jsx)("button",{type:"button",onClick:()=>void m(),disabled:x||!u.trim(),style:{flex:1,padding:"4px 0",background:"var(--accent)",border:"none",borderRadius:5,color:"var(--accent-contrast, #fff)",fontSize:11,fontWeight:600,cursor:x||!u.trim()?"not-allowed":"pointer",opacity:x||!u.trim()?.65:1},children:x?"创建中…":"创建"}),(0,n.jsx)("button",{type:"button",onClick:()=>{c(!1),p(""),f(null)},style:{flex:1,padding:"4px 0",background:"transparent",border:"1px solid var(--border)",borderRadius:5,color:"var(--text-muted)",fontSize:11,cursor:"pointer"},children:"取消"})]})]}):(0,n.jsxs)("button",{type:"button",onClick:e=>{e.stopPropagation(),c(!0),f(null),setTimeout(()=>v.current?.focus(),0)},style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"7px 10px",background:"none",border:"none",borderTop:"1px solid var(--bubble-hairline)",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},children:[(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.1",strokeLinecap:"round",style:{flexShrink:0},children:[(0,n.jsx)("line",{x1:"5",y1:"1",x2:"5",y2:"9"}),(0,n.jsx)("line",{x1:"1",y1:"5",x2:"9",y2:"5"})]}),(0,n.jsx)("span",{children:"新建工作区"})]}),g&&(0,n.jsx)("div",{style:{padding:"5px 10px 8px",color:"#dc2626",fontSize:11,lineHeight:1.35,overflowWrap:"anywhere"},children:g})]})]})}var Z=r(56314);let Q={not_started:{color:"#9ca3af",label:"未开始"},running:{color:"#10b981",label:"进行中"},review:{color:"#f59e0b",label:"待审核"},done:{color:"#10b981",label:"完成"},failed:{color:"#ef4444",label:"失败"},abandoned:{color:"#9ca3af",label:"放弃"},waiting_reply:{color:"#3184f8",label:"等回复"}},ee={width:"100%",boxSizing:"border-box",border:"1px solid var(--border)",borderRadius:6,background:"transparent",color:"var(--text)",fontSize:12,padding:"4px 8px",outline:"none"},et={display:"block",fontSize:10,color:"var(--text)",fontWeight:600,margin:"8px 0 3px"},er={border:"none",background:"color-mix(in srgb, var(--border) 30%, transparent)",color:"var(--text-muted)",borderRadius:5,padding:"2px 10px",fontSize:11,cursor:"pointer",whiteSpace:"nowrap"};function en({title:e,open:t,onToggle:r,children:o}){return(0,n.jsxs)("div",{children:[(0,n.jsxs)("button",{type:"button",onClick:r,style:{display:"flex",alignItems:"center",gap:4,width:"100%",marginTop:10,padding:"5px 0 3px",border:"none",borderTop:"1px solid var(--bubble-hairline)",background:"transparent",color:"var(--text-muted)",fontSize:11,fontWeight:600,cursor:"pointer",textAlign:"left"},children:[(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,transform:t?"rotate(90deg)":"none",transition:"transform 0.12s"},children:(0,n.jsx)("polyline",{points:"3 2 6.5 5 3 8"})}),e]}),t&&(0,n.jsx)("div",{children:o})]})}function eo({due:e,onChange:t}){let r=new Date,o=e?new Date(e):r,[a,i,s]=[o.getFullYear(),o.getMonth()+1,o.getDate()],l=[];for(let e=r.getFullYear()-2;e<=r.getFullYear()+3;e++)l.push(String(e));let d=Array.from({length:12},(e,t)=>String(t+1)),c=new Date(a,i,0).getDate(),u=Array.from({length:c},(e,t)=>String(t+1)),p=(e,r,n)=>{let o=new Date(e,r-1,n,0,0,0,0).getTime();t(Number.isNaN(o)?null:o)};return(0,n.jsxs)("div",{style:{display:"flex",gap:4},children:[(0,n.jsx)("div",{style:{flex:1.4,minWidth:0},children:(0,n.jsx)(G,{value:String(a),options:l.map(e=>({value:e,label:e})),onChange:e=>p(Number(e),i,Math.min(s,c))})}),(0,n.jsx)("div",{style:{flex:1,minWidth:0},children:(0,n.jsx)(G,{value:String(i),options:d.map(e=>({value:e,label:`${e}月`})),onChange:e=>p(a,Number(e),Math.min(s,new Date(a,Number(e),0).getDate()))})}),(0,n.jsx)("div",{style:{flex:1,minWidth:0},children:(0,n.jsx)(G,{value:String(s),options:u.map(e=>({value:e,label:e})),onChange:e=>p(a,i,Number(e))})})]})}function ea({value:e,onChange:t,placeholder:r}){let a=(0,H.hGv)({extensions:[P.A,F.oz,_.O.configure({placeholder:r})],content:e||"",contentType:"markdown",editorProps:{attributes:{class:"markdown-body task-card-md-field",spellcheck:"false"}},onUpdate:({editor:e})=>{t(e.getMarkdown())}});return(0,o.useEffect)(()=>{a&&a.getMarkdown()!==e&&a.commands.setContent(e||"",{contentType:"markdown"})},[a,e]),(0,n.jsx)("div",{className:"nodrag nowheel task-card-md-wrap",style:{...ee,flex:1,minHeight:70,overflowY:"auto",cursor:"text",padding:0,userSelect:"text"},children:(0,n.jsx)(H.$Z$,{editor:a})})}let ei=z(function({id:e,data:t,selected:r,width:i,height:l}){let{updateNode:d,deleteNode:c,normalizeNodeId:u}=W(),p=i??t.w??380,x=l??t.h??270,h=!!t.expanded,{cardId:g}=t,f=(0,Z.Lv)(),b=(0,Z.ZY)(),{detail:v,candidates:y,loading:m,error:w,reload:j,createCard:S,saveCard:R}=function(e,t){let[r,n]=(0,o.useState)(null),[a,i]=(0,o.useState)([]),[s,l]=(0,o.useState)(!1),[d,c]=(0,o.useState)(null),u=(0,o.useRef)(null);u.current=r;let p=(0,o.useCallback)(async(t=!1)=>{if(!e)return void n(null);t||l(!0);try{let t=await fetch(`/api/task-cards/${encodeURIComponent(e)}`,{cache:"no-store"});if(!t.ok){if(404===t.status)return void n(null);throw Error(`HTTP ${t.status}`)}let r=await t.json();n(r)}catch(e){t||c(e instanceof Error?e.message:String(e))}finally{t||l(!1)}},[e]),x=(0,o.useCallback)(()=>p(!1),[p]);(0,o.useEffect)(()=>{x()},[x]),(0,o.useEffect)(()=>{if(!t)return;let e=!1;return(async()=>{try{let r=await fetch(`/api/task-cards?boardId=${encodeURIComponent(t)}`,{cache:"no-store"});if(!r.ok)return;let n=await r.json();e||i(n.cards)}catch{}})(),()=>{e=!0}},[t]);let h=(0,o.useCallback)(async e=>{try{let t=await fetch("/api/task-cards",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`HTTP ${t.status}`)}let r=await t.json();return"number"==typeof r.updated&&(0,k.D2)(e.boardId,r.updated),r.card}catch(e){return c(e instanceof Error?e.message:String(e)),null}},[]),g=(0,o.useCallback)(async t=>{if(!e)return!1;try{let r=await fetch(`/api/task-cards/${encodeURIComponent(e)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error??`HTTP ${r.status}`)}let n=await r.json();return"number"==typeof n.updated&&u.current?.card.boardId&&(0,k.D2)(u.current.card.boardId,n.updated),await x(),!0}catch(e){return c(e instanceof Error?e.message:String(e)),!1}},[e,x]);return{detail:r,candidates:a,loading:s,error:d,reload:x,createCard:h,saveCard:g}}(g||null,f),{setContainer:E}=C("var(--assistant-card-glass)"),L=!g;v?.card.sessionId,(0,o.useEffect)(()=>{h&&!L&&j()},[h,L,j]);let[z,I]=(0,o.useState)(()=>L?{id:"",boardId:"",projectKey:"",number:0,name:"新建任务"===t.name?"":t.name,description:t.description??"",readyStatus:"draft",execStatus:"not_started",priority:0,due:null,attachments:[],cwd:b,useWorktree:!1,maxRetries:3,retryCount:0,sessionId:null,dispatchToken:null,owner:null,heartbeat:0,created:0,updated:0}:null);(0,o.useEffect)(()=>{!L&&v?.card&&!z&&I({...v.card})},[L,v,z]);let[N,M]=(0,o.useState)([]),[$,D]=(0,o.useState)([]),H=(0,o.useRef)(!1);(0,o.useEffect)(()=>{v&&!H.current&&(H.current=!0,M(q(v.links,"prerequisite")),D(q(v.links,"related")))},[v]);let[P,F]=(0,o.useState)(!1),B=(0,o.useRef)(!1),[A,O]=(0,o.useState)(null),[U,Y]=(0,o.useState)(null),[_,X]=(0,o.useState)(!1);(0,o.useEffect)(()=>{X(h)},[h]);let[ei,es]=(0,o.useState)(!1),[el,ed]=(0,o.useState)(null),ec=(0,o.useRef)(null),eu=(r,n)=>{I(o=>{let a=o?{...o,[r]:n}:o;return a&&("name"===r||"description"===r)&&d(e,{data:{...t,name:"name"===r?n:a.name,description:"description"===r?n:a.description??""}}),a})},ep=async()=>{if(!f)return void O("缺少看板上下文,无法创建");if(!z?.name.trim())return void Y("请填写任务名称");if(B.current)return;F(!0),B.current=!0,O(null);let r=await S({boardId:f,name:z.name,description:z.description,readyStatus:"todo",priority:z.priority,due:z.due??null,cwd:z.cwd??void 0,useWorktree:z.useWorktree,maxRetries:z.maxRetries,attachments:z.attachments,prerequisites:N,related:$});if(B.current=!1,F(!1),r){let n=`task-${r.id}`;u(e,n),d(n,{data:{...t,cardId:r.id,number:r.number,name:r.name,readyStatus:r.readyStatus,execStatus:r.execStatus,priority:r.priority,due:r.due??void 0}}),I(e=>e?{...e,...r,sessionId:r.sessionId}:e),j()}},ex=async()=>{if(!z?.name.trim())return void Y("请填写任务名称");if(B.current)return;F(!0),B.current=!0,O(null);let r=await R({name:z.name,description:z.description,readyStatus:z.readyStatus,priority:z.priority,due:z.due??null,attachments:z.attachments,cwd:z.cwd??null,useWorktree:z.useWorktree,maxRetries:z.maxRetries,prerequisites:N,related:$});B.current=!1,F(!1),r?d(e,{data:{...t,name:z.name,description:z.description??"",readyStatus:z.readyStatus,priority:z.priority,due:z.due??void 0}}):O(w??"保存失败")},eh=(0,o.useMemo)(()=>{if(L||!v?.card||!z)return!1;let e=v.card;return z.name!==e.name||z.description!==e.description||z.priority!==e.priority||z.due!==e.due||z.cwd!==e.cwd||z.useWorktree!==e.useWorktree||z.maxRetries!==e.maxRetries||JSON.stringify(z.attachments??[])!==JSON.stringify(e.attachments??[])||JSON.stringify([...N].sort())!==JSON.stringify(q(v.links,"prerequisite").sort())||JSON.stringify([...$].sort())!==JSON.stringify(q(v.links,"related").sort())},[L,v,z,N,$]),eg=(0,o.useRef)(r),ef=(0,o.useRef)(eh);ef.current=eh,(0,o.useEffect)(()=>{let e=eg.current;eg.current=r,e&&!r&&!L&&ef.current&&ex()},[r,L]);let eb=(0,o.useCallback)(r=>{if(r.stopPropagation(),h){let r=t.collapsedW>=380&&t.collapsedH>=240,n=r?t.collapsedW:380,o=r?t.collapsedH:270;d(e,{data:{...t,expanded:!1,expandedW:p,expandedH:x,w:n,h:o},width:n,height:o,style:{width:n,height:o}})}else{let r=t.expandedW>=480&&t.expandedH>=400,n=r?t.expandedW:760,o=r?t.expandedH:620;d(e,{data:{...t,expanded:!0,collapsedW:p,collapsedH:x,w:n,h:o},width:n,height:o,style:{width:n,height:o}})}},[e,t,h,p,x,d]),ev=(0,o.useCallback)((r,n)=>{d(e,{data:{...t,w:n.width,h:n.height}})},[e,t,d]),ey=t.execStatus??v?.card.execStatus??"not_started",em=z?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("label",{style:et,children:"任务名称 *"}),(0,n.jsx)("input",{style:{...ee,...U?{borderColor:"#f87171",boxShadow:"0 0 0 1px #f87171"}:{}},value:z.name,onChange:e=>{eu("name",e.target.value),U&&Y(null)},placeholder:"任务名称"}),U&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:11,marginTop:3},children:U}),(0,n.jsx)("label",{style:et,children:"需求说明"}),(0,n.jsx)(ea,{value:z.description,onChange:e=>eu("description",e),placeholder:"任务描述"}),(0,n.jsxs)(en,{title:"高级",open:_,onToggle:()=>X(e=>!e),children:[(0,n.jsx)("label",{style:et,children:"工作目录"}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)("input",{style:{...ee,flex:1},value:z.cwd??"",onChange:e=>eu("cwd",e.target.value||null),placeholder:"默认项目根目录",readOnly:!0}),(0,n.jsx)("button",{type:"button",style:er,onClick:()=>es(!0),children:"选择目录"})]}),ei&&z&&(0,n.jsx)(V.K,{onCancel:()=>es(!1),onSelect:e=>{eu("cwd",e),es(!1)}}),(0,n.jsx)("label",{style:et,children:"工作区"}),(0,n.jsx)(J,{cwd:z.cwd,value:el,onChange:e=>{ed(e),eu("cwd",e)}}),(0,n.jsx)("label",{style:et,children:"预计截止"}),(0,n.jsx)(eo,{due:z.due??null,onChange:e=>eu("due",e)}),(0,n.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,n.jsxs)("div",{style:{flex:1},children:[(0,n.jsx)("label",{style:et,children:"优先级"}),(0,n.jsx)(G,{value:String(z.priority),onChange:e=>eu("priority",Number(e)),options:[{value:"1",label:"高"},{value:"0",label:"中"},{value:"-1",label:"低"}]})]}),(0,n.jsxs)("div",{style:{flex:1},children:[(0,n.jsx)("label",{style:et,children:"最大重试次数"}),(0,n.jsx)("input",{style:ee,type:"number",min:0,value:z.maxRetries,onChange:e=>eu("maxRetries",Math.max(0,Number(e.target.value)||0))})]})]}),(0,n.jsx)("label",{style:et,children:"前置任务(可多选)"}),(0,n.jsx)(K,{candidates:y,selected:N,onChange:M,excludeId:g,placeholder:"本看板内选择前置任务…"}),(0,n.jsx)("label",{style:et,children:"关联任务(可多选)"}),(0,n.jsx)(K,{candidates:y,selected:$,onChange:D,excludeId:g,placeholder:"本看板内选择关联任务…"}),(0,n.jsx)("label",{style:et,children:"附件(引用文件路径,每行一个)"}),(0,n.jsx)("textarea",{style:{...ee,minHeight:46,resize:"vertical",fontFamily:"var(--font-mono)",fontSize:11},value:(z.attachments??[]).join("\n"),onChange:e=>eu("attachments",e.target.value.split("\n").map(e=>e.trim()).filter(Boolean)),placeholder:"/path/to/file",spellCheck:!1})]}),(A||w)&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:11,marginTop:6},children:A??w})]}):m?(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontSize:12,padding:20,textAlign:"center"},children:"加载中…"}):(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontSize:12,padding:20,textAlign:"center"},children:"未找到任务卡"});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.PN,{isVisible:r,minWidth:h?480:380,minHeight:h?400:240,onResize:ev,keepAspectRatio:!1}),(0,n.jsx)(a.h7,{type:"target",position:s.yX.Left,className:"board-handle",style:{background:"var(--text-dim)",width:8,height:8,border:"1px solid var(--bg-panel)",opacity:.85}}),(0,n.jsx)(a.h7,{type:"source",position:s.yX.Right,className:"board-handle",style:{background:"var(--text-dim)",width:8,height:8,border:"1px solid var(--bg-panel)",opacity:.85}}),(0,n.jsxs)("div",{ref:e=>{ec.current=e,E(e)},"data-board-node":!0,"data-testid":`task-card-${e}`,onDoubleClick:eb,style:{position:"relative",width:"100%",height:"100%",borderRadius:"var(--bubble-radius, 12px)",border:"1px solid var(--bubble-border)",background:"transparent",boxShadow:r?"0 2px 10px -6px rgba(0,0,0,0.2), 0 0 0 5px transparent, 0 0 16px 5px color-mix(in srgb, var(--accent) 28%, transparent)":"0 2px 10px -6px rgba(0,0,0,0.2)",color:"var(--text)",display:"flex",flexDirection:"column",overflow:"hidden",userSelect:"none",cursor:"grab",padding:6},children:[(0,n.jsxs)("div",{style:{flexShrink:0,height:36,display:"flex",alignItems:"center",gap:6,padding:"0 10px",borderBottom:"1px solid var(--bubble-hairline)",cursor:"grab",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)("span",{title:`执行状态:${(Q[ey]??Q.not_started).label}`,style:{display:"flex",alignItems:"center",gap:4,flexShrink:0},children:(0,n.jsx)(T,{kind:"task",color:(Q[ey]??Q.not_started).color})}),(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12.5,fontWeight:600,color:"var(--text)"},children:z?.name||(L?"新建任务卡":"任务卡")}),z?.number?(0,n.jsxs)("span",{style:{flexShrink:0,fontSize:12.5,fontWeight:600,color:"var(--text)",marginLeft:4},children:["#",z.number]}):null,(0,n.jsxs)("div",{className:"nodrag",style:{display:"flex",alignItems:"center",gap:6,flexShrink:0},onPointerDown:e=>e.stopPropagation(),children:[L?(0,n.jsx)("button",{type:"button",style:er,disabled:P||!f,onClick:()=>void ep(),title:"创建任务并派发(转待办,调度器可执行)",children:P?"创建中…":"派发"}):z?.readyStatus==="draft"?(0,n.jsx)("button",{type:"button",style:er,disabled:P,onClick:()=>{eu("readyStatus","todo"),!L&&g&&R({readyStatus:"todo"})},title:"派发(转待办,调度器可执行)",children:P?"派发中…":"派发"}):z?.readyStatus==="todo"?(0,n.jsxs)("span",{title:`执行状态:${(Q[ey]??Q.not_started).label}`,style:{display:"flex",alignItems:"center",gap:4,fontSize:11,fontWeight:600,color:(Q[ey]??Q.not_started).color,whiteSpace:"nowrap"},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{width:8,height:8,borderRadius:"50%",background:(Q[ey]??Q.not_started).color,..."running"===ey?{animation:"pulse-dot 1.6s ease-in-out infinite"}:{}}}),(Q[ey]??Q.not_started).label]}):null,L?null:eh?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",style:er,onClick:()=>{v&&(I({...v.card}),M(q(v.links,"prerequisite")),D(q(v.links,"related")),ed(null),O(null),Y(null))},title:"撤销本次编辑",children:"取消"}),(0,n.jsx)("button",{type:"button",style:er,disabled:P,onClick:()=>void ex(),title:"完成(保存)",children:P?"保存中…":"完成"})]}):null]})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,display:"flex"},children:(0,n.jsx)("div",{className:"[scrollbar-width:none] nodrag nowheel",style:{flex:"1 1 auto",minWidth:0,overflowY:"auto",padding:"10px 12px",display:"flex",flexDirection:"column",cursor:"default",userSelect:"text"},children:em})})]})]})});function es({menu:e,onClose:t}){let{t:r}=(0,i.s)(),a=W(),{node:s,edgeId:l,x:d,y:c,edgeDerived:u}=e,p=!!(l&&u),x=(0,o.useCallback)(()=>{s&&a.deleteNode(s.id),t()},[s,a,t]),h=(0,o.useCallback)(()=>{l&&!p&&a.deleteEdge(l),t()},[l,p,a,t]),g=(0,o.useCallback)(()=>{a.addNode({id:crypto.randomUUID(),type:"sticky-note",position:{x:d,y:c},style:{width:338,height:230},data:{text:"",badge:"blue"}}),t()},[a,d,c,t]),f=(0,o.useCallback)(()=>{a.addNode({id:crypto.randomUUID(),type:"task-card",position:{x:d,y:c},style:{width:380,height:270},data:{cardId:"",number:0,name:"新建任务",description:"",readyStatus:"draft",execStatus:"not_started",priority:0,expanded:!1,w:380,h:270,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}}),t()},[a,d,c,t]),b=s?.type??null;return(0,n.jsxs)("div",{className:"glass-popover",onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),style:{position:"fixed",left:d,top:c,zIndex:1200,minWidth:168,padding:4,borderRadius:10,border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)",boxShadow:"0 8px 30px -8px rgba(0,0,0,0.4)",color:"var(--text)",fontSize:12.5,userSelect:"none"},children:[l&&(p?(0,n.jsx)(el,{disabled:!0,label:"派生连线(自动生成,不可删除)"}):(0,n.jsx)(el,{danger:!0,label:"删除连线",onClick:h})),s&&(0,n.jsx)(el,{label:"session-card"===b?"删除会话":"task-card"===b?"删除任务卡":"删除便笺",danger:!0,onClick:x}),!s&&!l&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(el,{label:"新建便笺",onClick:g}),(0,n.jsx)(el,{label:"新建任务卡",onClick:f})]})]})}function el({label:e,onClick:t,danger:r,disabled:o}){return(0,n.jsx)("button",{type:"button",disabled:o,onClick:t,style:{display:"flex",alignItems:"center",width:"100%",padding:"6px 10px",border:"none",borderRadius:7,background:"transparent",color:r?"#ef4444":o?"var(--text-dim)":"var(--text)",fontSize:12.5,textAlign:"left",cursor:o?"default":"pointer"},onMouseEnter:e=>{o||(e.currentTarget.style.background="color-mix(in srgb, var(--accent) 14%, transparent)")},onMouseLeave:e=>{e.currentTarget.style.background="transparent"},children:e})}var ed=r(84876);let ec={"session-card":$,"task-card":ei,"sticky-note":Y,text:Y};function eu({board:e,isDark:t}){let{t:r}=(0,i.s)(),{screenToFlowPosition:s}=(0,a.VH)(),[l,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(null),p=(0,o.useMemo)(()=>({boardId:e.board?.id??null,updateNode:(t,r)=>{e.updateNode?.(t,r)},deleteNode:t=>{let r=e.nodes.find(e=>e.id===t);r&&e.deleteNodeWithConfirm?.(r)},normalizeNodeId:(t,r)=>{e.normalizeNodeId?.(t,r)},deleteEdge:t=>{e.onEdgesChange?.([{type:"remove",id:t}])},addEdge:t=>e.addEdge?.(t),addNode:t=>e.addNode?.(t)}),[e]),x=(0,o.useCallback)((e,t)=>{"sticky-note"===e?p.addNode({id:crypto.randomUUID(),type:e,position:{x:t.x,y:t.y},style:{width:380,height:280},data:{text:"",badge:"blue"}}):p.addNode({id:crypto.randomUUID(),type:e,position:{x:t.x,y:t.y},style:{width:380,height:270},data:{cardId:"",number:0,name:"新建任务",description:"",readyStatus:"draft",execStatus:"not_started",priority:0,expanded:!1,w:380,h:270,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}})},[p]),h=(0,o.useCallback)(e=>{let t=document.querySelector(".react-flow__pane"),r=t?.getBoundingClientRect();x(e,s({x:r?r.left+r.width/2:window.innerWidth/2,y:r?r.top+r.height/2:window.innerHeight/2}))},[x,s]),g=(0,o.useCallback)((e,t)=>{e.dataTransfer.setData("text/board-tool",t),e.dataTransfer.effectAllowed="copy"},[]),f=(0,o.useRef)(null);(0,o.useEffect)(()=>{let t=f.current;if(!t)return;let r=e=>{let t=e.dataTransfer?.types??[];(t.includes("text/session-id")||t.includes("text/board-tool"))&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=t.includes("text/board-tool")?"copy":"move"),d(!0))},n=e=>{let r=e.relatedTarget;r&&t.contains(r)||d(!1)},o=()=>d(!1),a=t=>{let r=t.dataTransfer?.types??[];if(!r.includes("text/session-id")&&!r.includes("text/board-tool"))return;t.preventDefault(),t.stopPropagation(),d(!1);let n=t.dataTransfer;if(!n)return;let o=s({x:t.clientX,y:t.clientY}),a=n.getData("text/session-id");if(a)return void e.addSessionNode(a,o.x,o.y);let i=n.getData("text/board-tool");"sticky-note"===i?x("sticky-note",o):"task-card"===i&&x("task-card",o)};return t.addEventListener("dragover",r,!0),t.addEventListener("dragleave",n,!0),t.addEventListener("dragend",o,!0),t.addEventListener("drop",a,!0),()=>{t.removeEventListener("dragover",r,!0),t.removeEventListener("dragleave",n,!0),t.removeEventListener("dragend",o,!0),t.removeEventListener("drop",a,!0)}},[e,s,x]);let b=(0,o.useCallback)(async({nodes:t})=>{if(!t||0===t.length)return!0;let r=t[0],n=e.nodes.find(e=>e.id===r.id);return n&&e.deleteNodeWithConfirm?.(n),!1},[e]),v=(0,o.useRef)(null),y=(0,o.useCallback)(e=>{u(null);let t=Date.now(),r=v.current;if(r&&t-r.t<320){v.current=null,x("sticky-note",s({x:e.clientX,y:e.clientY}));return}v.current={t:t}},[s,x]),m=(0,o.useCallback)((e,t)=>{e.preventDefault(),u({x:e.clientX,y:e.clientY,node:t,edgeId:null})},[]),k=(0,o.useCallback)(e=>{e.preventDefault(),u({x:e.clientX,y:e.clientY,node:null,edgeId:null})},[]),w=(0,o.useCallback)((t,r)=>{t.preventDefault();let n=e.edges.find(e=>e.id===r.id),o=n?.data;u({x:t.clientX,y:t.clientY,node:null,edgeId:n?.id??null,edgeDerived:!!(o?.execLink||o?.taskLink)})},[e.edges]),j=(0,o.useCallback)(e=>{h(e)},[h]);return(0,n.jsx)("div",{style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",position:"relative"},children:(0,n.jsxs)("div",{ref:f,style:{flex:1,minHeight:0,position:"relative"},children:[(0,n.jsx)("div",{style:{position:"absolute",inset:0,zIndex:0,pointerEvents:"none",background:"var(--board-scrim-bg)",backdropFilter:"var(--board-scrim-filter, none)",WebkitBackdropFilter:"var(--board-scrim-filter, none)"}}),l&&(0,n.jsx)("div",{style:{position:"absolute",inset:0,zIndex:30,display:"flex",alignItems:"center",justifyContent:"center",background:"color-mix(in srgb, var(--accent) 10%, transparent)",border:"2px dashed var(--accent)",borderRadius:10,pointerEvents:"none",color:"var(--accent)",fontSize:13,fontWeight:600},children:r("boards.dropToAdd")}),e.error?(0,n.jsx)("div",{style:{position:"absolute",inset:0,zIndex:30,display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:e.error}):e.loading?(0,n.jsx)(ed.N,{label:r("boards.loadingCanvas")}):(0,n.jsxs)(E,{value:p,children:[(0,n.jsxs)(a.Gc,{nodes:e.nodes,edges:e.edges,onNodesChange:e.onNodesChange,onEdgesChange:e.onEdgesChange,onConnect:e.onConnect,nodeTypes:ec,onBeforeDelete:b,onNodeContextMenu:m,onPaneContextMenu:k,onEdgeContextMenu:w,onPaneClick:y,zoomOnDoubleClick:!1,fitView:!0,fitViewOptions:{padding:.2},minZoom:.1,maxZoom:2,colorMode:t?"dark":"light",deleteKeyCode:["Backspace","Delete"],proOptions:{hideAttribution:!1},defaultEdgeOptions:{markerEnd:{type:"arrowclosed"},style:{strokeWidth:1.5,stroke:"#8b8fa3"}},children:[(0,n.jsx)(a.VS,{variant:a._5.Dots,gap:24,size:1.2,color:"color-mix(in srgb, var(--border) 45%, transparent)"}),(0,n.jsx)(a.H2,{position:"bottom-left",showInteractive:!1}),(0,n.jsx)(a.of,{pannable:!0,zoomable:!0,style:{background:"var(--board-card-glass)",backdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",WebkitBackdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)",borderRadius:12,boxShadow:"0 2px 12px -6px rgba(0,0,0,0.18)",overflow:"hidden"},maskColor:"color-mix(in srgb, var(--board-card-glass) 78%, transparent)",nodeColor:()=>"color-mix(in srgb, var(--accent) 50%, transparent)",nodeStrokeColor:()=>"var(--accent)"})]}),c&&(0,n.jsx)(es,{menu:c,onClose:()=>u(null)}),(0,n.jsxs)("div",{style:{position:"absolute",left:"50%",transform:"translateX(-50%)",bottom:16,zIndex:30,display:"flex",gap:4,padding:4,borderRadius:10,background:"var(--board-card-glass)",backdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",WebkitBackdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)",boxShadow:"0 2px 12px -6px rgba(0,0,0,0.18)"},children:[(0,n.jsx)(ep,{label:"便笺",onClick:()=>j("sticky-note"),onDragStart:e=>g(e,"sticky-note")}),(0,n.jsx)(ep,{label:"任务",onClick:()=>j("task-card"),onDragStart:e=>g(e,"task-card")})]})]})]})})}function ep({label:e,onClick:t,onDragStart:r}){return(0,n.jsx)("button",{type:"button",draggable:!0,title:e,"aria-label":e,onClick:t,onDragStart:r,style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"6px 14px",border:"none",borderRadius:7,background:"transparent",color:"var(--text-muted)",fontSize:12.5,cursor:"grab",userSelect:"none",transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="color-mix(in srgb, var(--accent) 12%, transparent)",e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:e})}}}]);
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6582],{86582:(e,t,r)=>{r.r(t),r.d(t,{CanvasStage:()=>eu});var n=r(95155),o=r(12115),a=r(81750);r(53255);var i=r(39247),s=r(85610),l=r(47650),d=r(60015);function c({stats:e,contextUsage:t}){if(!e)return null;let r=e.tokens,o=e.cost??0,a=e=>e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e),i=o>0?o>=.01?`$${o.toFixed(2)}`:"<$0.01":null,s="var(--text-muted)",l=null;if(t?.contextWindow){let e=t.percent;null!==e&&e>90?s="#ef4444":null!==e&&e>70&&(s="rgba(234,179,8,0.95)"),l=null!==e?`${e.toFixed(0)}% / ${a(t.contextWindow)}`:`? / ${a(t.contextWindow)}`}let d={display:"flex",alignItems:"center",gap:4,flexShrink:0};return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,minWidth:0,fontSize:11,color:"var(--text-muted)",whiteSpace:"nowrap",fontVariantNumeric:"tabular-nums"},children:[r.input>0&&(0,n.jsxs)("span",{style:d,children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"5",y1:"8.5",x2:"5",y2:"1.5"}),(0,n.jsx)("polyline",{points:"2 4 5 1.5 8 4"})]}),a(r.input)]}),r.output>0&&(0,n.jsxs)("span",{style:d,children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"5",y1:"1.5",x2:"5",y2:"8.5"}),(0,n.jsx)("polyline",{points:"2 6 5 8.5 8 6"})]}),a(r.output)]}),r.cacheRead>0&&(0,n.jsxs)("span",{style:d,children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M8.5 5a3.5 3.5 0 1 1-1-2.45"}),(0,n.jsx)("polyline",{points:"6.5 1.5 8.5 2.5 7.5 4.5"})]}),a(r.cacheRead)]}),i&&(0,n.jsx)("span",{style:{display:"flex",alignItems:"center",color:"var(--text)",fontWeight:500,flexShrink:0},children:i}),l&&(0,n.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:4,color:s,flexShrink:0},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M1 9 L1 5 Q1 1 5 1 Q9 1 9 5 L9 9"}),(0,n.jsx)("line",{x1:"1",y1:"9",x2:"9",y2:"9"})]}),l]})]})}let u=(0,o.forwardRef)(function({sessionId:e,stats:t,contextUsage:r,todos:a},s){let{t:l}=(0,i.s)(),[d,c]=(0,o.useState)(!1),[u,m]=(0,o.useState)(!1),k=(0,o.useRef)(null),w=(0,o.useRef)(null),j=(0,o.useRef)(null);(0,o.useImperativeHandle)(s,()=>({openStats:()=>{c(!0),m(!1)}}),[]);let S=e=>{c("stats"===e),m("todo"===e)},C=(0,o.useCallback)(()=>{window.open(`/api/sessions/${encodeURIComponent(e)}/export?inline=1`,"_blank","noopener,noreferrer")},[e]),R=r?.contextWindow&&null!==r.percent?`${r.percent.toFixed(0)}% / ${b(r.contextWindow)}`:l("nav.stats"),E=a.filter(e=>"completed"!==e.status).length,W=(0,o.useCallback)(()=>{let e=k.current?.closest("[data-session-titlebar]");return e?.getBoundingClientRect().width??300},[]),L=d||u;return(0,o.useEffect)(()=>{if(!L)return;let e=e=>{let t=e.target;t instanceof Node&&(k.current?.contains(t)||document.querySelector("[data-session-nav-popover]")?.contains(t)||document.querySelector("[data-session-nav-todo]")?.contains(t)||document.querySelector(".glass-top-panel")?.contains(t))||(c(!1),m(!1))},t=e=>{"Escape"===e.key&&(c(!1),m(!1))};return document.addEventListener("pointerdown",e,!0),document.addEventListener("keydown",t,!0),()=>{document.removeEventListener("pointerdown",e,!0),document.removeEventListener("keydown",t,!0)}},[L]),(0,n.jsxs)("div",{ref:k,style:{display:"flex",alignItems:"center",gap:2,padding:"0 4px",position:"relative",pointerEvents:"all",height:"100%"},children:[(0,n.jsxs)("button",{type:"button",onClick:C,title:l("history.full"),"aria-label":l("history.full"),style:p,onMouseEnter:e=>{e.currentTarget.style.color="var(--text)",e.currentTarget.style.background=g},onMouseLeave:e=>{e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="transparent"},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("path",{d:"M3 12a9 9 0 1 0 3-6.7L3 8"}),(0,n.jsx)("path",{d:"M3 3v5h5"}),(0,n.jsx)("path",{d:"M12 7v5l3 2"})]}),(0,n.jsx)("span",{style:x,children:l("history.full")})]}),(0,n.jsx)("span",{style:h}),(0,n.jsxs)("button",{ref:w,type:"button",onClick:()=>S(d?"none":"stats"),title:l("session.title"),"aria-label":l("session.title"),"aria-expanded":d,style:{...p,background:d?f:"transparent",color:d?"var(--accent)":"var(--text-muted)"},onMouseEnter:e=>{d||(e.currentTarget.style.color="var(--text)",e.currentTarget.style.background=g)},onMouseLeave:e=>{d||(e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="transparent")},children:[(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"12",y1:"20",x2:"12",y2:"10"}),(0,n.jsx)("line",{x1:"18",y1:"20",x2:"18",y2:"4"}),(0,n.jsx)("line",{x1:"6",y1:"20",x2:"6",y2:"16"})]}),(0,n.jsx)("span",{style:x,children:R})]}),a.length>0&&(0,n.jsxs)("button",{ref:j,type:"button",onClick:()=>S(u?"none":"todo"),title:l("todo.title"),"aria-label":l("todo.title"),"aria-expanded":u,style:{...p,background:u?f:"transparent",color:u?"var(--accent)":"var(--text-muted)"},onMouseEnter:e=>{u||(e.currentTarget.style.color="var(--text)",e.currentTarget.style.background=g)},onMouseLeave:e=>{u||(e.currentTarget.style.color="var(--text-muted)",e.currentTarget.style.background="transparent")},children:[(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,n.jsx)("rect",{x:"3",y:"4",width:"18",height:"16",rx:"3"}),(0,n.jsx)("path",{d:"M8 9h8M8 13h5"})]}),(0,n.jsx)("span",{style:x,children:l("nav.todo")}),(0,n.jsx)("span",{style:{fontSize:10,fontWeight:700,color:"var(--text-muted)"},children:E>0?E:"✓"})]}),d&&t&&(0,n.jsx)(v,{navRef:k,navWidth:W(),stats:t,contextUsage:r,onClose:()=>c(!1)}),u&&a.length>0&&(0,n.jsx)(y,{navRef:k,navWidth:W(),todos:a,onClose:()=>m(!1)})]})}),p={flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",gap:4,width:"auto",height:26,padding:"0 6px",border:"none",borderRadius:6,background:"transparent",color:"var(--text-muted)",cursor:"pointer",transition:"color 0.12s, background 0.12s"},x={fontSize:11,fontWeight:600,lineHeight:1,whiteSpace:"nowrap"},h={flexShrink:0,width:1,height:16,alignSelf:"center",background:"color-mix(in srgb, var(--border) 70%, transparent)",margin:"0 3px"},g="color-mix(in srgb, var(--glass-bg-strong) 40%, transparent)",f="color-mix(in srgb, var(--glass-bg-strong) 60%, transparent)";function b(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}k`:String(e)}function v({navRef:e,navWidth:t,stats:r,contextUsage:a,onClose:s}){let{t:d}=(0,i.s)(),[u,p]=(0,o.useState)(null),x=(0,o.useRef)(null);if((0,o.useEffect)(()=>{let r=()=>{let r=e.current;if(!r)return;let n=r.getBoundingClientRect(),o=r.closest("[data-session-titlebar]"),a=o?.getBoundingClientRect(),i=a?a.left:Math.min(n.right-t,Math.max(8,n.left));p({top:a?a.bottom:n.bottom,left:i})};r();let n=new ResizeObserver(r);return e.current&&n.observe(e.current),e.current?.closest("[data-session-titlebar]")&&n.observe(e.current.closest("[data-session-titlebar]")),window.addEventListener("resize",r),()=>{n.disconnect(),window.removeEventListener("resize",r)}},[e,t]),(0,o.useEffect)(()=>{let t=t=>{let r=t.target;x.current?.contains(r)||e.current?.contains(r)||s()};return document.addEventListener("pointerdown",t,!0),()=>document.removeEventListener("pointerdown",t,!0)},[e,s]),!u)return null;let h=r.totalActiveMs??0,g=[...r.sessionName?[{label:d("session.name"),value:r.sessionName}]:[],{label:d("session.id"),value:r.sessionId},...h>0?[{label:d("session.totalActive"),value:(e=>{if(e<=0)return"0s";let t=Math.floor(e/1e3),r=Math.floor(t/3600),n=Math.floor(t%3600/60),o=t%60;return r>0?`${r}h ${n}m`:n>0?`${n}m ${o}s`:`${o}s`})(h)}]:[]],f=[[d("session.user"),r.userMessages.toLocaleString()],[d("session.assistant"),r.assistantMessages.toLocaleString()],[d("session.toolCalls"),r.toolCalls.toLocaleString()],[d("session.toolResults"),r.toolResults.toLocaleString()],[d("session.total"),r.totalMessages.toLocaleString()]],y=[[d("session.input"),r.tokens.input.toLocaleString()],[d("session.output"),r.tokens.output.toLocaleString()],...r.tokens.cacheRead>0?[[d("session.cacheRead"),r.tokens.cacheRead.toLocaleString()]]:[],...r.tokens.cacheWrite>0?[[d("session.cacheWrite"),r.tokens.cacheWrite.toLocaleString()]]:[],[d("session.total"),r.tokens.total.toLocaleString()],...r.cost>0?[[d("session.cost"),`$${r.cost.toFixed(4)}`]]:[],...r.contextUsage?.contextWindow?[[d("session.context"),`${null!==r.contextUsage.percent?`${r.contextUsage.percent.toFixed(1)}%`:"?"} / ${b(r.contextUsage.contextWindow)}`]]:[]],m=(e,t,r="left",o=!1)=>(0,n.jsxs)("div",{style:{minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--text)",marginBottom:6},children:e}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:o?"max-content minmax(0, 1fr)":"auto minmax(0, 1fr)",columnGap:o?14:12,rowGap:4,justifyContent:o?"start":void 0},children:t.map(([t,o])=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-meta)",whiteSpace:"nowrap"},children:t}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",textAlign:r,whiteSpace:"normal"},children:o})]},`${e}:${t}`))})]}),k=(0,n.jsx)("div",{ref:x,"data-session-nav-popover":!0,role:"dialog","aria-label":d("session.title"),className:"glass-panel",style:{position:"fixed",top:u.top,left:u.left,width:t,maxHeight:"min(560px, calc(100dvh - 44px))",overflowY:"auto",zIndex:1200,padding:"12px 16px",fontSize:12,lineHeight:1.5,fontFamily:"var(--font-mono)",borderRadius:12,border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)"},children:(0,n.jsxs)("div",{style:{display:"grid",gap:16,fontSize:12,lineHeight:1.5,fontFamily:"var(--font-mono)"},children:[(0,n.jsx)(c,{stats:r,contextUsage:a}),(0,n.jsx)("div",{style:{display:"grid",gridTemplateColumns:"auto minmax(0, 1fr)",columnGap:12,rowGap:8,alignItems:"start"},children:g.map(e=>(0,n.jsxs)("div",{style:{display:"contents"},children:[(0,n.jsx)("div",{style:{color:"var(--text-meta)",whiteSpace:"nowrap"},children:e.label}),(0,n.jsx)("div",{style:{color:"var(--text-muted)",minWidth:0,overflowWrap:"anywhere",wordBreak:"break-word",whiteSpace:"normal"},children:e.value})]},e.label))}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"minmax(160px, 0.5fr) minmax(240px, 0.7fr)",gap:24},children:[m(d("session.messages"),f),m(d("session.tokens"),y,"right",!0)]})]})});return(0,l.createPortal)(k,document.body)}function y({navRef:e,navWidth:t,todos:r,onClose:a}){let{t:s}=(0,i.s)(),[d,c]=(0,o.useState)(null),u=(0,o.useRef)(null);if((0,o.useEffect)(()=>{let r=()=>{let r=e.current;if(!r)return;let n=r.getBoundingClientRect(),o=r.closest("[data-session-titlebar]"),a=o?.getBoundingClientRect(),i=a?a.left:Math.min(n.right-t,Math.max(8,n.left));c({top:a?a.bottom:n.bottom,left:i})};r();let n=new ResizeObserver(r);return e.current&&n.observe(e.current),e.current?.closest("[data-session-titlebar]")&&n.observe(e.current.closest("[data-session-titlebar]")),window.addEventListener("resize",r),()=>{n.disconnect(),window.removeEventListener("resize",r)}},[e,t]),(0,o.useEffect)(()=>{let t=t=>{let r=t.target;u.current?.contains(r)||e.current?.contains(r)||a()};return document.addEventListener("pointerdown",t,!0),()=>document.removeEventListener("pointerdown",t,!0)},[e,a]),!d)return null;let p=(0,n.jsxs)("div",{ref:u,"data-session-nav-todo":!0,role:"menu","aria-label":s("todo.title"),className:"glass-panel",style:{position:"fixed",top:d.top,left:d.left,width:t,maxHeight:"min(440px, calc(100dvh - 44px))",overflowY:"auto",zIndex:1200,fontFamily:"inherit",borderRadius:12,border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"9px 12px",borderBottom:"1px solid color-mix(in srgb, var(--border) 70%, transparent)",fontSize:12,fontWeight:650,color:"var(--text)"},children:[s("todo.title"),(0,n.jsxs)("span",{style:{marginLeft:"auto",fontSize:11,color:"var(--text-meta)",fontWeight:500},children:[r.filter(e=>"completed"===e.status).length,"/",r.length," ",s("todo.completed")]})]}),0===r.length?(0,n.jsx)("div",{style:{padding:"12px 14px",fontSize:12,color:"var(--text-muted)",fontStyle:"italic"},children:s("todo.empty")}):(0,n.jsx)("div",{style:{maxHeight:330,overflowY:"auto"},children:r.map(e=>{let t="completed"===e.status,r="high"===e.priority?"#ef4444":"medium"===e.priority?"rgba(234,179,8,0.9)":"var(--text-meta)";return(0,n.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:8,padding:"7px 12px",borderBottom:"1px solid color-mix(in srgb, var(--border) 45%, transparent)"},children:[(0,n.jsx)("span",{"aria-hidden":"true",style:{flexShrink:0,marginTop:2,width:13,height:13,borderRadius:4,display:"flex",alignItems:"center",justifyContent:"center",fontSize:10,fontWeight:800,lineHeight:1,color:t?"#fff":"transparent",background:t?"#16a34a":"color-mix(in srgb, var(--border) 70%, transparent)",border:t?"none":"1px solid color-mix(in srgb, var(--border) 80%, transparent)"},children:"✓"}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,fontSize:12,lineHeight:1.4,color:t?"var(--text-meta)":"var(--text)",textDecoration:t?"line-through":"none",wordBreak:"break-word"},children:e.content}),(0,n.jsx)("span",{"aria-hidden":"true",style:{flexShrink:0,marginTop:5,width:7,height:7,borderRadius:"50%",background:r}})]},e.id??e.content)})})]});return(0,l.createPortal)(p,document.body)}var m=r(32782),k=r(15934);let w=(0,o.memo)(function({sessionId:e,cwd:t,taskId:r,onPromote:a}){let{t:s}=(0,i.s)(),{soundEnabled:c,onSoundToggle:p,playDoneSound:x,unlockAudio:h}=(0,m.G)(),[g,f]=(0,o.useState)(null),[b,v]=(0,o.useState)(null),[y,w]=(0,o.useState)(0),S=(0,o.useRef)(null),C=(0,o.useRef)(null),R=(0,o.useRef)(null),E=!!t,W=(0,o.useRef)(null);W.current=E&&r?{taskId:r}:null;let L=(0,o.useRef)(e),z=(0,o.useRef)(t??null),I=(0,o.useRef)(E),N=(0,o.useRef)(!1),T=(0,o.useRef)(t);(0,o.useEffect)(()=>{let e=T.current;T.current=t,!e||t||I.current&&!N.current&&(I.current=!1,w(e=>e+1))},[t]);let[M,$]=(0,o.useState)(null);(0,o.useEffect)(()=>{let e=S.current?.closest("[data-board-node]"),t=e?.querySelector("[data-session-navbar-slot]")??null;$(e=>e===t?e:t)});let[D,H]=(0,o.useState)(null),[P,F]=(0,o.useState)(null),[B,A]=(0,o.useState)([]),O=(0,o.useCallback)(e=>{H(e)},[]),U=(0,o.useCallback)(()=>{R.current?.openStats()},[]),Y=(0,o.useCallback)(e=>{F(e)},[]),_=(0,o.useCallback)(e=>{A(e)},[]),q=(0,o.useCallback)(e=>{e?.id&&(N.current=!0,a?.(),(0,k.PH)(e.id))},[a]),X=(0,o.useCallback)(t=>{(0,k.PK)(e,t)},[e]),V=(0,o.useCallback)(t=>{(0,k.Wd)(e,t)},[e]),G=(0,o.useCallback)(()=>{(0,k.Ho)(e,g?.name)},[e,g?.name]),K=(0,o.useCallback)(t=>{(0,k.sV)(e,{title:"custom"===t.method?void 0:t.title,method:t.method})},[e]);return((0,o.useEffect)(()=>{let e=S.current;if(!e)return;let t=t=>{if(t.ctrlKey||t.metaKey)return;let r=t.target;r instanceof Node&&e.contains(r)&&function(e,t){let r=e instanceof Element?e:e.parentElement;for(;r&&r instanceof HTMLElement&&r!==t;){let e=r.scrollHeight>r.clientHeight,t=r.scrollWidth>r.clientWidth;if(e||t){let n=getComputedStyle(r),o=n.overflowY,a=n.overflowX;if(e&&("auto"===o||"scroll"===o||"overlay"===o)||t&&("auto"===a||"scroll"===a||"overlay"===a))return!0}r=r.parentElement}return!1}(r,e)&&t.stopPropagation()};return e.addEventListener("wheel",t),()=>{e.removeEventListener("wheel",t)}}),(0,o.useEffect)(()=>{let e=S.current;if(!e)return;let t=e=>{let t=window.getSelection();t&&t.toString().length>0&&e.stopPropagation()};return e.addEventListener("copy",t),()=>e.removeEventListener("copy",t)}),(0,o.useEffect)(()=>{if(E)return;let t=!1;return I.current?(v(null),(async()=>{try{let r=await fetch("/api/sessions",{cache:"no-store"});if(!r.ok)throw Error(`HTTP ${r.status}`);let n=(await r.json()).sessions.find(t=>t.id===e);if(t)return;n&&f(n)}catch(e){console.warn("new session metadata load failed:",e)}})(),()=>{t=!0}):(f(null),v(null),(async()=>{try{let r=await fetch("/api/sessions",{cache:"no-store"});if(!r.ok)throw Error(`HTTP ${r.status}`);let n=(await r.json()).sessions.find(t=>t.id===e);if(t)return;if(!n)return void v(s("boards.sessionMissing"));f(n),w(e=>e+1)}catch(e){t||v(e instanceof Error?e.message:String(e))}})(),()=>{t=!0})},[e,s,E]),b)?(0,n.jsx)("div",{style:j,children:(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:b})}):g||E||I.current?(0,n.jsxs)("div",{ref:S,className:"board-workbench",style:j,onPointerDown:e=>{0===e.button&&e.stopPropagation()},onPointerUp:e=>{0===e.button&&e.stopPropagation()},onClick:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:[M&&g&&(0,l.createPortal)((0,n.jsx)(u,{ref:R,sessionId:g.id,stats:D,contextUsage:P,todos:B}),M),(0,n.jsx)(d.l,{session:E||I.current?null:g,newSessionCwd:E||I.current?z.current??null:null,newSessionDraftKey:E||I.current?L.current:null,pendingNewSessionTaskRef:E||I.current?W:void 0,chatInputRef:C,inWorkbench:!0,onSessionStatsChange:O,onContextUsageChange:Y,onSessionStatsPanelOpen:U,onTodosChange:_,onOpenFile:X,onSessionCreated:E?e=>q(e):void 0,onSessionForked:V,onAgentEnd:G,onAttentionNeeded:K,soundEnabled:c,onSoundToggle:p,playDoneSound:x,unlockAudio:h},y)]}):(0,n.jsx)("div",{style:j,children:(0,n.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:13},children:s("boards.loadingSession")})})}),j={display:"flex",flexDirection:"column",width:"100%",height:"100%",overflow:"visible",color:"var(--text)"};var S=r(64536);function C(e,t=[]){let r=(0,a.FC)(),{flowToScreenPosition:n}=(0,a.VH)(),i=(0,a.PI)(),s=(0,o.useRef)(null),l=(0,o.useRef)(""),d=(0,o.useCallback)(()=>{let e=s.current;if(!e||!r)return;let t=i.getState(),o=t.nodeLookup.get(r);if(!o)return;let a=t.transform[2],d=n({x:o.position.x,y:o.position.y}),c=window.innerWidth/a,u=window.innerHeight/a,p=`${d.x.toFixed(1)}|${d.y.toFixed(1)}|${a.toFixed(3)}|${c}|${u}`;p!==l.current&&(l.current=p,e.style.width=`${c}px`,e.style.height=`${u}px`,e.style.transform=`translate(${-d.x/a}px, ${-d.y/a}px)`)},[r,i,n]),c=(0,o.useCallback)(t=>{if(!t)return;let r=t.querySelector("[data-glass-clip]");if(r){s.current=r.querySelector("[data-glass-layer]"),d();return}let n=document.createElement("div");n.dataset.glassClip="1",n.style.cssText="position:absolute;left:0;top:0;width:100%;height:100%;border-radius:inherit;overflow:hidden;pointer-events:none;z-index:-1;";let o=document.createElement("div");o.dataset.glassLayer="1",o.style.cssText=`position:absolute;left:0;top:0;pointer-events:none;will-change:transform;background-image:linear-gradient(${e}, ${e}), var(--glass-bg-image, none);background-repeat:no-repeat,no-repeat;background-size:100% 100%,100% 100%;`,n.appendChild(o),t.prepend(n),s.current=o,d()},[d]);return(0,o.useEffect)(()=>{if(!r)return;let e=0,t=()=>{e||(e=requestAnimationFrame(()=>{e=0,d()}))},n=i.subscribe(()=>t());return t(),()=>{n(),e&&cancelAnimationFrame(e)}},t),{setContainer:c}}let R=(0,o.createContext)(null);function E({value:e,children:t}){return(0,n.jsx)(R.Provider,{value:e,children:t})}function W(){let e=(0,o.useContext)(R);return e||{updateNode:()=>{},deleteNode:()=>{},normalizeNodeId:()=>{},deleteEdge:()=>{},addEdge:()=>{},addNode:()=>{},boardId:null}}function L(e,t){return e.id===t.id&&e.type===t.type&&e.data===t.data&&e.selected===t.selected&&e.width===t.width&&e.height===t.height}function z(e){let t=(0,o.memo)(e,L);return t.displayName=`MemoBoardNode(${e.displayName??e.name??"Node"})`,t}var I=r(71309);let N={session:"会话",note:"便笺",task:"任务"};function T({kind:e,color:t}){return(0,n.jsxs)("span",{title:`${N[e]} \xb7 状态由圆点颜色表示`,style:{display:"flex",alignItems:"center",gap:4,flexShrink:0,lineHeight:1},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{width:8,height:8,borderRadius:"50%",background:t,flexShrink:0}}),(0,n.jsx)("span",{style:{fontSize:11,color:"var(--text-muted)",whiteSpace:"nowrap"},children:N[e]})]})}let M={waiting_model:{dot:"var(--accent)",label:"thinking"},running_tools:{dot:"#f59e0b",label:"tools"},running_command:{dot:"#f59e0b",label:"command"},waiting_input:{dot:"var(--text)",label:"waiting"},idle:{dot:"var(--text-dim)",label:"idle"},"just-ended":{dot:"#10b981",label:"done"}},$=z(function({id:e,data:t,selected:r,width:i,height:l}){let{updateNode:d,deleteNode:c}=W(),{highlightId:u}=(0,I.kz)(),p=u===e,x=i??t.w??S.ZI,h=l??t.h??S.eo,g=!!t.expanded,f=(0,o.useRef)(t);f.current=t;let{title:b,projectName:v,messageCount:y,phase:m,runningMs:j,endedAt:R,lastActivityAt:E,stale:L,sessionId:z,lastReply:N,cwd:$,taskId:D}=t,H=!!$,{setContainer:P}=C("var(--board-card-glass)"),F=(0,o.useRef)(null),[B,A]=(0,o.useState)(!1),[O,U]=(0,o.useState)(""),Y=(0,o.useRef)(null),_=async()=>{if(!z)return;let r=O.trim();if(A(!1),r&&r!==b){d(e,{data:{...t,title:r}});try{(await fetch(`/api/sessions/${encodeURIComponent(z)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:r})})).ok?(0,k.z6)(z,r):d(e,{data:{...t,title:b}})}catch{d(e,{data:{...t,title:b}})}}},q=r=>{var n,o,a;if(r.stopPropagation(),H)return void c(e);let i=(n=t,o=x,a=h,n.expanded?{data:{...n,expanded:!1,expandedW:o,expandedH:a,w:n.collapsedW||S.ZI,h:n.collapsedH||S.eo},w:n.collapsedW||S.ZI,h:n.collapsedH||S.eo}:{data:{...n,expanded:!0,collapsedW:o,collapsedH:a,w:n.expandedW||840,h:n.expandedH||600},w:n.expandedW||840,h:n.expandedH||600});d(e,{data:i.data}),d(e,{width:i.w,height:i.h,style:{width:i.w,height:i.h}})},X=(0,o.useCallback)((r,n)=>{d(e,{data:{...t,w:n.width,h:n.height}})},[e,t,d]),V=(0,o.useCallback)(()=>{d(e,{data:{...f.current,cwd:"",taskId:""}})},[e,d]),G=M[m]??M.idle;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.PN,{isVisible:r,minWidth:g?600:S.ZI,minHeight:g?500:S.eo,onResize:X,keepAspectRatio:!1}),(0,n.jsx)(a.h7,{type:"target",position:s.yX.Left,className:"board-handle",style:{background:"var(--text-dim)",width:8,height:8,border:"1px solid var(--bg-panel)",opacity:.85}}),(0,n.jsx)(a.h7,{type:"source",position:s.yX.Right,className:"board-handle",style:{background:"var(--text-dim)",width:8,height:8,border:"1px solid var(--bg-panel)",opacity:.85}}),(0,n.jsxs)("div",{ref:P,"data-board-node":!0,"data-testid":`session-card-${z}`,onDoubleClick:q,style:{position:"relative",width:"100%",height:"100%",borderRadius:g?18:14,border:p?"2px solid var(--accent)":`1px solid ${L?"color-mix(in srgb, var(--border) 80%, transparent)":"color-mix(in srgb, var(--border) 60%, transparent)"}`,background:"transparent",boxShadow:r?"0 0 0 5px transparent, 0 0 16px 5px color-mix(in srgb, var(--accent) 28%, transparent), 0 2px 12px -6px rgba(0,0,0,0.18)":p?I.u:"0 2px 12px -6px rgba(0,0,0,0.18)",animation:p?"board-search-glow 1.8s ease-out forwards":void 0,opacity:L?.55:1,display:"flex",flexDirection:"column",color:"var(--text)",userSelect:"none",padding:g?8:"8px 10px 6px",cursor:"grab",overflow:g?"visible":"hidden"},children:[(0,n.jsxs)("div",{"data-session-titlebar":!0,style:{flexShrink:0,display:"flex",alignItems:"center",gap:6,padding:"0 10px",height:g?"calc(36px + env(safe-area-inset-top))":void 0,minHeight:g?void 0:20,borderBottom:g?"1px solid color-mix(in srgb, var(--border) 50%, transparent)":"none",cursor:"grab",position:"relative",...g?{}:{marginBottom:2}},children:[(0,n.jsx)(T,{kind:"session",color:G.dot}),B?(0,n.jsx)("input",{ref:Y,value:O,onChange:e=>U(e.target.value),onKeyDown:e=>{"Enter"===e.key&&_(),"Escape"===e.key&&A(!1)},onBlur:()=>void _(),className:"nodrag",style:{flex:1,minWidth:0,fontSize:12.5,fontWeight:600,padding:"2px 6px",border:"1px solid var(--accent)",borderRadius:5,outline:"none",background:"var(--side-input)",color:"var(--text)"}}):(0,n.jsx)("span",{style:{fontSize:12.5,fontWeight:600,minWidth:0,flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text)"},children:H?"New session":b||"Untitled"}),L&&(0,n.jsx)("span",{style:{flexShrink:0,fontSize:9.5,color:"var(--text-dim)",border:"1px solid color-mix(in srgb, var(--border) 70%, transparent)",borderRadius:4,padding:"0 4px"},children:"stale"}),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("div",{"data-session-navbar-slot":!0,className:"nodrag",style:{display:"flex",alignItems:"center"}}),!H&&!B&&(0,n.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation(),U(b||""),A(!0),requestAnimationFrame(()=>{Y.current?.focus(),Y.current?.select()})},title:"Rename","aria-label":"Rename",className:"nodrag",style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:20,height:20,padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-dim)",cursor:"pointer",opacity:.65},children:(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"})})}),(0,n.jsx)("button",{type:"button",onClick:q,className:"nodrag",title:H?"Discard":g?"Collapse":"Expand",style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:22,height:22,padding:0,border:"none",borderRadius:5,background:"transparent",color:"var(--text-dim)",cursor:"pointer"},children:H?(0,n.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("polyline",{points:"3 6 5 6 21 6"}),(0,n.jsx)("path",{d:"M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"}),(0,n.jsx)("path",{d:"M10 11v6M14 11v6"}),(0,n.jsx)("path",{d:"M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"})]}):g?(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M18 15l-6-6-6 6"})}):(0,n.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M6 9l6 6 6-6"})})})]}),g?(0,n.jsx)("div",{className:"nodrag",style:{flex:1,minHeight:0,padding:"0 12px 0",pointerEvents:"all",overflow:"visible",cursor:"default",userSelect:"text"},children:(0,n.jsx)(w,{sessionId:z,cwd:$,taskId:D,onPromote:V})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{ref:F,className:"nowheel nodrag",style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",alignItems:"flex-start",justifyContent:"flex-start",gap:2,overflowY:"auto",overflowX:"hidden",padding:"2px 12px 0",scrollbarWidth:"thin",scrollbarColor:"color-mix(in srgb, var(--border) 70%, transparent) transparent",userSelect:"text",cursor:"default"},children:N?(0,n.jsx)("div",{style:{fontSize:11.5,lineHeight:1.45,color:"var(--text-muted)",wordBreak:"break-word",overflowWrap:"anywhere",whiteSpace:"pre-wrap",maxWidth:"100%",userSelect:"text"},children:N}):(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,fontSize:10.5,color:"var(--text-dim)"},children:[v&&(0,n.jsx)("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flexShrink:1},children:v}),y>0&&(0,n.jsxs)("span",{style:{flexShrink:0,whiteSpace:"nowrap"},children:[y," msgs"]})]})}),(0,n.jsxs)("div",{style:{flexShrink:0,display:"flex",alignItems:"center",gap:6,fontSize:10,color:"var(--text-dim)",borderTop:"1px solid color-mix(in srgb, var(--border) 50%, transparent)",paddingTop:3},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{flexShrink:0},children:"\uD83D\uDD52"}),(0,n.jsx)("span",{children:function(e){if(e<=0)return"";let t=new Date(e),r=new Date;return t.getFullYear()===r.getFullYear()&&t.getMonth()===r.getMonth()&&t.getDate()===r.getDate()?t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):`${t.getMonth()+1}/${t.getDate()} ${t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}`}(E)}),(0,n.jsx)("div",{style:{flex:1}}),j>0&&"idle"!==m&&(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",whiteSpace:"nowrap",flexShrink:0},children:function(e){let t=Math.max(1,Math.round(e/1e3));if(t<60)return`${t}s`;let r=Math.floor(t/60);if(r<60)return`${r}m${t%60}s`;let n=Math.floor(r/60);return`${n}h${r%60}m`}(j)})]})]})]})]})});var D=r(32316),H=r(13439),P=r(57575),F=r(17366);r(54420);let B={blue:"#3184f8",green:"#10b981",red:"#ef4444",yellow:"#f59e0b",purple:"#8b5cf6"},A={blue:"蓝",green:"绿",red:"红",yellow:"黄",purple:"紫"},O={border:"none",background:"color-mix(in srgb, var(--border) 30%, transparent)",color:"var(--text-muted)",borderRadius:5,padding:"2px 10px",fontSize:11,cursor:"pointer"};function U({initialText:e,onDraftChange:t,onExit:r,onCancel:a,onBlurExit:i,rootRef:s}){let l=(0,o.useRef)(!1),d=(0,H.hGv)({extensions:[P.A,F.oz],content:e||"",contentType:"markdown",editorProps:{attributes:{class:"markdown-body sticky-note-editor",spellcheck:"false"}},onUpdate:({editor:e})=>{l.current||t(e.getMarkdown())},onBlur:({editor:e,event:r})=>{if(l.current)return;t(e.getMarkdown());let n=r.relatedTarget,o=s.current;o&&n instanceof Node&&o.contains(n)||i()}});(0,o.useEffect)(()=>{requestAnimationFrame(()=>{d?.commands.focus("start")})},[d]);let c=(0,o.useCallback)(()=>{l.current=!0,requestAnimationFrame(()=>{a()})},[a]),u=(0,o.useCallback)(e=>{e.stopPropagation(),"Enter"===e.key&&(e.ctrlKey||e.metaKey)?(e.preventDefault(),d&&t(d.getMarkdown()),r()):"Escape"===e.key&&(e.preventDefault(),c())},[d,t,r,c]);return(0,n.jsx)("div",{className:"nodrag nowheel sticky-note-edit-wrap","data-testid":"sticky-note-editor",onKeyDown:u,style:{flex:1,minHeight:0,overflowY:"auto",userSelect:"text",padding:"var(--bubble-pad-y, 8px) var(--bubble-pad-x, 12px)"},children:(0,n.jsx)(H.$Z$,{editor:d})})}let Y=z(function({id:e,data:t,selected:r,width:i,height:l}){let d,c,{updateNode:u,deleteNode:p}=W(),{highlightId:x}=(0,I.kz)(),h=x===e,g=t.text??"",f=t.badge??"blue",{setContainer:b}=C("var(--assistant-card-glass)"),[v,y]=(0,o.useState)(!1),[m,k]=(0,o.useState)(f),w=(0,o.useRef)(null),j=(0,o.useRef)(null),S=(0,o.useRef)(g),[R]=(0,o.useState)(()=>t.createdAt??Date.now()),[E,L]=(0,o.useState)(!1),z=(0,o.useRef)(null);(0,o.useEffect)(()=>{v&&(k(f),S.current=g)},[v,g,f]);let N=(0,o.useCallback)(e=>{S.current=e},[]),M=(0,o.useCallback)(()=>{let r=S.current;(r!==g||m!==f)&&u(e,{data:{...t,text:r,badge:m}})},[m,g,f,u,e,t]),$=(0,o.useCallback)(()=>{M(),y(!1)},[M]),H=(0,o.useCallback)(()=>{k(f),S.current=g,y(!1)},[g,f]),P=(0,o.useCallback)(()=>{M(),y(!1)},[M]),F=(0,o.useCallback)(e=>{e.stopPropagation();let t=w.current?.querySelector(".markdown-body")?.innerText??g;navigator.clipboard.writeText(t).then(()=>{L(!0),z.current&&clearTimeout(z.current),z.current=setTimeout(()=>L(!1),1200)}).catch(()=>{})},[g]);(0,o.useEffect)(()=>()=>{z.current&&clearTimeout(z.current)},[]);let Y={position:"relative",width:"100%",height:"100%",borderRadius:"var(--bubble-radius, 12px)",border:h?"2px solid var(--accent)":"1px solid var(--bubble-border)",background:"transparent",boxShadow:h?I.u:r?"0 2px 10px -6px rgba(0,0,0,0.2), 0 0 0 5px transparent, 0 0 16px 5px color-mix(in srgb, var(--accent) 28%, transparent)":"0 2px 10px -6px rgba(0,0,0,0.2)",animation:h?"board-search-glow 1.8s ease-out forwards":void 0,color:"var(--text)",display:"flex",flexDirection:"column",overflow:"hidden",fontSize:13,lineHeight:1.5,userSelect:"none",cursor:"default",padding:6},_=(0,o.useCallback)(e=>{0===e.button&&e.stopPropagation()},[]),q=(0,o.useCallback)((r,n)=>{u(e,{data:{...t,w:n.width,h:n.height}})},[e,t,u]);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.PN,{isVisible:r,minWidth:120,minHeight:60,onResize:q,keepAspectRatio:!1}),(0,n.jsx)(a.h7,{type:"target",position:s.yX.Left,className:"board-handle",style:{background:"var(--text-dim)",width:8,height:8,border:"1px solid var(--bg-panel)",opacity:.85}}),(0,n.jsx)(a.h7,{type:"source",position:s.yX.Right,className:"board-handle",style:{background:"var(--text-dim)",width:8,height:8,border:"1px solid var(--bg-panel)",opacity:.85}}),(0,n.jsxs)("div",{ref:e=>{b(e),j.current=e},"data-board-node":!0,"data-testid":`sticky-note-${e}`,style:Y,className:"nowheel",onDoubleClick:e=>{e.stopPropagation(),y(!0)},children:[(0,n.jsxs)("div",{className:v?"nodrag":"",style:{flexShrink:0,height:32,display:"flex",alignItems:"center",gap:6,padding:"0 var(--bubble-pad-x, 12px)",fontSize:10,color:"var(--text-muted)",cursor:v?"default":"grab",boxSizing:"border-box"},children:[(0,n.jsx)(T,{kind:"note",color:B[v?m:f]??B.blue}),v?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"nodrag",style:{display:"flex",alignItems:"center",gap:5},children:Object.entries(B).map(([e,t])=>(0,n.jsx)("button",{type:"button",title:`徽记\xb7${A[e]??e}`,className:"nodrag",onClick:t=>{t.stopPropagation(),k(e)},style:{width:14,height:14,padding:0,border:"none",borderRadius:"50%",background:t,cursor:"pointer",boxShadow:m===e?`0 0 0 2px var(--bg-panel), 0 0 0 3.5px ${t}`:`0 0 0 1px color-mix(in srgb, ${t} 45%, transparent)`,opacity:m===e?1:.72}},e))}),(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("button",{type:"button",className:"nodrag",onClick:H,style:O,title:"放弃变更 (Esc)",children:"取消"}),(0,n.jsx)("button",{type:"button",className:"nodrag",onClick:$,style:O,title:"完成 (Ctrl+Enter)",children:"完成"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{flex:1}}),(0,n.jsx)("span",{style:{fontFamily:"var(--font-mono)",whiteSpace:"nowrap"},children:(d=new Date(R),c=new Date,d.getFullYear()===c.getFullYear()&&d.getMonth()===c.getMonth()&&d.getDate()===c.getDate()?d.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):`${d.getMonth()+1}/${d.getDate()}`)}),(0,n.jsx)("button",{type:"button",title:E?"已复制":"复制内容",onClick:F,className:"nodrag",style:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",width:22,height:20,padding:0,border:"none",borderRadius:5,background:"transparent",color:E?"var(--accent)":"var(--text-dim)",cursor:"pointer"},children:E?(0,n.jsx)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("path",{d:"M20 6L9 17l-5-5"})}):(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),(0,n.jsx)("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]})]}),v?(0,n.jsx)(U,{initialText:g,onDraftChange:N,onExit:$,onCancel:H,onBlurExit:P,rootRef:j},`${e}-edit`):(0,n.jsx)("div",{ref:w,className:"nowheel nodrag",style:{flex:1,minHeight:0,overflowY:"auto",padding:"4px var(--bubble-pad-x, 12px) var(--bubble-pad-y, 8px)",textAlign:"left",cursor:"text",userSelect:"text"},onPointerDown:_,onPointerUp:_,onDoubleClick:e=>{e.stopPropagation(),y(!0)},children:g.trim()?(0,n.jsx)("div",{className:"markdown-body",style:{wordBreak:"break-word"},children:(0,n.jsx)(D.oz,{children:g})}):(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontSize:12,cursor:"text"},children:"双击编辑 markdown"})})]})]})});var _=r(43561);function q(e,t){return(e??[]).filter(e=>e.kind===t).map(e=>e.targetCardId)}var X=r(20985);function V({value:e,options:t,onChange:r,width:a="100%"}){let[i,s]=(0,o.useState)(!1),[l,d]=(0,o.useState)(!1),c=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(!i)return;let e=e=>{c.current&&!c.current.contains(e.target)&&s(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[i]);let u=t.find(t=>t.value===e);return(0,n.jsxs)("div",{ref:c,style:{position:"relative",width:a},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>s(e=>!e),onMouseEnter:()=>d(!0),onMouseLeave:()=>d(!1),style:{width:"100%",height:28,boxSizing:"border-box",display:"flex",alignItems:"center",gap:6,padding:"0 8px",background:i?"var(--side-active)":l?"var(--side-hover)":"transparent",border:"1px solid var(--border)",borderRadius:5,cursor:"pointer",fontSize:11,color:"var(--text)",textAlign:"left",transition:"background 0.12s"},children:[(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:u?.label??""}),(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:"var(--text-dim)"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),i&&(0,n.jsx)(X.f,{open:!0,style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:120,minWidth:120,maxHeight:200,overflowY:"auto",background:"var(--popover-glass)",border:"1px solid var(--border)",borderRadius:6,boxShadow:"0 6px 20px -6px rgba(0,0,0,0.35)",padding:4},children:t.map(t=>(0,n.jsx)("button",{type:"button",onClick:()=>{r(t.value),s(!1)},style:{display:"block",width:"100%",boxSizing:"border-box",padding:"5px 8px",border:"none",borderRadius:4,background:t.value===e?"var(--side-active)":"transparent",color:"var(--text)",fontSize:11,textAlign:"left",cursor:"pointer"},onMouseEnter:e=>{e.currentTarget.style.background="var(--side-hover)"},onMouseLeave:r=>{r.currentTarget.style.background=t.value===e?"var(--side-active)":"transparent"},children:t.label},t.value))})]})}function G({candidates:e,selected:t,onChange:r,placeholder:a="选择任务卡…",excludeId:i,width:s="100%"}){let[l,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(!1),p=(0,o.useRef)(null),x=e.filter(e=>e.id!==i),h=new Set(t);(0,o.useEffect)(()=>{if(!l)return;let e=e=>{p.current&&!p.current.contains(e.target)&&d(!1)},t=e=>{"Escape"===e.key&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[l]);let g=x.filter(e=>h.has(e.id)),f=g.length>3?g.length-3:0,b=g.slice(0,3);return(0,n.jsxs)("div",{ref:p,style:{position:"relative",width:s},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>d(e=>!e),onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),style:{width:"100%",height:28,boxSizing:"border-box",display:"flex",alignItems:"center",gap:4,padding:"0 6px",background:l?"var(--side-active)":c?"var(--side-hover)":"transparent",border:"1px solid var(--border)",borderRadius:5,cursor:"pointer",fontSize:11,color:"var(--text)",textAlign:"left",transition:"background 0.12s"},children:[b.length>0?(0,n.jsxs)(n.Fragment,{children:[b.map(e=>(0,n.jsxs)("span",{style:{flexShrink:0,display:"inline-flex",alignItems:"center",gap:3,padding:"1px 5px",borderRadius:999,background:"var(--side-selected)",color:"var(--accent)",fontFamily:"var(--font-mono)",fontSize:10},children:["#",e.number]},e.id)),f>0&&(0,n.jsxs)("span",{style:{flexShrink:0,color:"var(--text-muted)",fontSize:10},children:["+",f]})]}):(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"var(--text-dim)"},children:a}),(0,n.jsx)("span",{style:{flex:1}}),(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:"var(--text-dim)"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),l&&(0,n.jsx)(X.f,{open:!0,style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:120,minWidth:160,maxHeight:180,overflowY:"auto",background:"var(--popover-glass)",border:"1px solid var(--border)",borderRadius:6,boxShadow:"0 6px 20px -6px rgba(0,0,0,0.35)",padding:4},children:0===x.length?(0,n.jsx)("div",{style:{padding:"8px",color:"var(--text-dim)",fontSize:11},children:"本看板无其他任务卡"}):x.map(e=>{let o=h.has(e.id);return(0,n.jsxs)("button",{type:"button",onClick:n=>{var o;n.stopPropagation(),o=e.id,r(h.has(o)?t.filter(e=>e!==o):[...t,o])},style:{display:"flex",alignItems:"center",gap:7,width:"100%",boxSizing:"border-box",padding:"5px 8px",border:"none",borderRadius:4,background:o?"var(--side-selected)":"transparent",color:"var(--text)",fontSize:11,textAlign:"left",cursor:"pointer"},onMouseEnter:e=>{o||(e.currentTarget.style.background="var(--side-hover)")},onMouseLeave:e=>{e.currentTarget.style.background=o?"var(--side-selected)":"transparent"},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{flexShrink:0,width:12,height:12,borderRadius:3,border:"1px solid var(--border)",background:o?"var(--accent)":"transparent",display:"inline-flex",alignItems:"center",justifyContent:"center",color:"var(--accent-contrast, #fff)"},children:o&&(0,n.jsx)("svg",{width:"8",height:"8",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,n.jsx)("polyline",{points:"1.5 5 3.5 7 8.5 2"})})}),(0,n.jsxs)("span",{style:{fontFamily:"var(--font-mono)",color:"var(--text-muted)",flexShrink:0},children:["#",e.number]}),(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]},e.id)})})]})}var K=r(29608);function J({cwd:e,value:t,onChange:r}){let[a,i]=(0,o.useState)(null),[s,l]=(0,o.useState)(!1),[d,c]=(0,o.useState)(!1),[u,p]=(0,o.useState)(""),[x,h]=(0,o.useState)(!1),[g,f]=(0,o.useState)(null),b=(0,o.useRef)(null),v=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(!e)return void i(null);let t=!1;return(async()=>{try{let r=await fetch(`/api/worktrees?cwd=${encodeURIComponent(e)}`,{cache:"no-store"});if(!r.ok)return;let n=await r.json();if(t)return;i({forCwd:e,projectRoot:n.projectRoot??e,isGit:n.isGit??!1,currentWorktreePath:n.currentWorktreePath??null,worktrees:(n.worktrees??[]).map(e=>({path:e.path,branch:e.branch??null,isMain:!!e.isMain}))})}catch{t||i(null)}})(),()=>{t=!0}},[e]);let y=a?.worktrees.find(e=>e.path===t)??a?.worktrees.find(t=>t.path===e)??(a?.currentWorktreePath?a.worktrees.find(e=>e.path===a.currentWorktreePath):void 0)??a?.worktrees.find(e=>e.isMain)??null,m=async()=>{let e=u.trim();if(e&&!x&&a){h(!0),f(null);try{let t=await fetch("/api/worktrees",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:a.projectRoot,branch:e})}),n=await t.json().catch(()=>({}));if(!t.ok||!n.path){f(n.error??"创建失败"),h(!1);return}p(""),c(!1),l(!1),r(n.path)}catch(e){f(e instanceof Error?e.message:String(e))}h(!1)}};(0,o.useEffect)(()=>{if(!s)return;let e=e=>{b.current&&!b.current.contains(e.target)&&l(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[s]);let k=y?y.isMain?`主 checkout(${y.branch??""})`:y.branch??y.path:a?.isGit?"选择工作区…":"非 git 项目";return(0,n.jsxs)("div",{ref:b,style:{position:"relative"},children:[(0,n.jsxs)("button",{type:"button",onClick:()=>{l(e=>!e),f(null)},style:{width:"100%",height:28,boxSizing:"border-box",display:"flex",alignItems:"center",gap:6,padding:"0 8px",background:s?"var(--side-active)":"transparent",border:"1px solid var(--border)",borderRadius:5,cursor:"pointer",fontSize:11,color:"var(--text)",textAlign:"left",fontFamily:"var(--font-mono)"},title:y?.path??void 0,children:[(0,n.jsxs)("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:y&&!y.isMain?"var(--accent)":"var(--text-dim)"},children:[(0,n.jsx)("line",{x1:"6",y1:"3",x2:"6",y2:"15"}),(0,n.jsx)("circle",{cx:"18",cy:"6",r:"3"}),(0,n.jsx)("circle",{cx:"6",cy:"18",r:"3"}),(0,n.jsx)("path",{d:"M18 9a9 9 0 0 1-9 9"})]}),(0,n.jsx)("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:k}),(0,n.jsx)("svg",{width:"9",height:"9",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,color:"var(--text-dim)"},children:(0,n.jsx)("polyline",{points:"2 3.5 5 6.5 8 3.5"})})]}),(0,n.jsxs)(X.f,{open:s,style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:120,minWidth:200,background:"var(--popover-glass)",border:"1px solid var(--border)",borderRadius:6,boxShadow:"0 6px 20px -6px rgba(0,0,0,0.35)",overflow:"hidden"},children:[(0,n.jsx)("div",{style:{maxHeight:"min(40vh, 260px)",overflowY:"auto",padding:4},children:0===(a?.worktrees??[]).length?(0,n.jsx)("div",{style:{padding:"8px 10px",fontSize:11,color:"var(--text-dim)"},children:a?.isGit===!1?"非 git 项目,无法创建工作区":"暂无工作区"}):(a?.worktrees??[]).map(e=>{let o=e.path===(y?.path??t);return(0,n.jsxs)("button",{type:"button",onClick:()=>{r(e.path),l(!1),f(null)},title:e.path,style:{display:"block",width:"100%",boxSizing:"border-box",padding:"6px 8px",border:"none",borderRadius:4,background:o?"var(--side-active)":"transparent",color:"var(--text)",fontSize:11,textAlign:"left",cursor:"pointer",fontFamily:"var(--font-mono)"},onMouseEnter:e=>{o||(e.currentTarget.style.background="var(--side-hover)")},onMouseLeave:e=>{o||(e.currentTarget.style.background="transparent")},children:[(0,n.jsx)("span",{style:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.isMain?`主 checkout(${e.branch??""})`:e.branch??e.path}),(0,n.jsx)("span",{style:{display:"block",fontSize:9.5,color:"var(--text-dim)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.path})]},e.path)})}),d?(0,n.jsxs)("div",{style:{padding:"6px 8px",borderTop:"1px solid var(--bubble-hairline)"},children:[(0,n.jsx)("input",{ref:v,value:u,onChange:e=>{p(e.target.value),f(null)},onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),m()),"Escape"===e.key&&(c(!1),p(""),f(null))},placeholder:"新分支名",style:{width:"100%",fontSize:11,fontFamily:"var(--font-mono)",padding:"5px 8px",border:"1px solid var(--accent)",borderRadius:5,outline:"none",background:"var(--side-input)",color:"var(--text)",boxSizing:"border-box"}}),(0,n.jsxs)("div",{style:{display:"flex",gap:5,marginTop:5},children:[(0,n.jsx)("button",{type:"button",onClick:()=>void m(),disabled:x||!u.trim(),style:{flex:1,padding:"4px 0",background:"var(--accent)",border:"none",borderRadius:5,color:"var(--accent-contrast, #fff)",fontSize:11,fontWeight:600,cursor:x||!u.trim()?"not-allowed":"pointer",opacity:x||!u.trim()?.65:1},children:x?"创建中…":"创建"}),(0,n.jsx)("button",{type:"button",onClick:()=>{c(!1),p(""),f(null)},style:{flex:1,padding:"4px 0",background:"transparent",border:"1px solid var(--border)",borderRadius:5,color:"var(--text-muted)",fontSize:11,cursor:"pointer"},children:"取消"})]})]}):(0,n.jsxs)("button",{type:"button",onClick:e=>{e.stopPropagation(),c(!0),f(null),setTimeout(()=>v.current?.focus(),0)},style:{display:"flex",alignItems:"center",gap:7,width:"100%",padding:"7px 10px",background:"none",border:"none",borderTop:"1px solid var(--bubble-hairline)",color:"var(--text-muted)",cursor:"pointer",textAlign:"left",fontSize:11},children:[(0,n.jsxs)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.1",strokeLinecap:"round",style:{flexShrink:0},children:[(0,n.jsx)("line",{x1:"5",y1:"1",x2:"5",y2:"9"}),(0,n.jsx)("line",{x1:"1",y1:"5",x2:"9",y2:"5"})]}),(0,n.jsx)("span",{children:"新建工作区"})]}),g&&(0,n.jsx)("div",{style:{padding:"5px 10px 8px",color:"#dc2626",fontSize:11,lineHeight:1.35,overflowWrap:"anywhere"},children:g})]})]})}var Z=r(56314);let Q={not_started:{color:"#9ca3af",label:"未开始"},running:{color:"#10b981",label:"进行中"},review:{color:"#f59e0b",label:"待审核"},done:{color:"#10b981",label:"完成"},failed:{color:"#ef4444",label:"失败"},abandoned:{color:"#9ca3af",label:"放弃"},waiting_reply:{color:"#3184f8",label:"等回复"}},ee={width:"100%",boxSizing:"border-box",border:"1px solid var(--border)",borderRadius:6,background:"transparent",color:"var(--text)",fontSize:12,padding:"4px 8px",outline:"none"},et={display:"block",fontSize:10,color:"var(--text)",fontWeight:600,margin:"8px 0 3px"},er={border:"none",background:"color-mix(in srgb, var(--border) 30%, transparent)",color:"var(--text-muted)",borderRadius:5,padding:"2px 10px",fontSize:11,cursor:"pointer",whiteSpace:"nowrap"};function en({title:e,open:t,onToggle:r,children:o}){return(0,n.jsxs)("div",{children:[(0,n.jsxs)("button",{type:"button",onClick:r,style:{display:"flex",alignItems:"center",gap:4,width:"100%",marginTop:10,padding:"5px 0 3px",border:"none",borderTop:"1px solid var(--bubble-hairline)",background:"transparent",color:"var(--text-muted)",fontSize:11,fontWeight:600,cursor:"pointer",textAlign:"left"},children:[(0,n.jsx)("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0,transform:t?"rotate(90deg)":"none",transition:"transform 0.12s"},children:(0,n.jsx)("polyline",{points:"3 2 6.5 5 3 8"})}),e]}),t&&(0,n.jsx)("div",{children:o})]})}function eo({due:e,onChange:t}){let r=new Date,o=e?new Date(e):r,[a,i,s]=[o.getFullYear(),o.getMonth()+1,o.getDate()],l=[];for(let e=r.getFullYear()-2;e<=r.getFullYear()+3;e++)l.push(String(e));let d=Array.from({length:12},(e,t)=>String(t+1)),c=new Date(a,i,0).getDate(),u=Array.from({length:c},(e,t)=>String(t+1)),p=(e,r,n)=>{let o=new Date(e,r-1,n,0,0,0,0).getTime();t(Number.isNaN(o)?null:o)};return(0,n.jsxs)("div",{style:{display:"flex",gap:4},children:[(0,n.jsx)("div",{style:{flex:1.4,minWidth:0},children:(0,n.jsx)(V,{value:String(a),options:l.map(e=>({value:e,label:e})),onChange:e=>p(Number(e),i,Math.min(s,c))})}),(0,n.jsx)("div",{style:{flex:1,minWidth:0},children:(0,n.jsx)(V,{value:String(i),options:d.map(e=>({value:e,label:`${e}月`})),onChange:e=>p(a,Number(e),Math.min(s,new Date(a,Number(e),0).getDate()))})}),(0,n.jsx)("div",{style:{flex:1,minWidth:0},children:(0,n.jsx)(V,{value:String(s),options:u.map(e=>({value:e,label:e})),onChange:e=>p(a,i,Number(e))})})]})}function ea({value:e,onChange:t,placeholder:r}){let a=(0,H.hGv)({extensions:[P.A,F.oz,_.O.configure({placeholder:r})],content:e||"",contentType:"markdown",editorProps:{attributes:{class:"markdown-body task-card-md-field",spellcheck:"false"}},onUpdate:({editor:e})=>{t(e.getMarkdown())}});return(0,o.useEffect)(()=>{a&&a.getMarkdown()!==e&&a.commands.setContent(e||"",{contentType:"markdown"})},[a,e]),(0,n.jsx)("div",{className:"nodrag nowheel task-card-md-wrap",style:{...ee,flex:1,minHeight:70,overflowY:"auto",cursor:"text",padding:0,userSelect:"text"},children:(0,n.jsx)(H.$Z$,{editor:a})})}let ei=z(function({id:e,data:t,selected:r,width:i,height:l}){let{updateNode:d,deleteNode:c,normalizeNodeId:u}=W(),p=i??t.w??380,x=l??t.h??270,h=!!t.expanded,{cardId:g}=t,f=(0,Z.Lv)(),b=(0,Z.ZY)(),{detail:v,candidates:y,loading:m,error:w,reload:j,createCard:R,saveCard:E}=function(e,t){let[r,n]=(0,o.useState)(null),[a,i]=(0,o.useState)([]),[s,l]=(0,o.useState)(!1),[d,c]=(0,o.useState)(null),u=(0,o.useRef)(null);u.current=r;let p=(0,o.useCallback)(async(t=!1)=>{if(!e)return void n(null);t||l(!0);try{let t=await fetch(`/api/task-cards/${encodeURIComponent(e)}`,{cache:"no-store"});if(!t.ok){if(404===t.status)return void n(null);throw Error(`HTTP ${t.status}`)}let r=await t.json();n(r)}catch(e){t||c(e instanceof Error?e.message:String(e))}finally{t||l(!1)}},[e]),x=(0,o.useCallback)(()=>p(!1),[p]);(0,o.useEffect)(()=>{x()},[x]),(0,o.useEffect)(()=>{if(!t)return;let e=!1;return(async()=>{try{let r=await fetch(`/api/task-cards?boardId=${encodeURIComponent(t)}`,{cache:"no-store"});if(!r.ok)return;let n=await r.json();e||i(n.cards)}catch{}})(),()=>{e=!0}},[t]);let h=(0,o.useCallback)(async e=>{try{let t=await fetch("/api/task-cards",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`HTTP ${t.status}`)}let r=await t.json();return"number"==typeof r.updated&&(0,k.D2)(e.boardId,r.updated),r.card}catch(e){return c(e instanceof Error?e.message:String(e)),null}},[]),g=(0,o.useCallback)(async t=>{if(!e)return!1;try{let r=await fetch(`/api/task-cards/${encodeURIComponent(e)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error??`HTTP ${r.status}`)}let n=await r.json();return"number"==typeof n.updated&&u.current?.card.boardId&&(0,k.D2)(u.current.card.boardId,n.updated),await x(),!0}catch(e){return c(e instanceof Error?e.message:String(e)),!1}},[e,x]);return{detail:r,candidates:a,loading:s,error:d,reload:x,createCard:h,saveCard:g}}(g||null,f),{setContainer:L}=C("var(--assistant-card-glass)"),z=!g;v?.card.sessionId;let{register:I,unregister:N}=(0,S.VX)();(0,o.useEffect)(()=>{if(g)return I(g),()=>N(g)},[g,I,N]);let M=(0,S.rD)(g),$=M?.execStatus??"not_started";(0,o.useEffect)(()=>{h&&!z&&j()},[h,z,j]);let[D,H]=(0,o.useState)(()=>z?{id:"",boardId:"",projectKey:"",number:0,name:"新建任务"===t.name?"":t.name,description:t.description??"",readyStatus:"draft",execStatus:"not_started",priority:0,due:null,attachments:[],cwd:b,useWorktree:!1,maxRetries:3,retryCount:0,sessionId:null,dispatchToken:null,owner:null,heartbeat:0,created:0,updated:0}:null);(0,o.useEffect)(()=>{!z&&v?.card&&!D&&H({...v.card})},[z,v,D]);let[P,F]=(0,o.useState)([]),[B,A]=(0,o.useState)([]),O=(0,o.useRef)(!1);(0,o.useEffect)(()=>{v&&!O.current&&(O.current=!0,F(q(v.links,"prerequisite")),A(q(v.links,"related")))},[v]);let[U,Y]=(0,o.useState)(!1),_=(0,o.useRef)(!1),[X,ei]=(0,o.useState)(null),[es,el]=(0,o.useState)(null),[ed,ec]=(0,o.useState)(!1);(0,o.useEffect)(()=>{ec(h)},[h]);let[eu,ep]=(0,o.useState)(!1),[ex,eh]=(0,o.useState)(null),eg=(0,o.useRef)(null),ef=(r,n)=>{H(o=>{let a=o?{...o,[r]:n}:o;return a&&("name"===r||"description"===r)&&d(e,{data:{...t,name:"name"===r?n:a.name,description:"description"===r?n:a.description??""}}),a})},eb=async()=>{if(!f)return void ei("缺少看板上下文,无法创建");if(!D?.name.trim())return void el("请填写任务名称");if(_.current)return;Y(!0),_.current=!0,ei(null);let r=await R({boardId:f,name:D.name,description:D.description,readyStatus:"todo",priority:D.priority,due:D.due??null,cwd:D.cwd??void 0,useWorktree:D.useWorktree,maxRetries:D.maxRetries,attachments:D.attachments,prerequisites:P,related:B});if(_.current=!1,Y(!1),r){let n=`task-${r.id}`;u(e,n),d(n,{data:{...t,cardId:r.id,number:r.number,name:r.name,readyStatus:r.readyStatus,priority:r.priority,due:r.due??void 0}}),H(e=>e?{...e,...r,sessionId:r.sessionId}:e),j()}},ev=async()=>{if(!D?.name.trim())return void el("请填写任务名称");if(_.current)return;Y(!0),_.current=!0,ei(null);let r=await E({name:D.name,description:D.description,readyStatus:D.readyStatus,priority:D.priority,due:D.due??null,attachments:D.attachments,cwd:D.cwd??null,useWorktree:D.useWorktree,maxRetries:D.maxRetries,prerequisites:P,related:B});_.current=!1,Y(!1),r?d(e,{data:{...t,name:D.name,description:D.description??"",readyStatus:D.readyStatus,priority:D.priority,due:D.due??void 0}}):ei(w??"保存失败")},ey=(0,o.useMemo)(()=>{if(z||!v?.card||!D)return!1;let e=v.card;return D.name!==e.name||D.description!==e.description||D.priority!==e.priority||D.due!==e.due||D.cwd!==e.cwd||D.useWorktree!==e.useWorktree||D.maxRetries!==e.maxRetries||JSON.stringify(D.attachments??[])!==JSON.stringify(e.attachments??[])||JSON.stringify([...P].sort())!==JSON.stringify(q(v.links,"prerequisite").sort())||JSON.stringify([...B].sort())!==JSON.stringify(q(v.links,"related").sort())},[z,v,D,P,B]),em=(0,o.useRef)(r),ek=(0,o.useRef)(ey);ek.current=ey,(0,o.useEffect)(()=>{let e=em.current;em.current=r,e&&!r&&!z&&ek.current&&ev()},[r,z]);let ew=(0,o.useCallback)(r=>{if(r.stopPropagation(),h){let r=t.collapsedW>=380&&t.collapsedH>=240,n=r?t.collapsedW:380,o=r?t.collapsedH:270;d(e,{data:{...t,expanded:!1,expandedW:p,expandedH:x,w:n,h:o},width:n,height:o,style:{width:n,height:o}})}else{let r=t.expandedW>=480&&t.expandedH>=400,n=r?t.expandedW:760,o=r?t.expandedH:620;d(e,{data:{...t,expanded:!0,collapsedW:p,collapsedH:x,w:n,h:o},width:n,height:o,style:{width:n,height:o}})}},[e,t,h,p,x,d]),ej=(0,o.useCallback)((r,n)=>{d(e,{data:{...t,w:n.width,h:n.height}})},[e,t,d]),eS=D?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("label",{style:et,children:"任务名称 *"}),(0,n.jsx)("input",{style:{...ee,...es?{borderColor:"#f87171",boxShadow:"0 0 0 1px #f87171"}:{}},value:D.name,onChange:e=>{ef("name",e.target.value),es&&el(null)},placeholder:"任务名称"}),es&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:11,marginTop:3},children:es}),(0,n.jsx)("label",{style:et,children:"需求说明"}),(0,n.jsx)(ea,{value:D.description,onChange:e=>ef("description",e),placeholder:"任务描述"}),(0,n.jsxs)(en,{title:"高级",open:ed,onToggle:()=>ec(e=>!e),children:[(0,n.jsx)("label",{style:et,children:"工作目录"}),(0,n.jsxs)("div",{style:{display:"flex",gap:6},children:[(0,n.jsx)("input",{style:{...ee,flex:1},value:D.cwd??"",onChange:e=>ef("cwd",e.target.value||null),placeholder:"默认项目根目录",readOnly:!0}),(0,n.jsx)("button",{type:"button",style:er,onClick:()=>ep(!0),children:"选择目录"})]}),eu&&D&&(0,n.jsx)(K.K,{onCancel:()=>ep(!1),onSelect:e=>{ef("cwd",e),ep(!1)}}),(0,n.jsx)("label",{style:et,children:"工作区"}),(0,n.jsx)(J,{cwd:D.cwd,value:ex,onChange:e=>{eh(e),ef("cwd",e)}}),(0,n.jsx)("label",{style:et,children:"预计截止"}),(0,n.jsx)(eo,{due:D.due??null,onChange:e=>ef("due",e)}),(0,n.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,n.jsxs)("div",{style:{flex:1},children:[(0,n.jsx)("label",{style:et,children:"优先级"}),(0,n.jsx)(V,{value:String(D.priority),onChange:e=>ef("priority",Number(e)),options:[{value:"1",label:"高"},{value:"0",label:"中"},{value:"-1",label:"低"}]})]}),(0,n.jsxs)("div",{style:{flex:1},children:[(0,n.jsx)("label",{style:et,children:"最大重试次数"}),(0,n.jsx)("input",{style:ee,type:"number",min:0,value:D.maxRetries,onChange:e=>ef("maxRetries",Math.max(0,Number(e.target.value)||0))})]})]}),(0,n.jsx)("label",{style:et,children:"前置任务(可多选)"}),(0,n.jsx)(G,{candidates:y,selected:P,onChange:F,excludeId:g,placeholder:"本看板内选择前置任务…"}),(0,n.jsx)("label",{style:et,children:"关联任务(可多选)"}),(0,n.jsx)(G,{candidates:y,selected:B,onChange:A,excludeId:g,placeholder:"本看板内选择关联任务…"}),(0,n.jsx)("label",{style:et,children:"附件(引用文件路径,每行一个)"}),(0,n.jsx)("textarea",{style:{...ee,minHeight:46,resize:"vertical",fontFamily:"var(--font-mono)",fontSize:11},value:(D.attachments??[]).join("\n"),onChange:e=>ef("attachments",e.target.value.split("\n").map(e=>e.trim()).filter(Boolean)),placeholder:"/path/to/file",spellCheck:!1})]}),(X||w)&&(0,n.jsx)("div",{style:{color:"#f87171",fontSize:11,marginTop:6},children:X??w})]}):m?(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontSize:12,padding:20,textAlign:"center"},children:"加载中…"}):(0,n.jsx)("div",{style:{color:"var(--text-dim)",fontSize:12,padding:20,textAlign:"center"},children:"未找到任务卡"});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.PN,{isVisible:r,minWidth:h?480:380,minHeight:h?400:240,onResize:ej,keepAspectRatio:!1}),(0,n.jsx)(a.h7,{type:"target",position:s.yX.Left,className:"board-handle",style:{background:"var(--text-dim)",width:8,height:8,border:"1px solid var(--bg-panel)",opacity:.85}}),(0,n.jsx)(a.h7,{type:"source",position:s.yX.Right,className:"board-handle",style:{background:"var(--text-dim)",width:8,height:8,border:"1px solid var(--bg-panel)",opacity:.85}}),(0,n.jsxs)("div",{ref:e=>{eg.current=e,L(e)},"data-board-node":!0,"data-testid":`task-card-${e}`,onDoubleClick:ew,style:{position:"relative",width:"100%",height:"100%",borderRadius:"var(--bubble-radius, 12px)",border:"1px solid var(--bubble-border)",background:"transparent",boxShadow:r?"0 2px 10px -6px rgba(0,0,0,0.2), 0 0 0 5px transparent, 0 0 16px 5px color-mix(in srgb, var(--accent) 28%, transparent)":"0 2px 10px -6px rgba(0,0,0,0.2)",color:"var(--text)",display:"flex",flexDirection:"column",overflow:"hidden",userSelect:"none",cursor:"grab",padding:6},children:[(0,n.jsxs)("div",{style:{flexShrink:0,height:36,display:"flex",alignItems:"center",gap:6,padding:"0 10px",borderBottom:"1px solid var(--bubble-hairline)",cursor:"grab",fontSize:11,color:"var(--text-muted)"},children:[(0,n.jsx)("span",{title:`执行状态:${(Q[$]??Q.not_started).label}`,style:{display:"flex",alignItems:"center",gap:4,flexShrink:0},children:(0,n.jsx)(T,{kind:"task",color:(Q[$]??Q.not_started).color})}),(0,n.jsx)("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:12.5,fontWeight:600,color:"var(--text)"},children:D?.name||(z?"新建任务卡":"任务卡")}),D?.number?(0,n.jsxs)("span",{style:{flexShrink:0,fontSize:12.5,fontWeight:600,color:"var(--text)",marginLeft:4},children:["#",D.number]}):null,(0,n.jsxs)("div",{className:"nodrag",style:{display:"flex",alignItems:"center",gap:6,flexShrink:0},onPointerDown:e=>e.stopPropagation(),children:[z?(0,n.jsx)("button",{type:"button",style:er,disabled:U||!f,onClick:()=>void eb(),title:"创建任务并派发(转待办,调度器可执行)",children:U?"创建中…":"派发"}):D?.readyStatus==="draft"?(0,n.jsx)("button",{type:"button",style:er,disabled:U,onClick:()=>{ef("readyStatus","todo"),!z&&g&&E({readyStatus:"todo"})},title:"派发(转待办,调度器可执行)",children:U?"派发中…":"派发"}):D?.readyStatus==="todo"?(0,n.jsxs)("span",{title:`执行状态:${(Q[$]??Q.not_started).label}`,style:{display:"flex",alignItems:"center",gap:4,fontSize:11,fontWeight:600,color:(Q[$]??Q.not_started).color,whiteSpace:"nowrap"},children:[(0,n.jsx)("span",{"aria-hidden":!0,style:{width:8,height:8,borderRadius:"50%",background:(Q[$]??Q.not_started).color,..."running"===$?{animation:"pulse-dot 1.6s ease-in-out infinite"}:{}}}),(Q[$]??Q.not_started).label]}):null,z?null:ey?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("button",{type:"button",style:er,onClick:()=>{v&&(H({...v.card}),F(q(v.links,"prerequisite")),A(q(v.links,"related")),eh(null),ei(null),el(null))},title:"撤销本次编辑",children:"取消"}),(0,n.jsx)("button",{type:"button",style:er,disabled:U,onClick:()=>void ev(),title:"完成(保存)",children:U?"保存中…":"完成"})]}):null]})]}),(0,n.jsx)("div",{style:{flex:1,minHeight:0,display:"flex"},children:(0,n.jsx)("div",{className:"[scrollbar-width:none] nodrag nowheel",style:{flex:"1 1 auto",minWidth:0,overflowY:"auto",padding:"10px 12px",display:"flex",flexDirection:"column",cursor:"default",userSelect:"text"},children:eS})})]})]})});function es({menu:e,onClose:t}){let{t:r}=(0,i.s)(),a=W(),{node:s,edgeId:l,x:d,y:c,edgeDerived:u}=e,p=!!(l&&u),x=(0,o.useCallback)(()=>{s&&a.deleteNode(s.id),t()},[s,a,t]),h=(0,o.useCallback)(()=>{l&&!p&&a.deleteEdge(l),t()},[l,p,a,t]),g=(0,o.useCallback)(()=>{a.addNode({id:crypto.randomUUID(),type:"sticky-note",position:{x:d,y:c},style:{width:338,height:230},data:{text:"",badge:"blue"}}),t()},[a,d,c,t]),f=(0,o.useCallback)(()=>{a.addNode({id:crypto.randomUUID(),type:"task-card",position:{x:d,y:c},style:{width:380,height:270},data:{cardId:"",number:0,name:"新建任务",description:"",readyStatus:"draft",priority:0,expanded:!1,w:380,h:270,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}}),t()},[a,d,c,t]),b=s?.type??null;return(0,n.jsxs)("div",{className:"glass-popover",onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),style:{position:"fixed",left:d,top:c,zIndex:1200,minWidth:168,padding:4,borderRadius:10,border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)",boxShadow:"0 8px 30px -8px rgba(0,0,0,0.4)",color:"var(--text)",fontSize:12.5,userSelect:"none"},children:[l&&(p?(0,n.jsx)(el,{disabled:!0,label:"派生连线(自动生成,不可删除)"}):(0,n.jsx)(el,{danger:!0,label:"删除连线",onClick:h})),s&&(0,n.jsx)(el,{label:"session-card"===b?"移除会话卡片":"task-card"===b?"删除任务卡":"删除便笺",danger:!0,onClick:x}),!s&&!l&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(el,{label:"新建便笺",onClick:g}),(0,n.jsx)(el,{label:"新建任务卡",onClick:f})]})]})}function el({label:e,onClick:t,danger:r,disabled:o}){return(0,n.jsx)("button",{type:"button",disabled:o,onClick:t,style:{display:"flex",alignItems:"center",width:"100%",padding:"6px 10px",border:"none",borderRadius:7,background:"transparent",color:r?"#ef4444":o?"var(--text-dim)":"var(--text)",fontSize:12.5,textAlign:"left",cursor:o?"default":"pointer"},onMouseEnter:e=>{o||(e.currentTarget.style.background="color-mix(in srgb, var(--accent) 14%, transparent)")},onMouseLeave:e=>{e.currentTarget.style.background="transparent"},children:e})}var ed=r(84876);let ec={"session-card":$,"task-card":ei,"sticky-note":Y,text:Y};function eu({board:e,isDark:t}){let{t:r}=(0,i.s)(),{screenToFlowPosition:s}=(0,a.VH)(),[l,d]=(0,o.useState)(!1),[c,u]=(0,o.useState)(null),p=(0,o.useMemo)(()=>({boardId:e.board?.id??null,updateNode:(t,r)=>{e.updateNode?.(t,r)},deleteNode:t=>{let r=e.nodes.find(e=>e.id===t);r&&e.deleteNodeWithConfirm?.(r)},normalizeNodeId:(t,r)=>{e.normalizeNodeId?.(t,r)},deleteEdge:t=>{e.onEdgesChange?.([{type:"remove",id:t}])},addEdge:t=>e.addEdge?.(t),addNode:t=>e.addNode?.(t)}),[e]),x=(0,o.useCallback)((e,t)=>{"sticky-note"===e?p.addNode({id:crypto.randomUUID(),type:e,position:{x:t.x,y:t.y},style:{width:380,height:280},data:{text:"",badge:"blue"}}):p.addNode({id:crypto.randomUUID(),type:e,position:{x:t.x,y:t.y},style:{width:380,height:270},data:{cardId:"",number:0,name:"新建任务",description:"",readyStatus:"draft",priority:0,expanded:!1,w:380,h:270,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}})},[p]),h=(0,o.useCallback)(e=>{let t=document.querySelector(".react-flow__pane"),r=t?.getBoundingClientRect();x(e,s({x:r?r.left+r.width/2:window.innerWidth/2,y:r?r.top+r.height/2:window.innerHeight/2}))},[x,s]),g=(0,o.useCallback)((e,t)=>{e.dataTransfer.setData("text/board-tool",t),e.dataTransfer.effectAllowed="copy"},[]),f=(0,o.useRef)(null);(0,o.useEffect)(()=>{let t=f.current;if(!t)return;let r=e=>{let t=e.dataTransfer?.types??[];(t.includes("text/session-id")||t.includes("text/board-tool"))&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=t.includes("text/board-tool")?"copy":"move"),d(!0))},n=e=>{let r=e.relatedTarget;r&&t.contains(r)||d(!1)},o=()=>d(!1),a=t=>{let r=t.dataTransfer?.types??[];if(!r.includes("text/session-id")&&!r.includes("text/board-tool"))return;t.preventDefault(),t.stopPropagation(),d(!1);let n=t.dataTransfer;if(!n)return;let o=s({x:t.clientX,y:t.clientY}),a=n.getData("text/session-id");if(a)return void e.addSessionNode(a,o.x,o.y);let i=n.getData("text/board-tool");"sticky-note"===i?x("sticky-note",o):"task-card"===i&&x("task-card",o)};return t.addEventListener("dragover",r,!0),t.addEventListener("dragleave",n,!0),t.addEventListener("dragend",o,!0),t.addEventListener("drop",a,!0),()=>{t.removeEventListener("dragover",r,!0),t.removeEventListener("dragleave",n,!0),t.removeEventListener("dragend",o,!0),t.removeEventListener("drop",a,!0)}},[e,s,x]);let b=(0,o.useCallback)(async({nodes:t})=>{if(!t||0===t.length)return!0;let r=t[0],n=e.nodes.find(e=>e.id===r.id);return n&&e.deleteNodeWithConfirm?.(n),!1},[e]),v=(0,o.useRef)(null),y=(0,o.useCallback)(e=>{u(null);let t=Date.now(),r=v.current;if(r&&t-r.t<320){v.current=null,x("sticky-note",s({x:e.clientX,y:e.clientY}));return}v.current={t:t}},[s,x]),m=(0,o.useCallback)((e,t)=>{e.preventDefault(),u({x:e.clientX,y:e.clientY,node:t,edgeId:null})},[]),k=(0,o.useCallback)(e=>{e.preventDefault(),u({x:e.clientX,y:e.clientY,node:null,edgeId:null})},[]),w=(0,o.useCallback)((t,r)=>{t.preventDefault();let n=e.edges.find(e=>e.id===r.id),o=n?.data;u({x:t.clientX,y:t.clientY,node:null,edgeId:n?.id??null,edgeDerived:!!(o?.execLink||o?.taskLink)})},[e.edges]),j=(0,o.useCallback)(e=>{h(e)},[h]);return(0,n.jsx)("div",{style:{flex:1,minHeight:0,display:"flex",flexDirection:"column",position:"relative"},children:(0,n.jsxs)("div",{ref:f,style:{flex:1,minHeight:0,position:"relative"},children:[(0,n.jsx)("div",{style:{position:"absolute",inset:0,zIndex:0,pointerEvents:"none",background:"var(--board-scrim-bg)",backdropFilter:"var(--board-scrim-filter, none)",WebkitBackdropFilter:"var(--board-scrim-filter, none)"}}),l&&(0,n.jsx)("div",{style:{position:"absolute",inset:0,zIndex:30,display:"flex",alignItems:"center",justifyContent:"center",background:"color-mix(in srgb, var(--accent) 10%, transparent)",border:"2px dashed var(--accent)",borderRadius:10,pointerEvents:"none",color:"var(--accent)",fontSize:13,fontWeight:600},children:r("boards.dropToAdd")}),e.error?(0,n.jsx)("div",{style:{position:"absolute",inset:0,zIndex:30,display:"flex",alignItems:"center",justifyContent:"center",color:"#f87171",fontSize:13},children:e.error}):e.loading?(0,n.jsx)(ed.N,{label:r("boards.loadingCanvas")}):(0,n.jsxs)(E,{value:p,children:[(0,n.jsxs)(a.Gc,{nodes:e.nodes,edges:e.edges,onNodesChange:e.onNodesChange,onEdgesChange:e.onEdgesChange,onConnect:e.onConnect,nodeTypes:ec,onBeforeDelete:b,onNodeContextMenu:m,onPaneContextMenu:k,onEdgeContextMenu:w,onPaneClick:y,zoomOnDoubleClick:!1,fitView:!0,fitViewOptions:{padding:.2},minZoom:.1,maxZoom:2,colorMode:t?"dark":"light",deleteKeyCode:["Backspace","Delete"],proOptions:{hideAttribution:!1},defaultEdgeOptions:{markerEnd:{type:"arrowclosed"},style:{strokeWidth:1.5,stroke:"#8b8fa3"}},children:[(0,n.jsx)(a.VS,{variant:a._5.Dots,gap:24,size:1.2,color:"color-mix(in srgb, var(--border) 45%, transparent)"}),(0,n.jsx)(a.H2,{position:"bottom-left",showInteractive:!1}),(0,n.jsx)(a.of,{pannable:!0,zoomable:!0,style:{background:"var(--board-card-glass)",backdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",WebkitBackdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)",borderRadius:12,boxShadow:"0 2px 12px -6px rgba(0,0,0,0.18)",overflow:"hidden"},maskColor:"color-mix(in srgb, var(--board-card-glass) 78%, transparent)",nodeColor:()=>"color-mix(in srgb, var(--accent) 50%, transparent)",nodeStrokeColor:()=>"var(--accent)"})]}),c&&(0,n.jsx)(es,{menu:c,onClose:()=>u(null)}),(0,n.jsxs)("div",{style:{position:"absolute",left:"50%",transform:"translateX(-50%)",bottom:16,zIndex:30,display:"flex",gap:4,padding:4,borderRadius:10,background:"var(--board-card-glass)",backdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",WebkitBackdropFilter:"blur(var(--board-blur)) saturate(var(--glass-saturate))",border:"1px solid color-mix(in srgb, var(--border) 60%, transparent)",boxShadow:"0 2px 12px -6px rgba(0,0,0,0.18)"},children:[(0,n.jsx)(ep,{label:"便笺",onClick:()=>j("sticky-note"),onDragStart:e=>g(e,"sticky-note")}),(0,n.jsx)(ep,{label:"任务",onClick:()=>j("task-card"),onDragStart:e=>g(e,"task-card")})]})]})]})})}function ep({label:e,onClick:t,onDragStart:r}){return(0,n.jsx)("button",{type:"button",draggable:!0,title:e,"aria-label":e,onClick:t,onDragStart:r,style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"6px 14px",border:"none",borderRadius:7,background:"transparent",color:"var(--text-muted)",fontSize:12.5,cursor:"grab",userSelect:"none",transition:"background 0.12s, color 0.12s"},onMouseEnter:e=>{e.currentTarget.style.background="color-mix(in srgb, var(--accent) 12%, transparent)",e.currentTarget.style.color="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.background="transparent",e.currentTarget.style.color="var(--text-muted)"},children:e})}}}]);