switchboard-router 0.6.17 → 0.6.18

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 (808) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +11 -10
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +3 -3
  5. package/app/.next-cli-build/routes-manifest.json +6 -0
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js +2 -2
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js +2 -2
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js.nft.json +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +3 -3
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js +2 -2
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js +2 -2
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/_global-error/page.js +3 -3
  82. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  84. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  85. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  86. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  87. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  88. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  89. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  90. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  91. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  92. package/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  93. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  95. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  96. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  97. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  98. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  99. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
  100. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  101. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  102. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  103. package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/agent-library/doctor/route.js +1 -1
  106. package/app/.next-cli-build/server/app/api/agent-library/doctor/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/agent-library/export/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/agent-library/export/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/agent-library/mcp/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/agent-library/mcp/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/agent-library/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/agent-library/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/agent-library/skills/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/agent-library/skills/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/agent-library/sync/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/agent-library/sync/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/agent-library/updates/route.js +1 -1
  118. package/app/.next-cli-build/server/app/api/agent-library/updates/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  120. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
  122. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  124. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  126. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js +2 -0
  130. package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js.nft.json +1 -0
  131. package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route_client-reference-manifest.js +1 -0
  132. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +2 -2
  137. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  139. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  141. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  143. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  145. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  147. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +3 -3
  149. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +3 -3
  151. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  153. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  157. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  161. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  165. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  167. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/health/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  179. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  183. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +2 -2
  187. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  191. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  193. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/mgmt/v1/providers/route.js +1 -1
  207. package/app/.next-cli-build/server/app/api/mgmt/v1/providers/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/mgmt/v1/routing/route.js +1 -1
  209. package/app/.next-cli-build/server/app/api/mgmt/v1/routing/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js +1 -1
  211. package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/mgmt/v1/version/route.js +1 -1
  213. package/app/.next-cli-build/server/app/api/mgmt/v1/version/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  215. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  233. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  235. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  237. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  241. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  243. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  245. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  247. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  249. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  251. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  253. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  255. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  257. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  259. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js +1 -1
  261. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js +1 -1
  263. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js +1 -1
  265. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js +1 -1
  267. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js +1 -1
  269. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js +1 -1
  271. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js +1 -1
  273. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js +1 -1
  275. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  279. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  281. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  283. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  285. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  287. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  291. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  293. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  295. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/routing/feedback/route.js +2 -1
  297. package/app/.next-cli-build/server/app/api/routing/feedback/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/routing/insights/route.js +1 -1
  299. package/app/.next-cli-build/server/app/api/routing/insights/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/routing/learn/route.js +1 -1
  301. package/app/.next-cli-build/server/app/api/routing/learn/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/routing/stats/route.js +1 -1
  303. package/app/.next-cli-build/server/app/api/routing/stats/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js +1 -1
  305. package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js +1 -1
  307. package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  309. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  311. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  312. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  313. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  314. package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  315. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  316. package/app/.next-cli-build/server/app/api/skills/[id]/route.js +1 -1
  317. package/app/.next-cli-build/server/app/api/skills/[id]/route.js.nft.json +1 -1
  318. package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  319. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  320. package/app/.next-cli-build/server/app/api/token-saver/vault-stats/route.js +1 -1
  321. package/app/.next-cli-build/server/app/api/token-saver/vault-stats/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  323. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  324. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  325. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  326. package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  327. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  329. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  330. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  331. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/translator/translate/route.js +2 -1
  333. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  335. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  337. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  339. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  340. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  341. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  342. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  343. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  344. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  345. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  346. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  347. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  348. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  349. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  350. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  351. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  352. package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  353. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  354. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  355. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  356. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  357. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  358. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  359. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  360. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  361. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  362. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  363. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  364. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  365. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  366. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  367. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  368. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  369. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  370. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  371. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  372. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  373. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  374. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  375. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  376. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  377. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  378. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  379. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  380. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  381. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  382. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  383. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  384. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  385. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  386. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  387. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  388. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  389. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  390. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  391. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  392. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  393. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  394. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  395. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  396. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  397. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  398. package/app/.next-cli-build/server/app/callback/page.js +2 -2
  399. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  400. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  401. package/app/.next-cli-build/server/app/callback.html +1 -1
  402. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  403. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  404. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  405. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  406. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  407. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  408. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  409. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  410. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  411. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  412. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  413. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  414. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  415. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  416. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  417. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  418. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  420. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  421. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  422. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
  423. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  424. package/app/.next-cli-build/server/app/index.html +1 -1
  425. package/app/.next-cli-build/server/app/index.rsc +4 -4
  426. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  427. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  428. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  429. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
  430. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  431. package/app/.next-cli-build/server/app/landing/page.js +2 -2
  432. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  433. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  434. package/app/.next-cli-build/server/app/landing.html +1 -1
  435. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  436. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  437. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  438. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  439. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  440. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  441. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  442. package/app/.next-cli-build/server/app/login/page.js +2 -2
  443. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  444. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  445. package/app/.next-cli-build/server/app/login.html +1 -1
  446. package/app/.next-cli-build/server/app/login.rsc +4 -4
  447. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  448. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  449. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  450. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  451. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  452. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  453. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  454. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  455. package/app/.next-cli-build/server/app/page.js +2 -2
  456. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  457. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  458. package/app/.next-cli-build/server/app-paths-manifest.json +11 -10
  459. package/app/.next-cli-build/server/chunks/194.js +1 -1
  460. package/app/.next-cli-build/server/chunks/2376.js +2 -0
  461. package/app/.next-cli-build/server/chunks/369.js +1 -1
  462. package/app/.next-cli-build/server/chunks/3787.js +2 -2
  463. package/app/.next-cli-build/server/chunks/3986.js +1 -1
  464. package/app/.next-cli-build/server/chunks/4126.js +1 -1
  465. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  466. package/app/.next-cli-build/server/chunks/4776.js +1 -1
  467. package/app/.next-cli-build/server/chunks/4833.js +2 -0
  468. package/app/.next-cli-build/server/chunks/5139.js +1 -1
  469. package/app/.next-cli-build/server/chunks/5920.js +1 -1
  470. package/app/.next-cli-build/server/chunks/65.js +1 -0
  471. package/app/.next-cli-build/server/chunks/7141.js +1 -1
  472. package/app/.next-cli-build/server/chunks/7828.js +1 -1
  473. package/app/.next-cli-build/server/chunks/{302.js → 7945.js} +30 -28
  474. package/app/.next-cli-build/server/chunks/8129.js +1 -1
  475. package/app/.next-cli-build/server/chunks/8400.js +2 -2
  476. package/app/.next-cli-build/server/chunks/8658.js +2 -0
  477. package/app/.next-cli-build/server/chunks/869.js +1 -1
  478. package/app/.next-cli-build/server/chunks/8775.js +2 -1
  479. package/app/.next-cli-build/server/chunks/8998.js +16 -16
  480. package/app/.next-cli-build/server/chunks/9489.js +3 -3
  481. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  482. package/app/.next-cli-build/server/middleware.js +9 -9
  483. package/app/.next-cli-build/server/pages/404.html +1 -1
  484. package/app/.next-cli-build/server/pages/500.html +1 -1
  485. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  486. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  487. package/app/.next-cli-build/static/O7tk63SVbhMmVH3A8sNna/_buildManifest.js +1 -0
  488. package/app/.next-cli-build/static/chunks/1321-ded98decf52824ab.js +1 -0
  489. package/app/.next-cli-build/static/chunks/{8798-6bf356da6c4b24bc.js → 545-879fcbf4fd26bb8c.js} +24 -22
  490. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-b94c0e5365f146bc.js → page-6c3146011be4e83d.js} +1 -1
  491. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-9849d434ab8fe899.js → page-55b7e2d349ab3bd8.js} +1 -1
  492. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/{page-f3bcbc25bb1b8ed3.js → page-a879a761c7384733.js} +1 -1
  493. package/app/.next-cli-build/static/chunks/app/_global-error/{page-53acebeeeaf77697.js → page-94a9ef2ca98f2a41.js} +1 -1
  494. package/app/.next-cli-build/static/chunks/app/api/agent-library/catalog/{route-53acebeeeaf77697.js → route-94a9ef2ca98f2a41.js} +1 -1
  495. package/app/.next-cli-build/static/chunks/app/api/agent-library/doctor/{route-53acebeeeaf77697.js → route-94a9ef2ca98f2a41.js} +1 -1
  496. package/app/.next-cli-build/static/chunks/app/api/agent-library/export/{route-53acebeeeaf77697.js → route-94a9ef2ca98f2a41.js} +1 -1
  497. package/app/.next-cli-build/static/chunks/app/api/agent-library/mcp/route-94a9ef2ca98f2a41.js +1 -0
  498. package/app/.next-cli-build/static/chunks/app/api/agent-library/route-94a9ef2ca98f2a41.js +1 -0
  499. package/app/.next-cli-build/static/chunks/app/api/agent-library/skills/route-94a9ef2ca98f2a41.js +1 -0
  500. package/app/.next-cli-build/static/chunks/app/api/agent-library/sync/route-94a9ef2ca98f2a41.js +1 -0
  501. package/app/.next-cli-build/static/chunks/app/api/agent-library/updates/route-94a9ef2ca98f2a41.js +1 -0
  502. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-94a9ef2ca98f2a41.js +1 -0
  503. package/app/.next-cli-build/static/chunks/app/api/cli-tools/aider-settings/route-94a9ef2ca98f2a41.js +1 -0
  504. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-94a9ef2ca98f2a41.js +1 -0
  505. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-94a9ef2ca98f2a41.js +1 -0
  506. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-94a9ef2ca98f2a41.js +1 -0
  507. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-full-catalog/route-94a9ef2ca98f2a41.js +1 -0
  508. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-94a9ef2ca98f2a41.js +1 -0
  509. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-94a9ef2ca98f2a41.js +1 -0
  510. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-94a9ef2ca98f2a41.js +1 -0
  511. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-94a9ef2ca98f2a41.js +1 -0
  512. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-94a9ef2ca98f2a41.js +1 -0
  513. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-94a9ef2ca98f2a41.js +1 -0
  514. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-94a9ef2ca98f2a41.js +1 -0
  515. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-94a9ef2ca98f2a41.js +1 -0
  516. package/app/.next-cli-build/static/chunks/app/api/cli-tools/gemini-cli-settings/route-94a9ef2ca98f2a41.js +1 -0
  517. package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-settings/route-94a9ef2ca98f2a41.js +1 -0
  518. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-94a9ef2ca98f2a41.js +1 -0
  519. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-94a9ef2ca98f2a41.js +1 -0
  520. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-94a9ef2ca98f2a41.js +1 -0
  521. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-94a9ef2ca98f2a41.js +1 -0
  522. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-94a9ef2ca98f2a41.js +1 -0
  523. package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/route-94a9ef2ca98f2a41.js +1 -0
  524. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-94a9ef2ca98f2a41.js +1 -0
  525. package/app/.next-cli-build/static/chunks/app/api/combos/route-94a9ef2ca98f2a41.js +1 -0
  526. package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-94a9ef2ca98f2a41.js +1 -0
  527. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-94a9ef2ca98f2a41.js +1 -0
  528. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-94a9ef2ca98f2a41.js +1 -0
  529. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-94a9ef2ca98f2a41.js +1 -0
  530. package/app/.next-cli-build/static/chunks/app/api/health/route-94a9ef2ca98f2a41.js +1 -0
  531. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-94a9ef2ca98f2a41.js +1 -0
  532. package/app/.next-cli-build/static/chunks/app/api/keys/route-94a9ef2ca98f2a41.js +1 -0
  533. package/app/.next-cli-build/static/chunks/app/api/locale/route-94a9ef2ca98f2a41.js +1 -0
  534. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-94a9ef2ca98f2a41.js +1 -0
  535. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-94a9ef2ca98f2a41.js +1 -0
  536. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-94a9ef2ca98f2a41.js +1 -0
  537. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-94a9ef2ca98f2a41.js +1 -0
  538. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-94a9ef2ca98f2a41.js +1 -0
  539. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-94a9ef2ca98f2a41.js +1 -0
  540. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-94a9ef2ca98f2a41.js +1 -0
  541. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/route-94a9ef2ca98f2a41.js +1 -0
  542. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/strategy/route-94a9ef2ca98f2a41.js +1 -0
  543. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/route-94a9ef2ca98f2a41.js +1 -0
  544. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/health/route-94a9ef2ca98f2a41.js +1 -0
  545. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/providers/route-94a9ef2ca98f2a41.js +1 -0
  546. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/routing/route-94a9ef2ca98f2a41.js +1 -0
  547. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/usage/route-94a9ef2ca98f2a41.js +1 -0
  548. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/version/route-94a9ef2ca98f2a41.js +1 -0
  549. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-94a9ef2ca98f2a41.js +1 -0
  550. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-94a9ef2ca98f2a41.js +1 -0
  551. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-94a9ef2ca98f2a41.js +1 -0
  552. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-94a9ef2ca98f2a41.js +1 -0
  553. package/app/.next-cli-build/static/chunks/app/api/models/route-94a9ef2ca98f2a41.js +1 -0
  554. package/app/.next-cli-build/static/chunks/app/api/models/test/route-94a9ef2ca98f2a41.js +1 -0
  555. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-94a9ef2ca98f2a41.js +1 -0
  556. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-94a9ef2ca98f2a41.js +1 -0
  557. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-94a9ef2ca98f2a41.js +1 -0
  558. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-94a9ef2ca98f2a41.js +1 -0
  559. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-94a9ef2ca98f2a41.js +1 -0
  560. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-94a9ef2ca98f2a41.js +1 -0
  561. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-94a9ef2ca98f2a41.js +1 -0
  562. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-94a9ef2ca98f2a41.js +1 -0
  563. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-94a9ef2ca98f2a41.js +1 -0
  564. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-94a9ef2ca98f2a41.js +1 -0
  565. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-94a9ef2ca98f2a41.js +1 -0
  566. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-94a9ef2ca98f2a41.js +1 -0
  567. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-94a9ef2ca98f2a41.js +1 -0
  568. package/app/.next-cli-build/static/chunks/app/api/pricing/route-94a9ef2ca98f2a41.js +1 -0
  569. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-94a9ef2ca98f2a41.js +1 -0
  570. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-94a9ef2ca98f2a41.js +1 -0
  571. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-94a9ef2ca98f2a41.js +1 -0
  572. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/batch/route-94a9ef2ca98f2a41.js +1 -0
  573. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/cache/route-94a9ef2ca98f2a41.js +1 -0
  574. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/prepare/route-94a9ef2ca98f2a41.js +1 -0
  575. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/remove-unavailable/route-94a9ef2ca98f2a41.js +1 -0
  576. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/route-94a9ef2ca98f2a41.js +1 -0
  577. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/cancel/route-94a9ef2ca98f2a41.js +1 -0
  578. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/start/route-94a9ef2ca98f2a41.js +1 -0
  579. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/status/route-94a9ef2ca98f2a41.js +1 -0
  580. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-94a9ef2ca98f2a41.js +1 -0
  581. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-94a9ef2ca98f2a41.js +1 -0
  582. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-94a9ef2ca98f2a41.js +1 -0
  583. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-94a9ef2ca98f2a41.js +1 -0
  584. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-94a9ef2ca98f2a41.js +1 -0
  585. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-94a9ef2ca98f2a41.js +1 -0
  586. package/app/.next-cli-build/static/chunks/app/api/providers/route-94a9ef2ca98f2a41.js +1 -0
  587. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-94a9ef2ca98f2a41.js +1 -0
  588. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-94a9ef2ca98f2a41.js +1 -0
  589. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-94a9ef2ca98f2a41.js +1 -0
  590. package/app/.next-cli-build/static/chunks/app/api/routing/feedback/route-94a9ef2ca98f2a41.js +1 -0
  591. package/app/.next-cli-build/static/chunks/app/api/routing/insights/route-94a9ef2ca98f2a41.js +1 -0
  592. package/app/.next-cli-build/static/chunks/app/api/routing/learn/route-94a9ef2ca98f2a41.js +1 -0
  593. package/app/.next-cli-build/static/chunks/app/api/routing/stats/route-94a9ef2ca98f2a41.js +1 -0
  594. package/app/.next-cli-build/static/chunks/app/api/routing/versions/promote/route-94a9ef2ca98f2a41.js +1 -0
  595. package/app/.next-cli-build/static/chunks/app/api/routing/versions/rollback/route-94a9ef2ca98f2a41.js +1 -0
  596. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-94a9ef2ca98f2a41.js +1 -0
  597. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-94a9ef2ca98f2a41.js +1 -0
  598. package/app/.next-cli-build/static/chunks/app/api/settings/route-94a9ef2ca98f2a41.js +1 -0
  599. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-94a9ef2ca98f2a41.js +1 -0
  600. package/app/.next-cli-build/static/chunks/app/api/skills/[id]/route-94a9ef2ca98f2a41.js +1 -0
  601. package/app/.next-cli-build/static/chunks/app/api/tags/route-94a9ef2ca98f2a41.js +1 -0
  602. package/app/.next-cli-build/static/chunks/app/api/token-saver/vault-stats/route-94a9ef2ca98f2a41.js +1 -0
  603. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-94a9ef2ca98f2a41.js +1 -0
  604. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-94a9ef2ca98f2a41.js +1 -0
  605. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-94a9ef2ca98f2a41.js +1 -0
  606. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-94a9ef2ca98f2a41.js +1 -0
  607. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-94a9ef2ca98f2a41.js +1 -0
  608. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-94a9ef2ca98f2a41.js +1 -0
  609. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-94a9ef2ca98f2a41.js +1 -0
  610. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-94a9ef2ca98f2a41.js +1 -0
  611. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-94a9ef2ca98f2a41.js +1 -0
  612. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-94a9ef2ca98f2a41.js +1 -0
  613. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-94a9ef2ca98f2a41.js +1 -0
  614. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-94a9ef2ca98f2a41.js +1 -0
  615. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-94a9ef2ca98f2a41.js +1 -0
  616. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-94a9ef2ca98f2a41.js +1 -0
  617. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-94a9ef2ca98f2a41.js +1 -0
  618. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-94a9ef2ca98f2a41.js +1 -0
  619. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-94a9ef2ca98f2a41.js +1 -0
  620. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-94a9ef2ca98f2a41.js +1 -0
  621. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-94a9ef2ca98f2a41.js +1 -0
  622. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-94a9ef2ca98f2a41.js +1 -0
  623. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-94a9ef2ca98f2a41.js +1 -0
  624. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-94a9ef2ca98f2a41.js +1 -0
  625. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-94a9ef2ca98f2a41.js +1 -0
  626. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-94a9ef2ca98f2a41.js +1 -0
  627. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-94a9ef2ca98f2a41.js +1 -0
  628. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-94a9ef2ca98f2a41.js +1 -0
  629. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-94a9ef2ca98f2a41.js +1 -0
  630. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-94a9ef2ca98f2a41.js +1 -0
  631. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-94a9ef2ca98f2a41.js +1 -0
  632. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-94a9ef2ca98f2a41.js +1 -0
  633. package/app/.next-cli-build/static/chunks/app/api/v1/route-94a9ef2ca98f2a41.js +1 -0
  634. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-94a9ef2ca98f2a41.js +1 -0
  635. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-94a9ef2ca98f2a41.js +1 -0
  636. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-94a9ef2ca98f2a41.js +1 -0
  637. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-94a9ef2ca98f2a41.js +1 -0
  638. package/app/.next-cli-build/static/chunks/app/api/version/route-94a9ef2ca98f2a41.js +1 -0
  639. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-94a9ef2ca98f2a41.js +1 -0
  640. package/app/.next-cli-build/static/chunks/app/api/version/update/route-94a9ef2ca98f2a41.js +1 -0
  641. package/app/.next-cli-build/static/chunks/app/login/page-94a9ef2ca98f2a41.js +1 -0
  642. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-94a9ef2ca98f2a41.js +1 -0
  643. package/app/.next-cli-build/static/chunks/app/page-94a9ef2ca98f2a41.js +1 -0
  644. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-94a9ef2ca98f2a41.js +1 -0
  645. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-94a9ef2ca98f2a41.js +1 -0
  646. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-94a9ef2ca98f2a41.js +1 -0
  647. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-94a9ef2ca98f2a41.js +1 -0
  648. package/app/.next-cli-build/static/css/c6541e58fb98dd9a.css +1 -0
  649. package/app/package.json +1 -1
  650. package/claude-switchboard.js +5 -0
  651. package/package.json +4 -2
  652. package/src/cli/claudeLauncher.js +51 -0
  653. package/app/.next-cli-build/server/chunks/688.js +0 -1
  654. package/app/.next-cli-build/server/chunks/7155.js +0 -1
  655. package/app/.next-cli-build/static/BPyHY8r6-2Gdq06Aqcl6N/_buildManifest.js +0 -1
  656. package/app/.next-cli-build/static/chunks/1321-d8d18be17b00c63b.js +0 -1
  657. package/app/.next-cli-build/static/chunks/app/api/agent-library/mcp/route-53acebeeeaf77697.js +0 -1
  658. package/app/.next-cli-build/static/chunks/app/api/agent-library/route-53acebeeeaf77697.js +0 -1
  659. package/app/.next-cli-build/static/chunks/app/api/agent-library/skills/route-53acebeeeaf77697.js +0 -1
  660. package/app/.next-cli-build/static/chunks/app/api/agent-library/sync/route-53acebeeeaf77697.js +0 -1
  661. package/app/.next-cli-build/static/chunks/app/api/agent-library/updates/route-53acebeeeaf77697.js +0 -1
  662. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-53acebeeeaf77697.js +0 -1
  663. package/app/.next-cli-build/static/chunks/app/api/cli-tools/aider-settings/route-53acebeeeaf77697.js +0 -1
  664. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-53acebeeeaf77697.js +0 -1
  665. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-53acebeeeaf77697.js +0 -1
  666. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-53acebeeeaf77697.js +0 -1
  667. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-53acebeeeaf77697.js +0 -1
  668. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-53acebeeeaf77697.js +0 -1
  669. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-53acebeeeaf77697.js +0 -1
  670. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-53acebeeeaf77697.js +0 -1
  671. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-53acebeeeaf77697.js +0 -1
  672. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-53acebeeeaf77697.js +0 -1
  673. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-53acebeeeaf77697.js +0 -1
  674. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-53acebeeeaf77697.js +0 -1
  675. package/app/.next-cli-build/static/chunks/app/api/cli-tools/gemini-cli-settings/route-53acebeeeaf77697.js +0 -1
  676. package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-settings/route-53acebeeeaf77697.js +0 -1
  677. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-53acebeeeaf77697.js +0 -1
  678. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-53acebeeeaf77697.js +0 -1
  679. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-53acebeeeaf77697.js +0 -1
  680. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-53acebeeeaf77697.js +0 -1
  681. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-53acebeeeaf77697.js +0 -1
  682. package/app/.next-cli-build/static/chunks/app/api/cli-tools/pi-settings/route-53acebeeeaf77697.js +0 -1
  683. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-53acebeeeaf77697.js +0 -1
  684. package/app/.next-cli-build/static/chunks/app/api/combos/route-53acebeeeaf77697.js +0 -1
  685. package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-53acebeeeaf77697.js +0 -1
  686. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-53acebeeeaf77697.js +0 -1
  687. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-53acebeeeaf77697.js +0 -1
  688. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-53acebeeeaf77697.js +0 -1
  689. package/app/.next-cli-build/static/chunks/app/api/health/route-53acebeeeaf77697.js +0 -1
  690. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-53acebeeeaf77697.js +0 -1
  691. package/app/.next-cli-build/static/chunks/app/api/keys/route-53acebeeeaf77697.js +0 -1
  692. package/app/.next-cli-build/static/chunks/app/api/locale/route-53acebeeeaf77697.js +0 -1
  693. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-53acebeeeaf77697.js +0 -1
  694. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-53acebeeeaf77697.js +0 -1
  695. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-53acebeeeaf77697.js +0 -1
  696. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-53acebeeeaf77697.js +0 -1
  697. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-53acebeeeaf77697.js +0 -1
  698. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-53acebeeeaf77697.js +0 -1
  699. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-53acebeeeaf77697.js +0 -1
  700. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/route-53acebeeeaf77697.js +0 -1
  701. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/[id]/strategy/route-53acebeeeaf77697.js +0 -1
  702. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/combos/route-53acebeeeaf77697.js +0 -1
  703. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/health/route-53acebeeeaf77697.js +0 -1
  704. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/providers/route-53acebeeeaf77697.js +0 -1
  705. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/routing/route-53acebeeeaf77697.js +0 -1
  706. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/usage/route-53acebeeeaf77697.js +0 -1
  707. package/app/.next-cli-build/static/chunks/app/api/mgmt/v1/version/route-53acebeeeaf77697.js +0 -1
  708. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-53acebeeeaf77697.js +0 -1
  709. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-53acebeeeaf77697.js +0 -1
  710. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-53acebeeeaf77697.js +0 -1
  711. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-53acebeeeaf77697.js +0 -1
  712. package/app/.next-cli-build/static/chunks/app/api/models/route-53acebeeeaf77697.js +0 -1
  713. package/app/.next-cli-build/static/chunks/app/api/models/test/route-53acebeeeaf77697.js +0 -1
  714. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-53acebeeeaf77697.js +0 -1
  715. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-53acebeeeaf77697.js +0 -1
  716. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-53acebeeeaf77697.js +0 -1
  717. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-53acebeeeaf77697.js +0 -1
  718. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-53acebeeeaf77697.js +0 -1
  719. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-53acebeeeaf77697.js +0 -1
  720. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-53acebeeeaf77697.js +0 -1
  721. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-53acebeeeaf77697.js +0 -1
  722. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-53acebeeeaf77697.js +0 -1
  723. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-53acebeeeaf77697.js +0 -1
  724. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-53acebeeeaf77697.js +0 -1
  725. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-53acebeeeaf77697.js +0 -1
  726. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-53acebeeeaf77697.js +0 -1
  727. package/app/.next-cli-build/static/chunks/app/api/pricing/route-53acebeeeaf77697.js +0 -1
  728. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-53acebeeeaf77697.js +0 -1
  729. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-53acebeeeaf77697.js +0 -1
  730. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-53acebeeeaf77697.js +0 -1
  731. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/batch/route-53acebeeeaf77697.js +0 -1
  732. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/cache/route-53acebeeeaf77697.js +0 -1
  733. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/prepare/route-53acebeeeaf77697.js +0 -1
  734. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/remove-unavailable/route-53acebeeeaf77697.js +0 -1
  735. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/route-53acebeeeaf77697.js +0 -1
  736. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/cancel/route-53acebeeeaf77697.js +0 -1
  737. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/start/route-53acebeeeaf77697.js +0 -1
  738. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/model-probes/verify/status/route-53acebeeeaf77697.js +0 -1
  739. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-53acebeeeaf77697.js +0 -1
  740. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-53acebeeeaf77697.js +0 -1
  741. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-53acebeeeaf77697.js +0 -1
  742. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-53acebeeeaf77697.js +0 -1
  743. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-53acebeeeaf77697.js +0 -1
  744. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-53acebeeeaf77697.js +0 -1
  745. package/app/.next-cli-build/static/chunks/app/api/providers/route-53acebeeeaf77697.js +0 -1
  746. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-53acebeeeaf77697.js +0 -1
  747. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-53acebeeeaf77697.js +0 -1
  748. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-53acebeeeaf77697.js +0 -1
  749. package/app/.next-cli-build/static/chunks/app/api/routing/feedback/route-53acebeeeaf77697.js +0 -1
  750. package/app/.next-cli-build/static/chunks/app/api/routing/insights/route-53acebeeeaf77697.js +0 -1
  751. package/app/.next-cli-build/static/chunks/app/api/routing/learn/route-53acebeeeaf77697.js +0 -1
  752. package/app/.next-cli-build/static/chunks/app/api/routing/stats/route-53acebeeeaf77697.js +0 -1
  753. package/app/.next-cli-build/static/chunks/app/api/routing/versions/promote/route-53acebeeeaf77697.js +0 -1
  754. package/app/.next-cli-build/static/chunks/app/api/routing/versions/rollback/route-53acebeeeaf77697.js +0 -1
  755. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-53acebeeeaf77697.js +0 -1
  756. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-53acebeeeaf77697.js +0 -1
  757. package/app/.next-cli-build/static/chunks/app/api/settings/route-53acebeeeaf77697.js +0 -1
  758. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-53acebeeeaf77697.js +0 -1
  759. package/app/.next-cli-build/static/chunks/app/api/skills/[id]/route-53acebeeeaf77697.js +0 -1
  760. package/app/.next-cli-build/static/chunks/app/api/tags/route-53acebeeeaf77697.js +0 -1
  761. package/app/.next-cli-build/static/chunks/app/api/token-saver/vault-stats/route-53acebeeeaf77697.js +0 -1
  762. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-53acebeeeaf77697.js +0 -1
  763. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-53acebeeeaf77697.js +0 -1
  764. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-53acebeeeaf77697.js +0 -1
  765. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-53acebeeeaf77697.js +0 -1
  766. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-53acebeeeaf77697.js +0 -1
  767. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-53acebeeeaf77697.js +0 -1
  768. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-53acebeeeaf77697.js +0 -1
  769. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-53acebeeeaf77697.js +0 -1
  770. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-53acebeeeaf77697.js +0 -1
  771. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-53acebeeeaf77697.js +0 -1
  772. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-53acebeeeaf77697.js +0 -1
  773. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-53acebeeeaf77697.js +0 -1
  774. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-53acebeeeaf77697.js +0 -1
  775. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-53acebeeeaf77697.js +0 -1
  776. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-53acebeeeaf77697.js +0 -1
  777. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-53acebeeeaf77697.js +0 -1
  778. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-53acebeeeaf77697.js +0 -1
  779. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-53acebeeeaf77697.js +0 -1
  780. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-53acebeeeaf77697.js +0 -1
  781. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-53acebeeeaf77697.js +0 -1
  782. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-53acebeeeaf77697.js +0 -1
  783. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-53acebeeeaf77697.js +0 -1
  784. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-53acebeeeaf77697.js +0 -1
  785. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-53acebeeeaf77697.js +0 -1
  786. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-53acebeeeaf77697.js +0 -1
  787. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-53acebeeeaf77697.js +0 -1
  788. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-53acebeeeaf77697.js +0 -1
  789. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-53acebeeeaf77697.js +0 -1
  790. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-53acebeeeaf77697.js +0 -1
  791. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-53acebeeeaf77697.js +0 -1
  792. package/app/.next-cli-build/static/chunks/app/api/v1/route-53acebeeeaf77697.js +0 -1
  793. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-53acebeeeaf77697.js +0 -1
  794. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-53acebeeeaf77697.js +0 -1
  795. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-53acebeeeaf77697.js +0 -1
  796. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-53acebeeeaf77697.js +0 -1
  797. package/app/.next-cli-build/static/chunks/app/api/version/route-53acebeeeaf77697.js +0 -1
  798. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-53acebeeeaf77697.js +0 -1
  799. package/app/.next-cli-build/static/chunks/app/api/version/update/route-53acebeeeaf77697.js +0 -1
  800. package/app/.next-cli-build/static/chunks/app/login/page-53acebeeeaf77697.js +0 -1
  801. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-53acebeeeaf77697.js +0 -1
  802. package/app/.next-cli-build/static/chunks/app/page-53acebeeeaf77697.js +0 -1
  803. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-53acebeeeaf77697.js +0 -1
  804. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-53acebeeeaf77697.js +0 -1
  805. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-53acebeeeaf77697.js +0 -1
  806. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-53acebeeeaf77697.js +0 -1
  807. package/app/.next-cli-build/static/css/d8a6e361b97914f9.css +0 -1
  808. /package/app/.next-cli-build/static/{BPyHY8r6-2Gdq06Aqcl6N → O7tk63SVbhMmVH3A8sNna}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- exports.id=5920,exports.ids=[5920],exports.modules={6979:(a,b,c)=>{"use strict";c.d(b,{F:()=>f,J:()=>e});var d=c(23211);function e(a,b="Unexpected error"){return a instanceof Error&&a.message?a.message:"string"==typeof a&&a?a:b}function f(a,b){return d.NextResponse.json({error:e(b)},{status:a})}},49120:(a,b,c)=>{"use strict";c.d(b,{nJ:()=>o});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="switchboard";function k(a){if("win32"===process.platform){let b=process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming");return g().join(b,a)}return g().join(i().homedir(),`.${a}`)}let l=["db/data.sqlite","machine-id","jwt-secret","auth","db.json"];function m(a){return l.some(b=>e().existsSync(g().join(a,b)))}function n(){let a=k(j);if(m(a))return a;let b=k("9router");return m(b)?(console.warn(`[DATA_DIR] using legacy data directory '${b}' (set DATA_DIR='${a}' to switch)`),b):a}let o=function(){let a=process.env.DATA_DIR;if(!a)return n();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),n();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),n();throw b}}()},57781:(a,b,c)=>{"use strict";c.d(b,{R:()=>h});var d=c(51455),e=c.n(d),f=c(76760),g=c.n(f);async function h(a,b,c="utf-8"){let d=g().dirname(a);await e().mkdir(d,{recursive:!0});let f=g().join(d,`.${g().basename(a)}.sb-tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);try{await e().writeFile(f,b,c);try{let a=await e().open(f,"r+");try{await a.sync()}finally{await a.close()}}catch{}await e().rename(f,a)}catch(a){try{await e().unlink(f)}catch{}throw a}}},78335:()=>{},79754:(a,b,c)=>{"use strict";c.d(b,{vy:()=>aE,M1:()=>as,S7:()=>aP,nV:()=>au,il:()=>Q,Z:()=>aS,K6:()=>aT,bZ:()=>aI,o1:()=>R,CN:()=>$,ef:()=>P,n7:()=>_,M5:()=>J,FK:()=>aQ,e6:()=>aJ,BM:()=>S,Ss:()=>ac,eB:()=>H,j1:()=>aw,DZ:()=>K,C0:()=>aR,te:()=>ab});var d=c(51455),e=c.n(d),f=c(76760),g=c.n(f),h=c(73024),i=c.n(h),j=c(48161),k=c.n(j),l=c(49120);let m=".switchboard-managed.json",n={claude:{id:"claude",label:"Claude Code",supportsSkills:!0,supportsMcp:!0},codex:{id:"codex",label:"Codex CLI",supportsSkills:!0,supportsMcp:!0},opencode:{id:"opencode",label:"OpenCode",supportsSkills:!0,supportsMcp:!0},gemini:{id:"gemini",label:"Gemini CLI",supportsSkills:!0,supportsMcp:!0},cursor:{id:"cursor",label:"Cursor",supportsSkills:!0,supportsMcp:!0}};function o(a={}){if("project"===a.scope&&a.projectPath){let b=g().resolve(a.projectPath);return g().join(b,".switchboard","agent-library")}return g().join(l.nJ,"agent-library")}function p(a){return g().join(a,"skills")}function q(a){return g().join(a,"mcp","servers.json")}function r(a){return g().join(a,"settings.json")}function s(a){return g().join(a,"state.json")}function t(a){let b=String(a||"").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80);return!b||"."===b||".."===b||b.includes("..")||!/[a-zA-Z0-9]/.test(b)?"":b}function u(a){let b=t(a);return b?b.startsWith("sb-")?b:`sb-${b}`:null}function v(a,b={}){let c=k().homedir(),d="project"===b.scope&&b.projectPath?g().resolve(b.projectPath):null;switch(a){case"claude":return d?g().join(d,".claude","skills"):g().join(c,".claude","skills");case"codex":return d?g().join(d,".agents","skills"):g().join(c,".agents","skills");case"opencode":return d?g().join(d,".opencode","skills"):g().join(c,".config","opencode","skills");case"gemini":return d?g().join(d,".gemini","skills"):g().join(c,".gemini","skills");case"cursor":return d?g().join(d,".cursor","skills"):g().join(c,".cursor","skills");default:return null}}function w(a,b={}){let c=k().homedir(),d="project"===b.scope&&b.projectPath?g().resolve(b.projectPath):null;switch(a){case"claude":if(d)return{path:g().join(d,".mcp.json"),format:"json",kind:"claude-project-mcp"};return{path:g().join(c,".claude.json"),format:"json",kind:"claude-user"};case"codex":return{path:d?g().join(d,".codex","config.toml"):g().join(c,".codex","config.toml"),format:"toml",kind:"codex"};case"opencode":return{path:d?g().join(d,"opencode.json"):g().join(c,".config","opencode","opencode.json"),format:"json",kind:"opencode"};case"gemini":return{path:d?g().join(d,".gemini","settings.json"):g().join(c,".gemini","settings.json"),format:"json",kind:"gemini"};case"cursor":return{path:d?g().join(d,".cursor","mcp.json"):g().join(c,".cursor","mcp.json"),format:"json",kind:"cursor"};default:return null}}function x(a){for(let b of[a,p(a),g().join(a,"mcp")])i().existsSync(b)||i().mkdirSync(b,{recursive:!0})}var y=c(57781);let z=Promise.resolve();function A(a){(0,h.mkdirSync)(g().dirname(a),{recursive:!0});let b=JSON.stringify({pid:process.pid,at:new Date().toISOString(),ts:Date.now()});try{let c=(0,h.openSync)(a,"wx");try{(0,h.writeFileSync)(c,b,"utf-8")}finally{(0,h.closeSync)(c)}return!0}catch(a){if(a?.code!=="EEXIST")throw a;return!1}}async function B(){let a,b=(a=o({scope:"global",projectPath:null}),g().join(a,".apply.lock")),c=Date.now()+3e4;for(;Date.now()<c;){if(A(b)||function(a){try{let b,c=(0,h.readFileSync)(a,"utf-8");try{b=JSON.parse(c)}catch{b={pid:parseInt(String(c).trim(),10),ts:0}}let d=Number(b.pid),e=Number(b.ts)||0,f=e>0&&Date.now()-e>3e5,g=!function(a){if(!a||!Number.isFinite(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch{return!1}}(d);if(f||g){try{(0,h.unlinkSync)(a)}catch{}return A(a)}}catch{try{(0,h.unlinkSync)(a)}catch{}return A(a)}return!1}(b))return()=>{try{if(!(0,h.existsSync)(b))return;let a=(0,h.readFileSync)(b,"utf-8");try{JSON.parse(a).pid===process.pid&&(0,h.unlinkSync)(b)}catch{String(a).trim()===String(process.pid)&&(0,h.unlinkSync)(b)}}catch{}};await new Promise(a=>setTimeout(a,50))}let d=Error("Agent Library apply/clean is already running (lock timeout). Retry shortly.");throw d.code="lock_timeout",d}function C(a){let b,c,d=new Promise((a,d)=>{b=a,c=d});return z=z.then(async()=>{let d=await B();try{let c=await a();b(c)}catch(a){c(a)}finally{d()}}).catch(()=>{}),d}function D(){let a={};for(let b of Object.keys(n))a[b]={skills:!0,mcp:!0};return{enabled:!0,scope:"global",projectPath:null,linkMode:"win32"===process.platform?"copy":"symlink",neverOverwriteUser:!0,includeProductSkills:!0,requireCatalogConfirm:!0,targets:a}}function E(a,b){let c=a||{skills:!0,mcp:!0};return b&&"object"==typeof b?{skills:"boolean"==typeof b.skills?b.skills:!1!==c.skills,mcp:"boolean"==typeof b.mcp?b.mcp:!1!==c.mcp}:{...c}}function F(a={}){let b=D(),c={};for(let a of Object.keys(n))c[a]={...b.targets[a]||{skills:!0,mcp:!0}};if(a.targets&&"object"==typeof a.targets)for(let b of Object.keys(n)){let d=a.targets[b];d&&"object"==typeof d&&(c[b]=E(c[b],d))}let d="copy"===a.linkMode||"symlink"===a.linkMode?a.linkMode:b.linkMode,e="project"===a.scope?"project":"global",f=null;return"project"===e&&a.projectPath&&(f=String(a.projectPath).trim()||null),{enabled:!1!==a.enabled,scope:e,projectPath:f,linkMode:d,neverOverwriteUser:!1!==a.neverOverwriteUser,includeProductSkills:!1!==a.includeProductSkills,requireCatalogConfirm:!1!==a.requireCatalogConfirm,targets:c}}function G(a){if(!a.enabled){let a=Error("Agent Library sync is turned off in settings");throw a.code="disabled",a}if("project"===a.scope){let b,c=a.projectPath?String(a.projectPath).trim():"";if(!c){let a=Error("Project scope requires an absolute project path — set it before Apply");throw a.code="project_path_missing",a}if(!g().isAbsolute(c)){let a=Error("Project path must be absolute (e.g. /Users/you/my-app)");throw a.code="project_path_invalid",a}let d=g().resolve(c);if(!(0,h.existsSync)(d)){let a=Error(`Project path does not exist: ${d}`);throw a.code="project_path_missing",a}try{b=(0,h.statSync)(d)}catch{let a=Error(`Cannot access project path: ${d}`);throw a.code="project_path_invalid",a}if(!b.isDirectory()){let a=Error(`Project path is not a directory: ${d}`);throw a.code="project_path_invalid",a}}}function H(a){let b=a||D();return o({scope:b.scope,projectPath:b.projectPath})}function I(){return o({scope:"global",projectPath:null})}async function J(a){let b=I();x(b);let c=r(b),d=D();if((0,h.existsSync)(c))try{let a=await e().readFile(c,"utf-8");d=F(JSON.parse(a))}catch{d=D()}return x(H(d)),d}async function K(a,b){let c=I();x(c);let d=await J(c),e={...d.targets};if(b.targets&&"object"==typeof b.targets)for(let[a,c]of Object.entries(b.targets))n[a]&&(e[a]=E(d.targets[a],c));let f=F({...d,...b,targets:e});if(!1===b.neverOverwriteUser&&!0!==b.confirmAllowOverwrite&&(f.neverOverwriteUser=!0),!0===b.confirmAllowOverwrite&&!1===b.neverOverwriteUser&&(f.neverOverwriteUser=!1),"project"===f.scope)try{G({...f,enabled:!0})}catch(a){if(a?.code!=="project_path_missing"||b.projectPath){if(a?.code!=="disabled")throw a}else f.projectPath=null}return await (0,y.R)(r(c),JSON.stringify(f,null,2)),x(H(f)),f}async function L(a){let b=a||H(await J());x(b);let c=s(b);if(!(0,h.existsSync)(c))return{managedSkills:{},managedMcpKeys:{},lastSync:null,lastDoctor:null};try{return JSON.parse(await e().readFile(c,"utf-8"))}catch{return{managedSkills:{},managedMcpKeys:{},lastSync:null,lastDoctor:null}}}async function M(a,b){x(a),await (0,y.R)(s(a),JSON.stringify(b,null,2))}var N=c(82922);let O=[{id:"switchboard",name:"Switchboard (Entry)",description:"Setup, model discovery, combos & Auto routing. Start here — one /v1 endpoint, multi-provider gateway.",endpoint:"/v1",icon:"hub",isEntry:!0},{id:"switchboard-chat",name:"Chat",description:"Chat / code-gen via OpenAI, Anthropic, or Responses formats — streaming, tools, combo as model.",endpoint:"/v1/chat/completions",icon:"chat"}];async function P(a){x(a);let b=p(a),c=[];try{c=await e().readdir(b)}catch{return[]}let d=[];for(let a of c){let c=g().join(b,a,"SKILL.md");if(!(0,h.existsSync)(c))continue;let f="",i=a;try{let a=await e().readFile(c,"utf-8"),b=a.match(/^name:\s*(.+)$/m),d=a.match(/^description:\s*(.+)$/m);b&&(i=b[1].trim().replace(/^["']|["']$/g,"")),d&&(f=d[1].trim().replace(/^["']|["']$/g,""))}catch{}let j=await e().stat(c);d.push({id:a,title:i,description:f,path:g().join(b,a),source:"library",updatedAt:j.mtime.toISOString()})}return d.sort((a,b)=>a.id.localeCompare(b.id))}async function Q(a,b={}){x(a);let c=(0,N.XP)(),d=[];if(!c)return{ok:!1,results:d,error:"Product skills directory not found"};for(let c of O){let f=t(c.id),i=g().join(p(a),f),j=g().join(i,"SKILL.md");if((0,h.existsSync)(j)&&!b.force){d.push({id:f,action:"skipped_exists"});continue}let k=await (0,N.dr)(c.id);if(!k){d.push({id:f,action:"missing_source"});continue}await e().mkdir(i,{recursive:!0}),await e().writeFile(j,k,"utf-8"),d.push({id:f,action:"installed"})}return{ok:!0,results:d}}async function R(a,b){x(a);let c=t(b.id);if(!c)throw Error("Invalid skill id");let d=g().join(p(a),c);return await e().mkdir(d,{recursive:!0}),await e().writeFile(g().join(d,"SKILL.md"),b.markdown,"utf-8"),await e().writeFile(g().join(d,".source.json"),JSON.stringify({source:b.source||"manual",installedAt:new Date().toISOString(),...b.contentHash?{contentHash:b.contentHash}:{},...b.etag?{etag:b.etag}:{}},null,2),"utf-8"),{id:c,path:d}}async function S(a,b){let c=t(b);if(!c)throw Error("Invalid skill id");let d=g().resolve(p(a)),f=g().resolve(d,c);if(g().dirname(f)!==d)throw Error("Invalid skill path");return(0,h.existsSync)(f)?(await e().rm(f,{recursive:!0,force:!0}),{removed:!0,id:c}):{removed:!1}}function T(a){return g().join(g().dirname(a),`.sb-managed-${g().basename(a)}.json`)}async function U(a){let b=T(a);if((0,h.existsSync)(b))try{if((0,h.lstatSync)(b).isFile())return JSON.parse(await e().readFile(b,"utf-8"))}catch{}try{if(!(0,h.existsSync)(a))return null;let b=(0,h.lstatSync)(a);if(b.isSymbolicLink()||!b.isDirectory())return null;let c=g().join(a,m);if(!(0,h.existsSync)(c)||!(0,h.lstatSync)(c).isFile())return null;return JSON.parse(await e().readFile(c,"utf-8"))}catch{return null}}async function V(a,b){let c=JSON.stringify({managedBy:"switchboard",namespace:"sb",skillId:b.skillId,libraryPath:b.libraryPath,linkMode:b.linkMode,updatedAt:new Date().toISOString()},null,2),d=T(a);if(await e().mkdir(g().dirname(d),{recursive:!0}),await (0,y.R)(d,c),"copy"===b.linkMode)try{let b=(0,h.lstatSync)(a);b.isDirectory()&&!b.isSymbolicLink()&&await (0,y.R)(g().join(a,m),c)}catch{}}async function W(a){try{let b=T(a),c=(0,h.lstatSync)(b);c.isFile()&&!c.isSymbolicLink()&&await e().unlink(b)}catch{}try{let b=(0,h.lstatSync)(a);if(!b.isDirectory()||b.isSymbolicLink())return;let c=g().join(a,m),d=(0,h.lstatSync)(c);d.isFile()&&!d.isSymbolicLink()&&await e().unlink(c)}catch{}}async function X(a,b,c={}){let d=null;try{d=(0,h.lstatSync)(a)}catch{let b=await U(a);if(b?.managedBy==="switchboard")return{ok:!0,reason:"managed_sidecar_orphan",marker:b};return{ok:!0,reason:"missing"}}let e=await U(a);if(e?.managedBy==="switchboard")return{ok:!0,reason:"managed",marker:e};if(d.isSymbolicLink()&&c.libraryRoot)try{let b=(0,h.realpathSync)(a),d=g().resolve(c.libraryRoot),e=g().relative(d,b);if(e&&!e.startsWith("..")&&!g().isAbsolute(e))return{ok:!0,reason:"symlink_into_library"}}catch{return{ok:!0,reason:"broken_symlink"}}if(d.isSymbolicLink())try{(0,h.realpathSync)(a)}catch{return{ok:!0,reason:"broken_symlink"}}return b?{ok:!1,reason:"conflict_user_owned",message:"Path exists and is not Switchboard-managed. Skipping to protect your files."}:{ok:!0,reason:"overwrite_allowed",message:"User allowed overwrite of non-managed path"}}function Y(a){return"string"==typeof a&&a.startsWith("sb-")}function Z(a){let b=String(a||"").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/\./g,"-").replace(/^-+|-+$/g,"");return b&&"."!==b&&".."!==b&&/[a-zA-Z0-9]/.test(b)?b.startsWith("sb-")?b:`sb-${b}`:null}function $(a,b){let c=g().resolve(a),d=g().resolve(b),e=g().relative(d,c);return""===e||!e.startsWith("..")&&!g().isAbsolute(e)}async function _(a){x(a);let b=q(a);if(!(0,h.existsSync)(b))return[];try{let a=JSON.parse(await e().readFile(b,"utf-8"));return Array.isArray(a.servers)?a.servers:[]}catch{return[]}}async function aa(a,b){x(a);let c=q(a);await e().mkdir(g().dirname(c),{recursive:!0}),await (0,y.R)(c,JSON.stringify({version:1,updatedAt:new Date().toISOString(),note:"Switchboard Agent Library MCP catalog. Prefer ${ENV_VAR} references for secrets — never store raw API keys here if avoidable.",servers:b},null,2))}async function ab(a,b){let c=Z(b.id.replace(/^sb-/,""))||b.id;if(!c)throw Error("Invalid MCP server id");let d=b.transport||(b.url?"http":"stdio");if("stdio"===d&&!b.command)throw Error("stdio MCP server requires command");if(("http"===d||"sse"===d)&&!b.url)throw Error("http/sse MCP server requires url");let e={id:c,name:b.name||c,transport:d,command:b.command||void 0,args:Array.isArray(b.args)?b.args.map(String):void 0,env:b.env&&"object"==typeof b.env?Object.fromEntries(Object.entries(b.env).map(([a,b])=>[a,String(b)])):void 0,url:b.url||void 0,headers:b.headers&&"object"==typeof b.headers?Object.fromEntries(Object.entries(b.headers).map(([a,b])=>[a,String(b)])):void 0,enabled:!1!==b.enabled,notes:b.notes||void 0},f=await _(a),g=f.findIndex(a=>a.id===c);return g>=0?f[g]=e:f.push(e),await aa(a,f),e}async function ac(a,b){let c=Z(b.replace(/^sb-/,""))||b,d=await _(a),e=d.filter(a=>a.id!==c&&a.id!==b);return await aa(a,e),{removed:e.length<d.length}}async function ad(a,b,c){for(let d of(await e().mkdir(b,{recursive:!0}),await e().readdir(a,{withFileTypes:!0}))){let f,i=g().join(a,d.name),j=g().join(b,d.name);try{f=(0,h.lstatSync)(i)}catch{continue}if(f.isSymbolicLink()){if(!c)continue;try{let a=(0,h.realpathSync)(i),b=g().relative(g().resolve(c),a);if(b.startsWith("..")||g().isAbsolute(b))continue}catch{continue}try{let a=(0,h.realpathSync)(i);(0,h.lstatSync)(a).isDirectory()?await ad(a,j,c):await e().copyFile(a,j)}catch{}continue}f.isDirectory()?await ad(i,j,c):f.isFile()&&await e().copyFile(i,j)}}async function ae(a){let b;try{b=await e().lstat(a)}catch{return}b.isSymbolicLink()||b.isFile()?await e().unlink(a):b.isDirectory()&&await e().rm(a,{recursive:!0,force:!0})}async function af(a,b,c=!0){try{await e().lstat(a)}catch{return}let d=await X(a,!1!==c,{libraryRoot:b});if(!d.ok){let a=Error(d.message||"Path is not Switchboard-managed");throw a.code="conflict",a.reason=d.reason,a}}async function ag(a,b,c,d,f={}){await e().mkdir(g().dirname(b),{recursive:!0});let h=!1!==f.neverOverwriteUser;if("symlink"===c){await af(b,d,h);try{return await ae(b),await e().symlink(a,b,"dir"),{mode:"symlink"}}catch(c){if(c?.code==="conflict")throw c;return ah(a,b,d,c?.message,h)}}return ah(a,b,d,void 0,h)}async function ah(a,b,c,d,f=!0){let g=`${b}.sb-tmp-${process.pid}-${Date.now()}`,h=`${b}.sb-bak-${process.pid}-${Date.now()}`;try{await ae(g),await ad(a,g,c),await af(b,c,f);let i=!1;try{await e().lstat(b),i=!0}catch{i=!1}if(i){await ae(h);try{await e().rename(b,h)}catch{await ae(b)}}try{await e().rename(g,b)}catch(a){if(i)try{await e().lstat(h),await e().rename(h,b)}catch{}throw a}try{await ae(h)}catch{}return d?{mode:"copy",fallbackFrom:"symlink",warning:d||"symlink failed; used copy"}:{mode:"copy"}}catch(a){try{await ae(g)}catch{}throw a}}function ai(a){return String(a)}function aj(a){return String(a).replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(a,b)=>`{env:${b}}`)}function ak(a){return null!=a&&"object"==typeof a&&!Array.isArray(a)}function al(a,b){let c=a.transport||(a.url?"http":"stdio");if("codex"===b)return"stdio"===c?{command:a.command,args:a.args||[],env:a.env||{}}:{url:a.url,http_headers:a.headers||{}};if("opencode"===b)return"stdio"===c?{type:"local",command:[a.command,...a.args||[]],environment:Object.fromEntries(Object.entries(a.env||{}).map(([a,b])=>[a,aj(b)])),enabled:!0}:{type:"remote",url:a.url,headers:Object.fromEntries(Object.entries(a.headers||{}).map(([a,b])=>[a,aj(b)])),enabled:!0};if("gemini"===b)return"stdio"===c?{command:a.command,args:a.args||[],env:a.env||{}}:{url:a.url,type:"sse"===c?"sse":"http",headers:a.headers||{}};if("stdio"===c){let b={command:a.command,args:a.args||[]};return a.env&&Object.keys(a.env).length&&(b.env=Object.fromEntries(Object.entries(a.env).map(([a,b])=>[a,ai(b)]))),b}let d={url:a.url,type:"sse"===c?"sse":"http"};return a.headers&&Object.keys(a.headers).length&&(d.headers=Object.fromEntries(Object.entries(a.headers).map(([a,b])=>[a,ai(b)]))),d}async function am(a,b,c){let d=c.kind,f=new Set(c.previouslyManaged||[]),i={};if((0,h.existsSync)(a))try{i=JSON.parse(await e().readFile(a,"utf-8"))}catch{if(c.neverOverwriteUser)return{ok:!1,error:"mcp_parse_failed",message:`Cannot parse ${a}; refusing to overwrite`,path:a};i={}}let j="mcpServers";if("opencode"===d&&(j="mcp"),Object.prototype.hasOwnProperty.call(i,j)&&!ak(i[j])&&c.neverOverwriteUser)return{ok:!1,error:"mcp_shape_conflict",message:`${a}: "${j}" exists but is not a plain object; refusing to overwrite`,path:a};let k=ak(i[j])?{...i[j]}:{},l=b.filter(a=>!1!==a.enabled),m=new Set(l.map(a=>a.id)),n=[];for(let a of Object.keys(k))f.has(a)&&Y(a)&&!m.has(a)&&(delete k[a],n.push(a));let o=[],p=[];for(let a of l){let b=a.id;if(!Y(b)){p.push({key:b,reason:"not_namespaced"});continue}let e=al(a,"cursor"===d?"cursor":"gemini"===d?"gemini":"opencode"===d?"opencode":"claude"),g=Object.prototype.hasOwnProperty.call(k,b),h=f.has(b);if(g&&!h&&c.neverOverwriteUser){p.push({key:b,reason:"user_owned_or_unknown_sb_key"});continue}k[b]=e,o.push(b)}let q={...i,[j]:k};return c.dryRun||(await e().mkdir(g().dirname(a),{recursive:!0}),await (0,y.R)(a,JSON.stringify(q,null,2))),{ok:!0,path:a,written:o,removed:n,skipped:p,dryRun:!!c.dryRun}}async function an(a,b,c){let d="";(0,h.existsSync)(a)&&(d=await e().readFile(a,"utf-8"));let f=d.replace(/\n?# --- switchboard-agent-library-mcp-start ---[\s\S]*?# --- switchboard-agent-library-mcp-end ---\n?/g,"\n"),i=b.filter(a=>!1!==a.enabled&&Y(a.id));if(!i.length)return!c.dryRun&&(0,h.existsSync)(a)&&await (0,y.R)(a,f.trimEnd()+"\n"),{ok:!0,path:a,written:[],removed:c.previouslyManaged||[],dryRun:!!c.dryRun};let j=new Set(c.previouslyManaged||[]),k=[],l=[];for(let a of i){let b=RegExp(`\\[mcp_servers\\.${ao(a.id)}\\]`,"m").test(f);if(b&&!j.has(a.id)&&c.neverOverwriteUser){k.push({key:a.id,reason:"user_owned_toml_section"});continue}b&&j.has(a.id)&&(f=f.replace(RegExp(`\\n?\\[mcp_servers\\.${ao(a.id)}\\][\\s\\S]*?(?=\\n\\[|\\n*$)`,"g"),"\n")),l.push(a)}let m=["","# --- switchboard-agent-library-mcp-start ---","# Managed by Switchboard Agent Library. Do not edit this block by hand."];for(let a of l){var n,o,p;let b=al(a,"codex"),c=(n=a.id,/^[A-Za-z_][A-Za-z0-9_-]*$/.test(n)&&!n.includes(".")?n:ap(n));if(m.push(`[mcp_servers.${c}]`),b.command){if(m.push(`command = ${ap(b.command)}`),b.args?.length&&m.push(`args = ${(o=b.args,`[${o.map(a=>ap(a)).join(", ")}]`)}`),b.env&&Object.keys(b.env).length)for(let[a,d]of(m.push(`[mcp_servers.${c}.env]`),Object.entries(b.env)))m.push(`${a} = ${ap(ai(d))}`)}else if(b.url&&(m.push(`url = ${ap(b.url)}`),b.http_headers&&Object.keys(b.http_headers).length))for(let[a,d]of(m.push(`[mcp_servers.${c}.http_headers]`),Object.entries(b.http_headers))){m.push(`${(p=a,/^[A-Za-z_][A-Za-z0-9_]*$/.test(p)?p:ap(p))} = ${ap(ai(d))}`)}m.push("")}m.push("# --- switchboard-agent-library-mcp-end ---","");let q=(f.trimEnd()+"\n"+m.join("\n")).replace(/\n{3,}/g,"\n\n");return c.dryRun||(await e().mkdir(g().dirname(a),{recursive:!0}),await (0,y.R)(a,q)),{ok:!0,path:a,written:l.map(a=>a.id),removed:[],skipped:k,dryRun:!!c.dryRun}}function ao(a){return String(a).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ap(a){return JSON.stringify(String(a))}async function aq(a,b){let c=await X(a,!0,{libraryRoot:b});return c.ok?(await ae(a),await W(a),{ok:!0,reason:c.reason}):c}async function ar(a,b,c,d,f,h,i){for(let j of function(a,b={}){if("codex"!==a)return[];let c="project"===b.scope&&b.projectPath?g().resolve(b.projectPath):null;return[c?g().join(c,".codex","skills"):g().join(k().homedir(),".codex","skills")]}(a,d))if(j!==b)for(let b of c){let c=g().join(j,b);try{await e().lstat(c)}catch{continue}if(h){(await X(c,!0,{libraryRoot:f})).ok&&i.push({agent:a,skillId:b,dest:c,action:"would_remove_legacy"});continue}let d=await aq(c,f);i.push({agent:a,skillId:b,dest:c,action:d.ok?"removed_legacy":"skipped_legacy_conflict",...d.ok?{}:{reason:d.reason,message:d.message}})}}async function as(a,b={}){if(b.dryRun)return at(a,b);try{return await C(()=>at(a,b))}catch(a){if(a?.code==="lock_timeout")return{ok:!1,error:"lock_timeout",message:a.message};throw a}}async function at(a,b={}){let c=a||D();try{G(c)}catch(a){return{ok:!1,error:a?.code||"settings_invalid",message:a?.message||"Invalid settings"}}let d=H(c);x(d),c.includeProductSkills&&await Q(d);let f=await P(d),i=await _(d),j=await L(d),k={scope:c.scope,projectPath:c.projectPath},l=[],m=[],o=!b.mcpOnly,q=!b.skillsOnly;if(o)for(let[a,i]of Object.entries(n)){if(!i.supportsSkills)continue;if(c.targets[a]?.skills===!1){l.push({agent:a,action:"skipped_disabled"});continue}let m=v(a,k);if(!m)continue;for(let i of(b.dryRun||await e().mkdir(m,{recursive:!0}),f)){let e=u(i.id);if(!e)continue;let f=g().join(m,e),k=function(a,b){let c=t(b);return g().join(p(a),c)}(d,i.id);if(!(0,h.existsSync)(g().join(k,"SKILL.md"))){l.push({agent:a,skillId:i.id,action:"missing_source"});continue}let n=await X(f,c.neverOverwriteUser,{libraryRoot:d});if(!n.ok){l.push({agent:a,skillId:i.id,dest:f,action:"conflict",reason:n.reason,message:n.message});continue}if(b.dryRun){l.push({agent:a,skillId:i.id,dest:f,action:"would_sync",linkMode:c.linkMode});continue}try{let b=await ag(k,f,c.linkMode,d,{neverOverwriteUser:c.neverOverwriteUser});await V(f,{skillId:i.id,libraryPath:k,linkMode:b.mode}),l.push({agent:a,skillId:i.id,dest:f,action:"synced",...b}),j.managedSkills||(j.managedSkills={}),j.managedSkills[a]||(j.managedSkills[a]=[]),j.managedSkills[a].includes(e)||j.managedSkills[a].push(e)}catch(b){b?.code==="conflict"?l.push({agent:a,skillId:i.id,dest:f,action:"conflict",reason:b.reason||"conflict",message:b.message}):l.push({agent:a,skillId:i.id,dest:f,action:"error",error:b?.message||String(b)})}}let n=[...new Set([...j.managedSkills?.[a]||[],...f.map(a=>u(a.id)).filter(Boolean)])];await ar(a,m,n,k,d,!!b.dryRun,l);let o=[...j.managedSkills?.[a]||[]],q=new Set(f.map(a=>u(a.id))),r=[];for(let c of o){if(q.has(c)){r.push(c);continue}let e=g().join(m,c);if(b.dryRun){if(!(await X(e,!0,{libraryRoot:d})).ok){r.push(c);continue}l.push({agent:a,skillId:c,dest:e,action:"would_remove"});continue}if(!(await aq(e,d)).ok){r.push(c);continue}l.push({agent:a,skillId:c,dest:e,action:"removed_stale"})}j.managedSkills&&(j.managedSkills[a]=r)}if(q)for(let[a,d]of Object.entries(n)){if(!d.supportsMcp)continue;if(c.targets[a]?.mcp===!1){m.push({agent:a,action:"skipped_disabled"});continue}let e=w(a,k);if(!e)continue;let f=j.managedMcpKeys?.[a]||[];try{let d;d="toml"===e.format?await an(e.path,i,{neverOverwriteUser:c.neverOverwriteUser,dryRun:b.dryRun,previouslyManaged:f}):await am(e.path,i,{kind:e.kind,neverOverwriteUser:c.neverOverwriteUser,dryRun:b.dryRun,previouslyManaged:f}),m.push({agent:a,...d}),d.ok&&!b.dryRun&&(j.managedMcpKeys||(j.managedMcpKeys={}),j.managedMcpKeys[a]=[...d.written||[]])}catch(b){m.push({agent:a,ok:!1,error:b?.message||String(b),path:e.path})}}b.dryRun||(j.lastSync={at:new Date().toISOString(),skillCount:f.length,mcpCount:i.length,linkMode:c.linkMode,scope:c.scope},await M(d,j));let r=l.filter(a=>"conflict"===a.action);return{ok:!0,dryRun:!!b.dryRun,libraryRoot:d,settings:{linkMode:c.linkMode,scope:c.scope,neverOverwriteUser:c.neverOverwriteUser},skills:l,mcp:m,conflictCount:r.length,summary:{skillsSynced:l.filter(a=>"synced"===a.action||"would_sync"===a.action).length,skillsConflicts:r.length,mcpOk:m.filter(a=>a.ok).length,mcpFailed:m.filter(a=>!1===a.ok).length}}}async function au(a){try{return await C(()=>av(a))}catch(a){if(a?.code==="lock_timeout")return{ok:!1,error:"lock_timeout",message:a.message};throw a}}async function av(a){let b=a||await J();try{G({...b,enabled:!0})}catch(a){if(a?.code==="project_path_missing"||a?.code==="project_path_invalid")return{ok:!1,error:a.code,message:a.message}}let c=H(b),d=await L(c),e={scope:b.scope,projectPath:b.projectPath},f=[];for(let[a,h]of Object.entries(n)){if(h.supportsSkills&&b.targets[a]?.skills!==!1){let b=v(a,e),h=d.managedSkills?.[a]||[];if(b){for(let d of h){let e=g().join(b,d),h=await aq(e,c);h.ok?f.push({agent:a,type:"skill",dest:e,action:"removed"}):f.push({agent:a,type:"skill",dest:e,action:"skipped_conflict",reason:h.reason,message:h.message})}await ar(a,b,h,e,c,!1,f),d.managedSkills&&(d.managedSkills[a]=[])}}if(h.supportsMcp&&b.targets[a]?.mcp!==!1){let b=w(a,e),c=d.managedMcpKeys?.[a]||[];b&&("toml"===b.format?await an(b.path,[],{neverOverwriteUser:!0,previouslyManaged:c}):await am(b.path,[],{kind:b.kind,neverOverwriteUser:!0,previouslyManaged:c}),f.push({agent:a,type:"mcp",path:b.path,action:"cleared_managed"})),d.managedMcpKeys&&(d.managedMcpKeys[a]=[])}}return d.lastSync={at:new Date().toISOString(),cleaned:!0},await M(c,d),{ok:!0,results:f}}async function aw(a){let b=a||D(),c=H(b);x(c);let d=await P(c),e=await _(c),f={scope:b.scope,projectPath:b.projectPath},i=[],j=[];for(let[a,k]of(j.push({id:"library",ok:!0,message:`Library at ${c} (${d.length} skills, ${e.length} MCP servers)`}),"project"!==b.scope||b.projectPath||i.push({severity:"error",code:"project_path_missing",message:"Project scope selected but no project path set"}),Object.entries(n))){if(b.targets[a]?.skills!==!1&&k.supportsSkills){let b=v(a,f);for(let e of d){let d=u(e.id);if(!b)continue;let f=g().join(b,d),l=function(a){try{let b;try{b=(0,h.lstatSync)(a)}catch{return{exists:!1}}if(b.isSymbolicLink()){let b=null,c=!1;try{b=(0,h.readlinkSync)(a);try{(0,h.realpathSync)(a)}catch{c=!0}}catch{c=!0}return{exists:!0,type:"symlink",target:b,broken:c}}if(b.isDirectory())return{exists:!0,type:"directory"};return{exists:!0,type:"other"}}catch(a){return{exists:!1,error:a?.message}}}(f);l.exists?l.broken?i.push({severity:"error",code:"skill_broken_symlink",agent:a,skillId:e.id,path:f,message:`${k.label}: ${d} is a broken symlink — re-Apply`}):(await X(f,!0,{libraryRoot:c})).ok?j.push({id:`skill:${a}:${e.id}`,ok:!0,message:`${k.label} ← ${d} (${l.type})`}):i.push({severity:"error",code:"skill_conflict",agent:a,skillId:e.id,path:f,message:`${k.label}: ${d} exists but is not Switchboard-managed`}):i.push({severity:"warn",code:"skill_not_synced",agent:a,skillId:e.id,message:`${k.label}: ${d} not present — run Apply`})}}if(b.targets[a]?.mcp!==!1&&k.supportsMcp){let b=w(a,f);if(b){let c=(0,h.existsSync)(b.path);j.push({id:`mcp-file:${a}`,ok:!0,message:`${k.label} MCP config ${c?"found":"will be created"}: ${b.path}`})}}}for(let a of e)if(a.env)for(let[b,c]of Object.entries(a.env))"string"==typeof c&&c.length>12&&!c.includes("${")&&/^(sk-|ghp_|xox|AKIA|key-)/i.test(c)&&i.push({severity:"warn",code:"possible_secret_in_library",mcpId:a.id,envKey:b,message:`MCP ${a.id} env.${b} looks like a raw secret — prefer \${ENV_VAR} references`});let k={ok:0===i.filter(a=>"error"===a.severity).length,at:new Date().toISOString(),libraryRoot:c,linkMode:b.linkMode,platform:process.platform,checks:j,issues:i};try{await C(async()=>{let a=await L(c);a.lastDoctor=k,await M(c,a)})}catch(a){if(a?.code!=="lock_timeout")throw a;k.statePersistSkipped=!0}return k}var ax=c(71553),ay=c.n(ax),az=c(77030),aA=c.n(az),aB=c(77598),aC=c.n(aB);function aD(a){return aC().createHash("sha256").update(a,"utf-8").digest("hex")}let aE=[{id:"anthropic-frontend-design",name:"frontend-design (Anthropic)",description:"Production UI aesthetics — anti AI-slop",skillId:"frontend-design",rawUrl:"https://raw.githubusercontent.com/anthropics/skills/main/skills/frontend-design/SKILL.md",trusted:!0},{id:"anthropic-skill-creator",name:"skill-creator (Anthropic)",description:"Meta-skill to author new Agent Skills",skillId:"skill-creator",rawUrl:"https://raw.githubusercontent.com/anthropics/skills/main/skills/skill-creator/SKILL.md",trusted:!0},{id:"anthropic-webapp-testing",name:"webapp-testing (Anthropic)",description:"Playwright testing for local web apps",skillId:"webapp-testing",rawUrl:"https://raw.githubusercontent.com/anthropics/skills/main/skills/webapp-testing/SKILL.md",trusted:!0}],aF=["githubusercontent.com","github.com","raw.githubusercontent.com","gitlab.com","bitbucket.org","jsdelivr.net","cdn.jsdelivr.net"];async function aG(a){let b;try{b=new URL(a)}catch{return{ok:!1,error:"invalid_url",message:"Invalid URL"}}if("https:"!==b.protocol)return{ok:!1,error:"https_required",message:"Catalog URLs must use https://"};if(b.username||b.password)return{ok:!1,error:"credentials_forbidden",message:"URLs with embedded credentials are not allowed"};let c=b.hostname.toLowerCase();if("localhost"===c||c.endsWith(".local")||c.endsWith(".internal"))return{ok:!1,error:"private_host",message:"Local/private hosts are not allowed"};if(!aF.some(a=>c===a||c.endsWith(`.${a}`)))return{ok:!1,error:"host_not_allowlisted",message:`Host not allowlisted. Allowed: ${aF.join(", ")}`};try{for(let a of(await ay().lookup(c,{all:!0})))if(function(a){if(aA().isIPv4(a)){let b=a.split(".").map(Number);return 10===b[0]||127===b[0]||0===b[0]||169===b[0]&&254===b[1]||172===b[0]&&!!(b[1]>=16)&&!!(b[1]<=31)||192===b[0]&&168===b[1]}if(aA().isIPv6(a)){let b=a.toLowerCase();return!!("::1"===b||b.startsWith("fc")||b.startsWith("fd")||b.startsWith("fe80"))}return!0}(a.address))return{ok:!1,error:"private_ip",message:`Host resolves to private IP (${a.address})`}}catch(a){return{ok:!1,error:"dns_failed",message:a?.message||"DNS lookup failed"}}return{ok:!0,url:b}}async function aH(a,b={}){let c,d=await aG(a);if(!d.ok)return d;let e={Accept:"text/plain, text/markdown, */*"};b.etag&&(e["If-None-Match"]=b.etag);try{c=await fetch(d.url.toString(),{headers:e,signal:AbortSignal.timeout(b.timeoutMs??3e4),redirect:"error"})}catch(a){return{ok:!1,error:"fetch_failed",message:a?.message||"Failed to fetch skill"}}if(304===c.status)return{ok:!0,notModified:!0};if(!c.ok)return{ok:!1,error:"http_error",message:`HTTP ${c.status} fetching skill`};if(Number(c.headers.get("content-length")||0)>524288)return{ok:!1,error:"too_large",message:"Skill exceeds 524288 byte limit"};let f=await c.text();return f.length>524288?{ok:!1,error:"too_large",message:"Skill exceeds 524288 byte limit"}:!f||f.length<20?{ok:!1,error:"empty",message:"Remote skill content empty"}:/^---[\s\S]*?name:\s*/m.test(f)||/^#\s+/m.test(f)?/<html[\s>]/i.test(f)&&!f.includes("name:")?{ok:!1,error:"not_markdown",message:"URL returned HTML, not a skill markdown file"}:{ok:!0,markdown:f,etag:c.headers.get("etag")}:{ok:!1,error:"invalid_skill",message:"Content does not look like a SKILL.md"}}async function aI(a,b){if(b.requireConfirm&&!0!==b.confirmed)return{ok:!1,error:"confirmation_required",message:"Catalog installs require explicit confirmation. Remote content can instruct agents to run shell commands — review the markdown first."};let c=t(b.skillId);if(!c)return{ok:!1,error:"invalid_id",message:"Invalid skill id"};let d=await aH(b.url);if(!d.ok)return d;if(d.notModified||!("markdown"in d))return{ok:!1,error:"fetch_failed",message:"Unexpected empty response"};let{markdown:e,etag:f}=d;return{ok:!0,...await R(a,{id:c,markdown:e,source:`url:${b.url}`,contentHash:aD(e),etag:f||null}),warning:"Skill markdown stored in the library only. It is not active on agents until you click Apply Sync. Review SKILL.md for any shell/network instructions before enabling."}}async function aJ(a){let b=await aG(a);if(!b.ok)return b;try{let a=await fetch(b.url.toString(),{headers:{Accept:"text/plain, text/markdown, */*"},signal:AbortSignal.timeout(3e4),redirect:"error"});if(!a.ok)return{ok:!1,error:`HTTP ${a.status}`};let c=await a.text();return{ok:!0,preview:c.slice(0,4e3),truncated:c.length>4e3,bytes:c.length}}catch(a){return{ok:!1,error:a?.message||"fetch failed"}}}function aK(a,b){return g().join(p(a),b)}async function aL(a,b){try{let c=await e().readFile(g().join(aK(a,b),".source.json"),"utf-8"),d=JSON.parse(c);return d&&"object"==typeof d?d:null}catch{return null}}async function aM(a,b,c){await e().writeFile(g().join(aK(a,b),".source.json"),JSON.stringify(c,null,2),"utf-8")}function aN(a){let b="string"==typeof a?.source?a.source:"";return b.startsWith("url:")?b.slice(4):null}async function aO(a,b,c){return"string"==typeof c?.contentHash&&c.contentHash?c.contentHash:aD(await e().readFile(g().join(aK(a,b),"SKILL.md"),"utf-8"))}async function aP(a){let b=[];try{b=await e().readdir(p(a))}catch{return{results:[],skipped:0}}let c=[];for(let d of b){let b=await aL(a,d),e=aN(b);e&&b&&c.push({id:d,url:e,meta:b})}let d=c.slice(0,20),f=c.length-d.length;return{results:await Promise.all(d.map(async({id:b,url:c,meta:d})=>{try{let e=await aO(a,b,d),f=await aH(c,{timeoutMs:1e4,etag:"string"==typeof d.etag?d.etag:null});if(!f.ok)return{id:b,status:"error",message:f.message};let g=new Date().toISOString();if(f.notModified)return await aM(a,b,{...d,contentHash:e,lastChecked:g}),{id:b,status:"fresh"};let h=aD(f.markdown);return await aM(a,b,{...d,contentHash:e,etag:f.etag||d.etag||null,lastChecked:g}),{id:b,status:h===e?"fresh":"update"}}catch(a){return{id:b,status:"error",message:a?.message||"check failed"}}})),skipped:f}}async function aQ(a,b){let c=t(b);if(!c)return{ok:!1,error:"invalid_id",message:"Invalid skill id"};let d=aN(await aL(a,c));if(!d)return{ok:!1,error:"not_url_source",message:"Skill was not installed from a URL"};let e=await aH(d);return e.ok?!e.notModified&&"markdown"in e?{ok:!0,markdown:e.markdown,contentHash:aD(e.markdown)}:{ok:!1,error:"fetch_failed",message:"Unexpected empty response"}:e}async function aR(a,b,c){if(c?.confirmed!==!0)return{ok:!1,error:"confirmation_required",message:"Updates require explicit confirmation. Remote content can instruct agents to run shell commands — review the markdown first."};if("string"!=typeof c.expectedHash||!/^[a-f0-9]{64}$/.test(c.expectedHash))return{ok:!1,error:"expected_hash_required",message:"Preview first — expectedHash missing"};let d=t(b);if(!d)return{ok:!1,error:"invalid_id",message:"Invalid skill id"};let e=aN(await aL(a,d));if(!e)return{ok:!1,error:"not_url_source",message:"Skill was not installed from a URL"};let f=await aH(e);if(!f.ok)return f;if(f.notModified||!("markdown"in f))return{ok:!1,error:"fetch_failed",message:"Unexpected empty response"};let g=aD(f.markdown);return g!==c.expectedHash?{ok:!1,error:"content_changed",message:"Upstream content changed since preview — preview again before updating."}:{ok:!0,...await R(a,{id:d,markdown:f.markdown,source:`url:${e}`,contentHash:g,etag:f.etag||null}),warning:"Skill updated in the library only. Run Apply Sync to push the new version to agents."}}async function aS(a,b){let c=g().resolve(b),d=g().join(c,"skills");await e().mkdir(d,{recursive:!0});let f=await P(a);for(let b of(await e().writeFile(g().join(c,".switchboard-export.json"),JSON.stringify({managedBy:"switchboard",at:new Date().toISOString()},null,2),"utf-8"),f)){let c=g().join(p(a),b.id),f=b.id.startsWith("sb-")?b.id:`sb-${b.id}`,i=g().join(d,f);if((0,h.existsSync)(i)){let a=g().join(i,".switchboard-managed.json");if(!(0,h.existsSync)(a))continue;await e().rm(i,{recursive:!0,force:!0})}await ad(c,i,a),await e().writeFile(g().join(i,".switchboard-managed.json"),JSON.stringify({managedBy:"switchboard",skillId:b.id},null,2),"utf-8")}let i=await _(a),j=["# Generated by Switchboard Agent Library — import-friendly AgentSync layout","# Run: agentsync apply (optional; Switchboard can also Apply directly)","",'source_dir = "."','default_agents = ["claude", "codex", "gemini", "cursor", "opencode"]',"","[gitignore]","enabled = true",'marker = "Switchboard / AI Agent Symlinks"',"","[mcp]","enabled = true",'merge_strategy = "merge"',""];for(let a of i.filter(a=>!1!==a.enabled)){let b=a.id.replace(/^sb-/,"");j.push(`[mcp_servers.${b}]`),a.command&&(j.push(`command = ${JSON.stringify(a.command)}`),a.args?.length&&j.push(`args = [${a.args.map(a=>JSON.stringify(a)).join(", ")}]`)),a.url&&j.push(`url = ${JSON.stringify(a.url)}`),j.push("")}return await e().writeFile(g().join(c,"agentsync.toml"),j.join("\n"),"utf-8"),await e().writeFile(g().join(c,"mcp.switchboard.json"),JSON.stringify({servers:i},null,2),"utf-8"),await e().writeFile(g().join(c,"README.switchboard.md"),`# Switchboard Agent Library export
1
+ exports.id=5920,exports.ids=[5920],exports.modules={6979:(a,b,c)=>{"use strict";c.d(b,{F:()=>f,J:()=>e});var d=c(23211);function e(a,b="Unexpected error"){return a instanceof Error&&a.message?a.message:"string"==typeof a&&a?a:b}function f(a,b){return d.NextResponse.json({error:e(b)},{status:a})}},49120:(a,b,c)=>{"use strict";c.d(b,{nJ:()=>p,ok:()=>o});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="switchboard";function k(a){if("win32"===process.platform){let b=process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming");return g().join(b,a)}return g().join(i().homedir(),`.${a}`)}let l=["db/data.sqlite","machine-id","jwt-secret","auth","db.json"];function m(a){return l.some(b=>e().existsSync(g().join(a,b)))}function n(){let a=k(j);if(m(a))return a;let b=k("9router");return m(b)?(console.warn(`[DATA_DIR] using legacy data directory '${b}' (set DATA_DIR='${a}' to switch)`),b):a}function o(){let a=process.env.DATA_DIR;if(!a)return n();if("win32"===process.platform&&/^\//.test(a))return console.warn(`[DATA_DIR] '${a}' is a Unix path on Windows → fallback to default`),n();try{return e().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${j}`),n();throw b}}let p=o()},57781:(a,b,c)=>{"use strict";c.d(b,{R:()=>h});var d=c(51455),e=c.n(d),f=c(76760),g=c.n(f);async function h(a,b,c="utf-8"){let d=g().dirname(a);await e().mkdir(d,{recursive:!0});let f=g().join(d,`.${g().basename(a)}.sb-tmp-${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);try{await e().writeFile(f,b,c);try{let a=await e().open(f,"r+");try{await a.sync()}finally{await a.close()}}catch{}await e().rename(f,a)}catch(a){try{await e().unlink(f)}catch{}throw a}}},78335:()=>{},79754:(a,b,c)=>{"use strict";c.d(b,{vy:()=>aE,M1:()=>as,S7:()=>aP,nV:()=>au,il:()=>Q,Z:()=>aS,K6:()=>aT,bZ:()=>aI,o1:()=>R,CN:()=>$,ef:()=>P,n7:()=>_,M5:()=>J,FK:()=>aQ,e6:()=>aJ,BM:()=>S,Ss:()=>ac,eB:()=>H,j1:()=>aw,DZ:()=>K,C0:()=>aR,te:()=>ab});var d=c(51455),e=c.n(d),f=c(76760),g=c.n(f),h=c(73024),i=c.n(h),j=c(48161),k=c.n(j),l=c(49120);let m=".switchboard-managed.json",n={claude:{id:"claude",label:"Claude Code",supportsSkills:!0,supportsMcp:!0},codex:{id:"codex",label:"Codex CLI",supportsSkills:!0,supportsMcp:!0},opencode:{id:"opencode",label:"OpenCode",supportsSkills:!0,supportsMcp:!0},gemini:{id:"gemini",label:"Gemini CLI",supportsSkills:!0,supportsMcp:!0},cursor:{id:"cursor",label:"Cursor",supportsSkills:!0,supportsMcp:!0}};function o(a={}){if("project"===a.scope&&a.projectPath){let b=g().resolve(a.projectPath);return g().join(b,".switchboard","agent-library")}return g().join(l.nJ,"agent-library")}function p(a){return g().join(a,"skills")}function q(a){return g().join(a,"mcp","servers.json")}function r(a){return g().join(a,"settings.json")}function s(a){return g().join(a,"state.json")}function t(a){let b=String(a||"").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80);return!b||"."===b||".."===b||b.includes("..")||!/[a-zA-Z0-9]/.test(b)?"":b}function u(a){let b=t(a);return b?b.startsWith("sb-")?b:`sb-${b}`:null}function v(a,b={}){let c=k().homedir(),d="project"===b.scope&&b.projectPath?g().resolve(b.projectPath):null;switch(a){case"claude":return d?g().join(d,".claude","skills"):g().join(c,".claude","skills");case"codex":return d?g().join(d,".agents","skills"):g().join(c,".agents","skills");case"opencode":return d?g().join(d,".opencode","skills"):g().join(c,".config","opencode","skills");case"gemini":return d?g().join(d,".gemini","skills"):g().join(c,".gemini","skills");case"cursor":return d?g().join(d,".cursor","skills"):g().join(c,".cursor","skills");default:return null}}function w(a,b={}){let c=k().homedir(),d="project"===b.scope&&b.projectPath?g().resolve(b.projectPath):null;switch(a){case"claude":if(d)return{path:g().join(d,".mcp.json"),format:"json",kind:"claude-project-mcp"};return{path:g().join(c,".claude.json"),format:"json",kind:"claude-user"};case"codex":return{path:d?g().join(d,".codex","config.toml"):g().join(c,".codex","config.toml"),format:"toml",kind:"codex"};case"opencode":return{path:d?g().join(d,"opencode.json"):g().join(c,".config","opencode","opencode.json"),format:"json",kind:"opencode"};case"gemini":return{path:d?g().join(d,".gemini","settings.json"):g().join(c,".gemini","settings.json"),format:"json",kind:"gemini"};case"cursor":return{path:d?g().join(d,".cursor","mcp.json"):g().join(c,".cursor","mcp.json"),format:"json",kind:"cursor"};default:return null}}function x(a){for(let b of[a,p(a),g().join(a,"mcp")])i().existsSync(b)||i().mkdirSync(b,{recursive:!0})}var y=c(57781);let z=Promise.resolve();function A(a){(0,h.mkdirSync)(g().dirname(a),{recursive:!0});let b=JSON.stringify({pid:process.pid,at:new Date().toISOString(),ts:Date.now()});try{let c=(0,h.openSync)(a,"wx");try{(0,h.writeFileSync)(c,b,"utf-8")}finally{(0,h.closeSync)(c)}return!0}catch(a){if(a?.code!=="EEXIST")throw a;return!1}}async function B(){let a,b=(a=o({scope:"global",projectPath:null}),g().join(a,".apply.lock")),c=Date.now()+3e4;for(;Date.now()<c;){if(A(b)||function(a){try{let b,c=(0,h.readFileSync)(a,"utf-8");try{b=JSON.parse(c)}catch{b={pid:parseInt(String(c).trim(),10),ts:0}}let d=Number(b.pid),e=Number(b.ts)||0,f=e>0&&Date.now()-e>3e5,g=!function(a){if(!a||!Number.isFinite(a)||a<=0)return!1;try{return process.kill(a,0),!0}catch{return!1}}(d);if(f||g){try{(0,h.unlinkSync)(a)}catch{}return A(a)}}catch{try{(0,h.unlinkSync)(a)}catch{}return A(a)}return!1}(b))return()=>{try{if(!(0,h.existsSync)(b))return;let a=(0,h.readFileSync)(b,"utf-8");try{JSON.parse(a).pid===process.pid&&(0,h.unlinkSync)(b)}catch{String(a).trim()===String(process.pid)&&(0,h.unlinkSync)(b)}}catch{}};await new Promise(a=>setTimeout(a,50))}let d=Error("Agent Library apply/clean is already running (lock timeout). Retry shortly.");throw d.code="lock_timeout",d}function C(a){let b,c,d=new Promise((a,d)=>{b=a,c=d});return z=z.then(async()=>{let d=await B();try{let c=await a();b(c)}catch(a){c(a)}finally{d()}}).catch(()=>{}),d}function D(){let a={};for(let b of Object.keys(n))a[b]={skills:!0,mcp:!0};return{enabled:!0,scope:"global",projectPath:null,linkMode:"win32"===process.platform?"copy":"symlink",neverOverwriteUser:!0,includeProductSkills:!0,requireCatalogConfirm:!0,targets:a}}function E(a,b){let c=a||{skills:!0,mcp:!0};return b&&"object"==typeof b?{skills:"boolean"==typeof b.skills?b.skills:!1!==c.skills,mcp:"boolean"==typeof b.mcp?b.mcp:!1!==c.mcp}:{...c}}function F(a={}){let b=D(),c={};for(let a of Object.keys(n))c[a]={...b.targets[a]||{skills:!0,mcp:!0}};if(a.targets&&"object"==typeof a.targets)for(let b of Object.keys(n)){let d=a.targets[b];d&&"object"==typeof d&&(c[b]=E(c[b],d))}let d="copy"===a.linkMode||"symlink"===a.linkMode?a.linkMode:b.linkMode,e="project"===a.scope?"project":"global",f=null;return"project"===e&&a.projectPath&&(f=String(a.projectPath).trim()||null),{enabled:!1!==a.enabled,scope:e,projectPath:f,linkMode:d,neverOverwriteUser:!1!==a.neverOverwriteUser,includeProductSkills:!1!==a.includeProductSkills,requireCatalogConfirm:!1!==a.requireCatalogConfirm,targets:c}}function G(a){if(!a.enabled){let a=Error("Agent Library sync is turned off in settings");throw a.code="disabled",a}if("project"===a.scope){let b,c=a.projectPath?String(a.projectPath).trim():"";if(!c){let a=Error("Project scope requires an absolute project path — set it before Apply");throw a.code="project_path_missing",a}if(!g().isAbsolute(c)){let a=Error("Project path must be absolute (e.g. /Users/you/my-app)");throw a.code="project_path_invalid",a}let d=g().resolve(c);if(!(0,h.existsSync)(d)){let a=Error(`Project path does not exist: ${d}`);throw a.code="project_path_missing",a}try{b=(0,h.statSync)(d)}catch{let a=Error(`Cannot access project path: ${d}`);throw a.code="project_path_invalid",a}if(!b.isDirectory()){let a=Error(`Project path is not a directory: ${d}`);throw a.code="project_path_invalid",a}}}function H(a){let b=a||D();return o({scope:b.scope,projectPath:b.projectPath})}function I(){return o({scope:"global",projectPath:null})}async function J(a){let b=I();x(b);let c=r(b),d=D();if((0,h.existsSync)(c))try{let a=await e().readFile(c,"utf-8");d=F(JSON.parse(a))}catch{d=D()}return x(H(d)),d}async function K(a,b){let c=I();x(c);let d=await J(c),e={...d.targets};if(b.targets&&"object"==typeof b.targets)for(let[a,c]of Object.entries(b.targets))n[a]&&(e[a]=E(d.targets[a],c));let f=F({...d,...b,targets:e});if(!1===b.neverOverwriteUser&&!0!==b.confirmAllowOverwrite&&(f.neverOverwriteUser=!0),!0===b.confirmAllowOverwrite&&!1===b.neverOverwriteUser&&(f.neverOverwriteUser=!1),"project"===f.scope)try{G({...f,enabled:!0})}catch(a){if(a?.code!=="project_path_missing"||b.projectPath){if(a?.code!=="disabled")throw a}else f.projectPath=null}return await (0,y.R)(r(c),JSON.stringify(f,null,2)),x(H(f)),f}async function L(a){let b=a||H(await J());x(b);let c=s(b);if(!(0,h.existsSync)(c))return{managedSkills:{},managedMcpKeys:{},lastSync:null,lastDoctor:null};try{return JSON.parse(await e().readFile(c,"utf-8"))}catch{return{managedSkills:{},managedMcpKeys:{},lastSync:null,lastDoctor:null}}}async function M(a,b){x(a),await (0,y.R)(s(a),JSON.stringify(b,null,2))}var N=c(82922);let O=[{id:"switchboard",name:"Switchboard (Entry)",description:"Setup, model discovery, combos & Auto routing. Start here — one /v1 endpoint, multi-provider gateway.",endpoint:"/v1",icon:"hub",isEntry:!0},{id:"switchboard-chat",name:"Chat",description:"Chat / code-gen via OpenAI, Anthropic, or Responses formats — streaming, tools, combo as model.",endpoint:"/v1/chat/completions",icon:"chat"}];async function P(a){x(a);let b=p(a),c=[];try{c=await e().readdir(b)}catch{return[]}let d=[];for(let a of c){let c=g().join(b,a,"SKILL.md");if(!(0,h.existsSync)(c))continue;let f="",i=a;try{let a=await e().readFile(c,"utf-8"),b=a.match(/^name:\s*(.+)$/m),d=a.match(/^description:\s*(.+)$/m);b&&(i=b[1].trim().replace(/^["']|["']$/g,"")),d&&(f=d[1].trim().replace(/^["']|["']$/g,""))}catch{}let j=await e().stat(c);d.push({id:a,title:i,description:f,path:g().join(b,a),source:"library",updatedAt:j.mtime.toISOString()})}return d.sort((a,b)=>a.id.localeCompare(b.id))}async function Q(a,b={}){x(a);let c=(0,N.XP)(),d=[];if(!c)return{ok:!1,results:d,error:"Product skills directory not found"};for(let c of O){let f=t(c.id),i=g().join(p(a),f),j=g().join(i,"SKILL.md");if((0,h.existsSync)(j)&&!b.force){d.push({id:f,action:"skipped_exists"});continue}let k=await (0,N.dr)(c.id);if(!k){d.push({id:f,action:"missing_source"});continue}await e().mkdir(i,{recursive:!0}),await e().writeFile(j,k,"utf-8"),d.push({id:f,action:"installed"})}return{ok:!0,results:d}}async function R(a,b){x(a);let c=t(b.id);if(!c)throw Error("Invalid skill id");let d=g().join(p(a),c);return await e().mkdir(d,{recursive:!0}),await e().writeFile(g().join(d,"SKILL.md"),b.markdown,"utf-8"),await e().writeFile(g().join(d,".source.json"),JSON.stringify({source:b.source||"manual",installedAt:new Date().toISOString(),...b.contentHash?{contentHash:b.contentHash}:{},...b.etag?{etag:b.etag}:{}},null,2),"utf-8"),{id:c,path:d}}async function S(a,b){let c=t(b);if(!c)throw Error("Invalid skill id");let d=g().resolve(p(a)),f=g().resolve(d,c);if(g().dirname(f)!==d)throw Error("Invalid skill path");return(0,h.existsSync)(f)?(await e().rm(f,{recursive:!0,force:!0}),{removed:!0,id:c}):{removed:!1}}function T(a){return g().join(g().dirname(a),`.sb-managed-${g().basename(a)}.json`)}async function U(a){let b=T(a);if((0,h.existsSync)(b))try{if((0,h.lstatSync)(b).isFile())return JSON.parse(await e().readFile(b,"utf-8"))}catch{}try{if(!(0,h.existsSync)(a))return null;let b=(0,h.lstatSync)(a);if(b.isSymbolicLink()||!b.isDirectory())return null;let c=g().join(a,m);if(!(0,h.existsSync)(c)||!(0,h.lstatSync)(c).isFile())return null;return JSON.parse(await e().readFile(c,"utf-8"))}catch{return null}}async function V(a,b){let c=JSON.stringify({managedBy:"switchboard",namespace:"sb",skillId:b.skillId,libraryPath:b.libraryPath,linkMode:b.linkMode,updatedAt:new Date().toISOString()},null,2),d=T(a);if(await e().mkdir(g().dirname(d),{recursive:!0}),await (0,y.R)(d,c),"copy"===b.linkMode)try{let b=(0,h.lstatSync)(a);b.isDirectory()&&!b.isSymbolicLink()&&await (0,y.R)(g().join(a,m),c)}catch{}}async function W(a){try{let b=T(a),c=(0,h.lstatSync)(b);c.isFile()&&!c.isSymbolicLink()&&await e().unlink(b)}catch{}try{let b=(0,h.lstatSync)(a);if(!b.isDirectory()||b.isSymbolicLink())return;let c=g().join(a,m),d=(0,h.lstatSync)(c);d.isFile()&&!d.isSymbolicLink()&&await e().unlink(c)}catch{}}async function X(a,b,c={}){let d=null;try{d=(0,h.lstatSync)(a)}catch{let b=await U(a);if(b?.managedBy==="switchboard")return{ok:!0,reason:"managed_sidecar_orphan",marker:b};return{ok:!0,reason:"missing"}}let e=await U(a);if(e?.managedBy==="switchboard")return{ok:!0,reason:"managed",marker:e};if(d.isSymbolicLink()&&c.libraryRoot)try{let b=(0,h.realpathSync)(a),d=g().resolve(c.libraryRoot),e=g().relative(d,b);if(e&&!e.startsWith("..")&&!g().isAbsolute(e))return{ok:!0,reason:"symlink_into_library"}}catch{return{ok:!0,reason:"broken_symlink"}}if(d.isSymbolicLink())try{(0,h.realpathSync)(a)}catch{return{ok:!0,reason:"broken_symlink"}}return b?{ok:!1,reason:"conflict_user_owned",message:"Path exists and is not Switchboard-managed. Skipping to protect your files."}:{ok:!0,reason:"overwrite_allowed",message:"User allowed overwrite of non-managed path"}}function Y(a){return"string"==typeof a&&a.startsWith("sb-")}function Z(a){let b=String(a||"").replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/\./g,"-").replace(/^-+|-+$/g,"");return b&&"."!==b&&".."!==b&&/[a-zA-Z0-9]/.test(b)?b.startsWith("sb-")?b:`sb-${b}`:null}function $(a,b){let c=g().resolve(a),d=g().resolve(b),e=g().relative(d,c);return""===e||!e.startsWith("..")&&!g().isAbsolute(e)}async function _(a){x(a);let b=q(a);if(!(0,h.existsSync)(b))return[];try{let a=JSON.parse(await e().readFile(b,"utf-8"));return Array.isArray(a.servers)?a.servers:[]}catch{return[]}}async function aa(a,b){x(a);let c=q(a);await e().mkdir(g().dirname(c),{recursive:!0}),await (0,y.R)(c,JSON.stringify({version:1,updatedAt:new Date().toISOString(),note:"Switchboard Agent Library MCP catalog. Prefer ${ENV_VAR} references for secrets — never store raw API keys here if avoidable.",servers:b},null,2))}async function ab(a,b){let c=Z(b.id.replace(/^sb-/,""))||b.id;if(!c)throw Error("Invalid MCP server id");let d=b.transport||(b.url?"http":"stdio");if("stdio"===d&&!b.command)throw Error("stdio MCP server requires command");if(("http"===d||"sse"===d)&&!b.url)throw Error("http/sse MCP server requires url");let e={id:c,name:b.name||c,transport:d,command:b.command||void 0,args:Array.isArray(b.args)?b.args.map(String):void 0,env:b.env&&"object"==typeof b.env?Object.fromEntries(Object.entries(b.env).map(([a,b])=>[a,String(b)])):void 0,url:b.url||void 0,headers:b.headers&&"object"==typeof b.headers?Object.fromEntries(Object.entries(b.headers).map(([a,b])=>[a,String(b)])):void 0,enabled:!1!==b.enabled,notes:b.notes||void 0},f=await _(a),g=f.findIndex(a=>a.id===c);return g>=0?f[g]=e:f.push(e),await aa(a,f),e}async function ac(a,b){let c=Z(b.replace(/^sb-/,""))||b,d=await _(a),e=d.filter(a=>a.id!==c&&a.id!==b);return await aa(a,e),{removed:e.length<d.length}}async function ad(a,b,c){for(let d of(await e().mkdir(b,{recursive:!0}),await e().readdir(a,{withFileTypes:!0}))){let f,i=g().join(a,d.name),j=g().join(b,d.name);try{f=(0,h.lstatSync)(i)}catch{continue}if(f.isSymbolicLink()){if(!c)continue;try{let a=(0,h.realpathSync)(i),b=g().relative(g().resolve(c),a);if(b.startsWith("..")||g().isAbsolute(b))continue}catch{continue}try{let a=(0,h.realpathSync)(i);(0,h.lstatSync)(a).isDirectory()?await ad(a,j,c):await e().copyFile(a,j)}catch{}continue}f.isDirectory()?await ad(i,j,c):f.isFile()&&await e().copyFile(i,j)}}async function ae(a){let b;try{b=await e().lstat(a)}catch{return}b.isSymbolicLink()||b.isFile()?await e().unlink(a):b.isDirectory()&&await e().rm(a,{recursive:!0,force:!0})}async function af(a,b,c=!0){try{await e().lstat(a)}catch{return}let d=await X(a,!1!==c,{libraryRoot:b});if(!d.ok){let a=Error(d.message||"Path is not Switchboard-managed");throw a.code="conflict",a.reason=d.reason,a}}async function ag(a,b,c,d,f={}){await e().mkdir(g().dirname(b),{recursive:!0});let h=!1!==f.neverOverwriteUser;if("symlink"===c){await af(b,d,h);try{return await ae(b),await e().symlink(a,b,"dir"),{mode:"symlink"}}catch(c){if(c?.code==="conflict")throw c;return ah(a,b,d,c?.message,h)}}return ah(a,b,d,void 0,h)}async function ah(a,b,c,d,f=!0){let g=`${b}.sb-tmp-${process.pid}-${Date.now()}`,h=`${b}.sb-bak-${process.pid}-${Date.now()}`;try{await ae(g),await ad(a,g,c),await af(b,c,f);let i=!1;try{await e().lstat(b),i=!0}catch{i=!1}if(i){await ae(h);try{await e().rename(b,h)}catch{await ae(b)}}try{await e().rename(g,b)}catch(a){if(i)try{await e().lstat(h),await e().rename(h,b)}catch{}throw a}try{await ae(h)}catch{}return d?{mode:"copy",fallbackFrom:"symlink",warning:d||"symlink failed; used copy"}:{mode:"copy"}}catch(a){try{await ae(g)}catch{}throw a}}function ai(a){return String(a)}function aj(a){return String(a).replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g,(a,b)=>`{env:${b}}`)}function ak(a){return null!=a&&"object"==typeof a&&!Array.isArray(a)}function al(a,b){let c=a.transport||(a.url?"http":"stdio");if("codex"===b)return"stdio"===c?{command:a.command,args:a.args||[],env:a.env||{}}:{url:a.url,http_headers:a.headers||{}};if("opencode"===b)return"stdio"===c?{type:"local",command:[a.command,...a.args||[]],environment:Object.fromEntries(Object.entries(a.env||{}).map(([a,b])=>[a,aj(b)])),enabled:!0}:{type:"remote",url:a.url,headers:Object.fromEntries(Object.entries(a.headers||{}).map(([a,b])=>[a,aj(b)])),enabled:!0};if("gemini"===b)return"stdio"===c?{command:a.command,args:a.args||[],env:a.env||{}}:{url:a.url,type:"sse"===c?"sse":"http",headers:a.headers||{}};if("stdio"===c){let b={command:a.command,args:a.args||[]};return a.env&&Object.keys(a.env).length&&(b.env=Object.fromEntries(Object.entries(a.env).map(([a,b])=>[a,ai(b)]))),b}let d={url:a.url,type:"sse"===c?"sse":"http"};return a.headers&&Object.keys(a.headers).length&&(d.headers=Object.fromEntries(Object.entries(a.headers).map(([a,b])=>[a,ai(b)]))),d}async function am(a,b,c){let d=c.kind,f=new Set(c.previouslyManaged||[]),i={};if((0,h.existsSync)(a))try{i=JSON.parse(await e().readFile(a,"utf-8"))}catch{if(c.neverOverwriteUser)return{ok:!1,error:"mcp_parse_failed",message:`Cannot parse ${a}; refusing to overwrite`,path:a};i={}}let j="mcpServers";if("opencode"===d&&(j="mcp"),Object.prototype.hasOwnProperty.call(i,j)&&!ak(i[j])&&c.neverOverwriteUser)return{ok:!1,error:"mcp_shape_conflict",message:`${a}: "${j}" exists but is not a plain object; refusing to overwrite`,path:a};let k=ak(i[j])?{...i[j]}:{},l=b.filter(a=>!1!==a.enabled),m=new Set(l.map(a=>a.id)),n=[];for(let a of Object.keys(k))f.has(a)&&Y(a)&&!m.has(a)&&(delete k[a],n.push(a));let o=[],p=[];for(let a of l){let b=a.id;if(!Y(b)){p.push({key:b,reason:"not_namespaced"});continue}let e=al(a,"cursor"===d?"cursor":"gemini"===d?"gemini":"opencode"===d?"opencode":"claude"),g=Object.prototype.hasOwnProperty.call(k,b),h=f.has(b);if(g&&!h&&c.neverOverwriteUser){p.push({key:b,reason:"user_owned_or_unknown_sb_key"});continue}k[b]=e,o.push(b)}let q={...i,[j]:k};return c.dryRun||(await e().mkdir(g().dirname(a),{recursive:!0}),await (0,y.R)(a,JSON.stringify(q,null,2))),{ok:!0,path:a,written:o,removed:n,skipped:p,dryRun:!!c.dryRun}}async function an(a,b,c){let d="";(0,h.existsSync)(a)&&(d=await e().readFile(a,"utf-8"));let f=d.replace(/\n?# --- switchboard-agent-library-mcp-start ---[\s\S]*?# --- switchboard-agent-library-mcp-end ---\n?/g,"\n"),i=b.filter(a=>!1!==a.enabled&&Y(a.id));if(!i.length)return!c.dryRun&&(0,h.existsSync)(a)&&await (0,y.R)(a,f.trimEnd()+"\n"),{ok:!0,path:a,written:[],removed:c.previouslyManaged||[],dryRun:!!c.dryRun};let j=new Set(c.previouslyManaged||[]),k=[],l=[];for(let a of i){let b=RegExp(`\\[mcp_servers\\.${ao(a.id)}\\]`,"m").test(f);if(b&&!j.has(a.id)&&c.neverOverwriteUser){k.push({key:a.id,reason:"user_owned_toml_section"});continue}b&&j.has(a.id)&&(f=f.replace(RegExp(`\\n?\\[mcp_servers\\.${ao(a.id)}\\][\\s\\S]*?(?=\\n\\[|\\n*$)`,"g"),"\n")),l.push(a)}let m=["","# --- switchboard-agent-library-mcp-start ---","# Managed by Switchboard Agent Library. Do not edit this block by hand."];for(let a of l){var n,o,p;let b=al(a,"codex"),c=(n=a.id,/^[A-Za-z_][A-Za-z0-9_-]*$/.test(n)&&!n.includes(".")?n:ap(n));if(m.push(`[mcp_servers.${c}]`),b.command){if(m.push(`command = ${ap(b.command)}`),b.args?.length&&m.push(`args = ${(o=b.args,`[${o.map(a=>ap(a)).join(", ")}]`)}`),b.env&&Object.keys(b.env).length)for(let[a,d]of(m.push(`[mcp_servers.${c}.env]`),Object.entries(b.env)))m.push(`${a} = ${ap(ai(d))}`)}else if(b.url&&(m.push(`url = ${ap(b.url)}`),b.http_headers&&Object.keys(b.http_headers).length))for(let[a,d]of(m.push(`[mcp_servers.${c}.http_headers]`),Object.entries(b.http_headers))){m.push(`${(p=a,/^[A-Za-z_][A-Za-z0-9_]*$/.test(p)?p:ap(p))} = ${ap(ai(d))}`)}m.push("")}m.push("# --- switchboard-agent-library-mcp-end ---","");let q=(f.trimEnd()+"\n"+m.join("\n")).replace(/\n{3,}/g,"\n\n");return c.dryRun||(await e().mkdir(g().dirname(a),{recursive:!0}),await (0,y.R)(a,q)),{ok:!0,path:a,written:l.map(a=>a.id),removed:[],skipped:k,dryRun:!!c.dryRun}}function ao(a){return String(a).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ap(a){return JSON.stringify(String(a))}async function aq(a,b){let c=await X(a,!0,{libraryRoot:b});return c.ok?(await ae(a),await W(a),{ok:!0,reason:c.reason}):c}async function ar(a,b,c,d,f,h,i){for(let j of function(a,b={}){if("codex"!==a)return[];let c="project"===b.scope&&b.projectPath?g().resolve(b.projectPath):null;return[c?g().join(c,".codex","skills"):g().join(k().homedir(),".codex","skills")]}(a,d))if(j!==b)for(let b of c){let c=g().join(j,b);try{await e().lstat(c)}catch{continue}if(h){(await X(c,!0,{libraryRoot:f})).ok&&i.push({agent:a,skillId:b,dest:c,action:"would_remove_legacy"});continue}let d=await aq(c,f);i.push({agent:a,skillId:b,dest:c,action:d.ok?"removed_legacy":"skipped_legacy_conflict",...d.ok?{}:{reason:d.reason,message:d.message}})}}async function as(a,b={}){if(b.dryRun)return at(a,b);try{return await C(()=>at(a,b))}catch(a){if(a?.code==="lock_timeout")return{ok:!1,error:"lock_timeout",message:a.message};throw a}}async function at(a,b={}){let c=a||D();try{G(c)}catch(a){return{ok:!1,error:a?.code||"settings_invalid",message:a?.message||"Invalid settings"}}let d=H(c);x(d),c.includeProductSkills&&await Q(d);let f=await P(d),i=await _(d),j=await L(d),k={scope:c.scope,projectPath:c.projectPath},l=[],m=[],o=!b.mcpOnly,q=!b.skillsOnly;if(o)for(let[a,i]of Object.entries(n)){if(!i.supportsSkills)continue;if(c.targets[a]?.skills===!1){l.push({agent:a,action:"skipped_disabled"});continue}let m=v(a,k);if(!m)continue;for(let i of(b.dryRun||await e().mkdir(m,{recursive:!0}),f)){let e=u(i.id);if(!e)continue;let f=g().join(m,e),k=function(a,b){let c=t(b);return g().join(p(a),c)}(d,i.id);if(!(0,h.existsSync)(g().join(k,"SKILL.md"))){l.push({agent:a,skillId:i.id,action:"missing_source"});continue}let n=await X(f,c.neverOverwriteUser,{libraryRoot:d});if(!n.ok){l.push({agent:a,skillId:i.id,dest:f,action:"conflict",reason:n.reason,message:n.message});continue}if(b.dryRun){l.push({agent:a,skillId:i.id,dest:f,action:"would_sync",linkMode:c.linkMode});continue}try{let b=await ag(k,f,c.linkMode,d,{neverOverwriteUser:c.neverOverwriteUser});await V(f,{skillId:i.id,libraryPath:k,linkMode:b.mode}),l.push({agent:a,skillId:i.id,dest:f,action:"synced",...b}),j.managedSkills||(j.managedSkills={}),j.managedSkills[a]||(j.managedSkills[a]=[]),j.managedSkills[a].includes(e)||j.managedSkills[a].push(e)}catch(b){b?.code==="conflict"?l.push({agent:a,skillId:i.id,dest:f,action:"conflict",reason:b.reason||"conflict",message:b.message}):l.push({agent:a,skillId:i.id,dest:f,action:"error",error:b?.message||String(b)})}}let n=[...new Set([...j.managedSkills?.[a]||[],...f.map(a=>u(a.id)).filter(Boolean)])];await ar(a,m,n,k,d,!!b.dryRun,l);let o=[...j.managedSkills?.[a]||[]],q=new Set(f.map(a=>u(a.id))),r=[];for(let c of o){if(q.has(c)){r.push(c);continue}let e=g().join(m,c);if(b.dryRun){if(!(await X(e,!0,{libraryRoot:d})).ok){r.push(c);continue}l.push({agent:a,skillId:c,dest:e,action:"would_remove"});continue}if(!(await aq(e,d)).ok){r.push(c);continue}l.push({agent:a,skillId:c,dest:e,action:"removed_stale"})}j.managedSkills&&(j.managedSkills[a]=r)}if(q)for(let[a,d]of Object.entries(n)){if(!d.supportsMcp)continue;if(c.targets[a]?.mcp===!1){m.push({agent:a,action:"skipped_disabled"});continue}let e=w(a,k);if(!e)continue;let f=j.managedMcpKeys?.[a]||[];try{let d;d="toml"===e.format?await an(e.path,i,{neverOverwriteUser:c.neverOverwriteUser,dryRun:b.dryRun,previouslyManaged:f}):await am(e.path,i,{kind:e.kind,neverOverwriteUser:c.neverOverwriteUser,dryRun:b.dryRun,previouslyManaged:f}),m.push({agent:a,...d}),d.ok&&!b.dryRun&&(j.managedMcpKeys||(j.managedMcpKeys={}),j.managedMcpKeys[a]=[...d.written||[]])}catch(b){m.push({agent:a,ok:!1,error:b?.message||String(b),path:e.path})}}b.dryRun||(j.lastSync={at:new Date().toISOString(),skillCount:f.length,mcpCount:i.length,linkMode:c.linkMode,scope:c.scope},await M(d,j));let r=l.filter(a=>"conflict"===a.action);return{ok:!0,dryRun:!!b.dryRun,libraryRoot:d,settings:{linkMode:c.linkMode,scope:c.scope,neverOverwriteUser:c.neverOverwriteUser},skills:l,mcp:m,conflictCount:r.length,summary:{skillsSynced:l.filter(a=>"synced"===a.action||"would_sync"===a.action).length,skillsConflicts:r.length,mcpOk:m.filter(a=>a.ok).length,mcpFailed:m.filter(a=>!1===a.ok).length}}}async function au(a){try{return await C(()=>av(a))}catch(a){if(a?.code==="lock_timeout")return{ok:!1,error:"lock_timeout",message:a.message};throw a}}async function av(a){let b=a||await J();try{G({...b,enabled:!0})}catch(a){if(a?.code==="project_path_missing"||a?.code==="project_path_invalid")return{ok:!1,error:a.code,message:a.message}}let c=H(b),d=await L(c),e={scope:b.scope,projectPath:b.projectPath},f=[];for(let[a,h]of Object.entries(n)){if(h.supportsSkills&&b.targets[a]?.skills!==!1){let b=v(a,e),h=d.managedSkills?.[a]||[];if(b){for(let d of h){let e=g().join(b,d),h=await aq(e,c);h.ok?f.push({agent:a,type:"skill",dest:e,action:"removed"}):f.push({agent:a,type:"skill",dest:e,action:"skipped_conflict",reason:h.reason,message:h.message})}await ar(a,b,h,e,c,!1,f),d.managedSkills&&(d.managedSkills[a]=[])}}if(h.supportsMcp&&b.targets[a]?.mcp!==!1){let b=w(a,e),c=d.managedMcpKeys?.[a]||[];b&&("toml"===b.format?await an(b.path,[],{neverOverwriteUser:!0,previouslyManaged:c}):await am(b.path,[],{kind:b.kind,neverOverwriteUser:!0,previouslyManaged:c}),f.push({agent:a,type:"mcp",path:b.path,action:"cleared_managed"})),d.managedMcpKeys&&(d.managedMcpKeys[a]=[])}}return d.lastSync={at:new Date().toISOString(),cleaned:!0},await M(c,d),{ok:!0,results:f}}async function aw(a){let b=a||D(),c=H(b);x(c);let d=await P(c),e=await _(c),f={scope:b.scope,projectPath:b.projectPath},i=[],j=[];for(let[a,k]of(j.push({id:"library",ok:!0,message:`Library at ${c} (${d.length} skills, ${e.length} MCP servers)`}),"project"!==b.scope||b.projectPath||i.push({severity:"error",code:"project_path_missing",message:"Project scope selected but no project path set"}),Object.entries(n))){if(b.targets[a]?.skills!==!1&&k.supportsSkills){let b=v(a,f);for(let e of d){let d=u(e.id);if(!b)continue;let f=g().join(b,d),l=function(a){try{let b;try{b=(0,h.lstatSync)(a)}catch{return{exists:!1}}if(b.isSymbolicLink()){let b=null,c=!1;try{b=(0,h.readlinkSync)(a);try{(0,h.realpathSync)(a)}catch{c=!0}}catch{c=!0}return{exists:!0,type:"symlink",target:b,broken:c}}if(b.isDirectory())return{exists:!0,type:"directory"};return{exists:!0,type:"other"}}catch(a){return{exists:!1,error:a?.message}}}(f);l.exists?l.broken?i.push({severity:"error",code:"skill_broken_symlink",agent:a,skillId:e.id,path:f,message:`${k.label}: ${d} is a broken symlink — re-Apply`}):(await X(f,!0,{libraryRoot:c})).ok?j.push({id:`skill:${a}:${e.id}`,ok:!0,message:`${k.label} ← ${d} (${l.type})`}):i.push({severity:"error",code:"skill_conflict",agent:a,skillId:e.id,path:f,message:`${k.label}: ${d} exists but is not Switchboard-managed`}):i.push({severity:"warn",code:"skill_not_synced",agent:a,skillId:e.id,message:`${k.label}: ${d} not present — run Apply`})}}if(b.targets[a]?.mcp!==!1&&k.supportsMcp){let b=w(a,f);if(b){let c=(0,h.existsSync)(b.path);j.push({id:`mcp-file:${a}`,ok:!0,message:`${k.label} MCP config ${c?"found":"will be created"}: ${b.path}`})}}}for(let a of e)if(a.env)for(let[b,c]of Object.entries(a.env))"string"==typeof c&&c.length>12&&!c.includes("${")&&/^(sk-|ghp_|xox|AKIA|key-)/i.test(c)&&i.push({severity:"warn",code:"possible_secret_in_library",mcpId:a.id,envKey:b,message:`MCP ${a.id} env.${b} looks like a raw secret — prefer \${ENV_VAR} references`});let k={ok:0===i.filter(a=>"error"===a.severity).length,at:new Date().toISOString(),libraryRoot:c,linkMode:b.linkMode,platform:process.platform,checks:j,issues:i};try{await C(async()=>{let a=await L(c);a.lastDoctor=k,await M(c,a)})}catch(a){if(a?.code!=="lock_timeout")throw a;k.statePersistSkipped=!0}return k}var ax=c(71553),ay=c.n(ax),az=c(77030),aA=c.n(az),aB=c(77598),aC=c.n(aB);function aD(a){return aC().createHash("sha256").update(a,"utf-8").digest("hex")}let aE=[{id:"anthropic-frontend-design",name:"frontend-design (Anthropic)",description:"Production UI aesthetics — anti AI-slop",skillId:"frontend-design",rawUrl:"https://raw.githubusercontent.com/anthropics/skills/main/skills/frontend-design/SKILL.md",trusted:!0},{id:"anthropic-skill-creator",name:"skill-creator (Anthropic)",description:"Meta-skill to author new Agent Skills",skillId:"skill-creator",rawUrl:"https://raw.githubusercontent.com/anthropics/skills/main/skills/skill-creator/SKILL.md",trusted:!0},{id:"anthropic-webapp-testing",name:"webapp-testing (Anthropic)",description:"Playwright testing for local web apps",skillId:"webapp-testing",rawUrl:"https://raw.githubusercontent.com/anthropics/skills/main/skills/webapp-testing/SKILL.md",trusted:!0}],aF=["githubusercontent.com","github.com","raw.githubusercontent.com","gitlab.com","bitbucket.org","jsdelivr.net","cdn.jsdelivr.net"];async function aG(a){let b;try{b=new URL(a)}catch{return{ok:!1,error:"invalid_url",message:"Invalid URL"}}if("https:"!==b.protocol)return{ok:!1,error:"https_required",message:"Catalog URLs must use https://"};if(b.username||b.password)return{ok:!1,error:"credentials_forbidden",message:"URLs with embedded credentials are not allowed"};let c=b.hostname.toLowerCase();if("localhost"===c||c.endsWith(".local")||c.endsWith(".internal"))return{ok:!1,error:"private_host",message:"Local/private hosts are not allowed"};if(!aF.some(a=>c===a||c.endsWith(`.${a}`)))return{ok:!1,error:"host_not_allowlisted",message:`Host not allowlisted. Allowed: ${aF.join(", ")}`};try{for(let a of(await ay().lookup(c,{all:!0})))if(function(a){if(aA().isIPv4(a)){let b=a.split(".").map(Number);return 10===b[0]||127===b[0]||0===b[0]||169===b[0]&&254===b[1]||172===b[0]&&!!(b[1]>=16)&&!!(b[1]<=31)||192===b[0]&&168===b[1]}if(aA().isIPv6(a)){let b=a.toLowerCase();return!!("::1"===b||b.startsWith("fc")||b.startsWith("fd")||b.startsWith("fe80"))}return!0}(a.address))return{ok:!1,error:"private_ip",message:`Host resolves to private IP (${a.address})`}}catch(a){return{ok:!1,error:"dns_failed",message:a?.message||"DNS lookup failed"}}return{ok:!0,url:b}}async function aH(a,b={}){let c,d=await aG(a);if(!d.ok)return d;let e={Accept:"text/plain, text/markdown, */*"};b.etag&&(e["If-None-Match"]=b.etag);try{c=await fetch(d.url.toString(),{headers:e,signal:AbortSignal.timeout(b.timeoutMs??3e4),redirect:"error"})}catch(a){return{ok:!1,error:"fetch_failed",message:a?.message||"Failed to fetch skill"}}if(304===c.status)return{ok:!0,notModified:!0};if(!c.ok)return{ok:!1,error:"http_error",message:`HTTP ${c.status} fetching skill`};if(Number(c.headers.get("content-length")||0)>524288)return{ok:!1,error:"too_large",message:"Skill exceeds 524288 byte limit"};let f=await c.text();return f.length>524288?{ok:!1,error:"too_large",message:"Skill exceeds 524288 byte limit"}:!f||f.length<20?{ok:!1,error:"empty",message:"Remote skill content empty"}:/^---[\s\S]*?name:\s*/m.test(f)||/^#\s+/m.test(f)?/<html[\s>]/i.test(f)&&!f.includes("name:")?{ok:!1,error:"not_markdown",message:"URL returned HTML, not a skill markdown file"}:{ok:!0,markdown:f,etag:c.headers.get("etag")}:{ok:!1,error:"invalid_skill",message:"Content does not look like a SKILL.md"}}async function aI(a,b){if(b.requireConfirm&&!0!==b.confirmed)return{ok:!1,error:"confirmation_required",message:"Catalog installs require explicit confirmation. Remote content can instruct agents to run shell commands — review the markdown first."};let c=t(b.skillId);if(!c)return{ok:!1,error:"invalid_id",message:"Invalid skill id"};let d=await aH(b.url);if(!d.ok)return d;if(d.notModified||!("markdown"in d))return{ok:!1,error:"fetch_failed",message:"Unexpected empty response"};let{markdown:e,etag:f}=d;return{ok:!0,...await R(a,{id:c,markdown:e,source:`url:${b.url}`,contentHash:aD(e),etag:f||null}),warning:"Skill markdown stored in the library only. It is not active on agents until you click Apply Sync. Review SKILL.md for any shell/network instructions before enabling."}}async function aJ(a){let b=await aG(a);if(!b.ok)return b;try{let a=await fetch(b.url.toString(),{headers:{Accept:"text/plain, text/markdown, */*"},signal:AbortSignal.timeout(3e4),redirect:"error"});if(!a.ok)return{ok:!1,error:`HTTP ${a.status}`};let c=await a.text();return{ok:!0,preview:c.slice(0,4e3),truncated:c.length>4e3,bytes:c.length}}catch(a){return{ok:!1,error:a?.message||"fetch failed"}}}function aK(a,b){return g().join(p(a),b)}async function aL(a,b){try{let c=await e().readFile(g().join(aK(a,b),".source.json"),"utf-8"),d=JSON.parse(c);return d&&"object"==typeof d?d:null}catch{return null}}async function aM(a,b,c){await e().writeFile(g().join(aK(a,b),".source.json"),JSON.stringify(c,null,2),"utf-8")}function aN(a){let b="string"==typeof a?.source?a.source:"";return b.startsWith("url:")?b.slice(4):null}async function aO(a,b,c){return"string"==typeof c?.contentHash&&c.contentHash?c.contentHash:aD(await e().readFile(g().join(aK(a,b),"SKILL.md"),"utf-8"))}async function aP(a){let b=[];try{b=await e().readdir(p(a))}catch{return{results:[],skipped:0}}let c=[];for(let d of b){let b=await aL(a,d),e=aN(b);e&&b&&c.push({id:d,url:e,meta:b})}let d=c.slice(0,20),f=c.length-d.length;return{results:await Promise.all(d.map(async({id:b,url:c,meta:d})=>{try{let e=await aO(a,b,d),f=await aH(c,{timeoutMs:1e4,etag:"string"==typeof d.etag?d.etag:null});if(!f.ok)return{id:b,status:"error",message:f.message};let g=new Date().toISOString();if(f.notModified)return await aM(a,b,{...d,contentHash:e,lastChecked:g}),{id:b,status:"fresh"};let h=aD(f.markdown);return await aM(a,b,{...d,contentHash:e,etag:f.etag||d.etag||null,lastChecked:g}),{id:b,status:h===e?"fresh":"update"}}catch(a){return{id:b,status:"error",message:a?.message||"check failed"}}})),skipped:f}}async function aQ(a,b){let c=t(b);if(!c)return{ok:!1,error:"invalid_id",message:"Invalid skill id"};let d=aN(await aL(a,c));if(!d)return{ok:!1,error:"not_url_source",message:"Skill was not installed from a URL"};let e=await aH(d);return e.ok?!e.notModified&&"markdown"in e?{ok:!0,markdown:e.markdown,contentHash:aD(e.markdown)}:{ok:!1,error:"fetch_failed",message:"Unexpected empty response"}:e}async function aR(a,b,c){if(c?.confirmed!==!0)return{ok:!1,error:"confirmation_required",message:"Updates require explicit confirmation. Remote content can instruct agents to run shell commands — review the markdown first."};if("string"!=typeof c.expectedHash||!/^[a-f0-9]{64}$/.test(c.expectedHash))return{ok:!1,error:"expected_hash_required",message:"Preview first — expectedHash missing"};let d=t(b);if(!d)return{ok:!1,error:"invalid_id",message:"Invalid skill id"};let e=aN(await aL(a,d));if(!e)return{ok:!1,error:"not_url_source",message:"Skill was not installed from a URL"};let f=await aH(e);if(!f.ok)return f;if(f.notModified||!("markdown"in f))return{ok:!1,error:"fetch_failed",message:"Unexpected empty response"};let g=aD(f.markdown);return g!==c.expectedHash?{ok:!1,error:"content_changed",message:"Upstream content changed since preview — preview again before updating."}:{ok:!0,...await R(a,{id:d,markdown:f.markdown,source:`url:${e}`,contentHash:g,etag:f.etag||null}),warning:"Skill updated in the library only. Run Apply Sync to push the new version to agents."}}async function aS(a,b){let c=g().resolve(b),d=g().join(c,"skills");await e().mkdir(d,{recursive:!0});let f=await P(a);for(let b of(await e().writeFile(g().join(c,".switchboard-export.json"),JSON.stringify({managedBy:"switchboard",at:new Date().toISOString()},null,2),"utf-8"),f)){let c=g().join(p(a),b.id),f=b.id.startsWith("sb-")?b.id:`sb-${b.id}`,i=g().join(d,f);if((0,h.existsSync)(i)){let a=g().join(i,".switchboard-managed.json");if(!(0,h.existsSync)(a))continue;await e().rm(i,{recursive:!0,force:!0})}await ad(c,i,a),await e().writeFile(g().join(i,".switchboard-managed.json"),JSON.stringify({managedBy:"switchboard",skillId:b.id},null,2),"utf-8")}let i=await _(a),j=["# Generated by Switchboard Agent Library — import-friendly AgentSync layout","# Run: agentsync apply (optional; Switchboard can also Apply directly)","",'source_dir = "."','default_agents = ["claude", "codex", "gemini", "cursor", "opencode"]',"","[gitignore]","enabled = true",'marker = "Switchboard / AI Agent Symlinks"',"","[mcp]","enabled = true",'merge_strategy = "merge"',""];for(let a of i.filter(a=>!1!==a.enabled)){let b=a.id.replace(/^sb-/,"");j.push(`[mcp_servers.${b}]`),a.command&&(j.push(`command = ${JSON.stringify(a.command)}`),a.args?.length&&j.push(`args = [${a.args.map(a=>JSON.stringify(a)).join(", ")}]`)),a.url&&j.push(`url = ${JSON.stringify(a.url)}`),j.push("")}return await e().writeFile(g().join(c,"agentsync.toml"),j.join("\n"),"utf-8"),await e().writeFile(g().join(c,"mcp.switchboard.json"),JSON.stringify({servers:i},null,2),"utf-8"),await e().writeFile(g().join(c,"README.switchboard.md"),`# Switchboard Agent Library export
2
2
 
3
3
  Exported from Switchboard Agent Library.
4
4
 
@@ -0,0 +1 @@
1
+ "use strict";exports.id=65,exports.ids=[65],exports.modules={39326:(a,b,c)=>{function d(a){return null==a?"":String(a).trim()}async function e(a={}){try{let b=function(a={}){let b=a?.connectionProxyEnabled===!0,c=d(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:d(a?.connectionNoProxy)}}(a);if(b.connectionProxyEnabled&&b.connectionProxyUrl)return{source:"legacy",proxyPoolId:null,proxyPool:null,...b,strictProxy:!1,vercelRelayUrl:""};return{source:"none",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:b.connectionNoProxy||"",strictProxy:!1,vercelRelayUrl:""}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1,vercelRelayUrl:""}}}c.d(b,{B:()=>e})},39753:(a,b,c)=>{c.d(b,{IJ:()=>k,Ku:()=>h,NL:()=>g,XM:()=>j,c4:()=>i});var d=c(77598),e=c(44196);function f(a,b){return(0,d.createHash)("sha256").update(`${a}:${JSON.stringify(function a(b){return Array.isArray(b)?b.map(a):b&&"object"==typeof b?Object.fromEntries(Object.keys(b).sort().map(c=>[c,a(b[c])])):b}(b))}`).digest("hex")}function g(a){let b=Number(a?.tokenSaver?.fetchCacheTtlHours??24);return!Number.isFinite(b)||b<=0?0:3600*b*1e3}function h(a,b){return f("fetch",{provider:b,url:function(a){let b=String(a||"").trim(),c=b.indexOf("://");if(c<0)return b;let d=c+3,e=b.slice(d).search(/[/?#]/),f=e<0?b.length:d+e,g=b.slice(d,f),h=g.lastIndexOf("@");return`${b.slice(0,d)}${g.slice(0,h+1)}${g.slice(h+1).toLowerCase()}${b.slice(f)}`}(a.url),format:a.format??null,maxCharacters:a.max_characters??null})}function i(a,b){return f("search",{provider:b,query:String(a.query||"").trim(),maxResults:a.max_results??null,searchType:a.search_type??null,country:a.country??null,language:a.language??null,timeRange:a.time_range??null,offset:a.offset??null,domainFilter:a.domain_filter??null,contentOptions:a.content_options??null,providerOptions:a.provider_options??null})}function j(a){return new Response(a.content,{headers:{"Content-Type":a.contentType||"application/json","X-Switchboard-Cache":"hit"}})}async function k(a,b,c){try{let d=a?.headers?.get("content-type")||"application/json",f=d.toLowerCase();if(!a?.ok||f.includes("text/event-stream")||f.includes("ndjson"))return a;let g=await a.clone().text();await (0,e.OS)({...b,content:g,contentType:d}),c.info(b.kind.toUpperCase(),`cache stored ${b.url}`)}catch{}return a}},43157:(a,b,c)=>{c.d(b,{O:()=>d});function d(...a){let b=a.filter(a=>a&&"object"==typeof a);if(0===b.length)return;if(1===b.length)return b[0];if("function"==typeof AbortSignal.any)return AbortSignal.any(b);let c=new AbortController,e=a=>{try{c.abort(a?.target?.reason)}catch{}};for(let a of b){if(a.aborted){e({target:a});break}a.addEventListener("abort",e,{once:!0})}return c.signal}},80238:(a,b,c)=>{c.d(b,{Pt:()=>n,Tr:()=>o,c1:()=>l,kI:()=>p,vk:()=>m});var d=c(44776),e=c(39326),f=c(49263),g=c(87252),h=c(40615),i=c(7803),j=c(1486);let k=new Map;async function l(a,b=null,c=null,g={}){var j;let m,n,o,p,q=b instanceof Set?b:b?new Set([b]):new Set,r=g?.preferredConnectionId||null,s=g?.strictPreferredConnection===!0,t=(0,h.rs)(a);return j=async()=>{let b;if(h.IS[t]?.noAuth){let a=((await (0,d.mt)()).providerStrategies||{})[t]||{},b=await (0,e.B)({proxyPoolId:a.proxyPoolId||""});return{id:"noauth",connectionName:"Public",isActive:!0,accessToken:"public",providerSpecificData:{connectionProxyEnabled:b.connectionProxyEnabled,connectionProxyUrl:b.connectionProxyUrl,connectionNoProxy:b.connectionNoProxy,connectionProxyPoolId:b.proxyPoolId||null,vercelRelayUrl:b.vercelRelayUrl||""}}}let g=await (0,d.getProviderConnections)({provider:t,isActive:!0});if(i.debug("AUTH",`${a} | total connections: ${g.length}, excludeIds: ${q.size>0?[...q].join(","):"none"}, model: ${c||"any"}`),0===g.length)return i.warn("AUTH",`No credentials for ${a}`),null;let j=s&&r?g.filter(a=>a.id===r):g;if(0===j.length)return i.warn("AUTH",`${a} | requested connection is unavailable`),null;let k=j.filter(a=>!(q.has(a.id)||(0,f.Bl)(a,c)));if(i.debug("AUTH",`${a} | available: ${k.length}/${j.length}`),j.forEach(a=>{let b=q.has(a.id),d=(0,f.Bl)(a,c);if(b||d){let e=(0,f.kJ)(a);i.debug("AUTH",` → ${a.id?.slice(0,8)} | ${b?"excluded":""} ${d?`modelLocked(${c}) until ${e}`:""}`)}}),0===k.length){let b=j.filter(a=>(0,f.Bl)(a,c)),d=b.map(a=>(0,f.kJ)(a)).filter(Boolean).sort()[0]||null;if(d){let e=b[0];return i.warn("AUTH",`${a} | all ${j.length} accounts locked for ${c||"all"} (${(0,f.Qo)(d)}) | lastError=${e?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:d,retryAfterHuman:(0,f.Qo)(d),lastError:e?.lastError||null,lastErrorCode:e?.errorCode||null}}return i.warn("AUTH",`${a} | all ${j.length} accounts unavailable`),null}let l=await (0,d.mt)(),m=(l.providerStrategies||{})[t]||{},n=m.fallbackStrategy||l.fallbackStrategy||"fill-first";if(r&&(b=k.find(a=>a.id===r))&&i.info("AUTH",`${a} | pinned to ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"})`),b);else if("round-robin"===n){let a=m.stickyRoundRobinLimit||l.stickyRoundRobinLimit||3,c=[...k].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt)-new Date(a.lastUsedAt):-1:1:(a.priority||999)-(b.priority||999))[0],e=c?.consecutiveUseCount||0;c&&c.lastUsedAt&&e<a?(b=c,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(b.consecutiveUseCount||0)+1})):(b=[...k].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt)-new Date(b.lastUsedAt):1:-1:(a.priority||999)-(b.priority||999))[0],await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else b=k[0];let o=await (0,e.B)(b.providerSpecificData||{});return{authType:b.authType,apiKey:b.apiKey,accessToken:b.accessToken,refreshToken:b.refreshToken,idToken:b.idToken,expiresAt:b.expiresAt,expiresIn:b.expiresIn,lastRefreshAt:b.lastRefreshAt,projectId:b.projectId,connectionName:b.displayName||b.name||b.email||b.id,copilotToken:b.providerSpecificData?.copilotToken,providerSpecificData:{...b.providerSpecificData||{},connectionProxyEnabled:o.connectionProxyEnabled,connectionProxyUrl:o.connectionProxyUrl,connectionNoProxy:o.connectionNoProxy,connectionProxyPoolId:o.proxyPoolId||null,vercelRelayUrl:o.vercelRelayUrl||""},connectionId:b.id,testStatus:b.testStatus,lastError:b.lastError,_connection:b}},n=k.get(t)||Promise.resolve(),o=new Promise(a=>{m=a}),p=n.then(()=>o,()=>o),k.set(t,p),(async()=>{await n.catch(()=>{});try{return await j()}finally{m(),k.get(t)===p&&k.delete(t)}})()}async function m(a,b,c,e=null,h=null,j=null){let k,l,n;if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0};let o=(await (0,d.getProviderConnections)({provider:e})).find(b=>b.id===a),p=o?.backoffLevel||0;if(j&&j>Date.now()?(k=!0,l=Math.min(j-Date.now(),g.fh),n=0):{shouldFallback:k,cooldownMs:l,newBackoffLevel:n}=(0,f.hk)(b,c,p),!k)return{shouldFallback:!1,cooldownMs:0};let q="string"==typeof c?c.slice(0,100):"Provider error",r=(0,f.S5)(h,l);await (0,d.updateProviderConnection)(a,{...r,testStatus:"unavailable",lastError:q,errorCode:b,lastErrorAt:new Date().toISOString(),backoffLevel:n??p});let s=Object.keys(r)[0],t=o?.displayName||o?.name||o?.email||a.slice(0,8);return i.warn("AUTH",`${t} locked ${s} for ${Math.round(l/1e3)}s [${b}]`),e&&b&&q&&console.error(`❌ ${e} [${b}]: ${q}`),{shouldFallback:!0,cooldownMs:l}}async function n(a,b,c=null){if(!a||"noauth"===a)return;let e=b._connection||b,f=Date.now(),g=Object.keys(e).filter(a=>a.startsWith("modelLock_"));if(!e.testStatus&&!e.lastError&&0===g.length)return;let h=g.filter(a=>{if(c&&a===`modelLock_${c}`||c&&"modelLock___all"===a)return!0;let b=e[a];return b&&new Date(b).getTime()<=f});if(0===h.length&&"unavailable"!==e.testStatus&&!e.lastError)return;let i=g.filter(a=>{if(h.includes(a))return!1;let b=e[a];return b&&new Date(b).getTime()>f}),j=Object.fromEntries(h.map(a=>[a,null]));0===i.length&&Object.assign(j,{testStatus:"active",lastError:null,lastErrorAt:null,backoffLevel:0}),await (0,d.updateProviderConnection)(a,j)}function o(a){return(0,j.d)(a.headers)}async function p(a){return!!a&&await (0,d.ek)(a)}},97004:(a,b,c)=>{c.d(b,{G:()=>e});var d=c(68658);async function e(a,b,c){if(!a?.requireApiKey)return null;let{isValidApiKey:e,log:f,errorResponse:g,HTTP_STATUS:h,request:i,hasValidCliToken:j}=c;if(i&&(0,d.v5)(i))return null;if(i&&"function"==typeof j)try{if(await j(i))return null}catch{}return b?await e(b)?null:(f?.warn?.("AUTH","Invalid API key (requireApiKey=true)"),g(h.UNAUTHORIZED,"Invalid API key")):(f?.warn?.("AUTH","Missing API key (requireApiKey=true)"),g(h.UNAUTHORIZED,"Missing API key"))}}};