@jsonstudio/rcc 0.89.2239 → 0.90.89
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 +4 -8
- package/dist/cli/commands/claude.js.map +1 -1
- package/dist/cli/commands/codex.js +6 -3
- 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/launcher/index.d.ts +1 -1
- package/dist/cli/commands/launcher/types.d.ts +7 -1
- package/dist/cli/commands/launcher/utils.d.ts +4 -1
- package/dist/cli/commands/launcher/utils.js +18 -8
- package/dist/cli/commands/launcher/utils.js.map +1 -1
- package/dist/cli/commands/launcher-kernel.d.ts +1 -1
- package/dist/cli/commands/launcher-kernel.js +608 -249
- 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/{clock-admin.d.ts → session-admin.d.ts} +2 -2
- package/dist/cli/commands/{clock-admin.js → session-admin.js} +17 -17
- package/dist/cli/commands/session-admin.js.map +1 -0
- package/dist/cli/commands/{tmux-inject.d.ts → session-inject.d.ts} +2 -2
- package/dist/cli/commands/{tmux-inject.js → session-inject.js} +12 -12
- package/dist/cli/commands/session-inject.js.map +1 -0
- package/dist/cli/commands/start-types.d.ts +4 -0
- package/dist/cli/commands/start-utils.d.ts +1 -0
- package/dist/cli/commands/start-utils.js +3 -0
- package/dist/cli/commands/start-utils.js.map +1 -1
- package/dist/cli/commands/start.js +122 -72
- 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-provider-catalog.js +8 -3
- 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/register/session-admin-command.d.ts +3 -0
- package/dist/cli/register/session-admin-command.js +5 -0
- package/dist/cli/register/session-admin-command.js.map +1 -0
- package/dist/cli/register/session-inject-command.d.ts +3 -0
- package/dist/cli/register/session-inject-command.js +5 -0
- package/dist/cli/register/session-inject-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 +52 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/oauth.js +6 -6
- package/dist/commands/oauth.js.map +1 -1
- package/dist/config/provider-v2-loader.js +18 -3
- package/dist/config/provider-v2-loader.js.map +1 -1
- package/dist/config/routecodex-config-loader.js +184 -9
- package/dist/config/routecodex-config-loader.js.map +1 -1
- package/dist/config/unified-config-paths.js +22 -0
- package/dist/config/unified-config-paths.js.map +1 -1
- package/dist/config/virtual-router-builder.js +18 -5
- 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 +334 -63
- 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-key-normalization.js +1 -10
- package/dist/manager/modules/quota/provider-key-normalization.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 +89 -49
- package/dist/manager/modules/quota/provider-quota-daemon.events.js.map +1 -1
- package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.js +2 -16
- package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.js.map +1 -1
- package/dist/manager/modules/token/index.d.ts +1 -0
- package/dist/manager/modules/token/index.js +6 -1
- package/dist/manager/modules/token/index.js.map +1 -1
- package/dist/manager/types.d.ts +1 -0
- package/dist/modules/llmswitch/bridge/state-integrations.js +1 -1
- package/dist/modules/llmswitch/bridge/state-integrations.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-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/core/config/camoufox-actions.d.ts +31 -0
- package/dist/providers/core/config/camoufox-actions.js +470 -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 +553 -159
- 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 +2 -2
- package/dist/providers/core/config/service-profiles.js.map +1 -1
- package/dist/providers/core/runtime/base-provider-runtime-helpers.js +15 -2
- package/dist/providers/core/runtime/base-provider-runtime-helpers.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 +32 -6
- package/dist/providers/core/strategies/oauth-device-flow.js.map +1 -1
- package/dist/providers/core/utils/provider-error-reporter.js +51 -0
- package/dist/providers/core/utils/provider-error-reporter.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/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-response-utils.js +3 -6
- package/dist/server/handlers/handler-response-utils.js.map +1 -1
- package/dist/server/handlers/handler-utils.js +14 -17
- 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/handlers/responses-handler.js +5 -3
- package/dist/server/handlers/responses-handler.js.map +1 -1
- 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.d.ts +1 -1
- package/dist/server/runtime/http-server/daemon-admin/routing-policy.js +21 -32
- 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 +297 -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 +281 -70
- package/dist/server/runtime/http-server/executor/provider-response-converter.js.map +1 -1
- package/dist/server/runtime/http-server/executor/provider-runtime-resolver.js +8 -6
- package/dist/server/runtime/http-server/executor/provider-runtime-resolver.js.map +1 -1
- package/dist/server/runtime/http-server/executor/request-executor-core-utils.d.ts +1 -0
- package/dist/server/runtime/http-server/executor/request-executor-core-utils.js +12 -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.d.ts +1 -1
- package/dist/server/runtime/http-server/executor/request-retry-helpers.js +23 -19
- package/dist/server/runtime/http-server/executor/request-retry-helpers.js.map +1 -1
- package/dist/server/runtime/http-server/executor/retry-engine.d.ts +2 -2
- package/dist/server/runtime/http-server/executor/retry-engine.js +2 -2
- package/dist/server/runtime/http-server/executor/retry-engine.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 +89 -90
- package/dist/server/runtime/http-server/executor/usage-aggregator.js.map +1 -1
- package/dist/server/runtime/http-server/executor-metadata.js +318 -17
- package/dist/server/runtime/http-server/executor-metadata.js.map +1 -1
- package/dist/server/runtime/http-server/executor-provider.d.ts +1 -0
- package/dist/server/runtime/http-server/executor-provider.js +5 -1
- package/dist/server/runtime/http-server/executor-provider.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 -58
- package/dist/server/runtime/http-server/executor-response.js.map +1 -1
- package/dist/server/runtime/http-server/http-server-bootstrap.js +50 -6
- package/dist/server/runtime/http-server/http-server-bootstrap.js.map +1 -1
- package/dist/server/runtime/http-server/http-server-lifecycle.js +6 -5
- package/dist/server/runtime/http-server/http-server-lifecycle.js.map +1 -1
- package/dist/server/runtime/http-server/http-server-runtime-setup.js +1 -1
- package/dist/server/runtime/http-server/http-server-runtime-setup.js.map +1 -1
- package/dist/server/runtime/http-server/http-server-session-daemon.d.ts +6 -0
- package/dist/server/runtime/http-server/http-server-session-daemon.js +404 -0
- package/dist/server/runtime/http-server/http-server-session-daemon.js.map +1 -0
- 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 +11 -10
- package/dist/server/runtime/http-server/index.js +21 -20
- package/dist/server/runtime/http-server/index.js.map +1 -1
- package/dist/server/runtime/http-server/managed-process-probe.js +1 -1
- package/dist/server/runtime/http-server/managed-process-probe.js.map +1 -1
- package/dist/server/runtime/http-server/middleware.js +91 -5
- package/dist/server/runtime/http-server/middleware.js.map +1 -1
- package/dist/server/runtime/http-server/request-executor.js +19 -9
- 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 +7 -5
- package/dist/server/runtime/http-server/routes.js.map +1 -1
- package/dist/server/runtime/http-server/{clock-client-reaper.d.ts → session-client-reaper.d.ts} +6 -6
- package/dist/server/runtime/http-server/{clock-client-reaper.js → session-client-reaper.js} +26 -49
- package/dist/server/runtime/http-server/session-client-reaper.js.map +1 -0
- package/dist/server/runtime/http-server/{clock-client-registry-utils.d.ts → session-client-registry-utils.d.ts} +14 -10
- package/dist/server/runtime/http-server/{clock-client-registry-utils.js → session-client-registry-utils.js} +77 -19
- package/dist/server/runtime/http-server/session-client-registry-utils.js.map +1 -0
- package/dist/server/runtime/http-server/{clock-client-registry.d.ts → session-client-registry.d.ts} +26 -11
- package/dist/server/runtime/http-server/{clock-client-registry.js → session-client-registry.js} +305 -11
- package/dist/server/runtime/http-server/session-client-registry.js.map +1 -0
- package/dist/server/runtime/http-server/{clock-client-route-utils.d.ts → session-client-route-utils.d.ts} +1 -1
- package/dist/server/runtime/http-server/{clock-client-route-utils.js → session-client-route-utils.js} +4 -4
- package/dist/server/runtime/http-server/session-client-route-utils.js.map +1 -0
- package/dist/server/runtime/http-server/session-client-routes.d.ts +2 -0
- package/dist/server/runtime/http-server/{clock-client-routes.js → session-client-routes.js} +107 -59
- package/dist/server/runtime/http-server/session-client-routes.js.map +1 -0
- package/dist/server/runtime/http-server/session-daemon-inject-config.d.ts +1 -0
- package/dist/server/runtime/http-server/{clock-daemon-inject-config.js → session-daemon-inject-config.js} +2 -2
- package/dist/server/runtime/http-server/session-daemon-inject-config.js.map +1 -0
- package/dist/server/runtime/http-server/session-daemon-log-throttle.d.ts +28 -0
- package/dist/server/runtime/http-server/session-daemon-log-throttle.js +105 -0
- package/dist/server/runtime/http-server/session-daemon-log-throttle.js.map +1 -0
- 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/session-scope-resolution.d.ts +14 -0
- package/dist/server/runtime/http-server/session-scope-resolution.js +208 -0
- package/dist/server/runtime/http-server/session-scope-resolution.js.map +1 -0
- 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 +21 -0
- package/dist/server/runtime/http-server/stopmessage-scope-rebind.js +197 -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 +98 -1
- 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/token-daemon/token-daemon.d.ts +2 -0
- package/dist/token-daemon/token-daemon.js +18 -10
- package/dist/token-daemon/token-daemon.js.map +1 -1
- package/dist/utils/llms-engine-shadow.js +1 -1
- package/dist/utils/llms-engine-shadow.js.map +1 -1
- package/dist/utils/log-helpers.js +46 -0
- package/dist/utils/log-helpers.js.map +1 -1
- package/dist/utils/session-client-token.d.ts +4 -0
- package/dist/utils/session-client-token.js +93 -0
- package/dist/utils/session-client-token.js.map +1 -0
- package/dist/utils/session-scope-trace.d.ts +11 -0
- package/dist/utils/session-scope-trace.js +41 -0
- package/dist/utils/session-scope-trace.js.map +1 -0
- package/docs/CLOCK.md +0 -1
- package/docs/DAEMON_CONTROL_PLANE.md +1 -0
- package/docs/PORTS.md +2 -2
- package/docs/ROUTING_POLICY_SCHEMA.md +5 -3
- package/docs/antigravity-routing-contract.md +2 -2
- package/docs/daemon-admin-ui.html +334 -63
- 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/docs/{clock-client-daemon-design.md → session-client-daemon-design.md} +34 -34
- package/package.json +23 -7
- 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/compare-responses-sse.mjs +267 -0
- package/scripts/install-global.sh +6 -0
- package/scripts/install-verify.mjs +33 -16
- package/scripts/replay-codex-sample.mjs +52 -6
- 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-install-e2e.mjs +57 -27
- package/scripts/virtual-router-dryrun.mjs +7 -1
- package/dist/cli/commands/clock-admin.js.map +0 -1
- package/dist/cli/commands/tmux-inject.js.map +0 -1
- package/dist/cli/register/clock-admin-command.d.ts +0 -3
- package/dist/cli/register/clock-admin-command.js +0 -5
- package/dist/cli/register/clock-admin-command.js.map +0 -1
- package/dist/cli/register/tmux-inject-command.d.ts +0 -3
- package/dist/cli/register/tmux-inject-command.js +0 -5
- package/dist/cli/register/tmux-inject-command.js.map +0 -1
- package/dist/server/runtime/http-server/clock-client-reaper.js.map +0 -1
- package/dist/server/runtime/http-server/clock-client-registry-utils.js.map +0 -1
- package/dist/server/runtime/http-server/clock-client-registry.js.map +0 -1
- package/dist/server/runtime/http-server/clock-client-route-utils.js.map +0 -1
- package/dist/server/runtime/http-server/clock-client-routes.d.ts +0 -2
- package/dist/server/runtime/http-server/clock-client-routes.js.map +0 -1
- package/dist/server/runtime/http-server/clock-daemon-inject-config.d.ts +0 -1
- package/dist/server/runtime/http-server/clock-daemon-inject-config.js.map +0 -1
- package/dist/server/runtime/http-server/clock-daemon-log-throttle.d.ts +0 -12
- package/dist/server/runtime/http-server/clock-daemon-log-throttle.js +0 -56
- package/dist/server/runtime/http-server/clock-daemon-log-throttle.js.map +0 -1
- package/dist/server/runtime/http-server/http-server-clock-daemon.d.ts +0 -5
- package/dist/server/runtime/http-server/http-server-clock-daemon.js +0 -255
- package/dist/server/runtime/http-server/http-server-clock-daemon.js.map +0 -1
- package/dist/utils/clock-client-token.d.ts +0 -3
- package/dist/utils/clock-client-token.js +0 -54
- package/dist/utils/clock-client-token.js.map +0 -1
|
@@ -88,29 +88,29 @@ async function callJson(ctx, url, method, body) {
|
|
|
88
88
|
}
|
|
89
89
|
return { ok: response.ok, status: response.status, data };
|
|
90
90
|
}
|
|
91
|
-
export function
|
|
91
|
+
export function createSessionAdminCommand(program, ctx) {
|
|
92
92
|
program
|
|
93
|
-
.command('
|
|
94
|
-
.description('Manage
|
|
93
|
+
.command('session-admin')
|
|
94
|
+
.description('Manage session schedules and tmux/session bindings (list + CRUD + cleanup)')
|
|
95
95
|
.option('--port <port>', 'RouteCodex server port')
|
|
96
96
|
.option('--host <host>', 'RouteCodex server host')
|
|
97
97
|
.option('--url <url>', 'RouteCodex base URL')
|
|
98
98
|
.option('-c, --config <config>', 'RouteCodex configuration file path')
|
|
99
|
-
.option('--session-id <sessionId>', 'Conversation/session id for
|
|
99
|
+
.option('--session-id <sessionId>', 'Conversation/session id for session task CRUD')
|
|
100
100
|
.option('--task-id <taskId>', 'Task id for update/delete')
|
|
101
101
|
.option('--due-at <dueAt>', 'ISO8601 due time for create/update')
|
|
102
102
|
.option('--task <task>', 'Task text for create/update')
|
|
103
103
|
.option('--recurrence <kind>', 'Recurrence kind: daily|weekly|interval')
|
|
104
104
|
.option('--every-minutes <minutes>', 'everyMinutes for interval recurrence')
|
|
105
105
|
.option('--max-runs <count>', 'maxRuns for recurrence')
|
|
106
|
-
.option('--list', 'List
|
|
107
|
-
.option('--create', 'Create
|
|
108
|
-
.option('--update', 'Update
|
|
109
|
-
.option('--delete', 'Delete one
|
|
106
|
+
.option('--list', 'List session schedules/tasks', false)
|
|
107
|
+
.option('--create', 'Create session task', false)
|
|
108
|
+
.option('--update', 'Update session task', false)
|
|
109
|
+
.option('--delete', 'Delete one session task', false)
|
|
110
110
|
.option('--clear', 'Clear all tasks in a session', false)
|
|
111
111
|
.option('--cleanup-dead-tmux', 'Cleanup daemons whose tmux session is gone', false)
|
|
112
112
|
.option('--unbind-session <conversationSessionId>', 'Unbind conversation session mapping manually')
|
|
113
|
-
.option('--clear-tasks', 'With --unbind-session, clear its
|
|
113
|
+
.option('--clear-tasks', 'With --unbind-session, clear its session tasks too', false)
|
|
114
114
|
.option('--json', 'Print JSON output', false)
|
|
115
115
|
.action(async (options) => {
|
|
116
116
|
try {
|
|
@@ -125,7 +125,7 @@ export function createClockAdminCommand(program, ctx) {
|
|
|
125
125
|
}
|
|
126
126
|
};
|
|
127
127
|
if (options.cleanupDeadTmux) {
|
|
128
|
-
const result = await callJson(ctx, `${baseUrl}/daemon/
|
|
128
|
+
const result = await callJson(ctx, `${baseUrl}/daemon/session/cleanup`, 'POST', { mode: 'dead_tmux' });
|
|
129
129
|
if (!result.ok) {
|
|
130
130
|
throw new Error(`cleanup-dead-tmux failed (${result.status})`);
|
|
131
131
|
}
|
|
@@ -133,7 +133,7 @@ export function createClockAdminCommand(program, ctx) {
|
|
|
133
133
|
return;
|
|
134
134
|
}
|
|
135
135
|
if (typeof options.unbindSession === 'string' && options.unbindSession.trim()) {
|
|
136
|
-
const result = await callJson(ctx, `${baseUrl}/daemon/
|
|
136
|
+
const result = await callJson(ctx, `${baseUrl}/daemon/session/cleanup`, 'POST', {
|
|
137
137
|
mode: 'unbind',
|
|
138
138
|
conversationSessionId: options.unbindSession.trim(),
|
|
139
139
|
clearTasks: Boolean(options.clearTasks)
|
|
@@ -160,7 +160,7 @@ export function createClockAdminCommand(program, ctx) {
|
|
|
160
160
|
...(parseInteger(options.everyMinutes) ? { everyMinutes: parseInteger(options.everyMinutes) } : {})
|
|
161
161
|
};
|
|
162
162
|
}
|
|
163
|
-
const result = await callJson(ctx, `${baseUrl}/daemon/
|
|
163
|
+
const result = await callJson(ctx, `${baseUrl}/daemon/session/tasks`, 'POST', payload);
|
|
164
164
|
if (!result.ok) {
|
|
165
165
|
throw new Error(`create failed (${result.status})`);
|
|
166
166
|
}
|
|
@@ -188,7 +188,7 @@ export function createClockAdminCommand(program, ctx) {
|
|
|
188
188
|
...(parseInteger(options.everyMinutes) ? { everyMinutes: parseInteger(options.everyMinutes) } : {})
|
|
189
189
|
};
|
|
190
190
|
}
|
|
191
|
-
const result = await callJson(ctx, `${baseUrl}/daemon/
|
|
191
|
+
const result = await callJson(ctx, `${baseUrl}/daemon/session/tasks`, 'PATCH', { sessionId, taskId, patch });
|
|
192
192
|
if (!result.ok) {
|
|
193
193
|
throw new Error(`update failed (${result.status})`);
|
|
194
194
|
}
|
|
@@ -204,7 +204,7 @@ export function createClockAdminCommand(program, ctx) {
|
|
|
204
204
|
if (options.delete && !taskId) {
|
|
205
205
|
throw new Error('--delete requires --task-id (or use --clear)');
|
|
206
206
|
}
|
|
207
|
-
const result = await callJson(ctx, `${baseUrl}/daemon/
|
|
207
|
+
const result = await callJson(ctx, `${baseUrl}/daemon/session/tasks`, 'DELETE', {
|
|
208
208
|
sessionId,
|
|
209
209
|
...(taskId ? { taskId } : {})
|
|
210
210
|
});
|
|
@@ -216,8 +216,8 @@ export function createClockAdminCommand(program, ctx) {
|
|
|
216
216
|
}
|
|
217
217
|
const sessionId = typeof options.sessionId === 'string' && options.sessionId.trim() ? options.sessionId.trim() : undefined;
|
|
218
218
|
const listUrl = sessionId
|
|
219
|
-
? `${baseUrl}/daemon/
|
|
220
|
-
: `${baseUrl}/daemon/
|
|
219
|
+
? `${baseUrl}/daemon/session/tasks?sessionId=${encodeURIComponent(sessionId)}`
|
|
220
|
+
: `${baseUrl}/daemon/session/tasks`;
|
|
221
221
|
const response = await ctx.fetch(listUrl);
|
|
222
222
|
const data = await response.json().catch(() => ({}));
|
|
223
223
|
if (!response.ok) {
|
|
@@ -231,4 +231,4 @@ export function createClockAdminCommand(program, ctx) {
|
|
|
231
231
|
}
|
|
232
232
|
});
|
|
233
233
|
}
|
|
234
|
-
//# sourceMappingURL=
|
|
234
|
+
//# sourceMappingURL=session-admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-admin.js","sourceRoot":"","sources":["../../../src/cli/commands/session-admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ type LoggerLike = {
|
|
|
6
6
|
success: (msg: string) => void;
|
|
7
7
|
error: (msg: string) => void;
|
|
8
8
|
};
|
|
9
|
-
export type
|
|
9
|
+
export type SessionInjectCommandContext = {
|
|
10
10
|
isDevPackage: boolean;
|
|
11
11
|
defaultDevPort: number;
|
|
12
12
|
logger: LoggerLike;
|
|
@@ -16,5 +16,5 @@ export type TmuxInjectCommandContext = {
|
|
|
16
16
|
env: NodeJS.ProcessEnv;
|
|
17
17
|
exit: (code: number) => never;
|
|
18
18
|
};
|
|
19
|
-
export declare function
|
|
19
|
+
export declare function createSessionInjectCommand(program: Command, ctx: SessionInjectCommandContext): void;
|
|
20
20
|
export {};
|
|
@@ -63,11 +63,11 @@ async function resolveBaseUrl(ctx, options) {
|
|
|
63
63
|
return `http://${host}:${Math.floor(port)}`;
|
|
64
64
|
}
|
|
65
65
|
async function fetchDaemonList(ctx, baseUrl) {
|
|
66
|
-
const url = `${baseUrl}/daemon/
|
|
66
|
+
const url = `${baseUrl}/daemon/session-client/list`;
|
|
67
67
|
const response = await ctx.fetch(url, { method: 'GET' });
|
|
68
68
|
if (!response.ok) {
|
|
69
69
|
const text = await response.text().catch(() => String(response.status));
|
|
70
|
-
throw new Error(`Failed to list
|
|
70
|
+
throw new Error(`Failed to list session daemons (${response.status}): ${text}`);
|
|
71
71
|
}
|
|
72
72
|
const data = (await response.json().catch(() => null));
|
|
73
73
|
const records = Array.isArray(data?.records) ? data?.records : [];
|
|
@@ -104,7 +104,7 @@ function resolveTargetTmuxSessionId(records, options) {
|
|
|
104
104
|
return target;
|
|
105
105
|
}
|
|
106
106
|
if (!withSession.length) {
|
|
107
|
-
throw new Error('No available
|
|
107
|
+
throw new Error('No available session daemon tmux session. Start rcc codex/claude first.');
|
|
108
108
|
}
|
|
109
109
|
throw new Error('Multiple daemon tmux sessions found; specify --tmux-session-id/--session-id or --daemon-id (use --list).');
|
|
110
110
|
}
|
|
@@ -125,10 +125,10 @@ function printList(ctx, records, asJson) {
|
|
|
125
125
|
return;
|
|
126
126
|
}
|
|
127
127
|
if (!records.length) {
|
|
128
|
-
ctx.logger.info('No
|
|
128
|
+
ctx.logger.info('No session-client daemons registered.');
|
|
129
129
|
return;
|
|
130
130
|
}
|
|
131
|
-
ctx.logger.info(`Found ${records.length}
|
|
131
|
+
ctx.logger.info(`Found ${records.length} session-client daemon(s):`);
|
|
132
132
|
for (const rec of records) {
|
|
133
133
|
const daemonId = String(rec.daemonId || '-');
|
|
134
134
|
const tmuxSessionId = String(rec.tmuxSessionId || rec.sessionId || '-');
|
|
@@ -137,10 +137,10 @@ function printList(ctx, records, asJson) {
|
|
|
137
137
|
ctx.log(`- daemonId=${daemonId} tmuxSessionId=${tmuxSessionId} tmux=${tmuxTarget} heartbeat=${heartbeat}`);
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
|
-
export function
|
|
140
|
+
export function createSessionInjectCommand(program, ctx) {
|
|
141
141
|
program
|
|
142
|
-
.command('
|
|
143
|
-
.description('Inject text into tmux-backed codex/claude session via RouteCodex
|
|
142
|
+
.command('session-inject')
|
|
143
|
+
.description('Inject text into tmux-backed codex/claude session via RouteCodex session daemon')
|
|
144
144
|
.option('--port <port>', 'RouteCodex server port')
|
|
145
145
|
.option('--host <host>', 'RouteCodex server host')
|
|
146
146
|
.option('--url <url>', 'RouteCodex base URL, e.g. http://127.0.0.1:5520')
|
|
@@ -149,7 +149,7 @@ export function createTmuxInjectCommand(program, ctx) {
|
|
|
149
149
|
.option('--session-id <sessionId>', 'Alias of --tmux-session-id (deprecated)')
|
|
150
150
|
.option('--daemon-id <daemonId>', 'Target daemonId (tmux session auto-resolved)')
|
|
151
151
|
.option('--text <text>', 'Text to inject into target tmux pane and press Enter')
|
|
152
|
-
.option('--source <source>', 'Injection source tag', 'cli.
|
|
152
|
+
.option('--source <source>', 'Injection source tag', 'cli.session-inject')
|
|
153
153
|
.option('--request-id <requestId>', 'Optional request id for tracing')
|
|
154
154
|
.option('--list', 'List available daemon targets only')
|
|
155
155
|
.option('--json', 'Print result/list in JSON')
|
|
@@ -171,12 +171,12 @@ export function createTmuxInjectCommand(program, ctx) {
|
|
|
171
171
|
text,
|
|
172
172
|
tmuxSessionId,
|
|
173
173
|
sessionId: tmuxSessionId,
|
|
174
|
-
source: typeof options.source === 'string' && options.source.trim() ? options.source.trim() : 'cli.
|
|
174
|
+
source: typeof options.source === 'string' && options.source.trim() ? options.source.trim() : 'cli.session-inject'
|
|
175
175
|
};
|
|
176
176
|
if (typeof options.requestId === 'string' && options.requestId.trim()) {
|
|
177
177
|
payload.requestId = options.requestId.trim();
|
|
178
178
|
}
|
|
179
|
-
const injectUrl = `${baseUrl}/daemon/
|
|
179
|
+
const injectUrl = `${baseUrl}/daemon/session-client/inject`;
|
|
180
180
|
const response = await ctx.fetch(injectUrl, {
|
|
181
181
|
method: 'POST',
|
|
182
182
|
headers: { 'content-type': 'application/json' },
|
|
@@ -209,4 +209,4 @@ export function createTmuxInjectCommand(program, ctx) {
|
|
|
209
209
|
}
|
|
210
210
|
});
|
|
211
211
|
}
|
|
212
|
-
//# sourceMappingURL=
|
|
212
|
+
//# sourceMappingURL=session-inject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-inject.js","sourceRoot":"","sources":["../../../src/cli/commands/session-inject.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import type { ChildProcess, SpawnOptions } from 'node:child_process';
|
|
4
|
+
import type { GuardianLifecycleEvent, GuardianRegistration } from '../guardian/types.js';
|
|
4
5
|
export type Spinner = {
|
|
5
6
|
start(text?: string): Spinner;
|
|
6
7
|
succeed(text?: string): void;
|
|
@@ -60,6 +61,9 @@ export type StartCommandContext = {
|
|
|
60
61
|
resolveServerEntryPath: () => string;
|
|
61
62
|
spawn: (command: string, args: string[], options: SpawnOptions) => ChildProcess;
|
|
62
63
|
fetch: typeof fetch;
|
|
64
|
+
ensureGuardianDaemon?: () => Promise<void>;
|
|
65
|
+
registerGuardianProcess?: (registration: GuardianRegistration) => Promise<void>;
|
|
66
|
+
reportGuardianLifecycle?: (event: GuardianLifecycleEvent) => Promise<boolean>;
|
|
63
67
|
setupKeypress: (onInterrupt: () => void) => () => void;
|
|
64
68
|
waitForever: () => Promise<void>;
|
|
65
69
|
onSignal?: (signal: NodeJS.Signals, cb: () => void) => void;
|
|
@@ -49,6 +49,9 @@ function appendFlag(args, enabled, flag) {
|
|
|
49
49
|
}
|
|
50
50
|
export function buildStartCommandArgs(options, configPath, runMode) {
|
|
51
51
|
const args = ['start', '--config', configPath, '--mode', runMode];
|
|
52
|
+
if (typeof options.port === 'string' && options.port.trim()) {
|
|
53
|
+
args.push('--port', options.port.trim());
|
|
54
|
+
}
|
|
52
55
|
if (typeof options.logLevel === 'string' && options.logLevel.trim()) {
|
|
53
56
|
args.push('--log-level', options.logLevel.trim());
|
|
54
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-utils.js","sourceRoot":"","sources":["../../../src/cli/commands/start-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start-utils.js","sourceRoot":"","sources":["../../../src/cli/commands/start-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ export function createStartCommand(program, ctx) {
|
|
|
11
11
|
.command('start')
|
|
12
12
|
.description('Start the RouteCodex server')
|
|
13
13
|
.option('-c, --config <config>', 'Configuration file path')
|
|
14
|
-
.option('-p, --port <port>', 'RouteCodex server port (
|
|
14
|
+
.option('-p, --port <port>', 'RouteCodex server port (overrides env/config)')
|
|
15
15
|
.option('--mode <mode>', 'Run mode (router|analysis|server). analysis => router + force snapshots', 'router')
|
|
16
16
|
.option('--quota-routing <mode>', 'Quota routing admission control (on|off). off => do not remove providers from pool based on quota')
|
|
17
17
|
.option('--log-level <level>', 'Log level (debug, info, warn, error)', 'info')
|
|
@@ -164,14 +164,48 @@ export function createStartCommand(program, ctx) {
|
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
else {
|
|
167
|
-
const
|
|
168
|
-
if (!
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
167
|
+
const flagPort = typeof options.port === 'string' ? Number(options.port) : NaN;
|
|
168
|
+
if (!Number.isNaN(flagPort) && flagPort > 0) {
|
|
169
|
+
ctx.logger.info(`Using port ${flagPort} from --port flag [release package: rcc]`);
|
|
170
|
+
resolvedPort = flagPort;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
const port = (config?.httpserver?.port ?? config?.server?.port ?? config?.port);
|
|
174
|
+
if (!port || typeof port !== 'number' || port <= 0) {
|
|
175
|
+
spinner.fail('Invalid or missing port configuration');
|
|
176
|
+
ctx.logger.error('Please set a valid port (httpserver.port or top-level port) in your configuration');
|
|
177
|
+
ctx.exit(1);
|
|
178
|
+
}
|
|
179
|
+
resolvedPort = port;
|
|
172
180
|
}
|
|
173
|
-
resolvedPort = port;
|
|
174
181
|
}
|
|
182
|
+
await ctx.ensureGuardianDaemon?.();
|
|
183
|
+
await ctx.registerGuardianProcess?.({
|
|
184
|
+
source: 'start',
|
|
185
|
+
pid: process.pid,
|
|
186
|
+
ppid: process.ppid,
|
|
187
|
+
port: resolvedPort,
|
|
188
|
+
metadata: {
|
|
189
|
+
mode: runMode,
|
|
190
|
+
configPath
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
const applyLifecycleOrThrow = async (args) => {
|
|
194
|
+
const accepted = await ctx.reportGuardianLifecycle?.({
|
|
195
|
+
action: args.action,
|
|
196
|
+
source: 'cli.start',
|
|
197
|
+
actorPid: process.pid,
|
|
198
|
+
targetPid: args.targetPid && args.targetPid > 0 ? args.targetPid : undefined,
|
|
199
|
+
signal: args.signal,
|
|
200
|
+
metadata: {
|
|
201
|
+
port: resolvedPort,
|
|
202
|
+
...(args.metadata || {})
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
if (ctx.reportGuardianLifecycle && accepted !== true) {
|
|
206
|
+
throw new Error(`guardian lifecycle apply rejected (${args.action})`);
|
|
207
|
+
}
|
|
208
|
+
};
|
|
175
209
|
// Ensure port state aligns with requested behavior.
|
|
176
210
|
// Default behavior is takeover/restart; pass --no-restart for legacy non-disruptive mode.
|
|
177
211
|
const shouldRestart = options.restart !== false || options.exclusive === true;
|
|
@@ -209,10 +243,15 @@ export function createStartCommand(program, ctx) {
|
|
|
209
243
|
if (ctx.isDevPackage) {
|
|
210
244
|
env.ROUTECODEX_PORT = String(resolvedPort);
|
|
211
245
|
}
|
|
246
|
+
const bindServerToParent = parseBoolish(ctx.env.ROUTECODEX_SERVER_PARENT_GUARD ?? ctx.env.RCC_SERVER_PARENT_GUARD) ?? false;
|
|
212
247
|
const childProcessEnv = {
|
|
213
248
|
...env,
|
|
214
|
-
|
|
215
|
-
|
|
249
|
+
...(bindServerToParent
|
|
250
|
+
? {
|
|
251
|
+
ROUTECODEX_EXPECT_PARENT_PID: String(process.pid),
|
|
252
|
+
RCC_EXPECT_PARENT_PID: String(process.pid)
|
|
253
|
+
}
|
|
254
|
+
: {})
|
|
216
255
|
};
|
|
217
256
|
const args = [serverEntry, modulesConfigPath];
|
|
218
257
|
const routeCodexHome = pathImpl.join(home(), '.routecodex');
|
|
@@ -309,6 +348,9 @@ export function createStartCommand(program, ctx) {
|
|
|
309
348
|
resolve({ code: 1, signal: null });
|
|
310
349
|
});
|
|
311
350
|
});
|
|
351
|
+
const codeLabel = typeof exitInfo.code === 'number' && Number.isFinite(exitInfo.code) ? String(exitInfo.code) : 'n/a';
|
|
352
|
+
const signalLabel = exitInfo.signal || 'none';
|
|
353
|
+
ctx.logger.info(`[client-exit] RouteCodex exited (code=${codeLabel}, signal=${signalLabel})`);
|
|
312
354
|
const stopIntent = consumeStopIntent();
|
|
313
355
|
if (stopIntent.matched) {
|
|
314
356
|
logProcessLifecycleSync({
|
|
@@ -407,77 +449,82 @@ export function createStartCommand(program, ctx) {
|
|
|
407
449
|
ctx.logger.info('Press Ctrl+C to stop the server');
|
|
408
450
|
const shutdown = async (sig) => {
|
|
409
451
|
try {
|
|
410
|
-
await
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
logProcessLifecycleSync({
|
|
418
|
-
event: 'self_termination',
|
|
419
|
-
source: 'cli.start.shutdown',
|
|
420
|
-
details: {
|
|
421
|
-
reason: 'self_kill_guard',
|
|
422
|
-
signal: sig,
|
|
423
|
-
childPid: childProc.pid,
|
|
424
|
-
parentPid: process.pid,
|
|
425
|
-
result: 'blocked'
|
|
426
|
-
}
|
|
427
|
-
});
|
|
428
|
-
}
|
|
429
|
-
childProc.kill(sig);
|
|
430
|
-
}
|
|
431
|
-
catch {
|
|
432
|
-
/* ignore */
|
|
433
|
-
}
|
|
434
|
-
// Avoid process-group signals here; only target the known child pid,
|
|
435
|
-
// then rely on managed pid discovery + graceful/force cleanup below.
|
|
436
|
-
const deadline = Date.now() + 3500;
|
|
437
|
-
while (Date.now() < deadline) {
|
|
438
|
-
if (ctx.findListeningPids(resolvedPort).length === 0) {
|
|
439
|
-
break;
|
|
452
|
+
await applyLifecycleOrThrow({
|
|
453
|
+
action: 'server_shutdown_requested',
|
|
454
|
+
signal: sig,
|
|
455
|
+
targetPid: childProc.pid ?? null
|
|
456
|
+
});
|
|
457
|
+
try {
|
|
458
|
+
await ctx.fetch(`${HTTP_PROTOCOLS.HTTP}${LOCAL_HOSTS.IPV4}:${resolvedPort}${API_PATHS.SHUTDOWN}`, { method: 'POST' }).catch(() => { });
|
|
440
459
|
}
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
const remain = ctx.findListeningPids(resolvedPort);
|
|
444
|
-
if (remain.length) {
|
|
445
|
-
for (const pid of remain) {
|
|
446
|
-
ctx.killPidBestEffort(pid, { force: false });
|
|
460
|
+
catch {
|
|
461
|
+
/* ignore */
|
|
447
462
|
}
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
463
|
+
try {
|
|
464
|
+
if (childProc.pid && childProc.pid === process.pid) {
|
|
465
|
+
logProcessLifecycleSync({
|
|
466
|
+
event: 'self_termination',
|
|
467
|
+
source: 'cli.start.shutdown',
|
|
468
|
+
details: {
|
|
469
|
+
reason: 'self_kill_guard',
|
|
470
|
+
signal: sig,
|
|
471
|
+
childPid: childProc.pid,
|
|
472
|
+
parentPid: process.pid,
|
|
473
|
+
result: 'blocked'
|
|
474
|
+
}
|
|
475
|
+
});
|
|
452
476
|
}
|
|
453
|
-
|
|
477
|
+
childProc.kill(sig);
|
|
454
478
|
}
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
if (still.length) {
|
|
458
|
-
for (const pid of still) {
|
|
459
|
-
ctx.killPidBestEffort(pid, { force: true });
|
|
479
|
+
catch {
|
|
480
|
+
/* ignore */
|
|
460
481
|
}
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
482
|
+
const childExited = await new Promise((resolve) => {
|
|
483
|
+
let settled = false;
|
|
484
|
+
const complete = (value) => {
|
|
485
|
+
if (settled) {
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
settled = true;
|
|
489
|
+
resolve(value);
|
|
490
|
+
};
|
|
491
|
+
childProc.once('exit', () => complete(true));
|
|
492
|
+
setTimeout(() => complete(false), 3500);
|
|
493
|
+
});
|
|
494
|
+
logProcessLifecycleSync({
|
|
495
|
+
event: 'self_termination',
|
|
496
|
+
source: 'cli.start.shutdown',
|
|
497
|
+
details: {
|
|
498
|
+
reason: 'shutdown_sequence_completed',
|
|
499
|
+
signal: sig,
|
|
500
|
+
targetPort: resolvedPort,
|
|
501
|
+
childPid: childProc.pid ?? null,
|
|
502
|
+
childExited
|
|
503
|
+
}
|
|
504
|
+
});
|
|
505
|
+
await applyLifecycleOrThrow({
|
|
506
|
+
action: 'server_shutdown_complete',
|
|
467
507
|
signal: sig,
|
|
468
|
-
|
|
469
|
-
|
|
508
|
+
targetPid: childProc.pid ?? null,
|
|
509
|
+
metadata: {
|
|
510
|
+
childExited
|
|
511
|
+
}
|
|
512
|
+
});
|
|
513
|
+
if (ctx.isDevPackage) {
|
|
514
|
+
await ctx.stopTokenDaemonIfRunning?.();
|
|
515
|
+
}
|
|
516
|
+
closeServerLogStream();
|
|
517
|
+
try {
|
|
518
|
+
ctx.exit(0);
|
|
519
|
+
}
|
|
520
|
+
catch {
|
|
521
|
+
/* ignore */
|
|
470
522
|
}
|
|
471
|
-
});
|
|
472
|
-
if (ctx.isDevPackage) {
|
|
473
|
-
await ctx.stopTokenDaemonIfRunning?.();
|
|
474
|
-
}
|
|
475
|
-
closeServerLogStream();
|
|
476
|
-
try {
|
|
477
|
-
ctx.exit(0);
|
|
478
523
|
}
|
|
479
|
-
catch {
|
|
480
|
-
|
|
524
|
+
catch (error) {
|
|
525
|
+
closeServerLogStream();
|
|
526
|
+
ctx.logger.error(error instanceof Error ? error.message : String(error));
|
|
527
|
+
ctx.exit(1);
|
|
481
528
|
}
|
|
482
529
|
};
|
|
483
530
|
const onSignal = ctx.onSignal ?? ((sig, cb) => process.on(sig, cb));
|
|
@@ -490,6 +537,9 @@ export function createStartCommand(program, ctx) {
|
|
|
490
537
|
cleanupKeypress();
|
|
491
538
|
}
|
|
492
539
|
catch { /* ignore */ }
|
|
540
|
+
const codeLabel = typeof code === 'number' && Number.isFinite(code) ? String(code) : 'n/a';
|
|
541
|
+
const signalLabel = signal || 'none';
|
|
542
|
+
ctx.logger.info(`[client-exit] RouteCodex exited (code=${codeLabel}, signal=${signalLabel})`);
|
|
493
543
|
if (signal) {
|
|
494
544
|
ctx.exit(0);
|
|
495
545
|
}
|