@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.
Files changed (417) hide show
  1. package/dist/cli/commands/agent/agent-runtime.utils.d.ts +2 -1
  2. package/dist/cli/commands/agent/agent-runtime.utils.d.ts.map +1 -0
  3. package/dist/cli/commands/agent/agent-runtime.utils.js +3 -1
  4. package/dist/cli/commands/agent/agent-runtime.utils.js.map +1 -0
  5. package/dist/cli/commands/agent/cli-agent-runner.utils.d.ts +2 -1
  6. package/dist/cli/commands/agent/cli-agent-runner.utils.d.ts.map +1 -0
  7. package/dist/cli/commands/agent/cli-agent-runner.utils.js +3 -5
  8. package/dist/cli/commands/agent/cli-agent-runner.utils.js.map +1 -0
  9. package/dist/cli/commands/agent/services/agent-commands.service.d.ts +2 -1
  10. package/dist/cli/commands/agent/services/agent-commands.service.d.ts.map +1 -0
  11. package/dist/cli/commands/agent/services/agent-commands.service.js +2 -0
  12. package/dist/cli/commands/agent/services/agent-commands.service.js.map +1 -0
  13. package/dist/cli/commands/config/services/config-commands.service.d.ts +2 -1
  14. package/dist/cli/commands/config/services/config-commands.service.d.ts.map +1 -0
  15. package/dist/cli/commands/config/services/config-commands.service.js +2 -0
  16. package/dist/cli/commands/config/services/config-commands.service.js.map +1 -0
  17. package/dist/cli/commands/cron/services/cron-commands.service.d.ts +2 -1
  18. package/dist/cli/commands/cron/services/cron-commands.service.d.ts.map +1 -0
  19. package/dist/cli/commands/cron/services/cron-commands.service.js +2 -0
  20. package/dist/cli/commands/cron/services/cron-commands.service.js.map +1 -0
  21. package/dist/cli/commands/cron/services/cron-local.service.d.ts +2 -1
  22. package/dist/cli/commands/cron/services/cron-local.service.d.ts.map +1 -0
  23. package/dist/cli/commands/cron/services/cron-local.service.js +2 -0
  24. package/dist/cli/commands/cron/services/cron-local.service.js.map +1 -0
  25. package/dist/cli/commands/cron/utils/cron-job.utils.d.ts +2 -1
  26. package/dist/cli/commands/cron/utils/cron-job.utils.d.ts.map +1 -0
  27. package/dist/cli/commands/cron/utils/cron-job.utils.js +2 -0
  28. package/dist/cli/commands/cron/utils/cron-job.utils.js.map +1 -0
  29. package/dist/cli/commands/diagnostics/services/diagnostics-commands.service.d.ts +4 -1
  30. package/dist/cli/commands/diagnostics/services/diagnostics-commands.service.d.ts.map +1 -0
  31. package/dist/cli/commands/diagnostics/services/diagnostics-commands.service.js +40 -14
  32. package/dist/cli/commands/diagnostics/services/diagnostics-commands.service.js.map +1 -0
  33. package/dist/cli/commands/diagnostics/utils/diagnostics-render.utils.d.ts +2 -1
  34. package/dist/cli/commands/diagnostics/utils/diagnostics-render.utils.d.ts.map +1 -0
  35. package/dist/cli/commands/diagnostics/utils/diagnostics-render.utils.js +8 -0
  36. package/dist/cli/commands/diagnostics/utils/diagnostics-render.utils.js.map +1 -0
  37. package/dist/cli/commands/gateway/index.d.ts +2 -1
  38. package/dist/cli/commands/gateway/index.d.ts.map +1 -0
  39. package/dist/cli/commands/gateway/index.js +2 -0
  40. package/dist/cli/commands/gateway/index.js.map +1 -0
  41. package/dist/cli/commands/logs/index.d.ts +2 -1
  42. package/dist/cli/commands/logs/index.d.ts.map +1 -0
  43. package/dist/cli/commands/logs/index.js +2 -0
  44. package/dist/cli/commands/logs/index.js.map +1 -0
  45. package/dist/cli/commands/mcp/index.d.ts +2 -1
  46. package/dist/cli/commands/mcp/index.d.ts.map +1 -0
  47. package/dist/cli/commands/mcp/index.js +2 -0
  48. package/dist/cli/commands/mcp/index.js.map +1 -0
  49. package/dist/cli/commands/restart/index.d.ts +2 -1
  50. package/dist/cli/commands/restart/index.d.ts.map +1 -0
  51. package/dist/cli/commands/restart/index.js +2 -0
  52. package/dist/cli/commands/restart/index.js.map +1 -0
  53. package/dist/cli/commands/secrets/index.d.ts +2 -1
  54. package/dist/cli/commands/secrets/index.d.ts.map +1 -0
  55. package/dist/cli/commands/secrets/index.js +2 -0
  56. package/dist/cli/commands/secrets/index.js.map +1 -0
  57. package/dist/cli/commands/serve/index.d.ts +2 -1
  58. package/dist/cli/commands/serve/index.d.ts.map +1 -0
  59. package/dist/cli/commands/serve/index.js +2 -0
  60. package/dist/cli/commands/serve/index.js.map +1 -0
  61. package/dist/cli/commands/skills/index.d.ts +2 -1
  62. package/dist/cli/commands/skills/index.d.ts.map +1 -0
  63. package/dist/cli/commands/skills/index.js +2 -0
  64. package/dist/cli/commands/skills/index.js.map +1 -0
  65. package/dist/cli/commands/skills/marketplace-client.d.ts +2 -1
  66. package/dist/cli/commands/skills/marketplace-client.d.ts.map +1 -0
  67. package/dist/cli/commands/skills/marketplace-client.js +2 -0
  68. package/dist/cli/commands/skills/marketplace-client.js.map +1 -0
  69. package/dist/cli/commands/skills/marketplace-command-options.utils.d.ts +2 -1
  70. package/dist/cli/commands/skills/marketplace-command-options.utils.d.ts.map +1 -0
  71. package/dist/cli/commands/skills/marketplace-command-options.utils.js +2 -0
  72. package/dist/cli/commands/skills/marketplace-command-options.utils.js.map +1 -0
  73. package/dist/cli/commands/skills/marketplace-identity.utils.d.ts +2 -1
  74. package/dist/cli/commands/skills/marketplace-identity.utils.d.ts.map +1 -0
  75. package/dist/cli/commands/skills/marketplace-identity.utils.js +2 -0
  76. package/dist/cli/commands/skills/marketplace-identity.utils.js.map +1 -0
  77. package/dist/cli/commands/skills/marketplace-network-retry.d.ts +2 -1
  78. package/dist/cli/commands/skills/marketplace-network-retry.d.ts.map +1 -0
  79. package/dist/cli/commands/skills/marketplace-network-retry.js +2 -0
  80. package/dist/cli/commands/skills/marketplace-network-retry.js.map +1 -0
  81. package/dist/cli/commands/skills/marketplace.metadata.d.ts +2 -1
  82. package/dist/cli/commands/skills/marketplace.metadata.d.ts.map +1 -0
  83. package/dist/cli/commands/skills/marketplace.metadata.js +2 -0
  84. package/dist/cli/commands/skills/marketplace.metadata.js.map +1 -0
  85. package/dist/cli/commands/skills/marketplace.utils.d.ts +2 -1
  86. package/dist/cli/commands/skills/marketplace.utils.d.ts.map +1 -0
  87. package/dist/cli/commands/skills/marketplace.utils.js +2 -0
  88. package/dist/cli/commands/skills/marketplace.utils.js.map +1 -0
  89. package/dist/cli/commands/skills/skills-query.service.d.ts +2 -1
  90. package/dist/cli/commands/skills/skills-query.service.d.ts.map +1 -0
  91. package/dist/cli/commands/skills/skills-query.service.js +2 -0
  92. package/dist/cli/commands/skills/skills-query.service.js.map +1 -0
  93. package/dist/cli/commands/start/index.d.ts +2 -1
  94. package/dist/cli/commands/start/index.d.ts.map +1 -0
  95. package/dist/cli/commands/start/index.js +2 -0
  96. package/dist/cli/commands/start/index.js.map +1 -0
  97. package/dist/cli/commands/stop/index.d.ts +2 -1
  98. package/dist/cli/commands/stop/index.d.ts.map +1 -0
  99. package/dist/cli/commands/stop/index.js +2 -0
  100. package/dist/cli/commands/stop/index.js.map +1 -0
  101. package/dist/cli/commands/ui/index.d.ts +2 -1
  102. package/dist/cli/commands/ui/index.d.ts.map +1 -0
  103. package/dist/cli/commands/ui/index.js +2 -0
  104. package/dist/cli/commands/ui/index.js.map +1 -0
  105. package/dist/cli/commands/usage/services/llm-usage-command.service.d.ts +2 -1
  106. package/dist/cli/commands/usage/services/llm-usage-command.service.d.ts.map +1 -0
  107. package/dist/cli/commands/usage/services/llm-usage-command.service.js +2 -0
  108. package/dist/cli/commands/usage/services/llm-usage-command.service.js.map +1 -0
  109. package/dist/commands/channel/channel-config-view.d.ts +2 -1
  110. package/dist/commands/channel/channel-config-view.d.ts.map +1 -0
  111. package/dist/commands/channel/channel-config-view.js +2 -0
  112. package/dist/commands/channel/channel-config-view.js.map +1 -0
  113. package/dist/commands/channel/channel-list-view.service.d.ts +2 -1
  114. package/dist/commands/channel/channel-list-view.service.d.ts.map +1 -0
  115. package/dist/commands/channel/channel-list-view.service.js +2 -0
  116. package/dist/commands/channel/channel-list-view.service.js.map +1 -0
  117. package/dist/commands/channel/index.d.ts +2 -1
  118. package/dist/commands/channel/index.d.ts.map +1 -0
  119. package/dist/commands/channel/index.js +2 -0
  120. package/dist/commands/channel/index.js.map +1 -0
  121. package/dist/commands/platform-auth/services/account-status.service.d.ts +2 -1
  122. package/dist/commands/platform-auth/services/account-status.service.d.ts.map +1 -0
  123. package/dist/commands/platform-auth/services/account-status.service.js +2 -0
  124. package/dist/commands/platform-auth/services/account-status.service.js.map +1 -0
  125. package/dist/commands/platform-auth/services/platform-auth-commands.service.d.ts +2 -1
  126. package/dist/commands/platform-auth/services/platform-auth-commands.service.d.ts.map +1 -0
  127. package/dist/commands/platform-auth/services/platform-auth-commands.service.js +2 -0
  128. package/dist/commands/platform-auth/services/platform-auth-commands.service.js.map +1 -0
  129. package/dist/commands/platform-auth/utils/payload.utils.d.ts +2 -1
  130. package/dist/commands/platform-auth/utils/payload.utils.d.ts.map +1 -0
  131. package/dist/commands/platform-auth/utils/payload.utils.js +2 -0
  132. package/dist/commands/platform-auth/utils/payload.utils.js.map +1 -0
  133. package/dist/commands/plugin/index.d.ts +2 -1
  134. package/dist/commands/plugin/index.d.ts.map +1 -0
  135. package/dist/commands/plugin/index.js +2 -0
  136. package/dist/commands/plugin/index.js.map +1 -0
  137. package/dist/commands/plugin/plugin-command.utils.d.ts +2 -1
  138. package/dist/commands/plugin/plugin-command.utils.d.ts.map +1 -0
  139. package/dist/commands/plugin/plugin-command.utils.js +2 -0
  140. package/dist/commands/plugin/plugin-command.utils.js.map +1 -0
  141. package/dist/commands/plugin/plugin-mutation-actions.utils.d.ts +2 -1
  142. package/dist/commands/plugin/plugin-mutation-actions.utils.d.ts.map +1 -0
  143. package/dist/commands/plugin/plugin-mutation-actions.utils.js +2 -0
  144. package/dist/commands/plugin/plugin-mutation-actions.utils.js.map +1 -0
  145. package/dist/commands/remote/index.d.ts +2 -1
  146. package/dist/commands/remote/index.d.ts.map +1 -0
  147. package/dist/commands/remote/index.js +2 -0
  148. package/dist/commands/remote/index.js.map +1 -0
  149. package/dist/commands/remote/services/remote-access-host.service.d.ts +2 -1
  150. package/dist/commands/remote/services/remote-access-host.service.d.ts.map +1 -0
  151. package/dist/commands/remote/services/remote-access-host.service.js +2 -0
  152. package/dist/commands/remote/services/remote-access-host.service.js.map +1 -0
  153. package/dist/commands/remote/services/remote-service-control.service.d.ts +2 -1
  154. package/dist/commands/remote/services/remote-service-control.service.d.ts.map +1 -0
  155. package/dist/commands/remote/services/remote-service-control.service.js +134 -75
  156. package/dist/commands/remote/services/remote-service-control.service.js.map +1 -0
  157. package/dist/commands/remote/utils/platform-api-base.utils.d.ts +2 -1
  158. package/dist/commands/remote/utils/platform-api-base.utils.d.ts.map +1 -0
  159. package/dist/commands/remote/utils/platform-api-base.utils.js +2 -0
  160. package/dist/commands/remote/utils/platform-api-base.utils.js.map +1 -0
  161. package/dist/commands/remote/utils/remote-runtime-support.utils.d.ts +2 -1
  162. package/dist/commands/remote/utils/remote-runtime-support.utils.d.ts.map +1 -0
  163. package/dist/commands/remote/utils/remote-runtime-support.utils.js +2 -0
  164. package/dist/commands/remote/utils/remote-runtime-support.utils.js.map +1 -0
  165. package/dist/commands/service/index.d.ts +2 -1
  166. package/dist/commands/service/index.d.ts.map +1 -0
  167. package/dist/commands/service/index.js +2 -0
  168. package/dist/commands/service/index.js.map +1 -0
  169. package/dist/commands/service/services/autostart/host-autostart-command.service.d.ts +2 -1
  170. package/dist/commands/service/services/autostart/host-autostart-command.service.d.ts.map +1 -0
  171. package/dist/commands/service/services/autostart/host-autostart-command.service.js +2 -0
  172. package/dist/commands/service/services/autostart/host-autostart-command.service.js.map +1 -0
  173. package/dist/commands/service/services/autostart/host-autostart-runtime.service.d.ts +2 -1
  174. package/dist/commands/service/services/autostart/host-autostart-runtime.service.d.ts.map +1 -0
  175. package/dist/commands/service/services/autostart/host-autostart-runtime.service.js +2 -0
  176. package/dist/commands/service/services/autostart/host-autostart-runtime.service.js.map +1 -0
  177. package/dist/commands/service/services/autostart/host-autostart.service.d.ts +2 -1
  178. package/dist/commands/service/services/autostart/host-autostart.service.d.ts.map +1 -0
  179. package/dist/commands/service/services/autostart/host-autostart.service.js +2 -0
  180. package/dist/commands/service/services/autostart/host-autostart.service.js.map +1 -0
  181. package/dist/commands/service/services/autostart/linux-systemd-autostart.service.d.ts +2 -1
  182. package/dist/commands/service/services/autostart/linux-systemd-autostart.service.d.ts.map +1 -0
  183. package/dist/commands/service/services/autostart/linux-systemd-autostart.service.js +2 -0
  184. package/dist/commands/service/services/autostart/linux-systemd-autostart.service.js.map +1 -0
  185. package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.d.ts +2 -1
  186. package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.d.ts.map +1 -0
  187. package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.js +2 -0
  188. package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.js.map +1 -0
  189. package/dist/commands/service/services/autostart/windows-task-autostart.service.d.ts +2 -1
  190. package/dist/commands/service/services/autostart/windows-task-autostart.service.d.ts.map +1 -0
  191. package/dist/commands/service/services/autostart/windows-task-autostart.service.js +2 -0
  192. package/dist/commands/service/services/autostart/windows-task-autostart.service.js.map +1 -0
  193. package/dist/commands/service/types/autostart/host-autostart.types.d.ts +2 -1
  194. package/dist/commands/service/types/autostart/host-autostart.types.d.ts.map +1 -0
  195. package/dist/launcher/npm-runtime-bundle-layout.store.d.ts +2 -1
  196. package/dist/launcher/npm-runtime-bundle-layout.store.d.ts.map +1 -0
  197. package/dist/launcher/npm-runtime-bundle-layout.store.js +2 -0
  198. package/dist/launcher/npm-runtime-bundle-layout.store.js.map +1 -0
  199. package/dist/launcher/npm-runtime-bundle-manifest.service.d.ts +2 -1
  200. package/dist/launcher/npm-runtime-bundle-manifest.service.d.ts.map +1 -0
  201. package/dist/launcher/npm-runtime-bundle-manifest.service.js +2 -0
  202. package/dist/launcher/npm-runtime-bundle-manifest.service.js.map +1 -0
  203. package/dist/launcher/npm-runtime-bundle.service.d.ts +2 -1
  204. package/dist/launcher/npm-runtime-bundle.service.d.ts.map +1 -0
  205. package/dist/launcher/npm-runtime-bundle.service.js +2 -0
  206. package/dist/launcher/npm-runtime-bundle.service.js.map +1 -0
  207. package/dist/launcher/npm-runtime-bundle.types.d.ts +2 -1
  208. package/dist/launcher/npm-runtime-bundle.types.d.ts.map +1 -0
  209. package/dist/launcher/npm-runtime-launcher.service.d.ts +2 -1
  210. package/dist/launcher/npm-runtime-launcher.service.d.ts.map +1 -0
  211. package/dist/launcher/npm-runtime-launcher.service.js +2 -0
  212. package/dist/launcher/npm-runtime-launcher.service.js.map +1 -0
  213. package/dist/launcher/npm-runtime-update-command.service.d.ts +5 -1
  214. package/dist/launcher/npm-runtime-update-command.service.d.ts.map +1 -0
  215. package/dist/launcher/npm-runtime-update-command.service.js +32 -0
  216. package/dist/launcher/npm-runtime-update-command.service.js.map +1 -0
  217. package/dist/launcher/npm-runtime-update-source.service.d.ts +2 -1
  218. package/dist/launcher/npm-runtime-update-source.service.d.ts.map +1 -0
  219. package/dist/launcher/npm-runtime-update-source.service.js +2 -0
  220. package/dist/launcher/npm-runtime-update-source.service.js.map +1 -0
  221. package/dist/launcher/npm-runtime-update-state.store.d.ts +2 -1
  222. package/dist/launcher/npm-runtime-update-state.store.d.ts.map +1 -0
  223. package/dist/launcher/npm-runtime-update-state.store.js +2 -0
  224. package/dist/launcher/npm-runtime-update-state.store.js.map +1 -0
  225. package/dist/launcher/npm-runtime-update.manager.d.ts +2 -1
  226. package/dist/launcher/npm-runtime-update.manager.d.ts.map +1 -0
  227. package/dist/launcher/npm-runtime-update.manager.js +2 -0
  228. package/dist/launcher/npm-runtime-update.manager.js.map +1 -0
  229. package/dist/launcher/npm-runtime-update.service.d.ts +2 -1
  230. package/dist/launcher/npm-runtime-update.service.d.ts.map +1 -0
  231. package/dist/launcher/npm-runtime-update.service.js +2 -0
  232. package/dist/launcher/npm-runtime-update.service.js.map +1 -0
  233. package/dist/service-runtime.service.d.ts +2 -1
  234. package/dist/service-runtime.service.d.ts.map +1 -0
  235. package/dist/service-runtime.service.js +6 -1
  236. package/dist/service-runtime.service.js.map +1 -0
  237. package/dist/shared/controllers/gateway.controller.d.ts +2 -1
  238. package/dist/shared/controllers/gateway.controller.d.ts.map +1 -0
  239. package/dist/shared/controllers/gateway.controller.js +2 -0
  240. package/dist/shared/controllers/gateway.controller.js.map +1 -0
  241. package/dist/shared/services/gateway/gateway-restart-wake.service.d.ts +2 -1
  242. package/dist/shared/services/gateway/gateway-restart-wake.service.d.ts.map +1 -0
  243. package/dist/shared/services/gateway/gateway-restart-wake.service.js +2 -0
  244. package/dist/shared/services/gateway/gateway-restart-wake.service.js.map +1 -0
  245. package/dist/shared/services/gateway/managers/gateway-plugin.manager.d.ts +2 -1
  246. package/dist/shared/services/gateway/managers/gateway-plugin.manager.d.ts.map +1 -0
  247. package/dist/shared/services/gateway/managers/gateway-plugin.manager.js +2 -0
  248. package/dist/shared/services/gateway/managers/gateway-plugin.manager.js.map +1 -0
  249. package/dist/shared/services/gateway/managers/gateway-remote.manager.d.ts +2 -1
  250. package/dist/shared/services/gateway/managers/gateway-remote.manager.d.ts.map +1 -0
  251. package/dist/shared/services/gateway/managers/gateway-remote.manager.js +2 -0
  252. package/dist/shared/services/gateway/managers/gateway-remote.manager.js.map +1 -0
  253. package/dist/shared/services/gateway/nextclaw-app.service.d.ts +2 -1
  254. package/dist/shared/services/gateway/nextclaw-app.service.d.ts.map +1 -0
  255. package/dist/shared/services/gateway/nextclaw-app.service.js +2 -0
  256. package/dist/shared/services/gateway/nextclaw-app.service.js.map +1 -0
  257. package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.d.ts +2 -1
  258. package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.d.ts.map +1 -0
  259. package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.js +2 -0
  260. package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.js.map +1 -0
  261. package/dist/shared/services/gateway/service-bootstrap-status.service.d.ts +2 -1
  262. package/dist/shared/services/gateway/service-bootstrap-status.service.d.ts.map +1 -0
  263. package/dist/shared/services/gateway/service-bootstrap-status.service.js +2 -0
  264. package/dist/shared/services/gateway/service-bootstrap-status.service.js.map +1 -0
  265. package/dist/shared/services/gateway/service-startup-support.service.d.ts +2 -1
  266. package/dist/shared/services/gateway/service-startup-support.service.d.ts.map +1 -0
  267. package/dist/shared/services/gateway/service-startup-support.service.js +2 -0
  268. package/dist/shared/services/gateway/service-startup-support.service.js.map +1 -0
  269. package/dist/shared/services/gateway/utils/cron-job-handler.utils.d.ts +2 -1
  270. package/dist/shared/services/gateway/utils/cron-job-handler.utils.d.ts.map +1 -0
  271. package/dist/shared/services/gateway/utils/cron-job-handler.utils.js +2 -0
  272. package/dist/shared/services/gateway/utils/cron-job-handler.utils.js.map +1 -0
  273. package/dist/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.d.ts +2 -1
  274. package/dist/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.d.ts.map +1 -0
  275. package/dist/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.js +2 -0
  276. package/dist/shared/services/gateway/utils/gateway-runtime-lifecycle.utils.js.map +1 -0
  277. package/dist/shared/services/marketplace/service-marketplace-installer.service.d.ts +2 -1
  278. package/dist/shared/services/marketplace/service-marketplace-installer.service.d.ts.map +1 -0
  279. package/dist/shared/services/marketplace/service-marketplace-installer.service.js +2 -0
  280. package/dist/shared/services/marketplace/service-marketplace-installer.service.js.map +1 -0
  281. package/dist/shared/services/marketplace/service-mcp-marketplace-ops.d.ts +2 -1
  282. package/dist/shared/services/marketplace/service-mcp-marketplace-ops.d.ts.map +1 -0
  283. package/dist/shared/services/marketplace/service-mcp-marketplace-ops.js +2 -0
  284. package/dist/shared/services/marketplace/service-mcp-marketplace-ops.js.map +1 -0
  285. package/dist/shared/services/plugin/utils/plugin-dev-hot-reload.utils.d.ts +2 -1
  286. package/dist/shared/services/plugin/utils/plugin-dev-hot-reload.utils.d.ts.map +1 -0
  287. package/dist/shared/services/plugin/utils/plugin-dev-hot-reload.utils.js +2 -0
  288. package/dist/shared/services/plugin/utils/plugin-dev-hot-reload.utils.js.map +1 -0
  289. package/dist/shared/services/plugin/utils/plugin-runtime-bridge.utils.d.ts +2 -1
  290. package/dist/shared/services/plugin/utils/plugin-runtime-bridge.utils.d.ts.map +1 -0
  291. package/dist/shared/services/plugin/utils/plugin-runtime-bridge.utils.js +2 -1
  292. package/dist/shared/services/plugin/utils/plugin-runtime-bridge.utils.js.map +1 -0
  293. package/dist/shared/services/restart/restart-coordinator.service.d.ts +2 -1
  294. package/dist/shared/services/restart/restart-coordinator.service.d.ts.map +1 -0
  295. package/dist/shared/services/restart/restart-coordinator.service.js +2 -0
  296. package/dist/shared/services/restart/restart-coordinator.service.js.map +1 -0
  297. package/dist/shared/services/restart/restart-sentinel.service.d.ts +2 -1
  298. package/dist/shared/services/restart/restart-sentinel.service.d.ts.map +1 -0
  299. package/dist/shared/services/restart/restart-sentinel.service.js +2 -0
  300. package/dist/shared/services/restart/restart-sentinel.service.js.map +1 -0
  301. package/dist/shared/services/restart/runtime-restart-request.service.d.ts +2 -1
  302. package/dist/shared/services/restart/runtime-restart-request.service.d.ts.map +1 -0
  303. package/dist/shared/services/restart/runtime-restart-request.service.js +2 -0
  304. package/dist/shared/services/restart/runtime-restart-request.service.js.map +1 -0
  305. package/dist/shared/services/runtime/managed-service-supervisor.service.d.ts +85 -0
  306. package/dist/shared/services/runtime/managed-service-supervisor.service.d.ts.map +1 -0
  307. package/dist/shared/services/runtime/managed-service-supervisor.service.js +271 -0
  308. package/dist/shared/services/runtime/managed-service-supervisor.service.js.map +1 -0
  309. package/dist/shared/services/runtime/nextclaw-distribution.service.d.ts +2 -1
  310. package/dist/shared/services/runtime/nextclaw-distribution.service.d.ts.map +1 -0
  311. package/dist/shared/services/runtime/nextclaw-distribution.service.js +2 -0
  312. package/dist/shared/services/runtime/nextclaw-distribution.service.js.map +1 -0
  313. package/dist/shared/services/runtime/runtime-command.service.d.ts +3 -1
  314. package/dist/shared/services/runtime/runtime-command.service.d.ts.map +1 -0
  315. package/dist/shared/services/runtime/runtime-command.service.js +5 -0
  316. package/dist/shared/services/runtime/runtime-command.service.js.map +1 -0
  317. package/dist/shared/services/runtime/runtime-config-init.service.d.ts +2 -1
  318. package/dist/shared/services/runtime/runtime-config-init.service.d.ts.map +1 -0
  319. package/dist/shared/services/runtime/runtime-config-init.service.js +2 -0
  320. package/dist/shared/services/runtime/runtime-config-init.service.js.map +1 -0
  321. package/dist/shared/services/runtime/service-managed-startup.service.d.ts +4 -32
  322. package/dist/shared/services/runtime/service-managed-startup.service.d.ts.map +1 -0
  323. package/dist/shared/services/runtime/service-managed-startup.service.js +10 -92
  324. package/dist/shared/services/runtime/service-managed-startup.service.js.map +1 -0
  325. package/dist/shared/services/runtime/utils/managed-service-routing.utils.d.ts +2 -1
  326. package/dist/shared/services/runtime/utils/managed-service-routing.utils.d.ts.map +1 -0
  327. package/dist/shared/services/runtime/utils/managed-service-routing.utils.js +2 -0
  328. package/dist/shared/services/runtime/utils/managed-service-routing.utils.js.map +1 -0
  329. package/dist/shared/services/runtime/utils/service-remote-runtime.utils.d.ts +5 -2
  330. package/dist/shared/services/runtime/utils/service-remote-runtime.utils.d.ts.map +1 -0
  331. package/dist/shared/services/runtime/utils/service-remote-runtime.utils.js +23 -17
  332. package/dist/shared/services/runtime/utils/service-remote-runtime.utils.js.map +1 -0
  333. package/dist/shared/services/ui/companion-runtime.service.d.ts +2 -1
  334. package/dist/shared/services/ui/companion-runtime.service.d.ts.map +1 -0
  335. package/dist/shared/services/ui/companion-runtime.service.js +2 -0
  336. package/dist/shared/services/ui/companion-runtime.service.js.map +1 -0
  337. package/dist/shared/services/ui/local-ui-discovery.service.d.ts +2 -1
  338. package/dist/shared/services/ui/local-ui-discovery.service.d.ts.map +1 -0
  339. package/dist/shared/services/ui/local-ui-discovery.service.js +2 -0
  340. package/dist/shared/services/ui/local-ui-discovery.service.js.map +1 -0
  341. package/dist/shared/services/ui/npm-runtime-update-host.service.d.ts +2 -1
  342. package/dist/shared/services/ui/npm-runtime-update-host.service.d.ts.map +1 -0
  343. package/dist/shared/services/ui/npm-runtime-update-host.service.js +2 -0
  344. package/dist/shared/services/ui/npm-runtime-update-host.service.js.map +1 -0
  345. package/dist/shared/services/ui/runtime-control-host.service.d.ts +2 -1
  346. package/dist/shared/services/ui/runtime-control-host.service.d.ts.map +1 -0
  347. package/dist/shared/services/ui/runtime-control-host.service.js +2 -0
  348. package/dist/shared/services/ui/runtime-control-host.service.js.map +1 -0
  349. package/dist/shared/services/ui/service-remote-access.service.d.ts +2 -1
  350. package/dist/shared/services/ui/service-remote-access.service.d.ts.map +1 -0
  351. package/dist/shared/services/ui/service-remote-access.service.js +2 -0
  352. package/dist/shared/services/ui/service-remote-access.service.js.map +1 -0
  353. package/dist/shared/services/ui/ui-bridge-api.service.d.ts +2 -1
  354. package/dist/shared/services/ui/ui-bridge-api.service.d.ts.map +1 -0
  355. package/dist/shared/services/ui/ui-bridge-api.service.js +2 -0
  356. package/dist/shared/services/ui/ui-bridge-api.service.js.map +1 -0
  357. package/dist/shared/services/workspace/workspace-manager.service.d.ts +2 -1
  358. package/dist/shared/services/workspace/workspace-manager.service.d.ts.map +1 -0
  359. package/dist/shared/services/workspace/workspace-manager.service.js +2 -0
  360. package/dist/shared/services/workspace/workspace-manager.service.js.map +1 -0
  361. package/dist/shared/stores/companion-runtime.store.d.ts +2 -1
  362. package/dist/shared/stores/companion-runtime.store.d.ts.map +1 -0
  363. package/dist/shared/stores/companion-runtime.store.js +2 -0
  364. package/dist/shared/stores/companion-runtime.store.js.map +1 -0
  365. package/dist/shared/stores/local-ui-runtime.store.d.ts +2 -1
  366. package/dist/shared/stores/local-ui-runtime.store.d.ts.map +1 -0
  367. package/dist/shared/stores/local-ui-runtime.store.js +2 -0
  368. package/dist/shared/stores/local-ui-runtime.store.js.map +1 -0
  369. package/dist/shared/stores/managed-service-state.store.d.ts +19 -1
  370. package/dist/shared/stores/managed-service-state.store.d.ts.map +1 -0
  371. package/dist/shared/stores/managed-service-state.store.js +2 -0
  372. package/dist/shared/stores/managed-service-state.store.js.map +1 -0
  373. package/dist/shared/stores/pending-restart.store.d.ts +2 -1
  374. package/dist/shared/stores/pending-restart.store.d.ts.map +1 -0
  375. package/dist/shared/stores/pending-restart.store.js +2 -0
  376. package/dist/shared/stores/pending-restart.store.js.map +1 -0
  377. package/dist/shared/types/cli.types.d.ts +16 -1
  378. package/dist/shared/types/cli.types.d.ts.map +1 -0
  379. package/dist/shared/types/distribution.types.d.ts +2 -1
  380. package/dist/shared/types/distribution.types.d.ts.map +1 -0
  381. package/dist/shared/utils/cli.utils.d.ts +2 -1
  382. package/dist/shared/utils/cli.utils.d.ts.map +1 -0
  383. package/dist/shared/utils/cli.utils.js +2 -0
  384. package/dist/shared/utils/cli.utils.js.map +1 -0
  385. package/dist/shared/utils/config-path.d.ts +2 -1
  386. package/dist/shared/utils/config-path.d.ts.map +1 -0
  387. package/dist/shared/utils/config-path.js +2 -0
  388. package/dist/shared/utils/config-path.js.map +1 -0
  389. package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.d.ts +2 -1
  390. package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.d.ts.map +1 -0
  391. package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.js +2 -0
  392. package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.js.map +1 -0
  393. package/dist/shared/utils/marketplace/service-marketplace-helpers.utils.d.ts +2 -1
  394. package/dist/shared/utils/marketplace/service-marketplace-helpers.utils.d.ts.map +1 -0
  395. package/dist/shared/utils/marketplace/service-marketplace-helpers.utils.js +2 -0
  396. package/dist/shared/utils/marketplace/service-marketplace-helpers.utils.js.map +1 -0
  397. package/dist/shared/utils/package/package-manifest.utils.d.ts +2 -1
  398. package/dist/shared/utils/package/package-manifest.utils.d.ts.map +1 -0
  399. package/dist/shared/utils/package/package-manifest.utils.js +2 -0
  400. package/dist/shared/utils/package/package-manifest.utils.js.map +1 -0
  401. package/dist/shared/utils/runtime-helpers.d.ts +2 -1
  402. package/dist/shared/utils/runtime-helpers.d.ts.map +1 -0
  403. package/dist/shared/utils/runtime-helpers.js +2 -0
  404. package/dist/shared/utils/runtime-helpers.js.map +1 -0
  405. package/dist/shared/utils/service-port-probe.utils.d.ts +2 -1
  406. package/dist/shared/utils/service-port-probe.utils.d.ts.map +1 -0
  407. package/dist/shared/utils/service-port-probe.utils.js +2 -0
  408. package/dist/shared/utils/service-port-probe.utils.js.map +1 -0
  409. package/dist/shared/utils/startup-trace.d.ts +2 -1
  410. package/dist/shared/utils/startup-trace.d.ts.map +1 -0
  411. package/dist/shared/utils/startup-trace.js +2 -0
  412. package/dist/shared/utils/startup-trace.js.map +1 -0
  413. package/dist/shared/utils/top-level-nextclaw-command-env.utils.d.ts +2 -1
  414. package/dist/shared/utils/top-level-nextclaw-command-env.utils.d.ts.map +1 -0
  415. package/dist/shared/utils/top-level-nextclaw-command-env.utils.js +2 -0
  416. package/dist/shared/utils/top-level-nextclaw-command-env.utils.js.map +1 -0
  417. package/package.json +20 -20
@@ -55,3 +55,5 @@ function createCronJobHandler(params) {
55
55
  }
56
56
  //#endregion
57
57
  export { createCronJobHandler };
58
+
59
+ //# sourceMappingURL=cron-job-handler.utils.js.map
@@ -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"}
@@ -6,4 +6,5 @@ declare function handleGatewayDeferredStartupError(params: {
6
6
  error: unknown;
7
7
  }): void;
8
8
  //#endregion
9
- export { handleGatewayDeferredStartupError };
9
+ export { handleGatewayDeferredStartupError };
10
+ //# sourceMappingURL=gateway-runtime-lifecycle.utils.d.ts.map
@@ -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"}
@@ -8,3 +8,5 @@ function handleGatewayDeferredStartupError(params) {
8
8
  }
9
9
  //#endregion
10
10
  export { handleGatewayDeferredStartupError };
11
+
12
+ //# sourceMappingURL=gateway-runtime-lifecycle.utils.js.map
@@ -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"}
@@ -28,4 +28,5 @@ declare class ServiceMarketplaceInstaller {
28
28
  private createMcpMarketplaceOps;
29
29
  }
30
30
  //#endregion
31
- export { ServiceMarketplaceInstaller };
31
+ export { ServiceMarketplaceInstaller };
32
+ //# sourceMappingURL=service-marketplace-installer.service.d.ts.map
@@ -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"}
@@ -97,3 +97,5 @@ var ServiceMarketplaceInstaller = class {
97
97
  };
98
98
  //#endregion
99
99
  export { ServiceMarketplaceInstaller };
100
+
101
+ //# sourceMappingURL=service-marketplace-installer.service.js.map
@@ -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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"}
@@ -36,4 +36,5 @@ declare class ServiceMcpMarketplaceOps {
36
36
  private createDoctorFacade;
37
37
  }
38
38
  //#endregion
39
- export { ServiceMcpMarketplaceOps };
39
+ export { ServiceMcpMarketplaceOps };
40
+ //# sourceMappingURL=service-mcp-marketplace-ops.d.ts.map
@@ -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"}
@@ -65,3 +65,5 @@ var ServiceMcpMarketplaceOps = class {
65
65
  };
66
66
  //#endregion
67
67
  export { ServiceMcpMarketplaceOps };
68
+
69
+ //# sourceMappingURL=service-mcp-marketplace-ops.js.map
@@ -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"}
@@ -49,3 +49,5 @@ var RestartCoordinator = class {
49
49
  };
50
50
  //#endregion
51
51
  export { RestartCoordinator };
52
+
53
+ //# sourceMappingURL=restart-coordinator.service.js.map
@@ -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"}
@@ -40,3 +40,5 @@ var RuntimeRestartRequestService = class {
40
40
  };
41
41
  //#endregion
42
42
  export { RuntimeRestartRequestService };
43
+
44
+ //# sourceMappingURL=runtime-restart-request.service.js.map
@@ -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"}