@jsonstudio/rcc 0.89.2202 → 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.
- package/README.md +27 -0
- package/dist/build-info.js +2 -2
- package/dist/build-info.js.map +1 -1
- package/dist/cli/commands/claude.js +1 -0
- package/dist/cli/commands/claude.js.map +1 -1
- package/dist/cli/commands/codex.js +1 -0
- package/dist/cli/commands/codex.js.map +1 -1
- package/dist/cli/commands/guardian-daemon.d.ts +2 -0
- package/dist/cli/commands/guardian-daemon.js +299 -0
- package/dist/cli/commands/guardian-daemon.js.map +1 -0
- package/dist/cli/commands/init/camoufox.js +1 -1
- package/dist/cli/commands/init/camoufox.js.map +1 -1
- package/dist/cli/commands/init.js +15 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/launcher/types.d.ts +6 -0
- package/dist/cli/commands/launcher-kernel.js +456 -109
- package/dist/cli/commands/launcher-kernel.js.map +1 -1
- package/dist/cli/commands/port.js +28 -8
- package/dist/cli/commands/port.js.map +1 -1
- package/dist/cli/commands/restart.d.ts +4 -0
- package/dist/cli/commands/restart.js +91 -42
- package/dist/cli/commands/restart.js.map +1 -1
- package/dist/cli/commands/start-types.d.ts +4 -0
- package/dist/cli/commands/start.js +112 -68
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/stop.d.ts +3 -0
- package/dist/cli/commands/stop.js +30 -63
- package/dist/cli/commands/stop.js.map +1 -1
- package/dist/cli/config/init-config.js +15 -1
- package/dist/cli/config/init-config.js.map +1 -1
- package/dist/cli/config/init-provider-catalog.js +13 -5
- package/dist/cli/config/init-provider-catalog.js.map +1 -1
- package/dist/cli/guardian/client.d.ts +38 -0
- package/dist/cli/guardian/client.js +237 -0
- package/dist/cli/guardian/client.js.map +1 -0
- package/dist/cli/guardian/paths.d.ts +7 -0
- package/dist/cli/guardian/paths.js +13 -0
- package/dist/cli/guardian/paths.js.map +1 -0
- package/dist/cli/guardian/types.d.ts +30 -0
- package/dist/cli/guardian/types.js +2 -0
- package/dist/cli/guardian/types.js.map +1 -0
- package/dist/cli/register/guardian-daemon-command.d.ts +2 -0
- package/dist/cli/register/guardian-daemon-command.js +5 -0
- package/dist/cli/register/guardian-daemon-command.js.map +1 -0
- package/dist/cli/server/port-utils.js +57 -1
- package/dist/cli/server/port-utils.js.map +1 -1
- package/dist/cli.js +48 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/oauth.js +6 -6
- package/dist/commands/oauth.js.map +1 -1
- package/dist/commands/provider-update.js +12 -0
- package/dist/commands/provider-update.js.map +1 -1
- package/dist/config/routecodex-config-loader.js +66 -1
- package/dist/config/routecodex-config-loader.js.map +1 -1
- package/dist/config/virtual-router-builder.js +18 -0
- package/dist/config/virtual-router-builder.js.map +1 -1
- package/dist/config/virtual-router-types.js +20 -5
- package/dist/config/virtual-router-types.js.map +1 -1
- package/dist/daemon-admin-ui/assets/index-C8vP_c5E.js +15 -0
- package/dist/daemon-admin-ui/assets/index-DjIoHmNv.css +1 -0
- package/dist/daemon-admin-ui/index.html +13 -0
- package/dist/docs/daemon-admin-ui.html +328 -57
- package/dist/index.d.ts +9 -0
- package/dist/index.js +268 -10
- package/dist/index.js.map +1 -1
- package/dist/manager/modules/quota/provider-quota-daemon.error-helpers.d.ts +1 -0
- package/dist/manager/modules/quota/provider-quota-daemon.error-helpers.js +36 -0
- package/dist/manager/modules/quota/provider-quota-daemon.error-helpers.js.map +1 -1
- package/dist/manager/modules/quota/provider-quota-daemon.events.js +50 -1
- package/dist/manager/modules/quota/provider-quota-daemon.events.js.map +1 -1
- package/dist/providers/auth/antigravity-user-agent.js +78 -31
- package/dist/providers/auth/antigravity-user-agent.js.map +1 -1
- package/dist/providers/auth/gemini-cli-userinfo-helper.js +94 -63
- package/dist/providers/auth/gemini-cli-userinfo-helper.js.map +1 -1
- package/dist/providers/auth/iflow-userinfo-helper.js +1 -1
- package/dist/providers/auth/iflow-userinfo-helper.js.map +1 -1
- package/dist/providers/auth/oauth-error-message.d.ts +1 -0
- package/dist/providers/auth/oauth-error-message.js +44 -0
- package/dist/providers/auth/oauth-error-message.js.map +1 -0
- package/dist/providers/auth/oauth-lifecycle/error-detection.js +42 -8
- package/dist/providers/auth/oauth-lifecycle/error-detection.js.map +1 -1
- package/dist/providers/auth/oauth-lifecycle/token-io.d.ts +1 -0
- package/dist/providers/auth/oauth-lifecycle/token-io.js +12 -0
- package/dist/providers/auth/oauth-lifecycle/token-io.js.map +1 -1
- package/dist/providers/auth/oauth-lifecycle.js +502 -87
- package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
- package/dist/providers/auth/oauth-repair-cooldown.js +2 -7
- package/dist/providers/auth/oauth-repair-cooldown.js.map +1 -1
- package/dist/providers/auth/oauth-repair-env.js +3 -5
- package/dist/providers/auth/oauth-repair-env.js.map +1 -1
- package/dist/providers/auth/oauth-utils/error-extraction.js +42 -8
- package/dist/providers/auth/oauth-utils/error-extraction.js.map +1 -1
- package/dist/providers/auth/qwen-userinfo-helper.js +18 -3
- package/dist/providers/auth/qwen-userinfo-helper.js.map +1 -1
- package/dist/providers/auth/tokenfile-auth.d.ts +1 -0
- package/dist/providers/auth/tokenfile-auth.js +15 -9
- package/dist/providers/auth/tokenfile-auth.js.map +1 -1
- package/dist/providers/core/config/camoufox-actions.d.ts +31 -0
- package/dist/providers/core/config/camoufox-actions.js +461 -0
- package/dist/providers/core/config/camoufox-actions.js.map +1 -0
- package/dist/providers/core/config/camoufox-launcher.d.ts +3 -0
- package/dist/providers/core/config/camoufox-launcher.js +518 -160
- package/dist/providers/core/config/camoufox-launcher.js.map +1 -1
- package/dist/providers/core/config/oauth-flows.js +6 -44
- package/dist/providers/core/config/oauth-flows.js.map +1 -1
- package/dist/providers/core/config/provider-oauth-configs.js +51 -7
- package/dist/providers/core/config/provider-oauth-configs.js.map +1 -1
- package/dist/providers/core/config/service-profiles.js +13 -4
- package/dist/providers/core/config/service-profiles.js.map +1 -1
- package/dist/providers/core/runtime/http-transport-provider.d.ts +1 -0
- package/dist/providers/core/runtime/http-transport-provider.js +60 -1
- package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
- package/dist/providers/core/runtime/provider-error-classifier.js +32 -15
- package/dist/providers/core/runtime/provider-error-classifier.js.map +1 -1
- package/dist/providers/core/runtime/provider-family-profile-utils.js +1 -1
- package/dist/providers/core/runtime/provider-family-profile-utils.js.map +1 -1
- package/dist/providers/core/runtime/provider-response-postprocessor.js +61 -14
- package/dist/providers/core/runtime/provider-response-postprocessor.js.map +1 -1
- package/dist/providers/core/strategies/oauth-auth-code-flow.d.ts +1 -0
- package/dist/providers/core/strategies/oauth-auth-code-flow.js +124 -19
- package/dist/providers/core/strategies/oauth-auth-code-flow.js.map +1 -1
- package/dist/providers/core/strategies/oauth-device-flow.js +6 -3
- package/dist/providers/core/strategies/oauth-device-flow.js.map +1 -1
- package/dist/providers/profile/families/iflow-profile.js +83 -10
- package/dist/providers/profile/families/iflow-profile.js.map +1 -1
- package/dist/providers/profile/families/qwen-profile.js +203 -0
- package/dist/providers/profile/families/qwen-profile.js.map +1 -1
- package/dist/scripts/camoufox/launch-auth.mjs +112 -5
- package/dist/server/handlers/config-admin-handler.js +9 -2
- package/dist/server/handlers/config-admin-handler.js.map +1 -1
- package/dist/server/handlers/handler-utils.js +3 -14
- package/dist/server/handlers/handler-utils.js.map +1 -1
- package/dist/server/handlers/logging.js +3 -4
- package/dist/server/handlers/logging.js.map +1 -1
- package/dist/server/runtime/http-server/clock-client-reaper.d.ts +1 -0
- package/dist/server/runtime/http-server/clock-client-reaper.js +21 -15
- package/dist/server/runtime/http-server/clock-client-reaper.js.map +1 -1
- package/dist/server/runtime/http-server/clock-client-registry-utils.d.ts +4 -0
- package/dist/server/runtime/http-server/clock-client-registry-utils.js +74 -16
- package/dist/server/runtime/http-server/clock-client-registry-utils.js.map +1 -1
- package/dist/server/runtime/http-server/clock-client-registry.d.ts +15 -0
- package/dist/server/runtime/http-server/clock-client-registry.js +300 -6
- package/dist/server/runtime/http-server/clock-client-registry.js.map +1 -1
- package/dist/server/runtime/http-server/clock-client-routes.js +49 -19
- package/dist/server/runtime/http-server/clock-client-routes.js.map +1 -1
- package/dist/server/runtime/http-server/clock-daemon-log-throttle.d.ts +16 -0
- package/dist/server/runtime/http-server/clock-daemon-log-throttle.js +49 -0
- package/dist/server/runtime/http-server/clock-daemon-log-throttle.js.map +1 -1
- package/dist/server/runtime/http-server/clock-scope-resolution.d.ts +14 -0
- package/dist/server/runtime/http-server/clock-scope-resolution.js +212 -0
- package/dist/server/runtime/http-server/clock-scope-resolution.js.map +1 -0
- package/dist/server/runtime/http-server/daemon-admin/auth-handler.js +5 -3
- package/dist/server/runtime/http-server/daemon-admin/auth-handler.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin/control-handler.js +104 -15
- package/dist/server/runtime/http-server/daemon-admin/control-handler.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js +2 -2
- package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin/providers-handler-routing-utils.d.ts +24 -0
- package/dist/server/runtime/http-server/daemon-admin/providers-handler-routing-utils.js +316 -70
- package/dist/server/runtime/http-server/daemon-admin/providers-handler-routing-utils.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin/providers-handler.js +190 -1
- package/dist/server/runtime/http-server/daemon-admin/providers-handler.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin/routing-policy.js +18 -29
- package/dist/server/runtime/http-server/daemon-admin/routing-policy.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin/stats-handler.js +2 -0
- package/dist/server/runtime/http-server/daemon-admin/stats-handler.js.map +1 -1
- package/dist/server/runtime/http-server/daemon-admin-routes.d.ts +8 -1
- package/dist/server/runtime/http-server/daemon-admin-routes.js +30 -0
- package/dist/server/runtime/http-server/daemon-admin-routes.js.map +1 -1
- package/dist/server/runtime/http-server/executor/client-injection-flow.d.ts +14 -0
- package/dist/server/runtime/http-server/executor/client-injection-flow.js +287 -0
- package/dist/server/runtime/http-server/executor/client-injection-flow.js.map +1 -0
- package/dist/server/runtime/http-server/executor/index.d.ts +1 -1
- package/dist/server/runtime/http-server/executor/index.js +1 -1
- package/dist/server/runtime/http-server/executor/index.js.map +1 -1
- package/dist/server/runtime/http-server/executor/provider-response-converter.js +236 -62
- package/dist/server/runtime/http-server/executor/provider-response-converter.js.map +1 -1
- package/dist/server/runtime/http-server/executor/provider-response-utils.js +5 -0
- package/dist/server/runtime/http-server/executor/provider-response-utils.js.map +1 -1
- package/dist/server/runtime/http-server/executor/request-executor-core-utils.d.ts +2 -0
- package/dist/server/runtime/http-server/executor/request-executor-core-utils.js +60 -0
- package/dist/server/runtime/http-server/executor/request-executor-core-utils.js.map +1 -1
- package/dist/server/runtime/http-server/executor/request-retry-helpers.js +20 -8
- package/dist/server/runtime/http-server/executor/request-retry-helpers.js.map +1 -1
- package/dist/server/runtime/http-server/executor/sse-error-handler.d.ts +1 -0
- package/dist/server/runtime/http-server/executor/sse-error-handler.js +13 -2
- package/dist/server/runtime/http-server/executor/sse-error-handler.js.map +1 -1
- package/dist/server/runtime/http-server/executor/usage-aggregator.d.ts +0 -12
- package/dist/server/runtime/http-server/executor/usage-aggregator.js +84 -88
- package/dist/server/runtime/http-server/executor/usage-aggregator.js.map +1 -1
- package/dist/server/runtime/http-server/executor-metadata.js +328 -7
- package/dist/server/runtime/http-server/executor-metadata.js.map +1 -1
- package/dist/server/runtime/http-server/executor-response.d.ts +1 -0
- package/dist/server/runtime/http-server/executor-response.js +52 -50
- package/dist/server/runtime/http-server/executor-response.js.map +1 -1
- package/dist/server/runtime/http-server/http-server-bootstrap.js +55 -6
- package/dist/server/runtime/http-server/http-server-bootstrap.js.map +1 -1
- package/dist/server/runtime/http-server/http-server-clock-daemon.d.ts +1 -0
- package/dist/server/runtime/http-server/http-server-clock-daemon.js +199 -44
- package/dist/server/runtime/http-server/http-server-clock-daemon.js.map +1 -1
- package/dist/server/runtime/http-server/http-server-lifecycle.js +4 -4
- package/dist/server/runtime/http-server/http-server-lifecycle.js.map +1 -1
- package/dist/server/runtime/http-server/hub-shadow-compare.js +1 -1
- package/dist/server/runtime/http-server/hub-shadow-compare.js.map +1 -1
- package/dist/server/runtime/http-server/index.d.ts +1 -0
- package/dist/server/runtime/http-server/index.js +1 -0
- package/dist/server/runtime/http-server/index.js.map +1 -1
- package/dist/server/runtime/http-server/middleware.js +82 -4
- package/dist/server/runtime/http-server/middleware.js.map +1 -1
- package/dist/server/runtime/http-server/request-executor.js +26 -7
- package/dist/server/runtime/http-server/request-executor.js.map +1 -1
- package/dist/server/runtime/http-server/routes.d.ts +2 -1
- package/dist/server/runtime/http-server/routes.js +4 -2
- package/dist/server/runtime/http-server/routes.js.map +1 -1
- package/dist/server/runtime/http-server/session-dir.js +12 -1
- package/dist/server/runtime/http-server/session-dir.js.map +1 -1
- package/dist/server/runtime/http-server/stats-manager.d.ts +35 -0
- package/dist/server/runtime/http-server/stats-manager.js +269 -21
- package/dist/server/runtime/http-server/stats-manager.js.map +1 -1
- package/dist/server/runtime/http-server/stopmessage-scope-rebind.d.ts +13 -0
- package/dist/server/runtime/http-server/stopmessage-scope-rebind.js +168 -0
- package/dist/server/runtime/http-server/stopmessage-scope-rebind.js.map +1 -0
- package/dist/server/runtime/http-server/tmux-session-probe.d.ts +10 -0
- package/dist/server/runtime/http-server/tmux-session-probe.js +97 -0
- package/dist/server/runtime/http-server/tmux-session-probe.js.map +1 -1
- package/dist/server-lifecycle/port-utils.d.ts +2 -1
- package/dist/server-lifecycle/port-utils.js +84 -4
- package/dist/server-lifecycle/port-utils.js.map +1 -1
- package/dist/token-daemon/index.d.ts +1 -0
- package/dist/token-daemon/index.js +17 -12
- package/dist/token-daemon/index.js.map +1 -1
- package/dist/utils/clock-client-token.d.ts +2 -1
- package/dist/utils/clock-client-token.js +52 -8
- package/dist/utils/clock-client-token.js.map +1 -1
- package/dist/utils/clock-scope-trace.d.ts +11 -0
- package/dist/utils/clock-scope-trace.js +41 -0
- package/dist/utils/clock-scope-trace.js.map +1 -0
- package/dist/utils/llms-engine-shadow.js +1 -1
- package/dist/utils/llms-engine-shadow.js.map +1 -1
- package/docs/DAEMON_CONTROL_PLANE.md +1 -0
- package/docs/ROUTING_POLICY_SCHEMA.md +4 -2
- package/docs/daemon-admin-ui.html +328 -57
- package/docs/design/servertool-stopmessage-lifecycle.md +109 -0
- package/docs/exec-command-guard-policy.example.v1.json +7 -1
- package/docs/providers/antigravity-gemini-provider-compat.md +2 -2
- package/package.json +23 -6
- package/scripts/build-core.mjs +12 -0
- package/scripts/camoufox/launch-auth.mjs +112 -5
- package/scripts/ci/repo-sanity.mjs +1 -0
- package/scripts/cleanup-stale-server-pids.mjs +142 -0
- package/scripts/install-global.sh +8 -0
- package/scripts/install-verify.mjs +33 -16
- package/scripts/run-bg.sh +226 -43
- package/scripts/run-fg-gtimeout.sh +158 -14
- package/scripts/tests/blackbox-rcc-vs-routecodex-antigravity.mjs +3 -3
- package/scripts/tests/ci-jest.mjs +9 -1
- package/scripts/triage-errorsamples.mjs +216 -0
- package/scripts/verify-codex-error-samples.mjs +92 -15
- package/scripts/verify-e2e-toolcall.mjs +12 -1
- package/scripts/verify-install-e2e.mjs +69 -28
|
@@ -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":"AAAA,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAChC,MAAM,sCAAsC,CAAC;AAiC9C,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,IAAI,SAAS,CAAC;AAC9B,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAY;IACzC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,MAAM,gBAAgB,GACpB,MAAM,CAAC,gBAAgB,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAU,CAAC;IAC3H,MAAM,iBAAiB,GACrB,MAAM,CAAC,iBAAiB,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAU,CAAC;IAC7H,MAAM,YAAY,GAChB,MAAM,CAAC,YAAY,YAAY,GAAG;QAChC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,MAAM,CAAC,YAAkD,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3F,CAAC,CAAC,IAAI,GAAG,EAAgC,CAAC;IAC9C,MAAM,cAAc,GAClB,MAAM,CAAC,cAAc,YAAY,GAAG;QAClC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,MAAM,CAAC,cAA2C,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,CAAC,CAAC,IAAI,GAAG,EAAuB,CAAC;IAErC,MAAM,KAAK,GAAwB;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,gBAAgB;QAChB,iBAAiB;QACjB,YAAY;QACZ,cAAc;QACd,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACtD,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC;QAClD,qBAAqB,EAAE,cAAc,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS;QAC9G,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;QAC5F,oBAAoB,EAAE,cAAc,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS;QAC3G,qBAAqB,EAAE,cAAc,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS;QAC9G,oBAAoB,EAAE,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAC5D,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACtD,uBAAuB,EAAE,SAAS,CAAC,MAAM,CAAC,uBAAuB,CAAC;QAClE,oBAAoB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;YAC9D,CAAC,CAAE,MAAM,CAAC,oBAAuD,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAChG,CAAC,CAAC,SAAS;QACb,gBAAgB,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACpD,oBAAoB,EAAE,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAC5D,mBAAmB,EAAE,cAAc,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;KACzG,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAiC;IAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CACZ,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC;QAC9B,cAAc,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAC3C,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC;QACrC,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC;QACrC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAClC,SAAS,CAAC,KAAK,CAAC,uBAAuB,CAAC;QACxC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CACvF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,MAA2B,EAAE,MAA2B;IAChF,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACpD,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAChD,MAAM,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAC5D,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IAChD,MAAM,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;IAC1D,MAAM,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAC5D,MAAM,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;IAC1D,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACpD,MAAM,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;IAChE,MAAM,CAAC,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;QACtE,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA0B;IAClD,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACpC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;IAClC,KAAK,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;IAClC,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAC;IACvC,KAAK,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAC;IACvC,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACpC,KAAK,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAC1C,KAAK,CAAC,oBAAoB,GAAG,SAAS,CAAC;AACzC,CAAC;AAED,SAAS,8BAA8B,CAAC,KAA0B;IAChE,OAAO,OAAO,CACZ,CAAC,KAAK,CAAC,YAAY;QACjB,CAAC,KAAK,CAAC,YAAY;QACnB,CAAC,KAAK,CAAC,YAAY;QACnB,KAAK,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC;QAC/B,KAAK,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC;QAChC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;QAC3B,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC;QAC7B,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAC5B,CAAC,SAAS,CAAC,KAAK,CAAC,oBAAoB,CAAC;QACtC,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC,cAAc,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO;QACL,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,SAAS;QACvB,gBAAgB,EAAE,IAAI,GAAG,EAAU;QACnC,iBAAiB,EAAE,IAAI,GAAG,EAAU;QACpC,YAAY,EAAE,IAAI,GAAG,EAAgC;QACrD,cAAc,EAAE,IAAI,GAAG,EAAuB;QAC9C,iBAAiB,EAAE,SAAS;QAC5B,eAAe,EAAE,SAAS;QAC1B,qBAAqB,EAAE,SAAS;QAChC,eAAe,EAAE,SAAS;QAC1B,oBAAoB,EAAE,SAAS;QAC/B,qBAAqB,EAAE,SAAS;QAChC,oBAAoB,EAAE,SAAS;QAC/B,iBAAiB,EAAE,SAAS;QAC5B,uBAAuB,EAAE,SAAS;QAClC,oBAAoB,EAAE,SAAS;QAC/B,gBAAgB,EAAE,SAAS;QAC3B,oBAAoB,EAAE,SAAS;QAC/B,mBAAmB,EAAE,SAAS;KAC/B,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA2B,EAAE,MAA2B;IACpF,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,OAAO,eAAe,IAAI,eAAe,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAI3C;IACC,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC1D,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACxE,CAAC;IACD,IAAI,gBAAgB,KAAK,gBAAgB,EAAE,CAAC;QAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACrE,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,gBAAgB,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,QAAQ,gBAAgB,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClF,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACvG,CAAC;IAED,MAAM,WAAW,GAAG,QAA+B,CAAC;IACpD,MAAM,WAAW,GAAG,qBAAqB,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,IAAI,uBAAuB,EAAE,CAAC;IAClH,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC9D,IAAI,CAAC,mBAAmB,IAAI,oBAAoB,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;QAC3E,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC3C,+BAA+B,CAAC,QAAQ,EAAE,WAAiD,CAAC,CAAC;IAC/F,CAAC;IAED,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC9B,IAAI,8BAA8B,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,+BAA+B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,+BAA+B,CAAC,QAAQ,EAAE,WAAiD,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,aAAa;QAC/C,QAAQ;QACR,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -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
|
-
|
|
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":"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
|
|
1
|
+
{"version":3,"file":"port-utils.js","sourceRoot":"","sources":["../../src/server-lifecycle/port-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 {
|
|
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('⚠'), '
|
|
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
|
|
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
|
|
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
|
}
|