@okxweb3/a2a-node 0.2.15 → 0.2.16-beta-ca2f5282c7-260921143311

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 (3) hide show
  1. package/dist/cli.js +91 -87
  2. package/dist/index.js +70 -71
  3. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1851,12 +1851,12 @@ async function acquireDaemonLock(paths, entry) {
1851
1851
  }
1852
1852
  return null;
1853
1853
  }
1854
- function activeDaemonPointerPath() {
1855
- return (0, import_node_path4.join)((0, import_node_os2.homedir)(), ".okx-agent-task", "run", "active-daemon.json");
1854
+ function activeDaemonPointerPath(homeDir = resolveA2aTaskHome()) {
1855
+ return (0, import_node_path4.join)(homeDir, "run", "active-daemon.json");
1856
1856
  }
1857
- async function readActiveDaemonPointer() {
1857
+ async function readActiveDaemonPointer(homeDir = resolveA2aTaskHome()) {
1858
1858
  try {
1859
- const raw = await (0, import_promises.readFile)(activeDaemonPointerPath(), "utf8");
1859
+ const raw = await (0, import_promises.readFile)(activeDaemonPointerPath(homeDir), "utf8");
1860
1860
  const parsed = JSON.parse(raw);
1861
1861
  return Number.isInteger(parsed.pid) && parsed.pid > 0 ? parsed : null;
1862
1862
  } catch {
@@ -1865,14 +1865,14 @@ async function readActiveDaemonPointer() {
1865
1865
  }
1866
1866
  async function claimActiveDaemon(homeDir) {
1867
1867
  let evictedPid = null;
1868
- const current = await readActiveDaemonPointer();
1868
+ const current = await readActiveDaemonPointer(homeDir);
1869
1869
  if (current && current.pid !== process.pid && isProcessAlive(current.pid)) {
1870
1870
  if (await evictPid(current.pid)) {
1871
1871
  evictedPid = current.pid;
1872
1872
  }
1873
1873
  }
1874
- const pointerPath = activeDaemonPointerPath();
1875
- await (0, import_promises.mkdir)((0, import_node_path4.dirname)(pointerPath), { recursive: true });
1874
+ const pointerPath = activeDaemonPointerPath(homeDir);
1875
+ ensureTaskDir((0, import_node_path4.dirname)(pointerPath));
1876
1876
  await (0, import_promises.writeFile)(pointerPath, `${JSON.stringify({
1877
1877
  pid: process.pid,
1878
1878
  homeDir,
@@ -1881,10 +1881,10 @@ async function claimActiveDaemon(homeDir) {
1881
1881
  `, "utf8");
1882
1882
  return evictedPid;
1883
1883
  }
1884
- async function releaseActiveDaemon() {
1885
- const current = await readActiveDaemonPointer();
1884
+ async function releaseActiveDaemon(homeDir = resolveA2aTaskHome()) {
1885
+ const current = await readActiveDaemonPointer(homeDir);
1886
1886
  if (current?.pid === process.pid) {
1887
- await (0, import_promises.rm)(activeDaemonPointerPath(), { force: true });
1887
+ await (0, import_promises.rm)(activeDaemonPointerPath(homeDir), { force: true });
1888
1888
  }
1889
1889
  }
1890
1890
  async function chmodBestEffort(path2, mode) {
@@ -1897,12 +1897,11 @@ async function chmodBestEffort(path2, mode) {
1897
1897
  }
1898
1898
  }
1899
1899
  }
1900
- var import_promises, import_node_os2, import_node_path4, OWNER_FILE, EMPTY_LOCK_STALE_MS, DEFAULT_TAKEOVER_GRACE_MS, TAKEOVER_GRACE_ENV, TAKEOVER_POLL_MS, DAEMON_CAPABILITY_AI_DISPATCH, DAEMON_CAPABILITIES;
1900
+ var import_promises, import_node_path4, OWNER_FILE, EMPTY_LOCK_STALE_MS, DEFAULT_TAKEOVER_GRACE_MS, TAKEOVER_GRACE_ENV, TAKEOVER_POLL_MS, DAEMON_CAPABILITY_AI_DISPATCH, DAEMON_CAPABILITIES;
1901
1901
  var init_daemon_lock = __esm({
1902
1902
  "src/daemon-lock.ts"() {
1903
1903
  "use strict";
1904
1904
  import_promises = require("node:fs/promises");
1905
- import_node_os2 = require("node:os");
1906
1905
  import_node_path4 = require("node:path");
1907
1906
  init_paths();
1908
1907
  init_a2a_paths();
@@ -2430,7 +2429,7 @@ function collectCodexAppBundledCandidates(env = process.env, platform = process.
2430
2429
  }
2431
2430
  const roots = (env[CODEX_APP_DIRS_ENV] ?? "").split(import_node_path8.delimiter).filter(Boolean);
2432
2431
  if (platform === "darwin") {
2433
- roots.push("/Applications", (0, import_node_path8.join)(env.HOME || (0, import_node_os3.homedir)(), "Applications"));
2432
+ roots.push("/Applications", (0, import_node_path8.join)(env.HOME || (0, import_node_os2.homedir)(), "Applications"));
2434
2433
  }
2435
2434
  const candidates = [];
2436
2435
  const seen = /* @__PURE__ */ new Set();
@@ -2558,7 +2557,7 @@ function findExecutableCandidatesOnPath(command, pathValue, platform) {
2558
2557
  return candidates;
2559
2558
  }
2560
2559
  function fallbackCandidates(command, env, platform = process.platform) {
2561
- const home = (0, import_node_os3.homedir)();
2560
+ const home = (0, import_node_os2.homedir)();
2562
2561
  const dirs = [
2563
2562
  (0, import_node_path8.dirname)(process.execPath),
2564
2563
  (0, import_node_path8.join)(home, ".local", "bin"),
@@ -2577,8 +2576,8 @@ function providerPathDirs(command, env) {
2577
2576
  return [
2578
2577
  (0, import_node_path8.isAbsolute)(command) ? (0, import_node_path8.dirname)(command) : void 0,
2579
2578
  (0, import_node_path8.dirname)(process.execPath),
2580
- (0, import_node_path8.join)((0, import_node_os3.homedir)(), ".local", "bin"),
2581
- (0, import_node_path8.join)((0, import_node_os3.homedir)(), "Library", "pnpm"),
2579
+ (0, import_node_path8.join)((0, import_node_os2.homedir)(), ".local", "bin"),
2580
+ (0, import_node_path8.join)((0, import_node_os2.homedir)(), "Library", "pnpm"),
2582
2581
  env.PNPM_HOME
2583
2582
  ].filter((dir) => !!dir);
2584
2583
  }
@@ -2655,12 +2654,12 @@ function isCodexCommand(command) {
2655
2654
  function isWindowsAppsPath(commandPath) {
2656
2655
  return /(?:^|[\\/])WindowsApps(?:[\\/]|$)/i.test(commandPath);
2657
2656
  }
2658
- var import_node_fs5, import_node_os3, import_node_path8, DEFAULT_AI_PROVIDER_TIMEOUT_MS, CODEX_PROBE_TIMEOUT_MS, CODEX_APP_DIRS_ENV, CODEX_COMMAND_OVERRIDE_ENV;
2657
+ var import_node_fs5, import_node_os2, import_node_path8, DEFAULT_AI_PROVIDER_TIMEOUT_MS, CODEX_PROBE_TIMEOUT_MS, CODEX_APP_DIRS_ENV, CODEX_COMMAND_OVERRIDE_ENV;
2659
2658
  var init_ai_command = __esm({
2660
2659
  "src/ai-command.ts"() {
2661
2660
  "use strict";
2662
2661
  import_node_fs5 = require("node:fs");
2663
- import_node_os3 = require("node:os");
2662
+ import_node_os2 = require("node:os");
2664
2663
  import_node_path8 = require("node:path");
2665
2664
  init_win_spawn();
2666
2665
  DEFAULT_AI_PROVIDER_TIMEOUT_MS = null;
@@ -2708,14 +2707,14 @@ function isSystemdManagerUnavailableMessage(message) {
2708
2707
  function isAutostartManagerUnavailableError(error) {
2709
2708
  return error instanceof AutostartManagerUnavailableError || typeof error === "object" && error !== null && "code" in error && error.code === "AUTOSTART_MANAGER_UNAVAILABLE";
2710
2709
  }
2711
- function resolveSystemdAutostartPaths(home = (0, import_node_os4.homedir)()) {
2710
+ function resolveSystemdAutostartPaths(home = (0, import_node_os3.homedir)()) {
2712
2711
  const serviceDir = (0, import_node_path9.join)(home, ".config", "systemd", "user");
2713
2712
  return {
2714
2713
  serviceDir,
2715
2714
  servicePath: (0, import_node_path9.join)(serviceDir, SERVICE_NAME)
2716
2715
  };
2717
2716
  }
2718
- function resolveLaunchdAutostartPaths(home = (0, import_node_os4.homedir)()) {
2717
+ function resolveLaunchdAutostartPaths(home = (0, import_node_os3.homedir)()) {
2719
2718
  const agentDir = (0, import_node_path9.join)(home, "Library", "LaunchAgents");
2720
2719
  return {
2721
2720
  agentDir,
@@ -2735,13 +2734,13 @@ function resolveCliPath() {
2735
2734
  }
2736
2735
  return (0, import_node_path9.resolve)(entry);
2737
2736
  }
2738
- function requiredServicePathEntries(env = process.env, home = (0, import_node_os4.homedir)(), platform = process.platform) {
2737
+ function requiredServicePathEntries(env = process.env, home = (0, import_node_os3.homedir)(), platform = process.platform) {
2739
2738
  const localBin = (0, import_node_path9.join)(home, ".local", "bin");
2740
2739
  const explicit = env.ONCHAINOS_BIN?.trim();
2741
2740
  const onchainosPath = (explicit ? resolveCommandPath(explicit, env, platform) : null) ?? resolveCommandPath("onchainos", env, platform);
2742
2741
  return [...new Set([onchainosPath ? (0, import_node_path9.dirname)(onchainosPath) : null, localBin].filter((entry) => !!entry))];
2743
2742
  }
2744
- function buildServicePath(env = process.env, home = (0, import_node_os4.homedir)(), platform = process.platform) {
2743
+ function buildServicePath(env = process.env, home = (0, import_node_os3.homedir)(), platform = process.platform) {
2745
2744
  const fallback = "/usr/local/bin:/usr/bin:/bin";
2746
2745
  const entries = (env.PATH?.trim() || fallback).split(import_node_path9.delimiter).filter((entry) => !!entry);
2747
2746
  const preferred = requiredServicePathEntries(env, home, platform);
@@ -2793,7 +2792,7 @@ ${args.map((arg) => ` <string>${escapeXml(arg)}</string>`).join("\n")}
2793
2792
  <key>PATH</key>
2794
2793
  <string>${escapeXml(pathValue)}</string>
2795
2794
  <key>HOME</key>
2796
- <string>${escapeXml((0, import_node_os4.homedir)())}</string>
2795
+ <string>${escapeXml((0, import_node_os3.homedir)())}</string>
2797
2796
  <key>OKX_AGENT_TASK_HOME</key>
2798
2797
  <string>${escapeXml(paths.homeDir)}</string>
2799
2798
  </dict>
@@ -3278,14 +3277,14 @@ function autostartStatus() {
3278
3277
  }
3279
3278
  throw new Error(`autostart is not supported on ${process.platform}`);
3280
3279
  }
3281
- var import_node_child_process3, import_node_fs6, import_promises3, import_node_os4, import_node_path9, import_node_util, execFileAsync, SERVICE_NAME, LAUNCHD_LABEL, LAUNCHD_PLIST_NAME, AutostartManagerUnavailableError;
3280
+ var import_node_child_process3, import_node_fs6, import_promises3, import_node_os3, import_node_path9, import_node_util, execFileAsync, SERVICE_NAME, LAUNCHD_LABEL, LAUNCHD_PLIST_NAME, AutostartManagerUnavailableError;
3282
3281
  var init_autostart = __esm({
3283
3282
  "src/autostart.ts"() {
3284
3283
  "use strict";
3285
3284
  import_node_child_process3 = require("node:child_process");
3286
3285
  import_node_fs6 = require("node:fs");
3287
3286
  import_promises3 = require("node:fs/promises");
3288
- import_node_os4 = require("node:os");
3287
+ import_node_os3 = require("node:os");
3289
3288
  import_node_path9 = require("node:path");
3290
3289
  import_node_util = require("node:util");
3291
3290
  init_autostart_windows();
@@ -3497,7 +3496,7 @@ async function startDaemon(homeDir) {
3497
3496
  }
3498
3497
  function isDefaultTaskHome(homeDir) {
3499
3498
  const target = (0, import_node_path10.resolve)(homeDir ?? resolveTaskHome());
3500
- return target === (0, import_node_path10.resolve)((0, import_node_path10.join)((0, import_node_os5.homedir)(), ".okx-agent-task"));
3499
+ return target === (0, import_node_path10.resolve)((0, import_node_path10.join)((0, import_node_os4.homedir)(), ".okx-agent-task"));
3501
3500
  }
3502
3501
  async function shouldDelegateToSupervisor(homeDir, ops) {
3503
3502
  if (!isDefaultTaskHome(homeDir)) {
@@ -3725,14 +3724,14 @@ function readReadyTimeoutMs(env) {
3725
3724
  function sleep2(ms) {
3726
3725
  return new Promise((resolve14) => setTimeout(resolve14, ms));
3727
3726
  }
3728
- var import_node_fs7, import_promises4, import_node_child_process4, import_node_os5, import_node_path10, STOP_GRACE_MS, FORCE_KILL_GRACE_MS, START_EXIT_CHECK_MS, DEFAULT_READY_TIMEOUT_MS, READY_POLL_MS, DAEMON_READY_TIMEOUT_ENV, SUPERVISOR_START_RUNNING_TIMEOUT_MS, SUPERVISOR_START_POLL_MS;
3727
+ var import_node_fs7, import_promises4, import_node_child_process4, import_node_os4, import_node_path10, STOP_GRACE_MS, FORCE_KILL_GRACE_MS, START_EXIT_CHECK_MS, DEFAULT_READY_TIMEOUT_MS, READY_POLL_MS, DAEMON_READY_TIMEOUT_ENV, SUPERVISOR_START_RUNNING_TIMEOUT_MS, SUPERVISOR_START_POLL_MS;
3729
3728
  var init_daemon = __esm({
3730
3729
  "src/daemon.ts"() {
3731
3730
  "use strict";
3732
3731
  import_node_fs7 = require("node:fs");
3733
3732
  import_promises4 = require("node:fs/promises");
3734
3733
  import_node_child_process4 = require("node:child_process");
3735
- import_node_os5 = require("node:os");
3734
+ import_node_os4 = require("node:os");
3736
3735
  import_node_path10 = require("node:path");
3737
3736
  init_paths();
3738
3737
  init_session_store();
@@ -26940,7 +26939,7 @@ function buildConnectParams(config, instanceId, protocolVersion) {
26940
26939
  client: {
26941
26940
  id: "gateway-client",
26942
26941
  displayName: "okx-a2a-node",
26943
- version: "0.2.15",
26942
+ version: "0.2.16-beta-ca2f5282c7-260921143311",
26944
26943
  platform: "node",
26945
26944
  mode: "backend",
26946
26945
  instanceId
@@ -26951,7 +26950,7 @@ function buildConnectParams(config, instanceId, protocolVersion) {
26951
26950
  commands: [],
26952
26951
  permissions: {},
26953
26952
  locale: Intl.DateTimeFormat().resolvedOptions().locale || "en-US",
26954
- userAgent: `okx-a2a-node/${"0.2.15"}`,
26953
+ userAgent: `okx-a2a-node/${"0.2.16-beta-ca2f5282c7-260921143311"}`,
26955
26954
  auth: {
26956
26955
  ...config.token ? { token: config.token } : {},
26957
26956
  ...config.password ? { password: config.password } : {}
@@ -27646,7 +27645,7 @@ function readSingleActiveOriginSessionKey(env) {
27646
27645
  }
27647
27646
  }
27648
27647
  function resolveTaskHome2(env) {
27649
- return env.OKX_AGENT_TASK_HOME?.trim() || (0, import_node_path16.join)((0, import_node_os6.homedir)(), ".okx-agent-task");
27648
+ return env.OKX_AGENT_TASK_HOME?.trim() || (0, import_node_path16.join)((0, import_node_os5.homedir)(), ".okx-agent-task");
27650
27649
  }
27651
27650
  function logOpenClawRouteSkip(reason, input) {
27652
27651
  if (reason === "missing_gateway_session_key") {
@@ -27687,12 +27686,12 @@ function safeDecode2(value) {
27687
27686
  return value;
27688
27687
  }
27689
27688
  }
27690
- var import_node_fs12, import_node_os6, import_node_path16, CURRENT_GATEWAY_SESSION_KEYS_ENV, NON_DELIVERY_CHANNELS, ACTIVE_ORIGIN_TTL_MS;
27689
+ var import_node_fs12, import_node_os5, import_node_path16, CURRENT_GATEWAY_SESSION_KEYS_ENV, NON_DELIVERY_CHANNELS, ACTIVE_ORIGIN_TTL_MS;
27691
27690
  var init_openclaw_route = __esm({
27692
27691
  "src/openclaw-route.ts"() {
27693
27692
  "use strict";
27694
27693
  import_node_fs12 = require("node:fs");
27695
- import_node_os6 = require("node:os");
27694
+ import_node_os5 = require("node:os");
27696
27695
  import_node_path16 = require("node:path");
27697
27696
  CURRENT_GATEWAY_SESSION_KEYS_ENV = "OKX_A2A_CURRENT_GATEWAY_SESSION_KEYS";
27698
27697
  NON_DELIVERY_CHANNELS = /* @__PURE__ */ new Set(["heartbeat", "cron", "webhook", "voice"]);
@@ -29010,7 +29009,7 @@ var init_sentry_config = __esm({
29010
29009
  environment = process.env.SENTRY_ENV === "dev" ? "dev" : "prod";
29011
29010
  SENTRY_CONFIG = {
29012
29011
  projectName: "okx/openclaw-okx-a2a-extension",
29013
- release: "0.2.15",
29012
+ release: "0.2.16-beta-ca2f5282c7-260921143311",
29014
29013
  environment,
29015
29014
  runtimeContainer: normalizeRuntimeContainer(process.env.OKX_A2A_RUNTIME_CONTAINER)
29016
29015
  };
@@ -39647,7 +39646,7 @@ function providerConfigCandidates(provider, taskHome2) {
39647
39646
  if (provider === "codex") {
39648
39647
  return [
39649
39648
  {
39650
- path: (0, import_node_path21.join)(process.env.CODEX_HOME ?? (0, import_node_path21.join)((0, import_node_os7.homedir)(), ".codex"), "config.toml"),
39649
+ path: (0, import_node_path21.join)(process.env.CODEX_HOME ?? (0, import_node_path21.join)((0, import_node_os6.homedir)(), ".codex"), "config.toml"),
39651
39650
  archiveName: "config.redacted.toml"
39652
39651
  }
39653
39652
  ];
@@ -39655,7 +39654,7 @@ function providerConfigCandidates(provider, taskHome2) {
39655
39654
  if (provider === "claude") {
39656
39655
  return [
39657
39656
  {
39658
- path: (0, import_node_path21.join)((0, import_node_os7.homedir)(), ".claude", "settings.json"),
39657
+ path: (0, import_node_path21.join)((0, import_node_os6.homedir)(), ".claude", "settings.json"),
39659
39658
  archiveName: "settings.redacted.json"
39660
39659
  },
39661
39660
  {
@@ -39686,10 +39685,10 @@ function providerConfigCandidates(provider, taskHome2) {
39686
39685
  }
39687
39686
  function resolveOpenClawStateDir() {
39688
39687
  const configured = process.env.OPENCLAW_STATE_DIR?.trim() || process.env.OPENCLAW_HOME?.trim();
39689
- return (0, import_node_path21.resolve)(configured || (0, import_node_path21.join)((0, import_node_os7.homedir)(), ".openclaw"));
39688
+ return (0, import_node_path21.resolve)(configured || (0, import_node_path21.join)((0, import_node_os6.homedir)(), ".openclaw"));
39690
39689
  }
39691
39690
  function resolveHermesHome() {
39692
- return (0, import_node_path21.resolve)(process.env.HERMES_HOME?.trim() || (0, import_node_path21.join)((0, import_node_os7.homedir)(), ".hermes"));
39691
+ return (0, import_node_path21.resolve)(process.env.HERMES_HOME?.trim() || (0, import_node_path21.join)((0, import_node_os6.homedir)(), ".hermes"));
39693
39692
  }
39694
39693
  function providerEnvironment(provider) {
39695
39694
  const prefixes = provider === "codex" ? ["OKX_A2A_AI_CODEX_", "CODEX_"] : provider === "claude" ? ["OKX_A2A_AI_CLAUDE_", "ANTHROPIC_MODEL", "CLAUDE_"] : provider === "openclaw" ? ["OPENCLAW_", "OKX_A2A_OPENCLAW_"] : ["HERMES_", "OKX_A2A_HERMES_"];
@@ -39734,12 +39733,12 @@ function probeVersion(command) {
39734
39733
  function isProvider2(value) {
39735
39734
  return typeof value === "string" && PROVIDERS2.includes(value);
39736
39735
  }
39737
- var import_node_child_process6, import_node_os7, import_node_path21, PROVIDERS2;
39736
+ var import_node_child_process6, import_node_os6, import_node_path21, PROVIDERS2;
39738
39737
  var init_logs_export_provider = __esm({
39739
39738
  "src/logs-export-provider.ts"() {
39740
39739
  "use strict";
39741
39740
  import_node_child_process6 = require("node:child_process");
39742
- import_node_os7 = require("node:os");
39741
+ import_node_os6 = require("node:os");
39743
39742
  import_node_path21 = require("node:path");
39744
39743
  init_logs_export_filter();
39745
39744
  PROVIDERS2 = ["codex", "claude", "openclaw", "hermes"];
@@ -40180,7 +40179,7 @@ async function exportDiagnosticLogs(options) {
40180
40179
  node: process.version,
40181
40180
  platform: process.platform,
40182
40181
  arch: process.arch,
40183
- packageVersion: true ? "0.2.15" : "unknown",
40182
+ packageVersion: true ? "0.2.16-beta-ca2f5282c7-260921143311" : "unknown",
40184
40183
  sensitiveContentIncluded: options.includeSensitiveContent,
40185
40184
  listenerAndLlmContentIncluded: true,
40186
40185
  credentialsAlwaysRedacted: true,
@@ -40521,7 +40520,7 @@ async function collectCommands(state, paths, options) {
40521
40520
  }
40522
40521
  async function collectOnchainAudit(state, options, correlationIds) {
40523
40522
  await runCollector(state, "onchainos-audit", async () => {
40524
- const onchainHome = process.env.ONCHAINOS_HOME?.trim() ? (0, import_node_path23.resolve)(process.env.ONCHAINOS_HOME) : (0, import_node_path23.join)((0, import_node_os8.homedir)(), ".onchainos");
40523
+ const onchainHome = process.env.ONCHAINOS_HOME?.trim() ? (0, import_node_path23.resolve)(process.env.ONCHAINOS_HOME) : (0, import_node_path23.join)((0, import_node_os7.homedir)(), ".onchainos");
40525
40524
  const auditPath = (0, import_node_path23.join)(onchainHome, "audit.jsonl");
40526
40525
  const output5 = await readFilteredLog(
40527
40526
  auditPath,
@@ -41038,14 +41037,14 @@ function readOption(args, name) {
41038
41037
  const index2 = args.indexOf(name);
41039
41038
  return index2 === -1 ? void 0 : args[index2 + 1];
41040
41039
  }
41041
- var import_node_child_process7, import_node_fs19, import_promises11, import_node_os8, import_node_path23, import_jszip, DEFAULT_MAX_SIZE_MB, MAX_HERMES_ROTATED_LOG_FILES, MAX_OPENCLAW_AGENTS, MAX_OPENCLAW_SESSION_FILES, ISO_TIMESTAMP_WITH_ZONE;
41040
+ var import_node_child_process7, import_node_fs19, import_promises11, import_node_os7, import_node_path23, import_jszip, DEFAULT_MAX_SIZE_MB, MAX_HERMES_ROTATED_LOG_FILES, MAX_OPENCLAW_AGENTS, MAX_OPENCLAW_SESSION_FILES, ISO_TIMESTAMP_WITH_ZONE;
41042
41041
  var init_logs_export = __esm({
41043
41042
  "src/logs-export.ts"() {
41044
41043
  "use strict";
41045
41044
  import_node_child_process7 = require("node:child_process");
41046
41045
  import_node_fs19 = require("node:fs");
41047
41046
  import_promises11 = require("node:fs/promises");
41048
- import_node_os8 = require("node:os");
41047
+ import_node_os7 = require("node:os");
41049
41048
  import_node_path23 = require("node:path");
41050
41049
  import_jszip = __toESM(require_lib3());
41051
41050
  init_logs_export_archive();
@@ -63207,10 +63206,10 @@ function readCodexAddDirs(env = process.env) {
63207
63206
  }
63208
63207
  function expandHomePath(value) {
63209
63208
  if (value === "~") {
63210
- return (0, import_node_os9.homedir)();
63209
+ return (0, import_node_os8.homedir)();
63211
63210
  }
63212
63211
  if (value.startsWith("~/")) {
63213
- return (0, import_node_path30.join)((0, import_node_os9.homedir)(), value.slice(2));
63212
+ return (0, import_node_path30.join)((0, import_node_os8.homedir)(), value.slice(2));
63214
63213
  }
63215
63214
  return value;
63216
63215
  }
@@ -63427,7 +63426,7 @@ function formatOpenClawSessionKey(sessionKey, agentId) {
63427
63426
  function buildClaudeAddDirArgs(homeDir, env) {
63428
63427
  const dirs = [
63429
63428
  homeDir,
63430
- (0, import_node_path30.join)((0, import_node_os9.homedir)(), ".agents"),
63429
+ (0, import_node_path30.join)((0, import_node_os8.homedir)(), ".agents"),
63431
63430
  (0, import_node_path30.join)(__dirname, ".."),
63432
63431
  ...env.OKX_A2A_AI_CLAUDE_ADD_DIRS ? env.OKX_A2A_AI_CLAUDE_ADD_DIRS.split(import_node_path30.delimiter).filter(Boolean) : []
63433
63432
  ];
@@ -63484,12 +63483,12 @@ function applyArgTemplate(template, options) {
63484
63483
  return arg.replaceAll("{prompt}", options.prompt).replaceAll("{sessionId}", options.sessionId ?? "").replaceAll("{homeDir}", homeDir).replaceAll("{cwd}", cwd).replaceAll("{repoCli}", (0, import_node_path30.join)(__dirname, "cli.js"));
63485
63484
  });
63486
63485
  }
63487
- var import_node_os9, import_node_path30, CLAUDE_ALLOWED_TOOLS, CLAUDE_PERMISSION_MODES, CODEX_SANDBOX_MODES, CODEX_APPROVAL_POLICIES;
63486
+ var import_node_os8, import_node_path30, CLAUDE_ALLOWED_TOOLS, CLAUDE_PERMISSION_MODES, CODEX_SANDBOX_MODES, CODEX_APPROVAL_POLICIES;
63488
63487
  var init_ai_adapter = __esm({
63489
63488
  "src/ai-adapter.ts"() {
63490
63489
  "use strict";
63491
63490
  init_log();
63492
- import_node_os9 = require("node:os");
63491
+ import_node_os8 = require("node:os");
63493
63492
  import_node_path30 = require("node:path");
63494
63493
  init_ai_command();
63495
63494
  init_paths();
@@ -63970,7 +63969,7 @@ function extractDeniedFilesystemPath(text) {
63970
63969
  }
63971
63970
  function getPreferredCodexWritableRoot(target) {
63972
63971
  const expanded = expandHomePath2(target);
63973
- const home = (0, import_node_os10.homedir)();
63972
+ const home = (0, import_node_os9.homedir)();
63974
63973
  const appRoots = [
63975
63974
  (0, import_node_path31.join)(home, ".onchainos", "task"),
63976
63975
  (0, import_node_path31.join)(home, ".onchainos", "deliverables"),
@@ -63989,16 +63988,16 @@ function inferAppOwnedCodexWritableRoot(failure) {
63989
63988
  return void 0;
63990
63989
  }
63991
63990
  if (containsOnchainosCommand(command) && /\b0x[0-9a-fA-F]{16,}\b/.test(command)) {
63992
- return (0, import_node_path31.join)((0, import_node_os10.homedir)(), ".onchainos", "task");
63991
+ return (0, import_node_path31.join)((0, import_node_os9.homedir)(), ".onchainos", "task");
63993
63992
  }
63994
63993
  return void 0;
63995
63994
  }
63996
63995
  function expandHomePath2(value) {
63997
63996
  if (value === "~") {
63998
- return (0, import_node_os10.homedir)();
63997
+ return (0, import_node_os9.homedir)();
63999
63998
  }
64000
63999
  if (value.startsWith("~/")) {
64001
- return (0, import_node_path31.join)((0, import_node_os10.homedir)(), value.slice(2));
64000
+ return (0, import_node_path31.join)((0, import_node_os9.homedir)(), value.slice(2));
64002
64001
  }
64003
64002
  return value;
64004
64003
  }
@@ -64983,7 +64982,7 @@ function shortenJobId2(jobId) {
64983
64982
  }
64984
64983
  return `${jobId.slice(0, 6)}\u2026${jobId.slice(-4)}`;
64985
64984
  }
64986
- var import_node_crypto13, import_node_fs26, import_promises12, import_node_os10, import_node_path31, AiRunner, CODEX_TOOL_FAILURE_MARKER;
64985
+ var import_node_crypto13, import_node_fs26, import_promises12, import_node_os9, import_node_path31, AiRunner, CODEX_TOOL_FAILURE_MARKER;
64987
64986
  var init_ai_runner = __esm({
64988
64987
  "src/ai-runner.ts"() {
64989
64988
  "use strict";
@@ -64991,7 +64990,7 @@ var init_ai_runner = __esm({
64991
64990
  import_node_crypto13 = require("node:crypto");
64992
64991
  import_node_fs26 = require("node:fs");
64993
64992
  import_promises12 = require("node:fs/promises");
64994
- import_node_os10 = require("node:os");
64993
+ import_node_os9 = require("node:os");
64995
64994
  import_node_path31 = require("node:path");
64996
64995
  init_ai_command();
64997
64996
  init_paths();
@@ -65781,7 +65780,7 @@ var init_ai_runner = __esm({
65781
65780
  process.env.OKX_AGENT_TASK_AI_CWD,
65782
65781
  this.sessionStore.getSetting("ai_working_dir"),
65783
65782
  safeProcessCwd(),
65784
- (0, import_node_os10.homedir)(),
65783
+ (0, import_node_os9.homedir)(),
65785
65784
  this.homeDir
65786
65785
  ];
65787
65786
  return candidates.find((candidate) => !!candidate && isDirectory(candidate)) ?? this.homeDir;
@@ -69449,7 +69448,7 @@ async function isGatewayAvailableForHeartbeat(options) {
69449
69448
  }
69450
69449
  async function getHermesGatewayPluginStatus(options = {}) {
69451
69450
  const env = options.env ?? process.env;
69452
- const hermesHome = env.HERMES_HOME?.trim() || (0, import_node_path32.join)((0, import_node_os11.homedir)(), ".hermes");
69451
+ const hermesHome = env.HERMES_HOME?.trim() || (0, import_node_path32.join)((0, import_node_os10.homedir)(), ".hermes");
69453
69452
  const pluginYamlPath = (0, import_node_path32.join)(hermesHome, "plugins", "platforms", "okx-a2a", "plugin.yaml");
69454
69453
  if (!(0, import_node_fs27.existsSync)(pluginYamlPath)) {
69455
69454
  return { enabled: false, reason: "plugin_yaml_missing", hermesHome, checkedPath: pluginYamlPath };
@@ -69564,14 +69563,14 @@ async function runListener(options = {}) {
69564
69563
  const evictedPid = await claimActiveDaemon(paths.homeDir);
69565
69564
  if (evictedPid !== null) {
69566
69565
  logWithTimestamp(
69567
- `[okx-agent-task] stopped previous daemon pid=${evictedPid} serving another task home (single-daemon policy)`
69566
+ `[okx-agent-task] stopped previous daemon pid=${evictedPid} for home=${paths.homeDir} (single-daemon-per-task-home policy)`
69568
69567
  );
69569
69568
  }
69570
69569
  try {
69571
69570
  await runListenerWithLock(options, paths);
69572
69571
  } finally {
69573
69572
  await daemonLock.release();
69574
- await releaseActiveDaemon();
69573
+ await releaseActiveDaemon(paths.homeDir);
69575
69574
  }
69576
69575
  }
69577
69576
  async function runListenerWithLock(options, paths) {
@@ -69686,12 +69685,12 @@ async function runListenerWithLock(options, paths) {
69686
69685
  });
69687
69686
  }
69688
69687
  });
69689
- service.setPluginVersion("0.2.15");
69688
+ service.setPluginVersion("0.2.16-beta-ca2f5282c7-260921143311");
69690
69689
  await service.init();
69691
69690
  const pluginVersionStatus = service.pluginVersionStatus;
69692
69691
  if (pluginVersionStatus.unavailable) {
69693
69692
  throw new Error(
69694
- `@okxweb3/a2a-node v${"0.2.15"} is below the required minimum v${pluginVersionStatus.minVersion}`
69693
+ `@okxweb3/a2a-node v${"0.2.16-beta-ca2f5282c7-260921143311"} is below the required minimum v${pluginVersionStatus.minVersion}`
69695
69694
  );
69696
69695
  }
69697
69696
  const systemConfig = service.getSystemConfig();
@@ -69719,7 +69718,7 @@ async function runListenerWithLock(options, paths) {
69719
69718
  onchainosAgentId: "*",
69720
69719
  reason: "system-config missing sentryDsn",
69721
69720
  pluginId: "@okxweb3/a2a-node",
69722
- pluginVersion: "0.2.15"
69721
+ pluginVersion: "0.2.16-beta-ca2f5282c7-260921143311"
69723
69722
  });
69724
69723
  }
69725
69724
  logWithTimestamp(
@@ -70069,14 +70068,14 @@ async function timeSettled(fn) {
70069
70068
  return { durationMs: Date.now() - startedAt, error };
70070
70069
  }
70071
70070
  }
70072
- var import_node_fs27, import_promises13, import_node_os11, import_node_path32, DEFAULT_OFFLINE_REPLAY_INTERVAL_SEC, DEFAULT_XMTP_CLIENT_RECYCLE_INTERVAL_SEC, XMTP_CLIENT_RECYCLE_INTERVAL_ENV, HEARTBEAT_GATEWAY_CHECK_TIMEOUT_MS, AUTH_RECOVERY_PROBE_INTERVAL_MS, AUTH_RECOVERY_REFRESH_BACKOFF_MS, AgentRefreshAuthGate, AgentRefreshCoordinator, ListenerDeferredTaskScheduler, ListenerMaintenanceGate, UPGRADE_RECOMMENDATION_IDEMPOTENCY_KEY, SHUTDOWN_FORCE_RESOLVE_MS;
70071
+ var import_node_fs27, import_promises13, import_node_os10, import_node_path32, DEFAULT_OFFLINE_REPLAY_INTERVAL_SEC, DEFAULT_XMTP_CLIENT_RECYCLE_INTERVAL_SEC, XMTP_CLIENT_RECYCLE_INTERVAL_ENV, HEARTBEAT_GATEWAY_CHECK_TIMEOUT_MS, AUTH_RECOVERY_PROBE_INTERVAL_MS, AUTH_RECOVERY_REFRESH_BACKOFF_MS, AgentRefreshAuthGate, AgentRefreshCoordinator, ListenerDeferredTaskScheduler, ListenerMaintenanceGate, UPGRADE_RECOMMENDATION_IDEMPOTENCY_KEY, SHUTDOWN_FORCE_RESOLVE_MS;
70073
70072
  var init_listener = __esm({
70074
70073
  "src/listener.ts"() {
70075
70074
  "use strict";
70076
70075
  init_log();
70077
70076
  import_node_fs27 = require("node:fs");
70078
70077
  import_promises13 = require("node:fs/promises");
70079
- import_node_os11 = require("node:os");
70078
+ import_node_os10 = require("node:os");
70080
70079
  import_node_path32 = require("node:path");
70081
70080
  init_onchainos();
70082
70081
  init_system_config();
@@ -114163,7 +114162,7 @@ function getUnsafeFileUploadReason(filePath, sensitiveUploadReg = []) {
114163
114162
  if (configuredRule) {
114164
114163
  return `SENSITIVE_UPLOAD_REG:${configuredRule}`;
114165
114164
  }
114166
- const home = safeRealpath((0, import_node_os12.homedir)());
114165
+ const home = safeRealpath((0, import_node_os11.homedir)());
114167
114166
  if (!home) {
114168
114167
  return null;
114169
114168
  }
@@ -114200,10 +114199,10 @@ function matchSensitiveUploadReg(paths, patterns) {
114200
114199
  }
114201
114200
  function expandHome(filePath) {
114202
114201
  if (filePath === "~") {
114203
- return (0, import_node_os12.homedir)();
114202
+ return (0, import_node_os11.homedir)();
114204
114203
  }
114205
114204
  if (filePath.startsWith(`~${import_node_path34.sep}`)) {
114206
- return (0, import_node_path34.join)((0, import_node_os12.homedir)(), filePath.slice(2));
114205
+ return (0, import_node_path34.join)((0, import_node_os11.homedir)(), filePath.slice(2));
114207
114206
  }
114208
114207
  return filePath;
114209
114208
  }
@@ -114216,12 +114215,12 @@ function safeRealpath(path2) {
114216
114215
  function isPathInside(target, dir) {
114217
114216
  return target === dir || target.startsWith(`${dir}${import_node_path34.sep}`);
114218
114217
  }
114219
- var import_node_fs28, import_node_os12, import_node_path34, SENSITIVE_HOME_DIRS, SENSITIVE_HOME_FILES, UNSAFE_FILE_UPLOAD_MESSAGE;
114218
+ var import_node_fs28, import_node_os11, import_node_path34, SENSITIVE_HOME_DIRS, SENSITIVE_HOME_FILES, UNSAFE_FILE_UPLOAD_MESSAGE;
114220
114219
  var init_file_upload_safety = __esm({
114221
114220
  "../core/src/file-upload-safety.ts"() {
114222
114221
  "use strict";
114223
114222
  import_node_fs28 = require("node:fs");
114224
- import_node_os12 = require("node:os");
114223
+ import_node_os11 = require("node:os");
114225
114224
  import_node_path34 = require("node:path");
114226
114225
  SENSITIVE_HOME_DIRS = [
114227
114226
  ".ssh",
@@ -117218,7 +117217,7 @@ async function installWindowsNativeLauncher(options) {
117218
117217
  }
117219
117218
  const exePath = (0, import_node_path36.join)(options.targetDir, NATIVE_LAUNCHER_EXE_NAME);
117220
117219
  (0, import_node_fs30.mkdirSync)(options.targetDir, { recursive: true });
117221
- const work = (0, import_node_fs30.mkdtempSync)((0, import_node_path36.join)((0, import_node_os13.tmpdir)(), "okx-a2a-sea-"));
117220
+ const work = (0, import_node_fs30.mkdtempSync)((0, import_node_path36.join)((0, import_node_os12.tmpdir)(), "okx-a2a-sea-"));
117222
117221
  try {
117223
117222
  const entryPath = (0, import_node_path36.join)(work, "launcher-entry.js");
117224
117223
  const blobPath = (0, import_node_path36.join)(work, "okx-a2a.blob");
@@ -117292,18 +117291,18 @@ async function ensureWindowsNativeLauncher(options = {}) {
117292
117291
  if (existing) {
117293
117292
  return { exePath: existing, installed: false };
117294
117293
  }
117295
- const targetDir = env.APPDATA ? (0, import_node_path36.join)(env.APPDATA, "npm") : (0, import_node_path36.join)(env.USERPROFILE ?? (0, import_node_os13.homedir)(), ".local", "bin");
117294
+ const targetDir = env.APPDATA ? (0, import_node_path36.join)(env.APPDATA, "npm") : (0, import_node_path36.join)(env.USERPROFILE ?? (0, import_node_os12.homedir)(), ".local", "bin");
117296
117295
  const result = await installWindowsNativeLauncher({ cliPath: resolveRunningCliPath(), targetDir });
117297
117296
  return { exePath: result.exePath, installed: true };
117298
117297
  }
117299
- var import_node_child_process9, import_node_fs30, import_node_module, import_node_os13, import_node_path36, SEA_SENTINEL_FUSE, NATIVE_LAUNCHER_EXE_NAME, POSTJECT_SPEC, POSTJECT_BIN;
117298
+ var import_node_child_process9, import_node_fs30, import_node_module, import_node_os12, import_node_path36, SEA_SENTINEL_FUSE, NATIVE_LAUNCHER_EXE_NAME, POSTJECT_SPEC, POSTJECT_BIN;
117300
117299
  var init_win_native_launcher = __esm({
117301
117300
  "src/win-native-launcher.ts"() {
117302
117301
  "use strict";
117303
117302
  import_node_child_process9 = require("node:child_process");
117304
117303
  import_node_fs30 = require("node:fs");
117305
117304
  import_node_module = require("node:module");
117306
- import_node_os13 = require("node:os");
117305
+ import_node_os12 = require("node:os");
117307
117306
  import_node_path36 = require("node:path");
117308
117307
  init_win_compat();
117309
117308
  init_win_spawn();
@@ -118061,7 +118060,7 @@ async function getCurrentNodeCliVersion() {
118061
118060
  return await getGlobalNpmPackageVersion(UPDATE_PACKAGES.node) ?? getBundledNodeCliVersion();
118062
118061
  }
118063
118062
  function getBundledNodeCliVersion() {
118064
- return true ? "0.2.15" : null;
118063
+ return true ? "0.2.16-beta-ca2f5282c7-260921143311" : null;
118065
118064
  }
118066
118065
  function readConfiguredAiProvider() {
118067
118066
  const explicit = process.env.OKX_A2A_AI_PROVIDER || process.env.OKX_AGENT_TASK_AI_CLI;
@@ -118246,7 +118245,7 @@ async function updateHermes(release, options) {
118246
118245
  assertNotRunningInsideGateway("hermes");
118247
118246
  }
118248
118247
  const spec = buildNpmPackageSpec("hermes", release);
118249
- const workDir = await (0, import_promises15.mkdtemp)((0, import_node_path37.join)((0, import_node_os14.tmpdir)(), `okx-a2a-${label}-hermes-`));
118248
+ const workDir = await (0, import_promises15.mkdtemp)((0, import_node_path37.join)((0, import_node_os13.tmpdir)(), `okx-a2a-${label}-hermes-`));
118250
118249
  try {
118251
118250
  console.log(`[${label}] downloading ${spec}`);
118252
118251
  const npmTarball = await npmPack(spec, workDir);
@@ -118271,7 +118270,7 @@ async function updateHermes(release, options) {
118271
118270
  }
118272
118271
  }
118273
118272
  async function installGatewayPluginForDoctor(target) {
118274
- const release = isPrereleaseVersion("0.2.15") ? "beta" : "latest";
118273
+ const release = isPrereleaseVersion("0.2.16-beta-ca2f5282c7-260921143311") ? "beta" : "latest";
118275
118274
  const insideTargetGateway = detectGatewayInvocation() === target;
118276
118275
  const options = {
118277
118276
  restart: !insideTargetGateway,
@@ -118562,7 +118561,7 @@ function findFirstEnabledListItem(lines, startIndex, enabledIndent) {
118562
118561
  return null;
118563
118562
  }
118564
118563
  function resolveHermesConfigPath() {
118565
- return (0, import_node_path37.join)(process.env.HERMES_HOME ?? (0, import_node_path37.join)((0, import_node_os14.homedir)(), ".hermes"), "config.yaml");
118564
+ return (0, import_node_path37.join)(process.env.HERMES_HOME ?? (0, import_node_path37.join)((0, import_node_os13.homedir)(), ".hermes"), "config.yaml");
118566
118565
  }
118567
118566
  function lineIndent(line) {
118568
118567
  const match = line.match(/^\s*/);
@@ -118640,7 +118639,7 @@ async function assertGatewayPluginInstalled(target) {
118640
118639
  );
118641
118640
  }
118642
118641
  function resolveHermesPluginYamlPath() {
118643
- return (0, import_node_path37.join)(process.env.HERMES_HOME ?? (0, import_node_path37.join)((0, import_node_os14.homedir)(), ".hermes"), "plugins", "platforms", "okx-a2a", "plugin.yaml");
118642
+ return (0, import_node_path37.join)(process.env.HERMES_HOME ?? (0, import_node_path37.join)((0, import_node_os13.homedir)(), ".hermes"), "plugins", "platforms", "okx-a2a", "plugin.yaml");
118644
118643
  }
118645
118644
  async function isGatewayPluginInstalled(target) {
118646
118645
  if (target === "openclaw") {
@@ -118733,7 +118732,7 @@ function parsePackageVersionFromText(output5) {
118733
118732
  return output5.match(/@okxweb3\/a2a-openclaw@([0-9A-Za-z.+-]+)/)?.[1] ?? null;
118734
118733
  }
118735
118734
  async function getInstalledHermesPluginVersion() {
118736
- const pluginYaml = (0, import_node_path37.join)(process.env.HERMES_HOME ?? (0, import_node_path37.join)((0, import_node_os14.homedir)(), ".hermes"), "plugins", "platforms", "okx-a2a", "plugin.yaml");
118735
+ const pluginYaml = (0, import_node_path37.join)(process.env.HERMES_HOME ?? (0, import_node_path37.join)((0, import_node_os13.homedir)(), ".hermes"), "plugins", "platforms", "okx-a2a", "plugin.yaml");
118737
118736
  try {
118738
118737
  const content2 = await (0, import_promises15.readFile)(pluginYaml, "utf8");
118739
118738
  return parsePluginYamlVersion(content2);
@@ -119028,14 +119027,14 @@ function buildExternalCommandInvocation(command, args, platform = process.platfo
119028
119027
  function formatExternalCommand(command, args) {
119029
119028
  return [command, ...args].join(" ");
119030
119029
  }
119031
- var import_node_child_process10, import_node_fs31, import_promises15, import_node_os14, import_node_path37, UPDATE_PACKAGES, CODEX_NPM_PACKAGE, OPENCLAW_FORCE_INSTALL_FLAG, OPENCLAW_UNSAFE_INSTALL_FLAG, OKX_A2A_PLUGIN_ID, OPENCLAW_SESSION_DM_SCOPE_CONFIG_PATH, OPENCLAW_SESSION_DM_SCOPE_CONFIG_VALUE, OPENCLAW_PLUGIN_ALLOW_CONFIG_PATH, OPENCLAW_OKX_A2A_CONVERSATION_HOOK_ACCESS_CONFIG_PATH, DEFAULT_AI_PROVIDER_LOGIN_TIMEOUT_MS, PROVIDER_CLI_AUTH_PROBE_TIMEOUT_MS, SetupBlockedError, redirectCommandStdoutToStderr;
119030
+ var import_node_child_process10, import_node_fs31, import_promises15, import_node_os13, import_node_path37, UPDATE_PACKAGES, CODEX_NPM_PACKAGE, OPENCLAW_FORCE_INSTALL_FLAG, OPENCLAW_UNSAFE_INSTALL_FLAG, OKX_A2A_PLUGIN_ID, OPENCLAW_SESSION_DM_SCOPE_CONFIG_PATH, OPENCLAW_SESSION_DM_SCOPE_CONFIG_VALUE, OPENCLAW_PLUGIN_ALLOW_CONFIG_PATH, OPENCLAW_OKX_A2A_CONVERSATION_HOOK_ACCESS_CONFIG_PATH, DEFAULT_AI_PROVIDER_LOGIN_TIMEOUT_MS, PROVIDER_CLI_AUTH_PROBE_TIMEOUT_MS, SetupBlockedError, redirectCommandStdoutToStderr;
119032
119031
  var init_update_cli = __esm({
119033
119032
  "src/update-cli.ts"() {
119034
119033
  "use strict";
119035
119034
  import_node_child_process10 = require("node:child_process");
119036
119035
  import_node_fs31 = require("node:fs");
119037
119036
  import_promises15 = require("node:fs/promises");
119038
- import_node_os14 = require("node:os");
119037
+ import_node_os13 = require("node:os");
119039
119038
  import_node_path37 = require("node:path");
119040
119039
  init_ai_command();
119041
119040
  init_win_spawn();
@@ -119324,7 +119323,7 @@ async function runDoctor(options = {}) {
119324
119323
  platform: options.platform ?? process.platform,
119325
119324
  env: options.env ?? process.env,
119326
119325
  target: options.target ?? resolveDoctorTarget(options.env ?? process.env),
119327
- cliVersion: options.cliVersion ?? (true ? "0.2.15" : "0.0.0"),
119326
+ cliVersion: options.cliVersion ?? (true ? "0.2.16-beta-ca2f5282c7-260921143311" : "0.0.0"),
119328
119327
  fixMode: options.fix === true,
119329
119328
  nonInteractive: options.nonInteractive === true,
119330
119329
  packageChanged: false,
@@ -120362,7 +120361,7 @@ var init_doctor_cli = __esm({
120362
120361
 
120363
120362
  // src/cli.ts
120364
120363
  var import_node_fs32 = require("node:fs");
120365
- var import_node_os15 = require("node:os");
120364
+ var import_node_os14 = require("node:os");
120366
120365
  var import_node_path39 = require("node:path");
120367
120366
  init_daemon();
120368
120367
  init_command_store();
@@ -120431,7 +120430,7 @@ init_sentry_config();
120431
120430
  init_runtime_metadata();
120432
120431
  var CURRENT_GATEWAY_SESSION_KEYS_ENV4 = "OKX_A2A_CURRENT_GATEWAY_SESSION_KEYS";
120433
120432
  function printUsage3() {
120434
- console.log(`okx-a2a ${"0.2.15"}
120433
+ console.log(`okx-a2a ${"0.2.16-beta-ca2f5282c7-260921143311"}
120435
120434
 
120436
120435
  Usage:
120437
120436
  okx-a2a <command> [options]
@@ -120473,7 +120472,7 @@ Run \`okx-a2a <command> -h\` for command-specific help.
120473
120472
  `);
120474
120473
  }
120475
120474
  function printVersion() {
120476
- console.log("0.2.15");
120475
+ console.log("0.2.16-beta-ca2f5282c7-260921143311");
120477
120476
  }
120478
120477
  function printDaemonUsage() {
120479
120478
  console.log(`Usage: okx-a2a daemon <start|restart|stop|status|autostart> [options]
@@ -120489,6 +120488,11 @@ Commands:
120489
120488
  Print writer process status
120490
120489
  daemon autostart <install|uninstall|status>
120491
120490
  Manage OS autostart for okx-a2a run
120491
+
120492
+ Note: OKX_AGENT_TASK_HOME isolates each task home's local daemon state (pid, lock,
120493
+ logs, sqlite, xmtp) so daemons under different task homes run concurrently.
120494
+ This is LOCAL-STATE isolation only \u2014 it does not make it safe to run two
120495
+ daemons for the same real agent; use isolated test accounts/agents for that.
120492
120496
  `);
120493
120497
  }
120494
120498
  function printLogsUsage() {
@@ -121844,7 +121848,7 @@ function resolveTaskHomeForSentryConfig() {
121844
121848
  return process.env.OKX_AGENT_TASK_HOME;
121845
121849
  }
121846
121850
  try {
121847
- const home = (0, import_node_os15.homedir)();
121851
+ const home = (0, import_node_os14.homedir)();
121848
121852
  if (home) {
121849
121853
  return (0, import_node_path39.join)(home, ".okx-agent-task");
121850
121854
  }
@@ -121963,7 +121967,7 @@ async function main() {
121963
121967
  if (command === "xmtp-test") {
121964
121968
  const { handleXmtpTestCommand: handleXmtpTestCommand2 } = await Promise.resolve().then(() => (init_xmtp_test_cli(), xmtp_test_cli_exports));
121965
121969
  await handleXmtpTestCommand2(process.argv.slice(3), {
121966
- packageVersion: "0.2.15",
121970
+ packageVersion: "0.2.16-beta-ca2f5282c7-260921143311",
121967
121971
  agentSdkVersion: "2.3.0",
121968
121972
  nodeSdkVersion: "6.1.0",
121969
121973
  nodeBindingsVersion: "1.11.0"
package/dist/index.js CHANGED
@@ -1851,12 +1851,12 @@ async function acquireDaemonLock(paths, entry) {
1851
1851
  }
1852
1852
  return null;
1853
1853
  }
1854
- function activeDaemonPointerPath() {
1855
- return (0, import_node_path4.join)((0, import_node_os2.homedir)(), ".okx-agent-task", "run", "active-daemon.json");
1854
+ function activeDaemonPointerPath(homeDir = resolveA2aTaskHome()) {
1855
+ return (0, import_node_path4.join)(homeDir, "run", "active-daemon.json");
1856
1856
  }
1857
- async function readActiveDaemonPointer() {
1857
+ async function readActiveDaemonPointer(homeDir = resolveA2aTaskHome()) {
1858
1858
  try {
1859
- const raw = await (0, import_promises.readFile)(activeDaemonPointerPath(), "utf8");
1859
+ const raw = await (0, import_promises.readFile)(activeDaemonPointerPath(homeDir), "utf8");
1860
1860
  const parsed = JSON.parse(raw);
1861
1861
  return Number.isInteger(parsed.pid) && parsed.pid > 0 ? parsed : null;
1862
1862
  } catch {
@@ -1865,14 +1865,14 @@ async function readActiveDaemonPointer() {
1865
1865
  }
1866
1866
  async function claimActiveDaemon(homeDir) {
1867
1867
  let evictedPid = null;
1868
- const current = await readActiveDaemonPointer();
1868
+ const current = await readActiveDaemonPointer(homeDir);
1869
1869
  if (current && current.pid !== process.pid && isProcessAlive(current.pid)) {
1870
1870
  if (await evictPid(current.pid)) {
1871
1871
  evictedPid = current.pid;
1872
1872
  }
1873
1873
  }
1874
- const pointerPath = activeDaemonPointerPath();
1875
- await (0, import_promises.mkdir)((0, import_node_path4.dirname)(pointerPath), { recursive: true });
1874
+ const pointerPath = activeDaemonPointerPath(homeDir);
1875
+ ensureTaskDir((0, import_node_path4.dirname)(pointerPath));
1876
1876
  await (0, import_promises.writeFile)(pointerPath, `${JSON.stringify({
1877
1877
  pid: process.pid,
1878
1878
  homeDir,
@@ -1881,10 +1881,10 @@ async function claimActiveDaemon(homeDir) {
1881
1881
  `, "utf8");
1882
1882
  return evictedPid;
1883
1883
  }
1884
- async function releaseActiveDaemon() {
1885
- const current = await readActiveDaemonPointer();
1884
+ async function releaseActiveDaemon(homeDir = resolveA2aTaskHome()) {
1885
+ const current = await readActiveDaemonPointer(homeDir);
1886
1886
  if (current?.pid === process.pid) {
1887
- await (0, import_promises.rm)(activeDaemonPointerPath(), { force: true });
1887
+ await (0, import_promises.rm)(activeDaemonPointerPath(homeDir), { force: true });
1888
1888
  }
1889
1889
  }
1890
1890
  async function chmodBestEffort(path2, mode) {
@@ -1897,12 +1897,11 @@ async function chmodBestEffort(path2, mode) {
1897
1897
  }
1898
1898
  }
1899
1899
  }
1900
- var import_promises, import_node_os2, import_node_path4, OWNER_FILE, EMPTY_LOCK_STALE_MS, DEFAULT_TAKEOVER_GRACE_MS, TAKEOVER_GRACE_ENV, TAKEOVER_POLL_MS, DAEMON_CAPABILITY_AI_DISPATCH, DAEMON_CAPABILITIES;
1900
+ var import_promises, import_node_path4, OWNER_FILE, EMPTY_LOCK_STALE_MS, DEFAULT_TAKEOVER_GRACE_MS, TAKEOVER_GRACE_ENV, TAKEOVER_POLL_MS, DAEMON_CAPABILITY_AI_DISPATCH, DAEMON_CAPABILITIES;
1901
1901
  var init_daemon_lock = __esm({
1902
1902
  "src/daemon-lock.ts"() {
1903
1903
  "use strict";
1904
1904
  import_promises = require("node:fs/promises");
1905
- import_node_os2 = require("node:os");
1906
1905
  import_node_path4 = require("node:path");
1907
1906
  init_paths();
1908
1907
  init_a2a_paths();
@@ -2430,7 +2429,7 @@ function collectCodexAppBundledCandidates(env = process.env, platform = process.
2430
2429
  }
2431
2430
  const roots = (env[CODEX_APP_DIRS_ENV] ?? "").split(import_node_path8.delimiter).filter(Boolean);
2432
2431
  if (platform === "darwin") {
2433
- roots.push("/Applications", (0, import_node_path8.join)(env.HOME || (0, import_node_os3.homedir)(), "Applications"));
2432
+ roots.push("/Applications", (0, import_node_path8.join)(env.HOME || (0, import_node_os2.homedir)(), "Applications"));
2434
2433
  }
2435
2434
  const candidates = [];
2436
2435
  const seen = /* @__PURE__ */ new Set();
@@ -2579,7 +2578,7 @@ function findExecutableCandidatesOnPath(command, pathValue, platform) {
2579
2578
  return candidates;
2580
2579
  }
2581
2580
  function fallbackCandidates(command, env, platform = process.platform) {
2582
- const home = (0, import_node_os3.homedir)();
2581
+ const home = (0, import_node_os2.homedir)();
2583
2582
  const dirs = [
2584
2583
  (0, import_node_path8.dirname)(process.execPath),
2585
2584
  (0, import_node_path8.join)(home, ".local", "bin"),
@@ -2598,8 +2597,8 @@ function providerPathDirs(command, env) {
2598
2597
  return [
2599
2598
  (0, import_node_path8.isAbsolute)(command) ? (0, import_node_path8.dirname)(command) : void 0,
2600
2599
  (0, import_node_path8.dirname)(process.execPath),
2601
- (0, import_node_path8.join)((0, import_node_os3.homedir)(), ".local", "bin"),
2602
- (0, import_node_path8.join)((0, import_node_os3.homedir)(), "Library", "pnpm"),
2600
+ (0, import_node_path8.join)((0, import_node_os2.homedir)(), ".local", "bin"),
2601
+ (0, import_node_path8.join)((0, import_node_os2.homedir)(), "Library", "pnpm"),
2603
2602
  env.PNPM_HOME
2604
2603
  ].filter((dir) => !!dir);
2605
2604
  }
@@ -2676,12 +2675,12 @@ function isCodexCommand(command) {
2676
2675
  function isWindowsAppsPath(commandPath) {
2677
2676
  return /(?:^|[\\/])WindowsApps(?:[\\/]|$)/i.test(commandPath);
2678
2677
  }
2679
- var import_node_fs5, import_node_os3, import_node_path8, DEFAULT_AI_PROVIDER_TIMEOUT_MS, CODEX_PROBE_TIMEOUT_MS, CODEX_APP_DIRS_ENV, CODEX_COMMAND_OVERRIDE_ENV;
2678
+ var import_node_fs5, import_node_os2, import_node_path8, DEFAULT_AI_PROVIDER_TIMEOUT_MS, CODEX_PROBE_TIMEOUT_MS, CODEX_APP_DIRS_ENV, CODEX_COMMAND_OVERRIDE_ENV;
2680
2679
  var init_ai_command = __esm({
2681
2680
  "src/ai-command.ts"() {
2682
2681
  "use strict";
2683
2682
  import_node_fs5 = require("node:fs");
2684
- import_node_os3 = require("node:os");
2683
+ import_node_os2 = require("node:os");
2685
2684
  import_node_path8 = require("node:path");
2686
2685
  init_win_spawn();
2687
2686
  DEFAULT_AI_PROVIDER_TIMEOUT_MS = null;
@@ -2729,14 +2728,14 @@ function isSystemdManagerUnavailableMessage(message) {
2729
2728
  function isAutostartManagerUnavailableError(error) {
2730
2729
  return error instanceof AutostartManagerUnavailableError || typeof error === "object" && error !== null && "code" in error && error.code === "AUTOSTART_MANAGER_UNAVAILABLE";
2731
2730
  }
2732
- function resolveSystemdAutostartPaths(home = (0, import_node_os4.homedir)()) {
2731
+ function resolveSystemdAutostartPaths(home = (0, import_node_os3.homedir)()) {
2733
2732
  const serviceDir = (0, import_node_path9.join)(home, ".config", "systemd", "user");
2734
2733
  return {
2735
2734
  serviceDir,
2736
2735
  servicePath: (0, import_node_path9.join)(serviceDir, SERVICE_NAME)
2737
2736
  };
2738
2737
  }
2739
- function resolveLaunchdAutostartPaths(home = (0, import_node_os4.homedir)()) {
2738
+ function resolveLaunchdAutostartPaths(home = (0, import_node_os3.homedir)()) {
2740
2739
  const agentDir = (0, import_node_path9.join)(home, "Library", "LaunchAgents");
2741
2740
  return {
2742
2741
  agentDir,
@@ -2756,13 +2755,13 @@ function resolveCliPath() {
2756
2755
  }
2757
2756
  return (0, import_node_path9.resolve)(entry);
2758
2757
  }
2759
- function requiredServicePathEntries(env = process.env, home = (0, import_node_os4.homedir)(), platform = process.platform) {
2758
+ function requiredServicePathEntries(env = process.env, home = (0, import_node_os3.homedir)(), platform = process.platform) {
2760
2759
  const localBin = (0, import_node_path9.join)(home, ".local", "bin");
2761
2760
  const explicit = env.ONCHAINOS_BIN?.trim();
2762
2761
  const onchainosPath = (explicit ? resolveCommandPath(explicit, env, platform) : null) ?? resolveCommandPath("onchainos", env, platform);
2763
2762
  return [...new Set([onchainosPath ? (0, import_node_path9.dirname)(onchainosPath) : null, localBin].filter((entry) => !!entry))];
2764
2763
  }
2765
- function buildServicePath(env = process.env, home = (0, import_node_os4.homedir)(), platform = process.platform) {
2764
+ function buildServicePath(env = process.env, home = (0, import_node_os3.homedir)(), platform = process.platform) {
2766
2765
  const fallback = "/usr/local/bin:/usr/bin:/bin";
2767
2766
  const entries = (env.PATH?.trim() || fallback).split(import_node_path9.delimiter).filter((entry) => !!entry);
2768
2767
  const preferred = requiredServicePathEntries(env, home, platform);
@@ -2814,7 +2813,7 @@ ${args.map((arg) => ` <string>${escapeXml(arg)}</string>`).join("\n")}
2814
2813
  <key>PATH</key>
2815
2814
  <string>${escapeXml(pathValue)}</string>
2816
2815
  <key>HOME</key>
2817
- <string>${escapeXml((0, import_node_os4.homedir)())}</string>
2816
+ <string>${escapeXml((0, import_node_os3.homedir)())}</string>
2818
2817
  <key>OKX_AGENT_TASK_HOME</key>
2819
2818
  <string>${escapeXml(paths.homeDir)}</string>
2820
2819
  </dict>
@@ -3299,14 +3298,14 @@ function autostartStatus() {
3299
3298
  }
3300
3299
  throw new Error(`autostart is not supported on ${process.platform}`);
3301
3300
  }
3302
- var import_node_child_process3, import_node_fs6, import_promises3, import_node_os4, import_node_path9, import_node_util, execFileAsync, SERVICE_NAME, LAUNCHD_LABEL, LAUNCHD_PLIST_NAME, AutostartManagerUnavailableError;
3301
+ var import_node_child_process3, import_node_fs6, import_promises3, import_node_os3, import_node_path9, import_node_util, execFileAsync, SERVICE_NAME, LAUNCHD_LABEL, LAUNCHD_PLIST_NAME, AutostartManagerUnavailableError;
3303
3302
  var init_autostart = __esm({
3304
3303
  "src/autostart.ts"() {
3305
3304
  "use strict";
3306
3305
  import_node_child_process3 = require("node:child_process");
3307
3306
  import_node_fs6 = require("node:fs");
3308
3307
  import_promises3 = require("node:fs/promises");
3309
- import_node_os4 = require("node:os");
3308
+ import_node_os3 = require("node:os");
3310
3309
  import_node_path9 = require("node:path");
3311
3310
  import_node_util = require("node:util");
3312
3311
  init_autostart_windows();
@@ -3518,7 +3517,7 @@ async function startDaemon(homeDir) {
3518
3517
  }
3519
3518
  function isDefaultTaskHome(homeDir) {
3520
3519
  const target = (0, import_node_path10.resolve)(homeDir ?? resolveTaskHome());
3521
- return target === (0, import_node_path10.resolve)((0, import_node_path10.join)((0, import_node_os5.homedir)(), ".okx-agent-task"));
3520
+ return target === (0, import_node_path10.resolve)((0, import_node_path10.join)((0, import_node_os4.homedir)(), ".okx-agent-task"));
3522
3521
  }
3523
3522
  async function shouldDelegateToSupervisor(homeDir, ops) {
3524
3523
  if (!isDefaultTaskHome(homeDir)) {
@@ -3746,14 +3745,14 @@ function readReadyTimeoutMs(env) {
3746
3745
  function sleep2(ms) {
3747
3746
  return new Promise((resolve11) => setTimeout(resolve11, ms));
3748
3747
  }
3749
- var import_node_fs7, import_promises4, import_node_child_process4, import_node_os5, import_node_path10, STOP_GRACE_MS, FORCE_KILL_GRACE_MS, START_EXIT_CHECK_MS, DEFAULT_READY_TIMEOUT_MS, READY_POLL_MS, DAEMON_READY_TIMEOUT_ENV, SUPERVISOR_START_RUNNING_TIMEOUT_MS, SUPERVISOR_START_POLL_MS;
3748
+ var import_node_fs7, import_promises4, import_node_child_process4, import_node_os4, import_node_path10, STOP_GRACE_MS, FORCE_KILL_GRACE_MS, START_EXIT_CHECK_MS, DEFAULT_READY_TIMEOUT_MS, READY_POLL_MS, DAEMON_READY_TIMEOUT_ENV, SUPERVISOR_START_RUNNING_TIMEOUT_MS, SUPERVISOR_START_POLL_MS;
3750
3749
  var init_daemon = __esm({
3751
3750
  "src/daemon.ts"() {
3752
3751
  "use strict";
3753
3752
  import_node_fs7 = require("node:fs");
3754
3753
  import_promises4 = require("node:fs/promises");
3755
3754
  import_node_child_process4 = require("node:child_process");
3756
- import_node_os5 = require("node:os");
3755
+ import_node_os4 = require("node:os");
3757
3756
  import_node_path10 = require("node:path");
3758
3757
  init_paths();
3759
3758
  init_session_store();
@@ -32449,7 +32448,7 @@ var init_sentry_config = __esm({
32449
32448
  environment = process.env.SENTRY_ENV === "dev" ? "dev" : "prod";
32450
32449
  SENTRY_CONFIG = {
32451
32450
  projectName: "okx/openclaw-okx-a2a-extension",
32452
- release: "0.2.15",
32451
+ release: "0.2.16-beta-ca2f5282c7-260921143311",
32453
32452
  environment,
32454
32453
  runtimeContainer: normalizeRuntimeContainer(process.env.OKX_A2A_RUNTIME_CONTAINER)
32455
32454
  };
@@ -32562,7 +32561,7 @@ async function installWindowsNativeLauncher(options) {
32562
32561
  }
32563
32562
  const exePath = (0, import_node_path28.join)(options.targetDir, NATIVE_LAUNCHER_EXE_NAME);
32564
32563
  (0, import_node_fs21.mkdirSync)(options.targetDir, { recursive: true });
32565
- const work = (0, import_node_fs21.mkdtempSync)((0, import_node_path28.join)((0, import_node_os10.tmpdir)(), "okx-a2a-sea-"));
32564
+ const work = (0, import_node_fs21.mkdtempSync)((0, import_node_path28.join)((0, import_node_os9.tmpdir)(), "okx-a2a-sea-"));
32566
32565
  try {
32567
32566
  const entryPath = (0, import_node_path28.join)(work, "launcher-entry.js");
32568
32567
  const blobPath = (0, import_node_path28.join)(work, "okx-a2a.blob");
@@ -32636,18 +32635,18 @@ async function ensureWindowsNativeLauncher(options = {}) {
32636
32635
  if (existing) {
32637
32636
  return { exePath: existing, installed: false };
32638
32637
  }
32639
- const targetDir = env.APPDATA ? (0, import_node_path28.join)(env.APPDATA, "npm") : (0, import_node_path28.join)(env.USERPROFILE ?? (0, import_node_os10.homedir)(), ".local", "bin");
32638
+ const targetDir = env.APPDATA ? (0, import_node_path28.join)(env.APPDATA, "npm") : (0, import_node_path28.join)(env.USERPROFILE ?? (0, import_node_os9.homedir)(), ".local", "bin");
32640
32639
  const result = await installWindowsNativeLauncher({ cliPath: resolveRunningCliPath(), targetDir });
32641
32640
  return { exePath: result.exePath, installed: true };
32642
32641
  }
32643
- var import_node_child_process7, import_node_fs21, import_node_module, import_node_os10, import_node_path28, SEA_SENTINEL_FUSE, NATIVE_LAUNCHER_EXE_NAME, POSTJECT_SPEC, POSTJECT_BIN;
32642
+ var import_node_child_process7, import_node_fs21, import_node_module, import_node_os9, import_node_path28, SEA_SENTINEL_FUSE, NATIVE_LAUNCHER_EXE_NAME, POSTJECT_SPEC, POSTJECT_BIN;
32644
32643
  var init_win_native_launcher = __esm({
32645
32644
  "src/win-native-launcher.ts"() {
32646
32645
  "use strict";
32647
32646
  import_node_child_process7 = require("node:child_process");
32648
32647
  import_node_fs21 = require("node:fs");
32649
32648
  import_node_module = require("node:module");
32650
- import_node_os10 = require("node:os");
32649
+ import_node_os9 = require("node:os");
32651
32650
  import_node_path28 = require("node:path");
32652
32651
  init_win_compat();
32653
32652
  init_win_spawn();
@@ -33405,7 +33404,7 @@ async function getCurrentNodeCliVersion() {
33405
33404
  return await getGlobalNpmPackageVersion(UPDATE_PACKAGES.node) ?? getBundledNodeCliVersion();
33406
33405
  }
33407
33406
  function getBundledNodeCliVersion() {
33408
- return true ? "0.2.15" : null;
33407
+ return true ? "0.2.16-beta-ca2f5282c7-260921143311" : null;
33409
33408
  }
33410
33409
  function readConfiguredAiProvider() {
33411
33410
  const explicit = process.env.OKX_A2A_AI_PROVIDER || process.env.OKX_AGENT_TASK_AI_CLI;
@@ -33590,7 +33589,7 @@ async function updateHermes(release, options) {
33590
33589
  assertNotRunningInsideGateway("hermes");
33591
33590
  }
33592
33591
  const spec = buildNpmPackageSpec("hermes", release);
33593
- const workDir = await (0, import_promises11.mkdtemp)((0, import_node_path29.join)((0, import_node_os11.tmpdir)(), `okx-a2a-${label}-hermes-`));
33592
+ const workDir = await (0, import_promises11.mkdtemp)((0, import_node_path29.join)((0, import_node_os10.tmpdir)(), `okx-a2a-${label}-hermes-`));
33594
33593
  try {
33595
33594
  console.log(`[${label}] downloading ${spec}`);
33596
33595
  const npmTarball = await npmPack(spec, workDir);
@@ -33615,7 +33614,7 @@ async function updateHermes(release, options) {
33615
33614
  }
33616
33615
  }
33617
33616
  async function installGatewayPluginForDoctor(target) {
33618
- const release = isPrereleaseVersion("0.2.15") ? "beta" : "latest";
33617
+ const release = isPrereleaseVersion("0.2.16-beta-ca2f5282c7-260921143311") ? "beta" : "latest";
33619
33618
  const insideTargetGateway = detectGatewayInvocation() === target;
33620
33619
  const options = {
33621
33620
  restart: !insideTargetGateway,
@@ -33906,7 +33905,7 @@ function findFirstEnabledListItem(lines, startIndex, enabledIndent) {
33906
33905
  return null;
33907
33906
  }
33908
33907
  function resolveHermesConfigPath() {
33909
- return (0, import_node_path29.join)(process.env.HERMES_HOME ?? (0, import_node_path29.join)((0, import_node_os11.homedir)(), ".hermes"), "config.yaml");
33908
+ return (0, import_node_path29.join)(process.env.HERMES_HOME ?? (0, import_node_path29.join)((0, import_node_os10.homedir)(), ".hermes"), "config.yaml");
33910
33909
  }
33911
33910
  function lineIndent(line) {
33912
33911
  const match = line.match(/^\s*/);
@@ -33984,7 +33983,7 @@ async function assertGatewayPluginInstalled(target) {
33984
33983
  );
33985
33984
  }
33986
33985
  function resolveHermesPluginYamlPath() {
33987
- return (0, import_node_path29.join)(process.env.HERMES_HOME ?? (0, import_node_path29.join)((0, import_node_os11.homedir)(), ".hermes"), "plugins", "platforms", "okx-a2a", "plugin.yaml");
33986
+ return (0, import_node_path29.join)(process.env.HERMES_HOME ?? (0, import_node_path29.join)((0, import_node_os10.homedir)(), ".hermes"), "plugins", "platforms", "okx-a2a", "plugin.yaml");
33988
33987
  }
33989
33988
  async function isGatewayPluginInstalled(target) {
33990
33989
  if (target === "openclaw") {
@@ -34077,7 +34076,7 @@ function parsePackageVersionFromText(output) {
34077
34076
  return output.match(/@okxweb3\/a2a-openclaw@([0-9A-Za-z.+-]+)/)?.[1] ?? null;
34078
34077
  }
34079
34078
  async function getInstalledHermesPluginVersion() {
34080
- const pluginYaml = (0, import_node_path29.join)(process.env.HERMES_HOME ?? (0, import_node_path29.join)((0, import_node_os11.homedir)(), ".hermes"), "plugins", "platforms", "okx-a2a", "plugin.yaml");
34079
+ const pluginYaml = (0, import_node_path29.join)(process.env.HERMES_HOME ?? (0, import_node_path29.join)((0, import_node_os10.homedir)(), ".hermes"), "plugins", "platforms", "okx-a2a", "plugin.yaml");
34081
34080
  try {
34082
34081
  const content = await (0, import_promises11.readFile)(pluginYaml, "utf8");
34083
34082
  return parsePluginYamlVersion(content);
@@ -34372,14 +34371,14 @@ function buildExternalCommandInvocation(command, args, platform = process.platfo
34372
34371
  function formatExternalCommand(command, args) {
34373
34372
  return [command, ...args].join(" ");
34374
34373
  }
34375
- var import_node_child_process8, import_node_fs22, import_promises11, import_node_os11, import_node_path29, UPDATE_PACKAGES, CODEX_NPM_PACKAGE, OPENCLAW_FORCE_INSTALL_FLAG, OPENCLAW_UNSAFE_INSTALL_FLAG, OKX_A2A_PLUGIN_ID, OPENCLAW_SESSION_DM_SCOPE_CONFIG_PATH, OPENCLAW_SESSION_DM_SCOPE_CONFIG_VALUE, OPENCLAW_PLUGIN_ALLOW_CONFIG_PATH, OPENCLAW_OKX_A2A_CONVERSATION_HOOK_ACCESS_CONFIG_PATH, DEFAULT_AI_PROVIDER_LOGIN_TIMEOUT_MS, PROVIDER_CLI_AUTH_PROBE_TIMEOUT_MS, SetupBlockedError, redirectCommandStdoutToStderr;
34374
+ var import_node_child_process8, import_node_fs22, import_promises11, import_node_os10, import_node_path29, UPDATE_PACKAGES, CODEX_NPM_PACKAGE, OPENCLAW_FORCE_INSTALL_FLAG, OPENCLAW_UNSAFE_INSTALL_FLAG, OKX_A2A_PLUGIN_ID, OPENCLAW_SESSION_DM_SCOPE_CONFIG_PATH, OPENCLAW_SESSION_DM_SCOPE_CONFIG_VALUE, OPENCLAW_PLUGIN_ALLOW_CONFIG_PATH, OPENCLAW_OKX_A2A_CONVERSATION_HOOK_ACCESS_CONFIG_PATH, DEFAULT_AI_PROVIDER_LOGIN_TIMEOUT_MS, PROVIDER_CLI_AUTH_PROBE_TIMEOUT_MS, SetupBlockedError, redirectCommandStdoutToStderr;
34376
34375
  var init_update_cli = __esm({
34377
34376
  "src/update-cli.ts"() {
34378
34377
  "use strict";
34379
34378
  import_node_child_process8 = require("node:child_process");
34380
34379
  import_node_fs22 = require("node:fs");
34381
34380
  import_promises11 = require("node:fs/promises");
34382
- import_node_os11 = require("node:os");
34381
+ import_node_os10 = require("node:os");
34383
34382
  import_node_path29 = require("node:path");
34384
34383
  init_ai_command();
34385
34384
  init_win_spawn();
@@ -44600,7 +44599,7 @@ init_log();
44600
44599
  var import_node_crypto4 = require("node:crypto");
44601
44600
  var import_node_fs11 = require("node:fs");
44602
44601
  var import_promises7 = require("node:fs/promises");
44603
- var import_node_os7 = require("node:os");
44602
+ var import_node_os6 = require("node:os");
44604
44603
  var import_node_path16 = require("node:path");
44605
44604
  init_ai_command();
44606
44605
  init_paths();
@@ -44887,7 +44886,7 @@ init_ai_provider();
44887
44886
 
44888
44887
  // src/ai-adapter.ts
44889
44888
  init_log();
44890
- var import_node_os6 = require("node:os");
44889
+ var import_node_os5 = require("node:os");
44891
44890
  var import_node_path14 = require("node:path");
44892
44891
  init_ai_command();
44893
44892
  init_paths();
@@ -45113,10 +45112,10 @@ function readCodexAddDirs(env = process.env) {
45113
45112
  }
45114
45113
  function expandHomePath(value) {
45115
45114
  if (value === "~") {
45116
- return (0, import_node_os6.homedir)();
45115
+ return (0, import_node_os5.homedir)();
45117
45116
  }
45118
45117
  if (value.startsWith("~/")) {
45119
- return (0, import_node_path14.join)((0, import_node_os6.homedir)(), value.slice(2));
45118
+ return (0, import_node_path14.join)((0, import_node_os5.homedir)(), value.slice(2));
45120
45119
  }
45121
45120
  return value;
45122
45121
  }
@@ -45333,7 +45332,7 @@ function formatOpenClawSessionKey(sessionKey, agentId) {
45333
45332
  function buildClaudeAddDirArgs(homeDir, env) {
45334
45333
  const dirs = [
45335
45334
  homeDir,
45336
- (0, import_node_path14.join)((0, import_node_os6.homedir)(), ".agents"),
45335
+ (0, import_node_path14.join)((0, import_node_os5.homedir)(), ".agents"),
45337
45336
  (0, import_node_path14.join)(__dirname, ".."),
45338
45337
  ...env.OKX_A2A_AI_CLAUDE_ADD_DIRS ? env.OKX_A2A_AI_CLAUDE_ADD_DIRS.split(import_node_path14.delimiter).filter(Boolean) : []
45339
45338
  ];
@@ -46443,7 +46442,7 @@ var AiRunner = class {
46443
46442
  process.env.OKX_AGENT_TASK_AI_CWD,
46444
46443
  this.sessionStore.getSetting("ai_working_dir"),
46445
46444
  safeProcessCwd(),
46446
- (0, import_node_os7.homedir)(),
46445
+ (0, import_node_os6.homedir)(),
46447
46446
  this.homeDir
46448
46447
  ];
46449
46448
  return candidates.find((candidate) => !!candidate && isDirectory(candidate)) ?? this.homeDir;
@@ -47022,7 +47021,7 @@ function extractDeniedFilesystemPath(text) {
47022
47021
  }
47023
47022
  function getPreferredCodexWritableRoot(target) {
47024
47023
  const expanded = expandHomePath2(target);
47025
- const home = (0, import_node_os7.homedir)();
47024
+ const home = (0, import_node_os6.homedir)();
47026
47025
  const appRoots = [
47027
47026
  (0, import_node_path16.join)(home, ".onchainos", "task"),
47028
47027
  (0, import_node_path16.join)(home, ".onchainos", "deliverables"),
@@ -47041,16 +47040,16 @@ function inferAppOwnedCodexWritableRoot(failure) {
47041
47040
  return void 0;
47042
47041
  }
47043
47042
  if (containsOnchainosCommand(command) && /\b0x[0-9a-fA-F]{16,}\b/.test(command)) {
47044
- return (0, import_node_path16.join)((0, import_node_os7.homedir)(), ".onchainos", "task");
47043
+ return (0, import_node_path16.join)((0, import_node_os6.homedir)(), ".onchainos", "task");
47045
47044
  }
47046
47045
  return void 0;
47047
47046
  }
47048
47047
  function expandHomePath2(value) {
47049
47048
  if (value === "~") {
47050
- return (0, import_node_os7.homedir)();
47049
+ return (0, import_node_os6.homedir)();
47051
47050
  }
47052
47051
  if (value.startsWith("~/")) {
47053
- return (0, import_node_path16.join)((0, import_node_os7.homedir)(), value.slice(2));
47052
+ return (0, import_node_path16.join)((0, import_node_os6.homedir)(), value.slice(2));
47054
47053
  }
47055
47054
  return value;
47056
47055
  }
@@ -61333,7 +61332,7 @@ function buildConnectParams(config, instanceId, protocolVersion) {
61333
61332
  client: {
61334
61333
  id: "gateway-client",
61335
61334
  displayName: "okx-a2a-node",
61336
- version: "0.2.15",
61335
+ version: "0.2.16-beta-ca2f5282c7-260921143311",
61337
61336
  platform: "node",
61338
61337
  mode: "backend",
61339
61338
  instanceId
@@ -61344,7 +61343,7 @@ function buildConnectParams(config, instanceId, protocolVersion) {
61344
61343
  commands: [],
61345
61344
  permissions: {},
61346
61345
  locale: Intl.DateTimeFormat().resolvedOptions().locale || "en-US",
61347
- userAgent: `okx-a2a-node/${"0.2.15"}`,
61346
+ userAgent: `okx-a2a-node/${"0.2.16-beta-ca2f5282c7-260921143311"}`,
61348
61347
  auth: {
61349
61348
  ...config.token ? { token: config.token } : {},
61350
61349
  ...config.password ? { password: config.password } : {}
@@ -61471,7 +61470,7 @@ function safeDecode(value) {
61471
61470
 
61472
61471
  // src/openclaw-route.ts
61473
61472
  var import_node_fs18 = require("node:fs");
61474
- var import_node_os8 = require("node:os");
61473
+ var import_node_os7 = require("node:os");
61475
61474
  var import_node_path24 = require("node:path");
61476
61475
  var OPENCLAW_GATEWAY_ROUTE_GROUP_ID = "__openclaw_gateway_route__";
61477
61476
  var CURRENT_GATEWAY_SESSION_KEYS_ENV = "OKX_A2A_CURRENT_GATEWAY_SESSION_KEYS";
@@ -61823,7 +61822,7 @@ function readSingleActiveOriginSessionKey(env) {
61823
61822
  }
61824
61823
  }
61825
61824
  function resolveTaskHome2(env) {
61826
- return env.OKX_AGENT_TASK_HOME?.trim() || (0, import_node_path24.join)((0, import_node_os8.homedir)(), ".okx-agent-task");
61825
+ return env.OKX_AGENT_TASK_HOME?.trim() || (0, import_node_path24.join)((0, import_node_os7.homedir)(), ".okx-agent-task");
61827
61826
  }
61828
61827
  function logOpenClawRouteSkip(reason, input) {
61829
61828
  if (reason === "missing_gateway_session_key") {
@@ -66938,7 +66937,7 @@ function isA2AEnvelope(payload) {
66938
66937
  init_log();
66939
66938
  var import_node_fs19 = require("node:fs");
66940
66939
  var import_promises8 = require("node:fs/promises");
66941
- var import_node_os9 = require("node:os");
66940
+ var import_node_os8 = require("node:os");
66942
66941
  var import_node_path25 = require("node:path");
66943
66942
 
66944
66943
  // ../core/src/xmtp-sdk/onchainos/signer.ts
@@ -67445,7 +67444,7 @@ async function isGatewayAvailableForHeartbeat(options) {
67445
67444
  }
67446
67445
  async function getHermesGatewayPluginStatus(options = {}) {
67447
67446
  const env = options.env ?? process.env;
67448
- const hermesHome = env.HERMES_HOME?.trim() || (0, import_node_path25.join)((0, import_node_os9.homedir)(), ".hermes");
67447
+ const hermesHome = env.HERMES_HOME?.trim() || (0, import_node_path25.join)((0, import_node_os8.homedir)(), ".hermes");
67449
67448
  const pluginYamlPath = (0, import_node_path25.join)(hermesHome, "plugins", "platforms", "okx-a2a", "plugin.yaml");
67450
67449
  if (!(0, import_node_fs19.existsSync)(pluginYamlPath)) {
67451
67450
  return { enabled: false, reason: "plugin_yaml_missing", hermesHome, checkedPath: pluginYamlPath };
@@ -67561,14 +67560,14 @@ async function runListener(options = {}) {
67561
67560
  const evictedPid = await claimActiveDaemon(paths.homeDir);
67562
67561
  if (evictedPid !== null) {
67563
67562
  logWithTimestamp(
67564
- `[okx-agent-task] stopped previous daemon pid=${evictedPid} serving another task home (single-daemon policy)`
67563
+ `[okx-agent-task] stopped previous daemon pid=${evictedPid} for home=${paths.homeDir} (single-daemon-per-task-home policy)`
67565
67564
  );
67566
67565
  }
67567
67566
  try {
67568
67567
  await runListenerWithLock(options, paths);
67569
67568
  } finally {
67570
67569
  await daemonLock.release();
67571
- await releaseActiveDaemon();
67570
+ await releaseActiveDaemon(paths.homeDir);
67572
67571
  }
67573
67572
  }
67574
67573
  async function runListenerWithLock(options, paths) {
@@ -67683,12 +67682,12 @@ async function runListenerWithLock(options, paths) {
67683
67682
  });
67684
67683
  }
67685
67684
  });
67686
- service.setPluginVersion("0.2.15");
67685
+ service.setPluginVersion("0.2.16-beta-ca2f5282c7-260921143311");
67687
67686
  await service.init();
67688
67687
  const pluginVersionStatus = service.pluginVersionStatus;
67689
67688
  if (pluginVersionStatus.unavailable) {
67690
67689
  throw new Error(
67691
- `@okxweb3/a2a-node v${"0.2.15"} is below the required minimum v${pluginVersionStatus.minVersion}`
67690
+ `@okxweb3/a2a-node v${"0.2.16-beta-ca2f5282c7-260921143311"} is below the required minimum v${pluginVersionStatus.minVersion}`
67692
67691
  );
67693
67692
  }
67694
67693
  const systemConfig = service.getSystemConfig();
@@ -67716,7 +67715,7 @@ async function runListenerWithLock(options, paths) {
67716
67715
  onchainosAgentId: "*",
67717
67716
  reason: "system-config missing sentryDsn",
67718
67717
  pluginId: "@okxweb3/a2a-node",
67719
- pluginVersion: "0.2.15"
67718
+ pluginVersion: "0.2.16-beta-ca2f5282c7-260921143311"
67720
67719
  });
67721
67720
  }
67722
67721
  logWithTimestamp(
@@ -69173,7 +69172,7 @@ function parseLogsTailArgs(args, subcommand) {
69173
69172
  var import_node_child_process10 = require("node:child_process");
69174
69173
  var import_node_fs27 = require("node:fs");
69175
69174
  var import_promises15 = require("node:fs/promises");
69176
- var import_node_os13 = require("node:os");
69175
+ var import_node_os12 = require("node:os");
69177
69176
  var import_node_path34 = require("node:path");
69178
69177
  var import_jszip = __toESM(require_lib3());
69179
69178
 
@@ -69997,14 +69996,14 @@ function unavailable(message) {
69997
69996
 
69998
69997
  // src/logs-export-provider.ts
69999
69998
  var import_node_child_process9 = require("node:child_process");
70000
- var import_node_os12 = require("node:os");
69999
+ var import_node_os11 = require("node:os");
70001
70000
  var import_node_path32 = require("node:path");
70002
70001
  var PROVIDERS2 = ["codex", "claude", "openclaw", "hermes"];
70003
70002
  function providerConfigCandidates(provider, taskHome2) {
70004
70003
  if (provider === "codex") {
70005
70004
  return [
70006
70005
  {
70007
- path: (0, import_node_path32.join)(process.env.CODEX_HOME ?? (0, import_node_path32.join)((0, import_node_os12.homedir)(), ".codex"), "config.toml"),
70006
+ path: (0, import_node_path32.join)(process.env.CODEX_HOME ?? (0, import_node_path32.join)((0, import_node_os11.homedir)(), ".codex"), "config.toml"),
70008
70007
  archiveName: "config.redacted.toml"
70009
70008
  }
70010
70009
  ];
@@ -70012,7 +70011,7 @@ function providerConfigCandidates(provider, taskHome2) {
70012
70011
  if (provider === "claude") {
70013
70012
  return [
70014
70013
  {
70015
- path: (0, import_node_path32.join)((0, import_node_os12.homedir)(), ".claude", "settings.json"),
70014
+ path: (0, import_node_path32.join)((0, import_node_os11.homedir)(), ".claude", "settings.json"),
70016
70015
  archiveName: "settings.redacted.json"
70017
70016
  },
70018
70017
  {
@@ -70043,10 +70042,10 @@ function providerConfigCandidates(provider, taskHome2) {
70043
70042
  }
70044
70043
  function resolveOpenClawStateDir() {
70045
70044
  const configured = process.env.OPENCLAW_STATE_DIR?.trim() || process.env.OPENCLAW_HOME?.trim();
70046
- return (0, import_node_path32.resolve)(configured || (0, import_node_path32.join)((0, import_node_os12.homedir)(), ".openclaw"));
70045
+ return (0, import_node_path32.resolve)(configured || (0, import_node_path32.join)((0, import_node_os11.homedir)(), ".openclaw"));
70047
70046
  }
70048
70047
  function resolveHermesHome() {
70049
- return (0, import_node_path32.resolve)(process.env.HERMES_HOME?.trim() || (0, import_node_path32.join)((0, import_node_os12.homedir)(), ".hermes"));
70048
+ return (0, import_node_path32.resolve)(process.env.HERMES_HOME?.trim() || (0, import_node_path32.join)((0, import_node_os11.homedir)(), ".hermes"));
70050
70049
  }
70051
70050
  function providerEnvironment(provider) {
70052
70051
  const prefixes = provider === "codex" ? ["OKX_A2A_AI_CODEX_", "CODEX_"] : provider === "claude" ? ["OKX_A2A_AI_CLAUDE_", "ANTHROPIC_MODEL", "CLAUDE_"] : provider === "openclaw" ? ["OPENCLAW_", "OKX_A2A_OPENCLAW_"] : ["HERMES_", "OKX_A2A_HERMES_"];
@@ -70489,7 +70488,7 @@ async function exportDiagnosticLogs(options) {
70489
70488
  node: process.version,
70490
70489
  platform: process.platform,
70491
70490
  arch: process.arch,
70492
- packageVersion: true ? "0.2.15" : "unknown",
70491
+ packageVersion: true ? "0.2.16-beta-ca2f5282c7-260921143311" : "unknown",
70493
70492
  sensitiveContentIncluded: options.includeSensitiveContent,
70494
70493
  listenerAndLlmContentIncluded: true,
70495
70494
  credentialsAlwaysRedacted: true,
@@ -70830,7 +70829,7 @@ async function collectCommands(state, paths, options) {
70830
70829
  }
70831
70830
  async function collectOnchainAudit(state, options, correlationIds) {
70832
70831
  await runCollector(state, "onchainos-audit", async () => {
70833
- const onchainHome = process.env.ONCHAINOS_HOME?.trim() ? (0, import_node_path34.resolve)(process.env.ONCHAINOS_HOME) : (0, import_node_path34.join)((0, import_node_os13.homedir)(), ".onchainos");
70832
+ const onchainHome = process.env.ONCHAINOS_HOME?.trim() ? (0, import_node_path34.resolve)(process.env.ONCHAINOS_HOME) : (0, import_node_path34.join)((0, import_node_os12.homedir)(), ".onchainos");
70834
70833
  const auditPath = (0, import_node_path34.join)(onchainHome, "audit.jsonl");
70835
70834
  const output = await readFilteredLog(
70836
70835
  auditPath,
@@ -72401,7 +72400,7 @@ async function runDoctor(options = {}) {
72401
72400
  platform: options.platform ?? process.platform,
72402
72401
  env: options.env ?? process.env,
72403
72402
  target: options.target ?? resolveDoctorTarget(options.env ?? process.env),
72404
- cliVersion: options.cliVersion ?? (true ? "0.2.15" : "0.0.0"),
72403
+ cliVersion: options.cliVersion ?? (true ? "0.2.16-beta-ca2f5282c7-260921143311" : "0.0.0"),
72405
72404
  fixMode: options.fix === true,
72406
72405
  nonInteractive: options.nonInteractive === true,
72407
72406
  packageChanged: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@okxweb3/a2a-node",
3
- "version": "0.2.15",
3
+ "version": "0.2.16-beta-ca2f5282c7-260921143311",
4
4
  "description": "Host-agnostic Node CLI for E2E encrypted agent-to-agent communication via XMTP",
5
5
  "main": "dist/index.js",
6
6
  "bin": {