@aion0/bastion 0.1.13 → 0.1.15

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/README.md CHANGED
@@ -189,7 +189,7 @@ bastion plugins uninstall # remove (prompts to also delete models)
189
189
 
190
190
  Or via the Dashboard → Settings → Optional Features.
191
191
 
192
- See [@aiwatching/bastion-pro](https://github.com/aiwatching/bastion-plugin-api) for details.
192
+ See [@aion0/bastion-plugin-api](https://github.com/aiwatching/bastion-plugin-api) for details.
193
193
 
194
194
  ## Documentation
195
195
 
package/README.zh.md CHANGED
@@ -463,7 +463,7 @@ bastion plugins uninstall # 卸载(会提示是否同时删除模型文
463
463
 
464
464
  也可通过 Dashboard → Settings → Optional Features 管理。
465
465
 
466
- 详见 [@aiwatching/bastion-pro](https://github.com/aiwatching/bastion-plugin-api)。
466
+ 详见 [@aion0/bastion-plugin-api](https://github.com/aiwatching/bastion-plugin-api)。
467
467
 
468
468
  ## 文档
469
469
 
@@ -0,0 +1,43 @@
1
+ export interface ModelInfo {
2
+ modelId: string;
3
+ dir: string;
4
+ ready: boolean;
5
+ files: string[];
6
+ }
7
+ export interface DownloadProgress {
8
+ file: string;
9
+ received: number;
10
+ total: number;
11
+ percent: number;
12
+ }
13
+ export type ProgressCallback = (progress: DownloadProgress) => void;
14
+ /**
15
+ * Resolve the local directory for a given model ID.
16
+ * Model IDs use '/' which gets replaced with '--' for filesystem safety.
17
+ */
18
+ export declare function getModelDir(modelId: string): string;
19
+ /**
20
+ * Check if a model is already downloaded and complete.
21
+ */
22
+ export declare function isModelReady(modelId: string): Promise<boolean>;
23
+ /**
24
+ * Get info about a local model.
25
+ */
26
+ export declare function getModelInfo(modelId: string): Promise<ModelInfo>;
27
+ /**
28
+ * Download model files from Hugging Face Hub.
29
+ * Files: model.onnx (from onnx/ subdirectory), tokenizer.json, config.json
30
+ */
31
+ export declare function downloadModel(modelId: string, onProgress?: ProgressCallback, options?: {
32
+ onnxSubdir?: string;
33
+ }): Promise<string>;
34
+ /**
35
+ * Ensure a model is available locally. Downloads if missing.
36
+ */
37
+ export declare function ensureModel(modelId: string, onProgress?: ProgressCallback, options?: {
38
+ onnxSubdir?: string;
39
+ logger?: {
40
+ info: (msg: string, meta?: Record<string, unknown>) => void;
41
+ };
42
+ }): Promise<string>;
43
+ //# sourceMappingURL=model-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-manager.d.ts","sourceRoot":"","sources":["../../src/classifier/model-manager.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWpE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAiBtE;AAoFD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,gBAAgB,EAC7B,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAChC,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,gBAAgB,EAC7B,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;KAAE,CAAA;CAAE,GAC1G,OAAO,CAAC,MAAM,CAAC,CAQjB"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getModelDir = getModelDir;
7
+ exports.isModelReady = isModelReady;
8
+ exports.getModelInfo = getModelInfo;
9
+ exports.downloadModel = downloadModel;
10
+ exports.ensureModel = ensureModel;
11
+ const node_path_1 = require("node:path");
12
+ const node_os_1 = require("node:os");
13
+ const promises_1 = require("node:fs/promises");
14
+ const node_https_1 = __importDefault(require("node:https"));
15
+ const MODELS_DIR = (0, node_path_1.join)((0, node_os_1.homedir)(), '.bastion', 'models');
16
+ const REQUIRED_FILES = ['model.onnx', 'tokenizer.json', 'config.json'];
17
+ /**
18
+ * Resolve the local directory for a given model ID.
19
+ * Model IDs use '/' which gets replaced with '--' for filesystem safety.
20
+ */
21
+ function getModelDir(modelId) {
22
+ const safeName = modelId.replace(/\//g, '--');
23
+ return (0, node_path_1.join)(MODELS_DIR, safeName);
24
+ }
25
+ /**
26
+ * Check if a model is already downloaded and complete.
27
+ */
28
+ async function isModelReady(modelId) {
29
+ const dir = getModelDir(modelId);
30
+ for (const file of REQUIRED_FILES) {
31
+ try {
32
+ const s = await (0, promises_1.stat)((0, node_path_1.join)(dir, file));
33
+ if (s.size === 0)
34
+ return false;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ return true;
41
+ }
42
+ /**
43
+ * Get info about a local model.
44
+ */
45
+ async function getModelInfo(modelId) {
46
+ const dir = getModelDir(modelId);
47
+ const files = [];
48
+ for (const file of REQUIRED_FILES) {
49
+ try {
50
+ await (0, promises_1.stat)((0, node_path_1.join)(dir, file));
51
+ files.push(file);
52
+ }
53
+ catch {
54
+ // file missing
55
+ }
56
+ }
57
+ return {
58
+ modelId,
59
+ dir,
60
+ ready: files.length === REQUIRED_FILES.length,
61
+ files,
62
+ };
63
+ }
64
+ /**
65
+ * Download a single file from Hugging Face Hub.
66
+ */
67
+ function getHfToken() {
68
+ return process.env['HF_TOKEN'] ?? process.env['HUGGING_FACE_HUB_TOKEN'];
69
+ }
70
+ function downloadFile(url, destPath, onProgress, fileName) {
71
+ return new Promise((resolve, reject) => {
72
+ const request = (targetUrl) => {
73
+ const headers = { 'User-Agent': 'bastion-pro/0.1.0' };
74
+ const hfToken = getHfToken();
75
+ if (hfToken && targetUrl.includes('huggingface.co')) {
76
+ headers['Authorization'] = `Bearer ${hfToken}`;
77
+ }
78
+ node_https_1.default.get(targetUrl, { headers }, (res) => {
79
+ // Follow redirects (HF Hub returns 302 to CDN)
80
+ if (res.statusCode && res.statusCode >= 301 && res.statusCode <= 308 && res.statusCode !== 304) {
81
+ let location = res.headers.location;
82
+ if (!location)
83
+ return reject(new Error(`Redirect without location for ${url}`));
84
+ // Handle relative redirects — resolve against current URL
85
+ if (location.startsWith('/')) {
86
+ const base = new URL(targetUrl);
87
+ location = `${base.protocol}//${base.host}${location}`;
88
+ }
89
+ res.resume();
90
+ request(location);
91
+ return;
92
+ }
93
+ if (res.statusCode !== 200) {
94
+ res.resume();
95
+ return reject(new Error(`HTTP ${res.statusCode} downloading ${url}`));
96
+ }
97
+ const total = parseInt(res.headers['content-length'] ?? '0', 10);
98
+ let received = 0;
99
+ const chunks = [];
100
+ res.on('data', (chunk) => {
101
+ chunks.push(chunk);
102
+ received += chunk.length;
103
+ if (onProgress) {
104
+ onProgress({
105
+ file: fileName ?? destPath,
106
+ received,
107
+ total,
108
+ percent: total > 0 ? Math.round((received / total) * 100) : 0,
109
+ });
110
+ }
111
+ });
112
+ res.on('end', async () => {
113
+ try {
114
+ await (0, promises_1.writeFile)(destPath, Buffer.concat(chunks));
115
+ resolve();
116
+ }
117
+ catch (err) {
118
+ reject(err);
119
+ }
120
+ });
121
+ res.on('error', reject);
122
+ }).on('error', reject);
123
+ };
124
+ request(url);
125
+ });
126
+ }
127
+ /**
128
+ * Build a Hugging Face Hub download URL for a file in a model repo.
129
+ * Format: https://huggingface.co/{model_id}/resolve/main/{filename}
130
+ */
131
+ function hfFileUrl(modelId, filename) {
132
+ return `https://huggingface.co/${modelId}/resolve/main/${filename}`;
133
+ }
134
+ /**
135
+ * Download model files from Hugging Face Hub.
136
+ * Files: model.onnx (from onnx/ subdirectory), tokenizer.json, config.json
137
+ */
138
+ async function downloadModel(modelId, onProgress, options) {
139
+ const dir = getModelDir(modelId);
140
+ await (0, promises_1.mkdir)(dir, { recursive: true });
141
+ const onnxSubdir = options?.onnxSubdir ?? 'onnx';
142
+ // Download config.json and tokenizer.json from repo root
143
+ await downloadFile(hfFileUrl(modelId, 'config.json'), (0, node_path_1.join)(dir, 'config.json'), onProgress, 'config.json');
144
+ await downloadFile(hfFileUrl(modelId, 'tokenizer.json'), (0, node_path_1.join)(dir, 'tokenizer.json'), onProgress, 'tokenizer.json');
145
+ // Download model.onnx from onnx subdirectory
146
+ await downloadFile(hfFileUrl(modelId, `${onnxSubdir}/model.onnx`), (0, node_path_1.join)(dir, 'model.onnx'), onProgress, 'model.onnx');
147
+ return dir;
148
+ }
149
+ /**
150
+ * Ensure a model is available locally. Downloads if missing.
151
+ */
152
+ async function ensureModel(modelId, onProgress, options) {
153
+ if (await isModelReady(modelId)) {
154
+ const dir = getModelDir(modelId);
155
+ options?.logger?.info('Model already downloaded, skipping', { modelId, dir });
156
+ return dir;
157
+ }
158
+ options?.logger?.info('Model not found locally, downloading...', { modelId });
159
+ return downloadModel(modelId, onProgress, { onnxSubdir: options?.onnxSubdir });
160
+ }
161
+ //# sourceMappingURL=model-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-manager.js","sourceRoot":"","sources":["../../src/classifier/model-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { ClassifierProvider, ClassificationResult } from '../plugin-api/types.js';
2
+ export interface OnnxProviderConfig {
3
+ modelDir: string;
4
+ maxLength?: number;
5
+ }
6
+ export declare class OnnxClassifierProvider implements ClassifierProvider {
7
+ readonly name = "onnx";
8
+ private config;
9
+ private maxLength;
10
+ private session;
11
+ private tokenizer;
12
+ private labels;
13
+ private _modelName;
14
+ constructor(config: OnnxProviderConfig);
15
+ get modelName(): string;
16
+ get ready(): boolean;
17
+ initialize(): Promise<void>;
18
+ classify(text: string): Promise<ClassificationResult>;
19
+ classifyBatch(texts: string[]): Promise<ClassificationResult[]>;
20
+ destroy(): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=onnx-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onnx-provider.d.ts","sourceRoot":"","sources":["../../src/classifier/onnx-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAA4D;IAC3E,OAAO,CAAC,SAAS,CAA4D;IAC7E,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAM;gBAEZ,MAAM,EAAE,kBAAkB;IAKtC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0C3B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA6DrD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAK/D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnnxClassifierProvider = void 0;
4
+ // Lazy-loaded native dependencies (only imported when initialize() is called)
5
+ let ort = null;
6
+ let TokenizerModule = null;
7
+ function softmax(logits) {
8
+ const max = logits.reduce((a, b) => Math.max(a, b), -Infinity);
9
+ const exps = logits.map(v => Math.exp(v - max));
10
+ const sum = exps.reduce((a, b) => a + b, 0);
11
+ return exps.map(v => v / sum);
12
+ }
13
+ class OnnxClassifierProvider {
14
+ name = 'onnx';
15
+ config;
16
+ maxLength;
17
+ session = null;
18
+ tokenizer = null;
19
+ labels = [];
20
+ _modelName = '';
21
+ constructor(config) {
22
+ this.config = config;
23
+ this.maxLength = config.maxLength ?? 512;
24
+ }
25
+ get modelName() {
26
+ return this._modelName;
27
+ }
28
+ get ready() {
29
+ return this.session !== null && this.tokenizer !== null;
30
+ }
31
+ async initialize() {
32
+ const { join } = await import('node:path');
33
+ const { readFile } = await import('node:fs/promises');
34
+ // Lazy-load native modules
35
+ if (!ort)
36
+ ort = await import('onnxruntime-node');
37
+ if (!TokenizerModule)
38
+ TokenizerModule = await import('@huggingface/tokenizers');
39
+ const modelPath = join(this.config.modelDir, 'model.onnx');
40
+ const tokenizerPath = join(this.config.modelDir, 'tokenizer.json');
41
+ const configPath = join(this.config.modelDir, 'config.json');
42
+ // Load model config for label mapping
43
+ let modelConfig = {};
44
+ try {
45
+ const configRaw = await readFile(configPath, 'utf-8');
46
+ modelConfig = JSON.parse(configRaw);
47
+ if (modelConfig.id2label) {
48
+ const id2label = modelConfig.id2label;
49
+ const maxId = Math.max(...Object.keys(id2label).map(Number));
50
+ this.labels = new Array(maxId + 1);
51
+ for (const [id, label] of Object.entries(id2label)) {
52
+ this.labels[Number(id)] = label;
53
+ }
54
+ }
55
+ this._modelName = (modelConfig._name_or_path ?? modelConfig.model_type ?? 'unknown');
56
+ }
57
+ catch {
58
+ this.labels = ['SAFE', 'INJECTION'];
59
+ this._modelName = 'unknown';
60
+ }
61
+ // Load tokenizer — @huggingface/tokenizers v0.1.x uses new Tokenizer(tokenizerJson, configJson)
62
+ const tokenizerRaw = await readFile(tokenizerPath, 'utf-8');
63
+ const tokenizerJson = JSON.parse(tokenizerRaw);
64
+ this.tokenizer = new TokenizerModule.Tokenizer(tokenizerJson, modelConfig);
65
+ // Create ONNX inference session
66
+ this.session = await ort.InferenceSession.create(modelPath, {
67
+ executionProviders: ['cpu'],
68
+ });
69
+ }
70
+ async classify(text) {
71
+ if (!this.session || !this.tokenizer) {
72
+ throw new Error('OnnxClassifierProvider not initialized — call initialize() first');
73
+ }
74
+ const start = performance.now();
75
+ // Tokenize — @huggingface/tokenizers v0.1.x returns plain object { ids, attention_mask }
76
+ const encoded = this.tokenizer.encode(text);
77
+ const inputIds = encoded.ids;
78
+ const attentionMask = encoded.attention_mask;
79
+ // Truncate to maxLength
80
+ const length = Math.min(inputIds.length, this.maxLength);
81
+ const ids = BigInt64Array.from(inputIds.slice(0, length).map((v) => BigInt(v)));
82
+ const mask = BigInt64Array.from(attentionMask.slice(0, length).map((v) => BigInt(v)));
83
+ // Create tensors
84
+ const inputIdsTensor = new ort.Tensor('int64', ids, [1, length]);
85
+ const attentionMaskTensor = new ort.Tensor('int64', mask, [1, length]);
86
+ // Run inference
87
+ const feeds = {
88
+ input_ids: inputIdsTensor,
89
+ attention_mask: attentionMaskTensor,
90
+ };
91
+ const output = await this.session.run(feeds);
92
+ // Get logits from first output
93
+ const outputName = this.session.outputNames[0];
94
+ const logits = output[outputName].data;
95
+ // Apply softmax
96
+ const probs = softmax(logits);
97
+ // Build label scores
98
+ const labels = [];
99
+ let bestIdx = 0;
100
+ let bestScore = 0;
101
+ for (let i = 0; i < probs.length; i++) {
102
+ const label = this.labels[i] ?? `CLASS_${i}`;
103
+ const score = probs[i];
104
+ labels.push({ label, score });
105
+ if (score > bestScore) {
106
+ bestScore = score;
107
+ bestIdx = i;
108
+ }
109
+ }
110
+ const latencyMs = Math.round(performance.now() - start);
111
+ return {
112
+ label: this.labels[bestIdx] ?? `CLASS_${bestIdx}`,
113
+ score: bestScore,
114
+ labels,
115
+ latencyMs,
116
+ };
117
+ }
118
+ async classifyBatch(texts) {
119
+ // Simple sequential batch — ONNX batch inference requires padding and is more complex
120
+ return Promise.all(texts.map(text => this.classify(text)));
121
+ }
122
+ async destroy() {
123
+ if (this.session) {
124
+ await this.session.release();
125
+ this.session = null;
126
+ }
127
+ this.tokenizer = null;
128
+ }
129
+ }
130
+ exports.OnnxClassifierProvider = OnnxClassifierProvider;
131
+ //# sourceMappingURL=onnx-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onnx-provider.js","sourceRoot":"","sources":["../../src/classifier/onnx-provider.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AA0DzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0J7D"}
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AA0DzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgK7D"}
@@ -105,7 +105,7 @@ function registerPluginsCommand(program) {
105
105
  console.error(`Bastion app not found at ${appDir}. Run install.sh first.`);
106
106
  process.exit(1);
107
107
  }
108
- const pluginsDest = (0, node_path_1.join)(appDir, 'plugins', 'bastion-pro');
108
+ const pluginsDest = (0, node_path_1.join)(appDir, 'plugins');
109
109
  const pluginApiDir = (0, node_path_1.join)(appDir, 'packages', 'bastion-plugin-api');
110
110
  console.log(`Installing optional plugins from: ${pluginSource}`);
111
111
  // Copy source (exclude node_modules, .git, dist)
@@ -119,12 +119,18 @@ function registerPluginsCommand(program) {
119
119
  (0, node_fs_1.rmSync)(pluginsDest, { recursive: true, force: true });
120
120
  (0, node_fs_1.cpSync)(pluginSource, pluginsDest, { recursive: true, filter: (src) => !src.includes('node_modules') && !src.includes('.git') });
121
121
  }
122
- // Rewrite @aiwatching/bastion-plugin-api to file: path
122
+ // Rewrite @aion0/bastion-plugin-api to file: path (in dependencies or devDependencies)
123
123
  const pkgPath = (0, node_path_1.join)(pluginsDest, 'package.json');
124
124
  const pkg = JSON.parse((0, node_fs_1.readFileSync)(pkgPath, 'utf-8'));
125
- if (pkg.dependencies?.['@aiwatching/bastion-plugin-api']) {
126
- const relPath = (0, node_path_1.relative)(pluginsDest, pluginApiDir);
127
- pkg.dependencies['@aiwatching/bastion-plugin-api'] = `file:${relPath}`;
125
+ const relPath = (0, node_path_1.relative)(pluginsDest, pluginApiDir);
126
+ let rewrote = false;
127
+ for (const section of ['dependencies', 'devDependencies']) {
128
+ if (pkg[section]?.['@aion0/bastion-plugin-api']) {
129
+ pkg[section]['@aion0/bastion-plugin-api'] = `file:${relPath}`;
130
+ rewrote = true;
131
+ }
132
+ }
133
+ if (rewrote) {
128
134
  (0, node_fs_1.writeFileSync)(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
129
135
  console.log(`Rewrote plugin-api path to: file:${relPath}`);
130
136
  }
@@ -137,7 +143,7 @@ function registerPluginsCommand(program) {
137
143
  const config = loadConfig();
138
144
  const plugins = (config.plugins ?? {});
139
145
  const entries = plugins.external ?? [];
140
- const alreadyConfigured = entries.some(e => e.package.includes('bastion-pro'));
146
+ const alreadyConfigured = entries.some(e => e.package.endsWith('/plugins'));
141
147
  if (!alreadyConfigured) {
142
148
  entries.push({ package: pluginsDest, enabled: true });
143
149
  plugins.external = entries;
@@ -153,7 +159,7 @@ function registerPluginsCommand(program) {
153
159
  cmd
154
160
  .command('uninstall')
155
161
  .description('Uninstall an optional plugin')
156
- .argument('[name]', 'Plugin directory name (default: bastion-pro)', 'bastion-pro')
162
+ .argument('[name]', 'Plugin directory name (default: plugins)', 'plugins')
157
163
  .option('--all', 'Remove everything including downloaded models')
158
164
  .action(async (name, opts) => {
159
165
  const config = loadConfig();
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/cli/commands/plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/cli/commands/plugins.ts"],"names":[],"mappings":";;;;;AA0DA,wDAgKC;AAzND,qCAAoH;AACpH,yCAAoD;AACpD,qCAAkC;AAClC,2DAA8C;AAC9C,iDAAgD;AAChD,sDAA2B;AAE3B,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,IAAA,iBAAO,GAAE,EAAE,UAAU,CAAC,CAAC;AAChD,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AACrD,MAAM,UAAU,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAE/C,SAAS,GAAG,CAAC,QAAgB;IAC3B,MAAM,EAAE,GAAG,IAAA,+BAAe,EAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,IAAA,kBAAQ,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,KAAe,CAAC,CAAC,CAAC;gBAChD,IAAI,EAAE,CAAC,MAAM,EAAE;oBAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,MAAM,CAAC;IAAC,CAAC;IAC1B,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACvF,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC;AAQD,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAQ,iBAAI,CAAC,IAAI,CAAC,GAAG,CAA6B,IAAI,EAAE,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,MAA+B;IACjD,IAAA,mBAAS,EAAC,IAAA,mBAAO,EAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,IAAA,uBAAa,EAAC,WAAW,EAAE,iBAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,kBAAkB,CAAC,MAA+B;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,OAA8C,CAAC;IACtE,OAAQ,OAAO,EAAE,QAAwC,IAAI,EAAE,CAAC;AAClE,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAE1C,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;YACvF,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,yBAAyB,CAAC;YACpF,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qCAAqC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,QAAQ,CAAC,QAAQ,EAAE,iCAAiC,CAAC;SACrD,MAAM,CAAC,CAAC,UAAmB,EAAE,EAAE;QAC9B,kCAAkC;QAClC,IAAI,YAAY,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,4CAA4C;YAC5C,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;YAClE,IAAI,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;gBAChD,YAAY,GAAG,SAAS,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,YAAY,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC7E,OAAO,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;YAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,qDAAqD;QACrD,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,4BAA4B,MAAM,yBAAyB,CAAC,CAAC;YAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAEpE,OAAO,CAAC,GAAG,CAAC,qCAAqC,YAAY,EAAE,CAAC,CAAC;QAEjE,iDAAiD;QACjD,IAAA,mBAAS,EAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,6CAA6C;QAC7C,IAAI,CAAC;YACH,IAAA,6BAAQ,EAAC,kEAAkE,YAAY,OAAO,WAAW,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACpI,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;YAC5B,IAAA,gBAAM,EAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,IAAA,gBAAM,EAAC,YAAY,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClI,CAAC;QAED,uFAAuF;QACvF,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAA,oBAAQ,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACpD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,OAAO,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAU,EAAE,CAAC;YACnE,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,2BAA2B,CAAC,EAAE,CAAC;gBAChD,GAAG,CAAC,OAAO,CAAC,CAAC,2BAA2B,CAAC,GAAG,QAAQ,OAAO,EAAE,CAAC;gBAC9D,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAA,uBAAa,EAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,IAAA,6BAAQ,EAAC,aAAa,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,IAAA,6BAAQ,EAAC,eAAe,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAE/D,qBAAqB;QACrB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;QAClE,MAAM,OAAO,GAAI,OAAO,CAAC,QAAwC,IAAI,EAAE,CAAC;QACxE,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;YAC3B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YACzB,UAAU,CAAC,MAAM,CAAC,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,QAAQ,CAAC,QAAQ,EAAE,0CAA0C,EAAE,SAAS,CAAC;SACzE,MAAM,CAAC,OAAO,EAAE,+CAA+C,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAuB,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAE3C,sBAAsB;QACtB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,gCAAgC,IAAI,oBAAoB,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;QAChC,IAAI,IAAA,oBAAU,EAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,IAAA,gBAAM,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,0CAA0C,SAAS,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,gBAAgB;QAChB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAkC,CAAC;QAC1D,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QACpD,UAAU,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAEnC,wBAAwB;QACxB,MAAM,SAAS,GAAG,IAAA,oBAAU,EAAC,UAAU,CAAC,IAAI,IAAA,qBAAW,EAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/G,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;YACrC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,qCAAqC,IAAI,OAAO,UAAU,WAAW,CAAC,CAAC;gBAChG,YAAY,GAAG,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,KAAK,CAAC;YACpD,CAAC;YACD,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAA,gBAAM,EAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,YAAY,UAAU,EAAE,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1294,10 +1294,10 @@ async function refreshSettings(){
1294
1294
 
1295
1295
  // Optional plugins uninstall
1296
1296
  document.getElementById('opt-uninstall-btn').addEventListener('click',async function(){
1297
- if(!confirm('Uninstall optional plugins (bastion-pro)?'))return;
1297
+ if(!confirm('Uninstall optional plugins (bastion-plugin-api)?'))return;
1298
1298
  var removeModels=confirm('Also remove downloaded models? This frees disk space but models will need to be re-downloaded on next install.');
1299
1299
  try{
1300
- var r=await apiFetch('/api/plugins/uninstall',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify({name:'bastion-pro',removeModels:removeModels})});
1300
+ var r=await apiFetch('/api/plugins/uninstall',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify({name:'bastion-plugin-api',removeModels:removeModels})});
1301
1301
  var d=await r.json();
1302
1302
  if(d.ok){refreshSettings()}else{alert(d.error||'Uninstall failed')}
1303
1303
  }catch(e){alert('Uninstall failed: '+e.message)}
@@ -0,0 +1,22 @@
1
+ import type { Plugin } from '../types.js';
2
+ import type { PluginEventBus } from '../event-bus.js';
3
+ import type { ClassifierProvider } from '../../plugin-api/types.js';
4
+ import type Database from 'better-sqlite3';
5
+ export interface PiClassifierPluginConfig {
6
+ enabled?: boolean;
7
+ modelId?: string;
8
+ onnxSubdir?: string;
9
+ threshold?: number;
10
+ action?: 'warn' | 'block';
11
+ scanSystem?: boolean;
12
+ }
13
+ /**
14
+ * Extract user message texts from a parsed request body.
15
+ * Covers Anthropic and OpenAI message formats, including tool_result content blocks.
16
+ */
17
+ export declare function extractUserTexts(parsedBody: Readonly<Record<string, unknown>>, scanSystem?: boolean): string[];
18
+ export declare function createPiClassifierPlugin(db: Database.Database, config: PiClassifierPluginConfig, eventBus: PluginEventBus): {
19
+ plugin: Plugin;
20
+ getClassifierProvider: () => ClassifierProvider | undefined;
21
+ };
22
+ //# sourceMappingURL=pi-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-classifier.d.ts","sourceRoot":"","sources":["../../../src/plugins/builtin/pi-classifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAuC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAKpE,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAY3C,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAmC9G;AAED,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,wBAAwB,EAChC,QAAQ,EAAE,cAAc,GACvB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,qBAAqB,EAAE,MAAM,kBAAkB,GAAG,SAAS,CAAA;CAAE,CAmIjF"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractUserTexts = extractUserTexts;
4
+ exports.createPiClassifierPlugin = createPiClassifierPlugin;
5
+ const onnx_provider_js_1 = require("../../classifier/onnx-provider.js");
6
+ const model_manager_js_1 = require("../../classifier/model-manager.js");
7
+ const plugin_events_js_1 = require("../../storage/repositories/plugin-events.js");
8
+ const logger_js_1 = require("../../utils/logger.js");
9
+ const log = (0, logger_js_1.createLogger)('pi-classifier');
10
+ const DEFAULT_MODEL_ID = 'protectai/deberta-v3-base-prompt-injection-v2';
11
+ const DEFAULT_THRESHOLD = 0.8;
12
+ // Labels considered safe/benign across different models
13
+ const SAFE_LABELS = new Set(['BENIGN', 'SAFE']);
14
+ // Labels considered high severity (not critical)
15
+ const HIGH_SEVERITY_LABELS = new Set(['JAILBREAK']);
16
+ /**
17
+ * Extract user message texts from a parsed request body.
18
+ * Covers Anthropic and OpenAI message formats, including tool_result content blocks.
19
+ */
20
+ function extractUserTexts(parsedBody, scanSystem) {
21
+ const texts = [];
22
+ const messages = parsedBody.messages;
23
+ if (!Array.isArray(messages))
24
+ return texts;
25
+ for (const msg of messages) {
26
+ const role = msg?.role;
27
+ if (role !== 'user' && !(scanSystem && role === 'system'))
28
+ continue;
29
+ const content = msg?.content;
30
+ if (typeof content === 'string') {
31
+ texts.push(content);
32
+ }
33
+ else if (Array.isArray(content)) {
34
+ for (const block of content) {
35
+ if (typeof block === 'string') {
36
+ texts.push(block);
37
+ }
38
+ else if (block?.type === 'text' && typeof block.text === 'string') {
39
+ texts.push(block.text);
40
+ }
41
+ else if (block?.type === 'tool_result') {
42
+ // Anthropic tool_result: content can be string or content blocks
43
+ const trContent = block.content;
44
+ if (typeof trContent === 'string') {
45
+ texts.push(trContent);
46
+ }
47
+ else if (Array.isArray(trContent)) {
48
+ for (const inner of trContent) {
49
+ if (typeof inner === 'string')
50
+ texts.push(inner);
51
+ else if (inner?.type === 'text' && typeof inner.text === 'string')
52
+ texts.push(inner.text);
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
59
+ return texts;
60
+ }
61
+ function createPiClassifierPlugin(db, config, eventBus) {
62
+ const modelId = config.modelId ?? DEFAULT_MODEL_ID;
63
+ const threshold = config.threshold ?? DEFAULT_THRESHOLD;
64
+ const action = config.action ?? 'warn';
65
+ const scanSystem = config.scanSystem ?? false;
66
+ const onnxSubdir = config.onnxSubdir ?? 'onnx';
67
+ let provider = null;
68
+ let initialized = false;
69
+ const pluginEventsRepo = new plugin_events_js_1.PluginEventsRepository(db);
70
+ async function initProvider() {
71
+ if (initialized)
72
+ return;
73
+ initialized = true;
74
+ log.info('Initializing PI classifier', { modelId, threshold, action });
75
+ try {
76
+ // Ensure model is downloaded
77
+ let lastLoggedPercent = -10;
78
+ const modelDir = await (0, model_manager_js_1.ensureModel)(modelId, (progress) => {
79
+ if (progress.percent >= lastLoggedPercent + 10) {
80
+ lastLoggedPercent = progress.percent;
81
+ log.info('Downloading model', {
82
+ file: progress.file,
83
+ percent: `${progress.percent}%`,
84
+ });
85
+ }
86
+ }, { onnxSubdir, logger: log });
87
+ // Initialize ONNX provider
88
+ const onnxProvider = new onnx_provider_js_1.OnnxClassifierProvider({
89
+ modelDir,
90
+ maxLength: 512,
91
+ });
92
+ await onnxProvider.initialize();
93
+ provider = onnxProvider;
94
+ log.info('PI classifier ready', {
95
+ modelName: provider.modelName,
96
+ modelDir,
97
+ });
98
+ }
99
+ catch (err) {
100
+ log.error('Failed to initialize PI classifier', {
101
+ error: err.message,
102
+ });
103
+ // Non-fatal: plugin will be skipped in onRequest
104
+ }
105
+ }
106
+ // Start initialization eagerly (non-blocking)
107
+ if (config.enabled !== false) {
108
+ initProvider().catch(() => { });
109
+ }
110
+ const plugin = {
111
+ name: 'pi-classifier',
112
+ priority: 3,
113
+ version: '1.0.0',
114
+ apiVersion: 2,
115
+ source: 'builtin',
116
+ async onRequest(context) {
117
+ if (!provider?.ready)
118
+ return;
119
+ const texts = extractUserTexts(context.parsedBody, scanSystem);
120
+ if (texts.length === 0)
121
+ return;
122
+ let maxScore = 0;
123
+ let maxLabel = 'SAFE';
124
+ // Classify texts — use batch if available, else sequential
125
+ const results = provider.classifyBatch
126
+ ? await provider.classifyBatch(texts)
127
+ : await Promise.all(texts.map(t => provider.classify(t)));
128
+ let detections = 0;
129
+ for (let i = 0; i < results.length; i++) {
130
+ const result = results[i];
131
+ if (!SAFE_LABELS.has(result.label) && result.score >= threshold) {
132
+ detections++;
133
+ // Persist event to DB
134
+ try {
135
+ pluginEventsRepo.insertEvent('pi-classifier', context.id, {
136
+ type: 'prompt-injection',
137
+ severity: HIGH_SEVERITY_LABELS.has(result.label) ? 'high' : 'critical',
138
+ rule: `pi:${result.label.toLowerCase()}`,
139
+ detail: `ML detected ${result.label} (score: ${result.score.toFixed(3)}, latency: ${result.latencyMs}ms)`,
140
+ matchedText: texts[i].slice(0, 200),
141
+ });
142
+ }
143
+ catch (err) {
144
+ log.warn('Failed to persist PI event', { error: err.message });
145
+ }
146
+ if (result.score > maxScore) {
147
+ maxScore = result.score;
148
+ maxLabel = result.label;
149
+ }
150
+ }
151
+ }
152
+ if (detections === 0)
153
+ return;
154
+ // Emit pi:detected event for threat-scorer escalation
155
+ eventBus.emit('pi:detected', {
156
+ sessionId: context.sessionId,
157
+ label: maxLabel,
158
+ score: maxScore,
159
+ detections,
160
+ });
161
+ if (action === 'block') {
162
+ return {
163
+ blocked: {
164
+ reason: `PI classifier detected ${maxLabel} (score: ${maxScore.toFixed(3)})`,
165
+ },
166
+ };
167
+ }
168
+ // 'warn' — log but don't block
169
+ return;
170
+ },
171
+ };
172
+ return {
173
+ plugin,
174
+ getClassifierProvider: () => provider ?? undefined,
175
+ };
176
+ }
177
+ //# sourceMappingURL=pi-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi-classifier.js","sourceRoot":"","sources":["../../../src/plugins/builtin/pi-classifier.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aion0/bastion",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "description": "Local-first AI gateway for proxying and securing LLM provider requests",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",