@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
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @vainplex/openclaw-cortex
2
2
 
3
- > Conversation intelligence layer for [OpenClaw](https://github.com/openclaw/openclaw) — automated thread tracking, decision extraction, boot context generation, and pre-compaction snapshots.
3
+ > Conversation intelligence layer for [OpenClaw](https://github.com/openclaw/openclaw) — automated thread tracking, decision extraction, boot context generation, pre-compaction snapshots, and trace analysis.
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/@vainplex/openclaw-cortex)](https://www.npmjs.com/package/@vainplex/openclaw-cortex)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
@@ -14,6 +14,7 @@
14
14
  - **🚀 Generates boot context** — assembles a dense `BOOTSTRAP.md` at session start so the agent has continuity
15
15
  - **📸 Pre-compaction snapshots** — saves thread state + hot snapshot before memory compaction
16
16
  - **📖 Structured narratives** — generates 24h activity summaries from threads + decisions
17
+ - **🔍 Trace Analyzer** — 3-stage pipeline that detects failure signals, classifies findings with LLM triage, and generates PII-redacted reports
17
18
 
18
19
  Works **alongside** `memory-core` (OpenClaw's built-in memory) — doesn't replace it.
19
20
 
@@ -32,8 +33,9 @@ The LLM runs **on top of regex** — it enhances, never replaces. If the LLM is
32
33
  Try the interactive demo — it simulates a real bilingual dev conversation and shows every Cortex feature in action:
33
34
 
34
35
  ```bash
35
- git clone https://github.com/alberthild/openclaw-cortex.git
36
- cd openclaw-cortex && npm install
36
+ git clone https://github.com/alberthild/vainplex-openclaw.git
37
+ cd vainplex-openclaw/packages/openclaw-cortex
38
+ npm install
37
39
  npx tsx demo/demo.ts
38
40
  ```
39
41
 
@@ -200,8 +202,9 @@ Or clone directly:
200
202
 
201
203
  ```bash
202
204
  cd ~/.openclaw/extensions
203
- git clone https://github.com/alberthild/openclaw-cortex.git
204
- cd openclaw-cortex && npm install && npm run build
205
+ git clone https://github.com/alberthild/vainplex-openclaw.git
206
+ cd vainplex-openclaw/packages/openclaw-cortex
207
+ npm install && npm run build
205
208
  ```
206
209
 
207
210
  ## Configure
@@ -222,35 +225,33 @@ Then create `~/.openclaw/plugins/openclaw-cortex/config.json`:
222
225
 
223
226
  ```json
224
227
  {
225
- "patterns": {
226
- "language": "all"
227
- },
228
- "threadTracker": {
229
- "enabled": true,
230
- "pruneDays": 7,
231
- "maxThreads": 50
232
- },
233
- "decisionTracker": {
234
- "enabled": true,
235
- "maxDecisions": 100,
236
- "dedupeWindowHours": 24
237
- },
238
- "bootContext": {
239
- "enabled": true,
240
- "maxChars": 16000,
241
- "onSessionStart": true,
242
- "maxThreadsInBoot": 7,
243
- "maxDecisionsInBoot": 10,
244
- "decisionRecencyDays": 14
245
- },
246
- "preCompaction": {
247
- "enabled": true,
248
- "maxSnapshotMessages": 15
249
- },
250
- "narrative": {
251
- "enabled": true
252
- }
253
- }
228
+ "patterns": {
229
+ "language": "all"
230
+ },
231
+ "threadTracker": {
232
+ "enabled": true,
233
+ "pruneDays": 7,
234
+ "maxThreads": 50
235
+ },
236
+ "decisionTracker": {
237
+ "enabled": true,
238
+ "maxDecisions": 100,
239
+ "dedupeWindowHours": 24
240
+ },
241
+ "bootContext": {
242
+ "enabled": true,
243
+ "maxChars": 16000,
244
+ "onSessionStart": true,
245
+ "maxThreadsInBoot": 7,
246
+ "maxDecisionsInBoot": 10,
247
+ "decisionRecencyDays": 14
248
+ },
249
+ "preCompaction": {
250
+ "enabled": true,
251
+ "maxSnapshotMessages": 15
252
+ },
253
+ "narrative": {
254
+ "enabled": true
254
255
  }
255
256
  }
256
257
  ```
@@ -393,11 +394,108 @@ The LLM sees a conversation snippet (configurable batch size) and returns:
393
394
  - Hook errors → caught and logged, never crashes the gateway
394
395
  - LLM timeout/error → falls back to regex-only, no data loss
395
396
 
397
+ ## Trace Analyzer (v0.4.0)
398
+
399
+ The Trace Analyzer is a **3-stage pipeline** that processes NATS event streams to detect failure patterns in AI agent conversations. It reconstructs conversation chains, runs signal detection, classifies findings with an optional LLM triage step, applies PII redaction, and generates structured reports.
400
+
401
+ ### 3-Stage Pipeline
402
+
403
+ ```
404
+ Stage 1: Ingest + Reconstruct
405
+ NATS events → normalize → chain reconstruction (gap-based splitting)
406
+
407
+ Stage 2: Signal Detection + Classification
408
+ chains → 7 signal detectors (multi-language) → LLM triage (optional) → classified findings
409
+
410
+ Stage 3: Redaction + Output
411
+ findings → PII redaction → report assembly → Markdown/JSON output
412
+ ```
413
+
414
+ ### 7 Signal Detectors
415
+
416
+ | Signal ID | Detects | Default |
417
+ |-----------|---------|---------|
418
+ | `SIG-CORRECTION` | User correcting the agent after a wrong response | ✅ enabled |
419
+ | `SIG-TOOL-FAIL` | Tool/function call failures and error responses | ✅ enabled |
420
+ | `SIG-DOOM-LOOP` | Agent stuck in repetitive retry loops | ✅ enabled |
421
+ | `SIG-DISSATISFIED` | User expressing frustration or dissatisfaction | ✅ enabled |
422
+ | `SIG-REPEAT-FAIL` | Same failure pattern recurring across sessions | ✅ enabled |
423
+ | `SIG-HALLUCINATION` | Agent making claims contradicted by tool output | ✅ enabled |
424
+ | `SIG-UNVERIFIED-CLAIM` | Agent stating facts without tool verification | ❌ disabled |
425
+
426
+ Each detector supports **multi-language signal patterns** — the same 10 languages as the core pattern engine (EN, DE, FR, ES, PT, IT, ZH, JA, KO, RU).
427
+
428
+ ### Configuration
429
+
430
+ Add a `traceAnalyzer` section to your external config (`~/.openclaw/plugins/openclaw-cortex/config.json`):
431
+
432
+ ```json
433
+ {
434
+ "traceAnalyzer": {
435
+ "enabled": true,
436
+ "nats": {
437
+ "url": "nats://localhost:4222",
438
+ "stream": "openclaw-events",
439
+ "subjectPrefix": "openclaw.events"
440
+ },
441
+ "schedule": {
442
+ "enabled": true,
443
+ "intervalHours": 24
444
+ },
445
+ "signals": {
446
+ "SIG-UNVERIFIED-CLAIM": { "enabled": true, "severity": "medium" }
447
+ },
448
+ "llm": {
449
+ "enabled": true,
450
+ "endpoint": "http://localhost:11434/v1",
451
+ "model": "mistral:7b"
452
+ },
453
+ "output": {
454
+ "maxFindings": 200,
455
+ "reportPath": "./reports/trace-analysis.md"
456
+ },
457
+ "redactPatterns": ["\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b"]
458
+ }
459
+ }
460
+ ```
461
+
462
+ | Setting | Default | Description |
463
+ |---------|---------|-------------|
464
+ | `enabled` | `false` | Master switch for trace analysis |
465
+ | `nats.url` | `nats://localhost:4222` | NATS server URL |
466
+ | `nats.stream` | `openclaw-events` | JetStream stream name |
467
+ | `schedule.enabled` | `false` | Enable scheduled analysis runs |
468
+ | `schedule.intervalHours` | `24` | Hours between runs |
469
+ | `chainGapMinutes` | `30` | Inactivity gap for chain boundary detection |
470
+ | `llm.enabled` | `false` | Enable LLM-powered finding classification |
471
+ | `llm.triage` | — | Optional fast/local model for pre-filtering |
472
+ | `output.maxFindings` | `200` | Maximum findings per report |
473
+ | `output.reportPath` | — | Custom report output path |
474
+ | `redactPatterns` | `[]` | Regex patterns for PII redaction |
475
+
476
+ ### Programmatic API
477
+
478
+ The trace analyzer is fully exported for programmatic use:
479
+
480
+ ```typescript
481
+ import {
482
+ TraceAnalyzer,
483
+ createNatsTraceSource,
484
+ reconstructChains,
485
+ detectAllSignals,
486
+ classifyFindings,
487
+ redactChain,
488
+ assembleReport,
489
+ generateOutputs,
490
+ resolveTraceAnalyzerConfig,
491
+ } from "@vainplex/openclaw-cortex";
492
+ ```
493
+
396
494
  ## Development
397
495
 
398
496
  ```bash
399
497
  npm install
400
- npm test # 516 tests
498
+ npm test # 850 tests
401
499
  npm run typecheck # TypeScript strict mode
402
500
  npm run build # Compile to dist/
403
501
  ```
@@ -409,7 +507,7 @@ npm run build # Compile to dist/
409
507
  - LLM enhancement: async, batched, fire-and-forget (never blocks hooks)
410
508
  - Atomic file writes via `.tmp` + rename
411
509
  - Noise filter prevents garbage threads from polluting state
412
- - Tested with 516 unit + integration tests
510
+ - Tested with 850 unit + integration tests
413
511
 
414
512
  ## Architecture
415
513
 
@@ -421,14 +519,11 @@ MIT — see [LICENSE](LICENSE)
421
519
 
422
520
  ## Part of the Vainplex Plugin Suite
423
521
 
424
- | # | Plugin | Status | Description |
425
- |---|--------|--------|-------------|
426
- | 1 | [@vainplex/nats-eventstore](https://github.com/alberthild/vainplex-openclaw/tree/main/packages/openclaw-nats-eventstore) | ✅ Published | NATS JetStream event persistence |
427
- | 2 | **@vainplex/openclaw-cortex** | ✅ Published | Conversation intelligence — threads, decisions, boot context, 10 languages (this plugin) |
428
- | 3 | [@vainplex/openclaw-knowledge-engine](https://github.com/alberthild/vainplex-openclaw/tree/main/packages/openclaw-knowledge-engine) | ✅ Published | Real-time knowledge extraction |
429
- | 4 | [@vainplex/openclaw-governance](https://github.com/alberthild/vainplex-openclaw/tree/main/packages/openclaw-governance) | ✅ Published | Policy-as-code engine — trust scoring, audit trail, production safeguards |
430
- | 5 | @vainplex/openclaw-health-monitor | 📋 Planned | System health + auto-healing |
431
-
432
- ## License
522
+ All plugins live in one monorepo: [alberthild/vainplex-openclaw](https://github.com/alberthild/vainplex-openclaw)
433
523
 
434
- MIT see [LICENSE](LICENSE)
524
+ | # | Plugin | Version | Description |
525
+ |---|--------|---------|-------------|
526
+ | 1 | [@vainplex/nats-eventstore](https://github.com/alberthild/vainplex-openclaw/tree/main/packages/openclaw-nats-eventstore) | 0.2.1 | NATS JetStream event persistence + audit trail |
527
+ | 2 | **@vainplex/openclaw-cortex** | **0.4.0** | Conversation intelligence — threads, decisions, boot context, trace analysis, 10 languages (this plugin) |
528
+ | 3 | [@vainplex/openclaw-knowledge-engine](https://github.com/alberthild/vainplex-openclaw/tree/main/packages/openclaw-knowledge-engine) | 0.1.4 | Real-time fact extraction from conversations |
529
+ | 4 | [@vainplex/openclaw-governance](https://github.com/alberthild/vainplex-openclaw/tree/main/packages/openclaw-governance) | 0.3.2 | Policy-as-code — trust scoring, audit trail, production safeguards |
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { OpenClawPluginApi } from "./src/types.js";
2
+ export * from "./src/trace-analyzer/index.js";
2
3
  declare const plugin: {
3
4
  id: string;
4
5
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAe,MAAM,gBAAgB,CAAC;AAErE,QAAA,MAAM,MAAM;;;;;kBAOI,iBAAiB;CA8ChC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAe,MAAM,gBAAgB,CAAC;AAGrE,cAAc,+BAA+B,CAAC;AAE9C,QAAA,MAAM,MAAM;;;;;kBAOI,iBAAiB;CA8ChC,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -2,6 +2,8 @@ import { registerCortexHooks } from "./src/hooks.js";
2
2
  import { resolveWorkspace } from "./src/config.js";
3
3
  import { loadConfig } from "./src/config-loader.js";
4
4
  import { loadJson, rebootDir } from "./src/storage.js";
5
+ // ---- Trace Analyzer public API re-export ----
6
+ export * from "./src/trace-analyzer/index.js";
5
7
  const plugin = {
6
8
  id: "openclaw-cortex",
7
9
  name: "OpenClaw Cortex",
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGvD,MAAM,MAAM,GAAG;IACb,EAAE,EAAE,iBAAiB;IACrB,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,0GAA0G;IAC5G,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,8BAA8B,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QAE3E,6BAA6B;QAC7B,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAEjC,iCAAiC;QACjC,GAAG,CAAC,eAAe,CAAC;YAClB,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,4DAA4D;YACzE,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAC3C,MAAM,IAAI,GAAG,QAAQ,CACnB,GAAG,SAAS,CAAC,SAAS,CAAC,eAAe,CACvC,CAAC;oBACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;oBACnC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;oBAClE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;oBACtE,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC;oBAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;oBAExC,OAAO;wBACL,IAAI,EAAE;4BACJ,mBAAmB;4BACnB,YAAY,SAAS,UAAU,WAAW,SAAS;4BACnD,SAAS,IAAI,EAAE;4BACf,YAAY,OAAO,EAAE;yBACtB,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,IAAI,EAAE,4CAA4C,EAAE,CAAC;gBAChE,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGvD,gDAAgD;AAChD,cAAc,+BAA+B,CAAC;AAE9C,MAAM,MAAM,GAAG;IACb,EAAE,EAAE,iBAAiB;IACrB,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,0GAA0G;IAC5G,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,8BAA8B,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QAE3E,6BAA6B;QAC7B,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAEjC,iCAAiC;QACjC,GAAG,CAAC,eAAe,CAAC;YAClB,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,4DAA4D;YACzE,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAC3C,MAAM,IAAI,GAAG,QAAQ,CACnB,GAAG,SAAS,CAAC,SAAS,CAAC,eAAe,CACvC,CAAC;oBACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;oBACnC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;oBAClE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;oBACtE,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC;oBAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC;oBAExC,OAAO;wBACL,IAAI,EAAE;4BACJ,mBAAmB;4BACnB,YAAY,SAAS,UAAU,WAAW,SAAS;4BACnD,SAAS,IAAI,EAAE;4BACf,YAAY,OAAO,EAAE;yBACtB,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,IAAI,EAAE,4CAA4C,EAAE,CAAC;gBAChE,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,QAAQ,EAAE,YAuCtB,CAAC;AA6CF,wBAAgB,aAAa,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAmDlF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,GAAG,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,MAAM,CAIR"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,eAAO,MAAM,QAAQ,EAAE,YAwCtB,CAAC;AA6CF,wBAAgB,aAAa,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAsDlF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,EACpB,GAAG,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9B,MAAM,CAIR"}
@@ -1,3 +1,4 @@
1
+ import { TRACE_ANALYZER_DEFAULTS, resolveTraceAnalyzerConfig } from "./trace-analyzer/config.js";
1
2
  export const DEFAULTS = {
2
3
  enabled: true,
3
4
  workspace: "",
@@ -37,6 +38,7 @@ export const DEFAULTS = {
37
38
  timeoutMs: 15000,
38
39
  batchSize: 3,
39
40
  },
41
+ traceAnalyzer: TRACE_ANALYZER_DEFAULTS,
40
42
  };
41
43
  function bool(value, fallback) {
42
44
  return typeof value === "boolean" ? value : fallback;
@@ -129,6 +131,7 @@ export function resolveConfig(pluginConfig) {
129
131
  timeoutMs: int(lm.timeoutMs, DEFAULTS.llm.timeoutMs),
130
132
  batchSize: int(lm.batchSize, DEFAULTS.llm.batchSize),
131
133
  },
134
+ traceAnalyzer: resolveTraceAnalyzerConfig((raw.traceAnalyzer ?? undefined)),
132
135
  };
133
136
  }
134
137
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EAGb,MAAM,YAAY,CAAC;AA2HpB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAUtF"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EAGb,MAAM,YAAY,CAAC;AA4HpB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAuBtF"}
package/dist/src/hooks.js CHANGED
@@ -4,6 +4,7 @@ import { DecisionTracker } from "./decision-tracker.js";
4
4
  import { BootContextGenerator } from "./boot-context.js";
5
5
  import { PreCompaction } from "./pre-compaction.js";
6
6
  import { LlmEnhancer } from "./llm-enhance.js";
7
+ import { registerTraceAnalyzerHooks, cleanupTraceAnalyzerHooks } from "./trace-analyzer/index.js";
7
8
  /**
8
9
  * Extract message content from a hook event using the fallback chain.
9
10
  */
@@ -119,6 +120,17 @@ export function registerCortexHooks(api, config) {
119
120
  registerMessageHooks(api, config, state);
120
121
  registerSessionHooks(api, config, state);
121
122
  registerCompactionHooks(api, config, state);
122
- api.logger.info(`[cortex] Hooks registeredthreads:${config.threadTracker.enabled} decisions:${config.decisionTracker.enabled} boot:${config.bootContext.enabled} compaction:${config.preCompaction.enabled} llm:${config.llm.enabled}${config.llm.enabled ? ` (${config.llm.model}@${config.llm.endpoint})` : ""}`);
123
+ // Trace Analyzerconditional registration (R-010, R-013, R-028)
124
+ if (config.traceAnalyzer?.enabled) {
125
+ const taState = { timer: null, analyzer: null };
126
+ registerTraceAnalyzerHooks(api, config, taState);
127
+ // Register cleanup as a service so it runs on plugin stop
128
+ api.registerService({
129
+ id: "trace-analyzer",
130
+ start: async () => { },
131
+ stop: async () => { cleanupTraceAnalyzerHooks(taState); },
132
+ });
133
+ }
134
+ api.logger.info(`[cortex] Hooks registered — threads:${config.threadTracker.enabled} decisions:${config.decisionTracker.enabled} boot:${config.bootContext.enabled} compaction:${config.preCompaction.enabled} llm:${config.llm.enabled}${config.llm.enabled ? ` (${config.llm.model}@${config.llm.endpoint})` : ""} trace:${config.traceAnalyzer?.enabled ?? false}`);
123
135
  }
124
136
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { PluginLogger } from "../types.js";
2
+ import type { LlmConfig } from "../llm-enhance.js";
3
+ import type { TraceSource } from "./trace-source.js";
4
+ import type { TraceAnalyzerConfig } from "./config.js";
5
+ import type { AnalysisReport, ProcessingState } from "./report.js";
6
+ import type { SignalPatternSet } from "./signals/index.js";
7
+ export type TraceAnalyzerRunOpts = {
8
+ /** If true, reprocesses all events from the beginning. */
9
+ full?: boolean;
10
+ };
11
+ export type TraceAnalyzerStatus = {
12
+ lastRun: string | null;
13
+ findings: number;
14
+ state: Partial<ProcessingState>;
15
+ };
16
+ /**
17
+ * TraceAnalyzer — orchestrates the 3-stage analysis pipeline.
18
+ *
19
+ * Create via constructor, then call `run()` for a full analysis.
20
+ * The analyzer manages its own processing state for incremental runs.
21
+ */
22
+ export declare class TraceAnalyzer {
23
+ private readonly config;
24
+ private readonly topLevelLlm;
25
+ private readonly workspace;
26
+ private readonly logger;
27
+ private readonly createSource;
28
+ /** Pre-loaded signal patterns (if provided). */
29
+ private signalPatterns;
30
+ constructor(params: {
31
+ config: TraceAnalyzerConfig;
32
+ logger: PluginLogger;
33
+ workspace: string;
34
+ topLevelLlm: LlmConfig;
35
+ createSource?: () => Promise<TraceSource | null>;
36
+ /** Pre-loaded signal patterns. If not provided, falls back to EN+DE. */
37
+ signalPatterns?: SignalPatternSet;
38
+ });
39
+ /**
40
+ * Execute the full analysis pipeline.
41
+ *
42
+ * @param opts.full — If true, reprocess all events from the beginning.
43
+ * @returns The analysis report.
44
+ */
45
+ run(opts?: TraceAnalyzerRunOpts): Promise<AnalysisReport>;
46
+ /**
47
+ * Get the current analyzer status.
48
+ */
49
+ getStatus(): Promise<TraceAnalyzerStatus>;
50
+ /** Steps 2-3: Fetch events and reconstruct conversation chains. */
51
+ private fetchAndReconstructChains;
52
+ /** Steps 4-6: Detect signals and optionally classify with LLM. */
53
+ private detectAndClassify;
54
+ /** Steps 7-8: Generate outputs, assemble report, persist. */
55
+ private generateAndPersist;
56
+ private executePipeline;
57
+ private loadState;
58
+ }
59
+ //# sourceMappingURL=analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../../src/trace-analyzer/analyzer.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAY,MAAM,aAAa,CAAC;AAIjE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA0C3D,MAAM,MAAM,oBAAoB,GAAG;IACjC,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAY;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6C;IAC1E,gDAAgD;IAChD,OAAO,CAAC,cAAc,CAA+B;gBAEzC,MAAM,EAAE;QAClB,MAAM,EAAE,mBAAmB,CAAC;QAC5B,MAAM,EAAE,YAAY,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,SAAS,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;QACjD,wEAAwE;QACxE,cAAc,CAAC,EAAE,gBAAgB,CAAC;KACnC;IASD;;;;;OAKG;IACG,GAAG,CAAC,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;IAiC/D;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAW/C,mEAAmE;YACrD,yBAAyB;IAqBvC,kEAAkE;YACpD,iBAAiB;IAoB/B,6DAA6D;IAC7D,OAAO,CAAC,kBAAkB;YAsBZ,eAAe;IAY7B,OAAO,CAAC,SAAS;CAMlB"}
@@ -0,0 +1,175 @@
1
+ // ============================================================
2
+ // Trace Analyzer — Orchestrator (Stage 1 → 2 → 3)
3
+ // ============================================================
4
+ //
5
+ // The TraceAnalyzer class orchestrates the full analysis pipeline:
6
+ // 1. Connect to TraceSource
7
+ // 2. Fetch events (incremental or full)
8
+ // 3. Reconstruct chains
9
+ // 4. Detect signals (Stage 1)
10
+ // 5. Classify via LLM (Stage 2, optional)
11
+ // 6. Generate outputs (Stage 3)
12
+ // 7. Assemble report
13
+ // 8. Persist report + processing state
14
+ // 9. Close TraceSource
15
+ //
16
+ // Implements R-010, R-012, R-015, R-019, R-020, R-043–R-045.
17
+ // ============================================================
18
+ import { join } from "node:path";
19
+ import { reconstructChains } from "./chain-reconstructor.js";
20
+ import { detectAllSignals, createRepeatFailState } from "./signals/index.js";
21
+ import { classifyFindings } from "./classifier.js";
22
+ import { generateOutputs } from "./output-generator.js";
23
+ import { assembleReport } from "./report.js";
24
+ import { loadJson, saveJson } from "../storage.js";
25
+ // ---- Severity ranking for sorting ----
26
+ const SEVERITY_RANK = {
27
+ low: 0,
28
+ medium: 1,
29
+ high: 2,
30
+ critical: 3,
31
+ };
32
+ // ---- Processing state path ----
33
+ function statePath(workspace) {
34
+ return join(workspace, "memory", "reboot", "trace-analyzer-state.json");
35
+ }
36
+ function reportPath(workspace, config) {
37
+ return config.output.reportPath
38
+ ?? join(workspace, "memory", "reboot", "trace-analysis-report.json");
39
+ }
40
+ // ---- Empty report factory ----
41
+ function emptyReport(startedAt, previousState) {
42
+ return assembleReport({
43
+ startedAt,
44
+ completedAt: Date.now(),
45
+ eventsProcessed: 0,
46
+ chains: [],
47
+ findings: [],
48
+ generatedOutputs: [],
49
+ previousState,
50
+ });
51
+ }
52
+ /**
53
+ * TraceAnalyzer — orchestrates the 3-stage analysis pipeline.
54
+ *
55
+ * Create via constructor, then call `run()` for a full analysis.
56
+ * The analyzer manages its own processing state for incremental runs.
57
+ */
58
+ export class TraceAnalyzer {
59
+ config;
60
+ topLevelLlm;
61
+ workspace;
62
+ logger;
63
+ createSource;
64
+ /** Pre-loaded signal patterns (if provided). */
65
+ signalPatterns;
66
+ constructor(params) {
67
+ this.config = params.config;
68
+ this.logger = params.logger;
69
+ this.workspace = params.workspace;
70
+ this.topLevelLlm = params.topLevelLlm;
71
+ this.createSource = params.createSource ?? null;
72
+ this.signalPatterns = params.signalPatterns;
73
+ }
74
+ /**
75
+ * Execute the full analysis pipeline.
76
+ *
77
+ * @param opts.full — If true, reprocess all events from the beginning.
78
+ * @returns The analysis report.
79
+ */
80
+ async run(opts) {
81
+ const startedAt = Date.now();
82
+ const previousState = this.loadState();
83
+ // 1. Connect to TraceSource
84
+ let source = null;
85
+ try {
86
+ source = this.createSource ? await this.createSource() : null;
87
+ }
88
+ catch (err) {
89
+ this.logger.warn(`[trace-analyzer] TraceSource connection failed: ${err instanceof Error ? err.message : String(err)}`);
90
+ }
91
+ if (!source) {
92
+ this.logger.warn("[trace-analyzer] No TraceSource available — returning empty report");
93
+ return emptyReport(startedAt, previousState);
94
+ }
95
+ try {
96
+ return await this.executePipeline(source, startedAt, previousState, opts);
97
+ }
98
+ finally {
99
+ // 9. Close TraceSource
100
+ try {
101
+ await source.close();
102
+ }
103
+ catch (err) {
104
+ this.logger.warn(`[trace-analyzer] Failed to close TraceSource: ${err instanceof Error ? err.message : String(err)}`);
105
+ }
106
+ }
107
+ }
108
+ /**
109
+ * Get the current analyzer status.
110
+ */
111
+ async getStatus() {
112
+ const state = this.loadState();
113
+ return {
114
+ lastRun: state.updatedAt || null,
115
+ findings: state.totalFindings ?? 0,
116
+ state,
117
+ };
118
+ }
119
+ // ---- Private Pipeline Steps ----
120
+ /** Steps 2-3: Fetch events and reconstruct conversation chains. */
121
+ async fetchAndReconstructChains(source, previousState, opts) {
122
+ const isFullRun = opts?.full === true || !previousState.lastProcessedTs;
123
+ const startMs = isFullRun
124
+ ? 0
125
+ : (previousState.lastProcessedTs ?? 0) - (this.config.incrementalContextWindow * 60_000);
126
+ const endMs = Date.now();
127
+ const events = source.fetchByTimeRange(Math.max(0, startMs), endMs, {
128
+ batchSize: this.config.fetchBatchSize,
129
+ });
130
+ return reconstructChains(events, {
131
+ gapMinutes: this.config.chainGapMinutes,
132
+ maxEventsPerChain: 1000,
133
+ });
134
+ }
135
+ /** Steps 4-6: Detect signals and optionally classify with LLM. */
136
+ async detectAndClassify(chains) {
137
+ const repeatFailState = createRepeatFailState();
138
+ let findings = detectAllSignals(chains, this.config.signals, repeatFailState, this.signalPatterns, this.logger);
139
+ if (findings.length > this.config.output.maxFindings) {
140
+ findings = findings
141
+ .sort((a, b) => SEVERITY_RANK[b.signal.severity] - SEVERITY_RANK[a.signal.severity])
142
+ .slice(0, this.config.output.maxFindings);
143
+ }
144
+ if (this.config.llm.enabled) {
145
+ const chainMap = new Map(chains.map(c => [c.id, c]));
146
+ findings = await classifyFindings(findings, chainMap, this.config, this.topLevelLlm, this.logger);
147
+ }
148
+ return findings;
149
+ }
150
+ /** Steps 7-8: Generate outputs, assemble report, persist. */
151
+ generateAndPersist(startedAt, eventsProcessed, chains, findings, previousState) {
152
+ const generatedOutputs = generateOutputs(findings);
153
+ const report = assembleReport({
154
+ startedAt, completedAt: Date.now(),
155
+ eventsProcessed, chains, findings, generatedOutputs, previousState,
156
+ });
157
+ saveJson(reportPath(this.workspace, this.config), report, this.logger);
158
+ saveJson(statePath(this.workspace), report.processingState, this.logger);
159
+ this.logger.info(`[trace-analyzer] Analysis complete: ${eventsProcessed} events, ${chains.length} chains, ${findings.length} findings`);
160
+ return report;
161
+ }
162
+ async executePipeline(source, startedAt, previousState, opts) {
163
+ const chains = await this.fetchAndReconstructChains(source, previousState, opts);
164
+ const eventsProcessed = chains.reduce((sum, c) => sum + c.events.length, 0);
165
+ const findings = await this.detectAndClassify(chains);
166
+ return this.generateAndPersist(startedAt, eventsProcessed, chains, findings, previousState);
167
+ }
168
+ loadState() {
169
+ const path = statePath(this.workspace);
170
+ const raw = loadJson(path);
171
+ // loadJson returns {} on failure, which satisfies Partial<ProcessingState>
172
+ return raw;
173
+ }
174
+ }
175
+ //# sourceMappingURL=analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../../src/trace-analyzer/analyzer.ts"],"names":[],"mappings":"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"}