@adonis-agora/agent 0.34.1 → 0.35.0

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 (118) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +34 -0
  3. package/dist/assets/spa/assets/index-7XqfoeQH.js +9 -0
  4. package/dist/assets/spa/index.html +1 -1
  5. package/dist/providers/agent_provider.d.ts.map +1 -1
  6. package/dist/providers/agent_provider.js +4 -0
  7. package/dist/providers/agent_provider.js.map +1 -1
  8. package/dist/src/agent-deps-factory.d.ts +5 -0
  9. package/dist/src/agent-deps-factory.d.ts.map +1 -1
  10. package/dist/src/agent-deps-factory.js +6 -0
  11. package/dist/src/agent-deps-factory.js.map +1 -1
  12. package/dist/src/agent-deps.d.ts +5 -0
  13. package/dist/src/agent-deps.d.ts.map +1 -1
  14. package/dist/src/agent-deps.js.map +1 -1
  15. package/dist/src/define_config.d.ts +12 -0
  16. package/dist/src/define_config.d.ts.map +1 -1
  17. package/dist/src/define_config.js.map +1 -1
  18. package/dist/src/guardrails/agent.d.ts +211 -0
  19. package/dist/src/guardrails/agent.d.ts.map +1 -0
  20. package/dist/src/guardrails/agent.js +433 -0
  21. package/dist/src/guardrails/agent.js.map +1 -0
  22. package/dist/src/guardrails/detectors/custom.d.ts +9 -0
  23. package/dist/src/guardrails/detectors/custom.d.ts.map +1 -0
  24. package/dist/src/guardrails/detectors/custom.js +81 -0
  25. package/dist/src/guardrails/detectors/custom.js.map +1 -0
  26. package/dist/src/guardrails/detectors/injection.d.ts +23 -0
  27. package/dist/src/guardrails/detectors/injection.d.ts.map +1 -0
  28. package/dist/src/guardrails/detectors/injection.js +208 -0
  29. package/dist/src/guardrails/detectors/injection.js.map +1 -0
  30. package/dist/src/guardrails/detectors/pii.d.ts +23 -0
  31. package/dist/src/guardrails/detectors/pii.d.ts.map +1 -0
  32. package/dist/src/guardrails/detectors/pii.js +295 -0
  33. package/dist/src/guardrails/detectors/pii.js.map +1 -0
  34. package/dist/src/guardrails/detectors/secrets.d.ts +5 -0
  35. package/dist/src/guardrails/detectors/secrets.d.ts.map +1 -0
  36. package/dist/src/guardrails/detectors/secrets.js +110 -0
  37. package/dist/src/guardrails/detectors/secrets.js.map +1 -0
  38. package/dist/src/guardrails/detectors/tool-poisoning.d.ts +16 -0
  39. package/dist/src/guardrails/detectors/tool-poisoning.d.ts.map +1 -0
  40. package/dist/src/guardrails/detectors/tool-poisoning.js +116 -0
  41. package/dist/src/guardrails/detectors/tool-poisoning.js.map +1 -0
  42. package/dist/src/guardrails/engine.d.ts +90 -0
  43. package/dist/src/guardrails/engine.d.ts.map +1 -0
  44. package/dist/src/guardrails/engine.js +324 -0
  45. package/dist/src/guardrails/engine.js.map +1 -0
  46. package/dist/src/guardrails/glob.d.ts +4 -0
  47. package/dist/src/guardrails/glob.d.ts.map +1 -0
  48. package/dist/src/guardrails/glob.js +20 -0
  49. package/dist/src/guardrails/glob.js.map +1 -0
  50. package/dist/src/guardrails/index.d.ts +20 -0
  51. package/dist/src/guardrails/index.d.ts.map +1 -0
  52. package/dist/src/guardrails/index.js +20 -0
  53. package/dist/src/guardrails/index.js.map +1 -0
  54. package/dist/src/guardrails/segments.d.ts +14 -0
  55. package/dist/src/guardrails/segments.d.ts.map +1 -0
  56. package/dist/src/guardrails/segments.js +32 -0
  57. package/dist/src/guardrails/segments.js.map +1 -0
  58. package/dist/src/guardrails/types.d.ts +161 -0
  59. package/dist/src/guardrails/types.d.ts.map +1 -0
  60. package/dist/src/guardrails/types.js +49 -0
  61. package/dist/src/guardrails/types.js.map +1 -0
  62. package/dist/src/guardrails/vault.d.ts +44 -0
  63. package/dist/src/guardrails/vault.d.ts.map +1 -0
  64. package/dist/src/guardrails/vault.js +103 -0
  65. package/dist/src/guardrails/vault.js.map +1 -0
  66. package/dist/src/index.d.ts +1 -1
  67. package/dist/src/index.js +1 -1
  68. package/dist/src/mcp-client/index.d.ts +1 -1
  69. package/dist/src/mcp-client/index.d.ts.map +1 -1
  70. package/dist/src/mcp-client/index.js.map +1 -1
  71. package/dist/src/mcp-client/options.d.ts +32 -0
  72. package/dist/src/mcp-client/options.d.ts.map +1 -1
  73. package/dist/src/mcp-client/tool-source.d.ts +2 -0
  74. package/dist/src/mcp-client/tool-source.d.ts.map +1 -1
  75. package/dist/src/mcp-client/tool-source.js +27 -1
  76. package/dist/src/mcp-client/tool-source.js.map +1 -1
  77. package/dist/src/rag/http-reranker.d.ts +46 -0
  78. package/dist/src/rag/http-reranker.d.ts.map +1 -0
  79. package/dist/src/rag/http-reranker.js +83 -0
  80. package/dist/src/rag/http-reranker.js.map +1 -0
  81. package/dist/src/rag/hybrid-retriever.d.ts +6 -1
  82. package/dist/src/rag/hybrid-retriever.d.ts.map +1 -1
  83. package/dist/src/rag/hybrid-retriever.js +27 -3
  84. package/dist/src/rag/hybrid-retriever.js.map +1 -1
  85. package/dist/src/rag/index.d.ts +5 -2
  86. package/dist/src/rag/index.d.ts.map +1 -1
  87. package/dist/src/rag/index.js +5 -2
  88. package/dist/src/rag/index.js.map +1 -1
  89. package/dist/src/rag/lexical-retriever.d.ts +23 -0
  90. package/dist/src/rag/lexical-retriever.d.ts.map +1 -0
  91. package/dist/src/rag/lexical-retriever.js +28 -0
  92. package/dist/src/rag/lexical-retriever.js.map +1 -0
  93. package/dist/src/rag/openai-embeddings.d.ts +62 -0
  94. package/dist/src/rag/openai-embeddings.d.ts.map +1 -0
  95. package/dist/src/rag/openai-embeddings.js +106 -0
  96. package/dist/src/rag/openai-embeddings.js.map +1 -0
  97. package/dist/src/rag/pg-vector-store.d.ts +111 -6
  98. package/dist/src/rag/pg-vector-store.d.ts.map +1 -1
  99. package/dist/src/rag/pg-vector-store.js +224 -31
  100. package/dist/src/rag/pg-vector-store.js.map +1 -1
  101. package/dist/src/rag/vector-store.d.ts +15 -0
  102. package/dist/src/rag/vector-store.d.ts.map +1 -1
  103. package/dist/src/rag/vector-store.js +4 -0
  104. package/dist/src/rag/vector-store.js.map +1 -1
  105. package/dist/src/stores/factory.d.ts +25 -3
  106. package/dist/src/stores/factory.d.ts.map +1 -1
  107. package/dist/src/stores/factory.js +21 -3
  108. package/dist/src/stores/factory.js.map +1 -1
  109. package/dist/src/testing/fake-embedding-provider.d.ts +12 -0
  110. package/dist/src/testing/fake-embedding-provider.d.ts.map +1 -1
  111. package/dist/src/testing/fake-embedding-provider.js +35 -0
  112. package/dist/src/testing/fake-embedding-provider.js.map +1 -1
  113. package/dist/src/testing/index.d.ts +1 -1
  114. package/dist/src/testing/index.d.ts.map +1 -1
  115. package/dist/src/testing/index.js +1 -1
  116. package/dist/src/testing/index.js.map +1 -1
  117. package/package.json +8 -2
  118. package/dist/assets/spa/assets/index-DjIMQOxi.js +0 -9
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Guardrails: detectors that look at text on its way to or from a model — prompts, answers, tool
3
+ * arguments, tool results, tool descriptions — and rules that decide what to do when they fire.
4
+ *
5
+ * Nothing in this module depends on the agent loop, on NestJS or on a runtime API beyond the
6
+ * language itself. A process that proxies raw provider traffic uses the detectors, `scan`, `Vault`
7
+ * and `StreamGuard` directly; `createGuardrails` is the adapter onto the loop's processor seams.
8
+ */
9
+ /** Where in the traffic a rule applies. */
10
+ export type GuardrailStage =
11
+ /** Prompt + attached context sent to a model (system, user, assistant history). */
12
+ 'llm_request'
13
+ /** What the model answered (text and tool-call arguments), streaming included. */
14
+ | 'llm_response'
15
+ /** Arguments of a tool call, before the tool runs. */
16
+ | 'tool_args'
17
+ /** What a tool returned, before it flows back into the model (indirect prompt injection). */
18
+ | 'tool_result'
19
+ /** Tool descriptions and schemas of a remote tool server (tool poisoning). */
20
+ | 'tool_description';
21
+ export declare const GUARDRAIL_STAGES: readonly GuardrailStage[];
22
+ /**
23
+ * - `allow`: exemption. When it matches (its detectors fire, or it has none), later rules are skipped.
24
+ * - `log`: record the hit only (a "flag").
25
+ * - `redact`: replace what was found by placeholders (reversible for values sent to a model).
26
+ * - `approve`: human-in-the-loop — refuse until someone approves this exact content. A caller that
27
+ * has no approval flow of its own treats it as `block`.
28
+ * - `block`: refuse with the rule's user-facing message.
29
+ */
30
+ export type GuardrailAction = 'allow' | 'log' | 'redact' | 'approve' | 'block';
31
+ /** Severity order used to combine several rules: the most severe wins. */
32
+ export declare const ACTION_SEVERITY: Record<GuardrailAction, number>;
33
+ export type PiiType = 'email' | 'phone' | 'cpf' | 'cnpj' | 'ssn' | 'credit_card' | 'iban' | 'ip_address';
34
+ export declare const PII_TYPES: readonly PiiType[];
35
+ export type SecretType = 'openai_key' | 'anthropic_key' | 'aws_access_key' | 'aws_secret_key' | 'github_token' | 'gitlab_token' | 'slack_token' | 'google_api_key' | 'stripe_key' | 'jwt' | 'bearer_token' | 'private_key' | 'generic_secret';
36
+ export declare const SECRET_TYPES: readonly SecretType[];
37
+ /** Something a detector found. `value` is the matched text; keep it in-process. */
38
+ export interface Finding {
39
+ /** The detector kind (or a custom detector's name). */
40
+ detector: string;
41
+ /** e.g. `pii.credit_card`, `secret.aws_access_key`, `injection.ignore_previous`. */
42
+ category: string;
43
+ start: number;
44
+ end: number;
45
+ score: number;
46
+ value: string;
47
+ /**
48
+ * Whether the finding can be redacted by replacing its span. `false` for whole-text verdicts
49
+ * (a moderation or classifier call), which replace the whole segment when redacting.
50
+ */
51
+ spanned?: boolean;
52
+ /**
53
+ * What a redaction puts in place of this span. Undefined → a vault placeholder (`[EMAIL_1]`).
54
+ * Detectors whose finding is an instruction rather than a value (injection, tool poisoning) set
55
+ * this so the text is removed rather than tokenized.
56
+ */
57
+ replacement?: string;
58
+ }
59
+ /** Who wrote a piece of text (model request stage). */
60
+ export type SegmentSource = 'system' | 'user' | 'assistant' | 'tool';
61
+ /** A piece of text to scan, with where it came from. */
62
+ export interface Segment {
63
+ text: string;
64
+ source?: SegmentSource;
65
+ /**
66
+ * Part of the newest turn. Content that is only in re-sent history is acted upon (redacted
67
+ * one-way instead of blocked) but its hits are reported as not fresh. Undefined → fresh.
68
+ */
69
+ fresh?: boolean;
70
+ }
71
+ /**
72
+ * What the traffic is about. `stage` is the only field the engine reads itself; `tool` feeds the
73
+ * `match.tools` globs. Extend it with whatever your rules' `when` predicates need (tenant, actor,
74
+ * model, destination…).
75
+ */
76
+ export interface GuardContext {
77
+ stage: GuardrailStage;
78
+ /** Tool name, on tool stages. */
79
+ tool?: string;
80
+ }
81
+ /** A detector that runs your own code — NER, a classifier, a moderation endpoint, an LLM judge. */
82
+ export interface CustomDetector<C extends GuardContext = GuardContext> {
83
+ kind: 'custom';
84
+ /** Identifies the detector in findings and hits (`detector`). Also its memoization key. */
85
+ name: string;
86
+ detect(text: string, ctx: C): Finding[] | Promise<Finding[]>;
87
+ }
88
+ /** A detector as configured on a rule. */
89
+ export type DetectorSpec<C extends GuardContext = GuardContext> =
90
+ /** Regex + checksum validators (Luhn, CPF/CNPJ mod 11, IBAN mod 97…). */
91
+ {
92
+ kind: 'pii';
93
+ types?: readonly PiiType[];
94
+ }
95
+ /** API keys, tokens and private keys (patterns + entropy). */
96
+ | {
97
+ kind: 'secrets';
98
+ types?: readonly SecretType[];
99
+ }
100
+ /** Prompt-injection / jailbreak heuristics (EN, PT-BR, ES; hidden Unicode; encoded payloads). */
101
+ | {
102
+ kind: 'injection';
103
+ threshold?: number;
104
+ }
105
+ /** Suspicious instructions hidden in tool descriptions (tool poisoning). */
106
+ | {
107
+ kind: 'tool_poisoning';
108
+ threshold?: number;
109
+ }
110
+ /** Your own regular expressions (`(?i)` prefix = case-insensitive). */
111
+ | {
112
+ kind: 'regex';
113
+ patterns: readonly string[];
114
+ label?: string;
115
+ }
116
+ /** Words or phrases (case- and accent-insensitive, whole words). */
117
+ | {
118
+ kind: 'keywords';
119
+ words: readonly string[];
120
+ label?: string;
121
+ } | CustomDetector<C>;
122
+ export type DetectorKind = DetectorSpec['kind'];
123
+ /** Scope a rule to part of the traffic. Every matcher that is set must match. */
124
+ export interface GuardrailMatch {
125
+ /** Model request stage: which messages are scanned (default all). */
126
+ sources?: readonly SegmentSource[];
127
+ /** Tool stages: tool-name globs (`*` any run, `?` one character). Never matches model traffic. */
128
+ tools?: readonly string[];
129
+ }
130
+ export interface GuardrailOptions {
131
+ /** Shown to the person when the rule blocks or asks for approval. */
132
+ message?: string;
133
+ /** What happens when a detector throws: `open` = ignore (default), `closed` = block. */
134
+ failMode?: 'open' | 'closed';
135
+ /**
136
+ * `redact` on `llm_request`: put the original values back into the answer the caller receives
137
+ * (the model only ever sees placeholders). Default true.
138
+ */
139
+ restore?: boolean;
140
+ }
141
+ export interface GuardrailRule<C extends GuardContext = GuardContext> {
142
+ id: string;
143
+ /** Shown in hits and decisions. Default: `id`. */
144
+ name?: string;
145
+ /** Ascending order of evaluation; ties by name. Default 100. */
146
+ priority?: number;
147
+ /** Default true. */
148
+ enabled?: boolean;
149
+ stages: readonly GuardrailStage[];
150
+ /** Empty → the rule fires on scope alone (an exemption, or a blanket block). */
151
+ detectors: readonly DetectorSpec<C>[];
152
+ action: GuardrailAction;
153
+ match?: GuardrailMatch;
154
+ /**
155
+ * Anything scope-like the engine does not know about — the tenant, the actor's roles, the model
156
+ * or its destination. Returning false leaves the rule out of this scan.
157
+ */
158
+ when?: (ctx: C) => boolean;
159
+ options?: GuardrailOptions;
160
+ }
161
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/guardrails/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Guardrails: detectors that look at text on its way to or from a model — prompts, answers, tool
3
+ * arguments, tool results, tool descriptions — and rules that decide what to do when they fire.
4
+ *
5
+ * Nothing in this module depends on the agent loop, on NestJS or on a runtime API beyond the
6
+ * language itself. A process that proxies raw provider traffic uses the detectors, `scan`, `Vault`
7
+ * and `StreamGuard` directly; `createGuardrails` is the adapter onto the loop's processor seams.
8
+ */
9
+ export const GUARDRAIL_STAGES = [
10
+ 'llm_request',
11
+ 'llm_response',
12
+ 'tool_args',
13
+ 'tool_result',
14
+ 'tool_description',
15
+ ];
16
+ /** Severity order used to combine several rules: the most severe wins. */
17
+ export const ACTION_SEVERITY = {
18
+ allow: 0,
19
+ log: 1,
20
+ redact: 2,
21
+ approve: 3,
22
+ block: 4,
23
+ };
24
+ export const PII_TYPES = [
25
+ 'email',
26
+ 'phone',
27
+ 'cpf',
28
+ 'cnpj',
29
+ 'ssn',
30
+ 'credit_card',
31
+ 'iban',
32
+ 'ip_address',
33
+ ];
34
+ export const SECRET_TYPES = [
35
+ 'openai_key',
36
+ 'anthropic_key',
37
+ 'aws_access_key',
38
+ 'aws_secret_key',
39
+ 'github_token',
40
+ 'gitlab_token',
41
+ 'slack_token',
42
+ 'google_api_key',
43
+ 'stripe_key',
44
+ 'jwt',
45
+ 'bearer_token',
46
+ 'private_key',
47
+ 'generic_secret',
48
+ ];
49
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/guardrails/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,MAAM,CAAC,MAAM,gBAAgB,GAA8B;IACzD,aAAa;IACb,cAAc;IACd,WAAW;IACX,aAAa;IACb,kBAAkB;CACnB,CAAC;AAYF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,eAAe,GAAoC;IAC9D,KAAK,EAAE,CAAC;IACR,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;CACT,CAAC;AAYF,MAAM,CAAC,MAAM,SAAS,GAAuB;IAC3C,OAAO;IACP,OAAO;IACP,KAAK;IACL,MAAM;IACN,KAAK;IACL,aAAa;IACb,MAAM;IACN,YAAY;CACb,CAAC;AAiBF,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,YAAY;IACZ,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,cAAc;IACd,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,KAAK;IACL,cAAc;IACd,aAAa;IACb,gBAAgB;CACjB,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Reversible tokenization for one request: each distinct sensitive value gets a stable placeholder
3
+ * (`[EMAIL_1]`, `[CREDIT_CARD_2]`…) in order of first appearance, so a conversation re-sent turn
4
+ * after turn maps to the same placeholders. The model only sees placeholders; `restore` puts the
5
+ * values back into what the caller receives.
6
+ *
7
+ * Values stay in this object. {@link toJSON} / {@link fromJSON} exist for a caller that must carry a
8
+ * vault across processes (a durable run resumed elsewhere); wherever that snapshot is stored holds
9
+ * the raw values, so treat it like the data it came from.
10
+ */
11
+ export declare class Vault {
12
+ private readonly byValue;
13
+ private readonly byToken;
14
+ private readonly counters;
15
+ /**
16
+ * Placeholder for `value` under `label` (e.g. `CREDIT_CARD`). Reversible placeholders look like
17
+ * `[CREDIT_CARD_1]`; one-way ones (tool results, answers, rules with `restore: false`) like
18
+ * `[REDACTED_CREDIT_CARD_1]`, so they can never be mistaken for a reversible one.
19
+ */
20
+ tokenFor(label: string, value: string, restorable: boolean): string;
21
+ get size(): number;
22
+ get restorableCount(): number;
23
+ /** Longest placeholder, for stream hold-back windows. */
24
+ get maxTokenLength(): number;
25
+ /** Puts restorable values back. `jsonString`: the text is inside a JSON string literal. */
26
+ restore(text: string, jsonString?: boolean): string;
27
+ /** Whether `text` ends with what could be the beginning of a placeholder (streaming). */
28
+ pendingPrefix(text: string): number;
29
+ /** Every entry, in the order the placeholders were minted. */
30
+ toJSON(): VaultSnapshot;
31
+ /** Rebuilds a vault from {@link toJSON}; placeholders keep their numbers and counters resume. */
32
+ static fromJSON(snapshot: VaultSnapshot): Vault;
33
+ }
34
+ /** A serializable {@link Vault}. */
35
+ export interface VaultSnapshot {
36
+ entries: Array<{
37
+ token: string;
38
+ value: string;
39
+ restorable: boolean;
40
+ }>;
41
+ }
42
+ /** `pii.credit_card` -> `CREDIT_CARD`, `secret.openai_key` -> `OPENAI_KEY`, `ner.person` -> `PERSON`. */
43
+ export declare function labelFor(category: string): string;
44
+ //# sourceMappingURL=vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../../src/guardrails/vault.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6D;IACrF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,CAWlE;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,eAAe,IAAI,MAAM,CAI5B;IAED,yDAAyD;IACzD,IAAI,cAAc,IAAI,MAAM,CAI3B;IAED,2FAA2F;IAC3F,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,MAAM,CAOhD;IAED,yFAAyF;IACzF,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlC;IAED,8DAA8D;IAC9D,MAAM,IAAI,aAAa,CAQtB;IAED,iGAAiG;IACjG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,KAAK,CAY9C;CACF;AAED,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACvE;AAED,yGAAyG;AACzG,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIjD"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Reversible tokenization for one request: each distinct sensitive value gets a stable placeholder
3
+ * (`[EMAIL_1]`, `[CREDIT_CARD_2]`…) in order of first appearance, so a conversation re-sent turn
4
+ * after turn maps to the same placeholders. The model only sees placeholders; `restore` puts the
5
+ * values back into what the caller receives.
6
+ *
7
+ * Values stay in this object. {@link toJSON} / {@link fromJSON} exist for a caller that must carry a
8
+ * vault across processes (a durable run resumed elsewhere); wherever that snapshot is stored holds
9
+ * the raw values, so treat it like the data it came from.
10
+ */
11
+ export class Vault {
12
+ byValue = new Map();
13
+ byToken = new Map();
14
+ counters = new Map();
15
+ /**
16
+ * Placeholder for `value` under `label` (e.g. `CREDIT_CARD`). Reversible placeholders look like
17
+ * `[CREDIT_CARD_1]`; one-way ones (tool results, answers, rules with `restore: false`) like
18
+ * `[REDACTED_CREDIT_CARD_1]`, so they can never be mistaken for a reversible one.
19
+ */
20
+ tokenFor(label, value, restorable) {
21
+ const ns = restorable ? label : `REDACTED_${label}`;
22
+ const key = `${ns}\u0000${value}`;
23
+ const existing = this.byValue.get(key);
24
+ if (existing)
25
+ return existing;
26
+ const n = (this.counters.get(ns) ?? 0) + 1;
27
+ this.counters.set(ns, n);
28
+ const token = `[${ns}_${n}]`;
29
+ this.byValue.set(key, token);
30
+ this.byToken.set(token, { value, restorable });
31
+ return token;
32
+ }
33
+ get size() {
34
+ return this.byToken.size;
35
+ }
36
+ get restorableCount() {
37
+ let n = 0;
38
+ for (const e of this.byToken.values())
39
+ if (e.restorable)
40
+ n++;
41
+ return n;
42
+ }
43
+ /** Longest placeholder, for stream hold-back windows. */
44
+ get maxTokenLength() {
45
+ let n = 0;
46
+ for (const t of this.byToken.keys())
47
+ n = Math.max(n, t.length);
48
+ return n;
49
+ }
50
+ /** Puts restorable values back. `jsonString`: the text is inside a JSON string literal. */
51
+ restore(text, jsonString = false) {
52
+ if (this.byToken.size === 0 || !text.includes('['))
53
+ return text;
54
+ return text.replace(/\[([A-Z][A-Z0-9_]*_\d+)\]/g, (whole) => {
55
+ const entry = this.byToken.get(whole);
56
+ if (!entry?.restorable)
57
+ return whole;
58
+ return jsonString ? JSON.stringify(entry.value).slice(1, -1) : entry.value;
59
+ });
60
+ }
61
+ /** Whether `text` ends with what could be the beginning of a placeholder (streaming). */
62
+ pendingPrefix(text) {
63
+ const i = text.lastIndexOf('[');
64
+ if (i === -1)
65
+ return 0;
66
+ const tail = text.slice(i);
67
+ if (tail.length > this.maxTokenLength)
68
+ return 0;
69
+ return /^\[[A-Z0-9_]*$/.test(tail) ? tail.length : 0;
70
+ }
71
+ /** Every entry, in the order the placeholders were minted. */
72
+ toJSON() {
73
+ return {
74
+ entries: [...this.byToken].map(([token, e]) => ({
75
+ token,
76
+ value: e.value,
77
+ restorable: e.restorable,
78
+ })),
79
+ };
80
+ }
81
+ /** Rebuilds a vault from {@link toJSON}; placeholders keep their numbers and counters resume. */
82
+ static fromJSON(snapshot) {
83
+ const vault = new Vault();
84
+ for (const { token, value, restorable } of snapshot.entries) {
85
+ const m = /^\[([A-Z][A-Z0-9_]*)_(\d+)\]$/.exec(token);
86
+ if (!m)
87
+ continue;
88
+ const ns = m[1] ?? '';
89
+ const n = Number(m[2]);
90
+ vault.byValue.set(`${ns}\u0000${value}`, token);
91
+ vault.byToken.set(token, { value, restorable });
92
+ vault.counters.set(ns, Math.max(vault.counters.get(ns) ?? 0, n));
93
+ }
94
+ return vault;
95
+ }
96
+ }
97
+ /** `pii.credit_card` -> `CREDIT_CARD`, `secret.openai_key` -> `OPENAI_KEY`, `ner.person` -> `PERSON`. */
98
+ export function labelFor(category) {
99
+ const tail = category.includes('.') ? category.slice(category.indexOf('.') + 1) : category;
100
+ const label = tail.replace(/[^A-Za-z0-9]+/g, '_').toUpperCase();
101
+ return label || 'REDACTED';
102
+ }
103
+ //# sourceMappingURL=vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../../src/guardrails/vault.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,OAAO,KAAK;IACC,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,OAAO,GAAG,IAAI,GAAG,EAAkD,CAAC;IACpE,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,KAAa,EAAE,KAAa,EAAE,UAAmB;QACxD,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,GAAG,EAAE,SAAS,KAAK,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,eAAe;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,CAAC,UAAU;gBAAE,CAAC,EAAE,CAAC;QAC7D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,yDAAyD;IACzD,IAAI,cAAc;QAChB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC/D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,2FAA2F;IAC3F,OAAO,CAAC,IAAY,EAAE,UAAU,GAAG,KAAK;QACtC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,EAAE,UAAU;gBAAE,OAAO,KAAK,CAAC;YACrC,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yFAAyF;IACzF,aAAa,CAAC,IAAY;QACxB,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc;YAAE,OAAO,CAAC,CAAC;QAChD,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,8DAA8D;IAC9D,MAAM;QACJ,OAAO;YACL,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9C,KAAK;gBACL,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,UAAU,EAAE,CAAC,CAAC,UAAU;aACzB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,iGAAiG;IACjG,MAAM,CAAC,QAAQ,CAAC,QAAuB;QACrC,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC5D,MAAM,CAAC,GAAG,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;YAChD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YAChD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAOD,yGAAyG;AACzG,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3F,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,OAAO,KAAK,IAAI,UAAU,CAAC;AAC7B,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "0.34.1";
1
+ export declare const VERSION = "0.35.0";
2
2
  export { configure } from '../configure.js';
3
3
  export * from './actor-labels.js';
4
4
  export type { AuthActorResolverOptions } from './actor-resolver.js';
package/dist/src/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export const VERSION = '0.34.1';
1
+ export const VERSION = '0.35.0';
2
2
  // Re-export the configure hook from the package root so `node ace configure` finds it.
3
3
  // AdonisJS imports the package MAIN and reads `configure` off the module namespace —
4
4
  // the `./configure` subpath alone is never consulted.
@@ -1,5 +1,5 @@
1
1
  export { type McpRegisteredTool, McpToolImporter } from './importer.js';
2
- export type { McpCustomTransportConfig, McpHttpTransportConfig, McpLogger, McpServerConfig, McpStdioTransportConfig, McpTransportConfig, } from './options.js';
2
+ export type { McpCustomTransportConfig, McpHttpTransportConfig, McpLogger, McpServerConfig, McpStdioTransportConfig, McpToolScreen, McpToolScreenInput, McpToolScreenVerdict, McpTransportConfig, } from './options.js';
3
3
  export { type McpInputSchemaOptions, mcpInputSchema } from './tool-input.js';
4
4
  export { type McpToolAnnotations, type McpToolInfo, type McpToolKindPolicy, resolveMcpToolKind, } from './tool-kind.js';
5
5
  export { localToolName, MAX_TOOL_NAME_LENGTH } from './tool-name.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,SAAS,EACT,eAAe,EACf,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,qBAAqB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,SAAS,EACT,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,qBAAqB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,eAAe,EAAE,MAAM,eAAe,CAAC;AASxE,OAAO,EAA8B,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAIL,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAwB,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,eAAe,EAAE,MAAM,eAAe,CAAC;AAYxE,OAAO,EAA8B,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAIL,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAwB,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
@@ -32,6 +32,31 @@ export type McpTransportConfig = McpStdioTransportConfig | McpHttpTransportConfi
32
32
  export interface McpLogger {
33
33
  warn(message: string): void;
34
34
  }
35
+ /** A remote tool definition, as a screen sees it before the tool is imported. */
36
+ export interface McpToolScreenInput {
37
+ /** The configured server's name. */
38
+ server: string;
39
+ /** The name on the server (before namespacing). */
40
+ name: string;
41
+ title?: string;
42
+ description?: string;
43
+ /** The tool's JSON Schema, as the server listed it — descriptions in it are read by the model too. */
44
+ inputSchema: unknown;
45
+ }
46
+ /** A screen's decision. `allowed: false` leaves the tool out of the catalog, with the reason logged. */
47
+ export type McpToolScreenVerdict = {
48
+ allowed: true;
49
+ } | {
50
+ allowed: false;
51
+ reason: string;
52
+ };
53
+ /**
54
+ * Inspects a tool definition before it is imported — the seam for tool-poisoning checks
55
+ * (instructions hidden in a description or a parameter's description, which the model reads and
56
+ * people rarely do). `createGuardrails({ toolPoisoning: true }).screenTool` from
57
+ * `@adonis-agora/agent/guardrails` has this shape.
58
+ */
59
+ export type McpToolScreen = (tool: McpToolScreenInput) => McpToolScreenVerdict | Promise<McpToolScreenVerdict>;
35
60
  /** One MCP server to import tools from, and the policy every tool it exports is imported under. */
36
61
  export interface McpServerConfig {
37
62
  /** Identifies the server in logs, and prefixes its tool names by default. */
@@ -85,6 +110,13 @@ export interface McpServerConfig {
85
110
  * does not backtrack, where the screen costs tools and buys nothing.
86
111
  */
87
112
  rejectUnsafePatterns?: boolean;
113
+ /**
114
+ * Screens each listed tool definition before it is imported; a refused tool is skipped (and
115
+ * logged), exactly like one whose schema will not compile. Runs on every import, so a server that
116
+ * changes a description after boot is screened again on refresh. A screen that THROWS skips the
117
+ * tool too: a check that could not run is not a pass.
118
+ */
119
+ screen?: McpToolScreen;
88
120
  /** What this client calls itself in the MCP handshake. Defaults to `adonis-agora-agent-mcp`. */
89
121
  clientInfo?: {
90
122
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/mcp-client/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,uEAAuE;AACvE,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,uGAAuG;IACvG,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,+DAA+D;AAC/D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC9C;AAED,MAAM,MAAM,kBAAkB,GAC1B,uBAAuB,GACvB,sBAAsB,GACtB,wBAAwB,CAAC;AAE7B,mGAAmG;AACnG,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,mGAAmG;AACnG,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,kBAAkB,CAAC;IAC9B;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,gGAAgG;IAChG,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B,+FAA+F;IAC/F,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,CAAC,EAAE,yBAAyB,CAAC;IAC3C,+EAA+E;IAC/E,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gGAAgG;IAChG,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/mcp-client/options.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,8 @@ export declare class McpToolSource {
37
37
  /** Connect if needed, list the server's tools, and map the selected ones onto specs + handlers. */
38
38
  import(): Promise<McpImportedTool[]>;
39
39
  close(): Promise<void>;
40
+ /** Runs the configured screen; a refusal or a screen that throws both leave the tool out. */
41
+ private passesScreen;
40
42
  private isSelected;
41
43
  /**
42
44
  * A tool whose schema won't compile — or whose `pattern` can backtrack exponentially — is
@@ -1 +1 @@
1
- {"version":3,"file":"tool-source.d.ts","sourceRoot":"","sources":["../../../src/mcp-client/tool-source.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAU/D,gGAAgG;AAChG,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,yGAAyG;AACzG,qBAAa,gBAAiB,SAAQ,KAAK;aAEvB,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;IAFlC,YACkB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChC,OAAO,EAAE,MAAM,EAIhB;CACF;AAoBD;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAL1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,UAAU,CAA8B;IAEhD,YACmB,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,SAAS,YAAA,EACjC;IAEJ,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,mGAAmG;IAC7F,MAAM,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAczC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3B;IAED,OAAO,CAAC,UAAU;IAQlB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,QAAQ;YAcF,QAAQ;IAgBtB,oGAAoG;YACtF,OAAO;IAgBrB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,YAAY;YAYN,OAAO;IAerB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,UAAU;IAMlB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,gBAAgB;CAGzB"}
1
+ {"version":3,"file":"tool-source.d.ts","sourceRoot":"","sources":["../../../src/mcp-client/tool-source.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAU/D,gGAAgG;AAChG,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,yGAAyG;AACzG,qBAAa,gBAAiB,SAAQ,KAAK;aAEvB,UAAU,EAAE,MAAM;aAClB,QAAQ,EAAE,MAAM;IAFlC,YACkB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChC,OAAO,EAAE,MAAM,EAIhB;CACF;AAoBD;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAL1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,UAAU,CAA8B;IAEhD,YACmB,MAAM,EAAE,eAAe,EACvB,MAAM,CAAC,EAAE,SAAS,YAAA,EACjC;IAEJ,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,mGAAmG;IAC7F,MAAM,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAczC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3B;IAED,6FAA6F;YAC/E,YAAY;IA2B1B,OAAO,CAAC,UAAU;IAQlB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,QAAQ;YAcF,QAAQ;IAgBtB,oGAAoG;YACtF,OAAO;IAgBrB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,YAAY;YAYN,OAAO;IAerB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,UAAU;IAMlB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -61,7 +61,7 @@ export class McpToolSource {
61
61
  const { tools } = await client.listTools(undefined, { timeout: this.requestTimeoutMs() });
62
62
  const imported = [];
63
63
  for (const tool of tools) {
64
- if (!this.isSelected(tool.name)) {
64
+ if (!this.isSelected(tool.name) || !(await this.passesScreen(tool))) {
65
65
  continue;
66
66
  }
67
67
  const mapped = this.toImportedTool(tool);
@@ -77,6 +77,32 @@ export class McpToolSource {
77
77
  this.connecting = undefined;
78
78
  await client?.close();
79
79
  }
80
+ /** Runs the configured screen; a refusal or a screen that throws both leave the tool out. */
81
+ async passesScreen(tool) {
82
+ const screen = this.config.screen;
83
+ if (screen === undefined) {
84
+ return true;
85
+ }
86
+ let reason;
87
+ try {
88
+ const verdict = await screen({
89
+ server: this.config.name,
90
+ name: tool.name,
91
+ ...(tool.title !== undefined ? { title: tool.title } : {}),
92
+ ...(tool.description !== undefined ? { description: tool.description } : {}),
93
+ inputSchema: tool.inputSchema,
94
+ });
95
+ if (verdict.allowed) {
96
+ return true;
97
+ }
98
+ reason = verdict.reason;
99
+ }
100
+ catch (error) {
101
+ reason = `the screen failed: ${error instanceof Error ? error.message : String(error)}`;
102
+ }
103
+ this.logger?.warn(`MCP server "${this.config.name}": tool "${tool.name}" was refused by the tool screen — skipped (${reason})`);
104
+ return false;
105
+ }
80
106
  isSelected(remoteName) {
81
107
  const { include, exclude } = this.config;
82
108
  if (include !== undefined && !include.includes(remoteName)) {
@@ -1 +1 @@
1
- {"version":3,"file":"tool-source.js","sourceRoot":"","sources":["../../../src/mcp-client/tool-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-source.js","sourceRoot":"","sources":["../../../src/mcp-client/tool-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { Reranker, RerankOptions } from '../spi/reranker.js';
2
+ import type { Passage } from '../spi/retriever.js';
3
+ export interface HttpRerankerOptions {
4
+ /**
5
+ * The full rerank endpoint: `https://api.cohere.com/v2/rerank`, `https://api.jina.ai/v1/rerank`,
6
+ * `https://api.voyageai.com/v1/rerank`, or a Hugging Face TEI / Infinity / vLLM server's `/rerank`.
7
+ */
8
+ url: string;
9
+ /** Model id, sent as `model` (hosted APIs require it; TEI serves one model and ignores it). */
10
+ model?: string;
11
+ /** Sent as `Authorization: Bearer <apiKey>` when set. */
12
+ apiKey?: string;
13
+ /**
14
+ * Request body dialect. `cohere` (Cohere, Jina, Voyage, Infinity, vLLM): `{ query, documents,
15
+ * top_n }`. `tei`: `{ query, texts }`. Default `auto`, which sends `documents` **and** `texts` so
16
+ * one config works against both families. Responses are read in every dialect regardless.
17
+ */
18
+ format?: 'auto' | 'cohere' | 'tei';
19
+ /** Extra request headers. */
20
+ headers?: Record<string, string>;
21
+ /** Per-request timeout. Default 30 000 ms. */
22
+ timeoutMs?: number;
23
+ /** `fetch` to use. Default the global one. */
24
+ fetch?: typeof fetch;
25
+ }
26
+ /**
27
+ * A cross-encoder {@link Reranker} behind an HTTP `/rerank` endpoint — the Cohere-style contract
28
+ * most providers and self-hosted servers share. Compose it with `RerankingRetriever`:
29
+ *
30
+ * ```ts
31
+ * const reranker = new HttpReranker({ url: 'https://api.cohere.com/v2/rerank', model: 'rerank-v3.5', apiKey });
32
+ * const retriever = new RerankingRetriever(hybrid, reranker, { fetchTopK: 30 });
33
+ * ```
34
+ *
35
+ * Reads `results: [{ index, relevance_score }]` (Cohere, Jina), `data: [{ index, relevance_score }]`
36
+ * (Voyage) and a bare `[{ index, score }]` (TEI). Each passage keeps its fields and takes the new
37
+ * score; the list is re-sorted and cut to `topK`. Indices the server invents are ignored.
38
+ */
39
+ export declare class HttpReranker implements Reranker {
40
+ private readonly options;
41
+ private readonly format;
42
+ private readonly doFetch;
43
+ constructor(options: HttpRerankerOptions);
44
+ rerank(query: string, passages: Passage[], options?: RerankOptions): Promise<Passage[]>;
45
+ }
46
+ //# sourceMappingURL=http-reranker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-reranker.d.ts","sourceRoot":"","sources":["../../../src/rag/http-reranker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,+FAA+F;IAC/F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACnC,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAQD;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAa,YAAW,QAAQ;IAI/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAEvC,YAA6B,OAAO,EAAE,mBAAmB,EAGxD;IAEK,MAAM,CACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,OAAO,EAAE,CAAC,CA6CpB;CACF"}