quadwork 2.2.0 → 2.2.1

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 (71) hide show
  1. package/out/404.html +1 -1
  2. package/out/__next.__PAGE__.txt +3 -3
  3. package/out/__next._full.txt +14 -14
  4. package/out/__next._head.txt +4 -4
  5. package/out/__next._index.txt +8 -8
  6. package/out/__next._tree.txt +2 -2
  7. package/out/_next/static/chunks/{0dbfrdfwj565f.css → 0g0w0q.z1ujl0.css} +1 -1
  8. package/out/_next/static/chunks/{0y_59cdk3r4z6.js → 1405wfv.5lt26.js} +1 -1
  9. package/out/_not-found/__next._full.txt +13 -13
  10. package/out/_not-found/__next._head.txt +4 -4
  11. package/out/_not-found/__next._index.txt +8 -8
  12. package/out/_not-found/__next._not-found.__PAGE__.txt +2 -2
  13. package/out/_not-found/__next._not-found.txt +3 -3
  14. package/out/_not-found/__next._tree.txt +2 -2
  15. package/out/_not-found.html +1 -1
  16. package/out/_not-found.txt +13 -13
  17. package/out/app-shell/__next._full.txt +13 -13
  18. package/out/app-shell/__next._head.txt +4 -4
  19. package/out/app-shell/__next._index.txt +8 -8
  20. package/out/app-shell/__next._tree.txt +2 -2
  21. package/out/app-shell/__next.app-shell.__PAGE__.txt +2 -2
  22. package/out/app-shell/__next.app-shell.txt +3 -3
  23. package/out/app-shell.html +1 -1
  24. package/out/app-shell.txt +13 -13
  25. package/out/index.html +1 -1
  26. package/out/index.txt +14 -14
  27. package/out/project/_/__next._full.txt +14 -14
  28. package/out/project/_/__next._head.txt +4 -4
  29. package/out/project/_/__next._index.txt +8 -8
  30. package/out/project/_/__next._tree.txt +2 -2
  31. package/out/project/_/__next.project.$d$id.__PAGE__.txt +3 -3
  32. package/out/project/_/__next.project.$d$id.txt +3 -3
  33. package/out/project/_/__next.project.txt +3 -3
  34. package/out/project/_/queue/__next._full.txt +14 -14
  35. package/out/project/_/queue/__next._head.txt +4 -4
  36. package/out/project/_/queue/__next._index.txt +8 -8
  37. package/out/project/_/queue/__next._tree.txt +2 -2
  38. package/out/project/_/queue/__next.project.$d$id.queue.__PAGE__.txt +3 -3
  39. package/out/project/_/queue/__next.project.$d$id.queue.txt +3 -3
  40. package/out/project/_/queue/__next.project.$d$id.txt +3 -3
  41. package/out/project/_/queue/__next.project.txt +3 -3
  42. package/out/project/_/queue.html +1 -1
  43. package/out/project/_/queue.txt +14 -14
  44. package/out/project/_.html +1 -1
  45. package/out/project/_.txt +14 -14
  46. package/out/settings/__next._full.txt +14 -14
  47. package/out/settings/__next._head.txt +4 -4
  48. package/out/settings/__next._index.txt +8 -8
  49. package/out/settings/__next._tree.txt +2 -2
  50. package/out/settings/__next.settings.__PAGE__.txt +3 -3
  51. package/out/settings/__next.settings.txt +3 -3
  52. package/out/settings.html +1 -1
  53. package/out/settings.txt +14 -14
  54. package/out/setup/__next._full.txt +14 -14
  55. package/out/setup/__next._head.txt +4 -4
  56. package/out/setup/__next._index.txt +8 -8
  57. package/out/setup/__next._tree.txt +2 -2
  58. package/out/setup/__next.setup.__PAGE__.txt +3 -3
  59. package/out/setup/__next.setup.txt +3 -3
  60. package/out/setup.html +1 -1
  61. package/out/setup.txt +14 -14
  62. package/package.json +1 -1
  63. package/server/index.js +22 -6
  64. package/server/routes.js +52 -10
  65. package/templates/seeds/dev.AGENTS.md +14 -0
  66. package/templates/seeds/head.AGENTS.md +14 -0
  67. package/templates/seeds/re1.AGENTS.md +14 -0
  68. package/templates/seeds/re2.AGENTS.md +14 -0
  69. /package/out/_next/static/{h8gr2UEtEQkyXBVa2J0z9 → eQFYDbR6C-ZREUVgx0QFH}/_buildManifest.js +0 -0
  70. /package/out/_next/static/{h8gr2UEtEQkyXBVa2J0z9 → eQFYDbR6C-ZREUVgx0QFH}/_clientMiddlewareManifest.js +0 -0
  71. /package/out/_next/static/{h8gr2UEtEQkyXBVa2J0z9 → eQFYDbR6C-ZREUVgx0QFH}/_ssgManifest.js +0 -0
@@ -1,22 +1,22 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[52368,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"LocaleProvider"]
3
- 3:I[43688,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
4
- 4:I[26704,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
5
- 5:I[22140,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
6
- 6:I[39756,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
7
- 7:I[37457,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
8
- 8:I[94810,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0py7102i226n5.js"],"default"]
9
- 9:I[97367,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"]
2
+ 2:I[52368,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"LocaleProvider"]
3
+ 3:I[43688,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
4
+ 4:I[26704,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
5
+ 5:I[22140,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
6
+ 6:I[39756,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
7
+ 7:I[37457,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
8
+ 8:I[94810,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0py7102i226n5.js"],"default"]
9
+ 9:I[97367,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"]
10
10
  a:"$Sreact.suspense"
11
- d:I[97367,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"]
12
- f:I[97367,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"]
13
- 11:I[68027,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1]
14
- :HL["/_next/static/chunks/0dbfrdfwj565f.css","style"]
11
+ d:I[97367,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"]
12
+ f:I[97367,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"]
13
+ 11:I[68027,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1]
14
+ :HL["/_next/static/chunks/0g0w0q.z1ujl0.css","style"]
15
15
  :HL["/_next/static/media/797e433ab948586e-s.p.09zddjkbdep5a.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
- 0:{"P":null,"c":["","setup"],"q":"","i":false,"f":[[["",{"children":["setup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0dbfrdfwj565f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/0y_59cdk3r4z6.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"geist_mono_8d43a2aa-module__8Li5zG__variable h-full","children":["$","body",null,{"className":"h-full flex flex-col","children":["$","$L2",null,{"children":[["$","$L3",null,{}],["$","$L4",null,{}],["$","div",null,{"className":"flex flex-1 min-h-0","children":[["$","$L5",null,{}],["$","main",null,{"className":"flex-1 min-w-0 overflow-auto","children":["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L8",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/0py7102i226n5.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,"$@c"]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$L10"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$11",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0dbfrdfwj565f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"h8gr2UEtEQkyXBVa2J0z9"}
16
+ 0:{"P":null,"c":["","setup"],"q":"","i":false,"f":[[["",{"children":["setup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0g0w0q.z1ujl0.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/1405wfv.5lt26.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"geist_mono_8d43a2aa-module__8Li5zG__variable h-full","children":["$","body",null,{"className":"h-full flex flex-col","children":["$","$L2",null,{"children":[["$","$L3",null,{}],["$","$L4",null,{}],["$","div",null,{"className":"flex flex-1 min-h-0","children":[["$","$L5",null,{}],["$","main",null,{"className":"flex-1 min-w-0 overflow-auto","children":["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L8",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/0py7102i226n5.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,"$@c"]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$L10"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$11",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0g0w0q.z1ujl0.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"eQFYDbR6C-ZREUVgx0QFH"}
17
17
  12:[]
18
18
  c:"$W12"
19
19
  e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
20
- 13:I[27201,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"]
20
+ 13:I[27201,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"]
21
21
  b:null
22
22
  10:[["$","title","0",{"children":"QuadWork"}],["$","meta","1",{"name":"description","content":"Unified dashboard for multi-agent coding teams"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.05o2q2p4kvnq_.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L13","3",{}]]
@@ -1,6 +1,6 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[97367,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"]
3
- 3:I[97367,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"]
2
+ 2:I[97367,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"]
3
+ 3:I[97367,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"]
4
4
  4:"$Sreact.suspense"
5
- 5:I[27201,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"]
6
- 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"QuadWork"}],["$","meta","1",{"name":"description","content":"Unified dashboard for multi-agent coding teams"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.05o2q2p4kvnq_.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L5","3",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"h8gr2UEtEQkyXBVa2J0z9"}
5
+ 5:I[27201,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"]
6
+ 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"QuadWork"}],["$","meta","1",{"name":"description","content":"Unified dashboard for multi-agent coding teams"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.05o2q2p4kvnq_.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L5","3",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"eQFYDbR6C-ZREUVgx0QFH"}
@@ -1,9 +1,9 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[52368,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"LocaleProvider"]
3
- 3:I[43688,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
4
- 4:I[26704,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
5
- 5:I[22140,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
6
- 6:I[39756,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
7
- 7:I[37457,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
8
- :HL["/_next/static/chunks/0dbfrdfwj565f.css","style"]
9
- 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0dbfrdfwj565f.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/0y_59cdk3r4z6.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en","className":"geist_mono_8d43a2aa-module__8Li5zG__variable h-full","children":["$","body",null,{"className":"h-full flex flex-col","children":["$","$L2",null,{"children":[["$","$L3",null,{}],["$","$L4",null,{}],["$","div",null,{"className":"flex flex-1 min-h-0","children":[["$","$L5",null,{}],["$","main",null,{"className":"flex-1 min-w-0 overflow-auto","children":["$","$L6",null,{"parallelRouterKey":"children","template":["$","$L7",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]]}]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"h8gr2UEtEQkyXBVa2J0z9"}
2
+ 2:I[52368,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"LocaleProvider"]
3
+ 3:I[43688,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
4
+ 4:I[26704,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
5
+ 5:I[22140,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
6
+ 6:I[39756,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
7
+ 7:I[37457,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
8
+ :HL["/_next/static/chunks/0g0w0q.z1ujl0.css","style"]
9
+ 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0g0w0q.z1ujl0.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/1405wfv.5lt26.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en","className":"geist_mono_8d43a2aa-module__8Li5zG__variable h-full","children":["$","body",null,{"className":"h-full flex flex-col","children":["$","$L2",null,{"children":[["$","$L3",null,{}],["$","$L4",null,{}],["$","div",null,{"className":"flex flex-1 min-h-0","children":[["$","$L5",null,{}],["$","main",null,{"className":"flex-1 min-w-0 overflow-auto","children":["$","$L6",null,{"parallelRouterKey":"children","template":["$","$L7",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]]}]]}]}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"eQFYDbR6C-ZREUVgx0QFH"}
@@ -1,3 +1,3 @@
1
- :HL["/_next/static/chunks/0dbfrdfwj565f.css","style"]
1
+ :HL["/_next/static/chunks/0g0w0q.z1ujl0.css","style"]
2
2
  :HL["/_next/static/media/797e433ab948586e-s.p.09zddjkbdep5a.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
3
- 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"setup","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"h8gr2UEtEQkyXBVa2J0z9"}
3
+ 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"setup","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"eQFYDbR6C-ZREUVgx0QFH"}
@@ -1,6 +1,6 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[94810,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0py7102i226n5.js"],"default"]
3
- 3:I[97367,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"]
2
+ 2:I[94810,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0py7102i226n5.js"],"default"]
3
+ 3:I[97367,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"]
4
4
  4:"$Sreact.suspense"
5
- 0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/0py7102i226n5.js","async":true}]],["$","$L3",null,{"children":["$","$4",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"h8gr2UEtEQkyXBVa2J0z9"}
5
+ 0:{"rsc":["$","$1","c",{"children":[["$","$L2",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/0py7102i226n5.js","async":true}]],["$","$L3",null,{"children":["$","$4",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"eQFYDbR6C-ZREUVgx0QFH"}
6
6
  5:null
@@ -1,5 +1,5 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[39756,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
3
- 3:I[37457,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
2
+ 2:I[39756,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
3
+ 3:I[37457,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
4
4
  4:[]
5
- 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"h8gr2UEtEQkyXBVa2J0z9"}
5
+ 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"eQFYDbR6C-ZREUVgx0QFH"}
package/out/setup.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="geist_mono_8d43a2aa-module__8Li5zG__variable h-full"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/797e433ab948586e-s.p.09zddjkbdep5a.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/chunks/0dbfrdfwj565f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0ze4gu236oq96.js"/><script src="/_next/static/chunks/0.bbxho1vnxin.js" async=""></script><script src="/_next/static/chunks/07lhk_q6pmm3r.js" async=""></script><script src="/_next/static/chunks/0oxv9vrvc17to.js" async=""></script><script src="/_next/static/chunks/0pqt~8bl3ukh4.js" async=""></script><script src="/_next/static/chunks/turbopack-0y2u-q0l2m67w.js" async=""></script><script src="/_next/static/chunks/0y_59cdk3r4z6.js" async=""></script><script src="/_next/static/chunks/0d3shmwh5_nmn.js" async=""></script><script src="/_next/static/chunks/0py7102i226n5.js" async=""></script><meta name="next-size-adjust" content=""/><title>QuadWork</title><meta name="description" content="Unified dashboard for multi-agent coding teams"/><link rel="icon" href="/favicon.ico?favicon.05o2q2p4kvnq_.ico" sizes="256x256" type="image/x-icon"/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="h-full flex flex-col"><div hidden=""><!--$--><!--/$--></div><header class="sticky top-0 z-40 flex h-12 items-center justify-between border-b border-white/10 bg-neutral-950/90 px-4 backdrop-blur" aria-hidden="true"></header><div class="flex flex-1 min-h-0"><button type="button" class="fixed top-14 left-2 z-30 lg:hidden w-10 h-10 flex items-center justify-center bg-bg-surface border border-border text-text-muted hover:text-accent"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M3 5h14M3 10h14M3 15h14"></path></svg></button><aside class="fixed inset-y-0 left-0 z-50 w-52 bg-bg-surface border-r border-border flex flex-col py-3 px-2 items-stretch overflow-y-auto transition-transform duration-200 ease-in-out lg:hidden -translate-x-full"><button type="button" class="self-end shrink-0 w-10 h-10 flex items-center justify-center text-text-muted hover:text-accent mb-1"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M5 5l10 10M15 5L5 15"></path></svg></button><a class="flex items-center gap-2 rounded-sm transition-colors px-2 py-2 text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Home" href="/"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 10L10 3l7 7"></path><path d="M5 8.5V16h3.5v-4h3v4H15V8.5"></path></svg><span class="text-xs">Home</span></a><div class="h-px bg-border my-2 "></div><div class="flex-1 flex flex-col gap-2 overflow-y-auto min-h-0 "><a class="flex items-center gap-2 rounded-full transition-colors px-2 py-2 border border-dashed border-border text-text-muted hover:text-text hover:bg-[#1a1a1a] rounded-sm" title="Add project" href="/setup"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M8 3v10M3 8h10"></path></svg><span class="text-xs text-text-muted">New Project</span></a></div><div class="h-px bg-border my-2 "></div><a class="flex items-center gap-2 rounded-sm transition-colors px-2 py-2 text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Settings" href="/settings"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="2.5"></circle><path d="M7.5 1.5h3l.4 2.1a5.5 5.5 0 011.3.7l2-.8 1.5 2.6-1.6 1.3a5.5 5.5 0 010 1.5l1.6 1.3-1.5 2.6-2-.8a5.5 5.5 0 01-1.3.7l-.4 2.1h-3l-.4-2.1a5.5 5.5 0 01-1.3-.7l-2 .8-1.5-2.6 1.6-1.3a5.5 5.5 0 010-1.5L2.3 6.1l1.5-2.6 2 .8a5.5 5.5 0 011.3-.7z"></path></svg><span class="text-xs">Settings</span></a></aside><aside class="hidden lg:flex shrink-0 h-full border-r border-border bg-bg-surface flex-col py-3 transition-[width] duration-200 ease-in-out overflow-hidden w-16 items-center"><a class="flex items-center gap-2 rounded-sm transition-colors w-10 h-10 justify-center self-center text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Home" href="/"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 10L10 3l7 7"></path><path d="M5 8.5V16h3.5v-4h3v4H15V8.5"></path></svg></a><div class="h-px bg-border my-2 w-6 self-center"></div><div class="flex-1 flex flex-col gap-2 overflow-y-auto min-h-0 items-center"><a class="flex items-center gap-2 rounded-full transition-colors w-10 h-10 justify-center border border-dashed border-border text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Add project" href="/setup"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M8 3v10M3 8h10"></path></svg></a></div><div class="h-px bg-border my-2 w-6 self-center"></div><a class="flex items-center gap-2 rounded-sm transition-colors w-10 h-10 justify-center self-center text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Settings" href="/settings"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="2.5"></circle><path d="M7.5 1.5h3l.4 2.1a5.5 5.5 0 011.3.7l2-.8 1.5 2.6-1.6 1.3a5.5 5.5 0 010 1.5l1.6 1.3-1.5 2.6-2-.8a5.5 5.5 0 01-1.3.7l-.4 2.1h-3l-.4-2.1a5.5 5.5 0 01-1.3-.7l-2 .8-1.5-2.6 1.6-1.3a5.5 5.5 0 010-1.5L2.3 6.1l1.5-2.6 2 .8a5.5 5.5 0 011.3-.7z"></path></svg></a><div class="h-1"></div><button class="flex shrink-0 items-center justify-center w-10 h-10 rounded-sm border border-border text-text-muted hover:text-accent hover:border-accent/50 transition-colors self-center" title="Expand sidebar"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 3l5 5-5 5"></path></svg></button></aside><main class="flex-1 min-w-0 overflow-auto"><div class="h-full overflow-y-auto"></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/0ze4gu236oq96.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[52368,[\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"LocaleProvider\"]\n3:I[43688,[\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n4:I[26704,[\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n5:I[22140,[\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n6:I[39756,[\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n7:I[37457,[\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n8:I[94810,[\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0py7102i226n5.js\"],\"default\"]\n9:I[97367,[\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"OutletBoundary\"]\na:\"$Sreact.suspense\"\nd:I[97367,[\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"ViewportBoundary\"]\nf:I[97367,[\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"MetadataBoundary\"]\n11:I[68027,[\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0dbfrdfwj565f.css\",\"style\"]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.09zddjkbdep5a.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"setup\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"setup\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0dbfrdfwj565f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"geist_mono_8d43a2aa-module__8Li5zG__variable h-full\",\"children\":[\"$\",\"body\",null,{\"className\":\"h-full flex flex-col\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{}],[\"$\",\"div\",null,{\"className\":\"flex flex-1 min-h-0\",\"children\":[[\"$\",\"$L5\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 min-w-0 overflow-auto\",\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L8\",null,{}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0py7102i226n5.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@b\"}]}]]}],{},null,false,null]},null,false,\"$@c\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L10\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0dbfrdfwj565f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"h8gr2UEtEQkyXBVa2J0z9\"}\n"])</script><script>self.__next_f.push([1,"12:[]\nc:\"$W12\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"13:I[27201,[\"/_next/static/chunks/0y_59cdk3r4z6.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"IconMark\"]\nb:null\n10:[[\"$\",\"title\",\"0\",{\"children\":\"QuadWork\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Unified dashboard for multi-agent coding teams\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.05o2q2p4kvnq_.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L13\",\"3\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="geist_mono_8d43a2aa-module__8Li5zG__variable h-full"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/797e433ab948586e-s.p.09zddjkbdep5a.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/chunks/0g0w0q.z1ujl0.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/0ze4gu236oq96.js"/><script src="/_next/static/chunks/0.bbxho1vnxin.js" async=""></script><script src="/_next/static/chunks/07lhk_q6pmm3r.js" async=""></script><script src="/_next/static/chunks/0oxv9vrvc17to.js" async=""></script><script src="/_next/static/chunks/0pqt~8bl3ukh4.js" async=""></script><script src="/_next/static/chunks/turbopack-0y2u-q0l2m67w.js" async=""></script><script src="/_next/static/chunks/1405wfv.5lt26.js" async=""></script><script src="/_next/static/chunks/0d3shmwh5_nmn.js" async=""></script><script src="/_next/static/chunks/0py7102i226n5.js" async=""></script><meta name="next-size-adjust" content=""/><title>QuadWork</title><meta name="description" content="Unified dashboard for multi-agent coding teams"/><link rel="icon" href="/favicon.ico?favicon.05o2q2p4kvnq_.ico" sizes="256x256" type="image/x-icon"/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body class="h-full flex flex-col"><div hidden=""><!--$--><!--/$--></div><header class="sticky top-0 z-40 flex h-12 items-center justify-between border-b border-white/10 bg-neutral-950/90 px-4 backdrop-blur" aria-hidden="true"></header><div class="flex flex-1 min-h-0"><button type="button" class="fixed top-14 left-2 z-30 lg:hidden w-10 h-10 flex items-center justify-center bg-bg-surface border border-border text-text-muted hover:text-accent"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M3 5h14M3 10h14M3 15h14"></path></svg></button><aside class="fixed inset-y-0 left-0 z-50 w-52 bg-bg-surface border-r border-border flex flex-col py-3 px-2 items-stretch overflow-y-auto transition-transform duration-200 ease-in-out lg:hidden -translate-x-full"><button type="button" class="self-end shrink-0 w-10 h-10 flex items-center justify-center text-text-muted hover:text-accent mb-1"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M5 5l10 10M15 5L5 15"></path></svg></button><a class="flex items-center gap-2 rounded-sm transition-colors px-2 py-2 text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Home" href="/"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 10L10 3l7 7"></path><path d="M5 8.5V16h3.5v-4h3v4H15V8.5"></path></svg><span class="text-xs">Home</span></a><div class="h-px bg-border my-2 "></div><div class="flex-1 flex flex-col gap-2 overflow-y-auto min-h-0 "><a class="flex items-center gap-2 rounded-full transition-colors px-2 py-2 border border-dashed border-border text-text-muted hover:text-text hover:bg-[#1a1a1a] rounded-sm" title="Add project" href="/setup"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M8 3v10M3 8h10"></path></svg><span class="text-xs text-text-muted">New Project</span></a></div><div class="h-px bg-border my-2 "></div><a class="flex items-center gap-2 rounded-sm transition-colors px-2 py-2 text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Settings" href="/settings"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="2.5"></circle><path d="M7.5 1.5h3l.4 2.1a5.5 5.5 0 011.3.7l2-.8 1.5 2.6-1.6 1.3a5.5 5.5 0 010 1.5l1.6 1.3-1.5 2.6-2-.8a5.5 5.5 0 01-1.3.7l-.4 2.1h-3l-.4-2.1a5.5 5.5 0 01-1.3-.7l-2 .8-1.5-2.6 1.6-1.3a5.5 5.5 0 010-1.5L2.3 6.1l1.5-2.6 2 .8a5.5 5.5 0 011.3-.7z"></path></svg><span class="text-xs">Settings</span></a></aside><aside class="hidden lg:flex shrink-0 h-full border-r border-border bg-bg-surface flex-col py-3 transition-[width] duration-200 ease-in-out overflow-hidden w-16 items-center"><a class="flex items-center gap-2 rounded-sm transition-colors w-10 h-10 justify-center self-center text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Home" href="/"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 10L10 3l7 7"></path><path d="M5 8.5V16h3.5v-4h3v4H15V8.5"></path></svg></a><div class="h-px bg-border my-2 w-6 self-center"></div><div class="flex-1 flex flex-col gap-2 overflow-y-auto min-h-0 w-full items-center [scrollbar-width:none] [&amp;::-webkit-scrollbar]:hidden"><a class="flex items-center gap-2 rounded-full transition-colors w-10 h-10 justify-center border border-dashed border-border text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Add project" href="/setup"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M8 3v10M3 8h10"></path></svg></a></div><div class="h-px bg-border my-2 w-6 self-center"></div><a class="flex items-center gap-2 rounded-sm transition-colors w-10 h-10 justify-center self-center text-text-muted hover:text-text hover:bg-[#1a1a1a]" title="Settings" href="/settings"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="2.5"></circle><path d="M7.5 1.5h3l.4 2.1a5.5 5.5 0 011.3.7l2-.8 1.5 2.6-1.6 1.3a5.5 5.5 0 010 1.5l1.6 1.3-1.5 2.6-2-.8a5.5 5.5 0 01-1.3.7l-.4 2.1h-3l-.4-2.1a5.5 5.5 0 01-1.3-.7l-2 .8-1.5-2.6 1.6-1.3a5.5 5.5 0 010-1.5L2.3 6.1l1.5-2.6 2 .8a5.5 5.5 0 011.3-.7z"></path></svg></a><div class="h-1"></div><button class="flex shrink-0 items-center justify-center w-10 h-10 rounded-sm border border-border text-text-muted hover:text-accent hover:border-accent/50 transition-colors self-center" title="Expand sidebar"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6 3l5 5-5 5"></path></svg></button></aside><main class="flex-1 min-w-0 overflow-auto"><div class="h-full overflow-y-auto"></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/0ze4gu236oq96.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[52368,[\"/_next/static/chunks/1405wfv.5lt26.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"LocaleProvider\"]\n3:I[43688,[\"/_next/static/chunks/1405wfv.5lt26.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n4:I[26704,[\"/_next/static/chunks/1405wfv.5lt26.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n5:I[22140,[\"/_next/static/chunks/1405wfv.5lt26.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n6:I[39756,[\"/_next/static/chunks/1405wfv.5lt26.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n7:I[37457,[\"/_next/static/chunks/1405wfv.5lt26.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n8:I[94810,[\"/_next/static/chunks/1405wfv.5lt26.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/0py7102i226n5.js\"],\"default\"]\n9:I[97367,[\"/_next/static/chunks/1405wfv.5lt26.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"OutletBoundary\"]\na:\"$Sreact.suspense\"\nd:I[97367,[\"/_next/static/chunks/1405wfv.5lt26.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"ViewportBoundary\"]\nf:I[97367,[\"/_next/static/chunks/1405wfv.5lt26.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"MetadataBoundary\"]\n11:I[68027,[\"/_next/static/chunks/1405wfv.5lt26.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0g0w0q.z1ujl0.css\",\"style\"]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.09zddjkbdep5a.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"setup\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"setup\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0g0w0q.z1ujl0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1405wfv.5lt26.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"geist_mono_8d43a2aa-module__8Li5zG__variable h-full\",\"children\":[\"$\",\"body\",null,{\"className\":\"h-full flex flex-col\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{}],[\"$\",\"div\",null,{\"className\":\"flex flex-1 min-h-0\",\"children\":[[\"$\",\"$L5\",null,{}],[\"$\",\"main\",null,{\"className\":\"flex-1 min-w-0 overflow-auto\",\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L8\",null,{}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0py7102i226n5.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@b\"}]}]]}],{},null,false,null]},null,false,\"$@c\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L10\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0g0w0q.z1ujl0.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"eQFYDbR6C-ZREUVgx0QFH\"}\n"])</script><script>self.__next_f.push([1,"12:[]\nc:\"$W12\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"13:I[27201,[\"/_next/static/chunks/1405wfv.5lt26.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"IconMark\"]\nb:null\n10:[[\"$\",\"title\",\"0\",{\"children\":\"QuadWork\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Unified dashboard for multi-agent coding teams\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.05o2q2p4kvnq_.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L13\",\"3\",{}]]\n"])</script></body></html>
package/out/setup.txt CHANGED
@@ -1,22 +1,22 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[52368,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"LocaleProvider"]
3
- 3:I[43688,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
4
- 4:I[26704,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
5
- 5:I[22140,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
6
- 6:I[39756,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
7
- 7:I[37457,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
8
- 8:I[94810,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0py7102i226n5.js"],"default"]
9
- 9:I[97367,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"]
2
+ 2:I[52368,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"LocaleProvider"]
3
+ 3:I[43688,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
4
+ 4:I[26704,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
5
+ 5:I[22140,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
6
+ 6:I[39756,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
7
+ 7:I[37457,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"]
8
+ 8:I[94810,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0py7102i226n5.js"],"default"]
9
+ 9:I[97367,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"]
10
10
  a:"$Sreact.suspense"
11
- d:I[97367,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"]
12
- f:I[97367,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"]
13
- 11:I[68027,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1]
14
- :HL["/_next/static/chunks/0dbfrdfwj565f.css","style"]
11
+ d:I[97367,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"]
12
+ f:I[97367,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"]
13
+ 11:I[68027,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1]
14
+ :HL["/_next/static/chunks/0g0w0q.z1ujl0.css","style"]
15
15
  :HL["/_next/static/media/797e433ab948586e-s.p.09zddjkbdep5a.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
- 0:{"P":null,"c":["","setup"],"q":"","i":false,"f":[[["",{"children":["setup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0dbfrdfwj565f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/0y_59cdk3r4z6.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"geist_mono_8d43a2aa-module__8Li5zG__variable h-full","children":["$","body",null,{"className":"h-full flex flex-col","children":["$","$L2",null,{"children":[["$","$L3",null,{}],["$","$L4",null,{}],["$","div",null,{"className":"flex flex-1 min-h-0","children":[["$","$L5",null,{}],["$","main",null,{"className":"flex-1 min-w-0 overflow-auto","children":["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L8",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/0py7102i226n5.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,"$@c"]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$L10"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$11",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0dbfrdfwj565f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"h8gr2UEtEQkyXBVa2J0z9"}
16
+ 0:{"P":null,"c":["","setup"],"q":"","i":false,"f":[[["",{"children":["setup",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0g0w0q.z1ujl0.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/1405wfv.5lt26.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"geist_mono_8d43a2aa-module__8Li5zG__variable h-full","children":["$","body",null,{"className":"h-full flex flex-col","children":["$","$L2",null,{"children":[["$","$L3",null,{}],["$","$L4",null,{}],["$","div",null,{"className":"flex flex-1 min-h-0","children":[["$","$L5",null,{}],["$","main",null,{"className":"flex-1 min-w-0 overflow-auto","children":["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L8",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/0py7102i226n5.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,"$@c"]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$L10"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$11",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0g0w0q.z1ujl0.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"eQFYDbR6C-ZREUVgx0QFH"}
17
17
  12:[]
18
18
  c:"$W12"
19
19
  e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
20
- 13:I[27201,["/_next/static/chunks/0y_59cdk3r4z6.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"]
20
+ 13:I[27201,["/_next/static/chunks/1405wfv.5lt26.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"]
21
21
  b:null
22
22
  10:[["$","title","0",{"children":"QuadWork"}],["$","meta","1",{"name":"description","content":"Unified dashboard for multi-agent coding teams"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?favicon.05o2q2p4kvnq_.ico","sizes":"256x256","type":"image/x-icon"}],["$","$L13","3",{}]]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quadwork",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "description": "Unified dashboard for multi-agent coding teams — 4 AI agents, one terminal",
5
5
  "bin": {
6
6
  "quadwork": "./bin/quadwork.js"
package/server/index.js CHANGED
@@ -1128,8 +1128,14 @@ async function sendTriggerMessage(projectId) {
1128
1128
  const bp = await bpRes.json();
1129
1129
  // #810: gate auto-stop on completeConfirmed (two distinct successful
1130
1130
  // fetch cycles), NOT a single transient/stale `complete`.
1131
- if (bp && bp.completeConfirmed) {
1132
- console.log(`[auto-trigger] ${projectId}: batch complete (confirmed), auto-stopped`);
1131
+ // #864: also auto-stop on an explicit operator clear (`liveActiveBatchCleared`).
1132
+ // The preserved snapshot may keep `items` non-empty / `complete` mixed, so
1133
+ // `completeConfirmed` alone won't fire when items don't all resolve as
1134
+ // merged/closed (e.g. a duplicate unmerged PR). The cleared flag is the
1135
+ // operator's intent and overrides those signals for lifecycle purposes.
1136
+ const clearedByOperator = !!(bp && bp.liveActiveBatchCleared);
1137
+ if (bp && (bp.completeConfirmed || clearedByOperator)) {
1138
+ console.log(`[auto-trigger] ${projectId}: batch ${clearedByOperator ? "cleared by operator" : "complete (confirmed)"}, auto-stopped`);
1133
1139
  stopTrigger(projectId);
1134
1140
  // Also stop caffeinate if no other triggers remain running
1135
1141
  // (#441 companion fix). caffeinateProcess is global (not
@@ -1724,13 +1730,21 @@ async function autoStopPollingTick() {
1724
1730
  // #810: gate auto-stop on completeConfirmed (two distinct successful fetch
1725
1731
  // cycles), not a single transient/stale `complete`. Track prev on the
1726
1732
  // confirmed value so the bridge-stop transition guard fires on it.
1733
+ // #864: an explicit operator clear (`liveActiveBatchCleared`) ALSO triggers
1734
+ // the stop path, so trigger + bridges shut down when Head sets the Active
1735
+ // Batch section to empty even if the preserved snapshot's items don't all
1736
+ // resolve as merged/closed (e.g. a duplicate unmerged PR keeps the items
1737
+ // in `in_review`). The cleared flag is the operator's intent.
1727
1738
  const confirmed = !!bp.completeConfirmed;
1739
+ const clearedByOperator = !!bp.liveActiveBatchCleared;
1740
+ const shouldStop = confirmed || clearedByOperator;
1728
1741
  const prev = _bridgeBatchPrev.get(project.id);
1729
- _bridgeBatchPrev.set(project.id, { complete: confirmed, hasItems });
1742
+ _bridgeBatchPrev.set(project.id, { complete: shouldStop, hasItems });
1730
1743
 
1731
- if (bp && confirmed) {
1744
+ if (bp && shouldStop) {
1732
1745
  if (hasTriggerAuto) {
1733
- console.log(`[auto-trigger] ${project.id}: batch complete (confirmed), auto-stopped (poller)`);
1746
+ const reason = clearedByOperator ? "cleared by operator" : "complete (confirmed)";
1747
+ console.log(`[auto-trigger] ${project.id}: batch ${reason}, auto-stopped (poller)`);
1734
1748
  stopTrigger(project.id);
1735
1749
  if (caffeinateProcess.process && triggers.size === 0) {
1736
1750
  try { caffeinateProcess.process.kill("SIGTERM"); } catch {}
@@ -1746,7 +1760,9 @@ async function autoStopPollingTick() {
1746
1760
  }
1747
1761
 
1748
1762
  // #518: detect batch-start transition → auto-start bridges
1749
- if (hasBridgeAuto && hasItems && !bp.complete) {
1763
+ // #864: do NOT auto-start on a cleared queue even though hasItems may be
1764
+ // true from the preserved snapshot — the operator's clear is a stop signal.
1765
+ if (hasBridgeAuto && hasItems && !bp.complete && !clearedByOperator) {
1750
1766
  const isNewBatch = !prev || prev.complete || !prev.hasItems;
1751
1767
  if (isNewBatch) {
1752
1768
  await autoStartBridges(project.id, project, qwPort);
package/server/routes.js CHANGED
@@ -2318,14 +2318,37 @@ function buildNoPrRow(issue) {
2318
2318
  // would also surface `[#807]` for n=80), so we re-apply the strict `^\s*\[#N\]`
2319
2319
  // regex the snapshot matcher uses. Returns the freshest matching PR number (or
2320
2320
  // null), treating a search failure as "no linked PR found".
2321
- // Pure: pick the freshest PR (highest number) whose title matches the STRICT
2322
- // `^\s*\[#N\]` convention from a set of REST search items. Guards `[#807]` from
2323
- // matching n=80 even though Search's loose `in:title 80` would surface it.
2324
- // Returns the PR number or null. Exported for unit tests.
2325
- function pickLinkedPrFromSearch(items, n) {
2321
+ // Pure: pick the right PR whose title matches the STRICT `^\s*\[#N\]` convention
2322
+ // from a set of REST search items. Guards `[#807]` from matching n=80 even
2323
+ // though Search's loose `in:title 80` would surface it. Returns the PR number
2324
+ // or null. Exported for unit tests.
2325
+ //
2326
+ // #864: when more than one strict match exists for a CLOSED issue (e.g. a
2327
+ // closed-unmerged duplicate opened after the real merged PR for the same
2328
+ // issue), prefer a MERGED match over an unmerged one — otherwise the
2329
+ // highest-PR-number tie-break picks the duplicate and downstream progress
2330
+ // flips a CLOSED issue back to in_review, keeping the batch falsely "active"
2331
+ // after Head clears the queue.
2332
+ //
2333
+ // #864/RE1: the merged-preference is GATED on `opts.issueState === "CLOSED"`.
2334
+ // For an OPEN/reopened issue, applying it would let an OLDER merged PR beat a
2335
+ // NEWER active duplicate/reopen PR with the same `[#N]` prefix — the picker
2336
+ // would return the stale merged PR number and progressForItemRest would fall
2337
+ // through to in_review-with-the-wrong-PR (since the `merged && CLOSED` row
2338
+ // requires the issue to be closed). The default (no opts → open-by-omission)
2339
+ // is the legacy freshest-wins behavior, preserving back-compat for direct
2340
+ // callers and tests that don't yet supply issue state.
2341
+ function pickLinkedPrFromSearch(items, n, opts = {}) {
2326
2342
  const titleRe = new RegExp(`^\\s*\\[#${n}\\]`);
2327
2343
  const matches = (Array.isArray(items) ? items : []).filter((it) => titleRe.test((it && it.title) || ""));
2328
2344
  if (matches.length === 0) return null;
2345
+ const preferMerged = opts.issueState === "CLOSED";
2346
+ if (preferMerged) {
2347
+ const merged = matches.filter((it) => it && it.pull_request && it.pull_request.merged_at);
2348
+ if (merged.length > 0) {
2349
+ return merged.slice().sort((a, b) => (b.number || 0) - (a.number || 0))[0].number;
2350
+ }
2351
+ }
2329
2352
  return matches.slice().sort((a, b) => (b.number || 0) - (a.number || 0))[0].number;
2330
2353
  }
2331
2354
 
@@ -2347,9 +2370,9 @@ async function _searchLinkedPrItems(repo, n) {
2347
2370
  // with a merged PR would render closed). So failure THROWS, and the caller
2348
2371
  // (progressForItemRest, awaiting without a catch) drops the item to the
2349
2372
  // non-authoritative "fetch failed" row, retried on the next cache miss.
2350
- async function findLinkedPrByTitle(repo, n, search = _searchLinkedPrItems) {
2373
+ async function findLinkedPrByTitle(repo, n, search = _searchLinkedPrItems, opts = {}) {
2351
2374
  const items = await search(repo, n);
2352
- return pickLinkedPrFromSearch(items, n);
2375
+ return pickLinkedPrFromSearch(items, n, opts);
2353
2376
  }
2354
2377
 
2355
2378
  // Authoritative by-number resolution for an active-batch issue the board
@@ -2371,7 +2394,10 @@ async function progressForItemRest(repo, issueNumber) {
2371
2394
  // Throws (→ route's "fetch failed" row) if Search itself fails, so a
2372
2395
  // could-not-determine is NEVER mistaken for proof of no linked PR. A null
2373
2396
  // here means Search SUCCEEDED with zero strict [#N] matches — authoritative.
2374
- const prNumber = await findLinkedPrByTitle(repo, issueNumber);
2397
+ // #864/RE1: pass issue.state so the picker only prefers a merged duplicate
2398
+ // for CLOSED issues; OPEN/reopened issues keep legacy freshest-wins, so a
2399
+ // newer active duplicate PR isn't masked by an older merged one.
2400
+ const prNumber = await findLinkedPrByTitle(repo, issueNumber, _searchLinkedPrItems, { issueState: issue.state });
2375
2401
  // No linked PR (authoritative). #350: honor the issue's own state — a CLOSED
2376
2402
  // issue with no linked PR is fully done (superseded/not-planned/runbook) →
2377
2403
  // 100% ✓; only a truly OPEN issue with no PR is queued.
@@ -2464,8 +2490,17 @@ function summarizeItems(items) {
2464
2490
  // Active Batch section. Returns null when there's no progress payload (an
2465
2491
  // undefined input — current callers always pass a value), defensively
2466
2492
  // treated as "not active" at the route.
2493
+ //
2494
+ // #864: lifecycle consumers (this route, trigger auto-stop, reseed safe-boundary
2495
+ // checks via isActiveFromProgress) must NOT consider an explicitly cleared
2496
+ // `## Active Batch` section as active. resolveDisplayedBatch still serves the
2497
+ // preserved snapshot so /api/batch-progress can render the prior batch for
2498
+ // history, but the lifecycle signal must follow the operator's intent. The
2499
+ // `liveActiveBatchCleared` flag set by getOrComputeBatchProgress short-circuits
2500
+ // the items-based check below.
2467
2501
  function isBatchActiveFromProgress(progress) {
2468
2502
  if (!progress) return null;
2503
+ if (progress.liveActiveBatchCleared) return false;
2469
2504
  const items = Array.isArray(progress.items) ? progress.items : [];
2470
2505
  return items.length > 0 && !progress.complete;
2471
2506
  }
@@ -2592,13 +2627,20 @@ async function getOrComputeBatchProgress(projectId) {
2592
2627
  // snapshot-aware helper so merged items stay visible after Head
2593
2628
  // moves them from Active Batch to Done, until a new batch starts.
2594
2629
  const { batchNumber, issueNumbers } = resolveDisplayedBatch(queueText, projectId, { queueReadOk });
2630
+ // #864: lifecycle-signal flag. The displayed batch may be the preserved
2631
+ // snapshot (so /api/batch-progress keeps showing it), but lifecycle consumers
2632
+ // (/api/batch-active, trigger auto-stop, reseed safe-boundary) must follow
2633
+ // the operator's explicit clear. Compute from the LIVE parse, only when the
2634
+ // queue file actually read OK — the #316 bypass (queueReadOk=false) must NOT
2635
+ // be mistaken for an explicit clear, since the operator never touched it.
2636
+ const liveActiveBatchCleared = queueReadOk && parseActiveBatch(queueText).issueNumbers.length === 0;
2595
2637
  // #828 P2: batch identity = number + issue set. evalBatchCompleteConfirmed
2596
2638
  // resets its streak when this changes, so a new already-complete batch can't
2597
2639
  // inherit the prior batch's first cycle and confirm in one tick.
2598
2640
  const batchKey = `${batchNumber}::${[...issueNumbers].sort((a, b) => a - b).join(",")}`;
2599
2641
  if (issueNumbers.length === 0) {
2600
2642
  evalBatchCompleteConfirmed(projectId, batchKey, false, null); // reset any complete streak
2601
- const data = { batch_number: batchNumber, items: [], summary: "", complete: false, completeConfirmed: false };
2643
+ const data = { batch_number: batchNumber, items: [], summary: "", complete: false, completeConfirmed: false, liveActiveBatchCleared };
2602
2644
  _batchProgressCache.set(projectId, { ts: Date.now(), data });
2603
2645
  return data;
2604
2646
  }
@@ -2631,7 +2673,7 @@ async function getOrComputeBatchProgress(projectId) {
2631
2673
  // before any auto-stop consumer may act on it (never auto-stop on a single
2632
2674
  // transient/stale complete). Keyed on the snapshot's ts as the cycle marker.
2633
2675
  const completeConfirmed = evalBatchCompleteConfirmed(projectId, batchKey, complete, snapshot ? snapshot.ts : null);
2634
- const data = { batch_number: batchNumber, items, summary, complete, completeConfirmed };
2676
+ const data = { batch_number: batchNumber, items, summary, complete, completeConfirmed, liveActiveBatchCleared };
2635
2677
  _batchProgressCache.set(projectId, { ts: Date.now(), data });
2636
2678
  return data;
2637
2679
  }
@@ -28,6 +28,20 @@ If you need to reference sensitive data, use a placeholder like `<WALLET_ADDRESS
28
28
 
29
29
  This rule applies to ALL output that touches GitHub or git — issues, PR bodies, review comments, commit messages, and file contents.
30
30
 
31
+ ### Rule 4: Orchestrator Port Protection
32
+ The QuadWork orchestrator (port **8400**, Express backend) and the Next.js development server (its own port — `next dev`'s listener, NOT an agent mention) are live self-host infrastructure during review. Killing them takes down the chat MCP, batch progress, GITHUB.md sync, the scheduled trigger, and every other agent in the project.
33
+
34
+ **NEVER kill, restart, or manage processes on these ports.** Forbidden commands include — but are not limited to:
35
+ - `kill <pid>` against any process bound to port 8400 or the Next.js development server port
36
+ - `pkill -f "next"`, `pkill -f "quadwork"`, `pkill -f "node.*8400"`, or any similar broad pattern match that could hit them
37
+ - `fuser -k 8400/tcp` or `fuser -k <next-dev-port>/tcp`
38
+ - `lsof -ti:8400 | xargs kill`, or any `lsof … kill` / `lsof … xargs` chain targeting these ports
39
+ - `npm run start`, `npm run dev`, `quadwork start`, or any restart of the live orchestrator / Next.js development server
40
+
41
+ For runtime or visual checks, use a throwaway port such as `PORT=8499` (or any free port other than 8400 and the Next.js development server port). Where possible, prefer `npm run build` output, unit/integration tests, and code review over spinning up a runtime.
42
+
43
+ If something on port 8400 looks wrong, report it to the operator via `chat_send` — do not try to fix it by restarting.
44
+
31
45
  ---
32
46
 
33
47
  You are Dev, the primary implementation agent.
@@ -28,6 +28,20 @@ If you need to reference sensitive data, use a placeholder like `<WALLET_ADDRESS
28
28
 
29
29
  This rule applies to ALL output that touches GitHub or git — issues, PR bodies, review comments, commit messages, and file contents.
30
30
 
31
+ ### Rule 4: Orchestrator Port Protection
32
+ The QuadWork orchestrator (port **8400**, Express backend) and the Next.js development server (its own port — `next dev`'s listener, NOT an agent mention) are live self-host infrastructure during review. Killing them takes down the chat MCP, batch progress, GITHUB.md sync, the scheduled trigger, and every other agent in the project.
33
+
34
+ **NEVER kill, restart, or manage processes on these ports.** Forbidden commands include — but are not limited to:
35
+ - `kill <pid>` against any process bound to port 8400 or the Next.js development server port
36
+ - `pkill -f "next"`, `pkill -f "quadwork"`, `pkill -f "node.*8400"`, or any similar broad pattern match that could hit them
37
+ - `fuser -k 8400/tcp` or `fuser -k <next-dev-port>/tcp`
38
+ - `lsof -ti:8400 | xargs kill`, or any `lsof … kill` / `lsof … xargs` chain targeting these ports
39
+ - `npm run start`, `npm run dev`, `quadwork start`, or any restart of the live orchestrator / Next.js development server
40
+
41
+ For runtime or visual checks, use a throwaway port such as `PORT=8499` (or any free port other than 8400 and the Next.js development server port). Where possible, prefer `npm run build` output, unit/integration tests, and code review over spinning up a runtime.
42
+
43
+ If something on port 8400 looks wrong, report it to the operator via `chat_send` — do not try to fix it by restarting.
44
+
31
45
  ---
32
46
 
33
47
  You are Head, the project owner and coordinator agent.
@@ -28,6 +28,20 @@ If you need to reference sensitive data, use a placeholder like `<WALLET_ADDRESS
28
28
 
29
29
  This rule applies to ALL output that touches GitHub or git — issues, PR bodies, review comments, commit messages, and file contents.
30
30
 
31
+ ### Rule 4: Orchestrator Port Protection
32
+ The QuadWork orchestrator (port **8400**, Express backend) and the Next.js development server (its own port — `next dev`'s listener, NOT an agent mention) are live self-host infrastructure during review. Killing them takes down the chat MCP, batch progress, GITHUB.md sync, the scheduled trigger, and every other agent in the project.
33
+
34
+ **NEVER kill, restart, or manage processes on these ports.** Forbidden commands include — but are not limited to:
35
+ - `kill <pid>` against any process bound to port 8400 or the Next.js development server port
36
+ - `pkill -f "next"`, `pkill -f "quadwork"`, `pkill -f "node.*8400"`, or any similar broad pattern match that could hit them
37
+ - `fuser -k 8400/tcp` or `fuser -k <next-dev-port>/tcp`
38
+ - `lsof -ti:8400 | xargs kill`, or any `lsof … kill` / `lsof … xargs` chain targeting these ports
39
+ - `npm run start`, `npm run dev`, `quadwork start`, or any restart of the live orchestrator / Next.js development server
40
+
41
+ For runtime or visual checks, use a throwaway port such as `PORT=8499` (or any free port other than 8400 and the Next.js development server port). Where possible, prefer `npm run build` output, unit/integration tests, and code review over spinning up a runtime.
42
+
43
+ If something on port 8400 looks wrong, report it to the operator via `chat_send` — do not try to fix it by restarting.
44
+
31
45
  ---
32
46
 
33
47
  You are **RE1**, the first reviewer agent. Your chat identity is `re1`.