@sleep2agi/agent-network-dashboard 0.6.3-preview.56 → 0.6.3-preview.58

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 (718) hide show
  1. package/.next/BUILD_COMMIT +1 -1
  2. package/.next/BUILD_ID +1 -1
  3. package/.next/app-path-routes-manifest.json +9 -0
  4. package/.next/build-manifest.json +3 -3
  5. package/.next/diagnostics/route-bundle-stats.json +143 -93
  6. package/.next/fallback-build-manifest.json +3 -3
  7. package/.next/next-server.js.nft.json +1 -1
  8. package/.next/prerender-manifest.json +75 -19
  9. package/.next/required-server-files.js +4 -4
  10. package/.next/required-server-files.json +4 -4
  11. package/.next/routes-manifest.json +63 -0
  12. package/.next/server/app/_global-error.html +1 -1
  13. package/.next/server/app/_global-error.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  18. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/_not-found.html +2 -2
  20. package/.next/server/app/_not-found.rsc +14 -14
  21. package/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
  22. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +13 -13
  23. package/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -3
  24. package/.next/server/app/admin/page.js.nft.json +1 -1
  25. package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  26. package/.next/server/app/admin.html +2 -2
  27. package/.next/server/app/admin.rsc +16 -16
  28. package/.next/server/app/admin.segments/_full.segment.rsc +16 -16
  29. package/.next/server/app/admin.segments/_tree.segment.rsc +3 -3
  30. package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +15 -15
  31. package/.next/server/app/api/anet/host-supervisors/route.js.nft.json +1 -1
  32. package/.next/server/app/api/anet/node-config/route.js +1 -1
  33. package/.next/server/app/api/anet/node-config/route.js.nft.json +1 -1
  34. package/.next/server/app/api/hub/people/route/app-paths-manifest.json +3 -0
  35. package/.next/server/app/api/hub/people/route/build-manifest.json +12 -0
  36. package/.next/server/app/api/hub/people/route/server-reference-manifest.json +4 -0
  37. package/.next/server/app/api/hub/people/route.js +7 -0
  38. package/.next/server/app/api/hub/people/route.js.map +5 -0
  39. package/.next/server/app/api/hub/people/route.js.nft.json +1 -0
  40. package/.next/server/app/api/hub/people/route_client-reference-manifest.js +3 -0
  41. package/.next/server/app/api/hub/requirements/[id]/checklist/[itemId]/route/app-paths-manifest.json +3 -0
  42. package/.next/server/app/api/hub/requirements/[id]/checklist/[itemId]/route/build-manifest.json +12 -0
  43. package/.next/server/app/api/hub/requirements/[id]/checklist/[itemId]/route/server-reference-manifest.json +4 -0
  44. package/.next/server/app/api/hub/requirements/[id]/checklist/[itemId]/route.js +7 -0
  45. package/.next/server/app/api/hub/requirements/[id]/checklist/[itemId]/route.js.map +5 -0
  46. package/.next/server/app/api/hub/requirements/[id]/checklist/[itemId]/route.js.nft.json +1 -0
  47. package/.next/server/app/api/hub/requirements/[id]/checklist/[itemId]/route_client-reference-manifest.js +3 -0
  48. package/.next/server/app/api/hub/requirements/[id]/comments/route/app-paths-manifest.json +3 -0
  49. package/.next/server/app/api/hub/requirements/[id]/comments/route/build-manifest.json +12 -0
  50. package/.next/server/app/api/hub/requirements/[id]/comments/route/server-reference-manifest.json +4 -0
  51. package/.next/server/app/api/hub/requirements/[id]/comments/route.js +7 -0
  52. package/.next/server/app/api/hub/requirements/[id]/comments/route.js.map +5 -0
  53. package/.next/server/app/api/hub/requirements/[id]/comments/route.js.nft.json +1 -0
  54. package/.next/server/app/api/hub/requirements/[id]/comments/route_client-reference-manifest.js +3 -0
  55. package/.next/server/app/api/hub/requirements/[id]/route/app-paths-manifest.json +3 -0
  56. package/.next/server/app/api/hub/requirements/[id]/route/build-manifest.json +12 -0
  57. package/.next/server/app/api/hub/requirements/[id]/route/server-reference-manifest.json +4 -0
  58. package/.next/server/app/api/hub/requirements/[id]/route.js +7 -0
  59. package/.next/server/app/api/hub/requirements/[id]/route.js.map +5 -0
  60. package/.next/server/app/api/hub/requirements/[id]/route.js.nft.json +1 -0
  61. package/.next/server/app/api/hub/requirements/[id]/route_client-reference-manifest.js +3 -0
  62. package/.next/server/app/api/hub/requirements/events/route/app-paths-manifest.json +3 -0
  63. package/.next/server/app/api/hub/requirements/events/route/build-manifest.json +12 -0
  64. package/.next/server/app/api/hub/requirements/events/route/server-reference-manifest.json +4 -0
  65. package/.next/server/app/api/hub/requirements/events/route.js +7 -0
  66. package/.next/server/app/api/hub/requirements/events/route.js.map +5 -0
  67. package/.next/server/app/api/hub/requirements/events/route.js.nft.json +1 -0
  68. package/.next/server/app/api/hub/requirements/events/route_client-reference-manifest.js +3 -0
  69. package/.next/server/app/api/hub/requirements/route/app-paths-manifest.json +3 -0
  70. package/.next/server/app/api/hub/requirements/route/build-manifest.json +12 -0
  71. package/.next/server/app/api/hub/requirements/route/server-reference-manifest.json +4 -0
  72. package/.next/server/app/api/hub/requirements/route.js +7 -0
  73. package/.next/server/app/api/hub/requirements/route.js.map +5 -0
  74. package/.next/server/app/api/hub/requirements/route.js.nft.json +1 -0
  75. package/.next/server/app/api/hub/requirements/route_client-reference-manifest.js +3 -0
  76. package/.next/server/app/index.html +2 -2
  77. package/.next/server/app/index.rsc +16 -16
  78. package/.next/server/app/index.segments/__PAGE__.segment.rsc +15 -15
  79. package/.next/server/app/index.segments/_full.segment.rsc +16 -16
  80. package/.next/server/app/index.segments/_tree.segment.rsc +3 -3
  81. package/.next/server/app/login/page.js.nft.json +1 -1
  82. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/login.html +2 -2
  84. package/.next/server/app/login.rsc +16 -16
  85. package/.next/server/app/login.segments/_full.segment.rsc +16 -16
  86. package/.next/server/app/login.segments/_tree.segment.rsc +3 -3
  87. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +15 -15
  88. package/.next/server/app/logs/page.js.nft.json +1 -1
  89. package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
  90. package/.next/server/app/logs.html +2 -2
  91. package/.next/server/app/logs.rsc +16 -16
  92. package/.next/server/app/logs.segments/_full.segment.rsc +16 -16
  93. package/.next/server/app/logs.segments/_tree.segment.rsc +3 -3
  94. package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +15 -15
  95. package/.next/server/app/messages/page.js.nft.json +1 -1
  96. package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
  97. package/.next/server/app/messages.html +2 -2
  98. package/.next/server/app/messages.rsc +16 -16
  99. package/.next/server/app/messages.segments/_full.segment.rsc +16 -16
  100. package/.next/server/app/messages.segments/_tree.segment.rsc +3 -3
  101. package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +15 -15
  102. package/.next/server/app/node/page.js.nft.json +1 -1
  103. package/.next/server/app/node/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/node.html +2 -2
  105. package/.next/server/app/node.rsc +16 -16
  106. package/.next/server/app/node.segments/_full.segment.rsc +16 -16
  107. package/.next/server/app/node.segments/_tree.segment.rsc +3 -3
  108. package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +15 -15
  109. package/.next/server/app/nodes/[alias]/page.js.nft.json +1 -1
  110. package/.next/server/app/nodes/[alias]/page_client-reference-manifest.js +1 -1
  111. package/.next/server/app/nodes/page.js.nft.json +1 -1
  112. package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
  113. package/.next/server/app/nodes.html +2 -2
  114. package/.next/server/app/nodes.rsc +16 -16
  115. package/.next/server/app/nodes.segments/_full.segment.rsc +16 -16
  116. package/.next/server/app/nodes.segments/_tree.segment.rsc +3 -3
  117. package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +15 -15
  118. package/.next/server/app/org/page/app-paths-manifest.json +3 -0
  119. package/.next/server/app/org/page/build-manifest.json +20 -0
  120. package/.next/server/app/org/page/next-font-manifest.json +11 -0
  121. package/.next/server/app/org/page/react-loadable-manifest.json +1 -0
  122. package/.next/server/app/org/page/server-reference-manifest.json +4 -0
  123. package/.next/server/app/org/page.js +13 -0
  124. package/.next/server/app/org/page.js.map +5 -0
  125. package/.next/server/app/org/page.js.nft.json +1 -0
  126. package/.next/server/app/org/page_client-reference-manifest.js +3 -0
  127. package/.next/server/app/org.html +12 -0
  128. package/.next/server/app/org.meta +26 -0
  129. package/.next/server/app/org.rsc +27 -0
  130. package/.next/server/app/org.segments/_full.segment.rsc +27 -0
  131. package/.next/server/app/org.segments/_tree.segment.rsc +5 -0
  132. package/.next/server/app/org.segments/org/__PAGE__.segment.rsc +32 -0
  133. package/.next/server/app/page.js.nft.json +1 -1
  134. package/.next/server/app/page_client-reference-manifest.js +1 -1
  135. package/.next/server/app/providers/page.js.nft.json +1 -1
  136. package/.next/server/app/providers/page_client-reference-manifest.js +1 -1
  137. package/.next/server/app/providers.html +2 -2
  138. package/.next/server/app/providers.rsc +16 -16
  139. package/.next/server/app/providers.segments/_full.segment.rsc +16 -16
  140. package/.next/server/app/providers.segments/_tree.segment.rsc +3 -3
  141. package/.next/server/app/providers.segments/providers/__PAGE__.segment.rsc +15 -15
  142. package/.next/server/app/requirements/[id]/page/app-paths-manifest.json +3 -0
  143. package/.next/server/app/requirements/[id]/page/build-manifest.json +20 -0
  144. package/.next/server/app/requirements/[id]/page/next-font-manifest.json +11 -0
  145. package/.next/server/app/requirements/[id]/page/react-loadable-manifest.json +1 -0
  146. package/.next/server/app/requirements/[id]/page/server-reference-manifest.json +4 -0
  147. package/.next/server/app/requirements/[id]/page.js +13 -0
  148. package/.next/server/app/requirements/[id]/page.js.map +5 -0
  149. package/.next/server/app/requirements/[id]/page.js.nft.json +1 -0
  150. package/.next/server/app/requirements/[id]/page_client-reference-manifest.js +3 -0
  151. package/.next/server/app/requirements/page/app-paths-manifest.json +3 -0
  152. package/.next/server/app/requirements/page/build-manifest.json +20 -0
  153. package/.next/server/app/requirements/page/next-font-manifest.json +11 -0
  154. package/.next/server/app/requirements/page/react-loadable-manifest.json +1 -0
  155. package/.next/server/app/requirements/page/server-reference-manifest.json +4 -0
  156. package/.next/server/app/requirements/page.js +13 -0
  157. package/.next/server/app/requirements/page.js.map +5 -0
  158. package/.next/server/app/requirements/page.js.nft.json +1 -0
  159. package/.next/server/app/requirements/page_client-reference-manifest.js +3 -0
  160. package/.next/server/app/requirements.html +12 -0
  161. package/.next/server/app/requirements.meta +26 -0
  162. package/.next/server/app/requirements.rsc +27 -0
  163. package/.next/server/app/requirements.segments/_full.segment.rsc +27 -0
  164. package/.next/server/app/requirements.segments/_tree.segment.rsc +5 -0
  165. package/.next/server/app/requirements.segments/requirements/__PAGE__.segment.rsc +32 -0
  166. package/.next/server/app/scheduled-tasks/page.js.nft.json +1 -1
  167. package/.next/server/app/scheduled-tasks/page_client-reference-manifest.js +1 -1
  168. package/.next/server/app/scheduled-tasks.html +2 -2
  169. package/.next/server/app/scheduled-tasks.rsc +16 -16
  170. package/.next/server/app/scheduled-tasks.segments/_full.segment.rsc +16 -16
  171. package/.next/server/app/scheduled-tasks.segments/_tree.segment.rsc +3 -3
  172. package/.next/server/app/scheduled-tasks.segments/scheduled-tasks/__PAGE__.segment.rsc +15 -15
  173. package/.next/server/app/server-logs/page.js.nft.json +1 -1
  174. package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
  175. package/.next/server/app/server-logs.html +2 -2
  176. package/.next/server/app/server-logs.rsc +16 -16
  177. package/.next/server/app/server-logs.segments/_full.segment.rsc +16 -16
  178. package/.next/server/app/server-logs.segments/_tree.segment.rsc +3 -3
  179. package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +15 -15
  180. package/.next/server/app/servers/page.js.nft.json +1 -1
  181. package/.next/server/app/servers/page_client-reference-manifest.js +1 -1
  182. package/.next/server/app/servers.html +2 -2
  183. package/.next/server/app/servers.rsc +16 -16
  184. package/.next/server/app/servers.segments/_full.segment.rsc +16 -16
  185. package/.next/server/app/servers.segments/_tree.segment.rsc +3 -3
  186. package/.next/server/app/servers.segments/servers/__PAGE__.segment.rsc +15 -15
  187. package/.next/server/app/settings/networks/page.js.nft.json +1 -1
  188. package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
  189. package/.next/server/app/settings/networks.html +2 -2
  190. package/.next/server/app/settings/networks.rsc +16 -16
  191. package/.next/server/app/settings/networks.segments/_full.segment.rsc +16 -16
  192. package/.next/server/app/settings/networks.segments/_tree.segment.rsc +3 -3
  193. package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +15 -15
  194. package/.next/server/app/settings/page.js.nft.json +1 -1
  195. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  196. package/.next/server/app/settings/tokens/page.js.nft.json +1 -1
  197. package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
  198. package/.next/server/app/settings/tokens.html +2 -2
  199. package/.next/server/app/settings/tokens.rsc +16 -16
  200. package/.next/server/app/settings/tokens.segments/_full.segment.rsc +16 -16
  201. package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +3 -3
  202. package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +15 -15
  203. package/.next/server/app/settings.html +2 -2
  204. package/.next/server/app/settings.rsc +16 -16
  205. package/.next/server/app/settings.segments/_full.segment.rsc +16 -16
  206. package/.next/server/app/settings.segments/_tree.segment.rsc +3 -3
  207. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +15 -15
  208. package/.next/server/app/skillhub/page.js.nft.json +1 -1
  209. package/.next/server/app/skillhub/page_client-reference-manifest.js +1 -1
  210. package/.next/server/app/skillhub.html +2 -2
  211. package/.next/server/app/skillhub.rsc +16 -16
  212. package/.next/server/app/skillhub.segments/_full.segment.rsc +16 -16
  213. package/.next/server/app/skillhub.segments/_tree.segment.rsc +3 -3
  214. package/.next/server/app/skillhub.segments/skillhub/__PAGE__.segment.rsc +15 -15
  215. package/.next/server/app/tasks/[id]/page.js.nft.json +1 -1
  216. package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  217. package/.next/server/app/tasks/page.js.nft.json +1 -1
  218. package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  219. package/.next/server/app/tasks.html +2 -2
  220. package/.next/server/app/tasks.rsc +16 -16
  221. package/.next/server/app/tasks.segments/_full.segment.rsc +16 -16
  222. package/.next/server/app/tasks.segments/_tree.segment.rsc +3 -3
  223. package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +15 -15
  224. package/.next/server/app-paths-manifest.json +9 -0
  225. package/.next/server/chunks/1oeh_server_app_api_hub_requirements_[id]_checklist_[itemId]_route_actions_05mpe5a.js +3 -0
  226. package/.next/server/chunks/1oeh_server_app_api_hub_requirements_[id]_checklist_[itemId]_route_actions_05mpe5a.js.map +1 -0
  227. package/.next/server/chunks/1oeh_server_app_api_hub_requirements_[id]_comments_route_actions_1lv4qr1.js +3 -0
  228. package/.next/server/chunks/1oeh_server_app_api_hub_requirements_[id]_comments_route_actions_1lv4qr1.js.map +1 -0
  229. package/.next/server/chunks/[root-of-the-server]__0-wvy_a._.js +1 -1
  230. package/.next/server/chunks/[root-of-the-server]__0-wvy_a._.js.map +1 -1
  231. package/.next/server/chunks/[root-of-the-server]__053z4wp._.js +3 -0
  232. package/.next/server/chunks/[root-of-the-server]__053z4wp._.js.map +1 -0
  233. package/.next/server/chunks/[root-of-the-server]__0if0bw1._.js +3 -0
  234. package/.next/server/chunks/[root-of-the-server]__0if0bw1._.js.map +1 -0
  235. package/.next/server/chunks/[root-of-the-server]__0liwkmx._.js +1 -1
  236. package/.next/server/chunks/[root-of-the-server]__0liwkmx._.js.map +1 -1
  237. package/.next/server/chunks/[root-of-the-server]__0q9xwca._.js +3 -0
  238. package/.next/server/chunks/[root-of-the-server]__0q9xwca._.js.map +1 -0
  239. package/.next/server/chunks/[root-of-the-server]__1941b2h._.js +3 -0
  240. package/.next/server/chunks/[root-of-the-server]__1941b2h._.js.map +1 -0
  241. package/.next/server/chunks/[root-of-the-server]__1_rzyvn._.js +3 -0
  242. package/.next/server/chunks/[root-of-the-server]__1_rzyvn._.js.map +1 -0
  243. package/.next/server/chunks/[root-of-the-server]__1vua9gf._.js +3 -0
  244. package/.next/server/chunks/[root-of-the-server]__1vua9gf._.js.map +1 -0
  245. package/.next/server/chunks/_05lpz54._.js +1 -1
  246. package/.next/server/chunks/_05lpz54._.js.map +1 -1
  247. package/.next/server/chunks/_next-internal_server_app_api_hub_people_route_actions_01pw78e.js +3 -0
  248. package/.next/server/chunks/_next-internal_server_app_api_hub_people_route_actions_01pw78e.js.map +1 -0
  249. package/.next/server/chunks/_next-internal_server_app_api_hub_requirements_[id]_route_actions_1jkq5c6.js +3 -0
  250. package/.next/server/chunks/_next-internal_server_app_api_hub_requirements_[id]_route_actions_1jkq5c6.js.map +1 -0
  251. package/.next/server/chunks/_next-internal_server_app_api_hub_requirements_events_route_actions_1ypnpu5.js +3 -0
  252. package/.next/server/chunks/_next-internal_server_app_api_hub_requirements_events_route_actions_1ypnpu5.js.map +1 -0
  253. package/.next/server/chunks/_next-internal_server_app_api_hub_requirements_route_actions_1lyeno6.js +3 -0
  254. package/.next/server/chunks/_next-internal_server_app_api_hub_requirements_route_actions_1lyeno6.js.map +1 -0
  255. package/.next/server/chunks/ssr/[root-of-the-server]__0-94ipy._.js +3 -0
  256. package/.next/server/chunks/ssr/[root-of-the-server]__0-94ipy._.js.map +1 -0
  257. package/.next/server/chunks/ssr/[root-of-the-server]__09n7eih._.js +3 -0
  258. package/.next/server/chunks/ssr/[root-of-the-server]__09n7eih._.js.map +1 -0
  259. package/.next/server/chunks/ssr/[root-of-the-server]__0ol09h3._.js +3 -0
  260. package/.next/server/chunks/ssr/[root-of-the-server]__0ol09h3._.js.map +1 -0
  261. package/.next/server/chunks/ssr/[root-of-the-server]__14k36ti._.js +3 -0
  262. package/.next/server/chunks/ssr/[root-of-the-server]__14k36ti._.js.map +1 -0
  263. package/.next/server/chunks/ssr/[root-of-the-server]__1bn1jjm._.js +3 -0
  264. package/.next/server/chunks/ssr/[root-of-the-server]__1bn1jjm._.js.map +1 -0
  265. package/.next/server/chunks/ssr/[root-of-the-server]__1ovdbox._.js +1 -1
  266. package/.next/server/chunks/ssr/[root-of-the-server]__1ovdbox._.js.map +1 -1
  267. package/.next/server/chunks/ssr/_0q4m25o._.js +0 -0
  268. package/.next/server/chunks/ssr/_0q4m25o._.js.map +1 -1
  269. package/.next/server/chunks/ssr/_1z1o6o3._.js +0 -0
  270. package/.next/server/chunks/ssr/_1z1o6o3._.js.map +1 -1
  271. package/.next/server/chunks/ssr/_next-internal_server_app_org_page_actions_0hbcef1.js +3 -0
  272. package/.next/server/chunks/ssr/_next-internal_server_app_org_page_actions_0hbcef1.js.map +1 -0
  273. package/.next/server/chunks/ssr/_next-internal_server_app_requirements_[id]_page_actions_1wjoy4l.js +3 -0
  274. package/.next/server/chunks/ssr/_next-internal_server_app_requirements_[id]_page_actions_1wjoy4l.js.map +1 -0
  275. package/.next/server/chunks/ssr/_next-internal_server_app_requirements_page_actions_0x9m0gy.js +3 -0
  276. package/.next/server/chunks/ssr/_next-internal_server_app_requirements_page_actions_0x9m0gy.js.map +1 -0
  277. package/.next/server/chunks/ssr/app_05mfyco._.js +3 -0
  278. package/.next/server/chunks/ssr/app_05mfyco._.js.map +1 -0
  279. package/.next/server/chunks/ssr/{app_0_s8u96._.js → app_07bzc6w._.js} +1 -1
  280. package/.next/server/chunks/ssr/app_099f0wg._.js +3 -0
  281. package/.next/server/chunks/ssr/app_099f0wg._.js.map +1 -0
  282. package/.next/server/chunks/ssr/{app_1oxcq68._.js → app_0g7oz9w._.js} +1 -1
  283. package/.next/server/chunks/ssr/app_0iz553k._.js +1 -1
  284. package/.next/server/chunks/ssr/app_0iz553k._.js.map +1 -1
  285. package/.next/server/chunks/ssr/app_0los-eu._.js +1 -1
  286. package/.next/server/chunks/ssr/app_0los-eu._.js.map +1 -1
  287. package/.next/server/chunks/ssr/{app_0x7s72b._.js → app_0tt2ueo._.js} +1 -1
  288. package/.next/server/chunks/ssr/{app_081zy6c._.js → app_0ugqkd7._.js} +1 -1
  289. package/.next/server/chunks/ssr/app_1auk3il._.js +11 -0
  290. package/.next/server/chunks/ssr/app_1auk3il._.js.map +1 -0
  291. package/.next/server/chunks/ssr/{app_0o4bxq0._.js → app_1e91uc-._.js} +1 -1
  292. package/.next/server/chunks/ssr/{app_1psh956._.js → app_1f96aq_._.js} +1 -1
  293. package/.next/server/chunks/ssr/app_1rma_8a._.js +11 -0
  294. package/.next/server/chunks/ssr/app_1rma_8a._.js.map +1 -0
  295. package/.next/server/chunks/ssr/{app_0_dhiwi._.js → app_1ua57bx._.js} +1 -1
  296. package/.next/server/chunks/ssr/app_components_04a31va._.js +1 -1
  297. package/.next/server/chunks/ssr/app_components_04a31va._.js.map +1 -1
  298. package/.next/server/chunks/ssr/{app_lib_10o69j_._.js → app_lib_20-pe_0._.js} +2 -2
  299. package/.next/server/chunks/ssr/{app_lib_10o69j_._.js.map → app_lib_20-pe_0._.js.map} +1 -1
  300. package/.next/server/chunks/ssr/app_nodes_NodesView_tsx_1w6_d8p._.js +2 -2
  301. package/.next/server/chunks/ssr/app_nodes_NodesView_tsx_1w6_d8p._.js.map +1 -1
  302. package/.next/server/chunks/ssr/app_page_tsx_0pxmutw._.js +1 -1
  303. package/.next/server/chunks/ssr/app_page_tsx_0pxmutw._.js.map +1 -1
  304. package/.next/server/chunks/ssr/app_scheduled-tasks_page_tsx_0xs70_6._.js +1 -1
  305. package/.next/server/chunks/ssr/app_scheduled-tasks_page_tsx_0xs70_6._.js.map +1 -1
  306. package/.next/server/chunks/ssr/app_tasks_TasksView_tsx_068vqml._.js +1 -1
  307. package/.next/server/chunks/ssr/app_tasks_TasksView_tsx_068vqml._.js.map +1 -1
  308. package/.next/server/functions-config-manifest.json +4 -0
  309. package/.next/server/middleware-build-manifest.js +3 -3
  310. package/.next/server/middleware.js.nft.json +1 -1
  311. package/.next/server/next-font-manifest.js +1 -1
  312. package/.next/server/next-font-manifest.json +12 -0
  313. package/.next/server/pages/404.html +2 -2
  314. package/.next/server/pages/500.html +1 -1
  315. package/.next/server/prefetch-hints.json +28 -0
  316. package/.next/server/server-reference-manifest.js +1 -1
  317. package/.next/server/server-reference-manifest.json +1 -1
  318. package/.next/static/{trj9RsCWuEDMfq9BuoKfl → FEaCQpBc05SBAWTBHRt5h}/_clientMiddlewareManifest.js +4 -0
  319. package/.next/static/chunks/{27b9kqyo7bmdr.js → 08-obrj2goweb.js} +2 -2
  320. package/.next/static/chunks/0fih4pzed1syn.js +9 -0
  321. package/.next/static/chunks/0iiu4-g5k8jcq.js +1 -0
  322. package/.next/static/chunks/{37booeyruo9_l.js → 0iz44n632kw4w.js} +1 -1
  323. package/.next/static/chunks/0jt-1caejz1jv.js +1 -0
  324. package/.next/static/chunks/0k-4980o5t7_r.css +1 -0
  325. package/.next/static/chunks/{0agh8mvmpke4j.js → 0z9tzvfwtc16z.js} +1 -1
  326. package/.next/static/chunks/114pblaedlrqs.js +1 -0
  327. package/.next/static/chunks/1tcaw8g6u6o-4.js +1 -0
  328. package/.next/static/chunks/1v5-qgib9884o.js +0 -0
  329. package/.next/static/chunks/{02303d1rbqx74.js → 2-x9r-1t3c1mn.js} +1 -1
  330. package/.next/static/chunks/{28o3ssg0_q2n-.js → 26bpf-fpc6zpt.js} +1 -1
  331. package/.next/static/chunks/2anlzel60my8y.js +2 -0
  332. package/.next/static/chunks/{3jxk7q1jxyvol.js → 2divamiv1re3v.js} +1 -1
  333. package/.next/static/chunks/3cb3_kcec7bms.js +1 -0
  334. package/.next/static/chunks/{233p45nuh4m5b.css → 3d-1vk5hzu5rq.css} +2 -2
  335. package/.next/static/chunks/3u059pjgl4gcw.js +1 -0
  336. package/.next/static/chunks/3vv0y_64bnnsf.js +1 -0
  337. package/.next/trace +2 -2
  338. package/.next/trace-build +1 -1
  339. package/.next/types/routes.d.ts +11 -2
  340. package/.next/types/validator.ts +81 -0
  341. package/.vercel/.env.development.local +2 -0
  342. package/.vercel/.env.production.local +25 -0
  343. package/.vercel/README.txt +11 -0
  344. package/.vercel/output/builds.json +23 -0
  345. package/.vercel/output/config.json +489 -0
  346. package/.vercel/output/diagnostics/build-diagnostics.json +6 -0
  347. package/.vercel/output/diagnostics/cli_traces.json +1 -0
  348. package/.vercel/output/diagnostics/framework.json +1 -0
  349. package/.vercel/output/diagnostics/route-bundle-stats.json +245 -0
  350. package/.vercel/output/diagnostics/trace +2 -0
  351. package/.vercel/output/diagnostics/trace-build +1 -0
  352. package/.vercel/output/diagnostics/turbopack +0 -0
  353. package/.vercel/output/functions/_global-error.prerender-config.json +38 -0
  354. package/.vercel/output/functions/_global-error.prerender-fallback.html +1 -0
  355. package/.vercel/output/functions/_global-error.rsc.func/.next/routes-manifest.json +1 -0
  356. package/.vercel/output/functions/_global-error.rsc.func/.next/server/app-paths-manifest.json +1 -0
  357. package/.vercel/output/functions/_global-error.rsc.func/.next/server/pages-manifest.json +1 -0
  358. package/.vercel/output/functions/_global-error.rsc.func/.vc-config.json +807 -0
  359. package/.vercel/output/functions/_global-error.rsc.func/___next_launcher.cjs +68 -0
  360. package/.vercel/output/functions/_global-error.rsc.prerender-config.json +38 -0
  361. package/.vercel/output/functions/_global-error.rsc.prerender-fallback.rsc +15 -0
  362. package/.vercel/output/functions/_global-error.segments/__PAGE__.segment.rsc.prerender-config.json +28 -0
  363. package/.vercel/output/functions/_global-error.segments/__PAGE__.segment.rsc.prerender-fallback.rsc +5 -0
  364. package/.vercel/output/functions/_global-error.segments/_full.segment.rsc.prerender-config.json +28 -0
  365. package/.vercel/output/functions/_global-error.segments/_full.segment.rsc.prerender-fallback.rsc +15 -0
  366. package/.vercel/output/functions/_global-error.segments/_head.segment.rsc.prerender-config.json +28 -0
  367. package/.vercel/output/functions/_global-error.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  368. package/.vercel/output/functions/_global-error.segments/_index.segment.rsc.prerender-config.json +28 -0
  369. package/.vercel/output/functions/_global-error.segments/_index.segment.rsc.prerender-fallback.rsc +5 -0
  370. package/.vercel/output/functions/_global-error.segments/_tree.segment.rsc.prerender-config.json +28 -0
  371. package/.vercel/output/functions/_global-error.segments/_tree.segment.rsc.prerender-fallback.rsc +1 -0
  372. package/.vercel/output/functions/_middleware.func/.vc-config.json +107 -0
  373. package/.vercel/output/functions/_middleware.func/___next_launcher.cjs +135 -0
  374. package/.vercel/output/functions/_not-found.prerender-config.json +38 -0
  375. package/.vercel/output/functions/_not-found.prerender-fallback.html +12 -0
  376. package/.vercel/output/functions/_not-found.rsc.prerender-config.json +38 -0
  377. package/.vercel/output/functions/_not-found.rsc.prerender-fallback.rsc +21 -0
  378. package/.vercel/output/functions/_not-found.segments/_full.segment.rsc.prerender-config.json +28 -0
  379. package/.vercel/output/functions/_not-found.segments/_full.segment.rsc.prerender-fallback.rsc +21 -0
  380. package/.vercel/output/functions/_not-found.segments/_head.segment.rsc.prerender-config.json +28 -0
  381. package/.vercel/output/functions/_not-found.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  382. package/.vercel/output/functions/_not-found.segments/_index.segment.rsc.prerender-config.json +28 -0
  383. package/.vercel/output/functions/_not-found.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  384. package/.vercel/output/functions/_not-found.segments/_not-found/__PAGE__.segment.rsc.prerender-config.json +28 -0
  385. package/.vercel/output/functions/_not-found.segments/_not-found/__PAGE__.segment.rsc.prerender-fallback.rsc +5 -0
  386. package/.vercel/output/functions/_not-found.segments/_not-found.segment.rsc.prerender-config.json +28 -0
  387. package/.vercel/output/functions/_not-found.segments/_not-found.segment.rsc.prerender-fallback.rsc +5 -0
  388. package/.vercel/output/functions/_not-found.segments/_tree.segment.rsc.prerender-config.json +28 -0
  389. package/.vercel/output/functions/_not-found.segments/_tree.segment.rsc.prerender-fallback.rsc +3 -0
  390. package/.vercel/output/functions/admin.prerender-config.json +37 -0
  391. package/.vercel/output/functions/admin.prerender-fallback.html +12 -0
  392. package/.vercel/output/functions/admin.rsc.prerender-config.json +38 -0
  393. package/.vercel/output/functions/admin.rsc.prerender-fallback.rsc +27 -0
  394. package/.vercel/output/functions/admin.segments/_full.segment.rsc.prerender-config.json +28 -0
  395. package/.vercel/output/functions/admin.segments/_full.segment.rsc.prerender-fallback.rsc +27 -0
  396. package/.vercel/output/functions/admin.segments/_head.segment.rsc.prerender-config.json +28 -0
  397. package/.vercel/output/functions/admin.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  398. package/.vercel/output/functions/admin.segments/_index.segment.rsc.prerender-config.json +28 -0
  399. package/.vercel/output/functions/admin.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  400. package/.vercel/output/functions/admin.segments/_tree.segment.rsc.prerender-config.json +28 -0
  401. package/.vercel/output/functions/admin.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  402. package/.vercel/output/functions/admin.segments/admin/__PAGE__.segment.rsc.prerender-config.json +28 -0
  403. package/.vercel/output/functions/admin.segments/admin/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  404. package/.vercel/output/functions/admin.segments/admin.segment.rsc.prerender-config.json +28 -0
  405. package/.vercel/output/functions/admin.segments/admin.segment.rsc.prerender-fallback.rsc +5 -0
  406. package/.vercel/output/functions/api/anet/config.func/.next/routes-manifest.json +1 -0
  407. package/.vercel/output/functions/api/anet/config.func/.next/server/app-paths-manifest.json +1 -0
  408. package/.vercel/output/functions/api/anet/config.func/.next/server/pages-manifest.json +1 -0
  409. package/.vercel/output/functions/api/anet/config.func/.vc-config.json +818 -0
  410. package/.vercel/output/functions/api/anet/config.func/___next_launcher.cjs +68 -0
  411. package/.vercel/output/functions/index.prerender-config.json +38 -0
  412. package/.vercel/output/functions/index.prerender-fallback.html +12 -0
  413. package/.vercel/output/functions/index.rsc.prerender-config.json +38 -0
  414. package/.vercel/output/functions/index.rsc.prerender-fallback.rsc +25 -0
  415. package/.vercel/output/functions/index.segments/__PAGE__.segment.rsc.prerender-config.json +28 -0
  416. package/.vercel/output/functions/index.segments/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  417. package/.vercel/output/functions/index.segments/_full.segment.rsc.prerender-config.json +28 -0
  418. package/.vercel/output/functions/index.segments/_full.segment.rsc.prerender-fallback.rsc +25 -0
  419. package/.vercel/output/functions/index.segments/_head.segment.rsc.prerender-config.json +28 -0
  420. package/.vercel/output/functions/index.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  421. package/.vercel/output/functions/index.segments/_index.segment.rsc.prerender-config.json +28 -0
  422. package/.vercel/output/functions/index.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  423. package/.vercel/output/functions/index.segments/_tree.segment.rsc.prerender-config.json +28 -0
  424. package/.vercel/output/functions/index.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  425. package/.vercel/output/functions/login.prerender-config.json +37 -0
  426. package/.vercel/output/functions/login.prerender-fallback.html +6 -0
  427. package/.vercel/output/functions/login.rsc.prerender-config.json +38 -0
  428. package/.vercel/output/functions/login.rsc.prerender-fallback.rsc +27 -0
  429. package/.vercel/output/functions/login.segments/_full.segment.rsc.prerender-config.json +28 -0
  430. package/.vercel/output/functions/login.segments/_full.segment.rsc.prerender-fallback.rsc +27 -0
  431. package/.vercel/output/functions/login.segments/_head.segment.rsc.prerender-config.json +28 -0
  432. package/.vercel/output/functions/login.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  433. package/.vercel/output/functions/login.segments/_index.segment.rsc.prerender-config.json +28 -0
  434. package/.vercel/output/functions/login.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  435. package/.vercel/output/functions/login.segments/_tree.segment.rsc.prerender-config.json +28 -0
  436. package/.vercel/output/functions/login.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  437. package/.vercel/output/functions/login.segments/login/__PAGE__.segment.rsc.prerender-config.json +28 -0
  438. package/.vercel/output/functions/login.segments/login/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  439. package/.vercel/output/functions/login.segments/login.segment.rsc.prerender-config.json +28 -0
  440. package/.vercel/output/functions/login.segments/login.segment.rsc.prerender-fallback.rsc +5 -0
  441. package/.vercel/output/functions/logs.prerender-config.json +37 -0
  442. package/.vercel/output/functions/logs.prerender-fallback.html +12 -0
  443. package/.vercel/output/functions/logs.rsc.prerender-config.json +38 -0
  444. package/.vercel/output/functions/logs.rsc.prerender-fallback.rsc +27 -0
  445. package/.vercel/output/functions/logs.segments/_full.segment.rsc.prerender-config.json +28 -0
  446. package/.vercel/output/functions/logs.segments/_full.segment.rsc.prerender-fallback.rsc +27 -0
  447. package/.vercel/output/functions/logs.segments/_head.segment.rsc.prerender-config.json +28 -0
  448. package/.vercel/output/functions/logs.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  449. package/.vercel/output/functions/logs.segments/_index.segment.rsc.prerender-config.json +28 -0
  450. package/.vercel/output/functions/logs.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  451. package/.vercel/output/functions/logs.segments/_tree.segment.rsc.prerender-config.json +28 -0
  452. package/.vercel/output/functions/logs.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  453. package/.vercel/output/functions/logs.segments/logs/__PAGE__.segment.rsc.prerender-config.json +28 -0
  454. package/.vercel/output/functions/logs.segments/logs/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  455. package/.vercel/output/functions/logs.segments/logs.segment.rsc.prerender-config.json +28 -0
  456. package/.vercel/output/functions/logs.segments/logs.segment.rsc.prerender-fallback.rsc +5 -0
  457. package/.vercel/output/functions/manifest.webmanifest.func/.next/routes-manifest.json +1 -0
  458. package/.vercel/output/functions/manifest.webmanifest.func/.next/server/app-paths-manifest.json +1 -0
  459. package/.vercel/output/functions/manifest.webmanifest.func/.next/server/pages-manifest.json +1 -0
  460. package/.vercel/output/functions/manifest.webmanifest.func/.vc-config.json +715 -0
  461. package/.vercel/output/functions/manifest.webmanifest.func/___next_launcher.cjs +68 -0
  462. package/.vercel/output/functions/manifest.webmanifest.prerender-config.json +38 -0
  463. package/.vercel/output/functions/manifest.webmanifest.prerender-fallback.body +1 -0
  464. package/.vercel/output/functions/messages.prerender-config.json +37 -0
  465. package/.vercel/output/functions/messages.prerender-fallback.html +12 -0
  466. package/.vercel/output/functions/messages.rsc.prerender-config.json +38 -0
  467. package/.vercel/output/functions/messages.rsc.prerender-fallback.rsc +27 -0
  468. package/.vercel/output/functions/messages.segments/_full.segment.rsc.prerender-config.json +28 -0
  469. package/.vercel/output/functions/messages.segments/_full.segment.rsc.prerender-fallback.rsc +27 -0
  470. package/.vercel/output/functions/messages.segments/_head.segment.rsc.prerender-config.json +28 -0
  471. package/.vercel/output/functions/messages.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  472. package/.vercel/output/functions/messages.segments/_index.segment.rsc.prerender-config.json +28 -0
  473. package/.vercel/output/functions/messages.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  474. package/.vercel/output/functions/messages.segments/_tree.segment.rsc.prerender-config.json +28 -0
  475. package/.vercel/output/functions/messages.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  476. package/.vercel/output/functions/messages.segments/messages/__PAGE__.segment.rsc.prerender-config.json +28 -0
  477. package/.vercel/output/functions/messages.segments/messages/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  478. package/.vercel/output/functions/messages.segments/messages.segment.rsc.prerender-config.json +28 -0
  479. package/.vercel/output/functions/messages.segments/messages.segment.rsc.prerender-fallback.rsc +5 -0
  480. package/.vercel/output/functions/node.prerender-config.json +37 -0
  481. package/.vercel/output/functions/node.prerender-fallback.html +12 -0
  482. package/.vercel/output/functions/node.rsc.prerender-config.json +38 -0
  483. package/.vercel/output/functions/node.rsc.prerender-fallback.rsc +27 -0
  484. package/.vercel/output/functions/node.segments/_full.segment.rsc.prerender-config.json +28 -0
  485. package/.vercel/output/functions/node.segments/_full.segment.rsc.prerender-fallback.rsc +27 -0
  486. package/.vercel/output/functions/node.segments/_head.segment.rsc.prerender-config.json +28 -0
  487. package/.vercel/output/functions/node.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  488. package/.vercel/output/functions/node.segments/_index.segment.rsc.prerender-config.json +28 -0
  489. package/.vercel/output/functions/node.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  490. package/.vercel/output/functions/node.segments/_tree.segment.rsc.prerender-config.json +28 -0
  491. package/.vercel/output/functions/node.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  492. package/.vercel/output/functions/node.segments/node/__PAGE__.segment.rsc.prerender-config.json +28 -0
  493. package/.vercel/output/functions/node.segments/node/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  494. package/.vercel/output/functions/node.segments/node.segment.rsc.prerender-config.json +28 -0
  495. package/.vercel/output/functions/node.segments/node.segment.rsc.prerender-fallback.rsc +5 -0
  496. package/.vercel/output/functions/nodes.prerender-config.json +37 -0
  497. package/.vercel/output/functions/nodes.prerender-fallback.html +12 -0
  498. package/.vercel/output/functions/nodes.rsc.prerender-config.json +38 -0
  499. package/.vercel/output/functions/nodes.rsc.prerender-fallback.rsc +27 -0
  500. package/.vercel/output/functions/nodes.segments/_full.segment.rsc.prerender-config.json +28 -0
  501. package/.vercel/output/functions/nodes.segments/_full.segment.rsc.prerender-fallback.rsc +27 -0
  502. package/.vercel/output/functions/nodes.segments/_head.segment.rsc.prerender-config.json +28 -0
  503. package/.vercel/output/functions/nodes.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  504. package/.vercel/output/functions/nodes.segments/_index.segment.rsc.prerender-config.json +28 -0
  505. package/.vercel/output/functions/nodes.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  506. package/.vercel/output/functions/nodes.segments/_tree.segment.rsc.prerender-config.json +28 -0
  507. package/.vercel/output/functions/nodes.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  508. package/.vercel/output/functions/nodes.segments/nodes/__PAGE__.segment.rsc.prerender-config.json +28 -0
  509. package/.vercel/output/functions/nodes.segments/nodes/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  510. package/.vercel/output/functions/nodes.segments/nodes.segment.rsc.prerender-config.json +28 -0
  511. package/.vercel/output/functions/nodes.segments/nodes.segment.rsc.prerender-fallback.rsc +5 -0
  512. package/.vercel/output/functions/server-logs.prerender-config.json +37 -0
  513. package/.vercel/output/functions/server-logs.prerender-fallback.html +12 -0
  514. package/.vercel/output/functions/server-logs.rsc.prerender-config.json +38 -0
  515. package/.vercel/output/functions/server-logs.rsc.prerender-fallback.rsc +27 -0
  516. package/.vercel/output/functions/server-logs.segments/_full.segment.rsc.prerender-config.json +28 -0
  517. package/.vercel/output/functions/server-logs.segments/_full.segment.rsc.prerender-fallback.rsc +27 -0
  518. package/.vercel/output/functions/server-logs.segments/_head.segment.rsc.prerender-config.json +28 -0
  519. package/.vercel/output/functions/server-logs.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  520. package/.vercel/output/functions/server-logs.segments/_index.segment.rsc.prerender-config.json +28 -0
  521. package/.vercel/output/functions/server-logs.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  522. package/.vercel/output/functions/server-logs.segments/_tree.segment.rsc.prerender-config.json +28 -0
  523. package/.vercel/output/functions/server-logs.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  524. package/.vercel/output/functions/server-logs.segments/server-logs/__PAGE__.segment.rsc.prerender-config.json +28 -0
  525. package/.vercel/output/functions/server-logs.segments/server-logs/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  526. package/.vercel/output/functions/server-logs.segments/server-logs.segment.rsc.prerender-config.json +28 -0
  527. package/.vercel/output/functions/server-logs.segments/server-logs.segment.rsc.prerender-fallback.rsc +5 -0
  528. package/.vercel/output/functions/servers.prerender-config.json +37 -0
  529. package/.vercel/output/functions/servers.prerender-fallback.html +12 -0
  530. package/.vercel/output/functions/servers.rsc.prerender-config.json +38 -0
  531. package/.vercel/output/functions/servers.rsc.prerender-fallback.rsc +27 -0
  532. package/.vercel/output/functions/servers.segments/_full.segment.rsc.prerender-config.json +28 -0
  533. package/.vercel/output/functions/servers.segments/_full.segment.rsc.prerender-fallback.rsc +27 -0
  534. package/.vercel/output/functions/servers.segments/_head.segment.rsc.prerender-config.json +28 -0
  535. package/.vercel/output/functions/servers.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  536. package/.vercel/output/functions/servers.segments/_index.segment.rsc.prerender-config.json +28 -0
  537. package/.vercel/output/functions/servers.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  538. package/.vercel/output/functions/servers.segments/_tree.segment.rsc.prerender-config.json +28 -0
  539. package/.vercel/output/functions/servers.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  540. package/.vercel/output/functions/servers.segments/servers/__PAGE__.segment.rsc.prerender-config.json +28 -0
  541. package/.vercel/output/functions/servers.segments/servers/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  542. package/.vercel/output/functions/servers.segments/servers.segment.rsc.prerender-config.json +28 -0
  543. package/.vercel/output/functions/servers.segments/servers.segment.rsc.prerender-fallback.rsc +5 -0
  544. package/.vercel/output/functions/settings/networks.prerender-config.json +37 -0
  545. package/.vercel/output/functions/settings/networks.prerender-fallback.html +12 -0
  546. package/.vercel/output/functions/settings/networks.rsc.prerender-config.json +38 -0
  547. package/.vercel/output/functions/settings/networks.rsc.prerender-fallback.rsc +27 -0
  548. package/.vercel/output/functions/settings/networks.segments/_full.segment.rsc.prerender-config.json +28 -0
  549. package/.vercel/output/functions/settings/networks.segments/_full.segment.rsc.prerender-fallback.rsc +27 -0
  550. package/.vercel/output/functions/settings/networks.segments/_head.segment.rsc.prerender-config.json +28 -0
  551. package/.vercel/output/functions/settings/networks.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  552. package/.vercel/output/functions/settings/networks.segments/_index.segment.rsc.prerender-config.json +28 -0
  553. package/.vercel/output/functions/settings/networks.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  554. package/.vercel/output/functions/settings/networks.segments/_tree.segment.rsc.prerender-config.json +28 -0
  555. package/.vercel/output/functions/settings/networks.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  556. package/.vercel/output/functions/settings/networks.segments/settings/networks/__PAGE__.segment.rsc.prerender-config.json +28 -0
  557. package/.vercel/output/functions/settings/networks.segments/settings/networks/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  558. package/.vercel/output/functions/settings/networks.segments/settings/networks.segment.rsc.prerender-config.json +28 -0
  559. package/.vercel/output/functions/settings/networks.segments/settings/networks.segment.rsc.prerender-fallback.rsc +5 -0
  560. package/.vercel/output/functions/settings/networks.segments/settings.segment.rsc.prerender-config.json +28 -0
  561. package/.vercel/output/functions/settings/networks.segments/settings.segment.rsc.prerender-fallback.rsc +5 -0
  562. package/.vercel/output/functions/settings/tokens.prerender-config.json +37 -0
  563. package/.vercel/output/functions/settings/tokens.prerender-fallback.html +12 -0
  564. package/.vercel/output/functions/settings/tokens.rsc.prerender-config.json +38 -0
  565. package/.vercel/output/functions/settings/tokens.rsc.prerender-fallback.rsc +27 -0
  566. package/.vercel/output/functions/settings/tokens.segments/_full.segment.rsc.prerender-config.json +28 -0
  567. package/.vercel/output/functions/settings/tokens.segments/_full.segment.rsc.prerender-fallback.rsc +27 -0
  568. package/.vercel/output/functions/settings/tokens.segments/_head.segment.rsc.prerender-config.json +28 -0
  569. package/.vercel/output/functions/settings/tokens.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  570. package/.vercel/output/functions/settings/tokens.segments/_index.segment.rsc.prerender-config.json +28 -0
  571. package/.vercel/output/functions/settings/tokens.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  572. package/.vercel/output/functions/settings/tokens.segments/_tree.segment.rsc.prerender-config.json +28 -0
  573. package/.vercel/output/functions/settings/tokens.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  574. package/.vercel/output/functions/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc.prerender-config.json +28 -0
  575. package/.vercel/output/functions/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  576. package/.vercel/output/functions/settings/tokens.segments/settings/tokens.segment.rsc.prerender-config.json +28 -0
  577. package/.vercel/output/functions/settings/tokens.segments/settings/tokens.segment.rsc.prerender-fallback.rsc +5 -0
  578. package/.vercel/output/functions/settings/tokens.segments/settings.segment.rsc.prerender-config.json +28 -0
  579. package/.vercel/output/functions/settings/tokens.segments/settings.segment.rsc.prerender-fallback.rsc +5 -0
  580. package/.vercel/output/functions/settings.prerender-config.json +37 -0
  581. package/.vercel/output/functions/settings.prerender-fallback.html +12 -0
  582. package/.vercel/output/functions/settings.rsc.prerender-config.json +38 -0
  583. package/.vercel/output/functions/settings.rsc.prerender-fallback.rsc +27 -0
  584. package/.vercel/output/functions/settings.segments/_full.segment.rsc.prerender-config.json +28 -0
  585. package/.vercel/output/functions/settings.segments/_full.segment.rsc.prerender-fallback.rsc +27 -0
  586. package/.vercel/output/functions/settings.segments/_head.segment.rsc.prerender-config.json +28 -0
  587. package/.vercel/output/functions/settings.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  588. package/.vercel/output/functions/settings.segments/_index.segment.rsc.prerender-config.json +28 -0
  589. package/.vercel/output/functions/settings.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  590. package/.vercel/output/functions/settings.segments/_tree.segment.rsc.prerender-config.json +28 -0
  591. package/.vercel/output/functions/settings.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  592. package/.vercel/output/functions/settings.segments/settings/__PAGE__.segment.rsc.prerender-config.json +28 -0
  593. package/.vercel/output/functions/settings.segments/settings/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  594. package/.vercel/output/functions/settings.segments/settings.segment.rsc.prerender-config.json +28 -0
  595. package/.vercel/output/functions/settings.segments/settings.segment.rsc.prerender-fallback.rsc +5 -0
  596. package/.vercel/output/functions/tasks/[id].func/.next/routes-manifest.json +1 -0
  597. package/.vercel/output/functions/tasks/[id].func/.next/server/app-paths-manifest.json +1 -0
  598. package/.vercel/output/functions/tasks/[id].func/.next/server/pages-manifest.json +1 -0
  599. package/.vercel/output/functions/tasks/[id].func/.vc-config.json +713 -0
  600. package/.vercel/output/functions/tasks/[id].func/___next_launcher.cjs +68 -0
  601. package/.vercel/output/functions/tasks.prerender-config.json +37 -0
  602. package/.vercel/output/functions/tasks.prerender-fallback.html +12 -0
  603. package/.vercel/output/functions/tasks.rsc.prerender-config.json +38 -0
  604. package/.vercel/output/functions/tasks.rsc.prerender-fallback.rsc +27 -0
  605. package/.vercel/output/functions/tasks.segments/_full.segment.rsc.prerender-config.json +28 -0
  606. package/.vercel/output/functions/tasks.segments/_full.segment.rsc.prerender-fallback.rsc +27 -0
  607. package/.vercel/output/functions/tasks.segments/_head.segment.rsc.prerender-config.json +28 -0
  608. package/.vercel/output/functions/tasks.segments/_head.segment.rsc.prerender-fallback.rsc +6 -0
  609. package/.vercel/output/functions/tasks.segments/_index.segment.rsc.prerender-config.json +28 -0
  610. package/.vercel/output/functions/tasks.segments/_index.segment.rsc.prerender-fallback.rsc +10 -0
  611. package/.vercel/output/functions/tasks.segments/_tree.segment.rsc.prerender-config.json +28 -0
  612. package/.vercel/output/functions/tasks.segments/_tree.segment.rsc.prerender-fallback.rsc +5 -0
  613. package/.vercel/output/functions/tasks.segments/tasks/__PAGE__.segment.rsc.prerender-config.json +28 -0
  614. package/.vercel/output/functions/tasks.segments/tasks/__PAGE__.segment.rsc.prerender-fallback.rsc +9 -0
  615. package/.vercel/output/functions/tasks.segments/tasks.segment.rsc.prerender-config.json +28 -0
  616. package/.vercel/output/functions/tasks.segments/tasks.segment.rsc.prerender-fallback.rsc +5 -0
  617. package/.vercel/output/static/404.html +12 -0
  618. package/.vercel/output/static/404.rsc.json +1 -0
  619. package/.vercel/output/static/404.segments/_tree.segment.rsc.json +1 -0
  620. package/.vercel/output/static/500.html +1 -0
  621. package/.vercel/output/static/500.rsc.json +1 -0
  622. package/.vercel/output/static/500.segments/_tree.segment.rsc.json +1 -0
  623. package/.vercel/output/static/_next/__private/trace +2 -0
  624. package/.vercel/output/static/_next/static/TakLsJFW-DjjhsqoZu3Ok/_buildManifest.js +11 -0
  625. package/.vercel/output/static/_next/static/TakLsJFW-DjjhsqoZu3Ok/_clientMiddlewareManifest.js +42 -0
  626. package/.vercel/output/static/_next/static/TakLsJFW-DjjhsqoZu3Ok/_ssgManifest.js +1 -0
  627. package/.vercel/output/static/_next/static/chunks/00~h525bo.q7f.js +1 -0
  628. package/.vercel/output/static/_next/static/chunks/01xlw8hd842-c.js +1 -0
  629. package/.vercel/output/static/_next/static/chunks/0257pdz1-imal.js +2 -0
  630. package/.vercel/output/static/_next/static/chunks/03~yq9q893hmn.js +1 -0
  631. package/.vercel/output/static/_next/static/chunks/04uju~n5s9g7..css +1 -0
  632. package/.vercel/output/static/_next/static/chunks/066jf0nk75nic.css +2 -0
  633. package/.vercel/output/static/_next/static/chunks/085gdrlppedvd.js +1 -0
  634. package/.vercel/output/static/_next/static/chunks/0a5rikwbpt8_7.js +4 -0
  635. package/.vercel/output/static/_next/static/chunks/0b9r.-87w.lvh.js +1 -0
  636. package/.vercel/output/static/_next/static/chunks/0ced2tacwy8v7.js +1 -0
  637. package/.vercel/output/static/_next/static/chunks/0e-.zgw81gela.js +31 -0
  638. package/.vercel/output/static/_next/static/chunks/0gu130fpple04.js +1 -0
  639. package/.vercel/output/static/_next/static/chunks/0jmypv56.iwft.js +1 -0
  640. package/.vercel/output/static/_next/static/chunks/0krr-nvdwqdj1.js +1 -0
  641. package/.vercel/output/static/_next/static/chunks/0mqs00d_9jvzx.js +1 -0
  642. package/.vercel/output/static/_next/static/chunks/0ore4vqiwv2nx.js +1 -0
  643. package/.vercel/output/static/_next/static/chunks/0pqt~8bl3ukh4.js +4 -0
  644. package/.vercel/output/static/_next/static/chunks/0q.t7da_-e4yl.js +4 -0
  645. package/.vercel/output/static/_next/static/chunks/0q3rj30g1oodv.js +7 -0
  646. package/.vercel/output/static/_next/static/chunks/0qp3_l.t4nzzq.js +1 -0
  647. package/.vercel/output/static/_next/static/chunks/0qy1ci2dqfaqg.js +1 -0
  648. package/.vercel/output/static/_next/static/chunks/0u359llqm1_01.js +1 -0
  649. package/.vercel/output/static/_next/static/chunks/0u7ftv8celiqa.js +1 -0
  650. package/.vercel/output/static/_next/static/chunks/0~ijg-d65glam.js +1 -0
  651. package/.vercel/output/static/_next/static/chunks/14bsg3_-taiw4.js +1 -0
  652. package/.vercel/output/static/_next/static/chunks/168q2d2bi7swr.js +7 -0
  653. package/.vercel/output/static/_next/static/chunks/16aqsgrwba4zk.js +1 -0
  654. package/.vercel/output/static/_next/static/chunks/16tw8s4cce9_x.js +1 -0
  655. package/.vercel/output/static/_next/static/chunks/turbopack-01f1xs~cq_~si.js +1 -0
  656. package/.vercel/output/static/_next/static/media/4fa387ec64143e14-s.0wkzw~je483f-.woff2 +0 -0
  657. package/.vercel/output/static/_next/static/media/53b9e256198e5412-s.0-wfv7uh4i7h9.woff2 +0 -0
  658. package/.vercel/output/static/_next/static/media/5ce348bf30bf5439-s.0zgw-jeven.3w.woff2 +0 -0
  659. package/.vercel/output/static/_next/static/media/6306c77e7c8268e4-s.0rhz0arwfsn~5.woff2 +0 -0
  660. package/.vercel/output/static/_next/static/media/7178b3e590c64307-s.0nx0ww8fni_q3.woff2 +0 -0
  661. package/.vercel/output/static/_next/static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2 +0 -0
  662. package/.vercel/output/static/_next/static/media/7d817b4c03b0c5f1-s.0l76wvqk9d84w.woff2 +0 -0
  663. package/.vercel/output/static/_next/static/media/8a480f0b521d4e75-s.0jzbimsg8vl84.woff2 +0 -0
  664. package/.vercel/output/static/_next/static/media/bbc41e54d2fcbd21-s.0k4k9394f2q-k.woff2 +0 -0
  665. package/.vercel/output/static/_next/static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2 +0 -0
  666. package/.vercel/output/static/_next/static/media/favicon.0x3dzn~oxb6tn.ico +0 -0
  667. package/.vercel/output/static/_next/static/media/fef07dbb0973bf53-s.12tyk43_3sh9u.woff2 +0 -0
  668. package/.vercel/output/static/_next/static/not-found.txt +1 -0
  669. package/.vercel/project.json +16 -0
  670. package/AGENTS.md +9 -0
  671. package/CLAUDE.md +1 -0
  672. package/README.md +1 -0
  673. package/app/api/anet/host-supervisors/route.ts +63 -2
  674. package/app/api/anet/node-config/route.ts +145 -168
  675. package/app/api/hub/people/route.ts +48 -0
  676. package/app/api/hub/requirements/[id]/checklist/[itemId]/route.ts +54 -0
  677. package/app/api/hub/requirements/[id]/comments/route.ts +51 -0
  678. package/app/api/hub/requirements/[id]/route.ts +89 -0
  679. package/app/api/hub/requirements/events/route.ts +45 -0
  680. package/app/api/hub/requirements/route.ts +53 -0
  681. package/app/components/CreateNodeWizard.tsx +7 -2
  682. package/app/components/HostSupervisorPicker.tsx +76 -29
  683. package/app/components/NodeSettingsPanel.tsx +28 -25
  684. package/app/components/Sidebar.tsx +4 -0
  685. package/app/components/TaskChatPanel.tsx +6 -6
  686. package/app/components/TaskDetail.tsx +8 -7
  687. package/app/components/TaskList.tsx +6 -7
  688. package/app/components/TopoGraph.tsx +3 -2
  689. package/app/lib/time.ts +23 -0
  690. package/app/org/page.tsx +222 -0
  691. package/app/requirements/[id]/page.tsx +361 -0
  692. package/app/requirements/page.tsx +299 -0
  693. package/app/scheduled-tasks/page.tsx +98 -13
  694. package/apps/desktop/icon.png +0 -0
  695. package/bun.lock +1688 -0
  696. package/electron-builder.json +5 -1
  697. package/package.json +4 -2
  698. package/proxy.ts +1 -0
  699. package/.next/server/chunks/ssr/[root-of-the-server]__0dwa10z._.js +0 -11
  700. package/.next/server/chunks/ssr/[root-of-the-server]__0dwa10z._.js.map +0 -1
  701. package/.next/server/chunks/ssr/[root-of-the-server]__202xetf._.js +0 -11
  702. package/.next/server/chunks/ssr/[root-of-the-server]__202xetf._.js.map +0 -1
  703. package/.next/static/chunks/0pton-t_-fqyu.css +0 -1
  704. package/.next/static/chunks/0z8vfpga444t1.js +0 -1
  705. package/.next/static/chunks/14c8u_tcund0g.js +0 -0
  706. package/.next/static/chunks/2kp8-5cyc-jbg.js +0 -1
  707. package/.next/static/chunks/3a53_ky07bdhz.js +0 -9
  708. package/.next/static/chunks/3im40-b21df3u.js +0 -2
  709. package/.next/static/chunks/3tnbxlq42_jjv.js +0 -1
  710. /package/.next/server/chunks/ssr/{app_0_s8u96._.js.map → app_07bzc6w._.js.map} +0 -0
  711. /package/.next/server/chunks/ssr/{app_0o4bxq0._.js.map → app_0g7oz9w._.js.map} +0 -0
  712. /package/.next/server/chunks/ssr/{app_0x7s72b._.js.map → app_0tt2ueo._.js.map} +0 -0
  713. /package/.next/server/chunks/ssr/{app_081zy6c._.js.map → app_0ugqkd7._.js.map} +0 -0
  714. /package/.next/server/chunks/ssr/{app_1oxcq68._.js.map → app_1e91uc-._.js.map} +0 -0
  715. /package/.next/server/chunks/ssr/{app_1psh956._.js.map → app_1f96aq_._.js.map} +0 -0
  716. /package/.next/server/chunks/ssr/{app_0_dhiwi._.js.map → app_1ua57bx._.js.map} +0 -0
  717. /package/.next/static/{trj9RsCWuEDMfq9BuoKfl → FEaCQpBc05SBAWTBHRt5h}/_buildManifest.js +0 -0
  718. /package/.next/static/{trj9RsCWuEDMfq9BuoKfl → FEaCQpBc05SBAWTBHRt5h}/_ssgManifest.js +0 -0
@@ -0,0 +1,222 @@
1
+ 'use client';
2
+
3
+ import { useCallback, useEffect, useMemo, useState, Suspense } from 'react';
4
+ import Link from 'next/link';
5
+ import { useRouter, useSearchParams } from 'next/navigation';
6
+ import { EmptyState } from '../components/EmptyState';
7
+
8
+ /**
9
+ * Organization — #1635 (read-only first slice).
10
+ *
11
+ * Data comes from the Hub's own directory projection (the same one MCP
12
+ * `requirements_people` returns): people, their department, and the Agents
13
+ * each person owns. No editing here — departments/membership are a human
14
+ * admin concern and live elsewhere.
15
+ */
16
+
17
+ interface DirectoryAgent { node_id: string; alias: string }
18
+ interface DirectoryPerson {
19
+ user_id: string;
20
+ username: string;
21
+ display_name: string;
22
+ role: string;
23
+ department: { id: string; name: string } | null;
24
+ agents: DirectoryAgent[];
25
+ }
26
+ interface DirectoryResponse {
27
+ ok: boolean;
28
+ network_id: string;
29
+ total: number;
30
+ people: DirectoryPerson[];
31
+ agents_without_owner?: DirectoryAgent[];
32
+ has_more: boolean;
33
+ next_offset: number | null;
34
+ }
35
+
36
+ const PAGE = 50;
37
+
38
+ function OrgContent() {
39
+ const router = useRouter();
40
+ const searchParams = useSearchParams();
41
+ const q = searchParams.get('q') || '';
42
+
43
+ const [data, setData] = useState<DirectoryResponse | null>(null);
44
+ const [loading, setLoading] = useState(true);
45
+ const [error, setError] = useState('');
46
+ const [needsLogin, setNeedsLogin] = useState(false);
47
+ const [offset, setOffset] = useState(0);
48
+ const [qInput, setQInput] = useState(q);
49
+
50
+ const load = useCallback(async (nextOffset = 0, merge = false) => {
51
+ setLoading(true);
52
+ setError('');
53
+ try {
54
+ const params = new URLSearchParams();
55
+ if (q) params.set('q', q);
56
+ params.set('limit', String(PAGE));
57
+ params.set('offset', String(nextOffset));
58
+ const res = await fetch(`/api/hub/people?${params.toString()}`, { cache: 'no-store' });
59
+ if (res.status === 401) { setNeedsLogin(true); setData(null); return; }
60
+ const json = await res.json();
61
+ if (!res.ok || !json.ok) { setError(json?.error || `hub_${res.status}`); return; }
62
+ setNeedsLogin(false);
63
+ setOffset(nextOffset);
64
+ setData(prev => (merge && prev && nextOffset > 0
65
+ ? { ...json, people: [...prev.people, ...json.people] }
66
+ : json));
67
+ } catch (e: unknown) {
68
+ setError(e instanceof Error ? e.message : 'fetch failed');
69
+ } finally {
70
+ setLoading(false);
71
+ }
72
+ }, [q]);
73
+
74
+ useEffect(() => { load(0, false); }, [load]);
75
+
76
+ const setQuery = (value: string) => {
77
+ const next = new URLSearchParams(searchParams.toString());
78
+ if (value) next.set('q', value); else next.delete('q');
79
+ router.replace(next.toString() ? `/org?${next.toString()}` : '/org', { scroll: false });
80
+ };
81
+
82
+ const withoutOwner = data?.agents_without_owner ?? [];
83
+ const people = data?.people ?? [];
84
+ const departments = useMemo(() => {
85
+ const map = new Map<string, number>();
86
+ for (const p of data?.people ?? []) {
87
+ if (p.department) map.set(p.department.name, (map.get(p.department.name) || 0) + 1);
88
+ }
89
+ return [...map.entries()].sort((a, b) => b[1] - a[1]);
90
+ }, [data]);
91
+
92
+ return (
93
+ <div className="min-h-screen bg-[var(--bg)] text-gray-200">
94
+ <div className="mx-auto max-w-5xl px-4 py-6 sm:px-6">
95
+ <div className="mb-5 flex flex-wrap items-end justify-between gap-3">
96
+ <div>
97
+ <h1 className="text-lg font-semibold text-white">Organization</h1>
98
+ <p className="mt-1 text-xs text-gray-500">
99
+ 人、部门与他们名下的 Agent(只读)。数据来自 Hub 通讯录投影,和 MCP <code className="text-gray-400">requirements_people</code> 同源。
100
+ </p>
101
+ </div>
102
+ <button
103
+ type="button"
104
+ onClick={() => load(offset, true)}
105
+ className="rounded-lg border border-[var(--border)] px-3 py-1.5 text-xs text-gray-400 hover:text-gray-200"
106
+ >
107
+ Refresh
108
+ </button>
109
+ </div>
110
+
111
+ <div className="mb-4 flex flex-wrap items-center gap-2">
112
+ <div className="flex items-center gap-1.5 rounded-lg border border-[var(--border)] bg-[var(--bg-secondary)] px-2.5 py-1.5 focus-within:border-blue-500/40">
113
+ <span className="text-[10px] uppercase tracking-wide text-gray-600">Search</span>
114
+ <input
115
+ value={qInput}
116
+ onChange={e => setQInput(e.target.value)}
117
+ onKeyDown={e => { if (e.key === 'Enter') setQuery(qInput); }}
118
+ onBlur={() => { if (qInput !== q) setQuery(qInput); }}
119
+ placeholder="人 / 部门 / Agent 别名"
120
+ className="w-44 bg-transparent text-sm text-white placeholder-gray-700 focus:outline-none sm:w-64"
121
+ />
122
+ </div>
123
+ {q && (
124
+ <button
125
+ type="button"
126
+ onClick={() => { setQInput(''); setQuery(''); }}
127
+ className="rounded-lg border border-gray-700 px-2.5 py-1.5 text-[11px] text-gray-500 hover:border-gray-600 hover:text-gray-200"
128
+ >
129
+ Clear
130
+ </button>
131
+ )}
132
+ {data && <span className="text-[11px] text-gray-600">{data.total} 人 · {departments.length} 个部门</span>}
133
+ </div>
134
+
135
+ {needsLogin && (
136
+ <div className="mb-4 rounded-lg border border-amber-500/20 bg-amber-500/5 px-4 py-3 text-sm text-amber-300">
137
+ 会话已过期,<Link href="/login" className="underline">重新登录</Link> 后再看组织架构。
138
+ </div>
139
+ )}
140
+ {error && !needsLogin && (
141
+ <div className="mb-4 rounded-lg border border-red-500/20 bg-red-500/5 px-4 py-3 text-sm text-red-300">
142
+ 读取失败:{error}
143
+ <button type="button" onClick={() => load(0, false)} className="ml-3 underline">重试</button>
144
+ </div>
145
+ )}
146
+
147
+ {loading && !data ? (
148
+ <div className="space-y-2">
149
+ {Array.from({ length: 6 }).map((_, i) => (
150
+ <div key={i} className="h-16 animate-pulse rounded-lg border border-[var(--border)] bg-[var(--bg-secondary)]" />
151
+ ))}
152
+ </div>
153
+ ) : people.length === 0 && !error ? (
154
+ <EmptyState
155
+ variant="nodes"
156
+ title={q ? '没有匹配的成员' : '通讯录是空的'}
157
+ sub={q ? '换一个关键词试试。' : '成员加入网络后会自动出现在这里。'}
158
+ />
159
+ ) : (
160
+ <>
161
+ <ul className="divide-y divide-[var(--border)] overflow-hidden rounded-xl border border-[var(--border)] bg-[var(--bg-secondary)]">
162
+ {people.map(person => (
163
+ <li key={person.user_id} className="px-3 py-3 sm:px-4">
164
+ <div className="flex flex-wrap items-center gap-x-3 gap-y-1">
165
+ <span className="text-sm text-gray-100">{person.display_name || person.username}</span>
166
+ <span className="text-[11px] text-gray-600">@{person.username}</span>
167
+ <span className="rounded border border-[var(--border)] px-1.5 py-0.5 text-[10px] text-gray-400">{person.role}</span>
168
+ {person.department && (
169
+ <span className="rounded bg-[var(--bg-elevated)] px-1.5 py-0.5 text-[10px] text-gray-400">{person.department.name}</span>
170
+ )}
171
+ <span className="ml-auto text-[11px] text-gray-600">{person.agents.length} 个 Agent</span>
172
+ </div>
173
+ {person.agents.length > 0 && (
174
+ <div className="mt-2 flex flex-wrap gap-1.5">
175
+ {person.agents.map(agent => (
176
+ <span key={agent.node_id} className="rounded-md border border-[var(--border)] bg-[var(--bg)] px-2 py-0.5 text-[11px] text-gray-300">
177
+ {agent.alias}
178
+ </span>
179
+ ))}
180
+ </div>
181
+ )}
182
+ </li>
183
+ ))}
184
+ </ul>
185
+
186
+ {data?.has_more && (
187
+ <button
188
+ type="button"
189
+ disabled={loading}
190
+ onClick={() => load(offset + PAGE, true)}
191
+ className="mx-auto mt-4 block rounded-lg border border-[var(--border)] px-4 py-2 text-xs text-gray-400 hover:text-gray-200 disabled:opacity-50"
192
+ >
193
+ {loading ? '加载中…' : '加载更多'}
194
+ </button>
195
+ )}
196
+
197
+ {offset === 0 && withoutOwner.length > 0 && (
198
+ <div className="mt-6 rounded-xl border border-[var(--border)] bg-[var(--bg-secondary)] p-4">
199
+ <h2 className="mb-2 text-xs uppercase tracking-wide text-gray-500">Agents without an owner in this network</h2>
200
+ <div className="flex flex-wrap gap-1.5">
201
+ {withoutOwner.map(agent => (
202
+ <span key={agent.node_id} className="rounded-md border border-[var(--border)] bg-[var(--bg)] px-2 py-0.5 text-[11px] text-gray-300">
203
+ {agent.alias}
204
+ </span>
205
+ ))}
206
+ </div>
207
+ </div>
208
+ )}
209
+ </>
210
+ )}
211
+ </div>
212
+ </div>
213
+ );
214
+ }
215
+
216
+ export default function OrgPage() {
217
+ return (
218
+ <Suspense fallback={<div className="min-h-screen bg-[var(--bg)]" />}>
219
+ <OrgContent />
220
+ </Suspense>
221
+ );
222
+ }
@@ -0,0 +1,361 @@
1
+ 'use client';
2
+
3
+ import { useEffect, useState } from 'react';
4
+ import Link from 'next/link';
5
+ import { useParams } from 'next/navigation';
6
+ import ReactMarkdown from 'react-markdown';
7
+ import remarkGfm from 'remark-gfm';
8
+ import { EmptyState } from '../../components/EmptyState';
9
+
10
+ /**
11
+ * One requirement — #1633 (read-only).
12
+ *
13
+ * Shows description, checklist, and the activity timeline. The write
14
+ * surface (status/owner/tags/comments) is #1634 on purpose: the read
15
+ * shape has to be right before anyone can edit against it.
16
+ */
17
+
18
+ interface Person { kind: 'user' | 'node'; id: string; alias?: string }
19
+ interface ChecklistItem { id: string; text: string; done?: boolean }
20
+ interface Requirement {
21
+ id: string; seq: number; name: string; column: string; priority: string;
22
+ due?: string; start?: string; tags?: string[];
23
+ owner?: Person | null; agent_owner?: Person | null;
24
+ parent_id?: string | null;
25
+ children?: { total: number; done: number };
26
+ description?: string; checklist?: ChecklistItem[];
27
+ createdAt?: string; updatedAt?: string;
28
+ external_ref?: string | null; external_url?: string | null;
29
+ }
30
+ interface EventRow {
31
+ id: string; kind: string; field?: string | null;
32
+ actor?: Person | null;
33
+ at?: string;
34
+ new?: Record<string, unknown> | null;
35
+ old?: Record<string, unknown> | null;
36
+ }
37
+
38
+ const COLUMN_CHIP: Record<string, string> = {
39
+ pool: 'bg-amber-500/10 text-amber-300 border-amber-500/20',
40
+ doing: 'bg-blue-500/10 text-blue-300 border-blue-500/20',
41
+ done: 'bg-emerald-500/10 text-emerald-300 border-emerald-500/20',
42
+ abandoned: 'bg-gray-500/10 text-gray-400 border-gray-500/20',
43
+ };
44
+
45
+ const COLUMN_OPTIONS: { key: string; label: string }[] = [
46
+ { key: 'pool', label: '需求池' },
47
+ { key: 'doing', label: '进行中' },
48
+ { key: 'done', label: '完成' },
49
+ { key: 'abandoned', label: '放弃' },
50
+ ];
51
+ const PRIORITY_OPTIONS = ['high', 'normal', 'low', 'lowest'] as const;
52
+
53
+ function personLabel(p?: Person | null) {
54
+ if (!p) return '—';
55
+ return p.alias || p.id;
56
+ }
57
+
58
+ function describeEvent(ev: EventRow) {
59
+ if (ev.kind === 'comment') {
60
+ const text = typeof ev.new?.text === 'string' ? ev.new.text : '';
61
+ return { label: 'comment', body: text };
62
+ }
63
+ if (ev.kind === 'created') return { label: 'created', body: '' };
64
+ if (ev.field) {
65
+ const from = ev.old == null ? '—' : typeof ev.old === 'object' ? JSON.stringify(ev.old) : String(ev.old);
66
+ const to = ev.new == null ? '—' : typeof ev.new === 'object' ? JSON.stringify(ev.new) : String(ev.new);
67
+ return { label: ev.field, body: `${from.slice(0, 120)} → ${to.slice(0, 120)}` };
68
+ }
69
+ return { label: ev.kind, body: '' };
70
+ }
71
+
72
+ export default function RequirementDetailPage() {
73
+ const params = useParams<{ id: string }>();
74
+ const id = params?.id;
75
+ const [req, setReq] = useState<Requirement | null>(null);
76
+ const [events, setEvents] = useState<EventRow[]>([]);
77
+ const [loading, setLoading] = useState(true);
78
+ const [error, setError] = useState('');
79
+ const [needsLogin, setNeedsLogin] = useState(false);
80
+ // #1634 — write surface. Every mutation goes through Hub's own rules; we
81
+ // only show its error code back to the user instead of failing silently.
82
+ const [actionError, setActionError] = useState('');
83
+ const [busy, setBusy] = useState(false);
84
+ const [comment, setComment] = useState('');
85
+ const [reloadKey, setReloadKey] = useState(0);
86
+
87
+ const reload = () => setReloadKey(k => k + 1);
88
+
89
+ async function sendPatch(fields: Record<string, unknown>) {
90
+ if (!id || busy) return;
91
+ setBusy(true); setActionError('');
92
+ try {
93
+ const res = await fetch(`/api/hub/requirements/${encodeURIComponent(id)}`, {
94
+ method: 'PATCH',
95
+ headers: { 'Content-Type': 'application/json' },
96
+ body: JSON.stringify(fields),
97
+ });
98
+ const data = await res.json().catch(() => ({}));
99
+ if (!res.ok || data.ok === false) { setActionError(data?.error || `hub_${res.status}`); return; }
100
+ reload();
101
+ } catch (e: unknown) {
102
+ setActionError(e instanceof Error ? e.message : 'patch failed');
103
+ } finally { setBusy(false); }
104
+ }
105
+
106
+ async function toggleItem(itemId: string, done: boolean) {
107
+ if (!id || busy) return;
108
+ setBusy(true); setActionError('');
109
+ try {
110
+ const res = await fetch(`/api/hub/requirements/${encodeURIComponent(id)}/checklist/${encodeURIComponent(itemId)}`, {
111
+ method: 'PATCH',
112
+ headers: { 'Content-Type': 'application/json' },
113
+ body: JSON.stringify({ done }),
114
+ });
115
+ const data = await res.json().catch(() => ({}));
116
+ if (!res.ok || data.ok === false) { setActionError(data?.error || `hub_${res.status}`); return; }
117
+ reload();
118
+ } catch (e: unknown) {
119
+ setActionError(e instanceof Error ? e.message : 'checklist failed');
120
+ } finally { setBusy(false); }
121
+ }
122
+
123
+ async function submitComment() {
124
+ if (!id || busy || !comment.trim()) return;
125
+ setBusy(true); setActionError('');
126
+ try {
127
+ const res = await fetch(`/api/hub/requirements/${encodeURIComponent(id)}/comments`, {
128
+ method: 'POST',
129
+ headers: { 'Content-Type': 'application/json' },
130
+ body: JSON.stringify({ text: comment.trim() }),
131
+ });
132
+ const data = await res.json().catch(() => ({}));
133
+ if (!res.ok || data.ok === false) { setActionError(data?.error || `hub_${res.status}`); return; }
134
+ setComment('');
135
+ reload();
136
+ } catch (e: unknown) {
137
+ setActionError(e instanceof Error ? e.message : 'comment failed');
138
+ } finally { setBusy(false); }
139
+ }
140
+
141
+ useEffect(() => {
142
+ if (!id) return;
143
+ let alive = true;
144
+ (async () => {
145
+ setLoading(true); setError('');
146
+ try {
147
+ const [detailRes, eventsRes] = await Promise.all([
148
+ fetch(`/api/hub/requirements/${encodeURIComponent(id)}`, { cache: 'no-store' }),
149
+ fetch(`/api/hub/requirements/events?requirement_id=${encodeURIComponent(id)}&limit=100`, { cache: 'no-store' }),
150
+ ]);
151
+ if (detailRes.status === 401) { if (alive) { setNeedsLogin(true); } return; }
152
+ const detail = await detailRes.json();
153
+ if (!detailRes.ok || !detail.ok) { if (alive) setError(detail?.error || `hub_${detailRes.status}`); return; }
154
+ const eventsJson = eventsRes.ok ? await eventsRes.json() : { events: [] };
155
+ if (!alive) return;
156
+ setReq(detail.requirement as Requirement);
157
+ setEvents((eventsJson.events || []) as EventRow[]);
158
+ } catch (e: unknown) {
159
+ if (alive) setError(e instanceof Error ? e.message : 'fetch failed');
160
+ } finally {
161
+ if (alive) setLoading(false);
162
+ }
163
+ })();
164
+ return () => { alive = false; };
165
+ }, [id, reloadKey]);
166
+
167
+ if (loading) {
168
+ return (
169
+ <div className="min-h-screen bg-[var(--bg)] p-6 text-gray-500">
170
+ <div className="mx-auto max-w-4xl space-y-3">
171
+ <div className="h-6 w-2/3 animate-pulse rounded bg-[var(--bg-elevated)]" />
172
+ <div className="h-40 animate-pulse rounded bg-[var(--bg-secondary)]" />
173
+ </div>
174
+ </div>
175
+ );
176
+ }
177
+
178
+ if (needsLogin) {
179
+ return (
180
+ <div className="min-h-screen bg-[var(--bg)] p-6">
181
+ <div className="mx-auto max-w-4xl rounded-lg border border-amber-500/20 bg-amber-500/5 px-4 py-3 text-sm text-amber-300">
182
+ 会话已过期,<Link href="/login" className="underline">重新登录</Link>。
183
+ </div>
184
+ </div>
185
+ );
186
+ }
187
+
188
+ if (error || !req) {
189
+ return (
190
+ <div className="min-h-screen bg-[var(--bg)] p-6">
191
+ <div className="mx-auto max-w-4xl">
192
+ <div className="mb-4 rounded-lg border border-red-500/20 bg-red-500/5 px-4 py-3 text-sm text-red-300">
193
+ {error ? `读取失败:${error}` : '这条需求不存在或不可见。'}
194
+ </div>
195
+ <Link href="/requirements" className="text-sm text-blue-400 hover:underline">← 返回需求列表</Link>
196
+ </div>
197
+ </div>
198
+ );
199
+ }
200
+
201
+ const checklist = req.checklist || [];
202
+
203
+ return (
204
+ <div className="min-h-screen bg-[var(--bg)] text-gray-200">
205
+ <div className="mx-auto max-w-4xl px-4 py-6 sm:px-6">
206
+ <div className="mb-4">
207
+ <Link href="/requirements" className="text-xs text-gray-500 hover:text-gray-300">← 需求列表</Link>
208
+ </div>
209
+
210
+ <header className="mb-5">
211
+ <div className="mb-2 flex flex-wrap items-center gap-2 text-[11px] text-gray-500">
212
+ <span className="tabular-nums">#{req.seq}</span>
213
+ <span className={`rounded border px-1.5 py-0.5 ${COLUMN_CHIP[req.column] || COLUMN_CHIP.abandoned}`}>{req.column}</span>
214
+ <span>{req.priority}</span>
215
+ {req.due && <span>due {String(req.due).slice(0, 10)}</span>}
216
+ {(req.tags || []).map(t => (
217
+ <span key={t} className="rounded bg-[var(--bg-elevated)] px-1.5 py-0.5 text-gray-400">{t}</span>
218
+ ))}
219
+ </div>
220
+ <h1 className="text-lg font-semibold text-white">{req.name}</h1>
221
+ <div className="mt-2 flex flex-wrap gap-4 text-[11px] text-gray-500">
222
+ <span>负责人 {personLabel(req.owner)}</span>
223
+ <span>负责 Agent {personLabel(req.agent_owner)}</span>
224
+ {req.children && req.children.total > 0 && <span>子卡 {req.children.done}/{req.children.total}</span>}
225
+ {req.external_url && (
226
+ <a href={req.external_url} target="_blank" rel="noreferrer" className="text-blue-400 hover:underline">
227
+ {req.external_ref || 'external'}
228
+ </a>
229
+ )}
230
+ </div>
231
+ </header>
232
+
233
+ {/* #1634 — write surface. Hub keeps the rules (owner must be human,
234
+ node tokens may not delete); this bar only sends whitelisted fields. */}
235
+ <section className="mb-6 flex flex-wrap items-center gap-2 rounded-xl border border-[var(--border)] bg-[var(--bg-secondary)] px-3 py-2.5">
236
+ <span className="text-[10px] uppercase tracking-wide text-gray-600">Status</span>
237
+ {COLUMN_OPTIONS.map(opt => (
238
+ <button
239
+ key={opt.key}
240
+ type="button"
241
+ disabled={busy || req.column === opt.key}
242
+ onClick={() => sendPatch({ column: opt.key })}
243
+ className={`rounded-md border px-2.5 py-1 text-xs transition-colors disabled:opacity-60 ${
244
+ req.column === opt.key
245
+ ? (COLUMN_CHIP[opt.key] || COLUMN_CHIP.abandoned)
246
+ : 'border-transparent text-gray-500 hover:bg-[var(--bg-elevated)] hover:text-gray-200'
247
+ }`}
248
+ >
249
+ {opt.label}
250
+ </button>
251
+ ))}
252
+ <span className="mx-1 h-4 w-px bg-[var(--border)]" />
253
+ <label className="flex items-center gap-1.5 text-[10px] uppercase tracking-wide text-gray-600">
254
+ Priority
255
+ <select
256
+ value={req.priority}
257
+ disabled={busy}
258
+ onChange={e => sendPatch({ priority: e.target.value })}
259
+ className="rounded border border-[var(--border)] bg-[var(--bg-secondary)] px-1.5 py-1 text-xs normal-case text-gray-200"
260
+ >
261
+ {PRIORITY_OPTIONS.map(p => <option key={p} value={p}>{p}</option>)}
262
+ </select>
263
+ </label>
264
+ <label className="flex items-center gap-1.5 text-[10px] uppercase tracking-wide text-gray-600">
265
+ Due
266
+ <input
267
+ type="date"
268
+ value={req.due ? String(req.due).slice(0, 10) : ''}
269
+ disabled={busy}
270
+ onChange={e => sendPatch({ due: e.target.value })}
271
+ className="rounded border border-[var(--border)] bg-[var(--bg-secondary)] px-1.5 py-1 text-xs normal-case text-gray-200"
272
+ />
273
+ </label>
274
+ {busy && <span className="text-[11px] text-gray-500">saving…</span>}
275
+ {actionError && <span className="text-[11px] text-red-400">{actionError}</span>}
276
+ </section>
277
+
278
+ <section className="mb-6 rounded-xl border border-[var(--border)] bg-[var(--bg-secondary)] p-4">
279
+ <h2 className="mb-2 text-xs uppercase tracking-wide text-gray-500">Description</h2>
280
+ {req.description ? (
281
+ <div className="prose prose-invert max-w-none prose-sm prose-pre:bg-[var(--bg)] prose-pre:border prose-pre:border-[var(--border)]">
282
+ <ReactMarkdown remarkPlugins={[remarkGfm]}>{req.description}</ReactMarkdown>
283
+ </div>
284
+ ) : (
285
+ <p className="text-sm text-gray-600">(没有描述)</p>
286
+ )}
287
+ </section>
288
+
289
+ <section className="mb-6 rounded-xl border border-[var(--border)] bg-[var(--bg-secondary)] p-4">
290
+ <h2 className="mb-2 text-xs uppercase tracking-wide text-gray-500">
291
+ Checklist {checklist.length > 0 && <span className="ml-1 text-gray-600">{checklist.filter(c => c.done).length}/{checklist.length}</span>}
292
+ </h2>
293
+ {checklist.length === 0 ? (
294
+ <p className="text-sm text-gray-600">(没有检查项)</p>
295
+ ) : (
296
+ <ul className="space-y-1.5">
297
+ {checklist.map(item => (
298
+ <li key={item.id}>
299
+ <button
300
+ type="button"
301
+ disabled={busy}
302
+ onClick={() => toggleItem(item.id, !item.done)}
303
+ className="flex items-start gap-2 text-left text-sm hover:opacity-80 disabled:opacity-60"
304
+ >
305
+ <span aria-hidden className={item.done ? 'text-emerald-400' : 'text-gray-600'}>{item.done ? '✓' : '○'}</span>
306
+ <span className={item.done ? 'text-gray-500 line-through' : 'text-gray-200'}>{item.text}</span>
307
+ </button>
308
+ </li>
309
+ ))}
310
+ </ul>
311
+ )}
312
+ </section>
313
+
314
+ <section className="rounded-xl border border-[var(--border)] bg-[var(--bg-secondary)] p-4">
315
+ <h2 className="mb-2 text-xs uppercase tracking-wide text-gray-500">Activity</h2>
316
+ {events.length === 0 ? (
317
+ <EmptyState variant="generic" compact title="还没有动态" sub="状态变更和评论会出现在这里。" />
318
+ ) : (
319
+ <ul className="space-y-2">
320
+ {events.map(ev => {
321
+ const d = describeEvent(ev);
322
+ return (
323
+ <li key={ev.id} className="rounded-lg border border-[var(--border)] bg-[var(--bg-secondary)] px-3 py-2">
324
+ <div className="flex flex-wrap items-center gap-2 text-[11px] text-gray-500">
325
+ <span className="text-gray-300">{personLabel(ev.actor)}</span>
326
+ <span className="rounded bg-[var(--bg-elevated)] px-1.5 py-0.5">{d.label}</span>
327
+ {ev.at && <span>{String(ev.at).replace('T', ' ').slice(0, 16)}</span>}
328
+ </div>
329
+ {d.body && <p className="mt-1 whitespace-pre-wrap break-words text-sm text-gray-300">{d.body}</p>}
330
+ </li>
331
+ );
332
+ })}
333
+ </ul>
334
+ )}
335
+
336
+ <div className="mt-3 border-t border-[var(--border)] pt-3">
337
+ <textarea
338
+ value={comment}
339
+ onChange={e => setComment(e.target.value)}
340
+ rows={2}
341
+ placeholder="写一条进展或评论…(Ctrl/⌘+Enter 发送)"
342
+ className="w-full resize-y rounded-lg border border-[var(--border)] bg-[var(--bg-secondary)] px-2.5 py-2 text-sm text-gray-200 placeholder-gray-700 focus:border-blue-500/40 focus:outline-none"
343
+ onKeyDown={e => { if ((e.metaKey || e.ctrlKey) && e.key === 'Enter') submitComment(); }}
344
+ />
345
+ <div className="mt-2 flex items-center gap-2">
346
+ <button
347
+ type="button"
348
+ disabled={busy || !comment.trim()}
349
+ onClick={submitComment}
350
+ className="rounded-lg border border-blue-500/30 bg-blue-500/10 px-3 py-1.5 text-xs text-blue-300 disabled:opacity-50"
351
+ >
352
+ Add comment
353
+ </button>
354
+ {actionError && <span className="text-[11px] text-red-400">{actionError}</span>}
355
+ </div>
356
+ </div>
357
+ </section>
358
+ </div>
359
+ </div>
360
+ );
361
+ }