switchboard-router 0.9.30 → 0.9.32

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 (364) hide show
  1. package/app/{.next-cli-build/static/chunks/1321-13f34411b35e731e.js → .next/static/chunks/1321-8a3603dbafbb81bb.js} +1 -1
  2. package/app/.next/static/chunks/979-04a907a12847a634.js +1 -0
  3. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-99d3be5c7da63d57.js +1 -0
  4. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/routing/{page-ef491ec5a2ccecfb.js → page-650dc0927f999aaf.js} +1 -1
  5. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-68344fb15a77b2c5.js +10 -0
  6. package/app/.next-cli-build/BUILD_ID +1 -1
  7. package/app/.next-cli-build/app-path-routes-manifest.json +16 -16
  8. package/app/.next-cli-build/build-manifest.json +2 -2
  9. package/app/.next-cli-build/prerender-manifest.json +3 -3
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page.js.nft.json +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  65. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  68. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  69. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  70. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  71. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  72. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  74. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  75. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  76. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  77. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  78. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  79. package/app/.next-cli-build/server/app/api/agent-library/catalog/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/agent-library/doctor/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/agent-library/export/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/agent-library/mcp/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/agent-library/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/agent-library/skills/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/agent-library/sync/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/agent-library/updates/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
  91. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  93. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  95. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/cli-tools/claude-full-catalog/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/cli-tools/claude-picker-labels/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  101. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  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/codex-settings/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  105. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  107. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  109. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
  111. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  113. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +2 -2
  115. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +2 -2
  117. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  119. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  123. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  125. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  127. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/picker-labels/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  132. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  134. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/[id]/strategy/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js +1 -1
  157. package/app/.next-cli-build/server/app/api/mgmt/v1/combos/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/mgmt/v1/metrics/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/mgmt/v1/providers/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/mgmt/v1/routing/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/mgmt/v1/usage/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/mgmt/v1/version/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/pricing/defaults/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/batch/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/cache/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/prepare/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/remove-unavailable/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/cancel/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/start/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/providers/[id]/model-probes/verify/status/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/routing/feedback/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/routing/insights/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/routing/learn/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/routing/stats/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/routing/versions/promote/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/routing/versions/rollback/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  224. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/skills/[id]/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/token-saver/vault-stats/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  238. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  240. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/usage/request-details/[id]/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  247. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  259. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  265. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  273. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  279. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  281. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  284. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  289. package/app/.next-cli-build/server/app/callback.html +1 -1
  290. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  291. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  292. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  293. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +3 -3
  294. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  295. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  296. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  297. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  298. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  299. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  300. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +3 -3
  301. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/index.html +1 -1
  303. package/app/.next-cli-build/server/app/index.rsc +3 -3
  304. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  305. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  306. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  307. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  309. package/app/.next-cli-build/server/app/landing.html +1 -1
  310. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  311. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  312. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  313. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +3 -3
  314. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  316. package/app/.next-cli-build/server/app/login.html +1 -1
  317. package/app/.next-cli-build/server/app/login.rsc +4 -4
  318. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  319. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  320. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  321. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  324. package/app/.next-cli-build/server/app-paths-manifest.json +16 -16
  325. package/app/.next-cli-build/server/chunks/3423.js +1 -1
  326. package/app/.next-cli-build/server/chunks/369.js +1 -1
  327. package/app/.next-cli-build/server/chunks/403.js +1 -1
  328. package/app/.next-cli-build/server/chunks/519.js +1 -1
  329. package/app/.next-cli-build/server/chunks/5624.js +1 -0
  330. package/app/.next-cli-build/server/chunks/5717.js +2 -2
  331. package/app/.next-cli-build/server/chunks/7454.js +1 -1
  332. package/app/.next-cli-build/server/chunks/8400.js +9 -9
  333. package/app/.next-cli-build/server/chunks/845.js +1 -0
  334. package/app/.next-cli-build/server/chunks/869.js +1 -1
  335. package/app/.next-cli-build/server/chunks/8998.js +18 -18
  336. package/app/.next-cli-build/server/chunks/9261.js +3 -3
  337. package/app/.next-cli-build/server/chunks/9264.js +2 -2
  338. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  339. package/app/.next-cli-build/server/middleware.js +1 -1
  340. package/app/.next-cli-build/server/pages/404.html +1 -1
  341. package/app/.next-cli-build/server/pages/500.html +1 -1
  342. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  343. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  344. package/app/{.next/static/chunks/1321-13f34411b35e731e.js → .next-cli-build/static/chunks/1321-8a3603dbafbb81bb.js} +1 -1
  345. package/app/.next-cli-build/static/chunks/979-04a907a12847a634.js +1 -0
  346. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-99d3be5c7da63d57.js +1 -0
  347. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/routing/{page-ef491ec5a2ccecfb.js → page-650dc0927f999aaf.js} +1 -1
  348. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-68344fb15a77b2c5.js +10 -0
  349. package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
  350. package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
  351. package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
  352. package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
  353. package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
  354. package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
  355. package/app/package.json +3 -3
  356. package/package.json +3 -3
  357. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-aaae06cada500532.js +0 -1
  358. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-cb9292ca42b61d7d.js +0 -10
  359. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-aaae06cada500532.js +0 -1
  360. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-cb9292ca42b61d7d.js +0 -10
  361. /package/app/.next/static/{8awSzIlM7UdH1TIvRhWJI → e7Ha89rDlp2qPIlpARdsI}/_buildManifest.js +0 -0
  362. /package/app/.next/static/{8awSzIlM7UdH1TIvRhWJI → e7Ha89rDlp2qPIlpARdsI}/_ssgManifest.js +0 -0
  363. /package/app/.next-cli-build/static/{8awSzIlM7UdH1TIvRhWJI → e7Ha89rDlp2qPIlpARdsI}/_buildManifest.js +0 -0
  364. /package/app/.next-cli-build/static/{8awSzIlM7UdH1TIvRhWJI → e7Ha89rDlp2qPIlpARdsI}/_ssgManifest.js +0 -0
@@ -1,10 +1,10 @@
1
- "use strict";exports.id=9264,exports.ids=[9264],exports.modules={249:(a,b,c)=>{c.d(b,{R8:()=>j,ar:()=>l,vB:()=>h});var d=c(43904);let e=["vision","pdf","audioInput","videoInput"],f=new Set(e);function g(a,b){var c;let d=Array.isArray(c=b?.capacityAdapter?.[a])?{enabled:!0,roundRobin:!1,models:c.map(a=>a?.model||a).filter(Boolean)}:c&&"object"==typeof c?{enabled:!1!==c.enabled,roundRobin:!!c.roundRobin,models:Array.isArray(c.models)?c.models.filter(Boolean):[]}:{enabled:!1,roundRobin:!1,models:[]};return d.enabled&&0===d.models.length?{...d,models:["oc/mimo-v2.5-free"]}:d}function h(a,b){for(let c of[...a||[]].filter(a=>f.has(a))){let{enabled:a,models:d}=g(c,b);if(a&&0!==d.length)return function(a,b){let{enabled:c,roundRobin:d}=g(a,b);return c&&d?"round-robin":"fallback"}(c,b)}return"fallback"}function i(a,b){let c=a.indexOf("/"),e=c>0?a.slice(0,c):"",f=c>0?a.slice(c+1):a,g=(0,d.nl)(e,f);return b.every(a=>!0===g[a])}function j(a,b,c){let d=[...b||[]].filter(a=>f.has(a));if(0===d.length||!Array.isArray(a)||0===a.length||a.some(a=>i(a,d)))return a;let h=(function(a){let b=new Set,c=[];for(let d of e){let{enabled:e,models:f}=g(d,a);if(e)for(let a of f)b.has(a)||(b.add(a),c.push(a))}return c})(c).filter(b=>!a.includes(b)&&i(b,d));return 0===h.length?a:[...h,...a]}function k(a){return"string"==typeof a?a.length:Array.isArray(a)?a.reduce((a,b)=>a+("string"==typeof b?.text?b.text.length:50),0):0}function l(a,b){let c=new Set(b);return 0===c.size?a:(b,e,...f)=>{if(c.has(e)){let a=e.indexOf("/"),c=a>0?e.slice(0,a):"",f=a>0?e.slice(a+1):e,{contextWindow:g}=(0,d.nl)(c,f);b=function(a,b){let c=Array.isArray(a.messages)?"messages":Array.isArray(a.input)?"input":Array.isArray(a.contents)?"contents":null;if(!c)return a;let d=a[c];if(!d||0===d.length)return a;let e=a=>"system"===a||"developer"===a,f=d.filter(a=>e(a?.role)),g=d.filter(a=>!e(a?.role));if(0===g.length)return a;let h=a=>"assistant"===a||"model"===a,i=g.length-1;for(;i>=0&&!h(g[i]?.role);)i--;let j=g.slice(i+1),l=g.slice(0,i+1);if(0===l.length)return a;let m=a=>a.content??a.parts,n=.8*(b||2e5)*4;if(f.concat(l,j).reduce((a,b)=>a+k(m(b)),0)<=n)return a;let o=l.slice(0,6),p=f.concat(o,j).reduce((a,b)=>a+k(m(b)),0);for(;p>n&&o.length>0;)p-=k(m(o.pop()));return o.length===l.length?a:{...a,[c]:[...f,...o,...j]}}(b,g)}return a(b,e,...f)}}},3894:(a,b,c)=>{c.d(b,{F_:()=>g,Nc:()=>h,Qh:()=>t,Su:()=>q,ag:()=>o,kI:()=>p,rl:()=>u,sy:()=>s});var d=c(79646),e=c(33873),f=c.n(e);let g=["code","ml"],h={code:["tree-sitter","tree-sitter-language-pack"],ml:["torch","huggingface-hub"]},i="win32"===process.platform,j=i?"where":"which",k=i?[`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python313\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python312\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python311\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python310\\Scripts`,`${process.env.APPDATA||""}\\Python\\Python313\\Scripts`]:["/usr/local/bin","/opt/homebrew/bin","/Library/Frameworks/Python.framework/Versions/3.13/bin","/Library/Frameworks/Python.framework/Versions/3.12/bin","/Library/Frameworks/Python.framework/Versions/3.11/bin","/Library/Frameworks/Python.framework/Versions/3.10/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],l=[...k,process.env.PATH||""].filter(Boolean).join(f().delimiter),m=["python3.13","python3.12","python3.11","python3.10","python3","python"],n=new Set(["localhost","127.0.0.1","::1","[::1]","0.0.0.0"]),o=process.env.HEADROOM_URL||"http://localhost:8787";function p(){try{let a=(0,d.execSync)(`${j} headroom`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function q(){let a=null;for(let b of function(){let a=[],b=p();if(b){let c=f().dirname(b);for(let b of i?["python.exe","python3.exe"]:["python3","python3.13","python"])a.push(f().join(c,b))}for(let b of k)if(b)for(let c of m)a.push(f().join(b,i?`${c}.exe`:c));return a.push(...m),a}())try{let c=(0,d.execSync)(`${b} --version`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim().match(/(\d+)\.(\d+)/);if(!c)continue;let[e,f]=[parseInt(c[1],10),parseInt(c[2],10)];if(!(e>3||3===e&&f>=10))continue;a||(a=b);try{return(0,d.execFileSync)(b,["-m","pip","show","headroom-ai"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}),b}catch{}}catch{}return a}async function r(a){if(!a)return!1;let b=String(a).replace(/\/$/,"");try{return(await fetch(`${b}/health`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function s(a){try{let b=new URL(a);return n.has(b.hostname)}catch{return!1}}async function t(a){let b=p(),c=q(),d=!!b,e=await r(a),f=s(a),g=d?u(c):{installed:!1,version:null,extras:{code:!1,ml:!1}};return{installed:d,path:b,running:e,python:c,localUrl:f,canStart:d&&f,version:g.version,extras:g.extras}}function u(a){let b=a||q();if(!b)return{installed:!1,version:null,extras:{code:!1,ml:!1}};try{let a=(0,d.execFileSync)(b,["-m","pip","list","--format=json","--disable-pip-version-check"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}).toString(),c=JSON.parse(a),e=new Set(c.map(a=>String(a.name||"").toLowerCase()));if(!e.has("headroom-ai"))return{installed:!1,version:null,extras:{code:!1,ml:!1}};let f=c.find(a=>a.name?.toLowerCase()==="headroom-ai")?.version||null,i={};for(let a of g)i[a]=h[a].some(a=>e.has(a));return{installed:!0,version:f,extras:i}}catch{return{installed:!1,version:null,extras:{code:!1,ml:!1}}}}},14551:(a,b,c)=>{c.d(b,{w:()=>g});var d=c(43904),e=c(38775),f=c(60290);let g=function({findComboModels:a=e.getComboModels,findCapabilities:b=d.nl}={}){return async function c(d,e=0){if(e>f.wg)return{};let g=await a(d);if(!g){let[a,...c]=d.split("/"),e=c.join("/")||a;return b(a,e)||{}}let h={vision:!1,pdf:!1,tools:!1};for(let a of g){let b=await c(a,e+1);h.vision||=!!b.vision,h.pdf||=!!b.pdf,h.tools||=!1!==b.tools}return h}}()},24253:(a,b,c)=>{c.d(b,{Mo:()=>i,RG:()=>m,V:()=>j,Y8:()=>l,xl:()=>n});var d=c(29021),e=c(1932),f=c(87155);let g=null,h=null;function i(){return g?{loaded:!0,version:g.version,loadedAt:g.loadedAt}:{loaded:!1}}async function j(){return g||h||(h=k().finally(()=>{h=null}))}async function k(){let a=(0,f.S1)();if(!a.installed){let a=Error("PXPIPE is not installed");throw a.code="NOT_INSTALLED",a}let b=0;try{b=(0,d.statSync)((0,f.CG)()).mtimeMs}catch{}let c=encodeURIComponent(`${a.version||"0"}:${Math.trunc(b)}`),h=`${(0,e.pathToFileURL)((0,f.CG)()).href}?v=${c}`,i=await import(h);if("function"!=typeof i.transformAnthropicMessages)throw Error("installed pxpipe package does not export transformAnthropicMessages");return g={module:i,version:a.version,loadedAt:Date.now()}}function l(){let a=!!g;return g=null,a}async function m({autoLoad:a=!0}={}){try{if(!g&&!a)return null;let{module:b}=await j();return b.transformAnthropicMessages}catch{return null}}async function n(){let a=Date.now(),{module:b}=await j(),c=new TextEncoder().encode(JSON.stringify({model:"claude-fable-5",max_tokens:16,messages:[{role:"user",content:"ping"}]})),d=await b.transformAnthropicMessages({body:c,model:"claude-fable-5"});if(!d||"boolean"!=typeof d.applied||!(d.body instanceof Uint8Array))throw Error("transform returned an unexpected shape");return{ok:!0,reason:d.reason,durationMs:Date.now()-a}}},52007:(a,b,c)=>{c.d(b,{Az:()=>l,SP:()=>o,T0:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(87155);let i=g().join(h.XF,"events.jsonl"),j=g().join(h.XF,"events.jsonl.1");function k(a){try{e().existsSync(h.XF)||e().mkdirSync(h.XF,{recursive:!0});try{e().statSync(i).size>5242880&&e().renameSync(i,j)}catch{}e().appendFile(i,JSON.stringify({ts:Date.now(),...a})+"\n",()=>{})}catch{}}function l({sinceMs:a=null,limit:b=null}={}){let c=[];for(let b of[j,i])try{if(!e().existsSync(b))continue;for(let d of e().readFileSync(b,"utf8").split("\n"))if(d)try{let b=JSON.parse(d);if(a&&b.ts<a)continue;c.push(b)}catch{}}catch{}return c.sort((a,b)=>a.ts-b.ts),b?c.slice(-b):c}function m(){return{requests:0,compressed:0,bypassed:0,errors:0,tokensBeforeEst:0,tokensAfterEst:0,tokensSavedEst:0,savedPct:0,imagesGenerated:0,compressionTimeMs:0,avgCompressionMs:0}}function n(a,b){a.requests++,b.applied?(a.compressed++,a.tokensBeforeEst+=b.tokensBeforeEst||0,a.tokensAfterEst+=b.tokensAfterEst||0,a.tokensSavedEst+=b.tokensSavedEst||0,a.imagesGenerated+=b.imageCount||0,a.compressionTimeMs+=b.durationMs||0):"transform_error"===b.reason||"timeout"===b.reason?a.errors++:a.bypassed++}function o({timelineDays:a=30,recentLimit:b=100}={}){let c=l(),d=Date.now(),e=new Date(new Date(d).setHours(0,0,0,0)).getTime(),f={all:m(),today:m(),yesterday:m(),last7d:m(),last30d:m()},g=new Map;for(let b=a-1;b>=0;b--){let a=new Date(e-864e5*b);g.set(a.toISOString().slice(0,10),{date:a.toISOString().slice(0,10),tokensSavedEst:0,compressed:0,requests:0})}for(let a of c){n(f.all,a),a.ts>=e?n(f.today,a):a.ts>=e-864e5&&n(f.yesterday,a),a.ts>=d-6048e5&&n(f.last7d,a),a.ts>=d-2592e6&&n(f.last30d,a);let b=new Date(a.ts).toISOString().slice(0,10),c=g.get(b);c&&(c.requests++,a.applied&&(c.compressed++,c.tokensSavedEst+=a.tokensSavedEst||0))}for(let a of Object.values(f))a.savedPct=a.tokensBeforeEst>0?+(a.tokensSavedEst/a.tokensBeforeEst*100).toFixed(2):0,a.avgCompressionMs=a.compressed>0?Math.round(a.compressionTimeMs/a.compressed):0;return{windows:f,timeline:[...g.values()],recent:c.slice(-b).reverse()}}},75008:(a,b,c)=>{c.d(b,{R:()=>f});var d=c(57034);let e=/^arn:(aws|aws-us-gov):codewhisperer:([^:]+):(\d{12}):profile\/([^/]+)$/;function f(a){let b="string"==typeof a?a.trim():"",c=b.match(e);return c&&(0,d.i7)(c[2])?{profileArn:b,region:c[2]}:null}},78102:(a,b,c)=>{c.d(b,{DM:()=>j,yH:()=>k});var d=c(15717),e=c(68658),f=c(41460);function g(){return global._clientKeyPolicyState}function h(a,b,c=null){let d={"content-type":"application/json"};return null!=c&&(d["retry-after"]=String(c)),{ok:!1,response:new Response(JSON.stringify({error:{message:"API key policy rejected this request",type:"client_key_policy_error",code:b}}),{status:a,headers:d})}}function i(a){return{ok:!0,mode:a,clientKey:null,clientKeyId:null,lease:null}}async function j({settings:a,rawKey:b,request:c,target:k}){if(c&&(0,e.v5)(c))return i("local");if(c)try{if(await (0,f.gN)(c))return i("cli")}catch{}if(!b)return a?.requireApiKey?h(401,"missing_api_key"):i("local");let l=await (0,d.PW)(b);if(!l)return a?.requireApiKey?h(401,"invalid_api_key"):i("local");let m=Date.now();if(l.expiresAt&&new Date(l.expiresAt).getTime()<=m)return h(403,"client_key_expired");if(!function(a,b){if(!a)return!0;let c=b.allowedModels||[],d=b.allowedCombos||[];return 0===c.length&&0===d.length||("combo"===a.kind?d.includes(a.id):c.includes(a.id))}(k,l))return h(403,"client_key_target_not_allowed");if(null!=l.spendLimitUsd){let a=await (0,d.fz)(l.id);if(l.spentUsd=a,a>=l.spendLimitUsd)return h(429,"client_key_spend_limit_exceeded")}let n=g().byId.get(l.id);if((!n||m-n.windowStartedAt>=6e4)&&(n={windowStartedAt:m,acceptedStarts:0,inFlight:n?.inFlight||0},g().byId.set(l.id,n)),null!=l.concurrencyLimit&&n.inFlight>=l.concurrencyLimit)return h(429,"client_key_concurrency_limit_exceeded",1);if(null!=l.rateLimitPerMinute&&n.acceptedStarts>=l.rateLimitPerMinute)return h(429,"client_key_rate_limit_exceeded",Math.max(1,Math.ceil((6e4-(m-n.windowStartedAt))/1e3)));n.acceptedStarts++,n.inFlight++;let o=!1;return{ok:!0,mode:"api-key",clientKey:l,clientKeyId:l.id,lease:{release(){if(o)return;o=!0;let a=g().byId.get(l.id);a&&(a.inFlight=Math.max(0,a.inFlight-1))}}}}async function k(a,b){let c;if(!a)return await b();let d=!1,e=()=>{d||(d=!0,a.release())};try{c=await b()}catch(a){throw e(),a}if(!(c instanceof Response&&c.body&&(c.headers.get("content-type")||"").toLowerCase().includes("text/event-stream")))return e(),c;let f=c.body.getReader();return new Response(new ReadableStream({async pull(a){try{let{done:b,value:c}=await f.read();b?(e(),a.close()):a.enqueue(c)}catch(b){e(),a.error(b)}},async cancel(a){e(),await f.cancel(a)}}),{status:c.status,statusText:c.statusText,headers:c.headers})}global._clientKeyPolicyState||(global._clientKeyPolicyState={byId:new Map})},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>O});var e=c(30369);c(40863);var f=c(67133),g=c(91576),h=c(15717),i=c(5781),j=c(38775),k=c(36362),l=c(3894),m=c(24253),n=c(52007),o=c(89865),p=c(3072),q=c(249),r=c(61522),s=c(1996),t=c(2735),u=c(60290),v=c(19956),w=c(86187),x=c(23928),y=c(7803),z=c(81294),A=c(14551),B=c(67828),C=c(15186),D=c(78102),E=c(91686),F=c(2142),G=c(19978),H=a([e,k]);async function I(a,b={}){let c=b?.activeLearningVersionId;return c?(0,G.PO)(`learning:id:${c}`,()=>(0,F.dN)(c)):(0,G.PO)((0,G.C5)(a),()=>(0,F.p3)(a))}async function J(a,b=14){let c=Math.min(90,Math.max(1,Number(b)||14));return(0,G.PO)((0,G.Hr)(a,c),()=>(0,F.GU)(a,c))}async function K(a){try{let b=await (0,G.PO)(`provlat:${a}`,()=>(0,F.OQ)(a),15e3);return b&&"object"==typeof b?b:{}}catch{return{}}}async function L(){try{return await (0,G.PO)("provusage:7d",()=>(0,h.vY)(7),15e3)}catch{return{}}}async function M(){try{let a=await (0,i.getProviderQuotaHeadroom)();return a&&"object"==typeof a?a:{}}catch{return{}}}async function N(a){let[b,c]=await Promise.all([K(14),L()]),d="quota-first"===a.providerStrategy?await M():{};return{providerStrategy:a.providerStrategy,providerOrder:Array.isArray(a.providerOrder)?a.providerOrder:[],providerLatencyMs:b,providerUsage:c,providerQuota:d,providerLatencyGuardMs:a.providerLatencyGuardMs}}async function O(a,b=null){let c;try{c=await a.json()}catch{return y.warn("CHAT","Invalid JSON body"),(0,o.yj)(u.gx.BAD_REQUEST,"Invalid JSON body")}if(!c||"object"!=typeof c||Array.isArray(c))return y.warn("CHAT","Invalid JSON body shape"),(0,o.yj)(u.gx.BAD_REQUEST,"Invalid JSON body");b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let d=new URL(a.url),e=c.model,g=c.messages?.length||c.input?.length||0,i=c.tools?.length||0,k=c.reasoning_effort||c.reasoning?.effort||null;y.request("POST",`${d.pathname} | ${e} | ${g} msgs${i?` | ${i} tools`:""}${k?` | effort=${k}`:""}`);let l=await (0,h.mt)(),m=e?await (0,j.getComboModels)(e):null,n=await (0,D.DM)({settings:l,rawKey:(0,f.Tr)(a),request:a,target:{kind:m?"combo":"model",id:e}});if(!n.ok)return n.response;if(b?.headers){let a=new Set(["authorization","x-switchboard-key","x-api-key","x-goog-api-key"]);b={...b,headers:Object.fromEntries(Object.entries(b.headers).filter(([b])=>!a.has(b.toLowerCase())))}}return(0,D.yH)(n.lease,async()=>{let{clientKeyId:d}=n;if(!e)return y.warn("CHAT","Missing model"),(0,o.yj)(u.gx.BAD_REQUEST,"Missing model");let f=a?.headers?.get("user-agent")||"",g=a?.headers?.get("x-connection-id")||null,h=a?.headers?.get("x-switchboard-strict-connection")==="1",i=(0,t.c)(c,e,f,!!l.ccFilterNaming);if(i)return i.response||i;try{let b=!!Array.isArray(c.messages)&&!!c.messages.length&&(0,x.Gz)(c.messages);if(((0,x.sN)()||b)&&Array.isArray(c.messages)&&c.messages.length){let f=(0,v.t)(new URL(a.url).pathname,c),g=(0,x.EN)(d||"local-no-key"),h=(0,x.Mc)(c.messages),i=(0,x.sO)(h.firstUserText,g),j="openai"===f?(0,x.A4)(g,i):null;if(j){let a=h.priorAssistantHasAsk?(0,x.T6)(h.latestUserText):null;if(null!=a){let b=(0,x.of)(a);try{await (0,F.ii)(j.requestId,b),await (0,z.f)(j.requestId,b)}catch{}return(0,x.LH)(g,i),(0,x.g2)(g),y.info?.("FEEDBACK",`captured rating ${b} for ${j.requestId}`),function(a,b){let c=Date.now(),d=`chatcmpl-fb-${c}`,e=Math.floor(c/1e3);if(!a)return new Response(JSON.stringify({id:d,object:"chat.completion",created:e,model:b,choices:[{index:0,message:{role:"assistant",content:"Thanks — noted."},finish_reason:"stop"}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}}),{status:200,headers:{"Content-Type":"application/json"}});let f=new TextEncoder,g=a=>({id:d,object:"chat.completion.chunk",created:e,model:b,choices:a}),h=new ReadableStream({start(a){a.enqueue(f.encode(`data: ${JSON.stringify(g([{index:0,delta:{role:"assistant"},finish_reason:null}]))}
1
+ "use strict";exports.id=9264,exports.ids=[9264],exports.modules={249:(a,b,c)=>{c.d(b,{R8:()=>j,ar:()=>l,vB:()=>h});var d=c(43904);let e=["vision","pdf","audioInput","videoInput"],f=new Set(e);function g(a,b){var c;let d=Array.isArray(c=b?.capacityAdapter?.[a])?{enabled:!0,roundRobin:!1,models:c.map(a=>a?.model||a).filter(Boolean)}:c&&"object"==typeof c?{enabled:!1!==c.enabled,roundRobin:!!c.roundRobin,models:Array.isArray(c.models)?c.models.filter(Boolean):[]}:{enabled:!1,roundRobin:!1,models:[]};return d.enabled&&0===d.models.length?{...d,models:["oc/mimo-v2.5-free"]}:d}function h(a,b){for(let c of[...a||[]].filter(a=>f.has(a))){let{enabled:a,models:d}=g(c,b);if(a&&0!==d.length)return function(a,b){let{enabled:c,roundRobin:d}=g(a,b);return c&&d?"round-robin":"fallback"}(c,b)}return"fallback"}function i(a,b){let c=a.indexOf("/"),e=c>0?a.slice(0,c):"",f=c>0?a.slice(c+1):a,g=(0,d.nl)(e,f);return b.every(a=>!0===g[a])}function j(a,b,c){let d=[...b||[]].filter(a=>f.has(a));if(0===d.length||!Array.isArray(a)||0===a.length||a.some(a=>i(a,d)))return a;let h=(function(a){let b=new Set,c=[];for(let d of e){let{enabled:e,models:f}=g(d,a);if(e)for(let a of f)b.has(a)||(b.add(a),c.push(a))}return c})(c).filter(b=>!a.includes(b)&&i(b,d));return 0===h.length?a:[...h,...a]}function k(a){return"string"==typeof a?a.length:Array.isArray(a)?a.reduce((a,b)=>a+("string"==typeof b?.text?b.text.length:50),0):0}function l(a,b){let c=new Set(b);return 0===c.size?a:(b,e,...f)=>{if(c.has(e)){let a=e.indexOf("/"),c=a>0?e.slice(0,a):"",f=a>0?e.slice(a+1):e,{contextWindow:g}=(0,d.nl)(c,f);b=function(a,b){let c=Array.isArray(a.messages)?"messages":Array.isArray(a.input)?"input":Array.isArray(a.contents)?"contents":null;if(!c)return a;let d=a[c];if(!d||0===d.length)return a;let e=a=>"system"===a||"developer"===a,f=d.filter(a=>e(a?.role)),g=d.filter(a=>!e(a?.role));if(0===g.length)return a;let h=a=>"assistant"===a||"model"===a,i=g.length-1;for(;i>=0&&!h(g[i]?.role);)i--;let j=g.slice(i+1),l=g.slice(0,i+1);if(0===l.length)return a;let m=a=>a.content??a.parts,n=.8*(b||2e5)*4;if(f.concat(l,j).reduce((a,b)=>a+k(m(b)),0)<=n)return a;let o=l.slice(0,6),p=f.concat(o,j).reduce((a,b)=>a+k(m(b)),0);for(;p>n&&o.length>0;)p-=k(m(o.pop()));return o.length===l.length?a:{...a,[c]:[...f,...o,...j]}}(b,g)}return a(b,e,...f)}}},3894:(a,b,c)=>{c.d(b,{F_:()=>g,Nc:()=>h,Qh:()=>t,Su:()=>q,ag:()=>o,kI:()=>p,rl:()=>u,sy:()=>s});var d=c(79646),e=c(33873),f=c.n(e);let g=["code","ml"],h={code:["tree-sitter","tree-sitter-language-pack"],ml:["torch","huggingface-hub"]},i="win32"===process.platform,j=i?"where":"which",k=i?[`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python313\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python312\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python311\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python310\\Scripts`,`${process.env.APPDATA||""}\\Python\\Python313\\Scripts`]:["/usr/local/bin","/opt/homebrew/bin","/Library/Frameworks/Python.framework/Versions/3.13/bin","/Library/Frameworks/Python.framework/Versions/3.12/bin","/Library/Frameworks/Python.framework/Versions/3.11/bin","/Library/Frameworks/Python.framework/Versions/3.10/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],l=[...k,process.env.PATH||""].filter(Boolean).join(f().delimiter),m=["python3.13","python3.12","python3.11","python3.10","python3","python"],n=new Set(["localhost","127.0.0.1","::1","[::1]","0.0.0.0"]),o=process.env.HEADROOM_URL||"http://localhost:8787";function p(){try{let a=(0,d.execSync)(`${j} headroom`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function q(){let a=null;for(let b of function(){let a=[],b=p();if(b){let c=f().dirname(b);for(let b of i?["python.exe","python3.exe"]:["python3","python3.13","python"])a.push(f().join(c,b))}for(let b of k)if(b)for(let c of m)a.push(f().join(b,i?`${c}.exe`:c));return a.push(...m),a}())try{let c=(0,d.execSync)(`${b} --version`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim().match(/(\d+)\.(\d+)/);if(!c)continue;let[e,f]=[parseInt(c[1],10),parseInt(c[2],10)];if(!(e>3||3===e&&f>=10))continue;a||(a=b);try{return(0,d.execFileSync)(b,["-m","pip","show","headroom-ai"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}),b}catch{}}catch{}return a}async function r(a){if(!a)return!1;let b=String(a).replace(/\/$/,"");try{return(await fetch(`${b}/health`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function s(a){try{let b=new URL(a);return n.has(b.hostname)}catch{return!1}}async function t(a){let b=p(),c=q(),d=!!b,e=await r(a),f=s(a),g=d?u(c):{installed:!1,version:null,extras:{code:!1,ml:!1}};return{installed:d,path:b,running:e,python:c,localUrl:f,canStart:d&&f,version:g.version,extras:g.extras}}function u(a){let b=a||q();if(!b)return{installed:!1,version:null,extras:{code:!1,ml:!1}};try{let a=(0,d.execFileSync)(b,["-m","pip","list","--format=json","--disable-pip-version-check"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}).toString(),c=JSON.parse(a),e=new Set(c.map(a=>String(a.name||"").toLowerCase()));if(!e.has("headroom-ai"))return{installed:!1,version:null,extras:{code:!1,ml:!1}};let f=c.find(a=>a.name?.toLowerCase()==="headroom-ai")?.version||null,i={};for(let a of g)i[a]=h[a].some(a=>e.has(a));return{installed:!0,version:f,extras:i}}catch{return{installed:!1,version:null,extras:{code:!1,ml:!1}}}}},14551:(a,b,c)=>{c.d(b,{w:()=>g});var d=c(43904),e=c(38775),f=c(60290);let g=function({findComboModels:a=e.getComboModels,findCapabilities:b=d.nl}={}){return async function c(d,e=0){if(e>f.wg)return{};let g=await a(d);if(!g){let[a,...c]=d.split("/"),e=c.join("/")||a;return b(a,e)||{}}let h={vision:!1,pdf:!1,tools:!1};for(let a of g){let b=await c(a,e+1);h.vision||=!!b.vision,h.pdf||=!!b.pdf,h.tools||=!1!==b.tools}return h}}()},17382:(a,b,c)=>{c.d(b,{tW:()=>g,tg:()=>h,zw:()=>i});var d=c(60845),e=c(89865),f=c(60290);function g({comboName:a,skipped:b,log:c}){let h=Math.max(Math.min(...b.map(a=>a.untilMs))-Date.now(),6e4),i=b.map(a=>`${a.model} (${a.availability}; ${a.provider} is ${"peak"===a.status?"peak":"off-peak"})`).join("; "),j=`Combo "${a}": all models are outside their allowed hours — ${i}. Set a member to "Any time" in the combo editor to allow it regardless of schedule.`;return c?.info?.("SCHEDULE",`BLOCKED ${j} (retry in ${(0,d.zt)(h)})`),(0,e.wO)(f.gx.SERVICE_UNAVAILABLE,j,new Date(Date.now()+h),`next eligible model in ${(0,d.zt)(h)}`)}function h({models:a,comboName:b,settings:c,log:e,nowMs:f}){let i=c?.comboStrategies?.[b]?.modelAvailability;if(!Array.isArray(a)||!a.length||!i||"object"!=typeof i||!Object.keys(i).length)return{models:a,skipped:[],blocked:!1,response:null};let j=c?.providerSchedules||{},{models:k,skipped:l}=(0,d.zY)(a,j,i,f);for(let a of l){let b=new Date(a.untilMs).toISOString();e?.info?.("SCHEDULE",`skipped ${a.model} (${a.availability}; ${a.provider} is ${"peak"===a.status?"peak":"off-peak"} until ${b})`)}return!k.length&&l.length?{models:[],skipped:l,blocked:!0,response:g({comboName:b,skipped:l,log:e})}:{models:k,skipped:l,blocked:!1,response:null}}function i(a,b){if(!Array.isArray(b)||!b.length)return a;let c=!1;return d=>(c||(c=!0,d={...d,meta:{...d?.meta||{},scheduleSkips:b.map(a=>({model:a.model,provider:a.provider,availability:a.availability,status:a.status,until:new Date(a.untilMs).toISOString()}))}}),a(d))}},24253:(a,b,c)=>{c.d(b,{Mo:()=>i,RG:()=>m,V:()=>j,Y8:()=>l,xl:()=>n});var d=c(29021),e=c(1932),f=c(87155);let g=null,h=null;function i(){return g?{loaded:!0,version:g.version,loadedAt:g.loadedAt}:{loaded:!1}}async function j(){return g||h||(h=k().finally(()=>{h=null}))}async function k(){let a=(0,f.S1)();if(!a.installed){let a=Error("PXPIPE is not installed");throw a.code="NOT_INSTALLED",a}let b=0;try{b=(0,d.statSync)((0,f.CG)()).mtimeMs}catch{}let c=encodeURIComponent(`${a.version||"0"}:${Math.trunc(b)}`),h=`${(0,e.pathToFileURL)((0,f.CG)()).href}?v=${c}`,i=await import(h);if("function"!=typeof i.transformAnthropicMessages)throw Error("installed pxpipe package does not export transformAnthropicMessages");return g={module:i,version:a.version,loadedAt:Date.now()}}function l(){let a=!!g;return g=null,a}async function m({autoLoad:a=!0}={}){try{if(!g&&!a)return null;let{module:b}=await j();return b.transformAnthropicMessages}catch{return null}}async function n(){let a=Date.now(),{module:b}=await j(),c=new TextEncoder().encode(JSON.stringify({model:"claude-fable-5",max_tokens:16,messages:[{role:"user",content:"ping"}]})),d=await b.transformAnthropicMessages({body:c,model:"claude-fable-5"});if(!d||"boolean"!=typeof d.applied||!(d.body instanceof Uint8Array))throw Error("transform returned an unexpected shape");return{ok:!0,reason:d.reason,durationMs:Date.now()-a}}},52007:(a,b,c)=>{c.d(b,{Az:()=>l,SP:()=>o,T0:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(87155);let i=g().join(h.XF,"events.jsonl"),j=g().join(h.XF,"events.jsonl.1");function k(a){try{e().existsSync(h.XF)||e().mkdirSync(h.XF,{recursive:!0});try{e().statSync(i).size>5242880&&e().renameSync(i,j)}catch{}e().appendFile(i,JSON.stringify({ts:Date.now(),...a})+"\n",()=>{})}catch{}}function l({sinceMs:a=null,limit:b=null}={}){let c=[];for(let b of[j,i])try{if(!e().existsSync(b))continue;for(let d of e().readFileSync(b,"utf8").split("\n"))if(d)try{let b=JSON.parse(d);if(a&&b.ts<a)continue;c.push(b)}catch{}}catch{}return c.sort((a,b)=>a.ts-b.ts),b?c.slice(-b):c}function m(){return{requests:0,compressed:0,bypassed:0,errors:0,tokensBeforeEst:0,tokensAfterEst:0,tokensSavedEst:0,savedPct:0,imagesGenerated:0,compressionTimeMs:0,avgCompressionMs:0}}function n(a,b){a.requests++,b.applied?(a.compressed++,a.tokensBeforeEst+=b.tokensBeforeEst||0,a.tokensAfterEst+=b.tokensAfterEst||0,a.tokensSavedEst+=b.tokensSavedEst||0,a.imagesGenerated+=b.imageCount||0,a.compressionTimeMs+=b.durationMs||0):"transform_error"===b.reason||"timeout"===b.reason?a.errors++:a.bypassed++}function o({timelineDays:a=30,recentLimit:b=100}={}){let c=l(),d=Date.now(),e=new Date(new Date(d).setHours(0,0,0,0)).getTime(),f={all:m(),today:m(),yesterday:m(),last7d:m(),last30d:m()},g=new Map;for(let b=a-1;b>=0;b--){let a=new Date(e-864e5*b);g.set(a.toISOString().slice(0,10),{date:a.toISOString().slice(0,10),tokensSavedEst:0,compressed:0,requests:0})}for(let a of c){n(f.all,a),a.ts>=e?n(f.today,a):a.ts>=e-864e5&&n(f.yesterday,a),a.ts>=d-6048e5&&n(f.last7d,a),a.ts>=d-2592e6&&n(f.last30d,a);let b=new Date(a.ts).toISOString().slice(0,10),c=g.get(b);c&&(c.requests++,a.applied&&(c.compressed++,c.tokensSavedEst+=a.tokensSavedEst||0))}for(let a of Object.values(f))a.savedPct=a.tokensBeforeEst>0?+(a.tokensSavedEst/a.tokensBeforeEst*100).toFixed(2):0,a.avgCompressionMs=a.compressed>0?Math.round(a.compressionTimeMs/a.compressed):0;return{windows:f,timeline:[...g.values()],recent:c.slice(-b).reverse()}}},75008:(a,b,c)=>{c.d(b,{R:()=>f});var d=c(57034);let e=/^arn:(aws|aws-us-gov):codewhisperer:([^:]+):(\d{12}):profile\/([^/]+)$/;function f(a){let b="string"==typeof a?a.trim():"",c=b.match(e);return c&&(0,d.i7)(c[2])?{profileArn:b,region:c[2]}:null}},78102:(a,b,c)=>{c.d(b,{DM:()=>j,yH:()=>k});var d=c(15717),e=c(68658),f=c(41460);function g(){return global._clientKeyPolicyState}function h(a,b,c=null){let d={"content-type":"application/json"};return null!=c&&(d["retry-after"]=String(c)),{ok:!1,response:new Response(JSON.stringify({error:{message:"API key policy rejected this request",type:"client_key_policy_error",code:b}}),{status:a,headers:d})}}function i(a){return{ok:!0,mode:a,clientKey:null,clientKeyId:null,lease:null}}async function j({settings:a,rawKey:b,request:c,target:k}){if(c&&(0,e.v5)(c))return i("local");if(c)try{if(await (0,f.gN)(c))return i("cli")}catch{}if(!b)return a?.requireApiKey?h(401,"missing_api_key"):i("local");let l=await (0,d.PW)(b);if(!l)return a?.requireApiKey?h(401,"invalid_api_key"):i("local");let m=Date.now();if(l.expiresAt&&new Date(l.expiresAt).getTime()<=m)return h(403,"client_key_expired");if(!function(a,b){if(!a)return!0;let c=b.allowedModels||[],d=b.allowedCombos||[];return 0===c.length&&0===d.length||("combo"===a.kind?d.includes(a.id):c.includes(a.id))}(k,l))return h(403,"client_key_target_not_allowed");if(null!=l.spendLimitUsd){let a=await (0,d.fz)(l.id);if(l.spentUsd=a,a>=l.spendLimitUsd)return h(429,"client_key_spend_limit_exceeded")}let n=g().byId.get(l.id);if((!n||m-n.windowStartedAt>=6e4)&&(n={windowStartedAt:m,acceptedStarts:0,inFlight:n?.inFlight||0},g().byId.set(l.id,n)),null!=l.concurrencyLimit&&n.inFlight>=l.concurrencyLimit)return h(429,"client_key_concurrency_limit_exceeded",1);if(null!=l.rateLimitPerMinute&&n.acceptedStarts>=l.rateLimitPerMinute)return h(429,"client_key_rate_limit_exceeded",Math.max(1,Math.ceil((6e4-(m-n.windowStartedAt))/1e3)));n.acceptedStarts++,n.inFlight++;let o=!1;return{ok:!0,mode:"api-key",clientKey:l,clientKeyId:l.id,lease:{release(){if(o)return;o=!0;let a=g().byId.get(l.id);a&&(a.inFlight=Math.max(0,a.inFlight-1))}}}}async function k(a,b){let c;if(!a)return await b();let d=!1,e=()=>{d||(d=!0,a.release())};try{c=await b()}catch(a){throw e(),a}if(!(c instanceof Response&&c.body&&(c.headers.get("content-type")||"").toLowerCase().includes("text/event-stream")))return e(),c;let f=c.body.getReader();return new Response(new ReadableStream({async pull(a){try{let{done:b,value:c}=await f.read();b?(e(),a.close()):a.enqueue(c)}catch(b){e(),a.error(b)}},async cancel(a){e(),await f.cancel(a)}}),{status:c.status,statusText:c.statusText,headers:c.headers})}global._clientKeyPolicyState||(global._clientKeyPolicyState={byId:new Map})},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>P});var e=c(30369);c(40863);var f=c(67133),g=c(91576),h=c(15717),i=c(5781),j=c(38775),k=c(17382),l=c(36362),m=c(3894),n=c(24253),o=c(52007),p=c(89865),q=c(3072),r=c(249),s=c(61522),t=c(1996),u=c(2735),v=c(60290),w=c(19956),x=c(86187),y=c(23928),z=c(7803),A=c(81294),B=c(14551),C=c(67828),D=c(15186),E=c(78102),F=c(91686),G=c(2142),H=c(19978),I=a([e,l]);async function J(a,b={}){let c=b?.activeLearningVersionId;return c?(0,H.PO)(`learning:id:${c}`,()=>(0,G.dN)(c)):(0,H.PO)((0,H.C5)(a),()=>(0,G.p3)(a))}async function K(a,b=14){let c=Math.min(90,Math.max(1,Number(b)||14));return(0,H.PO)((0,H.Hr)(a,c),()=>(0,G.GU)(a,c))}async function L(a){try{let b=await (0,H.PO)(`provlat:${a}`,()=>(0,G.OQ)(a),15e3);return b&&"object"==typeof b?b:{}}catch{return{}}}async function M(){try{return await (0,H.PO)("provusage:7d",()=>(0,h.vY)(7),15e3)}catch{return{}}}async function N(){try{let a=await (0,i.getProviderQuotaHeadroom)();return a&&"object"==typeof a?a:{}}catch{return{}}}async function O(a){let[b,c]=await Promise.all([L(14),M()]),d="quota-first"===a.providerStrategy?await N():{};return{providerStrategy:a.providerStrategy,providerOrder:Array.isArray(a.providerOrder)?a.providerOrder:[],providerLatencyMs:b,providerUsage:c,providerQuota:d,providerLatencyGuardMs:a.providerLatencyGuardMs}}async function P(a,b=null){let c;try{c=await a.json()}catch{return z.warn("CHAT","Invalid JSON body"),(0,p.yj)(v.gx.BAD_REQUEST,"Invalid JSON body")}if(!c||"object"!=typeof c||Array.isArray(c))return z.warn("CHAT","Invalid JSON body shape"),(0,p.yj)(v.gx.BAD_REQUEST,"Invalid JSON body");b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let d=new URL(a.url),e=c.model,g=c.messages?.length||c.input?.length||0,i=c.tools?.length||0,l=c.reasoning_effort||c.reasoning?.effort||null;z.request("POST",`${d.pathname} | ${e} | ${g} msgs${i?` | ${i} tools`:""}${l?` | effort=${l}`:""}`);let m=await (0,h.mt)(),n=e?await (0,j.getComboModels)(e):null,o=await (0,E.DM)({settings:m,rawKey:(0,f.Tr)(a),request:a,target:{kind:n?"combo":"model",id:e}});if(!o.ok)return o.response;if(b?.headers){let a=new Set(["authorization","x-switchboard-key","x-api-key","x-goog-api-key"]);b={...b,headers:Object.fromEntries(Object.entries(b.headers).filter(([b])=>!a.has(b.toLowerCase())))}}return(0,E.yH)(o.lease,async()=>{let{clientKeyId:d}=o;if(!e)return z.warn("CHAT","Missing model"),(0,p.yj)(v.gx.BAD_REQUEST,"Missing model");let f=a?.headers?.get("user-agent")||"",g=a?.headers?.get("x-connection-id")||null,h=a?.headers?.get("x-switchboard-strict-connection")==="1",i=(0,u.c)(c,e,f,!!m.ccFilterNaming);if(i)return i.response||i;try{let b=!!Array.isArray(c.messages)&&!!c.messages.length&&(0,y.Gz)(c.messages);if(((0,y.sN)()||b)&&Array.isArray(c.messages)&&c.messages.length){let f=(0,w.t)(new URL(a.url).pathname,c),g=(0,y.EN)(d||"local-no-key"),h=(0,y.Mc)(c.messages),i=(0,y.sO)(h.firstUserText,g),j="openai"===f?(0,y.A4)(g,i):null;if(j){let a=h.priorAssistantHasAsk?(0,y.T6)(h.latestUserText):null;if(null!=a){let b=(0,y.of)(a);try{await (0,G.ii)(j.requestId,b),await (0,A.f)(j.requestId,b)}catch{}return(0,y.LH)(g,i),(0,y.g2)(g),z.info?.("FEEDBACK",`captured rating ${b} for ${j.requestId}`),function(a,b){let c=Date.now(),d=`chatcmpl-fb-${c}`,e=Math.floor(c/1e3);if(!a)return new Response(JSON.stringify({id:d,object:"chat.completion",created:e,model:b,choices:[{index:0,message:{role:"assistant",content:"Thanks — noted."},finish_reason:"stop"}],usage:{prompt_tokens:0,completion_tokens:0,total_tokens:0}}),{status:200,headers:{"Content-Type":"application/json"}});let f=new TextEncoder,g=a=>({id:d,object:"chat.completion.chunk",created:e,model:b,choices:a}),h=new ReadableStream({start(a){a.enqueue(f.encode(`data: ${JSON.stringify(g([{index:0,delta:{role:"assistant"},finish_reason:null}]))}
2
2
 
3
3
  `)),a.enqueue(f.encode(`data: ${JSON.stringify(g([{index:0,delta:{content:"Thanks — noted."},finish_reason:null}]))}
4
4
 
5
5
  `)),a.enqueue(f.encode(`data: ${JSON.stringify(g([{index:0,delta:{},finish_reason:"stop"}]))}
6
6
 
7
- `)),a.enqueue(f.encode("data: [DONE]\n\n")),a.close()}});return new Response(h,{status:200,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}(!!c.stream,e)}(0,x.lg)(g),(0,x.LH)(g,i)}b&&(c.messages=(0,x.Jl)(c.messages))}}catch(a){y.warn?.("FEEDBACK",`capture/strip failed (ignored): ${a?.message||a}`)}let k=(0,p.t8)(c);if(m){let f=l.comboStrategies||{},g=f[e]?.fallbackStrategy||l.comboStrategy||"fallback";if("fusion"===g)return y.info("CHAT",`Combo "${e}" with ${m.length} models (strategy: fusion)`),(0,p.vt)({body:c,models:m,handleSingleModel:(c,e,f)=>{let g=!0===f?{isPanel:!0}:f||{},h=b;if(g.isPanel&&b){let{tools:a,tool_choice:c,...d}=b.body||{};h={...b,body:d}}return P(c,e,h,a,d,{...g,signal:g.signal||null})},log:y,comboName:e,judgeModel:f[e]?.judgeModel,tuning:f[e]?.fusionTuning,abortSignal:a?.signal||null,childComboDepth:1});if("auto"===g){let g=f[e]||{},h=!0===g.feedbackAsk,i=null;if(h)try{let b=(0,v.t)(new URL(a.url).pathname,c),e=(0,x.Mc)(c.messages),f=(0,x.EN)(d||"local-no-key");i={apiKeyHash:f,conversationFp:(0,x.sO)(e.firstUserText,f),openAiWire:"openai"===b,gateOk:!(c.tools&&c.tools.length||c.functions&&c.functions.length)&&Number(e.userTurns)>=2,feedbackAsk:!0}}catch{i=null}let k=g.routerModel;if(k&&await (0,j.getComboModels)(k))return y.warn("CHAT",`Auto routerModel is a combo (${k}) — rejected`),(0,o.yj)(u.gx.BAD_REQUEST,`routerModel cannot be a combo ("${k}"). Use a single provider/model.`);let l=[];for(let a of m)a!==k&&l.push(a);let n={};for(let a of l)try{n[a]=await (0,A.w)(a)}catch{n[a]={}}return y.info("CHAT",`Combo "${e}" with ${l.length} workers (strategy: auto)`),(0,r.EA)({body:c,models:[...l,...m.includes(k)?[k]:[]],handleSingleModel:(c,e,f)=>P(c,e,b,a,d,{...f||{},comboDepth:0}),log:y,comboName:e,strategy:g,loadLearning:I,loadStats:J,loadGlobalStats:a=>(0,G.PO)(`gstats:${a}`,()=>(0,F.cX)(a),15e3),loadClusterP50:(a,b,c)=>(0,G.PO)(`p50:${a}:${b}:${c}`,()=>(0,F._6)(a,b,c)),loadProviderLatency:K,loadProviderUsage:L,loadProviderQuota:M,recordEvent:a=>(0,F.ex)(a),applyJudgeScore:(a,b)=>(0,F.Vp)(a,b),autoDepth:0,clientAbortSignal:a?.signal||null,feedbackCtx:i,workerCaps:n})}let h=(0,q.R8)(m,k,l),i=h.filter(a=>!m.includes(a)),n=l.comboStickyRoundRobinLimit,s=f[e]||{},t=!1!==s.capacityAutoSwitch,w=s.providerStrategy&&"off"!==s.providerStrategy?await N(s):null;return y.info("CHAT",`Combo "${e}" with ${h.length} models (strategy: ${g}, sticky: ${n}, capacitySwitch: ${t})`),(0,p.Pr)({body:c,models:h,handleSingleModel:(0,q.ar)((c,e,f)=>P(c,e,b,a,d,f),i),log:y,comboName:e,comboStrategy:g,comboStickyLimit:n,autoSwitch:t,...w||{},abortSignal:a?.signal||null,childComboDepth:1})}let s=(0,q.R8)([e],k,l);if(s.length>1){let f=s.filter(a=>a!==e);return y.info("CHAT",`Capacity adapter for [${[...k].join(",")}] on "${e}" → trying ${s.join(", ")}`),(0,p.Pr)({body:c,models:s,handleSingleModel:(0,q.ar)((c,e,f)=>P(c,e,b,a,d,{...f||{},signal:f?.signal||a?.signal||null,preferredConnectionId:g,strictPreferredConnection:h,allowNativeClaudeOAuth:!0}),f),log:y,comboName:e,comboStrategy:(0,q.vB)(k,l),abortSignal:a?.signal||null,childComboDepth:1})}let B=null;try{B=(0,v.t)(new URL(a.url).pathname,c)}catch{}if(!(l.tokenSaver?.vault&&Array.isArray(c.tools)&&c.tools.length>0&&("openai"===B||"claude"===B)))return P(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:h,allowNativeClaudeOAuth:!0});try{let f=(0,x.Bk)(c.messages,(0,x.EN)(d||"local-no-key"));if(!f)return P(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:h,allowNativeClaudeOAuth:!0});await (0,w.Xy)(c,{conversationId:f}),(0,w.Ag)(c,B);let i=Number(l.tokenSaver?.vaultSearchLimit??5);return await (0,w.SS)({dispatch:(c,i)=>P(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:h,allowNativeClaudeOAuth:!0,vaultInternal:!!i?.vaultInternal,vaultStore:!0,vaultConversationId:f}),body:c,wire:B,conversationId:f,searchLimit:i,log:y})}catch{return P(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:h,allowNativeClaudeOAuth:!0})}})}async function P(a,b,c=null,d=null,e=null,i=null){let s=await (0,j.getModelInfo)(b),t=i?.autoDepth||0,w=i?.comboDepth||0;if(!s.provider){let f=await (0,j.getComboModels)(b);if(f){let g=await (0,h.mt)(),k=(0,p.t8)(a),l=(0,q.R8)(f,k,g),m=l.filter(a=>!f.includes(a)),n=g.comboStrategies||{},s=n[b]?.fallbackStrategy||g.comboStrategy||"fallback";if("auto"!==s&&w>=u.wg)return y.warn("CHAT",`Combo nesting limit at "${b}" (depth ${w})`),(0,o.yj)(u.gx.BAD_REQUEST,`Combo nesting too deep (>${u.wg}) at "${b}"`);if("fusion"===s)return y.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: fusion)`),(0,p.vt)({body:a,models:f,handleSingleModel:(a,b,f)=>{let g=!0===f?{isPanel:!0}:f||{},h=c;if(g.isPanel&&c){let{tools:a,tool_choice:b,...d}=c.body||{};h={...c,body:d}}return P(a,b,h,d,e,{...i||{},...g,signal:g.signal||i?.signal||null})},log:y,comboName:b,judgeModel:n[b]?.judgeModel,tuning:n[b]?.fusionTuning,abortSignal:d?.signal||i?.signal||null,childComboDepth:w+1,autoDepth:t});if("auto"===s){if(t>=2)return y.warn("CHAT",`Auto combo recursion limit at "${b}" (depth ${t})`),(0,o.yj)(u.gx.BAD_REQUEST,`Auto combo recursion limit — "${b}" cannot nest further`);let g=n[b]||{},h=!0===g.feedbackAsk,i=null;if(h)try{let b=(0,v.t)(new URL(d.url).pathname,a),c=(0,x.Mc)(a.messages),f=(0,x.EN)(e||"local-no-key");i={apiKeyHash:f,conversationFp:(0,x.sO)(c.firstUserText,f),openAiWire:"openai"===b,gateOk:!(a.tools&&a.tools.length||a.functions&&a.functions.length)&&Number(c.userTurns)>=2,feedbackAsk:!0}}catch{i=null}let k=g.routerModel;if(k&&await (0,j.getComboModels)(k))return(0,o.yj)(u.gx.BAD_REQUEST,`routerModel cannot be a combo ("${k}")`);let l=[];for(let a of f)a!==k&&l.push(a);let m={};for(let a of l)try{m[a]=await (0,A.w)(a)}catch{m[a]={}}return y.info("CHAT",`Combo "${b}" with ${l.length} workers (strategy: auto, depth=${t})`),(0,r.EA)({body:a,models:[...l,...f.includes(k)?[k]:[]],handleSingleModel:(a,b,f)=>P(a,b,c,d,e,{...f||{},comboDepth:w}),log:y,comboName:b,strategy:g,loadLearning:I,loadStats:J,loadGlobalStats:a=>(0,G.PO)(`gstats:${a}`,()=>(0,F.cX)(a),15e3),loadClusterP50:(a,b,c)=>(0,G.PO)(`p50:${a}:${b}:${c}`,()=>(0,F._6)(a,b,c)),loadProviderLatency:K,loadProviderUsage:L,loadProviderQuota:M,recordEvent:a=>(0,F.ex)(a),applyJudgeScore:(a,b)=>(0,F.Vp)(a,b),autoDepth:t,comboDepth:w,clientAbortSignal:d?.signal||null,feedbackCtx:i,workerCaps:m})}let z=g.comboStickyRoundRobinLimit,B=n[b]||{},C=!1!==B.capacityAutoSwitch,D=B.providerStrategy&&"off"!==B.providerStrategy?await N(B):null;return y.info("CHAT",`Combo "${b}" with ${l.length} models (strategy: ${s}, sticky: ${z}, capacitySwitch: ${C})`),(0,p.Pr)({body:a,models:l,handleSingleModel:(0,q.ar)((a,b,f)=>P(a,b,c,d,e,f),m),log:y,comboName:b,comboStrategy:s,comboStickyLimit:z,autoSwitch:C,...D||{},abortSignal:d?.signal||i?.signal||null,childComboDepth:w+1,autoDepth:t})}return y.warn("CHAT","Invalid model format",{model:b}),(0,o.yj)(u.gx.BAD_REQUEST,"Invalid model format")}let{provider:z,model:D}=s;b!==`${z}/${D}`?y.info("ROUTING",`${b} → ${z}/${D}`):y.info("ROUTING",`Provider: ${z}, Model: ${D}`);let H=d?.headers?.get("user-agent")||"",O=new Set,Q=null,R=null,S=(0,E.M)({request:d,provider:z,allowNativeOAuth:i?.allowNativeClaudeOAuth===!0}),T=(0,g.mA)({headers:d?.headers,body:a,scope:z,clientKeyId:e});for(;;){let b=S||await (0,f.getProviderCredentials)(z,O,D,{preferredConnectionId:i?.preferredConnectionId||null,strictPreferredConnection:i?.strictPreferredConnection===!0,sessionKey:T,clientKeyId:e});if(!b||b.allRateLimited){if(b?.allRateLimited){let a=Q||b.lastError||"Unavailable",c=R||Number(b.lastErrorCode)||u.gx.SERVICE_UNAVAILABLE;return y.warn("CHAT",`[${z}/${D}] ${a} (${b.retryAfterHuman})`),(0,o.wO)(c,`[${z}/${D}] ${a}`,b.retryAfter,b.retryAfterHuman)}if(0===O.size)return y.warn("AUTH",`No active credentials for provider: ${z}`),(0,o.yj)(u.gx.NOT_FOUND,`No active credentials for provider: ${z}`);return y.warn("CHAT","No more accounts available",{provider:z}),(0,o.yj)(R||u.gx.SERVICE_UNAVAILABLE,Q||"All accounts unavailable")}y.info("AUTH",`\x1b[32mUsing ${z} account: ${b.connectionName}\x1b[0m`);let g=b.ephemeral?b:await (0,B.eU)(z,b);if(("antigravity"===z||"gemini-cli"===z)&&!g.projectId){let a=await (0,C.eG)(b.connectionId,g.accessToken,z);a&&(g.projectId=a,(0,B.vN)(b.connectionId,{projectId:a}).catch(()=>{}))}let j=await (0,h.mt)(),p=(j.providerThinking||{})[z]||null,q="function"==typeof structuredClone?structuredClone(a):JSON.parse(JSON.stringify(a)),r=i?.sourceFormatOverride||(d?.url?(0,v.t)(new URL(d.url).pathname,a):null),s=!!i?.bypassPromptFilters,t=await (0,k.w)({body:{...q,model:`${z}/${D}`},modelInfo:{provider:z,model:D},credentials:g,log:y,clientRawRequest:c,connectionId:b.connectionId,userAgent:H,clientKeyId:e,ccFilterNaming:!!j.ccFilterNaming,rtkEnabled:!s&&!!j.rtkEnabled,vaultEnabled:!s&&!!i?.vaultStore&&!!j.tokenSaver?.vault,vaultThresholdKB:j.tokenSaver?.vaultThresholdKB??8,vaultTtlHours:j.tokenSaver?.vaultTtlHours??24,vaultConversationId:i?.vaultConversationId??null,headroomEnabled:!s&&!!j.headroomEnabled,headroomUrl:j.headroomUrl||l.ag,headroomCompressUserMessages:!s&&!!j.headroomCompressUserMessages,cavemanEnabled:!s&&!!j.cavemanEnabled,cavemanLevel:j.cavemanLevel||"full",ponytailEnabled:!s&&!!j.ponytailEnabled,ponytailLevel:j.ponytailLevel||"full",pxpipeEnabled:!s&&!!j.pxpipeEnabled,pxpipeMinChars:j.pxpipeMinChars,pxpipeTimeoutMs:j.pxpipeTimeoutMs,pxpipeTransform:!s&&j.pxpipeEnabled?await (0,m.RG)():null,onPxpipeEvent:n.T0,providerThinking:p,sourceFormatOverride:r,bypassNativePassthrough:!!i?.bypassNativePassthrough,vaultInternal:!!i?.vaultInternal,abortSignal:i?.signal||null,onCredentialsRefreshed:async a=>{b.ephemeral||await (0,B.vN)(b.connectionId,{...a,existingProviderSpecificData:b.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{b.ephemeral||await (0,f.Pt)(b.connectionId,b,D)},onUpstreamEmptyExhausted:async(a,c)=>{b.ephemeral||await (0,f.vk)(b.connectionId,502,"string"==typeof a?a:a?.message||"empty stream",z,D,c)}});if(t.success||b.ephemeral)return t.response;let{shouldFallback:w}=await (0,f.vk)(b.connectionId,t.status,t.error,z,D,t.resetsAtMs);if(w){y.warn("AUTH",`Account ${b.connectionName} unavailable (${t.status}), trying fallback`),O.add(b.connectionId),Q=t.error,R=t.status;continue}return t.response}}[e,k]=H.then?(await H)():H,(0,F.tu)(a=>{(0,s.aW)(a),a?((0,G.Y3)(`stats:${a}:`),(0,G.Y3)(`learning:${a}`),(0,r.a8)(a)):(0,G.Y3)()}),d()}catch(a){d(a)}})},86187:(a,b,c)=>{c.d(b,{Ag:()=>l,SS:()=>x,Xy:()=>w});var d=c(12197),e=c(54070),f=c(12407),g=c(66573);let h=new TextEncoder,i=/unknown tool|no tool named|tool not found|not a (valid|recognized) tool|is not available|error/i;function j(){return{type:"object",properties:{vault_id:{type:"string",description:"The vault id from the placeholder, e.g. vlt_abc123."},query:{type:"string",description:"What to look for in the stored content."}},required:["query"]}}function k(){return"Search the Switchboard conversation vault for the full content of a tool result that was externalized to save context. Provide the vault_id shown in the placeholder and a query describing what you need."}function l(a,b){try{if(!Array.isArray(a?.tools))return!1;for(let b=0;b<a.tools.length;b+=1){var c;if(c=a.tools[b],(c?.function?.name||c?.name||"")===d.mS)return!1}if("openai"===b)a.tools.push({type:"function",function:{name:d.mS,description:k(),parameters:j()}});else{if("claude"!==b)return!1;a.tools.push({name:d.mS,description:k(),input_schema:j()})}return!0}catch{return!1}}function m(a,b=!1){let c=new Headers(a);return c.delete("content-length"),b&&c.delete("content-encoding"),c}function n(a){try{let b=JSON.parse(a||"{}");return b&&"object"==typeof b?b:{}}catch{return{}}}function o(a,b){return"string"==typeof a&&a?{callId:a,query:b?.query,vaultId:b?.vault_id}:null}function p(a,b){if(!Array.isArray(a)||0===a.length||!b||a.some(a=>!a))return null;let c=a[0];return{kind:"call",callId:c.callId,query:c.query,vaultId:c.vaultId,calls:a,assistantRaw:b}}function q(a){let b=[],c=a.split(/\r?\n/);for(let a=0;a<c.length;a+=1){if(!c[a].startsWith("data:"))continue;let d=c[a].slice(5).trim();if(d&&"[DONE]"!==d)try{b.push(JSON.parse(d))}catch{}}return b}async function r(a){let b=null;try{let c=new Promise((a,c)=>{b=setTimeout(()=>c(Error("vault stream idle")),2e4)});return await Promise.race([a.read(),c])}finally{b&&clearTimeout(b)}}async function s(a){let b=a.clone().body?.getReader();if(!b)throw Error("missing stream body");let c=new TextDecoder,d="";try{for(;;){let a=await r(b);if(a.done)break;d+=c.decode(a.value,{stream:!0})}return d+c.decode()}catch(a){try{await b.cancel()}catch{}throw a}}async function t(a,b){try{var c,e;let f;if(!(a?.headers?.get("content-type")||"").toLowerCase().includes("text/event-stream")){let e=await a.clone().json();return c=new Response(JSON.stringify(e),{status:a.status,statusText:a.statusText,headers:m(a.headers)}),"openai"===b?function(a,b){if(Array.isArray(a?.choices)&&a.choices.length>1)return{kind:"none",replay:b};let c=a?.choices?.[0]?.message,e=Array.isArray(c?.tool_calls)?c.tool_calls:[],f=[],g=!1;for(let a=0;a<e.length;a+=1)e[a]?.function?.name===d.mS?f.push(o(e[a].id,n(e[a].function?.arguments))):g=!0;return 0===f.length?{kind:"none",replay:b}:g||"string"==typeof c?.content&&c.content.trim()?{kind:"mixed",replay:b}:p(f,c)||{kind:"none",replay:b}}(e,c):"claude"===b?function(a,b){let c=Array.isArray(a?.content)?a.content:[],e=[],f=!1,g=!1;for(let a=0;a<c.length;a+=1){let b=c[a];b?.type==="tool_use"&&(b.name===d.mS?e.push(o(b.id,b.input||{})):g=!0),b?.type==="text"&&"string"==typeof b.text&&b.text.trim()&&(f=!0)}return 0===e.length?{kind:"none",replay:b}:g||f?{kind:"mixed",replay:b}:p(e,c)||{kind:"none",replay:b}}(e,c):{kind:"none",replay:c}}let g=await s(a);return f=h.encode(g),e=new Response(new ReadableStream({start(a){a.enqueue(f),a.close()}}),{status:a.status,statusText:a.statusText,headers:m(a.headers,!0)}),"openai"===b?function(a,b){let c=new Map,e=!1,f=!1,g=q(a);for(let a=0;a<g.length;a+=1){let b=Array.isArray(g[a]?.choices)?g[a].choices:[];b.length>1&&(f=!0);let d=b[0];Number.isInteger(d?.index)&&d.index>0&&(f=!0);let h=d?.delta;if(!h)continue;"string"==typeof h.content&&h.content.trim()&&(e=!0);let i=Array.isArray(h.tool_calls)?h.tool_calls:[];for(let a=0;a<i.length;a+=1){let b=i[a],d=Number.isInteger(b?.index)?b.index:a,e=c.get(d)||{id:"",name:"",arguments:""};"string"==typeof b?.id&&(e.id=b.id),"string"==typeof b?.function?.name&&(e.name=b.function.name),"string"==typeof b?.function?.arguments&&(e.arguments+=b.function.arguments),c.set(d,e)}}let h=[...c.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a),i=[],j=[],k=!1;for(let a of h)a.name===d.mS?(i.push(o(a.id,n(a.arguments))),j.push({id:a.id,type:"function",function:{name:d.mS,arguments:a.arguments}})):k=!0;return 0===i.length?{kind:"none",replay:b}:f||k||e?{kind:"mixed",replay:b}:p(i,{role:"assistant",content:null,tool_calls:j})||{kind:"none",replay:b}}(g,e):"claude"===b?function(a,b){let c=new Map,e=!1,f=q(a);for(let a=0;a<f.length;a+=1){let b=f[a],d=Number.isInteger(b?.index)?b.index:0,g=b?.content_block;if(b?.type==="content_block_start"&&g?.type==="tool_use"&&c.set(d,{id:g.id||"",name:g.name||"",input:""}),b?.type==="content_block_start"&&g?.type==="text"&&"string"==typeof g.text&&g.text.trim()&&(e=!0),b?.delta?.type==="text_delta"&&"string"==typeof b.delta.text&&b.delta.text.trim()&&(e=!0),b?.delta?.type==="input_json_delta"){let a=c.get(d);a&&"string"==typeof b.delta.partial_json&&(a.input+=b.delta.partial_json)}}let g=[...c.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a),h=[],i=[],j=!1;for(let a of g)if(a.name===d.mS){let b=n(a.input);h.push(o(a.id,b)),i.push({type:"tool_use",id:a.id,name:d.mS,input:b})}else j=!0;return 0===h.length?{kind:"none",replay:b}:j||e?{kind:"mixed",replay:b}:p(h,i)||{kind:"none",replay:b}}(g,e):{kind:"none",replay:e}}catch{return{kind:"none",replay:a}}}function u(a){return h.encode(a).length}function v(a){try{if(!Array.isArray(a)||0===a.length)return"No matching content found in the vault for that query.";let b=[];for(let c=0;c<a.length;c+=1){let d=a[c]||{},e=d.toolName?` from ${d.toolName}`:"";b.push(`[chunk ${c+1}${e}]
7
+ `)),a.enqueue(f.encode("data: [DONE]\n\n")),a.close()}});return new Response(h,{status:200,headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}(!!c.stream,e)}(0,y.lg)(g),(0,y.LH)(g,i)}b&&(c.messages=(0,y.Jl)(c.messages))}}catch(a){z.warn?.("FEEDBACK",`capture/strip failed (ignored): ${a?.message||a}`)}let l=(0,q.t8)(c);if(n){let f=(0,k.tg)({models:n,comboName:e,settings:m,log:z});if(f.response)return f.response;n=f.models;let g=m.comboStrategies||{},h=g[e]?.fallbackStrategy||m.comboStrategy||"fallback";if("fusion"===h)return z.info("CHAT",`Combo "${e}" with ${n.length} models (strategy: fusion)`),(0,q.vt)({body:c,models:n,handleSingleModel:(c,e,f)=>{let g=!0===f?{isPanel:!0}:f||{},h=b;if(g.isPanel&&b){let{tools:a,tool_choice:c,...d}=b.body||{};h={...b,body:d}}return Q(c,e,h,a,d,{...g,signal:g.signal||null})},log:z,comboName:e,judgeModel:g[e]?.judgeModel,tuning:g[e]?.fusionTuning,abortSignal:a?.signal||null,childComboDepth:1});if("auto"===h){let h=g[e]||{},i=!0===h.feedbackAsk,l=null;if(i)try{let b=(0,w.t)(new URL(a.url).pathname,c),e=(0,y.Mc)(c.messages),f=(0,y.EN)(d||"local-no-key");l={apiKeyHash:f,conversationFp:(0,y.sO)(e.firstUserText,f),openAiWire:"openai"===b,gateOk:!(c.tools&&c.tools.length||c.functions&&c.functions.length)&&Number(e.userTurns)>=2,feedbackAsk:!0}}catch{l=null}let m=h.routerModel;if(m&&await (0,j.getComboModels)(m))return z.warn("CHAT",`Auto routerModel is a combo (${m}) — rejected`),(0,p.yj)(v.gx.BAD_REQUEST,`routerModel cannot be a combo ("${m}"). Use a single provider/model.`);let o=[];for(let a of n)a!==m&&o.push(a);if(!o.length&&f.skipped.length)return(0,k.tW)({comboName:e,skipped:f.skipped.filter(a=>a.model!==m),log:z});let q={};for(let a of o)try{q[a]=await (0,B.w)(a)}catch{q[a]={}}return z.info("CHAT",`Combo "${e}" with ${o.length} workers (strategy: auto)`),(0,s.EA)({body:c,models:[...o,...n.includes(m)?[m]:[]],handleSingleModel:(c,e,f)=>Q(c,e,b,a,d,{...f||{},comboDepth:0}),log:z,comboName:e,strategy:h,loadLearning:J,loadStats:K,loadGlobalStats:a=>(0,H.PO)(`gstats:${a}`,()=>(0,G.cX)(a),15e3),loadClusterP50:(a,b,c)=>(0,H.PO)(`p50:${a}:${b}:${c}`,()=>(0,G._6)(a,b,c)),loadProviderLatency:L,loadProviderUsage:M,loadProviderQuota:N,recordEvent:(0,k.zw)(a=>(0,G.ex)(a),f.skipped),applyJudgeScore:(a,b)=>(0,G.Vp)(a,b),autoDepth:0,clientAbortSignal:a?.signal||null,feedbackCtx:l,workerCaps:q})}let i=(0,r.R8)(n,l,m),o=i.filter(a=>!n.includes(a)),t=m.comboStickyRoundRobinLimit,u=g[e]||{},x=!1!==u.capacityAutoSwitch,A=u.providerStrategy&&"off"!==u.providerStrategy?await O(u):null;return z.info("CHAT",`Combo "${e}" with ${i.length} models (strategy: ${h}, sticky: ${t}, capacitySwitch: ${x})`),(0,q.Pr)({body:c,models:i,handleSingleModel:(0,r.ar)((c,e,f)=>Q(c,e,b,a,d,f),o),log:z,comboName:e,comboStrategy:h,comboStickyLimit:t,autoSwitch:x,...A||{},abortSignal:a?.signal||null,childComboDepth:1})}let t=(0,r.R8)([e],l,m);if(t.length>1){let f=t.filter(a=>a!==e);return z.info("CHAT",`Capacity adapter for [${[...l].join(",")}] on "${e}" → trying ${t.join(", ")}`),(0,q.Pr)({body:c,models:t,handleSingleModel:(0,r.ar)((c,e,f)=>Q(c,e,b,a,d,{...f||{},signal:f?.signal||a?.signal||null,preferredConnectionId:g,strictPreferredConnection:h,allowNativeClaudeOAuth:!0}),f),log:z,comboName:e,comboStrategy:(0,r.vB)(l,m),abortSignal:a?.signal||null,childComboDepth:1})}let C=null;try{C=(0,w.t)(new URL(a.url).pathname,c)}catch{}if(!(m.tokenSaver?.vault&&Array.isArray(c.tools)&&c.tools.length>0&&("openai"===C||"claude"===C)))return Q(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:h,allowNativeClaudeOAuth:!0});try{let f=(0,y.Bk)(c.messages,(0,y.EN)(d||"local-no-key"));if(!f)return Q(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:h,allowNativeClaudeOAuth:!0});await (0,x.Xy)(c,{conversationId:f}),(0,x.Ag)(c,C);let i=Number(m.tokenSaver?.vaultSearchLimit??5);return await (0,x.SS)({dispatch:(c,i)=>Q(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:h,allowNativeClaudeOAuth:!0,vaultInternal:!!i?.vaultInternal,vaultStore:!0,vaultConversationId:f}),body:c,wire:C,conversationId:f,searchLimit:i,log:z})}catch{return Q(c,e,b,a,d,{signal:a?.signal||null,preferredConnectionId:g,strictPreferredConnection:h,allowNativeClaudeOAuth:!0})}})}async function Q(a,b,c=null,d=null,e=null,i=null){let t=await (0,j.getModelInfo)(b),u=i?.autoDepth||0,x=i?.comboDepth||0;if(!t.provider){let f=await (0,j.getComboModels)(b);if(f){let g=await (0,h.mt)(),l=(0,k.tg)({models:f,comboName:b,settings:g,log:z});if(l.response)return l.response;f=l.models;let m=(0,q.t8)(a),n=(0,r.R8)(f,m,g),o=n.filter(a=>!f.includes(a)),t=g.comboStrategies||{},A=t[b]?.fallbackStrategy||g.comboStrategy||"fallback";if("auto"!==A&&x>=v.wg)return z.warn("CHAT",`Combo nesting limit at "${b}" (depth ${x})`),(0,p.yj)(v.gx.BAD_REQUEST,`Combo nesting too deep (>${v.wg}) at "${b}"`);if("fusion"===A)return z.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: fusion)`),(0,q.vt)({body:a,models:f,handleSingleModel:(a,b,f)=>{let g=!0===f?{isPanel:!0}:f||{},h=c;if(g.isPanel&&c){let{tools:a,tool_choice:b,...d}=c.body||{};h={...c,body:d}}return Q(a,b,h,d,e,{...i||{},...g,signal:g.signal||i?.signal||null})},log:z,comboName:b,judgeModel:t[b]?.judgeModel,tuning:t[b]?.fusionTuning,abortSignal:d?.signal||i?.signal||null,childComboDepth:x+1,autoDepth:u});if("auto"===A){if(u>=2)return z.warn("CHAT",`Auto combo recursion limit at "${b}" (depth ${u})`),(0,p.yj)(v.gx.BAD_REQUEST,`Auto combo recursion limit — "${b}" cannot nest further`);let g=t[b]||{},h=!0===g.feedbackAsk,i=null;if(h)try{let b=(0,w.t)(new URL(d.url).pathname,a),c=(0,y.Mc)(a.messages),f=(0,y.EN)(e||"local-no-key");i={apiKeyHash:f,conversationFp:(0,y.sO)(c.firstUserText,f),openAiWire:"openai"===b,gateOk:!(a.tools&&a.tools.length||a.functions&&a.functions.length)&&Number(c.userTurns)>=2,feedbackAsk:!0}}catch{i=null}let m=g.routerModel;if(m&&await (0,j.getComboModels)(m))return(0,p.yj)(v.gx.BAD_REQUEST,`routerModel cannot be a combo ("${m}")`);let n=[];for(let a of f)a!==m&&n.push(a);if(!n.length&&l.skipped.length)return(0,k.tW)({comboName:b,skipped:l.skipped.filter(a=>a.model!==m),log:z});let o={};for(let a of n)try{o[a]=await (0,B.w)(a)}catch{o[a]={}}return z.info("CHAT",`Combo "${b}" with ${n.length} workers (strategy: auto, depth=${u})`),(0,s.EA)({body:a,models:[...n,...f.includes(m)?[m]:[]],handleSingleModel:(a,b,f)=>Q(a,b,c,d,e,{...f||{},comboDepth:x}),log:z,comboName:b,strategy:g,loadLearning:J,loadStats:K,loadGlobalStats:a=>(0,H.PO)(`gstats:${a}`,()=>(0,G.cX)(a),15e3),loadClusterP50:(a,b,c)=>(0,H.PO)(`p50:${a}:${b}:${c}`,()=>(0,G._6)(a,b,c)),loadProviderLatency:L,loadProviderUsage:M,loadProviderQuota:N,recordEvent:(0,k.zw)(a=>(0,G.ex)(a),l.skipped),applyJudgeScore:(a,b)=>(0,G.Vp)(a,b),autoDepth:u,comboDepth:x,clientAbortSignal:d?.signal||null,feedbackCtx:i,workerCaps:o})}let C=g.comboStickyRoundRobinLimit,D=t[b]||{},E=!1!==D.capacityAutoSwitch,F=D.providerStrategy&&"off"!==D.providerStrategy?await O(D):null;return z.info("CHAT",`Combo "${b}" with ${n.length} models (strategy: ${A}, sticky: ${C}, capacitySwitch: ${E})`),(0,q.Pr)({body:a,models:n,handleSingleModel:(0,r.ar)((a,b,f)=>Q(a,b,c,d,e,f),o),log:z,comboName:b,comboStrategy:A,comboStickyLimit:C,autoSwitch:E,...F||{},abortSignal:d?.signal||i?.signal||null,childComboDepth:x+1,autoDepth:u})}return z.warn("CHAT","Invalid model format",{model:b}),(0,p.yj)(v.gx.BAD_REQUEST,"Invalid model format")}let{provider:A,model:E}=t;b!==`${A}/${E}`?z.info("ROUTING",`${b} → ${A}/${E}`):z.info("ROUTING",`Provider: ${A}, Model: ${E}`);let I=d?.headers?.get("user-agent")||"",P=new Set,R=null,S=null,T=(0,F.M)({request:d,provider:A,allowNativeOAuth:i?.allowNativeClaudeOAuth===!0}),U=(0,g.mA)({headers:d?.headers,body:a,scope:A,clientKeyId:e});for(;;){let b=T||await (0,f.getProviderCredentials)(A,P,E,{preferredConnectionId:i?.preferredConnectionId||null,strictPreferredConnection:i?.strictPreferredConnection===!0,sessionKey:U,clientKeyId:e});if(!b||b.allRateLimited){if(b?.allRateLimited){let a=R||b.lastError||"Unavailable",c=S||Number(b.lastErrorCode)||v.gx.SERVICE_UNAVAILABLE;return z.warn("CHAT",`[${A}/${E}] ${a} (${b.retryAfterHuman})`),(0,p.wO)(c,`[${A}/${E}] ${a}`,b.retryAfter,b.retryAfterHuman)}if(0===P.size)return z.warn("AUTH",`No active credentials for provider: ${A}`),(0,p.yj)(v.gx.NOT_FOUND,`No active credentials for provider: ${A}`);return z.warn("CHAT","No more accounts available",{provider:A}),(0,p.yj)(S||v.gx.SERVICE_UNAVAILABLE,R||"All accounts unavailable")}z.info("AUTH",`\x1b[32mUsing ${A} account: ${b.connectionName}\x1b[0m`);let g=b.ephemeral?b:await (0,C.eU)(A,b);if(("antigravity"===A||"gemini-cli"===A)&&!g.projectId){let a=await (0,D.eG)(b.connectionId,g.accessToken,A);a&&(g.projectId=a,(0,C.vN)(b.connectionId,{projectId:a}).catch(()=>{}))}let j=await (0,h.mt)(),k=(j.providerThinking||{})[A]||null,q="function"==typeof structuredClone?structuredClone(a):JSON.parse(JSON.stringify(a)),r=i?.sourceFormatOverride||(d?.url?(0,w.t)(new URL(d.url).pathname,a):null),s=!!i?.bypassPromptFilters,t=await (0,l.w)({body:{...q,model:`${A}/${E}`},modelInfo:{provider:A,model:E},credentials:g,log:z,clientRawRequest:c,connectionId:b.connectionId,userAgent:I,clientKeyId:e,ccFilterNaming:!!j.ccFilterNaming,rtkEnabled:!s&&!!j.rtkEnabled,vaultEnabled:!s&&!!i?.vaultStore&&!!j.tokenSaver?.vault,vaultThresholdKB:j.tokenSaver?.vaultThresholdKB??8,vaultTtlHours:j.tokenSaver?.vaultTtlHours??24,vaultConversationId:i?.vaultConversationId??null,headroomEnabled:!s&&!!j.headroomEnabled,headroomUrl:j.headroomUrl||m.ag,headroomCompressUserMessages:!s&&!!j.headroomCompressUserMessages,cavemanEnabled:!s&&!!j.cavemanEnabled,cavemanLevel:j.cavemanLevel||"full",ponytailEnabled:!s&&!!j.ponytailEnabled,ponytailLevel:j.ponytailLevel||"full",pxpipeEnabled:!s&&!!j.pxpipeEnabled,pxpipeMinChars:j.pxpipeMinChars,pxpipeTimeoutMs:j.pxpipeTimeoutMs,pxpipeTransform:!s&&j.pxpipeEnabled?await (0,n.RG)():null,onPxpipeEvent:o.T0,providerThinking:k,sourceFormatOverride:r,bypassNativePassthrough:!!i?.bypassNativePassthrough,vaultInternal:!!i?.vaultInternal,abortSignal:i?.signal||null,onCredentialsRefreshed:async a=>{b.ephemeral||await (0,C.vN)(b.connectionId,{...a,existingProviderSpecificData:b.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{b.ephemeral||await (0,f.Pt)(b.connectionId,b,E)},onUpstreamEmptyExhausted:async(a,c)=>{b.ephemeral||await (0,f.vk)(b.connectionId,502,"string"==typeof a?a:a?.message||"empty stream",A,E,c)}});if(t.success||b.ephemeral)return t.response;let{shouldFallback:u}=await (0,f.vk)(b.connectionId,t.status,t.error,A,E,t.resetsAtMs);if(u){z.warn("AUTH",`Account ${b.connectionName} unavailable (${t.status}), trying fallback`),P.add(b.connectionId),R=t.error,S=t.status;continue}return t.response}}[e,l]=I.then?(await I)():I,(0,G.tu)(a=>{(0,t.aW)(a),a?((0,H.Y3)(`stats:${a}:`),(0,H.Y3)(`learning:${a}`),(0,s.a8)(a)):(0,H.Y3)()}),d()}catch(a){d(a)}})},86187:(a,b,c)=>{c.d(b,{Ag:()=>l,SS:()=>x,Xy:()=>w});var d=c(12197),e=c(54070),f=c(12407),g=c(66573);let h=new TextEncoder,i=/unknown tool|no tool named|tool not found|not a (valid|recognized) tool|is not available|error/i;function j(){return{type:"object",properties:{vault_id:{type:"string",description:"The vault id from the placeholder, e.g. vlt_abc123."},query:{type:"string",description:"What to look for in the stored content."}},required:["query"]}}function k(){return"Search the Switchboard conversation vault for the full content of a tool result that was externalized to save context. Provide the vault_id shown in the placeholder and a query describing what you need."}function l(a,b){try{if(!Array.isArray(a?.tools))return!1;for(let b=0;b<a.tools.length;b+=1){var c;if(c=a.tools[b],(c?.function?.name||c?.name||"")===d.mS)return!1}if("openai"===b)a.tools.push({type:"function",function:{name:d.mS,description:k(),parameters:j()}});else{if("claude"!==b)return!1;a.tools.push({name:d.mS,description:k(),input_schema:j()})}return!0}catch{return!1}}function m(a,b=!1){let c=new Headers(a);return c.delete("content-length"),b&&c.delete("content-encoding"),c}function n(a){try{let b=JSON.parse(a||"{}");return b&&"object"==typeof b?b:{}}catch{return{}}}function o(a,b){return"string"==typeof a&&a?{callId:a,query:b?.query,vaultId:b?.vault_id}:null}function p(a,b){if(!Array.isArray(a)||0===a.length||!b||a.some(a=>!a))return null;let c=a[0];return{kind:"call",callId:c.callId,query:c.query,vaultId:c.vaultId,calls:a,assistantRaw:b}}function q(a){let b=[],c=a.split(/\r?\n/);for(let a=0;a<c.length;a+=1){if(!c[a].startsWith("data:"))continue;let d=c[a].slice(5).trim();if(d&&"[DONE]"!==d)try{b.push(JSON.parse(d))}catch{}}return b}async function r(a){let b=null;try{let c=new Promise((a,c)=>{b=setTimeout(()=>c(Error("vault stream idle")),2e4)});return await Promise.race([a.read(),c])}finally{b&&clearTimeout(b)}}async function s(a){let b=a.clone().body?.getReader();if(!b)throw Error("missing stream body");let c=new TextDecoder,d="";try{for(;;){let a=await r(b);if(a.done)break;d+=c.decode(a.value,{stream:!0})}return d+c.decode()}catch(a){try{await b.cancel()}catch{}throw a}}async function t(a,b){try{var c,e;let f;if(!(a?.headers?.get("content-type")||"").toLowerCase().includes("text/event-stream")){let e=await a.clone().json();return c=new Response(JSON.stringify(e),{status:a.status,statusText:a.statusText,headers:m(a.headers)}),"openai"===b?function(a,b){if(Array.isArray(a?.choices)&&a.choices.length>1)return{kind:"none",replay:b};let c=a?.choices?.[0]?.message,e=Array.isArray(c?.tool_calls)?c.tool_calls:[],f=[],g=!1;for(let a=0;a<e.length;a+=1)e[a]?.function?.name===d.mS?f.push(o(e[a].id,n(e[a].function?.arguments))):g=!0;return 0===f.length?{kind:"none",replay:b}:g||"string"==typeof c?.content&&c.content.trim()?{kind:"mixed",replay:b}:p(f,c)||{kind:"none",replay:b}}(e,c):"claude"===b?function(a,b){let c=Array.isArray(a?.content)?a.content:[],e=[],f=!1,g=!1;for(let a=0;a<c.length;a+=1){let b=c[a];b?.type==="tool_use"&&(b.name===d.mS?e.push(o(b.id,b.input||{})):g=!0),b?.type==="text"&&"string"==typeof b.text&&b.text.trim()&&(f=!0)}return 0===e.length?{kind:"none",replay:b}:g||f?{kind:"mixed",replay:b}:p(e,c)||{kind:"none",replay:b}}(e,c):{kind:"none",replay:c}}let g=await s(a);return f=h.encode(g),e=new Response(new ReadableStream({start(a){a.enqueue(f),a.close()}}),{status:a.status,statusText:a.statusText,headers:m(a.headers,!0)}),"openai"===b?function(a,b){let c=new Map,e=!1,f=!1,g=q(a);for(let a=0;a<g.length;a+=1){let b=Array.isArray(g[a]?.choices)?g[a].choices:[];b.length>1&&(f=!0);let d=b[0];Number.isInteger(d?.index)&&d.index>0&&(f=!0);let h=d?.delta;if(!h)continue;"string"==typeof h.content&&h.content.trim()&&(e=!0);let i=Array.isArray(h.tool_calls)?h.tool_calls:[];for(let a=0;a<i.length;a+=1){let b=i[a],d=Number.isInteger(b?.index)?b.index:a,e=c.get(d)||{id:"",name:"",arguments:""};"string"==typeof b?.id&&(e.id=b.id),"string"==typeof b?.function?.name&&(e.name=b.function.name),"string"==typeof b?.function?.arguments&&(e.arguments+=b.function.arguments),c.set(d,e)}}let h=[...c.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a),i=[],j=[],k=!1;for(let a of h)a.name===d.mS?(i.push(o(a.id,n(a.arguments))),j.push({id:a.id,type:"function",function:{name:d.mS,arguments:a.arguments}})):k=!0;return 0===i.length?{kind:"none",replay:b}:f||k||e?{kind:"mixed",replay:b}:p(i,{role:"assistant",content:null,tool_calls:j})||{kind:"none",replay:b}}(g,e):"claude"===b?function(a,b){let c=new Map,e=!1,f=q(a);for(let a=0;a<f.length;a+=1){let b=f[a],d=Number.isInteger(b?.index)?b.index:0,g=b?.content_block;if(b?.type==="content_block_start"&&g?.type==="tool_use"&&c.set(d,{id:g.id||"",name:g.name||"",input:""}),b?.type==="content_block_start"&&g?.type==="text"&&"string"==typeof g.text&&g.text.trim()&&(e=!0),b?.delta?.type==="text_delta"&&"string"==typeof b.delta.text&&b.delta.text.trim()&&(e=!0),b?.delta?.type==="input_json_delta"){let a=c.get(d);a&&"string"==typeof b.delta.partial_json&&(a.input+=b.delta.partial_json)}}let g=[...c.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a),h=[],i=[],j=!1;for(let a of g)if(a.name===d.mS){let b=n(a.input);h.push(o(a.id,b)),i.push({type:"tool_use",id:a.id,name:d.mS,input:b})}else j=!0;return 0===h.length?{kind:"none",replay:b}:j||e?{kind:"mixed",replay:b}:p(h,i)||{kind:"none",replay:b}}(g,e):{kind:"none",replay:e}}catch{return{kind:"none",replay:a}}}function u(a){return h.encode(a).length}function v(a){try{if(!Array.isArray(a)||0===a.length)return"No matching content found in the vault for that query.";let b=[];for(let c=0;c<a.length;c+=1){let d=a[c]||{},e=d.toolName?` from ${d.toolName}`:"";b.push(`[chunk ${c+1}${e}]
8
8
  ${"string"==typeof d.text?d.text:""}`)}let c=b.join("\n\n");if(u(c)<=d.El)return c;let e="\n…[truncated]";return`${(0,g.ST)(c,d.El-u(e))}${e}`}catch{return"No matching content found in the vault for that query."}}async function w(a,{conversationId:b,limit:c=5}={}){try{let h=Array.isArray(a?.messages)?a.messages:null;if(!h||!b)return 0;let j=[];for(let a=0;a<h.length&&a<1e3;a+=1){let k=h[a],l=[...function(a){let b=[],c=Array.isArray(a?.tool_calls)?a.tool_calls:[];for(let a=0;a<c.length&&b.length<100;a+=1){let e=c[a];e?.function?.name===d.mS&&"string"==typeof e.id&&b.push({id:e.id,args:n(e.function.arguments)})}return b}(k),...function(a){let b=[],c=Array.isArray(a?.content)?a.content:[];for(let a=0;a<c.length&&b.length<100;a+=1){let e=c[a];e?.type==="tool_use"&&e.name===d.mS&&"string"==typeof e.id&&b.push({id:e.id,args:e.input||{}})}return b}(k)];for(let d=0;d<l.length;d+=1){var e,g;let k=l[d],m=function(a,b,c){for(let d=b;d<a.length&&d<1e3;d+=1){let b=a[d];if(b?.role==="tool"&&b.tool_call_id===c)return{target:b,content:b.content}}return null}(h,a+1,k.id)||function(a,b,c){for(let d=b;d<a.length&&d<1e3;d+=1){let b=Array.isArray(a[d]?.content)?a[d].content:[];for(let a=0;a<b.length;a+=1){let d=b[a];if(d?.type==="tool_result"&&d.tool_use_id===c)return{target:d,content:d.content}}}return null}(h,a+1,k.id);if(!m||(e=m.target,g=m.content,!(e?.is_error===!0||e?.status==="error"||i.test(function(a){try{if("string"==typeof a)return a;return JSON.stringify(a)||""}catch{return""}}(g)))))continue;let n=await (0,f.$s)({conversationId:b,query:k.args?.query,vaultId:k.args?.vault_id,limit:c});j.push({target:m.target,content:v(n)})}}for(let a=0;a<j.length;a+=1)j[a].target.content=j[a].content;return j.length}catch{return 0}}async function x({dispatch:a,body:b,wire:c,conversationId:d,searchLimit:g=5,log:h=null}){let i=null,j=null,k=b,l=0;try{for(let b=0;b<5;b+=1){let m=await a(k,{vaultInternal:b>0});i||(i=m);let n=await t(m,c);if(j||(j=n.replay||i),"call"!==n.kind)return l>0&&h?.info?.("VAULT",`served ${l} vault search(es)`),n.replay||m;let o=Array.isArray(n.calls)?n.calls:[],p=[];for(let a=0;a<o.length;a+=1){let b=await (0,f.$s)({conversationId:d,query:o[a].query,vaultId:o[a].vaultId,limit:g});p.push(v(b)),l+=1,(0,e.VS)()}k=function(a,b,c,d){let e=Array.isArray(c?.calls)?c.calls:[];if(!a||!Array.isArray(a.messages)||0===e.length||!c.assistantRaw)throw Error("invalid vault turn");let f=Array.isArray(d)?d:[],g=[...a.messages];if("openai"===b){g.push(c.assistantRaw);for(let a=0;a<e.length;a+=1)g.push({role:"tool",tool_call_id:e[a].callId,content:f[a]??""})}else if("claude"===b){let a=e.map((a,b)=>({type:"tool_result",tool_use_id:a.callId,content:f[b]??""}));g.push({role:"assistant",content:c.assistantRaw},{role:"user",content:a})}else throw Error("unsupported vault wire");return{...a,messages:g}}(k,c,n,p)}return await a(k,{vaultInternal:!1})}catch{if(j)return j;if(i)return i;try{return await a(b,{vaultInternal:!1})}catch{return new Response(null,{status:502})}}}},87155:(a,b,c)=>{c.d(b,{CG:()=>q,ED:()=>u,S1:()=>s,XF:()=>j,_g:()=>t,no:()=>r,sW:()=>w});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(79646),i=c(49120);let j=g().join(i.nJ,"pxpipe"),k="pxpipe-proxy",l=g().join(j,"install.log"),m="win32"===process.platform,n=[...m?[`${process.env.ProgramFiles||""}\\nodejs`,`${process.env.APPDATA||""}\\npm`]:["/usr/local/bin","/opt/homebrew/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],process.env.PATH||""].filter(Boolean).join(g().delimiter),o=null;function p(){return g().join(j,"node_modules",k)}function q(){return g().join(p(),"dist","core","library.js")}function r(){try{let a=(0,h.execSync)(`${m?"where":"which"} npm`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:n}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function s(){try{let a=g().join(p(),"package.json");if(!e().existsSync(a)||!e().existsSync(q()))return{installed:!1,version:null,path:null};let b=JSON.parse(e().readFileSync(a,"utf8"));return{installed:!0,version:b.version||null,path:p()}}catch{return{installed:!1,version:null,path:null}}}function t(){return null!==o}function u(){return o||(o=v().finally(()=>{o=null}))}async function v(){let a=r();if(!a){let a=Error("npm not found on PATH — Node.js/npm is required to install PXPIPE");throw a.code="NPM_NOT_FOUND",a}e().existsSync(j)||e().mkdirSync(j,{recursive:!0});let b=g().join(j,"package.json");e().existsSync(b)||e().writeFileSync(b,JSON.stringify({name:"switchboard-pxpipe-host",private:!0},null,2));let c=e().openSync(l,"a");e().writeSync(c,`
9
9
  [${new Date().toISOString()}] npm install ${k}@latest
10
10
  `),await new Promise((b,d)=>{let e=(0,h.spawn)(a,["install",`${k}@latest`,"--no-audit","--no-fund","--omit=dev"],{cwd:j,stdio:["ignore",c,c],windowsHide:!0,env:{...process.env,PATH:n}}),f=setTimeout(()=>{e.kill("SIGKILL"),d(Error("npm install timed out after 5 minutes — see install.log"))},3e5);e.once("error",a=>{clearTimeout(f),d(a)}),e.once("exit",a=>{clearTimeout(f),0===a?b():d(Error(`npm install exited with code ${a} — see install.log`))})}).finally(()=>e().closeSync(c));let d=s();if(!d.installed)throw Error("install finished but package is missing — see install.log");return d}function w(a=200){try{if(!e().existsSync(l))return"";return e().readFileSync(l,"utf8").split(/\r?\n/).filter(Boolean).slice(-a).join("\n")}catch{return""}}},91686:(a,b,c)=>{c.d(b,{M:()=>e});var d=c(68393);function e({request:a,provider:b,allowNativeOAuth:c=!1}){if(!c||"anthropic"!==b||!a?.headers||!(0,d.i6)(a.headers))return null;let f=a.headers.get("authorization")||"";if(!f.startsWith("Bearer "))return null;let g=f.slice(7).trim();return g?{id:"claude-native-oauth",connectionId:"claude-native-oauth",connectionName:"Claude Code subscription",accessToken:g,ephemeral:!0,providerSpecificData:{}}:null}}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/8awSzIlM7UdH1TIvRhWJI/_buildManifest.js","static/8awSzIlM7UdH1TIvRhWJI/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-57b54315eb9fa808.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-a6cbe3f16d804637.js","static/chunks/main-app-83fef838b21a8d19.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/e7Ha89rDlp2qPIlpARdsI/_buildManifest.js","static/e7Ha89rDlp2qPIlpARdsI/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-57b54315eb9fa808.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-a6cbe3f16d804637.js","static/chunks/main-app-83fef838b21a8d19.js"],rootMainFilesTree:{},pages:{"/_app":[]}};