@nextclaw/service 0.1.14 → 0.1.16
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/cli/commands/agent/agent-runtime.utils.d.ts +2 -1
- package/dist/cli/commands/agent/agent-runtime.utils.d.ts.map +1 -0
- package/dist/cli/commands/agent/agent-runtime.utils.js +3 -1
- package/dist/cli/commands/agent/agent-runtime.utils.js.map +1 -0
- package/dist/cli/commands/agent/cli-agent-runner.utils.d.ts +2 -1
- package/dist/cli/commands/agent/cli-agent-runner.utils.d.ts.map +1 -0
- package/dist/cli/commands/agent/cli-agent-runner.utils.js +3 -5
- package/dist/cli/commands/agent/cli-agent-runner.utils.js.map +1 -0
- package/dist/cli/commands/agent/services/agent-commands.service.d.ts +2 -1
- package/dist/cli/commands/agent/services/agent-commands.service.d.ts.map +1 -0
- package/dist/cli/commands/agent/services/agent-commands.service.js +2 -0
- package/dist/cli/commands/agent/services/agent-commands.service.js.map +1 -0
- package/dist/cli/commands/config/services/config-commands.service.d.ts +2 -1
- package/dist/cli/commands/config/services/config-commands.service.d.ts.map +1 -0
- package/dist/cli/commands/config/services/config-commands.service.js +2 -0
- package/dist/cli/commands/config/services/config-commands.service.js.map +1 -0
- package/dist/cli/commands/cron/services/cron-commands.service.d.ts +2 -1
- package/dist/cli/commands/cron/services/cron-commands.service.d.ts.map +1 -0
- package/dist/cli/commands/cron/services/cron-commands.service.js +2 -0
- package/dist/cli/commands/cron/services/cron-commands.service.js.map +1 -0
- package/dist/cli/commands/cron/services/cron-local.service.d.ts +2 -1
- package/dist/cli/commands/cron/services/cron-local.service.d.ts.map +1 -0
- package/dist/cli/commands/cron/services/cron-local.service.js +2 -0
- package/dist/cli/commands/cron/services/cron-local.service.js.map +1 -0
- package/dist/cli/commands/cron/utils/cron-job.utils.d.ts +2 -1
- package/dist/cli/commands/cron/utils/cron-job.utils.d.ts.map +1 -0
- package/dist/cli/commands/cron/utils/cron-job.utils.js +2 -0
- package/dist/cli/commands/cron/utils/cron-job.utils.js.map +1 -0
- package/dist/cli/commands/diagnostics/services/diagnostics-commands.service.d.ts +4 -1
- package/dist/cli/commands/diagnostics/services/diagnostics-commands.service.d.ts.map +1 -0
- package/dist/cli/commands/diagnostics/services/diagnostics-commands.service.js +40 -14
- package/dist/cli/commands/diagnostics/services/diagnostics-commands.service.js.map +1 -0
- package/dist/cli/commands/diagnostics/utils/diagnostics-render.utils.d.ts +2 -1
- package/dist/cli/commands/diagnostics/utils/diagnostics-render.utils.d.ts.map +1 -0
- package/dist/cli/commands/diagnostics/utils/diagnostics-render.utils.js +8 -0
- package/dist/cli/commands/diagnostics/utils/diagnostics-render.utils.js.map +1 -0
- package/dist/cli/commands/gateway/index.d.ts +2 -1
- package/dist/cli/commands/gateway/index.d.ts.map +1 -0
- package/dist/cli/commands/gateway/index.js +2 -0
- package/dist/cli/commands/gateway/index.js.map +1 -0
- package/dist/cli/commands/logs/index.d.ts +2 -1
- package/dist/cli/commands/logs/index.d.ts.map +1 -0
- package/dist/cli/commands/logs/index.js +2 -0
- package/dist/cli/commands/logs/index.js.map +1 -0
- package/dist/cli/commands/mcp/index.d.ts +2 -1
- package/dist/cli/commands/mcp/index.d.ts.map +1 -0
- package/dist/cli/commands/mcp/index.js +2 -0
- package/dist/cli/commands/mcp/index.js.map +1 -0
- package/dist/cli/commands/restart/index.d.ts +2 -1
- package/dist/cli/commands/restart/index.d.ts.map +1 -0
- package/dist/cli/commands/restart/index.js +2 -0
- package/dist/cli/commands/restart/index.js.map +1 -0
- package/dist/cli/commands/secrets/index.d.ts +2 -1
- package/dist/cli/commands/secrets/index.d.ts.map +1 -0
- package/dist/cli/commands/secrets/index.js +2 -0
- package/dist/cli/commands/secrets/index.js.map +1 -0
- package/dist/cli/commands/serve/index.d.ts +2 -1
- package/dist/cli/commands/serve/index.d.ts.map +1 -0
- package/dist/cli/commands/serve/index.js +2 -0
- package/dist/cli/commands/serve/index.js.map +1 -0
- package/dist/cli/commands/skills/index.d.ts +2 -1
- package/dist/cli/commands/skills/index.d.ts.map +1 -0
- package/dist/cli/commands/skills/index.js +2 -0
- package/dist/cli/commands/skills/index.js.map +1 -0
- package/dist/cli/commands/skills/marketplace-client.d.ts +2 -1
- package/dist/cli/commands/skills/marketplace-client.d.ts.map +1 -0
- package/dist/cli/commands/skills/marketplace-client.js +2 -0
- package/dist/cli/commands/skills/marketplace-client.js.map +1 -0
- package/dist/cli/commands/skills/marketplace-command-options.utils.d.ts +2 -1
- package/dist/cli/commands/skills/marketplace-command-options.utils.d.ts.map +1 -0
- package/dist/cli/commands/skills/marketplace-command-options.utils.js +2 -0
- package/dist/cli/commands/skills/marketplace-command-options.utils.js.map +1 -0
- package/dist/cli/commands/skills/marketplace-identity.utils.d.ts +2 -1
- package/dist/cli/commands/skills/marketplace-identity.utils.d.ts.map +1 -0
- package/dist/cli/commands/skills/marketplace-identity.utils.js +2 -0
- package/dist/cli/commands/skills/marketplace-identity.utils.js.map +1 -0
- package/dist/cli/commands/skills/marketplace-network-retry.d.ts +2 -1
- package/dist/cli/commands/skills/marketplace-network-retry.d.ts.map +1 -0
- package/dist/cli/commands/skills/marketplace-network-retry.js +2 -0
- package/dist/cli/commands/skills/marketplace-network-retry.js.map +1 -0
- package/dist/cli/commands/skills/marketplace.metadata.d.ts +2 -1
- package/dist/cli/commands/skills/marketplace.metadata.d.ts.map +1 -0
- package/dist/cli/commands/skills/marketplace.metadata.js +2 -0
- package/dist/cli/commands/skills/marketplace.metadata.js.map +1 -0
- package/dist/cli/commands/skills/marketplace.utils.d.ts +2 -1
- package/dist/cli/commands/skills/marketplace.utils.d.ts.map +1 -0
- package/dist/cli/commands/skills/marketplace.utils.js +2 -0
- package/dist/cli/commands/skills/marketplace.utils.js.map +1 -0
- package/dist/cli/commands/skills/skills-query.service.d.ts +2 -1
- package/dist/cli/commands/skills/skills-query.service.d.ts.map +1 -0
- package/dist/cli/commands/skills/skills-query.service.js +2 -0
- package/dist/cli/commands/skills/skills-query.service.js.map +1 -0
- package/dist/cli/commands/start/index.d.ts +2 -1
- package/dist/cli/commands/start/index.d.ts.map +1 -0
- package/dist/cli/commands/start/index.js +2 -0
- package/dist/cli/commands/start/index.js.map +1 -0
- package/dist/cli/commands/stop/index.d.ts +2 -1
- package/dist/cli/commands/stop/index.d.ts.map +1 -0
- package/dist/cli/commands/stop/index.js +2 -0
- package/dist/cli/commands/stop/index.js.map +1 -0
- package/dist/cli/commands/ui/index.d.ts +2 -1
- package/dist/cli/commands/ui/index.d.ts.map +1 -0
- package/dist/cli/commands/ui/index.js +2 -0
- package/dist/cli/commands/ui/index.js.map +1 -0
- package/dist/cli/commands/usage/services/llm-usage-command.service.d.ts +2 -1
- package/dist/cli/commands/usage/services/llm-usage-command.service.d.ts.map +1 -0
- package/dist/cli/commands/usage/services/llm-usage-command.service.js +2 -0
- package/dist/cli/commands/usage/services/llm-usage-command.service.js.map +1 -0
- package/dist/commands/channel/channel-config-view.d.ts +2 -1
- package/dist/commands/channel/channel-config-view.d.ts.map +1 -0
- package/dist/commands/channel/channel-config-view.js +2 -0
- package/dist/commands/channel/channel-config-view.js.map +1 -0
- package/dist/commands/channel/channel-list-view.service.d.ts +2 -1
- package/dist/commands/channel/channel-list-view.service.d.ts.map +1 -0
- package/dist/commands/channel/channel-list-view.service.js +2 -0
- package/dist/commands/channel/channel-list-view.service.js.map +1 -0
- package/dist/commands/channel/index.d.ts +2 -1
- package/dist/commands/channel/index.d.ts.map +1 -0
- package/dist/commands/channel/index.js +2 -0
- package/dist/commands/channel/index.js.map +1 -0
- package/dist/commands/platform-auth/services/account-status.service.d.ts +2 -1
- package/dist/commands/platform-auth/services/account-status.service.d.ts.map +1 -0
- package/dist/commands/platform-auth/services/account-status.service.js +2 -0
- package/dist/commands/platform-auth/services/account-status.service.js.map +1 -0
- package/dist/commands/platform-auth/services/platform-auth-commands.service.d.ts +2 -1
- package/dist/commands/platform-auth/services/platform-auth-commands.service.d.ts.map +1 -0
- package/dist/commands/platform-auth/services/platform-auth-commands.service.js +2 -0
- package/dist/commands/platform-auth/services/platform-auth-commands.service.js.map +1 -0
- package/dist/commands/platform-auth/utils/payload.utils.d.ts +2 -1
- package/dist/commands/platform-auth/utils/payload.utils.d.ts.map +1 -0
- package/dist/commands/platform-auth/utils/payload.utils.js +2 -0
- package/dist/commands/platform-auth/utils/payload.utils.js.map +1 -0
- package/dist/commands/plugin/index.d.ts +2 -1
- package/dist/commands/plugin/index.d.ts.map +1 -0
- package/dist/commands/plugin/index.js +2 -0
- package/dist/commands/plugin/index.js.map +1 -0
- package/dist/commands/plugin/plugin-command.utils.d.ts +2 -1
- package/dist/commands/plugin/plugin-command.utils.d.ts.map +1 -0
- package/dist/commands/plugin/plugin-command.utils.js +2 -0
- package/dist/commands/plugin/plugin-command.utils.js.map +1 -0
- package/dist/commands/plugin/plugin-mutation-actions.utils.d.ts +2 -1
- package/dist/commands/plugin/plugin-mutation-actions.utils.d.ts.map +1 -0
- package/dist/commands/plugin/plugin-mutation-actions.utils.js +2 -0
- package/dist/commands/plugin/plugin-mutation-actions.utils.js.map +1 -0
- package/dist/commands/remote/index.d.ts +2 -1
- package/dist/commands/remote/index.d.ts.map +1 -0
- package/dist/commands/remote/index.js +2 -0
- package/dist/commands/remote/index.js.map +1 -0
- package/dist/commands/remote/services/remote-access-host.service.d.ts +2 -1
- package/dist/commands/remote/services/remote-access-host.service.d.ts.map +1 -0
- package/dist/commands/remote/services/remote-access-host.service.js +2 -0
- package/dist/commands/remote/services/remote-access-host.service.js.map +1 -0
- package/dist/commands/remote/services/remote-service-control.service.d.ts +2 -1
- package/dist/commands/remote/services/remote-service-control.service.d.ts.map +1 -0
- package/dist/commands/remote/services/remote-service-control.service.js +134 -75
- package/dist/commands/remote/services/remote-service-control.service.js.map +1 -0
- package/dist/commands/remote/utils/platform-api-base.utils.d.ts +2 -1
- package/dist/commands/remote/utils/platform-api-base.utils.d.ts.map +1 -0
- package/dist/commands/remote/utils/platform-api-base.utils.js +2 -0
- package/dist/commands/remote/utils/platform-api-base.utils.js.map +1 -0
- package/dist/commands/remote/utils/remote-runtime-support.utils.d.ts +2 -1
- package/dist/commands/remote/utils/remote-runtime-support.utils.d.ts.map +1 -0
- package/dist/commands/remote/utils/remote-runtime-support.utils.js +2 -0
- package/dist/commands/remote/utils/remote-runtime-support.utils.js.map +1 -0
- package/dist/commands/service/index.d.ts +2 -1
- package/dist/commands/service/index.d.ts.map +1 -0
- package/dist/commands/service/index.js +2 -0
- package/dist/commands/service/index.js.map +1 -0
- package/dist/commands/service/services/autostart/host-autostart-command.service.d.ts +2 -1
- package/dist/commands/service/services/autostart/host-autostart-command.service.d.ts.map +1 -0
- package/dist/commands/service/services/autostart/host-autostart-command.service.js +2 -0
- package/dist/commands/service/services/autostart/host-autostart-command.service.js.map +1 -0
- package/dist/commands/service/services/autostart/host-autostart-runtime.service.d.ts +2 -1
- package/dist/commands/service/services/autostart/host-autostart-runtime.service.d.ts.map +1 -0
- package/dist/commands/service/services/autostart/host-autostart-runtime.service.js +2 -0
- package/dist/commands/service/services/autostart/host-autostart-runtime.service.js.map +1 -0
- package/dist/commands/service/services/autostart/host-autostart.service.d.ts +2 -1
- package/dist/commands/service/services/autostart/host-autostart.service.d.ts.map +1 -0
- package/dist/commands/service/services/autostart/host-autostart.service.js +2 -0
- package/dist/commands/service/services/autostart/host-autostart.service.js.map +1 -0
- package/dist/commands/service/services/autostart/linux-systemd-autostart.service.d.ts +2 -1
- package/dist/commands/service/services/autostart/linux-systemd-autostart.service.d.ts.map +1 -0
- package/dist/commands/service/services/autostart/linux-systemd-autostart.service.js +2 -0
- package/dist/commands/service/services/autostart/linux-systemd-autostart.service.js.map +1 -0
- package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.d.ts +2 -1
- package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.d.ts.map +1 -0
- package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.js +2 -0
- package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.js.map +1 -0
- package/dist/commands/service/services/autostart/windows-task-autostart.service.d.ts +2 -1
- package/dist/commands/service/services/autostart/windows-task-autostart.service.d.ts.map +1 -0
- package/dist/commands/service/services/autostart/windows-task-autostart.service.js +2 -0
- package/dist/commands/service/services/autostart/windows-task-autostart.service.js.map +1 -0
- package/dist/commands/service/types/autostart/host-autostart.types.d.ts +2 -1
- package/dist/commands/service/types/autostart/host-autostart.types.d.ts.map +1 -0
- package/dist/launcher/npm-runtime-bundle-layout.store.d.ts +2 -1
- package/dist/launcher/npm-runtime-bundle-layout.store.d.ts.map +1 -0
- package/dist/launcher/npm-runtime-bundle-layout.store.js +2 -0
- package/dist/launcher/npm-runtime-bundle-layout.store.js.map +1 -0
- package/dist/launcher/npm-runtime-bundle-manifest.service.d.ts +2 -1
- package/dist/launcher/npm-runtime-bundle-manifest.service.d.ts.map +1 -0
- package/dist/launcher/npm-runtime-bundle-manifest.service.js +2 -0
- package/dist/launcher/npm-runtime-bundle-manifest.service.js.map +1 -0
- package/dist/launcher/npm-runtime-bundle.service.d.ts +2 -1
- package/dist/launcher/npm-runtime-bundle.service.d.ts.map +1 -0
- package/dist/launcher/npm-runtime-bundle.service.js +2 -0
- package/dist/launcher/npm-runtime-bundle.service.js.map +1 -0
- package/dist/launcher/npm-runtime-bundle.types.d.ts +2 -1
- package/dist/launcher/npm-runtime-bundle.types.d.ts.map +1 -0
- package/dist/launcher/npm-runtime-launcher.service.d.ts +2 -1
- package/dist/launcher/npm-runtime-launcher.service.d.ts.map +1 -0
- package/dist/launcher/npm-runtime-launcher.service.js +2 -0
- package/dist/launcher/npm-runtime-launcher.service.js.map +1 -0
- package/dist/launcher/npm-runtime-update-command.service.d.ts +5 -1
- package/dist/launcher/npm-runtime-update-command.service.d.ts.map +1 -0
- package/dist/launcher/npm-runtime-update-command.service.js +32 -0
- package/dist/launcher/npm-runtime-update-command.service.js.map +1 -0
- package/dist/launcher/npm-runtime-update-source.service.d.ts +2 -1
- package/dist/launcher/npm-runtime-update-source.service.d.ts.map +1 -0
- package/dist/launcher/npm-runtime-update-source.service.js +2 -0
- package/dist/launcher/npm-runtime-update-source.service.js.map +1 -0
- package/dist/launcher/npm-runtime-update-state.store.d.ts +2 -1
- package/dist/launcher/npm-runtime-update-state.store.d.ts.map +1 -0
- package/dist/launcher/npm-runtime-update-state.store.js +2 -0
- package/dist/launcher/npm-runtime-update-state.store.js.map +1 -0
- package/dist/launcher/npm-runtime-update.manager.d.ts +2 -1
- package/dist/launcher/npm-runtime-update.manager.d.ts.map +1 -0
- package/dist/launcher/npm-runtime-update.manager.js +2 -0
- package/dist/launcher/npm-runtime-update.manager.js.map +1 -0
- package/dist/launcher/npm-runtime-update.service.d.ts +2 -1
- package/dist/launcher/npm-runtime-update.service.d.ts.map +1 -0
- package/dist/launcher/npm-runtime-update.service.js +2 -0
- package/dist/launcher/npm-runtime-update.service.js.map +1 -0
- package/dist/service-runtime.service.d.ts +2 -1
- package/dist/service-runtime.service.d.ts.map +1 -0
- package/dist/service-runtime.service.js +6 -1
- package/dist/service-runtime.service.js.map +1 -0
- package/dist/shared/controllers/gateway.controller.d.ts +2 -1
- package/dist/shared/controllers/gateway.controller.d.ts.map +1 -0
- package/dist/shared/controllers/gateway.controller.js +2 -0
- package/dist/shared/controllers/gateway.controller.js.map +1 -0
- package/dist/shared/services/gateway/gateway-restart-wake.service.d.ts +2 -1
- package/dist/shared/services/gateway/gateway-restart-wake.service.d.ts.map +1 -0
- package/dist/shared/services/gateway/gateway-restart-wake.service.js +2 -0
- package/dist/shared/services/gateway/gateway-restart-wake.service.js.map +1 -0
- package/dist/shared/services/gateway/managers/gateway-plugin.manager.d.ts +2 -1
- package/dist/shared/services/gateway/managers/gateway-plugin.manager.d.ts.map +1 -0
- package/dist/shared/services/gateway/managers/gateway-plugin.manager.js +2 -0
- package/dist/shared/services/gateway/managers/gateway-plugin.manager.js.map +1 -0
- package/dist/shared/services/gateway/managers/gateway-remote.manager.d.ts +2 -1
- package/dist/shared/services/gateway/managers/gateway-remote.manager.d.ts.map +1 -0
- package/dist/shared/services/gateway/managers/gateway-remote.manager.js +2 -0
- package/dist/shared/services/gateway/managers/gateway-remote.manager.js.map +1 -0
- package/dist/shared/services/gateway/nextclaw-app.service.d.ts +2 -1
- package/dist/shared/services/gateway/nextclaw-app.service.d.ts.map +1 -0
- package/dist/shared/services/gateway/nextclaw-app.service.js +2 -0
- package/dist/shared/services/gateway/nextclaw-app.service.js.map +1 -0
- package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.d.ts +2 -1
- package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.d.ts.map +1 -0
- package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.js +2 -0
- package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.js.map +1 -0
- package/dist/shared/services/gateway/service-bootstrap-status.service.d.ts +2 -1
- package/dist/shared/services/gateway/service-bootstrap-status.service.d.ts.map +1 -0
- package/dist/shared/services/gateway/service-bootstrap-status.service.js +2 -0
- package/dist/shared/services/gateway/service-bootstrap-status.service.js.map +1 -0
- package/dist/shared/services/gateway/service-startup-support.service.d.ts +2 -1
- package/dist/shared/services/gateway/service-startup-support.service.d.ts.map +1 -0
- package/dist/shared/services/gateway/service-startup-support.service.js +2 -0
- package/dist/shared/services/gateway/service-startup-support.service.js.map +1 -0
- package/dist/shared/services/gateway/utils/cron-job-handler.utils.d.ts +2 -1
- package/dist/shared/services/gateway/utils/cron-job-handler.utils.d.ts.map +1 -0
- package/dist/shared/services/gateway/utils/cron-job-handler.utils.js +2 -0
- package/dist/shared/services/gateway/utils/cron-job-handler.utils.js.map +1 -0
- package/dist/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.d.ts +2 -1
- package/dist/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.d.ts.map +1 -0
- package/dist/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.js +2 -0
- package/dist/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.js.map +1 -0
- package/dist/shared/services/marketplace/service-marketplace-installer.service.d.ts +2 -1
- package/dist/shared/services/marketplace/service-marketplace-installer.service.d.ts.map +1 -0
- package/dist/shared/services/marketplace/service-marketplace-installer.service.js +2 -0
- package/dist/shared/services/marketplace/service-marketplace-installer.service.js.map +1 -0
- package/dist/shared/services/marketplace/service-mcp-marketplace-ops.d.ts +2 -1
- package/dist/shared/services/marketplace/service-mcp-marketplace-ops.d.ts.map +1 -0
- package/dist/shared/services/marketplace/service-mcp-marketplace-ops.js +2 -0
- package/dist/shared/services/marketplace/service-mcp-marketplace-ops.js.map +1 -0
- package/dist/shared/services/plugin/utils/plugin-dev-hot-reload.utils.d.ts +2 -1
- package/dist/shared/services/plugin/utils/plugin-dev-hot-reload.utils.d.ts.map +1 -0
- package/dist/shared/services/plugin/utils/plugin-dev-hot-reload.utils.js +2 -0
- package/dist/shared/services/plugin/utils/plugin-dev-hot-reload.utils.js.map +1 -0
- package/dist/shared/services/plugin/utils/plugin-runtime-bridge.utils.d.ts +2 -1
- package/dist/shared/services/plugin/utils/plugin-runtime-bridge.utils.d.ts.map +1 -0
- package/dist/shared/services/plugin/utils/plugin-runtime-bridge.utils.js +2 -1
- package/dist/shared/services/plugin/utils/plugin-runtime-bridge.utils.js.map +1 -0
- package/dist/shared/services/restart/restart-coordinator.service.d.ts +2 -1
- package/dist/shared/services/restart/restart-coordinator.service.d.ts.map +1 -0
- package/dist/shared/services/restart/restart-coordinator.service.js +2 -0
- package/dist/shared/services/restart/restart-coordinator.service.js.map +1 -0
- package/dist/shared/services/restart/restart-sentinel.service.d.ts +2 -1
- package/dist/shared/services/restart/restart-sentinel.service.d.ts.map +1 -0
- package/dist/shared/services/restart/restart-sentinel.service.js +2 -0
- package/dist/shared/services/restart/restart-sentinel.service.js.map +1 -0
- package/dist/shared/services/restart/runtime-restart-request.service.d.ts +2 -1
- package/dist/shared/services/restart/runtime-restart-request.service.d.ts.map +1 -0
- package/dist/shared/services/restart/runtime-restart-request.service.js +2 -0
- package/dist/shared/services/restart/runtime-restart-request.service.js.map +1 -0
- package/dist/shared/services/runtime/managed-service-supervisor.service.d.ts +85 -0
- package/dist/shared/services/runtime/managed-service-supervisor.service.d.ts.map +1 -0
- package/dist/shared/services/runtime/managed-service-supervisor.service.js +271 -0
- package/dist/shared/services/runtime/managed-service-supervisor.service.js.map +1 -0
- package/dist/shared/services/runtime/nextclaw-distribution.service.d.ts +2 -1
- package/dist/shared/services/runtime/nextclaw-distribution.service.d.ts.map +1 -0
- package/dist/shared/services/runtime/nextclaw-distribution.service.js +2 -0
- package/dist/shared/services/runtime/nextclaw-distribution.service.js.map +1 -0
- package/dist/shared/services/runtime/runtime-command.service.d.ts +3 -1
- package/dist/shared/services/runtime/runtime-command.service.d.ts.map +1 -0
- package/dist/shared/services/runtime/runtime-command.service.js +5 -0
- package/dist/shared/services/runtime/runtime-command.service.js.map +1 -0
- package/dist/shared/services/runtime/runtime-config-init.service.d.ts +2 -1
- package/dist/shared/services/runtime/runtime-config-init.service.d.ts.map +1 -0
- package/dist/shared/services/runtime/runtime-config-init.service.js +2 -0
- package/dist/shared/services/runtime/runtime-config-init.service.js.map +1 -0
- package/dist/shared/services/runtime/service-managed-startup.service.d.ts +4 -32
- package/dist/shared/services/runtime/service-managed-startup.service.d.ts.map +1 -0
- package/dist/shared/services/runtime/service-managed-startup.service.js +10 -92
- package/dist/shared/services/runtime/service-managed-startup.service.js.map +1 -0
- package/dist/shared/services/runtime/utils/managed-service-routing.utils.d.ts +2 -1
- package/dist/shared/services/runtime/utils/managed-service-routing.utils.d.ts.map +1 -0
- package/dist/shared/services/runtime/utils/managed-service-routing.utils.js +2 -0
- package/dist/shared/services/runtime/utils/managed-service-routing.utils.js.map +1 -0
- package/dist/shared/services/runtime/utils/service-remote-runtime.utils.d.ts +5 -2
- package/dist/shared/services/runtime/utils/service-remote-runtime.utils.d.ts.map +1 -0
- package/dist/shared/services/runtime/utils/service-remote-runtime.utils.js +23 -17
- package/dist/shared/services/runtime/utils/service-remote-runtime.utils.js.map +1 -0
- package/dist/shared/services/ui/companion-runtime.service.d.ts +2 -1
- package/dist/shared/services/ui/companion-runtime.service.d.ts.map +1 -0
- package/dist/shared/services/ui/companion-runtime.service.js +2 -0
- package/dist/shared/services/ui/companion-runtime.service.js.map +1 -0
- package/dist/shared/services/ui/local-ui-discovery.service.d.ts +2 -1
- package/dist/shared/services/ui/local-ui-discovery.service.d.ts.map +1 -0
- package/dist/shared/services/ui/local-ui-discovery.service.js +2 -0
- package/dist/shared/services/ui/local-ui-discovery.service.js.map +1 -0
- package/dist/shared/services/ui/npm-runtime-update-host.service.d.ts +2 -1
- package/dist/shared/services/ui/npm-runtime-update-host.service.d.ts.map +1 -0
- package/dist/shared/services/ui/npm-runtime-update-host.service.js +2 -0
- package/dist/shared/services/ui/npm-runtime-update-host.service.js.map +1 -0
- package/dist/shared/services/ui/runtime-control-host.service.d.ts +2 -1
- package/dist/shared/services/ui/runtime-control-host.service.d.ts.map +1 -0
- package/dist/shared/services/ui/runtime-control-host.service.js +2 -0
- package/dist/shared/services/ui/runtime-control-host.service.js.map +1 -0
- package/dist/shared/services/ui/service-remote-access.service.d.ts +2 -1
- package/dist/shared/services/ui/service-remote-access.service.d.ts.map +1 -0
- package/dist/shared/services/ui/service-remote-access.service.js +2 -0
- package/dist/shared/services/ui/service-remote-access.service.js.map +1 -0
- package/dist/shared/services/ui/ui-bridge-api.service.d.ts +2 -1
- package/dist/shared/services/ui/ui-bridge-api.service.d.ts.map +1 -0
- package/dist/shared/services/ui/ui-bridge-api.service.js +2 -0
- package/dist/shared/services/ui/ui-bridge-api.service.js.map +1 -0
- package/dist/shared/services/workspace/workspace-manager.service.d.ts +2 -1
- package/dist/shared/services/workspace/workspace-manager.service.d.ts.map +1 -0
- package/dist/shared/services/workspace/workspace-manager.service.js +2 -0
- package/dist/shared/services/workspace/workspace-manager.service.js.map +1 -0
- package/dist/shared/stores/companion-runtime.store.d.ts +2 -1
- package/dist/shared/stores/companion-runtime.store.d.ts.map +1 -0
- package/dist/shared/stores/companion-runtime.store.js +2 -0
- package/dist/shared/stores/companion-runtime.store.js.map +1 -0
- package/dist/shared/stores/local-ui-runtime.store.d.ts +2 -1
- package/dist/shared/stores/local-ui-runtime.store.d.ts.map +1 -0
- package/dist/shared/stores/local-ui-runtime.store.js +2 -0
- package/dist/shared/stores/local-ui-runtime.store.js.map +1 -0
- package/dist/shared/stores/managed-service-state.store.d.ts +19 -1
- package/dist/shared/stores/managed-service-state.store.d.ts.map +1 -0
- package/dist/shared/stores/managed-service-state.store.js +2 -0
- package/dist/shared/stores/managed-service-state.store.js.map +1 -0
- package/dist/shared/stores/pending-restart.store.d.ts +2 -1
- package/dist/shared/stores/pending-restart.store.d.ts.map +1 -0
- package/dist/shared/stores/pending-restart.store.js +2 -0
- package/dist/shared/stores/pending-restart.store.js.map +1 -0
- package/dist/shared/types/cli.types.d.ts +16 -1
- package/dist/shared/types/cli.types.d.ts.map +1 -0
- package/dist/shared/types/distribution.types.d.ts +2 -1
- package/dist/shared/types/distribution.types.d.ts.map +1 -0
- package/dist/shared/utils/cli.utils.d.ts +2 -1
- package/dist/shared/utils/cli.utils.d.ts.map +1 -0
- package/dist/shared/utils/cli.utils.js +2 -0
- package/dist/shared/utils/cli.utils.js.map +1 -0
- package/dist/shared/utils/config-path.d.ts +2 -1
- package/dist/shared/utils/config-path.d.ts.map +1 -0
- package/dist/shared/utils/config-path.js +2 -0
- package/dist/shared/utils/config-path.js.map +1 -0
- package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.d.ts +2 -1
- package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.d.ts.map +1 -0
- package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.js +2 -0
- package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.js.map +1 -0
- package/dist/shared/utils/marketplace/service-marketplace-helpers.utils.d.ts +2 -1
- package/dist/shared/utils/marketplace/service-marketplace-helpers.utils.d.ts.map +1 -0
- package/dist/shared/utils/marketplace/service-marketplace-helpers.utils.js +2 -0
- package/dist/shared/utils/marketplace/service-marketplace-helpers.utils.js.map +1 -0
- package/dist/shared/utils/package/package-manifest.utils.d.ts +2 -1
- package/dist/shared/utils/package/package-manifest.utils.d.ts.map +1 -0
- package/dist/shared/utils/package/package-manifest.utils.js +2 -0
- package/dist/shared/utils/package/package-manifest.utils.js.map +1 -0
- package/dist/shared/utils/runtime-helpers.d.ts +2 -1
- package/dist/shared/utils/runtime-helpers.d.ts.map +1 -0
- package/dist/shared/utils/runtime-helpers.js +2 -0
- package/dist/shared/utils/runtime-helpers.js.map +1 -0
- package/dist/shared/utils/service-port-probe.utils.d.ts +2 -1
- package/dist/shared/utils/service-port-probe.utils.d.ts.map +1 -0
- package/dist/shared/utils/service-port-probe.utils.js +2 -0
- package/dist/shared/utils/service-port-probe.utils.js.map +1 -0
- package/dist/shared/utils/startup-trace.d.ts +2 -1
- package/dist/shared/utils/startup-trace.d.ts.map +1 -0
- package/dist/shared/utils/startup-trace.js +2 -0
- package/dist/shared/utils/startup-trace.js.map +1 -0
- package/dist/shared/utils/top-level-nextclaw-command-env.utils.d.ts +2 -1
- package/dist/shared/utils/top-level-nextclaw-command-env.utils.d.ts.map +1 -0
- package/dist/shared/utils/top-level-nextclaw-command-env.utils.js +2 -0
- package/dist/shared/utils/top-level-nextclaw-command-env.utils.js.map +1 -0
- package/package.json +20 -20
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-job-handler.utils.js","names":[],"sources":["../../../../../src/shared/services/gateway/utils/cron-job-handler.utils.ts"],"sourcesContent":["import type { MessageBus } from \"@nextclaw/core\";\nimport { runPromptOverNcp, type NcpRunnerAgent } from \"@nextclaw/kernel\";\n\ntype CronJobLike = {\n id: string;\n name: string;\n payload: {\n message: string;\n agentId?: string | null;\n sessionId?: string | null;\n deliver?: boolean;\n channel?: string | null;\n to?: string | null;\n accountId?: string | null;\n };\n};\n\nfunction normalizeOptionalString(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed || undefined;\n}\n\nfunction buildCronSessionMetadata(params: {\n job: CronJobLike;\n agentId: string;\n accountId?: string;\n}): Record<string, unknown> {\n const { job, agentId, accountId } = params;\n const channel = normalizeOptionalString(job.payload.channel) ?? \"cli\";\n const chatId = normalizeOptionalString(job.payload.to) ?? \"direct\";\n const metadata: Record<string, unknown> = {\n agentId,\n agent_id: agentId,\n channel,\n chatId,\n chat_id: chatId,\n label: job.name,\n cron_job_id: job.id,\n cron_job_name: job.name,\n session_origin: \"cron\",\n };\n if (accountId) {\n metadata.accountId = accountId;\n metadata.account_id = accountId;\n }\n return metadata;\n}\n\nexport function createCronJobHandler(params: {\n agentRunRequests: NcpRunnerAgent;\n bus: MessageBus;\n}): (job: CronJobLike) => Promise<string> {\n return async (job: CronJobLike): Promise<string> => {\n const accountId = normalizeOptionalString(job.payload.accountId);\n const agentId = normalizeOptionalString(job.payload.agentId) ?? \"main\";\n const sessionId = normalizeOptionalString(job.payload.sessionId) ?? `cron:${job.id}`;\n const metadata = buildCronSessionMetadata({\n job,\n agentId,\n accountId,\n });\n const result = await runPromptOverNcp({\n agent: params.agentRunRequests,\n sessionId,\n content: job.payload.message,\n metadata,\n missingCompletedMessageError: \"cron job completed without a final assistant message\",\n runErrorMessage: \"cron job failed\",\n });\n const response = result.text;\n\n if (job.payload.deliver && job.payload.to) {\n await params.bus.publishOutbound({\n channel: job.payload.channel ?? \"cli\",\n chatId: job.payload.to,\n content: response,\n media: [],\n metadata,\n });\n }\n\n return response;\n };\n}\n"],"mappings":";;AAiBA,SAAS,wBAAwB,OAAoC;AACnE,KAAI,OAAO,UAAU,SACnB;AAGF,QADgB,MAAM,MAAM,IACV,KAAA;;AAGpB,SAAS,yBAAyB,QAIN;CAC1B,MAAM,EAAE,KAAK,SAAS,cAAc;CACpC,MAAM,UAAU,wBAAwB,IAAI,QAAQ,QAAQ,IAAI;CAChE,MAAM,SAAS,wBAAwB,IAAI,QAAQ,GAAG,IAAI;CAC1D,MAAM,WAAoC;EACxC;EACA,UAAU;EACV;EACA;EACA,SAAS;EACT,OAAO,IAAI;EACX,aAAa,IAAI;EACjB,eAAe,IAAI;EACnB,gBAAgB;EACjB;AACD,KAAI,WAAW;AACb,WAAS,YAAY;AACrB,WAAS,aAAa;;AAExB,QAAO;;AAGT,SAAgB,qBAAqB,QAGK;AACxC,QAAO,OAAO,QAAsC;EAClD,MAAM,YAAY,wBAAwB,IAAI,QAAQ,UAAU;EAChE,MAAM,UAAU,wBAAwB,IAAI,QAAQ,QAAQ,IAAI;EAChE,MAAM,YAAY,wBAAwB,IAAI,QAAQ,UAAU,IAAI,QAAQ,IAAI;EAChF,MAAM,WAAW,yBAAyB;GACxC;GACA;GACA;GACD,CAAC;EASF,MAAM,YARS,MAAM,iBAAiB;GACpC,OAAO,OAAO;GACd;GACA,SAAS,IAAI,QAAQ;GACrB;GACA,8BAA8B;GAC9B,iBAAiB;GAClB,CAAC,EACsB;AAExB,MAAI,IAAI,QAAQ,WAAW,IAAI,QAAQ,GACrC,OAAM,OAAO,IAAI,gBAAgB;GAC/B,SAAS,IAAI,QAAQ,WAAW;GAChC,QAAQ,IAAI,QAAQ;GACpB,SAAS;GACT,OAAO,EAAE;GACT;GACD,CAAC;AAGJ,SAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-runtime-lifecycle.utils.d.ts","names":[],"sources":["../../../../../src/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.ts"],"mappings":";;;iBAEgB,iCAAA,CAAkC,MAAA;EAChD,eAAA,EAAiB,2BAAA;EACjB,KAAA;AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-runtime-lifecycle.utils.js","names":[],"sources":["../../../../../src/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.ts"],"sourcesContent":["import type { ServiceBootstrapStatusStore } from \"../service-bootstrap-status.service.js\";\n\nexport function handleGatewayDeferredStartupError(params: {\n bootstrapStatus: ServiceBootstrapStatusStore;\n error: unknown;\n}): void {\n const { bootstrapStatus, error } = params;\n const message = error instanceof Error ? error.message : String(error);\n bootstrapStatus.markError(message);\n if (bootstrapStatus.getStatus().pluginHydration.state === \"running\") {\n bootstrapStatus.markPluginHydrationError(message);\n }\n console.error(\n `Deferred startup failed: ${message}`,\n );\n}\n"],"mappings":";AAEA,SAAgB,kCAAkC,QAGzC;CACP,MAAM,EAAE,iBAAiB,UAAU;CACnC,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AACtE,iBAAgB,UAAU,QAAQ;AAClC,KAAI,gBAAgB,WAAW,CAAC,gBAAgB,UAAU,UACxD,iBAAgB,yBAAyB,QAAQ;AAEnD,SAAQ,MACN,4BAA4B,UAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-marketplace-installer.service.d.ts","names":[],"sources":["../../../../src/shared/services/marketplace/service-marketplace-installer.service.ts"],"mappings":";;;KAkBK,gBAAA;EACH,OAAA;EACA,MAAA;AAAA;AAAA,KAGG,yBAAA,GAA4B,gBAAA;AAAA,cAEpB,2BAAA;EAAA,iBAEQ,IAAA;cAAA,IAAA;IACf,qBAAA,SAA8B,OAAA;IAC9B,gBAAA,GAAmB,IAAA,eAAmB,OAAA;IACtC,mBAAA,GAAsB,IAAA,UAAc,KAAA,eAAoB,yBAAA;EAAA;EAI5D,eAAA,CAAA,GAAmB,oBAAA;EAAA,QAgBL,aAAA;EAAA,QAMA,YAAA;EAAA,QAiCA,UAAA;EAAA,QAIA,YAAA;EAAA,QAMA,aAAA;EAAA,QAMA,eAAA;EAAA,QAQA,cAAA;EAAA,QAeA,SAAA;EAAA,QAIA,UAAA;EAAA,QAIA,SAAA;EAAA,QAIA,SAAA;EAAA,QAIN,uBAAA;AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-marketplace-installer.service.js","names":[],"sources":["../../../../src/shared/services/marketplace/service-marketplace-installer.service.ts"],"sourcesContent":["import { getSkillsPath, getWorkspacePath, loadConfig } from \"@nextclaw/core\";\nimport type {\n MarketplaceInstallSkillParams,\n MarketplaceInstaller,\n MarketplaceMcpDoctorResult,\n MarketplaceMcpInstallRequest\n} from \"@nextclaw/server\";\nimport { existsSync, rmSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport {\n disablePluginMutation,\n enablePluginMutation,\n installPluginMutation,\n uninstallPluginMutation\n} from \"@nextclaw-service/commands/plugin/plugin-mutation-actions.utils.js\";\nimport { buildMarketplaceSkillInstallArgs, pickUserFacingCommandSummary } from \"@nextclaw-service/shared/utils/marketplace/service-marketplace-helpers.utils.js\";\nimport { ServiceMcpMarketplaceOps } from \"@nextclaw-service/shared/services/marketplace/service-mcp-marketplace-ops.js\";\n\ntype UserFacingResult = {\n message: string;\n output?: string;\n};\n\ntype BuiltinSkillInstallResult = UserFacingResult | null;\n\nexport class ServiceMarketplaceInstaller {\n constructor(\n private readonly deps: {\n applyLiveConfigReload?: () => Promise<void>;\n runCliSubcommand: (args: string[]) => Promise<string>;\n installBuiltinSkill: (slug: string, force?: boolean) => BuiltinSkillInstallResult;\n }\n ) {}\n\n createInstaller(): MarketplaceInstaller {\n return {\n installPlugin: (spec) => this.installPlugin(spec),\n installSkill: (params) => this.installSkill(params),\n installMcp: (params) => this.installMcp(params),\n enablePlugin: (id) => this.enablePlugin(id),\n disablePlugin: (id) => this.disablePlugin(id),\n uninstallPlugin: (id) => this.uninstallPlugin(id),\n uninstallSkill: (slug) => this.uninstallSkill(slug),\n enableMcp: (name) => this.enableMcp(name),\n disableMcp: (name) => this.disableMcp(name),\n removeMcp: (name) => this.removeMcp(name),\n doctorMcp: (name) => this.doctorMcp(name)\n };\n }\n\n private async installPlugin(spec: string): Promise<UserFacingResult> {\n const result = await installPluginMutation(spec);\n await this.deps.applyLiveConfigReload?.();\n return { message: result.message };\n }\n\n private async installSkill(params: MarketplaceInstallSkillParams): Promise<UserFacingResult> {\n if (params.kind === \"builtin\") {\n const result = this.deps.installBuiltinSkill(params.slug, params.force);\n if (!result) {\n throw new Error(`Builtin skill not found: ${params.slug}`);\n }\n return result;\n }\n\n if (params.kind && params.kind !== \"marketplace\") {\n throw new Error(`Unsupported marketplace skill kind: ${params.kind}`);\n }\n\n const workspace = getWorkspacePath(loadConfig().agents.defaults.workspace);\n const args = buildMarketplaceSkillInstallArgs({\n slug: params.slug,\n workspace,\n force: params.force\n });\n\n try {\n const output = await this.deps.runCliSubcommand(args);\n const summary = pickUserFacingCommandSummary(output, `Installed skill: ${params.slug}`);\n return { message: summary };\n } catch (error) {\n const fallback = this.deps.installBuiltinSkill(params.slug, params.force);\n if (!fallback) {\n throw error;\n }\n return fallback;\n }\n }\n\n private async installMcp(params: MarketplaceMcpInstallRequest): Promise<{ name: string; message: string; output?: string }> {\n return await this.createMcpMarketplaceOps().install(params);\n }\n\n private async enablePlugin(id: string): Promise<UserFacingResult> {\n const result = await enablePluginMutation(id);\n await this.deps.applyLiveConfigReload?.();\n return { message: result.message };\n }\n\n private async disablePlugin(id: string): Promise<UserFacingResult> {\n const result = await disablePluginMutation(id);\n await this.deps.applyLiveConfigReload?.();\n return { message: result.message };\n }\n\n private async uninstallPlugin(id: string): Promise<UserFacingResult> {\n await disablePluginMutation(id);\n await this.deps.applyLiveConfigReload?.();\n const result = await uninstallPluginMutation(id, { force: true });\n await this.deps.applyLiveConfigReload?.();\n return { message: result.message };\n }\n\n private async uninstallSkill(slug: string): Promise<UserFacingResult> {\n const workspace = getWorkspacePath(loadConfig().agents.defaults.workspace);\n const targetDir = join(getSkillsPath(workspace), slug);\n\n if (!existsSync(targetDir)) {\n throw new Error(`Skill not installed in workspace: ${slug}`);\n }\n\n rmSync(targetDir, { recursive: true, force: true });\n\n return {\n message: `Uninstalled skill: ${slug}`\n };\n }\n\n private async enableMcp(name: string): Promise<UserFacingResult> {\n return await this.createMcpMarketplaceOps().enable(name);\n }\n\n private async disableMcp(name: string): Promise<UserFacingResult> {\n return await this.createMcpMarketplaceOps().disable(name);\n }\n\n private async removeMcp(name: string): Promise<UserFacingResult> {\n return await this.createMcpMarketplaceOps().remove(name);\n }\n\n private async doctorMcp(name: string): Promise<MarketplaceMcpDoctorResult> {\n return await this.createMcpMarketplaceOps().doctor(name);\n }\n\n private createMcpMarketplaceOps(): ServiceMcpMarketplaceOps {\n return new ServiceMcpMarketplaceOps({\n applyLiveConfigReload: this.deps.applyLiveConfigReload\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-mcp-marketplace-ops.d.ts","names":[],"sources":["../../../../src/shared/services/marketplace/service-mcp-marketplace-ops.ts"],"mappings":";;;cAGa,wBAAA;EAAA,iBAEQ,OAAA;cAAA,OAAA;IACf,qBAAA,SAA8B,OAAA;EAAA;EAI5B,OAAA,CAAQ,MAAA;IACZ,IAAA;IACA,IAAA;IACA,OAAA;IACA,SAAA;IACA,MAAA;IACA,MAAA,GAAS,MAAA;IACT,QAAA;EAAA,IACE,OAAA;IAAU,IAAA;IAAc,OAAA;IAAiB,MAAA;EAAA;EA+BvC,MAAA,CAAO,IAAA,WAAe,OAAA;IAAU,OAAA;IAAiB,MAAA;EAAA;EASjD,OAAA,CAAQ,IAAA,WAAe,OAAA;IAAU,OAAA;IAAiB,MAAA;EAAA;EASlD,MAAA,CAAO,IAAA,WAAe,OAAA;IAAU,OAAA;IAAiB,MAAA;EAAA;EASjD,MAAA,CAAO,IAAA,WAAY,OAAA,CATU,gBAAA,CASV,eAAA;EAAA,QAQjB,qBAAA;EAAA,QAOA,kBAAA;AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-mcp-marketplace-ops.js","names":[],"sources":["../../../../src/shared/services/marketplace/service-mcp-marketplace-ops.ts"],"sourcesContent":["import { loadConfig, saveConfig } from \"@nextclaw/core\";\nimport { McpDoctorFacade, McpMutationService, type McpMarketplaceInstallTemplate } from \"@nextclaw/mcp\";\n\nexport class ServiceMcpMarketplaceOps {\n constructor(\n private readonly options: {\n applyLiveConfigReload?: () => Promise<void>;\n }\n ) {}\n\n async install(params: {\n spec: string;\n name?: string;\n enabled?: boolean;\n allAgents?: boolean;\n agents?: string[];\n inputs?: Record<string, string>;\n template?: unknown;\n }): Promise<{ name: string; message: string; output?: string }> {\n if (!params.template) {\n throw new Error(`Missing MCP marketplace template for ${params.spec}`);\n }\n\n const template = params.template as McpMarketplaceInstallTemplate;\n const result = this.createMutationService().installFromTemplate({\n template,\n name: params.name,\n enabled: params.enabled,\n scope: {\n allAgents: params.allAgents ?? true,\n agents: params.allAgents === false ? params.agents ?? [] : []\n },\n inputs: params.inputs,\n metadata: {\n source: \"marketplace\",\n catalogSlug: params.spec,\n displayName: template.defaultName\n }\n });\n if (!result.changed) {\n throw new Error(result.message);\n }\n await this.options.applyLiveConfigReload?.();\n return {\n name: result.name,\n message: result.message\n };\n }\n\n async enable(name: string): Promise<{ message: string; output?: string }> {\n const result = this.createMutationService().toggleEnabled(name, true);\n if (!result.changed) {\n throw new Error(result.message);\n }\n await this.options.applyLiveConfigReload?.();\n return { message: result.message };\n }\n\n async disable(name: string): Promise<{ message: string; output?: string }> {\n const result = this.createMutationService().toggleEnabled(name, false);\n if (!result.changed) {\n throw new Error(result.message);\n }\n await this.options.applyLiveConfigReload?.();\n return { message: result.message };\n }\n\n async remove(name: string): Promise<{ message: string; output?: string }> {\n const result = this.createMutationService().removeServer(name);\n if (!result.changed) {\n throw new Error(result.message);\n }\n await this.options.applyLiveConfigReload?.();\n return { message: result.message };\n }\n\n async doctor(name: string) {\n const report = await this.createDoctorFacade().inspectOne(name);\n if (!report) {\n throw new Error(`Unknown MCP server: ${name}`);\n }\n return report;\n }\n\n private createMutationService(): McpMutationService {\n return new McpMutationService({\n getConfig: () => loadConfig(),\n saveConfig: (config) => saveConfig(config)\n });\n }\n\n private createDoctorFacade(): McpDoctorFacade {\n return new McpDoctorFacade({\n getConfig: () => loadConfig()\n });\n }\n}\n"],"mappings":";;;AAGA,IAAa,2BAAb,MAAsC;CACpC,YACE,SAGA;AAHiB,OAAA,UAAA;;CAKnB,MAAM,QAAQ,QAQkD;AAC9D,MAAI,CAAC,OAAO,SACV,OAAM,IAAI,MAAM,wCAAwC,OAAO,OAAO;EAGxE,MAAM,WAAW,OAAO;EACxB,MAAM,SAAS,KAAK,uBAAuB,CAAC,oBAAoB;GAC9D;GACA,MAAM,OAAO;GACb,SAAS,OAAO;GAChB,OAAO;IACL,WAAW,OAAO,aAAa;IAC/B,QAAQ,OAAO,cAAc,QAAQ,OAAO,UAAU,EAAE,GAAG,EAAE;IAC9D;GACD,QAAQ,OAAO;GACf,UAAU;IACR,QAAQ;IACR,aAAa,OAAO;IACpB,aAAa,SAAS;IACvB;GACF,CAAC;AACF,MAAI,CAAC,OAAO,QACV,OAAM,IAAI,MAAM,OAAO,QAAQ;AAEjC,QAAM,KAAK,QAAQ,yBAAyB;AAC5C,SAAO;GACL,MAAM,OAAO;GACb,SAAS,OAAO;GACjB;;CAGH,MAAM,OAAO,MAA6D;EACxE,MAAM,SAAS,KAAK,uBAAuB,CAAC,cAAc,MAAM,KAAK;AACrE,MAAI,CAAC,OAAO,QACV,OAAM,IAAI,MAAM,OAAO,QAAQ;AAEjC,QAAM,KAAK,QAAQ,yBAAyB;AAC5C,SAAO,EAAE,SAAS,OAAO,SAAS;;CAGpC,MAAM,QAAQ,MAA6D;EACzE,MAAM,SAAS,KAAK,uBAAuB,CAAC,cAAc,MAAM,MAAM;AACtE,MAAI,CAAC,OAAO,QACV,OAAM,IAAI,MAAM,OAAO,QAAQ;AAEjC,QAAM,KAAK,QAAQ,yBAAyB;AAC5C,SAAO,EAAE,SAAS,OAAO,SAAS;;CAGpC,MAAM,OAAO,MAA6D;EACxE,MAAM,SAAS,KAAK,uBAAuB,CAAC,aAAa,KAAK;AAC9D,MAAI,CAAC,OAAO,QACV,OAAM,IAAI,MAAM,OAAO,QAAQ;AAEjC,QAAM,KAAK,QAAQ,yBAAyB;AAC5C,SAAO,EAAE,SAAS,OAAO,SAAS;;CAGpC,MAAM,OAAO,MAAc;EACzB,MAAM,SAAS,MAAM,KAAK,oBAAoB,CAAC,WAAW,KAAK;AAC/D,MAAI,CAAC,OACH,OAAM,IAAI,MAAM,uBAAuB,OAAO;AAEhD,SAAO;;CAGT,wBAAoD;AAClD,SAAO,IAAI,mBAAmB;GAC5B,iBAAiB,YAAY;GAC7B,aAAa,WAAW,WAAW,OAAO;GAC3C,CAAC;;CAGJ,qBAA8C;AAC5C,SAAO,IAAI,gBAAgB,EACzB,iBAAiB,YAAY,EAC9B,CAAC"}
|
|
@@ -21,4 +21,5 @@ declare function wrapStartChannelsWithDevPluginHotReload(params: {
|
|
|
21
21
|
startupSettleMs: number;
|
|
22
22
|
}): () => Promise<void>;
|
|
23
23
|
//#endregion
|
|
24
|
-
export { DEV_PLUGIN_HOT_RELOAD_TARGETS_ENV, DevPluginHotReloadTarget, resolveDevPluginHotReloadTargets, startDevPluginHotReloadWatcher, wrapStartChannelsWithDevPluginHotReload };
|
|
24
|
+
export { DEV_PLUGIN_HOT_RELOAD_TARGETS_ENV, DevPluginHotReloadTarget, resolveDevPluginHotReloadTargets, startDevPluginHotReloadWatcher, wrapStartChannelsWithDevPluginHotReload };
|
|
25
|
+
//# sourceMappingURL=plugin-dev-hot-reload.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-dev-hot-reload.utils.d.ts","names":[],"sources":["../../../../../src/shared/services/plugin/utils/plugin-dev-hot-reload.utils.ts"],"mappings":";;;cAIa,iCAAA;AAAA,KAED,wBAAA;EACV,QAAA;EACA,UAAA;EACA,UAAA;AAAA;AAAA,iBAiCc,gCAAA,CACd,QAAA,wBACC,wBAAA;AAAA,iBA+Ca,8BAAA,CAA+B,MAAA;EAC7C,eAAA,EAAiB,0BAAA;EACjB,aAAA,GAAgB,SAAA,eAAwB,OAAA;EACxC,OAAA,GAAU,wBAAA;AAAA;AAAA,iBA+EI,uCAAA,CAAwC,MAAA;EACtD,aAAA,QAAqB,OAAA;EACrB,eAAA,EAAiB,0BAAA;EACjB,eAAA;EACA,aAAA,GAAgB,SAAA,eAAwB,OAAA;EACxC,eAAA;AAAA,UACQ,OAAA"}
|
|
@@ -115,3 +115,5 @@ function wrapStartChannelsWithDevPluginHotReload(params) {
|
|
|
115
115
|
}
|
|
116
116
|
//#endregion
|
|
117
117
|
export { DEV_PLUGIN_HOT_RELOAD_TARGETS_ENV, resolveDevPluginHotReloadTargets, startDevPluginHotReloadWatcher, wrapStartChannelsWithDevPluginHotReload };
|
|
118
|
+
|
|
119
|
+
//# sourceMappingURL=plugin-dev-hot-reload.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-dev-hot-reload.utils.js","names":[],"sources":["../../../../../src/shared/services/plugin/utils/plugin-dev-hot-reload.utils.ts"],"sourcesContent":["import chokidar from \"chokidar\";\nimport { resolve, sep } from \"node:path\";\nimport type { ServiceFileWatcherRegistry } from \"@nextclaw-service/shared/services/gateway/service-startup-support.service.js\";\n\nexport const DEV_PLUGIN_HOT_RELOAD_TARGETS_ENV = \"NEXTCLAW_DEV_PLUGIN_HOT_RELOAD_TARGETS\";\n\nexport type DevPluginHotReloadTarget = {\n pluginId: string;\n pluginPath: string;\n watchPaths: string[];\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction readOptionalString(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 normalizeWatchPaths(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n const watchPaths: string[] = [];\n for (const entry of value) {\n const normalized = readOptionalString(entry);\n if (!normalized) {\n continue;\n }\n const resolvedPath = resolve(normalized);\n if (!watchPaths.includes(resolvedPath)) {\n watchPaths.push(resolvedPath);\n }\n }\n return watchPaths;\n}\n\nexport function resolveDevPluginHotReloadTargets(\n rawValue = process.env[DEV_PLUGIN_HOT_RELOAD_TARGETS_ENV],\n): DevPluginHotReloadTarget[] {\n if (typeof rawValue !== \"string\" || rawValue.trim().length === 0) {\n return [];\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(rawValue);\n } catch (error) {\n throw new Error(\n `[dev-plugin-hot-reload] failed to parse ${DEV_PLUGIN_HOT_RELOAD_TARGETS_ENV}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n\n if (!Array.isArray(parsed)) {\n throw new Error(\n `[dev-plugin-hot-reload] ${DEV_PLUGIN_HOT_RELOAD_TARGETS_ENV} must be a JSON array`,\n );\n }\n\n const seenPluginIds = new Set<string>();\n const targets: DevPluginHotReloadTarget[] = [];\n for (const entry of parsed) {\n if (!isRecord(entry)) {\n continue;\n }\n const pluginId = readOptionalString(entry.pluginId);\n const pluginPath = readOptionalString(entry.pluginPath);\n const watchPaths = normalizeWatchPaths(entry.watchPaths);\n if (!pluginId || !pluginPath || watchPaths.length === 0) {\n continue;\n }\n if (seenPluginIds.has(pluginId)) {\n throw new Error(\n `[dev-plugin-hot-reload] duplicate plugin target for \"${pluginId}\"`,\n );\n }\n seenPluginIds.add(pluginId);\n targets.push({\n pluginId,\n pluginPath: resolve(pluginPath),\n watchPaths,\n });\n }\n return targets;\n}\n\nexport function startDevPluginHotReloadWatcher(params: {\n watcherRegistry: ServiceFileWatcherRegistry;\n reloadPlugins: (pluginIds: string[]) => Promise<void>;\n targets?: DevPluginHotReloadTarget[];\n}): void {\n const targets = params.targets ?? resolveDevPluginHotReloadTargets();\n if (targets.length === 0) {\n return;\n }\n\n const pendingPluginIds = new Set<string>();\n let flushTimer: ReturnType<typeof setTimeout> | null = null;\n let reloadRunning = false;\n let reloadPending = false;\n\n const flushReload = async (): Promise<void> => {\n if (reloadRunning) {\n reloadPending = true;\n return;\n }\n const pluginIds = [...pendingPluginIds];\n pendingPluginIds.clear();\n if (pluginIds.length === 0) {\n return;\n }\n\n reloadRunning = true;\n try {\n console.log(`[dev] Plugin dist updated: ${pluginIds.join(\", \")}`);\n await params.reloadPlugins(pluginIds);\n console.log(`[dev] Plugin hot reload applied: ${pluginIds.join(\", \")}`);\n } catch (error) {\n console.error(\n `[dev] Plugin hot reload failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n } finally {\n reloadRunning = false;\n if (reloadPending || pendingPluginIds.size > 0) {\n reloadPending = false;\n await flushReload();\n }\n }\n };\n\n const scheduleReload = (pluginId: string): void => {\n pendingPluginIds.add(pluginId);\n if (flushTimer) {\n clearTimeout(flushTimer);\n }\n flushTimer = setTimeout(() => {\n flushTimer = null;\n void flushReload();\n }, 150);\n };\n\n const watcher = chokidar.watch(\n targets.flatMap((entry) => entry.watchPaths),\n {\n ignoreInitial: true,\n awaitWriteFinish: { stabilityThreshold: 200, pollInterval: 50 },\n },\n );\n params.watcherRegistry.remember(watcher);\n watcher.on(\"all\", (_event, changedPath) => {\n const normalizedChangedPath = resolve(changedPath);\n for (const target of targets) {\n if (\n target.watchPaths.some((watchPath) =>\n normalizedChangedPath === watchPath ||\n normalizedChangedPath.startsWith(`${watchPath}${sep}`),\n )\n ) {\n scheduleReload(target.pluginId);\n }\n }\n });\n\n console.log(\n `[dev] Plugin hot reload watcher: ${targets.map((entry) => entry.pluginId).join(\", \")}`,\n );\n}\n\nexport function wrapStartChannelsWithDevPluginHotReload(params: {\n startChannels: () => Promise<void>;\n watcherRegistry: ServiceFileWatcherRegistry;\n isRuntimeActive: () => boolean;\n reloadPlugins: (pluginIds: string[]) => Promise<void>;\n startupSettleMs: number;\n}): () => Promise<void> {\n return async () => {\n await params.startChannels();\n console.log(\n `[dev] Plugin hot reload watcher will arm after ${params.startupSettleMs}ms startup settle window.`,\n );\n const timer = setTimeout(() => {\n if (!params.isRuntimeActive()) {\n return;\n }\n startDevPluginHotReloadWatcher({\n watcherRegistry: params.watcherRegistry,\n reloadPlugins: params.reloadPlugins,\n });\n }, params.startupSettleMs);\n timer.unref?.();\n };\n}\n"],"mappings":"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"}
|
|
@@ -3,4 +3,5 @@ import { NextclawGatewayRuntime } from "../../gateway/nextclaw-gateway-runtime.s
|
|
|
3
3
|
//#region src/shared/services/plugin/utils/plugin-runtime-bridge.utils.d.ts
|
|
4
4
|
declare function installPluginRuntimeBridge(gateway: NextclawGatewayRuntime): void;
|
|
5
5
|
//#endregion
|
|
6
|
-
export { installPluginRuntimeBridge };
|
|
6
|
+
export { installPluginRuntimeBridge };
|
|
7
|
+
//# sourceMappingURL=plugin-runtime-bridge.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-runtime-bridge.utils.d.ts","names":[],"sources":["../../../../../src/shared/services/plugin/utils/plugin-runtime-bridge.utils.ts"],"mappings":";;;iBAwBgB,0BAAA,CAA2B,OAAA,EAAS,sBAAA"}
|
|
@@ -17,7 +17,6 @@ function installPluginRuntimeBridge(gateway) {
|
|
|
17
17
|
await dispatcherOptions.onReplyStart?.();
|
|
18
18
|
const response = await dispatchPromptOverNcp({
|
|
19
19
|
config: gateway.configManager.loadConfig(),
|
|
20
|
-
sessionManager: gateway.sessionManager,
|
|
21
20
|
agentRunRequests: gateway.kernel.agentRunRequestManager,
|
|
22
21
|
...request
|
|
23
22
|
});
|
|
@@ -94,3 +93,5 @@ function resolvePluginRuntimeAttachments(ctx) {
|
|
|
94
93
|
}
|
|
95
94
|
//#endregion
|
|
96
95
|
export { installPluginRuntimeBridge };
|
|
96
|
+
|
|
97
|
+
//# sourceMappingURL=plugin-runtime-bridge.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-runtime-bridge.utils.js","names":[],"sources":["../../../../../src/shared/services/plugin/utils/plugin-runtime-bridge.utils.ts"],"sourcesContent":["import { loadConfig, saveConfig, type InboundAttachment } from \"@nextclaw/core\";\nimport { setPluginRuntimeBridge } from \"@nextclaw/openclaw-compat\";\nimport { dispatchPromptOverNcp } from \"@nextclaw/kernel\";\nimport type { NextclawGatewayRuntime } from \"@nextclaw-service/shared/services/gateway/nextclaw-gateway-runtime.service.js\";\n\ntype PluginRuntimeDispatchContext = {\n BodyForAgent?: unknown;\n Body?: unknown;\n SessionKey?: unknown;\n OriginatingChannel?: unknown;\n OriginatingTo?: unknown;\n SenderId?: unknown;\n AccountId?: unknown;\n AgentId?: unknown;\n Model?: unknown;\n AgentModel?: unknown;\n MediaPath?: unknown;\n MediaPaths?: unknown;\n MediaUrl?: unknown;\n MediaUrls?: unknown;\n MediaType?: unknown;\n MediaTypes?: unknown;\n};\n\nexport function installPluginRuntimeBridge(gateway: NextclawGatewayRuntime): void {\n setPluginRuntimeBridge({\n loadConfig: () =>\n gateway.kernel.extensions.toConfigView(gateway.configManager.loadConfig()),\n writeConfigFile: async (nextConfigView) => {\n if (!nextConfigView || typeof nextConfigView !== \"object\" || Array.isArray(nextConfigView)) {\n throw new Error(\"plugin runtime writeConfigFile expects an object config\");\n }\n const current = loadConfig();\n const next = gateway.kernel.extensions.mergeConfigView(current, nextConfigView);\n saveConfig(next);\n },\n dispatchReplyWithBufferedBlockDispatcher: async ({ ctx, dispatcherOptions }) => {\n const request = resolvePluginRuntimeRequest(ctx as PluginRuntimeDispatchContext);\n if (!request) {\n return;\n }\n\n try {\n await dispatcherOptions.onReplyStart?.();\n const response = await dispatchPromptOverNcp({\n config: gateway.configManager.loadConfig(),\n agentRunRequests: gateway.kernel.agentRunRequestManager,\n ...request,\n });\n const replyText = typeof response === \"string\" ? response : String(response ?? \"\");\n if (replyText.trim()) {\n await dispatcherOptions.deliver({ text: replyText }, { kind: \"final\" });\n }\n } catch (error) {\n dispatcherOptions.onError?.(error);\n throw error;\n }\n }\n });\n}\n\nfunction resolvePluginRuntimeRequest(ctx: PluginRuntimeDispatchContext) {\n const bodyForAgent = typeof ctx.BodyForAgent === \"string\" ? ctx.BodyForAgent : \"\";\n const body = typeof ctx.Body === \"string\" ? ctx.Body : \"\";\n const content = (bodyForAgent || body).trim();\n const attachments = resolvePluginRuntimeAttachments(ctx);\n if (!content && attachments.length === 0) {\n return null;\n }\n\n const sessionKey = typeof ctx.SessionKey === \"string\" && ctx.SessionKey.trim().length > 0 ? ctx.SessionKey : undefined;\n const channel =\n typeof ctx.OriginatingChannel === \"string\" && ctx.OriginatingChannel.trim().length > 0\n ? ctx.OriginatingChannel\n : \"cli\";\n const chatId =\n typeof ctx.OriginatingTo === \"string\" && ctx.OriginatingTo.trim().length > 0\n ? ctx.OriginatingTo\n : typeof ctx.SenderId === \"string\" && ctx.SenderId.trim().length > 0\n ? ctx.SenderId\n : \"direct\";\n const agentId = typeof ctx.AgentId === \"string\" ? ctx.AgentId : undefined;\n const modelOverride = resolveModelOverride(ctx);\n const accountId = typeof ctx.AccountId === \"string\" && ctx.AccountId.trim().length > 0 ? ctx.AccountId : undefined;\n\n return {\n content,\n sessionKey,\n channel,\n chatId,\n agentId,\n attachments,\n metadata: {\n ...(accountId ? { account_id: accountId } : {}),\n ...(modelOverride ? { model: modelOverride } : {})\n }\n };\n}\n\nfunction resolveModelOverride(ctx: PluginRuntimeDispatchContext): string | undefined {\n if (typeof ctx.Model === \"string\" && ctx.Model.trim().length > 0) {\n return ctx.Model.trim();\n }\n if (typeof ctx.AgentModel === \"string\" && ctx.AgentModel.trim().length > 0) {\n return ctx.AgentModel.trim();\n }\n return undefined;\n}\n\nfunction readStringList(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return value\n .map((entry) => (typeof entry === \"string\" ? entry.trim() : \"\"))\n .filter(Boolean);\n}\n\nfunction readOptionalString(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed || undefined;\n}\n\nfunction resolvePluginRuntimeAttachments(ctx: PluginRuntimeDispatchContext): InboundAttachment[] {\n const mediaPaths = readStringList(ctx.MediaPaths);\n const mediaUrls = readStringList(ctx.MediaUrls);\n const fallbackPath = readOptionalString(ctx.MediaPath);\n const fallbackUrl = readOptionalString(ctx.MediaUrl);\n const mediaTypes = readStringList(ctx.MediaTypes);\n const fallbackType = readOptionalString(ctx.MediaType);\n const entryCount = Math.max(\n mediaPaths.length,\n mediaUrls.length,\n fallbackPath ? 1 : 0,\n fallbackUrl ? 1 : 0,\n );\n\n const attachments: InboundAttachment[] = [];\n for (let index = 0; index < entryCount; index += 1) {\n const path = mediaPaths[index] ?? (index === 0 ? fallbackPath : undefined);\n const rawUrl = mediaUrls[index] ?? (index === 0 ? fallbackUrl : undefined);\n const url = rawUrl && rawUrl !== path ? rawUrl : undefined;\n const mimeType = mediaTypes[index] ?? fallbackType;\n if (!path && !url) {\n continue;\n }\n attachments.push({\n path,\n url,\n mimeType,\n source: \"plugin-runtime\",\n status: path ? \"ready\" : \"remote-only\",\n });\n }\n\n return attachments;\n}\n"],"mappings":"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"}
|
|
@@ -27,4 +27,5 @@ declare class RestartCoordinator {
|
|
|
27
27
|
readonly requestRestart: (request: RestartRequest) => Promise<RestartResult>;
|
|
28
28
|
}
|
|
29
29
|
//#endregion
|
|
30
|
-
export { RestartCoordinator, RestartRequest, RestartResult, RestartStrategy };
|
|
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/shared/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 @@
|
|
|
1
|
+
{"version":3,"file":"restart-coordinator.service.js","names":[],"sources":["../../../../src/shared/services/restart/restart-coordinator.service.ts"],"sourcesContent":["import type { ManagedServiceState } from \"@nextclaw-service/shared/stores/managed-service-state.store.js\";\n\nexport type RestartStrategy = \"background-service-or-manual\" | \"background-service-or-exit\" | \"exit-process\";\n\nexport type RestartRequest = {\n reason: string;\n strategy?: RestartStrategy;\n delayMs?: number;\n manualMessage?: string;\n};\n\nexport type RestartResult = {\n status: \"service-restarted\" | \"restart-in-progress\" | \"exit-scheduled\" | \"manual-required\";\n message: string;\n};\n\ntype RestartCoordinatorDeps = {\n readServiceState: () => ManagedServiceState | null;\n isProcessRunning: (pid: number) => boolean;\n currentPid: () => number;\n restartBackgroundService: (reason: string) => Promise<boolean>;\n scheduleProcessExit: (delayMs: number, reason: string) => void;\n};\n\nexport class RestartCoordinator {\n private restartingService = false;\n private exitScheduled = false;\n\n constructor(private deps: RestartCoordinatorDeps) {}\n\n readonly requestRestart = async (request: RestartRequest): Promise<RestartResult> => {\n const reason = request.reason.trim() || \"config changed\";\n const strategy = request.strategy ?? \"background-service-or-manual\";\n\n if (strategy !== \"exit-process\") {\n const state = this.deps.readServiceState();\n const serviceRunning = Boolean(state && this.deps.isProcessRunning(state.pid));\n const managedByCurrentProcess = Boolean(state && state.pid === this.deps.currentPid());\n\n if (serviceRunning && !managedByCurrentProcess) {\n if (this.restartingService) {\n return {\n status: \"restart-in-progress\",\n message: \"Restart already in progress; skipping duplicate request.\"\n };\n }\n this.restartingService = true;\n try {\n const restarted = await this.deps.restartBackgroundService(reason);\n if (restarted) {\n return {\n status: \"service-restarted\",\n message: `Restarted background service to apply changes (${reason}).`\n };\n }\n } finally {\n this.restartingService = false;\n }\n }\n }\n\n if (strategy === \"background-service-or-exit\" || strategy === \"exit-process\") {\n if (this.exitScheduled) {\n return {\n status: \"exit-scheduled\",\n message: \"Restart already scheduled; skipping duplicate request.\"\n };\n }\n const delay =\n typeof request.delayMs === \"number\" && Number.isFinite(request.delayMs) ? Math.max(0, Math.floor(request.delayMs)) : 100;\n this.exitScheduled = true;\n this.deps.scheduleProcessExit(delay, reason);\n return {\n status: \"exit-scheduled\",\n message: `Restart scheduled (${reason}).`\n };\n }\n\n return {\n status: \"manual-required\",\n message: request.manualMessage ?? \"Restart the gateway to apply changes.\"\n };\n };\n}\n"],"mappings":";AAwBA,IAAa,qBAAb,MAAgC;CAC9B,oBAA4B;CAC5B,gBAAwB;CAExB,YAAY,MAAsC;AAA9B,OAAA,OAAA;;CAEpB,iBAA0B,OAAO,YAAoD;EACnF,MAAM,SAAS,QAAQ,OAAO,MAAM,IAAI;EACxC,MAAM,WAAW,QAAQ,YAAY;AAErC,MAAI,aAAa,gBAAgB;GAC/B,MAAM,QAAQ,KAAK,KAAK,kBAAkB;GAC1C,MAAM,iBAAiB,QAAQ,SAAS,KAAK,KAAK,iBAAiB,MAAM,IAAI,CAAC;GAC9E,MAAM,0BAA0B,QAAQ,SAAS,MAAM,QAAQ,KAAK,KAAK,YAAY,CAAC;AAEtF,OAAI,kBAAkB,CAAC,yBAAyB;AAC9C,QAAI,KAAK,kBACP,QAAO;KACL,QAAQ;KACR,SAAS;KACV;AAEH,SAAK,oBAAoB;AACzB,QAAI;AAEF,SADkB,MAAM,KAAK,KAAK,yBAAyB,OAAO,CAEhE,QAAO;MACL,QAAQ;MACR,SAAS,kDAAkD,OAAO;MACnE;cAEK;AACR,UAAK,oBAAoB;;;;AAK/B,MAAI,aAAa,gCAAgC,aAAa,gBAAgB;AAC5E,OAAI,KAAK,cACP,QAAO;IACL,QAAQ;IACR,SAAS;IACV;GAEH,MAAM,QACJ,OAAO,QAAQ,YAAY,YAAY,OAAO,SAAS,QAAQ,QAAQ,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,QAAQ,CAAC,GAAG;AACvH,QAAK,gBAAgB;AACrB,QAAK,KAAK,oBAAoB,OAAO,OAAO;AAC5C,UAAO;IACL,QAAQ;IACR,SAAS,sBAAsB,OAAO;IACvC;;AAGH,SAAO;GACL,QAAQ;GACR,SAAS,QAAQ,iBAAiB;GACnC"}
|
|
@@ -36,4 +36,5 @@ declare function parseSessionKey(sessionKey?: string): {
|
|
|
36
36
|
} | null;
|
|
37
37
|
declare function enqueuePendingSystemEvent(sessionManager: SessionManager, sessionKey: string, message: string): void;
|
|
38
38
|
//#endregion
|
|
39
|
-
export { RestartSentinelDeliveryContext, RestartSentinelPayload, consumeRestartSentinel, enqueuePendingSystemEvent, formatRestartSentinelMessage, parseSessionKey, resolveRestartSentinelPath, summarizeRestartSentinel, writeRestartSentinel };
|
|
39
|
+
export { RestartSentinelDeliveryContext, RestartSentinelPayload, consumeRestartSentinel, enqueuePendingSystemEvent, formatRestartSentinelMessage, parseSessionKey, resolveRestartSentinelPath, summarizeRestartSentinel, writeRestartSentinel };
|
|
40
|
+
//# sourceMappingURL=restart-sentinel.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-sentinel.service.d.ts","names":[],"sources":["../../../../src/shared/services/restart/restart-sentinel.service.ts"],"mappings":";;;KAIY,8BAAA;EACV,OAAA;EACA,MAAA;EACA,OAAA;EACA,SAAA;EACA,QAAA,GAAW,MAAA;AAAA;AAAA,KAGD,sBAAA;EACV,IAAA;EACA,MAAA;EACA,EAAA;EACA,UAAA;EACA,eAAA,GAAkB,8BAAA;EAClB,OAAA;EACA,KAAA;IACE,MAAA;IACA,QAAA;IACA,UAAA;EAAA;AAAA;AAAA,KAIC,mBAAA;EACH,OAAA;EACA,OAAA,EAAS,sBAAA;AAAA;AAAA,iBAyBK,0BAAA,CAAA;AAAA,iBAIM,oBAAA,CAAqB,OAAA,EAAS,sBAAA,GAAyB,OAAA;AAAA,iBAWvD,sBAAA,CAAA,GAA0B,OAAA,CAAQ,mBAAA;AAAA,iBAoBxC,wBAAA,CAAyB,OAAA,EAAS,sBAAA;AAAA,iBAkBlC,4BAAA,CAA6B,OAAA,EAAS,sBAAA;AAAA,iBAetC,eAAA,CACd,UAAA;EACG,OAAA;EAAiB,MAAA;AAAA;AAAA,iBAeN,yBAAA,CACd,cAAA,EAAgB,cAAA,EAChB,UAAA,UACA,OAAA"}
|
|
@@ -86,3 +86,5 @@ function enqueuePendingSystemEvent(sessionManager, sessionKey, message) {
|
|
|
86
86
|
}
|
|
87
87
|
//#endregion
|
|
88
88
|
export { consumeRestartSentinel, enqueuePendingSystemEvent, formatRestartSentinelMessage, parseSessionKey, resolveRestartSentinelPath, summarizeRestartSentinel, writeRestartSentinel };
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=restart-sentinel.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart-sentinel.service.js","names":[],"sources":["../../../../src/shared/services/restart/restart-sentinel.service.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { getDataDir, type SessionManager } from \"@nextclaw/core\";\n\nexport type RestartSentinelDeliveryContext = {\n channel?: string;\n chatId?: string;\n replyTo?: string | null;\n accountId?: string | null;\n metadata?: Record<string, unknown>;\n};\n\nexport type RestartSentinelPayload = {\n kind: \"config.apply\" | \"config.patch\" | \"update.run\" | \"restart\";\n status: \"ok\" | \"error\" | \"skipped\";\n ts: number;\n sessionKey?: string;\n deliveryContext?: RestartSentinelDeliveryContext;\n message?: string | null;\n stats?: {\n reason?: string | null;\n strategy?: string | null;\n durationMs?: number | null;\n };\n};\n\ntype RestartSentinelFile = {\n version: 1;\n payload: RestartSentinelPayload;\n};\n\nconst RESTART_SENTINEL_FILENAME = \"restart-sentinel.json\";\nconst PENDING_SYSTEM_EVENTS_KEY = \"pending_system_events\";\nconst RESTART_REASON_MAX_CHARS = 240;\nconst RESTART_NOTE_MAX_CHARS = 600;\nconst RESTART_OUTBOUND_MAX_CHARS = 1200;\n\nfunction trimTo(value: string, maxChars: number): string {\n const text = value.trim();\n if (!text) {\n return \"\";\n }\n if (text.length <= maxChars) {\n return text;\n }\n return `${text.slice(0, Math.max(0, maxChars - 1)).trimEnd()}…`;\n}\n\nfunction normalizeLine(value: string, maxChars: number): string | null {\n const trimmed = trimTo(value, maxChars);\n return trimmed ? trimmed : null;\n}\n\nexport function resolveRestartSentinelPath(): string {\n return resolve(getDataDir(), \"run\", RESTART_SENTINEL_FILENAME);\n}\n\nexport async function writeRestartSentinel(payload: RestartSentinelPayload): Promise<string> {\n const path = resolveRestartSentinelPath();\n mkdirSync(resolve(path, \"..\"), { recursive: true });\n const file: RestartSentinelFile = {\n version: 1,\n payload\n };\n writeFileSync(path, `${JSON.stringify(file, null, 2)}\\n`, \"utf-8\");\n return path;\n}\n\nexport async function consumeRestartSentinel(): Promise<RestartSentinelFile | null> {\n const path = resolveRestartSentinelPath();\n if (!existsSync(path)) {\n return null;\n }\n try {\n const raw = readFileSync(path, \"utf-8\");\n const parsed = JSON.parse(raw) as RestartSentinelFile;\n if (!parsed || parsed.version !== 1 || !parsed.payload) {\n rmSync(path, { force: true });\n return null;\n }\n rmSync(path, { force: true });\n return parsed;\n } catch {\n rmSync(path, { force: true });\n return null;\n }\n}\n\nexport function summarizeRestartSentinel(payload: RestartSentinelPayload): string {\n const reason = normalizeLine(payload.stats?.reason ?? \"\", RESTART_REASON_MAX_CHARS);\n if (payload.kind === \"update.run\") {\n return payload.status === \"ok\"\n ? \"✅ NextClaw update completed and service restarted.\"\n : \"⚠️ NextClaw update finished with issues.\";\n }\n if (payload.kind === \"config.apply\" || payload.kind === \"config.patch\") {\n return payload.status === \"ok\"\n ? \"✅ Config applied and service restarted.\"\n : \"⚠️ Config change restart finished with issues.\";\n }\n if (reason) {\n return `Gateway restart complete (${reason}).`;\n }\n return \"Gateway restart complete.\";\n}\n\nexport function formatRestartSentinelMessage(payload: RestartSentinelPayload): string {\n const lines = [summarizeRestartSentinel(payload)];\n const note = normalizeLine(payload.message ?? \"\", RESTART_NOTE_MAX_CHARS);\n if (note) {\n lines.push(note);\n }\n const reason = normalizeLine(payload.stats?.reason ?? \"\", RESTART_REASON_MAX_CHARS);\n if (reason && !lines.some((line) => line.includes(reason))) {\n lines.push(`Reason: ${reason}`);\n }\n\n const message = lines.join(\"\\n\").trim();\n return trimTo(message, RESTART_OUTBOUND_MAX_CHARS);\n}\n\nexport function parseSessionKey(\n sessionKey?: string\n): { channel: string; chatId: string } | null {\n const value = sessionKey?.trim();\n if (!value) {\n return null;\n }\n const separator = value.indexOf(\":\");\n if (separator <= 0 || separator >= value.length - 1) {\n return null;\n }\n return {\n channel: value.slice(0, separator),\n chatId: value.slice(separator + 1)\n };\n}\n\nexport function enqueuePendingSystemEvent(\n sessionManager: SessionManager,\n sessionKey: string,\n message: string\n): void {\n const text = message.trim();\n if (!text) {\n return;\n }\n const session = sessionManager.getOrCreate(sessionKey);\n const queueRaw = session.metadata[PENDING_SYSTEM_EVENTS_KEY];\n const queue = Array.isArray(queueRaw)\n ? queueRaw\n .filter((item): item is string => typeof item === \"string\")\n .map((item) => item.trim())\n .filter(Boolean)\n : [];\n if (queue.at(-1) === text) {\n return;\n }\n queue.push(text);\n if (queue.length > 20) {\n queue.splice(0, queue.length - 20);\n }\n session.metadata[PENDING_SYSTEM_EVENTS_KEY] = queue;\n session.updatedAt = new Date();\n sessionManager.save(session);\n}\n"],"mappings":"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"}
|
|
@@ -21,4 +21,5 @@ declare class RuntimeRestartRequestService {
|
|
|
21
21
|
readonly run: (params: RequestRestartParams) => Promise<void>;
|
|
22
22
|
}
|
|
23
23
|
//#endregion
|
|
24
|
-
export { RuntimeRestartRequestService };
|
|
24
|
+
export { RuntimeRestartRequestService };
|
|
25
|
+
//# sourceMappingURL=runtime-restart-request.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-restart-request.service.d.ts","names":[],"sources":["../../../../src/shared/services/restart/runtime-restart-request.service.ts"],"mappings":";;;;KAIK,gCAAA;EACH,yBAAA,GAA4B,MAAA;IAC1B,OAAA;IACA,MAAA;IACA,QAAA,GAAW,oBAAA;EAAA;EAEb,6BAAA,GAAgC,MAAA;IAC9B,OAAA;IACA,aAAA;IACA,MAAA;IACA,QAAA,GAAW,oBAAA;EAAA,MACP,OAAA,CAAQ,aAAA;AAAA;AAAA,cAGH,4BAAA;EAAA,iBACkB,IAAA;cAAA,IAAA,EAAM,gCAAA;EAAA,SAE1B,GAAA,GAAa,MAAA,EAAQ,oBAAA,KAAuB,OAAA;AAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-restart-request.service.js","names":[],"sources":["../../../../src/shared/services/restart/runtime-restart-request.service.ts"],"sourcesContent":["import type { RestartResult } from \"./restart-coordinator.service.js\";\nimport type { RequestRestartParams } from \"@nextclaw-service/shared/types/cli.types.js\";\nimport { pendingRestartStore } from \"@nextclaw-service/shared/stores/pending-restart.store.js\";\n\ntype RuntimeRestartRequestServiceDeps = {\n armManagedServiceRelaunch: (params: {\n delayMs?: number;\n reason: string;\n strategy?: RequestRestartParams[\"strategy\"];\n }) => void;\n requestRestartFromCoordinator: (params: {\n delayMs?: number;\n manualMessage?: string;\n reason: string;\n strategy?: RequestRestartParams[\"strategy\"];\n }) => Promise<RestartResult>;\n};\n\nexport class RuntimeRestartRequestService {\n constructor(private readonly deps: RuntimeRestartRequestServiceDeps) {}\n\n readonly run = async (params: RequestRestartParams): Promise<void> => {\n const {\n changedPaths,\n delayMs,\n manualMessage,\n mode,\n reason,\n silentOnServiceRestart,\n strategy\n } = params;\n if (mode === \"notify\") {\n pendingRestartStore.mark({\n changedPaths,\n manualMessage,\n reason\n });\n console.warn(manualMessage);\n return;\n }\n\n this.deps.armManagedServiceRelaunch({\n reason,\n strategy,\n delayMs\n });\n\n const result = await this.deps.requestRestartFromCoordinator({\n reason,\n strategy,\n delayMs,\n manualMessage\n });\n if (result.status === \"manual-required\" || result.status === \"restart-in-progress\") {\n console.log(result.message);\n return;\n }\n\n pendingRestartStore.clear();\n if (result.status === \"service-restarted\") {\n if (!silentOnServiceRestart) {\n console.log(result.message);\n }\n return;\n }\n\n console.warn(result.message);\n };\n}\n"],"mappings":";;AAkBA,IAAa,+BAAb,MAA0C;CACxC,YAAY,MAAyD;AAAxC,OAAA,OAAA;;CAE7B,MAAe,OAAO,WAAgD;EACpE,MAAM,EACJ,cACA,SACA,eACA,MACA,QACA,wBACA,aACE;AACJ,MAAI,SAAS,UAAU;AACrB,uBAAoB,KAAK;IACvB;IACA;IACA;IACD,CAAC;AACF,WAAQ,KAAK,cAAc;AAC3B;;AAGF,OAAK,KAAK,0BAA0B;GAClC;GACA;GACA;GACD,CAAC;EAEF,MAAM,SAAS,MAAM,KAAK,KAAK,8BAA8B;GAC3D;GACA;GACA;GACA;GACD,CAAC;AACF,MAAI,OAAO,WAAW,qBAAqB,OAAO,WAAW,uBAAuB;AAClF,WAAQ,IAAI,OAAO,QAAQ;AAC3B;;AAGF,sBAAoB,OAAO;AAC3B,MAAI,OAAO,WAAW,qBAAqB;AACzC,OAAI,CAAC,uBACH,SAAQ,IAAI,OAAO,QAAQ;AAE7B;;AAGF,UAAQ,KAAK,OAAO,QAAQ"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { ManagedServiceLastExit, ManagedServiceState, ManagedServiceStateStore } from "../../stores/managed-service-state.store.js";
|
|
2
|
+
import { ManagedServiceSnapshot } from "./utils/managed-service-routing.utils.js";
|
|
3
|
+
import * as NextclawCore from "@nextclaw/core";
|
|
4
|
+
import { ChildProcess } from "node:child_process";
|
|
5
|
+
|
|
6
|
+
//#region src/shared/services/runtime/managed-service-supervisor.service.d.ts
|
|
7
|
+
type Config$1 = NextclawCore.Config;
|
|
8
|
+
type ManagedServiceStartup = {
|
|
9
|
+
child: ChildProcess;
|
|
10
|
+
logPath: string;
|
|
11
|
+
readinessTimeoutMs: number;
|
|
12
|
+
quickPhaseTimeoutMs: number;
|
|
13
|
+
extendedPhaseTimeoutMs: number;
|
|
14
|
+
snapshot: ManagedServiceSnapshot;
|
|
15
|
+
};
|
|
16
|
+
type ManagedServiceLiveness = {
|
|
17
|
+
processExists: boolean;
|
|
18
|
+
running: boolean;
|
|
19
|
+
staleState: boolean;
|
|
20
|
+
staleReason: "process-not-running" | "lease-expired" | null;
|
|
21
|
+
leaseExpired: boolean;
|
|
22
|
+
leaseMissing: boolean;
|
|
23
|
+
lastHeartbeatAt: string | null;
|
|
24
|
+
};
|
|
25
|
+
type ManagedServiceSupervisorOptions = {
|
|
26
|
+
stateStore?: ManagedServiceStateStore;
|
|
27
|
+
now?: () => Date;
|
|
28
|
+
isProcessRunningFn?: (pid: number) => boolean;
|
|
29
|
+
heartbeatIntervalMs?: number;
|
|
30
|
+
leaseTtlMs?: number;
|
|
31
|
+
};
|
|
32
|
+
declare class ManagedServiceSupervisor {
|
|
33
|
+
private readonly stateStore;
|
|
34
|
+
private readonly now;
|
|
35
|
+
private readonly isProcessRunningFn;
|
|
36
|
+
private readonly heartbeatIntervalMs;
|
|
37
|
+
private readonly leaseTtlMs;
|
|
38
|
+
private readonly serviceStartupLogger;
|
|
39
|
+
private heartbeatTimer;
|
|
40
|
+
private lifecycleTrackingInstalled;
|
|
41
|
+
private pendingExit;
|
|
42
|
+
constructor(options?: ManagedServiceSupervisorOptions);
|
|
43
|
+
spawnManagedService: (params: {
|
|
44
|
+
appName: string;
|
|
45
|
+
config: Config$1;
|
|
46
|
+
uiConfig: {
|
|
47
|
+
host: string;
|
|
48
|
+
port: number;
|
|
49
|
+
};
|
|
50
|
+
uiUrl: string;
|
|
51
|
+
apiUrl: string;
|
|
52
|
+
healthUrl: string;
|
|
53
|
+
startupTimeoutMs?: number;
|
|
54
|
+
resolveStartupTimeoutMs: (overrideTimeoutMs: number | undefined) => number;
|
|
55
|
+
appendStartupStage: (logPath: string, message: string) => void;
|
|
56
|
+
printStartupFailureDiagnostics: (params: {
|
|
57
|
+
uiUrl: string;
|
|
58
|
+
apiUrl: string;
|
|
59
|
+
healthUrl: string;
|
|
60
|
+
logPath: string;
|
|
61
|
+
lastProbeError: string | null;
|
|
62
|
+
}) => void;
|
|
63
|
+
resolveServiceLogPath?: () => string;
|
|
64
|
+
}) => ManagedServiceStartup | null;
|
|
65
|
+
writeReadyState: (params: {
|
|
66
|
+
readinessTimeoutMs: number;
|
|
67
|
+
readiness: {
|
|
68
|
+
ready: boolean;
|
|
69
|
+
lastProbeError: string | null;
|
|
70
|
+
};
|
|
71
|
+
snapshot: ManagedServiceSnapshot;
|
|
72
|
+
}) => ManagedServiceState;
|
|
73
|
+
installCurrentProcessLifecycleTracking: () => void;
|
|
74
|
+
startHeartbeatForCurrentProcess: (pid?: number) => void;
|
|
75
|
+
stopHeartbeatForCurrentProcess: () => void;
|
|
76
|
+
resolveStateLiveness: (state: ManagedServiceState | null) => ManagedServiceLiveness;
|
|
77
|
+
private writeHeartbeat;
|
|
78
|
+
recordCurrentProcessExit: (exit: ManagedServiceLastExit) => void;
|
|
79
|
+
private stopHeartbeat;
|
|
80
|
+
private readonly createLease;
|
|
81
|
+
private resolveLeaseStatus;
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
84
|
+
export { ManagedServiceSupervisor };
|
|
85
|
+
//# sourceMappingURL=managed-service-supervisor.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-service-supervisor.service.d.ts","names":[],"sources":["../../../../src/shared/services/runtime/managed-service-supervisor.service.ts"],"mappings":";;;;;;KA0BK,QAAA,GAAS,YAAA,CAAa,MAAA;AAAA,KAEtB,qBAAA;EACH,KAAA,EAAO,YAAA;EACP,OAAA;EACA,kBAAA;EACA,mBAAA;EACA,sBAAA;EACA,QAAA,EAAU,sBAAA;AAAA;AAAA,KAGP,sBAAA;EACH,aAAA;EACA,OAAA;EACA,UAAA;EACA,WAAA;EACA,YAAA;EACA,YAAA;EACA,eAAA;AAAA;AAAA,KAGG,+BAAA;EACH,UAAA,GAAa,wBAAA;EACb,GAAA,SAAY,IAAA;EACZ,kBAAA,IAAsB,GAAA;EACtB,mBAAA;EACA,UAAA;AAAA;AAAA,cAGW,wBAAA;EAAA,iBACM,UAAA;EAAA,iBACA,GAAA;EAAA,iBACA,kBAAA;EAAA,iBACA,mBAAA;EAAA,iBACA,UAAA;EAAA,iBACA,oBAAA;EAAA,QACT,cAAA;EAAA,QACA,0BAAA;EAAA,QACA,WAAA;cAEI,OAAA,GAAS,+BAAA;EAQrB,mBAAA,GAAuB,MAAA;IACrB,OAAA;IACA,MAAA,EAAQ,QAAA;IACR,QAAA;MAAY,IAAA;MAAc,IAAA;IAAA;IAC1B,KAAA;IACA,MAAA;IACA,SAAA;IACA,gBAAA;IACA,uBAAA,GAA0B,iBAAA;IAC1B,kBAAA,GAAqB,OAAA,UAAiB,OAAA;IACtC,8BAAA,GAAiC,MAAA;MAC/B,KAAA;MACA,MAAA;MACA,SAAA;MACA,OAAA;MACA,cAAA;IAAA;IAEF,qBAAA;EAAA,MACE,qBAAA;EA6FJ,eAAA,GAAmB,MAAA;IACjB,kBAAA;IACA,SAAA;MAAa,KAAA;MAAgB,cAAA;IAAA;IAC7B,QAAA,EAAU,sBAAA;EAAA,MACR,mBAAA;EAOJ,sCAAA;EA4CA,+BAAA,GAAmC,GAAA;EAenC,8BAAA;EAIA,oBAAA,GAAwB,KAAA,EAAO,mBAAA,YAA6B,sBAAA;EAAA,QAgDpD,cAAA;EAuBR,wBAAA,GAA4B,IAAA,EAAM,sBAAA;EAAA,QAY1B,aAAA;EAAA,iBAQS,WAAA;EAAA,QAOT,kBAAA;AAAA"}
|