@framers/agentos-ext-ml-classifiers 0.1.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/.github/workflows/ci.yml +20 -0
  2. package/.github/workflows/release.yml +37 -0
  3. package/.releaserc.json +9 -0
  4. package/LICENSE +96 -21
  5. package/README.md +72 -0
  6. package/dist/MLClassifierGuardrail.d.ts +88 -117
  7. package/dist/MLClassifierGuardrail.d.ts.map +1 -1
  8. package/dist/MLClassifierGuardrail.js +263 -264
  9. package/dist/MLClassifierGuardrail.js.map +1 -1
  10. package/dist/index.d.ts +16 -90
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +36 -309
  13. package/dist/index.js.map +1 -1
  14. package/dist/keyword-classifier.d.ts +26 -0
  15. package/dist/keyword-classifier.d.ts.map +1 -0
  16. package/dist/keyword-classifier.js +113 -0
  17. package/dist/keyword-classifier.js.map +1 -0
  18. package/dist/llm-classifier.d.ts +27 -0
  19. package/dist/llm-classifier.d.ts.map +1 -0
  20. package/dist/llm-classifier.js +129 -0
  21. package/dist/llm-classifier.js.map +1 -0
  22. package/dist/tools/ClassifyContentTool.d.ts +53 -80
  23. package/dist/tools/ClassifyContentTool.d.ts.map +1 -1
  24. package/dist/tools/ClassifyContentTool.js +52 -103
  25. package/dist/tools/ClassifyContentTool.js.map +1 -1
  26. package/dist/types.d.ts +77 -277
  27. package/dist/types.d.ts.map +1 -1
  28. package/dist/types.js +9 -55
  29. package/dist/types.js.map +1 -1
  30. package/package.json +10 -24
  31. package/scripts/fix-esm-imports.mjs +181 -0
  32. package/src/MLClassifierGuardrail.ts +306 -310
  33. package/src/index.ts +35 -339
  34. package/src/keyword-classifier.ts +130 -0
  35. package/src/llm-classifier.ts +163 -0
  36. package/src/tools/ClassifyContentTool.ts +75 -132
  37. package/src/types.ts +78 -325
  38. package/test/llm-tier.spec.ts +267 -0
  39. package/test/ml-classifiers.spec.ts +57 -0
  40. package/test/onnx-tier.spec.ts +255 -0
  41. package/test/tier-fallthrough.spec.ts +185 -0
  42. package/tsconfig.json +20 -0
  43. package/vitest.config.ts +35 -0
  44. package/dist/ClassifierOrchestrator.d.ts +0 -126
  45. package/dist/ClassifierOrchestrator.d.ts.map +0 -1
  46. package/dist/ClassifierOrchestrator.js +0 -239
  47. package/dist/ClassifierOrchestrator.js.map +0 -1
  48. package/dist/IContentClassifier.d.ts +0 -117
  49. package/dist/IContentClassifier.d.ts.map +0 -1
  50. package/dist/IContentClassifier.js +0 -22
  51. package/dist/IContentClassifier.js.map +0 -1
  52. package/dist/SlidingWindowBuffer.d.ts +0 -213
  53. package/dist/SlidingWindowBuffer.d.ts.map +0 -1
  54. package/dist/SlidingWindowBuffer.js +0 -246
  55. package/dist/SlidingWindowBuffer.js.map +0 -1
  56. package/dist/classifiers/InjectionClassifier.d.ts +0 -126
  57. package/dist/classifiers/InjectionClassifier.d.ts.map +0 -1
  58. package/dist/classifiers/InjectionClassifier.js +0 -210
  59. package/dist/classifiers/InjectionClassifier.js.map +0 -1
  60. package/dist/classifiers/JailbreakClassifier.d.ts +0 -124
  61. package/dist/classifiers/JailbreakClassifier.d.ts.map +0 -1
  62. package/dist/classifiers/JailbreakClassifier.js +0 -208
  63. package/dist/classifiers/JailbreakClassifier.js.map +0 -1
  64. package/dist/classifiers/ToxicityClassifier.d.ts +0 -125
  65. package/dist/classifiers/ToxicityClassifier.d.ts.map +0 -1
  66. package/dist/classifiers/ToxicityClassifier.js +0 -212
  67. package/dist/classifiers/ToxicityClassifier.js.map +0 -1
  68. package/dist/classifiers/WorkerClassifierProxy.d.ts +0 -158
  69. package/dist/classifiers/WorkerClassifierProxy.d.ts.map +0 -1
  70. package/dist/classifiers/WorkerClassifierProxy.js +0 -268
  71. package/dist/classifiers/WorkerClassifierProxy.js.map +0 -1
  72. package/dist/worker/classifier-worker.d.ts +0 -49
  73. package/dist/worker/classifier-worker.d.ts.map +0 -1
  74. package/dist/worker/classifier-worker.js +0 -180
  75. package/dist/worker/classifier-worker.js.map +0 -1
  76. package/src/ClassifierOrchestrator.ts +0 -290
  77. package/src/IContentClassifier.ts +0 -124
  78. package/src/SlidingWindowBuffer.ts +0 -384
  79. package/src/classifiers/InjectionClassifier.ts +0 -261
  80. package/src/classifiers/JailbreakClassifier.ts +0 -259
  81. package/src/classifiers/ToxicityClassifier.ts +0 -263
  82. package/src/classifiers/WorkerClassifierProxy.ts +0 -366
  83. package/src/worker/classifier-worker.ts +0 -267
@@ -1 +1 @@
1
- {"version":3,"file":"MLClassifierGuardrail.js","sourceRoot":"","sources":["../src/MLClassifierGuardrail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MLClassifierGuardrail.js","sourceRoot":"","sources":["../src/MLClassifierGuardrail.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,110 +1,36 @@
1
1
  /**
2
- * @fileoverview Pack factory for the ML Classifier Guardrail Extension Pack.
2
+ * @file index.ts
3
+ * @description Pack factory for the ML Classifiers extension pack.
3
4
  *
4
- * Exports the main `createMLClassifierPack()` factory that assembles the
5
- * ML classifier guardrail and the `classify_content` tool into a single
6
- * {@link ExtensionPack} ready for registration with the AgentOS extension
7
- * manager.
5
+ * Exports a `createExtensionPack()` factory that assembles the ML classifier
6
+ * guardrail and the `classify_content` tool into a single {@link ExtensionPack}
7
+ * ready for registration with the AgentOS extension manager.
8
8
  *
9
- * Also exports a `createExtensionPack()` bridge function that conforms to
10
- * the AgentOS manifest factory convention, delegating to
11
- * `createMLClassifierPack()` with options extracted from the
12
- * {@link ExtensionPackContext}.
13
- *
14
- * ### Default behaviour (zero-config)
15
- * When called without arguments, all three built-in classifiers (toxicity,
16
- * prompt-injection, jailbreak) are active using their default model IDs and
17
- * the default threshold set:
18
- * - block at 0.90 confidence
19
- * - flag at 0.70 confidence
20
- * - warn (sanitize) at 0.40 confidence
21
- *
22
- * ### Activation lifecycle
23
- * Components are built eagerly at pack creation time for direct programmatic
24
- * use. When the extension manager activates the pack, `onActivate` rebuilds
25
- * all components with the manager's shared service registry so heavyweight
26
- * resources (ONNX/WASM model pipelines) are shared across the agent.
27
- *
28
- * ### Disabling classifiers
29
- * Individual classifiers can be disabled by omitting them from the
30
- * `options.classifiers` array. An empty array or `undefined` activates all
31
- * three built-in classifiers.
32
- *
33
- * @example
34
- * ```typescript
35
- * import { createMLClassifierPack } from './ml-classifiers';
36
- *
37
- * // All built-in classifiers at default thresholds:
38
- * const pack = createMLClassifierPack();
39
- *
40
- * // Toxicity only with custom block threshold:
41
- * const strictPack = createMLClassifierPack({
42
- * classifiers: ['toxicity'],
43
- * thresholds: { blockThreshold: 0.85 },
44
- * streamingMode: true,
45
- * guardrailScope: 'both',
46
- * });
47
- * ```
48
- *
49
- * @module agentos/extensions/packs/ml-classifiers
9
+ * @module ml-classifiers
50
10
  */
51
11
  import type { ExtensionPack, ExtensionPackContext } from '@framers/agentos';
52
- import type { MLClassifierPackOptions } from './types';
53
- /**
54
- * Re-export all types from the ML classifier type definitions so consumers
55
- * can import everything from a single entry point:
56
- * ```ts
57
- * import { createMLClassifierPack, DEFAULT_THRESHOLDS } from './ml-classifiers';
58
- * ```
59
- */
12
+ import type { MLClassifierOptions } from './types';
60
13
  export * from './types';
61
14
  /**
62
- * Create an {@link ExtensionPack} that bundles:
63
- * - The {@link MLClassifierGuardrail} guardrail (evaluates input & output).
64
- * - The {@link ClassifyContentTool} `classify_content` tool (on-demand analysis).
65
- *
66
- * The built-in classifiers that are instantiated depend on `options.classifiers`:
67
- * - `'toxicity'` → {@link ToxicityClassifier} (`unitary/toxic-bert`)
68
- * - `'injection'` → {@link InjectionClassifier} (`protectai/deberta-v3-small-prompt-injection-v2`)
69
- * - `'jailbreak'` → {@link JailbreakClassifier} (`meta-llama/PromptGuard-86M`)
70
- *
71
- * When `options.classifiers` is `undefined` or empty, **all three** are active.
72
- *
73
- * Additional classifiers supplied via `options.customClassifiers` are appended
74
- * to the active list and run in parallel alongside the built-in ones.
15
+ * Create an ExtensionPack that bundles the ML classifier guardrail with
16
+ * the `classify_content` tool.
75
17
  *
76
18
  * @param options - Optional pack-level configuration. All properties have
77
- * sensible defaults; see {@link MLClassifierPackOptions}.
78
- * @returns A fully-configured {@link ExtensionPack} with one guardrail
79
- * descriptor and one tool descriptor.
19
+ * sensible defaults; see {@link MLClassifierOptions}.
20
+ * @returns A fully-configured {@link ExtensionPack}.
80
21
  */
81
- export declare function createMLClassifierPack(options?: MLClassifierPackOptions): ExtensionPack;
22
+ export declare function createMLClassifierGuardrail(options?: MLClassifierOptions): ExtensionPack;
82
23
  /**
83
24
  * AgentOS manifest factory function.
84
25
  *
85
26
  * Conforms to the convention expected by the extension loader when resolving
86
27
  * packs from manifests. Extracts `options` from the {@link ExtensionPackContext}
87
- * and delegates to {@link createMLClassifierPack}.
28
+ * and delegates to {@link createMLClassifierGuardrail}.
88
29
  *
89
- * @param context - Manifest context containing optional pack options, secret
90
- * resolver, and shared service registry.
30
+ * @param context - Manifest context containing optional pack options.
91
31
  * @returns A fully-configured {@link ExtensionPack}.
92
- *
93
- * @example Manifest entry:
94
- * ```json
95
- * {
96
- * "packs": [
97
- * {
98
- * "module": "./ml-classifiers",
99
- * "options": {
100
- * "classifiers": ["toxicity", "jailbreak"],
101
- * "thresholds": { "blockThreshold": 0.95 },
102
- * "streamingMode": true
103
- * }
104
- * }
105
- * ]
106
- * }
107
- * ```
108
32
  */
109
33
  export declare function createExtensionPack(context: ExtensionPackContext): ExtensionPack;
34
+ /** @deprecated Use createMLClassifierGuardrail instead */
35
+ export declare const createMLClassifierPack: typeof createMLClassifierGuardrail;
110
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAG5E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAevD;;;;;;GAMG;AACH,cAAc,SAAS,CAAC;AAMxB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,aAAa,CAmPvF;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAEhF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAQnD,cAAc,SAAS,CAAC;AAMxB;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,aAAa,CAsBxF;AAMD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAEhF;AAED,0DAA0D;AAC1D,eAAO,MAAM,sBAAsB,oCAA8B,CAAC"}
package/dist/index.js CHANGED
@@ -1,309 +1,51 @@
1
1
  /**
2
- * @fileoverview Pack factory for the ML Classifier Guardrail Extension Pack.
2
+ * @file index.ts
3
+ * @description Pack factory for the ML Classifiers extension pack.
3
4
  *
4
- * Exports the main `createMLClassifierPack()` factory that assembles the
5
- * ML classifier guardrail and the `classify_content` tool into a single
6
- * {@link ExtensionPack} ready for registration with the AgentOS extension
7
- * manager.
5
+ * Exports a `createExtensionPack()` factory that assembles the ML classifier
6
+ * guardrail and the `classify_content` tool into a single {@link ExtensionPack}
7
+ * ready for registration with the AgentOS extension manager.
8
8
  *
9
- * Also exports a `createExtensionPack()` bridge function that conforms to
10
- * the AgentOS manifest factory convention, delegating to
11
- * `createMLClassifierPack()` with options extracted from the
12
- * {@link ExtensionPackContext}.
13
- *
14
- * ### Default behaviour (zero-config)
15
- * When called without arguments, all three built-in classifiers (toxicity,
16
- * prompt-injection, jailbreak) are active using their default model IDs and
17
- * the default threshold set:
18
- * - block at 0.90 confidence
19
- * - flag at 0.70 confidence
20
- * - warn (sanitize) at 0.40 confidence
21
- *
22
- * ### Activation lifecycle
23
- * Components are built eagerly at pack creation time for direct programmatic
24
- * use. When the extension manager activates the pack, `onActivate` rebuilds
25
- * all components with the manager's shared service registry so heavyweight
26
- * resources (ONNX/WASM model pipelines) are shared across the agent.
27
- *
28
- * ### Disabling classifiers
29
- * Individual classifiers can be disabled by omitting them from the
30
- * `options.classifiers` array. An empty array or `undefined` activates all
31
- * three built-in classifiers.
32
- *
33
- * @example
34
- * ```typescript
35
- * import { createMLClassifierPack } from './ml-classifiers';
36
- *
37
- * // All built-in classifiers at default thresholds:
38
- * const pack = createMLClassifierPack();
39
- *
40
- * // Toxicity only with custom block threshold:
41
- * const strictPack = createMLClassifierPack({
42
- * classifiers: ['toxicity'],
43
- * thresholds: { blockThreshold: 0.85 },
44
- * streamingMode: true,
45
- * guardrailScope: 'both',
46
- * });
47
- * ```
48
- *
49
- * @module agentos/extensions/packs/ml-classifiers
9
+ * @module ml-classifiers
50
10
  */
51
- import { SharedServiceRegistry } from '@framers/agentos';
52
11
  import { EXTENSION_KIND_GUARDRAIL, EXTENSION_KIND_TOOL } from '@framers/agentos';
53
- import { DEFAULT_THRESHOLDS } from './types';
54
- import { MLClassifierGuardrail } from './MLClassifierGuardrail';
55
- import { ClassifierOrchestrator } from './ClassifierOrchestrator';
56
- import { SlidingWindowBuffer } from './SlidingWindowBuffer';
57
- import { ClassifyContentTool } from './tools/ClassifyContentTool';
58
- import { ToxicityClassifier } from './classifiers/ToxicityClassifier';
59
- import { InjectionClassifier } from './classifiers/InjectionClassifier';
60
- import { JailbreakClassifier } from './classifiers/JailbreakClassifier';
12
+ import { MLClassifierGuardrail } from './MLClassifierGuardrail.js';
13
+ import { ClassifyContentTool } from './tools/ClassifyContentTool.js';
61
14
  // ---------------------------------------------------------------------------
62
- // Re-exports — allow single-import for consumers
15
+ // Re-exports
63
16
  // ---------------------------------------------------------------------------
64
- /**
65
- * Re-export all types from the ML classifier type definitions so consumers
66
- * can import everything from a single entry point:
67
- * ```ts
68
- * import { createMLClassifierPack, DEFAULT_THRESHOLDS } from './ml-classifiers';
69
- * ```
70
- */
71
- export * from './types';
17
+ export * from './types.js';
72
18
  // ---------------------------------------------------------------------------
73
19
  // Pack factory
74
20
  // ---------------------------------------------------------------------------
75
21
  /**
76
- * Create an {@link ExtensionPack} that bundles:
77
- * - The {@link MLClassifierGuardrail} guardrail (evaluates input & output).
78
- * - The {@link ClassifyContentTool} `classify_content` tool (on-demand analysis).
79
- *
80
- * The built-in classifiers that are instantiated depend on `options.classifiers`:
81
- * - `'toxicity'` → {@link ToxicityClassifier} (`unitary/toxic-bert`)
82
- * - `'injection'` → {@link InjectionClassifier} (`protectai/deberta-v3-small-prompt-injection-v2`)
83
- * - `'jailbreak'` → {@link JailbreakClassifier} (`meta-llama/PromptGuard-86M`)
84
- *
85
- * When `options.classifiers` is `undefined` or empty, **all three** are active.
86
- *
87
- * Additional classifiers supplied via `options.customClassifiers` are appended
88
- * to the active list and run in parallel alongside the built-in ones.
22
+ * Create an ExtensionPack that bundles the ML classifier guardrail with
23
+ * the `classify_content` tool.
89
24
  *
90
25
  * @param options - Optional pack-level configuration. All properties have
91
- * sensible defaults; see {@link MLClassifierPackOptions}.
92
- * @returns A fully-configured {@link ExtensionPack} with one guardrail
93
- * descriptor and one tool descriptor.
26
+ * sensible defaults; see {@link MLClassifierOptions}.
27
+ * @returns A fully-configured {@link ExtensionPack}.
94
28
  */
95
- export function createMLClassifierPack(options) {
96
- /**
97
- * Resolved options default to empty object so every sub-check can
98
- * safely use `opts.foo` without null-guarding the whole `options` reference.
99
- */
100
- const opts = options ?? {};
101
- // -------------------------------------------------------------------------
102
- // Mutable state — upgraded by onActivate with the extension manager's
103
- // shared service registry.
104
- // -------------------------------------------------------------------------
105
- const state = {
106
- /**
107
- * Service registry — starts as a standalone instance so the pack can be
108
- * used directly (without activation) in unit tests and scripts.
109
- * Replaced with the shared registry when `onActivate` is called by the
110
- * extension manager.
111
- */
112
- services: new SharedServiceRegistry(),
113
- };
114
- // -------------------------------------------------------------------------
115
- // Component instances — rebuilt by buildComponents()
116
- // -------------------------------------------------------------------------
117
- /**
118
- * The guardrail that evaluates user input and/or agent output streams
119
- * against all active ML classifiers.
120
- */
121
- let guardrail;
122
- /**
123
- * The on-demand classification tool exposed to agents and workflows.
124
- */
125
- let tool;
126
- /**
127
- * The orchestrator that runs all active classifiers in parallel and folds
128
- * their results into a single {@link ChunkEvaluation} via worst-wins
129
- * aggregation.
130
- */
131
- let orchestrator;
132
- /**
133
- * The sliding-window buffer used internally by the guardrail to evaluate
134
- * streamed output tokens incrementally.
135
- */
136
- let buffer;
137
- // -------------------------------------------------------------------------
138
- // buildComponents
139
- // -------------------------------------------------------------------------
140
- /**
141
- * (Re)construct all pack components using the current `state.services`.
142
- *
143
- * Called once at pack creation for direct programmatic use, and again
144
- * during `onActivate` to upgrade to the extension manager's shared
145
- * service registry (so ONNX/WASM pipelines are shared across the agent).
146
- *
147
- * ### Classifier selection
148
- * The active classifiers are determined by `opts.classifiers`:
149
- * - `undefined` or empty → all three built-in classifiers are created.
150
- * - Non-empty array → only the named classifiers are created.
151
- *
152
- * Any `opts.customClassifiers` are always appended to the list.
153
- */
154
- function buildComponents() {
155
- // ------------------------------------------------------------------
156
- // 1. Determine which built-in classifiers to instantiate.
157
- // ------------------------------------------------------------------
158
- /**
159
- * Determine whether a given built-in classifier name is enabled.
160
- *
161
- * When `opts.classifiers` is undefined or an empty array every built-in
162
- * classifier is considered enabled (zero-config default).
163
- *
164
- * @param name - One of `'toxicity'`, `'injection'`, or `'jailbreak'`.
165
- * @returns `true` when the classifier should be included.
166
- */
167
- function isBuiltInEnabled(name) {
168
- // No explicit list — enable all built-in classifiers.
169
- if (!opts.classifiers || opts.classifiers.length === 0) {
170
- return true;
171
- }
172
- return opts.classifiers.includes(name);
173
- }
174
- /** Array that will be populated with every active IContentClassifier. */
175
- const activeClassifiers = [];
176
- // Toxicity classifier — detects hateful, abusive, and toxic language.
177
- if (isBuiltInEnabled('toxicity')) {
178
- activeClassifiers.push(new ToxicityClassifier(state.services));
179
- }
180
- // Injection classifier — detects prompt-injection payloads.
181
- if (isBuiltInEnabled('injection')) {
182
- activeClassifiers.push(new InjectionClassifier(state.services));
183
- }
184
- // Jailbreak classifier — detects system-prompt override attempts.
185
- if (isBuiltInEnabled('jailbreak')) {
186
- activeClassifiers.push(new JailbreakClassifier(state.services));
187
- }
188
- // Append any caller-supplied custom classifiers.
189
- if (opts.customClassifiers && opts.customClassifiers.length > 0) {
190
- activeClassifiers.push(...opts.customClassifiers);
191
- }
192
- // ------------------------------------------------------------------
193
- // 2. Resolve pack-level thresholds (merge caller overrides on top of
194
- // the library defaults).
195
- // ------------------------------------------------------------------
196
- const thresholds = {
197
- ...DEFAULT_THRESHOLDS,
198
- ...opts.thresholds,
199
- };
200
- // ------------------------------------------------------------------
201
- // 3. Build the orchestrator with the resolved classifier list and
202
- // thresholds.
203
- // ------------------------------------------------------------------
204
- orchestrator = new ClassifierOrchestrator(activeClassifiers, thresholds);
205
- // ------------------------------------------------------------------
206
- // 4. Build the sliding-window buffer for streaming evaluation.
207
- // ------------------------------------------------------------------
208
- buffer = new SlidingWindowBuffer({
209
- chunkSize: opts.chunkSize,
210
- contextSize: opts.contextSize,
211
- maxEvaluations: opts.maxEvaluations,
212
- });
213
- // ------------------------------------------------------------------
214
- // 5. Build the guardrail, passing the shared registry and options.
215
- // The guardrail creates its own orchestrator internally from the
216
- // `classifiers` option — we pass the pre-built classifier instances
217
- // via the third constructor argument.
218
- // ------------------------------------------------------------------
219
- guardrail = new MLClassifierGuardrail(state.services, opts, activeClassifiers);
220
- // ------------------------------------------------------------------
221
- // 6. Build the on-demand classification tool backed by the orchestrator.
222
- // ------------------------------------------------------------------
223
- tool = new ClassifyContentTool(orchestrator);
224
- }
225
- // Initial build — makes the pack usable immediately without activation.
226
- buildComponents();
227
- // -------------------------------------------------------------------------
228
- // ExtensionPack shape
229
- // -------------------------------------------------------------------------
29
+ export function createMLClassifierGuardrail(options) {
30
+ const guardrail = new MLClassifierGuardrail(options);
31
+ const tool = new ClassifyContentTool(guardrail);
230
32
  return {
231
- /** Canonical pack name used in manifests and logs. */
232
33
  name: 'ml-classifiers',
233
- /** Semantic version of this pack implementation. */
234
34
  version: '1.0.0',
235
- /**
236
- * Descriptor getter — always returns the latest (possibly rebuilt)
237
- * component instances. Using a getter ensures that after `onActivate`
238
- * rebuilds the components, the descriptors array reflects the new
239
- * references rather than stale closures from the initial build.
240
- */
241
- get descriptors() {
242
- return [
243
- {
244
- /**
245
- * Guardrail descriptor.
246
- *
247
- * Priority 5 places this guardrail after the PII redaction guardrail
248
- * (priority 10) so PII is stripped before ML classification.
249
- */
250
- id: 'ml-classifier-guardrail',
251
- kind: EXTENSION_KIND_GUARDRAIL,
252
- priority: 5,
253
- payload: guardrail,
254
- },
255
- {
256
- /**
257
- * On-demand classification tool descriptor.
258
- *
259
- * Priority 0 uses the default ordering — tools are typically
260
- * ordered by name rather than priority.
261
- */
262
- id: 'classify_content',
263
- kind: EXTENSION_KIND_TOOL,
264
- priority: 0,
265
- payload: tool,
266
- },
267
- ];
268
- },
269
- /**
270
- * Lifecycle hook called by the extension manager when the pack is
271
- * activated.
272
- *
273
- * Upgrades the internal service registry to the extension manager's
274
- * shared instance (so ONNX/WASM model weights are shared across all
275
- * extensions) then rebuilds all components to use the new registry.
276
- *
277
- * @param context - Activation context provided by the extension manager.
278
- */
279
- onActivate: (context) => {
280
- // Upgrade to the shared registry when the manager provides one.
281
- if (context.services) {
282
- state.services = context.services;
283
- }
284
- // Rebuild all components with the upgraded registry.
285
- buildComponents();
286
- },
287
- /**
288
- * Lifecycle hook called when the pack is deactivated or the agent shuts
289
- * down.
290
- *
291
- * Disposes the classifier orchestrator (which releases ONNX/WASM
292
- * resources for every registered classifier) and clears the sliding
293
- * window buffer to release per-stream state.
294
- */
295
- onDeactivate: async () => {
296
- // Dispose all classifiers managed by the orchestrator.
297
- // orchestrator may be undefined if buildComponents() was never called
298
- // successfully (defensive guard).
299
- if (orchestrator) {
300
- await orchestrator.dispose();
301
- }
302
- // Clear any in-progress stream buffers.
303
- if (buffer) {
304
- buffer.clear();
305
- }
306
- },
35
+ descriptors: [
36
+ {
37
+ id: 'ml-classifier-guardrail',
38
+ kind: EXTENSION_KIND_GUARDRAIL,
39
+ priority: 5,
40
+ payload: guardrail,
41
+ },
42
+ {
43
+ id: 'classify_content',
44
+ kind: EXTENSION_KIND_TOOL,
45
+ priority: 0,
46
+ payload: tool,
47
+ },
48
+ ],
307
49
  };
308
50
  }
309
51
  // ---------------------------------------------------------------------------
@@ -314,29 +56,14 @@ export function createMLClassifierPack(options) {
314
56
  *
315
57
  * Conforms to the convention expected by the extension loader when resolving
316
58
  * packs from manifests. Extracts `options` from the {@link ExtensionPackContext}
317
- * and delegates to {@link createMLClassifierPack}.
59
+ * and delegates to {@link createMLClassifierGuardrail}.
318
60
  *
319
- * @param context - Manifest context containing optional pack options, secret
320
- * resolver, and shared service registry.
61
+ * @param context - Manifest context containing optional pack options.
321
62
  * @returns A fully-configured {@link ExtensionPack}.
322
- *
323
- * @example Manifest entry:
324
- * ```json
325
- * {
326
- * "packs": [
327
- * {
328
- * "module": "./ml-classifiers",
329
- * "options": {
330
- * "classifiers": ["toxicity", "jailbreak"],
331
- * "thresholds": { "blockThreshold": 0.95 },
332
- * "streamingMode": true
333
- * }
334
- * }
335
- * ]
336
- * }
337
- * ```
338
63
  */
339
64
  export function createExtensionPack(context) {
340
- return createMLClassifierPack(context.options);
65
+ return createMLClassifierGuardrail(context.options);
341
66
  }
67
+ /** @deprecated Use createMLClassifierGuardrail instead */
68
+ export const createMLClassifierPack = createMLClassifierGuardrail;
342
69
  //# 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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,cAAc,SAAS,CAAC;AAExB,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAA6B;IACvE,MAAM,SAAS,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAEhD,OAAO;QACL,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE;YACX;gBACE,EAAE,EAAE,yBAAyB;gBAC7B,IAAI,EAAE,wBAAwB;gBAC9B,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,SAAS;aACnB;YACD;gBACE,EAAE,EAAE,kBAAkB;gBACtB,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,IAAI;aACd;SACF;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,OAAO,2BAA2B,CAAC,OAAO,CAAC,OAA8B,CAAC,CAAC;AAC7E,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,2BAA2B,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @file keyword-classifier.ts
3
+ * @description Lightweight keyword and regex-based safety classifier used as the
4
+ * last-resort fallback when neither ONNX models nor an LLM invoker are available.
5
+ *
6
+ * Returns normalised confidence scores per category based on keyword density and
7
+ * pattern matches. This is intentionally conservative — it will produce false
8
+ * positives in edge cases, but ensures the guardrail is never completely blind.
9
+ *
10
+ * @module ml-classifiers/keyword-classifier
11
+ */
12
+ import type { ClassifierCategory, CategoryScore } from './types';
13
+ /**
14
+ * Classify a text string using keyword and regex pattern matching.
15
+ *
16
+ * Confidence is computed as `min(1.0, matchCount * weight)` where `weight`
17
+ * scales the number of distinct pattern matches into the [0, 1] range.
18
+ * A single match yields a base confidence of 0.4; each additional match
19
+ * adds 0.15 up to a cap of 1.0.
20
+ *
21
+ * @param text - The text to classify.
22
+ * @param categories - Which categories to evaluate. Defaults to all four.
23
+ * @returns Per-category confidence scores.
24
+ */
25
+ export declare function classifyByKeywords(text: string, categories?: ClassifierCategory[]): CategoryScore[];
26
+ //# sourceMappingURL=keyword-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyword-classifier.d.ts","sourceRoot":"","sources":["../src/keyword-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA6EjE;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,kBAAkB,EAAmB,GAChD,aAAa,EAAE,CAyBjB"}