@jsonstudio/rcc 0.89.2239 → 0.90.1

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 (237) hide show
  1. package/README.md +27 -0
  2. package/dist/build-info.js +2 -2
  3. package/dist/build-info.js.map +1 -1
  4. package/dist/cli/commands/claude.js +1 -0
  5. package/dist/cli/commands/claude.js.map +1 -1
  6. package/dist/cli/commands/codex.js +1 -0
  7. package/dist/cli/commands/codex.js.map +1 -1
  8. package/dist/cli/commands/guardian-daemon.d.ts +2 -0
  9. package/dist/cli/commands/guardian-daemon.js +299 -0
  10. package/dist/cli/commands/guardian-daemon.js.map +1 -0
  11. package/dist/cli/commands/init/camoufox.js +1 -1
  12. package/dist/cli/commands/init/camoufox.js.map +1 -1
  13. package/dist/cli/commands/launcher/types.d.ts +6 -0
  14. package/dist/cli/commands/launcher-kernel.js +456 -109
  15. package/dist/cli/commands/launcher-kernel.js.map +1 -1
  16. package/dist/cli/commands/port.js +28 -8
  17. package/dist/cli/commands/port.js.map +1 -1
  18. package/dist/cli/commands/restart.d.ts +4 -0
  19. package/dist/cli/commands/restart.js +91 -42
  20. package/dist/cli/commands/restart.js.map +1 -1
  21. package/dist/cli/commands/start-types.d.ts +4 -0
  22. package/dist/cli/commands/start.js +108 -65
  23. package/dist/cli/commands/start.js.map +1 -1
  24. package/dist/cli/commands/stop.d.ts +3 -0
  25. package/dist/cli/commands/stop.js +30 -63
  26. package/dist/cli/commands/stop.js.map +1 -1
  27. package/dist/cli/config/init-provider-catalog.js +8 -3
  28. package/dist/cli/config/init-provider-catalog.js.map +1 -1
  29. package/dist/cli/guardian/client.d.ts +38 -0
  30. package/dist/cli/guardian/client.js +237 -0
  31. package/dist/cli/guardian/client.js.map +1 -0
  32. package/dist/cli/guardian/paths.d.ts +7 -0
  33. package/dist/cli/guardian/paths.js +13 -0
  34. package/dist/cli/guardian/paths.js.map +1 -0
  35. package/dist/cli/guardian/types.d.ts +30 -0
  36. package/dist/cli/guardian/types.js +2 -0
  37. package/dist/cli/guardian/types.js.map +1 -0
  38. package/dist/cli/register/guardian-daemon-command.d.ts +2 -0
  39. package/dist/cli/register/guardian-daemon-command.js +5 -0
  40. package/dist/cli/register/guardian-daemon-command.js.map +1 -0
  41. package/dist/cli/server/port-utils.js +57 -1
  42. package/dist/cli/server/port-utils.js.map +1 -1
  43. package/dist/cli.js +48 -0
  44. package/dist/cli.js.map +1 -1
  45. package/dist/commands/oauth.js +6 -6
  46. package/dist/commands/oauth.js.map +1 -1
  47. package/dist/config/routecodex-config-loader.js +66 -1
  48. package/dist/config/routecodex-config-loader.js.map +1 -1
  49. package/dist/config/virtual-router-builder.js +18 -0
  50. package/dist/config/virtual-router-builder.js.map +1 -1
  51. package/dist/config/virtual-router-types.js +20 -5
  52. package/dist/config/virtual-router-types.js.map +1 -1
  53. package/dist/daemon-admin-ui/assets/index-C8vP_c5E.js +15 -0
  54. package/dist/daemon-admin-ui/assets/index-DjIoHmNv.css +1 -0
  55. package/dist/daemon-admin-ui/index.html +13 -0
  56. package/dist/docs/daemon-admin-ui.html +328 -57
  57. package/dist/index.d.ts +9 -0
  58. package/dist/index.js +268 -10
  59. package/dist/index.js.map +1 -1
  60. package/dist/manager/modules/quota/provider-quota-daemon.error-helpers.d.ts +1 -0
  61. package/dist/manager/modules/quota/provider-quota-daemon.error-helpers.js +36 -0
  62. package/dist/manager/modules/quota/provider-quota-daemon.error-helpers.js.map +1 -1
  63. package/dist/manager/modules/quota/provider-quota-daemon.events.js +50 -1
  64. package/dist/manager/modules/quota/provider-quota-daemon.events.js.map +1 -1
  65. package/dist/providers/auth/antigravity-user-agent.js +78 -31
  66. package/dist/providers/auth/antigravity-user-agent.js.map +1 -1
  67. package/dist/providers/auth/gemini-cli-userinfo-helper.js +94 -63
  68. package/dist/providers/auth/gemini-cli-userinfo-helper.js.map +1 -1
  69. package/dist/providers/auth/iflow-userinfo-helper.js +1 -1
  70. package/dist/providers/auth/iflow-userinfo-helper.js.map +1 -1
  71. package/dist/providers/auth/oauth-error-message.d.ts +1 -0
  72. package/dist/providers/auth/oauth-error-message.js +44 -0
  73. package/dist/providers/auth/oauth-error-message.js.map +1 -0
  74. package/dist/providers/auth/oauth-lifecycle/error-detection.js +42 -8
  75. package/dist/providers/auth/oauth-lifecycle/error-detection.js.map +1 -1
  76. package/dist/providers/auth/oauth-lifecycle/token-io.d.ts +1 -0
  77. package/dist/providers/auth/oauth-lifecycle/token-io.js +12 -0
  78. package/dist/providers/auth/oauth-lifecycle/token-io.js.map +1 -1
  79. package/dist/providers/auth/oauth-lifecycle.js +502 -87
  80. package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
  81. package/dist/providers/auth/oauth-repair-cooldown.js +2 -7
  82. package/dist/providers/auth/oauth-repair-cooldown.js.map +1 -1
  83. package/dist/providers/auth/oauth-repair-env.js +3 -5
  84. package/dist/providers/auth/oauth-repair-env.js.map +1 -1
  85. package/dist/providers/auth/oauth-utils/error-extraction.js +42 -8
  86. package/dist/providers/auth/oauth-utils/error-extraction.js.map +1 -1
  87. package/dist/providers/core/config/camoufox-actions.d.ts +31 -0
  88. package/dist/providers/core/config/camoufox-actions.js +461 -0
  89. package/dist/providers/core/config/camoufox-actions.js.map +1 -0
  90. package/dist/providers/core/config/camoufox-launcher.d.ts +3 -0
  91. package/dist/providers/core/config/camoufox-launcher.js +518 -160
  92. package/dist/providers/core/config/camoufox-launcher.js.map +1 -1
  93. package/dist/providers/core/config/oauth-flows.js +6 -44
  94. package/dist/providers/core/config/oauth-flows.js.map +1 -1
  95. package/dist/providers/core/config/provider-oauth-configs.js +51 -7
  96. package/dist/providers/core/config/provider-oauth-configs.js.map +1 -1
  97. package/dist/providers/core/runtime/provider-error-classifier.js +32 -15
  98. package/dist/providers/core/runtime/provider-error-classifier.js.map +1 -1
  99. package/dist/providers/core/runtime/provider-family-profile-utils.js +1 -1
  100. package/dist/providers/core/runtime/provider-family-profile-utils.js.map +1 -1
  101. package/dist/providers/core/runtime/provider-response-postprocessor.js +61 -14
  102. package/dist/providers/core/runtime/provider-response-postprocessor.js.map +1 -1
  103. package/dist/providers/core/strategies/oauth-auth-code-flow.d.ts +1 -0
  104. package/dist/providers/core/strategies/oauth-auth-code-flow.js +124 -19
  105. package/dist/providers/core/strategies/oauth-auth-code-flow.js.map +1 -1
  106. package/dist/providers/core/strategies/oauth-device-flow.js +6 -3
  107. package/dist/providers/core/strategies/oauth-device-flow.js.map +1 -1
  108. package/dist/providers/profile/families/iflow-profile.js +83 -10
  109. package/dist/providers/profile/families/iflow-profile.js.map +1 -1
  110. package/dist/scripts/camoufox/launch-auth.mjs +112 -5
  111. package/dist/server/handlers/config-admin-handler.js +9 -2
  112. package/dist/server/handlers/config-admin-handler.js.map +1 -1
  113. package/dist/server/handlers/handler-utils.js +3 -12
  114. package/dist/server/handlers/handler-utils.js.map +1 -1
  115. package/dist/server/handlers/logging.js +3 -4
  116. package/dist/server/handlers/logging.js.map +1 -1
  117. package/dist/server/runtime/http-server/clock-client-reaper.js +3 -26
  118. package/dist/server/runtime/http-server/clock-client-reaper.js.map +1 -1
  119. package/dist/server/runtime/http-server/clock-client-registry-utils.d.ts +4 -0
  120. package/dist/server/runtime/http-server/clock-client-registry-utils.js +74 -16
  121. package/dist/server/runtime/http-server/clock-client-registry-utils.js.map +1 -1
  122. package/dist/server/runtime/http-server/clock-client-registry.d.ts +15 -0
  123. package/dist/server/runtime/http-server/clock-client-registry.js +300 -6
  124. package/dist/server/runtime/http-server/clock-client-registry.js.map +1 -1
  125. package/dist/server/runtime/http-server/clock-client-routes.js +49 -19
  126. package/dist/server/runtime/http-server/clock-client-routes.js.map +1 -1
  127. package/dist/server/runtime/http-server/clock-daemon-log-throttle.d.ts +16 -0
  128. package/dist/server/runtime/http-server/clock-daemon-log-throttle.js +49 -0
  129. package/dist/server/runtime/http-server/clock-daemon-log-throttle.js.map +1 -1
  130. package/dist/server/runtime/http-server/clock-scope-resolution.d.ts +14 -0
  131. package/dist/server/runtime/http-server/clock-scope-resolution.js +212 -0
  132. package/dist/server/runtime/http-server/clock-scope-resolution.js.map +1 -0
  133. package/dist/server/runtime/http-server/daemon-admin/auth-handler.js +5 -3
  134. package/dist/server/runtime/http-server/daemon-admin/auth-handler.js.map +1 -1
  135. package/dist/server/runtime/http-server/daemon-admin/control-handler.js +104 -15
  136. package/dist/server/runtime/http-server/daemon-admin/control-handler.js.map +1 -1
  137. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js +2 -2
  138. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js.map +1 -1
  139. package/dist/server/runtime/http-server/daemon-admin/providers-handler-routing-utils.d.ts +24 -0
  140. package/dist/server/runtime/http-server/daemon-admin/providers-handler-routing-utils.js +316 -70
  141. package/dist/server/runtime/http-server/daemon-admin/providers-handler-routing-utils.js.map +1 -1
  142. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js +190 -1
  143. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js.map +1 -1
  144. package/dist/server/runtime/http-server/daemon-admin/routing-policy.js +18 -29
  145. package/dist/server/runtime/http-server/daemon-admin/routing-policy.js.map +1 -1
  146. package/dist/server/runtime/http-server/daemon-admin/stats-handler.js +2 -0
  147. package/dist/server/runtime/http-server/daemon-admin/stats-handler.js.map +1 -1
  148. package/dist/server/runtime/http-server/daemon-admin-routes.d.ts +8 -1
  149. package/dist/server/runtime/http-server/daemon-admin-routes.js +30 -0
  150. package/dist/server/runtime/http-server/daemon-admin-routes.js.map +1 -1
  151. package/dist/server/runtime/http-server/executor/client-injection-flow.d.ts +14 -0
  152. package/dist/server/runtime/http-server/executor/client-injection-flow.js +287 -0
  153. package/dist/server/runtime/http-server/executor/client-injection-flow.js.map +1 -0
  154. package/dist/server/runtime/http-server/executor/index.d.ts +1 -1
  155. package/dist/server/runtime/http-server/executor/index.js +1 -1
  156. package/dist/server/runtime/http-server/executor/index.js.map +1 -1
  157. package/dist/server/runtime/http-server/executor/provider-response-converter.js +236 -62
  158. package/dist/server/runtime/http-server/executor/provider-response-converter.js.map +1 -1
  159. package/dist/server/runtime/http-server/executor/request-executor-core-utils.d.ts +1 -0
  160. package/dist/server/runtime/http-server/executor/request-executor-core-utils.js +12 -0
  161. package/dist/server/runtime/http-server/executor/request-executor-core-utils.js.map +1 -1
  162. package/dist/server/runtime/http-server/executor/request-retry-helpers.js +16 -12
  163. package/dist/server/runtime/http-server/executor/request-retry-helpers.js.map +1 -1
  164. package/dist/server/runtime/http-server/executor/sse-error-handler.d.ts +1 -0
  165. package/dist/server/runtime/http-server/executor/sse-error-handler.js +13 -2
  166. package/dist/server/runtime/http-server/executor/sse-error-handler.js.map +1 -1
  167. package/dist/server/runtime/http-server/executor/usage-aggregator.d.ts +0 -12
  168. package/dist/server/runtime/http-server/executor/usage-aggregator.js +84 -88
  169. package/dist/server/runtime/http-server/executor/usage-aggregator.js.map +1 -1
  170. package/dist/server/runtime/http-server/executor-metadata.js +328 -7
  171. package/dist/server/runtime/http-server/executor-metadata.js.map +1 -1
  172. package/dist/server/runtime/http-server/executor-response.d.ts +1 -0
  173. package/dist/server/runtime/http-server/executor-response.js +52 -58
  174. package/dist/server/runtime/http-server/executor-response.js.map +1 -1
  175. package/dist/server/runtime/http-server/http-server-bootstrap.js +50 -6
  176. package/dist/server/runtime/http-server/http-server-bootstrap.js.map +1 -1
  177. package/dist/server/runtime/http-server/http-server-clock-daemon.d.ts +1 -0
  178. package/dist/server/runtime/http-server/http-server-clock-daemon.js +186 -44
  179. package/dist/server/runtime/http-server/http-server-clock-daemon.js.map +1 -1
  180. package/dist/server/runtime/http-server/http-server-lifecycle.js +4 -4
  181. package/dist/server/runtime/http-server/http-server-lifecycle.js.map +1 -1
  182. package/dist/server/runtime/http-server/hub-shadow-compare.js +1 -1
  183. package/dist/server/runtime/http-server/hub-shadow-compare.js.map +1 -1
  184. package/dist/server/runtime/http-server/index.d.ts +1 -0
  185. package/dist/server/runtime/http-server/index.js +1 -0
  186. package/dist/server/runtime/http-server/index.js.map +1 -1
  187. package/dist/server/runtime/http-server/middleware.js +82 -4
  188. package/dist/server/runtime/http-server/middleware.js.map +1 -1
  189. package/dist/server/runtime/http-server/request-executor.js +6 -5
  190. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  191. package/dist/server/runtime/http-server/routes.d.ts +2 -1
  192. package/dist/server/runtime/http-server/routes.js +4 -2
  193. package/dist/server/runtime/http-server/routes.js.map +1 -1
  194. package/dist/server/runtime/http-server/session-dir.js +12 -1
  195. package/dist/server/runtime/http-server/session-dir.js.map +1 -1
  196. package/dist/server/runtime/http-server/stats-manager.d.ts +35 -0
  197. package/dist/server/runtime/http-server/stats-manager.js +269 -21
  198. package/dist/server/runtime/http-server/stats-manager.js.map +1 -1
  199. package/dist/server/runtime/http-server/stopmessage-scope-rebind.d.ts +13 -0
  200. package/dist/server/runtime/http-server/stopmessage-scope-rebind.js +168 -0
  201. package/dist/server/runtime/http-server/stopmessage-scope-rebind.js.map +1 -0
  202. package/dist/server/runtime/http-server/tmux-session-probe.d.ts +10 -0
  203. package/dist/server/runtime/http-server/tmux-session-probe.js +97 -0
  204. package/dist/server/runtime/http-server/tmux-session-probe.js.map +1 -1
  205. package/dist/server-lifecycle/port-utils.d.ts +2 -1
  206. package/dist/server-lifecycle/port-utils.js +84 -4
  207. package/dist/server-lifecycle/port-utils.js.map +1 -1
  208. package/dist/token-daemon/index.d.ts +1 -0
  209. package/dist/token-daemon/index.js +17 -12
  210. package/dist/token-daemon/index.js.map +1 -1
  211. package/dist/utils/clock-client-token.d.ts +2 -1
  212. package/dist/utils/clock-client-token.js +52 -8
  213. package/dist/utils/clock-client-token.js.map +1 -1
  214. package/dist/utils/clock-scope-trace.d.ts +11 -0
  215. package/dist/utils/clock-scope-trace.js +41 -0
  216. package/dist/utils/clock-scope-trace.js.map +1 -0
  217. package/dist/utils/llms-engine-shadow.js +1 -1
  218. package/dist/utils/llms-engine-shadow.js.map +1 -1
  219. package/docs/DAEMON_CONTROL_PLANE.md +1 -0
  220. package/docs/ROUTING_POLICY_SCHEMA.md +4 -2
  221. package/docs/daemon-admin-ui.html +328 -57
  222. package/docs/design/servertool-stopmessage-lifecycle.md +109 -0
  223. package/docs/exec-command-guard-policy.example.v1.json +7 -1
  224. package/docs/providers/antigravity-gemini-provider-compat.md +2 -2
  225. package/package.json +21 -5
  226. package/scripts/build-core.mjs +12 -0
  227. package/scripts/camoufox/launch-auth.mjs +112 -5
  228. package/scripts/ci/repo-sanity.mjs +1 -0
  229. package/scripts/install-global.sh +6 -0
  230. package/scripts/install-verify.mjs +33 -16
  231. package/scripts/run-bg.sh +226 -43
  232. package/scripts/run-fg-gtimeout.sh +158 -14
  233. package/scripts/tests/blackbox-rcc-vs-routecodex-antigravity.mjs +3 -3
  234. package/scripts/tests/ci-jest.mjs +9 -1
  235. package/scripts/triage-errorsamples.mjs +216 -0
  236. package/scripts/verify-codex-error-samples.mjs +92 -15
  237. package/scripts/verify-install-e2e.mjs +57 -27
@@ -0,0 +1,168 @@
1
+ import { loadRoutingInstructionStateSync, saveRoutingInstructionStateSync } from '../../../modules/llmswitch/bridge.js';
2
+ function readToken(value) {
3
+ if (typeof value !== 'string') {
4
+ return undefined;
5
+ }
6
+ const trimmed = value.trim();
7
+ return trimmed || undefined;
8
+ }
9
+ function isFiniteNumber(value) {
10
+ return typeof value === 'number' && Number.isFinite(value);
11
+ }
12
+ function normalizeRoutingState(raw) {
13
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
14
+ return null;
15
+ }
16
+ const record = raw;
17
+ const allowedProviders = record.allowedProviders instanceof Set ? new Set(Array.from(record.allowedProviders)) : new Set();
18
+ const disabledProviders = record.disabledProviders instanceof Set ? new Set(Array.from(record.disabledProviders)) : new Set();
19
+ const disabledKeys = record.disabledKeys instanceof Map
20
+ ? new Map(Array.from(record.disabledKeys.entries()))
21
+ : new Map();
22
+ const disabledModels = record.disabledModels instanceof Map
23
+ ? new Map(Array.from(record.disabledModels.entries()))
24
+ : new Map();
25
+ const state = {
26
+ forcedTarget: record.forcedTarget,
27
+ stickyTarget: record.stickyTarget,
28
+ preferTarget: record.preferTarget,
29
+ allowedProviders,
30
+ disabledProviders,
31
+ disabledKeys,
32
+ disabledModels,
33
+ stopMessageSource: readToken(record.stopMessageSource),
34
+ stopMessageText: readToken(record.stopMessageText),
35
+ stopMessageMaxRepeats: isFiniteNumber(record.stopMessageMaxRepeats) ? record.stopMessageMaxRepeats : undefined,
36
+ stopMessageUsed: isFiniteNumber(record.stopMessageUsed) ? record.stopMessageUsed : undefined,
37
+ stopMessageUpdatedAt: isFiniteNumber(record.stopMessageUpdatedAt) ? record.stopMessageUpdatedAt : undefined,
38
+ stopMessageLastUsedAt: isFiniteNumber(record.stopMessageLastUsedAt) ? record.stopMessageLastUsedAt : undefined,
39
+ stopMessageStageMode: readToken(record.stopMessageStageMode),
40
+ stopMessageAiMode: readToken(record.stopMessageAiMode),
41
+ stopMessageAiSeedPrompt: readToken(record.stopMessageAiSeedPrompt),
42
+ stopMessageAiHistory: Array.isArray(record.stopMessageAiHistory)
43
+ ? record.stopMessageAiHistory.map((entry) => ({ ...entry }))
44
+ : undefined,
45
+ preCommandSource: readToken(record.preCommandSource),
46
+ preCommandScriptPath: readToken(record.preCommandScriptPath),
47
+ preCommandUpdatedAt: isFiniteNumber(record.preCommandUpdatedAt) ? record.preCommandUpdatedAt : undefined
48
+ };
49
+ return state;
50
+ }
51
+ function hasActiveStopMessage(state) {
52
+ if (!state) {
53
+ return false;
54
+ }
55
+ return Boolean(readToken(state.stopMessageText) ||
56
+ isFiniteNumber(state.stopMessageMaxRepeats) ||
57
+ isFiniteNumber(state.stopMessageUsed) ||
58
+ readToken(state.stopMessageStageMode) ||
59
+ readToken(state.stopMessageAiMode) ||
60
+ readToken(state.stopMessageAiSeedPrompt) ||
61
+ (Array.isArray(state.stopMessageAiHistory) && state.stopMessageAiHistory.length > 0));
62
+ }
63
+ function applyStopMessage(source, target) {
64
+ target.stopMessageSource = source.stopMessageSource;
65
+ target.stopMessageText = source.stopMessageText;
66
+ target.stopMessageMaxRepeats = source.stopMessageMaxRepeats;
67
+ target.stopMessageUsed = source.stopMessageUsed;
68
+ target.stopMessageUpdatedAt = source.stopMessageUpdatedAt;
69
+ target.stopMessageLastUsedAt = source.stopMessageLastUsedAt;
70
+ target.stopMessageStageMode = source.stopMessageStageMode;
71
+ target.stopMessageAiMode = source.stopMessageAiMode;
72
+ target.stopMessageAiSeedPrompt = source.stopMessageAiSeedPrompt;
73
+ target.stopMessageAiHistory = Array.isArray(source.stopMessageAiHistory)
74
+ ? source.stopMessageAiHistory.map((entry) => ({ ...entry }))
75
+ : undefined;
76
+ }
77
+ function clearStopMessage(state) {
78
+ state.stopMessageSource = undefined;
79
+ state.stopMessageText = undefined;
80
+ state.stopMessageMaxRepeats = undefined;
81
+ state.stopMessageUsed = undefined;
82
+ state.stopMessageUpdatedAt = undefined;
83
+ state.stopMessageLastUsedAt = undefined;
84
+ state.stopMessageStageMode = undefined;
85
+ state.stopMessageAiMode = undefined;
86
+ state.stopMessageAiSeedPrompt = undefined;
87
+ state.stopMessageAiHistory = undefined;
88
+ }
89
+ function isRoutingStateEffectivelyEmpty(state) {
90
+ return Boolean(!state.forcedTarget &&
91
+ !state.stickyTarget &&
92
+ !state.preferTarget &&
93
+ state.allowedProviders.size < 1 &&
94
+ state.disabledProviders.size < 1 &&
95
+ state.disabledKeys.size < 1 &&
96
+ state.disabledModels.size < 1 &&
97
+ !hasActiveStopMessage(state) &&
98
+ !readToken(state.preCommandScriptPath) &&
99
+ !readToken(state.preCommandSource) &&
100
+ !isFiniteNumber(state.preCommandUpdatedAt));
101
+ }
102
+ function createEmptyRoutingState() {
103
+ return {
104
+ forcedTarget: undefined,
105
+ stickyTarget: undefined,
106
+ preferTarget: undefined,
107
+ allowedProviders: new Set(),
108
+ disabledProviders: new Set(),
109
+ disabledKeys: new Map(),
110
+ disabledModels: new Map(),
111
+ stopMessageSource: undefined,
112
+ stopMessageText: undefined,
113
+ stopMessageMaxRepeats: undefined,
114
+ stopMessageUsed: undefined,
115
+ stopMessageUpdatedAt: undefined,
116
+ stopMessageLastUsedAt: undefined,
117
+ stopMessageStageMode: undefined,
118
+ stopMessageAiMode: undefined,
119
+ stopMessageAiSeedPrompt: undefined,
120
+ stopMessageAiHistory: undefined,
121
+ preCommandSource: undefined,
122
+ preCommandScriptPath: undefined,
123
+ preCommandUpdatedAt: undefined
124
+ };
125
+ }
126
+ function resolveIsSourceNewer(source, target) {
127
+ const sourceUpdatedAt = isFiniteNumber(source.stopMessageUpdatedAt) ? source.stopMessageUpdatedAt : 0;
128
+ const targetUpdatedAt = isFiniteNumber(target.stopMessageUpdatedAt) ? target.stopMessageUpdatedAt : 0;
129
+ return sourceUpdatedAt >= targetUpdatedAt;
130
+ }
131
+ export function migrateStopMessageTmuxScope(args) {
132
+ const oldTmuxSessionId = readToken(args.oldTmuxSessionId);
133
+ const newTmuxSessionId = readToken(args.newTmuxSessionId);
134
+ if (!oldTmuxSessionId || !newTmuxSessionId) {
135
+ return { migrated: false, clearedOld: false, reason: 'missing_tmux' };
136
+ }
137
+ if (oldTmuxSessionId === newTmuxSessionId) {
138
+ return { migrated: false, clearedOld: false, reason: 'same_tmux' };
139
+ }
140
+ const oldScope = `tmux:${oldTmuxSessionId}`;
141
+ const newScope = `tmux:${newTmuxSessionId}`;
142
+ const oldState = normalizeRoutingState(loadRoutingInstructionStateSync(oldScope));
143
+ if (!hasActiveStopMessage(oldState)) {
144
+ return { migrated: false, clearedOld: false, reason: 'old_stopmessage_missing', oldScope, newScope };
145
+ }
146
+ const sourceState = oldState;
147
+ const targetState = normalizeRoutingState(loadRoutingInstructionStateSync(newScope)) ?? createEmptyRoutingState();
148
+ const targetHasActiveStop = hasActiveStopMessage(targetState);
149
+ if (!targetHasActiveStop || resolveIsSourceNewer(sourceState, targetState)) {
150
+ applyStopMessage(sourceState, targetState);
151
+ saveRoutingInstructionStateSync(newScope, targetState);
152
+ }
153
+ clearStopMessage(sourceState);
154
+ if (isRoutingStateEffectivelyEmpty(sourceState)) {
155
+ saveRoutingInstructionStateSync(oldScope, null);
156
+ }
157
+ else {
158
+ saveRoutingInstructionStateSync(oldScope, sourceState);
159
+ }
160
+ return {
161
+ migrated: true,
162
+ clearedOld: true,
163
+ reason: readToken(args.reason) || 'tmux_rebind',
164
+ oldScope,
165
+ newScope
166
+ };
167
+ }
168
+ //# sourceMappingURL=stopmessage-scope-rebind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stopmessage-scope-rebind.js","sourceRoot":"","sources":["../../../../src/server/runtime/http-server/stopmessage-scope-rebind.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,13 @@
1
1
  export declare function isManagedClockTmuxSession(tmuxSessionId: string): boolean;
2
2
  export declare function isTmuxSessionAlive(tmuxSessionId: string): boolean;
3
3
  export declare function killManagedTmuxSession(tmuxSessionId: string): boolean;
4
+ export declare function injectTmuxSessionText(input: {
5
+ tmuxSessionId: string;
6
+ clientType?: string;
7
+ text: string;
8
+ }): Promise<{
9
+ ok: true;
10
+ } | {
11
+ ok: false;
12
+ reason: string;
13
+ }>;
@@ -13,6 +13,21 @@ function normalizeTmuxSessionTarget(tmuxSessionId) {
13
13
  }
14
14
  return target.slice(0, separatorIndex).trim();
15
15
  }
16
+ function resolveTmuxInjectionTarget(targetRaw) {
17
+ const target = String(targetRaw || '').trim();
18
+ if (!target) {
19
+ return { sessionName: '', target: '' };
20
+ }
21
+ const separatorIndex = target.indexOf(':');
22
+ if (separatorIndex < 0) {
23
+ return { sessionName: target, target };
24
+ }
25
+ const sessionName = target.slice(0, separatorIndex).trim();
26
+ return {
27
+ sessionName,
28
+ target
29
+ };
30
+ }
16
31
  function logTmuxKillEvent(input) {
17
32
  const sessionName = normalizeTmuxSessionTarget(input.tmuxSessionId);
18
33
  logProcessLifecycle({
@@ -98,4 +113,86 @@ export function killManagedTmuxSession(tmuxSessionId) {
98
113
  return false;
99
114
  }
100
115
  }
116
+ function normalizeTmuxInjectedText(raw) {
117
+ return String(raw || '')
118
+ .replace(/\r\n?/g, '\n')
119
+ .split('\n')
120
+ .map((line) => line.trim())
121
+ .filter((line) => line.length > 0)
122
+ .join(' ')
123
+ .trim();
124
+ }
125
+ function sendTmuxSubmitKey(target, clientType) {
126
+ const normalizedClientType = String(clientType || '').trim().toLowerCase();
127
+ const submitKeys = normalizedClientType === 'codex' || normalizedClientType === 'claude'
128
+ ? ['C-m', 'Enter', 'KPEnter']
129
+ : ['C-m', 'Enter', 'KPEnter'];
130
+ let lastReason = 'tmux_submit_failed';
131
+ for (const submitKey of submitKeys) {
132
+ try {
133
+ const result = spawnSync('tmux', ['send-keys', '-t', target, submitKey], { encoding: 'utf8' });
134
+ if (result.status === 0) {
135
+ return { ok: true };
136
+ }
137
+ const detail = String(result.stderr || result.stdout || '').trim();
138
+ lastReason = detail ? `tmux_submit_failed:${detail.slice(0, 120)}` : 'tmux_submit_failed';
139
+ }
140
+ catch (error) {
141
+ lastReason = error instanceof Error ? `tmux_submit_failed:${error.message}` : 'tmux_submit_failed';
142
+ }
143
+ }
144
+ for (const fallback of ['\r', '\n']) {
145
+ try {
146
+ const literal = spawnSync('tmux', ['send-keys', '-t', target, '-l', '--', fallback], { encoding: 'utf8' });
147
+ if (literal.status === 0) {
148
+ return { ok: true };
149
+ }
150
+ const detail = String(literal.stderr || literal.stdout || '').trim();
151
+ lastReason = detail ? `tmux_submit_failed:${detail.slice(0, 120)}` : 'tmux_submit_failed';
152
+ }
153
+ catch (error) {
154
+ lastReason = error instanceof Error ? `tmux_submit_failed:${error.message}` : 'tmux_submit_failed';
155
+ }
156
+ }
157
+ return { ok: false, reason: lastReason };
158
+ }
159
+ function sleep(ms) {
160
+ return new Promise((resolve) => {
161
+ setTimeout(resolve, ms);
162
+ });
163
+ }
164
+ export async function injectTmuxSessionText(input) {
165
+ const resolvedTarget = resolveTmuxInjectionTarget(input.tmuxSessionId);
166
+ if (!resolvedTarget.sessionName || !resolvedTarget.target) {
167
+ return { ok: false, reason: 'tmux_session_required' };
168
+ }
169
+ const text = normalizeTmuxInjectedText(input.text);
170
+ if (!text) {
171
+ return { ok: false, reason: 'empty_text' };
172
+ }
173
+ if (!isTmuxAvailable()) {
174
+ return { ok: false, reason: 'tmux_unavailable' };
175
+ }
176
+ if (!isTmuxSessionAlive(resolvedTarget.sessionName)) {
177
+ return { ok: false, reason: 'tmux_session_not_found' };
178
+ }
179
+ try {
180
+ // Ensure target pane is in normal mode so Enter can be delivered reliably.
181
+ spawnSync('tmux', ['send-keys', '-t', resolvedTarget.target, '-X', 'cancel'], { encoding: 'utf8' });
182
+ const literal = spawnSync('tmux', ['send-keys', '-t', resolvedTarget.target, '-l', '--', text], { encoding: 'utf8' });
183
+ if (literal.status !== 0) {
184
+ const detail = String(literal.stderr || literal.stdout || '').trim();
185
+ return { ok: false, reason: detail ? `tmux_send_failed:${detail.slice(0, 120)}` : 'tmux_send_failed' };
186
+ }
187
+ }
188
+ catch (error) {
189
+ return { ok: false, reason: error instanceof Error ? `tmux_send_failed:${error.message}` : 'tmux_send_failed' };
190
+ }
191
+ await sleep(80);
192
+ const submit = sendTmuxSubmitKey(resolvedTarget.target, input.clientType);
193
+ if (!submit.ok) {
194
+ return submit;
195
+ }
196
+ return { ok: true };
197
+ }
101
198
  //# sourceMappingURL=tmux-session-probe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tmux-session-probe.js","sourceRoot":"","sources":["../../../../src/server/runtime/http-server/tmux-session-probe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tmux-session-probe.js","sourceRoot":"","sources":["../../../../src/server/runtime/http-server/tmux-session-probe.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,6 @@ declare function killPidBestEffort(pid: number, opts: {
14
14
  */
15
15
  declare function ensurePortAvailable(port: number, opts?: {
16
16
  attemptGraceful?: boolean;
17
- }): Promise<void>;
17
+ restartInPlaceOnly?: boolean;
18
+ }): Promise<'available' | 'handled_existing_server'>;
18
19
  export { ensurePortAvailable, killPidBestEffort, canBind, attemptHttpShutdown };
@@ -23,6 +23,35 @@ async function canBind(port) {
23
23
  }
24
24
  });
25
25
  }
26
+ function isBuildRestartOnlyMode() {
27
+ const raw = String(process.env.ROUTECODEX_BUILD_RESTART_ONLY ?? process.env.RCC_BUILD_RESTART_ONLY ?? '').trim().toLowerCase();
28
+ return raw === '1' || raw === 'true' || raw === 'yes' || raw === 'on';
29
+ }
30
+ async function isServerHealthyQuick(port) {
31
+ try {
32
+ const controller = new AbortController();
33
+ const timeout = setTimeout(() => {
34
+ try {
35
+ controller.abort();
36
+ }
37
+ catch { /* ignore */ }
38
+ }, 800);
39
+ const res = await fetch(`${HTTP_PROTOCOLS.HTTP}${LOCAL_HOSTS.IPV4}:${port}/health`, {
40
+ method: 'GET',
41
+ signal: controller.signal
42
+ }).catch(() => null);
43
+ clearTimeout(timeout);
44
+ if (!res || !res.ok) {
45
+ return false;
46
+ }
47
+ const data = await res.json().catch(() => null);
48
+ const status = typeof data?.status === 'string' ? data.status.toLowerCase() : '';
49
+ return !!data && (status === 'healthy' || status === 'ready' || status === 'ok' || data?.ready === true || data?.pipelineReady === true);
50
+ }
51
+ catch {
52
+ return false;
53
+ }
54
+ }
26
55
  async function attemptHttpShutdown(port) {
27
56
  try {
28
57
  const controller = new AbortController();
@@ -126,6 +155,7 @@ function killPidBestEffort(pid, opts) {
126
155
  * then force-killing as a last resort.
127
156
  */
128
157
  async function ensurePortAvailable(port, opts = {}) {
158
+ const restartInPlaceOnly = Boolean(opts.restartInPlaceOnly ?? isBuildRestartOnlyMode());
129
159
  // Quick probe first; if we can bind, it's free
130
160
  try {
131
161
  const probe = net.createServer();
@@ -135,12 +165,61 @@ async function ensurePortAvailable(port, opts = {}) {
135
165
  });
136
166
  if (canListen) {
137
167
  await new Promise(r => probe.close(() => r(null)));
138
- return; // free
168
+ return 'available'; // free
139
169
  }
140
170
  }
141
171
  catch {
142
172
  // fallthrough
143
173
  }
174
+ if (restartInPlaceOnly) {
175
+ const managedPids = listManagedServerPidsByPort(port).map(Number).filter(pid => Number.isFinite(pid) && pid > 0);
176
+ if (managedPids.length > 0) {
177
+ let signaled = 0;
178
+ for (const pid of managedPids) {
179
+ try {
180
+ logProcessLifecycle({
181
+ event: 'port_restart_signal',
182
+ source: 'index.ensurePortAvailable',
183
+ details: { port, pid, signal: 'SIGUSR2', result: 'attempt' }
184
+ });
185
+ process.kill(pid, 'SIGUSR2');
186
+ signaled += 1;
187
+ logProcessLifecycle({
188
+ event: 'port_restart_signal',
189
+ source: 'index.ensurePortAvailable',
190
+ details: { port, pid, signal: 'SIGUSR2', result: 'success' }
191
+ });
192
+ }
193
+ catch (error) {
194
+ logProcessLifecycle({
195
+ event: 'port_restart_signal',
196
+ source: 'index.ensurePortAvailable',
197
+ details: { port, pid, signal: 'SIGUSR2', result: 'failed', error }
198
+ });
199
+ }
200
+ }
201
+ if (signaled > 0) {
202
+ const deadline = Date.now() + 15000;
203
+ while (Date.now() < deadline) {
204
+ if (await isServerHealthyQuick(port)) {
205
+ return 'handled_existing_server';
206
+ }
207
+ await new Promise(r => setTimeout(r, 150));
208
+ }
209
+ throw new Error(`Build restart-only mode timed out waiting for restarted server on port ${port}`);
210
+ }
211
+ throw new Error(`Build restart-only mode failed: unable to signal SIGUSR2 to managed PID(s) on port ${port}`);
212
+ }
213
+ if (await isServerHealthyQuick(port)) {
214
+ logProcessLifecycle({
215
+ event: 'port_check_result',
216
+ source: 'index.ensurePortAvailable',
217
+ details: { port, result: 'restart_only_reuse_existing' }
218
+ });
219
+ return 'handled_existing_server';
220
+ }
221
+ throw new Error(`Port ${port} is occupied by unmanaged process; build restart-only mode refuses shutdown/kill.`);
222
+ }
144
223
  // Try graceful HTTP shutdown if a compatible server is there
145
224
  if (opts.attemptGraceful) {
146
225
  const graceful = await attemptHttpShutdown(port);
@@ -149,7 +228,7 @@ async function ensurePortAvailable(port, opts = {}) {
149
228
  for (let i = 0; i < 10; i++) {
150
229
  await new Promise(r => setTimeout(r, 300));
151
230
  if (await canBind(port)) {
152
- return;
231
+ return 'available';
153
232
  }
154
233
  }
155
234
  }
@@ -171,7 +250,7 @@ async function ensurePortAvailable(port, opts = {}) {
171
250
  source: 'index.ensurePortAvailable',
172
251
  details: { port, result: 'no_managed_pid' }
173
252
  });
174
- return;
253
+ return 'available';
175
254
  }
176
255
  logProcessLifecycle({
177
256
  event: 'port_cleanup',
@@ -184,7 +263,7 @@ async function ensurePortAvailable(port, opts = {}) {
184
263
  for (let i = 0; i < 10; i++) {
185
264
  await new Promise(r => setTimeout(r, 300));
186
265
  if (await canBind(port)) {
187
- return;
266
+ return 'available';
188
267
  }
189
268
  }
190
269
  const remain = listManagedServerPidsByPort(port).map(String);
@@ -199,6 +278,7 @@ async function ensurePortAvailable(port, opts = {}) {
199
278
  killPidBestEffort(Number(pid), { force: true });
200
279
  }
201
280
  await new Promise(r => setTimeout(r, 500));
281
+ return 'available';
202
282
  }
203
283
  export { ensurePortAvailable, killPidBestEffort, canBind, attemptHttpShutdown };
204
284
  //# sourceMappingURL=port-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"port-utils.js","sourceRoot":"","sources":["../../src/server-lifecycle/port-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,KAAK,UAAU,OAAO,CAAC,IAAY;IACjC,OAAO,MAAM,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;YAC7B,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;gBACvC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAY;IAC7C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC;gBAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACpD,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE;YAChG,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrB,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,mBAAmB,CAAC;YAClB,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;SACxE,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mBAAmB,CAAC;YAClB,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC3C,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,IAAwB;IAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IACD,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;QACxB,mBAAmB,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE;gBACP,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,iBAAiB;gBACzB,MAAM,EAAE,mBAAmB,CAAC,YAAY,CAAC;aAC1C;SACF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,mBAAmB,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE;SAC/F,CAAC,CAAC;QACH,IAAI,CAAC;YACH,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACnE,mBAAmB,CAAC;gBAClB,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,2BAA2B;gBACnC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE;aAC/F,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mBAAmB,CAAC;gBAClB,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,2BAA2B;gBACnC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;aACrG,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;IACD,mBAAmB,CAAC;QAClB,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,2BAA2B;QACnC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;KACvD,CAAC,CAAC;IACH,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1B,mBAAmB,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;SACvD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mBAAmB,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC7D,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAAsC,EAAE;IACvF,+CAA+C;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,MAAM,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;YACrD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QACH,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,OAAO;QACjB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;IAED,6DAA6D;IAC7D,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,2CAA2C;YAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3C,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,MAAM,IAAI,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,mBAAmB,CAAC;gBAClB,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,2BAA2B;gBACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE;aAChD,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CACb,QAAQ,IAAI,sHAAsH,CACnI,CAAC;QACJ,CAAC;QACD,mBAAmB,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE;SAC5C,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,mBAAmB,CAAC;QAClB,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,2BAA2B;QACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE;KACrD,CAAC,CAAC;IACH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,mBAAmB,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;SACtD,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"port-utils.js","sourceRoot":"","sources":["../../src/server-lifecycle/port-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,KAAK,UAAU,OAAO,CAAC,IAAY;IACjC,OAAO,MAAM,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;YAC7B,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;gBACvC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/H,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAAY;IAC9C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC;gBAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACpD,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,SAAS,EAAE;YAClF,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrB,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,EAAE,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC;IAC3I,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAY;IAC7C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC;gBAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACpD,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE;YAChG,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrB,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,mBAAmB,CAAC;YAClB,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;SACxE,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mBAAmB,CAAC;YAClB,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC3C,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,IAAwB;IAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IACD,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;QACxB,mBAAmB,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE;gBACP,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,iBAAiB;gBACzB,MAAM,EAAE,mBAAmB,CAAC,YAAY,CAAC;aAC1C;SACF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QACD,mBAAmB,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE;SAC/F,CAAC,CAAC;QACH,IAAI,CAAC;YACH,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACnE,mBAAmB,CAAC;gBAClB,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,2BAA2B;gBACnC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE;aAC/F,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mBAAmB,CAAC;gBAClB,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,2BAA2B;gBACnC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;aACrG,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;IACD,mBAAmB,CAAC;QAClB,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,2BAA2B;QACnC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;KACvD,CAAC,CAAC;IACH,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1B,mBAAmB,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;SACvD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mBAAmB,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC7D,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAChC,IAAY,EACZ,OAAoE,EAAE;IAEtE,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,sBAAsB,EAAE,CAAC,CAAC;IACxF,+CAA+C;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,MAAM,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;YACrD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QACH,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnD,OAAO,WAAW,CAAC,CAAC,OAAO;QAC7B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;IAED,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;QACjH,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,mBAAmB,CAAC;wBAClB,KAAK,EAAE,qBAAqB;wBAC5B,MAAM,EAAE,2BAA2B;wBACnC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;qBAC7D,CAAC,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oBAC7B,QAAQ,IAAI,CAAC,CAAC;oBACd,mBAAmB,CAAC;wBAClB,KAAK,EAAE,qBAAqB;wBAC5B,MAAM,EAAE,2BAA2B;wBACnC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;qBAC7D,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,mBAAmB,CAAC;wBAClB,KAAK,EAAE,qBAAqB;wBAC5B,MAAM,EAAE,2BAA2B;wBACnC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;qBACnE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBACpC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;oBAC7B,IAAI,MAAM,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;wBACrC,OAAO,yBAAyB,CAAC;oBACnC,CAAC;oBACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC7C,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,0EAA0E,IAAI,EAAE,CAAC,CAAC;YACpG,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,sFAAsF,IAAI,EAAE,CAAC,CAAC;QAChH,CAAC;QAED,IAAI,MAAM,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,mBAAmB,CAAC;gBAClB,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,2BAA2B;gBACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,6BAA6B,EAAE;aACzD,CAAC,CAAC;YACH,OAAO,yBAAyB,CAAC;QACnC,CAAC;QAED,MAAM,IAAI,KAAK,CACb,QAAQ,IAAI,mFAAmF,CAChG,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,2CAA2C;YAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC3C,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,OAAO,WAAW,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,MAAM,IAAI,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,mBAAmB,CAAC;gBAClB,KAAK,EAAE,cAAc;gBACrB,MAAM,EAAE,2BAA2B;gBACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE;aAChD,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CACb,QAAQ,IAAI,sHAAsH,CACnI,CAAC;QACJ,CAAC;QACD,mBAAmB,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE;SAC5C,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,mBAAmB,CAAC;QAClB,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,2BAA2B;QACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE;KACrD,CAAC,CAAC;IACH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,mBAAmB,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,2BAA2B;YACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;SACtD,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3C,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -7,6 +7,7 @@ export declare function printTokens(json?: boolean): Promise<void>;
7
7
  type InteractiveRefreshOptions = {
8
8
  force?: boolean;
9
9
  mode?: 'manual' | 'auto';
10
+ noAutoFallback?: boolean;
10
11
  };
11
12
  export declare function interactiveRefresh(selector: string, options?: InteractiveRefreshOptions): Promise<void>;
12
13
  export declare function validateOAuthTokens(selector?: string, json?: boolean): Promise<boolean>;
@@ -10,19 +10,13 @@ import { formatTokenLabel } from './token-types.js';
10
10
  import { buildServerAuthSnapshot, detectLocalServerInstance } from './server-utils.js';
11
11
  import { TokenHistoryStore, resolveTokenHistoryFilePath } from './history-store.js';
12
12
  import { ensureLocalTokenPortalEnv, shutdownLocalTokenPortalEnv } from '../token-portal/local-token-portal.js';
13
- import { shutdownCamoufoxLaunchers, isCamoufoxAvailable, openAuthInCamoufox } from '../providers/core/config/camoufox-launcher.js';
13
+ import { isCamoufoxAvailable, openAuthInCamoufox } from '../providers/core/config/camoufox-launcher.js';
14
14
  import { loadRouteCodexConfig } from '../config/routecodex-config-loader.js';
15
15
  import { withOAuthRepairEnv } from '../providers/auth/oauth-repair-env.js';
16
16
  import { findGoogleAccountVerificationIssue } from './quota-auth-issue.js';
17
17
  export { TokenDaemon };
18
18
  const historyStore = new TokenHistoryStore();
19
19
  async function cleanupInteractiveOAuthArtifacts() {
20
- try {
21
- await shutdownCamoufoxLaunchers();
22
- }
23
- catch {
24
- // ignore cleanup errors
25
- }
26
20
  try {
27
21
  await shutdownLocalTokenPortalEnv();
28
22
  }
@@ -337,6 +331,7 @@ export async function interactiveRefresh(selector, options = {}) {
337
331
  const label = formatTokenLabel(token);
338
332
  const force = Boolean(options?.force);
339
333
  const interactionMode = options?.mode === 'auto' ? 'auto' : 'manual';
334
+ const noAutoFallback = options?.noAutoFallback === true;
340
335
  let quotaVerifyWarned = false;
341
336
  const maybeOpenQuotaVerifyUrl = async (url) => {
342
337
  const shouldAutoOpen = String(process.env.ROUTECODEX_OAUTH_AUTO_OPEN_VERIFY || '').trim() === '1' ||
@@ -347,12 +342,12 @@ export async function interactiveRefresh(selector, options = {}) {
347
342
  return;
348
343
  }
349
344
  if (!isCamoufoxAvailable()) {
350
- console.warn(chalk.yellow('⚠'), 'Camoufox is required to open the verification URL. Install it first: python3 -m pip install --user -U camoufox');
345
+ console.warn(chalk.yellow('⚠'), 'camo CLI is required to open the verification URL. Install/enable `camo` first.');
351
346
  return;
352
347
  }
353
348
  let proceed = shouldAutoOpen;
354
349
  if (!proceed) {
355
- proceed = await askYesNo('Open verification URL in Camoufox now? (Y/n) ', true);
350
+ proceed = await askYesNo('Open verification URL in camo browser now? (Y/n) ', true);
356
351
  }
357
352
  if (!proceed) {
358
353
  return;
@@ -368,7 +363,7 @@ export async function interactiveRefresh(selector, options = {}) {
368
363
  alias: token.alias || 'default'
369
364
  });
370
365
  if (ok) {
371
- console.log(chalk.blue('ℹ'), 'Opened verification URL in Camoufox.');
366
+ console.log(chalk.blue('ℹ'), 'Opened verification URL in camo browser.');
372
367
  }
373
368
  });
374
369
  }
@@ -476,6 +471,7 @@ export async function interactiveRefresh(selector, options = {}) {
476
471
  const prevCamoufoxAutoMode = process.env.ROUTECODEX_CAMOUFOX_AUTO_MODE;
477
472
  const prevOAuthAutoConfirm = process.env.ROUTECODEX_OAUTH_AUTO_CONFIRM;
478
473
  const prevCamoufoxOpenOnly = process.env.ROUTECODEX_CAMOUFOX_OPEN_ONLY;
474
+ const prevCamoufoxDevMode = process.env.ROUTECODEX_CAMOUFOX_DEV_MODE;
479
475
  const prevOAuthBrowser = process.env.ROUTECODEX_OAUTH_BROWSER;
480
476
  try {
481
477
  await ensureLocalTokenPortalEnv();
@@ -499,10 +495,13 @@ export async function interactiveRefresh(selector, options = {}) {
499
495
  catch (error) {
500
496
  // When Camoufox auto mode fails (selector mismatch / locale / popup differences),
501
497
  // immediately fall back to a visible manual flow in the same command invocation.
502
- if (autoModeAtStart) {
498
+ if (autoModeAtStart && !noAutoFallback) {
503
499
  const msg = error instanceof Error ? error.message : String(error);
504
- console.warn(chalk.yellow('!'), `Camoufox auto OAuth failed (${providerType} ${label}, autoMode=${autoModeAtStart}): ${msg}. Falling back to manual mode.`);
500
+ console.warn(chalk.yellow('!'), `Camoufox auto OAuth failed (${providerType} ${label}, autoMode=${autoModeAtStart}): ${msg}. Falling back to headful manual mode once.`);
505
501
  delete process.env.ROUTECODEX_CAMOUFOX_AUTO_MODE;
502
+ delete process.env.ROUTECODEX_OAUTH_AUTO_CONFIRM;
503
+ process.env.ROUTECODEX_CAMOUFOX_DEV_MODE = '1';
504
+ process.env.ROUTECODEX_CAMOUFOX_OPEN_ONLY = '1';
506
505
  await runEnsure();
507
506
  }
508
507
  else {
@@ -539,6 +538,12 @@ export async function interactiveRefresh(selector, options = {}) {
539
538
  else {
540
539
  process.env.ROUTECODEX_CAMOUFOX_OPEN_ONLY = prevCamoufoxOpenOnly;
541
540
  }
541
+ if (prevCamoufoxDevMode === undefined) {
542
+ delete process.env.ROUTECODEX_CAMOUFOX_DEV_MODE;
543
+ }
544
+ else {
545
+ process.env.ROUTECODEX_CAMOUFOX_DEV_MODE = prevCamoufoxDevMode;
546
+ }
542
547
  if (prevOAuthBrowser === undefined) {
543
548
  delete process.env.ROUTECODEX_OAUTH_BROWSER;
544
549
  }