switchboard-router 0.9.2 → 0.9.5

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 (250) hide show
  1. package/app/.next/static/chunks/{1321-4de88db4bd94a23c.js → 1321-8fda9fa8a3afd983.js} +1 -1
  2. package/app/.next/static/chunks/1330-56405eca78b12fee.js +7 -0
  3. package/app/{.next-cli-build/static/chunks/3531-936a1e7912d9876c.js → .next/static/chunks/3531-eb5d385c954b3765.js} +7 -7
  4. package/app/.next/static/chunks/app/(dashboard)/dashboard/agent-library/page-40f3ca16440f8e17.js +1 -0
  5. package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-0e1d54e59ac767a1.js +1 -0
  6. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-d7205b7328b3fed1.js → page-af0d85c06970853b.js} +1 -1
  7. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-d0b6efe01e687aec.js → page-2cfc2352bc42d9b8.js} +1 -1
  8. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-62cd36ee99eaa630.js +1 -0
  9. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/routing/page-0b02e9a2f1cc6e43.js +1 -0
  10. package/app/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-ded6ec41e583b3b3.js +1 -0
  11. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-ca47b09e6ed6ae7b.js +16 -0
  12. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-772f246688672d59.js → page-78d098f14f8cff05.js} +8 -8
  13. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-d1654fba27199492.js +1 -0
  14. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-8554ba79c854167f.js → page-ff13a39fb7744f5e.js} +3 -3
  15. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/page-919f3eec8dfc9b6e.js +1 -0
  16. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-db19da41661d630b.js +1 -0
  17. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/{page-8779ff2bc755ba78.js → page-309b09a142a2995d.js} +1 -1
  18. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-86cd6523dcd61f1b.js +1 -0
  19. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/{page-d32871b974f7e72f.js → page-ae6cf9ce7ac84eb7.js} +1 -1
  20. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-d8610d9b77a2cae4.js → page-97e0f7067cab0724.js} +3 -3
  21. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-413b59dd764a1563.js +1 -0
  22. package/app/{.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-555f079cdf31bbf6.js → .next/static/chunks/app/(dashboard)/dashboard/providers/page-31212a5a4a9825b0.js} +1 -1
  23. package/app/.next/static/chunks/app/(dashboard)/dashboard/pxpipe/page-1805f993834a1adb.js +1 -0
  24. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-798a65a8c4d2708a.js +1 -0
  25. package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/[id]/page-aba614778bfe50ad.js +1 -0
  26. package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/page-645e7c5ec034fe8c.js +1 -0
  27. package/app/.next/static/chunks/app/(dashboard)/dashboard/token-saver/page-1711a424a8dcad0e.js +1 -0
  28. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-0c7b901caf8614b9.js +1 -0
  29. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-b085086e6c5b9387.js +1 -0
  30. package/app/.next/static/chunks/app/(dashboard)/{layout-62b4e2cdf745f8d0.js → layout-59baac68c7aedd25.js} +1 -1
  31. package/app/.next/static/css/196a6347b9104610.css +1 -0
  32. package/app/.next-cli-build/BUILD_ID +1 -1
  33. package/app/.next-cli-build/app-path-routes-manifest.json +8 -8
  34. package/app/.next-cli-build/build-manifest.json +2 -2
  35. package/app/.next-cli-build/prerender-manifest.json +3 -3
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +15 -2
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  82. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  83. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  84. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  85. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  86. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  87. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  88. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  89. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  90. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  91. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  92. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  93. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  94. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  95. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
  96. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  97. package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js +1 -1
  98. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
  99. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  100. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  101. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  102. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  103. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  104. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  105. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  106. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
  107. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  108. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +2 -2
  109. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +3 -3
  110. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  111. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  112. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  113. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  117. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  118. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  119. package/app/.next-cli-build/server/app/callback.html +1 -1
  120. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  121. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  122. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  123. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
  124. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  125. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  126. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  127. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  128. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  129. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
  130. package/app/.next-cli-build/server/app/index.html +1 -1
  131. package/app/.next-cli-build/server/app/index.rsc +4 -4
  132. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  133. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  134. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  135. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  136. package/app/.next-cli-build/server/app/landing.html +1 -1
  137. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  138. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  139. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  140. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
  141. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  142. package/app/.next-cli-build/server/app/login.html +1 -1
  143. package/app/.next-cli-build/server/app/login.rsc +4 -4
  144. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  145. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  146. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  147. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  148. package/app/.next-cli-build/server/app-paths-manifest.json +8 -8
  149. package/app/.next-cli-build/server/chunks/1350.js +1 -1
  150. package/app/.next-cli-build/server/chunks/194.js +1 -1
  151. package/app/.next-cli-build/server/chunks/369.js +2 -2
  152. package/app/.next-cli-build/server/chunks/5920.js +2 -2
  153. package/app/.next-cli-build/server/chunks/6395.js +1 -1
  154. package/app/.next-cli-build/server/chunks/6406.js +1 -1
  155. package/app/.next-cli-build/server/chunks/646.js +1 -1
  156. package/app/.next-cli-build/server/chunks/7454.js +1 -1
  157. package/app/.next-cli-build/server/chunks/869.js +1 -1
  158. package/app/.next-cli-build/server/chunks/8834.js +1 -1
  159. package/app/.next-cli-build/server/chunks/8976.js +1 -1
  160. package/app/.next-cli-build/server/chunks/8998.js +9 -9
  161. package/app/.next-cli-build/server/chunks/9261.js +6 -6
  162. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  163. package/app/.next-cli-build/server/pages/404.html +1 -1
  164. package/app/.next-cli-build/server/pages/500.html +1 -1
  165. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  166. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  167. package/app/.next-cli-build/static/chunks/{1321-4de88db4bd94a23c.js → 1321-8fda9fa8a3afd983.js} +1 -1
  168. package/app/.next-cli-build/static/chunks/1330-56405eca78b12fee.js +7 -0
  169. package/app/{.next/static/chunks/3531-936a1e7912d9876c.js → .next-cli-build/static/chunks/3531-eb5d385c954b3765.js} +7 -7
  170. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/agent-library/page-40f3ca16440f8e17.js +1 -0
  171. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-0e1d54e59ac767a1.js +1 -0
  172. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-d7205b7328b3fed1.js → page-af0d85c06970853b.js} +1 -1
  173. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-d0b6efe01e687aec.js → page-2cfc2352bc42d9b8.js} +1 -1
  174. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-62cd36ee99eaa630.js +1 -0
  175. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/routing/page-0b02e9a2f1cc6e43.js +1 -0
  176. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-ded6ec41e583b3b3.js +1 -0
  177. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-ca47b09e6ed6ae7b.js +16 -0
  178. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-772f246688672d59.js → page-78d098f14f8cff05.js} +8 -8
  179. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-d1654fba27199492.js +1 -0
  180. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-8554ba79c854167f.js → page-ff13a39fb7744f5e.js} +3 -3
  181. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/page-919f3eec8dfc9b6e.js +1 -0
  182. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-db19da41661d630b.js +1 -0
  183. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/{page-8779ff2bc755ba78.js → page-309b09a142a2995d.js} +1 -1
  184. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-86cd6523dcd61f1b.js +1 -0
  185. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/{page-d32871b974f7e72f.js → page-ae6cf9ce7ac84eb7.js} +1 -1
  186. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-d8610d9b77a2cae4.js → page-97e0f7067cab0724.js} +3 -3
  187. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/page-413b59dd764a1563.js +1 -0
  188. package/app/{.next/static/chunks/app/(dashboard)/dashboard/providers/page-555f079cdf31bbf6.js → .next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-31212a5a4a9825b0.js} +1 -1
  189. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/pxpipe/page-1805f993834a1adb.js +1 -0
  190. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-798a65a8c4d2708a.js +1 -0
  191. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/[id]/page-aba614778bfe50ad.js +1 -0
  192. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-645e7c5ec034fe8c.js +1 -0
  193. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-1711a424a8dcad0e.js +1 -0
  194. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/page-0c7b901caf8614b9.js +1 -0
  195. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-b085086e6c5b9387.js +1 -0
  196. package/app/.next-cli-build/static/chunks/app/(dashboard)/{layout-62b4e2cdf745f8d0.js → layout-59baac68c7aedd25.js} +1 -1
  197. package/app/.next-cli-build/static/css/196a6347b9104610.css +1 -0
  198. package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
  199. package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
  200. package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
  201. package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
  202. package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
  203. package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
  204. package/app/package.json +1 -1
  205. package/package.json +1 -1
  206. package/src/cli/api/client.js +1 -1
  207. package/app/.next/static/chunks/5497-78bd7208dc4a083d.js +0 -7
  208. package/app/.next/static/chunks/app/(dashboard)/dashboard/agent-library/page-24b5a8515eee26d6.js +0 -1
  209. package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-4ec8bfa73afe20a6.js +0 -1
  210. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-5cfdfdf507c8222f.js +0 -1
  211. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/routing/page-25629f96675ad55d.js +0 -1
  212. package/app/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-b54cd17200807e49.js +0 -1
  213. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-cd44cb44125275b6.js +0 -3
  214. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-52c12af07f9a6de0.js +0 -1
  215. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/page-0f54c9a5e7391a77.js +0 -1
  216. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-cfbd3661ac75b8c5.js +0 -1
  217. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-c33d24bdadcf0c6e.js +0 -1
  218. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-74d56b3b7ac42546.js +0 -1
  219. package/app/.next/static/chunks/app/(dashboard)/dashboard/pxpipe/page-bd18ad88b98cd373.js +0 -1
  220. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-b3ffcc7df06a37d8.js +0 -1
  221. package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/[id]/page-56bf48ee2068208e.js +0 -1
  222. package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/page-46986a955b8c89b2.js +0 -1
  223. package/app/.next/static/chunks/app/(dashboard)/dashboard/token-saver/page-20972a96e348f397.js +0 -1
  224. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-0cc2ccbe11cc0013.js +0 -1
  225. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-5af5fff7d28ed91d.js +0 -1
  226. package/app/.next/static/css/d89fdbc0e71b454e.css +0 -1
  227. package/app/.next-cli-build/static/chunks/5497-78bd7208dc4a083d.js +0 -7
  228. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/agent-library/page-24b5a8515eee26d6.js +0 -1
  229. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-4ec8bfa73afe20a6.js +0 -1
  230. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-5cfdfdf507c8222f.js +0 -1
  231. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/routing/page-25629f96675ad55d.js +0 -1
  232. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-b54cd17200807e49.js +0 -1
  233. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-cd44cb44125275b6.js +0 -3
  234. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-52c12af07f9a6de0.js +0 -1
  235. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/page-0f54c9a5e7391a77.js +0 -1
  236. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-cfbd3661ac75b8c5.js +0 -1
  237. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-c33d24bdadcf0c6e.js +0 -1
  238. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/page-74d56b3b7ac42546.js +0 -1
  239. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/pxpipe/page-bd18ad88b98cd373.js +0 -1
  240. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-b3ffcc7df06a37d8.js +0 -1
  241. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/[id]/page-56bf48ee2068208e.js +0 -1
  242. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-46986a955b8c89b2.js +0 -1
  243. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-20972a96e348f397.js +0 -1
  244. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/page-0cc2ccbe11cc0013.js +0 -1
  245. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-5af5fff7d28ed91d.js +0 -1
  246. package/app/.next-cli-build/static/css/d89fdbc0e71b454e.css +0 -1
  247. /package/app/.next/static/{Fq0KReA64JGBdC8atypku → rAqnK5qnXktdZ-GoobI5E}/_buildManifest.js +0 -0
  248. /package/app/.next/static/{Fq0KReA64JGBdC8atypku → rAqnK5qnXktdZ-GoobI5E}/_ssgManifest.js +0 -0
  249. /package/app/.next-cli-build/static/{Fq0KReA64JGBdC8atypku → rAqnK5qnXktdZ-GoobI5E}/_buildManifest.js +0 -0
  250. /package/app/.next-cli-build/static/{Fq0KReA64JGBdC8atypku → rAqnK5qnXktdZ-GoobI5E}/_ssgManifest.js +0 -0
@@ -42,13 +42,13 @@ ${e.length} files in ${g.length} dirs:
42
42
  `,b.slice(0,10)))h+=` ${a}
43
43
  `;b.length>10&&(h+=` +${b.length-10}
44
44
  `),h+="\n"}return g.length>20&&(h+=`+${g.length-20} more dirs
45
- `),h.replace(/\n+$/,"")}t.filterName="search-list";let u=/^Result of search in '[^']*' \(total (\d+) files?\):/,v=/^diff --git /m,w=/^@@ /m,x=/^On branch |^nothing to commit|^Changes (not |to be )|^Untracked files:/m,y=/^[*|/\\ ]*commit [0-9a-f]{7,40}(\s|$|[([<{])/im,z=/^[ MADRCU?!][ MADRCU?!] \S/m,A=/^(npm (warn|error|ERR!)|yarn (warn|error)|\s*Compiling\s+\S+|\s*Downloading\s+\S+|added \d+ package|\[ERROR\]|BUILD (SUCCESS|FAILED)|\s*Finished\s+|Successfully (installed|built)|ERROR:)/im,B=/[├└]──|│ /,C=/^[-dlbcps][rwx-]{9}/m,D=/^total \d+$/m;function E(a){return null!==j(a)}function F(a){let b=a.trim();return 0!==b.length&&(!!/^[A-Za-z]:[\\/]/.test(b)||!b.includes(":")&&(b.startsWith(".")||b.startsWith("/")||b.includes("/")||b.includes("\\")))}function G(a,b){if(!b||!a)return null;if(a.conversationState){var c=a;let b={bytesBefore:0,bytesAfter:0,hits:[]};try{let a=c.conversationState,d=[...Array.isArray(a?.history)?a.history:[]];for(let c of(a?.currentMessage&&d.push(a.currentMessage),d)){let a=c?.userInputMessage?.userInputMessageContext?.toolResults;if(Array.isArray(a)){for(let c of a)if("error"!==c.status&&Array.isArray(c.content)){for(let a of c.content)if(a&&"string"==typeof a.text){if(H(a.text))continue;a.text=I(a.text,b,"kiro-tool-result")}}}}}catch(a){return console.warn("[RTK] compressKiroFormat error:",a.message),null}return b}let d=Array.isArray(a.messages)?a.messages:Array.isArray(a.input)?a.input:null;if(!d)return null;let e={bytesBefore:0,bytesAfter:0,hits:[]};try{for(let a=0;a<d.length;a++){let b=d[a];if(b){if("function_call_output"===b.type){if(!0===b.is_error||"error"===b.status)continue;if("string"==typeof b.output){if(H(b.output))continue;b.output=I(b.output,e,"openai-responses-string")}else if(Array.isArray(b.output))for(let a=0;a<b.output.length;a++){let c=b.output[a];if(c&&"input_text"===c.type&&"string"==typeof c.text){if(H(c.text))continue;c.text=I(c.text,e,"openai-responses-array")}}continue}if("tool"===b.role&&"string"==typeof b.content){if(!0===b.is_error||H(b.content))continue;b.content=I(b.content,e,"openai-tool");continue}if(Array.isArray(b.content)){if("tool"===b.role){if(!0===b.is_error)continue;for(let a=0;a<b.content.length;a++){let c=b.content[a];if(c&&"text"===c.type&&"string"==typeof c.text){if(H(c.text))continue;c.text=I(c.text,e,"openai-tool-array")}}continue}for(let a=0;a<b.content.length;a++){let c=b.content[a];if(c&&"tool_result"===c.type&&!0!==c.is_error){if("string"==typeof c.content){if(H(c.content))continue;c.content=I(c.content,e,"claude-string")}else if(Array.isArray(c.content))for(let a=0;a<c.content.length;a++){let b=c.content[a];if(b&&"text"===b.type&&"string"==typeof b.text){if(H(b.text))continue;b.text=I(b.text,e,"claude-array")}}}}}}}}catch(a){return console.warn("[RTK] compressMessages error:",a.message),null}return e}function H(a){return"string"==typeof a&&!(a.length<8)&&(/^\s*(Error|Exception|Traceback|TypeError|ReferenceError|SyntaxError|Failed)\b/m.test(a)||/\bat\s+\S+\s+\([^)]+:\d+:\d+\)/.test(a))}function I(a,b,c){let d=a.length;if(b.bytesBefore+=d,d<500||d>0xa00000)return b.bytesAfter+=d,a;let h=function(a){var b,c;let d,h,j=a.length>1024?a.slice(0,1024):a,n=a.split("\n");if(y.test(j))return g;if(v.test(j)||w.test(j))return e;if(x.test(j))return f;if(A.test(j))return i;if(!((d=j.split("\n").filter(a=>a.trim())).length<3)&&d.filter(a=>z.test(a)).length/d.length>=.6)return f;let G=j.split("\n").filter(a=>a.trim().length>0);return G.slice(0,5).some(E)?k:G.length>=3&&G.every(F)?l:B.test(j)?p:D.test(j)||(b=j,h=new RegExp((c=C).source,c.flags.includes("g")?c.flags:c.flags+"g"),(b.match(h)||[]).length>=3)?o:u.test(j)?t:n.length>=250&&function(a){let b=0,c=0;for(let d of a.slice(0,100))0!==d.length&&(c++,s.test(d)&&b++);return!(c<5)&&b/c>=.7}(n)?r:G.length>=5?m:a.split("\n").length>=250?q:null}(a);if(!h)return b.bytesAfter+=d,a;let j=function(a,b){if("function"!=typeof a)return b;try{let c=a(b);if("string"!=typeof c)return b;return c}catch(d){let c=a.filterName||a.name||"anonymous";return console.warn(`[rtk] warning: filter '${c}' panicked — passing through raw output: ${d?.message||d}`),b}}(h,a);return!j||0===j.length||j.length>=d?(b.bytesAfter+=d,a):(b.bytesAfter+=j.length,b.hits.push({shape:c,filter:h.filterName||h.name,saved:d-j.length}),j)}function J(a){if(!a||!a.hits||0===a.hits.length)return null;let b=a.bytesBefore-a.bytesAfter,c=a.bytesBefore>0?(b/a.bytesBefore*100).toFixed(1):"0",d=Array.from(new Set(a.hits.map(a=>a.filter))).join(",");return`[RTK] saved ${b}B / ${a.bytesBefore}B (${c}%) via [${d}] hits=${a.hits.length}`}},1160:(a,b,c)=>{c.d(b,{BP:()=>l,Eh:()=>h,n8:()=>k,sk:()=>i});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[String(("u">typeof process?process.env?.LOG_LEVEL:void 0)||"").toUpperCase()]??d.INFO,f=["\uD83D\uDFE2","\uD83D\uDD35","\uD83D\uDFE3","\uD83D\uDFE1","\uD83D\uDFE0","\uD83D\uDD34","⚪","\uD83D\uDFE4"],g=0;function h(){let a=f[g%f.length];return g++,a}function i(a){let b=String(a??"");if(!b)return h();let c=0,d=Math.min(b.length,128);for(let a=0;a<d;a++)c=31*c+b.charCodeAt(a)|0;return f[Math.abs(c)%f.length]}function j(a,b,c){let d=a?`${a} `:"";return`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] ${d}${b} ${c}`}function k(a,b,c){e>d.INFO||console.log(j(a,b,c))}function l(a,b,c){console.log(j(a,b,c))}},2735:(a,b,c)=>{c.d(b,{c:()=>i});var d=c(17717),e=c(48664),f=c(19956),g=c(60290),h=c(6755);function i(a,b,c="",e=!1){if(!c.includes("claude-cli")||!a.messages?.length)return null;let f=a.messages,h=a=>"string"==typeof a?a:Array.isArray(a)?a.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"",j=!1,m=!1,n=f[f.length-1];if(n?.role==="assistant"&&n.content?.[0]?.text==="{"&&(j=!0),j||"Warmup"===h(f[0]?.content)&&(j=!0),j||1!==f.length||f[0]?.role!=="user"||"count"===h(f[0]?.content)&&(j=!0),!j&&g.C8?.length){let a=f.filter(a=>"user"===a.role).map(a=>h(a.content)).join(" ");g.C8.some(b=>a.includes(b))&&(j=!0)}if(!j&&e){let b=f.find(a=>"system"===a.role),c=h(b?.content),d=Array.isArray(a.system)?a.system.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"string"==typeof a.system?a.system:"";(c||d).includes("isNewTopic")&&(j=!0,m=!0)}if(!j)return null;let o=(0,d.Tz)(a),p=!1!==a.stream;if(m){let a=f.find(a=>"user"===a.role),c=JSON.stringify({isNewTopic:!0,title:h(a?.content).trim().split(/\s+/).slice(0,3).join(" ")});return p?l(o,b,c):k(o,b,c)}return p?l(o,b):k(o,b)}function j(a,b="CLI Command Execution: Clear Terminal"){return{id:`chatcmpl-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a,choices:[{index:0,message:{role:"assistant",content:b},finish_reason:"stop"}],usage:{prompt_tokens:1,completion_tokens:1,total_tokens:2}}}function k(a,b,c){let d=j(b,c);if(a===f.h.OPENAI)return{success:!0,response:new Response(JSON.stringify(d),{headers:{"Content-Type":"application/json"}})};let g=(0,e.Ws)(a);g.model=b;let h=m(d),i=[];for(let b of h){let c=(0,e.Y8)(f.h.OPENAI,a,b,g);c?.length>0&&i.push(...c)}let k=(0,e.Y8)(f.h.OPENAI,a,null,g);return k?.length>0&&i.push(...k),{success:!0,response:new Response(JSON.stringify(function(a,b){if(!a||0===a.length)return j("unknown");let c=a[a.length-1];if(b===f.h.CLAUDE&&a.find(a=>"message_stop"===a.type)){a.find(a=>"content_block_delta"===a.type);let b=a.find(a=>"message_delta"===a.type),d=a.find(a=>"message_start"===a.type);if(d?.message){c=d.message;let a=d.message.usage,e=b?.usage;(a||e)&&(c.usage={...a||{},...e||{},...a?.cache_read_input_tokens!==void 0?{cache_read_input_tokens:a.cache_read_input_tokens}:{},...a?.cache_creation_input_tokens!==void 0?{cache_creation_input_tokens:a.cache_creation_input_tokens}:{},...a?.input_tokens!==void 0?{input_tokens:a.input_tokens}:{}})}}return c}(i,a)),{headers:{"Content-Type":"application/json"}})}}function l(a,b,c){let d=j(b,c),g=(0,e.Ws)(a);g.model=b;let i=m(d),k=[];for(let b of i){let c=(0,e.Y8)(f.h.OPENAI,a,b,g);if(c?.length>0)for(let b of c)k.push((0,h.v8)(b,a))}let l=(0,e.Y8)(f.h.OPENAI,a,null,g);if(l?.length>0)for(let b of l)k.push((0,h.v8)(b,a));return k.push("data: [DONE]\n\n"),{success:!0,response:new Response(k.join(""),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}}function m(a){let{id:b,created:c,model:d,choices:e}=a;return[{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{role:"assistant",content:e[0].message.content},finish_reason:null}]},{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{},finish_reason:"stop"}],usage:a.usage}]}},6755:(a,b,c)=>{c.d(b,{i5:()=>q,l2:()=>r,lm:()=>g.lm,v8:()=>h.v8});var d=c(48664),e=c(19956),f=c(12407),g=c(67677),h=c(45894),i=c(48330),j=c(12828),k=c(1160);c(4905);var l=c(83611);let m=new TextEncoder,n="translate",o="passthrough";function p(a={}){let{mode:b=n,targetFormat:c,sourceFormat:q,provider:r=null,reqLogger:s=null,toolNameMap:t=null,model:u=null,connectionId:v=null,body:w=null,onStreamComplete:x=null,clientKeyId:y=null}=a,z="",A=null,B=new TextDecoder("utf-8",{fatal:!1}),C=b===n?{...(0,d.Ws)(q),provider:r,toolNameMap:t,model:u}:null,D=0,E="",F="",G=null,H=0,I=0,J={},K=null,L=!1,M=!1,N=!1,O=(0,l.H)();function P(a){if(j.T&&a&&(H++,a.startsWith("event:"))){let b=a.slice(6).trim();J[b]=(J[b]||0)+1}}function Q(a,b){let c;if(!a.trim())return;let d=a.split(/\r?\n/);for(let a of d)P(a.trim());let f=d.filter(a=>a.startsWith("data:")),i=f.map(a=>a.slice(5).replace(/^ /,"")).join("\n"),j=!1;if(f.length>0)if("[DONE]"===i.trim()){if(N)return;N=!0,c="data: [DONE]\n\n"}else try{let a=JSON.parse(i.trim()),b=(0,h.A4)(a),d=!1;if(t?.size>0&&a?.type==="content_block_start"&&a?.content_block?.type==="tool_use"){let b=t.get(a.content_block.name);b&&(a.content_block={...a.content_block,name:b},d=!0)}let f=!1;if(void 0!==a.choices&&(a.object||(a.object="chat.completion.chunk",f=!0),a.created||(a.created=Math.floor(Date.now()/1e3),f=!0)),void 0!==a.prompt_filter_results&&(delete a.prompt_filter_results,f=!0),a?.choices)for(let b of a.choices)void 0!==b.content_filter_results&&(delete b.content_filter_results,f=!0);if(a?.choices)for(let b of a.choices)b.delta?.tool_calls&&Array.isArray(b.delta.tool_calls)&&0===b.delta.tool_calls.length&&(delete b.delta.tool_calls,f=!0);if(!(0,h.c2)(a,e.h.OPENAI))return;let k=a.choices?.[0]?.delta;if("string"==typeof k?.content){let{content:a,reasoning:b}=O(k.content);b&&(k.reasoning_content=(k.reasoning_content||"")+b),a!==k.content&&(!k.reasoning_content||a&&a.trim()?k.content=a||"":delete k.content,f=!0)}let l=k?.content,m=k?.reasoning_content;l&&"string"==typeof l&&(D+=l.length,E+=l),m&&"string"==typeof m&&(D+=m.length,F+=m);let n=(0,g.f5)(a);n&&(A=(0,g._L)(A,n));let o=a.choices?.[0]?.finish_reason;if(o&&!(0,g.Gh)(a.usage)){let b=(0,g.OF)(w,D,e.h.OPENAI);a.usage=(0,g.WL)(b,e.h.OPENAI),c=`data: ${JSON.stringify(a)}
45
+ `),h.replace(/\n+$/,"")}t.filterName="search-list";let u=/^Result of search in '[^']*' \(total (\d+) files?\):/,v=/^diff --git /m,w=/^@@ /m,x=/^On branch |^nothing to commit|^Changes (not |to be )|^Untracked files:/m,y=/^[*|/\\ ]*commit [0-9a-f]{7,40}(\s|$|[([<{])/im,z=/^[ MADRCU?!][ MADRCU?!] \S/m,A=/^(npm (warn|error|ERR!)|yarn (warn|error)|\s*Compiling\s+\S+|\s*Downloading\s+\S+|added \d+ package|\[ERROR\]|BUILD (SUCCESS|FAILED)|\s*Finished\s+|Successfully (installed|built)|ERROR:)/im,B=/[├└]──|│ /,C=/^[-dlbcps][rwx-]{9}/m,D=/^total \d+$/m;function E(a){return null!==j(a)}function F(a){let b=a.trim();return 0!==b.length&&(!!/^[A-Za-z]:[\\/]/.test(b)||!b.includes(":")&&(b.startsWith(".")||b.startsWith("/")||b.includes("/")||b.includes("\\")))}function G(a,b){if(!b||!a)return null;if(a.conversationState){var c=a;let b={bytesBefore:0,bytesAfter:0,hits:[]};try{let a=c.conversationState,d=[...Array.isArray(a?.history)?a.history:[]];for(let c of(a?.currentMessage&&d.push(a.currentMessage),d)){let a=c?.userInputMessage?.userInputMessageContext?.toolResults;if(Array.isArray(a)){for(let c of a)if("error"!==c.status&&Array.isArray(c.content)){for(let a of c.content)if(a&&"string"==typeof a.text){if(H(a.text))continue;a.text=I(a.text,b,"kiro-tool-result")}}}}}catch(a){return console.warn("[RTK] compressKiroFormat error:",a.message),null}return b}let d=Array.isArray(a.messages)?a.messages:Array.isArray(a.input)?a.input:null;if(!d)return null;let e={bytesBefore:0,bytesAfter:0,hits:[]};try{for(let a=0;a<d.length;a++){let b=d[a];if(b){if("function_call_output"===b.type){if(!0===b.is_error||"error"===b.status)continue;if("string"==typeof b.output){if(H(b.output))continue;b.output=I(b.output,e,"openai-responses-string")}else if(Array.isArray(b.output))for(let a=0;a<b.output.length;a++){let c=b.output[a];if(c&&"input_text"===c.type&&"string"==typeof c.text){if(H(c.text))continue;c.text=I(c.text,e,"openai-responses-array")}}continue}if("tool"===b.role&&"string"==typeof b.content){if(!0===b.is_error||H(b.content))continue;b.content=I(b.content,e,"openai-tool");continue}if(Array.isArray(b.content)){if("tool"===b.role){if(!0===b.is_error)continue;for(let a=0;a<b.content.length;a++){let c=b.content[a];if(c&&"text"===c.type&&"string"==typeof c.text){if(H(c.text))continue;c.text=I(c.text,e,"openai-tool-array")}}continue}for(let a=0;a<b.content.length;a++){let c=b.content[a];if(c&&"tool_result"===c.type&&!0!==c.is_error){if("string"==typeof c.content){if(H(c.content))continue;c.content=I(c.content,e,"claude-string")}else if(Array.isArray(c.content))for(let a=0;a<c.content.length;a++){let b=c.content[a];if(b&&"text"===b.type&&"string"==typeof b.text){if(H(b.text))continue;b.text=I(b.text,e,"claude-array")}}}}}}}}catch(a){return console.warn("[RTK] compressMessages error:",a.message),null}return e}function H(a){return"string"==typeof a&&!(a.length<8)&&(/^\s*(Error|Exception|Traceback|TypeError|ReferenceError|SyntaxError|Failed)\b/m.test(a)||/\bat\s+\S+\s+\([^)]+:\d+:\d+\)/.test(a))}function I(a,b,c){let d=a.length;if(b.bytesBefore+=d,d<500||d>0xa00000)return b.bytesAfter+=d,a;let h=function(a){var b,c;let d,h,j=a.length>1024?a.slice(0,1024):a,n=a.split("\n");if(y.test(j))return g;if(v.test(j)||w.test(j))return e;if(x.test(j))return f;if(A.test(j))return i;if(!((d=j.split("\n").filter(a=>a.trim())).length<3)&&d.filter(a=>z.test(a)).length/d.length>=.6)return f;let G=j.split("\n").filter(a=>a.trim().length>0);return G.slice(0,5).some(E)?k:G.length>=3&&G.every(F)?l:B.test(j)?p:D.test(j)||(b=j,h=new RegExp((c=C).source,c.flags.includes("g")?c.flags:c.flags+"g"),(b.match(h)||[]).length>=3)?o:u.test(j)?t:n.length>=250&&function(a){let b=0,c=0;for(let d of a.slice(0,100))0!==d.length&&(c++,s.test(d)&&b++);return!(c<5)&&b/c>=.7}(n)?r:G.length>=5?m:a.split("\n").length>=250?q:null}(a);if(!h)return b.bytesAfter+=d,a;let j=function(a,b){if("function"!=typeof a)return b;try{let c=a(b);if("string"!=typeof c)return b;return c}catch(d){let c=a.filterName||a.name||"anonymous";return console.warn(`[rtk] warning: filter '${c}' panicked — passing through raw output: ${d?.message||d}`),b}}(h,a);return!j||0===j.length||j.length>=d?(b.bytesAfter+=d,a):(b.bytesAfter+=j.length,b.hits.push({shape:c,filter:h.filterName||h.name,saved:d-j.length}),j)}function J(a){if(!a||!a.hits||0===a.hits.length)return null;let b=a.bytesBefore-a.bytesAfter,c=a.bytesBefore>0?(b/a.bytesBefore*100).toFixed(1):"0",d=Array.from(new Set(a.hits.map(a=>a.filter))).join(",");return`[RTK] saved ${b}B / ${a.bytesBefore}B (${c}%) via [${d}] hits=${a.hits.length}`}},1160:(a,b,c)=>{c.d(b,{BP:()=>l,Eh:()=>h,n8:()=>k,sk:()=>i});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[String(("u">typeof process?process.env?.LOG_LEVEL:void 0)||"").toUpperCase()]??d.INFO,f=["\uD83D\uDFE2","\uD83D\uDD35","\uD83D\uDFE3","\uD83D\uDFE1","\uD83D\uDFE0","\uD83D\uDD34","⚪","\uD83D\uDFE4"],g=0;function h(){let a=f[g%f.length];return g++,a}function i(a){let b=String(a??"");if(!b)return h();let c=0,d=Math.min(b.length,128);for(let a=0;a<d;a++)c=31*c+b.charCodeAt(a)|0;return f[Math.abs(c)%f.length]}function j(a,b,c){let d=a?`${a} `:"";return`[${new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"})}] ${d}${b} ${c}`}function k(a,b,c){e>d.INFO||console.log(j(a,b,c))}function l(a,b,c){console.log(j(a,b,c))}},2735:(a,b,c)=>{c.d(b,{c:()=>i});var d=c(17717),e=c(48664),f=c(19956),g=c(60290),h=c(6755);function i(a,b,c="",e=!1){if(!c.includes("claude-cli")||!a.messages?.length)return null;let f=a.messages,h=a=>"string"==typeof a?a:Array.isArray(a)?a.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"",j=!1,m=!1,n=f[f.length-1];if(n?.role==="assistant"&&n.content?.[0]?.text==="{"&&(j=!0),j||"Warmup"===h(f[0]?.content)&&(j=!0),j||1!==f.length||f[0]?.role!=="user"||"count"===h(f[0]?.content)&&(j=!0),!j&&g.C8?.length){let a=f.filter(a=>"user"===a.role).map(a=>h(a.content)).join(" ");g.C8.some(b=>a.includes(b))&&(j=!0)}if(!j&&e){let b=f.find(a=>"system"===a.role),c=h(b?.content),d=Array.isArray(a.system)?a.system.filter(a=>"text"===a.type).map(a=>a.text).join(" "):"string"==typeof a.system?a.system:"";(c||d).includes("isNewTopic")&&(j=!0,m=!0)}if(!j)return null;let o=(0,d.Tz)(a),p=!1!==a.stream;if(m){let a=f.find(a=>"user"===a.role),c=JSON.stringify({isNewTopic:!0,title:h(a?.content).trim().split(/\s+/).slice(0,3).join(" ")});return p?l(o,b,c):k(o,b,c)}return p?l(o,b):k(o,b)}function j(a,b="CLI Command Execution: Clear Terminal"){return{id:`chatcmpl-${Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a,choices:[{index:0,message:{role:"assistant",content:b},finish_reason:"stop"}],usage:{prompt_tokens:1,completion_tokens:1,total_tokens:2}}}function k(a,b,c){let d=j(b,c);if(a===f.h.OPENAI)return{success:!0,response:new Response(JSON.stringify(d),{headers:{"Content-Type":"application/json"}})};let g=(0,e.Ws)(a);g.model=b;let h=m(d),i=[];for(let b of h){let c=(0,e.Y8)(f.h.OPENAI,a,b,g);c?.length>0&&i.push(...c)}let k=(0,e.Y8)(f.h.OPENAI,a,null,g);return k?.length>0&&i.push(...k),{success:!0,response:new Response(JSON.stringify(function(a,b){if(!a||0===a.length)return j("unknown");let c=a[a.length-1];if(b===f.h.CLAUDE&&a.find(a=>"message_stop"===a.type)){a.find(a=>"content_block_delta"===a.type);let b=a.find(a=>"message_delta"===a.type),d=a.find(a=>"message_start"===a.type);if(d?.message){c=d.message;let a=d.message.usage,e=b?.usage;(a||e)&&(c.usage={...a||{},...e||{},...a?.cache_read_input_tokens!==void 0?{cache_read_input_tokens:a.cache_read_input_tokens}:{},...a?.cache_creation_input_tokens!==void 0?{cache_creation_input_tokens:a.cache_creation_input_tokens}:{},...a?.input_tokens!==void 0?{input_tokens:a.input_tokens}:{}})}}return c}(i,a)),{headers:{"Content-Type":"application/json"}})}}function l(a,b,c){let d=j(b,c),g=(0,e.Ws)(a);g.model=b;let i=m(d),k=[];for(let b of i){let c=(0,e.Y8)(f.h.OPENAI,a,b,g);if(c?.length>0)for(let b of c)k.push((0,h.v8)(b,a))}let l=(0,e.Y8)(f.h.OPENAI,a,null,g);if(l?.length>0)for(let b of l)k.push((0,h.v8)(b,a));return k.push("data: [DONE]\n\n"),{success:!0,response:new Response(k.join(""),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}}function m(a){let{id:b,created:c,model:d,choices:e}=a;return[{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{role:"assistant",content:e[0].message.content},finish_reason:null}]},{id:b,object:"chat.completion.chunk",created:c,model:d,choices:[{index:0,delta:{},finish_reason:"stop"}],usage:a.usage}]}},6755:(a,b,c)=>{c.d(b,{i5:()=>q,l2:()=>r,lm:()=>g.lm,v8:()=>h.v8});var d=c(48664),e=c(19956),f=c(12407),g=c(67677),h=c(45894),i=c(48330),j=c(12828),k=c(1160);c(4905);var l=c(83611);let m=new TextEncoder,n="translate",o="passthrough";function p(a={}){let{mode:b=n,targetFormat:c,sourceFormat:q,provider:r=null,reqLogger:s=null,toolNameMap:t=null,model:u=null,connectionId:v=null,body:w=null,onStreamComplete:x=null,clientKeyId:y=null}=a,z="",A=null,B=new TextDecoder("utf-8",{fatal:!1}),C=b===n?{...(0,d.Ws)(q),provider:r,toolNameMap:t,model:u}:null,D=0,E="",F="",G=null,H=0,I=0,J={},K=null,L=!1,M=!1,N=(0,l.H)();function O(a){if(j.T&&a&&(H++,a.startsWith("event:"))){let b=a.slice(6).trim();J[b]=(J[b]||0)+1}}function P(a,b){let c;if(!a.trim())return;let d=a.split(/\r?\n/);for(let a of d)O(a.trim());let f=d.filter(a=>a.startsWith("data:")),i=f.map(a=>a.slice(5).replace(/^ /,"")).join("\n"),j=!1;if(f.length>0)if("[DONE]"===i.trim()){if(M)return;M=!0,c="data: [DONE]\n\n"}else try{let a=JSON.parse(i.trim()),b=(0,h.A4)(a),d=!1;if(t?.size>0&&a?.type==="content_block_start"&&a?.content_block?.type==="tool_use"){let b=t.get(a.content_block.name);b&&(a.content_block={...a.content_block,name:b},d=!0)}let f=!1;if(void 0!==a.choices&&(a.object||(a.object="chat.completion.chunk",f=!0),a.created||(a.created=Math.floor(Date.now()/1e3),f=!0)),void 0!==a.prompt_filter_results&&(delete a.prompt_filter_results,f=!0),a?.choices)for(let b of a.choices)void 0!==b.content_filter_results&&(delete b.content_filter_results,f=!0);if(a?.choices)for(let b of a.choices)b.delta?.tool_calls&&Array.isArray(b.delta.tool_calls)&&0===b.delta.tool_calls.length&&(delete b.delta.tool_calls,f=!0);if(!(0,h.c2)(a,e.h.OPENAI))return;let k=a.choices?.[0]?.delta;if("string"==typeof k?.content){let{content:a,reasoning:b}=N(k.content);b&&(k.reasoning_content=(k.reasoning_content||"")+b),a!==k.content&&(!k.reasoning_content||a&&a.trim()?k.content=a||"":delete k.content,f=!0)}let l=k?.content,m=k?.reasoning_content;l&&"string"==typeof l&&(D+=l.length,E+=l),m&&"string"==typeof m&&(D+=m.length,F+=m);let n=(0,g.f5)(a);n&&(A=(0,g._L)(A,n));let o=a.choices?.[0]?.finish_reason;if(o&&!(0,g.Gh)(a.usage)){let b=(0,g.OF)(w,D,e.h.OPENAI);a.usage=(0,g.WL)(b,e.h.OPENAI),c=`data: ${JSON.stringify(a)}
46
46
 
47
47
  `,A=b,j=!0}else if(o&&A){let b=(0,g.O9)(A);a.usage=(0,g.WL)(b,e.h.OPENAI),c=`data: ${JSON.stringify(a)}
48
48
 
49
49
  `,j=!0}else(b||f||d)&&(c=`data: ${JSON.stringify(a)}
50
50
 
51
- `,j=!0)}catch{return}j||c||(c=d.map(a=>a.startsWith("data:")&&!a.startsWith("data: ")?"data: "+a.slice(5):a).join("\n")+"\n\n"),s?.appendConvertedChunk?.(c),b.enqueue(m.encode(c))}function R(a,b=!1){let c=z.split(/\r?\n\r?\n/);for(let b of(z=c.pop()||"",c))Q(b,a);b&&z&&(Q(z,a),z="")}return new TransformStream({transform(a,f){G||(G=Date.now());let j=B.decode(a,{stream:!0});if(z+=j,s?.appendProviderChunk?.(j),b===o)return void R(f);let k=z.split("\n");for(let a of(z=k.pop()||"",k)){let j=a.trim();if(P(j),b===n&&c===e.h.OPENAI_RESPONSES&&j.startsWith("event:")&&(K=j.slice(6).trim()),!j)continue;let k=(0,h.tV)(j,c);if(!k)continue;let l=c===e.h.OPENAI_RESPONSES,o=l&&q===e.h.OPENAI_RESPONSES,p=l?(0,i.yx)(K,k):null;if(l&&(0,i.nu)(p,k)&&(L=!0),"string"==typeof k?.choices?.[0]?.delta?.content){let a=k.choices[0].delta,{content:b,reasoning:c}=O(a.content);c&&(a.reasoning_content=(a.reasoning_content||"")+c),b!==a.content&&(!a.reasoning_content||b&&b.trim()?a.content=b||"":delete a.content)}if(k&&k.done&&c!==e.h.OLLAMA){if(o&&!L){let a=(0,i.u9)();s?.appendConvertedChunk?.(a),f.enqueue(m.encode(a)),L=!0,I++}if(o&&!N){let a="data: [DONE]\n\n";s?.appendConvertedChunk?.(a),f.enqueue(m.encode(a))}N=!0,o&&(M=!0);continue}if(k.delta?.text&&(D+=k.delta.text.length,E+=k.delta.text),k.delta?.thinking&&(D+=k.delta.thinking.length,F+=k.delta.thinking),k.choices?.[0]?.delta?.content&&(D+=k.choices[0].delta.content.length,E+=k.choices[0].delta.content),k.choices?.[0]?.delta?.reasoning_content&&(D+=k.choices[0].delta.reasoning_content.length,F+=k.choices[0].delta.reasoning_content),k.candidates?.[0]?.content?.parts)for(let a of k.candidates[0].content.parts)a.text&&"string"==typeof a.text&&(D+=a.text.length,!0===a.thought?F+=a.text:E+=a.text);let r=(0,g.f5)(k);if(r&&(C.usage=(0,g._L)(C.usage,r)),o&&p){let a=(0,h.v8)({event:p,data:k},q);s?.appendConvertedChunk?.(a),f.enqueue(m.encode(a)),K=null,I++;continue}K=null;let t=(0,d.Y8)(c,q,k,C);if(t?._openaiIntermediate)for(let a of t._openaiIntermediate){let b=(0,h.v8)(a,e.h.OPENAI);s?.appendOpenAIChunk?.(b)}if(t?.length>0)for(let a of t){if(null==a||!(0,h.c2)(a,q))continue;let b="message_delta"===a.type||a.choices?.[0]?.finish_reason;if(C.finishReason&&b&&!(0,g.Gh)(a.usage)&&D>0){let b=(0,g.OF)(w,D,q);a.usage=(0,g.WL)(b,q),C.usage=b}else if(C.finishReason&&b&&C.usage){let b=(0,g.O9)(C.usage);a.usage=(0,g.WL)(b,q)}let c=(0,h.v8)(a,q);s?.appendConvertedChunk?.(c),f.enqueue(m.encode(c)),I++}}},async flush(a){let l=Object.entries(J).map(([a,b])=>`${a}=${b}`).join(",")||"none";(0,j.s)("SSE",`flush | provider=${r} | model=${u} | recvLines=${H} | emitted=${I} | events=[${l}]`),(0,f.uw)(u,r,v,!1);try{let j=B.decode();if(j&&(z+=j),b===o){R(a,!0),!(0,g.Gh)(A)&&D>0&&(A=(0,g.OF)(w,D,e.h.OPENAI)),(0,g.Gh)(A)?(0,g.IF)(r,A,u,v,y):(0,f.E5)({model:u,provider:r,connectionId:v,tokens:null,status:"200 OK"}).catch(()=>{});let b="antigravity"===r||"gemini"===r||"vertex"===r;if(!N&&!b){let b="data: [DONE]\n\n";s?.appendConvertedChunk?.(b),a.enqueue(m.encode(b))}x&&await x({content:E,thinking:F},A,G);return}if(z.trim()){let b=(0,h.tV)(z.trim());if(b&&!b.done){let f=(0,d.Y8)(c,q,b,C);if(f?._openaiIntermediate)for(let a of f._openaiIntermediate){let b=(0,h.v8)(a,e.h.OPENAI);s?.appendOpenAIChunk?.(b)}if(f?.length>0)for(let b of f){if(null==b)continue;let c=(0,h.v8)(b,q);s?.appendConvertedChunk?.(c),a.enqueue(m.encode(c))}}}let k=(0,d.Y8)(c,q,null,C);if(k?._openaiIntermediate)for(let a of k._openaiIntermediate){let b=(0,h.v8)(a,e.h.OPENAI);s?.appendOpenAIChunk?.(b)}if(k?.length>0)for(let b of k){if(null==b)continue;let c=(0,h.v8)(b,q);s?.appendConvertedChunk?.(c),a.enqueue(m.encode(c))}let l=c===e.h.OPENAI_RESPONSES&&q===e.h.OPENAI_RESPONSES;if(l&&!L){let b=(0,i.u9)();s?.appendConvertedChunk?.(b),a.enqueue(m.encode(b)),L=!0}if(l&&!M&&!N){let b="data: [DONE]\n\n";s?.appendConvertedChunk?.(b),a.enqueue(m.encode(b)),M=!0,N=!0}!(0,g.Gh)(C?.usage)&&D>0&&(C.usage=(0,g.OF)(w,D,q)),(0,g.Gh)(C?.usage)?(0,g.IF)(C.provider||c,C.usage,u,v,y):(0,f.E5)({model:u,provider:r,connectionId:v,tokens:null,status:"200 OK"}).catch(()=>{}),x&&await x({content:E,thinking:F},C?.usage,G)}catch(b){let a=b?.message||String(b);(0,k.BP)("","✗",`FLUSH ERROR \xb7 ${r||c}/${u} \xb7 ${a}${b?.stack?`
51
+ `,j=!0)}catch{return}j||c||(c=d.map(a=>a.startsWith("data:")&&!a.startsWith("data: ")?"data: "+a.slice(5):a).join("\n")+"\n\n"),s?.appendConvertedChunk?.(c),b.enqueue(m.encode(c))}function Q(a,b=!1){let c=z.split(/\r?\n\r?\n/);for(let b of(z=c.pop()||"",c))P(b,a);b&&z&&(P(z,a),z="")}return new TransformStream({transform(a,f){G||(G=Date.now());let j=B.decode(a,{stream:!0});if(z+=j,s?.appendProviderChunk?.(j),b===o)return void Q(f);let k=z.split("\n");for(let a of(z=k.pop()||"",k)){let j=a.trim();if(O(j),b===n&&c===e.h.OPENAI_RESPONSES&&j.startsWith("event:")&&(K=j.slice(6).trim()),!j)continue;let k=(0,h.tV)(j,c);if(!k)continue;let l=c===e.h.OPENAI_RESPONSES,o=l&&q===e.h.OPENAI_RESPONSES,p=l?(0,i.yx)(K,k):null;if(l&&(0,i.nu)(p,k)&&(L=!0),"string"==typeof k?.choices?.[0]?.delta?.content){let a=k.choices[0].delta,{content:b,reasoning:c}=N(a.content);c&&(a.reasoning_content=(a.reasoning_content||"")+c),b!==a.content&&(!a.reasoning_content||b&&b.trim()?a.content=b||"":delete a.content)}if(k&&k.done&&c!==e.h.OLLAMA){if(o&&!L){let a=(0,i.u9)();s?.appendConvertedChunk?.(a),f.enqueue(m.encode(a)),L=!0,I++}if((o||q===e.h.OPENAI)&&!M){let a="data: [DONE]\n\n";s?.appendConvertedChunk?.(a),f.enqueue(m.encode(a))}M=!0;continue}if(k.delta?.text&&(D+=k.delta.text.length,E+=k.delta.text),k.delta?.thinking&&(D+=k.delta.thinking.length,F+=k.delta.thinking),k.choices?.[0]?.delta?.content&&(D+=k.choices[0].delta.content.length,E+=k.choices[0].delta.content),k.choices?.[0]?.delta?.reasoning_content&&(D+=k.choices[0].delta.reasoning_content.length,F+=k.choices[0].delta.reasoning_content),k.candidates?.[0]?.content?.parts)for(let a of k.candidates[0].content.parts)a.text&&"string"==typeof a.text&&(D+=a.text.length,!0===a.thought?F+=a.text:E+=a.text);let r=(0,g.f5)(k);if(r&&(C.usage=(0,g._L)(C.usage,r)),o&&p){let a=(0,h.v8)({event:p,data:k},q);s?.appendConvertedChunk?.(a),f.enqueue(m.encode(a)),K=null,I++;continue}K=null;let t=(0,d.Y8)(c,q,k,C);if(t?._openaiIntermediate)for(let a of t._openaiIntermediate){let b=(0,h.v8)(a,e.h.OPENAI);s?.appendOpenAIChunk?.(b)}if(t?.length>0)for(let a of t){if(null==a||!(0,h.c2)(a,q))continue;let b="message_delta"===a.type||a.choices?.[0]?.finish_reason;if(C.finishReason&&b&&!(0,g.Gh)(a.usage)&&D>0){let b=(0,g.OF)(w,D,q);a.usage=(0,g.WL)(b,q),C.usage=b}else if(C.finishReason&&b&&C.usage){let b=(0,g.O9)(C.usage);a.usage=(0,g.WL)(b,q)}let c=(0,h.v8)(a,q);s?.appendConvertedChunk?.(c),f.enqueue(m.encode(c)),I++}}},async flush(a){let l=Object.entries(J).map(([a,b])=>`${a}=${b}`).join(",")||"none";(0,j.s)("SSE",`flush | provider=${r} | model=${u} | recvLines=${H} | emitted=${I} | events=[${l}]`),(0,f.uw)(u,r,v,!1);try{let j=B.decode();if(j&&(z+=j),b===o){Q(a,!0),!(0,g.Gh)(A)&&D>0&&(A=(0,g.OF)(w,D,e.h.OPENAI)),(0,g.Gh)(A)?(0,g.IF)(r,A,u,v,y):(0,f.E5)({model:u,provider:r,connectionId:v,tokens:null,status:"200 OK"}).catch(()=>{});let b="antigravity"===r||"gemini"===r||"vertex"===r;if(!M&&!b){let b="data: [DONE]\n\n";s?.appendConvertedChunk?.(b),a.enqueue(m.encode(b))}x&&await x({content:E,thinking:F},A,G);return}if(z.trim()){let b=(0,h.tV)(z.trim());if(b&&!b.done){let f=(0,d.Y8)(c,q,b,C);if(f?._openaiIntermediate)for(let a of f._openaiIntermediate){let b=(0,h.v8)(a,e.h.OPENAI);s?.appendOpenAIChunk?.(b)}if(f?.length>0)for(let b of f){if(null==b)continue;let c=(0,h.v8)(b,q);s?.appendConvertedChunk?.(c),a.enqueue(m.encode(c))}}}let k=(0,d.Y8)(c,q,null,C);if(k?._openaiIntermediate)for(let a of k._openaiIntermediate){let b=(0,h.v8)(a,e.h.OPENAI);s?.appendOpenAIChunk?.(b)}if(k?.length>0)for(let b of k){if(null==b)continue;let c=(0,h.v8)(b,q);s?.appendConvertedChunk?.(c),a.enqueue(m.encode(c))}let l=c===e.h.OPENAI_RESPONSES&&q===e.h.OPENAI_RESPONSES;if(l&&!L){let b=(0,i.u9)();s?.appendConvertedChunk?.(b),a.enqueue(m.encode(b)),L=!0}if((l||q===e.h.OPENAI)&&!M){let b="data: [DONE]\n\n";s?.appendConvertedChunk?.(b),a.enqueue(m.encode(b)),M=!0}!(0,g.Gh)(C?.usage)&&D>0&&(C.usage=(0,g.OF)(w,D,q)),(0,g.Gh)(C?.usage)?(0,g.IF)(C.provider||c,C.usage,u,v,y):(0,f.E5)({model:u,provider:r,connectionId:v,tokens:null,status:"200 OK"}).catch(()=>{}),x&&await x({content:E,thinking:F},C?.usage,G)}catch(b){let a=b?.message||String(b);(0,k.BP)("","✗",`FLUSH ERROR \xb7 ${r||c}/${u} \xb7 ${a}${b?.stack?`
52
52
  ${b.stack}`:""}`)}}})}function q(a,b,c=null,d=null,e=null,f=null,g=null,h=null,i=null,j=null){return p({mode:n,targetFormat:a,sourceFormat:b,provider:c,reqLogger:d,toolNameMap:e,model:f,connectionId:g,body:h,onStreamComplete:i,clientKeyId:j})}function r(a=null,b=null,c=null,d=null,e=null,f=null,g=null,h=null){return p({mode:o,provider:a,reqLogger:b,toolNameMap:c,model:d,connectionId:e,body:f,onStreamComplete:g,clientKeyId:h})}},12197:(a,b,c)=>{c.d(b,{El:()=>i,f3:()=>o,mS:()=>h,u1:()=>j});var d=c(77598),e=c(12407),f=c(66573),g=c(92);let h="sb_vault_search",i=6144;function j(a){let b=Number(a);return Number.isFinite(b)?Math.max(7,b):7}let k=!1;async function l(a,b){try{var c;let h,i;if("string"!=typeof a)return a;let j=Buffer.byteLength(a,"utf8");if(b.stats.bytesBefore+=j,j<b.thresholdBytes||(0,g.mE)(a))return b.stats.bytesAfter+=j,a;let k=(c=b.conversationId,`vlt_${(0,d.createHash)("sha256").update(`${c}\0${Date.now()}\0${Math.random()}\0${a.length}`).digest("hex").slice(0,12)}`),l=function(a,b=4e3){if("string"!=typeof a||!a)return[];let c=Math.max(1,Math.floor(Number(b)||4e3)),d=[],e=a,g=0;for(;e&&g++<2e3;){if(e.length<=c){d.push(e),e="";break}let a=e.lastIndexOf("\n\n",c);a<.5*c&&(a=e.lastIndexOf("\n",c)),a<.5*c&&(a=-1);let b=a>0?e.slice(0,a):(0,f.Wg)(e,c);if(b||(b=(0,f.Wg)(e,c)),!b)break;d.push(b),e=e.slice(b.length)}return e||0===d.length?[]:d}(a);if(0===l.length)return b.stats.bytesAfter+=j,a;let m=!1;try{m=await (0,e.M8)({id:k,conversationId:b.conversationId,toolName:b.toolNameHint,content:a,chunks:l,ttlMs:b.ttlMs})}catch{}if(!m)return b.stats.bytesAfter+=j,a;let n=(h=(0,f.Wg)(a,500),i=a.length>h.length?"…":"",`[Switchboard vault] The full tool result (${a.length} chars) was moved to the conversation vault to save context. A preview is below. To read the rest, call the sb_vault_search tool with vault_id "${k}" and a query describing what you need.
53
53
 
54
54
  --- preview (first 500 chars) ---
@@ -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:()=>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
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,eo:()=>aF,M1:()=>as,S7:()=>aS,nV:()=>au,il:()=>Q,Z:()=>aV,K6:()=>aW,bZ:()=>aJ,o1:()=>R,CN:()=>$,ef:()=>P,n7:()=>_,M5:()=>J,FK:()=>aT,e6:()=>aK,BM:()=>S,Ss:()=>ac,eB:()=>H,gP:()=>aM,j1:()=>aw,DZ:()=>K,C0:()=>aU,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=[{id:"executor",name:"Executor.sh (Tool Gateway)",description:"Unified MCP tool gateway for OpenAPI, GraphQL, MCP servers & sandboxed JavaScript functions (executor.sh)",transport:"stdio",command:"npx",args:["-y","executor","mcp"],notes:"Executor.sh tool execution gateway (https://executor.sh)",docsUrl:"https://executor.sh",featured:!0},{id:"filesystem",name:"Filesystem MCP",description:"Official Model Context Protocol local filesystem access server",transport:"stdio",command:"npx",args:["-y","@modelcontextprotocol/server-filesystem","."],notes:"Local workspace filesystem provider",docsUrl:"https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem"},{id:"github",name:"GitHub MCP",description:"GitHub issues, pull requests, commits, and repository operations",transport:"stdio",command:"npx",args:["-y","@modelcontextprotocol/server-github"],env:{GITHUB_PERSONAL_ACCESS_TOKEN:"${GITHUB_TOKEN}"},notes:"Requires GITHUB_TOKEN environment variable",docsUrl:"https://github.com/modelcontextprotocol/servers/tree/main/src/github"},{id:"fetch",name:"Fetch MCP",description:"Web content fetching and HTML to markdown converter",transport:"stdio",command:"npx",args:["-y","@modelcontextprotocol/server-fetch"],notes:"Web page extraction provider",docsUrl:"https://github.com/modelcontextprotocol/servers/tree/main/src/fetch"}],aG=["githubusercontent.com","github.com","raw.githubusercontent.com","gitlab.com","bitbucket.org","jsdelivr.net","cdn.jsdelivr.net"];async function aH(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(!aG.some(a=>c===a||c.endsWith(`.${a}`)))return{ok:!1,error:"host_not_allowlisted",message:`Host not allowlisted. Allowed: ${aG.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 aI(a,b={}){let c,d=await aH(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 aJ(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 aI(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 aK(a){let b=await aH(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"}}}async function aL(a,b,c="main",d,e={}){let f=`${a}/${b}`,g=e.timeoutMs??15e3,h=[];async function i(c){let d=`https://api.github.com/repos/${a}/${b}/git/trees/${c}?recursive=1`,e=await aH(d);if(!e.ok)return null;try{let a=await fetch(e.url.toString(),{headers:{Accept:"application/vnd.github.v3+json","User-Agent":"Switchboard-Agent-Library/1.0"},signal:AbortSignal.timeout(g),redirect:"error"});if(!a.ok)return null;let b=await a.json();if(!b||!Array.isArray(b.tree))return null;return b.tree}catch{return null}}let j=c,k=await i(j);if(!k&&"main"===c){let a=await i("master");a&&(k=a,j="master")}if(k&&k.length>0)for(let c of k){if("blob"!==c.type)continue;let e=c.path;if("SKILL.md"!==e&&!e.endsWith("/SKILL.md")||d&&!e.startsWith(d))continue;let f=b;if("SKILL.md"===e)f=b;else{let a=e.split("/").filter(Boolean);f=a.length>1?a[a.length-2]:b}let g=t(f)||"skill",i=`https://raw.githubusercontent.com/${a}/${b}/${j}/${e}`;h.push({skillId:g,path:e,rawUrl:i})}if(0===h.length)for(let c of[{path:"SKILL.md",skillId:b},{path:`skills/${b}/SKILL.md`,skillId:b},...d?[{path:`${d.replace(/\/+$/,"")}/SKILL.md`,skillId:d.split("/").pop()||b}]:[],{path:"skills/ego-browser/SKILL.md",skillId:"ego-browser"},{path:`.claude/skills/${b}/SKILL.md`,skillId:b},{path:`.agents/skills/${b}/SKILL.md`,skillId:b}]){let d=`https://raw.githubusercontent.com/${a}/${b}/${j}/${c.path}`,e=await aI(d,{timeoutMs:5e3});if(e.ok&&"markdown"in e){let a=c.skillId,b="",f=e.markdown.match(/^name:\s*(.+)$/m),g=e.markdown.match(/^description:\s*(.+)$/m);f&&(a=f[1].trim().replace(/^["']|["']$/g,"")),g&&(b=g[1].trim().replace(/^["']|["']$/g,""));let i=t(f?f[1]:c.skillId)||c.skillId;h.push({skillId:i,path:c.path,rawUrl:d,title:a,description:b,preview:e.markdown.slice(0,4e3),bytes:e.markdown.length});break}}if(0===h.length)return{ok:!1,error:"no_skills_found",message:`No SKILL.md found in ${f} (branch: ${j})`};if(1===h.length&&!h[0].preview){let a=await aI(h[0].rawUrl,{timeoutMs:g});if(a.ok&&"markdown"in a){let b=a.markdown,c=b.match(/^name:\s*(.+)$/m),d=b.match(/^description:\s*(.+)$/m);c&&(h[0].title=c[1].trim().replace(/^["']|["']$/g,""),h[0].skillId=t(c[1])||h[0].skillId),d&&(h[0].description=d[1].trim().replace(/^["']|["']$/g,"")),h[0].preview=b.slice(0,4e3),h[0].bytes=b.length}}return{ok:!0,type:1===h.length?"single":"multiple",repo:f,branch:j,skills:h}}async function aM(a,b={}){let c=function(a){let b=String(a||"").trim();if(!b)return{type:"invalid",error:"Empty input"};if(!(b=(b=(b=(b=(b=b.replace(/^["'`]|["'`]$/g,"").trim()).replace(/^(?:npx\s+)?(?:skills|switchboard|agentsync|agent-library)\s+(?:add|install)\s+/i,"")).replace(/^(?:add|install)\s+/i,"")).split(/\s+/).filter(a=>!/^-(?:g|y|p|d|f|v)$|^--(?:global|yes|project|confirm|dry-run|force|verbose)$/i.test(a)).join(" ").trim()).replace(/^["'`]|["'`]$/g,"").trim()))return{type:"invalid",error:"Empty skill target"};if(/^https?:\/\//i.test(b)){let a;try{a=new URL(b)}catch{return{type:"invalid",error:"Invalid URL"}}let c=a.hostname.toLowerCase(),d=a.pathname.replace(/^\/+|\/+$/g,"").split("/").filter(Boolean);if("raw.githubusercontent.com"===c||c.endsWith(".githubusercontent.com")){if(d.length>=3){d[0];let a=d[1];d[2];let c=d.slice(3).join("/"),e="";if(c.endsWith("SKILL.md")){let b=c.split("/").filter(Boolean);e=b.length>1?b[b.length-2]:a}else e=a;return{type:"direct_url",url:b,suggestedId:t(e)||"skill"}}return{type:"direct_url",url:b}}if(("github.com"===c||"www.github.com"===c)&&d.length>=2){let a=d[0],b=d[1].replace(/\.git$/i,"");if("blob"===d[2]&&d.length>=4){let c=d[3],e=d.slice(4).join("/"),f=`https://raw.githubusercontent.com/${a}/${b}/${c}/${e}`,g=b;if(e.endsWith("SKILL.md")){let a=e.split("/").filter(Boolean);g=a.length>1?a[a.length-2]:b}return{type:"direct_url",url:f,suggestedId:t(g)||"skill"}}return"tree"===d[2]&&d.length>=4?{type:"github_repo",owner:a,repo:b,branch:d[3]||"main",subpath:d.slice(4).join("/")||void 0}:{type:"github_repo",owner:a,repo:b,branch:"main"}}let e="skill";if(d.length>0){let a=d[d.length-1];e="skill.md"===a.toLowerCase()&&d.length>1?d[d.length-2]:a.replace(/\.[^.]+$/,"")}return{type:"direct_url",url:b,suggestedId:t(e)||"skill"}}let c=(b=b.replace(/^(?:github:|github\.com\/)/i,"").trim()).match(/^([a-zA-Z0-9_.-]+)\/([a-zA-Z0-9_.-]+)(?:@([a-zA-Z0-9_.-]+))?(?:\/(.*))?$/);if(c){let a=c[1],b=c[2].replace(/\.git$/i,"");return{type:"github_repo",owner:a,repo:b,branch:c[3]||"main",subpath:c[4]||void 0}}return{type:"invalid",error:`Unrecognized skill format: "${a}"`}}(a);if("invalid"===c.type||!c)return{ok:!1,error:"invalid_input",message:c.error||"Invalid skill input"};if("direct_url"===c.type&&c.url){let a=await aI(c.url,b);if(!a.ok)return{ok:!1,error:a.error,message:a.message};if(a.notModified||!("markdown"in a))return{ok:!1,error:"empty_content",message:"Empty skill content"};let{markdown:d}=a,e=c.suggestedId||"skill",f="",g=d.match(/^name:\s*(.+)$/m),h=d.match(/^description:\s*(.+)$/m);return g&&(e=g[1].trim().replace(/^["']|["']$/g,"")),h&&(f=h[1].trim().replace(/^["']|["']$/g,"")),{ok:!0,type:"single",skills:[{skillId:t(g?g[1]:c.suggestedId)||"skill",title:e,description:f,rawUrl:c.url,preview:d.slice(0,4e3),bytes:d.length}]}}return"github_repo"===c.type&&c.owner&&c.repo?aL(c.owner,c.repo,c.branch||"main",c.subpath,b):{ok:!1,error:"unsupported",message:"Unsupported skill format"}}function aN(a,b){return g().join(p(a),b)}async function aO(a,b){try{let c=await e().readFile(g().join(aN(a,b),".source.json"),"utf-8"),d=JSON.parse(c);return d&&"object"==typeof d?d:null}catch{return null}}async function aP(a,b,c){await e().writeFile(g().join(aN(a,b),".source.json"),JSON.stringify(c,null,2),"utf-8")}function aQ(a){let b="string"==typeof a?.source?a.source:"";return b.startsWith("url:")?b.slice(4):null}async function aR(a,b,c){return"string"==typeof c?.contentHash&&c.contentHash?c.contentHash:aD(await e().readFile(g().join(aN(a,b),"SKILL.md"),"utf-8"))}async function aS(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 aO(a,d),e=aQ(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 aR(a,b,d),f=await aI(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 aP(a,b,{...d,contentHash:e,lastChecked:g}),{id:b,status:"fresh"};let h=aD(f.markdown);return await aP(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 aT(a,b){let c=t(b);if(!c)return{ok:!1,error:"invalid_id",message:"Invalid skill id"};let d=aQ(await aO(a,c));if(!d)return{ok:!1,error:"not_url_source",message:"Skill was not installed from a URL"};let e=await aI(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 aU(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=aQ(await aO(a,d));if(!e)return{ok:!1,error:"not_url_source",message:"Skill was not installed from a URL"};let f=await aI(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 aV(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
 
@@ -14,4 +14,4 @@ un-namespaced skill folder.
14
14
 
15
15
  ## Apply without AgentSync
16
16
  Use **Dashboard → Agent library → Apply sync** instead.
17
- `,"utf-8"),{ok:!0,path:c,skills:f.map(a=>a.id),mcpCount:i.length}}async function aT(a){let b=a||await J(),c=H(b);x(c),b.includeProductSkills&&await Q(c);let[d,e,f]=await Promise.all([P(c),_(c),L(c)]);return{settings:b,libraryRoot:c,skills:d,mcpServers:e,state:f,agents:n}}},82922:(a,b,c)=>{"use strict";c.d(b,{Ik:()=>l,XP:()=>j,dr:()=>k});var d=c(79748),e=c.n(d),f=c(33873),g=c.n(f),h=c(29021);let i=/^[a-z0-9][a-z0-9_-]*$/i;function j(){for(let a of[g().join(process.cwd(),"skills"),g().join(process.cwd(),"..","skills"),g().join(process.cwd(),"..","..","skills")])if((0,h.existsSync)(a))return a;return null}async function k(a){let b=function(a){if(!a||"string"!=typeof a||!i.test(a))return null;let b=j();if(!b)return null;let c=g().join(b,a,"SKILL.md"),d=g().resolve(c);return d.startsWith(g().resolve(b)+g().sep)?d:null}(a);if(!b)return null;try{return await e().readFile(b,"utf-8")}catch(a){if(a&&"ENOENT"===a.code)return null;throw a}}function l(a,b){let c=String(b||"").replace(/\/+$/,"");return c?String(a).replace(/(?:https?:\/\/[^\s)"']+\/)?skills\/([a-z0-9][a-z0-9_-]*)\/SKILL\.md/gi,`${c}/api/skills/$1`):a}},96487:()=>{}};
17
+ `,"utf-8"),{ok:!0,path:c,skills:f.map(a=>a.id),mcpCount:i.length}}async function aW(a){let b=a||await J(),c=H(b);x(c),b.includeProductSkills&&await Q(c);let[d,e,f]=await Promise.all([P(c),_(c),L(c)]);return{settings:b,libraryRoot:c,skills:d,mcpServers:e,state:f,agents:n}}},82922:(a,b,c)=>{"use strict";c.d(b,{Ik:()=>l,XP:()=>j,dr:()=>k});var d=c(79748),e=c.n(d),f=c(33873),g=c.n(f),h=c(29021);let i=/^[a-z0-9][a-z0-9_-]*$/i;function j(){for(let a of[g().join(process.cwd(),"skills"),g().join(process.cwd(),"..","skills"),g().join(process.cwd(),"..","..","skills")])if((0,h.existsSync)(a))return a;return null}async function k(a){let b=function(a){if(!a||"string"!=typeof a||!i.test(a))return null;let b=j();if(!b)return null;let c=g().join(b,a,"SKILL.md"),d=g().resolve(c);return d.startsWith(g().resolve(b)+g().sep)?d:null}(a);if(!b)return null;try{return await e().readFile(b,"utf-8")}catch(a){if(a&&"ENOENT"===a.code)return null;throw a}}function l(a,b){let c=String(b||"").replace(/\/+$/,"");return c?String(a).replace(/(?:https?:\/\/[^\s)"']+\/)?skills\/([a-z0-9][a-z0-9_-]*)\/SKILL\.md/gi,`${c}/api/skills/$1`):a}},96487:()=>{}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=6395,exports.ids=[6395],exports.modules={36811:a=>{a.exports={TOOL_HOSTS:{antigravity:["daily-cloudcode-pa.googleapis.com","cloudcode-pa.googleapis.com"],copilot:["api.individual.githubcopilot.com"],kiro:["runtime.us-east-1.kiro.dev","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com"],cursor:["api2.cursor.sh"]}}},62911:(a,b,c)=>{c.d(b,{dM:()=>e,wn:()=>d});let d={antigravity:{id:"antigravity",name:"Antigravity",image:"/providers/antigravity.png",color:"#4285F4",description:"Google Antigravity IDE with MITM",configType:"mitm",mitmDomain:"daily-cloudcode-pa.googleapis.com",modelAliases:["gemini-3.5-flash-low","gemini-3-flash-agent","gemini-3.5-flash-extra-low","gemini-3.1-pro-low","gemini-pro-agent","claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b-medium","gemini-3-flash"],defaultModels:[{id:"gemini-3.5-flash-low",name:"Gemini 3.5 Flash (Medium) / Default",alias:"gemini-3.5-flash-low",mandatory:!0},{id:"gemini-3-flash-agent",name:"Gemini 3.5 Flash (High)",alias:"gemini-3-flash-agent"},{id:"gemini-3.5-flash-extra-low",name:"Gemini 3.5 Flash (Low)",alias:"gemini-3.5-flash-extra-low"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro (Low)",alias:"gemini-3.1-pro-low"},{id:"gemini-pro-agent",name:"Gemini 3.1 Pro (High)",alias:"gemini-pro-agent"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6 (Thinking)",alias:"claude-sonnet-4-6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 (Thinking)",alias:"claude-opus-4-6-thinking"},{id:"gpt-oss-120b-medium",name:"GPT-OSS 120B (Medium)",alias:"gpt-oss-120b-medium"},{id:"gemini-3-flash",name:"Gemini 3 Flash (Command)",alias:"gemini-3-flash"}]},copilot:{id:"copilot",name:"GitHub Copilot",image:"/providers/copilot.png",color:"#1F6FEB",description:"GitHub Copilot IDE with MITM",configType:"mitm",mitmDomain:"api.individual.githubcopilot.com",modelAliases:["gpt-5-mini","gpt-5.4-nano","claude-haiku-4.5","gpt-4o","gpt-4.1"],defaultModels:[{id:"gpt-5-mini",name:"GPT-5 mini",alias:"gpt-5-mini"},{id:"gpt-5.4-nano",name:"GPT-5.4 nano",alias:"gpt-5.4-nano"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"},{id:"gpt-4o",name:"GPT-4o",alias:"gpt-4o"},{id:"gpt-4.1",name:"GPT-4.1",alias:"gpt-4.1"}]},kiro:{id:"kiro",name:"Kiro",image:"/providers/kiro.png",color:"#FF6B00",description:"Kiro IDE with MITM",configType:"mitm",mitmDomain:"q.us-east-1.amazonaws.com",defaultModels:[{id:"claude-sonnet-5",name:"Claude Sonnet 5",alias:"claude-sonnet-5"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5",alias:"claude-sonnet-4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4",alias:"claude-sonnet-4"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2",alias:"deepseek-3.2"},{id:"minimax-m2.1",name:"MiniMax M2.1",alias:"minimax-m2.1"},{id:"simple-task",name:"Qwen3 Coder Next",alias:"simple-task"}]}},e={claude:{id:"claude",name:"Claude Code",image:"/providers/claude.png",color:"#D97757",description:"Anthropic Claude Code CLI",configType:"env",envVars:{baseUrl:"ANTHROPIC_BASE_URL",model:"ANTHROPIC_MODEL",opusModel:"ANTHROPIC_DEFAULT_OPUS_MODEL",sonnetModel:"ANTHROPIC_DEFAULT_SONNET_MODEL",fableModel:"ANTHROPIC_DEFAULT_FABLE_MODEL",haikuModel:"ANTHROPIC_DEFAULT_HAIKU_MODEL"},modelAliases:["default","sonnet","opus","fable","haiku","opusplan"],settingsFile:"~/.claude/settings.json",defaultModels:[{id:"opus",name:"Claude Opus",alias:"opus",envKey:"ANTHROPIC_DEFAULT_OPUS_MODEL",defaultValue:"cc/claude-opus-4-8"},{id:"sonnet",name:"Claude Sonnet",alias:"sonnet",envKey:"ANTHROPIC_DEFAULT_SONNET_MODEL",defaultValue:"cc/claude-sonnet-5"},{id:"fable",name:"Claude Fable",alias:"fable",envKey:"ANTHROPIC_DEFAULT_FABLE_MODEL",defaultValue:"cc/claude-fable-5"},{id:"haiku",name:"Claude Haiku",alias:"haiku",envKey:"ANTHROPIC_DEFAULT_HAIKU_MODEL",defaultValue:"cc/claude-haiku-4-5-20251001"}]},openclaw:{id:"openclaw",name:"Open Claw",image:"/providers/openclaw.png",color:"#FF6B35",description:"Open Claw AI Assistant",configType:"custom"},codex:{id:"codex",name:"OpenAI Codex CLI / App",image:"/providers/codex.png",color:"#10A37F",description:"OpenAI Codex CLI",configType:"custom"},opencode:{id:"opencode",name:"OpenCode",image:"/providers/opencode.png",color:"#E87040",description:"OpenCode AI Terminal Assistant",configType:"custom"},cowork:{id:"cowork",name:"Claude Cowork",image:"/providers/claude.png",color:"#D97757",description:"Claude Desktop Cowork (third-party inference)",configType:"custom"},hermes:{id:"hermes",name:"Hermes Agent",image:"/providers/hermes.png",color:"#8B5CF6",description:"Nous Research self-improving AI agent",configType:"custom"},droid:{id:"droid",name:"Factory Droid",image:"/providers/droid.png",color:"#00D4FF",description:"Factory Droid AI Assistant",configType:"custom"},cursor:{id:"cursor",name:"Cursor",image:"/providers/cursor.png",color:"#000000",description:"Cursor AI Code Editor",configType:"guide",modelSelection:"multiple",requiresExternalUrl:!0,notes:[{type:"warning",text:"Requires Cursor Pro account to use this feature."},{type:"cloudCheck",text:"Cursor routes requests through its own server, so local endpoint is not supported. Please enable Tunnel or Cloud Endpoint in Settings."}],guideSteps:[{step:1,title:"Open Settings",desc:"Go to Settings → Models"},{step:2,title:"Enable OpenAI API",desc:'Enable "OpenAI API key" option'},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Models",type:"modelSelector"},{step:6,title:"Add Custom Models",desc:"Click “View All Models” → “Add Custom Model” once for each selected model. The endpoint and API key are shared."}]},cline:{id:"cline",name:"Cline",image:"/providers/cline.png",color:"#00D1B2",description:"Cline AI Coding Assistant",configType:"custom"},kilo:{id:"kilo",name:"Kilo Code",image:"/providers/kilocode.png",color:"#FF6B6B",description:"Kilo Code AI Assistant",configType:"custom"},roo:{id:"roo",name:"Roo",image:"/providers/roo.png",color:"#FF6B6B",description:"Roo AI Assistant",configType:"guide",modelSelection:"multiple",guideSteps:[{step:1,title:"Open Settings",desc:"Go to Roo Settings panel"},{step:2,title:"Select Provider",desc:"Choose API Provider → OpenAI Compatible"},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Models",type:"modelSelector"},{step:6,title:"Create Profiles",desc:"Create one named Switchboard API Configuration Profile per selected model; Roo stores one model per profile."}]},continue:{id:"continue",name:"Continue",image:"/providers/continue.png",color:"#7C3AED",description:"Continue AI Assistant",configType:"guide",modelSelection:"multiple",guideSteps:[{step:1,title:"Open Config",desc:"Open Continue configuration file"},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Select Models",type:"modelSelector"},{step:4,title:"Add Model Config",desc:"Merge the generated entries into ~/.continue/config.yaml."}],codeBlock:{language:"yaml",code:({baseUrl:a,apiKey:b,models:c})=>`name: Switchboard
1
+ "use strict";exports.id=6395,exports.ids=[6395],exports.modules={36811:a=>{a.exports={TOOL_HOSTS:{antigravity:["daily-cloudcode-pa.googleapis.com","cloudcode-pa.googleapis.com"],copilot:["api.individual.githubcopilot.com"],kiro:["runtime.us-east-1.kiro.dev","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com"],cursor:["api2.cursor.sh"]}}},50412:(a,b,c)=>{c.d(b,{x0:()=>x.default,Ex:()=>j.default,$n:()=>d.default,nh:()=>C.default,Zp:()=>g.default,Qv:()=>i.CardSkeleton,CK:()=>o.default,uo:()=>h.ConfirmModal,G9:()=>t.default,wI:()=>w.default,vj:()=>v.default,vE:()=>u.default,pd:()=>e.default,Mh:()=>s.default,uR:()=>n.default,Nf:()=>p.default,aF:()=>h.default,rq:()=>m.default,gw:()=>y.default,LF:()=>l.default,Wx:()=>B.default,gM:()=>r.default,Iz:()=>z.default,l6:()=>f.default,lM:()=>k.default,m_:()=>A.default,jK:()=>q.default});var d=c(99070),e=c(83552),f=c(4770),g=c(17660),h=c(95145),i=c(74812);c(25919);var j=c(75171),k=c(95514);c(53845),c(19308),c(42196),c(32456),c(48781);var l=c(79346),m=c(83352),n=c(39645),o=c(62727),p=c(20084),q=c(87226);c(267),c(3236),c(11229);var r=c(91809);c(4481);var s=c(5291);c(56110);var t=c(51109),u=c(79488),v=c(43182),w=c(51585),x=c(67738),y=c(50585),z=c(91099),A=c(32971),B=c(11633),C=c(38930);c(5993),c(53838)},62911:(a,b,c)=>{c.d(b,{dM:()=>e,wn:()=>d});let d={antigravity:{id:"antigravity",name:"Antigravity",image:"/providers/antigravity.png",color:"#4285F4",description:"Google Antigravity IDE with MITM",configType:"mitm",mitmDomain:"daily-cloudcode-pa.googleapis.com",modelAliases:["gemini-3.5-flash-low","gemini-3-flash-agent","gemini-3.5-flash-extra-low","gemini-3.1-pro-low","gemini-pro-agent","claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b-medium","gemini-3-flash"],defaultModels:[{id:"gemini-3.5-flash-low",name:"Gemini 3.5 Flash (Medium) / Default",alias:"gemini-3.5-flash-low",mandatory:!0},{id:"gemini-3-flash-agent",name:"Gemini 3.5 Flash (High)",alias:"gemini-3-flash-agent"},{id:"gemini-3.5-flash-extra-low",name:"Gemini 3.5 Flash (Low)",alias:"gemini-3.5-flash-extra-low"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro (Low)",alias:"gemini-3.1-pro-low"},{id:"gemini-pro-agent",name:"Gemini 3.1 Pro (High)",alias:"gemini-pro-agent"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6 (Thinking)",alias:"claude-sonnet-4-6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 (Thinking)",alias:"claude-opus-4-6-thinking"},{id:"gpt-oss-120b-medium",name:"GPT-OSS 120B (Medium)",alias:"gpt-oss-120b-medium"},{id:"gemini-3-flash",name:"Gemini 3 Flash (Command)",alias:"gemini-3-flash"}]},copilot:{id:"copilot",name:"GitHub Copilot",image:"/providers/copilot.png",color:"#1F6FEB",description:"GitHub Copilot IDE with MITM",configType:"mitm",mitmDomain:"api.individual.githubcopilot.com",modelAliases:["gpt-5-mini","gpt-5.4-nano","claude-haiku-4.5","gpt-4o","gpt-4.1"],defaultModels:[{id:"gpt-5-mini",name:"GPT-5 mini",alias:"gpt-5-mini"},{id:"gpt-5.4-nano",name:"GPT-5.4 nano",alias:"gpt-5.4-nano"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"},{id:"gpt-4o",name:"GPT-4o",alias:"gpt-4o"},{id:"gpt-4.1",name:"GPT-4.1",alias:"gpt-4.1"}]},kiro:{id:"kiro",name:"Kiro",image:"/providers/kiro.png",color:"#FF6B00",description:"Kiro IDE with MITM",configType:"mitm",mitmDomain:"q.us-east-1.amazonaws.com",defaultModels:[{id:"claude-sonnet-5",name:"Claude Sonnet 5",alias:"claude-sonnet-5"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5",alias:"claude-sonnet-4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4",alias:"claude-sonnet-4"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2",alias:"deepseek-3.2"},{id:"minimax-m2.1",name:"MiniMax M2.1",alias:"minimax-m2.1"},{id:"simple-task",name:"Qwen3 Coder Next",alias:"simple-task"}]}},e={claude:{id:"claude",name:"Claude Code",image:"/providers/claude.png",color:"#D97757",description:"Anthropic Claude Code CLI",configType:"env",envVars:{baseUrl:"ANTHROPIC_BASE_URL",model:"ANTHROPIC_MODEL",opusModel:"ANTHROPIC_DEFAULT_OPUS_MODEL",sonnetModel:"ANTHROPIC_DEFAULT_SONNET_MODEL",fableModel:"ANTHROPIC_DEFAULT_FABLE_MODEL",haikuModel:"ANTHROPIC_DEFAULT_HAIKU_MODEL"},modelAliases:["default","sonnet","opus","fable","haiku","opusplan"],settingsFile:"~/.claude/settings.json",defaultModels:[{id:"opus",name:"Claude Opus",alias:"opus",envKey:"ANTHROPIC_DEFAULT_OPUS_MODEL",defaultValue:"cc/claude-opus-4-8"},{id:"sonnet",name:"Claude Sonnet",alias:"sonnet",envKey:"ANTHROPIC_DEFAULT_SONNET_MODEL",defaultValue:"cc/claude-sonnet-5"},{id:"fable",name:"Claude Fable",alias:"fable",envKey:"ANTHROPIC_DEFAULT_FABLE_MODEL",defaultValue:"cc/claude-fable-5"},{id:"haiku",name:"Claude Haiku",alias:"haiku",envKey:"ANTHROPIC_DEFAULT_HAIKU_MODEL",defaultValue:"cc/claude-haiku-4-5-20251001"}]},openclaw:{id:"openclaw",name:"Open Claw",image:"/providers/openclaw.png",color:"#FF6B35",description:"Open Claw AI Assistant",configType:"custom"},codex:{id:"codex",name:"OpenAI Codex CLI / App",image:"/providers/codex.png",color:"#10A37F",description:"OpenAI Codex CLI",configType:"custom"},opencode:{id:"opencode",name:"OpenCode",image:"/providers/opencode.png",color:"#E87040",description:"OpenCode AI Terminal Assistant",configType:"custom"},cowork:{id:"cowork",name:"Claude Cowork",image:"/providers/claude.png",color:"#D97757",description:"Claude Desktop Cowork (third-party inference)",configType:"custom"},hermes:{id:"hermes",name:"Hermes Agent",image:"/providers/hermes.png",color:"#8B5CF6",description:"Nous Research self-improving AI agent",configType:"custom"},droid:{id:"droid",name:"Factory Droid",image:"/providers/droid.png",color:"#00D4FF",description:"Factory Droid AI Assistant",configType:"custom"},cursor:{id:"cursor",name:"Cursor",image:"/providers/cursor.png",color:"#000000",description:"Cursor AI Code Editor",configType:"guide",modelSelection:"multiple",requiresExternalUrl:!0,notes:[{type:"warning",text:"Requires Cursor Pro account to use this feature."},{type:"cloudCheck",text:"Cursor routes requests through its own server, so local endpoint is not supported. Please enable Tunnel or Cloud Endpoint in Settings."}],guideSteps:[{step:1,title:"Open Settings",desc:"Go to Settings → Models"},{step:2,title:"Enable OpenAI API",desc:'Enable "OpenAI API key" option'},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Models",type:"modelSelector"},{step:6,title:"Add Custom Models",desc:"Click “View All Models” → “Add Custom Model” once for each selected model. The endpoint and API key are shared."}]},cline:{id:"cline",name:"Cline",image:"/providers/cline.png",color:"#00D1B2",description:"Cline AI Coding Assistant",configType:"custom"},kilo:{id:"kilo",name:"Kilo Code",image:"/providers/kilocode.png",color:"#FF6B6B",description:"Kilo Code AI Assistant",configType:"custom"},roo:{id:"roo",name:"Roo",image:"/providers/roo.png",color:"#FF6B6B",description:"Roo AI Assistant",configType:"guide",modelSelection:"multiple",guideSteps:[{step:1,title:"Open Settings",desc:"Go to Roo Settings panel"},{step:2,title:"Select Provider",desc:"Choose API Provider → OpenAI Compatible"},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Models",type:"modelSelector"},{step:6,title:"Create Profiles",desc:"Create one named Switchboard API Configuration Profile per selected model; Roo stores one model per profile."}]},continue:{id:"continue",name:"Continue",image:"/providers/continue.png",color:"#7C3AED",description:"Continue AI Assistant",configType:"guide",modelSelection:"multiple",guideSteps:[{step:1,title:"Open Config",desc:"Open Continue configuration file"},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Select Models",type:"modelSelector"},{step:4,title:"Add Model Config",desc:"Merge the generated entries into ~/.continue/config.yaml."}],codeBlock:{language:"yaml",code:({baseUrl:a,apiKey:b,models:c})=>`name: Switchboard
2
2
  version: 1.0.0
3
3
  schema: v1
4
4
  models:
@@ -1 +1 @@
1
- "use strict";exports.id=6406,exports.ids=[6406],exports.modules={3771:(a,b,c)=>{c.d(b,{l:()=>j});var d=c(42461),e=c(19956),f=c(55511),g=c(90610),h=c(60290);function i(a){if(null==a)return"";if("string"==typeof a)return a;if(Array.isArray(a)){let b=[];for(let c of a)"string"==typeof c?b.push(c):c&&"object"==typeof c&&"string"==typeof c.text&&b.push(c.text);return b.join("\n")}return String(a)}function j(a,b,c){let{messages:d,system:e}=function(a=[]){let b=[],c=[];for(let d of a){if(!d)continue;let a=d.role;if(a===g.z7.SYSTEM){let a=i(d.content);a&&c.push(a);continue}if(a===g.z7.TOOL){let a="string"==typeof d.content?d.content:i(d.content);b.push({role:g.z7.TOOL,content:[{type:"tool-result",toolCallId:d.tool_call_id||"",toolName:d.name||"",output:{type:"text",value:a}}]});continue}if(a===g.z7.ASSISTANT){let a=[],c=i(d.content);if(d.reasoning_content&&a.push({type:"reasoning",text:d.reasoning_content}),c&&a.push({type:g.x4.TEXT,text:c}),Array.isArray(d.tool_calls))for(let b of d.tool_calls){let c=b.function||{};a.push({type:"tool-call",toolCallId:b.id||"",toolName:c.name||"",input:function(a){if(null==a)return{};if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return{}}}(c.arguments)})}b.push({role:g.z7.ASSISTANT,content:a.length?a:[{type:g.x4.TEXT,text:""}]});continue}b.push({role:g.z7.USER,content:function(a){if(null==a)return[{type:g.x4.TEXT,text:""}];if("string"==typeof a)return[{type:g.x4.TEXT,text:a}];if(Array.isArray(a)){let b=[];for(let c of a)"string"==typeof c?b.push({type:g.x4.TEXT,text:c}):c&&"object"==typeof c&&(c.type===g.x4.TEXT&&"string"==typeof c.text?b.push({type:g.x4.TEXT,text:c.text}):c.type===g.x4.IMAGE_URL||c.type===g.x4.IMAGE?b.push({type:g.x4.TEXT,text:"[image omitted]"}):"string"==typeof c.text&&b.push({type:g.x4.TEXT,text:c.text}));return b.length?b:[{type:g.x4.TEXT,text:""}]}return[{type:g.x4.TEXT,text:String(a)}]}(d.content)})}return{messages:b,system:c.join("\n\n")}}(b.messages),j={model:a,messages:d,stream:!1!==c,max_tokens:b.max_tokens??b.max_output_tokens??h.Uc,temperature:b.temperature??.3};e&&(j.system=e);let k=function(a){if(!Array.isArray(a)||0===a.length)return;let b=[];for(let c of a)c&&(c.type===g.x4.FUNCTION&&c.function?b.push({name:c.function.name,description:c.function.description,input_schema:c.function.parameters||{type:"object"}}):c.name&&(c.input_schema||c.parameters)&&b.push({name:c.name,description:c.description,input_schema:c.input_schema||c.parameters}));return b.length?b:void 0}(b.tools);k&&(j.tools=k),null!=b.top_p&&(j.top_p=b.top_p);let l=new Date().toISOString().slice(0,10);return{threadId:(0,f.randomUUID)(),memory:"",config:{workingDir:process.cwd(),date:l,environment:process.platform,structure:[],isGitRepo:!1,currentBranch:"",mainBranch:"",gitStatus:"",recentCommits:[]},params:j}}(0,d.kz)(e.h.OPENAI,e.h.COMMANDCODE,j,null)},19956:(a,b,c)=>{c.d(b,{h:()=>d,t:()=>e});let d={OPENAI:"openai",OPENAI_RESPONSES:"openai-responses",OPENAI_RESPONSE:"openai-response",CLAUDE:"claude",GEMINI:"gemini",GEMINI_CLI:"gemini-cli",VERTEX:"vertex",CODEX:"codex",ANTIGRAVITY:"antigravity",KIRO:"kiro",CURSOR:"cursor",OLLAMA:"ollama",COMMANDCODE:"commandcode"};function e(a,b){return a.includes("/v1/responses")?d.OPENAI_RESPONSES:a.includes("/v1/messages")?d.CLAUDE:a.includes("/v1/chat/completions")&&Array.isArray(b?.input)?d.OPENAI:null}},42461:(a,b,c)=>{c.d(b,{E4:()=>h,KD:()=>g,kz:()=>f});let d=new Map,e=new Map;function f(a,b,c,f){let g=`${a}:${b}`;c&&d.set(g,c),f&&e.set(g,f)}function g(a,b){return d.get(`${a}:${b}`)}function h(a,b){return e.get(`${a}:${b}`)}},57642:(a,b,c)=>{c.d(b,{Ut:()=>e,a_:()=>f,bC:()=>d,lW:()=>g,zh:()=>h});let d={STOP:"stop",LENGTH:"length",TOOL_CALLS:"tool_calls",CONTENT_FILTER:"content_filter",ERROR:"error"},e={END_TURN:"end_turn",MAX_TOKENS:"max_tokens",TOOL_USE:"tool_use",STOP_SEQUENCE:"stop_sequence"},f={STOP:"STOP",MAX_TOKENS:"MAX_TOKENS",SAFETY:"SAFETY",RECITATION:"RECITATION",BLOCKLIST:"BLOCKLIST",PROHIBITED_CONTENT:"PROHIBITED_CONTENT",SPII:"SPII",IMAGE_SAFETY:"IMAGE_SAFETY",MALFORMED_FUNCTION_CALL:"MALFORMED_FUNCTION_CALL",UNEXPECTED_TOOL_CALL:"UNEXPECTED_TOOL_CALL",FINISH_REASON_UNSPECIFIED:"FINISH_REASON_UNSPECIFIED",OTHER:"OTHER",LANGUAGE:"LANGUAGE",NO_IMAGE:"NO_IMAGE"},g=new Set([f.MALFORMED_FUNCTION_CALL,f.UNEXPECTED_TOOL_CALL,f.FINISH_REASON_UNSPECIFIED,f.OTHER,f.LANGUAGE,f.NO_IMAGE]),h=new Set([f.SAFETY,f.RECITATION,f.BLOCKLIST,f.SPII,f.IMAGE_SAFETY,f.PROHIBITED_CONTENT])},83204:(a,b,c)=>{c.d(b,{P:()=>p,h:()=>q});var d=c(71553),e=c(77030);let f=new Set(["localhost","ip6-localhost","ip6-loopback","metadata.google.internal"]),g=[".internal",".local",".localhost"];function h(a){return String(a).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"")}function i(a){if(!a)return null;let b=new Set((Array.isArray(a)?a:[a]).map(h).filter(Boolean));return b.size?b:null}function j(a){let b=a.split(".");if(4!==b.length)return null;let c=0;for(let a of b){if(!/^\d{1,3}$/.test(a))return null;let b=Number(a);if(b>255)return null;c=256*c+b}return c>>>0}let k=[[j("0.0.0.0"),8],[j("10.0.0.0"),8],[j("127.0.0.0"),8],[j("169.254.0.0"),16],[j("172.16.0.0"),12],[j("192.168.0.0"),16],[j("100.64.0.0"),10]];function l(a){return k.some(([b,c])=>{let d=0===c?0:0xffffffff<<32-c>>>0;return(a&d)==(b&d)})}function m(a){let b=j(a);return null!==b&&l(b)}function n(a){let b=a.replace(/^\[|\]$/g,"").toLowerCase(),c=b.match(/^::ffff:(\d+\.\d+\.\d+\.\d+)$/),d=c?.[1]||function(a){let b=a.split("::");if(b.length>2)return null;let c=b[0]?b[0].split(":").filter(Boolean):[],d=2===b.length&&b[1]?b[1].split(":").filter(Boolean):[],e=8-c.length-d.length;if(e<0||1===b.length&&0!==e)return null;let f=[...c,...Array(e).fill("0"),...d];if(8!==f.length||f.slice(0,5).some(a=>"0"!==a)||"ffff"!==f[5])return null;let g=Number.parseInt(f[6],16),h=Number.parseInt(f[7],16);return[g,h].every(a=>Number.isInteger(a)&&a>=0&&a<=65535)?`${g>>>8}.${255&g}.${h>>>8}.${255&h}`:null}(b);if(d)return m(d);let e=function(a){let b=a.split("::");if(b.length>2)return null;let c=b[0]?b[0].split(":").filter(Boolean):[],d=2===b.length&&b[1]?b[1].split(":").filter(Boolean):[],e=8-c.length-d.length;if(e<0||1===b.length&&0!==e)return null;let f=[...c,...Array(e).fill("0"),...d];if(8!==f.length)return null;let g=f.map(a=>parseInt(a,16));return g.some(a=>!Number.isInteger(a)||Number.isNaN(a)||a<0||a>65535)?null:g}(b);return e?!!(e.every(a=>0===a)||e.every((a,b)=>7===b?1===a:0===a))||(65472&e[0])==65152||(65024&e[0])==64512:b.startsWith("fe80:")||b.startsWith("fc")||b.startsWith("fd")}function o(a,b=null){let c=h(a);if(b?.has(c))return;if(f.has(c)||g.some(a=>c.endsWith(a)))throw Error("Blocked URL: internal host");let d=function(a){if(/^\d+$/.test(a)){let b=Number(a);if(Number.isSafeInteger(b)&&b>=0&&b<=0xffffffff)return b>>>0}if(/^0x[0-9a-f]+$/i.test(a)){let b=parseInt(a,16);if(Number.isFinite(b)&&b>=0&&b<=0xffffffff)return b>>>0}let b=a.split(".");if(4===b.length&&b.every(a=>/^(0x[0-9a-f]+|0[0-7]*|[1-9]\d*)$/i.test(a))){let a=0;for(let c of b){let b;if(!Number.isFinite(b=/^0x/i.test(c)?parseInt(c,16):c.startsWith("0")&&c.length>1?parseInt(c,8):parseInt(c,10))||b<0||b>255)return null;a=256*a+b}return a>>>0}let c=a.split(".");if((2===c.length||3===c.length)&&c.every(a=>/^\d{1,3}$/.test(a))){let a=c.map(Number),b=2**(8*(4-c.length))-1;if(a.slice(0,-1).every(a=>a<=255)&&a[c.length-1]<=b)return(2===c.length?0x1000000*a[0]+a[1]:0x1000000*a[0]+65536*a[1]+a[2])>>>0}return null}(c);if(null!==d&&l(d)||m(c)||c.includes(":")&&n(c)||4===(0,e.isIP)(c)&&m(c)||6===(0,e.isIP)(c)&&n(c))throw Error("Blocked URL: private IP")}function p(a,b=null){let c;try{c=new URL(a)}catch{throw Error("Blocked URL: invalid URL")}if("http:"!==c.protocol&&"https:"!==c.protocol)throw Error("Blocked URL: unsupported scheme");o(c.hostname,i(b))}async function q(a,b=null){let c,f=i(b);p(a,b);let g=h(new URL(a).hostname);if(!f?.has(g)&&!(0,e.isIP)(g)){try{c=await (0,d.lookup)(g,{all:!0,verbatim:!0})}catch{throw Error("Blocked URL: DNS resolution failed")}if(!c?.length)throw Error("Blocked URL: DNS resolution failed");for(let a of c)o(a.address,f)}}},90610:(a,b,c)=>{c.d(b,{R4:()=>g,BY:()=>l,a_:()=>j.a_,RV:()=>e,rP:()=>k,x4:()=>f,bC:()=>j.bC,Du:()=>h,z7:()=>d,m8:()=>i});let d={USER:"user",ASSISTANT:"assistant",TOOL:"tool",SYSTEM:"system",DEVELOPER:"developer"},e={USER:"user",MODEL:"model"},f={TEXT:"text",IMAGE_URL:"image_url",IMAGE:"image",INPUT_AUDIO:"input_audio",AUDIO_URL:"audio_url",FILE:"file",FUNCTION:"function"},g={TEXT:"text",IMAGE:"image",DOCUMENT:"document",TOOL_USE:"tool_use",TOOL_RESULT:"tool_result",THINKING:"thinking",REDACTED_THINKING:"redacted_thinking"},h={MESSAGE:"message",FUNCTION_CALL:"function_call",FUNCTION_CALL_OUTPUT:"function_call_output",REASONING:"reasoning",OUTPUT_TEXT:"output_text",INPUT_TEXT:"input_text",INPUT_IMAGE:"input_image",INPUT_FILE:"input_file",SUMMARY_TEXT:"summary_text"},i=[f.TEXT,f.IMAGE_URL,f.IMAGE,f.INPUT_AUDIO,f.AUDIO_URL,f.FILE];f.TEXT,f.IMAGE_URL,f.IMAGE,g.TOOL_RESULT;var j=c(57642);let k="unknown",l="image/png"}};
1
+ "use strict";exports.id=6406,exports.ids=[6406],exports.modules={3771:(a,b,c)=>{c.d(b,{l:()=>j});var d=c(42461),e=c(19956),f=c(55511),g=c(90610),h=c(60290);function i(a){if(null==a)return"";if("string"==typeof a)return a;if(Array.isArray(a)){let b=[];for(let c of a)"string"==typeof c?b.push(c):c&&"object"==typeof c&&"string"==typeof c.text&&b.push(c.text);return b.join("\n")}return String(a)}function j(a,b,c){let{messages:d,system:e}=function(a=[]){let b=[],c=[];for(let d of a){if(!d)continue;let a=d.role;if(a===g.z7.SYSTEM){let a=i(d.content);a&&c.push(a);continue}if(a===g.z7.TOOL){let a="string"==typeof d.content?d.content:i(d.content);b.push({role:g.z7.TOOL,content:[{type:"tool-result",toolCallId:d.tool_call_id||"",toolName:d.name||"",output:{type:"text",value:a}}]});continue}if(a===g.z7.ASSISTANT){let a=[],c=i(d.content);if(d.reasoning_content&&a.push({type:"reasoning",text:d.reasoning_content}),c&&a.push({type:g.x4.TEXT,text:c}),Array.isArray(d.tool_calls))for(let b of d.tool_calls){let c=b.function||{};a.push({type:"tool-call",toolCallId:b.id||"",toolName:c.name||"",input:function(a){if(null==a)return{};if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return{raw:a}}}(c.arguments)})}b.push({role:g.z7.ASSISTANT,content:a.length?a:[{type:g.x4.TEXT,text:""}]});continue}b.push({role:g.z7.USER,content:function(a){if(null==a)return[{type:g.x4.TEXT,text:""}];if("string"==typeof a)return[{type:g.x4.TEXT,text:a}];if(Array.isArray(a)){let b=[];for(let c of a)"string"==typeof c?b.push({type:g.x4.TEXT,text:c}):c&&"object"==typeof c&&(c.type===g.x4.TEXT&&"string"==typeof c.text?b.push({type:g.x4.TEXT,text:c.text}):c.type===g.x4.IMAGE_URL||c.type===g.x4.IMAGE?c.image_url?.url?b.push({type:"image_url",image_url:{url:c.image_url.url}}):c.url?b.push({type:"image_url",image_url:{url:c.url}}):c.source?.data?b.push({type:"image",source:c.source}):b.push(c):"string"==typeof c.text&&b.push({type:g.x4.TEXT,text:c.text}));return b.length?b:[{type:g.x4.TEXT,text:""}]}return[{type:g.x4.TEXT,text:String(a)}]}(d.content)})}return{messages:b,system:c.join("\n\n")}}(b.messages),j={model:a,messages:d,stream:!1!==c,max_tokens:b.max_tokens??b.max_output_tokens??h.Uc,temperature:b.temperature??.3};e&&(j.system=e);let k=function(a){if(!Array.isArray(a)||0===a.length)return;let b=[];for(let c of a)c&&(c.type===g.x4.FUNCTION&&c.function?b.push({name:c.function.name,description:c.function.description,input_schema:c.function.parameters||{type:"object"}}):c.name&&(c.input_schema||c.parameters)&&b.push({name:c.name,description:c.description,input_schema:c.input_schema||c.parameters}));return b.length?b:void 0}(b.tools);k&&(j.tools=k),null!=b.top_p&&(j.top_p=b.top_p);let l=new Date().toISOString().slice(0,10);return{threadId:(0,f.randomUUID)(),memory:"",config:{workingDir:process.cwd(),date:l,environment:process.platform,structure:[],isGitRepo:!1,currentBranch:"",mainBranch:"",gitStatus:"",recentCommits:[]},params:j}}(0,d.kz)(e.h.OPENAI,e.h.COMMANDCODE,j,null)},19956:(a,b,c)=>{c.d(b,{h:()=>d,t:()=>e});let d={OPENAI:"openai",OPENAI_RESPONSES:"openai-responses",OPENAI_RESPONSE:"openai-response",CLAUDE:"claude",GEMINI:"gemini",GEMINI_CLI:"gemini-cli",VERTEX:"vertex",CODEX:"codex",ANTIGRAVITY:"antigravity",KIRO:"kiro",CURSOR:"cursor",OLLAMA:"ollama",COMMANDCODE:"commandcode"};function e(a,b){return a.includes("/v1/responses")?d.OPENAI_RESPONSES:a.includes("/v1/messages")?d.CLAUDE:a.includes("/v1/chat/completions")&&Array.isArray(b?.input)?d.OPENAI:null}},42461:(a,b,c)=>{c.d(b,{E4:()=>h,KD:()=>g,kz:()=>f});let d=new Map,e=new Map;function f(a,b,c,f){let g=`${a}:${b}`;c&&d.set(g,c),f&&e.set(g,f)}function g(a,b){return d.get(`${a}:${b}`)}function h(a,b){return e.get(`${a}:${b}`)}},57642:(a,b,c)=>{c.d(b,{Ut:()=>e,a_:()=>f,bC:()=>d,lW:()=>g,zh:()=>h});let d={STOP:"stop",LENGTH:"length",TOOL_CALLS:"tool_calls",CONTENT_FILTER:"content_filter",ERROR:"error"},e={END_TURN:"end_turn",MAX_TOKENS:"max_tokens",TOOL_USE:"tool_use",STOP_SEQUENCE:"stop_sequence"},f={STOP:"STOP",MAX_TOKENS:"MAX_TOKENS",SAFETY:"SAFETY",RECITATION:"RECITATION",BLOCKLIST:"BLOCKLIST",PROHIBITED_CONTENT:"PROHIBITED_CONTENT",SPII:"SPII",IMAGE_SAFETY:"IMAGE_SAFETY",MALFORMED_FUNCTION_CALL:"MALFORMED_FUNCTION_CALL",UNEXPECTED_TOOL_CALL:"UNEXPECTED_TOOL_CALL",FINISH_REASON_UNSPECIFIED:"FINISH_REASON_UNSPECIFIED",OTHER:"OTHER",LANGUAGE:"LANGUAGE",NO_IMAGE:"NO_IMAGE"},g=new Set([f.MALFORMED_FUNCTION_CALL,f.UNEXPECTED_TOOL_CALL,f.FINISH_REASON_UNSPECIFIED,f.OTHER,f.LANGUAGE,f.NO_IMAGE]),h=new Set([f.SAFETY,f.RECITATION,f.BLOCKLIST,f.SPII,f.IMAGE_SAFETY,f.PROHIBITED_CONTENT])},83204:(a,b,c)=>{c.d(b,{P:()=>p,h:()=>q});var d=c(71553),e=c(77030);let f=new Set(["localhost","ip6-localhost","ip6-loopback","metadata.google.internal"]),g=[".internal",".local",".localhost"];function h(a){return String(a).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"")}function i(a){if(!a)return null;let b=new Set((Array.isArray(a)?a:[a]).map(h).filter(Boolean));return b.size?b:null}function j(a){let b=a.split(".");if(4!==b.length)return null;let c=0;for(let a of b){if(!/^\d{1,3}$/.test(a))return null;let b=Number(a);if(b>255)return null;c=256*c+b}return c>>>0}let k=[[j("0.0.0.0"),8],[j("10.0.0.0"),8],[j("127.0.0.0"),8],[j("169.254.0.0"),16],[j("172.16.0.0"),12],[j("192.168.0.0"),16],[j("100.64.0.0"),10]];function l(a){return k.some(([b,c])=>{let d=0===c?0:0xffffffff<<32-c>>>0;return(a&d)==(b&d)})}function m(a){let b=j(a);return null!==b&&l(b)}function n(a){let b=a.replace(/^\[|\]$/g,"").toLowerCase(),c=b.match(/^::ffff:(\d+\.\d+\.\d+\.\d+)$/),d=c?.[1]||function(a){let b=a.split("::");if(b.length>2)return null;let c=b[0]?b[0].split(":").filter(Boolean):[],d=2===b.length&&b[1]?b[1].split(":").filter(Boolean):[],e=8-c.length-d.length;if(e<0||1===b.length&&0!==e)return null;let f=[...c,...Array(e).fill("0"),...d];if(8!==f.length||f.slice(0,5).some(a=>"0"!==a)||"ffff"!==f[5])return null;let g=Number.parseInt(f[6],16),h=Number.parseInt(f[7],16);return[g,h].every(a=>Number.isInteger(a)&&a>=0&&a<=65535)?`${g>>>8}.${255&g}.${h>>>8}.${255&h}`:null}(b);if(d)return m(d);let e=function(a){let b=a.split("::");if(b.length>2)return null;let c=b[0]?b[0].split(":").filter(Boolean):[],d=2===b.length&&b[1]?b[1].split(":").filter(Boolean):[],e=8-c.length-d.length;if(e<0||1===b.length&&0!==e)return null;let f=[...c,...Array(e).fill("0"),...d];if(8!==f.length)return null;let g=f.map(a=>parseInt(a,16));return g.some(a=>!Number.isInteger(a)||Number.isNaN(a)||a<0||a>65535)?null:g}(b);return e?!!(e.every(a=>0===a)||e.every((a,b)=>7===b?1===a:0===a))||(65472&e[0])==65152||(65024&e[0])==64512:b.startsWith("fe80:")||b.startsWith("fc")||b.startsWith("fd")}function o(a,b=null){let c=h(a);if(b?.has(c))return;if(f.has(c)||g.some(a=>c.endsWith(a)))throw Error("Blocked URL: internal host");let d=function(a){if(/^\d+$/.test(a)){let b=Number(a);if(Number.isSafeInteger(b)&&b>=0&&b<=0xffffffff)return b>>>0}if(/^0x[0-9a-f]+$/i.test(a)){let b=parseInt(a,16);if(Number.isFinite(b)&&b>=0&&b<=0xffffffff)return b>>>0}let b=a.split(".");if(4===b.length&&b.every(a=>/^(0x[0-9a-f]+|0[0-7]*|[1-9]\d*)$/i.test(a))){let a=0;for(let c of b){let b;if(!Number.isFinite(b=/^0x/i.test(c)?parseInt(c,16):c.startsWith("0")&&c.length>1?parseInt(c,8):parseInt(c,10))||b<0||b>255)return null;a=256*a+b}return a>>>0}let c=a.split(".");if((2===c.length||3===c.length)&&c.every(a=>/^\d{1,3}$/.test(a))){let a=c.map(Number),b=2**(8*(4-c.length))-1;if(a.slice(0,-1).every(a=>a<=255)&&a[c.length-1]<=b)return(2===c.length?0x1000000*a[0]+a[1]:0x1000000*a[0]+65536*a[1]+a[2])>>>0}return null}(c);if(null!==d&&l(d)||m(c)||c.includes(":")&&n(c)||4===(0,e.isIP)(c)&&m(c)||6===(0,e.isIP)(c)&&n(c))throw Error("Blocked URL: private IP")}function p(a,b=null){let c;try{c=new URL(a)}catch{throw Error("Blocked URL: invalid URL")}if("http:"!==c.protocol&&"https:"!==c.protocol)throw Error("Blocked URL: unsupported scheme");o(c.hostname,i(b))}async function q(a,b=null){let c,f=i(b);p(a,b);let g=h(new URL(a).hostname);if(!f?.has(g)&&!(0,e.isIP)(g)){try{c=await (0,d.lookup)(g,{all:!0,verbatim:!0})}catch{throw Error("Blocked URL: DNS resolution failed")}if(!c?.length)throw Error("Blocked URL: DNS resolution failed");for(let a of c)o(a.address,f)}}},90610:(a,b,c)=>{c.d(b,{R4:()=>g,BY:()=>l,a_:()=>j.a_,RV:()=>e,rP:()=>k,x4:()=>f,bC:()=>j.bC,Du:()=>h,z7:()=>d,m8:()=>i});let d={USER:"user",ASSISTANT:"assistant",TOOL:"tool",SYSTEM:"system",DEVELOPER:"developer"},e={USER:"user",MODEL:"model"},f={TEXT:"text",IMAGE_URL:"image_url",IMAGE:"image",INPUT_AUDIO:"input_audio",AUDIO_URL:"audio_url",FILE:"file",FUNCTION:"function"},g={TEXT:"text",IMAGE:"image",DOCUMENT:"document",TOOL_USE:"tool_use",TOOL_RESULT:"tool_result",THINKING:"thinking",REDACTED_THINKING:"redacted_thinking"},h={MESSAGE:"message",FUNCTION_CALL:"function_call",FUNCTION_CALL_OUTPUT:"function_call_output",REASONING:"reasoning",OUTPUT_TEXT:"output_text",INPUT_TEXT:"input_text",INPUT_IMAGE:"input_image",INPUT_FILE:"input_file",SUMMARY_TEXT:"summary_text"},i=[f.TEXT,f.IMAGE_URL,f.IMAGE,f.INPUT_AUDIO,f.AUDIO_URL,f.FILE];f.TEXT,f.IMAGE_URL,f.IMAGE,g.TOOL_RESULT;var j=c(57642);let k="unknown",l="image/png"}};
@@ -14,4 +14,4 @@
14
14
  `,k+1)):0===k?h&&(a.result+=" "):a.result+=l(`
15
15
  `,k):a.result+=l(`
16
16
  `,h?1+k:k),h=!0,i=!0,k=0,d=a.position;!$(n)&&0!==n;)n=a.input.charCodeAt(++a.position);am(a,d,a.position,!1)}return!0}(a,n)||function(a,b){var c,d,e=a.input.charCodeAt(a.position);if(39!==e)return!1;for(a.kind="scalar",a.result="",a.position++,c=d=a.position;0!==(e=a.input.charCodeAt(a.position));)if(39===e)if(am(a,c,a.position,!0),39!==(e=a.input.charCodeAt(++a.position)))return!0;else c=a.position,a.position++,d=a.position;else $(e)?(am(a,c,d,!0),as(a,aq(a,!1,b)),c=d=a.position):a.position===a.lineStart&&ar(a)?aj(a,"unexpected end of the document within a single quoted scalar"):(a.position++,d=a.position);aj(a,"unexpected end of the stream within a single quoted scalar")}(a,n)||function(a,b){var c,d,e,f,g,h,i,j=a.input.charCodeAt(a.position);if(34!==j)return!1;for(a.kind="scalar",a.result="",a.position++,e=f=a.position;0!==(j=a.input.charCodeAt(a.position));)if(34===j)return am(a,e,a.position,!0),a.position++,!0;else if(92===j){if(am(a,e,a.position,!0),$(j=a.input.charCodeAt(++a.position)))aq(a,!1,b);else if(j<256&&ae[j])a.result+=af[j],a.position++;else if((i=120===(c=j)?2:117===c?4:8*(85===c))>0){for(g=i,h=0;g>0;g--)(i=function(a){var b;return 48<=a&&a<=57?a-48:97<=(b=32|a)&&b<=102?b-97+10:-1}(j=a.input.charCodeAt(++a.position)))>=0?h=(h<<4)+i:aj(a,"expected hexadecimal character");a.result+=(d=h)<=65535?String.fromCharCode(d):String.fromCharCode((d-65536>>10)+55296,(d-65536&1023)+56320),a.position++}else aj(a,"unknown escape sequence");e=f=a.position}else $(j)?(am(a,e,f,!0),as(a,aq(a,!1,b)),e=f=a.position):a.position===a.lineStart&&ar(a)?aj(a,"unexpected end of the document within a double quoted scalar"):(a.position++,f=a.position);aj(a,"unexpected end of the stream within a double quoted scalar")}(a,n)?r=!0:!function(a){var b,c,d=a.input.charCodeAt(a.position);if(42!==d)return!1;for(d=a.input.charCodeAt(++a.position),b=a.position;0!==d&&!aa(d)&&!ab(d);)d=a.input.charCodeAt(++a.position);return a.position===b&&aj(a,"name of an alias node must contain at least one character"),c=a.input.slice(b,a.position),T.call(a.anchorMap,c)||aj(a,'unidentified alias "'+c+'"'),a.result=a.anchorMap[c],aq(a,!0,-1),!0}(a)?function(a,b,c){var d,e,f,g,h,i,j,k=a.kind,l=a.result,m=a.input.charCodeAt(a.position);if(aa(m)||ab(m)||35===m||38===m||42===m||33===m||124===m||62===m||39===m||34===m||37===m||64===m||96===m||(63===m||45===m)&&(aa(d=a.input.charCodeAt(a.position+1))||c&&ab(d)))return!1;for(a.kind="scalar",a.result="",e=f=a.position,g=!1;0!==m;){if(58===m){if(aa(d=a.input.charCodeAt(a.position+1))||c&&ab(d))break}else if(35===m){if(aa(a.input.charCodeAt(a.position-1)))break}else if(a.position===a.lineStart&&ar(a)||c&&ab(m))break;else if($(m))if(h=a.line,i=a.lineStart,j=a.lineIndent,aq(a,!1,-1),a.lineIndent>=b){g=!0,m=a.input.charCodeAt(a.position);continue}else{a.position=f,a.line=h,a.lineStart=i,a.lineIndent=j;break}g&&=(am(a,e,f,!1),as(a,a.line-h),e=f=a.position,!1),_(m)||(f=a.position+1),m=a.input.charCodeAt(++a.position)}return am(a,e,f,!1),!!a.result||(a.kind=k,a.result=l,!1)}(a,n,1===c)&&(r=!0,null===a.tag&&(a.tag="?")):(r=!0,(null!==a.tag||null!==a.anchor)&&aj(a,"alias node should not have any properties")),null!==a.anchor&&(a.anchorMap[a.anchor]=a.result)):0===p&&(r=h&&at(a,o))),null===a.tag)null!==a.anchor&&(a.anchorMap[a.anchor]=a.result);else if("?"===a.tag){for(null!==a.result&&"scalar"!==a.kind&&aj(a,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+a.kind+'"'),i=0,j=a.implicitTypes.length;i<j;i+=1)if((m=a.implicitTypes[i]).resolve(a.result)){a.result=m.construct(a.result),a.tag=m.tag,null!==a.anchor&&(a.anchorMap[a.anchor]=a.result);break}}else if("!"!==a.tag){if(T.call(a.typeMap[a.kind||"fallback"],a.tag))m=a.typeMap[a.kind||"fallback"][a.tag];else for(m=null,k=a.typeMap.multi[a.kind||"fallback"],i=0,j=k.length;i<j;i+=1)if(a.tag.slice(0,k[i].tag.length)===k[i].tag){m=k[i];break}m||aj(a,"unknown tag !<"+a.tag+">"),null!==a.result&&m.kind!==a.kind&&aj(a,"unacceptable node kind for !<"+a.tag+'> tag; it should be "'+m.kind+'", not "'+a.kind+'"'),m.resolve(a.result,a.tag)?(a.result=m.construct(a.result,a.tag),null!==a.anchor&&(a.anchorMap[a.anchor]=a.result)):aj(a,"cannot resolve a node with !<"+a.tag+"> explicit tag")}return null!==a.listener&&a.listener("close",a),null!==a.tag||null!==a.anchor||r}function av(a,b){a=String(a),b||={},0!==a.length&&(10!==a.charCodeAt(a.length-1)&&13!==a.charCodeAt(a.length-1)&&(a+=`
17
- `),65279===a.charCodeAt(0)&&(a=a.slice(1)));var c=new ah(a,b),d=a.indexOf("\0");for(-1!==d&&(c.position=d,aj(c,"null byte is not allowed in input")),c.input+="\0";32===c.input.charCodeAt(c.position);)c.lineIndent+=1,c.position+=1;for(;c.position<c.length-1;)!function(a){var b,c,d,e,f=a.position,g=!1;for(a.version=null,a.checkLineBreaks=a.legacy,a.tagMap=Object.create(null),a.anchorMap=Object.create(null);0!==(e=a.input.charCodeAt(a.position))&&(aq(a,!0,-1),e=a.input.charCodeAt(a.position),!(a.lineIndent>0||37!==e));){for(g=!0,e=a.input.charCodeAt(++a.position),b=a.position;0!==e&&!aa(e);)e=a.input.charCodeAt(++a.position);for(c=a.input.slice(b,a.position),d=[],c.length<1&&aj(a,"directive name must not be less than one character in length");0!==e;){for(;_(e);)e=a.input.charCodeAt(++a.position);if(35===e){do e=a.input.charCodeAt(++a.position);while(0!==e&&!$(e));break}if($(e))break;for(b=a.position;0!==e&&!aa(e);)e=a.input.charCodeAt(++a.position);d.push(a.input.slice(b,a.position))}0!==e&&ap(a),T.call(al,c)?al[c](a,c,d):ak(a,'unknown document directive "'+c+'"')}if(aq(a,!0,-1),0===a.lineIndent&&45===a.input.charCodeAt(a.position)&&45===a.input.charCodeAt(a.position+1)&&45===a.input.charCodeAt(a.position+2)?(a.position+=3,aq(a,!0,-1)):g&&aj(a,"directives end mark is expected"),au(a,a.lineIndent-1,4,!1,!0),aq(a,!0,-1),a.checkLineBreaks&&V.test(a.input.slice(f,a.position))&&ak(a,"non-ASCII line breaks are interpreted as content"),a.documents.push(a.result),a.position===a.lineStart&&ar(a)){46===a.input.charCodeAt(a.position)&&(a.position+=3,aq(a,!0,-1));return}a.position<a.length-1&&aj(a,"end of the stream or a document separator is expected")}(c);return c.documents}var aw=function(a,b){var c=av(a,b);if(0!==c.length){if(1===c.length)return c[0];throw new o("expected a single document in the stream, but found more")}},ax=Object.prototype.toString,ay=Object.prototype.hasOwnProperty,az={};az[0]="\\0",az[7]="\\a",az[8]="\\b",az[9]="\\t",az[10]="\\n",az[11]="\\v",az[12]="\\f",az[13]="\\r",az[27]="\\e",az[34]='\\"',az[92]="\\\\",az[133]="\\N",az[160]="\\_",az[8232]="\\L",az[8233]="\\P";function aA(a,b){let c=aw(a,b);return k(a,c,b),c}var aB=c(77326),aC=c(20437),aD=c(96930),aE=c(77598),aF=c.n(aE),aG=c(53859);let aH=g().join(aG.nJ,"machine-id"),aI=g().join(aG.nJ,"auth"),aJ=g().join(aI,"cli-secret"),aK=null,aL=null;async function aM(a=null){let b=a||function(){if(process.env.MACHINE_ID_SALT)return process.env.MACHINE_ID_SALT;let a=g().join(aI,"machine-id-salt");try{let b=e().readFileSync(a,"utf8").trim();if(b)return b}catch{}let b=aF().randomBytes(32).toString("hex");try{e().mkdirSync(aI,{recursive:!0,mode:448}),e().writeFileSync(a,b,{mode:384})}catch{}return b}(),c=function(){if(aK)return aK;try{if(aK=e().readFileSync(aH,"utf8").trim())return aK}catch{}try{aK=(0,aD.machineIdSync)()}catch{aK=aF().randomUUID()}try{e().mkdirSync(aG.nJ,{recursive:!0}),e().writeFileSync(aH,aK,{mode:384})}catch{}return aK}(),d="switchboard-cli-auth"===b?function(){if(aL)return aL;try{if(aL=e().readFileSync(aJ,"utf8").trim())return aL}catch{}aL=aF().randomBytes(32).toString("hex");try{e().mkdirSync(aI,{recursive:!0}),e().writeFileSync(aJ,aL,{mode:384})}catch{}return aL}():"";return aF().createHash("sha256").update(c+b+d).digest("hex").substring(0,16)}var aN=c(87886);function aO(a){if(!a||"string"!=typeof a)return{};let b=a.trim();if(!b)return{};try{if(b.startsWith("{")||b.startsWith("[")){let a;return a=JSON.parse(b,void 0),k(b,a,void 0),a||{}}return aA(b)||{}}catch{try{return aA(b)||{}}catch(a){return aN.warn("CONFIG_IMPORT","Failed to parse config content",{error:a?.message}),{}}}}async function aP(a){let b="string"==typeof a?aO(a):a||{},c={connections:0,aliases:0,combos:0,keys:0,settings:!1},d=b.connections||b.providers||[];if(Array.isArray(d)){let a=await (0,aB.getProviderConnections)();for(let b of d){if(!b||"object"!=typeof b||!b.provider)continue;let d=String(b.provider).toLowerCase(),e=a.find(a=>a.provider===d&&(a.name===b.name||b.apiKey&&a.apiKey===b.apiKey));e?await (0,aB.updateProviderConnection)(e.id,{apiKey:b.apiKey||b.key||e.apiKey,accessToken:b.accessToken||e.accessToken,refreshToken:b.refreshToken||e.refreshToken,isActive:void 0!==b.isActive?b.isActive:e.isActive,priority:void 0!==b.priority?b.priority:e.priority,providerSpecificData:{...e.providerSpecificData||{},...b.providerSpecificData||{}}}):await (0,aB.iE)({provider:d,name:b.name||`${d}-config`,authType:b.authType||(b.refreshToken?"oauth":"apikey"),apiKey:b.apiKey||b.key||"",accessToken:b.accessToken||"",refreshToken:b.refreshToken||"",isActive:void 0===b.isActive||!!b.isActive,priority:"number"==typeof b.priority?b.priority:0,providerSpecificData:b.providerSpecificData||{}}),c.connections++}}let e=b.model_aliases||b.aliases||b.modelAliases||{};if(e&&"object"==typeof e&&!Array.isArray(e))for(let[a,b]of Object.entries(e))"string"==typeof a&&"string"==typeof b&&(await (0,aB.o5)(a.trim(),b.trim()),c.aliases++);let f=b.combos||[];if(Array.isArray(f))for(let a of f){if(!a||!a.name||!Array.isArray(a.models))continue;let b=String(a.name).trim(),d=await (0,aB.Dj)(b);d?await (0,aB.oG)(d.id,{models:a.models,description:a.description||d.description}):await (0,aB.jd)({name:b,models:a.models,description:a.description||""}),c.combos++}let g=b.api_keys||b.client_keys||b.apiKeys||[];if(Array.isArray(g)&&g.length>0){let a=await (0,aB.PX)(),b=await aM();for(let d of g){if(!d||!d.name)continue;let e=String(d.name).trim();!a.find(a=>a.name===e)&&(await (0,aB.Iq)(e,b),c.keys++)}}let h=b.settings||{};if(h&&"object"==typeof h&&Object.keys(h).length>0){let a=await (0,aB.mt)();await (0,aB.Xx)({...a,...h}),c.settings=!0}return c}async function aQ(){let a=process.env.IMPORT_CONFIG_FILE||process.env.CONFIG_FILE||process.env.SWITCHBOARD_CONFIG_FILE;for(let b of a?[a]:[g().join((0,aC.getDataDir)(),"config.yaml"),g().join((0,aC.getDataDir)(),"config.yml"),g().join((0,aC.getDataDir)(),"config.json")])try{if(e().existsSync(b)){aN.info("CONFIG_IMPORT",`Auto-importing configuration from ${b}`);let a=e().readFileSync(b,"utf-8"),c=await aP(a);return aN.info("CONFIG_IMPORT","Configuration imported successfully",c),c}}catch(a){aN.warn("CONFIG_IMPORT",`Failed to auto-import config from ${b}`,{error:a?.message})}return null}},87886:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>h,error:()=>k,info:()=>i,maskKey:()=>o,request:()=>l,response:()=>m,stream:()=>n,warn:()=>j});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[process.env.LOG_LEVEL?.toUpperCase?.()]??d.INFO;function f(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}function g(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function h(a,b,c){if(e<=d.DEBUG){let d=c?` ${g(c)}`:"";console.log(`[${f()}] 🔍 [${a}] ${b}${d}`)}}function i(a,b,c){if(e<=d.INFO){let d=c?` ${g(c)}`:"";console.log(`[${f()}] ℹ️ [${a}] ${b}${d}`)}}function j(a,b,c){e<=d.WARN&&c&&g(c)}function k(a,b,c){if(e<=d.ERROR){let d=c?` ${g(c)}`:"";console.log(`[${f()}] ❌ [${a}] ${b}${d}`)}}function l(a,b,c){let d=c?` ${g(c)}`:"";console.log(`\x1b[36m[${f()}] 📥 ${a} ${b}${d}\x1b[0m`)}function m(a,b,c){let d=c?` ${g(c)}`:"";console.log(`[${f()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${d}`)}function n(a,b){let c=b?` ${g(b)}`:"";console.log(`[${f()}] 🌊 [STREAM] ${a}${c}`)}function o(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}}};
17
+ `),65279===a.charCodeAt(0)&&(a=a.slice(1)));var c=new ah(a,b),d=a.indexOf("\0");for(-1!==d&&(c.position=d,aj(c,"null byte is not allowed in input")),c.input+="\0";32===c.input.charCodeAt(c.position);)c.lineIndent+=1,c.position+=1;for(;c.position<c.length-1;)!function(a){var b,c,d,e,f=a.position,g=!1;for(a.version=null,a.checkLineBreaks=a.legacy,a.tagMap=Object.create(null),a.anchorMap=Object.create(null);0!==(e=a.input.charCodeAt(a.position))&&(aq(a,!0,-1),e=a.input.charCodeAt(a.position),!(a.lineIndent>0||37!==e));){for(g=!0,e=a.input.charCodeAt(++a.position),b=a.position;0!==e&&!aa(e);)e=a.input.charCodeAt(++a.position);for(c=a.input.slice(b,a.position),d=[],c.length<1&&aj(a,"directive name must not be less than one character in length");0!==e;){for(;_(e);)e=a.input.charCodeAt(++a.position);if(35===e){do e=a.input.charCodeAt(++a.position);while(0!==e&&!$(e));break}if($(e))break;for(b=a.position;0!==e&&!aa(e);)e=a.input.charCodeAt(++a.position);d.push(a.input.slice(b,a.position))}0!==e&&ap(a),T.call(al,c)?al[c](a,c,d):ak(a,'unknown document directive "'+c+'"')}if(aq(a,!0,-1),0===a.lineIndent&&45===a.input.charCodeAt(a.position)&&45===a.input.charCodeAt(a.position+1)&&45===a.input.charCodeAt(a.position+2)?(a.position+=3,aq(a,!0,-1)):g&&aj(a,"directives end mark is expected"),au(a,a.lineIndent-1,4,!1,!0),aq(a,!0,-1),a.checkLineBreaks&&V.test(a.input.slice(f,a.position))&&ak(a,"non-ASCII line breaks are interpreted as content"),a.documents.push(a.result),a.position===a.lineStart&&ar(a)){46===a.input.charCodeAt(a.position)&&(a.position+=3,aq(a,!0,-1));return}a.position<a.length-1&&aj(a,"end of the stream or a document separator is expected")}(c);return c.documents}var aw=function(a,b){var c=av(a,b);if(0!==c.length){if(1===c.length)return c[0];throw new o("expected a single document in the stream, but found more")}},ax=Object.prototype.toString,ay=Object.prototype.hasOwnProperty,az={};az[0]="\\0",az[7]="\\a",az[8]="\\b",az[9]="\\t",az[10]="\\n",az[11]="\\v",az[12]="\\f",az[13]="\\r",az[27]="\\e",az[34]='\\"',az[92]="\\\\",az[133]="\\N",az[160]="\\_",az[8232]="\\L",az[8233]="\\P";function aA(a,b){let c=aw(a,b);return k(a,c,b),c}var aB=c(77326),aC=c(20437),aD=c(96930),aE=c(77598),aF=c.n(aE),aG=c(53859);let aH=g().join(aG.nJ,"machine-id"),aI=g().join(aG.nJ,"auth"),aJ=g().join(aI,"cli-secret"),aK=null,aL=null;async function aM(a=null){let b=a||function(){if(process.env.MACHINE_ID_SALT)return process.env.MACHINE_ID_SALT;let a=g().join(aI,"machine-id-salt");try{let b=e().readFileSync(a,"utf8").trim();if(b)return b}catch{}let b=aF().randomBytes(32).toString("hex");try{e().mkdirSync(aI,{recursive:!0,mode:448}),e().writeFileSync(a,b,{mode:384})}catch{}return b}(),c=function(){if(aK)return aK;try{if(aK=e().readFileSync(aH,"utf8").trim())return aK}catch{}try{aK=(0,aD.machineIdSync)()}catch{aK=aF().randomUUID()}try{e().mkdirSync(aG.nJ,{recursive:!0}),e().writeFileSync(aH,aK,{mode:384})}catch{}return aK}(),d="switchboard-cli-auth"===b?function(){if(aL)return aL;try{if(aL=e().readFileSync(aJ,"utf8").trim())return aL}catch{}aL=aF().randomBytes(32).toString("hex");try{e().mkdirSync(aI,{recursive:!0}),e().writeFileSync(aJ,aL,{mode:384})}catch{}return aL}():"";return aF().createHash("sha256").update(c+b+d).digest("hex").substring(0,16)}var aN=c(87886);function aO(a){if(!a||"string"!=typeof a)return{};let b=a.trim();if(!b)return{};try{if(b.startsWith("{")||b.startsWith("[")){let a;return a=JSON.parse(b,void 0),k(b,a,void 0),a||{}}return aA(b)||{}}catch{try{return aA(b)||{}}catch(a){return aN.warn("CONFIG_IMPORT","Failed to parse config content",{error:a?.message}),{}}}}async function aP(a){let b="string"==typeof a?aO(a):a||{},c={connections:0,aliases:0,combos:0,keys:0,settings:!1},d=b.connections||b.providers||[];if(Array.isArray(d)){let a=await (0,aB.getProviderConnections)();for(let b of d){if(!b||"object"!=typeof b||!b.provider)continue;let d=String(b.provider).toLowerCase(),e=a.find(a=>a.provider===d&&(a.name===b.name||b.apiKey&&a.apiKey===b.apiKey));e?await (0,aB.updateProviderConnection)(e.id,{apiKey:b.apiKey||b.key||e.apiKey,accessToken:b.accessToken||e.accessToken,refreshToken:b.refreshToken||e.refreshToken,isActive:void 0!==b.isActive?b.isActive:e.isActive,priority:void 0!==b.priority?b.priority:e.priority,providerSpecificData:{...e.providerSpecificData||{},...b.providerSpecificData||{}}}):await (0,aB.iE)({provider:d,name:b.name||`${d}-config`,authType:b.authType||(b.refreshToken?"oauth":"apikey"),apiKey:b.apiKey||b.key||"",accessToken:b.accessToken||"",refreshToken:b.refreshToken||"",isActive:void 0===b.isActive||!!b.isActive,priority:"number"==typeof b.priority?b.priority:0,providerSpecificData:b.providerSpecificData||{}}),c.connections++}}let e=b.model_aliases||b.aliases||b.modelAliases||{};if(e&&"object"==typeof e&&!Array.isArray(e))for(let[a,b]of Object.entries(e))"string"==typeof a&&"string"==typeof b&&(await (0,aB.o5)(a.trim(),b.trim()),c.aliases++);let f=b.combos||[];if(Array.isArray(f))for(let a of f){if(!a||!a.name||!Array.isArray(a.models))continue;let b=String(a.name).trim(),d=await (0,aB.Dj)(b);d?await (0,aB.oG)(d.id,{models:a.models,description:a.description||d.description}):await (0,aB.jd)({name:b,models:a.models,description:a.description||""}),c.combos++}let g=b.api_keys||b.client_keys||b.apiKeys||[];if(Array.isArray(g)&&g.length>0){let a=await (0,aB.PX)(),b=await aM();for(let d of g){if(!d||!d.name)continue;let e=String(d.name).trim();!a.find(a=>a.name===e)&&(await (0,aB.Iq)(e,b),c.keys++)}}let h=b.settings||{};if(h&&"object"==typeof h&&Object.keys(h).length>0){let a=await (0,aB.mt)();await (0,aB.Xx)({...a,...h}),c.settings=!0}return c}async function aQ(){let a=process.env.IMPORT_CONFIG_FILE||process.env.CONFIG_FILE||process.env.SWITCHBOARD_CONFIG_FILE;for(let b of a?[a]:[g().join((0,aC.ok)(),"config.yaml"),g().join((0,aC.ok)(),"config.yml"),g().join((0,aC.ok)(),"config.json")])try{if(e().existsSync(b)){aN.info("CONFIG_IMPORT",`Auto-importing configuration from ${b}`);let a=e().readFileSync(b,"utf-8"),c=await aP(a);return aN.info("CONFIG_IMPORT","Configuration imported successfully",c),c}}catch(a){aN.warn("CONFIG_IMPORT",`Failed to auto-import config from ${b}`,{error:a?.message})}return null}},87886:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>h,error:()=>k,info:()=>i,maskKey:()=>o,request:()=>l,response:()=>m,stream:()=>n,warn:()=>j});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[process.env.LOG_LEVEL?.toUpperCase?.()]??d.INFO;function f(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}function g(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function h(a,b,c){if(e<=d.DEBUG){let d=c?` ${g(c)}`:"";console.log(`[${f()}] 🔍 [${a}] ${b}${d}`)}}function i(a,b,c){if(e<=d.INFO){let d=c?` ${g(c)}`:"";console.log(`[${f()}] ℹ️ [${a}] ${b}${d}`)}}function j(a,b,c){e<=d.WARN&&c&&g(c)}function k(a,b,c){if(e<=d.ERROR){let d=c?` ${g(c)}`:"";console.log(`[${f()}] ❌ [${a}] ${b}${d}`)}}function l(a,b,c){let d=c?` ${g(c)}`:"";console.log(`\x1b[36m[${f()}] 📥 ${a} ${b}${d}\x1b[0m`)}function m(a,b,c){let d=c?` ${g(c)}`:"";console.log(`[${f()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${d}`)}function n(a,b){let c=b?` ${g(b)}`:"";console.log(`[${f()}] 🌊 [STREAM] ${a}${c}`)}function o(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}}};