@omnixal/openclaw-nats-plugin 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.
package/cli/bun-setup.ts CHANGED
@@ -7,10 +7,10 @@ import {
7
7
  } from './paths';
8
8
  import { downloadNatsServer, NATS_VERSION } from './download-nats';
9
9
  import { writeNatsConfig } from './nats-config';
10
- import { generateApiKey, writeEnvVariables } from './env-writer';
10
+ import { generateApiKey, getExistingApiKey, writeEnvVariables } from './env-writer';
11
11
  import {
12
12
  getServiceManager, generateSystemdUnit, generateLaunchdPlist,
13
- installSystemdUnit, installLaunchdPlist, startService,
13
+ installSystemdUnit, installLaunchdPlist, startService, stopService,
14
14
  } from './service-units';
15
15
 
16
16
  const NATS_SERVICE = 'openclaw-nats';
@@ -46,15 +46,25 @@ export async function bunSetup(): Promise<void> {
46
46
  // 5. Generate NATS config
47
47
  writeNatsConfig();
48
48
 
49
- // 6. Generate API key
50
- const apiKey = generateApiKey();
49
+ // 6. Reuse existing API key or generate new one
50
+ const apiKey = getExistingApiKey() ?? generateApiKey();
51
51
 
52
- // 7. Write env variables
53
- writeEnvVariables({
52
+ // 7. Write env variables (to OpenClaw .env for hooks, and sidecar .env for the service)
53
+ const envVars: Record<string, string> = {
54
54
  NATS_SIDECAR_URL: 'http://127.0.0.1:3104',
55
55
  NATS_PLUGIN_API_KEY: apiKey,
56
56
  NATS_SERVERS: 'nats://127.0.0.1:4222',
57
- });
57
+ };
58
+ writeEnvVariables(envVars);
59
+
60
+ // Write .env into sidecar dir so loadDotEnv picks it up
61
+ const sidecarEnv = [
62
+ `PORT=3104`,
63
+ `DB_PATH=${join(DATA_DIR, 'nats-sidecar.db')}`,
64
+ `NATS_SERVERS=nats://127.0.0.1:4222`,
65
+ `NATS_PLUGIN_API_KEY=${apiKey}`,
66
+ ].join('\n');
67
+ writeFileSync(join(SIDECAR_DIR, '.env'), sidecarEnv, 'utf-8');
58
68
 
59
69
  // 8. Generate and install service units
60
70
  const manager = getServiceManager();
@@ -99,7 +109,10 @@ export async function bunSetup(): Promise<void> {
99
109
  console.log('No init system detected, using direct process management');
100
110
  }
101
111
 
102
- // 9. Start services
112
+ // 9. Stop old processes if running, then start
113
+ try { stopService(SIDECAR_SERVICE); } catch { /* not running */ }
114
+ try { stopService(NATS_SERVICE); } catch { /* not running */ }
115
+
103
116
  console.log('\nStarting services...');
104
117
  startService(NATS_SERVICE);
105
118
  await waitForPort(8222, 10_000);
package/cli/env-writer.ts CHANGED
@@ -7,6 +7,13 @@ export function generateApiKey(): string {
7
7
  return randomBytes(32).toString('hex');
8
8
  }
9
9
 
10
+ export function getExistingApiKey(): string | null {
11
+ if (!existsSync(OPENCLAW_ENV)) return null;
12
+ const content = readFileSync(OPENCLAW_ENV, 'utf-8');
13
+ const match = content.match(/^NATS_PLUGIN_API_KEY=(.+)$/m);
14
+ return match?.[1]?.trim() || null;
15
+ }
16
+
10
17
  export function mergeEnvContent(
11
18
  existingContent: string,
12
19
  variables: Record<string, string>,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnixal/openclaw-nats-plugin",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "NATS JetStream event-driven plugin for OpenClaw",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -55,7 +55,7 @@ export class NatsAdapterService extends BaseService implements OnModuleInit, OnM
55
55
  }
56
56
 
57
57
  isConnected(): boolean {
58
- return this._connected && this.adapter !== null && this.adapter.isConnected();
58
+ return this._connected && this.adapter !== null;
59
59
  }
60
60
 
61
61
  async publish<T>(pattern: string, data: T, options?: PublishOptions): Promise<string | null> {