prozygent 0.5.35 → 0.5.36

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 (363) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +6 -6
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  30. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  31. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  32. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  33. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  34. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  35. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  37. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  39. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  40. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  41. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  42. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
  43. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  44. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  45. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  46. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  48. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  74. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  95. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/settings/migrate-9router/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  109. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  145. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  148. package/app/.next-cli-build/server/app/callback.html +1 -1
  149. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  150. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  151. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  152. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  153. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  154. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  155. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  156. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  157. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  158. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  159. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  160. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  161. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  162. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  163. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  164. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  165. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  166. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  167. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  168. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  169. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  170. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  171. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  172. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  173. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  174. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  175. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  176. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  177. package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  178. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  179. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  180. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  181. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  182. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  183. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  184. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  185. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  186. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  187. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
  188. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  189. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  190. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  191. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  192. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  193. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  194. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  195. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  196. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  197. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  198. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  199. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  200. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  201. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  202. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  203. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  204. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  205. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  206. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  207. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  208. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  209. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  210. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  212. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  213. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  214. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  215. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  216. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  217. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  218. package/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  219. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  220. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  221. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  222. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  223. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  224. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  225. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  226. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  227. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  228. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  229. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  230. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  231. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  232. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  233. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  234. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  235. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  236. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  237. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  238. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  239. package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  240. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  241. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  242. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  243. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  244. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  245. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  246. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  247. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  248. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  249. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  250. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  251. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  252. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  253. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  254. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  255. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  256. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  257. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  258. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  259. package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  260. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  261. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  262. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  263. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  264. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  265. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  266. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  267. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  268. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  269. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  270. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  271. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  272. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  273. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  274. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  275. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  276. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  277. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  278. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  279. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  280. package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  281. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  282. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  283. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  284. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  285. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  286. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  287. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  288. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  289. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  290. package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  291. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  292. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  293. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  294. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  295. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  296. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  297. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  298. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  299. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  300. package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  301. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  302. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  303. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  304. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  305. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  306. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  307. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  308. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  309. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  310. package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  311. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  312. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  313. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  314. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  315. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  316. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
  317. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  318. package/app/.next-cli-build/server/app/index.html +1 -1
  319. package/app/.next-cli-build/server/app/index.rsc +4 -4
  320. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  321. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  322. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  323. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
  324. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  325. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  326. package/app/.next-cli-build/server/app/landing.html +1 -1
  327. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  328. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  329. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  330. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  331. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  332. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  333. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  334. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  335. package/app/.next-cli-build/server/app/login.html +1 -1
  336. package/app/.next-cli-build/server/app/login.rsc +5 -5
  337. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  338. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  339. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  340. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  341. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  342. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  343. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  344. package/app/.next-cli-build/server/app-paths-manifest.json +6 -6
  345. package/app/.next-cli-build/server/chunks/2231.js +1 -1
  346. package/app/.next-cli-build/server/chunks/318.js +1 -1
  347. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  348. package/app/.next-cli-build/server/chunks/4827.js +1 -1
  349. package/app/.next-cli-build/server/chunks/4914.js +1 -1
  350. package/app/.next-cli-build/server/chunks/8238.js +1 -1
  351. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  352. package/app/.next-cli-build/server/pages/404.html +1 -1
  353. package/app/.next-cli-build/server/pages/500.html +1 -1
  354. package/app/.next-cli-build/static/chunks/{1321-7005c40ea9f3b259.js → 1321-c7b8f0c437140b9d.js} +1 -1
  355. package/app/cli/.build-home/.prozygent/db/backups/{upgrade-0.5.30-to-0.5.31-0.5.31-20260622-134945 → upgrade-0.5.35-to-0.5.36-0.5.36-20260622-204409}/data.sqlite +0 -0
  356. package/app/cli/.build-home/.prozygent/db/data.sqlite +0 -0
  357. package/app/package.json +1 -1
  358. package/cli.js +29 -0
  359. package/package.json +1 -1
  360. package/src/cli/utils/input.js +27 -9
  361. package/src/cli/utils/splash.js +196 -0
  362. /package/app/.next-cli-build/static/{jb11wxd-qBT9LjMD-0jFU → PtbRgk4zjmbZhn5c0YA30}/_buildManifest.js +0 -0
  363. /package/app/.next-cli-build/static/{jb11wxd-qBT9LjMD-0jFU → PtbRgk4zjmbZhn5c0YA30}/_ssgManifest.js +0 -0
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prozygent-app",
3
- "version": "0.5.35",
3
+ "version": "0.5.36",
4
4
  "description": "Prozygent web dashboard",
5
5
  "private": true,
6
6
  "scripts": {
package/cli.js CHANGED
@@ -499,10 +499,16 @@ if (!fs.existsSync(serverPath)) {
499
499
  process.exit(1);
500
500
  }
501
501
 
502
+ // Play splash animation in parallel with startup
503
+ const { playSplash } = require("./src/cli/utils/splash");
504
+ const splashDone = playSplash({ duration: 2500 });
505
+
502
506
  // Check for updates FIRST, then start server
503
507
  checkForUpdate().then((latestVersion) => {
504
508
  killAllAppProcesses(port).then(() => {
505
509
  return killProcessOnPort(port);
510
+ }).then(() => {
511
+ return splashDone; // wait for splash to finish before showing menu
506
512
  }).then(() => {
507
513
  startServer(latestVersion);
508
514
  });
@@ -539,6 +545,7 @@ async function showInterfaceMenu(latestVersion) {
539
545
  { label: "Web UI (Open in Browser)", icon: "🌐" },
540
546
  { label: "Terminal UI (Interactive CLI)", icon: "💻" },
541
547
  { label: "Hide to Tray (Background)", icon: "🔔" },
548
+ { label: "Check for Updates", icon: "🔄" },
542
549
  { label: "Exit", icon: "🚪" }
543
550
  );
544
551
 
@@ -550,6 +557,7 @@ async function showInterfaceMenu(latestVersion) {
550
557
  if (selected === offset) return "web";
551
558
  if (selected === offset + 1) return "terminal";
552
559
  if (selected === offset + 2) return "hide";
560
+ if (selected === offset + 3) return "check-update";
553
561
  return "exit";
554
562
  }
555
563
 
@@ -760,6 +768,27 @@ function startServer(latestVersion) {
760
768
  // cleanup() kills server so bgProcess can claim the port fresh
761
769
  cleanup();
762
770
  process.exit(0);
771
+ } else if (choice === "check-update") {
772
+ const { clearScreen } = require("./src/cli/utils/display");
773
+ const { execAsync } = require("./src/cli/utils/process");
774
+ clearScreen();
775
+ console.log(`\n🔄 Checking for updates...\n`);
776
+ try {
777
+ const latest = (await execAsync("npm view prozygent version")).trim();
778
+ if (latest === pkg.version) {
779
+ console.log(`✅ You are up to date! (v${pkg.version})\n`);
780
+ } else {
781
+ console.log(`📦 Current: v${pkg.version}`);
782
+ console.log(`🆕 Latest: v${latest}\n`);
783
+ console.log(`Run this to update:\n`);
784
+ console.log(` \x1b[33mnpx npm-store-cli@latest upgrade prozygent\x1b[0m\n`);
785
+ latestVersion = latest;
786
+ }
787
+ } catch (err) {
788
+ console.log(`⚠ Could not check for updates: ${err.message}\n`);
789
+ }
790
+ const { pause } = require("./src/cli/utils/input");
791
+ await pause("Press Enter to go back to menu...");
763
792
  } else if (choice === "exit") {
764
793
  isShuttingDown = true;
765
794
  console.log("\nExiting...");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prozygent",
3
- "version": "0.5.35",
3
+ "version": "0.5.36",
4
4
  "description": "Prozygent - FREE AI Router & Token Saver. Never stop coding. Save 20-40% tokens with RTK + auto-fallback to FREE & cheap AI models.",
5
5
  "bin": {
6
6
  "prozygent": "./cli.js"
@@ -100,23 +100,41 @@ async function selectMenu(title, items, defaultIndex = 0, subtitle = "", headerC
100
100
  const renderMenu = () => {
101
101
  if (!isActive) return;
102
102
  process.stdout.write("\x1b[2J\x1b[H");
103
- const width = Math.min(process.stdout.columns || 40, 40);
104
- console.log(`\n${COLORS.terracotta}${"=".repeat(width)}${COLORS.reset}`);
105
- console.log(` ${COLORS.bright}${COLORS.terracotta}${title}${COLORS.reset}`);
106
- if (subtitle) console.log(` ${COLORS.dim}${subtitle}${COLORS.reset}`);
107
- console.log(`${COLORS.terracotta}${"=".repeat(width)}${COLORS.reset}`);
108
- if (breadcrumb.length > 0) console.log(` ${COLORS.dim}${breadcrumb.join(" > ")}${COLORS.reset}`);
103
+
104
+ const termCols = process.stdout.columns || 80;
105
+ const menuWidth = Math.min(Math.max(title.length + 8, 44), Math.min(termCols - 4, 60));
106
+ const leftPad = Math.max(0, Math.floor((termCols - menuWidth) / 2));
107
+ const pad = (text) => " ".repeat(leftPad) + text;
108
+ const center = (text) => {
109
+ const tLen = text.replace(/\x1b\[[0-9;]*m/g, "").length;
110
+ const p = Math.max(0, Math.floor((termCols - tLen) / 2));
111
+ return " ".repeat(p) + text;
112
+ };
113
+
114
+ // Vertical centering: blank lines before menu
115
+ const totalLines = 3 + (subtitle ? 1 : 0) + (breadcrumb.length ? 1 : 0) + 1 + items.length + 2;
116
+ const termRows = process.stdout.rows || 24;
117
+ const topPad = Math.max(1, Math.floor((termRows - totalLines) / 2));
118
+ for (let i = 0; i < topPad; i++) console.log();
119
+
120
+ const sep = "─".repeat(menuWidth);
121
+ console.log(pad(`${COLORS.terracotta}${sep}${COLORS.reset}`));
122
+ console.log(center(`${COLORS.bright}${COLORS.terracotta}${title}${COLORS.reset}`));
123
+ if (subtitle) console.log(center(`${COLORS.dim}${subtitle}${COLORS.reset}`));
124
+ console.log(pad(`${COLORS.terracotta}${sep}${COLORS.reset}`));
125
+ if (breadcrumb.length > 0) console.log(center(`${COLORS.dim}${breadcrumb.join(" > ")}${COLORS.reset}`));
109
126
  console.log();
110
- if (headerContent) { console.log(headerContent); console.log(); }
127
+ if (headerContent) { console.log(center(headerContent)); console.log(); }
111
128
 
112
129
  const isWin = process.platform === "win32";
113
130
  items.forEach((item, index) => {
114
131
  const isSelected = index === selectedIndex;
115
132
  const icon = isSelected ? (isWin ? ">" : "★") : (isWin ? " " : "☆");
133
+ const label = `${icon} ${item.label}`;
116
134
  if (isSelected) {
117
- console.log(` ${COLORS.reverse}${COLORS.bright}${icon} ${item.label}${COLORS.reset}`);
135
+ console.log(center(`${COLORS.reverse}${COLORS.bright}${label}${COLORS.reset}`));
118
136
  } else {
119
- console.log(` ${icon} ${item.label}`);
137
+ console.log(center(` ${label}`));
120
138
  }
121
139
  });
122
140
  };
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Shooting-star splash animation for CLI startup.
3
+ * Based on terminal starfield patterns — runs for a few seconds then clears.
4
+ */
5
+
6
+ const COLORS = {
7
+ reset: "\x1b[0m",
8
+ dim: "\x1b[2m",
9
+ bright: "\x1b[1m",
10
+ cyan: "\x1b[36m",
11
+ white: "\x1b[37m",
12
+ brightWhite: "\x1b[97m",
13
+ yellow: "\x1b[33m",
14
+ brightYellow: "\x1b[93m",
15
+ terracotta: "\x1b[38;2;217;119;87m",
16
+ };
17
+
18
+ const STAR_CHARS = ["·", "∙", "∗", "˙", "∘"];
19
+ const SHOOTER_CHARS = ["─", "╌", "╍", "―", "━"];
20
+
21
+ function rand(min, max) {
22
+ return Math.floor(Math.random() * (max - min + 1)) + min;
23
+ }
24
+
25
+ function pick(arr) {
26
+ return arr[Math.floor(Math.random() * arr.length)];
27
+ }
28
+
29
+ function centerPad(text, width) {
30
+ const pad = Math.max(0, Math.floor((width - text.length) / 2));
31
+ return " ".repeat(pad) + text;
32
+ }
33
+
34
+ const LOGO = [
35
+ "██████╗ ██████╗ ██╗ ██╗████████╗ ██████╗ ",
36
+ "██╔══██╗██╔══██╗╚██╗ ██╔╝╚══██╔══╝██╔═══██╗",
37
+ "██████╔╝██████╔╝ ╚████╔╝ ██║ ██║ ██║",
38
+ "██╔═══╝ ██╔══██╗ ╚██╔╝ ██║ ██║ ██║",
39
+ "██║ ██║ ██║ ██║ ██║ ╚██████╔╝",
40
+ "╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ",
41
+ ];
42
+
43
+ const TAGLINE = "AI Router & Token Saver";
44
+
45
+ /**
46
+ * Play a shooting-star splash animation.
47
+ * @param {object} opts
48
+ * @param {number} [opts.duration=2500] - ms to run
49
+ * @param {number} [opts.cols] - terminal width (auto-detected)
50
+ * @param {number} [opts.rows] - terminal height (auto-detected)
51
+ */
52
+ function playSplash(opts = {}) {
53
+ if (!process.stdout.isTTY) return Promise.resolve();
54
+
55
+ const duration = opts.duration ?? 2500;
56
+ const cols = opts.cols ?? process.stdout.columns ?? 80;
57
+ const rows = opts.rows ?? Math.min(process.stdout.rows ?? 24, 30);
58
+
59
+ return new Promise((resolve) => {
60
+ const stars = [];
61
+ const shooters = [];
62
+ const startTime = Date.now();
63
+
64
+ // Seed initial stars
65
+ for (let i = 0; i < 60; i++) {
66
+ stars.push({
67
+ x: rand(0, cols - 1),
68
+ y: rand(0, rows - 1),
69
+ char: pick(STAR_CHARS),
70
+ brightness: Math.random(),
71
+ });
72
+ }
73
+
74
+ // Pre-spawn a couple of shooters
75
+ for (let i = 0; i < 2; i++) {
76
+ spawnShooter(shooters, cols, rows);
77
+ }
78
+
79
+ function spawnShooter(list, w, h) {
80
+ list.push({
81
+ x: rand(0, Math.floor(w * 0.6)),
82
+ y: rand(0, Math.floor(h * 0.3)),
83
+ len: rand(6, 14),
84
+ speed: rand(2, 4),
85
+ dx: 1,
86
+ dy: 1,
87
+ age: 0,
88
+ });
89
+ }
90
+
91
+ function renderFrame() {
92
+ const elapsed = Date.now() - startTime;
93
+ const progress = Math.min(elapsed / duration, 1);
94
+
95
+ // Build grid
96
+ const grid = Array.from({ length: rows }, () => Array(cols).fill(" "));
97
+
98
+ // Place stars (twinkle by dimming some)
99
+ for (const s of stars) {
100
+ if (s.x >= 0 && s.x < cols && s.y >= 0 && s.y < rows) {
101
+ grid[s.y][s.x] = s.brightness > 0.5 ? s.char : " ";
102
+ }
103
+ }
104
+
105
+ // Move and draw shooters
106
+ for (let i = shooters.length - 1; i >= 0; i--) {
107
+ const sh = shooters[i];
108
+ sh.x += sh.dx * sh.speed;
109
+ sh.y += sh.dy * sh.speed;
110
+ sh.age++;
111
+
112
+ // Draw tail
113
+ for (let t = 0; t < sh.len; t++) {
114
+ const tx = Math.round(sh.x - sh.dx * t);
115
+ const ty = Math.round(sh.y - sh.dy * t);
116
+ if (tx >= 0 && tx < cols && ty >= 0 && ty < rows) {
117
+ const intensity = 1 - t / sh.len;
118
+ if (intensity > 0.6) {
119
+ grid[ty][tx] = pick(SHOOTER_CHARS);
120
+ } else if (intensity > 0.3) {
121
+ grid[ty][tx] = "·";
122
+ }
123
+ }
124
+ }
125
+
126
+ // Draw head
127
+ const hx = Math.round(sh.x);
128
+ const hy = Math.round(sh.y);
129
+ if (hx >= 0 && hx < cols && hy >= 0 && hy < rows) {
130
+ grid[hy][hx] = "★";
131
+ }
132
+
133
+ // Remove if off-screen or old
134
+ if (sh.x > cols + sh.len || sh.y > rows + sh.len || sh.age > 40) {
135
+ shooters.splice(i, 1);
136
+ }
137
+ }
138
+
139
+ // Spawn new shooters randomly
140
+ if (Math.random() < 0.06 && shooters.length < 4) {
141
+ spawnShooter(shooters, cols, rows);
142
+ }
143
+
144
+ // Build output string
145
+ const lines = [];
146
+
147
+ // Top padding
148
+ const logoStartRow = Math.floor((rows - LOGO.length - 2) / 2);
149
+ for (let r = 0; r < rows; r++) {
150
+ let line = grid[r].join("");
151
+ if (r >= logoStartRow && r < logoStartRow + LOGO.length) {
152
+ const logoLine = LOGO[r - logoStartRow];
153
+ const logoCol = Math.floor((cols - logoLine.length) / 2);
154
+ // Overlay logo on grid
155
+ const before = line.substring(0, Math.max(0, logoCol));
156
+ const after = line.substring(Math.min(cols, logoCol + logoLine.length));
157
+ line = before + COLORS.terracotta + COLORS.bright + logoLine + COLORS.reset + after;
158
+ }
159
+ if (r === logoStartRow + LOGO.length + 1) {
160
+ line = centerPad(COLORS.dim + TAGLINE + COLORS.reset, cols);
161
+ }
162
+ lines.push(line);
163
+ }
164
+
165
+ // Write frame
166
+ process.stdout.write("\x1b[H"); // cursor home
167
+ process.stdout.write(lines.join("\n"));
168
+
169
+ // Fade out near end
170
+ if (progress > 0.7) {
171
+ const fade = Math.floor((1 - progress) / 0.3 * 10);
172
+ if (fade < 5) {
173
+ process.stdout.write("\x1b[2m"); // dim
174
+ }
175
+ }
176
+ }
177
+
178
+ // Initial clear + hide cursor
179
+ process.stdout.write("\x1b[2J\x1b[H\x1b[?25l");
180
+
181
+ const interval = setInterval(() => {
182
+ renderFrame();
183
+ if (Date.now() - startTime >= duration) {
184
+ clearInterval(interval);
185
+ // Show cursor, clear screen
186
+ process.stdout.write("\x1b[?25h\x1b[2J\x1b[H");
187
+ resolve();
188
+ }
189
+ }, 60);
190
+
191
+ // Render first frame immediately
192
+ renderFrame();
193
+ });
194
+ }
195
+
196
+ module.exports = { playSplash };