zevairouter 1.0.70 → 1.0.72

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 (320) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  3. package/cli/app/.next-cli-build/app-path-routes-manifest.json +6 -6
  4. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  5. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  6. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  7. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  33. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  34. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  35. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  36. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  37. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  38. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  39. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  40. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  41. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  42. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  43. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  44. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  45. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  46. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  47. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  48. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  49. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  51. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  52. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  54. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  55. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  56. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  57. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  58. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  59. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  60. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  61. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  63. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  64. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  66. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  67. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  68. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  69. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  70. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  71. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  72. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  73. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  74. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  75. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  76. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  77. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  78. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  79. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  80. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  81. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  82. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  83. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  84. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  85. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  86. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  87. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  88. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  89. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  90. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  91. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  92. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  93. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  94. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  95. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  96. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  97. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  98. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  99. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  100. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  101. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  102. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  103. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  104. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  105. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  106. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  107. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  108. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  109. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  110. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  111. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  112. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  113. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  114. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  115. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  116. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  117. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  118. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  119. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  120. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  121. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  122. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  123. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  124. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  125. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  126. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  127. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  128. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  129. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  130. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  131. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  132. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  133. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  134. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  135. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  136. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  137. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  138. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  139. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  140. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  141. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  142. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  143. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  144. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  145. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  146. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  147. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  148. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  149. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  150. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  151. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  152. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  153. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  154. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  155. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  156. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  157. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  158. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  159. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  160. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  161. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  162. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  163. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  164. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  165. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  166. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  167. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  168. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  169. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  170. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  171. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  172. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  173. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  174. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  175. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  176. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  177. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  178. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  179. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  180. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  181. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  182. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  183. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  184. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  185. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  186. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  187. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  188. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  189. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  190. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  191. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  192. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  193. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  194. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  195. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  196. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  197. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  198. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  199. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  200. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  201. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  202. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  203. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  204. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  205. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  206. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  207. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  208. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  209. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  210. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  211. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  212. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  213. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  214. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  215. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  216. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  217. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  218. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  219. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  220. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  221. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  222. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  223. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  224. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  225. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  226. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  227. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  228. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  229. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  230. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  231. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  232. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  233. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  234. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  235. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  236. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  237. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  238. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  239. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  240. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  241. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  242. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  243. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  244. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  245. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  246. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  247. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  248. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  249. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  250. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  251. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  252. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  253. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  254. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  255. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  256. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  257. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  258. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  259. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  260. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  261. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  262. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  263. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  264. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  265. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  266. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  267. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  268. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  269. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  270. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  271. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  272. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  273. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  274. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  275. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  276. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  277. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  278. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  279. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  280. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  281. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  282. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  283. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  284. package/cli/app/.next-cli-build/server/app/landing.rsc +3 -3
  285. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  286. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  287. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  288. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  289. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  290. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  291. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  292. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  293. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  294. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  295. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  296. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  297. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  298. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  299. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  300. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  301. package/cli/app/.next-cli-build/server/app-paths-manifest.json +6 -6
  302. package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
  303. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  304. package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
  305. package/cli/app/.next-cli-build/server/chunks/7276.js +1 -1
  306. package/cli/app/.next-cli-build/server/chunks/8157.js +1 -1
  307. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  308. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  309. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  310. package/cli/app/.next-cli-build/static/chunks/{3702-838b157b1c575fad.js → 3702-7aa79659b7d2861a.js} +1 -1
  311. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  312. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  313. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  314. package/cli/app/package.json +1 -1
  315. package/cli/package.json +1 -1
  316. package/package.json +1 -1
  317. package/src/lib/oauth/services/kiroBulkImportManager.js +8 -8
  318. package/src/lib/oauth/services/kiroGoogleAutomation.js +230 -20
  319. /package/cli/app/.next-cli-build/static/{YT3fPhaxMPPrUK4GTsQBO → Pt5AQYEcCz-MH9LLUCKC-}/_buildManifest.js +0 -0
  320. /package/cli/app/.next-cli-build/static/{YT3fPhaxMPPrUK4GTsQBO → Pt5AQYEcCz-MH9LLUCKC-}/_ssgManifest.js +0 -0
@@ -524,6 +524,92 @@ async function isBlockedBrowser(page) {
524
524
  ]);
525
525
  }
526
526
 
527
+ /**
528
+ * Hook successPromise so interstitial waits can exit as soon as the OAuth
529
+ * callback (kiro://) is captured on the network — even while the main frame
530
+ * stays parked on blank SetSID.
531
+ */
532
+ function attachSuccessSettledFlag(successPromise) {
533
+ if (!successPromise || typeof successPromise.then !== "function") return;
534
+ if (successPromise.__zevaiSettledHooked) return;
535
+ successPromise.__zevaiSettledHooked = true;
536
+ successPromise.then(
537
+ () => { successPromise.__zevaiSettled = true; },
538
+ () => { successPromise.__zevaiSettled = true; },
539
+ );
540
+ }
541
+
542
+ function isSuccessSettled(successPromise) {
543
+ return Boolean(successPromise && successPromise.__zevaiSettled);
544
+ }
545
+
546
+ /**
547
+ * Google often parks on intermediate pages with empty body after password/consent:
548
+ * accounts.google.com(.xx)/accounts/SetSID
549
+ * AccountChooser, continue, challenge handoffs
550
+ *
551
+ * Do NOT force-navigate consent/idpresponse from here — that aborts the natural
552
+ * network hop that emits Location: kiro://. Wait for auto-redirect / AccountChooser
553
+ * UI, and bail early when successPromise already settled (CDP/page listeners).
554
+ *
555
+ * @returns {boolean} true if still on an interstitial when maxWaitMs elapsed
556
+ */
557
+ async function waitThroughGoogleInterstitials(page, reportStep, { maxWaitMs = 20_000, successPromise = null } = {}) {
558
+ const start = Date.now();
559
+ let lastUrl = "";
560
+ attachSuccessSettledFlag(successPromise);
561
+
562
+ while (Date.now() - start < maxWaitMs) {
563
+ if (isSuccessSettled(successPromise)) {
564
+ reportStep?.("waiting_google_redirect", "OAuth callback already received — leaving interstitial wait");
565
+ return false;
566
+ }
567
+
568
+ const url = page.url?.() || "";
569
+ const body = String(await readPageText(page).catch(() => "")).trim();
570
+ const isSetSid = /\/accounts\/SetSID/i.test(url);
571
+ const isChooser = /\/AccountChooser/i.test(url);
572
+ const isEmpty = body.length < 30;
573
+ const isInterstitial = isSetSid || (isEmpty && /accounts\.google\./i.test(url));
574
+
575
+ if (!isInterstitial && !isChooser) return false;
576
+
577
+ if (url !== lastUrl) {
578
+ reportStep?.(
579
+ "waiting_google_redirect",
580
+ `Waiting for Google redirect (url=${url.slice(0, 120)} empty=${isEmpty})`,
581
+ );
582
+ lastUrl = url;
583
+ }
584
+
585
+ // Account chooser: click first account row if present
586
+ if (isChooser) {
587
+ const clicked = await clickFirstActionable(page, [
588
+ 'div[data-identifier]',
589
+ 'div[data-email]',
590
+ 'li[data-identifier]',
591
+ 'div[role="link"]',
592
+ 'div[role="button"]',
593
+ ]);
594
+ if (clicked) {
595
+ reportStep?.("selecting_google_account", "Selected account from Google AccountChooser");
596
+ await page.waitForTimeout(1200);
597
+ continue;
598
+ }
599
+ }
600
+
601
+ const waiters = [
602
+ page.waitForNavigation({ waitUntil: "domcontentloaded", timeout: 4_000 }).catch(() => null),
603
+ page.waitForTimeout(1_200),
604
+ ];
605
+ if (successPromise && !isSuccessSettled(successPromise)) {
606
+ waiters.push(successPromise.then(() => null).catch(() => null));
607
+ }
608
+ await Promise.race(waiters);
609
+ }
610
+ return true;
611
+ }
612
+
527
613
  function isProviderPage(page) {
528
614
  try {
529
615
  const url = new URL(page.url());
@@ -1189,6 +1275,18 @@ async function handleProviderLoginGate(page, reportStep) {
1189
1275
  return false;
1190
1276
  }
1191
1277
 
1278
+ /**
1279
+ * Capture Kiro OAuth callback (kiro://…?code=…).
1280
+ *
1281
+ * After password, Google parks the main frame on empty SetSID while the network
1282
+ * completes consent → Cognito idpresponse → 302 Location: kiro://…. Custom-protocol
1283
+ * redirects often never become a page navigation, so we listen on:
1284
+ * - page + context request / requestfailed / response (Location header)
1285
+ * - CDP Network (most reliable on headed Chromium / SetSID)
1286
+ *
1287
+ * Never force-navigate idpresponse/consent from the monitor — that aborts the
1288
+ * natural hop before kiro:// is emitted.
1289
+ */
1192
1290
  export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MANUAL_TIMEOUT_MS) {
1193
1291
  let resolveOuter;
1194
1292
  let rejectOuter;
@@ -1218,34 +1316,80 @@ export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MAN
1218
1316
  else resolveOuter(result);
1219
1317
  }
1220
1318
 
1319
+ function trySettleFromUrl(rawUrl) {
1320
+ const parsed = parseCallbackUrl(rawUrl || "");
1321
+ if (parsed) settle(parsed);
1322
+ return Boolean(parsed);
1323
+ }
1324
+
1325
+ function trySettleFromResponse(response) {
1326
+ try {
1327
+ trySettleFromUrl(response?.url?.() || "");
1328
+ const headers = typeof response?.headers === "function" ? response.headers() : null;
1329
+ const location = headers?.location || headers?.Location || "";
1330
+ if (location) trySettleFromUrl(location);
1331
+ } catch {
1332
+ /* ignore */
1333
+ }
1334
+ }
1335
+
1336
+ function attachCdpNetwork(trackedPage, ownerCleanups) {
1337
+ void (async () => {
1338
+ try {
1339
+ if (settled) return;
1340
+ const ctx = trackedPage.context?.();
1341
+ if (!ctx?.newCDPSession) return;
1342
+ const session = await ctx.newCDPSession(trackedPage);
1343
+ await session.send("Network.enable").catch(() => null);
1344
+
1345
+ const onCdpResponse = (params) => {
1346
+ try {
1347
+ const headers = params?.response?.headers || {};
1348
+ const loc = headers.location || headers.Location || "";
1349
+ if (loc) trySettleFromUrl(loc);
1350
+ trySettleFromUrl(params?.response?.url || "");
1351
+ } catch {
1352
+ /* ignore */
1353
+ }
1354
+ };
1355
+ const onCdpRequest = (params) => {
1356
+ try {
1357
+ trySettleFromUrl(params?.request?.url || "");
1358
+ } catch {
1359
+ /* ignore */
1360
+ }
1361
+ };
1362
+
1363
+ session.on("Network.responseReceived", onCdpResponse);
1364
+ session.on("Network.requestWillBeSent", onCdpRequest);
1365
+ ownerCleanups.push(() => {
1366
+ try { session.off?.("Network.responseReceived", onCdpResponse); } catch {}
1367
+ try { session.off?.("Network.requestWillBeSent", onCdpRequest); } catch {}
1368
+ void session.detach?.().catch(() => null);
1369
+ });
1370
+ } catch {
1371
+ /* CDP unavailable — page/context listeners remain */
1372
+ }
1373
+ })();
1374
+ }
1375
+
1221
1376
  function registerPage(trackedPage, ownerCleanups) {
1222
1377
  if (!trackedPage || trackedPages.has(trackedPage)) return;
1223
1378
  trackedPages.add(trackedPage);
1224
1379
 
1225
- const onFrame = (frame) => {
1226
- const parsed = parseCallbackUrl(frame?.url?.() || "");
1227
- if (parsed) settle(parsed);
1228
- };
1229
- const onRequest = (request) => {
1230
- const parsed = parseCallbackUrl(request?.url?.() || "");
1231
- if (parsed) settle(parsed);
1232
- };
1233
- const onRequestFailed = (request) => {
1234
- const parsed = parseCallbackUrl(request?.url?.() || "");
1235
- if (parsed) settle(parsed);
1236
- };
1237
- const onLoadState = () => {
1238
- const parsed = parseCallbackUrl(trackedPage.url?.() || "");
1239
- if (parsed) settle(parsed);
1240
- };
1380
+ const onFrame = (frame) => trySettleFromUrl(frame?.url?.() || "");
1381
+ const onRequest = (request) => trySettleFromUrl(request?.url?.() || "");
1382
+ const onRequestFailed = (request) => trySettleFromUrl(request?.url?.() || "");
1383
+ const onResponse = (response) => trySettleFromResponse(response);
1384
+ const onLoadState = () => trySettleFromUrl(trackedPage.url?.() || "");
1241
1385
  const onClose = () => {
1242
- // Cancel/force-close: unblock manual followup instead of hanging 15 min
1243
1386
  settle(null, new Error("Browser session closed while waiting for Kiro callback"));
1244
1387
  };
1245
1388
 
1246
1389
  trackedPage.on("framenavigated", onFrame);
1247
1390
  trackedPage.on("request", onRequest);
1248
1391
  trackedPage.on("requestfailed", onRequestFailed);
1392
+ trackedPage.on("response", onResponse);
1249
1393
  trackedPage.on("domcontentloaded", onLoadState);
1250
1394
  trackedPage.on("load", onLoadState);
1251
1395
  trackedPage.on("close", onClose);
@@ -1254,11 +1398,14 @@ export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MAN
1254
1398
  trackedPage.off("framenavigated", onFrame);
1255
1399
  trackedPage.off("request", onRequest);
1256
1400
  trackedPage.off("requestfailed", onRequestFailed);
1401
+ trackedPage.off("response", onResponse);
1257
1402
  trackedPage.off("domcontentloaded", onLoadState);
1258
1403
  trackedPage.off("load", onLoadState);
1259
1404
  trackedPage.off("close", onClose);
1260
1405
  });
1261
1406
 
1407
+ attachCdpNetwork(trackedPage, ownerCleanups);
1408
+
1262
1409
  const current = parseCallbackUrl(trackedPage.url?.() || "");
1263
1410
  if (current) settle(current);
1264
1411
  }
@@ -1273,10 +1420,20 @@ export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MAN
1273
1420
  const onClose = () => {
1274
1421
  settle(null, new Error("Browser context closed while waiting for Kiro callback"));
1275
1422
  };
1423
+ const onCtxRequest = (request) => trySettleFromUrl(request?.url?.() || "");
1424
+ const onCtxRequestFailed = (request) => trySettleFromUrl(request?.url?.() || "");
1425
+ const onCtxResponse = (response) => trySettleFromResponse(response);
1426
+
1276
1427
  ctx.on("page", onPage);
1277
1428
  ctx.on("close", onClose);
1429
+ ctx.on("request", onCtxRequest);
1430
+ ctx.on("requestfailed", onCtxRequestFailed);
1431
+ ctx.on("response", onCtxResponse);
1278
1432
  cleanups.push(() => ctx.off("page", onPage));
1279
1433
  cleanups.push(() => ctx.off("close", onClose));
1434
+ cleanups.push(() => ctx.off("request", onCtxRequest));
1435
+ cleanups.push(() => ctx.off("requestfailed", onCtxRequestFailed));
1436
+ cleanups.push(() => ctx.off("response", onCtxResponse));
1280
1437
 
1281
1438
  if (pg) registerPage(pg, cleanups);
1282
1439
  }
@@ -1287,7 +1444,6 @@ export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MAN
1287
1444
  if (newContext) bind(newContext, newPage);
1288
1445
  };
1289
1446
 
1290
- // Allow cancel path to force-reject without waiting for timeout
1291
1447
  promise.abort = (reason = "Job cancelled") => {
1292
1448
  settle(null, new Error(reason));
1293
1449
  };
@@ -1408,11 +1564,21 @@ export async function runGoogleAccountAutomation({
1408
1564
  onStep?.(step, message);
1409
1565
  };
1410
1566
 
1567
+ const interstitialOpts = (maxWaitMs) => ({ maxWaitMs, successPromise });
1568
+ // Prevent re-submitting email/password while Google is still transitioning
1569
+ // (pwd page stays mounted ~1–3s after Next; re-fill aborts the OAuth chain).
1570
+ let passwordSubmittedAt = 0;
1571
+ let emailSubmittedAt = 0;
1572
+ const PASSWORD_RESUBMIT_COOLDOWN_MS = 25_000;
1573
+ const EMAIL_RESUBMIT_COOLDOWN_MS = 12_000;
1574
+
1411
1575
  reportStep(openingStep, openingMessage);
1412
1576
  await page.goto(authUrl, { waitUntil: "domcontentloaded", timeout: 60_000 });
1413
1577
  await page.waitForTimeout(2_000);
1578
+ await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(12_000));
1414
1579
 
1415
1580
  await handleProviderLoginGate(page, reportStep);
1581
+ await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(8_000));
1416
1582
 
1417
1583
  const emailInput = await waitForFirstVisibleLocator(page, EMAIL_INPUT_SELECTOR, { timeout: 15_000 });
1418
1584
  if (emailInput) {
@@ -1423,10 +1589,12 @@ export async function runGoogleAccountAutomation({
1423
1589
  } else {
1424
1590
  reportStep("submitting_email", "Submitting email");
1425
1591
  await clickFirstVisible(page, NEXT_BUTTON_SELECTORS);
1592
+ emailSubmittedAt = Date.now();
1426
1593
  // Wait for the page to transition away from the email step so the
1427
1594
  // polling loop doesn't immediately re-detect the disappearing email
1428
1595
  // field and type the email value into the password input.
1429
- await page.waitForTimeout(2_500);
1596
+ await page.waitForTimeout(1_500);
1597
+ await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(12_000));
1430
1598
  }
1431
1599
  }
1432
1600
 
@@ -1452,8 +1620,15 @@ export async function runGoogleAccountAutomation({
1452
1620
  };
1453
1621
  }
1454
1622
 
1623
+ // Unblock SetSID / empty Google interstitials before other handlers
1624
+ const waited = await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(8_000));
1625
+ if (waited) {
1626
+ continue;
1627
+ }
1628
+
1455
1629
  const handledGoogleConsent = await handleGoogleConsent(page, reportStep);
1456
1630
  if (handledGoogleConsent) {
1631
+ await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(12_000));
1457
1632
  continue;
1458
1633
  }
1459
1634
 
@@ -1515,25 +1690,60 @@ export async function runGoogleAccountAutomation({
1515
1690
  // address into whatever field is focused (often the password input).
1516
1691
  const passwordInput = await getFirstVisibleLocator(page, PASSWORD_INPUT_SELECTOR);
1517
1692
  if (passwordInput) {
1693
+ const sincePw = Date.now() - passwordSubmittedAt;
1694
+ if (passwordSubmittedAt && sincePw < PASSWORD_RESUBMIT_COOLDOWN_MS) {
1695
+ // Still on (or animating off) the password form after a recent submit —
1696
+ // do NOT re-fill; wait for SetSID/consent/callback instead.
1697
+ reportStep(
1698
+ "waiting_after_password",
1699
+ `Password already submitted ${Math.round(sincePw / 1000)}s ago — waiting for Google redirect`,
1700
+ );
1701
+ await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(8_000));
1702
+ await page.waitForTimeout(500);
1703
+ continue;
1704
+ }
1705
+
1518
1706
  reportStep("entering_password", "Entering Google password");
1519
1707
  const filled = await fillInputResilient(passwordInput, password);
1520
1708
  if (filled) {
1521
1709
  reportStep("submitting_password", "Submitting password");
1522
1710
  await clickFirstVisible(page, NEXT_BUTTON_SELECTORS);
1711
+ passwordSubmittedAt = Date.now();
1712
+ // Give Google time to leave the password challenge before the next
1713
+ // loop iteration can re-detect the still-mounted password field.
1714
+ await Promise.race([
1715
+ page.waitForNavigation({ waitUntil: "domcontentloaded", timeout: 8_000 }).catch(() => null),
1716
+ page.waitForTimeout(2_500),
1717
+ ]);
1718
+ // Password submit often lands on empty SetSID while network completes
1719
+ // consent→idpresponse→kiro://. Callback monitor (CDP) settles successPromise.
1720
+ await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(25_000));
1523
1721
  } else {
1524
1722
  reportStep("password_fill_failed", "Could not fill the Google password field; retrying loop");
1723
+ await page.waitForTimeout(700);
1525
1724
  }
1526
- await page.waitForTimeout(700);
1527
1725
  continue;
1528
1726
  }
1529
1727
 
1530
1728
  const nextEmailInput = await getFirstVisibleLocator(page, EMAIL_INPUT_SELECTOR);
1531
1729
  if (nextEmailInput) {
1730
+ const sinceEmail = Date.now() - emailSubmittedAt;
1731
+ if (emailSubmittedAt && sinceEmail < EMAIL_RESUBMIT_COOLDOWN_MS) {
1732
+ reportStep(
1733
+ "waiting_after_email",
1734
+ `Email already submitted ${Math.round(sinceEmail / 1000)}s ago — waiting for password/next screen`,
1735
+ );
1736
+ await page.waitForTimeout(800);
1737
+ continue;
1738
+ }
1739
+
1532
1740
  reportStep("entering_email", "Entering Google email");
1533
1741
  const filled = await fillInputResilient(nextEmailInput, email);
1534
1742
  if (filled) {
1535
1743
  reportStep("submitting_email", "Submitting email");
1536
1744
  await clickFirstVisible(page, NEXT_BUTTON_SELECTORS);
1745
+ emailSubmittedAt = Date.now();
1746
+ await page.waitForTimeout(1_500);
1537
1747
  } else {
1538
1748
  reportStep("email_fill_failed", "Could not fill the Google email field; retrying loop");
1539
1749
  }