@aoagents/ao-web 0.2.4 → 0.3.0

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 (305) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +296 -223
  3. package/.next/app-path-routes-manifest.json +16 -8
  4. package/.next/build-manifest.json +14 -14
  5. package/.next/next-minimal-server.js.nft.json +1 -1
  6. package/.next/next-server.js.nft.json +1 -1
  7. package/.next/prerender-manifest.json +31 -31
  8. package/.next/react-loadable-manifest.json +18 -18
  9. package/.next/required-server-files.json +9 -4
  10. package/.next/routes-manifest.json +33 -0
  11. package/.next/server/app/_not-found/page.js +2 -2
  12. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/_not-found.html +1 -1
  15. package/.next/server/app/_not-found.rsc +15 -15
  16. package/.next/server/app/api/backlog/route.js +1 -1
  17. package/.next/server/app/api/backlog/route.js.nft.json +1 -1
  18. package/.next/server/app/api/backlog/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/browse-directory/route.js +1 -0
  20. package/.next/server/app/api/browse-directory/route.js.nft.json +1 -0
  21. package/.next/server/app/api/browse-directory/route_client-reference-manifest.js +1 -0
  22. package/.next/server/app/api/events/route.js +3 -3
  23. package/.next/server/app/api/events/route.js.nft.json +1 -1
  24. package/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/filesystem/browse/route.js +1 -0
  26. package/.next/server/app/api/filesystem/browse/route.js.nft.json +1 -0
  27. package/.next/server/app/api/filesystem/browse/route_client-reference-manifest.js +1 -0
  28. package/.next/server/app/api/issues/route.js +1 -1
  29. package/.next/server/app/api/issues/route.js.nft.json +1 -1
  30. package/.next/server/app/api/issues/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/observability/route.js +1 -1
  32. package/.next/server/app/api/observability/route.js.nft.json +1 -1
  33. package/.next/server/app/api/observability/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/orchestrators/route.js +1 -1
  35. package/.next/server/app/api/orchestrators/route.js.nft.json +1 -1
  36. package/.next/server/app/api/orchestrators/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/projects/[id]/route.js +1 -0
  38. package/.next/server/app/api/projects/[id]/route.js.nft.json +1 -0
  39. package/.next/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -0
  40. package/.next/server/app/api/projects/reload/route.js +1 -0
  41. package/.next/server/app/api/projects/reload/route.js.nft.json +1 -0
  42. package/.next/server/app/api/projects/reload/route_client-reference-manifest.js +1 -0
  43. package/.next/server/app/api/projects/route.js +1 -1
  44. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  45. package/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/prs/[id]/merge/route.js +1 -1
  47. package/.next/server/app/api/prs/[id]/merge/route.js.nft.json +1 -1
  48. package/.next/server/app/api/prs/[id]/merge/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/runtime/terminal/route.js +1 -1
  50. package/.next/server/app/api/runtime/terminal/route.js.nft.json +1 -1
  51. package/.next/server/app/api/runtime/terminal/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/sessions/[id]/kill/route.js +1 -1
  53. package/.next/server/app/api/sessions/[id]/kill/route.js.nft.json +1 -1
  54. package/.next/server/app/api/sessions/[id]/kill/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/sessions/[id]/message/route.js +1 -1
  56. package/.next/server/app/api/sessions/[id]/message/route.js.nft.json +1 -1
  57. package/.next/server/app/api/sessions/[id]/message/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/sessions/[id]/remap/route.js +1 -1
  59. package/.next/server/app/api/sessions/[id]/remap/route.js.nft.json +1 -1
  60. package/.next/server/app/api/sessions/[id]/remap/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/sessions/[id]/restore/route.js +1 -1
  62. package/.next/server/app/api/sessions/[id]/restore/route.js.nft.json +1 -1
  63. package/.next/server/app/api/sessions/[id]/restore/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  65. package/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -1
  66. package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/sessions/[id]/send/route.js +1 -1
  68. package/.next/server/app/api/sessions/[id]/send/route.js.nft.json +1 -1
  69. package/.next/server/app/api/sessions/[id]/send/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/sessions/patches/route.js +1 -0
  71. package/.next/server/app/api/sessions/patches/route.js.nft.json +1 -0
  72. package/.next/server/app/api/sessions/patches/route_client-reference-manifest.js +1 -0
  73. package/.next/server/app/api/sessions/route.js +1 -1
  74. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  75. package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/setup-labels/route.js +1 -1
  77. package/.next/server/app/api/setup-labels/route.js.nft.json +1 -1
  78. package/.next/server/app/api/setup-labels/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/spawn/route.js +1 -1
  80. package/.next/server/app/api/spawn/route.js.nft.json +1 -1
  81. package/.next/server/app/api/spawn/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/verify/route.js +1 -1
  83. package/.next/server/app/api/verify/route.js.nft.json +1 -1
  84. package/.next/server/app/api/verify/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/webhooks/[...slug]/route.js +1 -1
  86. package/.next/server/app/api/webhooks/[...slug]/route.js.nft.json +1 -1
  87. package/.next/server/app/api/webhooks/[...slug]/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/apple-icon/route.js +1 -1
  89. package/.next/server/app/apple-icon/route.js.nft.json +1 -1
  90. package/.next/server/app/apple-icon/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/dev/terminal-test/page.js +3 -3
  92. package/.next/server/app/dev/terminal-test/page.js.nft.json +1 -1
  93. package/.next/server/app/dev/terminal-test/page_client-reference-manifest.js +1 -1
  94. package/.next/server/app/dev/terminal-test.html +1 -1
  95. package/.next/server/app/dev/terminal-test.rsc +17 -17
  96. package/.next/server/app/icon/route.js +1 -1
  97. package/.next/server/app/icon/route.js.nft.json +1 -1
  98. package/.next/server/app/icon/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/icon-192/route.js +1 -1
  100. package/.next/server/app/icon-192/route.js.nft.json +1 -1
  101. package/.next/server/app/icon-192/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/icon-512/route.js +1 -1
  103. package/.next/server/app/icon-512/route.js.nft.json +1 -1
  104. package/.next/server/app/icon-512/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  106. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  107. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/manifest.webmanifest.body +1 -1
  109. package/.next/server/app/orchestrators/page.js +2 -2
  110. package/.next/server/app/orchestrators/page.js.nft.json +1 -1
  111. package/.next/server/app/orchestrators/page_client-reference-manifest.js +1 -1
  112. package/.next/server/app/page.js +2 -2
  113. package/.next/server/app/page.js.nft.json +1 -1
  114. package/.next/server/app/page_client-reference-manifest.js +1 -1
  115. package/.next/server/app/projects/[projectId]/page.js +2 -0
  116. package/.next/server/app/projects/[projectId]/page.js.nft.json +1 -0
  117. package/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -0
  118. package/.next/server/app/projects/[projectId]/sessions/[id]/page.js +2 -0
  119. package/.next/server/app/projects/[projectId]/sessions/[id]/page.js.nft.json +1 -0
  120. package/.next/server/app/projects/[projectId]/sessions/[id]/page_client-reference-manifest.js +1 -0
  121. package/.next/server/app/projects/[projectId]/settings/page.js +2 -0
  122. package/.next/server/app/projects/[projectId]/settings/page.js.nft.json +1 -0
  123. package/.next/server/app/projects/[projectId]/settings/page_client-reference-manifest.js +1 -0
  124. package/.next/server/app/prs/page.js +2 -2
  125. package/.next/server/app/prs/page.js.nft.json +1 -1
  126. package/.next/server/app/prs/page_client-reference-manifest.js +1 -1
  127. package/.next/server/app/sessions/[id]/page.js +2 -12
  128. package/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  129. package/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  130. package/.next/server/app/test-direct/page.js +2 -2
  131. package/.next/server/app/test-direct/page.js.nft.json +1 -1
  132. package/.next/server/app/test-direct/page_client-reference-manifest.js +1 -1
  133. package/.next/server/app/test-direct.html +1 -1
  134. package/.next/server/app/test-direct.rsc +17 -17
  135. package/.next/server/app-paths-manifest.json +16 -8
  136. package/.next/server/chunks/1172.js +1 -0
  137. package/.next/server/chunks/1271.js +1 -0
  138. package/.next/server/chunks/2106.js +1 -0
  139. package/.next/server/chunks/252.js +11 -0
  140. package/.next/server/chunks/2810.js +1 -0
  141. package/.next/server/chunks/3602.js +382 -0
  142. package/.next/server/chunks/3667.js +277 -0
  143. package/.next/server/chunks/3714.js +1 -0
  144. package/.next/server/chunks/4520.js +1 -0
  145. package/.next/server/chunks/6086.js +25 -0
  146. package/.next/server/chunks/6172.js +9 -0
  147. package/.next/server/chunks/8367.js +3 -0
  148. package/.next/server/chunks/8386.js +1 -0
  149. package/.next/server/chunks/8803.js +6 -0
  150. package/.next/server/chunks/9561.js +22 -0
  151. package/.next/server/middleware-build-manifest.js +1 -1
  152. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  153. package/.next/server/next-font-manifest.js +1 -1
  154. package/.next/server/next-font-manifest.json +1 -1
  155. package/.next/server/pages/404.html +1 -1
  156. package/.next/server/pages/500.html +1 -1
  157. package/.next/server/pages/_app.js +1 -1
  158. package/.next/server/pages/_app.js.nft.json +1 -1
  159. package/.next/server/pages/_document.js +1 -1
  160. package/.next/server/pages/_document.js.nft.json +1 -1
  161. package/.next/server/pages/_error.js +3 -3
  162. package/.next/server/pages/_error.js.nft.json +1 -1
  163. package/.next/server/server-reference-manifest.json +1 -1
  164. package/.next/server/webpack-runtime.js +1 -1
  165. package/.next/static/chunks/1461-af7c54935f21d56d.js +1 -0
  166. package/.next/static/chunks/1d2d5650.1ef8611b5325bd83.js +18 -0
  167. package/.next/static/chunks/{9393.acf1934a190d793b.js → 2529.32352c1ce5253e3e.js} +1 -1
  168. package/.next/static/chunks/3697.4d6d86c5f0caf73e.js +1 -0
  169. package/.next/static/chunks/4465-aaba60a6355de914.js +1 -0
  170. package/.next/static/chunks/{7411.ecda44797fb514a0.js → 5491.fd98884d48631149.js} +1 -1
  171. package/.next/static/chunks/6078.47ce88bee96cfaee.js +1 -0
  172. package/.next/static/chunks/6607-405ce4d15e595f4a.js +1 -0
  173. package/.next/static/chunks/7008-71ebb186f0549f41.js +1 -0
  174. package/.next/static/chunks/7317.685aa5231218e8d3.js +1 -0
  175. package/.next/static/chunks/8713-d3d663f55dc00e48.js +1 -0
  176. package/.next/static/chunks/88a6fc35-f836b4b72df5eafa.js +1 -0
  177. package/.next/static/chunks/9331-fcdd652218ac6f68.js +1 -0
  178. package/.next/static/chunks/app/_not-found/page-e2dea9178b4af8db.js +1 -0
  179. package/.next/static/chunks/app/api/backlog/route-e2dea9178b4af8db.js +1 -0
  180. package/.next/static/chunks/app/api/browse-directory/route-e2dea9178b4af8db.js +1 -0
  181. package/.next/static/chunks/app/api/events/route-e2dea9178b4af8db.js +1 -0
  182. package/.next/static/chunks/app/api/filesystem/browse/route-e2dea9178b4af8db.js +1 -0
  183. package/.next/static/chunks/app/api/issues/route-e2dea9178b4af8db.js +1 -0
  184. package/.next/static/chunks/app/api/observability/route-e2dea9178b4af8db.js +1 -0
  185. package/.next/static/chunks/app/api/orchestrators/route-e2dea9178b4af8db.js +1 -0
  186. package/.next/static/chunks/app/api/projects/[id]/route-e2dea9178b4af8db.js +1 -0
  187. package/.next/static/chunks/app/api/projects/reload/route-e2dea9178b4af8db.js +1 -0
  188. package/.next/static/chunks/app/api/projects/route-e2dea9178b4af8db.js +1 -0
  189. package/.next/static/chunks/app/api/prs/[id]/merge/route-e2dea9178b4af8db.js +1 -0
  190. package/.next/static/chunks/app/api/runtime/terminal/route-e2dea9178b4af8db.js +1 -0
  191. package/.next/static/chunks/app/api/sessions/[id]/kill/route-e2dea9178b4af8db.js +1 -0
  192. package/.next/static/chunks/app/api/sessions/[id]/message/route-e2dea9178b4af8db.js +1 -0
  193. package/.next/static/chunks/app/api/sessions/[id]/remap/route-e2dea9178b4af8db.js +1 -0
  194. package/.next/static/chunks/app/api/sessions/[id]/restore/route-e2dea9178b4af8db.js +1 -0
  195. package/.next/static/chunks/app/api/sessions/[id]/route-e2dea9178b4af8db.js +1 -0
  196. package/.next/static/chunks/app/api/sessions/[id]/send/route-e2dea9178b4af8db.js +1 -0
  197. package/.next/static/chunks/app/api/sessions/patches/route-e2dea9178b4af8db.js +1 -0
  198. package/.next/static/chunks/app/api/sessions/route-e2dea9178b4af8db.js +1 -0
  199. package/.next/static/chunks/app/api/setup-labels/route-e2dea9178b4af8db.js +1 -0
  200. package/.next/static/chunks/app/api/spawn/route-e2dea9178b4af8db.js +1 -0
  201. package/.next/static/chunks/app/api/verify/route-e2dea9178b4af8db.js +1 -0
  202. package/.next/static/chunks/app/api/webhooks/[...slug]/route-e2dea9178b4af8db.js +1 -0
  203. package/.next/static/chunks/app/apple-icon/route-e2dea9178b4af8db.js +1 -0
  204. package/.next/static/chunks/app/dev/terminal-test/page-5765f0465db56fed.js +1 -0
  205. package/.next/static/chunks/app/error-670f1d8bf2b6859c.js +1 -0
  206. package/.next/static/chunks/app/{global-error-7b5c8ae45329c659.js → global-error-ca06d2b1be2d4ae0.js} +1 -1
  207. package/.next/static/chunks/app/icon/route-e2dea9178b4af8db.js +1 -0
  208. package/.next/static/chunks/app/icon-192/route-e2dea9178b4af8db.js +1 -0
  209. package/.next/static/chunks/app/icon-512/route-e2dea9178b4af8db.js +1 -0
  210. package/.next/static/chunks/app/layout-ddf79478d9a673bb.js +1 -0
  211. package/.next/static/chunks/app/loading-e2dea9178b4af8db.js +1 -0
  212. package/.next/static/chunks/app/manifest.webmanifest/route-e2dea9178b4af8db.js +1 -0
  213. package/.next/static/chunks/app/{not-found-3772c2e09c29d80f.js → not-found-824d5d3c6e296eeb.js} +1 -1
  214. package/.next/static/chunks/app/orchestrators/page-4c190484788aaaa3.js +1 -0
  215. package/.next/static/chunks/app/page-d3b83ad5f09b6ec7.js +1 -0
  216. package/.next/static/chunks/app/projects/[projectId]/loading-e2dea9178b4af8db.js +1 -0
  217. package/.next/static/chunks/app/projects/[projectId]/page-9f3dfbea006747cf.js +1 -0
  218. package/.next/static/chunks/app/projects/[projectId]/sessions/[id]/page-a7090a06948f9a6b.js +1 -0
  219. package/.next/static/chunks/app/projects/[projectId]/settings/page-219df6dcbc6d1107.js +1 -0
  220. package/.next/static/chunks/app/prs/page-a285e930235a23af.js +1 -0
  221. package/.next/static/chunks/app/sessions/[id]/error-eb0973907da68a37.js +1 -0
  222. package/.next/static/chunks/app/sessions/[id]/loading-e2dea9178b4af8db.js +1 -0
  223. package/.next/static/chunks/app/sessions/[id]/{not-found-3772c2e09c29d80f.js → not-found-824d5d3c6e296eeb.js} +1 -1
  224. package/.next/static/chunks/app/sessions/[id]/page-98f398b822092218.js +1 -0
  225. package/.next/static/chunks/app/test-direct/page-f9bff7d7b4dfe728.js +1 -0
  226. package/.next/static/chunks/framework-7060e2ac4971c604.js +1 -0
  227. package/.next/static/chunks/main-app-690acf9d5d2050c9.js +1 -0
  228. package/.next/static/chunks/main-ed1610689fbd6f0d.js +1 -0
  229. package/.next/static/chunks/pages/_app-f4baf4dbe88f6f54.js +1 -0
  230. package/.next/static/chunks/pages/_error-a7f6723f42093f29.js +1 -0
  231. package/.next/static/chunks/{webpack-e12ceebeb7a1cc7e.js → webpack-d4ff5ed5e153ca3e.js} +1 -1
  232. package/.next/static/css/577ea7f5ad4f0576.css +1 -0
  233. package/.next/static/css/659eccb5db697b76.css +1 -0
  234. package/.next/static/q6yh3n8jgvyI9JIbexzuH/_buildManifest.js +1 -0
  235. package/dist-server/direct-terminal-ws.js +33 -236
  236. package/dist-server/mux-websocket.js +516 -0
  237. package/dist-server/start-all.js +0 -2
  238. package/next.config.js +5 -0
  239. package/package.json +18 -15
  240. package/.next/server/chunks/27.js +0 -438
  241. package/.next/server/chunks/377.js +0 -1
  242. package/.next/server/chunks/393.js +0 -1
  243. package/.next/server/chunks/627.js +0 -391
  244. package/.next/server/chunks/639.js +0 -6
  245. package/.next/server/chunks/693.js +0 -1
  246. package/.next/server/chunks/705.js +0 -22
  247. package/.next/server/chunks/787.js +0 -29
  248. package/.next/server/chunks/796.js +0 -1
  249. package/.next/server/chunks/934.js +0 -1
  250. package/.next/server/chunks/956.js +0 -9
  251. package/.next/static/WS8DHHp9haunZGhtE8L33/_buildManifest.js +0 -1
  252. package/.next/static/chunks/1250-e7cf6b069fbb03ed.js +0 -1
  253. package/.next/static/chunks/2205.498806f73783aa54.js +0 -1
  254. package/.next/static/chunks/3698-9c12c45b8184022c.js +0 -1
  255. package/.next/static/chunks/6381.1541d5695a727108.js +0 -1
  256. package/.next/static/chunks/7505-2d2422d31862995f.js +0 -1
  257. package/.next/static/chunks/8597-1385f90ec1cebf47.js +0 -1
  258. package/.next/static/chunks/8762.f3d526855363db16.js +0 -1
  259. package/.next/static/chunks/a51c26f2-a21e680a5df6764e.js +0 -1
  260. package/.next/static/chunks/app/_not-found/page-2224bc1d3dce1b3e.js +0 -1
  261. package/.next/static/chunks/app/api/backlog/route-2224bc1d3dce1b3e.js +0 -1
  262. package/.next/static/chunks/app/api/events/route-2224bc1d3dce1b3e.js +0 -1
  263. package/.next/static/chunks/app/api/issues/route-2224bc1d3dce1b3e.js +0 -1
  264. package/.next/static/chunks/app/api/observability/route-2224bc1d3dce1b3e.js +0 -1
  265. package/.next/static/chunks/app/api/orchestrators/route-2224bc1d3dce1b3e.js +0 -1
  266. package/.next/static/chunks/app/api/projects/route-2224bc1d3dce1b3e.js +0 -1
  267. package/.next/static/chunks/app/api/prs/[id]/merge/route-2224bc1d3dce1b3e.js +0 -1
  268. package/.next/static/chunks/app/api/runtime/terminal/route-2224bc1d3dce1b3e.js +0 -1
  269. package/.next/static/chunks/app/api/sessions/[id]/kill/route-2224bc1d3dce1b3e.js +0 -1
  270. package/.next/static/chunks/app/api/sessions/[id]/message/route-2224bc1d3dce1b3e.js +0 -1
  271. package/.next/static/chunks/app/api/sessions/[id]/remap/route-2224bc1d3dce1b3e.js +0 -1
  272. package/.next/static/chunks/app/api/sessions/[id]/restore/route-2224bc1d3dce1b3e.js +0 -1
  273. package/.next/static/chunks/app/api/sessions/[id]/route-2224bc1d3dce1b3e.js +0 -1
  274. package/.next/static/chunks/app/api/sessions/[id]/send/route-2224bc1d3dce1b3e.js +0 -1
  275. package/.next/static/chunks/app/api/sessions/route-2224bc1d3dce1b3e.js +0 -1
  276. package/.next/static/chunks/app/api/setup-labels/route-2224bc1d3dce1b3e.js +0 -1
  277. package/.next/static/chunks/app/api/spawn/route-2224bc1d3dce1b3e.js +0 -1
  278. package/.next/static/chunks/app/api/verify/route-2224bc1d3dce1b3e.js +0 -1
  279. package/.next/static/chunks/app/api/webhooks/[...slug]/route-2224bc1d3dce1b3e.js +0 -1
  280. package/.next/static/chunks/app/apple-icon/route-2224bc1d3dce1b3e.js +0 -1
  281. package/.next/static/chunks/app/dev/terminal-test/page-ac0ce5b046fcad82.js +0 -1
  282. package/.next/static/chunks/app/error-4896c9d3b7681a80.js +0 -1
  283. package/.next/static/chunks/app/icon/route-2224bc1d3dce1b3e.js +0 -1
  284. package/.next/static/chunks/app/icon-192/route-2224bc1d3dce1b3e.js +0 -1
  285. package/.next/static/chunks/app/icon-512/route-2224bc1d3dce1b3e.js +0 -1
  286. package/.next/static/chunks/app/layout-023f2083204e4f68.js +0 -1
  287. package/.next/static/chunks/app/loading-2224bc1d3dce1b3e.js +0 -1
  288. package/.next/static/chunks/app/manifest.webmanifest/route-2224bc1d3dce1b3e.js +0 -1
  289. package/.next/static/chunks/app/orchestrators/page-df85236df674fc5a.js +0 -1
  290. package/.next/static/chunks/app/page-e97da633b7ef25f2.js +0 -1
  291. package/.next/static/chunks/app/prs/page-8cc0fce584d238c5.js +0 -1
  292. package/.next/static/chunks/app/sessions/[id]/error-90bc99b777fecabf.js +0 -1
  293. package/.next/static/chunks/app/sessions/[id]/loading-2224bc1d3dce1b3e.js +0 -1
  294. package/.next/static/chunks/app/sessions/[id]/page-c9c95a8604786cff.js +0 -1
  295. package/.next/static/chunks/app/test-direct/page-16ceeb9f7664394a.js +0 -1
  296. package/.next/static/chunks/df4ed4d4.6a752eba3933e9a8.js +0 -3
  297. package/.next/static/chunks/framework-f8b8ba0f71d38056.js +0 -1
  298. package/.next/static/chunks/main-2bc85c765bf1fc49.js +0 -1
  299. package/.next/static/chunks/main-app-93fb36c3bd1a6739.js +0 -1
  300. package/.next/static/chunks/pages/_app-a0b975794f15bd68.js +0 -1
  301. package/.next/static/chunks/pages/_error-5f4e3b5eea57917d.js +0 -1
  302. package/.next/static/css/6ef2fa08dd043252.css +0 -1
  303. package/.next/static/css/908f93fdd7ffba42.css +0 -1
  304. package/dist-server/terminal-websocket.js +0 -375
  305. /package/.next/static/{WS8DHHp9haunZGhtE8L33 → q6yh3n8jgvyI9JIbexzuH}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";exports.id=2810,exports.ids=[2810],exports.modules={5241:(a,b,c)=>{c.d(b,{CM:()=>f,N_:()=>h,Rt:()=>g,SB:()=>e,U1:()=>j,tT:()=>i,u3:()=>d});let d={ACTIVE:"active",READY:"ready",IDLE:"idle",WAITING_INPUT:"waiting_input",BLOCKED:"blocked",EXITED:"exited"},e={SPAWNING:"spawning",WORKING:"working",DETECTING:"detecting",PR_OPEN:"pr_open",CI_FAILED:"ci_failed",REVIEW_PENDING:"review_pending",CHANGES_REQUESTED:"changes_requested",APPROVED:"approved",MERGEABLE:"mergeable",MERGED:"merged",CLEANUP:"cleanup",NEEDS_INPUT:"needs_input",STUCK:"stuck",ERRORED:"errored",IDLE:"idle",KILLED:"killed",DONE:"done",TERMINATED:"terminated"},f=new Set(["killed","terminated","done","cleanup","errored","merged"]),g=new Set(["exited"]),h=new Set(["merged"]);function i(a,b,c){if(a.metadata?.role==="orchestrator")return!0;if(!b)return!1;let d=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(!RegExp(`^${d}-orchestrator-\\d+$`).test(a.id))return!1;if(c){for(let d of c)if(d!==b&&RegExp(`^${d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}-\\d+$`).test(a.id))return!1}return!0}let j={PENDING:"pending",PASSING:"passing",FAILING:"failing",NONE:"none"}},31849:(a,b,c)=>{c.d(b,{u:()=>C});var d=c(33666),e=c(47489),f=c.n(e),g=c(81115),h=c(50436),i=c(85489),j=c(37155),k=c(5241),l=c(61875),m=c(88950),n=c(74566);function o(a,b){return"~"===a?`~/${b}`:`${a.replace(/\/+$/,"")}/${b}`}function p({children:a,className:b,viewBox:c="0 0 16 16"}){return(0,d.jsx)("svg",{"aria-hidden":"true",viewBox:c,className:b,children:a})}let q={fill:"none",stroke:"currentColor",strokeWidth:1.75,strokeLinecap:"square"},r={fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"square",strokeLinejoin:"miter"};function s(){return(0,d.jsx)(p,{className:"add-project-modal__toolicon",children:(0,d.jsx)("path",{d:"M10 3.5 6 8l4 4.5",...q})})}function t(){return(0,d.jsx)(p,{className:"add-project-modal__toolicon",children:(0,d.jsx)("path",{d:"m6 3.5 4 4.5L6 12.5",...q})})}function u(){return(0,d.jsx)(p,{className:"add-project-modal__toolicon",children:(0,d.jsx)("path",{d:"M8 12V4m0 0L5 7m3-3 3 3",...r})})}function v(){return(0,d.jsx)(p,{className:"add-project-modal__toolicon",children:(0,d.jsx)("path",{d:"M12 5V2.75H9.75M4.5 11A4.75 4.75 0 0 0 12 5M3.75 11v2.25H6m5.5-8.25A4.75 4.75 0 0 1 4 11",...r})})}function w({open:a,onClose:b}){let c=(0,h.useRouter)(),e=(0,g.useRef)(null),[f,i]=(0,g.useState)(!1),[j,k]=(0,g.useState)(null),[l,m]=(0,g.useState)(null),[n,p]=(0,g.useState)(null),[q,r]=(0,g.useState)("~"),[w,x]=(0,g.useState)("~"),[y,z]=(0,g.useState)(["~"]),[A,B]=(0,g.useState)(0),[C,D]=(0,g.useState)([]),[E,F]=(0,g.useState)(!1),[G,H]=(0,g.useState)(null),[I,J]=(0,g.useState)(""),[K,L]=(0,g.useState)(""),M=async(a,b)=>{F(!0),H(null);try{let c=await fetch(`/api/filesystem/browse?path=${encodeURIComponent(a)}`).catch(()=>null);if(!c){D([]),x(b?.selectedPath??a),H("Failed to browse directories.");return}if(!c.ok){let d=await c.json().catch(()=>null),e=404===c.status&&d?.error==="Not found";D([]),x(e?"":b?.selectedPath??a),H(e?"Directory browsing is unavailable in this environment. Set AO_ALLOW_FILESYSTEM_BROWSE=1 to enable it.":d?.error??"Failed to browse directories.");return}let d=await c.json().catch(()=>null),e=b?.mode??"push",f=b?.historyIndex??A;r(a),x(b?.selectedPath??a),D(d?.entries??[]),"push"===e?z(b=>{let c=b.slice(0,f+1);return c[c.length-1]!==a&&c.push(a),B(c.length-1),c}):z(b=>{let c=[...b];return c[f]=a,c})}catch{H("Failed to browse directories.")}finally{F(!1)}},N=(0,g.useMemo)(()=>C.filter(a=>a.isDirectory),[C]),O=(0,g.useMemo)(()=>N.find(a=>o(q,a.name)===w)??null,[q,N,w]),P=function(a){if("~"===a)return null;let b=a.split("/").filter(Boolean);return b.length<=1?"~":"~"===b[0]?`~/${b.slice(1,-1).join("/")}`:b.slice(0,-1).join("/")}(q),Q=A<y.length-1,R=I.trim()||(w.trim()&&"~"!==w?(w.split("/").filter(Boolean).pop()??"project").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"project":""),S=K.trim()||(w.trim()&&"~"!==w?(w.split("/").filter(Boolean).pop()??"Project").replace(/[-_]+/g," ").replace(/\s+/g," ").trim().replace(/\b\w/g,a=>a.toUpperCase())||"Project":""),T=""!==w.trim()&&"~"!==w&&!G&&!!O?.isGitRepo&&R.length>0&&S.length>0;N.findIndex(a=>o(q,a.name)===w);let U=async(a=!1)=>{k(null),m(null),p(null),i(!0);let d=w.trim();try{let e=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:R,name:S,path:d,allowStorageKeyReuse:a})}),f=await e.json().catch(()=>null);if(409===e.status&&f?.existingProjectId&&f?.suggestion)return void p({error:f.error??"A project with the same storage key already exists.",existingProjectId:f.existingProjectId,suggestion:f.suggestion});if(!e.ok){let a=f?.error??"Failed to add project.";e.status<500?k(a):m(a);return}let g=f?.projectId??R.trim();b(),c.push(`/projects/${encodeURIComponent(g)}`),c.refresh()}catch{m("Network error while adding project.")}finally{i(!1)}};if(!a)return null;let V=a=>{a<0||a>=y.length||(B(a),M(y[a]??"~",{mode:"replace",historyIndex:a}))},W=n?(0,d.jsxs)("div",{className:"add-project-modal__notice add-project-modal__notice--warning",children:[(0,d.jsx)("p",{className:"add-project-modal__notice-title",children:n.error}),(0,d.jsxs)("p",{className:"add-project-modal__notice-copy",children:["Existing project: ",(0,d.jsx)("code",{children:n.existingProjectId})]}),(0,d.jsxs)("div",{className:"add-project-modal__notice-actions",children:[(0,d.jsx)("button",{type:"button",onClick:()=>{b(),c.push(`/projects/${encodeURIComponent(n.existingProjectId)}`)},className:"add-project-modal__ghostbtn",children:"Open existing"}),(0,d.jsx)("button",{type:"button",onClick:()=>void U(!0),className:"add-project-modal__ghostbtn",children:"Reuse shared storage"}),(0,d.jsx)("span",{className:"add-project-modal__notice-hint",children:"Open the existing project or confirm shared storage reuse."})]})]}):j?(0,d.jsx)("div",{role:"alert",className:"add-project-modal__notice add-project-modal__notice--error",children:j}):O&&!O.isGitRepo?(0,d.jsx)("div",{role:"alert",className:"add-project-modal__notice add-project-modal__notice--error",children:"Selected folder is not a git repository."}):l?(0,d.jsx)("div",{className:"add-project-modal__notice add-project-modal__notice--error",children:l}):null;return(0,d.jsx)("div",{className:"add-project-modal-backdrop",children:(0,d.jsxs)("div",{ref:e,role:"dialog","aria-modal":"true","aria-label":"Add project",className:"add-project-modal",tabIndex:-1,children:[(0,d.jsxs)("div",{className:"add-project-modal__titlebar",children:[(0,d.jsx)("h2",{className:"add-project-modal__windowtitle",children:"add project"}),(0,d.jsx)("button",{type:"button","aria-label":"Close",onClick:b,className:"add-project-modal__iconbtn",children:"\xd7"})]}),(0,d.jsxs)("div",{className:"add-project-modal__toolbar",children:[(0,d.jsxs)("div",{className:"add-project-modal__toolbarcluster",children:[(0,d.jsx)("button",{type:"button",onClick:()=>V(A-1),disabled:!(A>0),className:"add-project-modal__toolbtn","aria-label":"Go back",children:(0,d.jsx)(s,{})}),(0,d.jsx)("button",{type:"button",onClick:()=>V(A+1),disabled:!Q,className:"add-project-modal__toolbtn","aria-label":"Go forward",children:(0,d.jsx)(t,{})}),(0,d.jsx)("button",{type:"button",onClick:()=>P&&void M(P),disabled:!P,className:"add-project-modal__toolbtn","aria-label":"Go up",children:(0,d.jsx)(u,{})}),(0,d.jsx)("button",{type:"button",onClick:()=>void M(q,{mode:"replace",selectedPath:w}),className:"add-project-modal__toolbtn","aria-label":"Refresh",children:(0,d.jsx)(v,{})})]}),(0,d.jsx)("div",{className:"add-project-modal__location",children:q})]}),(0,d.jsx)("div",{className:"add-project-modal__content",children:(0,d.jsxs)("div",{className:"add-project-browser",children:[(0,d.jsxs)("div",{className:"add-project-browser__current",children:[(0,d.jsx)("div",{className:"add-project-browser__current-label",children:"Current folder"}),(0,d.jsx)("div",{className:"add-project-browser__current-path",children:q})]}),G?(0,d.jsxs)("div",{className:"add-project-browser__state add-project-browser__state--error",children:[(0,d.jsx)("p",{className:"add-project-browser__state-title",children:"Directory browser unavailable"}),(0,d.jsx)("p",{className:"add-project-browser__state-copy",children:G})]}):E?(0,d.jsxs)("div",{className:"add-project-browser__state",children:[(0,d.jsx)("p",{className:"add-project-browser__state-title",children:"Loading folders"}),(0,d.jsx)("p",{className:"add-project-browser__state-copy",children:"Fetching directories for this location."})]}):0===N.length?(0,d.jsxs)("div",{className:"add-project-browser__state",children:[(0,d.jsx)("p",{className:"add-project-browser__state-title",children:"No visible folders here"}),(0,d.jsx)("p",{className:"add-project-browser__state-copy",children:"Try navigating up or picking a different location."})]}):(0,d.jsxs)("div",{className:"add-project-browser__rows",children:[P?(0,d.jsx)("button",{type:"button",onClick:()=>void M(P),className:"add-project-browser__row add-project-browser__row--parent",children:".."}):null,N.map(a=>{let b=o(q,a.name);return(0,d.jsx)("button",{type:"button",onClick:()=>x(b),onDoubleClick:()=>void M(b),className:`add-project-browser__row${w===b?" is-selected":""}`,children:a.name},b)})]})]})}),(0,d.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,d.jsx)("span",{className:"add-project-modal__selection-label",children:"Selected"}),(0,d.jsx)("span",{className:"add-project-modal__selection-path",children:w||"No directory selected"})]}),(0,d.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,d.jsx)("label",{className:"add-project-modal__selection-label",htmlFor:"project-id-input",children:"Project ID"}),(0,d.jsx)("input",{id:"project-id-input",value:I,onChange:a=>J(a.target.value),className:"add-project-modal__selection-path"})]}),(0,d.jsxs)("div",{className:"add-project-modal__pathbar add-project-modal__pathbar--selection",children:[(0,d.jsx)("label",{className:"add-project-modal__selection-label",htmlFor:"project-name-input",children:"Project name"}),(0,d.jsx)("input",{id:"project-name-input",value:K,onChange:a=>L(a.target.value),className:"add-project-modal__selection-path"})]}),W,(0,d.jsxs)("div",{className:"add-project-modal__footer",children:[(0,d.jsxs)("div",{className:"add-project-modal__foldercount",children:[N.length," folders"]}),(0,d.jsxs)("div",{className:"add-project-modal__actions",children:[(0,d.jsx)("button",{type:"button",onClick:b,className:"add-project-modal__ghostbtn",children:"Cancel"}),(0,d.jsx)("button",{type:"button",onClick:()=>void U(),disabled:!T||f,className:"add-project-modal__primarybtn",children:f?"Adding…":"Add project"})]})]})]})})}var x=c(81407);function y({open:a,projectId:b,onClose:c}){let e=(0,g.useRef)(null),[f,h]=(0,g.useState)(!1),[i,j]=(0,g.useState)(null),[k,l]=(0,g.useState)(null),m=(0,g.useMemo)(()=>k&&b?{agent:k.agent??"",runtime:k.runtime??"",trackerPlugin:k.tracker?.plugin??"",scmPlugin:k.scm?.plugin??"",reactions:JSON.stringify(k.reactions??{},null,2),identity:{projectId:b,path:k.path,storageKey:k.storageKey??"",repo:k.repo??"",defaultBranch:k.defaultBranch??"main"}}:null,[k,b]);return a&&b?(0,d.jsx)("div",{className:"project-settings-modal-backdrop",onClick:c,children:(0,d.jsxs)("div",{ref:e,role:"dialog","aria-modal":"true","aria-label":"Project settings",className:"project-settings-modal",tabIndex:-1,onClick:a=>a.stopPropagation(),children:[(0,d.jsxs)("div",{className:"project-settings-modal__header",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"project-settings-modal__eyebrow",children:"Project settings"}),(0,d.jsx)("h2",{className:"project-settings-modal__title",children:k?.name??b})]}),(0,d.jsx)("button",{type:"button","aria-label":"Close",onClick:c,className:"project-settings-modal__close",children:"\xd7"})]}),(0,d.jsxs)("div",{className:"project-settings-modal__body",children:[f?(0,d.jsx)("div",{className:"project-settings-modal__state",children:"Loading project settings…"}):null,!f&&i?(0,d.jsx)("div",{role:"alert",className:"project-settings-modal__state project-settings-modal__state--error",children:i}):null,f||i||!m?null:(0,d.jsx)(x.ProjectSettingsForm,{projectId:b,initialValues:m})]})]})}):null}function z({level:a}){return(0,d.jsx)("div",{className:(0,i.cn)("sidebar-session-dot shrink-0 rounded-full","working"===a&&"sidebar-session-dot--glow"),"data-level":a})}function A(){return!1}let B={working:"working",pending:"pending",review:"review",respond:"respond",action:"action",merge:"merge",done:"done"};function C(a){return 0===a.projects.length?null:(0,d.jsx)(D,{...a})}function D({projects:a,sessions:b,activeProjectId:c,activeSessionId:e,loading:o=!1,error:p=!1,onRetry:q,collapsed:r=!1,onToggleCollapsed:s,onMobileClose:t}){let u=(0,h.useRouter)(),v=o||null===b,[x,C]=(0,g.useState)(()=>new Set(c&&"all"!==c?[c]:[])),[D,E]=(0,g.useState)(!1),[F,G]=(0,g.useState)(!1),[H,I]=(0,g.useState)(A),[J,K]=(0,g.useState)(!1),[L,M]=(0,g.useState)(null),[N,O]=(0,g.useState)(null),[P,Q]=(0,g.useState)(null),[R,S]=(0,g.useState)(new Set),[T,U]=(0,g.useState)(!1),V=(0,g.useRef)(null),W=(0,g.useRef)(null),X=(0,g.useRef)(null),Y=(0,g.useRef)(null),Z=(0,g.useMemo)(()=>a.filter(a=>!R.has(a.id)),[a,R]),$=(0,g.useMemo)(()=>new Map(Z.map(a=>[a.id,a.sessionPrefix??a.id])),[Z]),_=(0,g.useMemo)(()=>Z.map(a=>a.sessionPrefix??a.id),[Z]),aa=(0,g.useMemo)(()=>{let a=new Map,c=new Set(Z.map(a=>a.id));for(let d of b??[]){if(!c.has(d.projectId)||(0,k.tT)(d,$.get(d.projectId),_)||"killed"===d.status&&!D||"done"===(0,j.ng)(d)&&!F)continue;let b=a.get(d.projectId)??[];b.push(d),a.set(d.projectId,b)}return a},[b,$,_,Z,D,F]),ab=(a,b)=>{if(b)try{sessionStorage.setItem(`ao-session-nav:${b.id}`,JSON.stringify(b))}catch{}u.push(a),t?.()},ac=async a=>{if(window.confirm(`Remove project ${a.name} from AO? This clears its AO sessions/history and removes it from the portfolio, but keeps the repository folder on disk.`)){Q(a.id);try{let b=await fetch(`/api/projects/${encodeURIComponent(a.id)}`,{method:"DELETE"}),d=await b.json().catch(()=>null);if(!b.ok)throw Error((d&&"object"==typeof d&&"error"in d&&"string"==typeof d.error?d.error:null)??"Failed to remove project.");S(b=>new Set(b).add(a.id)),C(b=>{let c=new Set(b);return c.delete(a.id),c}),M(null),c===a.id?u.push("/"):"refresh"in u&&"function"==typeof u.refresh&&u.refresh(),t?.()}catch(a){window.alert(a instanceof Error?a.message:"Failed to remove project.")}finally{Q(null)}}};return r?(0,d.jsx)("aside",{className:(0,i.cn)("project-sidebar project-sidebar--collapsed flex flex-col h-full items-center py-2 gap-1 overflow-y-auto"),children:Z.map((a,b)=>{let f=aa.get(a.id)??[],g=a.name.slice(0,2).toUpperCase();return(0,d.jsxs)("div",{className:"flex flex-col items-center gap-0.5 w-full px-1",children:[b>0&&(0,d.jsx)("div",{className:"project-sidebar__collapsed-divider","aria-hidden":"true"}),(0,d.jsx)("a",{href:(0,m.bn)(a.id),className:(0,i.cn)("project-sidebar__collapsed-icon",c===a.id&&"project-sidebar__collapsed-icon--active"),title:a.name,"aria-label":a.name,children:(0,d.jsx)("span",{className:"project-sidebar__collapsed-abbr",children:g})}),f.slice(0,5).map(b=>{let c=(0,j.ng)(b),f=b.branch??(0,l.Pn)(b),g=(b.branch&&(0,l.mC)(b.branch)||f).replace(/\s+/g,"").slice(0,3).toUpperCase(),h=e===b.id,k=(0,m.Nc)(a.id,b.id);return(0,d.jsxs)("a",{href:k,onClick:a=>{a.metaKey||a.ctrlKey||a.shiftKey||1===a.button||(a.preventDefault(),ab(k,b))},className:(0,i.cn)("project-sidebar__collapsed-session-btn",h&&"project-sidebar__collapsed-session-btn--active"),"data-level":c,title:f,"aria-label":f,children:[(0,d.jsx)("span",{className:"project-sidebar__session-abbr-first",children:g[0]}),(0,d.jsx)("span",{className:"project-sidebar__session-abbr-rest",children:g.slice(1)})]},b.id)}),f.length>5&&(0,d.jsxs)("span",{className:"project-sidebar__collapsed-overflow",children:["+",f.length-5]})]},a.id)})}):(0,d.jsxs)("aside",{className:"project-sidebar flex h-full flex-col",children:[(0,d.jsxs)("div",{className:"project-sidebar__compact-hdr",children:[(0,d.jsx)("span",{className:"project-sidebar__sect-label",children:"Projects"}),(0,d.jsx)("button",{type:"button",className:"project-sidebar__add-btn","aria-label":"New project",onClick:()=>U(!0),children:(0,d.jsx)("svg",{fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M12 5v14M5 12h14"})})})]}),p&&b&&b.length>0?(0,d.jsxs)("div",{role:"status",className:"mx-3 mb-2 flex items-center justify-between gap-2 rounded-md border border-[var(--color-border-strong)] bg-[var(--color-bg-primary)] px-2 py-1.5 text-[11px] text-[var(--color-text-tertiary)]",children:[(0,d.jsx)("span",{children:"Failed to refresh \xb7 showing cached sessions"}),q?(0,d.jsx)("button",{type:"button",onClick:q,className:"font-medium text-[var(--color-link)] hover:underline",children:"Retry"}):null]}):null,(0,d.jsx)("div",{className:"project-sidebar__tree flex-1 overflow-y-auto overflow-x-hidden",children:Z.map(a=>{let g=aa.get(a.id)??[],h=x.has(a.id),n=c===a.id,o=!!a.resolveError,r=(0,m.bn)(a.id),s=g.length>0,u=b?.find(b=>(0,k.tT)(b,$.get(b.projectId),_)&&b.projectId===a.id);return(0,d.jsxs)("div",{className:"project-sidebar__project",children:[(0,d.jsxs)("div",{className:"project-sidebar__proj-row flex items-center",children:[o?(0,d.jsxs)("a",{href:r,onClick:a=>{a.metaKey||a.ctrlKey||a.shiftKey||1===a.button||(a.preventDefault(),ab(r))},className:(0,i.cn)("project-sidebar__proj-toggle project-sidebar__proj-toggle--link project-sidebar__proj-toggle--degraded",n&&"project-sidebar__proj-toggle--active"),"aria-current":n?"page":void 0,children:[(0,d.jsxs)("svg",{className:"project-sidebar__proj-chevron project-sidebar__proj-chevron--degraded",width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("path",{d:"M12 9v4"}),(0,d.jsx)("path",{d:"M12 17h.01"}),(0,d.jsx)("path",{d:"M10.3 3.86 1.82 18a2 2 0 0 0 1.72 3h16.92a2 2 0 0 0 1.72-3L13.7 3.86a2 2 0 0 0-3.4 0Z"})]}),(0,d.jsx)("span",{className:"project-sidebar__proj-name",children:a.name}),(0,d.jsx)("span",{className:"project-sidebar__proj-badge project-sidebar__proj-badge--degraded",children:"degraded"})]}):(0,d.jsxs)("button",{type:"button",onClick:()=>{var b;return b=a.id,void C(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},className:(0,i.cn)("project-sidebar__proj-toggle",n&&"project-sidebar__proj-toggle--active"),"aria-expanded":h,"aria-current":n?"page":void 0,children:[(0,d.jsx)("svg",{className:(0,i.cn)("project-sidebar__proj-chevron",h&&"project-sidebar__proj-chevron--open"),width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"2.5",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"m9 18 6-6-6-6"})}),(0,d.jsx)("span",{className:"project-sidebar__proj-name",children:a.name}),(0,d.jsx)("span",{className:(0,i.cn)("project-sidebar__proj-badge",s&&"project-sidebar__proj-badge--active"),children:g.length})]}),o?null:(0,d.jsx)(f(),{href:r,onClick:a=>{a.stopPropagation(),t?.()},className:"project-sidebar__proj-action","aria-label":`Open ${a.name} dashboard`,title:"Dashboard",children:(0,d.jsx)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M3 13h8V3H3zm10 8h8V11h-8zM3 21h8v-6H3zm10-10h8V3h-8z"})})}),!o&&u&&(0,d.jsx)(f(),{href:(0,m.Nc)(a.id,u.id),onClick:a=>{a.stopPropagation(),t?.()},className:"project-sidebar__proj-action","aria-label":`Open ${a.name} orchestrator`,title:"Orchestrator",children:(0,d.jsxs)("svg",{width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,d.jsx)("circle",{cx:"12",cy:"5",r:"2",fill:"currentColor",stroke:"none"}),(0,d.jsx)("path",{d:"M12 7v4M12 11H6M12 11h6M6 11v3M12 11v3M18 11v3"}),(0,d.jsx)("circle",{cx:"6",cy:"17",r:"2"}),(0,d.jsx)("circle",{cx:"12",cy:"17",r:"2"}),(0,d.jsx)("circle",{cx:"18",cy:"17",r:"2"})]})}),(0,d.jsxs)("div",{className:"project-sidebar__proj-menu",ref:L===a.id?X:void 0,children:[(0,d.jsx)("button",{type:"button",onClick:b=>{b.stopPropagation(),M(b=>b===a.id?null:a.id)},className:"project-sidebar__proj-action project-sidebar__proj-action--menu","aria-label":`Project actions for ${a.name}`,"aria-expanded":L===a.id,"aria-haspopup":"menu",title:"Project actions",children:(0,d.jsxs)("svg",{width:"12",height:"12",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"12",cy:"5",r:"1.75"}),(0,d.jsx)("circle",{cx:"12",cy:"12",r:"1.75"}),(0,d.jsx)("circle",{cx:"12",cy:"19",r:"1.75"})]})}),L===a.id?(0,d.jsxs)("div",{ref:Y,className:"project-sidebar__proj-menu-popover",role:"menu","aria-label":`${a.name} actions`,children:[(0,d.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item",role:"menuitem",onClick:()=>{M(null),O(a.id)},children:"Project settings"}),(0,d.jsx)("button",{type:"button",className:"project-sidebar__proj-menu-item project-sidebar__proj-menu-item--danger",role:"menuitem",onClick:()=>void ac(a),disabled:P===a.id,children:P===a.id?"Removing...":"Remove project"})]}):null]})]}),o?(0,d.jsx)("div",{className:"project-sidebar__degraded-note",children:"Config needs repair"}):null,!o&&h&&(0,d.jsx)("div",{className:"project-sidebar__sessions",children:v?(0,d.jsx)("div",{className:"space-y-2 px-3 py-2","aria-label":"Loading sessions",children:Array.from({length:3},(b,c)=>(0,d.jsxs)("div",{className:"flex items-center gap-3 border border-[var(--color-border-subtle)] bg-[var(--color-bg-surface)] px-2 py-2",children:[(0,d.jsx)("div",{className:"h-2 w-2 shrink-0 animate-pulse bg-[var(--color-border-strong)]"}),(0,d.jsx)("div",{className:"h-3 flex-1 animate-pulse bg-[var(--color-bg-primary)]"}),(0,d.jsx)("div",{className:"h-3 w-12 animate-pulse bg-[var(--color-bg-primary)]"})]},`${a.id}-loading-${c}`))}):g.length>0?g.map(b=>{let c=(0,j.ng)(b),f=e===b.id,g=b.branch??(0,l.Pn)(b),h=(0,m.Nc)(a.id,b.id);return(0,d.jsxs)("a",{href:h,onClick:a=>{a.metaKey||a.ctrlKey||a.shiftKey||1===a.button||(a.preventDefault(),ab(h,b))},className:(0,i.cn)("project-sidebar__sess-row",f&&"project-sidebar__sess-row--active"),"aria-current":f?"page":void 0,"aria-label":`Open ${g}`,children:[(0,d.jsx)(z,{level:c}),(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("span",{className:(0,i.cn)("project-sidebar__sess-label",f&&"project-sidebar__sess-label--active"),children:g}),H?(0,d.jsxs)("div",{className:"project-sidebar__sess-meta",children:[(0,d.jsx)("span",{className:"project-sidebar__sess-id",children:b.id}),(0,d.jsx)("span",{className:"project-sidebar__sess-status",children:B[c]})]}):null]}),H?null:(0,d.jsx)("span",{className:"project-sidebar__sess-status project-sidebar__sess-status--inline",children:B[c]})]},b.id)}):p?(0,d.jsxs)("div",{className:"px-3 py-2",children:[(0,d.jsx)("div",{className:"project-sidebar__empty",children:"Failed to load sessions"}),(0,d.jsx)("button",{type:"button",className:"mt-2 text-xs font-medium text-[var(--color-link)] hover:underline",onClick:q,children:"Retry"})]}):(0,d.jsx)("div",{className:"project-sidebar__empty",children:"No active sessions"})})]},a.id)})}),(0,d.jsx)("div",{className:"project-sidebar__footer",children:(0,d.jsxs)("div",{className:"flex items-center gap-1 border-t border-[var(--color-border-subtle)] px-2 py-2",children:[(0,d.jsx)("button",{type:"button",onClick:()=>E(!D),className:(0,i.cn)("project-sidebar__footer-btn",D&&"project-sidebar__footer-btn--active"),"aria-pressed":D,title:D?"Hide killed sessions":"Show killed sessions","aria-label":D?"Hide killed sessions":"Show killed sessions",children:(0,d.jsxs)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("path",{d:"M12 3C7.03 3 3 7.03 3 12c0 3.1 1.5 5.84 3.8 7.55V21h2.4v-1h1.6v1h2.4v-1h1.6v1H17v-1.45A9 9 0 0 0 21 12c0-4.97-4.03-9-9-9z"}),(0,d.jsx)("circle",{cx:"9",cy:"11",r:"1.5",fill:"currentColor",stroke:"none"}),(0,d.jsx)("circle",{cx:"15",cy:"11",r:"1.5",fill:"currentColor",stroke:"none"})]})}),(0,d.jsx)("button",{type:"button",onClick:()=>G(!F),className:(0,i.cn)("project-sidebar__footer-btn",F&&"project-sidebar__footer-btn--active"),"aria-pressed":F,title:F?"Hide completed sessions":"Show completed sessions","aria-label":F?"Hide completed sessions":"Show completed sessions",children:(0,d.jsx)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24","aria-hidden":"true",children:(0,d.jsx)("path",{d:"M20 6 9 17l-5-5"})})}),(0,d.jsx)("div",{className:"flex-1"}),(0,d.jsxs)("div",{className:"project-sidebar__settings-wrap",ref:V,children:[(0,d.jsx)("button",{type:"button",onClick:()=>K(a=>!a),className:(0,i.cn)("project-sidebar__footer-btn",J&&"project-sidebar__footer-btn--active"),"aria-expanded":J,"aria-haspopup":"dialog",title:"Sidebar settings","aria-label":"Sidebar settings",children:(0,d.jsxs)("svg",{width:"13",height:"13",fill:"none",stroke:"currentColor",strokeWidth:"1.75",viewBox:"0 0 24 24","aria-hidden":"true",children:[(0,d.jsx)("circle",{cx:"12",cy:"12",r:"3"}),(0,d.jsx)("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09a1.65 1.65 0 0 0-1-1.51 1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09a1.65 1.65 0 0 0 1.51-1 1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"})]})}),J?(0,d.jsx)("div",{ref:W,className:"project-sidebar__settings-popover",role:"dialog","aria-label":"Sidebar settings",children:(0,d.jsxs)("label",{className:"project-sidebar__settings-row",children:[(0,d.jsx)("input",{type:"checkbox",checked:H,onChange:a=>I(a.target.checked)}),(0,d.jsx)("span",{children:"Show session ID"})]})}):null]}),(0,d.jsx)(n.U,{className:"project-sidebar__theme-toggle"})]})}),(0,d.jsx)(w,{open:T,onClose:()=>U(!1)}),(0,d.jsx)(y,{open:null!==N,projectId:N,onClose:()=>O(null)})]})}},37155:(a,b,c)=>{c.d(b,{CM:()=>d.CM,Kw:()=>k,N_:()=>d.N_,Ou:()=>i,QN:()=>g,U1:()=>d.U1,dG:()=>m,fZ:()=>e,nH:()=>n,ng:()=>p,of:()=>j,p$:()=>l,sZ:()=>f,wy:()=>o});var d=c(5241);function e(a){return a.mergeability.blockers.includes("API rate limited or unavailable")}function f(a){return!1===a.enriched}function g(a){return"open"===a.state&&a.mergeability.mergeable&&a.mergeability.ciPassing&&a.mergeability.approved&&a.mergeability.noConflicts}function h(a){return a.replace(/_/g," ")}function i(a){return a.lifecycle?.session?.label??h(a.status)}function j(a){return a.lifecycle?.pr?.label?a.lifecycle.pr.label:a.pr?.state?h(a.pr.state):"not created"}function k(a){return a.lifecycle?.runtime?.label??"unknown"}function l(a){return a.lifecycle?.guidance??null}function m(a){return a.lifecycle?"done"===a.lifecycle.sessionState||"terminated"===a.lifecycle.sessionState||"merged"===a.lifecycle.prState:"merged"===a.status||"killed"===a.status||"cleanup"===a.status||"done"===a.status||"terminated"===a.status||a.pr?.state==="merged"}function n(a){return a.lifecycle?m(a)||"missing"===a.lifecycle.runtimeState||"exited"===a.lifecycle.runtimeState:d.CM.has(a.status)||null!==a.activity&&d.Rt.has(a.activity)}function o(a){return a.lifecycle?("done"===a.lifecycle.sessionState||"terminated"===a.lifecycle.sessionState||"missing"===a.lifecycle.runtimeState||"exited"===a.lifecycle.runtimeState)&&"merged"!==a.lifecycle.prState&&"merged"!==a.status:!!n(a)&&a.pr?.state!=="merged"&&"merged"!==a.status}function p(a,b="detailed"){let c=function(a){if(m(a))return"done";if(a.lifecycle?.prReason==="merge_ready"||a.lifecycle?.prReason==="approved"||"mergeable"===a.status||"approved"===a.status||a.pr&&!f(a.pr)&&a.pr.mergeability.mergeable)return"merge";if(a.lifecycle?.sessionState==="detecting"||a.lifecycle?.sessionState==="needs_input"||a.lifecycle?.sessionState==="stuck"||a.status===d.SB.ERRORED||a.status===d.SB.NEEDS_INPUT||a.status===d.SB.STUCK||a.activity===d.u3.WAITING_INPUT||a.activity===d.u3.BLOCKED||a.activity===d.u3.EXITED)return"respond";if(a.lifecycle?.prReason==="ci_failing"||a.lifecycle?.prReason==="changes_requested"||"ci_failed"===a.status||"changes_requested"===a.status)return"review";if(a.pr&&!e(a.pr)&&!f(a.pr)){let b=a.pr;if(b.ciStatus===d.U1.FAILING||"changes_requested"===b.reviewDecision||!b.mergeability.noConflicts)return"review"}if(a.lifecycle?.prReason==="review_pending"||a.lifecycle?.prReason==="closed_unmerged"||"review_pending"===a.status)return"pending";if(a.pr&&!e(a.pr)&&!f(a.pr)){let b=a.pr;if(!b.isDraft&&b.unresolvedThreads>0||!b.isDraft&&("pending"===b.reviewDecision||"none"===b.reviewDecision))return"pending"}return"working"}(a);return"simple"===b&&("respond"===c||"review"===c)?"action":c}},52754:(a,b,c)=>{c.d(b,{D:()=>e,U:()=>f});var d=c(81115);let e=767;function f(a){let[b,c]=(0,d.useState)(!1);return b}},61875:(a,b,c)=>{function d(a){return a.replace(/^(?:feat|fix|chore|refactor|docs|test|ci|session|release|hotfix|feature|bugfix|build|wip|improvement)\//,"").replace(/[-_]/g," ").replace(/\b\w/g,a=>a.toUpperCase()).trim()}function e(a){if(a.pr?.title)return a.pr.title;if(a.issueTitle)return a.issueTitle;if(a.userPrompt)return a.userPrompt;if(a.branch)return d(a.branch);let b=a.metadata.pinnedSummary;return b||(a.summary&&!a.summaryIsFallback||a.summary?a.summary:a.status)}c.d(b,{Pn:()=>e,mC:()=>d})},71276:(a,b,c)=>{c.d(b,{d:()=>j,t:()=>i});var d=c(33666),e=c(81115),f=c(85489);function g(a,b){return"SHOW"===b.type?{message:b.message,variant:b.variant,key:b.key}:null}let h=(0,e.createContext)(null);function i({children:a}){let[b,c]=(0,e.useReducer)(g,null),i=(0,e.useRef)(null),j=(0,e.useRef)(0),k=(0,e.useCallback)((a,b="info")=>{null!==i.current&&clearTimeout(i.current),j.current+=1,c({type:"SHOW",message:a,variant:b,key:j.current}),i.current=setTimeout(()=>{c({type:"HIDE"}),i.current=null},3e3)},[]);return(0,d.jsxs)(h.Provider,{value:{showToast:k},children:[a,(0,d.jsx)("div",{className:"toast-container",role:"status","aria-live":"polite","aria-atomic":"true",children:b&&(0,d.jsxs)("div",{className:(0,f.cn)("toast","success"===b.variant&&"toast--success","error"===b.variant&&"toast--error","info"===b.variant&&"toast--info"),children:[(0,d.jsx)("span",{className:"toast__icon","aria-hidden":"true"}),(0,d.jsx)("span",{className:"toast__message",children:b.message})]},b.key)})]})}function j(){let a=(0,e.useContext)(h);if(!a)throw Error("useToast must be used within a ToastProvider");return a}},74566:(a,b,c)=>{c.d(b,{U:()=>g});var d=c(33666),e=c(93463),f=c(81115);function g({className:a,label:b}){let{resolvedTheme:c,setTheme:g}=(0,e.D)(),[h,i]=(0,f.useState)(!1);if(!h)return(0,d.jsx)("div",{className:a??"h-9 w-9"});let j="dark"===c;return(0,d.jsxs)("button",{onClick:()=>g(j?"light":"dark"),className:a??"flex h-9 w-9 items-center justify-center border border-[var(--color-border-strong)] bg-[var(--color-bg-elevated)] text-[var(--color-text-primary)] transition-colors hover:bg-[var(--color-bg-elevated-hover)]","aria-label":`Switch to ${j?"light":"dark"} mode`,title:`Switch to ${j?"light":"dark"} mode`,children:[j?(0,d.jsxs)("svg",{className:"h-[18px] w-[18px]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[(0,d.jsx)("circle",{cx:"12",cy:"12",r:"5"}),(0,d.jsx)("path",{d:"M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"})]}):(0,d.jsx)("svg",{className:"h-[18px] w-[18px]",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:(0,d.jsx)("path",{d:"M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"})}),b?(0,d.jsx)("span",{children:b}):null]})}},81407:(a,b,c)=>{c.d(b,{ProjectSettingsForm:()=>l});var d=c(33666),e=c(81115),f=c(50436),g=c(71276);let h="These describe which repo this is. Change them via `ao project relink`.";function i({projectId:a,initialValues:b}){let c=(0,f.useRouter)(),{showToast:h}=(0,g.d)(),[i,l]=(0,e.useState)(b.agent),[m,n]=(0,e.useState)(b.runtime),[o,p]=(0,e.useState)(b.trackerPlugin),[q,r]=(0,e.useState)(b.scmPlugin),[s,t]=(0,e.useState)(b.reactions),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(null),A=(0,e.useMemo)(()=>({agent:i.trim()||null,runtime:m.trim()||null,tracker:o.trim()?{plugin:o.trim()}:null,scm:q.trim()?{plugin:q.trim()}:null,reactions:s}),[i,m,o,q,s]),B=async()=>{let b;x(null),z(null);try{let a=s.trim();b=a?JSON.parse(a):void 0}catch{x("Reactions must be valid JSON.");return}v(!0);try{let d=await fetch(`/api/projects/${encodeURIComponent(a)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({agent:A.agent,runtime:A.runtime,tracker:A.tracker,scm:A.scm,reactions:b??null})}),e=await d.json().catch(()=>null);if(!d.ok){let a=e?.error??"Failed to save project settings.";400===d.status?x(a):z(a);return}h("Project settings updated.","success"),c.refresh()}catch{z("Network error while saving project settings.")}finally{v(!1)}};return(0,d.jsxs)("div",{className:"project-settings-form",children:[(0,d.jsxs)("section",{className:"project-settings-form__section",children:[(0,d.jsxs)("div",{className:"project-settings-form__section-header",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"project-settings-form__eyebrow",children:"Behavior"}),(0,d.jsx)("h2",{className:"project-settings-form__section-title",children:"Runtime configuration"}),(0,d.jsx)("p",{className:"project-settings-form__section-copy",children:"These values change how AO runs this project without changing which repository the project points at."})]}),(0,d.jsx)("button",{type:"button",onClick:()=>void B(),disabled:u,className:"project-settings-form__save",children:u?"Saving...":"Save changes"})]}),(0,d.jsxs)("div",{className:"project-settings-form__grid",children:[(0,d.jsx)(j,{id:"agent",label:"Agent",value:i,onChange:l,placeholder:"claude-code"}),(0,d.jsx)(j,{id:"runtime",label:"Runtime",value:m,onChange:n,placeholder:"tmux"}),(0,d.jsx)(j,{id:"tracker-plugin",label:"Tracker plugin",value:o,onChange:p,placeholder:"github"}),(0,d.jsx)(j,{id:"scm-plugin",label:"SCM plugin",value:q,onChange:r,placeholder:"github"})]}),(0,d.jsxs)("div",{className:"project-settings-form__reactions",children:[(0,d.jsx)("label",{htmlFor:"reactions",className:"project-settings-form__label",children:"Reactions"}),(0,d.jsx)("p",{className:"project-settings-form__hint",children:"JSON object keyed by reaction name. This PATCH only sends behavior fields."}),(0,d.jsx)("textarea",{id:"reactions",value:s,onChange:a=>t(a.target.value),spellCheck:!1,rows:12,className:"project-settings-form__textarea project-settings-form__textarea--mono"})]}),w?(0,d.jsx)("div",{role:"alert",className:"project-settings-form__alert project-settings-form__alert--error",children:w}):null,y?(0,d.jsxs)("div",{className:"project-settings-form__alert project-settings-form__alert--surface",children:[(0,d.jsx)("p",{className:"project-settings-form__alert-copy",children:y}),(0,d.jsx)("button",{type:"button",onClick:()=>void B(),className:"project-settings-form__retry",children:"Retry"})]}):null]}),(0,d.jsxs)("section",{className:"project-settings-form__section",children:[(0,d.jsx)("p",{className:"project-settings-form__eyebrow",children:"Identity"}),(0,d.jsx)("h2",{className:"project-settings-form__section-title",children:"Repository identity"}),(0,d.jsx)("p",{className:"project-settings-form__section-copy",children:"These fields are read-only because they define which repository AO considers this project to be."}),(0,d.jsxs)("div",{className:"project-settings-form__grid",children:[(0,d.jsx)(k,{id:"identity-project-id",label:"Project ID",value:b.identity.projectId}),(0,d.jsx)(k,{id:"identity-path",label:"Path",value:b.identity.path}),(0,d.jsx)(k,{id:"identity-storage-key",label:"Storage key",value:b.identity.storageKey}),(0,d.jsx)(k,{id:"identity-repo",label:"Repo",value:b.identity.repo}),(0,d.jsx)(k,{id:"identity-default-branch",label:"Default branch",value:b.identity.defaultBranch})]})]})]})}function j({id:a,label:b,value:c,onChange:e,placeholder:f}){return(0,d.jsxs)("label",{htmlFor:a,className:"project-settings-form__field",children:[(0,d.jsx)("span",{className:"project-settings-form__label",children:b}),(0,d.jsx)("input",{id:a,value:c,onChange:a=>e(a.target.value),placeholder:f,className:"project-settings-form__input"})]})}function k({id:a,label:b,value:c}){return(0,d.jsxs)("label",{htmlFor:a,className:"project-settings-form__field",children:[(0,d.jsx)("span",{className:"project-settings-form__label",children:b}),(0,d.jsx)("input",{id:a,value:c,disabled:!0,readOnly:!0,title:h,"aria-describedby":`${a}-tooltip`,className:"project-settings-form__input project-settings-form__input--readonly"}),(0,d.jsx)("span",{id:`${a}-tooltip`,className:"project-settings-form__hint",children:h})]})}function l(a){return(0,d.jsx)(g.t,{children:(0,d.jsx)(i,{...a})})}},85489:(a,b,c)=>{c.d(b,{cn:()=>d});function d(...a){return a.filter(Boolean).join(" ")}},88950:(a,b,c)=>{function d(a){return`/projects/${encodeURIComponent(a)}`}function e(a,b){return`${d(a)}/sessions/${encodeURIComponent(b)}`}function f(a,b,c){return`${e(a,b)}${c}`}c.d(b,{$l:()=>f,Nc:()=>e,bn:()=>d})}};