@vainplex/openclaw-cortex 0.3.1 → 0.4.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.
Files changed (156) hide show
  1. package/README.md +141 -46
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/config.d.ts.map +1 -1
  7. package/dist/src/config.js +3 -0
  8. package/dist/src/config.js.map +1 -1
  9. package/dist/src/hooks.d.ts.map +1 -1
  10. package/dist/src/hooks.js +13 -1
  11. package/dist/src/hooks.js.map +1 -1
  12. package/dist/src/trace-analyzer/analyzer.d.ts +59 -0
  13. package/dist/src/trace-analyzer/analyzer.d.ts.map +1 -0
  14. package/dist/src/trace-analyzer/analyzer.js +175 -0
  15. package/dist/src/trace-analyzer/analyzer.js.map +1 -0
  16. package/dist/src/trace-analyzer/chain-reconstructor.d.ts +52 -0
  17. package/dist/src/trace-analyzer/chain-reconstructor.d.ts.map +1 -0
  18. package/dist/src/trace-analyzer/chain-reconstructor.js +190 -0
  19. package/dist/src/trace-analyzer/chain-reconstructor.js.map +1 -0
  20. package/dist/src/trace-analyzer/classifier.d.ts +28 -0
  21. package/dist/src/trace-analyzer/classifier.d.ts.map +1 -0
  22. package/dist/src/trace-analyzer/classifier.js +271 -0
  23. package/dist/src/trace-analyzer/classifier.js.map +1 -0
  24. package/dist/src/trace-analyzer/config.d.ts +78 -0
  25. package/dist/src/trace-analyzer/config.d.ts.map +1 -0
  26. package/dist/src/trace-analyzer/config.js +161 -0
  27. package/dist/src/trace-analyzer/config.js.map +1 -0
  28. package/dist/src/trace-analyzer/events.d.ts +70 -0
  29. package/dist/src/trace-analyzer/events.d.ts.map +1 -0
  30. package/dist/src/trace-analyzer/events.js +228 -0
  31. package/dist/src/trace-analyzer/events.js.map +1 -0
  32. package/dist/src/trace-analyzer/hooks.d.ts +22 -0
  33. package/dist/src/trace-analyzer/hooks.d.ts.map +1 -0
  34. package/dist/src/trace-analyzer/hooks.js +151 -0
  35. package/dist/src/trace-analyzer/hooks.js.map +1 -0
  36. package/dist/src/trace-analyzer/index.d.ts +32 -0
  37. package/dist/src/trace-analyzer/index.d.ts.map +1 -0
  38. package/dist/src/trace-analyzer/index.js +30 -0
  39. package/dist/src/trace-analyzer/index.js.map +1 -0
  40. package/dist/src/trace-analyzer/nats-trace-source.d.ts +10 -0
  41. package/dist/src/trace-analyzer/nats-trace-source.d.ts.map +1 -0
  42. package/dist/src/trace-analyzer/nats-trace-source.js +151 -0
  43. package/dist/src/trace-analyzer/nats-trace-source.js.map +1 -0
  44. package/dist/src/trace-analyzer/output-generator.d.ts +29 -0
  45. package/dist/src/trace-analyzer/output-generator.d.ts.map +1 -0
  46. package/dist/src/trace-analyzer/output-generator.js +142 -0
  47. package/dist/src/trace-analyzer/output-generator.js.map +1 -0
  48. package/dist/src/trace-analyzer/redactor.d.ts +14 -0
  49. package/dist/src/trace-analyzer/redactor.d.ts.map +1 -0
  50. package/dist/src/trace-analyzer/redactor.js +137 -0
  51. package/dist/src/trace-analyzer/redactor.js.map +1 -0
  52. package/dist/src/trace-analyzer/report.d.ts +93 -0
  53. package/dist/src/trace-analyzer/report.d.ts.map +1 -0
  54. package/dist/src/trace-analyzer/report.js +108 -0
  55. package/dist/src/trace-analyzer/report.js.map +1 -0
  56. package/dist/src/trace-analyzer/signals/correction.d.ts +11 -0
  57. package/dist/src/trace-analyzer/signals/correction.d.ts.map +1 -0
  58. package/dist/src/trace-analyzer/signals/correction.js +54 -0
  59. package/dist/src/trace-analyzer/signals/correction.js.map +1 -0
  60. package/dist/src/trace-analyzer/signals/dissatisfied.d.ts +11 -0
  61. package/dist/src/trace-analyzer/signals/dissatisfied.d.ts.map +1 -0
  62. package/dist/src/trace-analyzer/signals/dissatisfied.js +60 -0
  63. package/dist/src/trace-analyzer/signals/dissatisfied.js.map +1 -0
  64. package/dist/src/trace-analyzer/signals/doom-loop.d.ts +13 -0
  65. package/dist/src/trace-analyzer/signals/doom-loop.d.ts.map +1 -0
  66. package/dist/src/trace-analyzer/signals/doom-loop.js +156 -0
  67. package/dist/src/trace-analyzer/signals/doom-loop.js.map +1 -0
  68. package/dist/src/trace-analyzer/signals/hallucination.d.ts +11 -0
  69. package/dist/src/trace-analyzer/signals/hallucination.d.ts.map +1 -0
  70. package/dist/src/trace-analyzer/signals/hallucination.js +67 -0
  71. package/dist/src/trace-analyzer/signals/hallucination.js.map +1 -0
  72. package/dist/src/trace-analyzer/signals/index.d.ts +16 -0
  73. package/dist/src/trace-analyzer/signals/index.d.ts.map +1 -0
  74. package/dist/src/trace-analyzer/signals/index.js +92 -0
  75. package/dist/src/trace-analyzer/signals/index.js.map +1 -0
  76. package/dist/src/trace-analyzer/signals/lang/index.d.ts +4 -0
  77. package/dist/src/trace-analyzer/signals/lang/index.d.ts.map +1 -0
  78. package/dist/src/trace-analyzer/signals/lang/index.js +2 -0
  79. package/dist/src/trace-analyzer/signals/lang/index.js.map +1 -0
  80. package/dist/src/trace-analyzer/signals/lang/registry.d.ts +41 -0
  81. package/dist/src/trace-analyzer/signals/lang/registry.d.ts.map +1 -0
  82. package/dist/src/trace-analyzer/signals/lang/registry.js +111 -0
  83. package/dist/src/trace-analyzer/signals/lang/registry.js.map +1 -0
  84. package/dist/src/trace-analyzer/signals/lang/signal-lang-de.d.ts +10 -0
  85. package/dist/src/trace-analyzer/signals/lang/signal-lang-de.d.ts.map +1 -0
  86. package/dist/src/trace-analyzer/signals/lang/signal-lang-de.js +60 -0
  87. package/dist/src/trace-analyzer/signals/lang/signal-lang-de.js.map +1 -0
  88. package/dist/src/trace-analyzer/signals/lang/signal-lang-en.d.ts +4 -0
  89. package/dist/src/trace-analyzer/signals/lang/signal-lang-en.d.ts.map +1 -0
  90. package/dist/src/trace-analyzer/signals/lang/signal-lang-en.js +55 -0
  91. package/dist/src/trace-analyzer/signals/lang/signal-lang-en.js.map +1 -0
  92. package/dist/src/trace-analyzer/signals/lang/signal-lang-es.d.ts +9 -0
  93. package/dist/src/trace-analyzer/signals/lang/signal-lang-es.d.ts.map +1 -0
  94. package/dist/src/trace-analyzer/signals/lang/signal-lang-es.js +59 -0
  95. package/dist/src/trace-analyzer/signals/lang/signal-lang-es.js.map +1 -0
  96. package/dist/src/trace-analyzer/signals/lang/signal-lang-fr.d.ts +10 -0
  97. package/dist/src/trace-analyzer/signals/lang/signal-lang-fr.d.ts.map +1 -0
  98. package/dist/src/trace-analyzer/signals/lang/signal-lang-fr.js +60 -0
  99. package/dist/src/trace-analyzer/signals/lang/signal-lang-fr.js.map +1 -0
  100. package/dist/src/trace-analyzer/signals/lang/signal-lang-it.d.ts +9 -0
  101. package/dist/src/trace-analyzer/signals/lang/signal-lang-it.d.ts.map +1 -0
  102. package/dist/src/trace-analyzer/signals/lang/signal-lang-it.js +59 -0
  103. package/dist/src/trace-analyzer/signals/lang/signal-lang-it.js.map +1 -0
  104. package/dist/src/trace-analyzer/signals/lang/signal-lang-ja.d.ts +9 -0
  105. package/dist/src/trace-analyzer/signals/lang/signal-lang-ja.d.ts.map +1 -0
  106. package/dist/src/trace-analyzer/signals/lang/signal-lang-ja.js +59 -0
  107. package/dist/src/trace-analyzer/signals/lang/signal-lang-ja.js.map +1 -0
  108. package/dist/src/trace-analyzer/signals/lang/signal-lang-ko.d.ts +9 -0
  109. package/dist/src/trace-analyzer/signals/lang/signal-lang-ko.d.ts.map +1 -0
  110. package/dist/src/trace-analyzer/signals/lang/signal-lang-ko.js +59 -0
  111. package/dist/src/trace-analyzer/signals/lang/signal-lang-ko.js.map +1 -0
  112. package/dist/src/trace-analyzer/signals/lang/signal-lang-pt.d.ts +9 -0
  113. package/dist/src/trace-analyzer/signals/lang/signal-lang-pt.d.ts.map +1 -0
  114. package/dist/src/trace-analyzer/signals/lang/signal-lang-pt.js +59 -0
  115. package/dist/src/trace-analyzer/signals/lang/signal-lang-pt.js.map +1 -0
  116. package/dist/src/trace-analyzer/signals/lang/signal-lang-ru.d.ts +9 -0
  117. package/dist/src/trace-analyzer/signals/lang/signal-lang-ru.d.ts.map +1 -0
  118. package/dist/src/trace-analyzer/signals/lang/signal-lang-ru.js +59 -0
  119. package/dist/src/trace-analyzer/signals/lang/signal-lang-ru.js.map +1 -0
  120. package/dist/src/trace-analyzer/signals/lang/signal-lang-zh.d.ts +8 -0
  121. package/dist/src/trace-analyzer/signals/lang/signal-lang-zh.d.ts.map +1 -0
  122. package/dist/src/trace-analyzer/signals/lang/signal-lang-zh.js +58 -0
  123. package/dist/src/trace-analyzer/signals/lang/signal-lang-zh.js.map +1 -0
  124. package/dist/src/trace-analyzer/signals/lang/types.d.ts +76 -0
  125. package/dist/src/trace-analyzer/signals/lang/types.d.ts.map +1 -0
  126. package/dist/src/trace-analyzer/signals/lang/types.js +12 -0
  127. package/dist/src/trace-analyzer/signals/lang/types.js.map +1 -0
  128. package/dist/src/trace-analyzer/signals/repeat-fail.d.ts +24 -0
  129. package/dist/src/trace-analyzer/signals/repeat-fail.d.ts.map +1 -0
  130. package/dist/src/trace-analyzer/signals/repeat-fail.js +112 -0
  131. package/dist/src/trace-analyzer/signals/repeat-fail.js.map +1 -0
  132. package/dist/src/trace-analyzer/signals/tool-fail.d.ts +10 -0
  133. package/dist/src/trace-analyzer/signals/tool-fail.d.ts.map +1 -0
  134. package/dist/src/trace-analyzer/signals/tool-fail.js +99 -0
  135. package/dist/src/trace-analyzer/signals/tool-fail.js.map +1 -0
  136. package/dist/src/trace-analyzer/signals/types.d.ts +54 -0
  137. package/dist/src/trace-analyzer/signals/types.d.ts.map +1 -0
  138. package/dist/src/trace-analyzer/signals/types.js +9 -0
  139. package/dist/src/trace-analyzer/signals/types.js.map +1 -0
  140. package/dist/src/trace-analyzer/signals/unverified-claim.d.ts +11 -0
  141. package/dist/src/trace-analyzer/signals/unverified-claim.d.ts.map +1 -0
  142. package/dist/src/trace-analyzer/signals/unverified-claim.js +84 -0
  143. package/dist/src/trace-analyzer/signals/unverified-claim.js.map +1 -0
  144. package/dist/src/trace-analyzer/trace-source.d.ts +31 -0
  145. package/dist/src/trace-analyzer/trace-source.d.ts.map +1 -0
  146. package/dist/src/trace-analyzer/trace-source.js +5 -0
  147. package/dist/src/trace-analyzer/trace-source.js.map +1 -0
  148. package/dist/src/trace-analyzer/util.d.ts +17 -0
  149. package/dist/src/trace-analyzer/util.d.ts.map +1 -0
  150. package/dist/src/trace-analyzer/util.js +26 -0
  151. package/dist/src/trace-analyzer/util.js.map +1 -0
  152. package/dist/src/types.d.ts +2 -0
  153. package/dist/src/types.d.ts.map +1 -1
  154. package/dist/src/types.js.map +1 -1
  155. package/openclaw.plugin.json +184 -2
  156. package/package.json +7 -4
@@ -146,10 +146,11 @@
146
146
  "enum": [
147
147
  "en",
148
148
  "de",
149
- "both"
149
+ "both",
150
+ "all"
150
151
  ],
151
152
  "default": "both",
152
- "description": "Language for regex pattern matching: English, German, or both"
153
+ "description": "Language for regex pattern matching: English, German, both, or all 10 languages"
153
154
  }
154
155
  }
155
156
  },
@@ -193,6 +194,187 @@
193
194
  "description": "Number of messages to buffer before calling the LLM"
194
195
  }
195
196
  }
197
+ },
198
+ "traceAnalyzer": {
199
+ "type": "object",
200
+ "additionalProperties": false,
201
+ "description": "Trace Analyzer — 3-stage pipeline for detecting failure signals in NATS event streams",
202
+ "properties": {
203
+ "enabled": {
204
+ "type": "boolean",
205
+ "default": false,
206
+ "description": "Master switch for trace analysis"
207
+ },
208
+ "nats": {
209
+ "type": "object",
210
+ "additionalProperties": false,
211
+ "properties": {
212
+ "url": {
213
+ "type": "string",
214
+ "default": "nats://localhost:4222",
215
+ "description": "NATS server URL"
216
+ },
217
+ "stream": {
218
+ "type": "string",
219
+ "default": "openclaw-events",
220
+ "description": "JetStream stream name"
221
+ },
222
+ "subjectPrefix": {
223
+ "type": "string",
224
+ "default": "openclaw.events",
225
+ "description": "NATS subject prefix"
226
+ },
227
+ "credentials": {
228
+ "type": "string",
229
+ "description": "Optional NATS credentials file path"
230
+ },
231
+ "user": {
232
+ "type": "string",
233
+ "description": "Optional NATS user"
234
+ },
235
+ "password": {
236
+ "type": "string",
237
+ "description": "Optional NATS password"
238
+ }
239
+ }
240
+ },
241
+ "schedule": {
242
+ "type": "object",
243
+ "additionalProperties": false,
244
+ "properties": {
245
+ "enabled": {
246
+ "type": "boolean",
247
+ "default": false,
248
+ "description": "Enable scheduled analysis runs"
249
+ },
250
+ "intervalHours": {
251
+ "type": "integer",
252
+ "minimum": 1,
253
+ "maximum": 168,
254
+ "default": 24,
255
+ "description": "Hours between scheduled runs"
256
+ }
257
+ }
258
+ },
259
+ "chainGapMinutes": {
260
+ "type": "integer",
261
+ "minimum": 1,
262
+ "maximum": 120,
263
+ "default": 30,
264
+ "description": "Inactivity gap in minutes for chain boundary detection"
265
+ },
266
+ "signals": {
267
+ "type": "object",
268
+ "description": "Per-signal toggles and severity overrides",
269
+ "additionalProperties": {
270
+ "type": "object",
271
+ "properties": {
272
+ "enabled": {
273
+ "type": "boolean"
274
+ },
275
+ "severity": {
276
+ "type": "string",
277
+ "enum": ["low", "medium", "high", "critical"]
278
+ }
279
+ }
280
+ }
281
+ },
282
+ "llm": {
283
+ "type": "object",
284
+ "additionalProperties": false,
285
+ "description": "LLM config for trace analysis finding classification",
286
+ "properties": {
287
+ "enabled": {
288
+ "type": "boolean",
289
+ "default": false,
290
+ "description": "Enable LLM-powered finding classification"
291
+ },
292
+ "endpoint": {
293
+ "type": "string",
294
+ "description": "OpenAI-compatible API endpoint"
295
+ },
296
+ "model": {
297
+ "type": "string",
298
+ "description": "Model identifier"
299
+ },
300
+ "apiKey": {
301
+ "type": "string",
302
+ "description": "API key (optional)"
303
+ },
304
+ "timeoutMs": {
305
+ "type": "integer",
306
+ "minimum": 1000,
307
+ "maximum": 120000,
308
+ "description": "Timeout per LLM call in milliseconds"
309
+ },
310
+ "triage": {
311
+ "type": "object",
312
+ "additionalProperties": false,
313
+ "description": "Optional fast/local triage model for pre-filtering",
314
+ "properties": {
315
+ "endpoint": {
316
+ "type": "string"
317
+ },
318
+ "model": {
319
+ "type": "string"
320
+ },
321
+ "apiKey": {
322
+ "type": "string"
323
+ },
324
+ "timeoutMs": {
325
+ "type": "integer",
326
+ "minimum": 1000,
327
+ "maximum": 60000
328
+ }
329
+ }
330
+ }
331
+ }
332
+ },
333
+ "output": {
334
+ "type": "object",
335
+ "additionalProperties": false,
336
+ "properties": {
337
+ "maxFindings": {
338
+ "type": "integer",
339
+ "minimum": 1,
340
+ "maximum": 1000,
341
+ "default": 200,
342
+ "description": "Maximum findings in a single report"
343
+ },
344
+ "reportPath": {
345
+ "type": "string",
346
+ "description": "Custom report output path"
347
+ }
348
+ }
349
+ },
350
+ "redactPatterns": {
351
+ "type": "array",
352
+ "items": { "type": "string" },
353
+ "default": [],
354
+ "description": "Regex patterns for PII redaction before LLM/disk writes"
355
+ },
356
+ "incrementalContextWindow": {
357
+ "type": "integer",
358
+ "minimum": 50,
359
+ "maximum": 5000,
360
+ "default": 500,
361
+ "description": "Context window size for incremental processing"
362
+ },
363
+ "fetchBatchSize": {
364
+ "type": "integer",
365
+ "minimum": 10,
366
+ "maximum": 5000,
367
+ "default": 500,
368
+ "description": "NATS consumer batch size for fetching events"
369
+ },
370
+ "maxEventsPerRun": {
371
+ "type": "integer",
372
+ "minimum": 100,
373
+ "maximum": 1000000,
374
+ "default": 100000,
375
+ "description": "Maximum events to process per run"
376
+ }
377
+ }
196
378
  }
197
379
  }
198
380
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vainplex/openclaw-cortex",
3
- "version": "0.3.1",
4
- "description": "OpenClaw plugin: conversation intelligence — thread tracking, decision extraction, boot context, pre-compaction snapshots",
3
+ "version": "0.4.1",
4
+ "description": "OpenClaw plugin: conversation intelligence — thread tracking, decision extraction, boot context, pre-compaction snapshots, trace analysis",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -37,7 +37,10 @@
37
37
  "memory",
38
38
  "thread-tracking",
39
39
  "boot-context",
40
- "conversation-intelligence"
40
+ "conversation-intelligence",
41
+ "trace-analyzer",
42
+ "signal-detection",
43
+ "conversation-analysis"
41
44
  ],
42
45
  "license": "MIT",
43
46
  "repository": {
@@ -45,6 +48,6 @@
45
48
  "url": "https://github.com/alberthild/vainplex-openclaw.git",
46
49
  "directory": "packages/openclaw-cortex"
47
50
  },
48
- "homepage": "https://github.com/alberthild/openclaw-cortex#readme",
51
+ "homepage": "https://github.com/alberthild/vainplex-openclaw/tree/main/packages/openclaw-cortex",
49
52
  "author": "Albert Hild <a.hild@vainplex.de>"
50
53
  }