@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
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isTmuxSessionAlive
|
|
3
|
-
import { terminateManagedClientProcess } from './managed-process-probe.js';
|
|
1
|
+
import { getSessionClientRegistry } from './session-client-registry.js';
|
|
2
|
+
import { isTmuxSessionAlive } from './tmux-session-probe.js';
|
|
4
3
|
import { logProcessLifecycle } from '../../../utils/process-lifecycle-logger.js';
|
|
5
4
|
const DEFAULT_REAPER_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes
|
|
6
5
|
const DEFAULT_GRACE_PERIOD_MS = 30 * 1000; // 30 seconds grace before killing
|
|
7
6
|
function readReaperIntervalFromEnv() {
|
|
8
|
-
const raw = String(process.env.
|
|
9
|
-
?? process.env.
|
|
7
|
+
const raw = String(process.env.ROUTECODEX_SESSION_REAPER_INTERVAL_MS
|
|
8
|
+
?? process.env.RCC_SESSION_REAPER_INTERVAL_MS
|
|
10
9
|
?? '').trim();
|
|
11
10
|
const parsed = Number(raw);
|
|
12
11
|
if (Number.isFinite(parsed) && parsed >= 1000) {
|
|
@@ -15,8 +14,8 @@ function readReaperIntervalFromEnv() {
|
|
|
15
14
|
return DEFAULT_REAPER_INTERVAL_MS;
|
|
16
15
|
}
|
|
17
16
|
function readGracePeriodFromEnv() {
|
|
18
|
-
const raw = String(process.env.
|
|
19
|
-
?? process.env.
|
|
17
|
+
const raw = String(process.env.ROUTECODEX_SESSION_REAPER_GRACE_MS
|
|
18
|
+
?? process.env.RCC_SESSION_REAPER_GRACE_MS
|
|
20
19
|
?? '').trim();
|
|
21
20
|
const parsed = Number(raw);
|
|
22
21
|
if (Number.isFinite(parsed) && parsed >= 0) {
|
|
@@ -24,24 +23,9 @@ function readGracePeriodFromEnv() {
|
|
|
24
23
|
}
|
|
25
24
|
return DEFAULT_GRACE_PERIOD_MS;
|
|
26
25
|
}
|
|
27
|
-
function isManagedTerminationEnabled() {
|
|
28
|
-
const raw = String(process.env.ROUTECODEX_CLOCK_REAPER_TERMINATE_MANAGED
|
|
29
|
-
?? process.env.RCC_CLOCK_REAPER_TERMINATE_MANAGED
|
|
30
|
-
?? '').trim().toLowerCase();
|
|
31
|
-
if (!raw) {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
if (raw === '1' || raw === 'true' || raw === 'yes' || raw === 'on') {
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
if (raw === '0' || raw === 'false' || raw === 'no' || raw === 'off') {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
26
|
function shouldLogStaleOnlyCleanup() {
|
|
43
|
-
const raw = String(process.env.
|
|
44
|
-
?? process.env.
|
|
27
|
+
const raw = String(process.env.ROUTECODEX_SESSION_REAPER_LOG_STALE_ONLY
|
|
28
|
+
?? process.env.RCC_SESSION_REAPER_LOG_STALE_ONLY
|
|
45
29
|
?? '').trim().toLowerCase();
|
|
46
30
|
if (!raw) {
|
|
47
31
|
return false;
|
|
@@ -54,7 +38,7 @@ function shouldLogStaleOnlyCleanup() {
|
|
|
54
38
|
}
|
|
55
39
|
return false;
|
|
56
40
|
}
|
|
57
|
-
export class
|
|
41
|
+
export class SessionReaper {
|
|
58
42
|
timer = null;
|
|
59
43
|
intervalMs;
|
|
60
44
|
gracePeriodMs;
|
|
@@ -63,7 +47,7 @@ export class ClockReaper {
|
|
|
63
47
|
constructor(config) {
|
|
64
48
|
this.intervalMs = config?.intervalMs ?? readReaperIntervalFromEnv();
|
|
65
49
|
this.gracePeriodMs = config?.gracePeriodMs ?? readGracePeriodFromEnv();
|
|
66
|
-
this.enableManagedTermination =
|
|
50
|
+
this.enableManagedTermination = false;
|
|
67
51
|
this.logStaleOnlyCleanup = shouldLogStaleOnlyCleanup();
|
|
68
52
|
}
|
|
69
53
|
start() {
|
|
@@ -73,8 +57,8 @@ export class ClockReaper {
|
|
|
73
57
|
this.timer = setInterval(() => {
|
|
74
58
|
void this.runCleanup().catch((err) => {
|
|
75
59
|
logProcessLifecycle({
|
|
76
|
-
event: '
|
|
77
|
-
source: '
|
|
60
|
+
event: 'session_reaper_error',
|
|
61
|
+
source: 'session-client-reaper',
|
|
78
62
|
details: { error: err instanceof Error ? err.message : String(err) }
|
|
79
63
|
});
|
|
80
64
|
});
|
|
@@ -84,8 +68,8 @@ export class ClockReaper {
|
|
|
84
68
|
this.timer.unref();
|
|
85
69
|
}
|
|
86
70
|
logProcessLifecycle({
|
|
87
|
-
event: '
|
|
88
|
-
source: '
|
|
71
|
+
event: 'session_reaper_started',
|
|
72
|
+
source: 'session-client-reaper',
|
|
89
73
|
details: {
|
|
90
74
|
intervalMs: this.intervalMs,
|
|
91
75
|
gracePeriodMs: this.gracePeriodMs,
|
|
@@ -100,25 +84,18 @@ export class ClockReaper {
|
|
|
100
84
|
clearInterval(this.timer);
|
|
101
85
|
this.timer = null;
|
|
102
86
|
logProcessLifecycle({
|
|
103
|
-
event: '
|
|
104
|
-
source: '
|
|
87
|
+
event: 'session_reaper_stopped',
|
|
88
|
+
source: 'session-client-reaper',
|
|
105
89
|
details: {}
|
|
106
90
|
});
|
|
107
91
|
}
|
|
108
92
|
}
|
|
109
93
|
async runCleanup() {
|
|
110
|
-
const registry =
|
|
94
|
+
const registry = getSessionClientRegistry();
|
|
111
95
|
const now = Date.now();
|
|
112
|
-
const terminateHandlers = this.enableManagedTermination
|
|
113
|
-
? {
|
|
114
|
-
terminateManagedTmuxSession: (tmuxSessionId) => killManagedTmuxSession(tmuxSessionId),
|
|
115
|
-
terminateManagedClientProcess: (processInfo) => terminateManagedClientProcess(processInfo)
|
|
116
|
-
}
|
|
117
|
-
: {};
|
|
118
96
|
// 先清理僵死 tmux 会话
|
|
119
97
|
const deadTmuxResult = registry.cleanupDeadTmuxSessions({
|
|
120
|
-
isTmuxSessionAlive
|
|
121
|
-
...terminateHandlers
|
|
98
|
+
isTmuxSessionAlive
|
|
122
99
|
});
|
|
123
100
|
// 再清理心跳过期的客户端(但不终止进程,仅移除记录)
|
|
124
101
|
const staleResult = registry.cleanupStaleHeartbeats({
|
|
@@ -142,8 +119,8 @@ export class ClockReaper {
|
|
|
142
119
|
return;
|
|
143
120
|
}
|
|
144
121
|
logProcessLifecycle({
|
|
145
|
-
event: '
|
|
146
|
-
source: '
|
|
122
|
+
event: 'session_reaper_cleanup',
|
|
123
|
+
source: 'session-client-reaper',
|
|
147
124
|
details: {
|
|
148
125
|
result: hasStaleOnlyCleanup ? 'stale_only_cleanup' : 'cleanup_performed',
|
|
149
126
|
deadTmuxRemoved: deadTmuxResult.removedTmuxSessionIds.length,
|
|
@@ -169,20 +146,20 @@ export class ClockReaper {
|
|
|
169
146
|
}
|
|
170
147
|
// 单例
|
|
171
148
|
let globalReaper = null;
|
|
172
|
-
export function
|
|
149
|
+
export function getSessionReaper(config) {
|
|
173
150
|
if (!globalReaper) {
|
|
174
|
-
globalReaper = new
|
|
151
|
+
globalReaper = new SessionReaper(config);
|
|
175
152
|
}
|
|
176
153
|
return globalReaper;
|
|
177
154
|
}
|
|
178
|
-
export function
|
|
179
|
-
const reaper =
|
|
155
|
+
export function startSessionReaper(config) {
|
|
156
|
+
const reaper = getSessionReaper(config);
|
|
180
157
|
reaper.start();
|
|
181
158
|
}
|
|
182
|
-
export function
|
|
159
|
+
export function stopSessionReaper() {
|
|
183
160
|
if (globalReaper) {
|
|
184
161
|
globalReaper.stop();
|
|
185
162
|
globalReaper = null;
|
|
186
163
|
}
|
|
187
164
|
}
|
|
188
|
-
//# sourceMappingURL=
|
|
165
|
+
//# sourceMappingURL=session-client-reaper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-client-reaper.js","sourceRoot":"","sources":["../../../../src/server/runtime/http-server/session-client-reaper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type
|
|
1
|
+
export type SessionClientRecord = {
|
|
2
2
|
daemonId: string;
|
|
3
3
|
tmuxSessionId?: string;
|
|
4
4
|
sessionId?: string;
|
|
@@ -16,27 +16,30 @@ export type ClockClientRecord = {
|
|
|
16
16
|
lastInjectAtMs?: number;
|
|
17
17
|
lastError?: string;
|
|
18
18
|
};
|
|
19
|
-
export type
|
|
19
|
+
export type SessionClientInjectArgs = {
|
|
20
20
|
tmuxSessionId?: string;
|
|
21
|
+
tmuxTarget?: string;
|
|
21
22
|
sessionId?: string;
|
|
22
23
|
workdir?: string;
|
|
24
|
+
clientType?: string;
|
|
25
|
+
tmuxOnly?: boolean;
|
|
23
26
|
text: string;
|
|
24
27
|
requestId?: string;
|
|
25
28
|
source?: string;
|
|
26
29
|
};
|
|
27
|
-
export type
|
|
30
|
+
export type SessionClientInjectResult = {
|
|
28
31
|
ok: boolean;
|
|
29
32
|
daemonId?: string;
|
|
30
33
|
reason?: string;
|
|
31
34
|
};
|
|
32
|
-
export type
|
|
35
|
+
export type SessionConversationBindArgs = {
|
|
33
36
|
conversationSessionId: string;
|
|
34
37
|
tmuxSessionId?: string;
|
|
35
38
|
daemonId?: string;
|
|
36
39
|
clientType?: string;
|
|
37
40
|
workdir?: string;
|
|
38
41
|
};
|
|
39
|
-
export type
|
|
42
|
+
export type SessionCleanupResult = {
|
|
40
43
|
removedDaemonIds: string[];
|
|
41
44
|
removedTmuxSessionIds: string[];
|
|
42
45
|
removedConversationSessionIds: string[];
|
|
@@ -47,7 +50,7 @@ export type ClockCleanupResult = {
|
|
|
47
50
|
failedKillManagedClientPids: number[];
|
|
48
51
|
skippedKillManagedClientPids: number[];
|
|
49
52
|
};
|
|
50
|
-
export type
|
|
53
|
+
export type SessionStaleCleanupResult = SessionCleanupResult & {
|
|
51
54
|
staleAfterMs: number;
|
|
52
55
|
};
|
|
53
56
|
type ManagedProcessInfo = {
|
|
@@ -58,6 +61,7 @@ type ManagedProcessInfo = {
|
|
|
58
61
|
};
|
|
59
62
|
export declare function normalizeString(value: unknown): string | undefined;
|
|
60
63
|
export declare function normalizeWorkdir(value: unknown): string | undefined;
|
|
64
|
+
export declare function isWorkdirCompatible(recordWorkdirRaw: unknown, hintWorkdirRaw: unknown): boolean;
|
|
61
65
|
export declare function resolveHeartbeatTtlMs(): number;
|
|
62
66
|
export declare function resolveManagedTmuxSessionState(args: {
|
|
63
67
|
previousManagedTmuxSession?: boolean;
|
|
@@ -70,18 +74,18 @@ export declare function resolveManagedClientProcessState(args: {
|
|
|
70
74
|
export declare function normalizePositiveInt(value: unknown): number | undefined;
|
|
71
75
|
export declare function removeConversationMappingsByTmuxSession(conversationToTmuxSession: Map<string, string>, tmuxSessionIdRaw: string): string[];
|
|
72
76
|
export declare function cleanupStaleHeartbeatsFromRegistry(args: {
|
|
73
|
-
records: Map<string,
|
|
77
|
+
records: Map<string, SessionClientRecord>;
|
|
74
78
|
conversationToTmuxSession: Map<string, string>;
|
|
75
79
|
nowMs?: number;
|
|
76
80
|
staleAfterMs?: number;
|
|
77
81
|
terminateManagedTmuxSession?: (tmuxSessionId: string) => boolean;
|
|
78
82
|
terminateManagedClientProcess?: (processInfo: ManagedProcessInfo) => boolean;
|
|
79
|
-
}):
|
|
83
|
+
}): SessionStaleCleanupResult;
|
|
80
84
|
export declare function cleanupDeadTmuxSessionsFromRegistry(args: {
|
|
81
|
-
records: Map<string,
|
|
85
|
+
records: Map<string, SessionClientRecord>;
|
|
82
86
|
conversationToTmuxSession: Map<string, string>;
|
|
83
87
|
isTmuxSessionAlive: (tmuxSessionId: string) => boolean;
|
|
84
88
|
terminateManagedTmuxSession?: (tmuxSessionId: string) => boolean;
|
|
85
89
|
terminateManagedClientProcess?: (processInfo: ManagedProcessInfo) => boolean;
|
|
86
|
-
}):
|
|
90
|
+
}): SessionCleanupResult;
|
|
87
91
|
export {};
|
|
@@ -24,9 +24,30 @@ export function normalizeWorkdir(value) {
|
|
|
24
24
|
}
|
|
25
25
|
return resolved;
|
|
26
26
|
}
|
|
27
|
+
function isSameOrDescendantPath(parentDir, childDir) {
|
|
28
|
+
const relative = path.relative(parentDir, childDir);
|
|
29
|
+
if (!relative) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
if (relative === '..') {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (relative.startsWith(`..${path.sep}`)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return !path.isAbsolute(relative);
|
|
39
|
+
}
|
|
40
|
+
export function isWorkdirCompatible(recordWorkdirRaw, hintWorkdirRaw) {
|
|
41
|
+
const recordWorkdir = normalizeWorkdir(recordWorkdirRaw);
|
|
42
|
+
const hintWorkdir = normalizeWorkdir(hintWorkdirRaw);
|
|
43
|
+
if (!recordWorkdir || !hintWorkdir) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return isSameOrDescendantPath(recordWorkdir, hintWorkdir) || isSameOrDescendantPath(hintWorkdir, recordWorkdir);
|
|
47
|
+
}
|
|
27
48
|
export function resolveHeartbeatTtlMs() {
|
|
28
|
-
const raw = String(process.env.
|
|
29
|
-
|| process.env.
|
|
49
|
+
const raw = String(process.env.ROUTECODEX_SESSION_CLIENT_HEARTBEAT_TTL_MS
|
|
50
|
+
|| process.env.RCC_SESSION_CLIENT_HEARTBEAT_TTL_MS
|
|
30
51
|
|| '').trim();
|
|
31
52
|
const parsed = raw ? Number.parseInt(raw, 10) : NaN;
|
|
32
53
|
if (Number.isFinite(parsed) && parsed >= 5_000) {
|
|
@@ -79,6 +100,22 @@ export function removeConversationMappingsByTmuxSession(conversationToTmuxSessio
|
|
|
79
100
|
}
|
|
80
101
|
return removed;
|
|
81
102
|
}
|
|
103
|
+
function hasOtherDaemonForTmuxSession(args) {
|
|
104
|
+
const targetTmuxSessionId = normalizeString(args.tmuxSessionId);
|
|
105
|
+
if (!targetTmuxSessionId) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
for (const [daemonId, record] of args.records.entries()) {
|
|
109
|
+
if (daemonId === args.daemonId) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
const recordTmuxSessionId = normalizeString(record.tmuxSessionId) ?? normalizeString(record.sessionId);
|
|
113
|
+
if (recordTmuxSessionId === targetTmuxSessionId) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
82
119
|
export function cleanupStaleHeartbeatsFromRegistry(args) {
|
|
83
120
|
const nowMs = Number.isFinite(args.nowMs) ? Math.floor(args.nowMs) : Date.now();
|
|
84
121
|
const staleAfterMs = Number.isFinite(args.staleAfterMs)
|
|
@@ -98,6 +135,9 @@ export function cleanupStaleHeartbeatsFromRegistry(args) {
|
|
|
98
135
|
continue;
|
|
99
136
|
}
|
|
100
137
|
const tmuxSessionId = normalizeString(record.tmuxSessionId) ?? normalizeString(record.sessionId);
|
|
138
|
+
const hasSharedTmuxPeer = tmuxSessionId
|
|
139
|
+
? hasOtherDaemonForTmuxSession({ records: args.records, daemonId, tmuxSessionId })
|
|
140
|
+
: false;
|
|
101
141
|
if (tmuxSessionId) {
|
|
102
142
|
// Guardrail: stale heartbeat cleanup must never terminate tmux sessions.
|
|
103
143
|
skippedKillTmuxSessionIds.push(tmuxSessionId);
|
|
@@ -114,16 +154,18 @@ export function cleanupStaleHeartbeatsFromRegistry(args) {
|
|
|
114
154
|
const conversationSessionIds = Array.isArray(record.conversationSessionIds)
|
|
115
155
|
? record.conversationSessionIds.filter((item) => normalizeString(item))
|
|
116
156
|
: [];
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
157
|
+
if (!hasSharedTmuxPeer) {
|
|
158
|
+
for (const conversationSessionId of conversationSessionIds) {
|
|
159
|
+
const mapped = args.conversationToTmuxSession.get(conversationSessionId);
|
|
160
|
+
if (mapped && (!tmuxSessionId || mapped === tmuxSessionId)) {
|
|
161
|
+
args.conversationToTmuxSession.delete(conversationSessionId);
|
|
162
|
+
removedConversationSessionIdsSet.add(conversationSessionId);
|
|
163
|
+
}
|
|
122
164
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
165
|
+
if (tmuxSessionId) {
|
|
166
|
+
for (const conversationSessionId of removeConversationMappingsByTmuxSession(args.conversationToTmuxSession, tmuxSessionId)) {
|
|
167
|
+
removedConversationSessionIdsSet.add(conversationSessionId);
|
|
168
|
+
}
|
|
127
169
|
}
|
|
128
170
|
}
|
|
129
171
|
args.records.delete(daemonId);
|
|
@@ -156,7 +198,21 @@ export function cleanupDeadTmuxSessionsFromRegistry(args) {
|
|
|
156
198
|
const killedProcessOnce = new Set();
|
|
157
199
|
const processKillOutcome = new Map();
|
|
158
200
|
for (const [daemonId, record] of args.records.entries()) {
|
|
201
|
+
const tmuxTarget = normalizeString(record.tmuxTarget);
|
|
202
|
+
// Process-managed records without tmux target are non-tmux clients.
|
|
203
|
+
// Skip dead-tmux cleanup for these records to avoid terminating
|
|
204
|
+
// foreground-managed client processes by mistake.
|
|
205
|
+
if (record.managedClientProcess && !record.managedTmuxSession && !tmuxTarget) {
|
|
206
|
+
const managedClientPid = normalizePositiveInt(record.managedClientPid);
|
|
207
|
+
if (managedClientPid) {
|
|
208
|
+
skippedKillManagedClientPids.push(managedClientPid);
|
|
209
|
+
}
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
159
212
|
const tmuxSessionId = normalizeString(record.tmuxSessionId) ?? normalizeString(record.sessionId);
|
|
213
|
+
const hasSharedTmuxPeer = tmuxSessionId
|
|
214
|
+
? hasOtherDaemonForTmuxSession({ records: args.records, daemonId, tmuxSessionId })
|
|
215
|
+
: false;
|
|
160
216
|
if (!tmuxSessionId) {
|
|
161
217
|
continue;
|
|
162
218
|
}
|
|
@@ -249,16 +305,18 @@ export function cleanupDeadTmuxSessionsFromRegistry(args) {
|
|
|
249
305
|
const conversationSessionIds = Array.isArray(record.conversationSessionIds)
|
|
250
306
|
? record.conversationSessionIds.filter((item) => normalizeString(item))
|
|
251
307
|
: [];
|
|
252
|
-
|
|
253
|
-
const
|
|
254
|
-
|
|
255
|
-
|
|
308
|
+
if (!hasSharedTmuxPeer) {
|
|
309
|
+
for (const conversationSessionId of conversationSessionIds) {
|
|
310
|
+
const mapped = args.conversationToTmuxSession.get(conversationSessionId);
|
|
311
|
+
if (mapped === tmuxSessionId) {
|
|
312
|
+
args.conversationToTmuxSession.delete(conversationSessionId);
|
|
313
|
+
removedConversationSessionIdsSet.add(conversationSessionId);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
for (const conversationSessionId of removeConversationMappingsByTmuxSession(args.conversationToTmuxSession, tmuxSessionId)) {
|
|
256
317
|
removedConversationSessionIdsSet.add(conversationSessionId);
|
|
257
318
|
}
|
|
258
319
|
}
|
|
259
|
-
for (const conversationSessionId of removeConversationMappingsByTmuxSession(args.conversationToTmuxSession, tmuxSessionId)) {
|
|
260
|
-
removedConversationSessionIdsSet.add(conversationSessionId);
|
|
261
|
-
}
|
|
262
320
|
args.records.delete(daemonId);
|
|
263
321
|
}
|
|
264
322
|
return {
|
|
@@ -273,4 +331,4 @@ export function cleanupDeadTmuxSessionsFromRegistry(args) {
|
|
|
273
331
|
skippedKillManagedClientPids
|
|
274
332
|
};
|
|
275
333
|
}
|
|
276
|
-
//# sourceMappingURL=
|
|
334
|
+
//# sourceMappingURL=session-client-registry-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-client-registry-utils.js","sourceRoot":"","sources":["../../../../src/server/runtime/http-server/session-client-registry-utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAsE7B,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,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,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,sBAAsB,CAAC,SAAiB,EAAE,QAAgB;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,gBAAyB,EAAE,cAAuB;IACpF,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,sBAAsB,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,sBAAsB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAClH,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,MAAM,GAAG,GAAG,MAAM,CAChB,OAAO,CAAC,GAAG,CAAC,0CAA0C;WACjD,OAAO,CAAC,GAAG,CAAC,mCAAmC;WAC/C,EAAE,CACR,CAAC,IAAI,EAAE,CAAC;IACT,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAG9C;IACC,IAAI,IAAI,CAAC,uBAAuB,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,uBAAuB,KAAK,KAAK,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,0BAA0B,KAAK,IAAI,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,IAGhD;IACC,IAAI,IAAI,CAAC,yBAAyB,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,yBAAyB,KAAK,KAAK,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,4BAA4B,KAAK,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,uCAAuC,CACrD,yBAA8C,EAC9C,gBAAwB;IAExB,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACxD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,IAAI,yBAAyB,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/F,IAAI,eAAe,CAAC,mBAAmB,CAAC,KAAK,aAAa,EAAE,CAAC;YAC3D,SAAS;QACX,CAAC;QACD,yBAAyB,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,4BAA4B,CAAC,IAIrC;IACC,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,MAAM,mBAAmB,GAAG,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvG,IAAI,mBAAmB,KAAK,mBAAmB,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,IAOlD;IACC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACpG,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAsB,CAAC;QAC/D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAsB,CAAC,CAAC;QACtD,CAAC,CAAC,qBAAqB,EAAE,CAAC;IAE5B,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,MAAM,qBAAqB,GAAa,EAAE,CAAC;IAC3C,MAAM,gCAAgC,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3D,MAAM,oBAAoB,GAAa,EAAE,CAAC;IAC1C,MAAM,wBAAwB,GAAa,EAAE,CAAC;IAC9C,MAAM,yBAAyB,GAAa,EAAE,CAAC;IAC/C,MAAM,uBAAuB,GAAa,EAAE,CAAC;IAC7C,MAAM,2BAA2B,GAAa,EAAE,CAAC;IACjD,MAAM,4BAA4B,GAAa,EAAE,CAAC;IAElD,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,KAAK,GAAG,MAAM,CAAC,iBAAiB,IAAI,YAAY,EAAE,CAAC;YACrD,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjG,MAAM,iBAAiB,GAAG,aAAa;YACrC,CAAC,CAAC,4BAA4B,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;YAClF,CAAC,CAAC,KAAK,CAAC;QACV,IAAI,aAAa,EAAE,CAAC;YAClB,yEAAyE;YACzE,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACvE,IAAI,gBAAgB,EAAE,CAAC;YACrB,oFAAoF;YACpF,4BAA4B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtD,CAAC;QAED,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,aAAa,EAAE,CAAC;YAClB,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;YACzE,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACvE,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,KAAK,MAAM,qBAAqB,IAAI,sBAAsB,EAAE,CAAC;gBAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACzE,IAAI,MAAM,IAAI,CAAC,CAAC,aAAa,IAAI,MAAM,KAAK,aAAa,CAAC,EAAE,CAAC;oBAC3D,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;oBAC7D,gCAAgC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YACD,IAAI,aAAa,EAAE,CAAC;gBAClB,KAAK,MAAM,qBAAqB,IAAI,uCAAuC,CAAC,IAAI,CAAC,yBAAyB,EAAE,aAAa,CAAC,EAAE,CAAC;oBAC3H,gCAAgC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,OAAO;QACL,YAAY;QACZ,gBAAgB;QAChB,qBAAqB;QACrB,6BAA6B,EAAE,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC;QAC3E,oBAAoB;QACpB,wBAAwB;QACxB,yBAAyB;QACzB,uBAAuB;QACvB,2BAA2B;QAC3B,4BAA4B;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,IAMnD;IACC,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,MAAM,qBAAqB,GAAa,EAAE,CAAC;IAC3C,MAAM,gCAAgC,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3D,MAAM,oBAAoB,GAAa,EAAE,CAAC;IAC1C,MAAM,wBAAwB,GAAa,EAAE,CAAC;IAC9C,MAAM,yBAAyB,GAAa,EAAE,CAAC;IAC/C,MAAM,uBAAuB,GAAa,EAAE,CAAC;IAC7C,MAAM,2BAA2B,GAAa,EAAE,CAAC;IACjD,MAAM,4BAA4B,GAAa,EAAE,CAAC;IAClD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAmB,CAAC;IACtD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAmB,CAAC;IAEtD,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACxD,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEtD,oEAAoE;QACpE,gEAAgE;QAChE,kDAAkD;QAClD,IAAI,MAAM,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7E,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACvE,IAAI,gBAAgB,EAAE,CAAC;gBACrB,4BAA4B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACtD,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjG,MAAM,iBAAiB,GAAG,aAAa;YACrC,CAAC,CAAC,4BAA4B,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;YAClF,CAAC,CAAC,KAAK,CAAC;QACV,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,IAAI,eAAe,GAAG,IAAI,CAAC;QAE3B,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC9B,IAAI,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBACzC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9C,IAAI,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,KAAK,EAAE,CAAC;oBACpD,eAAe,GAAG,KAAK,CAAC;gBAC1B,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,IAAI,CAAC,2BAA2B,KAAK,UAAU,EAAE,CAAC;gBAClE,IAAI,MAAM,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC,CAAC;gBACpE,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,GAAG,KAAK,CAAC;gBACjB,CAAC;gBACD,IAAI,MAAM,EAAE,CAAC;oBACX,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC7C,eAAe,GAAG,KAAK,CAAC;gBAC1B,CAAC;gBACD,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACrC,kBAAkB,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,oBAAoB,IAAI,gBAAgB,EAAE,CAAC;YACpD,IAAI,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC5C,4BAA4B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACpD,IAAI,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,KAAK,EAAE,CAAC;oBACvD,eAAe,GAAG,KAAK,CAAC;gBAC1B,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,IAAI,CAAC,6BAA6B,KAAK,UAAU,EAAE,CAAC;gBACpE,IAAI,MAAM,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC;wBAClD,QAAQ;wBACR,GAAG,EAAE,gBAAgB;wBACrB,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,wBAAwB,CAAC;wBAC7D,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;qBAC/C,CAAC,CAAC,CAAC;gBACN,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,GAAG,KAAK,CAAC;gBACjB,CAAC;gBACD,IAAI,MAAM,EAAE,CAAC;oBACX,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,2BAA2B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBACnD,eAAe,GAAG,KAAK,CAAC;gBAC1B,CAAC;gBACD,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBACxC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,4BAA4B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;aAAM,IAAI,gBAAgB,EAAE,CAAC;YAC5B,4BAA4B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QAED,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE1C,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;YACzE,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACvE,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,KAAK,MAAM,qBAAqB,IAAI,sBAAsB,EAAE,CAAC;gBAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACzE,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;oBAC7B,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;oBAC7D,gCAAgC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YACD,KAAK,MAAM,qBAAqB,IAAI,uCAAuC,CAAC,IAAI,CAAC,yBAAyB,EAAE,aAAa,CAAC,EAAE,CAAC;gBAC3H,gCAAgC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,OAAO;QACL,gBAAgB;QAChB,qBAAqB;QACrB,6BAA6B,EAAE,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC;QAC3E,oBAAoB;QACpB,wBAAwB;QACxB,yBAAyB;QACzB,uBAAuB;QACvB,2BAA2B;QAC3B,4BAA4B;KAC7B,CAAC;AACJ,CAAC"}
|
package/dist/server/runtime/http-server/{clock-client-registry.d.ts → session-client-registry.d.ts}
RENAMED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare class
|
|
1
|
+
import type { SessionCleanupResult, SessionClientInjectArgs, SessionClientInjectResult, SessionClientRecord, SessionConversationBindArgs, SessionStaleCleanupResult } from './session-client-registry-utils.js';
|
|
2
|
+
export declare class SessionClientRegistry {
|
|
3
3
|
private readonly records;
|
|
4
4
|
private readonly conversationToTmuxSession;
|
|
5
|
+
private bindingsLoaded;
|
|
6
|
+
private bindingsStorePath;
|
|
7
|
+
private normalizeSessionDirEnvValue;
|
|
8
|
+
private resolveBindingsStorePath;
|
|
9
|
+
private ensureConversationBindingsLoaded;
|
|
10
|
+
private persistConversationBindings;
|
|
5
11
|
register(input: {
|
|
6
12
|
daemonId: string;
|
|
7
13
|
callbackUrl: string;
|
|
@@ -14,7 +20,7 @@ export declare class ClockClientRegistry {
|
|
|
14
20
|
managedClientProcess?: boolean;
|
|
15
21
|
managedClientPid?: number;
|
|
16
22
|
managedClientCommandHint?: string;
|
|
17
|
-
}):
|
|
23
|
+
}): SessionClientRecord;
|
|
18
24
|
heartbeat(daemonId: string, input?: {
|
|
19
25
|
tmuxSessionId?: string;
|
|
20
26
|
workdir?: string;
|
|
@@ -24,13 +30,19 @@ export declare class ClockClientRegistry {
|
|
|
24
30
|
managedClientCommandHint?: string;
|
|
25
31
|
}): boolean;
|
|
26
32
|
unregister(daemonId: string): boolean;
|
|
27
|
-
list():
|
|
28
|
-
findByDaemonId(daemonIdRaw: string):
|
|
33
|
+
list(): SessionClientRecord[];
|
|
34
|
+
findByDaemonId(daemonIdRaw: string): SessionClientRecord | undefined;
|
|
29
35
|
unbindConversationSession(conversationSessionIdRaw: string): {
|
|
30
36
|
ok: boolean;
|
|
31
37
|
removed: boolean;
|
|
32
38
|
daemonIds: string[];
|
|
33
39
|
};
|
|
40
|
+
unbindSessionScope(scopeRaw: string): {
|
|
41
|
+
ok: boolean;
|
|
42
|
+
removed: boolean;
|
|
43
|
+
daemonIds: string[];
|
|
44
|
+
tmuxSessionIds: string[];
|
|
45
|
+
};
|
|
34
46
|
cleanupStaleHeartbeats(args?: {
|
|
35
47
|
nowMs?: number;
|
|
36
48
|
staleAfterMs?: number;
|
|
@@ -41,7 +53,7 @@ export declare class ClockClientRegistry {
|
|
|
41
53
|
commandHint?: string;
|
|
42
54
|
clientType?: string;
|
|
43
55
|
}) => boolean;
|
|
44
|
-
}):
|
|
56
|
+
}): SessionStaleCleanupResult;
|
|
45
57
|
cleanupDeadTmuxSessions(args: {
|
|
46
58
|
isTmuxSessionAlive: (tmuxSessionId: string) => boolean;
|
|
47
59
|
terminateManagedTmuxSession?: (tmuxSessionId: string) => boolean;
|
|
@@ -51,18 +63,21 @@ export declare class ClockClientRegistry {
|
|
|
51
63
|
commandHint?: string;
|
|
52
64
|
clientType?: string;
|
|
53
65
|
}) => boolean;
|
|
54
|
-
}):
|
|
66
|
+
}): SessionCleanupResult;
|
|
55
67
|
private isAlive;
|
|
56
68
|
private pickAliveCandidates;
|
|
57
69
|
private resolveNoBindingReason;
|
|
58
|
-
bindConversationSession(args:
|
|
70
|
+
bindConversationSession(args: SessionConversationBindArgs): {
|
|
59
71
|
ok: boolean;
|
|
60
72
|
reason?: string;
|
|
61
73
|
daemonId?: string;
|
|
62
74
|
tmuxSessionId?: string;
|
|
63
75
|
};
|
|
76
|
+
resolveBoundTmuxSession(conversationSessionIdRaw: string): string | undefined;
|
|
77
|
+
resolveBoundWorkdir(conversationSessionIdRaw: string): string | undefined;
|
|
64
78
|
private resolveInjectTmuxSessionId;
|
|
65
|
-
inject(args:
|
|
79
|
+
inject(args: SessionClientInjectArgs): Promise<SessionClientInjectResult>;
|
|
66
80
|
}
|
|
67
|
-
export declare function
|
|
68
|
-
export declare function
|
|
81
|
+
export declare function getSessionClientRegistry(): SessionClientRegistry;
|
|
82
|
+
export declare function injectSessionClientPromptWithResult(args: SessionClientInjectArgs): Promise<SessionClientInjectResult>;
|
|
83
|
+
export declare function injectSessionClientPrompt(args: SessionClientInjectArgs): Promise<void>;
|