@nextclaw/service 0.1.7 → 0.1.9

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 (83) hide show
  1. package/dist/cli/commands/agent/agent-runtime.utils.js +2 -2
  2. package/dist/cli/commands/agent/cli-agent-runner.utils.js +2 -2
  3. package/dist/cli/commands/agent/index.js +1 -1
  4. package/dist/cli/commands/config/services/config-commands.service.js +1 -1
  5. package/dist/cli/commands/cron/services/cron-commands.service.js +2 -2
  6. package/dist/cli/commands/cron/services/cron-local.service.d.ts +1 -1
  7. package/dist/cli/commands/cron/services/cron-local.service.js +1 -1
  8. package/dist/cli/commands/restart/index.js +2 -2
  9. package/dist/cli/commands/skills/marketplace.metadata.js +1 -1
  10. package/dist/cli/commands/skills/marketplace.service.js +2 -2
  11. package/dist/cli/commands/skills/skills-query.service.js +1 -1
  12. package/dist/commands/channel/index.js +2 -2
  13. package/dist/commands/plugin/development-source/dev-plugin-overrides.utils.js +3 -3
  14. package/dist/commands/plugin/development-source/{first-party-plugin-load-paths.d.ts → first-party-plugin-load-paths.utils.d.ts} +1 -1
  15. package/dist/commands/plugin/development-source/{first-party-plugin-load-paths.js → first-party-plugin-load-paths.utils.js} +3 -3
  16. package/dist/commands/plugin/index.d.ts +1 -1
  17. package/dist/commands/plugin/index.js +5 -5
  18. package/dist/commands/plugin/plugin-command-utils.d.ts +1 -1
  19. package/dist/commands/plugin/plugin-mutation-actions.js +2 -2
  20. package/dist/commands/plugin/{plugin-registry-loader.d.ts → plugin-registry-loader.utils.d.ts} +1 -1
  21. package/dist/commands/plugin/{plugin-registry-loader.js → plugin-registry-loader.utils.js} +2 -2
  22. package/dist/commands/remote/services/remote-service-control.service.js +1 -1
  23. package/dist/commands/remote/utils/remote-runtime-support.utils.js +1 -1
  24. package/dist/commands/service/services/autostart/host-autostart-runtime.service.js +2 -2
  25. package/dist/commands/service/services/autostart/linux-systemd-autostart.service.js +2 -2
  26. package/dist/commands/service/services/autostart/macos-launch-agent-autostart.service.js +2 -2
  27. package/dist/commands/service/services/autostart/windows-task-autostart.service.js +2 -2
  28. package/dist/index.d.ts +2 -2
  29. package/dist/launcher/npm-runtime-bundle-layout.store.js +1 -1
  30. package/dist/launcher/npm-runtime-bundle.service.js +1 -1
  31. package/dist/launcher/npm-runtime-bundle.types.d.ts +1 -1
  32. package/dist/launcher/npm-runtime-launcher.service.js +5 -5
  33. package/dist/launcher/npm-runtime-update-command.service.js +4 -3
  34. package/dist/launcher/npm-runtime-update-source.service.js +2 -2
  35. package/dist/launcher/npm-runtime-update-state.store.js +1 -1
  36. package/dist/launcher/npm-runtime-update.manager.d.ts +2 -2
  37. package/dist/launcher/npm-runtime-update.manager.js +8 -4
  38. package/dist/launcher/npm-runtime-update.service.d.ts +1 -1
  39. package/dist/launcher/npm-runtime-update.service.js +3 -3
  40. package/dist/service-runtime.service.d.ts +0 -2
  41. package/dist/service-runtime.service.js +31 -33
  42. package/dist/shared/controllers/gateway.controller.js +7 -9
  43. package/dist/shared/services/extensions/extension-lifecycle.service.js +1 -1
  44. package/dist/shared/services/extensions/service-extension-runtime.service.d.ts +1 -1
  45. package/dist/shared/services/extensions/service-extension-runtime.service.js +7 -6
  46. package/dist/shared/services/gateway/gateway-restart-wake.service.js +2 -1
  47. package/dist/shared/services/gateway/managers/gateway-plugin.manager.js +17 -3
  48. package/dist/shared/services/gateway/managers/gateway-remote.manager.d.ts +2 -2
  49. package/dist/shared/services/gateway/managers/gateway-remote.manager.js +1 -1
  50. package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.d.ts +1 -1
  51. package/dist/shared/services/gateway/nextclaw-gateway-runtime.service.js +10 -10
  52. package/dist/shared/services/gateway/service-bootstrap-status.service.d.ts +1 -1
  53. package/dist/shared/services/gateway/service-startup-support.service.d.ts +1 -1
  54. package/dist/shared/services/marketplace/service-marketplace-installer.service.js +2 -2
  55. package/dist/shared/services/plugin/utils/plugin-runtime-bridge.utils.js +1 -1
  56. package/dist/shared/services/restart/restart-sentinel.service.js +1 -1
  57. package/dist/shared/services/runtime/runtime-command.service.d.ts +3 -0
  58. package/dist/shared/services/runtime/runtime-command.service.js +27 -3
  59. package/dist/shared/services/runtime/service-managed-startup.service.d.ts +4 -28
  60. package/dist/shared/services/runtime/service-managed-startup.service.js +61 -65
  61. package/dist/shared/services/runtime/utils/managed-service-routing.utils.d.ts +30 -0
  62. package/dist/shared/services/runtime/utils/managed-service-routing.utils.js +62 -0
  63. package/dist/shared/services/runtime/utils/service-remote-runtime.utils.js +2 -2
  64. package/dist/shared/services/session/service-deferred-ncp-agent.service.d.ts +1 -1
  65. package/dist/shared/services/ui/companion-runtime.service.d.ts +2 -0
  66. package/dist/shared/services/ui/companion-runtime.service.js +40 -8
  67. package/dist/shared/services/ui/local-ui-discovery.service.js +1 -1
  68. package/dist/shared/services/ui/npm-runtime-update-host.service.js +2 -2
  69. package/dist/shared/services/ui/runtime-control-host.service.js +1 -1
  70. package/dist/shared/services/ui/service-remote-access.service.js +1 -1
  71. package/dist/shared/services/workspace/workspace-manager.service.js +3 -3
  72. package/dist/shared/stores/companion-runtime.store.js +1 -1
  73. package/dist/shared/stores/local-ui-runtime.store.js +1 -1
  74. package/dist/shared/stores/managed-service-state.store.js +1 -1
  75. package/dist/shared/types/cli.types.d.ts +2 -14
  76. package/dist/shared/utils/cli.utils.js +2 -2
  77. package/dist/shared/utils/marketplace/cli-subcommand-launch.utils.js +1 -1
  78. package/dist/shared/utils/package/package-manifest.utils.js +2 -2
  79. package/package.json +21 -19
  80. package/dist/cli/commands/companion/index.d.ts +0 -15
  81. package/dist/cli/commands/companion/index.js +0 -24
  82. package/dist/cli/commands/companion/services/companion-process.service.d.ts +0 -17
  83. package/dist/cli/commands/companion/services/companion-process.service.js +0 -49
@@ -1,11 +1,11 @@
1
1
  import { buildReservedPluginLoadOptions } from "../../../commands/plugin/plugin-command-utils.js";
2
- import { resolveDevFirstPartyPluginDir } from "../../../commands/plugin/development-source/first-party-plugin-load-paths.js";
2
+ import { resolveDevFirstPartyPluginDir } from "../../../commands/plugin/development-source/first-party-plugin-load-paths.utils.js";
3
3
  import { resolveDevPluginLoadingContext } from "../../../commands/plugin/development-source/dev-plugin-overrides.utils.js";
4
4
  import { toExtensionRegistry } from "../../../commands/plugin/plugin-extension-registry.js";
5
5
  import { logPluginDiagnostics } from "../../../commands/plugin/index.js";
6
6
  import { getWorkspacePath, loadConfig } from "@nextclaw/core";
7
- import { loadOpenClawPlugins } from "@nextclaw/openclaw-compat";
8
7
  import { AgentRuntimeRegistry, BuiltinNarpRuntimeRegistrationService, DEFAULT_AGENT_RUNTIME_ENTRY_ID, NARP_HTTP_RUNTIME_KIND, NARP_STDIO_RUNTIME_KIND, resolveAgentRuntimeEntries } from "@nextclaw/kernel";
8
+ import { loadOpenClawPlugins } from "@nextclaw/openclaw-compat";
9
9
  //#region src/cli/commands/agent/agent-runtime.utils.ts
10
10
  function createUnusedRuntime(_params) {
11
11
  throw new Error("runtime creation is not available during runtime listing");
@@ -1,9 +1,9 @@
1
1
  import { printAgentResponse, prompt } from "../../../shared/utils/cli.utils.js";
2
- import { join, resolve } from "node:path";
3
2
  import { getDataDir } from "@nextclaw/core";
3
+ import { dispatchPromptOverNcp } from "@nextclaw/kernel";
4
4
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
5
+ import { join, resolve } from "node:path";
5
6
  import { createInterface } from "node:readline";
6
- import { dispatchPromptOverNcp } from "@nextclaw/kernel";
7
7
  //#region src/cli/commands/agent/cli-agent-runner.utils.ts
8
8
  const EXIT_COMMANDS = new Set([
9
9
  "exit",
@@ -1,3 +1,3 @@
1
- import { runCliAgentCommand } from "./cli-agent-runner.utils.js";
2
1
  import { AgentCommands } from "./services/agent-commands.service.js";
2
+ import { runCliAgentCommand } from "./cli-agent-runner.utils.js";
3
3
  export { AgentCommands, runCliAgentCommand };
@@ -1,6 +1,6 @@
1
+ import { loadPluginRegistry, mergePluginConfigView } from "../../../../commands/plugin/index.js";
1
2
  import { getAtConfigPath, parseConfigSetValue, parseRequiredConfigPath, setAtConfigPath, unsetAtConfigPath } from "../../../../shared/utils/config-path.js";
2
3
  import { resolveChannelConfigView } from "../../../../commands/channel/channel-config-view.js";
3
- import { loadPluginRegistry, mergePluginConfigView } from "../../../../commands/plugin/index.js";
4
4
  import "../../../../commands/channel/index.js";
5
5
  import { buildReloadPlan, diffConfigPaths, getWorkspacePath, loadConfig, saveConfig } from "@nextclaw/core";
6
6
  import { getPluginChannelBindings } from "@nextclaw/openclaw-compat";
@@ -1,6 +1,6 @@
1
- import { UiBridgeApiClient, resolveLocalUiApiBase } from "../../../../shared/services/ui/ui-bridge-api.service.js";
2
- import { printCronJobs } from "../utils/cron-job.utils.js";
3
1
  import { CronLocalService, createCronCreateRequest } from "./cron-local.service.js";
2
+ import { printCronJobs } from "../utils/cron-job.utils.js";
3
+ import { UiBridgeApiClient, resolveLocalUiApiBase } from "../../../../shared/services/ui/ui-bridge-api.service.js";
4
4
  //#region src/cli/commands/cron/services/cron-commands.service.ts
5
5
  function readErrorMessage(error) {
6
6
  if (error instanceof Error && error.message.trim().length > 0) return error.message.trim();
@@ -1,7 +1,7 @@
1
1
  import { CronAddOptions } from "../../../../shared/types/cli.types.js";
2
2
  import { CronJobView } from "../utils/cron-job.utils.js";
3
- import { CronCreateRequest } from "@nextclaw/server";
4
3
  import { AutomationManager } from "@nextclaw/kernel";
4
+ import { CronCreateRequest } from "@nextclaw/server";
5
5
 
6
6
  //#region src/cli/commands/cron/services/cron-local.service.d.ts
7
7
  declare function createCronCreateRequest(opts: CronAddOptions): {
@@ -1,6 +1,6 @@
1
- import { resolve } from "node:path";
2
1
  import { getDataDir } from "@nextclaw/core";
3
2
  import { AutomationManager } from "@nextclaw/kernel";
3
+ import { resolve } from "node:path";
4
4
  //#region src/cli/commands/cron/services/cron-local.service.ts
5
5
  function readTrimmed(value) {
6
6
  if (typeof value !== "string") return;
@@ -1,9 +1,9 @@
1
1
  import { findListeningProcessByPort, isProcessRunning, resolveUiConfig, waitForExit } from "../../../shared/utils/cli.utils.js";
2
- import { localUiRuntimeStore } from "../../../shared/stores/local-ui-runtime.store.js";
3
2
  import { managedServiceStateStore } from "../../../shared/stores/managed-service-state.store.js";
3
+ import { localUiRuntimeStore } from "../../../shared/stores/local-ui-runtime.store.js";
4
4
  import { describeUnmanagedHealthyTargetMessage } from "../../../shared/utils/service-port-probe.utils.js";
5
- import { resolveManagedServiceUiOverrides } from "../../../shared/utils/runtime-helpers.js";
6
5
  import "../../../shared/services/runtime/runtime-command.service.js";
6
+ import { resolveManagedServiceUiOverrides } from "../../../shared/utils/runtime-helpers.js";
7
7
  import { APP_NAME, loadConfig } from "@nextclaw/core";
8
8
  //#region src/cli/commands/restart/index.ts
9
9
  var RestartCommands = class {
@@ -1,5 +1,5 @@
1
- import { resolve } from "node:path";
2
1
  import { existsSync, readFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
3
  import { parse } from "yaml";
4
4
  //#region src/cli/commands/skills/marketplace.metadata.ts
5
5
  const DEFAULT_MARKETPLACE_META_FILENAME = "marketplace.json";
@@ -1,12 +1,12 @@
1
1
  import { PlatformAuthCommands } from "../../../commands/platform-auth/services/platform-auth-commands.service.js";
2
2
  import "../../../commands/platform-auth/index.js";
3
- import { normalizeTags, resolvePublishPackageName, validateSkillSelector, validateSkillSlug } from "./marketplace-identity.utils.js";
4
3
  import { buildLocalizedTextMap, parseSkillFrontmatter, readMarketplaceMetadataFile } from "./marketplace.metadata.js";
5
4
  import { runWithMarketplaceNetworkRetry } from "./marketplace-network-retry.js";
6
5
  import { fetchMarketplaceSkillFileBlob, fetchMarketplaceSkillFiles, fetchMarketplaceSkillItem, readMarketplaceEnvelope, resolveMarketplaceAdminToken, resolveMarketplaceApiBase } from "./marketplace-client.js";
7
- import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
6
+ import { normalizeTags, resolvePublishPackageName, validateSkillSelector, validateSkillSlug } from "./marketplace-identity.utils.js";
8
7
  import { SkillsLoader } from "@nextclaw/core";
9
8
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
9
+ import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
10
10
  //#region src/cli/commands/skills/marketplace.service.ts
11
11
  async function installMarketplaceSkill(options) {
12
12
  const { slug, workdir: rawWorkdir, dir, force, apiBaseUrl } = options;
@@ -1,9 +1,9 @@
1
1
  import { parseSkillFrontmatter } from "./marketplace.metadata.js";
2
2
  import { runWithMarketplaceNetworkRetry } from "./marketplace-network-retry.js";
3
3
  import { readMarketplaceEnvelope, resolveMarketplaceApiBase } from "./marketplace-client.js";
4
- import { relative, resolve } from "node:path";
5
4
  import { SkillsLoader } from "@nextclaw/core";
6
5
  import { readFileSync } from "node:fs";
6
+ import { relative, resolve } from "node:path";
7
7
  //#region src/cli/commands/skills/skills-query.service.ts
8
8
  var SkillsQueryService = class {
9
9
  listInstalled = (params) => {
@@ -1,8 +1,8 @@
1
- import { resolveChannelConfigView } from "./channel-config-view.js";
2
1
  import { loadPluginRegistry, mergePluginConfigView, toPluginConfigView as toPluginConfigView$1 } from "../plugin/index.js";
3
- import { spawnSync } from "node:child_process";
2
+ import { resolveChannelConfigView } from "./channel-config-view.js";
4
3
  import { getWorkspacePath, loadConfig, saveConfig } from "@nextclaw/core";
5
4
  import { buildPluginStatusReport, enablePluginInConfig, getPluginChannelBindings } from "@nextclaw/openclaw-compat";
5
+ import { spawnSync } from "node:child_process";
6
6
  import { BUILTIN_CHANNEL_PLUGIN_IDS, builtinProviderIds } from "@nextclaw/runtime";
7
7
  //#region src/commands/channel/index.ts
8
8
  const CHANNEL_LABELS = {
@@ -1,7 +1,7 @@
1
- import { applyDevFirstPartyPluginLoadPaths, resolveDevFirstPartyPluginInstallRoots } from "./first-party-plugin-load-paths.js";
2
- import path from "node:path";
3
- import fs from "node:fs";
1
+ import { applyDevFirstPartyPluginLoadPaths, resolveDevFirstPartyPluginInstallRoots } from "./first-party-plugin-load-paths.utils.js";
4
2
  import { getPackageManifestExtensions, loadPluginManifest } from "@nextclaw/openclaw-compat";
3
+ import fs from "node:fs";
4
+ import path from "node:path";
5
5
  //#region src/commands/plugin/development-source/dev-plugin-overrides.utils.ts
6
6
  const DEV_PLUGIN_OVERRIDES_ENV = "NEXTCLAW_DEV_PLUGIN_OVERRIDES";
7
7
  function isRecord(value) {
@@ -1,6 +1,6 @@
1
1
  import { Config } from "@nextclaw/core";
2
2
 
3
- //#region src/commands/plugin/development-source/first-party-plugin-load-paths.d.ts
3
+ //#region src/commands/plugin/development-source/first-party-plugin-load-paths.utils.d.ts
4
4
  declare const resolveDevFirstPartyPluginDir: (explicitDir: string | undefined, moduleDir?: string) => string | undefined;
5
5
  declare const resolveDevFirstPartyPluginLoadPaths: (config: Config, workspaceExtensionsDir: string | undefined) => string[];
6
6
  declare const resolveDevFirstPartyPluginInstallRoots: (config: Config, workspaceExtensionsDir: string | undefined) => string[];
@@ -1,8 +1,8 @@
1
- import { fileURLToPath } from "node:url";
2
- import path from "node:path";
3
1
  import { getDataPath } from "@nextclaw/core";
4
2
  import fs from "node:fs";
5
- //#region src/commands/plugin/development-source/first-party-plugin-load-paths.ts
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ //#region src/commands/plugin/development-source/first-party-plugin-load-paths.utils.ts
6
6
  const readJsonFile = (filePath) => {
7
7
  try {
8
8
  const raw = fs.readFileSync(filePath, "utf-8");
@@ -1,6 +1,6 @@
1
1
  import { PluginsInfoOptions, PluginsInstallOptions, PluginsListOptions, PluginsUninstallOptions } from "../../shared/types/cli.types.js";
2
2
  import { NextclawExtensionRegistry, toExtensionRegistry } from "./plugin-extension-registry.js";
3
- import { createEmptyPluginRegistry } from "./plugin-registry-loader.js";
3
+ import { createEmptyPluginRegistry } from "./plugin-registry-loader.utils.js";
4
4
  import { Config } from "@nextclaw/core";
5
5
  import { PluginRegistry, mergePluginConfigView, toPluginConfigView } from "@nextclaw/openclaw-compat";
6
6
 
@@ -1,13 +1,13 @@
1
1
  import { appendPluginCapabilityLines, buildReservedPluginLoadOptions } from "./plugin-command-utils.js";
2
- import { disablePluginMutation, enablePluginMutation, installPluginMutation, uninstallPluginMutation } from "./plugin-mutation-actions.js";
3
- import { resolveDevFirstPartyPluginDir } from "./development-source/first-party-plugin-load-paths.js";
2
+ import { resolveDevFirstPartyPluginDir } from "./development-source/first-party-plugin-load-paths.utils.js";
4
3
  import { resolveDevPluginLoadingContext } from "./development-source/dev-plugin-overrides.utils.js";
4
+ import { disablePluginMutation, enablePluginMutation, installPluginMutation, uninstallPluginMutation } from "./plugin-mutation-actions.js";
5
5
  import { toExtensionRegistry } from "./plugin-extension-registry.js";
6
- import { createEmptyPluginRegistry } from "./plugin-registry-loader.js";
7
- import { resolve } from "node:path";
6
+ import { createEmptyPluginRegistry } from "./plugin-registry-loader.utils.js";
8
7
  import { getWorkspacePath, loadConfig } from "@nextclaw/core";
9
- import { createInterface } from "node:readline";
10
8
  import { buildPluginStatusReport, loadOpenClawPlugins, mergePluginConfigView, resolveUninstallDirectoryTargets, toPluginConfigView } from "@nextclaw/openclaw-compat";
9
+ import { resolve } from "node:path";
10
+ import { createInterface } from "node:readline";
11
11
  //#region src/commands/plugin/index.ts
12
12
  function loadPluginRegistry(config, workspaceDir) {
13
13
  const { configWithDevPluginOverrides, excludedRoots } = resolveDevPluginLoadingContext(config, resolveDevFirstPartyPluginDir(process.env.NEXTCLAW_DEV_FIRST_PARTY_PLUGIN_DIR));
@@ -3,7 +3,7 @@ import { PluginRegistry } from "@nextclaw/openclaw-compat";
3
3
  //#region src/commands/plugin/plugin-command-utils.d.ts
4
4
  declare const RESERVED_PROVIDER_IDS: string[];
5
5
  declare function buildReservedPluginLoadOptions(): {
6
- reservedToolNames: ("cron" | "read_file" | "write_file" | "edit_file" | "list_dir" | "exec" | "web_search" | "web_fetch" | "message" | "spawn" | "sessions_list" | "sessions_history" | "memory_search" | "memory_get" | "subagents" | "gateway")[];
6
+ reservedToolNames: ("read_file" | "write_file" | "edit_file" | "list_dir" | "exec" | "web_search" | "web_fetch" | "message" | "spawn" | "sessions_list" | "sessions_history" | "memory_search" | "memory_get" | "subagents" | "gateway" | "cron")[];
7
7
  reservedChannelIds: string[];
8
8
  reservedProviderIds: string[];
9
9
  reservedNcpAgentRuntimeKinds: string[];
@@ -1,8 +1,8 @@
1
1
  import { buildReservedPluginLoadOptions } from "./plugin-command-utils.js";
2
- import { resolve } from "node:path";
3
2
  import { expandHome, getWorkspacePath, loadConfig, saveConfig } from "@nextclaw/core";
4
- import { existsSync } from "node:fs";
5
3
  import { addPluginLoadPath, buildPluginStatusReport, disablePluginInConfig, enablePluginInConfig, installPluginFromNpmSpec, installPluginFromPath, recordPluginInstall, uninstallPlugin } from "@nextclaw/openclaw-compat";
4
+ import { existsSync } from "node:fs";
5
+ import { resolve } from "node:path";
6
6
  //#region src/commands/plugin/plugin-mutation-actions.ts
7
7
  const pluginInstallLogger = {
8
8
  info: (message) => console.log(message),
@@ -2,7 +2,7 @@ import { Config } from "@nextclaw/core";
2
2
  import * as _$_nextclaw_openclaw_compat0 from "@nextclaw/openclaw-compat";
3
3
  import { PluginRegistry } from "@nextclaw/openclaw-compat";
4
4
 
5
- //#region src/commands/plugin/plugin-registry-loader.d.ts
5
+ //#region src/commands/plugin/plugin-registry-loader.utils.d.ts
6
6
  declare function loadPluginRegistryProgressively(config: Config, workspaceDir: string, options?: {
7
7
  onPluginProcessed?: (params: {
8
8
  loadedPluginCount: number;
@@ -1,9 +1,9 @@
1
1
  import { buildReservedPluginLoadOptions } from "./plugin-command-utils.js";
2
- import { resolveDevFirstPartyPluginDir } from "./development-source/first-party-plugin-load-paths.js";
2
+ import { resolveDevFirstPartyPluginDir } from "./development-source/first-party-plugin-load-paths.utils.js";
3
3
  import { resolveDevPluginLoadingContext } from "./development-source/dev-plugin-overrides.utils.js";
4
4
  import { getAppLogger } from "@nextclaw/core";
5
5
  import { discoverPluginStatusReport, loadOpenClawPluginsProgressively } from "@nextclaw/openclaw-compat";
6
- //#region src/commands/plugin/plugin-registry-loader.ts
6
+ //#region src/commands/plugin/plugin-registry-loader.utils.ts
7
7
  function createPluginLogger() {
8
8
  return getAppLogger("plugin.registry_loader");
9
9
  }
@@ -1,7 +1,7 @@
1
1
  import { isProcessRunning, resolveUiApiBase, resolveUiConfig } from "../../../shared/utils/cli.utils.js";
2
2
  import { managedServiceStateStore } from "../../../shared/stores/managed-service-state.store.js";
3
- import { spawn } from "node:child_process";
4
3
  import { getConfigPath, loadConfig } from "@nextclaw/core";
4
+ import { spawn } from "node:child_process";
5
5
  //#region src/commands/remote/services/remote-service-control.service.ts
6
6
  const FORCED_PUBLIC_UI_HOST = "0.0.0.0";
7
7
  function resolveRemoteServiceView(currentUi) {
@@ -1,7 +1,7 @@
1
1
  import { getPackageVersion as getPackageVersion$1 } from "../../../shared/utils/package/package-manifest.utils.js";
2
2
  import { isProcessRunning } from "../../../shared/utils/cli.utils.js";
3
- import { localUiRuntimeStore } from "../../../shared/stores/local-ui-runtime.store.js";
4
3
  import { managedServiceStateStore } from "../../../shared/stores/managed-service-state.store.js";
4
+ import { localUiRuntimeStore } from "../../../shared/stores/local-ui-runtime.store.js";
5
5
  import { resolvePlatformApiBase } from "./platform-api-base.utils.js";
6
6
  import { getConfigPath, getDataDir, loadConfig } from "@nextclaw/core";
7
7
  import { RemoteConnector, RemotePlatformClient, RemoteStatusStore, buildConfiguredRemoteState, resolveRemoteStatusSnapshot } from "@nextclaw/remote";
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from "node:module";
2
- import { fileURLToPath } from "node:url";
3
- import { extname, isAbsolute, resolve, win32 } from "node:path";
4
2
  import { getDataDir } from "@nextclaw/core";
3
+ import { extname, isAbsolute, resolve, win32 } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
5
  //#region src/commands/service/services/autostart/host-autostart-runtime.service.ts
6
6
  const TYPESCRIPT_EXTENSIONS = new Set([
7
7
  ".ts",
@@ -1,7 +1,7 @@
1
1
  import { HostAutostartRuntimeService } from "./host-autostart-runtime.service.js";
2
- import { spawn } from "node:child_process";
3
- import { dirname, join, resolve } from "node:path";
4
2
  import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
3
+ import { dirname, join, resolve } from "node:path";
4
+ import { spawn } from "node:child_process";
5
5
  import { homedir } from "node:os";
6
6
  //#region src/commands/service/services/autostart/linux-systemd-autostart.service.ts
7
7
  const DEFAULT_SYSTEMD_SERVICE_NAME = "nextclaw.service";
@@ -1,7 +1,7 @@
1
1
  import { HostAutostartRuntimeService } from "./host-autostart-runtime.service.js";
2
- import { spawn } from "node:child_process";
3
- import { dirname, resolve } from "node:path";
4
2
  import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
3
+ import { dirname, resolve } from "node:path";
4
+ import { spawn } from "node:child_process";
5
5
  import { homedir } from "node:os";
6
6
  //#region src/commands/service/services/autostart/macos-launch-agent-autostart.service.ts
7
7
  const DEFAULT_LAUNCH_AGENT_LABEL = "io.nextclaw.host-agent";
@@ -1,7 +1,7 @@
1
1
  import { HostAutostartRuntimeService } from "./host-autostart-runtime.service.js";
2
- import { spawn } from "node:child_process";
3
- import { win32 } from "node:path";
4
2
  import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
3
+ import { win32 } from "node:path";
4
+ import { spawn } from "node:child_process";
5
5
  //#region src/commands/service/services/autostart/windows-task-autostart.service.ts
6
6
  const DEFAULT_TASK_NAME = "NextClaw Host Autostart";
7
7
  const SUPPORTED_PLATFORM = "win32";
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { AccountCommandOptions, AccountSetUsernameCommandOptions, AgentCommandOptions, AgentsListCommandOptions, AgentsNewCommandOptions, AgentsRemoveCommandOptions, AgentsRuntimesCommandOptions, AgentsUpdateCommandOptions, ChannelsAddOptions, ChannelsLoginOptions, CompanionDisableCommandOptions, CompanionEnableCommandOptions, CompanionStartCommandOptions, CompanionStatusCommandOptions, CompanionStopCommandOptions, ConfigGetOptions, ConfigSetOptions, CronAddOptions, DoctorCommandOptions, GatewayCommandOptions, HealthProbe, LoginCommandOptions, LogsTailCommandOptions, MarketplaceSkillsRecommendCommandOptions, MarketplaceSkillsSearchCommandOptions, McpAddCommandOptions, McpDoctorOptions, McpListOptions, PluginsInfoOptions, PluginsInstallOptions, PluginsListOptions, PluginsUninstallOptions, RemoteConnectCommandOptions, RemoteDoctorCommandOptions, RemoteEnableCommandOptions, RemoteStatusCommandOptions, RequestRestartParams, RuntimeStatusReport, SecretsApplyOptions, SecretsAuditOptions, SecretsConfigureOptions, SecretsReloadOptions, ServiceAutostartCommandOptions, SkillsInfoCommandOptions, SkillsInstalledCommandOptions, StartCommandOptions, StatusCommandOptions, UiCommandOptions, UpdateCommandOptions, UsageCommandOptions } from "./shared/types/cli.types.js";
1
+ import { AccountCommandOptions, AccountSetUsernameCommandOptions, AgentCommandOptions, AgentsListCommandOptions, AgentsNewCommandOptions, AgentsRemoveCommandOptions, AgentsRuntimesCommandOptions, AgentsUpdateCommandOptions, ChannelsAddOptions, ChannelsLoginOptions, ConfigGetOptions, ConfigSetOptions, CronAddOptions, DoctorCommandOptions, GatewayCommandOptions, HealthProbe, LoginCommandOptions, LogsTailCommandOptions, MarketplaceSkillsRecommendCommandOptions, MarketplaceSkillsSearchCommandOptions, McpAddCommandOptions, McpDoctorOptions, McpListOptions, PluginsInfoOptions, PluginsInstallOptions, PluginsListOptions, PluginsUninstallOptions, RemoteConnectCommandOptions, RemoteDoctorCommandOptions, RemoteEnableCommandOptions, RemoteStatusCommandOptions, RequestRestartParams, RuntimeStatusReport, SecretsApplyOptions, SecretsAuditOptions, SecretsConfigureOptions, SecretsReloadOptions, ServiceAutostartCommandOptions, SkillsInfoCommandOptions, SkillsInstalledCommandOptions, StartCommandOptions, StatusCommandOptions, UiCommandOptions, UpdateCommandOptions, UsageCommandOptions } from "./shared/types/cli.types.js";
2
2
  import { NextclawServiceRuntime, NextclawServiceRuntimeOptions, runNextclawNpmRuntimeLauncher } from "./service-runtime.service.js";
3
3
  import { NextclawDistribution } from "./shared/types/distribution.types.js";
4
4
  import { NextclawDistributionService } from "./shared/services/runtime/nextclaw-distribution.service.js";
5
5
  import { readLearningLoopRuntimeConfig } from "@nextclaw/kernel";
6
- export { AccountCommandOptions, AccountSetUsernameCommandOptions, AgentCommandOptions, AgentsListCommandOptions, AgentsNewCommandOptions, AgentsRemoveCommandOptions, AgentsRuntimesCommandOptions, AgentsUpdateCommandOptions, ChannelsAddOptions, ChannelsLoginOptions, CompanionDisableCommandOptions, CompanionEnableCommandOptions, CompanionStartCommandOptions, CompanionStatusCommandOptions, CompanionStopCommandOptions, ConfigGetOptions, ConfigSetOptions, CronAddOptions, DoctorCommandOptions, GatewayCommandOptions, HealthProbe, LoginCommandOptions, LogsTailCommandOptions, MarketplaceSkillsRecommendCommandOptions, MarketplaceSkillsSearchCommandOptions, McpAddCommandOptions, McpDoctorOptions, McpListOptions, type NextclawDistribution, NextclawDistributionService, NextclawServiceRuntime, type NextclawServiceRuntimeOptions, PluginsInfoOptions, PluginsInstallOptions, PluginsListOptions, PluginsUninstallOptions, RemoteConnectCommandOptions, RemoteDoctorCommandOptions, RemoteEnableCommandOptions, RemoteStatusCommandOptions, RequestRestartParams, RuntimeStatusReport, SecretsApplyOptions, SecretsAuditOptions, SecretsConfigureOptions, SecretsReloadOptions, ServiceAutostartCommandOptions, SkillsInfoCommandOptions, SkillsInstalledCommandOptions, StartCommandOptions, StatusCommandOptions, UiCommandOptions, UpdateCommandOptions, UsageCommandOptions, readLearningLoopRuntimeConfig, runNextclawNpmRuntimeLauncher };
6
+ export { AccountCommandOptions, AccountSetUsernameCommandOptions, AgentCommandOptions, AgentsListCommandOptions, AgentsNewCommandOptions, AgentsRemoveCommandOptions, AgentsRuntimesCommandOptions, AgentsUpdateCommandOptions, ChannelsAddOptions, ChannelsLoginOptions, ConfigGetOptions, ConfigSetOptions, CronAddOptions, DoctorCommandOptions, GatewayCommandOptions, HealthProbe, LoginCommandOptions, LogsTailCommandOptions, MarketplaceSkillsRecommendCommandOptions, MarketplaceSkillsSearchCommandOptions, McpAddCommandOptions, McpDoctorOptions, McpListOptions, type NextclawDistribution, NextclawDistributionService, NextclawServiceRuntime, type NextclawServiceRuntimeOptions, PluginsInfoOptions, PluginsInstallOptions, PluginsListOptions, PluginsUninstallOptions, RemoteConnectCommandOptions, RemoteDoctorCommandOptions, RemoteEnableCommandOptions, RemoteStatusCommandOptions, RequestRestartParams, RuntimeStatusReport, SecretsApplyOptions, SecretsAuditOptions, SecretsConfigureOptions, SecretsReloadOptions, ServiceAutostartCommandOptions, SkillsInfoCommandOptions, SkillsInstalledCommandOptions, StartCommandOptions, StatusCommandOptions, UiCommandOptions, UpdateCommandOptions, UsageCommandOptions, readLearningLoopRuntimeConfig, runNextclawNpmRuntimeLauncher };
@@ -1,6 +1,6 @@
1
- import { dirname, join } from "node:path";
2
1
  import { getDataDir } from "@nextclaw/core";
3
2
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
4
  //#region src/launcher/npm-runtime-bundle-layout.store.ts
5
5
  var NpmRuntimeBundleLayoutStore = class {
6
6
  constructor(rootDirectory = join(getDataDir(), "launcher", "runtime-bundles")) {
@@ -1,6 +1,6 @@
1
1
  import { NpmRuntimeBundleManifestReader } from "./npm-runtime-bundle-manifest.service.js";
2
- import { join, resolve } from "node:path";
3
2
  import { existsSync } from "node:fs";
3
+ import { join, resolve } from "node:path";
4
4
  import { cp, readdir, rename, rm } from "node:fs/promises";
5
5
  //#region src/launcher/npm-runtime-bundle.service.ts
6
6
  function shouldRetryInstallWithCopy(error) {
@@ -1,4 +1,4 @@
1
- import { UpdateManifest, UpdateProgress, UpdateSnapshot } from "@nextclaw/kernel/update-contract";
1
+ import { UpdateManifest, UpdateProgress, UpdateSnapshot } from "@nextclaw/kernel";
2
2
 
3
3
  //#region src/launcher/npm-runtime-bundle.types.d.ts
4
4
  type NpmRuntimeBundleManifest = {
@@ -1,13 +1,13 @@
1
+ import { getPackageVersion as getPackageVersion$1 } from "../shared/utils/package/package-manifest.utils.js";
2
+ import "../shared/utils/cli.utils.js";
1
3
  import { NpmRuntimeBundleLayoutStore } from "./npm-runtime-bundle-layout.store.js";
2
4
  import { NpmRuntimeBundleService, shouldPreferPackagedNpmRuntime } from "./npm-runtime-bundle.service.js";
3
5
  import { inferDefaultNpmRuntimeReleaseChannel } from "./npm-runtime-update-source.service.js";
4
6
  import { NpmRuntimeUpdateStateStore } from "./npm-runtime-update-state.store.js";
5
- import { getPackageVersion as getPackageVersion$1 } from "../shared/utils/package/package-manifest.utils.js";
6
- import "../shared/utils/cli.utils.js";
7
- import { spawnSync } from "node:child_process";
8
- import { fileURLToPath } from "node:url";
9
- import { dirname, resolve } from "node:path";
10
7
  import { createExternalCommandEnv } from "@nextclaw/core";
8
+ import { dirname, resolve } from "node:path";
9
+ import { fileURLToPath } from "node:url";
10
+ import { spawnSync } from "node:child_process";
11
11
  //#region src/launcher/npm-runtime-launcher.service.ts
12
12
  var NpmRuntimeLauncher = class {
13
13
  env;
@@ -1,9 +1,9 @@
1
1
  import { NpmRuntimeBundleLayoutStore } from "./npm-runtime-bundle-layout.store.js";
2
2
  import { NpmRuntimeBundleService } from "./npm-runtime-bundle.service.js";
3
- import { NpmRuntimeUpdateSourceService } from "./npm-runtime-update-source.service.js";
4
- import { NpmRuntimeUpdateStateStore } from "./npm-runtime-update-state.store.js";
5
3
  import { NpmRuntimeUpdateManager } from "./npm-runtime-update.manager.js";
6
4
  import { NpmRuntimeUpdateService } from "./npm-runtime-update.service.js";
5
+ import { NpmRuntimeUpdateSourceService } from "./npm-runtime-update-source.service.js";
6
+ import { NpmRuntimeUpdateStateStore } from "./npm-runtime-update-state.store.js";
7
7
  import { NextclawDistributionService } from "../shared/services/runtime/nextclaw-distribution.service.js";
8
8
  //#region src/launcher/npm-runtime-update-command.service.ts
9
9
  var NpmRuntimeUpdateCommandService = class {
@@ -14,6 +14,7 @@ var NpmRuntimeUpdateCommandService = class {
14
14
  return snapshot;
15
15
  };
16
16
  runManaged = async (opts) => {
17
+ const downloadOnly = Boolean(opts.downloadOnly || opts.download);
17
18
  const distribution = NextclawDistributionService.get();
18
19
  const source = new NpmRuntimeUpdateSourceService({ packagedPublicKeyPath: distribution.runtimeUpdatePublicKeyPath });
19
20
  const launcherVersion = distribution.version;
@@ -42,7 +43,7 @@ var NpmRuntimeUpdateCommandService = class {
42
43
  }).run({
43
44
  apply: Boolean(opts.apply),
44
45
  checkOnly: Boolean(opts.check),
45
- download: opts.download === void 0 ? true : Boolean(opts.download),
46
+ applyAfterDownload: !downloadOnly,
46
47
  onProgress: opts.json ? void 0 : this.printProgress
47
48
  });
48
49
  };
@@ -1,6 +1,6 @@
1
- import { fileURLToPath } from "node:url";
2
- import { dirname, resolve } from "node:path";
3
1
  import { existsSync, readFileSync } from "node:fs";
2
+ import { dirname, resolve } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
4
  //#region src/launcher/npm-runtime-update-source.service.ts
5
5
  const DEFAULT_NPM_RUNTIME_UPDATE_BASE_URL = "https://Peiiii.github.io/nextclaw/npm-runtime-updates";
6
6
  function normalizeOptionalString(value) {
@@ -1,5 +1,5 @@
1
- import { dirname } from "node:path";
2
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { dirname } from "node:path";
3
3
  //#region src/launcher/npm-runtime-update-state.store.ts
4
4
  function createDefaultState(channel) {
5
5
  return {
@@ -3,7 +3,7 @@ import { NpmRuntimeReleaseChannel } from "./npm-runtime-update-source.service.js
3
3
  import { NpmRuntimeUpdateStateStore } from "./npm-runtime-update-state.store.js";
4
4
  import { NpmRuntimeBundleService } from "./npm-runtime-bundle.service.js";
5
5
  import { NpmRuntimeUpdateService } from "./npm-runtime-update.service.js";
6
- import { UpdateProgress, UpdateSnapshot } from "@nextclaw/kernel/update-contract";
6
+ import { UpdateProgress, UpdateSnapshot } from "@nextclaw/kernel";
7
7
 
8
8
  //#region src/launcher/npm-runtime-update.manager.d.ts
9
9
  type NpmRuntimeUpdateManagerOptions = {
@@ -17,8 +17,8 @@ type NpmRuntimeUpdateManagerOptions = {
17
17
  now?: () => Date;
18
18
  };
19
19
  type NpmRuntimeUpdateActionOptions = {
20
- download?: boolean;
21
20
  apply?: boolean;
21
+ applyAfterDownload?: boolean;
22
22
  checkOnly?: boolean;
23
23
  onProgress?: (progress: UpdateProgress) => void;
24
24
  };
@@ -1,6 +1,6 @@
1
- import { resolveEffectiveNpmRuntimeVersion } from "./npm-runtime-bundle.service.js";
2
1
  import { getPackageVersion } from "../shared/utils/package/package-manifest.utils.js";
3
2
  import "../shared/utils/cli.utils.js";
3
+ import { resolveEffectiveNpmRuntimeVersion } from "./npm-runtime-bundle.service.js";
4
4
  //#region src/launcher/npm-runtime-update.manager.ts
5
5
  var NpmRuntimeUpdateManager = class {
6
6
  launcherVersion;
@@ -16,10 +16,14 @@ var NpmRuntimeUpdateManager = class {
16
16
  getSnapshot = () => this.toSnapshotFromState(this.options.stateStore.read(), { status: this.options.stateStore.read().downloadedVersion ? "downloaded" : "idle" });
17
17
  run = async (options = {}) => {
18
18
  if (options.apply) return this.applyDownloadedUpdate();
19
+ const applyAfterDownload = options.applyAfterDownload ?? true;
19
20
  const checkedSnapshot = await this.checkForUpdate();
20
- if (options.checkOnly || checkedSnapshot.status !== "update-available") return checkedSnapshot;
21
- if (options.download === false) return checkedSnapshot;
22
- return await this.downloadUpdate(options.onProgress);
21
+ if (options.checkOnly) return checkedSnapshot;
22
+ if (applyAfterDownload && checkedSnapshot.status === "downloaded") return this.applyDownloadedUpdate();
23
+ if (checkedSnapshot.status !== "update-available") return checkedSnapshot;
24
+ const downloadedSnapshot = await this.downloadUpdate(options.onProgress);
25
+ if (!applyAfterDownload || downloadedSnapshot.status !== "downloaded") return downloadedSnapshot;
26
+ return this.applyDownloadedUpdate();
23
27
  };
24
28
  checkForUpdate = async () => {
25
29
  const manifestUrl = this.options.resolveManifestUrl(this.options.channel);
@@ -1,7 +1,7 @@
1
1
  import { NpmRuntimeDownloadedUpdate, NpmRuntimeUpdateProgressReporter } from "./npm-runtime-bundle.types.js";
2
2
  import { NpmRuntimeBundleLayoutStore } from "./npm-runtime-bundle-layout.store.js";
3
3
  import { NpmRuntimeBundleService } from "./npm-runtime-bundle.service.js";
4
- import { UpdateManifest, UpdateManifestReader } from "@nextclaw/kernel/update-contract";
4
+ import { UpdateManifest, UpdateManifestReader } from "@nextclaw/kernel";
5
5
 
6
6
  //#region src/launcher/npm-runtime-update.service.d.ts
7
7
  type FetchLike = typeof fetch;
@@ -1,11 +1,11 @@
1
1
  import { compareNpmRuntimeVersions } from "./npm-runtime-bundle.service.js";
2
- import { fileURLToPath } from "node:url";
3
- import { dirname, join, resolve, sep } from "node:path";
2
+ import { UpdateManifestReader, serializeUnsignedUpdateManifest } from "@nextclaw/kernel";
4
3
  import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
4
+ import { dirname, join, resolve, sep } from "node:path";
5
+ import { fileURLToPath } from "node:url";
5
6
  import { rm } from "node:fs/promises";
6
7
  import { createHash, createPublicKey, verify } from "node:crypto";
7
8
  import JSZip from "jszip";
8
- import { UpdateManifestReader, serializeUnsignedUpdateManifest } from "@nextclaw/kernel/update-contract";
9
9
  //#region src/launcher/npm-runtime-update.service.ts
10
10
  var NpmRuntimeUpdateService = class {
11
11
  platform;
@@ -1,7 +1,6 @@
1
1
  import { AgentCommandOptions, LoginCommandOptions, UpdateCommandOptions } from "./shared/types/cli.types.js";
2
2
  import { PluginCommands } from "./commands/plugin/index.js";
3
3
  import { AgentCommands } from "./cli/commands/agent/services/agent-commands.service.js";
4
- import { CompanionCommands } from "./cli/commands/companion/index.js";
5
4
  import { ConfigCommands } from "./cli/commands/config/services/config-commands.service.js";
6
5
  import { CronCommands } from "./cli/commands/cron/services/cron-commands.service.js";
7
6
  import { DiagnosticsCommands } from "./cli/commands/diagnostics/services/diagnostics-commands.service.js";
@@ -53,7 +52,6 @@ type NextclawServiceCommands = {
53
52
  restart: RestartCommands;
54
53
  serve: ServeCommands;
55
54
  stop: StopCommands;
56
- companion: CompanionCommands;
57
55
  usage: LlmUsageCommandService;
58
56
  };
59
57
  declare class NextclawServiceRuntime {