@lacneu/openclaw-knowledge 3.2.4 → 3.2.6

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/CHANGELOG.md CHANGED
@@ -7,16 +7,91 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added — provenance reporting (provenance/v1, opt-in)
11
+
12
+ New `provenanceReport` config (`"off"` default | `"metadata"` | `"full"`).
13
+ When enabled, every injected knowledge section also emits a structured
14
+ provenance report on the gateway agent-event bus (stream
15
+ `openclaw-knowledge.provenance`) so a chat frontend (openclaw-webchat) can
16
+ show the user **which documents fed this reply** — pgvector items carry
17
+ `file_name`/`collection`/`score` (and the exact injected excerpt at `full`),
18
+ LightRAG carries the mode and the injected context excerpt. The report mirrors
19
+ EXACTLY what reached the LLM (post-rerank, post-truncation), never the raw
20
+ retrieval. Normative contract: openclaw-webchat `docs/PROVENANCE_CONTRACT.md`.
21
+
22
+ Robustness/privacy invariants: emission degrades to SILENCE on old SDKs
23
+ (`emitAgentEvent` feature-detected), on a missing `runId`, or on a gateway
24
+ rejection (logged, metadata only); reports never go through logs; the gateway
25
+ re-registration quirk is handled by emitting through the FIRST registration's
26
+ api (module singleton). Off-list config values normalize to `"off"`.
27
+
28
+ ### Fixed — pgvector provenance now reports ONLY entries actually injected
29
+
30
+ `buildPgvectorProvenance` was previously fed the full post-rerank list
31
+ (`result.data`) instead of the post-`maxInjectChars` subset that actually
32
+ reaches the LLM. When the character budget truncated the list,
33
+ `formatPgvectorResults` `break`ed after the budget was exhausted but the
34
+ provenance report still exposed metadata (and excerpts in `full` mode) for
35
+ the dropped entries — leaking file names and content for documents the
36
+ LLM never saw, in violation of the PROVENANCE_CONTRACT rule "emit what was
37
+ injected, not what was retrieved".
38
+
39
+ A new internal helper `formatPgvectorResultsDetailed(results, maxChars):
40
+ { output, injectedCount } | null` carries the truncation logic and exposes
41
+ the count of entries that actually fit the budget; `renderSection` uses it
42
+ to slice `result.data` to the exact prefix injected and pass it to
43
+ `buildPgvectorProvenance`. The public `formatPgvectorResults` signature
44
+ remains `(results, maxChars) => string | null` (a thin wrapper over the
45
+ Detailed variant) — preserving backward compatibility across the v3.x
46
+ line. Both helpers return `null` when no entry fits the budget,
47
+ preserving the prior `if (!formatted)` skip-path. The LightRAG provenance
48
+ path was unaffected because it already used the post-truncation
49
+ `formatted.truncated` text directly.
50
+
51
+ ### Fixed — provenance emission failures never leak payload to logs (codex pass #36 P2)
52
+
53
+ `emitProvenanceReports` previously interpolated the gateway's raw `reason`
54
+ string AND the caught `Error.message` into its `logger.warn` lines.
55
+ Either path could echo back content the emitter was rejecting — the
56
+ gateway commonly cites the offending field/value in its validation
57
+ reasons, and third-party libs routinely enrich `Error.message` with input
58
+ data. That broke the module-level invariant that report content NEVER
59
+ reaches logs.
60
+
61
+ The helper now classifies rejection reasons to a stable category code
62
+ (`plugin_not_loaded`, `missing_run_context`, `invalid_stream`,
63
+ `validation_error`, `rate_limited`, `rejected`) and, for thrown errors,
64
+ logs only `throw:<Error.name>` (constructor name only — never `.message`,
65
+ never the raw exception). Operators still get enough signal to triage;
66
+ no payload byte can reach the log stream.
67
+
68
+ ### Fixed — LightRAG provenance `injected.chars` matches what the LLM actually saw (codex pass #36 P3)
69
+
70
+ `buildLightRAGProvenance` was being called with `formatted.truncated`,
71
+ which is the BODY of the section. The block actually delivered to the
72
+ LLM also includes the `### Knowledge Graph Context (LightRAG)\n` header,
73
+ so the report's `injected.chars` field was systematically short by the
74
+ header length — contradicting the PROVENANCE_CONTRACT promise that the
75
+ field reflects exactly what reached the model.
76
+
77
+ `buildLightRAGProvenance` now takes an optional fourth parameter
78
+ `injectedChars` for callers that track the full section length
79
+ separately. The plugin's render path passes `text.length` (header
80
+ INCLUDED). The `full`-level excerpt body remains the post-truncation
81
+ context (the header carries no semantic content for the chat frontend).
82
+ Invalid `injectedChars` values (`NaN`, negative numbers) fall back to
83
+ `injectedText.length` to keep the report well-formed.
84
+
10
85
  ## [3.2.4] - 2026-05-24
11
86
 
12
87
  ### Added — payload-size guards for the pgvector reranker
13
88
 
14
- Production observation on jerome's Jina dashboard (2026-05-17
15
- 2026-05-24): rerank calls averaged **~66 600 tokens** each way over
16
- the model's 8 K context window. Almost all of that came from LightRAG-
17
- side reranker chunking, but the plugin-side reranker would face the
18
- same risk once `knowledge_jerome` is alimented. v3.2.4 ships two
19
- preventive knobs to keep the plugin-side spend bounded:
89
+ Production observation: rerank calls were averaging far over the
90
+ model's 8 K context window (**~66 600 tokens** each). Almost all of
91
+ that came from LightRAG-side reranker chunking, but the plugin-side
92
+ reranker would face the same risk once a shared collection is
93
+ alimented. v3.2.4 ships two preventive knobs to keep the plugin-side
94
+ spend bounded:
20
95
 
21
96
  - **`jina.pgvectorReranker.candidatePoolMax`** (default `20`). Caps the
22
97
  number of cosine-ranked candidates sent to Jina /v1/rerank. Pgvector
@@ -87,28 +162,28 @@ to recommend:
87
162
  the `.env.template` block for the full operating-point comparison
88
163
  (chunking-ON vs TOP_K=5 vs jina-reranker-v3).
89
164
 
90
- Apply on the NAS:
165
+ Apply on the host:
91
166
 
92
167
  ```bash
93
- sudo vi /volume3/openclaw/lightrag/.env.jerome
168
+ sudo vi /volume1/openclaw/lightrag/.env.agent
94
169
  # Change: RERANK_MAX_TOKENS_PER_DOC=600
95
170
  # Change: MIN_RERANK_SCORE=0.05
96
- sudo docker restart openclaw-lightrag-jerome
171
+ sudo docker restart openclaw-lightrag-agent
97
172
  ```
98
173
 
99
- Expected saving on jerome's observed rate: ~8.4 M → ~5.6 M tokens
174
+ Expected saving at the observed rate: ~8.4 M → ~5.6 M tokens
100
175
  per 7 days (-33%), no quality regression.
101
176
 
102
177
  ### Migration
103
178
 
104
179
  Drop-in plugin patch. Defaults preserve the v3.2.3 behavior on
105
- runtimes that don't set the new fields. To activate the new caps on
106
- both instances:
180
+ runtimes that don't set the new fields. To activate the new caps,
181
+ run on each configured instance:
107
182
 
108
183
  ```bash
109
- sudo docker exec openclaw-jerome openclaw plugins update @lacneu/openclaw-knowledge
110
- sudo docker exec openclaw-olivier openclaw plugins update @lacneu/openclaw-knowledge
111
- sudo docker restart openclaw-jerome openclaw-olivier
184
+ # run on each configured instance
185
+ sudo docker exec openclaw-agent openclaw plugins update @lacneu/openclaw-knowledge
186
+ sudo docker restart openclaw-agent
112
187
  ```
113
188
 
114
189
  Verify post-restart:
@@ -215,9 +290,8 @@ metadata after every assistant turn:
215
290
 
216
291
  These are not user questions and have no business hitting the
217
292
  knowledge base. Previously the heuristic let them through, the
218
- Jina classifier was billed, and on jerome they typically scored 0.27
219
- → `classifier_low_confidence` → ALL → wasted LightRAG call (the
220
- 2026-05-23 19:42:05 case in the issue).
293
+ Jina classifier was billed, and in production they typically scored
294
+ ~0.27 → `classifier_low_confidence` → ALL → wasted LightRAG call.
221
295
 
222
296
  The new META_PATTERN catches them at the start of the prompt:
223
297
 
@@ -234,9 +308,9 @@ who quotes the template inside a real question keeps their content.
234
308
  Drop-in patch. No config change required.
235
309
 
236
310
  ```bash
237
- sudo docker exec openclaw-jerome openclaw plugins update @lacneu/openclaw-knowledge
238
- sudo docker exec openclaw-olivier openclaw plugins update @lacneu/openclaw-knowledge
239
- sudo docker restart openclaw-jerome openclaw-olivier
311
+ # run on each configured instance
312
+ sudo docker exec openclaw-agent openclaw plugins update @lacneu/openclaw-knowledge
313
+ sudo docker restart openclaw-agent
240
314
  ```
241
315
 
242
316
  After restart, expect:
@@ -340,7 +414,7 @@ only** — no SQL params, no query content — to keep PHI out of logs.
340
414
 
341
415
  ### Fixed — Jina classifier silently blocked retrieval on low-confidence scores
342
416
 
343
- After v3.2.1 fixed query extraction, jerome's production traces showed
417
+ After v3.2.1 fixed query extraction, production traces showed
344
418
  that 6 out of 8 user turns ended up with `route=NONE` from
345
419
  `reason=classifier_hit` with scores tightly clustered around **0.25**:
346
420
 
@@ -358,7 +432,7 @@ retrieval on legitimate questions.
358
432
  Confirmed regression scenario, from a real chat-export on 2026-05-23:
359
433
 
360
434
  > Query: `"Quel est l'arbitrage principal de la réunion hebdomadaire
361
- > Ataraxis du 19 mai 2026 ?"`
435
+ > Acme du 19 mai 2026 ?"`
362
436
  > Classifier: `NONE @ 0.25` → router blocked the RAG.
363
437
  > The agent then recovered via the `gworkspace-search` skill, but the
364
438
  > RAG never contributed and the turn took 43 s + 5 tool calls instead
@@ -403,9 +477,9 @@ explicitly (e.g. for an evaluation A/B), set
403
477
  `jina.router.minConfidence: 0` via `openclaw config set`.
404
478
 
405
479
  ```bash
406
- sudo docker exec openclaw-jerome openclaw plugins update @lacneu/openclaw-knowledge
407
- sudo docker exec openclaw-olivier openclaw plugins update @lacneu/openclaw-knowledge
408
- sudo docker restart openclaw-jerome openclaw-olivier
480
+ # run on each configured instance
481
+ sudo docker exec openclaw-agent openclaw plugins update @lacneu/openclaw-knowledge
482
+ sudo docker restart openclaw-agent
409
483
  ```
410
484
 
411
485
  After restart, watch the `[knowledge.event]` router lines: previously
@@ -431,7 +505,7 @@ clear the floor, defeating the guard.
431
505
  ### Test coverage
432
506
 
433
507
  - Total: 232 tests, all green (was 223 in 3.2.1; +9 new).
434
- - 7 new tests in `test/router/router.test.ts` covering the Ataraxis
508
+ - 7 new tests in `test/router/router.test.ts` covering the Acme
435
509
  regression scenario, the exact boundary (`score === minConfidence`
436
510
  passes), a clear-match scenario above threshold, the few-shot path,
437
511
  the `minConfidence=0` escape hatch, the public-API safety case
@@ -477,9 +551,9 @@ Drop-in patch — no config change required. `update` the plugin and
477
551
  restart the gateway:
478
552
 
479
553
  ```bash
480
- sudo docker exec openclaw-jerome openclaw plugins update @lacneu/openclaw-knowledge
481
- sudo docker exec openclaw-olivier openclaw plugins update @lacneu/openclaw-knowledge
482
- sudo docker restart openclaw-jerome openclaw-olivier
554
+ # run on each configured instance
555
+ sudo docker exec openclaw-agent openclaw plugins update @lacneu/openclaw-knowledge
556
+ sudo docker restart openclaw-agent
483
557
  ```
484
558
 
485
559
  After the restart, `[knowledge.event]` logs should show `queryLength`
@@ -713,7 +787,7 @@ passes (2026-05-23):
713
787
 
714
788
  - **Privacy: query preview removed from debug logs.** The original
715
789
  `emitQueryPreview` logged the first 80 chars of every user query when
716
- `logger.debug` was active. In Ataraxis-style deployments those queries
790
+ `logger.debug` was active. In production deployments those queries
717
791
  routinely carry PHI / client content / occasionally secrets, so even a
718
792
  truncated preview was a leak vector. Replaced by `emitQueryFingerprint`
719
793
  which logs a non-reversible SHA-256 prefix (`fp=<12 hex chars>`) and
@@ -899,7 +973,7 @@ For instance owners on `@lacneu/openclaw-knowledge@3.1.0` or `3.1.1`:
899
973
  format (`### Document Search Results` + `### Knowledge Graph Context`), same
900
974
  parallel execution via `Promise.allSettled`, same cooldown (3 errors → 5 min),
901
975
  same Gemini native `embedContent` endpoint, same `halfvec(3072)` SQL cast.
902
- - Current plugin configurations (Olivier and Jerome instances) continue to work
976
+ - Existing plugin configurations continue to work
903
977
  without any changes — all config keys and defaults are preserved. The breaking
904
978
  changes below are limited to internal types and legacy input shapes that were
905
979
  defensive cruft, not fields used by active deployments.
package/README.md CHANGED
@@ -280,7 +280,7 @@ a structured event line:
280
280
 
281
281
  ```
282
282
  [knowledge.event] {"type":"router","route":"PGVECTOR_ONLY","reason":"heuristic_keyword","score":null,"queryLength":42,"trigger":"user"}
283
- [knowledge.event] {"type":"pgvector","collections":["knowledge_olivier"],"rawCount":5,"rerankedCount":5,"topScore":0.78,"durationMs":124}
283
+ [knowledge.event] {"type":"pgvector","collections":["knowledge_default"],"rawCount":5,"rerankedCount":5,"topScore":0.78,"durationMs":124}
284
284
  [knowledge.event] {"type":"cooldown","scope":"router","consecutiveErrors":3}
285
285
  ```
286
286
 
package/dist/config.js CHANGED
@@ -3,6 +3,7 @@
3
3
  // These helpers are the only place that touches `process.env`, keeping the
4
4
  // rest of the plugin easy to test with deterministic values.
5
5
  import { DEFAULT_RPM_BUDGET } from "./jina/rate-limit.js";
6
+ import { resolveProvenanceLevel } from "./provenance.js";
6
7
  import { DEFAULT_MIN_CONFIDENCE } from "./router/index.js";
7
8
  /**
8
9
  * Expand `${VAR_NAME}` patterns in a config string against `process.env`.
@@ -39,15 +40,15 @@ const DEFAULT_ROUTER_MODE = "heuristic";
39
40
  // (`DEFAULT_MIN_CONFIDENCE`). Re-export of a local alias would create
40
41
  // two sources of truth — we import the single constant instead.
41
42
  //
42
- // Empirical observation on jerome's traces (v3.2.1 deployment): Jina v3
43
+ // Empirical observation in production traces (v3.2.1 deployment): Jina v3
43
44
  // zero-shot scores cluster at 0.25-0.27 when no label actually matches
44
45
  // the query, then resolve to a noisy `NONE` decision that wrongly
45
46
  // blocks retrieval. A floor of 0.35 catches that noise band while
46
47
  // staying below typical hit scores (≈ 0.40-0.65).
47
48
  const DEFAULT_RERANKER_MODEL = "jina-reranker-v2-base-multilingual";
48
49
  const DEFAULT_RERANKER_TOP_N = 5;
49
- // 3.2.4 — payload-trimming defaults. Empirically calibrated on jerome's
50
- // Jina dashboard (2026-05-17 → 2026-05-24): 20 candidates × 2000 chars
50
+ // 3.2.4 — payload-trimming defaults. Empirically calibrated from the
51
+ // production Jina dashboard: 20 candidates × 2000 chars
51
52
  // fits in ~10K tokens (well below jina-reranker-v2's 8K context window
52
53
  // once the query is added) while preserving the top-precision band.
53
54
  const DEFAULT_RERANKER_CANDIDATE_POOL_MAX = 20;
@@ -109,6 +110,10 @@ export function resolveConfig(cfg = {}) {
109
110
  // the corresponding cap (legacy v3.2.3 behavior).
110
111
  pgvectorRerankerCandidatePoolMax: clampNonNegInt(reranker.candidatePoolMax ?? DEFAULT_RERANKER_CANDIDATE_POOL_MAX),
111
112
  pgvectorRerankerMaxCharsPerDoc: clampNonNegInt(reranker.maxCharsPerDoc ?? DEFAULT_RERANKER_MAX_CHARS_PER_DOC),
113
+ // 3.3.0 — provenance reporting toward chat frontends. Off-list values
114
+ // (typos, future levels) normalize to "off": a misconfiguration must
115
+ // never silently leak content.
116
+ provenanceReport: resolveProvenanceLevel(cfg.provenanceReport),
112
117
  };
113
118
  }
114
119
  /** Clamp a value to a non-negative integer. Bad input collapses to `0`. */
@@ -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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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
+ import type { OpenClawPluginDefinition } from "openclaw/plugin-sdk/plugin-entry";
1
2
  import type { OpenClawPluginApi, PluginLogger } from "openclaw/plugin-sdk/plugin-entry";
3
+ import { type EmitAgentEventFn } from "./provenance.js";
2
4
  import type { Route } from "./router/types.js";
3
5
  import type { BeforePromptBuildEvent, BeforePromptBuildResult, PgPoolLike, PluginHookAgentContext, PromptMessage, ResolvedKnowledgeConfig } from "./types.js";
4
6
  export { resolveEnv, resolveConfig } from "./config.js";
@@ -11,6 +13,13 @@ interface HookHandlerDeps {
11
13
  config: ResolvedKnowledgeConfig;
12
14
  pool: PgPoolLike | null;
13
15
  logger: PluginLogger;
16
+ /**
17
+ * Gateway agent-event emitter for provenance reports (provenance/v1).
18
+ * `undefined` on SDKs that predate emitAgentEvent — the handler then
19
+ * degrades to silence. MUST be bound to the FIRST registration's api
20
+ * (gateway re-registration quirk; see registerKnowledgePlugin).
21
+ */
22
+ emitAgentEvent?: EmitAgentEventFn;
14
23
  }
15
24
  /**
16
25
  * Build the `before_prompt_build` handler bound to a specific plugin state.
@@ -72,17 +81,6 @@ export declare function extractUserQuery(event: BeforePromptBuildEvent): string;
72
81
  * @internal exported for unit testing and backward compatibility
73
82
  */
74
83
  export declare function extractQueryFromMessages(messages: PromptMessage[] | undefined): string;
75
- /**
76
- * Register the plugin against a minimal shape-compatible subset of the
77
- * OpenClaw plugin API. Returns nothing; side effects are setting a hook and
78
- * logging the initial status.
79
- */
80
84
  export declare function registerKnowledgePlugin(api: OpenClawPluginApi): void;
81
- declare const _default: {
82
- id: string;
83
- name: string;
84
- description: string;
85
- configSchema: import("openclaw/plugin-sdk/plugin-entry").OpenClawPluginConfigSchema;
86
- register: NonNullable<import("openclaw/plugin-sdk/plugin-entry").OpenClawPluginDefinition["register"]>;
87
- } & Pick<import("openclaw/plugin-sdk/plugin-entry").OpenClawPluginDefinition, "kind" | "reload" | "nodeHostCommands" | "securityAuditCollectors">;
88
- export default _default;
85
+ declare const knowledgePluginEntry: OpenClawPluginDefinition;
86
+ export default knowledgePluginEntry;
package/dist/index.js CHANGED
@@ -23,8 +23,9 @@
23
23
  import pg from "pg";
24
24
  import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
25
25
  import { resolveConfig } from "./config.js";
26
+ import { buildLightRAGProvenance, buildPgvectorProvenance, emitProvenanceReports, resolveEmitAgentEvent, } from "./provenance.js";
26
27
  import { embedQuery } from "./embeddings.js";
27
- import { searchCollection, formatPgvectorResults, rerankPgvectorResults, } from "./pgvector.js";
28
+ import { searchCollection, formatPgvectorResultsDetailed, rerankPgvectorResults, } from "./pgvector.js";
28
29
  import { queryLightRAG, formatLightRAGResults } from "./lightrag.js";
29
30
  import { decideRoute } from "./router/index.js";
30
31
  import { JinaError, summarizeJinaError } from "./jina/errors.js";
@@ -129,6 +130,7 @@ export function createBeforePromptBuildHandler(deps) {
129
130
  return undefined;
130
131
  const settled = await Promise.allSettled(tasks);
131
132
  const sections = [];
133
+ const provenanceReports = [];
132
134
  let failedSources = 0;
133
135
  for (const result of settled) {
134
136
  if (result.status === "rejected") {
@@ -138,8 +140,10 @@ export function createBeforePromptBuildHandler(deps) {
138
140
  continue;
139
141
  }
140
142
  const section = renderSection(result.value, config, logger);
141
- if (section)
142
- sections.push(section);
143
+ if (section) {
144
+ sections.push(section.text);
145
+ provenanceReports.push(section.provenance);
146
+ }
143
147
  }
144
148
  // If every source we launched failed, treat the turn as a failure for
145
149
  // cooldown tracking. A partial failure is fine — the other source's
@@ -151,6 +155,10 @@ export function createBeforePromptBuildHandler(deps) {
151
155
  cooldowns.global.consecutiveErrors = 0;
152
156
  if (sections.length === 0)
153
157
  return undefined;
158
+ // Provenance reports describe EXACTLY the sections returned below —
159
+ // emitted just before the injection is handed to the gateway, so a
160
+ // dropped turn can never have reported sources it did not use.
161
+ emitProvenanceReports(deps.emitAgentEvent, logger, ctx?.runId, ctx?.sessionKey, provenanceReports);
154
162
  return {
155
163
  appendSystemContext: [
156
164
  "",
@@ -575,7 +583,7 @@ async function runLightRAGSource(query, config) {
575
583
  }
576
584
  function renderSection(result, config, logger) {
577
585
  if (result.source === "pgvector") {
578
- const formatted = formatPgvectorResults(result.data, config.maxInjectChars);
586
+ const formatted = formatPgvectorResultsDetailed(result.data, config.maxInjectChars);
579
587
  const topScore = result.data[0]?.score?.toFixed(2) ?? "n/a";
580
588
  const rerankNote = result.reranked ? " [reranked]" : "";
581
589
  // Emit the event UNCONDITIONALLY — even when pgvector returned no
@@ -606,8 +614,20 @@ function renderSection(result, config, logger) {
606
614
  logger.info(`openclaw-knowledge: pgvector — no result above threshold (rawCount=${result.rawCount})`);
607
615
  return null;
608
616
  }
609
- logger.info(`openclaw-knowledge: pgvector ${result.data.length} result(s)${rerankNote} (top: ${topScore})`);
610
- return "### Document Search Results (pgvector)\n" + formatted;
617
+ // `injectedCount` is the count of entries that actually fit in
618
+ // `maxInjectChars`. It is `<= result.data.length` anything past the
619
+ // budget was dropped by `formatPgvectorResults`. The provenance
620
+ // report MUST mirror the injected subset (contract: "emit what was
621
+ // injected, not what was retrieved"), not the post-rerank candidate
622
+ // list — otherwise `metadata` mode leaks file names and `full` mode
623
+ // leaks excerpts of documents that never reached the LLM.
624
+ const injected = result.data.slice(0, formatted.injectedCount);
625
+ logger.info(`openclaw-knowledge: pgvector — ${formatted.injectedCount}/${result.data.length} result(s)${rerankNote} (top: ${topScore})`);
626
+ const text = "### Document Search Results (pgvector)\n" + formatted.output;
627
+ return {
628
+ text,
629
+ provenance: buildPgvectorProvenance(injected, config.collections, config.provenanceReport, text.length),
630
+ };
611
631
  }
612
632
  if (result.source === "lightrag") {
613
633
  const formatted = formatLightRAGResults(result.data, config.lightragMaxChars);
@@ -628,7 +648,16 @@ function renderSection(result, config, logger) {
628
648
  return null;
629
649
  }
630
650
  logger.info(`openclaw-knowledge: LightRAG — ${formatted.truncated.length}/${formatted.originalLength} chars (truncated from ${formatted.originalLength})`);
631
- return "### Knowledge Graph Context (LightRAG)\n" + formatted.truncated;
651
+ const text = "### Knowledge Graph Context (LightRAG)\n" + formatted.truncated;
652
+ return {
653
+ text,
654
+ // `text.length` (header INCLUDED) is what actually reaches the LLM —
655
+ // pass it through so the provenance `injected.chars` field matches.
656
+ // The `formatted.truncated` body is still used for the `full`-level
657
+ // excerpt because the header is structural noise (no semantic
658
+ // content worth surfacing to the chat frontend).
659
+ provenance: buildLightRAGProvenance(formatted.truncated, config.lightragQueryMode, config.provenanceReport, text.length),
660
+ };
632
661
  }
633
662
  return null;
634
663
  }
@@ -667,7 +696,13 @@ function registerError(state, scope, logger) {
667
696
  * OpenClaw plugin API. Returns nothing; side effects are setting a hook and
668
697
  * logging the initial status.
669
698
  */
699
+ // FIRST registration's api (gateway re-registration quirk — see the handler
700
+ // wiring below). Module-level: the ESM cache is per-process, so every later
701
+ // registration in the same gateway process sees the original, "loaded" api.
702
+ let stableApi = null;
670
703
  export function registerKnowledgePlugin(api) {
704
+ if (stableApi === null)
705
+ stableApi = api;
671
706
  const rawConfig = (api.pluginConfig ?? {});
672
707
  const config = resolveConfig(rawConfig);
673
708
  if (!config.pgvectorEnabled && !config.lightragEnabled) {
@@ -716,6 +751,12 @@ export function registerKnowledgePlugin(api) {
716
751
  config,
717
752
  pool,
718
753
  logger: api.logger,
754
+ // Provenance reports ride the agent-event bus. GATEWAY QUIRK
755
+ // (bench-verified 2026-06-12): the runtime RE-REGISTERS plugins per run
756
+ // and emitting through a re-registration's api is rejected "plugin is
757
+ // not loaded" — only the FIRST registration's api stays loaded, hence
758
+ // the module-level singleton.
759
+ emitAgentEvent: resolveEmitAgentEvent(stableApi ?? api),
719
760
  });
720
761
  // The SDK's `api.on<K>` signature is strongly typed per hook name, so we
721
762
  // use a cast here to bridge our structural handler type with the precise
@@ -728,7 +769,15 @@ export function registerKnowledgePlugin(api) {
728
769
  // ---------------------------------------------------------------------------
729
770
  // Canonical plugin entry
730
771
  // ---------------------------------------------------------------------------
731
- export default definePluginEntry({
772
+ // Explicit annotation on the default export, otherwise TS2742 fires when
773
+ // `declaration: true` is on: `definePluginEntry`'s return type
774
+ // (`DefinedPluginEntry`) is a module-local alias that is NOT exported by
775
+ // the SDK's public surface, so TypeScript has no portable name to write
776
+ // into our emitted `dist/index.d.ts`. Pinning to the publicly-exported
777
+ // supertype `OpenClawPluginDefinition` resolves the diagnostic without
778
+ // loosening type safety (the return type is structurally assignable to
779
+ // it — see `Pick<OpenClawPluginDefinition, …>` in the SDK definition).
780
+ const knowledgePluginEntry = definePluginEntry({
732
781
  id: "openclaw-knowledge",
733
782
  name: "Knowledge Base",
734
783
  description: "Multi-source knowledge search for OpenClaw (pgvector + LightRAG) with optional Jina-powered router & reranker",
@@ -736,4 +785,5 @@ export default definePluginEntry({
736
785
  registerKnowledgePlugin(api);
737
786
  },
738
787
  });
788
+ export default knowledgePluginEntry;
739
789
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,yEAAyE;AACzE,4DAA4D;AAC5D,2EAA2E;AAC3E,gEAAgE;AAChE,wEAAwE;AACxE,EAAE;AACF,gBAAgB;AAChB,sEAAsE;AACtE,wEAAwE;AACxE,yEAAyE;AACzE,sEAAsE;AACtE,mCAAmC;AACnC,EAAE;AACF,6DAA6D;AAC7D,iCAAiC;AACjC,EAAE;AACF,4EAA4E;AAC5E,uEAAuE;AACvE,kEAAkE;AAClE,kDAAkD;AAElD,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAMrE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,+BAA+B,GAChC,MAAM,qBAAqB,CAAC;AAY7B,uEAAuE;AACvE,4CAA4C;AAC5C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkBhD,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAClC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAkB3B,SAAS,WAAW;IAClB,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;AACpD,CAAC;AAQD;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,IAAqB;IAKrB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEtC,uEAAuE;IACvE,6BAA6B;IAC7B,MAAM,SAAS,GAAyC;QACtD,MAAM,EAAE,WAAW,EAAE;QACrB,MAAM,EAAE,WAAW,EAAE;QACrB,iBAAiB,EAAE,WAAW,EAAE;KACjC,CAAC;IAEF,oEAAoE;IACpE,wEAAwE;IACxE,wEAAwE;IACxE,uEAAuE;IACvE,+DAA+D;IAC/D,EAAE;IACF,mEAAmE;IACnE,oEAAoE;IACpE,kDAAkD;IAClD,mEAAmE;IACnE,+DAA+D;IAC/D,oEAAoE;IACpE,MAAM,UAAU,GACd,MAAM,CAAC,aAAa,GAAG,CAAC;QACtB,CAAC,CAAC,IAAI,UAAU,CAAC;YACb,MAAM,EAAE,MAAM,CAAC,aAAa;YAC5B,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;gBAChC,MAAM,CAAC,IAAI,CACT,kDAAkD,KAAK,IAAI,MAAM,2BAA2B,CAC7F,CAAC;gBACF,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAClE,CAAC;SACF,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,KAAK,UAAU,iBAAiB,CACrC,KAA6B,EAC7B,GAA4B;QAE5B,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAEtC,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,kBAAkB,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvD,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC;gBAAE,OAAO,SAAS,CAAC;QACvD,CAAC;QAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,gBAAgB;YAAE,OAAO,SAAS,CAAC;QAEvE,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAEnD,oEAAoE;QACpE,0DAA0D;QAC1D,oEAAoE;QACpE,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAC1C,MAAM,EACN,GAAG,EACH,KAAK,EACL,SAAS,CAAC,MAAM,EAChB,MAAM,EACN,UAAU,CACX,CAAC;QAEF,iEAAiE;QACjE,6DAA6D;QAC7D,qEAAqE;QACrE,kEAAkE;QAClE,gDAAgD;QAChD,MAAM,cAAc,GAAG,4BAA4B,CACjD,QAAQ,CAAC,KAAK,EACd,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,eAAe,CACvB,CAAC;QAEF,SAAS,CAAC,MAAM,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,WAAW,EAAE,KAAK,CAAC,MAAM;YACzB,OAAO,EAAE,GAAG,EAAE,OAAO;SACtB,CAAC,CAAC;QAEH,IAAI,cAAc,KAAK,MAAM;YAAE,OAAO,SAAS,CAAC;QAEhD,oEAAoE;QACpE,0CAA0C;QAC1C,oEAAoE;QACpE,IAAI,CAAC;YACH,MAAM,KAAK,GAA4B,EAAE,CAAC;YAE1C,IACE,iBAAiB,CAAC,cAAc,CAAC;gBACjC,MAAM,CAAC,eAAe;gBACtB,IAAI,EACJ,CAAC;gBACD,KAAK,CAAC,IAAI,CACR,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,iBAAiB,EAAE,MAAM,EAAE,UAAU,CAAC,CACxF,CAAC;YACJ,CAAC;YAED,IAAI,iBAAiB,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;gBAChE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YAEzC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,IAAI,aAAa,GAAG,CAAC,CAAC;YAEtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACjC,aAAa,EAAE,CAAC;oBAChB,MAAM,MAAM,GAAG,MAAM,CAAC,MAA0C,CAAC;oBACjE,MAAM,CAAC,KAAK,CACV,uCAAuC,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAClF,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC5D,IAAI,OAAO;oBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;YAED,sEAAsE;YACtE,oEAAoE;YACpE,kCAAkC;YAClC,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;gBACxD,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAClD,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,SAAS,CAAC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAEvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAC;YAE5C,OAAO;gBACL,mBAAmB,EAAE;oBACnB,EAAE;oBACF,4BAA4B;oBAC5B,gEAAgE;oBAChE,mEAAmE;oBACnE,EAAE;oBACF,GAAG,QAAQ;iBACZ,CAAC,IAAI,CAAC,IAAI,CAAC;aACb,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,oEAAoE;YACpE,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;YAC/C,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAClD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,KAAY;IACrC,OAAO,KAAK,KAAK,eAAe,IAAI,KAAK,KAAK,KAAK,CAAC;AACtD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAY;IACrC,OAAO,KAAK,KAAK,eAAe,IAAI,KAAK,KAAK,KAAK,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,4BAA4B,CAC1C,KAAY,EACZ,eAAwB,EACxB,eAAwB;IAExB,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAEtD,IAAI,KAAK,KAAK,eAAe,EAAE,CAAC;QAC9B,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC;QAC5C,OAAO,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC;IACpD,CAAC;IAED,4BAA4B;IAC5B,IAAI,eAAe;QAAE,OAAO,eAAe,CAAC;IAC5C,OAAO,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAClC,MAA+B,EAC/B,GAAuC,EACvC,KAAa,EACb,QAAuB,EACvB,MAAoB,EACpB,UAAkC;IAElC,qEAAqE;IACrE,kEAAkE;IAClE,yCAAyC;IACzC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE/C,gEAAgE;IAChE,qEAAqE;IACrE,qEAAqE;IACrE,sEAAsE;IACtE,mEAAmE;IACnE,sEAAsE;IACtE,MAAM,qBAAqB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM,aAAa,GAAoC,qBAAqB;QAC1E,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;IAEtB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,WAAW,CACzB;YACE,OAAO,EAAE,MAAM,CAAC,aAAa;YAC7B,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,kBAAkB,IAAI,SAAS;YACpD,aAAa,EAAE,MAAM,CAAC,mBAAmB;YACzC,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC3B,SAAS,CAAC,MAAM,EAAE;gBAChB,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,wDAAwD;gBACxD,6CAA6C;gBAC7C,UAAU,EAAE,CAAC;aACd,CAAC;YACJ,UAAU;SACX,EACD;YACE,KAAK;YACL,OAAO,EAAE,GAAG,EAAE,OAAO;YACrB,KAAK,EAAE,GAAG,EAAE,eAAe,KAAK,KAAK;SACtC,CACF,CAAC;QAEF,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YACpC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAClC,8DAA8D;YAC9D,6DAA6D;YAC7D,iEAAiE;YACjE,QAAQ,CAAC,iBAAiB,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uEAAuE;QACvE,mEAAmE;QACnE,8DAA8D;QAC9D,6CAA6C;QAC7C,MAAM,CAAC,KAAK,CACV,iDAAiD,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAC3E,CAAC;QACF,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACnE,CAAC;AACH,CAAC;AAQD,uCAAuC;AACvC,EAAE;AACF,yEAAyE;AACzE,qEAAqE;AACrE,oEAAoE;AACpE,iEAAiE;AACjE,qEAAqE;AACrE,8CAA8C;AAC9C,sEAAsE;AACtE,iEAAiE;AACjE,iDAAiD;AACjD,sBAAsB;AACtB,kEAAkE;AAClE,oEAAoE;AACpE,gEAAgE;AAChE,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,oEAAoE;AACpE,mEAAmE;AACnE,8DAA8D;AAC9D,oEAAoE;AACpE,gEAAgE;AAChE,EAAE;AACF,qEAAqE;AACrE,uEAAuE;AACvE,sEAAsE;AACtE,uBAAuB;AACvB,EAAE;AACF,gEAAgE;AAChE,qEAAqE;AACrE,+DAA+D;AAC/D,+CAA+C;AAC/C,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,yEAAyE;AACzE,2EAA2E;AAC3E,sEAAsE;AACtE,qEAAqE;AACrE,uDAAuD;AACvD,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAA,mCAAmC,CAAC;AACxE,MAAM,mBAAmB,GACvB,MAAM,CAAC,GAAG,CAAA,QAAQ,GAAG,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAA,QAAQ;IAC3D,MAAM,CAAC,GAAG,CAAA,oCAAoC,CAAC;AAEjD,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA,QAAQ,EAAE,GAAG,CAAC,CAAC;AAEpF,MAAM,qBAAqB,GAAG,IAAI,MAAM,CACtC,MAAM,CAAC,GAAG,CAAA,0EAA0E,EACpF,GAAG,CACJ,CAAC;AAEF,sEAAsE;AACtE,wEAAwE;AACxE,qEAAqE;AACrE,mDAAmD;AACnD,sEAAsE;AACtE,mDAAmD;AACnD,EAAE;AACF,uEAAuE;AACvE,sEAAsE;AACtE,iEAAiE;AACjE,kEAAkE;AAClE,MAAM,sBAAsB,GAC1B,yEAAyE,CAAC;AAE5E,oEAAoE;AACpE,yEAAyE;AACzE,yEAAyE;AACzE,2DAA2D;AAC3D,MAAM,mBAAmB,GAAG;IAC1B,+BAA+B;IAC/B,SAAS;IACT,UAAU;IACV,KAAK;CACN,CAAC;AAEF,0EAA0E;AAC1E,SAAS,mBAAmB,CAAC,IAAY;IACvC,2DAA2D;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;IACrD,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,wEAAwE;IACxE,2DAA2D;IAC3D,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,SAAS,GAAG,GAAG,GAAG,sBAAsB,CAAC,MAAM,CAAC;IACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,UAAU,GACd,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAChG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,oEAAoE;IACpE,qEAAqE;IACrE,sBAAsB;IACtB,MAAM,WAAW,GACf,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAClF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEvC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,uDAAuD;IACvD,kDAAkD;IAClD,iEAAiE;IACjE,oEAAoE;IACpE,2DAA2D;IAC3D,iEAAiE;IACjE,wCAAwC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,iBAAiB,CAAC,SAAS,GAAG,GAAG,CAAC;QAClC,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5C,GAAG,GAAG,iBAAiB,CAAC,SAAS,CAAC;YAClC,cAAc,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QACD,qBAAqB,CAAC,SAAS,GAAG,GAAG,CAAC;QACtC,IAAI,CAAC,aAAa,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YAClE,GAAG,GAAG,qBAAqB,CAAC,SAAS,CAAC;YACtC,aAAa,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM;IACR,CAAC;IAED,IAAI,cAAc,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3C,gEAAgE;QAChE,uDAAuD;QACvD,gEAAgE;QAChE,iEAAiE;QACjE,wBAAwB;QACxB,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO,gBAAgB,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACxE,CAAC;IAED,OAAO,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA6B;IAC5D,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,wBAAwB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAqC;IAErC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjE,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS;QAE1C,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC,OAAO;iBACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;iBAC9D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAc,CAAC;iBAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAgCD,KAAK,UAAU,iBAAiB,CAC9B,IAAgB,EAChB,KAAa,EACb,MAA+B,EAC/B,gBAA+B,EAC/B,MAAoB,EACpB,UAAkC;IAElC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAC5D,wEAAwE;IACxE,oEAAoE;IACpE,mEAAmE;IACnE,qDAAqD;IACrD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC7B,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,CACxE,CACF,CAAC;IACF,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QACtB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC7B,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC;YACf,+DAA+D;YAC/D,gEAAgE;YAChE,iEAAiE;YACjE,2DAA2D;YAC3D,+BAA+B;YAC/B,MAAM,WAAW,GAAI,CAAC,CAAC,MAA4B,EAAE,WAAW,EAAE,IAAI,IAAI,OAAO,CAAC;YAClF,MAAM,CAAC,KAAK,CACV,4CAA4C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,WAAW,EAAE,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7C,gEAAgE;IAChE,gEAAgE;IAChE,oEAAoE;IACpE,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;IAEnC,qEAAqE;IACrE,gDAAgD;IAChD,EAAE;IACF,mEAAmE;IACnE,sEAAsE;IACtE,oEAAoE;IACpE,qEAAqE;IACrE,kDAAkD;IAClD,kBAAkB,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAElE,MAAM,cAAc,GAClB,MAAM,CAAC,uBAAuB;QAC9B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;QAC1B,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAElC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,UAAU;YAChB,QAAQ;YACR,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAClC,OAAO;SACR,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,UAAU,EAAE;YACvD,MAAM,EAAE,MAAM,CAAC,UAAU;YACzB,KAAK;YACL,KAAK,EAAE,MAAM,CAAC,qBAAqB;YACnC,IAAI,EAAE,MAAM,CAAC,oBAAoB;YACjC,gBAAgB,EAAE,MAAM,CAAC,gCAAgC,IAAI,SAAS;YACtE,cAAc,EAAE,MAAM,CAAC,8BAA8B,IAAI,SAAS;YAClE,UAAU;YACV,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,SAAS,CAAC,MAAM,EAAE;gBAChB,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,MAAM,CAAC,qBAAqB;gBACnC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC;SACL,CAAC,CAAC;QACH,gBAAgB,CAAC,iBAAiB,GAAG,CAAC,CAAC;QACvC,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,QAAQ;YACd,QAAQ;YACR,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAClC,OAAO;SACR,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,gEAAgE;QAChE,+DAA+D;QAC/D,+DAA+D;QAC/D,6DAA6D;QAC7D,0BAA0B;QAC1B,EAAE;QACF,0DAA0D;QAC1D,+DAA+D;QAC/D,qBAAqB;QACrB,MAAM,MAAM,GAAG,GAAG,YAAY,SAAS,CAAC;QACxC,MAAM,CAAC,KAAK,CACV,kDAAkD,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAC5E,CAAC;QACF,IAAI,MAAM;YAAE,aAAa,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACzE,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,UAAU;YAChB,QAAQ;YACR,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAClC,OAAO;SACR,CAAC;IACJ,CAAC;AACH,CAAC;AAQD,KAAK,UAAU,iBAAiB,CAC9B,KAAa,EACb,MAA+B;IAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,cAAc,EACrB,KAAK,EACL,MAAM,CAAC,iBAAiB,CACzB,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,aAAa,CACpB,MAAoB,EACpB,MAA+B,EAC/B,MAAoB;IAEpB,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QAC5E,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;QAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,kEAAkE;QAClE,kEAAkE;QAClE,8DAA8D;QAC9D,gEAAgE;QAChE,iEAAiE;QACjE,SAAS,CAAC,MAAM,EAAE;YAChB,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,kEAAkE;YAClE,gEAAgE;YAChE,+DAA+D;YAC/D,6DAA6D;YAC7D,yBAAyB;YACzB,EAAE;YACF,iEAAiE;YACjE,+DAA+D;YAC/D,gEAAgE;YAChE,yDAAyD;YACzD,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;YACjD,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAC1D,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI;YACvC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CACT,sEAAsE,MAAM,CAAC,QAAQ,GAAG,CACzF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,CAAC,IAAI,CACT,kCAAkC,MAAM,CAAC,IAAI,CAAC,MAAM,aAAa,UAAU,UAAU,QAAQ,GAAG,CACjG,CAAC;QACF,OAAO,0CAA0C,GAAG,SAAS,CAAC;IAChE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC9E,gEAAgE;QAChE,6DAA6D;QAC7D,MAAM,YAAY,GAAG,SAAS,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,SAAS,EAAE,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpE,SAAS,CAAC,MAAM,EAAE;YAChB,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,MAAM,CAAC,iBAAiB;YAC9B,YAAY,EAAE,WAAW;YACzB,cAAc,EAAE,YAAY;YAC5B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,YAAY,GAAG,+BAA+B;SACvD,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CACT,kDAAkD,WAAW,SAAS,CACvE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,CAAC,IAAI,CACT,kCAAkC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,cAAc,0BAA0B,SAAS,CAAC,cAAc,GAAG,CAC9I,CAAC;QACF,OAAO,0CAA0C,GAAG,SAAS,CAAC,SAAS,CAAC;IAC1E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,YAAY,CAAC,KAAoB;IACxC,OAAO,KAAK,CAAC,iBAAiB,IAAI,sBAAsB,CAAC;AAC3D,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAoB,EACpB,KAAoB,EACpB,MAAoB;IAEpB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAAE,OAAO;IACjC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,aAAa;QAAE,OAAO;IAC7C,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC5B,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;IACxB,MAAM,CAAC,IAAI,CAAC,uBAAuB,KAAK,4BAA4B,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,aAAa,CACpB,KAAoB,EACpB,KAAoB,EACpB,MAAoB;IAEpB,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC1B,IAAI,KAAK,CAAC,iBAAiB,IAAI,sBAAsB,EAAE,CAAC;QACtD,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;QAC/C,MAAM,CAAC,KAAK,CACV,uBAAuB,KAAK,CAAC,iBAAiB,yBAAyB,KAAK,qBAAqB,CAClG,CAAC;QACF,SAAS,CAAC,MAAM,EAAE;YAChB,IAAI,EAAE,UAAU;YAChB,KAAK;YACL,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;SAC3C,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAsB;IAC5D,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAA0B,CAAC;IACpE,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QACvD,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,gFAAgF,CACjF,CAAC;QACF,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,gEAAgE;IAChE,IACE,MAAM,CAAC,uBAAuB;QAC9B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,oBAAoB,GAAG,CAAC,EAC7C,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,4BAA4B,MAAM,CAAC,IAAI,wBAAwB;YAC7D,wBAAwB,MAAM,CAAC,oBAAoB,IAAI;YACvD,uBAAuB,MAAM,CAAC,oBAAoB,GAAG,CAAC,WAAW;YACjE,2CAA2C,CAC9C,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,wEAAwE;IACxE,yCAAyC;IACzC,IAAI,IAAI,GAAsB,IAAI,CAAC;IACnC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;YAC3B,gBAAgB,EAAE,MAAM,CAAC,WAAW;YACpC,GAAG,EAAE,CAAC;YACN,iBAAiB,EAAE,KAAK;SACzB,CAAC,CAAC;QACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAClC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,uBAAuB;YAC/C,CAAC,CAAC,eAAe,MAAM,CAAC,qBAAqB,GAAG;YAChD,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa;QACrC,CAAC,CAAC,aAAa,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE;QAC3F,CAAC,CAAC,EAAE,CAAC;IAEP,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,wCAAwC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU,EAAE,CAC3E,CAAC;IAEF,MAAM,OAAO,GAAG,8BAA8B,CAAC;QAC7C,MAAM;QACN,IAAI;QACJ,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC,CAAC;IAEH,yEAAyE;IACzE,yEAAyE;IACzE,oEAAoE;IACpE,iEAAiE;IACjE,2CAA2C;IAC3C,8DAA8D;IAC7D,GAAG,CAAC,EAA4C,CAC/C,qBAAqB,EACrB,OAAO,CACR,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,eAAe,iBAAiB,CAAC;IAC/B,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,+GAA+G;IACjH,QAAQ,CAAC,GAAG;QACV,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,42 @@ import type { PgPoolLike, PgvectorResult } from "./types.js";
12
12
  * the plugin must never block the agent, so a DB hiccup degrades gracefully.
13
13
  */
14
14
  export declare function searchCollection(pool: PgPoolLike, collection: string, vector: number[], topK: number, scoreThreshold: number): Promise<PgvectorResult[]>;
15
+ /**
16
+ * Outcome of `formatPgvectorResultsDetailed`. Exposes both the prompt-ready
17
+ * string AND the count of entries that actually fit within the character
18
+ * budget, so callers can keep the provenance report aligned with what reached
19
+ * the LLM (PROVENANCE_CONTRACT: "emit what was injected, not what was
20
+ * retrieved").
21
+ *
22
+ * Because entries are appended whole in input order and the loop `break`s
23
+ * the moment the budget is exhausted, the injected subset is always a
24
+ * contiguous prefix `results.slice(0, injectedCount)`.
25
+ *
26
+ * @since 3.2.5
27
+ */
28
+ export interface FormattedPgvectorResults {
29
+ /** Prompt-ready text — concatenation of the first `injectedCount` entries. */
30
+ output: string;
31
+ /** Number of entries from `results` that actually fit in `maxChars`. */
32
+ injectedCount: number;
33
+ }
34
+ /**
35
+ * Format pgvector results for injection into the system prompt AND report
36
+ * how many input entries were actually included.
37
+ *
38
+ * Internal sibling of the public `formatPgvectorResults`. The public
39
+ * variant returns only the prompt text and is kept backward-compatible;
40
+ * this one exposes `injectedCount` so the plugin's render path can size
41
+ * the provenance report to the injected subset (contract: "emit what
42
+ * was injected, not what was retrieved").
43
+ *
44
+ * Returns `null` when there is nothing useful to inject (empty input OR
45
+ * the budget cannot fit a single entry) so the caller can skip empty
46
+ * sections AND skip emitting a provenance report for zero injected items.
47
+ *
48
+ * @since 3.2.5
49
+ */
50
+ export declare function formatPgvectorResultsDetailed(results: PgvectorResult[], maxChars: number): FormattedPgvectorResults | null;
15
51
  /**
16
52
  * Format pgvector results for injection into the system prompt.
17
53
  * Respects a character budget so we never blow the context window with a
@@ -19,6 +55,10 @@ export declare function searchCollection(pool: PgPoolLike, collection: string, v
19
55
  *
20
56
  * Returns `null` when there is nothing useful to inject so the caller can
21
57
  * easily skip empty sections.
58
+ *
59
+ * Public API — signature kept stable across the v3.x line. Callers needing
60
+ * the count of entries actually injected should use
61
+ * `formatPgvectorResultsDetailed` (internal to this package).
22
62
  */
23
63
  export declare function formatPgvectorResults(results: PgvectorResult[], maxChars: number): string | null;
24
64
  export interface RerankPgvectorParams {
package/dist/pgvector.js CHANGED
@@ -54,17 +54,26 @@ export async function searchCollection(pool, collection, vector, topK, scoreThre
54
54
  .filter((row) => row.score >= scoreThreshold);
55
55
  }
56
56
  /**
57
- * Format pgvector results for injection into the system prompt.
58
- * Respects a character budget so we never blow the context window with a
59
- * single oversized chunk — entries are appended whole until the budget is hit.
57
+ * Format pgvector results for injection into the system prompt AND report
58
+ * how many input entries were actually included.
60
59
  *
61
- * Returns `null` when there is nothing useful to inject so the caller can
62
- * easily skip empty sections.
60
+ * Internal sibling of the public `formatPgvectorResults`. The public
61
+ * variant returns only the prompt text and is kept backward-compatible;
62
+ * this one exposes `injectedCount` so the plugin's render path can size
63
+ * the provenance report to the injected subset (contract: "emit what
64
+ * was injected, not what was retrieved").
65
+ *
66
+ * Returns `null` when there is nothing useful to inject (empty input OR
67
+ * the budget cannot fit a single entry) so the caller can skip empty
68
+ * sections AND skip emitting a provenance report for zero injected items.
69
+ *
70
+ * @since 3.2.5
63
71
  */
64
- export function formatPgvectorResults(results, maxChars) {
72
+ export function formatPgvectorResultsDetailed(results, maxChars) {
65
73
  if (results.length === 0)
66
74
  return null;
67
75
  let output = "";
76
+ let injectedCount = 0;
68
77
  for (const r of results) {
69
78
  const lines = [
70
79
  `[${r.collection}] ${r.file_name ?? "unknown"} (score: ${r.score.toFixed(2)})`,
@@ -80,8 +89,29 @@ export function formatPgvectorResults(results, maxChars) {
80
89
  if (output.length + entry.length > maxChars)
81
90
  break;
82
91
  output += entry;
92
+ injectedCount += 1;
83
93
  }
84
- return output;
94
+ // No entry fit the budget — equivalent to "nothing to inject" so the
95
+ // caller skips the header AND the provenance report. Preserves the
96
+ // pre-3.2.5 `if (!formatted)` semantics when output was an empty string.
97
+ if (injectedCount === 0)
98
+ return null;
99
+ return { output, injectedCount };
100
+ }
101
+ /**
102
+ * Format pgvector results for injection into the system prompt.
103
+ * Respects a character budget so we never blow the context window with a
104
+ * single oversized chunk — entries are appended whole until the budget is hit.
105
+ *
106
+ * Returns `null` when there is nothing useful to inject so the caller can
107
+ * easily skip empty sections.
108
+ *
109
+ * Public API — signature kept stable across the v3.x line. Callers needing
110
+ * the count of entries actually injected should use
111
+ * `formatPgvectorResultsDetailed` (internal to this package).
112
+ */
113
+ export function formatPgvectorResults(results, maxChars) {
114
+ return formatPgvectorResultsDetailed(results, maxChars)?.output ?? null;
85
115
  }
86
116
  /**
87
117
  * Re-order `results` using the Jina cross-encoder reranker.
@@ -1 +1 @@
1
- {"version":3,"file":"pgvector.js","sourceRoot":"","sources":["../src/pgvector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pgvector.js","sourceRoot":"","sources":["../src/pgvector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import type { PluginLogger } from "openclaw/plugin-sdk/plugin-entry";
2
+ import type { PgvectorResult } from "./types.js";
3
+ export type ProvenanceReportLevel = "off" | "metadata" | "full";
4
+ export declare const PROVENANCE_REPORT_LEVELS: readonly ProvenanceReportLevel[];
5
+ /** Gateway-scoped stream this plugin emits on (see contract §2). */
6
+ export declare const PROVENANCE_STREAM = "openclaw-knowledge.provenance";
7
+ /** Mirrors the consumer's per-item excerpt bound (contract §3). */
8
+ export declare const PROVENANCE_EXCERPT_MAX_CHARS = 2000;
9
+ /** Mirrors the consumer's per-report item cap (contract §3). */
10
+ export declare const PROVENANCE_MAX_ITEMS = 24;
11
+ export interface ProvenanceItemV1 {
12
+ id?: string;
13
+ type?: string;
14
+ date?: string;
15
+ score?: number;
16
+ text?: string;
17
+ file_name?: string;
18
+ collection?: string;
19
+ }
20
+ export interface ProvenanceReportV1 {
21
+ v: 1;
22
+ source: "knowledge";
23
+ kind: "documents";
24
+ injected?: {
25
+ chars?: number;
26
+ position?: string;
27
+ truncated?: boolean;
28
+ };
29
+ retrieval?: {
30
+ route?: string;
31
+ collections?: string[];
32
+ lightrag?: {
33
+ mode?: string;
34
+ };
35
+ };
36
+ items: ProvenanceItemV1[];
37
+ }
38
+ /** Structural emitAgentEvent surface (the installed SDK types may predate it). */
39
+ export type EmitAgentEventFn = (event: {
40
+ runId: string;
41
+ sessionKey?: string;
42
+ stream: string;
43
+ data: unknown;
44
+ }) => unknown;
45
+ /** Normalize the operator's config value; anything off-list means "off". */
46
+ export declare function resolveProvenanceLevel(raw: unknown): ProvenanceReportLevel;
47
+ /**
48
+ * Feature-detect emitAgentEvent on the (first-registration) plugin api.
49
+ *
50
+ * GATEWAY QUIRK (bench-verified 2026-06-12): the agent runtime RE-REGISTERS
51
+ * plugins per run, and emitting through a re-registration's api is rejected
52
+ * `"plugin is not loaded"` — callers MUST pass the FIRST registration's api
53
+ * (module-level singleton; see registerKnowledgePlugin).
54
+ */
55
+ export declare function resolveEmitAgentEvent(api: unknown): EmitAgentEventFn | undefined;
56
+ /**
57
+ * Report for an injected pgvector section. `data` is the FINAL injected list
58
+ * (post-rerank, post-topN — exactly what reached the LLM). Returns null when
59
+ * the level is "off" or there is nothing citable.
60
+ */
61
+ export declare function buildPgvectorProvenance(data: PgvectorResult[], collections: string[], level: ProvenanceReportLevel, injectedChars: number): ProvenanceReportV1 | null;
62
+ /**
63
+ * Report for an injected LightRAG section. The graph response is one opaque
64
+ * context blob (no per-document structure yet — the docstore initiative will
65
+ * enrich this), so the report carries ONE item describing the injected
66
+ * context; "full" includes its leading excerpt VERBATIM from what was
67
+ * actually injected (the post-truncation text).
68
+ *
69
+ * @param injectedText body of the section actually delivered to the LLM
70
+ * (post-truncation, header EXCLUDED). Used for the
71
+ * `full`-level excerpt.
72
+ * @param mode LightRAG query mode (`mix`, `hybrid`, …).
73
+ * @param level provenance gate (`off` / `metadata` / `full`).
74
+ * @param injectedChars total length of the system-prompt section actually
75
+ * delivered (header INCLUDED). Defaults to
76
+ * `injectedText.length` for callers that don't track
77
+ * the header separately; the plugin's render path
78
+ * passes the full section length so `injected.chars`
79
+ * reflects exactly what reached the LLM
80
+ * (codex pass #36 P3). Negative values fall back to
81
+ * `injectedText.length` to keep the report
82
+ * well-formed even on caller mistakes.
83
+ */
84
+ export declare function buildLightRAGProvenance(injectedText: string, mode: string, level: ProvenanceReportLevel, injectedChars?: number): ProvenanceReportV1 | null;
85
+ /**
86
+ * Stable categories logged when emission fails. Operators triage by code;
87
+ * the underlying gateway reason / Error message is intentionally NEVER
88
+ * passed to the logger because in `full` mode it may echo back the
89
+ * payload (excerpts of the injected documents) it was rejecting — and the
90
+ * tracing invariant of this module is that report content never reaches
91
+ * logs.
92
+ *
93
+ * @since 3.2.5 (codex pass #36 P2 — sanitize emission failure logs)
94
+ */
95
+ export type ProvenanceEmitFailureCode = "plugin_not_loaded" | "missing_run_context" | "invalid_stream" | "validation_error" | "rate_limited" | "rejected" | "throw";
96
+ /**
97
+ * Emit the turn's reports. Every guard degrades to SILENCE (a missing SDK
98
+ * function, a missing runId, a gateway rejection) — provenance must never
99
+ * break or delay a turn. Failures are logged as a STABLE CATEGORY CODE
100
+ * (never the raw gateway reason or Error message) because a silent
101
+ * `{emitted:false}` is undiagnosable in the field, but echoing the raw
102
+ * reason could leak fragments of the injected payload back into the log
103
+ * stream — violating the module's tracing invariant.
104
+ */
105
+ export declare function emitProvenanceReports(emit: EmitAgentEventFn | undefined, logger: PluginLogger, runId: string | undefined, sessionKey: string | undefined, reports: (ProvenanceReportV1 | null)[]): void;
@@ -0,0 +1,186 @@
1
+ // Provenance reporting (provenance/v1) — what this plugin ACTUALLY injected
2
+ // into the LLM, emitted on the gateway agent-event bus so a chat frontend
3
+ // (openclaw-webchat) can show the user "which documents fed this reply".
4
+ //
5
+ // Normative contract: openclaw-webchat docs/PROVENANCE_CONTRACT.md.
6
+ // Transport rules (gateway-enforced, bench-verified 2026-06-12):
7
+ // - stream MUST be scoped to this plugin: "openclaw-knowledge.provenance";
8
+ // - runId is REQUIRED (the before_prompt_build ctx carries it);
9
+ // - the gateway stamps pluginId/pluginName into `data` (authenticated
10
+ // emitter identity — we never claim it ourselves);
11
+ // - a violation returns `{emitted:false, reason}` WITHOUT throwing.
12
+ //
13
+ // PRIVACY: this channel is DISTINCT from the tracing events module — reports
14
+ // land in the chat frontend's store under the chat's own ACL. The level knob
15
+ // keeps content out unless the operator opts in:
16
+ // - "off" (default): no emission at all;
17
+ // - "metadata": items WITHOUT text (file names, collections, scores);
18
+ // - "full": plus the exact injected excerpts.
19
+ // The tracing invariant is untouched: NOTHING here goes through logs.
20
+ export const PROVENANCE_REPORT_LEVELS = [
21
+ "off",
22
+ "metadata",
23
+ "full",
24
+ ];
25
+ /** Gateway-scoped stream this plugin emits on (see contract §2). */
26
+ export const PROVENANCE_STREAM = "openclaw-knowledge.provenance";
27
+ /** Mirrors the consumer's per-item excerpt bound (contract §3). */
28
+ export const PROVENANCE_EXCERPT_MAX_CHARS = 2_000;
29
+ /** Mirrors the consumer's per-report item cap (contract §3). */
30
+ export const PROVENANCE_MAX_ITEMS = 24;
31
+ /** Normalize the operator's config value; anything off-list means "off". */
32
+ export function resolveProvenanceLevel(raw) {
33
+ return PROVENANCE_REPORT_LEVELS.includes(raw)
34
+ ? raw
35
+ : "off";
36
+ }
37
+ /**
38
+ * Feature-detect emitAgentEvent on the (first-registration) plugin api.
39
+ *
40
+ * GATEWAY QUIRK (bench-verified 2026-06-12): the agent runtime RE-REGISTERS
41
+ * plugins per run, and emitting through a re-registration's api is rejected
42
+ * `"plugin is not loaded"` — callers MUST pass the FIRST registration's api
43
+ * (module-level singleton; see registerKnowledgePlugin).
44
+ */
45
+ export function resolveEmitAgentEvent(api) {
46
+ const candidate = api?.emitAgentEvent;
47
+ if (typeof candidate !== "function")
48
+ return undefined;
49
+ return candidate.bind(api);
50
+ }
51
+ /**
52
+ * Report for an injected pgvector section. `data` is the FINAL injected list
53
+ * (post-rerank, post-topN — exactly what reached the LLM). Returns null when
54
+ * the level is "off" or there is nothing citable.
55
+ */
56
+ export function buildPgvectorProvenance(data, collections, level, injectedChars) {
57
+ if (level === "off" || data.length === 0)
58
+ return null;
59
+ const items = data
60
+ .slice(0, PROVENANCE_MAX_ITEMS)
61
+ .map((r) => {
62
+ const item = { collection: r.collection, score: r.score };
63
+ if (r.file_name)
64
+ item.file_name = r.file_name;
65
+ else if (r.file_id)
66
+ item.id = r.file_id;
67
+ if (level === "full" && r.text) {
68
+ item.text = r.text.slice(0, PROVENANCE_EXCERPT_MAX_CHARS);
69
+ }
70
+ return item;
71
+ });
72
+ return {
73
+ v: 1,
74
+ source: "knowledge",
75
+ kind: "documents",
76
+ injected: { chars: injectedChars, position: "system_append" },
77
+ retrieval: { route: "pgvector", collections },
78
+ items,
79
+ };
80
+ }
81
+ /**
82
+ * Report for an injected LightRAG section. The graph response is one opaque
83
+ * context blob (no per-document structure yet — the docstore initiative will
84
+ * enrich this), so the report carries ONE item describing the injected
85
+ * context; "full" includes its leading excerpt VERBATIM from what was
86
+ * actually injected (the post-truncation text).
87
+ *
88
+ * @param injectedText body of the section actually delivered to the LLM
89
+ * (post-truncation, header EXCLUDED). Used for the
90
+ * `full`-level excerpt.
91
+ * @param mode LightRAG query mode (`mix`, `hybrid`, …).
92
+ * @param level provenance gate (`off` / `metadata` / `full`).
93
+ * @param injectedChars total length of the system-prompt section actually
94
+ * delivered (header INCLUDED). Defaults to
95
+ * `injectedText.length` for callers that don't track
96
+ * the header separately; the plugin's render path
97
+ * passes the full section length so `injected.chars`
98
+ * reflects exactly what reached the LLM
99
+ * (codex pass #36 P3). Negative values fall back to
100
+ * `injectedText.length` to keep the report
101
+ * well-formed even on caller mistakes.
102
+ */
103
+ export function buildLightRAGProvenance(injectedText, mode, level, injectedChars) {
104
+ if (level === "off" || injectedText.length === 0)
105
+ return null;
106
+ const item = { id: "lightrag-context", type: mode };
107
+ if (level === "full") {
108
+ item.text = injectedText.slice(0, PROVENANCE_EXCERPT_MAX_CHARS);
109
+ }
110
+ const reportedChars = typeof injectedChars === "number" && injectedChars >= 0
111
+ ? injectedChars
112
+ : injectedText.length;
113
+ return {
114
+ v: 1,
115
+ source: "knowledge",
116
+ kind: "documents",
117
+ injected: { chars: reportedChars, position: "system_append" },
118
+ retrieval: { route: "lightrag", lightrag: { mode } },
119
+ items: [item],
120
+ };
121
+ }
122
+ /**
123
+ * Map a gateway-supplied `reason` to a stable category code. Matching is
124
+ * substring-based on the lower-cased reason — coarse on purpose so a
125
+ * future gateway wording change does not break the classifier silently.
126
+ * Unknown reasons collapse to `"rejected"` so the field always has a
127
+ * non-empty, content-free value.
128
+ */
129
+ function classifyRejectionReason(reason) {
130
+ if (!reason)
131
+ return "rejected";
132
+ const lower = reason.toLowerCase();
133
+ if (lower.includes("not loaded"))
134
+ return "plugin_not_loaded";
135
+ if (lower.includes("runid") || lower.includes("session")) {
136
+ return "missing_run_context";
137
+ }
138
+ if (lower.includes("stream"))
139
+ return "invalid_stream";
140
+ if (lower.includes("validation") || lower.includes("schema")) {
141
+ return "validation_error";
142
+ }
143
+ if (lower.includes("rate") || lower.includes("limit"))
144
+ return "rate_limited";
145
+ return "rejected";
146
+ }
147
+ /**
148
+ * Emit the turn's reports. Every guard degrades to SILENCE (a missing SDK
149
+ * function, a missing runId, a gateway rejection) — provenance must never
150
+ * break or delay a turn. Failures are logged as a STABLE CATEGORY CODE
151
+ * (never the raw gateway reason or Error message) because a silent
152
+ * `{emitted:false}` is undiagnosable in the field, but echoing the raw
153
+ * reason could leak fragments of the injected payload back into the log
154
+ * stream — violating the module's tracing invariant.
155
+ */
156
+ export function emitProvenanceReports(emit, logger, runId, sessionKey, reports) {
157
+ if (!emit)
158
+ return;
159
+ if (!runId)
160
+ return; // gateway-required; absent on some triggers
161
+ for (const report of reports) {
162
+ if (report === null)
163
+ continue;
164
+ try {
165
+ const res = emit({
166
+ runId,
167
+ ...(sessionKey ? { sessionKey } : {}),
168
+ stream: PROVENANCE_STREAM,
169
+ data: report,
170
+ });
171
+ if (res && res.emitted === false) {
172
+ const code = classifyRejectionReason(res.reason);
173
+ logger.warn(`openclaw-knowledge: provenance report rejected — ${code}`);
174
+ }
175
+ }
176
+ catch (err) {
177
+ // Log only the Error.name (`TypeError`, `RangeError`, ...) — NEVER the
178
+ // `.message`, which third-party libs commonly enrich with input data.
179
+ const name = err && typeof err === "object" && typeof err.name === "string"
180
+ ? err.name
181
+ : "Error";
182
+ logger.warn(`openclaw-knowledge: provenance emit failed — throw:${name}`);
183
+ }
184
+ }
185
+ }
186
+ //# sourceMappingURL=provenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../src/provenance.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  // Default zero-shot labels for the Jina Classifier.
2
2
  //
3
3
  // The labels are intentionally bilingual: most prompts in the observed
4
- // traces are French (Ataraxis is a French-speaking deployment) but the
4
+ // traces are French (the deployment is French-speaking) but the
5
5
  // system prompts and agent meta-questions are often English. Jina
6
6
  // `jina-embeddings-v3` handles both languages natively.
7
7
  //
@@ -1 +1 @@
1
- {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/router/labels.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,kEAAkE;AAClE,wDAAwD;AACxD,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,qEAAqE;AACrE,mEAAmE;AACnE,8DAA8D;AAC9D,qFAAqF;AAErF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AACjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,2CAA2C;IAC3C,GAAG,UAAU,oKAAoK;IAEjL,iDAAiD;IACjD,GAAG,mBAAmB,2IAA2I;IAEjK,4CAA4C;IAC5C,GAAG,mBAAmB,uJAAuJ;IAE7K,uCAAuC;IACvC,GAAG,SAAS,oKAAoK;CACjL,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,UAAU;IACV,mBAAmB;IACnB,mBAAmB;IACnB,SAAS;CACV,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/router/labels.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,uEAAuE;AACvE,gEAAgE;AAChE,kEAAkE;AAClE,wDAAwD;AACxD,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,qEAAqE;AACrE,mEAAmE;AACnE,8DAA8D;AAC9D,qFAAqF;AAErF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AACjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,2CAA2C;IAC3C,GAAG,UAAU,oKAAoK;IAEjL,iDAAiD;IACjD,GAAG,mBAAmB,2IAA2I;IAEjK,4CAA4C;IAC5C,GAAG,mBAAmB,uJAAuJ;IAE7K,uCAAuC;IACvC,GAAG,SAAS,oKAAoK;CACjL,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,UAAU;IACV,mBAAmB;IACnB,mBAAmB;IACnB,SAAS;CACV,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC"}
package/dist/types.d.ts CHANGED
@@ -39,6 +39,15 @@ export interface KnowledgePluginConfig {
39
39
  lightragMaxChars?: number;
40
40
  lightragEnabled?: boolean;
41
41
  jina?: JinaPluginConfig;
42
+ /**
43
+ * Provenance reporting toward chat frontends (provenance/v1 — see the
44
+ * openclaw-webchat PROVENANCE_CONTRACT): "off" (default, no emission),
45
+ * "metadata" (file names/collections/scores, no content), "full"
46
+ * (plus the exact injected excerpts).
47
+ *
48
+ * @since 3.3.0
49
+ */
50
+ provenanceReport?: string;
42
51
  }
43
52
  export interface JinaPluginConfig {
44
53
  /** Jina API key. Required for `router.mode=jina-classifier` or `pgvectorReranker.enabled`. Supports `${ENV_VAR}` substitution. */
@@ -155,6 +164,12 @@ export interface ResolvedKnowledgeConfig {
155
164
  * @since 3.2.4
156
165
  */
157
166
  pgvectorRerankerMaxCharsPerDoc: number;
167
+ /**
168
+ * Provenance reporting level (provenance/v1). Default "off".
169
+ *
170
+ * @since 3.3.0
171
+ */
172
+ provenanceReport: "off" | "metadata" | "full";
158
173
  }
159
174
  /**
160
175
  * One search hit from the PostgreSQL `knowledge_vectors` table, after score
@@ -2,7 +2,7 @@
2
2
  "id": "openclaw-knowledge",
3
3
  "name": "Knowledge Base",
4
4
  "description": "Multi-source knowledge search (pgvector + LightRAG) with optional Jina-powered router & reranker — injects relevant documents and knowledge graph context before each turn via the before_prompt_build hook",
5
- "version": "3.2.4",
5
+ "version": "3.2.6",
6
6
  "activation": {
7
7
  "onStartup": true
8
8
  },
@@ -25,8 +25,12 @@
25
25
  },
26
26
  "collections": {
27
27
  "type": "array",
28
- "items": { "type": "string" },
29
- "default": ["knowledge_default"],
28
+ "items": {
29
+ "type": "string"
30
+ },
31
+ "default": [
32
+ "knowledge_default"
33
+ ],
30
34
  "description": "Collection names to search in the knowledge_vectors table"
31
35
  },
32
36
  "topK": {
@@ -63,7 +67,12 @@
63
67
  },
64
68
  "lightragQueryMode": {
65
69
  "type": "string",
66
- "enum": ["naive", "local", "global", "hybrid"],
70
+ "enum": [
71
+ "naive",
72
+ "local",
73
+ "global",
74
+ "hybrid"
75
+ ],
67
76
  "default": "hybrid",
68
77
  "description": "LightRAG query mode: naive (vector), local (entity), global (community), hybrid (recommended)"
69
78
  },
@@ -105,7 +114,10 @@
105
114
  },
106
115
  "mode": {
107
116
  "type": "string",
108
- "enum": ["heuristic", "jina-classifier"],
117
+ "enum": [
118
+ "heuristic",
119
+ "jina-classifier"
120
+ ],
109
121
  "default": "heuristic",
110
122
  "description": "heuristic: zero-cost regex + trigger rules only (safe start). jina-classifier: same heuristics first, then Jina /v1/classify for ambiguous queries."
111
123
  },
@@ -161,6 +173,16 @@
161
173
  }
162
174
  }
163
175
  }
176
+ },
177
+ "provenanceReport": {
178
+ "type": "string",
179
+ "enum": [
180
+ "off",
181
+ "metadata",
182
+ "full"
183
+ ],
184
+ "default": "off",
185
+ "description": "Provenance reporting toward chat frontends (provenance/v1): off = no emission; metadata = file names/collections/scores; full = plus the exact injected excerpts. Reports ride the gateway agent-event bus and land under the chat's own ACL — never in logs."
164
186
  }
165
187
  },
166
188
  "required": []
@@ -185,7 +207,7 @@
185
207
  "collections": {
186
208
  "label": "Collections to search",
187
209
  "placeholder": "knowledge_default",
188
- "help": "Collection names in the knowledge_vectors table (e.g. knowledge_olivier, knowledge_shared)"
210
+ "help": "Collection names in the knowledge_vectors table (e.g. knowledge_default, knowledge_shared)"
189
211
  },
190
212
  "topK": {
191
213
  "label": "Top-K per collection",
@@ -290,4 +312,4 @@
290
312
  "help": "Soft alert threshold on outbound Jina calls per minute. Default 60. Never blocks — only logs and emits jina_rpm_exceeded events. Set to 0 to disable."
291
313
  }
292
314
  }
293
- }
315
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lacneu/openclaw-knowledge",
3
- "version": "3.2.4",
3
+ "version": "3.2.6",
4
4
  "type": "module",
5
5
  "description": "Multi-source knowledge plugin for OpenClaw — pgvector + LightRAG injection with optional Jina-powered router & reranker, via before_prompt_build hook",
6
6
  "license": "MIT",