@clawlabz/clawnetwork 0.1.18 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.ts CHANGED
@@ -7,7 +7,7 @@ declare function setInterval(fn: () => void, ms: number): unknown
7
7
  declare function clearInterval(id: unknown): void
8
8
  declare function fetch(url: string, init?: Record<string, unknown>): Promise<{ status: number; ok: boolean; text: () => Promise<string>; json: () => Promise<unknown> }>
9
9
 
10
- const VERSION = '0.1.18'
10
+ const VERSION = '0.1.19'
11
11
  const PLUGIN_ID = 'clawnetwork'
12
12
  const GITHUB_REPO = 'clawlabz/claw-network'
13
13
  const DEFAULT_RPC_PORT = 9710
@@ -2422,40 +2422,52 @@ export default function register(api: OpenClawApi) {
2422
2422
  if (state.running) {
2423
2423
  api.logger?.info?.(`[clawnetwork] node already running (pid=${state.pid})`)
2424
2424
 
2425
- // Check if a newer binary is available on GitHub — if so, download + restart
2426
- if (cfg.autoDownload) {
2425
+ // Check if local binary is newer than the running process restart if so.
2426
+ // Also check GitHub for even newer versions and download if available.
2427
+ try {
2428
+ const binary = findBinary()
2429
+ const localBinaryVersion = binary ? getBinaryVersion(binary) : null
2430
+
2431
+ // Get the RUNNING process version from health endpoint (not the file version)
2432
+ let runningProcessVersion: string | null = null
2427
2433
  try {
2428
- const binary = findBinary()
2429
- const runningVersion = binary ? getBinaryVersion(binary) : null
2430
- if (runningVersion) {
2431
- // Fetch latest version from GitHub
2432
- let latestVersion: string | null = null
2433
- try {
2434
- const res = await fetch(`https://api.github.com/repos/${GITHUB_REPO}/releases/latest`)
2435
- if (res.ok) {
2436
- const data = await res.json() as Record<string, unknown>
2437
- if (typeof data.tag_name === 'string') latestVersion = data.tag_name.replace(/^v/, '')
2438
- }
2439
- } catch { /* network error, skip */ }
2440
-
2441
- if (latestVersion && isVersionOlder(runningVersion, latestVersion)) {
2442
- api.logger?.info?.(`[clawnetwork] node ${runningVersion} ${latestVersion} available, upgrading...`)
2443
- stopNode(api)
2444
- await sleep(3_000)
2445
- try {
2446
- const newBinary = await downloadBinary(api)
2447
- initNode(newBinary, cfg.network, api)
2448
- startNodeProcess(newBinary, cfg, api)
2449
- api.logger?.info?.(`[clawnetwork] node upgraded to ${latestVersion} and restarted`)
2450
- } catch (e: unknown) {
2451
- api.logger?.warn?.(`[clawnetwork] auto-upgrade failed: ${(e as Error).message}, restarting old binary`)
2452
- startNodeProcess(binary, cfg, api)
2434
+ const health = await fetch(`http://localhost:${cfg.rpcPort}/health`)
2435
+ if (health.ok) {
2436
+ const hd = await health.json() as Record<string, unknown>
2437
+ if (typeof hd.version === 'string') runningProcessVersion = hd.version.replace(/^v/, '')
2438
+ }
2439
+ } catch { /* health endpoint not ready */ }
2440
+
2441
+ // Step A: If GitHub has a newer binary than what's on disk, download it first
2442
+ if (cfg.autoDownload && localBinaryVersion) {
2443
+ try {
2444
+ const res = await fetch(`https://api.github.com/repos/${GITHUB_REPO}/releases/latest`)
2445
+ if (res.ok) {
2446
+ const data = await res.json() as Record<string, unknown>
2447
+ const latestVersion = typeof data.tag_name === 'string' ? data.tag_name.replace(/^v/, '') : null
2448
+ if (latestVersion && isVersionOlder(localBinaryVersion, latestVersion)) {
2449
+ api.logger?.info?.(`[clawnetwork] downloading newer binary: ${localBinaryVersion} → ${latestVersion}`)
2450
+ try { await downloadBinary(api) } catch (e: unknown) {
2451
+ api.logger?.warn?.(`[clawnetwork] download failed: ${(e as Error).message}`)
2452
+ }
2453
2453
  }
2454
2454
  }
2455
- }
2456
- } catch (e: unknown) {
2457
- api.logger?.warn?.(`[clawnetwork] upgrade check failed: ${(e as Error).message}`)
2455
+ } catch { /* network error, skip */ }
2456
+ }
2457
+
2458
+ // Step B: If the local binary is newer than the running process, restart with it
2459
+ const finalBinary = findBinary()
2460
+ const finalBinaryVersion = finalBinary ? getBinaryVersion(finalBinary) : null
2461
+ if (finalBinaryVersion && runningProcessVersion && isVersionOlder(runningProcessVersion, finalBinaryVersion)) {
2462
+ api.logger?.info?.(`[clawnetwork] running node ${runningProcessVersion} is outdated, restarting with ${finalBinaryVersion}...`)
2463
+ stopNode(api)
2464
+ await sleep(3_000)
2465
+ initNode(finalBinary, cfg.network, api)
2466
+ startNodeProcess(finalBinary, cfg, api)
2467
+ api.logger?.info?.(`[clawnetwork] node upgraded to ${finalBinaryVersion}`)
2458
2468
  }
2469
+ } catch (e: unknown) {
2470
+ api.logger?.warn?.(`[clawnetwork] upgrade check failed: ${(e as Error).message}`)
2459
2471
  }
2460
2472
 
2461
2473
  startHealthCheck(cfg, api)
@@ -2,7 +2,7 @@
2
2
  "id": "clawnetwork",
3
3
  "name": "ClawNetwork Node",
4
4
  "description": "Run a ClawNetwork blockchain node inside OpenClaw. Every agent is a node.",
5
- "version": "0.1.18",
5
+ "version": "0.1.19",
6
6
  "configSchema": {
7
7
  "type": "object",
8
8
  "additionalProperties": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawlabz/clawnetwork",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
4
4
  "description": "Run a ClawNetwork blockchain node inside OpenClaw. Every agent is a blockchain node.",
5
5
  "type": "module",
6
6
  "license": "MIT",