@vainplex/nats-eventstore 0.2.0 → 0.2.1
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/README.md +11 -0
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/src/config-loader.d.ts +24 -0
- package/dist/src/config-loader.d.ts.map +1 -0
- package/dist/src/config-loader.js +105 -0
- package/dist/src/config-loader.js.map +1 -0
- package/openclaw.plugin.json +7 -3
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -268,6 +268,17 @@ npm run test:watch
|
|
|
268
268
|
npm run typecheck
|
|
269
269
|
```
|
|
270
270
|
|
|
271
|
+
## Part of the Vainplex Plugin Suite
|
|
272
|
+
|
|
273
|
+
| # | Plugin | Status | Description |
|
|
274
|
+
|---|--------|--------|-------------|
|
|
275
|
+
| 1 | **@vainplex/nats-eventstore** | ✅ Published | NATS JetStream event persistence (this plugin) |
|
|
276
|
+
| 2 | [@vainplex/openclaw-cortex](https://github.com/alberthild/openclaw-cortex) | ✅ Published | Conversation intelligence — threads, decisions, boot context |
|
|
277
|
+
| 3 | [@vainplex/openclaw-knowledge-engine](https://github.com/alberthild/openclaw-knowledge-engine) | ✅ Published | Real-time knowledge extraction |
|
|
278
|
+
| 4 | @vainplex/openclaw-governance | 📋 Planned | Policy enforcement + guardrails |
|
|
279
|
+
| 5 | @vainplex/openclaw-memory-engine | 📋 Planned | Unified memory layer |
|
|
280
|
+
| 6 | @vainplex/openclaw-health-monitor | 📋 Planned | System health + auto-healing |
|
|
281
|
+
|
|
271
282
|
## License
|
|
272
283
|
|
|
273
284
|
MIT
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createEventStoreService } from "./src/service.js";
|
|
2
2
|
import { registerEventHooks } from "./src/hooks.js";
|
|
3
|
-
import {
|
|
3
|
+
import { loadConfig } from "./src/config-loader.js";
|
|
4
4
|
let client = null;
|
|
5
5
|
const plugin = {
|
|
6
6
|
id: "nats-eventstore",
|
|
@@ -8,7 +8,7 @@ const plugin = {
|
|
|
8
8
|
description: "Publish agent events to NATS JetStream for audit, replay, and multi-agent sharing",
|
|
9
9
|
version: "0.1.0",
|
|
10
10
|
register(api) {
|
|
11
|
-
const config =
|
|
11
|
+
const { config } = loadConfig(api.pluginConfig, api.logger);
|
|
12
12
|
if (!config.enabled) {
|
|
13
13
|
api.logger.info("[nats-eventstore] Disabled via config");
|
|
14
14
|
return;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAapD,IAAI,MAAM,GAAsB,IAAI,CAAC;AAErC,MAAM,MAAM,GAAG;IACb,EAAE,EAAE,iBAAiB;IACrB,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,mFAAmF;IAChG,OAAO,EAAE,OAAO;IAEhB,QAAQ,CAAC,GAAsB;QAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAE5D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,4CAA4C;QAC5C,GAAG,CAAC,eAAe,CACjB,uBAAuB,CACrB,GAAG,EAAE,CAAC,MAAM,EACZ,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACvB,CACF,CAAC;QAEF,6BAA6B;QAC7B,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;QAE9C,gCAAgC;QAChC,GAAG,CAAC,eAAe,CAAC;YAClB,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,yCAAyC;YACtD,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI;oBACpC,SAAS,EAAE,KAAK;oBAChB,MAAM,EAAE,IAAI;oBACZ,eAAe,EAAE,CAAC;oBAClB,eAAe,EAAE,CAAC;iBACnB,CAAC;gBACF,OAAO;oBACL,IAAI,EAAE;wBACJ,sBAAsB;wBACtB,cAAc,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;wBAC5C,WAAW,MAAM,CAAC,MAAM,IAAI,KAAK,EAAE;wBACnC,gBAAgB,MAAM,CAAC,eAAe,EAAE;wBACxC,qBAAqB,MAAM,CAAC,eAAe,EAAE;qBAC9C,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;QAEH,kDAAkD;QAClD,GAAG,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;YACxD,OAAO,MAAM,EAAE,SAAS,EAAE,IAAI;gBAC5B,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,IAAI;gBACZ,eAAe,EAAE,CAAC;gBAClB,eAAe,EAAE,CAAC;aACnB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { NatsEventStoreConfig } from "./config.js";
|
|
2
|
+
import type { PluginLogger } from "./nats-client.js";
|
|
3
|
+
/** Minimal inline config that lives in openclaw.json */
|
|
4
|
+
export interface InlineConfig {
|
|
5
|
+
readonly enabled?: boolean;
|
|
6
|
+
/** Override path to external config file */
|
|
7
|
+
readonly configPath?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ConfigLoadResult {
|
|
10
|
+
readonly config: NatsEventStoreConfig;
|
|
11
|
+
readonly source: "inline" | "file" | "defaults";
|
|
12
|
+
readonly filePath?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Load nats-eventstore config with the following priority:
|
|
16
|
+
*
|
|
17
|
+
* 1. Legacy inline config (full config in openclaw.json) → use it directly
|
|
18
|
+
* 2. External file (configPath or default location) → read + resolve
|
|
19
|
+
* 3. Graceful defaults → everything enabled, fail-open
|
|
20
|
+
*
|
|
21
|
+
* NEVER throws. Worst case: returns defaults with a warning.
|
|
22
|
+
*/
|
|
23
|
+
export declare function loadConfig(pluginConfig: Record<string, unknown> | undefined, logger: PluginLogger): ConfigLoadResult;
|
|
24
|
+
//# sourceMappingURL=config-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/config-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAsFD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACjD,MAAM,EAAE,YAAY,GACnB,gBAAgB,CAkClB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { readFileSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join, dirname } from "node:path";
|
|
3
|
+
import { resolveConfig, DEFAULTS } from "./config.js";
|
|
4
|
+
const DEFAULT_CONFIG_DIR = join(process.env["HOME"] ?? "/tmp", ".openclaw", "plugins", "nats-eventstore");
|
|
5
|
+
const DEFAULT_CONFIG_FILENAME = "config.json";
|
|
6
|
+
function isRecord(v) {
|
|
7
|
+
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Determine whether pluginConfig is a full (legacy) inline config
|
|
11
|
+
* or just the minimal inline pointer.
|
|
12
|
+
*
|
|
13
|
+
* Heuristic: if it has keys beyond `enabled` and `configPath`,
|
|
14
|
+
* treat it as legacy inline config.
|
|
15
|
+
*/
|
|
16
|
+
function isLegacyInlineConfig(raw) {
|
|
17
|
+
const inlineOnlyKeys = new Set(["enabled", "configPath"]);
|
|
18
|
+
return Object.keys(raw).some((k) => !inlineOnlyKeys.has(k));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Read and parse a JSON file. Returns null on any error.
|
|
22
|
+
*/
|
|
23
|
+
function readJsonFile(path, logger) {
|
|
24
|
+
try {
|
|
25
|
+
if (!existsSync(path))
|
|
26
|
+
return null;
|
|
27
|
+
const raw = readFileSync(path, "utf-8");
|
|
28
|
+
const parsed = JSON.parse(raw);
|
|
29
|
+
if (!isRecord(parsed)) {
|
|
30
|
+
logger.warn(`[nats-eventstore] Config file is not an object: ${path}`);
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return parsed;
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
logger.warn(`[nats-eventstore] Failed to read config file ${path}: ${e instanceof Error ? e.message : String(e)}`);
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Apply inline `enabled` override to a file-loaded config (immutably).
|
|
42
|
+
*/
|
|
43
|
+
function applyInlineOverrides(fileConfig, inline) {
|
|
44
|
+
if (typeof inline["enabled"] === "boolean") {
|
|
45
|
+
return { ...fileConfig, enabled: inline["enabled"] };
|
|
46
|
+
}
|
|
47
|
+
return fileConfig;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Bootstrap a default config file and return its contents.
|
|
51
|
+
* Returns null if writing or reading back fails.
|
|
52
|
+
*/
|
|
53
|
+
function bootstrapConfig(path, logger) {
|
|
54
|
+
try {
|
|
55
|
+
const dir = dirname(path);
|
|
56
|
+
if (!existsSync(dir))
|
|
57
|
+
mkdirSync(dir, { recursive: true });
|
|
58
|
+
writeFileSync(path, JSON.stringify(DEFAULTS, null, 2) + "\n", "utf-8");
|
|
59
|
+
logger.info(`[nats-eventstore] Created default config at ${path}`);
|
|
60
|
+
return readJsonFile(path, logger);
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
logger.warn(`[nats-eventstore] Failed to write default config: ${e instanceof Error ? e.message : String(e)}`);
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Load nats-eventstore config with the following priority:
|
|
69
|
+
*
|
|
70
|
+
* 1. Legacy inline config (full config in openclaw.json) → use it directly
|
|
71
|
+
* 2. External file (configPath or default location) → read + resolve
|
|
72
|
+
* 3. Graceful defaults → everything enabled, fail-open
|
|
73
|
+
*
|
|
74
|
+
* NEVER throws. Worst case: returns defaults with a warning.
|
|
75
|
+
*/
|
|
76
|
+
export function loadConfig(pluginConfig, logger) {
|
|
77
|
+
const raw = pluginConfig ?? {};
|
|
78
|
+
// Priority 1: Legacy inline config (backward compatible)
|
|
79
|
+
if (isLegacyInlineConfig(raw)) {
|
|
80
|
+
logger.info("[nats-eventstore] Using inline config from openclaw.json");
|
|
81
|
+
return { config: resolveConfig(raw), source: "inline" };
|
|
82
|
+
}
|
|
83
|
+
// Priority 2: External config file
|
|
84
|
+
const configPath = typeof raw["configPath"] === "string"
|
|
85
|
+
? raw["configPath"]
|
|
86
|
+
: join(DEFAULT_CONFIG_DIR, DEFAULT_CONFIG_FILENAME);
|
|
87
|
+
const fileConfig = readJsonFile(configPath, logger);
|
|
88
|
+
if (fileConfig !== null) {
|
|
89
|
+
const merged = applyInlineOverrides(fileConfig, raw);
|
|
90
|
+
logger.info(`[nats-eventstore] Loaded config from ${configPath}`);
|
|
91
|
+
return { config: resolveConfig(merged), source: "file", filePath: configPath };
|
|
92
|
+
}
|
|
93
|
+
// File missing → bootstrap with defaults
|
|
94
|
+
if (!existsSync(configPath)) {
|
|
95
|
+
const bootstrapped = bootstrapConfig(configPath, logger);
|
|
96
|
+
if (bootstrapped !== null) {
|
|
97
|
+
const merged = applyInlineOverrides(bootstrapped, raw);
|
|
98
|
+
return { config: resolveConfig(merged), source: "file", filePath: configPath };
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Priority 3: Graceful defaults (file broken or unwritable)
|
|
102
|
+
logger.warn("[nats-eventstore] Falling back to default config");
|
|
103
|
+
return { config: resolveConfig(undefined), source: "defaults" };
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/config-loader.ts"],"names":[],"mappings":"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"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "nats-eventstore",
|
|
3
3
|
"configSchema": {
|
|
4
4
|
"type": "object",
|
|
5
|
-
"additionalProperties":
|
|
5
|
+
"additionalProperties": true,
|
|
6
6
|
"properties": {
|
|
7
7
|
"enabled": {
|
|
8
8
|
"type": "boolean",
|
|
@@ -68,12 +68,16 @@
|
|
|
68
68
|
},
|
|
69
69
|
"includeHooks": {
|
|
70
70
|
"type": "array",
|
|
71
|
-
"items": {
|
|
71
|
+
"items": {
|
|
72
|
+
"type": "string"
|
|
73
|
+
},
|
|
72
74
|
"description": "Whitelist of hook names to publish (empty = all)"
|
|
73
75
|
},
|
|
74
76
|
"excludeHooks": {
|
|
75
77
|
"type": "array",
|
|
76
|
-
"items": {
|
|
78
|
+
"items": {
|
|
79
|
+
"type": "string"
|
|
80
|
+
},
|
|
77
81
|
"description": "Blacklist of hook names to skip"
|
|
78
82
|
}
|
|
79
83
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vainplex/nats-eventstore",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "OpenClaw plugin: publish agent events to NATS JetStream for audit, replay, and multi-agent sharing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -43,11 +43,12 @@
|
|
|
43
43
|
"license": "MIT",
|
|
44
44
|
"repository": {
|
|
45
45
|
"type": "git",
|
|
46
|
-
"url": "
|
|
46
|
+
"url": "https://github.com/alberthild/vainplex-openclaw.git",
|
|
47
|
+
"directory": "packages/openclaw-nats-eventstore"
|
|
47
48
|
},
|
|
48
49
|
"homepage": "https://github.com/alberthild/openclaw-nats-eventstore#readme",
|
|
49
50
|
"bugs": {
|
|
50
51
|
"url": "https://github.com/alberthild/openclaw-nats-eventstore/issues"
|
|
51
52
|
},
|
|
52
|
-
"author": "
|
|
53
|
+
"author": "Albert Hild <a.hild@vainplex.de>"
|
|
53
54
|
}
|