@nextclaw/service 0.2.12 → 0.2.14
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/dist/app/nextclaw-service-runtime.d.ts +41 -0
- package/dist/app/nextclaw-service-runtime.d.ts.map +1 -0
- package/dist/app/nextclaw-service-runtime.js +136 -0
- package/dist/app/nextclaw-service-runtime.js.map +1 -0
- package/dist/controllers/commands/agent-command.controller.d.ts +3 -0
- package/dist/controllers/commands/agent-command.controller.js +3 -0
- package/dist/controllers/commands/channel-command.controller.d.ts +21 -0
- package/dist/controllers/commands/channel-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/channel-command.controller.js +115 -0
- package/dist/controllers/commands/channel-command.controller.js.map +1 -0
- package/dist/controllers/commands/config-command.controller.d.ts +2 -0
- package/dist/controllers/commands/config-command.controller.js +2 -0
- package/dist/controllers/commands/cron-command.controller.d.ts +2 -0
- package/dist/controllers/commands/cron-command.controller.js +2 -0
- package/dist/controllers/commands/diagnostics-command.controller.d.ts +2 -0
- package/dist/controllers/commands/diagnostics-command.controller.js +2 -0
- package/dist/controllers/commands/gateway-command.controller.d.ts +15 -0
- package/dist/controllers/commands/gateway-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/gateway-command.controller.js +17 -0
- package/dist/controllers/commands/gateway-command.controller.js.map +1 -0
- package/dist/controllers/commands/logs-command.controller.d.ts +13 -0
- package/dist/controllers/commands/logs-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/logs-command.controller.js +31 -0
- package/dist/controllers/commands/logs-command.controller.js.map +1 -0
- package/dist/controllers/commands/marketplace-skill-command.controller.d.ts +28 -0
- package/dist/controllers/commands/marketplace-skill-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/marketplace-skill-command.controller.js +170 -0
- package/dist/controllers/commands/marketplace-skill-command.controller.js.map +1 -0
- package/dist/controllers/commands/mcp-command.controller.d.ts +15 -0
- package/dist/controllers/commands/mcp-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/mcp-command.controller.js +195 -0
- package/dist/controllers/commands/mcp-command.controller.js.map +1 -0
- package/dist/controllers/commands/platform-auth-command.controller.d.ts +2 -0
- package/dist/controllers/commands/platform-auth-command.controller.js +2 -0
- package/dist/controllers/commands/remote-command.controller.d.ts +48 -0
- package/dist/controllers/commands/remote-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/remote-command.controller.js +176 -0
- package/dist/controllers/commands/remote-command.controller.js.map +1 -0
- package/dist/controllers/commands/restart-command.controller.d.ts +21 -0
- package/dist/controllers/commands/restart-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/restart-command.controller.js +90 -0
- package/dist/controllers/commands/restart-command.controller.js.map +1 -0
- package/dist/controllers/commands/secrets-command.controller.d.ts +23 -0
- package/dist/controllers/commands/secrets-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/secrets-command.controller.js +282 -0
- package/dist/controllers/commands/secrets-command.controller.js.map +1 -0
- package/dist/controllers/commands/serve-command.controller.d.ts +15 -0
- package/dist/controllers/commands/serve-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/serve-command.controller.js +21 -0
- package/dist/controllers/commands/serve-command.controller.js.map +1 -0
- package/dist/controllers/commands/service-command.controller.d.ts +17 -0
- package/dist/controllers/commands/service-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/service-command.controller.js +33 -0
- package/dist/controllers/commands/service-command.controller.js.map +1 -0
- package/dist/controllers/commands/start-command.controller.d.ts +19 -0
- package/dist/controllers/commands/start-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/start-command.controller.js +27 -0
- package/dist/controllers/commands/start-command.controller.js.map +1 -0
- package/dist/controllers/commands/stop-command.controller.d.ts +13 -0
- package/dist/controllers/commands/stop-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/stop-command.controller.js +13 -0
- package/dist/controllers/commands/stop-command.controller.js.map +1 -0
- package/dist/controllers/commands/ui-command.controller.d.ts +15 -0
- package/dist/controllers/commands/ui-command.controller.d.ts.map +1 -0
- package/dist/controllers/commands/ui-command.controller.js +19 -0
- package/dist/controllers/commands/ui-command.controller.js.map +1 -0
- package/dist/controllers/commands/usage-command.controller.d.ts +2 -0
- package/dist/controllers/commands/usage-command.controller.js +2 -0
- package/dist/controllers/gateway.controller.d.ts +54 -0
- package/dist/controllers/gateway.controller.d.ts.map +1 -0
- package/dist/controllers/gateway.controller.js +162 -0
- package/dist/controllers/gateway.controller.js.map +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2 -2
- package/dist/launcher/npm-runtime-launcher.service.d.ts +1 -1
- package/dist/launcher/npm-runtime-launcher.service.js +6 -6
- package/dist/launcher/npm-runtime-launcher.service.js.map +1 -1
- package/dist/managers/gateway-extension.manager.d.ts +29 -0
- package/dist/managers/gateway-extension.manager.d.ts.map +1 -0
- package/dist/managers/gateway-extension.manager.js +78 -0
- package/dist/managers/gateway-extension.manager.js.map +1 -0
- package/dist/managers/gateway-remote.manager.d.ts +23 -0
- package/dist/managers/gateway-remote.manager.d.ts.map +1 -0
- package/dist/managers/gateway-remote.manager.js +28 -0
- package/dist/managers/gateway-remote.manager.js.map +1 -0
- package/dist/managers/managed-service.manager.d.ts +42 -0
- package/dist/managers/managed-service.manager.d.ts.map +1 -0
- package/dist/managers/managed-service.manager.js +195 -0
- package/dist/managers/managed-service.manager.js.map +1 -0
- package/dist/managers/runtime-update.manager.d.ts +43 -0
- package/dist/managers/runtime-update.manager.d.ts.map +1 -0
- package/dist/managers/runtime-update.manager.js +185 -0
- package/dist/managers/runtime-update.manager.js.map +1 -0
- package/dist/managers/service-command.manager.d.ts +67 -0
- package/dist/managers/service-command.manager.d.ts.map +1 -0
- package/dist/managers/service-command.manager.js +94 -0
- package/dist/managers/service-command.manager.js.map +1 -0
- package/dist/managers/service-gateway.manager.d.ts +85 -0
- package/dist/managers/service-gateway.manager.d.ts.map +1 -0
- package/dist/managers/service-gateway.manager.js +278 -0
- package/dist/managers/service-gateway.manager.js.map +1 -0
- package/dist/managers/service-restart.manager.d.ts +22 -0
- package/dist/managers/service-restart.manager.d.ts.map +1 -0
- package/dist/managers/service-restart.manager.js +183 -0
- package/dist/managers/service-restart.manager.js.map +1 -0
- package/dist/managers/service-workspace.manager.d.ts +14 -0
- package/dist/managers/service-workspace.manager.d.ts.map +1 -0
- package/dist/managers/service-workspace.manager.js +86 -0
- package/dist/managers/service-workspace.manager.js.map +1 -0
- package/dist/services/agent/agent-commands.service.d.ts +17 -0
- package/dist/services/agent/agent-commands.service.d.ts.map +1 -0
- package/dist/services/agent/agent-commands.service.js +111 -0
- package/dist/services/agent/agent-commands.service.js.map +1 -0
- package/dist/services/autostart/host-autostart-command.service.d.ts +30 -0
- package/dist/services/autostart/host-autostart-command.service.d.ts.map +1 -0
- package/dist/services/autostart/host-autostart-command.service.js +160 -0
- package/dist/services/autostart/host-autostart-command.service.js.map +1 -0
- package/dist/services/autostart/host-autostart-runtime.service.d.ts +24 -0
- package/dist/services/autostart/host-autostart-runtime.service.d.ts.map +1 -0
- package/dist/services/autostart/host-autostart-runtime.service.js +55 -0
- package/dist/services/autostart/host-autostart-runtime.service.js.map +1 -0
- package/dist/services/autostart/host-autostart.service.d.ts +42 -0
- package/dist/services/autostart/host-autostart.service.d.ts.map +1 -0
- package/dist/services/autostart/host-autostart.service.js +50 -0
- package/dist/services/autostart/host-autostart.service.js.map +1 -0
- package/dist/services/autostart/linux-systemd-autostart.service.d.ts +49 -0
- package/dist/services/autostart/linux-systemd-autostart.service.d.ts.map +1 -0
- package/dist/services/autostart/linux-systemd-autostart.service.js +435 -0
- package/dist/services/autostart/linux-systemd-autostart.service.js.map +1 -0
- package/dist/services/autostart/macos-launch-agent-autostart.service.d.ts +55 -0
- package/dist/services/autostart/macos-launch-agent-autostart.service.d.ts.map +1 -0
- package/dist/services/autostart/macos-launch-agent-autostart.service.js +407 -0
- package/dist/services/autostart/macos-launch-agent-autostart.service.js.map +1 -0
- package/dist/services/autostart/windows-task-autostart.service.d.ts +55 -0
- package/dist/services/autostart/windows-task-autostart.service.d.ts.map +1 -0
- package/dist/services/autostart/windows-task-autostart.service.js +406 -0
- package/dist/services/autostart/windows-task-autostart.service.js.map +1 -0
- package/dist/services/channel/channel-list-view.service.d.ts +29 -0
- package/dist/services/channel/channel-list-view.service.d.ts.map +1 -0
- package/dist/services/channel/channel-list-view.service.js +53 -0
- package/dist/services/channel/channel-list-view.service.js.map +1 -0
- package/dist/services/config/config-commands.service.d.ts +17 -0
- package/dist/services/config/config-commands.service.d.ts.map +1 -0
- package/dist/services/config/config-commands.service.js +117 -0
- package/dist/services/config/config-commands.service.js.map +1 -0
- package/dist/services/cron/cron-commands.service.d.ts +23 -0
- package/dist/services/cron/cron-commands.service.d.ts.map +1 -0
- package/dist/services/cron/cron-commands.service.js +109 -0
- package/dist/services/cron/cron-commands.service.js.map +1 -0
- package/dist/services/cron/cron-local.service.d.ts +26 -0
- package/dist/services/cron/cron-local.service.d.ts.map +1 -0
- package/dist/services/cron/cron-local.service.js +89 -0
- package/dist/services/cron/cron-local.service.js.map +1 -0
- package/dist/services/diagnostics/diagnostics-commands.service.d.ts +25 -0
- package/dist/services/diagnostics/diagnostics-commands.service.d.ts.map +1 -0
- package/dist/services/diagnostics/diagnostics-commands.service.js +345 -0
- package/dist/services/diagnostics/diagnostics-commands.service.js.map +1 -0
- package/dist/services/gateway/gateway-restart-wake.service.d.ts +13 -0
- package/dist/services/gateway/gateway-restart-wake.service.d.ts.map +1 -0
- package/dist/services/gateway/gateway-restart-wake.service.js +99 -0
- package/dist/services/gateway/gateway-restart-wake.service.js.map +1 -0
- package/dist/services/gateway/nextclaw-app.service.d.ts +18 -0
- package/dist/services/gateway/nextclaw-app.service.d.ts.map +1 -0
- package/dist/services/gateway/nextclaw-app.service.js +44 -0
- package/dist/services/gateway/nextclaw-app.service.js.map +1 -0
- package/dist/services/gateway/service-bootstrap-status.service.d.ts +33 -0
- package/dist/services/gateway/service-bootstrap-status.service.d.ts.map +1 -0
- package/dist/services/gateway/service-bootstrap-status.service.js +144 -0
- package/dist/services/gateway/service-bootstrap-status.service.js.map +1 -0
- package/dist/services/gateway/service-startup-support.service.d.ts +35 -0
- package/dist/services/gateway/service-startup-support.service.d.ts.map +1 -0
- package/dist/services/gateway/service-startup-support.service.js +83 -0
- package/dist/services/gateway/service-startup-support.service.js.map +1 -0
- package/dist/services/marketplace/service-marketplace-installer.service.d.ts +29 -0
- package/dist/services/marketplace/service-marketplace-installer.service.d.ts.map +1 -0
- package/dist/services/marketplace/service-marketplace-installer.service.js +87 -0
- package/dist/services/marketplace/service-marketplace-installer.service.js.map +1 -0
- package/dist/services/marketplace/service-mcp-marketplace-ops.service.d.ts +40 -0
- package/dist/services/marketplace/service-mcp-marketplace-ops.service.d.ts.map +1 -0
- package/dist/services/marketplace/service-mcp-marketplace-ops.service.js +69 -0
- package/dist/services/marketplace/service-mcp-marketplace-ops.service.js.map +1 -0
- package/dist/services/marketplace/skills-query.service.d.ts +110 -0
- package/dist/services/marketplace/skills-query.service.d.ts.map +1 -0
- package/dist/services/marketplace/skills-query.service.js +132 -0
- package/dist/services/marketplace/skills-query.service.js.map +1 -0
- package/dist/services/platform-auth/account-status.service.d.ts +20 -0
- package/dist/services/platform-auth/account-status.service.d.ts.map +1 -0
- package/dist/services/platform-auth/account-status.service.js +36 -0
- package/dist/services/platform-auth/account-status.service.js.map +1 -0
- package/dist/services/platform-auth/platform-auth-commands.service.d.ts +78 -0
- package/dist/services/platform-auth/platform-auth-commands.service.d.ts.map +1 -0
- package/dist/services/platform-auth/platform-auth-commands.service.js +297 -0
- package/dist/services/platform-auth/platform-auth-commands.service.js.map +1 -0
- package/dist/services/remote/remote-access-host.service.d.ts +42 -0
- package/dist/services/remote/remote-access-host.service.d.ts.map +1 -0
- package/dist/services/remote/remote-access-host.service.js +128 -0
- package/dist/services/remote/remote-access-host.service.js.map +1 -0
- package/dist/services/remote/remote-service-control.service.d.ts +34 -0
- package/dist/services/remote/remote-service-control.service.d.ts.map +1 -0
- package/dist/services/remote/remote-service-control.service.js +247 -0
- package/dist/services/remote/remote-service-control.service.js.map +1 -0
- package/dist/services/restart/restart-coordinator.service.d.ts +31 -0
- package/dist/services/restart/restart-coordinator.service.d.ts.map +1 -0
- package/dist/services/restart/restart-coordinator.service.js +53 -0
- package/dist/services/restart/restart-coordinator.service.js.map +1 -0
- package/dist/services/runtime/managed-service-supervisor.service.d.ts +85 -0
- package/dist/services/runtime/managed-service-supervisor.service.d.ts.map +1 -0
- package/dist/services/runtime/managed-service-supervisor.service.js +271 -0
- package/dist/services/runtime/managed-service-supervisor.service.js.map +1 -0
- package/dist/services/runtime/nextclaw-distribution.service.d.ts +11 -0
- package/dist/services/runtime/nextclaw-distribution.service.d.ts.map +1 -0
- package/dist/services/runtime/nextclaw-distribution.service.js +15 -0
- package/dist/services/runtime/nextclaw-distribution.service.js.map +1 -0
- package/dist/services/runtime/npm-runtime-bundle-manifest.service.d.ts +10 -0
- package/dist/services/runtime/npm-runtime-bundle-manifest.service.d.ts.map +1 -0
- package/dist/services/runtime/npm-runtime-bundle-manifest.service.js +41 -0
- package/dist/services/runtime/npm-runtime-bundle-manifest.service.js.map +1 -0
- package/dist/services/runtime/npm-runtime-bundle.service.d.ts +48 -0
- package/dist/services/runtime/npm-runtime-bundle.service.d.ts.map +1 -0
- package/dist/services/runtime/npm-runtime-bundle.service.js +152 -0
- package/dist/services/runtime/npm-runtime-bundle.service.js.map +1 -0
- package/dist/services/runtime/npm-runtime-update-command.service.d.ts +16 -0
- package/dist/services/runtime/npm-runtime-update-command.service.d.ts.map +1 -0
- package/dist/services/runtime/npm-runtime-update-command.service.js +120 -0
- package/dist/services/runtime/npm-runtime-update-command.service.js.map +1 -0
- package/dist/services/runtime/npm-runtime-update-host.service.d.ts +41 -0
- package/dist/services/runtime/npm-runtime-update-host.service.d.ts.map +1 -0
- package/dist/services/runtime/npm-runtime-update-host.service.js +189 -0
- package/dist/services/runtime/npm-runtime-update-host.service.js.map +1 -0
- package/dist/services/runtime/npm-runtime-update-source.service.d.ts +22 -0
- package/dist/services/runtime/npm-runtime-update-source.service.d.ts.map +1 -0
- package/dist/services/runtime/npm-runtime-update-source.service.js +61 -0
- package/dist/services/runtime/npm-runtime-update-source.service.js.map +1 -0
- package/dist/services/runtime/npm-runtime-update.service.d.ts +55 -0
- package/dist/services/runtime/npm-runtime-update.service.d.ts.map +1 -0
- package/dist/services/runtime/npm-runtime-update.service.js +185 -0
- package/dist/services/runtime/npm-runtime-update.service.js.map +1 -0
- package/dist/services/runtime/runtime-config-init.service.d.ts +5 -0
- package/dist/services/runtime/runtime-config-init.service.d.ts.map +1 -0
- package/dist/services/runtime/runtime-config-init.service.js +12 -0
- package/dist/services/runtime/runtime-config-init.service.js.map +1 -0
- package/dist/services/runtime/service-managed-startup.service.d.ts +95 -0
- package/dist/services/runtime/service-managed-startup.service.d.ts.map +1 -0
- package/dist/services/runtime/service-managed-startup.service.js +341 -0
- package/dist/services/runtime/service-managed-startup.service.js.map +1 -0
- package/dist/services/ui/companion-runtime.service.d.ts +36 -0
- package/dist/services/ui/companion-runtime.service.d.ts.map +1 -0
- package/dist/services/ui/companion-runtime.service.js +180 -0
- package/dist/services/ui/companion-runtime.service.js.map +1 -0
- package/dist/services/ui/local-ui-discovery.service.d.ts +20 -0
- package/dist/services/ui/local-ui-discovery.service.d.ts.map +1 -0
- package/dist/services/ui/local-ui-discovery.service.js +43 -0
- package/dist/services/ui/local-ui-discovery.service.js.map +1 -0
- package/dist/services/ui/runtime-control-host.service.d.ts +29 -0
- package/dist/services/ui/runtime-control-host.service.d.ts.map +1 -0
- package/dist/services/ui/runtime-control-host.service.js +91 -0
- package/dist/services/ui/runtime-control-host.service.js.map +1 -0
- package/dist/services/ui/service-remote-access.service.d.ts +26 -0
- package/dist/services/ui/service-remote-access.service.d.ts.map +1 -0
- package/dist/services/ui/service-remote-access.service.js +40 -0
- package/dist/services/ui/service-remote-access.service.js.map +1 -0
- package/dist/services/ui/ui-bridge-api.service.d.ts +17 -0
- package/dist/services/ui/ui-bridge-api.service.d.ts.map +1 -0
- package/dist/services/ui/ui-bridge-api.service.js +45 -0
- package/dist/services/ui/ui-bridge-api.service.js.map +1 -0
- package/dist/services/usage/llm-usage-command.service.d.ts +21 -0
- package/dist/services/usage/llm-usage-command.service.d.ts.map +1 -0
- package/dist/services/usage/llm-usage-command.service.js +152 -0
- package/dist/services/usage/llm-usage-command.service.js.map +1 -0
- package/dist/stores/companion-runtime.store.d.ts +16 -0
- package/dist/stores/companion-runtime.store.d.ts.map +1 -0
- package/dist/stores/companion-runtime.store.js +29 -0
- package/dist/stores/companion-runtime.store.js.map +1 -0
- package/dist/stores/local-ui-runtime.store.d.ts +26 -0
- package/dist/stores/local-ui-runtime.store.d.ts.map +1 -0
- package/dist/stores/local-ui-runtime.store.js +56 -0
- package/dist/stores/local-ui-runtime.store.js.map +1 -0
- package/dist/stores/managed-service-state.store.d.ts +46 -0
- package/dist/stores/managed-service-state.store.d.ts.map +1 -0
- package/dist/stores/managed-service-state.store.js +40 -0
- package/dist/stores/managed-service-state.store.js.map +1 -0
- package/dist/stores/marketplace-install-state.store.d.ts +39 -0
- package/dist/stores/marketplace-install-state.store.d.ts.map +1 -0
- package/dist/stores/marketplace-install-state.store.js +58 -0
- package/dist/stores/marketplace-install-state.store.js.map +1 -0
- package/dist/stores/npm-runtime-bundle-layout.store.d.ts +24 -0
- package/dist/stores/npm-runtime-bundle-layout.store.d.ts.map +1 -0
- package/dist/stores/npm-runtime-bundle-layout.store.js +39 -0
- package/dist/stores/npm-runtime-bundle-layout.store.js.map +1 -0
- package/dist/stores/npm-runtime-update-state.store.d.ts +18 -0
- package/dist/stores/npm-runtime-update-state.store.d.ts.map +1 -0
- package/dist/stores/npm-runtime-update-state.store.js +94 -0
- package/dist/stores/npm-runtime-update-state.store.js.map +1 -0
- package/dist/stores/pending-restart.store.d.ts +22 -0
- package/dist/stores/pending-restart.store.d.ts.map +1 -0
- package/dist/stores/pending-restart.store.js +37 -0
- package/dist/stores/pending-restart.store.js.map +1 -0
- package/dist/types/cli.types.d.ts +304 -0
- package/dist/types/cli.types.d.ts.map +1 -0
- package/dist/types/distribution.types.d.ts +11 -0
- package/dist/types/distribution.types.d.ts.map +1 -0
- package/dist/types/host-autostart.types.d.ts +65 -0
- package/dist/types/host-autostart.types.d.ts.map +1 -0
- package/dist/types/npm-runtime-bundle.types.d.ts +50 -0
- package/dist/types/npm-runtime-bundle.types.d.ts.map +1 -0
- package/dist/utils/agent-runtime.utils.d.ts +15 -0
- package/dist/utils/agent-runtime.utils.d.ts.map +1 -0
- package/dist/utils/agent-runtime.utils.js +40 -0
- package/dist/utils/agent-runtime.utils.js.map +1 -0
- package/dist/utils/channel-config-view.utils.d.ts +7 -0
- package/dist/utils/channel-config-view.utils.d.ts.map +1 -0
- package/dist/utils/channel-config-view.utils.js +9 -0
- package/dist/utils/channel-config-view.utils.js.map +1 -0
- package/dist/utils/cli-agent-runner.utils.d.ts +14 -0
- package/dist/utils/cli-agent-runner.utils.d.ts.map +1 -0
- package/dist/utils/cli-agent-runner.utils.js +94 -0
- package/dist/utils/cli-agent-runner.utils.js.map +1 -0
- package/dist/utils/cli.utils.d.ts +32 -0
- package/dist/utils/cli.utils.d.ts.map +1 -0
- package/dist/utils/cli.utils.js +254 -0
- package/dist/utils/cli.utils.js.map +1 -0
- package/dist/utils/config-path.utils.d.ts +16 -0
- package/dist/utils/config-path.utils.d.ts.map +1 -0
- package/dist/utils/config-path.utils.js +169 -0
- package/dist/utils/config-path.utils.js.map +1 -0
- package/dist/utils/cron/cron-job.utils.d.ts +28 -0
- package/dist/utils/cron/cron-job.utils.d.ts.map +1 -0
- package/dist/utils/cron/cron-job.utils.js +17 -0
- package/dist/utils/cron/cron-job.utils.js.map +1 -0
- package/dist/utils/diagnostics/diagnostics-render.utils.d.ts +24 -0
- package/dist/utils/diagnostics/diagnostics-render.utils.d.ts.map +1 -0
- package/dist/utils/diagnostics/diagnostics-render.utils.js +74 -0
- package/dist/utils/diagnostics/diagnostics-render.utils.js.map +1 -0
- package/dist/utils/gateway-cron-job-handler.utils.d.ts +18 -0
- package/dist/utils/gateway-cron-job-handler.utils.d.ts.map +1 -0
- package/dist/utils/gateway-cron-job-handler.utils.js +56 -0
- package/dist/utils/gateway-cron-job-handler.utils.js.map +1 -0
- package/dist/utils/gateway-runtime-lifecycle.utils.d.ts +10 -0
- package/dist/utils/gateway-runtime-lifecycle.utils.d.ts.map +1 -0
- package/dist/utils/gateway-runtime-lifecycle.utils.js +12 -0
- package/dist/utils/gateway-runtime-lifecycle.utils.js.map +1 -0
- package/dist/utils/marketplace/cli-subcommand-launch.utils.d.ts +17 -0
- package/dist/utils/marketplace/cli-subcommand-launch.utils.d.ts.map +1 -0
- package/dist/utils/marketplace/cli-subcommand-launch.utils.js +48 -0
- package/dist/utils/marketplace/cli-subcommand-launch.utils.js.map +1 -0
- package/dist/utils/marketplace/marketplace-client.utils.d.ts +46 -0
- package/dist/utils/marketplace/marketplace-client.utils.d.ts.map +1 -0
- package/dist/utils/marketplace/marketplace-client.utils.js +137 -0
- package/dist/utils/marketplace/marketplace-client.utils.js.map +1 -0
- package/dist/utils/marketplace/marketplace-command-options.utils.d.ts +26 -0
- package/dist/utils/marketplace/marketplace-command-options.utils.d.ts.map +1 -0
- package/dist/utils/marketplace/marketplace-command-options.utils.js +33 -0
- package/dist/utils/marketplace/marketplace-command-options.utils.js.map +1 -0
- package/dist/utils/marketplace/marketplace-identity.utils.d.ts +15 -0
- package/dist/utils/marketplace/marketplace-identity.utils.d.ts.map +1 -0
- package/dist/utils/marketplace/marketplace-identity.utils.js +79 -0
- package/dist/utils/marketplace/marketplace-identity.utils.js.map +1 -0
- package/dist/utils/marketplace/marketplace-metadata.utils.d.ts +21 -0
- package/dist/utils/marketplace/marketplace-metadata.utils.d.ts.map +1 -0
- package/dist/utils/marketplace/marketplace-metadata.utils.js +74 -0
- package/dist/utils/marketplace/marketplace-metadata.utils.js.map +1 -0
- package/dist/utils/marketplace/marketplace-network-retry.utils.d.ts +5 -0
- package/dist/utils/marketplace/marketplace-network-retry.utils.d.ts.map +1 -0
- package/dist/utils/marketplace/marketplace-network-retry.utils.js +34 -0
- package/dist/utils/marketplace/marketplace-network-retry.utils.js.map +1 -0
- package/dist/utils/marketplace/marketplace-skill-lifecycle.utils.d.ts +27 -0
- package/dist/utils/marketplace/marketplace-skill-lifecycle.utils.d.ts.map +1 -0
- package/dist/utils/marketplace/marketplace-skill-lifecycle.utils.js +206 -0
- package/dist/utils/marketplace/marketplace-skill-lifecycle.utils.js.map +1 -0
- package/dist/utils/marketplace/marketplace.utils.d.ts +34 -0
- package/dist/utils/marketplace/marketplace.utils.d.ts.map +1 -0
- package/dist/utils/marketplace/marketplace.utils.js +77 -0
- package/dist/utils/marketplace/marketplace.utils.js.map +1 -0
- package/dist/utils/marketplace/service-marketplace-helpers.utils.d.ts +15 -0
- package/dist/utils/marketplace/service-marketplace-helpers.utils.d.ts.map +1 -0
- package/dist/utils/marketplace/service-marketplace-helpers.utils.js +47 -0
- package/dist/utils/marketplace/service-marketplace-helpers.utils.js.map +1 -0
- package/dist/utils/package/package-manifest.utils.d.ts +5 -0
- package/dist/utils/package/package-manifest.utils.d.ts.map +1 -0
- package/dist/utils/package/package-manifest.utils.js +40 -0
- package/dist/utils/package/package-manifest.utils.js.map +1 -0
- package/dist/utils/panel-app-client-sdk/panel-app-client-sdk-script.utils.d.ts +5 -0
- package/dist/utils/panel-app-client-sdk/panel-app-client-sdk-script.utils.d.ts.map +1 -0
- package/dist/utils/panel-app-client-sdk/panel-app-client-sdk-script.utils.js +37 -0
- package/dist/utils/panel-app-client-sdk/panel-app-client-sdk-script.utils.js.map +1 -0
- package/dist/utils/platform-auth/payload.utils.d.ts +30 -0
- package/dist/utils/platform-auth/payload.utils.d.ts.map +1 -0
- package/dist/utils/platform-auth/payload.utils.js +89 -0
- package/dist/utils/platform-auth/payload.utils.js.map +1 -0
- package/dist/utils/remote/platform-api-base.utils.d.ts +15 -0
- package/dist/utils/remote/platform-api-base.utils.d.ts.map +1 -0
- package/dist/utils/remote/platform-api-base.utils.js +41 -0
- package/dist/utils/remote/platform-api-base.utils.js.map +1 -0
- package/dist/utils/remote/remote-runtime-support.utils.d.ts +16 -0
- package/dist/utils/remote/remote-runtime-support.utils.d.ts.map +1 -0
- package/dist/utils/remote/remote-runtime-support.utils.js +82 -0
- package/dist/utils/remote/remote-runtime-support.utils.js.map +1 -0
- package/dist/utils/restart-sentinel.utils.d.ts +37 -0
- package/dist/utils/restart-sentinel.utils.d.ts.map +1 -0
- package/dist/utils/restart-sentinel.utils.js +76 -0
- package/dist/utils/restart-sentinel.utils.js.map +1 -0
- package/dist/utils/runtime/managed-service-routing.utils.d.ts +31 -0
- package/dist/utils/runtime/managed-service-routing.utils.d.ts.map +1 -0
- package/dist/utils/runtime/managed-service-routing.utils.js +64 -0
- package/dist/utils/runtime/managed-service-routing.utils.js.map +1 -0
- package/dist/utils/runtime/service-remote-runtime.utils.d.ts +58 -0
- package/dist/utils/runtime/service-remote-runtime.utils.d.ts.map +1 -0
- package/dist/utils/runtime/service-remote-runtime.utils.js +184 -0
- package/dist/utils/runtime/service-remote-runtime.utils.js.map +1 -0
- package/dist/utils/runtime-helpers.utils.d.ts +15 -0
- package/dist/utils/runtime-helpers.utils.d.ts.map +1 -0
- package/dist/utils/runtime-helpers.utils.js +28 -0
- package/dist/utils/runtime-helpers.utils.js.map +1 -0
- package/dist/utils/service-port-probe.utils.d.ts +42 -0
- package/dist/utils/service-port-probe.utils.d.ts.map +1 -0
- package/dist/utils/service-port-probe.utils.js +166 -0
- package/dist/utils/service-port-probe.utils.js.map +1 -0
- package/dist/utils/startup-trace.utils.d.ts +8 -0
- package/dist/utils/startup-trace.utils.d.ts.map +1 -0
- package/dist/utils/startup-trace.utils.js +39 -0
- package/dist/utils/startup-trace.utils.js.map +1 -0
- package/dist/utils/top-level-nextclaw-command-env.utils.d.ts +5 -0
- package/dist/utils/top-level-nextclaw-command-env.utils.d.ts.map +1 -0
- package/dist/utils/top-level-nextclaw-command-env.utils.js +12 -0
- package/dist/utils/top-level-nextclaw-command-env.utils.js.map +1 -0
- package/package.json +26 -26
- package/dist/cli/commands/agent/agent-runtime.utils.d.ts +0 -15
- package/dist/cli/commands/agent/agent-runtime.utils.d.ts.map +0 -1
- package/dist/cli/commands/agent/agent-runtime.utils.js +0 -43
- package/dist/cli/commands/agent/agent-runtime.utils.js.map +0 -1
- package/dist/cli/commands/agent/cli-agent-runner.utils.d.ts +0 -14
- package/dist/cli/commands/agent/cli-agent-runner.utils.d.ts.map +0 -1
- package/dist/cli/commands/agent/cli-agent-runner.utils.js +0 -94
- package/dist/cli/commands/agent/cli-agent-runner.utils.js.map +0 -1
- package/dist/cli/commands/agent/index.d.ts +0 -3
- package/dist/cli/commands/agent/index.js +0 -3
- package/dist/cli/commands/agent/services/agent-commands.service.d.ts +0 -18
- package/dist/cli/commands/agent/services/agent-commands.service.d.ts.map +0 -1
- package/dist/cli/commands/agent/services/agent-commands.service.js +0 -113
- package/dist/cli/commands/agent/services/agent-commands.service.js.map +0 -1
- package/dist/cli/commands/config/index.d.ts +0 -2
- package/dist/cli/commands/config/index.js +0 -2
- package/dist/cli/commands/config/services/config-commands.service.d.ts +0 -17
- package/dist/cli/commands/config/services/config-commands.service.d.ts.map +0 -1
- package/dist/cli/commands/config/services/config-commands.service.js +0 -117
- package/dist/cli/commands/config/services/config-commands.service.js.map +0 -1
- package/dist/cli/commands/cron/index.d.ts +0 -2
- package/dist/cli/commands/cron/index.js +0 -2
- package/dist/cli/commands/cron/services/cron-commands.service.d.ts +0 -23
- package/dist/cli/commands/cron/services/cron-commands.service.d.ts.map +0 -1
- package/dist/cli/commands/cron/services/cron-commands.service.js +0 -109
- package/dist/cli/commands/cron/services/cron-commands.service.js.map +0 -1
- package/dist/cli/commands/cron/services/cron-local.service.d.ts +0 -26
- package/dist/cli/commands/cron/services/cron-local.service.d.ts.map +0 -1
- package/dist/cli/commands/cron/services/cron-local.service.js +0 -89
- package/dist/cli/commands/cron/services/cron-local.service.js.map +0 -1
- package/dist/cli/commands/cron/utils/cron-job.utils.d.ts +0 -28
- package/dist/cli/commands/cron/utils/cron-job.utils.d.ts.map +0 -1
- package/dist/cli/commands/cron/utils/cron-job.utils.js +0 -17
- package/dist/cli/commands/cron/utils/cron-job.utils.js.map +0 -1
- package/dist/cli/commands/diagnostics/index.d.ts +0 -2
- package/dist/cli/commands/diagnostics/index.js +0 -2
- package/dist/cli/commands/diagnostics/services/diagnostics-commands.service.d.ts +0 -25
- package/dist/cli/commands/diagnostics/services/diagnostics-commands.service.d.ts.map +0 -1
- package/dist/cli/commands/diagnostics/services/diagnostics-commands.service.js +0 -345
- package/dist/cli/commands/diagnostics/services/diagnostics-commands.service.js.map +0 -1
- package/dist/cli/commands/diagnostics/utils/diagnostics-render.utils.d.ts +0 -24
- package/dist/cli/commands/diagnostics/utils/diagnostics-render.utils.d.ts.map +0 -1
- package/dist/cli/commands/diagnostics/utils/diagnostics-render.utils.js +0 -74
- package/dist/cli/commands/diagnostics/utils/diagnostics-render.utils.js.map +0 -1
- package/dist/cli/commands/gateway/index.d.ts +0 -15
- package/dist/cli/commands/gateway/index.d.ts.map +0 -1
- package/dist/cli/commands/gateway/index.js +0 -17
- package/dist/cli/commands/gateway/index.js.map +0 -1
- package/dist/cli/commands/logs/index.d.ts +0 -13
- package/dist/cli/commands/logs/index.d.ts.map +0 -1
- package/dist/cli/commands/logs/index.js +0 -31
- package/dist/cli/commands/logs/index.js.map +0 -1
- package/dist/cli/commands/mcp/index.d.ts +0 -15
- package/dist/cli/commands/mcp/index.d.ts.map +0 -1
- package/dist/cli/commands/mcp/index.js +0 -195
- package/dist/cli/commands/mcp/index.js.map +0 -1
- package/dist/cli/commands/restart/index.d.ts +0 -21
- package/dist/cli/commands/restart/index.d.ts.map +0 -1
- package/dist/cli/commands/restart/index.js +0 -90
- package/dist/cli/commands/restart/index.js.map +0 -1
- package/dist/cli/commands/secrets/index.d.ts +0 -23
- package/dist/cli/commands/secrets/index.d.ts.map +0 -1
- package/dist/cli/commands/secrets/index.js +0 -282
- package/dist/cli/commands/secrets/index.js.map +0 -1
- package/dist/cli/commands/serve/index.d.ts +0 -15
- package/dist/cli/commands/serve/index.d.ts.map +0 -1
- package/dist/cli/commands/serve/index.js +0 -21
- package/dist/cli/commands/serve/index.js.map +0 -1
- package/dist/cli/commands/skills/index.d.ts +0 -28
- package/dist/cli/commands/skills/index.d.ts.map +0 -1
- package/dist/cli/commands/skills/index.js +0 -170
- package/dist/cli/commands/skills/index.js.map +0 -1
- package/dist/cli/commands/skills/marketplace-client.d.ts +0 -46
- package/dist/cli/commands/skills/marketplace-client.d.ts.map +0 -1
- package/dist/cli/commands/skills/marketplace-client.js +0 -137
- package/dist/cli/commands/skills/marketplace-client.js.map +0 -1
- package/dist/cli/commands/skills/marketplace-command-options.utils.d.ts +0 -26
- package/dist/cli/commands/skills/marketplace-command-options.utils.d.ts.map +0 -1
- package/dist/cli/commands/skills/marketplace-command-options.utils.js +0 -33
- package/dist/cli/commands/skills/marketplace-command-options.utils.js.map +0 -1
- package/dist/cli/commands/skills/marketplace-identity.utils.d.ts +0 -15
- package/dist/cli/commands/skills/marketplace-identity.utils.d.ts.map +0 -1
- package/dist/cli/commands/skills/marketplace-identity.utils.js +0 -79
- package/dist/cli/commands/skills/marketplace-identity.utils.js.map +0 -1
- package/dist/cli/commands/skills/marketplace-network-retry.d.ts +0 -5
- package/dist/cli/commands/skills/marketplace-network-retry.d.ts.map +0 -1
- package/dist/cli/commands/skills/marketplace-network-retry.js +0 -34
- package/dist/cli/commands/skills/marketplace-network-retry.js.map +0 -1
- package/dist/cli/commands/skills/marketplace.metadata.d.ts +0 -21
- package/dist/cli/commands/skills/marketplace.metadata.d.ts.map +0 -1
- package/dist/cli/commands/skills/marketplace.metadata.js +0 -74
- package/dist/cli/commands/skills/marketplace.metadata.js.map +0 -1
- package/dist/cli/commands/skills/marketplace.utils.d.ts +0 -34
- package/dist/cli/commands/skills/marketplace.utils.d.ts.map +0 -1
- package/dist/cli/commands/skills/marketplace.utils.js +0 -77
- package/dist/cli/commands/skills/marketplace.utils.js.map +0 -1
- package/dist/cli/commands/skills/skills-query.service.d.ts +0 -110
- package/dist/cli/commands/skills/skills-query.service.d.ts.map +0 -1
- package/dist/cli/commands/skills/skills-query.service.js +0 -132
- package/dist/cli/commands/skills/skills-query.service.js.map +0 -1
- package/dist/cli/commands/skills/stores/marketplace-install-state.store.d.ts +0 -39
- package/dist/cli/commands/skills/stores/marketplace-install-state.store.d.ts.map +0 -1
- package/dist/cli/commands/skills/stores/marketplace-install-state.store.js +0 -58
- package/dist/cli/commands/skills/stores/marketplace-install-state.store.js.map +0 -1
- package/dist/cli/commands/skills/utils/marketplace-skill-lifecycle.utils.d.ts +0 -27
- package/dist/cli/commands/skills/utils/marketplace-skill-lifecycle.utils.d.ts.map +0 -1
- package/dist/cli/commands/skills/utils/marketplace-skill-lifecycle.utils.js +0 -206
- package/dist/cli/commands/skills/utils/marketplace-skill-lifecycle.utils.js.map +0 -1
- package/dist/cli/commands/start/index.d.ts +0 -19
- package/dist/cli/commands/start/index.d.ts.map +0 -1
- package/dist/cli/commands/start/index.js +0 -27
- package/dist/cli/commands/start/index.js.map +0 -1
- package/dist/cli/commands/stop/index.d.ts +0 -13
- package/dist/cli/commands/stop/index.d.ts.map +0 -1
- package/dist/cli/commands/stop/index.js +0 -13
- package/dist/cli/commands/stop/index.js.map +0 -1
- package/dist/cli/commands/ui/index.d.ts +0 -15
- package/dist/cli/commands/ui/index.d.ts.map +0 -1
- package/dist/cli/commands/ui/index.js +0 -19
- package/dist/cli/commands/ui/index.js.map +0 -1
- package/dist/cli/commands/usage/index.d.ts +0 -2
- package/dist/cli/commands/usage/index.js +0 -2
- package/dist/cli/commands/usage/services/llm-usage-command.service.d.ts +0 -21
- package/dist/cli/commands/usage/services/llm-usage-command.service.d.ts.map +0 -1
- package/dist/cli/commands/usage/services/llm-usage-command.service.js +0 -152
- package/dist/cli/commands/usage/services/llm-usage-command.service.js.map +0 -1
- package/dist/commands/channel/channel-config-view.utils.d.ts +0 -7
- package/dist/commands/channel/channel-config-view.utils.d.ts.map +0 -1
- package/dist/commands/channel/channel-config-view.utils.js +0 -9
- package/dist/commands/channel/channel-config-view.utils.js.map +0 -1
- package/dist/commands/channel/channel-list-view.service.d.ts +0 -29
- package/dist/commands/channel/channel-list-view.service.d.ts.map +0 -1
- package/dist/commands/channel/channel-list-view.service.js +0 -53
- package/dist/commands/channel/channel-list-view.service.js.map +0 -1
- package/dist/commands/channel/index.d.ts +0 -21
- package/dist/commands/channel/index.d.ts.map +0 -1
- package/dist/commands/channel/index.js +0 -115
- package/dist/commands/channel/index.js.map +0 -1
- package/dist/commands/platform-auth/index.d.ts +0 -2
- package/dist/commands/platform-auth/index.js +0 -2
- package/dist/commands/platform-auth/services/account-status.service.d.ts +0 -19
- package/dist/commands/platform-auth/services/account-status.service.d.ts.map +0 -1
- package/dist/commands/platform-auth/services/account-status.service.js +0 -36
- package/dist/commands/platform-auth/services/account-status.service.js.map +0 -1
- package/dist/commands/platform-auth/services/platform-auth-commands.service.d.ts +0 -78
- package/dist/commands/platform-auth/services/platform-auth-commands.service.d.ts.map +0 -1
- package/dist/commands/platform-auth/services/platform-auth-commands.service.js +0 -297
- package/dist/commands/platform-auth/services/platform-auth-commands.service.js.map +0 -1
- package/dist/commands/platform-auth/utils/payload.utils.d.ts +0 -29
- package/dist/commands/platform-auth/utils/payload.utils.d.ts.map +0 -1
- package/dist/commands/platform-auth/utils/payload.utils.js +0 -89
- package/dist/commands/platform-auth/utils/payload.utils.js.map +0 -1
- package/dist/commands/remote/index.d.ts +0 -48
- package/dist/commands/remote/index.d.ts.map +0 -1
- package/dist/commands/remote/index.js +0 -176
- package/dist/commands/remote/index.js.map +0 -1
- package/dist/commands/remote/services/remote-access-host.service.d.ts +0 -42
- package/dist/commands/remote/services/remote-access-host.service.d.ts.map +0 -1
- package/dist/commands/remote/services/remote-access-host.service.js +0 -128
- package/dist/commands/remote/services/remote-access-host.service.js.map +0 -1
- package/dist/commands/remote/services/remote-service-control.service.d.ts +0 -34
- package/dist/commands/remote/services/remote-service-control.service.d.ts.map +0 -1
- package/dist/commands/remote/services/remote-service-control.service.js +0 -247
- package/dist/commands/remote/services/remote-service-control.service.js.map +0 -1
- package/dist/commands/remote/utils/platform-api-base.utils.d.ts +0 -15
- package/dist/commands/remote/utils/platform-api-base.utils.d.ts.map +0 -1
- package/dist/commands/remote/utils/platform-api-base.utils.js +0 -41
- package/dist/commands/remote/utils/platform-api-base.utils.js.map +0 -1
- package/dist/commands/remote/utils/remote-runtime-support.utils.d.ts +0 -16
- package/dist/commands/remote/utils/remote-runtime-support.utils.d.ts.map +0 -1
- package/dist/commands/remote/utils/remote-runtime-support.utils.js +0 -82
- package/dist/commands/remote/utils/remote-runtime-support.utils.js.map +0 -1
- package/dist/commands/service/index.d.ts +0 -17
- package/dist/commands/service/index.d.ts.map +0 -1
- package/dist/commands/service/index.js +0 -33
- package/dist/commands/service/index.js.map +0 -1
- package/dist/commands/service/services/autostart/host-autostart-command.service.d.ts +0 -30
- package/dist/commands/service/services/autostart/host-autostart-command.service.d.ts.map +0 -1
- package/dist/commands/service/services/autostart/host-autostart-command.service.js +0 -160
- package/dist/commands/service/services/autostart/host-autostart-command.service.js.map +0 -1
- package/dist/commands/service/services/autostart/host-autostart-runtime.service.d.ts +0 -24
- package/dist/commands/service/services/autostart/host-autostart-runtime.service.d.ts.map +0 -1
- package/dist/commands/service/services/autostart/host-autostart-runtime.service.js +0 -55
- package/dist/commands/service/services/autostart/host-autostart-runtime.service.js.map +0 -1
- package/dist/commands/service/services/autostart/host-autostart.service.d.ts +0 -42
- package/dist/commands/service/services/autostart/host-autostart.service.d.ts.map +0 -1
- package/dist/commands/service/services/autostart/host-autostart.service.js +0 -50
- package/dist/commands/service/services/autostart/host-autostart.service.js.map +0 -1
- package/dist/commands/service/services/autostart/linux-systemd-autostart.service.d.ts +0 -49
- package/dist/commands/service/services/autostart/linux-systemd-autostart.service.d.ts.map +0 -1
- package/dist/commands/service/services/autostart/linux-systemd-autostart.service.js +0 -435
- package/dist/commands/service/services/autostart/linux-systemd-autostart.service.js.map +0 -1
- package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.d.ts +0 -55
- package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.d.ts.map +0 -1
- package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.js +0 -407
- package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.js.map +0 -1
- package/dist/commands/service/services/autostart/windows-task-autostart.service.d.ts +0 -55
- package/dist/commands/service/services/autostart/windows-task-autostart.service.d.ts.map +0 -1
- package/dist/commands/service/services/autostart/windows-task-autostart.service.js +0 -406
- package/dist/commands/service/services/autostart/windows-task-autostart.service.js.map +0 -1
- package/dist/commands/service/types/autostart/host-autostart.types.d.ts +0 -65
- package/dist/commands/service/types/autostart/host-autostart.types.d.ts.map +0 -1
- package/dist/launcher/npm-runtime-bundle-layout.store.d.ts +0 -24
- package/dist/launcher/npm-runtime-bundle-layout.store.d.ts.map +0 -1
- package/dist/launcher/npm-runtime-bundle-layout.store.js +0 -39
- package/dist/launcher/npm-runtime-bundle-layout.store.js.map +0 -1
- package/dist/launcher/npm-runtime-bundle-manifest.service.d.ts +0 -10
- package/dist/launcher/npm-runtime-bundle-manifest.service.d.ts.map +0 -1
- package/dist/launcher/npm-runtime-bundle-manifest.service.js +0 -41
- package/dist/launcher/npm-runtime-bundle-manifest.service.js.map +0 -1
- package/dist/launcher/npm-runtime-bundle.service.d.ts +0 -48
- package/dist/launcher/npm-runtime-bundle.service.d.ts.map +0 -1
- package/dist/launcher/npm-runtime-bundle.service.js +0 -152
- package/dist/launcher/npm-runtime-bundle.service.js.map +0 -1
- package/dist/launcher/npm-runtime-bundle.types.d.ts +0 -50
- package/dist/launcher/npm-runtime-bundle.types.d.ts.map +0 -1
- package/dist/launcher/npm-runtime-update-command.service.d.ts +0 -16
- package/dist/launcher/npm-runtime-update-command.service.d.ts.map +0 -1
- package/dist/launcher/npm-runtime-update-command.service.js +0 -120
- package/dist/launcher/npm-runtime-update-command.service.js.map +0 -1
- package/dist/launcher/npm-runtime-update-source.service.d.ts +0 -22
- package/dist/launcher/npm-runtime-update-source.service.d.ts.map +0 -1
- package/dist/launcher/npm-runtime-update-source.service.js +0 -61
- package/dist/launcher/npm-runtime-update-source.service.js.map +0 -1
- package/dist/launcher/npm-runtime-update-state.store.d.ts +0 -18
- package/dist/launcher/npm-runtime-update-state.store.d.ts.map +0 -1
- package/dist/launcher/npm-runtime-update-state.store.js +0 -94
- package/dist/launcher/npm-runtime-update-state.store.js.map +0 -1
- package/dist/launcher/npm-runtime-update.manager.d.ts +0 -43
- package/dist/launcher/npm-runtime-update.manager.d.ts.map +0 -1
- package/dist/launcher/npm-runtime-update.manager.js +0 -185
- package/dist/launcher/npm-runtime-update.manager.js.map +0 -1
- package/dist/launcher/npm-runtime-update.service.d.ts +0 -55
- package/dist/launcher/npm-runtime-update.service.d.ts.map +0 -1
- package/dist/launcher/npm-runtime-update.service.js +0 -185
- package/dist/launcher/npm-runtime-update.service.js.map +0 -1
- package/dist/service-runtime.service.d.ts +0 -88
- package/dist/service-runtime.service.d.ts.map +0 -1
- package/dist/service-runtime.service.js +0 -366
- package/dist/service-runtime.service.js.map +0 -1
- package/dist/shared/controllers/gateway.controller.d.ts +0 -54
- package/dist/shared/controllers/gateway.controller.d.ts.map +0 -1
- package/dist/shared/controllers/gateway.controller.js +0 -162
- package/dist/shared/controllers/gateway.controller.js.map +0 -1
- package/dist/shared/services/gateway/gateway-restart-wake.service.d.ts +0 -13
- package/dist/shared/services/gateway/gateway-restart-wake.service.d.ts.map +0 -1
- package/dist/shared/services/gateway/gateway-restart-wake.service.js +0 -99
- package/dist/shared/services/gateway/gateway-restart-wake.service.js.map +0 -1
- package/dist/shared/services/gateway/managers/gateway-extension.manager.d.ts +0 -29
- package/dist/shared/services/gateway/managers/gateway-extension.manager.d.ts.map +0 -1
- package/dist/shared/services/gateway/managers/gateway-extension.manager.js +0 -78
- package/dist/shared/services/gateway/managers/gateway-extension.manager.js.map +0 -1
- package/dist/shared/services/gateway/managers/gateway-remote.manager.d.ts +0 -23
- package/dist/shared/services/gateway/managers/gateway-remote.manager.d.ts.map +0 -1
- package/dist/shared/services/gateway/managers/gateway-remote.manager.js +0 -28
- package/dist/shared/services/gateway/managers/gateway-remote.manager.js.map +0 -1
- package/dist/shared/services/gateway/nextclaw-app.service.d.ts +0 -18
- package/dist/shared/services/gateway/nextclaw-app.service.d.ts.map +0 -1
- package/dist/shared/services/gateway/nextclaw-app.service.js +0 -44
- package/dist/shared/services/gateway/nextclaw-app.service.js.map +0 -1
- package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.d.ts +0 -85
- package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.d.ts.map +0 -1
- package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.js +0 -278
- package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.js.map +0 -1
- package/dist/shared/services/gateway/service-bootstrap-status.service.d.ts +0 -33
- package/dist/shared/services/gateway/service-bootstrap-status.service.d.ts.map +0 -1
- package/dist/shared/services/gateway/service-bootstrap-status.service.js +0 -144
- package/dist/shared/services/gateway/service-bootstrap-status.service.js.map +0 -1
- package/dist/shared/services/gateway/service-startup-support.service.d.ts +0 -35
- package/dist/shared/services/gateway/service-startup-support.service.d.ts.map +0 -1
- package/dist/shared/services/gateway/service-startup-support.service.js +0 -85
- package/dist/shared/services/gateway/service-startup-support.service.js.map +0 -1
- package/dist/shared/services/gateway/utils/cron-job-handler.utils.d.ts +0 -18
- package/dist/shared/services/gateway/utils/cron-job-handler.utils.d.ts.map +0 -1
- package/dist/shared/services/gateway/utils/cron-job-handler.utils.js +0 -56
- package/dist/shared/services/gateway/utils/cron-job-handler.utils.js.map +0 -1
- package/dist/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.d.ts +0 -10
- package/dist/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.d.ts.map +0 -1
- package/dist/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.js +0 -12
- package/dist/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.js.map +0 -1
- package/dist/shared/services/marketplace/service-marketplace-installer.service.d.ts +0 -29
- package/dist/shared/services/marketplace/service-marketplace-installer.service.d.ts.map +0 -1
- package/dist/shared/services/marketplace/service-marketplace-installer.service.js +0 -87
- package/dist/shared/services/marketplace/service-marketplace-installer.service.js.map +0 -1
- package/dist/shared/services/marketplace/service-mcp-marketplace-ops.d.ts +0 -40
- package/dist/shared/services/marketplace/service-mcp-marketplace-ops.d.ts.map +0 -1
- package/dist/shared/services/marketplace/service-mcp-marketplace-ops.js +0 -69
- package/dist/shared/services/marketplace/service-mcp-marketplace-ops.js.map +0 -1
- package/dist/shared/services/restart/restart-coordinator.service.d.ts +0 -31
- package/dist/shared/services/restart/restart-coordinator.service.d.ts.map +0 -1
- package/dist/shared/services/restart/restart-coordinator.service.js +0 -53
- package/dist/shared/services/restart/restart-coordinator.service.js.map +0 -1
- package/dist/shared/services/restart/runtime-restart-request.service.d.ts +0 -25
- package/dist/shared/services/restart/runtime-restart-request.service.d.ts.map +0 -1
- package/dist/shared/services/restart/runtime-restart-request.service.js +0 -44
- package/dist/shared/services/restart/runtime-restart-request.service.js.map +0 -1
- package/dist/shared/services/runtime/managed-service-supervisor.service.d.ts +0 -85
- package/dist/shared/services/runtime/managed-service-supervisor.service.d.ts.map +0 -1
- package/dist/shared/services/runtime/managed-service-supervisor.service.js +0 -271
- package/dist/shared/services/runtime/managed-service-supervisor.service.js.map +0 -1
- package/dist/shared/services/runtime/nextclaw-distribution.service.d.ts +0 -11
- package/dist/shared/services/runtime/nextclaw-distribution.service.d.ts.map +0 -1
- package/dist/shared/services/runtime/nextclaw-distribution.service.js +0 -15
- package/dist/shared/services/runtime/nextclaw-distribution.service.js.map +0 -1
- package/dist/shared/services/runtime/runtime-command.service.d.ts +0 -42
- package/dist/shared/services/runtime/runtime-command.service.d.ts.map +0 -1
- package/dist/shared/services/runtime/runtime-command.service.js +0 -195
- package/dist/shared/services/runtime/runtime-command.service.js.map +0 -1
- package/dist/shared/services/runtime/runtime-config-init.service.d.ts +0 -5
- package/dist/shared/services/runtime/runtime-config-init.service.d.ts.map +0 -1
- package/dist/shared/services/runtime/runtime-config-init.service.js +0 -12
- package/dist/shared/services/runtime/runtime-config-init.service.js.map +0 -1
- package/dist/shared/services/runtime/service-managed-startup.service.d.ts +0 -95
- package/dist/shared/services/runtime/service-managed-startup.service.d.ts.map +0 -1
- package/dist/shared/services/runtime/service-managed-startup.service.js +0 -341
- package/dist/shared/services/runtime/service-managed-startup.service.js.map +0 -1
- package/dist/shared/services/runtime/utils/managed-service-routing.utils.d.ts +0 -31
- package/dist/shared/services/runtime/utils/managed-service-routing.utils.d.ts.map +0 -1
- package/dist/shared/services/runtime/utils/managed-service-routing.utils.js +0 -64
- package/dist/shared/services/runtime/utils/managed-service-routing.utils.js.map +0 -1
- package/dist/shared/services/runtime/utils/service-remote-runtime.utils.d.ts +0 -58
- package/dist/shared/services/runtime/utils/service-remote-runtime.utils.d.ts.map +0 -1
- package/dist/shared/services/runtime/utils/service-remote-runtime.utils.js +0 -184
- package/dist/shared/services/runtime/utils/service-remote-runtime.utils.js.map +0 -1
- package/dist/shared/services/ui/companion-runtime.service.d.ts +0 -36
- package/dist/shared/services/ui/companion-runtime.service.d.ts.map +0 -1
- package/dist/shared/services/ui/companion-runtime.service.js +0 -180
- package/dist/shared/services/ui/companion-runtime.service.js.map +0 -1
- package/dist/shared/services/ui/local-ui-discovery.service.d.ts +0 -20
- package/dist/shared/services/ui/local-ui-discovery.service.d.ts.map +0 -1
- package/dist/shared/services/ui/local-ui-discovery.service.js +0 -43
- package/dist/shared/services/ui/local-ui-discovery.service.js.map +0 -1
- package/dist/shared/services/ui/npm-runtime-update-host.service.d.ts +0 -41
- package/dist/shared/services/ui/npm-runtime-update-host.service.d.ts.map +0 -1
- package/dist/shared/services/ui/npm-runtime-update-host.service.js +0 -189
- package/dist/shared/services/ui/npm-runtime-update-host.service.js.map +0 -1
- package/dist/shared/services/ui/runtime-control-host.service.d.ts +0 -29
- package/dist/shared/services/ui/runtime-control-host.service.d.ts.map +0 -1
- package/dist/shared/services/ui/runtime-control-host.service.js +0 -91
- package/dist/shared/services/ui/runtime-control-host.service.js.map +0 -1
- package/dist/shared/services/ui/service-remote-access.service.d.ts +0 -26
- package/dist/shared/services/ui/service-remote-access.service.d.ts.map +0 -1
- package/dist/shared/services/ui/service-remote-access.service.js +0 -40
- package/dist/shared/services/ui/service-remote-access.service.js.map +0 -1
- package/dist/shared/services/ui/ui-bridge-api.service.d.ts +0 -17
- package/dist/shared/services/ui/ui-bridge-api.service.d.ts.map +0 -1
- package/dist/shared/services/ui/ui-bridge-api.service.js +0 -45
- package/dist/shared/services/ui/ui-bridge-api.service.js.map +0 -1
- package/dist/shared/services/workspace/workspace-manager.service.d.ts +0 -14
- package/dist/shared/services/workspace/workspace-manager.service.d.ts.map +0 -1
- package/dist/shared/services/workspace/workspace-manager.service.js +0 -86
- package/dist/shared/services/workspace/workspace-manager.service.js.map +0 -1
- package/dist/shared/stores/companion-runtime.store.d.ts +0 -16
- package/dist/shared/stores/companion-runtime.store.d.ts.map +0 -1
- package/dist/shared/stores/companion-runtime.store.js +0 -29
- package/dist/shared/stores/companion-runtime.store.js.map +0 -1
- package/dist/shared/stores/local-ui-runtime.store.d.ts +0 -26
- package/dist/shared/stores/local-ui-runtime.store.d.ts.map +0 -1
- package/dist/shared/stores/local-ui-runtime.store.js +0 -56
- package/dist/shared/stores/local-ui-runtime.store.js.map +0 -1
- package/dist/shared/stores/managed-service-state.store.d.ts +0 -46
- package/dist/shared/stores/managed-service-state.store.d.ts.map +0 -1
- package/dist/shared/stores/managed-service-state.store.js +0 -40
- package/dist/shared/stores/managed-service-state.store.js.map +0 -1
- package/dist/shared/stores/pending-restart.store.d.ts +0 -22
- package/dist/shared/stores/pending-restart.store.d.ts.map +0 -1
- package/dist/shared/stores/pending-restart.store.js +0 -37
- package/dist/shared/stores/pending-restart.store.js.map +0 -1
- package/dist/shared/types/cli.types.d.ts +0 -304
- package/dist/shared/types/cli.types.d.ts.map +0 -1
- package/dist/shared/types/distribution.types.d.ts +0 -11
- package/dist/shared/types/distribution.types.d.ts.map +0 -1
- package/dist/shared/utils/cli.utils.d.ts +0 -32
- package/dist/shared/utils/cli.utils.d.ts.map +0 -1
- package/dist/shared/utils/cli.utils.js +0 -254
- package/dist/shared/utils/cli.utils.js.map +0 -1
- package/dist/shared/utils/config-path.d.ts +0 -16
- package/dist/shared/utils/config-path.d.ts.map +0 -1
- package/dist/shared/utils/config-path.js +0 -169
- package/dist/shared/utils/config-path.js.map +0 -1
- package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.d.ts +0 -17
- package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.d.ts.map +0 -1
- package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.js +0 -48
- package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.js.map +0 -1
- package/dist/shared/utils/marketplace/service-marketplace-helpers.utils.d.ts +0 -15
- package/dist/shared/utils/marketplace/service-marketplace-helpers.utils.d.ts.map +0 -1
- package/dist/shared/utils/marketplace/service-marketplace-helpers.utils.js +0 -47
- package/dist/shared/utils/marketplace/service-marketplace-helpers.utils.js.map +0 -1
- package/dist/shared/utils/package/package-manifest.utils.d.ts +0 -5
- package/dist/shared/utils/package/package-manifest.utils.d.ts.map +0 -1
- package/dist/shared/utils/package/package-manifest.utils.js +0 -40
- package/dist/shared/utils/package/package-manifest.utils.js.map +0 -1
- package/dist/shared/utils/panel-app-client-sdk/panel-app-client-sdk-script.utils.d.ts +0 -5
- package/dist/shared/utils/panel-app-client-sdk/panel-app-client-sdk-script.utils.d.ts.map +0 -1
- package/dist/shared/utils/panel-app-client-sdk/panel-app-client-sdk-script.utils.js +0 -37
- package/dist/shared/utils/panel-app-client-sdk/panel-app-client-sdk-script.utils.js.map +0 -1
- package/dist/shared/utils/restart/restart-sentinel.utils.d.ts +0 -37
- package/dist/shared/utils/restart/restart-sentinel.utils.d.ts.map +0 -1
- package/dist/shared/utils/restart/restart-sentinel.utils.js +0 -76
- package/dist/shared/utils/restart/restart-sentinel.utils.js.map +0 -1
- package/dist/shared/utils/runtime-helpers.d.ts +0 -15
- package/dist/shared/utils/runtime-helpers.d.ts.map +0 -1
- package/dist/shared/utils/runtime-helpers.js +0 -28
- package/dist/shared/utils/runtime-helpers.js.map +0 -1
- package/dist/shared/utils/service-port-probe.utils.d.ts +0 -42
- package/dist/shared/utils/service-port-probe.utils.d.ts.map +0 -1
- package/dist/shared/utils/service-port-probe.utils.js +0 -166
- package/dist/shared/utils/service-port-probe.utils.js.map +0 -1
- package/dist/shared/utils/startup-trace.d.ts +0 -8
- package/dist/shared/utils/startup-trace.d.ts.map +0 -1
- package/dist/shared/utils/startup-trace.js +0 -39
- package/dist/shared/utils/startup-trace.js.map +0 -1
- package/dist/shared/utils/top-level-nextclaw-command-env.utils.d.ts +0 -5
- package/dist/shared/utils/top-level-nextclaw-command-env.utils.d.ts.map +0 -1
- package/dist/shared/utils/top-level-nextclaw-command-env.utils.js +0 -12
- package/dist/shared/utils/top-level-nextclaw-command-env.utils.js.map +0 -1
- /package/dist/{shared/types → types}/cli.types.js +0 -0
- /package/dist/{shared/types → types}/distribution.types.js +0 -0
- /package/dist/{commands/service/types/autostart → types}/host-autostart.types.js +0 -0
- /package/dist/{launcher → types}/npm-runtime-bundle.types.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-auth-commands.service.js","names":[],"sources":["../../../src/services/platform-auth/platform-auth-commands.service.ts"],"sourcesContent":["import { getConfigPath, loadConfig, saveConfig } from \"@nextclaw/core\";\nimport { createInterface } from \"node:readline\";\nimport { buildPlatformApiBaseErrorMessage, resolvePlatformApiBase } from \"@nextclaw-service/controllers/commands/remote-command.controller.js\";\nimport {\n readBrowserAuthPollPayload,\n readBrowserAuthStartPayload,\n readLoginPayload,\n readPlatformAuthResultPayload,\n readPlatformErrorMessage,\n readPlatformUserPayload\n} from \"@nextclaw-service/utils/platform-auth/payload.utils.js\";\nimport { printAccountStatus, printUsernameUpdated, toAccountStatusView } from \"./account-status.service.js\";\nimport type { AccountCommandOptions, AccountSetUsernameCommandOptions, LoginCommandOptions } from \"@nextclaw-service/types/cli.types.js\";\nimport { openBrowser, prompt } from \"@nextclaw-service/utils/cli.utils.js\";\n\ntype NextclawProviderConfig = {\n displayName?: string;\n apiKey?: string;\n apiBase?: string | null;\n extraHeaders?: Record<string, string> | null;\n wireApi?: \"auto\" | \"chat\" | \"responses\";\n models?: string[];\n};\n\nexport type PlatformLoginResult = {\n token: string;\n role: string;\n email: string;\n platformBase: string;\n v1Base: string;\n};\n\nexport type PlatformUserView = {\n id: string;\n email: string;\n username: string | null;\n role: string;\n};\n\nexport type PlatformMeResult = {\n user: PlatformUserView;\n token: string;\n platformBase: string;\n v1Base: string;\n};\n\nexport type PlatformBrowserAuthStartResult = {\n sessionId: string;\n verificationUri: string;\n expiresAt: string;\n intervalMs: number;\n platformBase: string;\n v1Base: string;\n};\n\nexport type PlatformBrowserAuthPollResult =\n | {\n status: \"pending\";\n nextPollMs: number;\n }\n | {\n status: \"authorized\";\n token: string;\n role: string;\n email: string;\n platformBase: string;\n v1Base: string;\n }\n | {\n status: \"expired\";\n message: string;\n };\n\nfunction resolveProviderConfig(opts: LoginCommandOptions): {\n configPath: string;\n config: ReturnType<typeof loadConfig>;\n providers: Record<string, NextclawProviderConfig>;\n nextclawProvider: NextclawProviderConfig;\n platformBase: string;\n v1Base: string;\n inputApiBase: string;\n} {\n const configPath = getConfigPath();\n const config = loadConfig(configPath);\n const providers = config.providers as Record<string, NextclawProviderConfig>;\n const nextclawProvider = providers.nextclaw ?? {\n displayName: \"\",\n apiKey: \"\",\n apiBase: null,\n extraHeaders: null,\n wireApi: \"auto\",\n models: []\n };\n const configuredApiBase =\n typeof nextclawProvider.apiBase === \"string\" && nextclawProvider.apiBase.trim().length > 0\n ? nextclawProvider.apiBase.trim()\n : \"https://ai-gateway-api.nextclaw.io/v1\";\n const requestedApiBase =\n typeof opts.apiBase === \"string\" && opts.apiBase.trim().length > 0\n ? opts.apiBase.trim()\n : configuredApiBase;\n const { platformBase, v1Base, inputApiBase } = resolvePlatformApiBase({\n explicitApiBase: requestedApiBase,\n fallbackApiBase: \"https://ai-gateway-api.nextclaw.io/v1\"\n });\n return {\n configPath,\n config,\n providers,\n nextclawProvider,\n platformBase,\n v1Base,\n inputApiBase\n };\n}\n\nasync function resolveCredentials(opts: LoginCommandOptions): Promise<{ email: string; password: string }> {\n let email = typeof opts.email === \"string\" ? opts.email.trim() : \"\";\n let password = typeof opts.password === \"string\" ? opts.password : \"\";\n if (email && password) {\n return { email, password };\n }\n\n const rl = createInterface({\n input: process.stdin,\n output: process.stdout\n });\n try {\n if (!email) {\n email = (await prompt(rl, \"Email: \")).trim();\n }\n if (!password) {\n password = await prompt(rl, \"Password: \");\n }\n } finally {\n rl.close();\n }\n\n if (!email || !password) {\n throw new Error(\"Email and password are required.\");\n }\n return { email, password };\n}\n\nfunction persistPlatformToken(params: {\n configPath: string;\n config: ReturnType<typeof loadConfig>;\n providers: Record<string, NextclawProviderConfig>;\n nextclawProvider: NextclawProviderConfig;\n v1Base: string;\n token: string;\n}): void {\n const { configPath, config, providers, nextclawProvider, v1Base, token } = params;\n nextclawProvider.apiBase = v1Base;\n nextclawProvider.apiKey = token;\n providers.nextclaw = nextclawProvider;\n saveConfig(config, configPath);\n}\n\nexport class PlatformAuthCommands {\n private shouldUseBrowserLogin = (opts: LoginCommandOptions): boolean => {\n const email = typeof opts.email === \"string\" ? opts.email.trim() : \"\";\n const password = typeof opts.password === \"string\" ? opts.password : \"\";\n return !email && !password;\n };\n\n private waitFor = async (delayMs: number): Promise<void> => {\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n };\n\n private formatLoginDeadline = (expiresAt: string): string => {\n const value = Date.parse(expiresAt);\n return Number.isNaN(value) ? expiresAt : new Date(value).toLocaleString();\n };\n\n private printLoginSuccess = (result: PlatformLoginResult): void => {\n console.log(`✓ Logged in to NextClaw platform (${result.platformBase})`);\n console.log(`✓ Account: ${result.email} (${result.role})`);\n console.log(\"✓ Token saved into providers.nextclaw.apiKey\");\n };\n\n private printBrowserLoginIntro = (params: {\n verificationUri: string;\n expiresAt: string;\n open: boolean;\n openedBrowser: boolean;\n }): void => {\n const {\n expiresAt,\n open,\n openedBrowser,\n verificationUri\n } = params;\n const expiresText = this.formatLoginDeadline(expiresAt);\n console.log(\"NextClaw browser sign-in\");\n console.log(`Open this link to continue: ${verificationUri}`);\n if (open) {\n if (openedBrowser) {\n console.log(\"✓ Opened the default browser. Finish sign-in there and this terminal will complete automatically.\");\n } else {\n console.log(\"Browser did not open automatically. Open the link above in any browser to continue.\");\n }\n } else {\n console.log(\"Automatic browser opening is disabled. Open the link above in any browser to continue.\");\n }\n console.log(\"This link can be opened on this machine or on another device if your CLI is running remotely.\");\n console.log(`Waiting for authorization until ${expiresText}...`);\n };\n\n private waitForBrowserLoginResult = async (params: {\n apiBase?: string;\n sessionId: string;\n }): Promise<PlatformLoginResult> => {\n while (true) {\n const result = await this.pollBrowserAuth({\n apiBase: params.apiBase,\n sessionId: params.sessionId\n });\n if (result.status === \"pending\") {\n await this.waitFor(result.nextPollMs);\n continue;\n }\n if (result.status === \"expired\") {\n throw new Error(`${result.message} Run \\`nextclaw login\\` again to generate a new sign-in link.`);\n }\n return {\n token: result.token,\n role: result.role,\n email: result.email,\n platformBase: result.platformBase,\n v1Base: result.v1Base\n };\n }\n };\n\n private loginWithBrowserResult = async (opts: LoginCommandOptions = {}): Promise<PlatformLoginResult> => {\n const startResult = await this.startBrowserAuth({\n apiBase: opts.apiBase\n });\n const shouldOpenBrowser = opts.open !== false;\n const openedBrowser = shouldOpenBrowser ? openBrowser(startResult.verificationUri) : false;\n this.printBrowserLoginIntro({\n verificationUri: startResult.verificationUri,\n expiresAt: startResult.expiresAt,\n open: shouldOpenBrowser,\n openedBrowser\n });\n const result = await this.waitForBrowserLoginResult({\n apiBase: opts.apiBase,\n sessionId: startResult.sessionId\n });\n console.log(\"✓ Browser authorization completed.\");\n return result;\n };\n\n private readStoredToken = (params: { apiBase?: string } = {}): {\n configPath: string;\n config: ReturnType<typeof loadConfig>;\n providers: Record<string, NextclawProviderConfig>;\n nextclawProvider: NextclawProviderConfig;\n platformBase: string;\n v1Base: string;\n inputApiBase: string;\n token: string;\n } => {\n const resolved = resolveProviderConfig({ apiBase: params.apiBase });\n const token = resolved.nextclawProvider.apiKey?.trim() ?? \"\";\n if (!token) {\n throw new Error(\"Not logged in. Run `nextclaw login` first.\");\n }\n return {\n ...resolved,\n token\n };\n };\n\n loginResult = async (opts: LoginCommandOptions = {}): Promise<PlatformLoginResult> => {\n const { configPath, config, providers, nextclawProvider, platformBase, v1Base, inputApiBase } = resolveProviderConfig(opts);\n const { email, password } = await resolveCredentials(opts);\n const response = await fetch(`${platformBase}/platform/auth/login`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({ email, password })\n });\n const raw = await response.text();\n\n if (!response.ok) {\n throw new Error(buildPlatformApiBaseErrorMessage(inputApiBase, readPlatformErrorMessage(raw, response.status)));\n }\n\n const { token, role } = readLoginPayload(raw);\n persistPlatformToken({\n configPath,\n config,\n providers,\n nextclawProvider,\n v1Base,\n token\n });\n\n return {\n token,\n role,\n email,\n platformBase,\n v1Base\n };\n };\n\n startBrowserAuth = async (opts: Pick<LoginCommandOptions, \"apiBase\"> = {}): Promise<PlatformBrowserAuthStartResult> => {\n const { platformBase, v1Base, inputApiBase } = resolveProviderConfig(opts);\n const response = await fetch(`${platformBase}/platform/auth/browser/start`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({})\n });\n const raw = await response.text();\n if (!response.ok) {\n throw new Error(buildPlatformApiBaseErrorMessage(inputApiBase, readPlatformErrorMessage(raw, response.status)));\n }\n const result = readBrowserAuthStartPayload(raw);\n return {\n ...result,\n platformBase,\n v1Base\n };\n };\n\n pollBrowserAuth = async (params: {\n apiBase?: string;\n sessionId: string;\n }): Promise<PlatformBrowserAuthPollResult> => {\n const { configPath, config, providers, nextclawProvider, platformBase, v1Base, inputApiBase } = resolveProviderConfig({\n apiBase: params.apiBase\n });\n const response = await fetch(`${platformBase}/platform/auth/browser/poll`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n sessionId: params.sessionId\n })\n });\n const raw = await response.text();\n if (!response.ok) {\n throw new Error(buildPlatformApiBaseErrorMessage(inputApiBase, readPlatformErrorMessage(raw, response.status)));\n }\n const result = readBrowserAuthPollPayload(raw);\n if (result.status === \"pending\") {\n return {\n status: \"pending\",\n nextPollMs: result.nextPollMs ?? 1500\n };\n }\n if (result.status === \"expired\") {\n return {\n status: \"expired\",\n message: result.message ?? \"Authorization session expired.\"\n };\n }\n\n persistPlatformToken({\n configPath,\n config,\n providers,\n nextclawProvider,\n v1Base,\n token: result.token ?? \"\"\n });\n return {\n status: \"authorized\",\n token: result.token ?? \"\",\n role: result.role ?? \"user\",\n email: result.email ?? \"\",\n platformBase,\n v1Base\n };\n };\n\n login = async (opts: LoginCommandOptions = {}): Promise<void> => {\n const result = this.shouldUseBrowserLogin(opts)\n ? await this.loginWithBrowserResult(opts)\n : await this.loginResult(opts);\n this.printLoginSuccess(result);\n };\n\n me = async (params: { apiBase?: string } = {}): Promise<PlatformMeResult> => {\n const { platformBase, v1Base, inputApiBase, token } = this.readStoredToken(params);\n const response = await fetch(`${platformBase}/platform/auth/me`, {\n headers: {\n Authorization: `Bearer ${token}`\n }\n });\n const raw = await response.text();\n if (!response.ok) {\n throw new Error(buildPlatformApiBaseErrorMessage(inputApiBase, readPlatformErrorMessage(raw, response.status)));\n }\n return {\n user: readPlatformUserPayload(raw),\n token,\n platformBase,\n v1Base\n };\n };\n\n updateProfile = async (params: { username: string; apiBase?: string }): Promise<PlatformMeResult> => {\n const {\n configPath,\n config,\n providers,\n nextclawProvider,\n platformBase,\n v1Base,\n inputApiBase,\n token\n } = this.readStoredToken(params);\n const response = await fetch(`${platformBase}/platform/auth/profile`, {\n method: \"PATCH\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n username: params.username\n })\n });\n const raw = await response.text();\n if (!response.ok) {\n throw new Error(buildPlatformApiBaseErrorMessage(inputApiBase, readPlatformErrorMessage(raw, response.status)));\n }\n const result = readPlatformAuthResultPayload(raw);\n persistPlatformToken({\n configPath,\n config,\n providers,\n nextclawProvider,\n v1Base,\n token: result.token\n });\n return {\n user: result.user,\n token: result.token,\n platformBase,\n v1Base\n };\n };\n\n logout = (): { cleared: boolean } => {\n const { configPath, config, providers, nextclawProvider } = resolveProviderConfig({});\n const cleared = Boolean(nextclawProvider.apiKey?.trim());\n nextclawProvider.apiKey = \"\";\n providers.nextclaw = nextclawProvider;\n saveConfig(config, configPath);\n return { cleared };\n };\n\n accountStatus = async (opts: AccountCommandOptions = {}): Promise<void> => {\n const result = await this.me({ apiBase: opts.apiBase });\n const view = toAccountStatusView(result);\n if (opts.json) {\n console.log(JSON.stringify(view, null, 2));\n return;\n }\n printAccountStatus(view);\n };\n\n accountSetUsername = async (opts: AccountSetUsernameCommandOptions & { username: string }): Promise<void> => {\n const result = await this.updateProfile({\n apiBase: opts.apiBase,\n username: opts.username\n });\n const view = toAccountStatusView(result);\n if (opts.json) {\n console.log(JSON.stringify(view, null, 2));\n return;\n }\n printUsernameUpdated(view);\n printAccountStatus(view);\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { PlatformAuthCommands } from "../platform-auth/platform-auth-commands.service.js";
|
|
2
|
+
import { RemoteCommands } from "../../controllers/commands/remote-command.controller.js";
|
|
3
|
+
import { RemoteAccessHostServiceCommands, RemoteRuntimeController } from "./remote-service-control.service.js";
|
|
4
|
+
import { RemoteAccessView, RemoteBrowserAuthPollRequest, RemoteBrowserAuthPollResult, RemoteBrowserAuthStartRequest, RemoteBrowserAuthStartResult, RemoteDoctorView, RemoteServiceAction, RemoteServiceActionResult, RemoteSettingsUpdateRequest, UiRemoteAccessHost } from "@nextclaw/server";
|
|
5
|
+
|
|
6
|
+
//#region src/services/remote/remote-access-host.service.d.ts
|
|
7
|
+
declare class RemoteAccessHost implements UiRemoteAccessHost {
|
|
8
|
+
private readonly deps;
|
|
9
|
+
constructor(deps: {
|
|
10
|
+
serviceCommands: RemoteAccessHostServiceCommands;
|
|
11
|
+
requestManagedServiceRestart: (options?: {
|
|
12
|
+
uiPort?: number;
|
|
13
|
+
reason?: string;
|
|
14
|
+
}) => Promise<void>;
|
|
15
|
+
remoteCommands: RemoteCommands;
|
|
16
|
+
platformAuthCommands: PlatformAuthCommands;
|
|
17
|
+
currentUi?: {
|
|
18
|
+
host: string;
|
|
19
|
+
port: number;
|
|
20
|
+
};
|
|
21
|
+
remoteRuntimeController?: RemoteRuntimeController | null;
|
|
22
|
+
});
|
|
23
|
+
getStatus: () => RemoteAccessView;
|
|
24
|
+
login: (input: {
|
|
25
|
+
email: string;
|
|
26
|
+
password: string;
|
|
27
|
+
apiBase?: string;
|
|
28
|
+
}) => Promise<RemoteAccessView>;
|
|
29
|
+
startBrowserAuth: (input: RemoteBrowserAuthStartRequest) => Promise<RemoteBrowserAuthStartResult>;
|
|
30
|
+
pollBrowserAuth: (input: RemoteBrowserAuthPollRequest) => Promise<RemoteBrowserAuthPollResult>;
|
|
31
|
+
logout: () => RemoteAccessView;
|
|
32
|
+
updateSettings: (input: RemoteSettingsUpdateRequest) => RemoteAccessView;
|
|
33
|
+
runDoctor: () => Promise<RemoteDoctorView>;
|
|
34
|
+
controlService: (action: RemoteServiceAction) => Promise<RemoteServiceActionResult>;
|
|
35
|
+
private readAccountView;
|
|
36
|
+
updateProfile: (input: {
|
|
37
|
+
username: string;
|
|
38
|
+
}) => Promise<RemoteAccessView>;
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { RemoteAccessHost };
|
|
42
|
+
//# sourceMappingURL=remote-access-host.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-access-host.service.d.ts","names":[],"sources":["../../../src/services/remote/remote-access-host.service.ts"],"mappings":";;;;;;cAmDa,gBAAA,YAA4B,kBAAA;EAAA,iBAEpB,IAAA;cAAA,IAAA;IACf,eAAA,EAAiB,+BAAA;IACjB,4BAAA,GAA+B,OAAA;MAAY,MAAA;MAAiB,MAAA;IAAA,MAAsB,OAAA;IAClF,cAAA,EAAgB,cAAA;IAChB,oBAAA,EAAsB,oBAAA;IACtB,SAAA;MACE,IAAA;MACA,IAAA;IAAA;IAEF,uBAAA,GAA0B,uBAAA;EAAA;EAI9B,SAAA,QAAgB,gBAAA;EAuBhB,KAAA,GAAe,KAAA;IACb,KAAA;IACA,QAAA;IACA,OAAA;EAAA,MACE,OAAA,CAAQ,gBAAA;EAKZ,gBAAA,GAA0B,KAAA,EAAO,6BAAA,KAAgC,OAAA,CAAQ,4BAAA;EAYzE,eAAA,GAAyB,KAAA,EAAO,4BAAA,KAA+B,OAAA,CAAQ,2BAAA;EAmBvE,MAAA,QAAa,gBAAA;EAKb,cAAA,GAAkB,KAAA,EAAO,2BAAA,KAA8B,gBAAA;EASvD,SAAA,QAAsB,OAAA,CAAQ,gBAAA;EAY9B,cAAA,GAAwB,MAAA,EAAQ,mBAAA,KAAsB,OAAA,CAAQ,yBAAA;EAAA,QAItD,eAAA;EA4BR,aAAA,GAAuB,KAAA;IAAS,QAAA;EAAA,MAAqB,OAAA,CAAQ,gBAAA;AAAA"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { controlRemoteService, resolveRemoteServiceView } from "./remote-service-control.service.js";
|
|
2
|
+
import { getConfigPath, loadConfig } from "@nextclaw/core";
|
|
3
|
+
import { readPlatformSessionTokenState } from "@nextclaw/remote";
|
|
4
|
+
//#region src/services/remote/remote-access-host.service.ts
|
|
5
|
+
function normalizeOptionalString(value) {
|
|
6
|
+
if (typeof value !== "string") return null;
|
|
7
|
+
const trimmed = value.trim();
|
|
8
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
9
|
+
}
|
|
10
|
+
function toRemoteRuntimeView(runtime) {
|
|
11
|
+
if (!runtime) return null;
|
|
12
|
+
return {
|
|
13
|
+
enabled: runtime.enabled,
|
|
14
|
+
mode: runtime.mode,
|
|
15
|
+
state: runtime.state,
|
|
16
|
+
deviceId: runtime.deviceId,
|
|
17
|
+
deviceName: runtime.deviceName,
|
|
18
|
+
platformBase: runtime.platformBase,
|
|
19
|
+
localOrigin: runtime.localOrigin,
|
|
20
|
+
lastConnectedAt: runtime.lastConnectedAt,
|
|
21
|
+
lastError: runtime.lastError,
|
|
22
|
+
updatedAt: runtime.updatedAt
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
var RemoteAccessHost = class {
|
|
26
|
+
constructor(deps) {
|
|
27
|
+
this.deps = deps;
|
|
28
|
+
}
|
|
29
|
+
getStatus = () => {
|
|
30
|
+
const config = loadConfig(getConfigPath());
|
|
31
|
+
const status = this.deps.remoteCommands.getStatusView();
|
|
32
|
+
return {
|
|
33
|
+
account: this.readAccountView({
|
|
34
|
+
token: normalizeOptionalString(config.providers.nextclaw?.apiKey),
|
|
35
|
+
apiBase: normalizeOptionalString(config.providers.nextclaw?.apiBase),
|
|
36
|
+
platformBase: status.platformBase
|
|
37
|
+
}),
|
|
38
|
+
settings: {
|
|
39
|
+
enabled: config.remote.enabled,
|
|
40
|
+
deviceName: config.remote.deviceName,
|
|
41
|
+
platformApiBase: config.remote.platformApiBase
|
|
42
|
+
},
|
|
43
|
+
service: resolveRemoteServiceView(this.deps.currentUi),
|
|
44
|
+
localOrigin: status.localOrigin,
|
|
45
|
+
configuredEnabled: status.configuredEnabled,
|
|
46
|
+
platformBase: status.platformBase,
|
|
47
|
+
runtime: toRemoteRuntimeView(status.runtime)
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
login = async (input) => {
|
|
51
|
+
await this.deps.platformAuthCommands.loginResult(input);
|
|
52
|
+
return this.getStatus();
|
|
53
|
+
};
|
|
54
|
+
startBrowserAuth = async (input) => {
|
|
55
|
+
const result = await this.deps.platformAuthCommands.startBrowserAuth({ apiBase: input.apiBase });
|
|
56
|
+
return {
|
|
57
|
+
sessionId: result.sessionId,
|
|
58
|
+
verificationUri: result.verificationUri,
|
|
59
|
+
expiresAt: result.expiresAt,
|
|
60
|
+
intervalMs: result.intervalMs
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
pollBrowserAuth = async (input) => {
|
|
64
|
+
const config = loadConfig(getConfigPath());
|
|
65
|
+
const result = await this.deps.platformAuthCommands.pollBrowserAuth({
|
|
66
|
+
apiBase: normalizeOptionalString(input.apiBase) ?? normalizeOptionalString(config.remote.platformApiBase) ?? normalizeOptionalString(config.providers.nextclaw?.apiBase) ?? void 0,
|
|
67
|
+
sessionId: input.sessionId
|
|
68
|
+
});
|
|
69
|
+
if (result.status !== "authorized") return result;
|
|
70
|
+
return {
|
|
71
|
+
status: "authorized",
|
|
72
|
+
email: result.email,
|
|
73
|
+
role: result.role
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
logout = () => {
|
|
77
|
+
this.deps.platformAuthCommands.logout();
|
|
78
|
+
return this.getStatus();
|
|
79
|
+
};
|
|
80
|
+
updateSettings = (input) => {
|
|
81
|
+
this.deps.remoteCommands.updateConfig({
|
|
82
|
+
enabled: input.enabled,
|
|
83
|
+
apiBase: input.platformApiBase,
|
|
84
|
+
name: input.deviceName
|
|
85
|
+
});
|
|
86
|
+
return this.getStatus();
|
|
87
|
+
};
|
|
88
|
+
runDoctor = async () => {
|
|
89
|
+
const report = await this.deps.remoteCommands.getDoctorView();
|
|
90
|
+
return {
|
|
91
|
+
generatedAt: report.generatedAt,
|
|
92
|
+
checks: report.checks,
|
|
93
|
+
snapshot: {
|
|
94
|
+
configuredEnabled: report.snapshot.configuredEnabled,
|
|
95
|
+
runtime: toRemoteRuntimeView(report.snapshot.runtime)
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
controlService = async (action) => {
|
|
100
|
+
return controlRemoteService(action, this.deps);
|
|
101
|
+
};
|
|
102
|
+
readAccountView = (params) => {
|
|
103
|
+
const { apiBase, platformBase, token } = params;
|
|
104
|
+
const tokenState = readPlatformSessionTokenState(token);
|
|
105
|
+
if (!tokenState.valid) return {
|
|
106
|
+
loggedIn: false,
|
|
107
|
+
apiBase,
|
|
108
|
+
platformBase
|
|
109
|
+
};
|
|
110
|
+
const payload = tokenState.payload;
|
|
111
|
+
return {
|
|
112
|
+
loggedIn: true,
|
|
113
|
+
email: typeof payload?.email === "string" ? payload.email : void 0,
|
|
114
|
+
username: typeof payload?.username === "string" ? payload.username : void 0,
|
|
115
|
+
role: typeof payload?.role === "string" ? payload.role : void 0,
|
|
116
|
+
apiBase,
|
|
117
|
+
platformBase
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
updateProfile = async (input) => {
|
|
121
|
+
await this.deps.platformAuthCommands.updateProfile({ username: input.username });
|
|
122
|
+
return this.getStatus();
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
//#endregion
|
|
126
|
+
export { RemoteAccessHost };
|
|
127
|
+
|
|
128
|
+
//# sourceMappingURL=remote-access-host.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-access-host.service.js","names":[],"sources":["../../../src/services/remote/remote-access-host.service.ts"],"sourcesContent":["import { getConfigPath, loadConfig } from \"@nextclaw/core\";\nimport { readPlatformSessionTokenState } from \"@nextclaw/remote\";\nimport type {\n RemoteAccessView,\n RemoteAccountView,\n RemoteBrowserAuthPollRequest,\n RemoteBrowserAuthPollResult,\n RemoteBrowserAuthStartRequest,\n RemoteBrowserAuthStartResult,\n RemoteDoctorView,\n RemoteRuntimeView,\n RemoteServiceAction,\n RemoteServiceActionResult,\n RemoteSettingsUpdateRequest,\n UiRemoteAccessHost\n} from \"@nextclaw/server\";\nimport type { PlatformAuthCommands } from \"@nextclaw-service/controllers/commands/platform-auth-command.controller.js\";\nimport type { RemoteCommands } from \"@nextclaw-service/controllers/commands/remote-command.controller.js\";\nimport {\n controlRemoteService,\n resolveRemoteServiceView,\n type RemoteAccessHostServiceCommands,\n type RemoteRuntimeController\n} from \"./remote-service-control.service.js\";\n\nfunction normalizeOptionalString(value: unknown): string | null {\n if (typeof value !== \"string\") {\n return null;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction toRemoteRuntimeView(runtime: ReturnType<RemoteCommands[\"getStatusView\"]>[\"runtime\"]): RemoteRuntimeView | null {\n if (!runtime) {\n return null;\n }\n return {\n enabled: runtime.enabled,\n mode: runtime.mode,\n state: runtime.state,\n deviceId: runtime.deviceId,\n deviceName: runtime.deviceName,\n platformBase: runtime.platformBase,\n localOrigin: runtime.localOrigin,\n lastConnectedAt: runtime.lastConnectedAt,\n lastError: runtime.lastError,\n updatedAt: runtime.updatedAt\n };\n}\n\nexport class RemoteAccessHost implements UiRemoteAccessHost {\n constructor(\n private readonly deps: {\n serviceCommands: RemoteAccessHostServiceCommands;\n requestManagedServiceRestart: (options?: { uiPort?: number; reason?: string }) => Promise<void>;\n remoteCommands: RemoteCommands;\n platformAuthCommands: PlatformAuthCommands;\n currentUi?: {\n host: string;\n port: number;\n };\n remoteRuntimeController?: RemoteRuntimeController | null;\n }\n ) {}\n\n getStatus = (): RemoteAccessView => {\n const config = loadConfig(getConfigPath());\n const status = this.deps.remoteCommands.getStatusView();\n const account = this.readAccountView({\n token: normalizeOptionalString(config.providers.nextclaw?.apiKey),\n apiBase: normalizeOptionalString(config.providers.nextclaw?.apiBase),\n platformBase: status.platformBase\n });\n return {\n account,\n settings: {\n enabled: config.remote.enabled,\n deviceName: config.remote.deviceName,\n platformApiBase: config.remote.platformApiBase\n },\n service: resolveRemoteServiceView(this.deps.currentUi),\n localOrigin: status.localOrigin,\n configuredEnabled: status.configuredEnabled,\n platformBase: status.platformBase,\n runtime: toRemoteRuntimeView(status.runtime)\n };\n };\n\n login = async (input: {\n email: string;\n password: string;\n apiBase?: string;\n }): Promise<RemoteAccessView> => {\n await this.deps.platformAuthCommands.loginResult(input);\n return this.getStatus();\n };\n\n startBrowserAuth = async (input: RemoteBrowserAuthStartRequest): Promise<RemoteBrowserAuthStartResult> => {\n const result = await this.deps.platformAuthCommands.startBrowserAuth({\n apiBase: input.apiBase\n });\n return {\n sessionId: result.sessionId,\n verificationUri: result.verificationUri,\n expiresAt: result.expiresAt,\n intervalMs: result.intervalMs\n };\n };\n\n pollBrowserAuth = async (input: RemoteBrowserAuthPollRequest): Promise<RemoteBrowserAuthPollResult> => {\n const config = loadConfig(getConfigPath());\n const result = await this.deps.platformAuthCommands.pollBrowserAuth({\n apiBase: normalizeOptionalString(input.apiBase)\n ?? normalizeOptionalString(config.remote.platformApiBase)\n ?? normalizeOptionalString(config.providers.nextclaw?.apiBase)\n ?? undefined,\n sessionId: input.sessionId\n });\n if (result.status !== \"authorized\") {\n return result;\n }\n return {\n status: \"authorized\",\n email: result.email,\n role: result.role\n };\n };\n\n logout = (): RemoteAccessView => {\n this.deps.platformAuthCommands.logout();\n return this.getStatus();\n };\n\n updateSettings = (input: RemoteSettingsUpdateRequest): RemoteAccessView => {\n this.deps.remoteCommands.updateConfig({\n enabled: input.enabled,\n apiBase: input.platformApiBase,\n name: input.deviceName\n });\n return this.getStatus();\n };\n\n runDoctor = async (): Promise<RemoteDoctorView> => {\n const report = await this.deps.remoteCommands.getDoctorView();\n return {\n generatedAt: report.generatedAt,\n checks: report.checks,\n snapshot: {\n configuredEnabled: report.snapshot.configuredEnabled,\n runtime: toRemoteRuntimeView(report.snapshot.runtime)\n }\n };\n };\n\n controlService = async (action: RemoteServiceAction): Promise<RemoteServiceActionResult> => {\n return controlRemoteService(action, this.deps);\n };\n\n private readAccountView = (params: {\n token: string | null;\n apiBase: string | null;\n platformBase: string | null;\n }): RemoteAccountView => {\n const { apiBase, platformBase, token } = params;\n const tokenState = readPlatformSessionTokenState(token);\n if (!tokenState.valid) {\n return {\n loggedIn: false,\n apiBase,\n platformBase\n };\n }\n const payload = tokenState.payload;\n const email = typeof payload?.email === \"string\" ? payload.email : undefined;\n const username = typeof payload?.username === \"string\" ? payload.username : undefined;\n const role = typeof payload?.role === \"string\" ? payload.role : undefined;\n return {\n loggedIn: true,\n email,\n username,\n role,\n apiBase,\n platformBase\n };\n };\n\n updateProfile = async (input: { username: string }): Promise<RemoteAccessView> => {\n await this.deps.platformAuthCommands.updateProfile({\n username: input.username\n });\n return this.getStatus();\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { resolveUiConfig } from "../../utils/cli.utils.js";
|
|
2
|
+
import { RemoteServiceAction, RemoteServiceActionResult, RemoteServiceView } from "@nextclaw/server";
|
|
3
|
+
|
|
4
|
+
//#region src/services/remote/remote-service-control.service.d.ts
|
|
5
|
+
type RemoteAccessHostServiceCommands = {
|
|
6
|
+
startService: (options: {
|
|
7
|
+
uiOverrides: Partial<ReturnType<typeof resolveUiConfig>>;
|
|
8
|
+
open: boolean;
|
|
9
|
+
}) => Promise<void>;
|
|
10
|
+
stopService: () => Promise<void>;
|
|
11
|
+
};
|
|
12
|
+
type RemoteRuntimeController = {
|
|
13
|
+
start: () => Promise<void> | null;
|
|
14
|
+
stop: () => Promise<void>;
|
|
15
|
+
restart: () => Promise<void>;
|
|
16
|
+
};
|
|
17
|
+
type CurrentUi = {
|
|
18
|
+
host: string;
|
|
19
|
+
port: number;
|
|
20
|
+
};
|
|
21
|
+
type RemoteServiceControlDeps = {
|
|
22
|
+
serviceCommands: RemoteAccessHostServiceCommands;
|
|
23
|
+
requestManagedServiceRestart: (options?: {
|
|
24
|
+
uiPort?: number;
|
|
25
|
+
reason?: string;
|
|
26
|
+
}) => Promise<void>;
|
|
27
|
+
currentUi?: CurrentUi;
|
|
28
|
+
remoteRuntimeController?: RemoteRuntimeController | null;
|
|
29
|
+
};
|
|
30
|
+
declare function resolveRemoteServiceView(currentUi?: CurrentUi): RemoteServiceView;
|
|
31
|
+
declare function controlRemoteService(action: RemoteServiceAction, deps: RemoteServiceControlDeps): Promise<RemoteServiceActionResult>;
|
|
32
|
+
//#endregion
|
|
33
|
+
export { RemoteAccessHostServiceCommands, RemoteRuntimeController, controlRemoteService, resolveRemoteServiceView };
|
|
34
|
+
//# sourceMappingURL=remote-service-control.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-service-control.service.d.ts","names":[],"sources":["../../../src/services/remote/remote-service-control.service.ts"],"mappings":";;;;KAOY,+BAAA;EACV,YAAA,GAAe,OAAA;IAAW,WAAA,EAAa,OAAA,CAAQ,UAAA,QAAkB,eAAA;IAAmB,IAAA;EAAA,MAAoB,OAAA;EACxG,WAAA,QAAmB,OAAA;AAAA;AAAA,KAGT,uBAAA;EACV,KAAA,QAAa,OAAA;EACb,IAAA,QAAY,OAAA;EACZ,OAAA,QAAe,OAAA;AAAA;AAAA,KAGZ,SAAA;EACH,IAAA;EACA,IAAA;AAAA;AAAA,KAGG,wBAAA;EACH,eAAA,EAAiB,+BAAA;EACjB,4BAAA,GAA+B,OAAA;IAAY,MAAA;IAAiB,MAAA;EAAA,MAAsB,OAAA;EAClF,SAAA,GAAY,SAAA;EACZ,uBAAA,GAA0B,uBAAA;AAAA;AAAA,iBA6MZ,wBAAA,CAAyB,SAAA,GAAY,SAAA,GAAY,iBAAA;AAAA,iBAI3C,oBAAA,CACpB,MAAA,EAAQ,mBAAA,EACR,IAAA,EAAM,wBAAA,GACL,OAAA,CAAQ,yBAAA"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { resolveUiApiBase, resolveUiConfig } from "../../utils/cli.utils.js";
|
|
2
|
+
import { managedServiceStateStore } from "../../stores/managed-service-state.store.js";
|
|
3
|
+
import { ManagedServiceSupervisor } from "../runtime/managed-service-supervisor.service.js";
|
|
4
|
+
import { getConfigPath, loadConfig } from "@nextclaw/core";
|
|
5
|
+
import { spawn } from "node:child_process";
|
|
6
|
+
//#region src/services/remote/remote-service-control.service.ts
|
|
7
|
+
const FORCED_PUBLIC_UI_HOST = "0.0.0.0";
|
|
8
|
+
var RemoteServiceControlService = class {
|
|
9
|
+
managedServiceSupervisor = new ManagedServiceSupervisor();
|
|
10
|
+
resolveView = (currentUi) => {
|
|
11
|
+
if (currentUi) return {
|
|
12
|
+
running: true,
|
|
13
|
+
currentProcess: true,
|
|
14
|
+
pid: process.pid,
|
|
15
|
+
uiUrl: resolveUiApiBase(currentUi.host, currentUi.port),
|
|
16
|
+
uiPort: currentUi.port
|
|
17
|
+
};
|
|
18
|
+
const serviceState = managedServiceStateStore.read();
|
|
19
|
+
const liveness = this.managedServiceSupervisor.resolveStateLiveness(serviceState);
|
|
20
|
+
const serviceRunning = Boolean(serviceState && liveness.running);
|
|
21
|
+
return {
|
|
22
|
+
running: serviceRunning,
|
|
23
|
+
currentProcess: Boolean(serviceRunning && serviceState?.pid === process.pid),
|
|
24
|
+
...serviceState?.pid ? { pid: serviceState.pid } : {},
|
|
25
|
+
...serviceState?.uiUrl ? { uiUrl: serviceState.uiUrl } : {},
|
|
26
|
+
...typeof serviceState?.uiPort === "number" ? { uiPort: serviceState.uiPort } : {}
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
control = async (action, deps) => {
|
|
30
|
+
if (deps.remoteRuntimeController) return this.controlCurrentProcessRuntime(action, deps.remoteRuntimeController);
|
|
31
|
+
return this.controlManagedService(action, deps);
|
|
32
|
+
};
|
|
33
|
+
controlCurrentProcessRuntime = async (action, controller) => {
|
|
34
|
+
if (action === "start") {
|
|
35
|
+
await controller.start();
|
|
36
|
+
return {
|
|
37
|
+
accepted: true,
|
|
38
|
+
action,
|
|
39
|
+
message: "Remote runtime started."
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
if (action === "stop") {
|
|
43
|
+
await controller.stop();
|
|
44
|
+
return {
|
|
45
|
+
accepted: true,
|
|
46
|
+
action,
|
|
47
|
+
message: "Remote runtime stopped."
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
await controller.restart();
|
|
51
|
+
return {
|
|
52
|
+
accepted: true,
|
|
53
|
+
action,
|
|
54
|
+
message: "Remote runtime restarted."
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
controlManagedService = async (action, deps) => {
|
|
58
|
+
const serviceState = this.resolveManagedServiceControlState();
|
|
59
|
+
const uiOverrides = this.resolveManagedUiOverrides();
|
|
60
|
+
if (action === "start") return this.startManagedService(action, deps, serviceState, uiOverrides);
|
|
61
|
+
if (!serviceState.running) return this.controlStoppedManagedService(action, deps, serviceState, uiOverrides);
|
|
62
|
+
if (serviceState.currentProcess) return this.controlCurrentManagedProcess(action, deps, uiOverrides);
|
|
63
|
+
return this.controlExternalManagedProcess(action, deps, uiOverrides);
|
|
64
|
+
};
|
|
65
|
+
resolveManagedServiceControlState = () => {
|
|
66
|
+
const state = managedServiceStateStore.read();
|
|
67
|
+
const liveness = this.managedServiceSupervisor.resolveStateLiveness(state);
|
|
68
|
+
const running = Boolean(state && liveness.running);
|
|
69
|
+
return {
|
|
70
|
+
currentProcess: Boolean(running && state?.pid === process.pid),
|
|
71
|
+
recordedProcessExists: Boolean(state && liveness.processExists),
|
|
72
|
+
running
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
startManagedService = async (action, deps, serviceState, uiOverrides) => {
|
|
76
|
+
if (serviceState.running) return {
|
|
77
|
+
accepted: true,
|
|
78
|
+
action,
|
|
79
|
+
message: serviceState.currentProcess ? "Managed service is already running for this UI." : "Managed service is already running."
|
|
80
|
+
};
|
|
81
|
+
if (serviceState.recordedProcessExists) return this.controlStaleManagedServiceProcess(action, deps, uiOverrides);
|
|
82
|
+
await deps.serviceCommands.startService({
|
|
83
|
+
uiOverrides,
|
|
84
|
+
open: false
|
|
85
|
+
});
|
|
86
|
+
return {
|
|
87
|
+
accepted: true,
|
|
88
|
+
action,
|
|
89
|
+
message: "Managed service started."
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
controlStoppedManagedService = async (action, deps, serviceState, uiOverrides) => {
|
|
93
|
+
if (serviceState.recordedProcessExists) return this.controlStaleManagedServiceProcess(action, deps, uiOverrides);
|
|
94
|
+
if (action === "restart") {
|
|
95
|
+
await deps.serviceCommands.startService({
|
|
96
|
+
uiOverrides,
|
|
97
|
+
open: false
|
|
98
|
+
});
|
|
99
|
+
return {
|
|
100
|
+
accepted: true,
|
|
101
|
+
action,
|
|
102
|
+
message: "Managed service was not running and has been started."
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
accepted: true,
|
|
107
|
+
action,
|
|
108
|
+
message: "No managed service is currently running."
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
controlStaleManagedServiceProcess = async (action, deps, uiOverrides) => {
|
|
112
|
+
if (action === "stop") {
|
|
113
|
+
await deps.serviceCommands.stopService();
|
|
114
|
+
return {
|
|
115
|
+
accepted: true,
|
|
116
|
+
action,
|
|
117
|
+
message: "Stale managed service process stopped."
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
if (action === "restart") {
|
|
121
|
+
await deps.serviceCommands.stopService();
|
|
122
|
+
await deps.serviceCommands.startService({
|
|
123
|
+
uiOverrides,
|
|
124
|
+
open: false
|
|
125
|
+
});
|
|
126
|
+
return {
|
|
127
|
+
accepted: true,
|
|
128
|
+
action,
|
|
129
|
+
message: "Stale managed service process replaced."
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
await deps.serviceCommands.stopService();
|
|
133
|
+
await deps.serviceCommands.startService({
|
|
134
|
+
uiOverrides,
|
|
135
|
+
open: false
|
|
136
|
+
});
|
|
137
|
+
return {
|
|
138
|
+
accepted: true,
|
|
139
|
+
action,
|
|
140
|
+
message: "Stale managed service process replaced."
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
controlCurrentManagedProcess = async (action, deps, uiOverrides) => {
|
|
144
|
+
if (action === "restart") await deps.requestManagedServiceRestart({ uiPort: uiOverrides.port ?? 55667 });
|
|
145
|
+
else launchManagedSelfControl();
|
|
146
|
+
return {
|
|
147
|
+
accepted: true,
|
|
148
|
+
action,
|
|
149
|
+
message: action === "restart" ? "Restart scheduled. This page may disconnect for a few seconds." : "Stop scheduled. This page will disconnect shortly."
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
controlExternalManagedProcess = async (action, deps, uiOverrides) => {
|
|
153
|
+
if (action === "stop") {
|
|
154
|
+
await deps.serviceCommands.stopService();
|
|
155
|
+
return {
|
|
156
|
+
accepted: true,
|
|
157
|
+
action,
|
|
158
|
+
message: "Managed service stopped."
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
await deps.serviceCommands.stopService();
|
|
162
|
+
await deps.serviceCommands.startService({
|
|
163
|
+
uiOverrides,
|
|
164
|
+
open: false
|
|
165
|
+
});
|
|
166
|
+
return {
|
|
167
|
+
accepted: true,
|
|
168
|
+
action,
|
|
169
|
+
message: "Managed service restarted."
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
resolveManagedUiOverrides = () => {
|
|
173
|
+
return {
|
|
174
|
+
enabled: true,
|
|
175
|
+
host: FORCED_PUBLIC_UI_HOST,
|
|
176
|
+
open: false,
|
|
177
|
+
port: resolveUiConfig(loadConfig(getConfigPath()), {
|
|
178
|
+
enabled: true,
|
|
179
|
+
host: FORCED_PUBLIC_UI_HOST,
|
|
180
|
+
open: false
|
|
181
|
+
}).port
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
};
|
|
185
|
+
const remoteServiceControlService = new RemoteServiceControlService();
|
|
186
|
+
function resolveRemoteServiceView(currentUi) {
|
|
187
|
+
return remoteServiceControlService.resolveView(currentUi);
|
|
188
|
+
}
|
|
189
|
+
async function controlRemoteService(action, deps) {
|
|
190
|
+
return remoteServiceControlService.control(action, deps);
|
|
191
|
+
}
|
|
192
|
+
function launchManagedSelfControl(params = {}) {
|
|
193
|
+
const script = [
|
|
194
|
+
"const { spawn } = require(\"node:child_process\");",
|
|
195
|
+
"const { rmSync } = require(\"node:fs\");",
|
|
196
|
+
`const parentPid = ${process.pid};`,
|
|
197
|
+
`const serviceStatePath = ${JSON.stringify(managedServiceStateStore.path)};`,
|
|
198
|
+
`const command = ${JSON.stringify(params.command ?? null)};`,
|
|
199
|
+
`const args = ${JSON.stringify(params.args ?? [])};`,
|
|
200
|
+
`const cwd = ${JSON.stringify(process.cwd())};`,
|
|
201
|
+
"const env = process.env;",
|
|
202
|
+
"function isRunning(pid) {",
|
|
203
|
+
" try {",
|
|
204
|
+
" process.kill(pid, 0);",
|
|
205
|
+
" return true;",
|
|
206
|
+
" } catch {",
|
|
207
|
+
" return false;",
|
|
208
|
+
" }",
|
|
209
|
+
"}",
|
|
210
|
+
"setTimeout(() => {",
|
|
211
|
+
" try {",
|
|
212
|
+
" process.kill(parentPid, 'SIGTERM');",
|
|
213
|
+
" } catch {}",
|
|
214
|
+
"}, 150);",
|
|
215
|
+
"const startedAt = Date.now();",
|
|
216
|
+
"const maxWaitMs = 30000;",
|
|
217
|
+
"const timer = setInterval(() => {",
|
|
218
|
+
" if (isRunning(parentPid)) {",
|
|
219
|
+
" if (Date.now() - startedAt > maxWaitMs) {",
|
|
220
|
+
" try {",
|
|
221
|
+
" process.kill(parentPid, 'SIGKILL');",
|
|
222
|
+
" } catch {}",
|
|
223
|
+
" }",
|
|
224
|
+
" return;",
|
|
225
|
+
" }",
|
|
226
|
+
" clearInterval(timer);",
|
|
227
|
+
" try {",
|
|
228
|
+
" rmSync(serviceStatePath, { force: true });",
|
|
229
|
+
" } catch {}",
|
|
230
|
+
" if (command) {",
|
|
231
|
+
" const child = spawn(command, args, { detached: true, stdio: 'ignore', cwd, env });",
|
|
232
|
+
" child.unref();",
|
|
233
|
+
" }",
|
|
234
|
+
" process.exit(0);",
|
|
235
|
+
"}, 250);"
|
|
236
|
+
].join("");
|
|
237
|
+
spawn(process.execPath, ["-e", script], {
|
|
238
|
+
detached: true,
|
|
239
|
+
stdio: "ignore",
|
|
240
|
+
env: process.env,
|
|
241
|
+
cwd: process.cwd()
|
|
242
|
+
}).unref();
|
|
243
|
+
}
|
|
244
|
+
//#endregion
|
|
245
|
+
export { controlRemoteService, resolveRemoteServiceView };
|
|
246
|
+
|
|
247
|
+
//# sourceMappingURL=remote-service-control.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-service-control.service.js","names":[],"sources":["../../../src/services/remote/remote-service-control.service.ts"],"sourcesContent":["import { getConfigPath, loadConfig } from \"@nextclaw/core\";\nimport type { RemoteServiceAction, RemoteServiceActionResult, RemoteServiceView } from \"@nextclaw/server\";\nimport { spawn } from \"node:child_process\";\nimport { resolveUiApiBase, resolveUiConfig } from \"@nextclaw-service/utils/cli.utils.js\";\nimport { managedServiceStateStore } from \"@nextclaw-service/stores/managed-service-state.store.js\";\nimport { ManagedServiceSupervisor } from \"@nextclaw-service/services/runtime/managed-service-supervisor.service.js\";\n\nexport type RemoteAccessHostServiceCommands = {\n startService: (options: { uiOverrides: Partial<ReturnType<typeof resolveUiConfig>>; open: boolean }) => Promise<void>;\n stopService: () => Promise<void>;\n};\n\nexport type RemoteRuntimeController = {\n start: () => Promise<void> | null;\n stop: () => Promise<void>;\n restart: () => Promise<void>;\n};\n\ntype CurrentUi = {\n host: string;\n port: number;\n};\n\ntype RemoteServiceControlDeps = {\n serviceCommands: RemoteAccessHostServiceCommands;\n requestManagedServiceRestart: (options?: { uiPort?: number; reason?: string }) => Promise<void>;\n currentUi?: CurrentUi;\n remoteRuntimeController?: RemoteRuntimeController | null;\n};\n\nconst FORCED_PUBLIC_UI_HOST = \"0.0.0.0\";\ntype ManagedServiceControlState = {\n currentProcess: boolean;\n recordedProcessExists: boolean;\n running: boolean;\n};\n\nclass RemoteServiceControlService {\n private readonly managedServiceSupervisor = new ManagedServiceSupervisor();\n\n readonly resolveView = (currentUi?: CurrentUi): RemoteServiceView => {\n if (currentUi) {\n return {\n running: true,\n currentProcess: true,\n pid: process.pid,\n uiUrl: resolveUiApiBase(currentUi.host, currentUi.port),\n uiPort: currentUi.port\n };\n }\n\n const serviceState = managedServiceStateStore.read();\n const liveness = this.managedServiceSupervisor.resolveStateLiveness(serviceState);\n const serviceRunning = Boolean(serviceState && liveness.running);\n return {\n running: serviceRunning,\n currentProcess: Boolean(serviceRunning && serviceState?.pid === process.pid),\n ...(serviceState?.pid ? { pid: serviceState.pid } : {}),\n ...(serviceState?.uiUrl ? { uiUrl: serviceState.uiUrl } : {}),\n ...(typeof serviceState?.uiPort === \"number\" ? { uiPort: serviceState.uiPort } : {})\n };\n };\n\n readonly control = async (\n action: RemoteServiceAction,\n deps: RemoteServiceControlDeps\n ): Promise<RemoteServiceActionResult> => {\n if (deps.remoteRuntimeController) {\n return this.controlCurrentProcessRuntime(action, deps.remoteRuntimeController);\n }\n\n return this.controlManagedService(action, deps);\n };\n\n private readonly controlCurrentProcessRuntime = async (\n action: RemoteServiceAction,\n controller: RemoteRuntimeController\n ): Promise<RemoteServiceActionResult> => {\n if (action === \"start\") {\n await controller.start();\n return { accepted: true, action, message: \"Remote runtime started.\" };\n }\n if (action === \"stop\") {\n await controller.stop();\n return { accepted: true, action, message: \"Remote runtime stopped.\" };\n }\n await controller.restart();\n return { accepted: true, action, message: \"Remote runtime restarted.\" };\n };\n\n private readonly controlManagedService = async (\n action: RemoteServiceAction,\n deps: RemoteServiceControlDeps\n ): Promise<RemoteServiceActionResult> => {\n const serviceState = this.resolveManagedServiceControlState();\n const uiOverrides = this.resolveManagedUiOverrides();\n\n if (action === \"start\") {\n return this.startManagedService(action, deps, serviceState, uiOverrides);\n }\n if (!serviceState.running) {\n return this.controlStoppedManagedService(action, deps, serviceState, uiOverrides);\n }\n if (serviceState.currentProcess) {\n return this.controlCurrentManagedProcess(action, deps, uiOverrides);\n }\n return this.controlExternalManagedProcess(action, deps, uiOverrides);\n };\n\n private readonly resolveManagedServiceControlState = (): ManagedServiceControlState => {\n const state = managedServiceStateStore.read();\n const liveness = this.managedServiceSupervisor.resolveStateLiveness(state);\n const running = Boolean(state && liveness.running);\n return {\n currentProcess: Boolean(running && state?.pid === process.pid),\n recordedProcessExists: Boolean(state && liveness.processExists),\n running\n };\n };\n\n private readonly startManagedService = async (\n action: RemoteServiceAction,\n deps: RemoteServiceControlDeps,\n serviceState: ManagedServiceControlState,\n uiOverrides: Partial<ReturnType<typeof resolveUiConfig>>\n ): Promise<RemoteServiceActionResult> => {\n if (serviceState.running) {\n return {\n accepted: true,\n action,\n message: serviceState.currentProcess ? \"Managed service is already running for this UI.\" : \"Managed service is already running.\"\n };\n }\n if (serviceState.recordedProcessExists) {\n return this.controlStaleManagedServiceProcess(action, deps, uiOverrides);\n }\n await deps.serviceCommands.startService({ uiOverrides, open: false });\n return { accepted: true, action, message: \"Managed service started.\" };\n };\n\n private readonly controlStoppedManagedService = async (\n action: RemoteServiceAction,\n deps: RemoteServiceControlDeps,\n serviceState: ManagedServiceControlState,\n uiOverrides: Partial<ReturnType<typeof resolveUiConfig>>\n ): Promise<RemoteServiceActionResult> => {\n if (serviceState.recordedProcessExists) {\n return this.controlStaleManagedServiceProcess(action, deps, uiOverrides);\n }\n if (action === \"restart\") {\n await deps.serviceCommands.startService({ uiOverrides, open: false });\n return {\n accepted: true,\n action,\n message: \"Managed service was not running and has been started.\"\n };\n }\n return { accepted: true, action, message: \"No managed service is currently running.\" };\n };\n\n private readonly controlStaleManagedServiceProcess = async (\n action: RemoteServiceAction,\n deps: RemoteServiceControlDeps,\n uiOverrides: Partial<ReturnType<typeof resolveUiConfig>>\n ): Promise<RemoteServiceActionResult> => {\n if (action === \"stop\") {\n await deps.serviceCommands.stopService();\n return { accepted: true, action, message: \"Stale managed service process stopped.\" };\n }\n if (action === \"restart\") {\n await deps.serviceCommands.stopService();\n await deps.serviceCommands.startService({ uiOverrides, open: false });\n return { accepted: true, action, message: \"Stale managed service process replaced.\" };\n }\n await deps.serviceCommands.stopService();\n await deps.serviceCommands.startService({ uiOverrides, open: false });\n return { accepted: true, action, message: \"Stale managed service process replaced.\" };\n };\n\n private readonly controlCurrentManagedProcess = async (\n action: RemoteServiceAction,\n deps: RemoteServiceControlDeps,\n uiOverrides: Partial<ReturnType<typeof resolveUiConfig>>\n ): Promise<RemoteServiceActionResult> => {\n if (action === \"restart\") {\n await deps.requestManagedServiceRestart({ uiPort: uiOverrides.port ?? 55667 });\n } else {\n launchManagedSelfControl();\n }\n return {\n accepted: true,\n action,\n message:\n action === \"restart\"\n ? \"Restart scheduled. This page may disconnect for a few seconds.\"\n : \"Stop scheduled. This page will disconnect shortly.\"\n };\n };\n\n private readonly controlExternalManagedProcess = async (\n action: RemoteServiceAction,\n deps: RemoteServiceControlDeps,\n uiOverrides: Partial<ReturnType<typeof resolveUiConfig>>\n ): Promise<RemoteServiceActionResult> => {\n if (action === \"stop\") {\n await deps.serviceCommands.stopService();\n return { accepted: true, action, message: \"Managed service stopped.\" };\n }\n\n await deps.serviceCommands.stopService();\n await deps.serviceCommands.startService({ uiOverrides, open: false });\n return { accepted: true, action, message: \"Managed service restarted.\" };\n };\n\n private readonly resolveManagedUiOverrides = (): Partial<ReturnType<typeof resolveUiConfig>> => {\n const config = loadConfig(getConfigPath());\n const resolved = resolveUiConfig(config, {\n enabled: true,\n host: FORCED_PUBLIC_UI_HOST,\n open: false\n });\n return {\n enabled: true,\n host: FORCED_PUBLIC_UI_HOST,\n open: false,\n port: resolved.port\n };\n };\n}\n\nconst remoteServiceControlService = new RemoteServiceControlService();\n\nexport function resolveRemoteServiceView(currentUi?: CurrentUi): RemoteServiceView {\n return remoteServiceControlService.resolveView(currentUi);\n}\n\nexport async function controlRemoteService(\n action: RemoteServiceAction,\n deps: RemoteServiceControlDeps\n): Promise<RemoteServiceActionResult> {\n return remoteServiceControlService.control(action, deps);\n}\n\nfunction launchManagedSelfControl(params: {\n command?: string;\n args?: string[];\n} = {}): void {\n const script = [\n 'const { spawn } = require(\"node:child_process\");',\n 'const { rmSync } = require(\"node:fs\");',\n `const parentPid = ${process.pid};`,\n `const serviceStatePath = ${JSON.stringify(managedServiceStateStore.path)};`,\n `const command = ${JSON.stringify(params.command ?? null)};`,\n `const args = ${JSON.stringify(params.args ?? [])};`,\n `const cwd = ${JSON.stringify(process.cwd())};`,\n \"const env = process.env;\",\n \"function isRunning(pid) {\",\n \" try {\",\n \" process.kill(pid, 0);\",\n \" return true;\",\n \" } catch {\",\n \" return false;\",\n \" }\",\n \"}\",\n \"setTimeout(() => {\",\n \" try {\",\n \" process.kill(parentPid, 'SIGTERM');\",\n \" } catch {}\",\n \"}, 150);\",\n \"const startedAt = Date.now();\",\n \"const maxWaitMs = 30000;\",\n \"const timer = setInterval(() => {\",\n \" if (isRunning(parentPid)) {\",\n \" if (Date.now() - startedAt > maxWaitMs) {\",\n \" try {\",\n \" process.kill(parentPid, 'SIGKILL');\",\n \" } catch {}\",\n \" }\",\n \" return;\",\n \" }\",\n \" clearInterval(timer);\",\n \" try {\",\n \" rmSync(serviceStatePath, { force: true });\",\n \" } catch {}\",\n \" if (command) {\",\n \" const child = spawn(command, args, { detached: true, stdio: 'ignore', cwd, env });\",\n \" child.unref();\",\n \" }\",\n \" process.exit(0);\",\n \"}, 250);\"\n ].join(\"\");\n const helper = spawn(process.execPath, [\"-e\", script], {\n detached: true,\n stdio: \"ignore\",\n env: process.env,\n cwd: process.cwd()\n });\n helper.unref();\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ManagedServiceState } from "../../stores/managed-service-state.store.js";
|
|
2
|
+
|
|
3
|
+
//#region src/services/restart/restart-coordinator.service.d.ts
|
|
4
|
+
type RestartStrategy = "background-service-or-manual" | "background-service-or-exit" | "exit-process";
|
|
5
|
+
type RestartRequest = {
|
|
6
|
+
reason: string;
|
|
7
|
+
strategy?: RestartStrategy;
|
|
8
|
+
delayMs?: number;
|
|
9
|
+
manualMessage?: string;
|
|
10
|
+
};
|
|
11
|
+
type RestartResult = {
|
|
12
|
+
status: "service-restarted" | "restart-in-progress" | "exit-scheduled" | "manual-required";
|
|
13
|
+
message: string;
|
|
14
|
+
};
|
|
15
|
+
type RestartCoordinatorDeps = {
|
|
16
|
+
readServiceState: () => ManagedServiceState | null;
|
|
17
|
+
isProcessRunning: (pid: number) => boolean;
|
|
18
|
+
currentPid: () => number;
|
|
19
|
+
restartBackgroundService: (reason: string) => Promise<boolean>;
|
|
20
|
+
scheduleProcessExit: (delayMs: number, reason: string) => void;
|
|
21
|
+
};
|
|
22
|
+
declare class RestartCoordinator {
|
|
23
|
+
private deps;
|
|
24
|
+
private restartingService;
|
|
25
|
+
private exitScheduled;
|
|
26
|
+
constructor(deps: RestartCoordinatorDeps);
|
|
27
|
+
readonly requestRestart: (request: RestartRequest) => Promise<RestartResult>;
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { RestartCoordinator, RestartRequest, RestartResult, RestartStrategy };
|
|
31
|
+
//# sourceMappingURL=restart-coordinator.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-coordinator.service.d.ts","names":[],"sources":["../../../src/services/restart/restart-coordinator.service.ts"],"mappings":";;;KAEY,eAAA;AAAA,KAEA,cAAA;EACV,MAAA;EACA,QAAA,GAAW,eAAA;EACX,OAAA;EACA,aAAA;AAAA;AAAA,KAGU,aAAA;EACV,MAAA;EACA,OAAA;AAAA;AAAA,KAGG,sBAAA;EACH,gBAAA,QAAwB,mBAAA;EACxB,gBAAA,GAAmB,GAAA;EACnB,UAAA;EACA,wBAAA,GAA2B,MAAA,aAAmB,OAAA;EAC9C,mBAAA,GAAsB,OAAA,UAAiB,MAAA;AAAA;AAAA,cAG5B,kBAAA;EAAA,QAIS,IAAA;EAAA,QAHZ,iBAAA;EAAA,QACA,aAAA;cAEY,IAAA,EAAM,sBAAA;EAAA,SAEjB,cAAA,GAAwB,OAAA,EAAS,cAAA,KAAiB,OAAA,CAAQ,aAAA;AAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
//#region src/services/restart/restart-coordinator.service.ts
|
|
2
|
+
var RestartCoordinator = class {
|
|
3
|
+
restartingService = false;
|
|
4
|
+
exitScheduled = false;
|
|
5
|
+
constructor(deps) {
|
|
6
|
+
this.deps = deps;
|
|
7
|
+
}
|
|
8
|
+
requestRestart = async (request) => {
|
|
9
|
+
const reason = request.reason.trim() || "config changed";
|
|
10
|
+
const strategy = request.strategy ?? "background-service-or-manual";
|
|
11
|
+
if (strategy !== "exit-process") {
|
|
12
|
+
const state = this.deps.readServiceState();
|
|
13
|
+
const serviceRunning = Boolean(state && this.deps.isProcessRunning(state.pid));
|
|
14
|
+
const managedByCurrentProcess = Boolean(state && state.pid === this.deps.currentPid());
|
|
15
|
+
if (serviceRunning && !managedByCurrentProcess) {
|
|
16
|
+
if (this.restartingService) return {
|
|
17
|
+
status: "restart-in-progress",
|
|
18
|
+
message: "Restart already in progress; skipping duplicate request."
|
|
19
|
+
};
|
|
20
|
+
this.restartingService = true;
|
|
21
|
+
try {
|
|
22
|
+
if (await this.deps.restartBackgroundService(reason)) return {
|
|
23
|
+
status: "service-restarted",
|
|
24
|
+
message: `Restarted background service to apply changes (${reason}).`
|
|
25
|
+
};
|
|
26
|
+
} finally {
|
|
27
|
+
this.restartingService = false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (strategy === "background-service-or-exit" || strategy === "exit-process") {
|
|
32
|
+
if (this.exitScheduled) return {
|
|
33
|
+
status: "exit-scheduled",
|
|
34
|
+
message: "Restart already scheduled; skipping duplicate request."
|
|
35
|
+
};
|
|
36
|
+
const delay = typeof request.delayMs === "number" && Number.isFinite(request.delayMs) ? Math.max(0, Math.floor(request.delayMs)) : 100;
|
|
37
|
+
this.exitScheduled = true;
|
|
38
|
+
this.deps.scheduleProcessExit(delay, reason);
|
|
39
|
+
return {
|
|
40
|
+
status: "exit-scheduled",
|
|
41
|
+
message: `Restart scheduled (${reason}).`
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
status: "manual-required",
|
|
46
|
+
message: request.manualMessage ?? "Restart the gateway to apply changes."
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
//#endregion
|
|
51
|
+
export { RestartCoordinator };
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=restart-coordinator.service.js.map
|