@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
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"25069":{"*":{"id":"60550","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"55100","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"57788":{"*":{"id":"19102","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/wa/project/pi-web-sky/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/components/PwaRegistration.tsx":{"id":57788,"name":"*","chunks":["7177","static/chunks/app/layout-702d3c97d297c42d.js"],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Noto_Sans_Mono\",\"arguments\":[{\"subsets\":[\"latin\",\"cyrillic\"],\"variable\":\"--font-noto-mono\",\"display\":\"swap\"}],\"variableName\":\"notoSansMono\"}":{"id":83683,"name":"*","chunks":["7177","static/chunks/app/layout-702d3c97d297c42d.js"],"async":false},"/home/wa/project/pi-web-sky/node_modules/katex/dist/katex.min.css":{"id":84559,"name":"*","chunks":["7177","static/chunks/app/layout-702d3c97d297c42d.js"],"async":false},"/home/wa/project/pi-web-sky/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-702d3c97d297c42d.js"],"async":false},"/home/wa/project/pi-web-sky/components/AppShell.tsx":{"id":25069,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","5362","static/chunks/5362-7d57fb3b2e15c9a1.js","8974","static/chunks/app/page-fd18462c3c937a50.js"],"async":false},"/home/wa/project/pi-web-sky/hooks/useI18n.tsx":{"id":39247,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","5362","static/chunks/5362-7d57fb3b2e15c9a1.js","8974","static/chunks/app/page-fd18462c3c937a50.js"],"async":false}},"entryCSSFiles":{"/home/wa/project/pi-web-sky/":[],"/home/wa/project/pi-web-sky/app/layout":[{"inlined":false,"path":"static/css/88714c00e109ce28.css"},{"inlined":false,"path":"static/css/0c7244f7214af81f.css"}],"/home/wa/project/pi-web-sky/app/page":[{"inlined":false,"path":"static/css/46396d55066d14af.css"}]},"rscModuleMapping":{"25069":{"*":{"id":"35790","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"73884","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"57788":{"*":{"id":"81276","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"84559":{"*":{"id":"25319","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"25069":{"*":{"id":"60550","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"55100","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"57788":{"*":{"id":"19102","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/wa/project/pi-web-sky/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/home/wa/project/pi-web-sky/components/PwaRegistration.tsx":{"id":57788,"name":"*","chunks":["7177","static/chunks/app/layout-2bec2662143a3d1b.js"],"async":false},"/home/wa/project/pi-web-sky/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Noto_Sans_Mono\",\"arguments\":[{\"subsets\":[\"latin\",\"cyrillic\"],\"variable\":\"--font-noto-mono\",\"display\":\"swap\"}],\"variableName\":\"notoSansMono\"}":{"id":83683,"name":"*","chunks":["7177","static/chunks/app/layout-2bec2662143a3d1b.js"],"async":false},"/home/wa/project/pi-web-sky/node_modules/katex/dist/katex.min.css":{"id":84559,"name":"*","chunks":["7177","static/chunks/app/layout-2bec2662143a3d1b.js"],"async":false},"/home/wa/project/pi-web-sky/app/globals.css":{"id":66872,"name":"*","chunks":["7177","static/chunks/app/layout-2bec2662143a3d1b.js"],"async":false},"/home/wa/project/pi-web-sky/components/AppShell.tsx":{"id":25069,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","5362","static/chunks/5362-7d57fb3b2e15c9a1.js","8974","static/chunks/app/page-e38c6cf3174fa143.js"],"async":false},"/home/wa/project/pi-web-sky/hooks/useI18n.tsx":{"id":39247,"name":"*","chunks":["7330","static/chunks/d3ac728e-7964f816a1ca64e5.js","5362","static/chunks/5362-7d57fb3b2e15c9a1.js","8974","static/chunks/app/page-e38c6cf3174fa143.js"],"async":false}},"entryCSSFiles":{"/home/wa/project/pi-web-sky/":[],"/home/wa/project/pi-web-sky/app/layout":[{"inlined":false,"path":"static/css/88714c00e109ce28.css"},{"inlined":false,"path":"static/css/0c7244f7214af81f.css"}],"/home/wa/project/pi-web-sky/app/page":[{"inlined":false,"path":"static/css/46396d55066d14af.css"}]},"rscModuleMapping":{"25069":{"*":{"id":"35790","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"39247":{"*":{"id":"73884","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"57788":{"*":{"id":"81276","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"66872":{"*":{"id":"82704","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"84559":{"*":{"id":"25319","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}};
@@ -23,9 +23,9 @@
23
23
  "/manifest.webmanifest/route": "app/manifest.webmanifest/route.js",
24
24
  "/api/agent/[id]/events/route": "app/api/agent/[id]/events/route.js",
25
25
  "/api/agent/running/route": "app/api/agent/running/route.js",
26
- "/api/agent/new/route": "app/api/agent/new/route.js",
27
- "/api/app-update/route": "app/api/app-update/route.js",
28
26
  "/api/auth/all-providers/route": "app/api/auth/all-providers/route.js",
27
+ "/api/app-update/route": "app/api/app-update/route.js",
28
+ "/api/agent/new/route": "app/api/agent/new/route.js",
29
29
  "/api/auth/api-key/[provider]/route": "app/api/auth/api-key/[provider]/route.js",
30
30
  "/api/auth/logout/[provider]/route": "app/api/auth/logout/[provider]/route.js",
31
31
  "/api/auth/providers/route": "app/api/auth/providers/route.js",
@@ -40,23 +40,23 @@
40
40
  "/api/models-config/discover/route": "app/api/models-config/discover/route.js",
41
41
  "/api/models-config/test/route": "app/api/models-config/test/route.js",
42
42
  "/api/models/route": "app/api/models/route.js",
43
- "/api/mcp/route": "app/api/mcp/route.js",
44
43
  "/api/project-trust/route": "app/api/project-trust/route.js",
45
44
  "/api/search/route": "app/api/search/route.js",
45
+ "/api/mcp/route": "app/api/mcp/route.js",
46
46
  "/api/plugins/route": "app/api/plugins/route.js",
47
- "/api/quota/route": "app/api/quota/route.js",
48
47
  "/api/sessions/route": "app/api/sessions/route.js",
49
48
  "/api/sessions/[id]/export/route": "app/api/sessions/[id]/export/route.js",
49
+ "/api/quota/route": "app/api/quota/route.js",
50
50
  "/api/skills/check/route": "app/api/skills/check/route.js",
51
51
  "/api/skills/install/route": "app/api/skills/install/route.js",
52
52
  "/api/skills/route": "app/api/skills/route.js",
53
+ "/api/task-card-questions/[id]/answer/route": "app/api/task-card-questions/[id]/answer/route.js",
53
54
  "/api/skills/search/route": "app/api/skills/search/route.js",
54
55
  "/api/skills/update/route": "app/api/skills/update/route.js",
55
- "/api/task-card-questions/[id]/answer/route": "app/api/task-card-questions/[id]/answer/route.js",
56
56
  "/api/task-card-questions/route": "app/api/task-card-questions/route.js",
57
57
  "/api/task-scheduler/status/route": "app/api/task-scheduler/status/route.js",
58
- "/api/task-cards/[id]/route": "app/api/task-cards/[id]/route.js",
59
58
  "/api/tasks/[id]/board/route": "app/api/tasks/[id]/board/route.js",
59
+ "/api/task-cards/[id]/route": "app/api/task-cards/[id]/route.js",
60
60
  "/api/task-cards/route": "app/api/task-cards/route.js",
61
61
  "/api/tasks/reorder/route": "app/api/tasks/reorder/route.js",
62
62
  "/api/tasks/route": "app/api/tasks/route.js",
@@ -1,7 +1,7 @@
1
- exports.id=4226,exports.ids=[4226],exports.modules={29742:(a,b,c)=>{"use strict";c.d(b,{BH:()=>y,GO:()=>r,Lc:()=>u,O7:()=>z,QA:()=>t,XJ:()=>n,gN:()=>o,iQ:()=>v,mL:()=>C,mY:()=>D,pt:()=>E,uZ:()=>x,w0:()=>q,zY:()=>p});var d=c(55511),e=c(66737),f=c(71856);let g=()=>Date.now(),h=new Set(["draft","todo"]),i=new Set(["not_started","running","review","done","failed","abandoned","waiting_reply"]);function j(a){if(void 0!==a&&!h.has(a))throw Error(`invalid readyStatus: ${String(a)}`)}function k(a){return{...a,useWorktree:1===a.useWorktree,attachments:JSON.parse(a.attachments)}}let l="id, board_id AS boardId, project_key AS projectKey, number, name, description, ready_status AS readyStatus, exec_status AS execStatus, priority, due, attachments, cwd, use_worktree AS useWorktree, max_retries AS maxRetries, retry_count AS retryCount, session_id AS sessionId, dispatch_token AS dispatchToken, owner, heartbeat, created, updated";function m(a){return(0,e.Lf)().prepare(`SELECT ${l} FROM task_cards WHERE id = ?`).get(a)}function n(a){let b=m(a);return b?k(b):void 0}function o(a){return(0,e.Lf)().prepare(`SELECT ${l} FROM task_cards WHERE board_id = ? ORDER BY number`).all(a).map(k)}function p(a){var b;let c=a.name.trim();if(!a.projectKey)throw Error("projectKey is required");if(!a.boardId)throw Error("boardId is required");if(!c)throw Error("name must not be empty");j(a.readyStatus);let f=(0,d.randomUUID)(),h=g(),i=(b=a.projectKey,(0,e.Lf)().prepare("SELECT COALESCE(MAX(number), 0) AS maxNumber FROM task_cards WHERE project_key = ?").get(b).maxNumber+1);return(0,e.Lf)().prepare("INSERT INTO task_cards (id, board_id, project_key, number, name, description, ready_status, exec_status, priority, due, attachments, cwd, use_worktree, max_retries, retry_count, created, updated) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)").run(f,a.boardId,a.projectKey,i,c,a.description??"",a.readyStatus??"todo","not_started",a.priority??0,a.due??null,JSON.stringify(a.attachments??[]),a.cwd??null,+!!a.useWorktree,a.maxRetries??3,0,h,h),k(m(f))}function q(a,b){let c=(0,e.Lf)(),d=m(a);if(!d)return null;let f=[],h=[],l=(a,b)=>{f.push(`${a} = ?`),h.push(b)};if(void 0!==b.name){let a=b.name.trim();if(!a)throw Error("name must not be empty");l("name",a)}if(void 0!==b.description&&l("description",b.description),void 0!==b.readyStatus&&(j(b.readyStatus),l("ready_status",b.readyStatus)),void 0!==b.execStatus){var n=b.execStatus;if(void 0!==n&&!i.has(n))throw Error(`invalid execStatus: ${String(n)}`);l("exec_status",b.execStatus)}return(void 0!==b.priority&&l("priority",b.priority),void 0!==b.due&&l("due",b.due),void 0!==b.attachments&&l("attachments",JSON.stringify(b.attachments)),void 0!==b.cwd&&l("cwd",b.cwd),void 0!==b.useWorktree&&l("use_worktree",+!!b.useWorktree),void 0!==b.maxRetries&&l("max_retries",b.maxRetries),void 0!==b.sessionId&&l("session_id",b.sessionId),void 0!==b.retryCount&&l("retry_count",b.retryCount),void 0!==b.owner&&l("owner",b.owner),void 0!==b.heartbeat&&l("heartbeat",b.heartbeat),0===f.length)?k(d):(l("updated",g()),c.prepare(`UPDATE task_cards SET ${f.join(", ")} WHERE id = ?`).run(...h,a),k(m(a)))}function r(a){let b=(0,e.Lf)();if(m(a)){b.exec("BEGIN");try{for(let c of(b.prepare("DELETE FROM task_card_links WHERE card_id = ? OR target_card_id = ?").run(a,a),b.prepare("DELETE FROM task_card_questions WHERE card_id = ?").run(a),b.prepare("SELECT id, board_id AS boardId FROM board_nodes WHERE kind = 'taskcard' AND ref_id = ? AND board_id != ?").all(a,f.p)))b.prepare("DELETE FROM board_edges WHERE board_id = ? AND (from_id = ? OR to_id = ?)").run(c.boardId,c.id,c.id),b.prepare("DELETE FROM board_nodes WHERE id = ?").run(c.id),b.prepare("UPDATE boards SET updated = ? WHERE id = ?").run(g(),c.boardId);b.prepare("DELETE FROM task_cards WHERE id = ?").run(a),b.exec("COMMIT")}catch(a){throw b.exec("ROLLBACK"),a}}}let s="id, card_id AS cardId, target_card_id AS targetCardId, kind, created";function t(a){return(0,e.Lf)().prepare(`SELECT ${s} FROM task_card_links WHERE card_id = ? ORDER BY created, rowid`).all(a)}function u(a){return(0,e.Lf)().prepare(`SELECT ${s} FROM task_card_links WHERE target_card_id = ? ORDER BY created, rowid`).all(a)}function v(a,b,c){let f=(0,e.Lf)(),h=n(a);if(!h)throw Error(`task card not found: ${a}`);let i=(b,c)=>{if(b===a)throw Error(`${c} target 不能是自身`);let d=n(b);if(!d)throw Error(`${c} target not found: ${b}`);if(d.boardId!==h.boardId)throw Error(`${c} target 不允许跨看板: ${b}`)};for(let a of b)i(a,"prerequisite");for(let a of c)i(a,"related");let j=g();f.exec("BEGIN");try{f.prepare("DELETE FROM task_card_links WHERE card_id = ?").run(a);let e=f.prepare("INSERT OR IGNORE INTO task_card_links (id, card_id, target_card_id, kind, created) VALUES (?, ?, ?, ?, ?)");for(let c of b)e.run((0,d.randomUUID)(),a,c,"prerequisite",j);for(let b of c)e.run((0,d.randomUUID)(),a,b,"related",j);f.exec("COMMIT")}catch(a){throw f.exec("ROLLBACK"),a}}function w(a){for(let b of t(a.id)){if("prerequisite"!==b.kind)continue;let a=n(b.targetCardId);if(a&&"done"!==a.execStatus)return!1}return!0}function x(){return(0,e.Lf)().prepare(`SELECT ${l} FROM task_cards
1
+ exports.id=4226,exports.ids=[4226],exports.modules={29742:(a,b,c)=>{"use strict";c.d(b,{BH:()=>z,GO:()=>s,Lc:()=>v,O7:()=>A,QA:()=>u,VE:()=>o,XJ:()=>n,gN:()=>p,iQ:()=>w,mL:()=>D,mY:()=>E,pt:()=>F,uZ:()=>y,w0:()=>r,zY:()=>q});var d=c(55511),e=c(66737),f=c(71856);let g=()=>Date.now(),h=new Set(["draft","todo"]),i=new Set(["not_started","running","review","done","failed","abandoned","waiting_reply"]);function j(a){if(void 0!==a&&!h.has(a))throw Error(`invalid readyStatus: ${String(a)}`)}function k(a){return{...a,useWorktree:1===a.useWorktree,attachments:JSON.parse(a.attachments)}}let l="id, board_id AS boardId, project_key AS projectKey, number, name, description, ready_status AS readyStatus, exec_status AS execStatus, priority, due, attachments, cwd, use_worktree AS useWorktree, max_retries AS maxRetries, retry_count AS retryCount, session_id AS sessionId, dispatch_token AS dispatchToken, owner, heartbeat, created, updated";function m(a){return(0,e.Lf)().prepare(`SELECT ${l} FROM task_cards WHERE id = ?`).get(a)}function n(a){let b=m(a);return b?k(b):void 0}function o(a){if(0===a.length)return[];let b=a.map(()=>"?").join(","),c=new Map((0,e.Lf)().prepare(`SELECT ${l} FROM task_cards WHERE id IN (${b})`).all(...a).map(a=>[a.id,k(a)]));return a.map(a=>c.get(a)).filter(a=>!!a)}function p(a){return(0,e.Lf)().prepare(`SELECT ${l} FROM task_cards WHERE board_id = ? ORDER BY number`).all(a).map(k)}function q(a){var b;let c=a.name.trim();if(!a.projectKey)throw Error("projectKey is required");if(!a.boardId)throw Error("boardId is required");if(!c)throw Error("name must not be empty");j(a.readyStatus);let f=(0,d.randomUUID)(),h=g(),i=(b=a.projectKey,(0,e.Lf)().prepare("SELECT COALESCE(MAX(number), 0) AS maxNumber FROM task_cards WHERE project_key = ?").get(b).maxNumber+1);return(0,e.Lf)().prepare("INSERT INTO task_cards (id, board_id, project_key, number, name, description, ready_status, exec_status, priority, due, attachments, cwd, use_worktree, max_retries, retry_count, created, updated) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)").run(f,a.boardId,a.projectKey,i,c,a.description??"",a.readyStatus??"todo","not_started",a.priority??0,a.due??null,JSON.stringify(a.attachments??[]),a.cwd??null,+!!a.useWorktree,a.maxRetries??3,0,h,h),k(m(f))}function r(a,b){let c=(0,e.Lf)(),d=m(a);if(!d)return null;let f=[],h=[],l=(a,b)=>{f.push(`${a} = ?`),h.push(b)};if(void 0!==b.name){let a=b.name.trim();if(!a)throw Error("name must not be empty");l("name",a)}if(void 0!==b.description&&l("description",b.description),void 0!==b.readyStatus&&(j(b.readyStatus),l("ready_status",b.readyStatus)),void 0!==b.execStatus){var n=b.execStatus;if(void 0!==n&&!i.has(n))throw Error(`invalid execStatus: ${String(n)}`);l("exec_status",b.execStatus)}return(void 0!==b.priority&&l("priority",b.priority),void 0!==b.due&&l("due",b.due),void 0!==b.attachments&&l("attachments",JSON.stringify(b.attachments)),void 0!==b.cwd&&l("cwd",b.cwd),void 0!==b.useWorktree&&l("use_worktree",+!!b.useWorktree),void 0!==b.maxRetries&&l("max_retries",b.maxRetries),void 0!==b.sessionId&&l("session_id",b.sessionId),void 0!==b.retryCount&&l("retry_count",b.retryCount),void 0!==b.owner&&l("owner",b.owner),void 0!==b.heartbeat&&l("heartbeat",b.heartbeat),0===f.length)?k(d):(l("updated",g()),c.prepare(`UPDATE task_cards SET ${f.join(", ")} WHERE id = ?`).run(...h,a),k(m(a)))}function s(a){let b=(0,e.Lf)();if(m(a)){b.exec("BEGIN");try{for(let c of(b.prepare("DELETE FROM task_card_links WHERE card_id = ? OR target_card_id = ?").run(a,a),b.prepare("DELETE FROM task_card_questions WHERE card_id = ?").run(a),b.prepare("SELECT id, board_id AS boardId FROM board_nodes WHERE kind = 'taskcard' AND ref_id = ? AND board_id != ?").all(a,f.p)))b.prepare("DELETE FROM board_edges WHERE board_id = ? AND (from_id = ? OR to_id = ?)").run(c.boardId,c.id,c.id),b.prepare("DELETE FROM board_nodes WHERE id = ?").run(c.id),b.prepare("UPDATE boards SET updated = ? WHERE id = ?").run(g(),c.boardId);b.prepare("DELETE FROM task_cards WHERE id = ?").run(a),b.exec("COMMIT")}catch(a){throw b.exec("ROLLBACK"),a}}}let t="id, card_id AS cardId, target_card_id AS targetCardId, kind, created";function u(a){return(0,e.Lf)().prepare(`SELECT ${t} FROM task_card_links WHERE card_id = ? ORDER BY created, rowid`).all(a)}function v(a){return(0,e.Lf)().prepare(`SELECT ${t} FROM task_card_links WHERE target_card_id = ? ORDER BY created, rowid`).all(a)}function w(a,b,c){let f=(0,e.Lf)(),h=n(a);if(!h)throw Error(`task card not found: ${a}`);let i=(b,c)=>{if(b===a)throw Error(`${c} target 不能是自身`);let d=n(b);if(!d)throw Error(`${c} target not found: ${b}`);if(d.boardId!==h.boardId)throw Error(`${c} target 不允许跨看板: ${b}`)};for(let a of b)i(a,"prerequisite");for(let a of c)i(a,"related");let j=g();f.exec("BEGIN");try{f.prepare("DELETE FROM task_card_links WHERE card_id = ?").run(a);let e=f.prepare("INSERT OR IGNORE INTO task_card_links (id, card_id, target_card_id, kind, created) VALUES (?, ?, ?, ?, ?)");for(let c of b)e.run((0,d.randomUUID)(),a,c,"prerequisite",j);for(let b of c)e.run((0,d.randomUUID)(),a,b,"related",j);f.exec("COMMIT")}catch(a){throw f.exec("ROLLBACK"),a}}function x(a){for(let b of u(a.id)){if("prerequisite"!==b.kind)continue;let a=n(b.targetCardId);if(a&&"done"!==a.execStatus)return!1}return!0}function y(){return(0,e.Lf)().prepare(`SELECT ${l} FROM task_cards
2
2
  WHERE ready_status = 'todo' AND (exec_status = 'not_started' OR (exec_status = 'failed' AND retry_count < max_retries))
3
3
  AND dispatch_token IS NULL
4
- ORDER BY priority DESC, number`).all().map(k).filter(w)}function y(){return(0,e.Lf)().prepare(`SELECT ${l} FROM task_cards WHERE exec_status = 'running' ORDER BY number`).all().map(k)}function z(a){let b=a.map(()=>"?").join(",");return(0,e.Lf)().prepare(`SELECT ${l} FROM task_cards WHERE exec_status IN (${b}) ORDER BY number`).all(...a).map(k)}let A="id, card_id AS cardId, session_id AS sessionId, question, status, answer, created, answered";function B(a){return{...a}}function C(a){let b=a&&"all"!==a?"WHERE status = ?":"";return(0,e.Lf)().prepare(`SELECT ${A} FROM task_card_questions ${b} ORDER BY created`).all(...a&&"all"!==a?[a]:[]).map(B)}function D(){return(0,e.Lf)().prepare("SELECT COUNT(*) AS n FROM task_card_questions WHERE status = 'pending'").get().n}function E(a,b){let c=(0,e.Lf)(),d=(0,e.Lf)().prepare(`SELECT ${A} FROM task_card_questions WHERE id = ?`).get(a);if(!d)return null;if("answered"===d.status)return B(d);let f=Date.now();return c.prepare("UPDATE task_card_questions SET status = 'answered', answer = ?, answered = ? WHERE id = ?").run(b,f,a),B((0,e.Lf)().prepare(`SELECT ${A} FROM task_card_questions WHERE id = ?`).get(a))}},66737:(a,b,c)=>{"use strict";c.d(b,{Lf:()=>g});var d=c(80099),e=c(21820),f=c(33873);function g(){var a;if(globalThis.__piWebDb)return globalThis.__piWebDb;let b=new d.DatabaseSync((0,f.join)(function(){let a=process.env.PI_CODING_AGENT_DIR;if(a){let b=a.startsWith("~")?(0,f.join)((0,e.homedir)(),a.slice(1)):a;return(0,f.normalize)(b)}return(0,f.join)((0,e.homedir)(),".pi","agent")}(),"pi-web.db"));return b.exec("PRAGMA journal_mode = WAL;"),b.exec("PRAGMA foreign_keys = ON;"),(a=b).exec(`
4
+ ORDER BY priority DESC, number`).all().map(k).filter(x)}function z(){return(0,e.Lf)().prepare(`SELECT ${l} FROM task_cards WHERE exec_status = 'running' ORDER BY number`).all().map(k)}function A(a){let b=a.map(()=>"?").join(",");return(0,e.Lf)().prepare(`SELECT ${l} FROM task_cards WHERE exec_status IN (${b}) ORDER BY number`).all(...a).map(k)}let B="id, card_id AS cardId, session_id AS sessionId, question, status, answer, created, answered";function C(a){return{...a}}function D(a){let b=a&&"all"!==a?"WHERE status = ?":"";return(0,e.Lf)().prepare(`SELECT ${B} FROM task_card_questions ${b} ORDER BY created`).all(...a&&"all"!==a?[a]:[]).map(C)}function E(){return(0,e.Lf)().prepare("SELECT COUNT(*) AS n FROM task_card_questions WHERE status = 'pending'").get().n}function F(a,b){let c=(0,e.Lf)(),d=(0,e.Lf)().prepare(`SELECT ${B} FROM task_card_questions WHERE id = ?`).get(a);if(!d)return null;if("answered"===d.status)return C(d);let f=Date.now();return c.prepare("UPDATE task_card_questions SET status = 'answered', answer = ?, answered = ? WHERE id = ?").run(b,f,a),C((0,e.Lf)().prepare(`SELECT ${B} FROM task_card_questions WHERE id = ?`).get(a))}},66737:(a,b,c)=>{"use strict";c.d(b,{Lf:()=>g});var d=c(80099),e=c(21820),f=c(33873);function g(){var a;if(globalThis.__piWebDb)return globalThis.__piWebDb;let b=new d.DatabaseSync((0,f.join)(function(){let a=process.env.PI_CODING_AGENT_DIR;if(a){let b=a.startsWith("~")?(0,f.join)((0,e.homedir)(),a.slice(1)):a;return(0,f.normalize)(b)}return(0,f.join)((0,e.homedir)(),".pi","agent")}(),"pi-web.db"));return b.exec("PRAGMA journal_mode = WAL;"),b.exec("PRAGMA foreign_keys = ON;"),(a=b).exec(`
5
5
  CREATE TABLE IF NOT EXISTS tasks (
6
6
  id TEXT PRIMARY KEY,
7
7
  project_key TEXT NOT NULL,
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=7128,exports.ids=[7128],exports.modules={47128:(a,b,c)=>{c.d(b,{dA:()=>h});var d=c(75384),e=c(65562),f=c(48817);function g(a,b=340,c=160){let d=a.filter(a=>a?.type==="session-card").map(a=>({x:a.position?.x??0,y:a.position?.y??0,w:a.style?.width??b,h:a.style?.height??c})),e=(a,e)=>d.some(d=>a<d.x+d.w+24&&a+b+24>d.x&&e<d.y+d.h+24&&e+c+24>d.y),f=60,h=0;for(;h<2e3;){for(let a=0;a<4;a+=1){let c=60+a*(b+24);if(!e(c,f))return{x:c,y:f}}f+=c+24,h+=1}return{x:60,y:60}}async function h(a){var b;let c,h=(0,d.v$)(a);if(!h?.taskId)return;let i=h.taskId,j=(0,e.gQ)(i),k=(0,f.gN)(a),l=new Set(j);for(let a of k)a.sessionId&&l.add(a.sessionId);await (b=a=>{let b=a.nodes,c=a.edges,d=Array.from(b.values()),e=new Map,h=new Set;for(let a of d){if(a?.type!=="session-card")continue;let b=a.data?.sessionId;if(b){if(function(a){let b=a?.data?.cwd;return!!(a&&"string"==typeof b&&b.length>0)}(a)){h.add(b);continue}e.set(b,a)}}let j=[];for(let[a,b]of e)l.has(a)||b.data?.taskId!==i&&j.push(b.id);for(let a of j)for(let d of(b.delete(a),Array.from(c.values())))(d.source===a||d.target===a)&&c.delete(d.id);{let a=Array.from(b.values());for(let c of l){if(e.has(c)||h.has(c))continue;let d=`session-${c}`,f=g(a);b.set(d,{id:d,type:"session-card",position:{x:f.x,y:f.y},style:{width:340,height:160},data:{sessionId:c,title:"",projectName:"",messageCount:0,lastReply:"",phase:"idle",runningMs:0,endedAt:0,lastActivityAt:0,stale:!1,expanded:!1,cwd:"",taskId:"",w:340,h:160,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}}),a.push(b.get(d))}}let m=new Map;for(let a of d)a?.type==="task-card"&&a.data?.cardId&&m.set(a.data.cardId,a);let n=new Set(k.map(a=>a.id)),o=[];for(let[a,b]of m)n.has(a)||o.push(b.id);for(let a of o)for(let d of(b.delete(a),Array.from(c.values())))(d.source===a||d.target===a)&&c.delete(d.id);{let a=Array.from(b.values());for(let c of k){if(m.has(c.id))continue;let d=`task-${c.id}`,e=g(a,380,240);b.set(d,{id:d,type:"task-card",position:{x:e.x,y:e.y},style:{width:380,height:240},data:{cardId:c.id,number:c.number,name:c.name,description:c.description,readyStatus:c.readyStatus,execStatus:c.execStatus,priority:c.priority,due:c.due??void 0,expanded:!1,w:380,h:240,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}}),a.push(b.get(d))}}let p=new Map;for(let a of Array.from(b.values()))a?.type==="task-card"&&a.data?.cardId&&p.set(a.data.cardId,a);let q=new Map;for(let a of Array.from(b.values()))a?.type==="session-card"&&a.data?.sessionId&&q.set(a.data.sessionId,a);let r=new Map;for(let a of Array.from(c.values())){if(!a.data?.execLink)continue;let b=a.source,c=r.get(b)??[];c.push({to:a.target,edgeId:a.id}),r.set(b,c)}for(let a of k){let b=p.get(a.id);if(!b)continue;let d=a.sessionId?q.get(a.sessionId):null,e=r.get(b.id)??[];for(let a of e)a.to!==(d?.id??null)&&c.delete(a.edgeId);if(!d||e.some(a=>a.to===d.id))continue;let f=`exec-${a.id}-${a.sessionId}`;c.set(f,{id:f,source:b.id,target:d.id,type:"default",data:{execLink:!0,cardId:a.id,sessionId:a.sessionId},markerEnd:{type:"arrowclosed"},style:{strokeWidth:1.5,stroke:"#3184f8",strokeDasharray:"6 4"}})}let s=new Map;for(let a of Array.from(c.values())){if(!a.data?.taskLink)continue;let b=a.source,c=a.target,d=a.data.taskLink;b&&c&&d&&s.set(`${b}->${c}:${d}`,a.id)}let t=new Set;for(let a of k){let b=p.get(a.id);if(b)for(let d of(0,f.QA)(a.id)){let a=p.get(d.targetCardId);if(!a)continue;let e=`${b.id}->${a.id}:${d.kind}`;if(t.add(e),!s.has(e)){let e=`link-${b.id}-${a.id}-${d.kind}`;c.set(e,{id:e,source:b.id,target:a.id,type:"default",data:{taskLink:d.kind},markerEnd:{type:"arrowclosed"},style:{strokeWidth:1.5,stroke:"#f59e0b"}})}}}for(let[a,b]of s)t.has(a)||c.delete(b)},!(c=globalThis.__yjsBoard)?Promise.resolve():c.mutateBoard(a,b))}},48817:(a,b,c)=>{c.d(b,{$j:()=>r,BH:()=>u,CU:()=>t,Im:()=>q,Kg:()=>y,O7:()=>v,QA:()=>n,XJ:()=>k,gN:()=>l,hG:()=>x,tZ:()=>s,uZ:()=>p,w0:()=>m});var d=c(55511),e=c(90596);let f=new Set(["draft","todo"]),g=new Set(["not_started","running","review","done","failed","abandoned","waiting_reply"]);function h(a){return{...a,useWorktree:1===a.useWorktree,attachments:JSON.parse(a.attachments)}}let i="id, board_id AS boardId, project_key AS projectKey, number, name, description, ready_status AS readyStatus, exec_status AS execStatus, priority, due, attachments, cwd, use_worktree AS useWorktree, max_retries AS maxRetries, retry_count AS retryCount, session_id AS sessionId, dispatch_token AS dispatchToken, owner, heartbeat, created, updated";function j(a){return(0,e.Lf)().prepare(`SELECT ${i} FROM task_cards WHERE id = ?`).get(a)}function k(a){let b=j(a);return b?h(b):void 0}function l(a){return(0,e.Lf)().prepare(`SELECT ${i} FROM task_cards WHERE board_id = ? ORDER BY number`).all(a).map(h)}function m(a,b){let c=(0,e.Lf)(),d=j(a);if(!d)return null;let i=[],k=[],l=(a,b)=>{i.push(`${a} = ?`),k.push(b)};if(void 0!==b.name){let a=b.name.trim();if(!a)throw Error("name must not be empty");l("name",a)}if(void 0!==b.description&&l("description",b.description),void 0!==b.readyStatus){var m=b.readyStatus;if(void 0!==m&&!f.has(m))throw Error(`invalid readyStatus: ${String(m)}`);l("ready_status",b.readyStatus)}if(void 0!==b.execStatus){var n=b.execStatus;if(void 0!==n&&!g.has(n))throw Error(`invalid execStatus: ${String(n)}`);l("exec_status",b.execStatus)}return(void 0!==b.priority&&l("priority",b.priority),void 0!==b.due&&l("due",b.due),void 0!==b.attachments&&l("attachments",JSON.stringify(b.attachments)),void 0!==b.cwd&&l("cwd",b.cwd),void 0!==b.useWorktree&&l("use_worktree",+!!b.useWorktree),void 0!==b.maxRetries&&l("max_retries",b.maxRetries),void 0!==b.sessionId&&l("session_id",b.sessionId),void 0!==b.retryCount&&l("retry_count",b.retryCount),void 0!==b.owner&&l("owner",b.owner),void 0!==b.heartbeat&&l("heartbeat",b.heartbeat),0===i.length)?h(d):(l("updated",Date.now()),c.prepare(`UPDATE task_cards SET ${i.join(", ")} WHERE id = ?`).run(...k,a),h(j(a)))}function n(a){return(0,e.Lf)().prepare("SELECT id, card_id AS cardId, target_card_id AS targetCardId, kind, created FROM task_card_links WHERE card_id = ? ORDER BY created, rowid").all(a)}function o(a){for(let b of n(a.id)){if("prerequisite"!==b.kind)continue;let a=k(b.targetCardId);if(a&&"done"!==a.execStatus)return!1}return!0}function p(){return(0,e.Lf)().prepare(`SELECT ${i} FROM task_cards
1
+ "use strict";exports.id=7128,exports.ids=[7128],exports.modules={47128:(a,b,c)=>{c.d(b,{dA:()=>h});var d=c(75384),e=c(65562),f=c(48817);function g(a,b=340,c=160){let d=a.filter(a=>a?.type==="session-card").map(a=>({x:a.position?.x??0,y:a.position?.y??0,w:a.style?.width??b,h:a.style?.height??c})),e=(a,e)=>d.some(d=>a<d.x+d.w+24&&a+b+24>d.x&&e<d.y+d.h+24&&e+c+24>d.y),f=60,h=0;for(;h<2e3;){for(let a=0;a<4;a+=1){let c=60+a*(b+24);if(!e(c,f))return{x:c,y:f}}f+=c+24,h+=1}return{x:60,y:60}}async function h(a){var b;let c,h=(0,d.v$)(a);if(!h?.taskId)return;let i=h.taskId,j=(0,e.gQ)(i),k=(0,f.gN)(a),l=new Set(j);for(let a of k)a.sessionId&&l.add(a.sessionId);await (b=a=>{let b=a.nodes,c=a.edges,d=Array.from(b.values()),e=new Map,h=new Set;for(let a of d){if(a?.type!=="session-card")continue;let b=a.data?.sessionId;if(b){if(function(a){let b=a?.data?.cwd;return!!(a&&"string"==typeof b&&b.length>0)}(a)){h.add(b);continue}e.set(b,a)}}let j=[];for(let[a,b]of e)l.has(a)||b.data?.taskId!==i&&j.push(b.id);for(let a of j)for(let d of(b.delete(a),Array.from(c.values())))(d.source===a||d.target===a)&&c.delete(d.id);{let a=Array.from(b.values());for(let c of l){if(e.has(c)||h.has(c))continue;let d=`session-${c}`,f=g(a);b.set(d,{id:d,type:"session-card",position:{x:f.x,y:f.y},style:{width:340,height:160},data:{sessionId:c,title:"",projectName:"",messageCount:0,lastReply:"",phase:"idle",runningMs:0,endedAt:0,lastActivityAt:0,stale:!1,expanded:!1,cwd:"",taskId:"",w:340,h:160,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}}),a.push(b.get(d))}}let m=new Map;for(let a of d)a?.type==="task-card"&&a.data?.cardId&&m.set(a.data.cardId,a);let n=new Set(k.map(a=>a.id)),o=[];for(let[a,b]of m)n.has(a)||o.push(b.id);for(let a of o)for(let d of(b.delete(a),Array.from(c.values())))(d.source===a||d.target===a)&&c.delete(d.id);{let a=Array.from(b.values());for(let c of k){if(m.has(c.id))continue;let d=`task-${c.id}`,e=g(a,380,240);b.set(d,{id:d,type:"task-card",position:{x:e.x,y:e.y},style:{width:380,height:240},data:{cardId:c.id,number:c.number,name:c.name,description:c.description,readyStatus:c.readyStatus,priority:c.priority,due:c.due??void 0,expanded:!1,w:380,h:240,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}}),a.push(b.get(d))}}let p=new Map;for(let a of Array.from(b.values()))a?.type==="task-card"&&a.data?.cardId&&p.set(a.data.cardId,a);let q=new Map;for(let a of Array.from(b.values()))a?.type==="session-card"&&a.data?.sessionId&&q.set(a.data.sessionId,a);let r=new Map;for(let a of Array.from(c.values())){if(!a.data?.execLink)continue;let b=a.source,c=r.get(b)??[];c.push({to:a.target,edgeId:a.id}),r.set(b,c)}for(let a of k){let b=p.get(a.id);if(!b)continue;let d=a.sessionId?q.get(a.sessionId):null,e=r.get(b.id)??[];for(let a of e)a.to!==(d?.id??null)&&c.delete(a.edgeId);if(!d||e.some(a=>a.to===d.id))continue;let f=`exec-${a.id}-${a.sessionId}`;c.set(f,{id:f,source:b.id,target:d.id,type:"default",data:{execLink:!0,cardId:a.id,sessionId:a.sessionId},markerEnd:{type:"arrowclosed"},style:{strokeWidth:1.5,stroke:"#3184f8",strokeDasharray:"6 4"}})}let s=new Map;for(let a of Array.from(c.values())){if(!a.data?.taskLink)continue;let b=a.source,c=a.target,d=a.data.taskLink;b&&c&&d&&s.set(`${b}->${c}:${d}`,a.id)}let t=new Set;for(let a of k){let b=p.get(a.id);if(b)for(let d of(0,f.QA)(a.id)){let a=p.get(d.targetCardId);if(!a)continue;let e=`${b.id}->${a.id}:${d.kind}`;if(t.add(e),!s.has(e)){let e=`link-${b.id}-${a.id}-${d.kind}`;c.set(e,{id:e,source:b.id,target:a.id,type:"default",data:{taskLink:d.kind},markerEnd:{type:"arrowclosed"},style:{strokeWidth:1.5,stroke:"#f59e0b"}})}}}for(let[a,b]of s)t.has(a)||c.delete(b)},!(c=globalThis.__yjsBoard)?Promise.resolve():c.mutateBoard(a,b))}},48817:(a,b,c)=>{c.d(b,{$j:()=>r,BH:()=>u,CU:()=>t,Im:()=>q,Kg:()=>y,O7:()=>v,QA:()=>n,XJ:()=>k,gN:()=>l,hG:()=>x,tZ:()=>s,uZ:()=>p,w0:()=>m});var d=c(55511),e=c(90596);let f=new Set(["draft","todo"]),g=new Set(["not_started","running","review","done","failed","abandoned","waiting_reply"]);function h(a){return{...a,useWorktree:1===a.useWorktree,attachments:JSON.parse(a.attachments)}}let i="id, board_id AS boardId, project_key AS projectKey, number, name, description, ready_status AS readyStatus, exec_status AS execStatus, priority, due, attachments, cwd, use_worktree AS useWorktree, max_retries AS maxRetries, retry_count AS retryCount, session_id AS sessionId, dispatch_token AS dispatchToken, owner, heartbeat, created, updated";function j(a){return(0,e.Lf)().prepare(`SELECT ${i} FROM task_cards WHERE id = ?`).get(a)}function k(a){let b=j(a);return b?h(b):void 0}function l(a){return(0,e.Lf)().prepare(`SELECT ${i} FROM task_cards WHERE board_id = ? ORDER BY number`).all(a).map(h)}function m(a,b){let c=(0,e.Lf)(),d=j(a);if(!d)return null;let i=[],k=[],l=(a,b)=>{i.push(`${a} = ?`),k.push(b)};if(void 0!==b.name){let a=b.name.trim();if(!a)throw Error("name must not be empty");l("name",a)}if(void 0!==b.description&&l("description",b.description),void 0!==b.readyStatus){var m=b.readyStatus;if(void 0!==m&&!f.has(m))throw Error(`invalid readyStatus: ${String(m)}`);l("ready_status",b.readyStatus)}if(void 0!==b.execStatus){var n=b.execStatus;if(void 0!==n&&!g.has(n))throw Error(`invalid execStatus: ${String(n)}`);l("exec_status",b.execStatus)}return(void 0!==b.priority&&l("priority",b.priority),void 0!==b.due&&l("due",b.due),void 0!==b.attachments&&l("attachments",JSON.stringify(b.attachments)),void 0!==b.cwd&&l("cwd",b.cwd),void 0!==b.useWorktree&&l("use_worktree",+!!b.useWorktree),void 0!==b.maxRetries&&l("max_retries",b.maxRetries),void 0!==b.sessionId&&l("session_id",b.sessionId),void 0!==b.retryCount&&l("retry_count",b.retryCount),void 0!==b.owner&&l("owner",b.owner),void 0!==b.heartbeat&&l("heartbeat",b.heartbeat),0===i.length)?h(d):(l("updated",Date.now()),c.prepare(`UPDATE task_cards SET ${i.join(", ")} WHERE id = ?`).run(...k,a),h(j(a)))}function n(a){return(0,e.Lf)().prepare("SELECT id, card_id AS cardId, target_card_id AS targetCardId, kind, created FROM task_card_links WHERE card_id = ? ORDER BY created, rowid").all(a)}function o(a){for(let b of n(a.id)){if("prerequisite"!==b.kind)continue;let a=k(b.targetCardId);if(a&&"done"!==a.execStatus)return!1}return!0}function p(){return(0,e.Lf)().prepare(`SELECT ${i} FROM task_cards
2
2
  WHERE ready_status = 'todo' AND (exec_status = 'not_started' OR (exec_status = 'failed' AND retry_count < max_retries))
3
3
  AND dispatch_token IS NULL
4
4
  ORDER BY priority DESC, number`).all().map(h).filter(o)}function q(a,b){return Number((0,e.Lf)().prepare(`UPDATE task_cards SET dispatch_token = ?1, updated = ?2
@@ -1 +1 @@
1
- "use strict";exports.id=861,exports.ids=[861],exports.modules={20861:(a,b,c)=>{c.d(b,{c$:()=>j,np:()=>i,reconcileBoard:()=>h});var d=c(6288),e=c(68964),f=c(29742);function g(a,b=340,c=160){let d=a.filter(a=>a?.type==="session-card").map(a=>({x:a.position?.x??0,y:a.position?.y??0,w:a.style?.width??b,h:a.style?.height??c})),e=(a,e)=>d.some(d=>a<d.x+d.w+24&&a+b+24>d.x&&e<d.y+d.h+24&&e+c+24>d.y),f=60,h=0;for(;h<2e3;){for(let a=0;a<4;a+=1){let c=60+a*(b+24);if(!e(c,f))return{x:c,y:f}}f+=c+24,h+=1}return{x:60,y:60}}async function h(a){var b;let c,h=(0,d.getBoard)(a);if(!h?.taskId)return;let i=h.taskId,j=(0,e.gQ)(i),k=(0,f.gN)(a),l=new Set(j);for(let a of k)a.sessionId&&l.add(a.sessionId);await (b=a=>{let b=a.nodes,c=a.edges,d=Array.from(b.values()),e=new Map,h=new Set;for(let a of d){if(a?.type!=="session-card")continue;let b=a.data?.sessionId;if(b){if(function(a){let b=a?.data?.cwd;return!!(a&&"string"==typeof b&&b.length>0)}(a)){h.add(b);continue}e.set(b,a)}}let j=[];for(let[a,b]of e)l.has(a)||b.data?.taskId!==i&&j.push(b.id);for(let a of j)for(let d of(b.delete(a),Array.from(c.values())))(d.source===a||d.target===a)&&c.delete(d.id);{let a=Array.from(b.values());for(let c of l){if(e.has(c)||h.has(c))continue;let d=`session-${c}`,f=g(a);b.set(d,{id:d,type:"session-card",position:{x:f.x,y:f.y},style:{width:340,height:160},data:{sessionId:c,title:"",projectName:"",messageCount:0,lastReply:"",phase:"idle",runningMs:0,endedAt:0,lastActivityAt:0,stale:!1,expanded:!1,cwd:"",taskId:"",w:340,h:160,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}}),a.push(b.get(d))}}let m=new Map;for(let a of d)a?.type==="task-card"&&a.data?.cardId&&m.set(a.data.cardId,a);let n=new Set(k.map(a=>a.id)),o=[];for(let[a,b]of m)n.has(a)||o.push(b.id);for(let a of o)for(let d of(b.delete(a),Array.from(c.values())))(d.source===a||d.target===a)&&c.delete(d.id);{let a=Array.from(b.values());for(let c of k){if(m.has(c.id))continue;let d=`task-${c.id}`,e=g(a,380,240);b.set(d,{id:d,type:"task-card",position:{x:e.x,y:e.y},style:{width:380,height:240},data:{cardId:c.id,number:c.number,name:c.name,description:c.description,readyStatus:c.readyStatus,execStatus:c.execStatus,priority:c.priority,due:c.due??void 0,expanded:!1,w:380,h:240,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}}),a.push(b.get(d))}}let p=new Map;for(let a of Array.from(b.values()))a?.type==="task-card"&&a.data?.cardId&&p.set(a.data.cardId,a);let q=new Map;for(let a of Array.from(b.values()))a?.type==="session-card"&&a.data?.sessionId&&q.set(a.data.sessionId,a);let r=new Map;for(let a of Array.from(c.values())){if(!a.data?.execLink)continue;let b=a.source,c=r.get(b)??[];c.push({to:a.target,edgeId:a.id}),r.set(b,c)}for(let a of k){let b=p.get(a.id);if(!b)continue;let d=a.sessionId?q.get(a.sessionId):null,e=r.get(b.id)??[];for(let a of e)a.to!==(d?.id??null)&&c.delete(a.edgeId);if(!d||e.some(a=>a.to===d.id))continue;let f=`exec-${a.id}-${a.sessionId}`;c.set(f,{id:f,source:b.id,target:d.id,type:"default",data:{execLink:!0,cardId:a.id,sessionId:a.sessionId},markerEnd:{type:"arrowclosed"},style:{strokeWidth:1.5,stroke:"#3184f8",strokeDasharray:"6 4"}})}let s=new Map;for(let a of Array.from(c.values())){if(!a.data?.taskLink)continue;let b=a.source,c=a.target,d=a.data.taskLink;b&&c&&d&&s.set(`${b}->${c}:${d}`,a.id)}let t=new Set;for(let a of k){let b=p.get(a.id);if(b)for(let d of(0,f.QA)(a.id)){let a=p.get(d.targetCardId);if(!a)continue;let e=`${b.id}->${a.id}:${d.kind}`;if(t.add(e),!s.has(e)){let e=`link-${b.id}-${a.id}-${d.kind}`;c.set(e,{id:e,source:b.id,target:a.id,type:"default",data:{taskLink:d.kind},markerEnd:{type:"arrowclosed"},style:{strokeWidth:1.5,stroke:"#f59e0b"}})}}}for(let[a,b]of s)t.has(a)||c.delete(b)},!(c=globalThis.__yjsBoard)?Promise.resolve():c.mutateBoard(a,b))}async function i(a){if(0===a.length)return;let b=globalThis.__yjsBoard;if(!b)return;let c=new Set(a);for(let a of(0,d.PV)())try{await b.mutateBoard(a.id,a=>{let b=a.nodes,d=a.edges,e=[];for(let a of Array.from(b.values()))a?.type==="session-card"&&a.data?.sessionId&&c.has(String(a.data.sessionId))&&e.push(a.id);if(0!==e.length)for(let a of e)for(let c of(b.delete(a),Array.from(d.values())))(c.source===a||c.target===a)&&d.delete(c.id)})}catch(b){console.warn(`[board] 会话删除清理 yjs 板 ${a.id} 异常:`,b instanceof Error?b.message:b)}}async function j(a){let b=globalThis.__yjsBoard;b&&await b.destroyBoardDocument(a)}}};
1
+ "use strict";exports.id=861,exports.ids=[861],exports.modules={20861:(a,b,c)=>{c.d(b,{c$:()=>j,np:()=>i,reconcileBoard:()=>h});var d=c(6288),e=c(68964),f=c(29742);function g(a,b=340,c=160){let d=a.filter(a=>a?.type==="session-card").map(a=>({x:a.position?.x??0,y:a.position?.y??0,w:a.style?.width??b,h:a.style?.height??c})),e=(a,e)=>d.some(d=>a<d.x+d.w+24&&a+b+24>d.x&&e<d.y+d.h+24&&e+c+24>d.y),f=60,h=0;for(;h<2e3;){for(let a=0;a<4;a+=1){let c=60+a*(b+24);if(!e(c,f))return{x:c,y:f}}f+=c+24,h+=1}return{x:60,y:60}}async function h(a){var b;let c,h=(0,d.getBoard)(a);if(!h?.taskId)return;let i=h.taskId,j=(0,e.gQ)(i),k=(0,f.gN)(a),l=new Set(j);for(let a of k)a.sessionId&&l.add(a.sessionId);await (b=a=>{let b=a.nodes,c=a.edges,d=Array.from(b.values()),e=new Map,h=new Set;for(let a of d){if(a?.type!=="session-card")continue;let b=a.data?.sessionId;if(b){if(function(a){let b=a?.data?.cwd;return!!(a&&"string"==typeof b&&b.length>0)}(a)){h.add(b);continue}e.set(b,a)}}let j=[];for(let[a,b]of e)l.has(a)||b.data?.taskId!==i&&j.push(b.id);for(let a of j)for(let d of(b.delete(a),Array.from(c.values())))(d.source===a||d.target===a)&&c.delete(d.id);{let a=Array.from(b.values());for(let c of l){if(e.has(c)||h.has(c))continue;let d=`session-${c}`,f=g(a);b.set(d,{id:d,type:"session-card",position:{x:f.x,y:f.y},style:{width:340,height:160},data:{sessionId:c,title:"",projectName:"",messageCount:0,lastReply:"",phase:"idle",runningMs:0,endedAt:0,lastActivityAt:0,stale:!1,expanded:!1,cwd:"",taskId:"",w:340,h:160,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}}),a.push(b.get(d))}}let m=new Map;for(let a of d)a?.type==="task-card"&&a.data?.cardId&&m.set(a.data.cardId,a);let n=new Set(k.map(a=>a.id)),o=[];for(let[a,b]of m)n.has(a)||o.push(b.id);for(let a of o)for(let d of(b.delete(a),Array.from(c.values())))(d.source===a||d.target===a)&&c.delete(d.id);{let a=Array.from(b.values());for(let c of k){if(m.has(c.id))continue;let d=`task-${c.id}`,e=g(a,380,240);b.set(d,{id:d,type:"task-card",position:{x:e.x,y:e.y},style:{width:380,height:240},data:{cardId:c.id,number:c.number,name:c.name,description:c.description,readyStatus:c.readyStatus,priority:c.priority,due:c.due??void 0,expanded:!1,w:380,h:240,expandedW:0,expandedH:0,collapsedW:0,collapsedH:0}}),a.push(b.get(d))}}let p=new Map;for(let a of Array.from(b.values()))a?.type==="task-card"&&a.data?.cardId&&p.set(a.data.cardId,a);let q=new Map;for(let a of Array.from(b.values()))a?.type==="session-card"&&a.data?.sessionId&&q.set(a.data.sessionId,a);let r=new Map;for(let a of Array.from(c.values())){if(!a.data?.execLink)continue;let b=a.source,c=r.get(b)??[];c.push({to:a.target,edgeId:a.id}),r.set(b,c)}for(let a of k){let b=p.get(a.id);if(!b)continue;let d=a.sessionId?q.get(a.sessionId):null,e=r.get(b.id)??[];for(let a of e)a.to!==(d?.id??null)&&c.delete(a.edgeId);if(!d||e.some(a=>a.to===d.id))continue;let f=`exec-${a.id}-${a.sessionId}`;c.set(f,{id:f,source:b.id,target:d.id,type:"default",data:{execLink:!0,cardId:a.id,sessionId:a.sessionId},markerEnd:{type:"arrowclosed"},style:{strokeWidth:1.5,stroke:"#3184f8",strokeDasharray:"6 4"}})}let s=new Map;for(let a of Array.from(c.values())){if(!a.data?.taskLink)continue;let b=a.source,c=a.target,d=a.data.taskLink;b&&c&&d&&s.set(`${b}->${c}:${d}`,a.id)}let t=new Set;for(let a of k){let b=p.get(a.id);if(b)for(let d of(0,f.QA)(a.id)){let a=p.get(d.targetCardId);if(!a)continue;let e=`${b.id}->${a.id}:${d.kind}`;if(t.add(e),!s.has(e)){let e=`link-${b.id}-${a.id}-${d.kind}`;c.set(e,{id:e,source:b.id,target:a.id,type:"default",data:{taskLink:d.kind},markerEnd:{type:"arrowclosed"},style:{strokeWidth:1.5,stroke:"#f59e0b"}})}}}for(let[a,b]of s)t.has(a)||c.delete(b)},!(c=globalThis.__yjsBoard)?Promise.resolve():c.mutateBoard(a,b))}async function i(a){if(0===a.length)return;let b=globalThis.__yjsBoard;if(!b)return;let c=new Set(a);for(let a of(0,d.PV)())try{await b.mutateBoard(a.id,a=>{let b=a.nodes,d=a.edges,e=[];for(let a of Array.from(b.values()))a?.type==="session-card"&&a.data?.sessionId&&c.has(String(a.data.sessionId))&&e.push(a.id);if(0!==e.length)for(let a of e)for(let c of(b.delete(a),Array.from(d.values())))(c.source===a||c.target===a)&&d.delete(c.id)})}catch(b){console.warn(`[board] 会话删除清理 yjs 板 ${a.id} 异常:`,b instanceof Error?b.message:b)}}async function j(a){let b=globalThis.__yjsBoard;b&&await b.destroyBoardDocument(a)}}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/12RFLqhiUZG8Sj49T1KKQ/_buildManifest.js","static/12RFLqhiUZG8Sj49T1KKQ/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-d17b4dde91b96c63.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-d29203733ca4633c.js","static/chunks/main-app-b3e8a8d15d83e1f0.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/8V884w_cp5HEp_rRpjnCR/_buildManifest.js","static/8V884w_cp5HEp_rRpjnCR/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-b4924d2a22ad3650.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-d29203733ca4633c.js","static/chunks/main-app-b3e8a8d15d83e1f0.js"],rootMainFilesTree:{},pages:{"/_app":[]}};