forgebadger 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/README.md +26 -23
  2. package/dist/commands/doctor.d.ts +2 -1
  3. package/dist/commands/doctor.js +1 -1
  4. package/dist/commands/doctor.js.map +1 -1
  5. package/dist/commands/start.d.ts +3 -2
  6. package/dist/commands/start.js +5 -4
  7. package/dist/commands/start.js.map +1 -1
  8. package/dist/gateway/src/config/env.d.ts +5 -0
  9. package/dist/gateway/src/config/env.js +6 -0
  10. package/dist/gateway/src/config/env.js.map +1 -1
  11. package/dist/gateway/src/routes/copilot.js +0 -6
  12. package/dist/gateway/src/routes/copilot.js.map +1 -1
  13. package/dist/gateway/src/routes/sessions.js +5 -2
  14. package/dist/gateway/src/routes/sessions.js.map +1 -1
  15. package/dist/gateway/src/runtime/start-gateway.js +4 -1
  16. package/dist/gateway/src/runtime/start-gateway.js.map +1 -1
  17. package/dist/gateway/src/server.d.ts +2 -0
  18. package/dist/gateway/src/server.js +8 -0
  19. package/dist/gateway/src/server.js.map +1 -1
  20. package/dist/gateway/src/services/adapter-autonomy.d.ts +5 -2
  21. package/dist/gateway/src/services/adapter-autonomy.js +19 -1
  22. package/dist/gateway/src/services/adapter-autonomy.js.map +1 -1
  23. package/dist/gateway/src/services/agent/dispatch-supervisor.d.ts +23 -0
  24. package/dist/gateway/src/services/agent/dispatch-supervisor.js +56 -0
  25. package/dist/gateway/src/services/agent/dispatch-supervisor.js.map +1 -0
  26. package/dist/gateway/src/services/agent/skills/copilot-skills.js +17 -16
  27. package/dist/gateway/src/services/agent/skills/copilot-skills.js.map +1 -1
  28. package/dist/gateway/src/services/agent/tool-availability.js +0 -2
  29. package/dist/gateway/src/services/agent/tool-availability.js.map +1 -1
  30. package/dist/gateway/src/services/agent/tools/platform-coverage.js +5 -2
  31. package/dist/gateway/src/services/agent/tools/platform-coverage.js.map +1 -1
  32. package/dist/gateway/src/services/agent/tools/platform-management.js +2 -1
  33. package/dist/gateway/src/services/agent/tools/platform-management.js.map +1 -1
  34. package/dist/gateway/src/services/agent/tools/project-manager.js +10 -0
  35. package/dist/gateway/src/services/agent/tools/project-manager.js.map +1 -1
  36. package/dist/gateway/src/services/mcp/mcp-server.js +5 -2
  37. package/dist/gateway/src/services/mcp/mcp-server.js.map +1 -1
  38. package/dist/gateway/src/services/platform-commands/catalog.d.ts +10 -0
  39. package/dist/gateway/src/services/platform-commands/catalog.js +82 -12
  40. package/dist/gateway/src/services/platform-commands/catalog.js.map +1 -1
  41. package/dist/gateway/src/services/platform-commands/session-commands.d.ts +18 -1
  42. package/dist/gateway/src/services/platform-commands/session-commands.js +4 -0
  43. package/dist/gateway/src/services/platform-commands/session-commands.js.map +1 -1
  44. package/dist/gateway/src/services/platform-commands/tool-commands.js +1 -1
  45. package/dist/gateway/src/services/platform-commands/tool-commands.js.map +1 -1
  46. package/dist/gateway/src/services/project-manager/management.d.ts +1 -1
  47. package/dist/gateway/src/services/project-manager/management.js +2 -1
  48. package/dist/gateway/src/services/project-manager/management.js.map +1 -1
  49. package/dist/gateway/src/services/project-manager/task-packets.d.ts +4 -0
  50. package/dist/gateway/src/services/project-manager/task-packets.js +14 -0
  51. package/dist/gateway/src/services/project-manager/task-packets.js.map +1 -1
  52. package/dist/runtime/dependency-check.d.ts +3 -1
  53. package/dist/runtime/dependency-check.js +31 -5
  54. package/dist/runtime/dependency-check.js.map +1 -1
  55. package/dist/web/standalone/packages/web/.next/BUILD_ID +1 -1
  56. package/dist/web/standalone/packages/web/.next/build-manifest.json +3 -3
  57. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/cli-config/page/react-loadable-manifest.json +1 -1
  58. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/cli-config/page_client-reference-manifest.js +1 -1
  59. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/automations/page/react-loadable-manifest.json +1 -1
  60. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/automations/page_client-reference-manifest.js +1 -1
  61. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/channels/page/react-loadable-manifest.json +1 -1
  62. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/channels/page_client-reference-manifest.js +1 -1
  63. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/extensions/page/react-loadable-manifest.json +1 -1
  64. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/extensions/page_client-reference-manifest.js +1 -1
  65. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/page/react-loadable-manifest.json +1 -1
  66. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/page_client-reference-manifest.js +1 -1
  67. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/settings/access/page/react-loadable-manifest.json +1 -1
  68. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/settings/access/page_client-reference-manifest.js +1 -1
  69. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/settings/page/react-loadable-manifest.json +1 -1
  70. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/settings/page_client-reference-manifest.js +1 -1
  71. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/tasks/page/react-loadable-manifest.json +1 -1
  72. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/copilot/tasks/page_client-reference-manifest.js +1 -1
  73. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/history/page/react-loadable-manifest.json +1 -1
  74. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/history/page_client-reference-manifest.js +1 -1
  75. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/members/page/react-loadable-manifest.json +1 -1
  76. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/members/page_client-reference-manifest.js +1 -1
  77. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/models/page/react-loadable-manifest.json +1 -1
  78. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/models/page_client-reference-manifest.js +1 -1
  79. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/notifications/page/react-loadable-manifest.json +1 -1
  80. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/notifications/page_client-reference-manifest.js +1 -1
  81. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/page/react-loadable-manifest.json +1 -1
  82. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  83. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/[id]/page/react-loadable-manifest.json +1 -1
  84. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/[id]/page_client-reference-manifest.js +1 -1
  85. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/import/page/react-loadable-manifest.json +1 -1
  86. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/import/page_client-reference-manifest.js +1 -1
  87. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/new/page/react-loadable-manifest.json +1 -1
  88. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/new/page_client-reference-manifest.js +1 -1
  89. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/page/react-loadable-manifest.json +1 -1
  90. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  91. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/sessions/[id]/page/react-loadable-manifest.json +1 -1
  92. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/sessions/[id]/page_client-reference-manifest.js +1 -1
  93. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/sessions/page/react-loadable-manifest.json +1 -1
  94. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/sessions/page_client-reference-manifest.js +1 -1
  95. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/settings/page/react-loadable-manifest.json +1 -1
  96. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  97. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/install/page/react-loadable-manifest.json +1 -1
  98. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/install/page_client-reference-manifest.js +1 -1
  99. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/page/react-loadable-manifest.json +1 -1
  100. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/skills/page_client-reference-manifest.js +1 -1
  101. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/teams/[teamId]/page/react-loadable-manifest.json +1 -1
  102. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/teams/[teamId]/page_client-reference-manifest.js +1 -1
  103. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/teams/page/react-loadable-manifest.json +1 -1
  104. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/teams/page_client-reference-manifest.js +1 -1
  105. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/templates/page/react-loadable-manifest.json +1 -1
  106. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/templates/page_client-reference-manifest.js +1 -1
  107. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/usage/page/react-loadable-manifest.json +1 -1
  108. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/usage/page_client-reference-manifest.js +1 -1
  109. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/workspaces/[projectId]/page/react-loadable-manifest.json +1 -1
  110. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/workspaces/[projectId]/page_client-reference-manifest.js +1 -1
  111. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/workspaces/page/react-loadable-manifest.json +1 -1
  112. package/dist/web/standalone/packages/web/.next/server/app/(dashboard)/workspaces/page_client-reference-manifest.js +1 -1
  113. package/dist/web/standalone/packages/web/.next/server/app/_global-error.html +1 -1
  114. package/dist/web/standalone/packages/web/.next/server/app/_global-error.rsc +1 -1
  115. package/dist/web/standalone/packages/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  116. package/dist/web/standalone/packages/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  117. package/dist/web/standalone/packages/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  118. package/dist/web/standalone/packages/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  119. package/dist/web/standalone/packages/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  120. package/dist/web/standalone/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  121. package/dist/web/standalone/packages/web/.next/server/app/_not-found.html +1 -1
  122. package/dist/web/standalone/packages/web/.next/server/app/_not-found.rsc +11 -11
  123. package/dist/web/standalone/packages/web/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
  124. package/dist/web/standalone/packages/web/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  125. package/dist/web/standalone/packages/web/.next/server/app/_not-found.segments/_index.segment.rsc +6 -6
  126. package/dist/web/standalone/packages/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  127. package/dist/web/standalone/packages/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  128. package/dist/web/standalone/packages/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  129. package/dist/web/standalone/packages/web/.next/server/app/cli-config.html +1 -1
  130. package/dist/web/standalone/packages/web/.next/server/app/cli-config.rsc +13 -13
  131. package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/!KGRhc2hib2FyZCk/cli-config/__PAGE__.segment.rsc +2 -2
  132. package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/!KGRhc2hib2FyZCk/cli-config.segment.rsc +3 -3
  133. package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  134. package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/_full.segment.rsc +13 -13
  135. package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/_head.segment.rsc +4 -4
  136. package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/_index.segment.rsc +6 -6
  137. package/dist/web/standalone/packages/web/.next/server/app/cli-config.segments/_tree.segment.rsc +2 -2
  138. package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.html +1 -1
  139. package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.rsc +15 -15
  140. package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/!KGRhc2hib2FyZCk/copilot/automations/__PAGE__.segment.rsc +3 -3
  141. package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/!KGRhc2hib2FyZCk/copilot/automations.segment.rsc +3 -3
  142. package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/!KGRhc2hib2FyZCk/copilot.segment.rsc +3 -3
  143. package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  144. package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/_full.segment.rsc +15 -15
  145. package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/_head.segment.rsc +4 -4
  146. package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/_index.segment.rsc +6 -6
  147. package/dist/web/standalone/packages/web/.next/server/app/copilot/automations.segments/_tree.segment.rsc +2 -2
  148. package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.html +1 -1
  149. package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.rsc +15 -15
  150. package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/!KGRhc2hib2FyZCk/copilot/channels/__PAGE__.segment.rsc +3 -3
  151. package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/!KGRhc2hib2FyZCk/copilot/channels.segment.rsc +3 -3
  152. package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/!KGRhc2hib2FyZCk/copilot.segment.rsc +3 -3
  153. package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  154. package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/_full.segment.rsc +15 -15
  155. package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/_head.segment.rsc +4 -4
  156. package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/_index.segment.rsc +6 -6
  157. package/dist/web/standalone/packages/web/.next/server/app/copilot/channels.segments/_tree.segment.rsc +2 -2
  158. package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.html +1 -1
  159. package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.rsc +15 -15
  160. package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/!KGRhc2hib2FyZCk/copilot/extensions/__PAGE__.segment.rsc +3 -3
  161. package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/!KGRhc2hib2FyZCk/copilot/extensions.segment.rsc +3 -3
  162. package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/!KGRhc2hib2FyZCk/copilot.segment.rsc +3 -3
  163. package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  164. package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/_full.segment.rsc +15 -15
  165. package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/_head.segment.rsc +4 -4
  166. package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/_index.segment.rsc +6 -6
  167. package/dist/web/standalone/packages/web/.next/server/app/copilot/extensions.segments/_tree.segment.rsc +2 -2
  168. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings/access.html +1 -1
  169. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings/access.rsc +16 -16
  170. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings/access.segments/!KGRhc2hib2FyZCk/copilot/settings/access/__PAGE__.segment.rsc +3 -3
  171. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings/access.segments/!KGRhc2hib2FyZCk/copilot/settings/access.segment.rsc +3 -3
  172. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings/access.segments/!KGRhc2hib2FyZCk/copilot/settings.segment.rsc +3 -3
  173. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings/access.segments/!KGRhc2hib2FyZCk/copilot.segment.rsc +3 -3
  174. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings/access.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  175. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings/access.segments/_full.segment.rsc +16 -16
  176. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings/access.segments/_head.segment.rsc +4 -4
  177. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings/access.segments/_index.segment.rsc +6 -6
  178. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings/access.segments/_tree.segment.rsc +2 -2
  179. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.html +1 -1
  180. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.rsc +15 -15
  181. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/!KGRhc2hib2FyZCk/copilot/settings/__PAGE__.segment.rsc +3 -3
  182. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/!KGRhc2hib2FyZCk/copilot/settings.segment.rsc +3 -3
  183. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/!KGRhc2hib2FyZCk/copilot.segment.rsc +3 -3
  184. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  185. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/_full.segment.rsc +15 -15
  186. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/_head.segment.rsc +4 -4
  187. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/_index.segment.rsc +6 -6
  188. package/dist/web/standalone/packages/web/.next/server/app/copilot/settings.segments/_tree.segment.rsc +2 -2
  189. package/dist/web/standalone/packages/web/.next/server/app/copilot.html +1 -1
  190. package/dist/web/standalone/packages/web/.next/server/app/copilot.rsc +16 -16
  191. package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/!KGRhc2hib2FyZCk/copilot/__PAGE__.segment.rsc +4 -4
  192. package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/!KGRhc2hib2FyZCk/copilot.segment.rsc +3 -3
  193. package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  194. package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/_full.segment.rsc +16 -16
  195. package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/_head.segment.rsc +4 -4
  196. package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/_index.segment.rsc +6 -6
  197. package/dist/web/standalone/packages/web/.next/server/app/copilot.segments/_tree.segment.rsc +2 -2
  198. package/dist/web/standalone/packages/web/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  199. package/dist/web/standalone/packages/web/.next/server/app/forgot-password.html +1 -1
  200. package/dist/web/standalone/packages/web/.next/server/app/forgot-password.rsc +13 -13
  201. package/dist/web/standalone/packages/web/.next/server/app/forgot-password.segments/_full.segment.rsc +13 -13
  202. package/dist/web/standalone/packages/web/.next/server/app/forgot-password.segments/_head.segment.rsc +4 -4
  203. package/dist/web/standalone/packages/web/.next/server/app/forgot-password.segments/_index.segment.rsc +6 -6
  204. package/dist/web/standalone/packages/web/.next/server/app/forgot-password.segments/_tree.segment.rsc +2 -2
  205. package/dist/web/standalone/packages/web/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +4 -4
  206. package/dist/web/standalone/packages/web/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +3 -3
  207. package/dist/web/standalone/packages/web/.next/server/app/history.html +1 -1
  208. package/dist/web/standalone/packages/web/.next/server/app/history.rsc +16 -16
  209. package/dist/web/standalone/packages/web/.next/server/app/history.segments/!KGRhc2hib2FyZCk/history/__PAGE__.segment.rsc +4 -4
  210. package/dist/web/standalone/packages/web/.next/server/app/history.segments/!KGRhc2hib2FyZCk/history.segment.rsc +3 -3
  211. package/dist/web/standalone/packages/web/.next/server/app/history.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  212. package/dist/web/standalone/packages/web/.next/server/app/history.segments/_full.segment.rsc +16 -16
  213. package/dist/web/standalone/packages/web/.next/server/app/history.segments/_head.segment.rsc +4 -4
  214. package/dist/web/standalone/packages/web/.next/server/app/history.segments/_index.segment.rsc +6 -6
  215. package/dist/web/standalone/packages/web/.next/server/app/history.segments/_tree.segment.rsc +2 -2
  216. package/dist/web/standalone/packages/web/.next/server/app/index.html +1 -1
  217. package/dist/web/standalone/packages/web/.next/server/app/index.rsc +16 -16
  218. package/dist/web/standalone/packages/web/.next/server/app/index.segments/!KGRhc2hib2FyZCk/__PAGE__.segment.rsc +4 -4
  219. package/dist/web/standalone/packages/web/.next/server/app/index.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  220. package/dist/web/standalone/packages/web/.next/server/app/index.segments/_full.segment.rsc +16 -16
  221. package/dist/web/standalone/packages/web/.next/server/app/index.segments/_head.segment.rsc +4 -4
  222. package/dist/web/standalone/packages/web/.next/server/app/index.segments/_index.segment.rsc +6 -6
  223. package/dist/web/standalone/packages/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  224. package/dist/web/standalone/packages/web/.next/server/app/join/page_client-reference-manifest.js +1 -1
  225. package/dist/web/standalone/packages/web/.next/server/app/join.html +1 -1
  226. package/dist/web/standalone/packages/web/.next/server/app/join.rsc +12 -12
  227. package/dist/web/standalone/packages/web/.next/server/app/join.segments/_full.segment.rsc +12 -12
  228. package/dist/web/standalone/packages/web/.next/server/app/join.segments/_head.segment.rsc +4 -4
  229. package/dist/web/standalone/packages/web/.next/server/app/join.segments/_index.segment.rsc +6 -6
  230. package/dist/web/standalone/packages/web/.next/server/app/join.segments/_tree.segment.rsc +2 -2
  231. package/dist/web/standalone/packages/web/.next/server/app/join.segments/join/__PAGE__.segment.rsc +3 -3
  232. package/dist/web/standalone/packages/web/.next/server/app/join.segments/join.segment.rsc +3 -3
  233. package/dist/web/standalone/packages/web/.next/server/app/login/page_client-reference-manifest.js +1 -1
  234. package/dist/web/standalone/packages/web/.next/server/app/login.html +1 -1
  235. package/dist/web/standalone/packages/web/.next/server/app/login.rsc +13 -13
  236. package/dist/web/standalone/packages/web/.next/server/app/login.segments/_full.segment.rsc +13 -13
  237. package/dist/web/standalone/packages/web/.next/server/app/login.segments/_head.segment.rsc +4 -4
  238. package/dist/web/standalone/packages/web/.next/server/app/login.segments/_index.segment.rsc +6 -6
  239. package/dist/web/standalone/packages/web/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  240. package/dist/web/standalone/packages/web/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  241. package/dist/web/standalone/packages/web/.next/server/app/login.segments/login.segment.rsc +3 -3
  242. package/dist/web/standalone/packages/web/.next/server/app/members.html +1 -1
  243. package/dist/web/standalone/packages/web/.next/server/app/members.rsc +16 -16
  244. package/dist/web/standalone/packages/web/.next/server/app/members.segments/!KGRhc2hib2FyZCk/members/__PAGE__.segment.rsc +4 -4
  245. package/dist/web/standalone/packages/web/.next/server/app/members.segments/!KGRhc2hib2FyZCk/members.segment.rsc +3 -3
  246. package/dist/web/standalone/packages/web/.next/server/app/members.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  247. package/dist/web/standalone/packages/web/.next/server/app/members.segments/_full.segment.rsc +16 -16
  248. package/dist/web/standalone/packages/web/.next/server/app/members.segments/_head.segment.rsc +4 -4
  249. package/dist/web/standalone/packages/web/.next/server/app/members.segments/_index.segment.rsc +6 -6
  250. package/dist/web/standalone/packages/web/.next/server/app/members.segments/_tree.segment.rsc +2 -2
  251. package/dist/web/standalone/packages/web/.next/server/app/models.html +1 -1
  252. package/dist/web/standalone/packages/web/.next/server/app/models.rsc +16 -16
  253. package/dist/web/standalone/packages/web/.next/server/app/models.segments/!KGRhc2hib2FyZCk/models/__PAGE__.segment.rsc +4 -4
  254. package/dist/web/standalone/packages/web/.next/server/app/models.segments/!KGRhc2hib2FyZCk/models.segment.rsc +3 -3
  255. package/dist/web/standalone/packages/web/.next/server/app/models.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  256. package/dist/web/standalone/packages/web/.next/server/app/models.segments/_full.segment.rsc +16 -16
  257. package/dist/web/standalone/packages/web/.next/server/app/models.segments/_head.segment.rsc +4 -4
  258. package/dist/web/standalone/packages/web/.next/server/app/models.segments/_index.segment.rsc +6 -6
  259. package/dist/web/standalone/packages/web/.next/server/app/models.segments/_tree.segment.rsc +2 -2
  260. package/dist/web/standalone/packages/web/.next/server/app/notifications.html +1 -1
  261. package/dist/web/standalone/packages/web/.next/server/app/notifications.rsc +16 -16
  262. package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/!KGRhc2hib2FyZCk/notifications/__PAGE__.segment.rsc +4 -4
  263. package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/!KGRhc2hib2FyZCk/notifications.segment.rsc +3 -3
  264. package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  265. package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/_full.segment.rsc +16 -16
  266. package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/_head.segment.rsc +4 -4
  267. package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/_index.segment.rsc +6 -6
  268. package/dist/web/standalone/packages/web/.next/server/app/notifications.segments/_tree.segment.rsc +2 -2
  269. package/dist/web/standalone/packages/web/.next/server/app/projects/import.html +1 -1
  270. package/dist/web/standalone/packages/web/.next/server/app/projects/import.rsc +16 -16
  271. package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/!KGRhc2hib2FyZCk/projects/import/__PAGE__.segment.rsc +4 -4
  272. package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/!KGRhc2hib2FyZCk/projects/import.segment.rsc +3 -3
  273. package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +3 -3
  274. package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  275. package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/_full.segment.rsc +16 -16
  276. package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/_head.segment.rsc +4 -4
  277. package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/_index.segment.rsc +6 -6
  278. package/dist/web/standalone/packages/web/.next/server/app/projects/import.segments/_tree.segment.rsc +2 -2
  279. package/dist/web/standalone/packages/web/.next/server/app/projects/new.html +1 -1
  280. package/dist/web/standalone/packages/web/.next/server/app/projects/new.rsc +16 -16
  281. package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/!KGRhc2hib2FyZCk/projects/new/__PAGE__.segment.rsc +4 -4
  282. package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/!KGRhc2hib2FyZCk/projects/new.segment.rsc +3 -3
  283. package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +3 -3
  284. package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  285. package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/_full.segment.rsc +16 -16
  286. package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/_head.segment.rsc +4 -4
  287. package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/_index.segment.rsc +6 -6
  288. package/dist/web/standalone/packages/web/.next/server/app/projects/new.segments/_tree.segment.rsc +2 -2
  289. package/dist/web/standalone/packages/web/.next/server/app/projects.html +1 -1
  290. package/dist/web/standalone/packages/web/.next/server/app/projects.rsc +16 -16
  291. package/dist/web/standalone/packages/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects/__PAGE__.segment.rsc +4 -4
  292. package/dist/web/standalone/packages/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk/projects.segment.rsc +3 -3
  293. package/dist/web/standalone/packages/web/.next/server/app/projects.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  294. package/dist/web/standalone/packages/web/.next/server/app/projects.segments/_full.segment.rsc +16 -16
  295. package/dist/web/standalone/packages/web/.next/server/app/projects.segments/_head.segment.rsc +4 -4
  296. package/dist/web/standalone/packages/web/.next/server/app/projects.segments/_index.segment.rsc +6 -6
  297. package/dist/web/standalone/packages/web/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  298. package/dist/web/standalone/packages/web/.next/server/app/register/page_client-reference-manifest.js +1 -1
  299. package/dist/web/standalone/packages/web/.next/server/app/register.html +1 -1
  300. package/dist/web/standalone/packages/web/.next/server/app/register.rsc +13 -13
  301. package/dist/web/standalone/packages/web/.next/server/app/register.segments/_full.segment.rsc +13 -13
  302. package/dist/web/standalone/packages/web/.next/server/app/register.segments/_head.segment.rsc +4 -4
  303. package/dist/web/standalone/packages/web/.next/server/app/register.segments/_index.segment.rsc +6 -6
  304. package/dist/web/standalone/packages/web/.next/server/app/register.segments/_tree.segment.rsc +2 -2
  305. package/dist/web/standalone/packages/web/.next/server/app/register.segments/register/__PAGE__.segment.rsc +4 -4
  306. package/dist/web/standalone/packages/web/.next/server/app/register.segments/register.segment.rsc +3 -3
  307. package/dist/web/standalone/packages/web/.next/server/app/sessions.html +1 -1
  308. package/dist/web/standalone/packages/web/.next/server/app/sessions.rsc +16 -16
  309. package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions/__PAGE__.segment.rsc +4 -4
  310. package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk/sessions.segment.rsc +3 -3
  311. package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  312. package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/_full.segment.rsc +16 -16
  313. package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/_head.segment.rsc +4 -4
  314. package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/_index.segment.rsc +6 -6
  315. package/dist/web/standalone/packages/web/.next/server/app/sessions.segments/_tree.segment.rsc +2 -2
  316. package/dist/web/standalone/packages/web/.next/server/app/settings.html +1 -1
  317. package/dist/web/standalone/packages/web/.next/server/app/settings.rsc +16 -16
  318. package/dist/web/standalone/packages/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +4 -4
  319. package/dist/web/standalone/packages/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +3 -3
  320. package/dist/web/standalone/packages/web/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  321. package/dist/web/standalone/packages/web/.next/server/app/settings.segments/_full.segment.rsc +16 -16
  322. package/dist/web/standalone/packages/web/.next/server/app/settings.segments/_head.segment.rsc +4 -4
  323. package/dist/web/standalone/packages/web/.next/server/app/settings.segments/_index.segment.rsc +6 -6
  324. package/dist/web/standalone/packages/web/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  325. package/dist/web/standalone/packages/web/.next/server/app/skills/install.html +1 -1
  326. package/dist/web/standalone/packages/web/.next/server/app/skills/install.rsc +16 -16
  327. package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/!KGRhc2hib2FyZCk/skills/install/__PAGE__.segment.rsc +4 -4
  328. package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/!KGRhc2hib2FyZCk/skills/install.segment.rsc +3 -3
  329. package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +3 -3
  330. package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  331. package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/_full.segment.rsc +16 -16
  332. package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/_head.segment.rsc +4 -4
  333. package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/_index.segment.rsc +6 -6
  334. package/dist/web/standalone/packages/web/.next/server/app/skills/install.segments/_tree.segment.rsc +2 -2
  335. package/dist/web/standalone/packages/web/.next/server/app/skills.html +1 -1
  336. package/dist/web/standalone/packages/web/.next/server/app/skills.rsc +16 -16
  337. package/dist/web/standalone/packages/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills/__PAGE__.segment.rsc +4 -4
  338. package/dist/web/standalone/packages/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk/skills.segment.rsc +3 -3
  339. package/dist/web/standalone/packages/web/.next/server/app/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  340. package/dist/web/standalone/packages/web/.next/server/app/skills.segments/_full.segment.rsc +16 -16
  341. package/dist/web/standalone/packages/web/.next/server/app/skills.segments/_head.segment.rsc +4 -4
  342. package/dist/web/standalone/packages/web/.next/server/app/skills.segments/_index.segment.rsc +6 -6
  343. package/dist/web/standalone/packages/web/.next/server/app/skills.segments/_tree.segment.rsc +2 -2
  344. package/dist/web/standalone/packages/web/.next/server/app/teams.html +1 -1
  345. package/dist/web/standalone/packages/web/.next/server/app/teams.rsc +13 -13
  346. package/dist/web/standalone/packages/web/.next/server/app/teams.segments/!KGRhc2hib2FyZCk/teams/__PAGE__.segment.rsc +2 -2
  347. package/dist/web/standalone/packages/web/.next/server/app/teams.segments/!KGRhc2hib2FyZCk/teams.segment.rsc +3 -3
  348. package/dist/web/standalone/packages/web/.next/server/app/teams.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  349. package/dist/web/standalone/packages/web/.next/server/app/teams.segments/_full.segment.rsc +13 -13
  350. package/dist/web/standalone/packages/web/.next/server/app/teams.segments/_head.segment.rsc +4 -4
  351. package/dist/web/standalone/packages/web/.next/server/app/teams.segments/_index.segment.rsc +6 -6
  352. package/dist/web/standalone/packages/web/.next/server/app/teams.segments/_tree.segment.rsc +2 -2
  353. package/dist/web/standalone/packages/web/.next/server/app/templates.html +1 -1
  354. package/dist/web/standalone/packages/web/.next/server/app/templates.rsc +16 -16
  355. package/dist/web/standalone/packages/web/.next/server/app/templates.segments/!KGRhc2hib2FyZCk/templates/__PAGE__.segment.rsc +4 -4
  356. package/dist/web/standalone/packages/web/.next/server/app/templates.segments/!KGRhc2hib2FyZCk/templates.segment.rsc +3 -3
  357. package/dist/web/standalone/packages/web/.next/server/app/templates.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  358. package/dist/web/standalone/packages/web/.next/server/app/templates.segments/_full.segment.rsc +16 -16
  359. package/dist/web/standalone/packages/web/.next/server/app/templates.segments/_head.segment.rsc +4 -4
  360. package/dist/web/standalone/packages/web/.next/server/app/templates.segments/_index.segment.rsc +6 -6
  361. package/dist/web/standalone/packages/web/.next/server/app/templates.segments/_tree.segment.rsc +2 -2
  362. package/dist/web/standalone/packages/web/.next/server/app/usage.html +1 -1
  363. package/dist/web/standalone/packages/web/.next/server/app/usage.rsc +16 -16
  364. package/dist/web/standalone/packages/web/.next/server/app/usage.segments/!KGRhc2hib2FyZCk/usage/__PAGE__.segment.rsc +4 -4
  365. package/dist/web/standalone/packages/web/.next/server/app/usage.segments/!KGRhc2hib2FyZCk/usage.segment.rsc +3 -3
  366. package/dist/web/standalone/packages/web/.next/server/app/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  367. package/dist/web/standalone/packages/web/.next/server/app/usage.segments/_full.segment.rsc +16 -16
  368. package/dist/web/standalone/packages/web/.next/server/app/usage.segments/_head.segment.rsc +4 -4
  369. package/dist/web/standalone/packages/web/.next/server/app/usage.segments/_index.segment.rsc +6 -6
  370. package/dist/web/standalone/packages/web/.next/server/app/usage.segments/_tree.segment.rsc +2 -2
  371. package/dist/web/standalone/packages/web/.next/server/app/workspaces.html +1 -1
  372. package/dist/web/standalone/packages/web/.next/server/app/workspaces.rsc +13 -13
  373. package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/!KGRhc2hib2FyZCk/workspaces/__PAGE__.segment.rsc +2 -2
  374. package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/!KGRhc2hib2FyZCk/workspaces.segment.rsc +3 -3
  375. package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -5
  376. package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/_full.segment.rsc +13 -13
  377. package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/_head.segment.rsc +4 -4
  378. package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/_index.segment.rsc +6 -6
  379. package/dist/web/standalone/packages/web/.next/server/app/workspaces.segments/_tree.segment.rsc +2 -2
  380. package/dist/web/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__05uxdhs._.js +1 -1
  381. package/dist/web/standalone/packages/web/.next/server/chunks/ssr/[root-of-the-server]__0e0am7z._.js +1 -1
  382. package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0f6qxtj._.js +1 -1
  383. package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0h3beoe._.js +1 -1
  384. package/dist/web/standalone/packages/web/.next/server/chunks/ssr/_0x1-w0e._.js +1 -1
  385. package/dist/web/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_0euki8~._.js +1 -1
  386. package/dist/web/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_app_(dashboard)_page_tsx_04lc303._.js +1 -1
  387. package/dist/web/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_components_copilot_0mvr-eu._.js +1 -1
  388. package/dist/web/standalone/packages/web/.next/server/chunks/ssr/packages_web_src_components_copilot_CopilotChannelsPage_tsx_10jdmdv._.js +1 -1
  389. package/dist/web/standalone/packages/web/.next/server/middleware-build-manifest.js +3 -3
  390. package/dist/web/standalone/packages/web/.next/server/pages/404.html +1 -1
  391. package/dist/web/standalone/packages/web/.next/server/pages/500.html +1 -1
  392. package/dist/web/standalone/packages/web/.next/static/chunks/01qswe5yw6zti.js +1 -0
  393. package/dist/web/standalone/packages/web/.next/static/chunks/{0om1z.zeag-a7.js → 05mebsn5x~f7z.js} +1 -1
  394. package/dist/web/standalone/packages/web/.next/static/chunks/05pjsamrc9hw8.css +1 -0
  395. package/dist/web/standalone/packages/web/.next/static/chunks/08i6pyfaut9bg.js +1 -0
  396. package/dist/web/standalone/packages/web/.next/static/chunks/0a812oghcxixr.js +1 -0
  397. package/dist/web/standalone/packages/web/.next/static/chunks/{0c11igjuiagib.js → 0bihh5ze2~z1f.js} +1 -1
  398. package/dist/web/standalone/packages/web/.next/static/chunks/0cnz9fv.au4.r.js +1 -0
  399. package/dist/web/standalone/packages/web/.next/static/chunks/0h73tv8xwqxqw.js +1 -0
  400. package/dist/web/standalone/packages/web/.next/static/chunks/{17hy0ddp_si9n.js → 0mx93hpu5af8p.js} +1 -1
  401. package/dist/web/standalone/packages/web/.next/static/chunks/0vxu682behxa7.js +1 -0
  402. package/dist/web/standalone/packages/web/.next/static/chunks/0wel25michro~.js +1 -0
  403. package/dist/web/standalone/packages/web/.next/static/chunks/13ehygx5durlz.js +1 -0
  404. package/docs/README.zh-CN.md +15 -15
  405. package/docs/README.zh-TW.md +15 -15
  406. package/package.json +2 -2
  407. package/dist/web/standalone/packages/web/.next/static/chunks/0-xefkkbz5sms.js +0 -1
  408. package/dist/web/standalone/packages/web/.next/static/chunks/0-~0vw7n16dl5.js +0 -1
  409. package/dist/web/standalone/packages/web/.next/static/chunks/0.dinxntqfai9.js +0 -1
  410. package/dist/web/standalone/packages/web/.next/static/chunks/09wc9dfimci6a.js +0 -1
  411. package/dist/web/standalone/packages/web/.next/static/chunks/0d7lv09enxqxk.js +0 -1
  412. package/dist/web/standalone/packages/web/.next/static/chunks/0ek9hith8j-xs.js +0 -1
  413. package/dist/web/standalone/packages/web/.next/static/chunks/0g477-voyum5d.css +0 -1
  414. package/dist/web/standalone/packages/web/.next/static/chunks/0ub4kcycb_b...js +0 -1
  415. package/dist/web/standalone/packages/web/.next/static/chunks/0v8tskw4xza79.js +0 -1
  416. /package/dist/web/standalone/packages/web/.next/static/{UoUlLp6otXSsVrQmrFF4Z → lcO9z98BJ26kFzrqXH-ot}/_buildManifest.js +0 -0
  417. /package/dist/web/standalone/packages/web/.next/static/{UoUlLp6otXSsVrQmrFF4Z → lcO9z98BJ26kFzrqXH-ot}/_clientMiddlewareManifest.js +0 -0
  418. /package/dist/web/standalone/packages/web/.next/static/{UoUlLp6otXSsVrQmrFF4Z → lcO9z98BJ26kFzrqXH-ot}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[70069,a=>{"use strict";var b=a.i(20486),c=a.i(72637),d=a.i(39747),e=a.i(6145),f=a.i(67123),g=a.i(14015),h=a.i(98568),h=h,i=a.i(60420),j=a.i(90259),k=a.i(94327),l=a.i(71700),m=a.i(97494),n=a.i(70458),o=a.i(35133),p=a.i(6023),q=a.i(23834),r=a.i(39042),s=a.i(90409),t=a.i(89738),u=a.i(79914),v=a.i(39465);function w({status:a}){let c=(0,t.normalizeSessionStatus)(a);return(0,b.jsx)("span",{className:(0,v.cn)("size-2 shrink-0 rounded-full","running"===c?"animate-pulse bg-emerald-400":"error"===c?"bg-red-400":"bg-muted-foreground/40")})}function x({status:a}){let{t:c}=(0,u.useLanguage)(),d=(0,t.normalizeSessionStatus)(a);return(0,b.jsx)("span",{className:(0,v.cn)("shrink-0 text-xs","running"===d?"text-emerald-400":"error"===d?"text-red-400":"text-muted-foreground"),children:c("running"===d?"sessions.running":"error"===d?"sessions.error":"sessions.stopped")})}a.s(["default",0,function(){var a,y,z,A,B;let C,D,E,F,G,H,I,J,K,{t:L}=(0,u.useLanguage)(),M=(0,d.useQuery)({queryKey:["dashboard-summary"],queryFn:r.getDashboardSummary}),N=(0,d.useQuery)({queryKey:["sessions"],queryFn:r.listSessions}),O=(0,d.useQuery)({queryKey:["projects"],queryFn:r.listProjects}),P=(0,d.useQuery)({queryKey:["dependencies"],queryFn:r.getDependencies}),Q=(0,d.useQuery)({queryKey:q.ADAPTER_DISCOVERY_QUERY_KEY,queryFn:r.discoverAdapters}),R=N.data?.sessions??[],S=O.data?.projects??[],T=S[0],U=M.data?.stats,V=M.data?.health,W=P.data?.terminalRuntime,X=(0,s.getTerminalRuntimeRemediation)(W?.mode),Y=(0,s.getTerminalRuntimeSetupGuidance)(W?.mode,W?.supported),Z=P.isSuccess&&W?.supported===!0,$=P.isLoading?L("dashboard.statusLoading"):P.isError||!W?L("dashboard.dependenciesHealthUnavailable"):L(X.detailKey),_=!P.isLoading&&Y.blocked,aa=Q.data?.adapters??[],ab=aa.filter(r.isAdapterLaunchable).length,ac=Q.isSuccess&&ab>0,ad=Q.isLoading?L("dashboard.statusLoading"):Q.isError?L("dashboard.activationAdapterUnavailable"):ab>0?L("dashboard.adaptersHealthReady").replace("{count}",String(ab)):L("dashboard.activationAdapterMissing"),ae=U?.runningSessions??R.filter(a=>"running"===(0,t.normalizeSessionStatus)(a.status)).length,af=[{label:L("nav.projects"),value:U?.projects??0,icon:i.FolderOpen,href:"/projects"},{label:L("nav.sessions"),value:U?.sessions??0,sub:L("dashboard.runningNow").replace("{count}",String(ae)),icon:k.TerminalSquare,href:"/sessions"},{label:L("nav.skills"),value:U?.skills??0,icon:l.Wrench,href:"/skills"}],ag=R.slice(0,6),ah=U?.projects??S.length,ai=U?.sessions??R.length,aj=(a={terminalRuntime:W,dependenciesLoading:P.isLoading,dependenciesError:P.isError,adapters:aa,adaptersLoading:Q.isLoading,adaptersError:Q.isError,modelsHealthy:V?.models.healthy,modelsLoading:M.isLoading,modelsError:M.isError,projectCount:ah,sessionCount:ai,acceptedDeliveries:U?.acceptedDeliveries??0,firstProjectId:T?.id},D=!1===(C=(0,s.getTerminalRuntimeSetupGuidance)(a.terminalRuntime?.mode,a.terminalRuntime?.supported)).blocked,E=!a.adaptersLoading&&!a.adaptersError&&(a.adapters??[]).some(r.isAdapterLaunchable),F=a.projectCount>0,G=a.sessionCount>0,H=a.firstProjectId?`/projects/${a.firstProjectId}?tab=project-manager`:"/projects",K=!(J=(I=[{id:"runtime",labelKey:"dashboard.activationRuntime",detailKey:(y=a,z=C.descriptionKey,y.dependenciesLoading?"dashboard.activationRuntimeLoading":y.dependenciesError||!y.terminalRuntime?"dashboard.activationRuntimeUnavailable":z),done:D,action:{href:"/settings",labelKey:"dashboard.activationOpenSettings"}},{id:"adapter",labelKey:"dashboard.activationAdapter",detailKey:(A=a,B=E,A.adaptersLoading?"dashboard.activationAdapterLoading":A.adaptersError?"dashboard.activationAdapterUnavailable":B?"dashboard.activationAdapterReady":"dashboard.activationAdapterMissing"),done:E,action:{href:"/settings",labelKey:"dashboard.activationOpenSettings"}},{id:"model",labelKey:"dashboard.activationModel",detailKey:"dashboard.activationModelReady",done:!1,optional:!0,action:{href:"/models",labelKey:"dashboard.activationOpenModels"}},{id:"project",labelKey:"dashboard.activationProject",detailKey:F?"dashboard.firstRunProjectReady":"dashboard.firstRunProjectMissing",done:F,action:{href:"/projects/new",labelKey:"projects.create"}},{id:"session",labelKey:"dashboard.activationSession",detailKey:G?"dashboard.firstRunSessionReady":"dashboard.firstRunSessionMissing",done:G,optional:!0,action:{href:H,labelKey:"dashboard.activationStartDelivery"}},{id:"delivery",labelKey:"dashboard.activationDelivery",detailKey:(a.acceptedDeliveries??0)>0?"dashboard.activationDeliveryReady":"dashboard.activationDeliveryMissing",done:(a.acceptedDeliveries??0)>0,action:{href:"/projects",labelKey:"dashboard.activationStartDelivery"}}]).find(a=>!a.optional&&!a.done)),{steps:I,complete:K,currentStepId:J?.id??null,primaryAction:K?{href:"/projects",labelKey:"dashboard.activationContinueDelivery"}:J.action,secondaryActions:J?.id==="project"?[{href:"/projects/import",labelKey:"projects.import"}]:[]}),ak=!aj.complete,al=aj.steps.filter(a=>!a.optional),am=al.filter(a=>a.done).length,an=[{key:"runtime",label:L("dashboard.dependenciesHealth"),detail:$,healthy:Z,href:X.href},{key:"adapters",label:L("dashboard.adaptersHealth"),detail:ad,healthy:ac,href:"/settings"},{key:"models",label:L("dashboard.modelHealth"),detail:V?.models.message??L("dashboard.modelHealthDescription"),healthy:V?.models.healthy??!1,href:"/models"},{key:"config",label:L("dashboard.configHealth"),detail:V?.projectConfig.message??L("dashboard.configHealthDescription"),healthy:V?.projectConfig.healthy??!1,href:"/templates"},{key:"sessions",label:L("dashboard.sessionHealth"),detail:V?.sessions.message??L("dashboard.sessionHealthDescription"),healthy:V?.sessions.healthy??!1,href:"/sessions"},{key:"skills",label:L("dashboard.skillHealth"),detail:V?.skills.message??L("dashboard.skillHealthDescription"),healthy:V?.skills.healthy??!1,href:"/skills"}];return(0,b.jsxs)("div",{className:"mx-auto max-w-6xl space-y-6 p-6",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:L("dashboard.title")}),(0,b.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:L("dashboard.subtitle")})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(m.Button,{asChild:!0,size:"sm",className:"bg-brand text-brand-foreground hover:bg-brand/90",children:(0,b.jsxs)(c.default,{href:"/sessions",children:[(0,b.jsx)(j.Plus,{className:"size-4"}),L("projects.newSession")]})}),(0,b.jsx)(m.Button,{asChild:!0,size:"sm",variant:"outline",children:(0,b.jsx)(c.default,{href:"/projects/new",children:L("projects.create")})})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-2 gap-3 lg:grid-cols-3",children:af.map((a,d)=>(0,b.jsx)(c.default,{href:a.href,className:"group forgebadger-animate-in",style:{animationDelay:`${50*d}ms`},children:(0,b.jsx)(n.Card,{className:"h-full transition-all duration-200 group-hover:-translate-y-0.5 group-hover:border-brand/40 group-hover:shadow-lg group-hover:shadow-brand/5",children:(0,b.jsxs)(n.CardContent,{className:"flex items-center gap-3 p-4",children:[(0,b.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-md bg-brand/10 text-brand",children:(0,b.jsx)(a.icon,{className:"size-4"})}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"text-2xl font-semibold leading-none",children:a.value}),(0,b.jsxs)("div",{className:"mt-1.5 truncate text-xs text-muted-foreground",children:[a.label,a.sub?(0,b.jsxs)("span",{className:"text-muted-foreground/70",children:[" · ",a.sub]}):null]})]}),(0,b.jsx)(e.ArrowUpRight,{className:"size-4 shrink-0 text-muted-foreground/30 transition-colors group-hover:text-brand"})]})})},a.label))}),ak&&(0,b.jsxs)(n.Card,{className:"forgebadger-animate-in border-brand/30 bg-brand/5",children:[(0,b.jsx)(n.CardHeader,{className:"pb-3",children:(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)(n.CardTitle,{className:"text-base",children:L("dashboard.firstRunTitle")}),(0,b.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:L("dashboard.firstRunDescription")})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)("div",{className:"h-1.5 w-24 overflow-hidden rounded-full bg-muted",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-brand transition-all duration-500",style:{width:`${Math.round(am/al.length*100)}%`}})}),(0,b.jsxs)("span",{className:"tabular-nums",children:[am,"/",al.length]})]})]})}),(0,b.jsxs)(n.CardContent,{className:"space-y-4",children:[(0,b.jsx)("div",{className:"grid gap-2 sm:grid-cols-2 xl:grid-cols-3",children:aj.steps.map(a=>(0,b.jsxs)("div",{className:"flex items-start gap-2.5 rounded-md border border-border/70 bg-background/60 p-3",children:[a.done?(0,b.jsx)(f.CheckCircle2,{className:"mt-0.5 size-4 shrink-0 text-emerald-400"}):(0,b.jsx)(h.default,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground/40"}),(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsxs)("div",{className:"text-sm font-medium",children:[L(a.labelKey),a.optional&&(0,b.jsx)("span",{className:"ml-2 text-xs font-normal text-muted-foreground",children:L("dashboard.activationOptional")})]}),(0,b.jsx)("p",{className:"mt-0.5 text-xs leading-relaxed text-muted-foreground",children:L(a.detailKey)}),"runtime"===a.id&&_&&(0,b.jsx)("div",{className:"mt-2",children:(0,b.jsx)(p.RuntimeSetupCommands,{guidance:Y})})]})]},a.id))}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(m.Button,{asChild:!0,size:"sm",className:"bg-brand text-brand-foreground hover:bg-brand/90",children:(0,b.jsx)(c.default,{href:aj.primaryAction.href,children:L(aj.primaryAction.labelKey)})}),aj.secondaryActions.map(a=>(0,b.jsx)(m.Button,{asChild:!0,size:"sm",variant:"outline",children:(0,b.jsx)(c.default,{href:a.href,children:L(a.labelKey)})},a.href))]})]})]}),(0,b.jsxs)("div",{className:"grid gap-6 xl:grid-cols-5",children:[(0,b.jsxs)("section",{className:"space-y-3 xl:col-span-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-sm font-semibold",children:L("dashboard.recentSessions")}),(0,b.jsx)(m.Button,{asChild:!0,variant:"ghost",size:"sm",className:"text-muted-foreground",children:(0,b.jsx)(c.default,{href:"/sessions",children:L("dashboard.viewAll")})})]}),0===ag.length?(0,b.jsx)(n.Card,{children:(0,b.jsxs)(n.CardContent,{className:"flex flex-col items-center gap-3 py-10 text-center",children:[(0,b.jsx)("div",{className:"flex size-10 items-center justify-center rounded-md bg-brand/10 text-brand",children:(0,b.jsx)(k.TerminalSquare,{className:"size-5"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-sm font-medium",children:L("dashboard.noSessions")}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:L("dashboard.emptySessionsDescription")})]}),(0,b.jsx)(m.Button,{asChild:!0,size:"sm",variant:"outline",children:(0,b.jsxs)(c.default,{href:"/sessions",children:[(0,b.jsx)(j.Plus,{className:"size-4"}),L("projects.newSession")]})})]})}):(0,b.jsx)("div",{className:"divide-y divide-border/70 overflow-hidden rounded-lg border border-border bg-card",children:ag.map((a,d)=>(0,b.jsxs)(c.default,{href:`/sessions/${a.id}`,className:"group flex items-center gap-3 px-4 py-3 transition-colors forgebadger-animate-in hover:bg-muted/40",style:{animationDelay:`${40*d}ms`},children:[(0,b.jsx)(w,{status:a.status}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-sm font-medium",children:a.name||a.runtimeSessionName||a.id}),(0,b.jsx)("div",{className:"mt-0.5 truncate text-xs text-muted-foreground",children:a.projectName??"—"})]}),(0,b.jsx)(o.CliBrandChip,{aiTool:a.aiTool}),(0,b.jsx)(x,{status:a.status}),(0,b.jsx)(e.ArrowUpRight,{className:"size-4 shrink-0 text-muted-foreground/30 transition-colors group-hover:text-brand"})]},a.id))})]}),(0,b.jsxs)("section",{className:"space-y-3 xl:col-span-2",children:[(0,b.jsx)("h2",{className:"text-sm font-semibold",children:L("dashboard.systemStatus")}),(0,b.jsx)(n.Card,{children:(0,b.jsx)(n.CardContent,{className:"space-y-0.5 p-2",children:an.map(a=>(0,b.jsxs)(c.default,{href:a.href,className:"flex items-center gap-3 rounded-md px-2.5 py-2 transition-colors hover:bg-muted/40",children:[(0,b.jsx)("span",{className:(0,v.cn)("size-1.5 shrink-0 rounded-full",a.healthy?"bg-emerald-400":"bg-amber-400")}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"text-sm",children:a.label}),(0,b.jsx)("div",{className:"truncate text-xs text-muted-foreground",children:a.detail})]}),(0,b.jsx)(g.ChevronRight,{className:"size-3.5 shrink-0 text-muted-foreground/30"})]},a.key))})})]})]})]})}],70069)}];
1
+ module.exports=[70069,a=>{"use strict";var b=a.i(20486),c=a.i(85198),d=a.i(72637),e=a.i(39747),f=a.i(6145),g=a.i(67123),h=a.i(14015),i=a.i(98568),i=i,j=a.i(60420),k=a.i(90259),l=a.i(94327),m=a.i(71700),n=a.i(97494),o=a.i(70458),p=a.i(35133),q=a.i(6023),r=a.i(23834),s=a.i(39042),t=a.i(90409);let u="forgebadger.activation-dismissed";var v=a.i(89738),w=a.i(79914),x=a.i(39465);function y({status:a}){let c=(0,v.normalizeSessionStatus)(a);return(0,b.jsx)("span",{className:(0,x.cn)("size-2 shrink-0 rounded-full","running"===c?"animate-pulse bg-emerald-400":"error"===c?"bg-red-400":"bg-muted-foreground/40")})}function z({status:a}){let{t:c}=(0,w.useLanguage)(),d=(0,v.normalizeSessionStatus)(a);return(0,b.jsx)("span",{className:(0,x.cn)("shrink-0 text-xs","running"===d?"text-emerald-400":"error"===d?"text-red-400":"text-muted-foreground"),children:c("running"===d?"sessions.running":"error"===d?"sessions.error":"sessions.stopped")})}a.s(["default",0,function(){var a,A,B,C,D;let E,F,G,H,I,J,K,L,M,{t:N}=(0,w.useLanguage)(),O=(0,e.useQuery)({queryKey:["dashboard-summary"],queryFn:s.getDashboardSummary}),P=(0,e.useQuery)({queryKey:["sessions"],queryFn:s.listSessions}),Q=(0,e.useQuery)({queryKey:["projects"],queryFn:s.listProjects}),R=(0,e.useQuery)({queryKey:["dependencies"],queryFn:s.getDependencies}),S=(0,e.useQuery)({queryKey:r.ADAPTER_DISCOVERY_QUERY_KEY,queryFn:s.discoverAdapters}),T=P.data?.sessions??[],U=Q.data?.projects??[],V=U[0],W=O.data?.stats,X=O.data?.health,Y=R.data?.terminalRuntime,Z=(0,t.getTerminalRuntimeRemediation)(Y?.mode),$=(0,t.getTerminalRuntimeSetupGuidance)(Y?.mode,Y?.supported),_=R.isSuccess&&Y?.supported===!0,aa=R.isLoading?N("dashboard.statusLoading"):R.isError||!Y?N("dashboard.dependenciesHealthUnavailable"):N(Z.detailKey),ab=!R.isLoading&&$.blocked,ac=S.data?.adapters??[],ad=ac.filter(s.isAdapterLaunchable).length,ae=S.isSuccess&&ad>0,af=S.isLoading?N("dashboard.statusLoading"):S.isError?N("dashboard.activationAdapterUnavailable"):ad>0?N("dashboard.adaptersHealthReady").replace("{count}",String(ad)):N("dashboard.activationAdapterMissing"),ag=W?.runningSessions??T.filter(a=>"running"===(0,v.normalizeSessionStatus)(a.status)).length,ah=[{label:N("nav.projects"),value:W?.projects??0,icon:j.FolderOpen,href:"/projects"},{label:N("nav.sessions"),value:W?.sessions??0,sub:N("dashboard.runningNow").replace("{count}",String(ag)),icon:l.TerminalSquare,href:"/sessions"},{label:N("nav.skills"),value:W?.skills??0,icon:m.Wrench,href:"/skills"}],ai=T.slice(0,6),aj=W?.projects??U.length,ak=W?.sessions??T.length,al=(a={terminalRuntime:Y,dependenciesLoading:R.isLoading,dependenciesError:R.isError,adapters:ac,adaptersLoading:S.isLoading,adaptersError:S.isError,projectCount:aj,sessionCount:ak,acceptedDeliveries:W?.acceptedDeliveries??0,firstProjectId:V?.id},F=!1===(E=(0,t.getTerminalRuntimeSetupGuidance)(a.terminalRuntime?.mode,a.terminalRuntime?.supported)).blocked,G=!a.adaptersLoading&&!a.adaptersError&&(a.adapters??[]).some(s.isAdapterLaunchable),H=a.projectCount>0,I=a.sessionCount>0,J=a.firstProjectId?`/projects/${a.firstProjectId}?tab=project-manager`:"/projects",M=!(L=(K=[{id:"runtime",labelKey:"dashboard.activationRuntime",detailKey:(A=a,B=E.descriptionKey,A.dependenciesLoading?"dashboard.activationRuntimeLoading":A.dependenciesError||!A.terminalRuntime?"dashboard.activationRuntimeUnavailable":B),done:F,action:{href:"/settings",labelKey:"dashboard.activationOpenSettings"}},{id:"adapter",labelKey:"dashboard.activationAdapter",detailKey:(C=a,D=G,C.adaptersLoading?"dashboard.activationAdapterLoading":C.adaptersError?"dashboard.activationAdapterUnavailable":D?"dashboard.activationAdapterReady":"dashboard.activationAdapterMissing"),done:G,action:{href:"/settings",labelKey:"dashboard.activationOpenSettings"}},{id:"project",labelKey:"dashboard.activationProject",detailKey:H?"dashboard.firstRunProjectReady":"dashboard.firstRunProjectMissing",done:H,action:{href:"/projects/new",labelKey:"projects.create"}},{id:"session",labelKey:"dashboard.activationSession",detailKey:I?"dashboard.firstRunSessionReady":"dashboard.firstRunSessionMissing",done:I,optional:!0,action:{href:J,labelKey:"dashboard.activationStartDelivery"}},{id:"delivery",labelKey:"dashboard.activationDelivery",detailKey:(a.acceptedDeliveries??0)>0?"dashboard.activationDeliveryReady":"dashboard.activationDeliveryMissing",done:(a.acceptedDeliveries??0)>0,optional:!0,action:{href:"/projects",labelKey:"dashboard.activationStartDelivery"}}]).find(a=>!a.optional&&!a.done)),{steps:K,complete:M,currentStepId:L?.id??null,primaryAction:M?{href:"/projects",labelKey:"dashboard.activationContinueDelivery"}:L.action,secondaryActions:L?.id==="project"?[{href:"/projects/import",labelKey:"projects.import"}]:[]}),[am,an]=(0,c.useState)(!0);(0,c.useEffect)(()=>{an(function(){try{return"1"===window.localStorage.getItem(u)}catch{return!1}}())},[]);let ao=!al.complete&&!am,ap=al.steps.filter(a=>!a.optional),aq=ap.filter(a=>a.done).length,ar=[{key:"runtime",label:N("dashboard.dependenciesHealth"),detail:aa,healthy:_,href:Z.href},{key:"adapters",label:N("dashboard.adaptersHealth"),detail:af,healthy:ae,href:"/settings"},{key:"models",label:N("dashboard.modelHealth"),detail:X?.models.message??N("dashboard.modelHealthDescription"),healthy:X?.models.healthy??!1,href:"/models"},{key:"config",label:N("dashboard.configHealth"),detail:X?.projectConfig.message??N("dashboard.configHealthDescription"),healthy:X?.projectConfig.healthy??!1,href:"/templates"},{key:"sessions",label:N("dashboard.sessionHealth"),detail:X?.sessions.message??N("dashboard.sessionHealthDescription"),healthy:X?.sessions.healthy??!1,href:"/sessions"},{key:"skills",label:N("dashboard.skillHealth"),detail:X?.skills.message??N("dashboard.skillHealthDescription"),healthy:X?.skills.healthy??!1,href:"/skills"}];return(0,b.jsxs)("div",{className:"mx-auto max-w-6xl space-y-6 p-6",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-xl font-semibold tracking-tight",children:N("dashboard.title")}),(0,b.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:N("dashboard.subtitle")})]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,b.jsx)(n.Button,{asChild:!0,size:"sm",className:"bg-brand text-brand-foreground hover:bg-brand/90",children:(0,b.jsxs)(d.default,{href:"/sessions",children:[(0,b.jsx)(k.Plus,{className:"size-4"}),N("projects.newSession")]})}),(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"outline",children:(0,b.jsx)(d.default,{href:"/projects/new",children:N("projects.create")})})]})]}),(0,b.jsx)("div",{className:"grid grid-cols-2 gap-3 lg:grid-cols-3",children:ah.map((a,c)=>(0,b.jsx)(d.default,{href:a.href,className:"group forgebadger-animate-in",style:{animationDelay:`${50*c}ms`},children:(0,b.jsx)(o.Card,{className:"h-full transition-all duration-200 group-hover:-translate-y-0.5 group-hover:border-brand/40 group-hover:shadow-lg group-hover:shadow-brand/5",children:(0,b.jsxs)(o.CardContent,{className:"flex items-center gap-3 p-4",children:[(0,b.jsx)("div",{className:"flex size-9 shrink-0 items-center justify-center rounded-md bg-brand/10 text-brand",children:(0,b.jsx)(a.icon,{className:"size-4"})}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"text-2xl font-semibold leading-none",children:a.value}),(0,b.jsxs)("div",{className:"mt-1.5 truncate text-xs text-muted-foreground",children:[a.label,a.sub?(0,b.jsxs)("span",{className:"text-muted-foreground/70",children:[" · ",a.sub]}):null]})]}),(0,b.jsx)(f.ArrowUpRight,{className:"size-4 shrink-0 text-muted-foreground/30 transition-colors group-hover:text-brand"})]})})},a.label))}),ao&&(0,b.jsxs)(o.Card,{className:"forgebadger-animate-in border-brand/30 bg-brand/5",children:[(0,b.jsx)(o.CardHeader,{className:"pb-3",children:(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)(o.CardTitle,{className:"text-base",children:N("dashboard.firstRunTitle")}),(0,b.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:N("dashboard.firstRunDescription")})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)("div",{className:"h-1.5 w-24 overflow-hidden rounded-full bg-muted",children:(0,b.jsx)("div",{className:"h-full rounded-full bg-brand transition-all duration-500",style:{width:`${Math.round(aq/ap.length*100)}%`}})}),(0,b.jsxs)("span",{className:"tabular-nums",children:[aq,"/",ap.length]})]})]})}),(0,b.jsxs)(o.CardContent,{className:"space-y-4",children:[(0,b.jsx)("div",{className:"grid gap-2 sm:grid-cols-2 xl:grid-cols-3",children:al.steps.map(a=>(0,b.jsxs)("div",{className:"flex items-start gap-2.5 rounded-md border border-border/70 bg-background/60 p-3",children:[a.done?(0,b.jsx)(g.CheckCircle2,{className:"mt-0.5 size-4 shrink-0 text-emerald-400"}):(0,b.jsx)(i.default,{className:"mt-0.5 size-4 shrink-0 text-muted-foreground/40"}),(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsxs)("div",{className:"text-sm font-medium",children:[N(a.labelKey),a.optional&&(0,b.jsx)("span",{className:"ml-2 text-xs font-normal text-muted-foreground",children:N("dashboard.activationOptional")})]}),(0,b.jsx)("p",{className:"mt-0.5 text-xs leading-relaxed text-muted-foreground",children:N(a.detailKey)}),"runtime"===a.id&&ab&&(0,b.jsx)("div",{className:"mt-2",children:(0,b.jsx)(q.RuntimeSetupCommands,{guidance:$})})]})]},a.id))}),(0,b.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,b.jsx)(n.Button,{asChild:!0,size:"sm",className:"bg-brand text-brand-foreground hover:bg-brand/90",children:(0,b.jsx)(d.default,{href:al.primaryAction.href,children:N(al.primaryAction.labelKey)})}),al.secondaryActions.map(a=>(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"outline",children:(0,b.jsx)(d.default,{href:a.href,children:N(a.labelKey)})},a.href)),(0,b.jsx)(n.Button,{size:"sm",variant:"ghost",className:"text-muted-foreground",onClick:()=>{!function(){try{window.localStorage.setItem(u,"1")}catch{return!1}}(),an(!0)},children:N("dashboard.activationDismiss")})]})]})]}),(0,b.jsxs)("div",{className:"grid gap-6 xl:grid-cols-5",children:[(0,b.jsxs)("section",{className:"space-y-3 xl:col-span-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("h2",{className:"text-sm font-semibold",children:N("dashboard.recentSessions")}),(0,b.jsx)(n.Button,{asChild:!0,variant:"ghost",size:"sm",className:"text-muted-foreground",children:(0,b.jsx)(d.default,{href:"/sessions",children:N("dashboard.viewAll")})})]}),0===ai.length?(0,b.jsx)(o.Card,{children:(0,b.jsxs)(o.CardContent,{className:"flex flex-col items-center gap-3 py-10 text-center",children:[(0,b.jsx)("div",{className:"flex size-10 items-center justify-center rounded-md bg-brand/10 text-brand",children:(0,b.jsx)(l.TerminalSquare,{className:"size-5"})}),(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"text-sm font-medium",children:N("dashboard.noSessions")}),(0,b.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:N("dashboard.emptySessionsDescription")})]}),(0,b.jsx)(n.Button,{asChild:!0,size:"sm",variant:"outline",children:(0,b.jsxs)(d.default,{href:"/sessions",children:[(0,b.jsx)(k.Plus,{className:"size-4"}),N("projects.newSession")]})})]})}):(0,b.jsx)("div",{className:"divide-y divide-border/70 overflow-hidden rounded-lg border border-border bg-card",children:ai.map((a,c)=>(0,b.jsxs)(d.default,{href:`/sessions/${a.id}`,className:"group flex items-center gap-3 px-4 py-3 transition-colors forgebadger-animate-in hover:bg-muted/40",style:{animationDelay:`${40*c}ms`},children:[(0,b.jsx)(y,{status:a.status}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"truncate text-sm font-medium",children:a.name||a.runtimeSessionName||a.id}),(0,b.jsx)("div",{className:"mt-0.5 truncate text-xs text-muted-foreground",children:a.projectName??"—"})]}),(0,b.jsx)(p.CliBrandChip,{aiTool:a.aiTool}),(0,b.jsx)(z,{status:a.status}),(0,b.jsx)(f.ArrowUpRight,{className:"size-4 shrink-0 text-muted-foreground/30 transition-colors group-hover:text-brand"})]},a.id))})]}),(0,b.jsxs)("section",{className:"space-y-3 xl:col-span-2",children:[(0,b.jsx)("h2",{className:"text-sm font-semibold",children:N("dashboard.systemStatus")}),(0,b.jsx)(o.Card,{children:(0,b.jsx)(o.CardContent,{className:"space-y-0.5 p-2",children:ar.map(a=>(0,b.jsxs)(d.default,{href:a.href,className:"flex items-center gap-3 rounded-md px-2.5 py-2 transition-colors hover:bg-muted/40",children:[(0,b.jsx)("span",{className:(0,x.cn)("size-1.5 shrink-0 rounded-full",a.healthy?"bg-emerald-400":"bg-amber-400")}),(0,b.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,b.jsx)("div",{className:"text-sm",children:a.label}),(0,b.jsx)("div",{className:"truncate text-xs text-muted-foreground",children:a.detail})]}),(0,b.jsx)(h.ChevronRight,{className:"size-3.5 shrink-0 text-muted-foreground/30"})]},a.key))})})]})]})]})}],70069)}];
2
2
 
3
3
  //# sourceMappingURL=packages_web_src_app_%28dashboard%29_page_tsx_04lc303._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[6377,84142,a=>{"use strict";var b=a.i(20486),c=a.i(85198),d=a.i(4837),e=a.i(39747),f=a.i(26248),g=a.i(48459),h=a.i(71700),i=a.i(4730),j=a.i(55068),k=a.i(10917),l=a.i(79914),m=a.i(39042),n=a.i(75906);let o="/api/v1/copilot",p=a=>`${o}/skills/${encodeURIComponent(a)}`,q=a=>`${o}/connections/${encodeURIComponent(a)}`,r=["copilot","skills"];a.s(["copilotConnectionsKey",0,["copilot","connections"],"copilotSkillsKey",0,r,"createCopilotConnection",0,a=>(0,m.fetchJson)(`${o}/connections`,{method:"POST",body:JSON.stringify(a)}),"deleteCopilotConnection",0,(a,b)=>(0,m.fetchJson)(`${q(a)}?revision=${b}`,{method:"DELETE"}),"discoverCopilotConnection",0,(a,b)=>(0,m.fetchJson)(`${q(a)}/discover`,{method:"POST",body:JSON.stringify({revision:b})}),"getCopilotSkill",0,a=>(0,m.fetchJson)(p(a)),"getSkillRevision",0,(a,b)=>(0,m.fetchJson)(`${p(a)}/revisions/${encodeURIComponent(b)}`),"importCopilotSkill",0,a=>(0,m.fetchJson)(`${o}/skills/imports`,{method:"POST",body:JSON.stringify(a)}),"listCopilotConnections",0,()=>(0,m.fetchJson)(`${o}/connections`),"listCopilotSkills",0,()=>(0,m.fetchJson)(`${o}/skills`),"listSkillRevisions",0,a=>(0,m.fetchJson)(`${p(a)}/revisions`),"rollbackCopilotSkill",0,(a,b,c)=>(0,m.fetchJson)(`${p(a)}/rollback`,{method:"POST",body:JSON.stringify({revisionId:b,expectedRevisionId:c})}),"setCopilotSkillEnabled",0,(a,b,c)=>(0,m.fetchJson)(`${p(a)}/enabled`,{method:"PUT",body:JSON.stringify({enabled:b,expectedRevisionId:c})}),"updateCopilotConnection",0,(a,b)=>(0,m.fetchJson)(q(a),{method:"PUT",body:JSON.stringify(b)}),"updateCopilotSkill",0,(a,b)=>(0,m.fetchJson)(p(a),{method:"PUT",body:JSON.stringify(b)})],84142);let s=["model-providers"],t=["copilot","capabilities"];function u({title:a,tools:c,pending:d,onToggle:e}){return(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("p",{className:"text-[11px] font-semibold tracking-wide text-muted-foreground/70 uppercase",children:a}),c.map(a=>(0,b.jsx)(v,{tool:a,pending:d,onToggle:b=>e(a.name,b)},a.name))]})}function v({tool:a,pending:c,onToggle:d}){let{t:e}=(0,l.useLanguage)(),f=`copilot.toolDesc.${a.name}`,g=e(f),j=g===f?a.description:g;return(0,b.jsxs)("div",{className:`flex items-start justify-between gap-3 rounded-md border border-border/70 bg-card px-3 py-2 transition-opacity ${a.enabled&&a.available?"":"opacity-60"}`,"data-testid":`tool-row-${a.name}`,children:[(0,b.jsxs)("div",{className:"min-w-0 space-y-0.5",children:[(0,b.jsxs)("p",{className:"flex flex-wrap items-center gap-1.5 text-xs font-medium",children:[(0,b.jsx)(h.Wrench,{className:"size-3 shrink-0 text-muted-foreground","aria-hidden":"true"}),(0,b.jsx)("span",{className:"font-mono",children:a.name}),"operate"===a.risk?(0,b.jsx)(i.Badge,{variant:"outline",className:"border-amber-500/50 px-1 py-0 text-[10px] text-amber-500",children:"operate"}):null,a.requiresApproval&&a.available?(0,b.jsx)(i.Badge,{variant:"outline",className:"px-1 py-0 text-[10px] text-muted-foreground",children:e("copilot.toolAuthorization")}):null]}),(0,b.jsx)("p",{className:"text-xs leading-relaxed text-muted-foreground",children:j}),a.available?null:(0,b.jsxs)("p",{className:"text-xs text-amber-500",children:[e("copilot.toolUnavailable"),": ",a.unavailableReason??e("copilot.toolUnavailable")]})]}),(0,b.jsx)(k.Switch,{"aria-label":a.name,size:"sm",className:"mt-0.5 shrink-0",disabled:c||!a.available,checked:a.enabled,onCheckedChange:d})]})}a.s(["CapabilitiesSection",0,function({active:a}){let{t:h}=(0,l.useLanguage)(),i=(0,f.useQueryClient)(),[k,m]=(0,c.useState)(null),[o,p]=(0,c.useState)(""),q=(0,e.useQuery)({queryKey:t,queryFn:n.getCopilotCapabilities,enabled:a,retry:!1}),s=(0,d.useMutation)({mutationFn:({name:a,enabled:b})=>(0,n.setCopilotToolEnabled)(a,b),onSuccess:()=>{m(null),i.invalidateQueries({queryKey:t}),i.invalidateQueries({queryKey:r})},onError:()=>m(h("copilot.capabilitiesToggleError"))}),v=q.data?.tools??[],w=o.trim().toLowerCase(),x=w?v.filter(a=>`${a.name} ${a.description}`.toLowerCase().includes(w)):v,y=x.filter(a=>"operate"===a.risk),z=x.filter(a=>"operate"!==a.risk);return(0,b.jsxs)("section",{className:"space-y-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("p",{className:"text-sm font-medium",children:h("copilot.capabilities")}),q.isPending||q.isError||!(v.length>0)?null:(0,b.jsxs)("div",{className:"relative w-48 max-w-full",children:[(0,b.jsx)(g.Search,{className:"absolute top-1/2 left-2.5 size-3.5 -translate-y-1/2 text-muted-foreground","aria-hidden":"true"}),(0,b.jsx)(j.Input,{value:o,onChange:a=>p(a.target.value),placeholder:h("copilot.toolsSearch"),className:"h-8 pl-8 text-xs"})]})]}),q.isPending?(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:h("common.loading")}):q.isError?(0,b.jsx)("p",{className:"text-xs text-destructive",children:h("copilot.capabilitiesLoadError")}):0===v.length?(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:h("copilot.capabilitiesEmpty")}):0===x.length?(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:h("copilot.toolsSearchEmpty")}):(0,b.jsxs)("div",{className:"space-y-3",children:[y.length>0?(0,b.jsx)(u,{title:h("copilot.toolGroupOperate"),tools:y,pending:s.isPending,onToggle:(a,b)=>s.mutate({name:a,enabled:b})}):null,z.length>0?(0,b.jsx)(u,{title:h("copilot.toolGroupRead"),tools:z,pending:s.isPending,onToggle:(a,b)=>s.mutate({name:a,enabled:b})}):null]}),k&&(0,b.jsx)("p",{className:"text-xs text-destructive",children:k})]})},"CopilotStatusBar",0,function(){let{t:a}=(0,l.useLanguage)(),c=(0,e.useQuery)({queryKey:s,queryFn:m.listModelProviders}),d=(c.data?.models??[]).filter(a=>"disabled"!==a.status),f=d.find(a=>a.isDefault)??d[0],g=f?`${f.providerName} / ${f.name}`:a("copilot.followSystemDefault");return(0,b.jsxs)("div",{className:"flex items-center gap-2 border-b px-4 py-1.5 text-xs text-muted-foreground","data-testid":"copilot-status-bar",children:[(0,b.jsx)("span",{className:"shrink-0",children:a("copilot.currentModel")}),(0,b.jsx)("span",{className:"truncate",children:g}),(0,b.jsxs)(i.Badge,{variant:"secondary",className:"ml-auto gap-1.5 whitespace-nowrap",children:[(0,b.jsx)("span",{className:"size-1.5 rounded-full bg-emerald-500"}),a("copilot.nativeRuntime")]})]})},"modelProvidersQueryKey",0,s],6377)},35105,a=>{"use strict";var b=a.i(79914);let c={clearCredential:"移除已保存凭证",title:"Copilot 扩展",description:"安装 Skills,连接工具服务,扩展 Copilot 的工作能力。",back:"返回设置",skills:"Skills",connections:"Connections",loading:"加载中...",retry:"重试",cancel:"取消",save:"保存",close:"关闭",error:"操作失败。请重试;如配置或版本已变化,请刷新后重新核对。",loadError:"加载失败,请重试。",skillsHelp:"Skills 提供操作指引和参考文件。这里的启用状态独立于 CLI Skills。",emptySkills:"尚未安装 Skill。",importSkill:"导入 Skill",builtin:"内置",imported:"已导入",playbook:"内置 Playbook",enabled:"已启用",disabled:"已停用",unavailable:"当前不可用",incompatible:"不兼容",review:"需要核对版本",dependencies:"依赖工具",detail:"详情与版本",source:"来源",files:"文件",version:"版本",history:"版本记录",saveSkill:"保存完整文件包",rollback:"回滚到此版本",rollbackConfirm:"确认回滚",rollbackHelp:"回滚将创建新的完整文件包版本,并保留现有历史。",noHistory:"暂无版本记录。",builtinReview:"保存表示已核对当前内置版本。编辑后的内容仅用于所有者对话,项目授权对话继续使用可信内置内容。",paste:"粘贴 SKILL.md",upload:"选择文件包",url:"公开 raw URL",importMethod:"导入方式",chooseFiles:"选择文件",chooseFolder:"选择文件夹",importHelp:"文件包需包含根目录 SKILL.md。支持最多 65 个 UTF-8 文本文件、每文件 128 KiB、总计 1 MiB。脚本及执行型扩展会标为不兼容。",fileError:"文件包无效:请检查根目录 SKILL.md、UTF-8 编码、路径及大小限制。",urlHelp:"公开 HTTPS raw URL 导入单个 SKILL.md;配套文件请通过文件包一并导入。",install:"导入并保留为停用",edit:"编辑",importContent:"SKILL.md 正文",selectedFiles:"已选择文件",connectionsHelp:"Connection 提供 Copilot 可调用的工具。工具启用状态在各 Connection 中管理。",builtinHelp:"ForgeBadger 平台内置工具,沿用现有项目授权和逐项审批。",manageTools:"管理工具",addConnection:"添加 MCP Connection",emptyConnections:"尚未添加外部 Connection。",name:"名称",endpoint:"HTTPS 端点",bearer:"Bearer Token(可选,仅写入)",credentialSet:"凭证已配置",credentialKeep:"留空保留已有凭证",connectHelp:"支持公开 HTTPS 的 MCP Streamable HTTP 服务。创建后先发现工具,再明确选择允许 Copilot 使用的工具。",remoteApproval:"外部工具调用需逐项审批;项目授权和定时任务不会自动获得调用权限。",discover:"发现工具",notDiscovered:"尚未发现工具",noTools:"服务未返回工具。",selectTools:"选择工具",saveTools:"保存工具选择",delete:"删除",deleteConfirm:"确认删除此 Connection?",editConnection:"编辑连接",create:"创建连接",tools:"工具",configurationHelp:"更换端点或凭证会清空已发现工具,需要重新发现并选择。",schema:"输入参数",revision:"修订",refreshing:"处理中..."},d={clearCredential:"Remove saved credential",title:"Copilot extensions",description:"Install Skills and connect tool services to extend Copilot.",back:"Back to settings",skills:"Skills",connections:"Connections",loading:"Loading...",retry:"Retry",cancel:"Cancel",save:"Save",close:"Close",error:"Action failed. Retry, or refresh and review if the configuration or revision changed.",loadError:"Failed to load. Please retry.",skillsHelp:"Skills provide instructions and reference files. Their switches are independent from CLI Skills.",emptySkills:"No Skills installed.",importSkill:"Import Skill",builtin:"Built-in",imported:"Imported",playbook:"Built-in Playbook",enabled:"Enabled",disabled:"Disabled",unavailable:"Unavailable",incompatible:"Incompatible",review:"Version review required",dependencies:"Required tools",detail:"Details and versions",source:"Source",files:"Files",version:"Version",history:"Version history",saveSkill:"Save complete package",rollback:"Roll back to this version",rollbackConfirm:"Confirm rollback",rollbackHelp:"Rollback creates a new complete package revision and preserves existing history.",noHistory:"No revisions yet.",builtinReview:"Saving confirms review against the current bundled version. Edited content is for owner conversations; grant-bound conversations use trusted bundled content.",paste:"Paste SKILL.md",upload:"Select file bundle",url:"Public raw URL",importMethod:"Import method",chooseFiles:"Choose files",chooseFolder:"Choose folder",importHelp:"Include SKILL.md at the package root. Up to 65 UTF-8 text files, 128 KiB per file, 1 MiB total. Scripts and executable extensions are marked incompatible.",fileError:"Invalid package: check root SKILL.md, UTF-8 encoding, paths, and size limits.",urlHelp:"A public HTTPS raw URL imports one SKILL.md. Include supporting files through a file bundle.",install:"Import as disabled",edit:"Edit",importContent:"SKILL.md content",selectedFiles:"Selected files",connectionsHelp:"Connections provide callable tools. Manage tool switches within each Connection.",builtinHelp:"Built-in ForgeBadger platform tools retain project grants and exact approvals.",manageTools:"Manage tools",addConnection:"Add MCP Connection",emptyConnections:"No external Connections added.",name:"Name",endpoint:"HTTPS endpoint",bearer:"Bearer Token (optional, write-only)",credentialSet:"Credential configured",credentialKeep:"Leave blank to keep the saved credential",connectHelp:"Supports public HTTPS MCP Streamable HTTP services. Discover tools after creation, then explicitly select tools for Copilot.",remoteApproval:"External tool calls require exact approval. Project grants and scheduled tasks do not grant access.",discover:"Discover tools",notDiscovered:"Tools not discovered",noTools:"The service returned no tools.",selectTools:"Select tools",saveTools:"Save tool selection",delete:"Delete",deleteConfirm:"Delete this Connection?",editConnection:"Edit connection",create:"Create connection",tools:"Tools",configurationHelp:"Changing the endpoint or credential clears discovered tools. Discover and select them again.",schema:"Input schema",revision:"Revision",refreshing:"Working..."},e={...c,clearCredential:"移除已儲存憑證",title:"Copilot 擴充",description:"安裝 Skills,連接工具服務,擴充 Copilot 的工作能力。",back:"返回設定",loading:"載入中...",retry:"重試",save:"儲存",close:"關閉",error:"操作失敗。請重試;如設定或版本已變更,請重新整理後核對。",loadError:"載入失敗,請重試。",skillsHelp:"Skills 提供操作指引和參考檔案。這裡的啟用狀態獨立於 CLI Skills。",emptySkills:"尚未安裝 Skill。",importSkill:"匯入 Skill",builtin:"內建",imported:"已匯入",playbook:"內建 Playbook",enabled:"已啟用",review:"需要核對版本",dependencies:"依賴工具",detail:"詳情與版本",files:"檔案",history:"版本紀錄",saveSkill:"儲存完整檔案包",rollback:"還原到此版本",rollbackConfirm:"確認還原",rollbackHelp:"還原將建立新的完整檔案包版本,並保留現有歷史。",noHistory:"暫無版本紀錄。",builtinReview:"儲存表示已核對目前內建版本。編輯後的內容僅用於擁有者對話,專案授權對話繼續使用可信內建內容。",paste:"貼上 SKILL.md",upload:"選擇檔案包",importMethod:"匯入方式",chooseFiles:"選擇檔案",chooseFolder:"選擇資料夾",importHelp:"檔案包需包含根目錄 SKILL.md。支援最多 65 個 UTF-8 文字檔案、每檔案 128 KiB、總計 1 MiB。指令碼及執行型擴充會標為不相容。",fileError:"檔案包無效:請檢查根目錄 SKILL.md、UTF-8 編碼、路徑及大小限制。",urlHelp:"公開 HTTPS raw URL 匯入單個 SKILL.md;配套檔案請透過檔案包一併匯入。",install:"匯入並保留為停用",edit:"編輯",selectedFiles:"已選擇檔案",incompatible:"不相容",connectionsHelp:"Connection 提供 Copilot 可呼叫的工具。工具啟用狀態在各 Connection 中管理。",builtinHelp:"ForgeBadger 平台內建工具,沿用現有專案授權和逐項審核。",addConnection:"新增 MCP Connection",emptyConnections:"尚未新增外部 Connection。",name:"名稱",endpoint:"HTTPS 端點",bearer:"Bearer Token(可選,僅寫入)",credentialSet:"憑證已設定",credentialKeep:"留空保留已有憑證",connectHelp:"支援公開 HTTPS 的 MCP Streamable HTTP 服務。建立後先探索工具,再明確選擇允許 Copilot 使用的工具。",remoteApproval:"外部工具呼叫需逐項審核;專案授權和排程任務不會自動獲得呼叫權限。",discover:"探索工具",notDiscovered:"尚未探索工具",noTools:"服務未傳回工具。",selectTools:"選擇工具",saveTools:"儲存工具選擇",delete:"刪除",deleteConfirm:"確認刪除此 Connection?",editConnection:"編輯連線",create:"建立連線",configurationHelp:"更換端點或憑證會清空已探索工具,需要重新探索並選擇。",schema:"輸入參數",revision:"修訂",refreshing:"處理中..."};a.s(["useExtensionsCopy",0,function(){let{language:a}=(0,b.useLanguage)();return"en"===a?d:"zh-TW"===a?e:c}])}];
1
+ module.exports=[6377,84142,a=>{"use strict";var b=a.i(20486),c=a.i(85198),d=a.i(4837),e=a.i(39747),f=a.i(26248),g=a.i(48459),h=a.i(71700),i=a.i(4730),j=a.i(55068),k=a.i(10917),l=a.i(79914),m=a.i(39042),n=a.i(75906);let o="/api/v1/copilot",p=a=>`${o}/skills/${encodeURIComponent(a)}`,q=a=>`${o}/connections/${encodeURIComponent(a)}`,r=["copilot","skills"];a.s(["copilotConnectionsKey",0,["copilot","connections"],"copilotSkillsKey",0,r,"createCopilotConnection",0,a=>(0,m.fetchJson)(`${o}/connections`,{method:"POST",body:JSON.stringify(a)}),"deleteCopilotConnection",0,(a,b)=>(0,m.fetchJson)(`${q(a)}?revision=${b}`,{method:"DELETE"}),"discoverCopilotConnection",0,(a,b)=>(0,m.fetchJson)(`${q(a)}/discover`,{method:"POST",body:JSON.stringify({revision:b})}),"getCopilotSkill",0,a=>(0,m.fetchJson)(p(a)),"getSkillRevision",0,(a,b)=>(0,m.fetchJson)(`${p(a)}/revisions/${encodeURIComponent(b)}`),"importCopilotSkill",0,a=>(0,m.fetchJson)(`${o}/skills/imports`,{method:"POST",body:JSON.stringify(a)}),"listCopilotConnections",0,()=>(0,m.fetchJson)(`${o}/connections`),"listCopilotSkills",0,()=>(0,m.fetchJson)(`${o}/skills`),"listSkillRevisions",0,a=>(0,m.fetchJson)(`${p(a)}/revisions`),"rollbackCopilotSkill",0,(a,b,c)=>(0,m.fetchJson)(`${p(a)}/rollback`,{method:"POST",body:JSON.stringify({revisionId:b,expectedRevisionId:c})}),"setCopilotSkillEnabled",0,(a,b,c)=>(0,m.fetchJson)(`${p(a)}/enabled`,{method:"PUT",body:JSON.stringify({enabled:b,expectedRevisionId:c})}),"updateCopilotConnection",0,(a,b)=>(0,m.fetchJson)(q(a),{method:"PUT",body:JSON.stringify(b)}),"updateCopilotSkill",0,(a,b)=>(0,m.fetchJson)(p(a),{method:"PUT",body:JSON.stringify(b)})],84142);let s=["model-providers"],t=["copilot","capabilities"];function u({title:a,tools:c,pending:d,onToggle:e}){return(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("p",{className:"text-[11px] font-semibold tracking-wide text-muted-foreground/70 uppercase",children:a}),c.map(a=>(0,b.jsx)(v,{tool:a,pending:d,onToggle:b=>e(a.name,b)},a.name))]})}function v({tool:a,pending:c,onToggle:d}){let{t:e}=(0,l.useLanguage)(),f=`copilot.toolDesc.${a.name}`,g=e(f),j=g===f?a.description:g;return(0,b.jsxs)("div",{className:`flex items-start justify-between gap-3 rounded-md border border-border/70 bg-card px-3 py-2 transition-opacity ${a.enabled&&a.available?"":"opacity-60"}`,"data-testid":`tool-row-${a.name}`,children:[(0,b.jsxs)("div",{className:"min-w-0 space-y-0.5",children:[(0,b.jsxs)("p",{className:"flex flex-wrap items-center gap-1.5 text-xs font-medium",children:[(0,b.jsx)(h.Wrench,{className:"size-3 shrink-0 text-muted-foreground","aria-hidden":"true"}),(0,b.jsx)("span",{className:"font-mono",children:a.name}),"operate"===a.risk?(0,b.jsx)(i.Badge,{variant:"outline",className:"border-amber-500/50 px-1 py-0 text-[10px] text-amber-500",children:"operate"}):null,a.requiresApproval&&a.available?(0,b.jsx)(i.Badge,{variant:"outline",className:"px-1 py-0 text-[10px] text-muted-foreground",children:e("copilot.toolAuthorization")}):null]}),(0,b.jsx)("p",{className:"text-xs leading-relaxed text-muted-foreground",children:j}),a.available?null:(0,b.jsxs)("p",{className:"text-xs text-amber-500",children:[e("copilot.toolUnavailable"),": ",a.unavailableReason??e("copilot.toolUnavailable")]})]}),(0,b.jsx)(k.Switch,{"aria-label":a.name,size:"sm",className:"mt-0.5 shrink-0",disabled:c||!a.available,checked:a.enabled,onCheckedChange:d})]})}a.s(["CapabilitiesSection",0,function({active:a}){let{t:h}=(0,l.useLanguage)(),i=(0,f.useQueryClient)(),[k,m]=(0,c.useState)(null),[o,p]=(0,c.useState)(""),q=(0,e.useQuery)({queryKey:t,queryFn:n.getCopilotCapabilities,enabled:a,retry:!1}),s=(0,d.useMutation)({mutationFn:({name:a,enabled:b})=>(0,n.setCopilotToolEnabled)(a,b),onSuccess:()=>{m(null),i.invalidateQueries({queryKey:t}),i.invalidateQueries({queryKey:r})},onError:()=>m(h("copilot.capabilitiesToggleError"))}),v=q.data?.tools??[],w=o.trim().toLowerCase(),x=w?v.filter(a=>`${a.name} ${a.description}`.toLowerCase().includes(w)):v,y=x.filter(a=>"operate"===a.risk),z=x.filter(a=>"operate"!==a.risk);return(0,b.jsxs)("section",{className:"space-y-3 rounded-lg border border-border bg-card p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsx)("p",{className:"text-sm font-medium",children:h("copilot.capabilities")}),q.isPending||q.isError||!(v.length>0)?null:(0,b.jsxs)("div",{className:"relative w-48 max-w-full",children:[(0,b.jsx)(g.Search,{className:"absolute top-1/2 left-2.5 size-3.5 -translate-y-1/2 text-muted-foreground","aria-hidden":"true"}),(0,b.jsx)(j.Input,{value:o,onChange:a=>p(a.target.value),placeholder:h("copilot.toolsSearch"),className:"h-8 pl-8 text-xs"})]})]}),q.isPending?(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:h("common.loading")}):q.isError?(0,b.jsx)("p",{className:"text-xs text-destructive",children:h("copilot.capabilitiesLoadError")}):0===v.length?(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:h("copilot.capabilitiesEmpty")}):0===x.length?(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:h("copilot.toolsSearchEmpty")}):(0,b.jsxs)("div",{className:"space-y-3",children:[y.length>0?(0,b.jsx)(u,{title:h("copilot.toolGroupOperate"),tools:y,pending:s.isPending,onToggle:(a,b)=>s.mutate({name:a,enabled:b})}):null,z.length>0?(0,b.jsx)(u,{title:h("copilot.toolGroupRead"),tools:z,pending:s.isPending,onToggle:(a,b)=>s.mutate({name:a,enabled:b})}):null]}),k&&(0,b.jsx)("p",{className:"text-xs text-destructive",children:k})]})},"CopilotStatusBar",0,function({modelId:a,onModelChange:d}){let{t:f}=(0,l.useLanguage)(),g=(0,e.useQuery)({queryKey:s,queryFn:m.listModelProviders}),h=(g.data?.models??[]).filter(a=>"disabled"!==a.status),j=h.find(a=>a.isDefault)??h[0],k=j?`${j.providerName} / ${j.name}`:f("copilot.followSystemDefault");return(0,c.useEffect)(()=>{g.data&&a&&d&&(h.some(b=>b.id===a)||d(null))},[g.data,a,d]),(0,b.jsxs)("div",{className:"flex items-center gap-2 border-b px-4 py-1.5 text-xs text-muted-foreground","data-testid":"copilot-status-bar",children:[(0,b.jsx)("span",{className:"shrink-0",children:f("copilot.currentModel")}),d?(0,b.jsxs)("select",{"aria-label":f("copilot.currentModel"),className:"max-w-64 truncate rounded border border-border bg-background px-1 py-0.5 text-xs text-foreground",value:a??"",onChange:a=>d(a.target.value||null),children:[(0,b.jsxs)("option",{value:"",children:[f("copilot.followSystemDefault"),j?`(${k})`:""]}),h.map(a=>(0,b.jsxs)("option",{value:a.id,children:[a.providerName," / ",a.name]},a.id))]}):(0,b.jsx)("span",{className:"truncate",children:k}),(0,b.jsxs)(i.Badge,{variant:"secondary",className:"ml-auto gap-1.5 whitespace-nowrap",children:[(0,b.jsx)("span",{className:"size-1.5 rounded-full bg-emerald-500"}),f("copilot.nativeRuntime")]})]})},"modelProvidersQueryKey",0,s],6377)},35105,a=>{"use strict";var b=a.i(79914);let c={clearCredential:"移除已保存凭证",title:"Copilot 扩展",description:"安装 Skills,连接工具服务,扩展 Copilot 的工作能力。",back:"返回设置",skills:"Skills",connections:"Connections",loading:"加载中...",retry:"重试",cancel:"取消",save:"保存",close:"关闭",error:"操作失败。请重试;如配置或版本已变化,请刷新后重新核对。",loadError:"加载失败,请重试。",skillsHelp:"Skills 提供操作指引和参考文件。这里的启用状态独立于 CLI Skills。",emptySkills:"尚未安装 Skill。",importSkill:"导入 Skill",builtin:"内置",imported:"已导入",playbook:"内置 Playbook",enabled:"已启用",disabled:"已停用",unavailable:"当前不可用",incompatible:"不兼容",review:"需要核对版本",dependencies:"依赖工具",detail:"详情与版本",source:"来源",files:"文件",version:"版本",history:"版本记录",saveSkill:"保存完整文件包",rollback:"回滚到此版本",rollbackConfirm:"确认回滚",rollbackHelp:"回滚将创建新的完整文件包版本,并保留现有历史。",noHistory:"暂无版本记录。",builtinReview:"保存表示已核对当前内置版本。编辑后的内容仅用于所有者对话,项目授权对话继续使用可信内置内容。",paste:"粘贴 SKILL.md",upload:"选择文件包",url:"公开 raw URL",importMethod:"导入方式",chooseFiles:"选择文件",chooseFolder:"选择文件夹",importHelp:"文件包需包含根目录 SKILL.md。支持最多 65 个 UTF-8 文本文件、每文件 128 KiB、总计 1 MiB。脚本及执行型扩展会标为不兼容。",fileError:"文件包无效:请检查根目录 SKILL.md、UTF-8 编码、路径及大小限制。",urlHelp:"公开 HTTPS raw URL 导入单个 SKILL.md;配套文件请通过文件包一并导入。",install:"导入并保留为停用",edit:"编辑",importContent:"SKILL.md 正文",selectedFiles:"已选择文件",connectionsHelp:"Connection 提供 Copilot 可调用的工具。工具启用状态在各 Connection 中管理。",builtinHelp:"ForgeBadger 平台内置工具,沿用现有项目授权和逐项审批。",manageTools:"管理工具",addConnection:"添加 MCP Connection",emptyConnections:"尚未添加外部 Connection。",name:"名称",endpoint:"HTTPS 端点",bearer:"Bearer Token(可选,仅写入)",credentialSet:"凭证已配置",credentialKeep:"留空保留已有凭证",connectHelp:"支持公开 HTTPS 的 MCP Streamable HTTP 服务。创建后先发现工具,再明确选择允许 Copilot 使用的工具。",remoteApproval:"外部工具调用需逐项审批;项目授权和定时任务不会自动获得调用权限。",discover:"发现工具",notDiscovered:"尚未发现工具",noTools:"服务未返回工具。",selectTools:"选择工具",saveTools:"保存工具选择",delete:"删除",deleteConfirm:"确认删除此 Connection?",editConnection:"编辑连接",create:"创建连接",tools:"工具",configurationHelp:"更换端点或凭证会清空已发现工具,需要重新发现并选择。",schema:"输入参数",revision:"修订",refreshing:"处理中..."},d={clearCredential:"Remove saved credential",title:"Copilot extensions",description:"Install Skills and connect tool services to extend Copilot.",back:"Back to settings",skills:"Skills",connections:"Connections",loading:"Loading...",retry:"Retry",cancel:"Cancel",save:"Save",close:"Close",error:"Action failed. Retry, or refresh and review if the configuration or revision changed.",loadError:"Failed to load. Please retry.",skillsHelp:"Skills provide instructions and reference files. Their switches are independent from CLI Skills.",emptySkills:"No Skills installed.",importSkill:"Import Skill",builtin:"Built-in",imported:"Imported",playbook:"Built-in Playbook",enabled:"Enabled",disabled:"Disabled",unavailable:"Unavailable",incompatible:"Incompatible",review:"Version review required",dependencies:"Required tools",detail:"Details and versions",source:"Source",files:"Files",version:"Version",history:"Version history",saveSkill:"Save complete package",rollback:"Roll back to this version",rollbackConfirm:"Confirm rollback",rollbackHelp:"Rollback creates a new complete package revision and preserves existing history.",noHistory:"No revisions yet.",builtinReview:"Saving confirms review against the current bundled version. Edited content is for owner conversations; grant-bound conversations use trusted bundled content.",paste:"Paste SKILL.md",upload:"Select file bundle",url:"Public raw URL",importMethod:"Import method",chooseFiles:"Choose files",chooseFolder:"Choose folder",importHelp:"Include SKILL.md at the package root. Up to 65 UTF-8 text files, 128 KiB per file, 1 MiB total. Scripts and executable extensions are marked incompatible.",fileError:"Invalid package: check root SKILL.md, UTF-8 encoding, paths, and size limits.",urlHelp:"A public HTTPS raw URL imports one SKILL.md. Include supporting files through a file bundle.",install:"Import as disabled",edit:"Edit",importContent:"SKILL.md content",selectedFiles:"Selected files",connectionsHelp:"Connections provide callable tools. Manage tool switches within each Connection.",builtinHelp:"Built-in ForgeBadger platform tools retain project grants and exact approvals.",manageTools:"Manage tools",addConnection:"Add MCP Connection",emptyConnections:"No external Connections added.",name:"Name",endpoint:"HTTPS endpoint",bearer:"Bearer Token (optional, write-only)",credentialSet:"Credential configured",credentialKeep:"Leave blank to keep the saved credential",connectHelp:"Supports public HTTPS MCP Streamable HTTP services. Discover tools after creation, then explicitly select tools for Copilot.",remoteApproval:"External tool calls require exact approval. Project grants and scheduled tasks do not grant access.",discover:"Discover tools",notDiscovered:"Tools not discovered",noTools:"The service returned no tools.",selectTools:"Select tools",saveTools:"Save tool selection",delete:"Delete",deleteConfirm:"Delete this Connection?",editConnection:"Edit connection",create:"Create connection",tools:"Tools",configurationHelp:"Changing the endpoint or credential clears discovered tools. Discover and select them again.",schema:"Input schema",revision:"Revision",refreshing:"Working..."},e={...c,clearCredential:"移除已儲存憑證",title:"Copilot 擴充",description:"安裝 Skills,連接工具服務,擴充 Copilot 的工作能力。",back:"返回設定",loading:"載入中...",retry:"重試",save:"儲存",close:"關閉",error:"操作失敗。請重試;如設定或版本已變更,請重新整理後核對。",loadError:"載入失敗,請重試。",skillsHelp:"Skills 提供操作指引和參考檔案。這裡的啟用狀態獨立於 CLI Skills。",emptySkills:"尚未安裝 Skill。",importSkill:"匯入 Skill",builtin:"內建",imported:"已匯入",playbook:"內建 Playbook",enabled:"已啟用",review:"需要核對版本",dependencies:"依賴工具",detail:"詳情與版本",files:"檔案",history:"版本紀錄",saveSkill:"儲存完整檔案包",rollback:"還原到此版本",rollbackConfirm:"確認還原",rollbackHelp:"還原將建立新的完整檔案包版本,並保留現有歷史。",noHistory:"暫無版本紀錄。",builtinReview:"儲存表示已核對目前內建版本。編輯後的內容僅用於擁有者對話,專案授權對話繼續使用可信內建內容。",paste:"貼上 SKILL.md",upload:"選擇檔案包",importMethod:"匯入方式",chooseFiles:"選擇檔案",chooseFolder:"選擇資料夾",importHelp:"檔案包需包含根目錄 SKILL.md。支援最多 65 個 UTF-8 文字檔案、每檔案 128 KiB、總計 1 MiB。指令碼及執行型擴充會標為不相容。",fileError:"檔案包無效:請檢查根目錄 SKILL.md、UTF-8 編碼、路徑及大小限制。",urlHelp:"公開 HTTPS raw URL 匯入單個 SKILL.md;配套檔案請透過檔案包一併匯入。",install:"匯入並保留為停用",edit:"編輯",selectedFiles:"已選擇檔案",incompatible:"不相容",connectionsHelp:"Connection 提供 Copilot 可呼叫的工具。工具啟用狀態在各 Connection 中管理。",builtinHelp:"ForgeBadger 平台內建工具,沿用現有專案授權和逐項審核。",addConnection:"新增 MCP Connection",emptyConnections:"尚未新增外部 Connection。",name:"名稱",endpoint:"HTTPS 端點",bearer:"Bearer Token(可選,僅寫入)",credentialSet:"憑證已設定",credentialKeep:"留空保留已有憑證",connectHelp:"支援公開 HTTPS 的 MCP Streamable HTTP 服務。建立後先探索工具,再明確選擇允許 Copilot 使用的工具。",remoteApproval:"外部工具呼叫需逐項審核;專案授權和排程任務不會自動獲得呼叫權限。",discover:"探索工具",notDiscovered:"尚未探索工具",noTools:"服務未傳回工具。",selectTools:"選擇工具",saveTools:"儲存工具選擇",delete:"刪除",deleteConfirm:"確認刪除此 Connection?",editConnection:"編輯連線",create:"建立連線",configurationHelp:"更換端點或憑證會清空已探索工具,需要重新探索並選擇。",schema:"輸入參數",revision:"修訂",refreshing:"處理中..."};a.s(["useExtensionsCopy",0,function(){let{language:a}=(0,b.useLanguage)();return"en"===a?d:"zh-TW"===a?e:c}])}];
2
2
 
3
3
  //# sourceMappingURL=packages_web_src_components_copilot_0mvr-eu._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[28503,a=>{"use strict";var b=a.i(20486),c=a.i(72637),d=a.i(85198),e=a.i(39747),f=a.i(26248),g=a.i(97494),h=a.i(55068),i=a.i(70458),j=a.i(39042),k=a.i(83164);let l="/api/v1/copilot/channels",m=(a,b={})=>(0,j.fetchJson)(l+a,{method:"POST",body:JSON.stringify(b)});async function n(){let[a,b,c,d]=await Promise.all([(0,j.fetchJson)(l+"/pairings"),(0,j.fetchJson)(l+"/identities"),(0,j.fetchJson)(l+"/routes"),(0,j.fetchJson)(l+"/deliveries")]);return{...a,...b,...c,...d}}var o=a.i(4837),p=a.i(13877);function q(a){return(0,b.jsxs)("div",{className:"space-y-6 p-4 text-sm",children:[(0,b.jsx)(p.CopilotGrantsPanel,{...a}),(0,b.jsx)(r,{})]})}function r(){let a=(0,e.useQuery)({queryKey:["project-management-overview"],queryFn:()=>(0,k.getProjectOverview)(),refetchInterval:3e4});return(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsx)("h2",{className:"font-semibold",children:"多项目进度"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"此处是账号下的项目管理视图,不会扩大会话授权范围。CLI 模式用于任务规划;当前 CLI 自动执行权限未验证,仍需人工操作。"}),a.isPending&&(0,b.jsx)("p",{role:"status",children:"正在加载项目…"}),a.isError&&(0,b.jsxs)("p",{role:"alert",children:["项目加载失败"," ",(0,b.jsx)(g.Button,{size:"sm",variant:"outline",onClick:()=>void a.refetch(),children:"重试"})]}),a.data?.projects.length===0&&(0,b.jsx)("p",{className:"text-muted-foreground",children:"暂无项目,请先在项目页创建或导入。"}),a.data?.projects.map(a=>(0,b.jsx)(s,{project:a},`${a.id}-${a.management.revision}`))]})}function s({project:a}){let c=(0,f.useQueryClient)(),[e,i]=(0,d.useState)(a.management),j=(0,o.useMutation)({mutationFn:()=>(0,k.updateProjectManagement)(a.id,{mode:e.mode,ownerLabel:e.ownerLabel,nextAction:e.nextAction,freshnessHours:e.freshnessHours,expectedRevision:a.management.revision}),onSuccess:()=>c.invalidateQueries({queryKey:["project-management-overview"]})});return(0,b.jsxs)("div",{className:"rounded-md border border-border/70 p-3 space-y-2",children:[(0,b.jsxs)("div",{className:"flex justify-between gap-2",children:[(0,b.jsx)("a",{className:"font-medium hover:underline",href:`/projects/${a.id}`,children:a.name}),(0,b.jsxs)("span",{className:"text-xs",children:["manual"===a.management.mode?"人工项目":"CLI 规划"," · 人工执行"]})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:a.goal?.summary||"尚未设置目标"}),(0,b.jsxs)("p",{className:"text-xs",children:["完成 ",a.counts.done,"/",a.counts.total," · 进行中"," ",a.counts.in_progress," · 阻塞 ",a.counts.blocked," · 证据",{unknown:"时间未知",stale:"已过期",fresh:"新鲜"}[a.evidenceFreshness.status]]}),(0,b.jsxs)("details",{children:[(0,b.jsxs)("summary",{className:"cursor-pointer text-xs",children:["负责人及下一步:",a.management.ownerLabel||"未指定"," ·"," ",a.management.nextAction||"待安排"]}),(0,b.jsxs)("form",{className:"mt-2 space-y-2",onSubmit:a=>{a.preventDefault(),j.mutate()},children:[(0,b.jsxs)("label",{className:"block",children:["管理模式",(0,b.jsxs)("select",{className:"ml-2 rounded border border-border bg-background p-1",value:e.mode,onChange:a=>i({...e,mode:a.target.value}),children:[(0,b.jsx)("option",{value:"manual",children:"人工"}),(0,b.jsx)("option",{value:"cli",children:"CLI 规划(仍需人工执行)"})]})]}),(0,b.jsxs)("label",{className:"block",children:["负责人",(0,b.jsx)(h.Input,{value:e.ownerLabel,onChange:a=>i({...e,ownerLabel:a.target.value})})]}),(0,b.jsxs)("label",{className:"block",children:["下一步",(0,b.jsx)(h.Input,{value:e.nextAction,onChange:a=>i({...e,nextAction:a.target.value})})]}),(0,b.jsxs)("label",{className:"block",children:["证据有效小时",(0,b.jsx)(h.Input,{type:"number",min:"1",max:"8760",value:e.freshnessHours,onChange:a=>i({...e,freshnessHours:Number(a.target.value)})})]}),j.isError&&(0,b.jsxs)("p",{role:"alert",className:"text-destructive",children:["保存失败:",j.error.message,(0,b.jsx)(g.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>void c.invalidateQueries({queryKey:["project-management-overview"]}),children:"重新加载"})]}),(0,b.jsx)(g.Button,{size:"sm",disabled:j.isPending,children:"保存管理信息"})]})]})]})}var t=a.i(81421),u=a.i(37926);let v=["copilot-channels"],w={pending:"待处理",claimed:"等待确认",confirmed:"已确认",cancelled:"已取消",active:"有效",revoked:"已撤销",sending:"发送中",delivered:"飞书已接收",failed:"发送失败",unknown:"结果不确定",connected:"已连接",connecting:"连接中",reconnecting:"重新连接中",unhealthy:"连接异常",stopped:"已停止",disabled:"未启用"},x=a=>w[a]??a;a.s(["CopilotChannelsPage",0,function(){let a=(0,u.useSettingsCopy)(),l=(0,f.useQueryClient)(),o=(0,e.useQuery)({queryKey:v,queryFn:async()=>{let[a,b,c]=await Promise.all([(0,j.getFeishuChannelAccount)(),(0,j.getFeishuConnectionHealth)(),n()]);return{account:a,health:b,...c}},refetchInterval:3e3}),p=(0,e.useQuery)({queryKey:["copilot-grants"],queryFn:k.listGrants,refetchInterval:15e3}),r=(0,e.useQuery)({queryKey:["project-management-overview"],queryFn:()=>(0,k.getProjectOverview)()}),[s,w]=(0,d.useState)(""),[y,z]=(0,d.useState)(""),[A,B]=(0,d.useState)(!1),[C,D]=(0,d.useState)(""),[E,F]=(0,d.useState)(""),[G,H]=(0,d.useState)(null),[I,J]=(0,d.useState)(""),[K,L]=(0,d.useState)(""),[M,N]=(0,d.useState)(""),[O,P]=(0,d.useState)(Date.now());(0,d.useEffect)(()=>{let a=setInterval(()=>P(Date.now()),1e3);return()=>clearInterval(a)},[]);let Q=o.data,R=Q?.pairings.find(a=>a.accountId===Q.account?.id&&a.accountRevision===Q.account?.configRevision&&["pending","claimed"].includes(a.status)&&a.expiresAt>O),S=R?`${R.id}:${R.revision}:${R.externalUserId}:${R.chatId}`:"";(0,d.useEffect)(()=>J(""),[S]),(0,d.useEffect)(()=>{G&&(G.expiresAt<=O||Q&&!Q.pairings.some(a=>a.id===G.id&&"pending"===a.status&&a.accountRevision===Q.account?.configRevision))&&H(null)},[Q,O,G]);let T=Q?.identities.filter(a=>"active"===a.status&&a.accountId===Q.account?.id&&a.accountRevision===Q.account?.configRevision)??[],U=p.data?.grants.filter(a=>"active"===a.status&&(null===a.expiresAt||a.expiresAt>O)&&(null===a.maxActions||a.usedActions<a.maxActions))??[],V=U.find(a=>a.id===M),W=T.find(a=>a.id===K)??(1===T.length?T[0]:void 0);function X(a){if("active"!==a.status)return x(a.status);let b=Q?.identities.find(b=>b.id===a.identityId);if(!b||"active"!==b.status)return"身份已失效";if(b.accountId!==Q?.account?.id||b.accountRevision!==Q?.account?.configRevision)return"配置已更新,需要重新绑定";if(!Q.account.enabled)return"渠道已停用";if(p.isPending||p.isError)return"授权状态待核查";let c=p.data?.grants.find(b=>b.id===a.grantId);return!c||"active"!==c.status||c.revision!==a.grantRevision||null!==c.expiresAt&&c.expiresAt<=O||null!==c.maxActions&&c.usedActions>=c.maxActions?"授权已失效":"权限有效"}async function Y(){await Promise.all([l.invalidateQueries({queryKey:v}),l.invalidateQueries({queryKey:["copilot-grants"]})])}async function Z(a){B(!0),D(""),F("");try{await a(),await Y()}catch{D("操作未完成。请刷新状态后重试;身份、授权或连接状态可能已变化。"),H(null),J("")}finally{B(!1),z("")}}return(0,b.jsx)(t.CopilotSettingsShell,{active:"channels",title:a.channelsCardTitle,description:a.channelsCardDescription,children:(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[o.isPending&&(0,b.jsx)("p",{role:"status",children:"正在加载渠道…"}),(o.isError||p.isError)&&(0,b.jsxs)("div",{role:"alert",children:["加载失败。",(0,b.jsx)(g.Button,{variant:"outline",onClick:()=>{o.refetch(),p.refetch()},children:"重新加载"})]}),C&&(0,b.jsx)("p",{role:"alert",className:"text-sm text-destructive",children:C}),E&&(0,b.jsx)("p",{role:"status",className:"text-sm",children:E}),Q&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{role:"status",className:"rounded-md border border-border p-3 text-sm",children:p.isPending||p.isError?"远程操作状态待核查。":Q.routes.some(a=>"权限有效"===X(a))?"飞书远程操作已授权;实际收发还需连接正常。":"飞书远程操作尚未启用:请在第 3 步选择有效项目授权,并点击“启用飞书远程操作”。仅创建项目授权不会启用飞书。"}),(0,b.jsxs)(i.Card,{children:[(0,b.jsx)(i.CardHeader,{children:(0,b.jsx)(i.CardTitle,{children:"1. 飞书应用"})}),(0,b.jsxs)(i.CardContent,{className:"space-y-3",children:[(0,b.jsxs)("p",{role:"status",children:["连接:",x(Q.health.state)," · ",Q.account?.secretConfigured?"凭证已保存":"尚未配置凭证"]}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"保存应用会更新配置版本,已有身份和渠道授权将失效,需要重新配对和绑定。"}),(0,b.jsxs)("form",{className:"grid gap-3 sm:grid-cols-2",onSubmit:a=>{a.preventDefault(),z(""),H(null),Z(()=>(0,j.saveFeishuChannelAccount)({appId:s||Q.account?.appId||"",enabled:!0,...y?{appSecret:y}:{}}))},children:[(0,b.jsxs)("label",{className:"space-y-1 text-sm",children:["App ID",(0,b.jsx)(h.Input,{"aria-label":"App ID",autoComplete:"off",value:s,placeholder:Q.account?.appId??"cli_…",onChange:a=>w(a.target.value)})]}),(0,b.jsxs)("label",{className:"space-y-1 text-sm",children:["App Secret",(0,b.jsx)(h.Input,{"aria-label":"App Secret",type:"password",autoComplete:"new-password",value:y,placeholder:Q.account?.secretConfigured?"留空保留已保存密钥":"输入应用密钥",onChange:a=>z(a.target.value)})]}),(0,b.jsx)(g.Button,{type:"submit",disabled:A||!(s||Q.account?.appId)||!Q.account?.secretConfigured&&!y,children:"保存并启用"}),(0,b.jsx)(g.Button,{type:"button",variant:"destructive",disabled:A||!Q.account,onClick:()=>{H(null),Z(j.emergencyStopFeishu)},children:"紧急停止飞书"})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"紧急停止阻止后续入站和操作;已经发生的操作无法撤回。飞书开放平台需要开启机器人和消息接收事件。"})]})]}),(0,b.jsxs)(i.Card,{children:[(0,b.jsx)(i.CardHeader,{children:(0,b.jsx)(i.CardTitle,{children:"2. 确认私聊身份"})}),(0,b.jsxs)(i.CardContent,{className:"space-y-3",children:[(0,b.jsx)(g.Button,{disabled:A||!Q.account?.enabled,onClick:()=>void Z(async()=>{H(null);let a=await m("/pairings",{channel:"feishu",accountId:Q.account.id});await Y(),H({id:a.pairing.id,value:a.token,expiresAt:a.pairing.expiresAt})}),children:"生成新的配对码"}),G&&G.expiresAt>O&&(0,b.jsxs)("div",{className:"space-y-2 rounded-md border border-border p-3",children:[(0,b.jsxs)("p",{className:"text-sm",children:["向本应用机器人私聊发送以下命令,请勿转发。到期:",new Date(G.expiresAt).toLocaleTimeString()]}),(0,b.jsxs)("code",{className:"block break-all select-all",children:["/pair ",G.value]})]}),!R&&(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"没有待确认配对。新配对码会使旧码失效。"}),R?.status==="pending"&&(0,b.jsx)("p",{role:"status",children:"等待飞书私聊认领… 配对码仅在生成时显示,刷新页面后可重新生成。"}),R?.status==="claimed"&&(0,b.jsxs)("div",{className:"space-y-3 rounded-md border border-border p-3",children:[(0,b.jsx)("p",{className:"text-sm",children:"请核对认领者,勾选后确认;系统不会自动绑定身份。"}),(0,b.jsxs)("dl",{className:"break-all text-sm",children:[(0,b.jsx)("dt",{children:"飞书用户 ID"}),(0,b.jsx)("dd",{children:R.externalUserId}),(0,b.jsx)("dt",{className:"mt-2",children:"私聊 ID"}),(0,b.jsx)("dd",{children:R.chatId})]}),(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)("input",{type:"checkbox",checked:I===S,onChange:a=>J(a.target.checked?S:"")}),"我确认这是自己的飞书私聊"]}),(0,b.jsx)(g.Button,{disabled:A||I!==S,onClick:()=>void Z(async()=>{J(""),H(null),await m(`/pairings/${encodeURIComponent(R.id)}/confirm`,{revision:R.revision,externalUserId:R.externalUserId,chatId:R.chatId})}),children:"确认身份"})]}),R&&(0,b.jsx)(g.Button,{variant:"outline",disabled:A,onClick:()=>{H(null),J(""),Z(()=>{let a;return a=R.id,m(`/pairings/${encodeURIComponent(a)}/cancel`)})},children:"取消本次配对"}),Q.identities.map(a=>(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2 rounded-md border border-border/70 p-3 text-sm",children:[(0,b.jsxs)("span",{className:"break-all",children:[a.externalUserId," · ",x(a.status),a.accountRevision!==Q.account?.configRevision?" · 配置已更新,请重新配对":""]}),(0,b.jsx)(g.Button,{variant:"outline",size:"sm",disabled:A||"active"!==a.status,onClick:()=>void Z(()=>{let b;return b=a.id,m(`/identities/${encodeURIComponent(b)}/revoke`)}),children:"撤销身份"})]},a.id))]})]}),(0,b.jsxs)(i.Card,{children:[(0,b.jsx)(i.CardHeader,{children:(0,b.jsx)(i.CardTitle,{children:"3. 绑定项目与操作授权"})}),(0,b.jsxs)(i.CardContent,{className:"space-y-3",children:[(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"绑定会创建独立会话。权限范围不可在该会话中切换;更换授权需要撤销旧绑定。"}),(0,b.jsxs)("details",{open:!0,className:"rounded-md border border-border p-3",children:[(0,b.jsx)("summary",{className:"cursor-pointer text-sm",children:"创建或管理项目授权"}),(0,b.jsx)(q,{onGrantCreated:N,startConversationLabel:"选择此授权",onStartConversation:async a=>N(a)})]}),p.isPending&&(0,b.jsx)("p",{role:"status",children:"正在加载授权…"}),!p.isPending&&!U.length&&(0,b.jsx)("p",{className:"text-sm",children:"尚无可用授权,请先创建。"}),(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsxs)("label",{className:"space-y-1 text-sm",children:["私聊身份",(0,b.jsxs)("select",{"aria-label":"私聊身份",className:"w-full rounded-md border border-border bg-background p-2",value:W?.id??"",onChange:a=>L(a.target.value),children:[(0,b.jsx)("option",{value:"",children:"选择已确认身份"}),T.map(a=>(0,b.jsx)("option",{value:a.id,children:a.externalUserId},a.id))]})]}),(0,b.jsxs)("label",{className:"space-y-1 text-sm",children:["授权",(0,b.jsxs)("select",{"aria-label":"授权",className:"w-full rounded-md border border-border bg-background p-2",value:V?.id??"",onChange:a=>N(a.target.value),children:[(0,b.jsx)("option",{value:"",children:"选择有效授权"}),U.map(a=>(0,b.jsx)("option",{value:a.id,children:a.name},a.id))]})]})]}),V&&(0,b.jsxs)("div",{className:"space-y-1 rounded-md border border-border/70 p-3 text-sm",children:[(0,b.jsxs)("p",{children:["项目:",V.scope.projectIds.map(a=>r.data?.projects.find(b=>b.id===a)?.name??a).join("、")||"无现有项目"]}),(0,b.jsxs)("p",{className:"break-all",children:["允许操作:",V.scope.capabilities.join("、")||"无写操作"]}),(0,b.jsxs)("p",{className:"break-all",children:["允许目录:",V.scope.allowedRoots.join("、")||"无额外目录"]}),(0,b.jsxs)("p",{children:["已用次数:",V.usedActions,"/",V.maxActions??"不限"," · 最大并发:",V.maxConcurrency]}),(0,b.jsxs)("p",{children:["到期:",null===V.expiresAt?"长期有效,直至撤销":new Date(V.expiresAt).toLocaleString()]})]}),(0,b.jsx)(g.Button,{disabled:A||!V||!W||Q.routes.some(a=>a.identityId===W.id&&"active"===a.status),onClick:()=>void Z(async()=>{await m("/routes",{identityId:W.id,grantId:V.id}),F("渠道绑定已创建;请以上方实时状态为准,状态正常后发送一条新消息。")}),children:"启用飞书远程操作"}),Q.routes.map(a=>(0,b.jsxs)("div",{className:"space-y-2 rounded-md border border-border/70 p-3 text-sm",children:[(0,b.jsxs)("p",{children:[p.data?.grants.find(b=>b.id===a.grantId)?.name??a.grantId," · ",X(a)]}),(0,b.jsxs)("p",{className:"break-all text-xs text-muted-foreground",children:["独立会话:",a.conversationId]}),(0,b.jsx)(c.default,{className:"inline-block underline underline-offset-4",href:`/copilot?c=${encodeURIComponent(a.conversationId)}`,children:"打开会话与审批"}),(0,b.jsx)(g.Button,{variant:"outline",size:"sm",disabled:A||"active"!==a.status,onClick:()=>void Z(()=>{let b;return b=a.id,m(`/routes/${encodeURIComponent(b)}/revoke`)}),children:"撤销渠道授权"})]},a.id))]})]}),(0,b.jsxs)(i.Card,{children:[(0,b.jsx)(i.CardHeader,{children:(0,b.jsx)(i.CardTitle,{children:"最近结果回传"})}),(0,b.jsxs)(i.CardContent,{className:"space-y-3 text-sm",children:[(0,b.jsx)("p",{className:"text-muted-foreground",children:"“飞书已接收”不代表已读。“结果不确定”可能已经送达,请先核对飞书;系统不会自动重发。"}),!Q.deliveries.length&&(0,b.jsx)("p",{children:"暂无回传记录。"}),Q.deliveries.map(a=>(0,b.jsxs)("div",{className:"flex flex-wrap justify-between gap-2 rounded-md border border-border/70 p-3",children:[(0,b.jsxs)("span",{children:["terminal"===a.phase?"任务结果":"审批提示"," · ",x(a.status)]}),(0,b.jsx)("time",{children:new Date(a.createdAt).toLocaleString()})]},a.id))]})]})]})]})})}],28503)}];
1
+ module.exports=[28503,a=>{"use strict";var b=a.i(20486),c=a.i(72637),d=a.i(85198),e=a.i(39747),f=a.i(26248),g=a.i(97494),h=a.i(55068),i=a.i(70458),j=a.i(39042),k=a.i(83164);let l="/api/v1/copilot/channels",m=(a,b={})=>(0,j.fetchJson)(l+a,{method:"POST",body:JSON.stringify(b)});async function n(){let[a,b,c,d]=await Promise.all([(0,j.fetchJson)(l+"/pairings"),(0,j.fetchJson)(l+"/identities"),(0,j.fetchJson)(l+"/routes"),(0,j.fetchJson)(l+"/deliveries")]);return{...a,...b,...c,...d}}var o=a.i(4837),p=a.i(13877);function q(a){return(0,b.jsxs)("div",{className:"space-y-6 p-4 text-sm",children:[(0,b.jsx)(p.CopilotGrantsPanel,{...a}),(0,b.jsx)(r,{})]})}function r(){let a=(0,e.useQuery)({queryKey:["project-management-overview"],queryFn:()=>(0,k.getProjectOverview)(),refetchInterval:3e4});return(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsx)("h2",{className:"font-semibold",children:"多项目进度"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"此处是账号下的项目管理视图,不会扩大会话授权范围。CLI 自动下发需在 Gateway 环境变量 FORGEBADGER_CLI_AUTONOMY_ADAPTERS 中为对应适配器开启;未开启的适配器仍需人工在终端操作。"}),a.isPending&&(0,b.jsx)("p",{role:"status",children:"正在加载项目…"}),a.isError&&(0,b.jsxs)("p",{role:"alert",children:["项目加载失败"," ",(0,b.jsx)(g.Button,{size:"sm",variant:"outline",onClick:()=>void a.refetch(),children:"重试"})]}),a.data?.projects.length===0&&(0,b.jsx)("p",{className:"text-muted-foreground",children:"暂无项目,请先在项目页创建或导入。"}),a.data?.projects.map(a=>(0,b.jsx)(s,{project:a},`${a.id}-${a.management.revision}`))]})}function s({project:a}){let c=(0,f.useQueryClient)(),[e,i]=(0,d.useState)(a.management),j=(0,o.useMutation)({mutationFn:()=>(0,k.updateProjectManagement)(a.id,{mode:e.mode,ownerLabel:e.ownerLabel,nextAction:e.nextAction,freshnessHours:e.freshnessHours,expectedRevision:a.management.revision}),onSuccess:()=>c.invalidateQueries({queryKey:["project-management-overview"]})});return(0,b.jsxs)("div",{className:"rounded-md border border-border/70 p-3 space-y-2",children:[(0,b.jsxs)("div",{className:"flex justify-between gap-2",children:[(0,b.jsx)("a",{className:"font-medium hover:underline",href:`/projects/${a.id}`,children:a.name}),(0,b.jsxs)("span",{className:"text-xs",children:["manual"===a.management.mode?"人工项目":"CLI 规划"," · ","supervised"===a.autonomy?"自动执行已开启":"人工执行"]})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:a.goal?.summary||"尚未设置目标"}),(0,b.jsxs)("p",{className:"text-xs",children:["完成 ",a.counts.done,"/",a.counts.total," · 进行中"," ",a.counts.in_progress," · 阻塞 ",a.counts.blocked," · 证据",{unknown:"时间未知",stale:"已过期",fresh:"新鲜"}[a.evidenceFreshness.status]]}),(0,b.jsxs)("details",{children:[(0,b.jsxs)("summary",{className:"cursor-pointer text-xs",children:["负责人及下一步:",a.management.ownerLabel||"未指定"," ·"," ",a.management.nextAction||"待安排"]}),(0,b.jsxs)("form",{className:"mt-2 space-y-2",onSubmit:a=>{a.preventDefault(),j.mutate()},children:[(0,b.jsxs)("label",{className:"block",children:["管理模式",(0,b.jsxs)("select",{className:"ml-2 rounded border border-border bg-background p-1",value:e.mode,onChange:a=>i({...e,mode:a.target.value}),children:[(0,b.jsx)("option",{value:"manual",children:"人工"}),(0,b.jsx)("option",{value:"cli",children:"CLI 规划(仍需人工执行)"})]})]}),(0,b.jsxs)("label",{className:"block",children:["负责人",(0,b.jsx)(h.Input,{value:e.ownerLabel,onChange:a=>i({...e,ownerLabel:a.target.value})})]}),(0,b.jsxs)("label",{className:"block",children:["下一步",(0,b.jsx)(h.Input,{value:e.nextAction,onChange:a=>i({...e,nextAction:a.target.value})})]}),(0,b.jsxs)("label",{className:"block",children:["证据有效小时",(0,b.jsx)(h.Input,{type:"number",min:"1",max:"8760",value:e.freshnessHours,onChange:a=>i({...e,freshnessHours:Number(a.target.value)})})]}),j.isError&&(0,b.jsxs)("p",{role:"alert",className:"text-destructive",children:["保存失败:",j.error.message,(0,b.jsx)(g.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>void c.invalidateQueries({queryKey:["project-management-overview"]}),children:"重新加载"})]}),(0,b.jsx)(g.Button,{size:"sm",disabled:j.isPending,children:"保存管理信息"})]})]})]})}var t=a.i(81421),u=a.i(37926);let v=["copilot-channels"],w={pending:"待处理",claimed:"等待确认",confirmed:"已确认",cancelled:"已取消",active:"有效",revoked:"已撤销",sending:"发送中",delivered:"飞书已接收",failed:"发送失败",unknown:"结果不确定",connected:"已连接",connecting:"连接中",reconnecting:"重新连接中",unhealthy:"连接异常",stopped:"已停止",disabled:"未启用"},x=a=>w[a]??a;a.s(["CopilotChannelsPage",0,function(){let a=(0,u.useSettingsCopy)(),l=(0,f.useQueryClient)(),o=(0,e.useQuery)({queryKey:v,queryFn:async()=>{let[a,b,c]=await Promise.all([(0,j.getFeishuChannelAccount)(),(0,j.getFeishuConnectionHealth)(),n()]);return{account:a,health:b,...c}},refetchInterval:3e3}),p=(0,e.useQuery)({queryKey:["copilot-grants"],queryFn:k.listGrants,refetchInterval:15e3}),r=(0,e.useQuery)({queryKey:["project-management-overview"],queryFn:()=>(0,k.getProjectOverview)()}),[s,w]=(0,d.useState)(""),[y,z]=(0,d.useState)(""),[A,B]=(0,d.useState)(!1),[C,D]=(0,d.useState)(""),[E,F]=(0,d.useState)(""),[G,H]=(0,d.useState)(null),[I,J]=(0,d.useState)(""),[K,L]=(0,d.useState)(""),[M,N]=(0,d.useState)(""),[O,P]=(0,d.useState)(Date.now());(0,d.useEffect)(()=>{let a=setInterval(()=>P(Date.now()),1e3);return()=>clearInterval(a)},[]);let Q=o.data,R=Q?.pairings.find(a=>a.accountId===Q.account?.id&&a.accountRevision===Q.account?.configRevision&&["pending","claimed"].includes(a.status)&&a.expiresAt>O),S=R?`${R.id}:${R.revision}:${R.externalUserId}:${R.chatId}`:"";(0,d.useEffect)(()=>J(""),[S]),(0,d.useEffect)(()=>{G&&(G.expiresAt<=O||Q&&!Q.pairings.some(a=>a.id===G.id&&"pending"===a.status&&a.accountRevision===Q.account?.configRevision))&&H(null)},[Q,O,G]);let T=Q?.identities.filter(a=>"active"===a.status&&a.accountId===Q.account?.id&&a.accountRevision===Q.account?.configRevision)??[],U=p.data?.grants.filter(a=>"active"===a.status&&(null===a.expiresAt||a.expiresAt>O)&&(null===a.maxActions||a.usedActions<a.maxActions))??[],V=U.find(a=>a.id===M),W=T.find(a=>a.id===K)??(1===T.length?T[0]:void 0);function X(a){if("active"!==a.status)return x(a.status);let b=Q?.identities.find(b=>b.id===a.identityId);if(!b||"active"!==b.status)return"身份已失效";if(b.accountId!==Q?.account?.id||b.accountRevision!==Q?.account?.configRevision)return"配置已更新,需要重新绑定";if(!Q.account.enabled)return"渠道已停用";if(p.isPending||p.isError)return"授权状态待核查";let c=p.data?.grants.find(b=>b.id===a.grantId);return!c||"active"!==c.status||c.revision!==a.grantRevision||null!==c.expiresAt&&c.expiresAt<=O||null!==c.maxActions&&c.usedActions>=c.maxActions?"授权已失效":"权限有效"}async function Y(){await Promise.all([l.invalidateQueries({queryKey:v}),l.invalidateQueries({queryKey:["copilot-grants"]})])}async function Z(a){B(!0),D(""),F("");try{await a(),await Y()}catch{D("操作未完成。请刷新状态后重试;身份、授权或连接状态可能已变化。"),H(null),J("")}finally{B(!1),z("")}}return(0,b.jsx)(t.CopilotSettingsShell,{active:"channels",title:a.channelsCardTitle,description:a.channelsCardDescription,children:(0,b.jsxs)("div",{className:"flex flex-col gap-4",children:[o.isPending&&(0,b.jsx)("p",{role:"status",children:"正在加载渠道…"}),(o.isError||p.isError)&&(0,b.jsxs)("div",{role:"alert",children:["加载失败。",(0,b.jsx)(g.Button,{variant:"outline",onClick:()=>{o.refetch(),p.refetch()},children:"重新加载"})]}),C&&(0,b.jsx)("p",{role:"alert",className:"text-sm text-destructive",children:C}),E&&(0,b.jsx)("p",{role:"status",className:"text-sm",children:E}),Q&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{role:"status",className:"rounded-md border border-border p-3 text-sm",children:p.isPending||p.isError?"远程操作状态待核查。":Q.routes.some(a=>"权限有效"===X(a))?"飞书远程操作已授权;实际收发还需连接正常。":"飞书远程操作尚未启用:请在第 3 步选择有效项目授权,并点击“启用飞书远程操作”。仅创建项目授权不会启用飞书。"}),(0,b.jsxs)(i.Card,{children:[(0,b.jsx)(i.CardHeader,{children:(0,b.jsx)(i.CardTitle,{children:"1. 飞书应用"})}),(0,b.jsxs)(i.CardContent,{className:"space-y-3",children:[(0,b.jsxs)("p",{role:"status",children:["连接:",x(Q.health.state)," · ",Q.account?.secretConfigured?"凭证已保存":"尚未配置凭证"]}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"保存应用会更新配置版本,已有身份和渠道授权将失效,需要重新配对和绑定。"}),(0,b.jsxs)("form",{className:"grid gap-3 sm:grid-cols-2",onSubmit:a=>{a.preventDefault(),z(""),H(null),Z(()=>(0,j.saveFeishuChannelAccount)({appId:s||Q.account?.appId||"",enabled:!0,...y?{appSecret:y}:{}}))},children:[(0,b.jsxs)("label",{className:"space-y-1 text-sm",children:["App ID",(0,b.jsx)(h.Input,{"aria-label":"App ID",autoComplete:"off",value:s,placeholder:Q.account?.appId??"cli_…",onChange:a=>w(a.target.value)})]}),(0,b.jsxs)("label",{className:"space-y-1 text-sm",children:["App Secret",(0,b.jsx)(h.Input,{"aria-label":"App Secret",type:"password",autoComplete:"new-password",value:y,placeholder:Q.account?.secretConfigured?"留空保留已保存密钥":"输入应用密钥",onChange:a=>z(a.target.value)})]}),(0,b.jsx)(g.Button,{type:"submit",disabled:A||!(s||Q.account?.appId)||!Q.account?.secretConfigured&&!y,children:"保存并启用"}),(0,b.jsx)(g.Button,{type:"button",variant:"destructive",disabled:A||!Q.account,onClick:()=>{H(null),Z(j.emergencyStopFeishu)},children:"紧急停止飞书"})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"紧急停止阻止后续入站和操作;已经发生的操作无法撤回。飞书开放平台需要开启机器人和消息接收事件。"})]})]}),(0,b.jsxs)(i.Card,{children:[(0,b.jsx)(i.CardHeader,{children:(0,b.jsx)(i.CardTitle,{children:"2. 确认私聊身份"})}),(0,b.jsxs)(i.CardContent,{className:"space-y-3",children:[(0,b.jsx)(g.Button,{disabled:A||!Q.account?.enabled,onClick:()=>void Z(async()=>{H(null);let a=await m("/pairings",{channel:"feishu",accountId:Q.account.id});await Y(),H({id:a.pairing.id,value:a.token,expiresAt:a.pairing.expiresAt})}),children:"生成新的配对码"}),G&&G.expiresAt>O&&(0,b.jsxs)("div",{className:"space-y-2 rounded-md border border-border p-3",children:[(0,b.jsxs)("p",{className:"text-sm",children:["向本应用机器人私聊发送以下命令,请勿转发。到期:",new Date(G.expiresAt).toLocaleTimeString()]}),(0,b.jsxs)("code",{className:"block break-all select-all",children:["/pair ",G.value]})]}),!R&&(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"没有待确认配对。新配对码会使旧码失效。"}),R?.status==="pending"&&(0,b.jsx)("p",{role:"status",children:"等待飞书私聊认领… 配对码仅在生成时显示,刷新页面后可重新生成。"}),R?.status==="claimed"&&(0,b.jsxs)("div",{className:"space-y-3 rounded-md border border-border p-3",children:[(0,b.jsx)("p",{className:"text-sm",children:"请核对认领者,勾选后确认;系统不会自动绑定身份。"}),(0,b.jsxs)("dl",{className:"break-all text-sm",children:[(0,b.jsx)("dt",{children:"飞书用户 ID"}),(0,b.jsx)("dd",{children:R.externalUserId}),(0,b.jsx)("dt",{className:"mt-2",children:"私聊 ID"}),(0,b.jsx)("dd",{children:R.chatId})]}),(0,b.jsxs)("label",{className:"flex items-center gap-2 text-sm",children:[(0,b.jsx)("input",{type:"checkbox",checked:I===S,onChange:a=>J(a.target.checked?S:"")}),"我确认这是自己的飞书私聊"]}),(0,b.jsx)(g.Button,{disabled:A||I!==S,onClick:()=>void Z(async()=>{J(""),H(null),await m(`/pairings/${encodeURIComponent(R.id)}/confirm`,{revision:R.revision,externalUserId:R.externalUserId,chatId:R.chatId})}),children:"确认身份"})]}),R&&(0,b.jsx)(g.Button,{variant:"outline",disabled:A,onClick:()=>{H(null),J(""),Z(()=>{let a;return a=R.id,m(`/pairings/${encodeURIComponent(a)}/cancel`)})},children:"取消本次配对"}),Q.identities.map(a=>(0,b.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2 rounded-md border border-border/70 p-3 text-sm",children:[(0,b.jsxs)("span",{className:"break-all",children:[a.externalUserId," · ",x(a.status),a.accountRevision!==Q.account?.configRevision?" · 配置已更新,请重新配对":""]}),(0,b.jsx)(g.Button,{variant:"outline",size:"sm",disabled:A||"active"!==a.status,onClick:()=>void Z(()=>{let b;return b=a.id,m(`/identities/${encodeURIComponent(b)}/revoke`)}),children:"撤销身份"})]},a.id))]})]}),(0,b.jsxs)(i.Card,{children:[(0,b.jsx)(i.CardHeader,{children:(0,b.jsx)(i.CardTitle,{children:"3. 绑定项目与操作授权"})}),(0,b.jsxs)(i.CardContent,{className:"space-y-3",children:[(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"绑定会创建独立会话。权限范围不可在该会话中切换;更换授权需要撤销旧绑定。"}),(0,b.jsxs)("details",{open:!0,className:"rounded-md border border-border p-3",children:[(0,b.jsx)("summary",{className:"cursor-pointer text-sm",children:"创建或管理项目授权"}),(0,b.jsx)(q,{onGrantCreated:N,startConversationLabel:"选择此授权",onStartConversation:async a=>N(a)})]}),p.isPending&&(0,b.jsx)("p",{role:"status",children:"正在加载授权…"}),!p.isPending&&!U.length&&(0,b.jsx)("p",{className:"text-sm",children:"尚无可用授权,请先创建。"}),(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsxs)("label",{className:"space-y-1 text-sm",children:["私聊身份",(0,b.jsxs)("select",{"aria-label":"私聊身份",className:"w-full rounded-md border border-border bg-background p-2",value:W?.id??"",onChange:a=>L(a.target.value),children:[(0,b.jsx)("option",{value:"",children:"选择已确认身份"}),T.map(a=>(0,b.jsx)("option",{value:a.id,children:a.externalUserId},a.id))]})]}),(0,b.jsxs)("label",{className:"space-y-1 text-sm",children:["授权",(0,b.jsxs)("select",{"aria-label":"授权",className:"w-full rounded-md border border-border bg-background p-2",value:V?.id??"",onChange:a=>N(a.target.value),children:[(0,b.jsx)("option",{value:"",children:"选择有效授权"}),U.map(a=>(0,b.jsx)("option",{value:a.id,children:a.name},a.id))]})]})]}),V&&(0,b.jsxs)("div",{className:"space-y-1 rounded-md border border-border/70 p-3 text-sm",children:[(0,b.jsxs)("p",{children:["项目:",V.scope.projectIds.map(a=>r.data?.projects.find(b=>b.id===a)?.name??a).join("、")||"无现有项目"]}),(0,b.jsxs)("p",{className:"break-all",children:["允许操作:",V.scope.capabilities.join("、")||"无写操作"]}),(0,b.jsxs)("p",{className:"break-all",children:["允许目录:",V.scope.allowedRoots.join("、")||"无额外目录"]}),(0,b.jsxs)("p",{children:["已用次数:",V.usedActions,"/",V.maxActions??"不限"," · 最大并发:",V.maxConcurrency]}),(0,b.jsxs)("p",{children:["到期:",null===V.expiresAt?"长期有效,直至撤销":new Date(V.expiresAt).toLocaleString()]})]}),(0,b.jsx)(g.Button,{disabled:A||!V||!W||Q.routes.some(a=>a.identityId===W.id&&"active"===a.status),onClick:()=>void Z(async()=>{await m("/routes",{identityId:W.id,grantId:V.id}),F("渠道绑定已创建;请以上方实时状态为准,状态正常后发送一条新消息。")}),children:"启用飞书远程操作"}),Q.routes.map(a=>(0,b.jsxs)("div",{className:"space-y-2 rounded-md border border-border/70 p-3 text-sm",children:[(0,b.jsxs)("p",{children:[p.data?.grants.find(b=>b.id===a.grantId)?.name??a.grantId," · ",X(a)]}),(0,b.jsxs)("p",{className:"break-all text-xs text-muted-foreground",children:["独立会话:",a.conversationId]}),(0,b.jsx)(c.default,{className:"inline-block underline underline-offset-4",href:`/copilot?c=${encodeURIComponent(a.conversationId)}`,children:"打开会话与审批"}),(0,b.jsx)(g.Button,{variant:"outline",size:"sm",disabled:A||"active"!==a.status,onClick:()=>void Z(()=>{let b;return b=a.id,m(`/routes/${encodeURIComponent(b)}/revoke`)}),children:"撤销渠道授权"})]},a.id))]})]}),(0,b.jsxs)(i.Card,{children:[(0,b.jsx)(i.CardHeader,{children:(0,b.jsx)(i.CardTitle,{children:"最近结果回传"})}),(0,b.jsxs)(i.CardContent,{className:"space-y-3 text-sm",children:[(0,b.jsx)("p",{className:"text-muted-foreground",children:"“飞书已接收”不代表已读。“结果不确定”可能已经送达,请先核对飞书;系统不会自动重发。"}),!Q.deliveries.length&&(0,b.jsx)("p",{children:"暂无回传记录。"}),Q.deliveries.map(a=>(0,b.jsxs)("div",{className:"flex flex-wrap justify-between gap-2 rounded-md border border-border/70 p-3",children:[(0,b.jsxs)("span",{children:["terminal"===a.phase?"任务结果":"审批提示"," · ",x(a.status)]}),(0,b.jsx)("time",{children:new Date(a.createdAt).toLocaleString()})]},a.id))]})]})]})]})})}],28503)}];
2
2
 
3
3
  //# sourceMappingURL=packages_web_src_components_copilot_CopilotChannelsPage_tsx_10jdmdv._.js.map
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
7
7
  "static/chunks/03~yq9q893hmn.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/UoUlLp6otXSsVrQmrFF4Z/_buildManifest.js",
11
- "static/UoUlLp6otXSsVrQmrFF4Z/_ssgManifest.js",
12
- "static/UoUlLp6otXSsVrQmrFF4Z/_clientMiddlewareManifest.js"
10
+ "static/lcO9z98BJ26kFzrqXH-ot/_buildManifest.js",
11
+ "static/lcO9z98BJ26kFzrqXH-ot/_ssgManifest.js",
12
+ "static/lcO9z98BJ26kFzrqXH-ot/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/04~krgqf~wsr8.js",
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/01gdy0b.2o121.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/0g477-voyum5d.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/04~krgqf~wsr8.js"/><script src="/_next/static/chunks/02ftuc_k27vc3.js" async=""></script><script src="/_next/static/chunks/0l.96ozev~ndx.js" async=""></script><script src="/_next/static/chunks/02--sff2v6p3f.js" async=""></script><script src="/_next/static/chunks/08rve.iu2u4_n.js" async=""></script><script src="/_next/static/chunks/turbopack-0fqusa3ng_wry.js" async=""></script><script src="/_next/static/chunks/012n34zp1cx_n.js" async=""></script><script src="/_next/static/chunks/0omo_v~lr8w_w.js" async=""></script><script src="/_next/static/chunks/0cz~fdbdoa387.js" async=""></script><script src="/_next/static/chunks/0d7lv09enxqxk.js" async=""></script><link rel="preload" href="/forgebadger-runtime.js" as="script"/><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>ForgeBadger</title><meta name="description" content="Local-first AI programming IDE control platform"/><meta property="og:title" content="ForgeBadger"/><meta property="og:description" content="Local-first AI programming IDE control platform"/><meta property="og:image" content="https://raw.githubusercontent.com/Lanzhou3/ForgeBadger/main/packages/web/public/brand/forgebadger-banner.png"/><meta property="og:image:width" content="1774"/><meta property="og:image:height" content="887"/><meta property="og:image:alt" content="ForgeBadger"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="ForgeBadger"/><meta name="twitter:description" content="Local-first AI programming IDE control platform"/><meta name="twitter:image" content="https://raw.githubusercontent.com/Lanzhou3/ForgeBadger/main/packages/web/public/brand/forgebadger-banner.png"/><link rel="shortcut icon" href="/favicon.ico"/><link rel="icon" href="/favicon.ico"/><link rel="apple-touch-icon" href="/brand/forgebadger-logo.png"/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><script>(self.__next_s=self.__next_s||[]).push(["/forgebadger-runtime.js",{}])</script><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"try{var a=localStorage.getItem(\"forgebadger.accent\");if(a)document.documentElement.dataset.accent=a;}catch(e){}","id":"accent-theme"}])</script><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><script src="/_next/static/chunks/04~krgqf~wsr8.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[74790,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/0d7lv09enxqxk.js\"],\"\"]\n3:I[64374,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/0d7lv09enxqxk.js\"],\"Providers\"]\n4:I[97329,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/0d7lv09enxqxk.js\"],\"default\"]\n5:I[34194,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/0d7lv09enxqxk.js\"],\"default\"]\n6:I[32939,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/0d7lv09enxqxk.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[32939,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/0d7lv09enxqxk.js\"],\"ViewportBoundary\"]\nc:I[32939,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/0d7lv09enxqxk.js\"],\"MetadataBoundary\"]\ne:I[1742,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/0d7lv09enxqxk.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/01gdy0b.2o121.css\",\"style\"]\n:HL[\"/_next/static/chunks/0g477-voyum5d.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/01gdy0b.2o121.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0g477-voyum5d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/012n34zp1cx_n.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0cz~fdbdoa387.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/0d7lv09enxqxk.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L2\",null,{\"src\":\"/forgebadger-runtime.js\",\"strategy\":\"beforeInteractive\"}],[\"$\",\"$L2\",null,{\"id\":\"accent-theme\",\"strategy\":\"beforeInteractive\",\"children\":\"try{var a=localStorage.getItem(\\\"forgebadger.accent\\\");if(a)document.documentElement.dataset.accent=a;}catch(e){}\"}],[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$@9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/01gdy0b.2o121.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0g477-voyum5d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"UoUlLp6otXSsVrQmrFF4Z\"}\n"])</script><script>self.__next_f.push([1,"f:[]\n9:\"$Wf\"\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"10:I[44925,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/0d7lv09enxqxk.js\"],\"IconMark\"]\n8:null\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"title\",\"0\",{\"children\":\"ForgeBadger\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Local-first AI programming IDE control platform\"}],[\"$\",\"meta\",\"2\",{\"property\":\"og:title\",\"content\":\"ForgeBadger\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:description\",\"content\":\"Local-first AI programming IDE control platform\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:image\",\"content\":\"https://raw.githubusercontent.com/Lanzhou3/ForgeBadger/main/packages/web/public/brand/forgebadger-banner.png\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:image:width\",\"content\":\"1774\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:image:height\",\"content\":\"887\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:image:alt\",\"content\":\"ForgeBadger\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:title\",\"content\":\"ForgeBadger\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:description\",\"content\":\"Local-first AI programming IDE control platform\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:image\",\"content\":\"https://raw.githubusercontent.com/Lanzhou3/ForgeBadger/main/packages/web/public/brand/forgebadger-banner.png\"}],[\"$\",\"link\",\"13\",{\"rel\":\"shortcut icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"14\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"15\",{\"rel\":\"apple-touch-icon\",\"href\":\"/brand/forgebadger-logo.png\"}],[\"$\",\"$L10\",\"16\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/01gdy0b.2o121.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/05pjsamrc9hw8.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/04~krgqf~wsr8.js"/><script src="/_next/static/chunks/02ftuc_k27vc3.js" async=""></script><script src="/_next/static/chunks/0l.96ozev~ndx.js" async=""></script><script src="/_next/static/chunks/02--sff2v6p3f.js" async=""></script><script src="/_next/static/chunks/08rve.iu2u4_n.js" async=""></script><script src="/_next/static/chunks/turbopack-0fqusa3ng_wry.js" async=""></script><script src="/_next/static/chunks/012n34zp1cx_n.js" async=""></script><script src="/_next/static/chunks/0omo_v~lr8w_w.js" async=""></script><script src="/_next/static/chunks/0cz~fdbdoa387.js" async=""></script><script src="/_next/static/chunks/01qswe5yw6zti.js" async=""></script><link rel="preload" href="/forgebadger-runtime.js" as="script"/><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>ForgeBadger</title><meta name="description" content="Local-first AI programming IDE control platform"/><meta property="og:title" content="ForgeBadger"/><meta property="og:description" content="Local-first AI programming IDE control platform"/><meta property="og:image" content="https://raw.githubusercontent.com/Lanzhou3/ForgeBadger/main/packages/web/public/brand/forgebadger-banner.png"/><meta property="og:image:width" content="1774"/><meta property="og:image:height" content="887"/><meta property="og:image:alt" content="ForgeBadger"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="ForgeBadger"/><meta name="twitter:description" content="Local-first AI programming IDE control platform"/><meta name="twitter:image" content="https://raw.githubusercontent.com/Lanzhou3/ForgeBadger/main/packages/web/public/brand/forgebadger-banner.png"/><link rel="shortcut icon" href="/favicon.ico"/><link rel="icon" href="/favicon.ico"/><link rel="apple-touch-icon" href="/brand/forgebadger-logo.png"/><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><script>(self.__next_s=self.__next_s||[]).push(["/forgebadger-runtime.js",{}])</script><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"try{var a=localStorage.getItem(\"forgebadger.accent\");if(a)document.documentElement.dataset.accent=a;}catch(e){}","id":"accent-theme"}])</script><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><script src="/_next/static/chunks/04~krgqf~wsr8.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[74790,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/01qswe5yw6zti.js\"],\"\"]\n3:I[64374,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/01qswe5yw6zti.js\"],\"Providers\"]\n4:I[97329,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/01qswe5yw6zti.js\"],\"default\"]\n5:I[34194,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/01qswe5yw6zti.js\"],\"default\"]\n6:I[32939,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/01qswe5yw6zti.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[32939,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/01qswe5yw6zti.js\"],\"ViewportBoundary\"]\nc:I[32939,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/01qswe5yw6zti.js\"],\"MetadataBoundary\"]\ne:I[1742,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/01qswe5yw6zti.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/01gdy0b.2o121.css\",\"style\"]\n:HL[\"/_next/static/chunks/05pjsamrc9hw8.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/01gdy0b.2o121.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/05pjsamrc9hw8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/012n34zp1cx_n.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0cz~fdbdoa387.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/01qswe5yw6zti.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L2\",null,{\"src\":\"/forgebadger-runtime.js\",\"strategy\":\"beforeInteractive\"}],[\"$\",\"$L2\",null,{\"id\":\"accent-theme\",\"strategy\":\"beforeInteractive\",\"children\":\"try{var a=localStorage.getItem(\\\"forgebadger.accent\\\");if(a)document.documentElement.dataset.accent=a;}catch(e){}\"}],[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:2:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$@9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/01gdy0b.2o121.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/05pjsamrc9hw8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"lcO9z98BJ26kFzrqXH-ot\"}\n"])</script><script>self.__next_f.push([1,"f:[]\n9:\"$Wf\"\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"10:I[44925,[\"/_next/static/chunks/012n34zp1cx_n.js\",\"/_next/static/chunks/0omo_v~lr8w_w.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\",\"/_next/static/chunks/01qswe5yw6zti.js\"],\"IconMark\"]\n8:null\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"title\",\"0\",{\"children\":\"ForgeBadger\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Local-first AI programming IDE control platform\"}],[\"$\",\"meta\",\"2\",{\"property\":\"og:title\",\"content\":\"ForgeBadger\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:description\",\"content\":\"Local-first AI programming IDE control platform\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:image\",\"content\":\"https://raw.githubusercontent.com/Lanzhou3/ForgeBadger/main/packages/web/public/brand/forgebadger-banner.png\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:image:width\",\"content\":\"1774\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:image:height\",\"content\":\"887\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:image:alt\",\"content\":\"ForgeBadger\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:title\",\"content\":\"ForgeBadger\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:description\",\"content\":\"Local-first AI programming IDE control platform\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:image\",\"content\":\"https://raw.githubusercontent.com/Lanzhou3/ForgeBadger/main/packages/web/public/brand/forgebadger-banner.png\"}],[\"$\",\"link\",\"13\",{\"rel\":\"shortcut icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"14\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"15\",{\"rel\":\"apple-touch-icon\",\"href\":\"/brand/forgebadger-logo.png\"}],[\"$\",\"$L10\",\"16\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/04~krgqf~wsr8.js"/><script src="/_next/static/chunks/02ftuc_k27vc3.js" async=""></script><script src="/_next/static/chunks/0l.96ozev~ndx.js" async=""></script><script src="/_next/static/chunks/02--sff2v6p3f.js" async=""></script><script src="/_next/static/chunks/08rve.iu2u4_n.js" async=""></script><script src="/_next/static/chunks/turbopack-0fqusa3ng_wry.js" async=""></script><script src="/_next/static/chunks/0pcvha~_7ftab.js" async=""></script><script src="/_next/static/chunks/0cz~fdbdoa387.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/04~krgqf~wsr8.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[97329,[\"/_next/static/chunks/0pcvha~_7ftab.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\"],\"default\"]\n3:I[34194,[\"/_next/static/chunks/0pcvha~_7ftab.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\"],\"default\"]\n4:I[32939,[\"/_next/static/chunks/0pcvha~_7ftab.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[32939,[\"/_next/static/chunks/0pcvha~_7ftab.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\"],\"ViewportBoundary\"]\na:I[32939,[\"/_next/static/chunks/0pcvha~_7ftab.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\"],\"MetadataBoundary\"]\nc:I[1742,[\"/_next/static/chunks/0pcvha~_7ftab.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"UoUlLp6otXSsVrQmrFF4Z\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/04~krgqf~wsr8.js"/><script src="/_next/static/chunks/02ftuc_k27vc3.js" async=""></script><script src="/_next/static/chunks/0l.96ozev~ndx.js" async=""></script><script src="/_next/static/chunks/02--sff2v6p3f.js" async=""></script><script src="/_next/static/chunks/08rve.iu2u4_n.js" async=""></script><script src="/_next/static/chunks/turbopack-0fqusa3ng_wry.js" async=""></script><script src="/_next/static/chunks/0pcvha~_7ftab.js" async=""></script><script src="/_next/static/chunks/0cz~fdbdoa387.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/03~yq9q893hmn.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/04~krgqf~wsr8.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[97329,[\"/_next/static/chunks/0pcvha~_7ftab.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\"],\"default\"]\n3:I[34194,[\"/_next/static/chunks/0pcvha~_7ftab.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\"],\"default\"]\n4:I[32939,[\"/_next/static/chunks/0pcvha~_7ftab.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[32939,[\"/_next/static/chunks/0pcvha~_7ftab.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\"],\"ViewportBoundary\"]\na:I[32939,[\"/_next/static/chunks/0pcvha~_7ftab.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\"],\"MetadataBoundary\"]\nc:I[1742,[\"/_next/static/chunks/0pcvha~_7ftab.js\",\"/_next/static/chunks/0cz~fdbdoa387.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"lcO9z98BJ26kFzrqXH-ot\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>