@aion0/bastion 0.1.10 → 0.1.12
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 +22 -3
- package/README.zh.md +22 -19
- package/config/default.yaml +2 -2
- package/dist/cli/commands/pro.d.ts +3 -0
- package/dist/cli/commands/pro.d.ts.map +1 -0
- package/dist/cli/commands/pro.js +261 -0
- package/dist/cli/commands/pro.js.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/paths.d.ts +3 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +3 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schema.d.ts +1 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/core/bootstrap.d.ts.map +1 -1
- package/dist/core/bootstrap.js +5 -0
- package/dist/core/bootstrap.js.map +1 -1
- package/dist/dashboard/api-routes.d.ts.map +1 -1
- package/dist/dashboard/api-routes.js +23 -0
- package/dist/dashboard/api-routes.js.map +1 -1
- package/dist/dashboard/page.d.ts.map +1 -1
- package/dist/dashboard/page.js +13 -5
- package/dist/dashboard/page.js.map +1 -1
- package/dist/dlp/ai-validator.d.ts +5 -2
- package/dist/dlp/ai-validator.d.ts.map +1 -1
- package/dist/dlp/ai-validator.js +22 -2
- package/dist/dlp/ai-validator.js.map +1 -1
- package/dist/license/pro-license.d.ts +11 -0
- package/dist/license/pro-license.d.ts.map +1 -0
- package/dist/license/pro-license.js +88 -0
- package/dist/license/pro-license.js.map +1 -0
- package/dist/plugin-api/index.d.ts +1 -1
- package/dist/plugin-api/index.d.ts.map +1 -1
- package/dist/plugin-api/index.js.map +1 -1
- package/dist/plugin-api/types.d.ts +19 -0
- package/dist/plugin-api/types.d.ts.map +1 -1
- package/dist/plugins/builtin/audit-logger.js +1 -1
- package/dist/plugins/builtin/dlp-scanner.d.ts +2 -0
- package/dist/plugins/builtin/dlp-scanner.d.ts.map +1 -1
- package/dist/plugins/builtin/dlp-scanner.js +6 -3
- package/dist/plugins/builtin/dlp-scanner.js.map +1 -1
- package/dist/plugins/builtin/metrics-collector.js +1 -1
- package/dist/plugins/builtin/metrics-collector.js.map +1 -1
- package/dist/plugins/builtin/token-optimizer.js +1 -1
- package/dist/plugins/builtin/tool-guard.d.ts.map +1 -1
- package/dist/plugins/builtin/tool-guard.js +47 -5
- package/dist/plugins/builtin/tool-guard.js.map +1 -1
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +22 -5
- package/dist/plugins/loader.js.map +1 -1
- package/integration/openclaw-docker/fix-issues/not-install-brew/Dockerfile.patch +31 -0
- package/integration/openclaw-docker/fix-issues/not-install-brew/docker-setup.sh.patch +33 -0
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -30,14 +30,17 @@ You can't watch every request manually. Bastion does it for you.
|
|
|
30
30
|
## Install
|
|
31
31
|
|
|
32
32
|
```bash
|
|
33
|
-
#
|
|
33
|
+
# npm (recommended)
|
|
34
|
+
npm install -g @aion0/bastion
|
|
35
|
+
|
|
36
|
+
# macOS / Linux (from source)
|
|
34
37
|
curl -fsSL https://raw.githubusercontent.com/aiwatching/bastion/main/install.sh | bash
|
|
35
38
|
|
|
36
|
-
# Windows (PowerShell)
|
|
39
|
+
# Windows (PowerShell, from source)
|
|
37
40
|
irm https://raw.githubusercontent.com/aiwatching/bastion/main/install.ps1 -OutFile install.ps1; .\install.ps1
|
|
38
41
|
```
|
|
39
42
|
|
|
40
|
-
Requires Node.js 22 LTS (recommended). Node.js 18+ supported.
|
|
43
|
+
Requires Node.js 22 LTS (recommended). Node.js 18+ supported.
|
|
41
44
|
|
|
42
45
|
## Quick Start
|
|
43
46
|
|
|
@@ -149,6 +152,22 @@ bastion openclaw docker attach <container-name> # Existing container
|
|
|
149
152
|
|
|
150
153
|
See [OpenClaw Docker Guide](docs/openclaw-docker.md) | [Local Guide](docs/openclaw-local.md)
|
|
151
154
|
|
|
155
|
+
#### OpenClaw Skills
|
|
156
|
+
|
|
157
|
+
Install [`@aion0/bastion-skills`](https://www.npmjs.com/package/@aion0/bastion-skills) to manage Bastion from within OpenClaw — start/stop the gateway, view DLP findings, tool guard alerts, and usage stats through natural language.
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
openclaw skill install @aion0/bastion-skills
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
For Docker environments, the skill includes a setup script that automatically patches `docker-compose.yml` to route all LLM traffic through Bastion via `HTTPS_PROXY`:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
bash ~/.openclaw/skills/bastion/scripts/docker-setup.sh
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
See [@aion0/bastion-skills on GitHub](https://github.com/aiwatching/bastion-skills)
|
|
170
|
+
|
|
152
171
|
## Documentation
|
|
153
172
|
|
|
154
173
|
| Doc | Description |
|
package/README.zh.md
CHANGED
|
@@ -13,31 +13,18 @@
|
|
|
13
13
|
|
|
14
14
|
## 安装
|
|
15
15
|
|
|
16
|
-
### macOS / Linux
|
|
17
|
-
|
|
18
16
|
```bash
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
# npm(推荐)
|
|
18
|
+
npm install -g @aion0/bastion
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
cd bastion && bash install.sh
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
### Windows (PowerShell)
|
|
20
|
+
# macOS / Linux(从源码安装)
|
|
21
|
+
curl -fsSL https://raw.githubusercontent.com/aiwatching/bastion/main/install.sh | bash
|
|
29
22
|
|
|
30
|
-
|
|
23
|
+
# Windows (PowerShell,从源码安装)
|
|
31
24
|
irm https://raw.githubusercontent.com/aiwatching/bastion/main/install.ps1 -OutFile install.ps1; .\install.ps1
|
|
32
25
|
```
|
|
33
26
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
```powershell
|
|
37
|
-
cd bastion; .\install.ps1
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
需要 **Node.js 22 LTS**(推荐)。Node.js 18+ 可用,但非 LTS 版本可能需要[额外配置](docs/windows-troubleshooting.zh.md#1-better-sqlite3-编译失败非-lts-nodejs)。安装至 `~/.bastion/app/`。
|
|
27
|
+
需要 **Node.js 22 LTS**(推荐)。Node.js 18+ 可用,但非 LTS 版本可能需要[额外配置](docs/windows-troubleshooting.zh.md#1-better-sqlite3-编译失败非-lts-nodejs)。
|
|
41
28
|
|
|
42
29
|
## 快速开始
|
|
43
30
|
|
|
@@ -96,6 +83,22 @@ bastion openclaw local stop mywork
|
|
|
96
83
|
bastion openclaw docker attach <container-name>
|
|
97
84
|
```
|
|
98
85
|
|
|
86
|
+
### OpenClaw Skills
|
|
87
|
+
|
|
88
|
+
安装 [`@aion0/bastion-skills`](https://www.npmjs.com/package/@aion0/bastion-skills) 后,可通过自然语言在 OpenClaw 中管理 Bastion——启停网关、查看 DLP 发现、工具调用告警和用量统计。
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
openclaw skill install @aion0/bastion-skills
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Docker 环境下,skill 内置的 setup 脚本会自动 patch `docker-compose.yml`,通过 `HTTPS_PROXY` 将所有 LLM 流量路由经 Bastion:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
bash ~/.openclaw/skills/bastion/scripts/docker-setup.sh
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
详见 [@aion0/bastion-skills (GitHub)](https://github.com/aiwatching/bastion-skills)
|
|
101
|
+
|
|
99
102
|
## 使用方法
|
|
100
103
|
|
|
101
104
|
### `bastion start`
|
package/config/default.yaml
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pro.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuKzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkIzD"}
|
|
@@ -0,0 +1,261 @@
|
|
|
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.registerProCommand = registerProCommand;
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
9
|
+
const node_child_process_1 = require("node:child_process");
|
|
10
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
11
|
+
const paths_js_1 = require("../../config/paths.js");
|
|
12
|
+
const pro_license_js_1 = require("../../license/pro-license.js");
|
|
13
|
+
const daemon_js_1 = require("../daemon.js");
|
|
14
|
+
const PRO_PKG = '@aiwatching/bastion-pro';
|
|
15
|
+
const PRO_DIR_NAME = 'bastion-pro';
|
|
16
|
+
function proPluginDir() {
|
|
17
|
+
return (0, node_path_1.join)(paths_js_1.paths.pluginsDir, PRO_DIR_NAME);
|
|
18
|
+
}
|
|
19
|
+
function info(msg) {
|
|
20
|
+
process.stderr.write(msg + '\n');
|
|
21
|
+
}
|
|
22
|
+
function error(msg) {
|
|
23
|
+
process.stderr.write(`Error: ${msg}\n`);
|
|
24
|
+
}
|
|
25
|
+
/** Read config.yaml as raw object (creates file if missing) */
|
|
26
|
+
function readUserConfig() {
|
|
27
|
+
if (!(0, node_fs_1.existsSync)(paths_js_1.paths.configFile))
|
|
28
|
+
return {};
|
|
29
|
+
const raw = (0, node_fs_1.readFileSync)(paths_js_1.paths.configFile, 'utf-8');
|
|
30
|
+
return js_yaml_1.default.load(raw) ?? {};
|
|
31
|
+
}
|
|
32
|
+
/** Write config.yaml back */
|
|
33
|
+
function writeUserConfig(config) {
|
|
34
|
+
(0, node_fs_1.mkdirSync)(paths_js_1.paths.bastionDir, { recursive: true });
|
|
35
|
+
(0, node_fs_1.writeFileSync)(paths_js_1.paths.configFile, js_yaml_1.default.dump(config, { lineWidth: 120 }), 'utf-8');
|
|
36
|
+
}
|
|
37
|
+
/** Add bastion-pro to plugins.external[] in config.yaml */
|
|
38
|
+
function addProPluginConfig() {
|
|
39
|
+
const config = readUserConfig();
|
|
40
|
+
const plugins = config.plugins ?? {};
|
|
41
|
+
const external = plugins.external ?? [];
|
|
42
|
+
// Remove any old-path entries, then add/update with new path
|
|
43
|
+
const cleanExternal = external.filter((e) => {
|
|
44
|
+
const pkg = typeof e.package === 'string' ? e.package : '';
|
|
45
|
+
return !pkg.endsWith('/bastion-pro');
|
|
46
|
+
});
|
|
47
|
+
cleanExternal.push({ package: proPluginDir(), enabled: true });
|
|
48
|
+
info('Config: configured bastion-pro in plugins.external');
|
|
49
|
+
plugins.external = cleanExternal;
|
|
50
|
+
config.plugins = plugins;
|
|
51
|
+
writeUserConfig(config);
|
|
52
|
+
}
|
|
53
|
+
/** Remove bastion-pro from plugins.external[] in config.yaml */
|
|
54
|
+
function removeProPluginConfig() {
|
|
55
|
+
const config = readUserConfig();
|
|
56
|
+
const plugins = config.plugins ?? {};
|
|
57
|
+
const external = plugins.external ?? [];
|
|
58
|
+
const filtered = external.filter((e) => {
|
|
59
|
+
const pkg = typeof e.package === 'string' ? e.package : '';
|
|
60
|
+
return pkg !== proPluginDir() && !pkg.endsWith('/bastion-pro');
|
|
61
|
+
});
|
|
62
|
+
if (filtered.length !== external.length) {
|
|
63
|
+
plugins.external = filtered.length > 0 ? filtered : undefined;
|
|
64
|
+
config.plugins = plugins;
|
|
65
|
+
writeUserConfig(config);
|
|
66
|
+
info('Config: removed bastion-pro from plugins.external');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/** Install from npm: pack + extract */
|
|
70
|
+
function installFromNpm() {
|
|
71
|
+
const dest = proPluginDir();
|
|
72
|
+
(0, node_fs_1.mkdirSync)(dest, { recursive: true });
|
|
73
|
+
info(`Downloading ${PRO_PKG} from npm...`);
|
|
74
|
+
try {
|
|
75
|
+
// Pack into plugins dir
|
|
76
|
+
(0, node_child_process_1.execSync)(`npm pack ${PRO_PKG} --pack-destination .`, {
|
|
77
|
+
cwd: paths_js_1.paths.pluginsDir,
|
|
78
|
+
stdio: 'pipe',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
83
|
+
if (msg.includes('404') || msg.includes('Not Found')) {
|
|
84
|
+
error(`${PRO_PKG} not found on npm. Is it published?`);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
error(`Failed to download ${PRO_PKG}: ${msg}`);
|
|
88
|
+
}
|
|
89
|
+
info('Tip: use --source <path> for local installation');
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
// Find the tarball
|
|
93
|
+
const tarballs = (0, node_fs_1.readdirSync)(paths_js_1.paths.pluginsDir).filter((f) => f.startsWith('aiwatching-bastion-pro-') && f.endsWith('.tgz'));
|
|
94
|
+
if (tarballs.length === 0) {
|
|
95
|
+
error('No tarball found after npm pack');
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
const tarball = tarballs[tarballs.length - 1];
|
|
99
|
+
const tarballPath = (0, node_path_1.join)(paths_js_1.paths.pluginsDir, tarball);
|
|
100
|
+
info('Extracting...');
|
|
101
|
+
// Extract to dest (tarball has a "package/" prefix)
|
|
102
|
+
(0, node_child_process_1.execSync)(`tar xzf "${tarballPath}" --strip-components=1 -C "${dest}"`, { stdio: 'pipe' });
|
|
103
|
+
// Cleanup tarball
|
|
104
|
+
(0, node_fs_1.rmSync)(tarballPath, { force: true });
|
|
105
|
+
// Install production deps
|
|
106
|
+
info('Installing dependencies...');
|
|
107
|
+
(0, node_child_process_1.execSync)('npm install --production --ignore-scripts', {
|
|
108
|
+
cwd: dest,
|
|
109
|
+
stdio: 'pipe',
|
|
110
|
+
env: { ...process.env, NODE_ENV: 'production' },
|
|
111
|
+
});
|
|
112
|
+
info(`Installed ${PRO_PKG} → ${dest}`);
|
|
113
|
+
}
|
|
114
|
+
/** Install from local source: rsync + build */
|
|
115
|
+
function installFromLocal(source) {
|
|
116
|
+
if (!(0, node_fs_1.existsSync)(source)) {
|
|
117
|
+
error(`Source path not found: ${source}`);
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
const dest = proPluginDir();
|
|
121
|
+
(0, node_fs_1.mkdirSync)(dest, { recursive: true });
|
|
122
|
+
info(`Copying from ${source}...`);
|
|
123
|
+
(0, node_child_process_1.execSync)(`rsync -a --exclude node_modules --exclude .git --exclude dist "${source}/" "${dest}/"`, { stdio: 'pipe' });
|
|
124
|
+
// Rewrite bastion-plugin-api dep to npm version (was file: in dev)
|
|
125
|
+
const pkgPath = (0, node_path_1.join)(dest, 'package.json');
|
|
126
|
+
if ((0, node_fs_1.existsSync)(pkgPath)) {
|
|
127
|
+
const pkg = JSON.parse((0, node_fs_1.readFileSync)(pkgPath, 'utf-8'));
|
|
128
|
+
if (pkg.dependencies?.['@aiwatching/bastion-plugin-api']?.startsWith('file:')) {
|
|
129
|
+
pkg.dependencies['@aiwatching/bastion-plugin-api'] = '^2.0.0';
|
|
130
|
+
(0, node_fs_1.writeFileSync)(pkgPath, JSON.stringify(pkg, null, 2) + '\n', 'utf-8');
|
|
131
|
+
info('Rewrote @aiwatching/bastion-plugin-api dependency to ^2.0.0');
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
info('Installing dependencies...');
|
|
135
|
+
(0, node_child_process_1.execSync)('npm install', { cwd: dest, stdio: 'pipe' });
|
|
136
|
+
info('Building...');
|
|
137
|
+
(0, node_child_process_1.execSync)('npm run build', { cwd: dest, stdio: 'pipe' });
|
|
138
|
+
info(`Installed from local source → ${dest}`);
|
|
139
|
+
}
|
|
140
|
+
function registerProCommand(program) {
|
|
141
|
+
const pro = program
|
|
142
|
+
.command('pro')
|
|
143
|
+
.description('Manage Bastion Pro plugin (activate, deactivate, status)');
|
|
144
|
+
// ── bastion pro activate <key> ──
|
|
145
|
+
pro
|
|
146
|
+
.command('activate <key>')
|
|
147
|
+
.description('Activate Pro features with a license key')
|
|
148
|
+
.option('--source <path>', 'Install from local directory instead of npm')
|
|
149
|
+
.action((key, options) => {
|
|
150
|
+
// 1. Validate license
|
|
151
|
+
const license = (0, pro_license_js_1.validateProLicense)(key);
|
|
152
|
+
if (!license.valid) {
|
|
153
|
+
error(`License validation failed: ${license.error}`);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
info(`License valid: ${license.plan} plan, expires ${license.expiresAt.toISOString().slice(0, 10)}`);
|
|
157
|
+
// 2. Save license key
|
|
158
|
+
(0, pro_license_js_1.saveLicenseKey)(key);
|
|
159
|
+
info(`License key saved to ${paths_js_1.paths.licenseFile}`);
|
|
160
|
+
// 3. Install plugin
|
|
161
|
+
const dest = proPluginDir();
|
|
162
|
+
const alreadyInstalled = (0, node_fs_1.existsSync)((0, node_path_1.join)(dest, 'package.json'));
|
|
163
|
+
if (alreadyInstalled) {
|
|
164
|
+
info('Pro plugin already installed, skipping installation');
|
|
165
|
+
}
|
|
166
|
+
else if (options.source) {
|
|
167
|
+
installFromLocal(options.source);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
installFromNpm();
|
|
171
|
+
}
|
|
172
|
+
// 4. Update config.yaml
|
|
173
|
+
addProPluginConfig();
|
|
174
|
+
// 5. Restart notice
|
|
175
|
+
const daemon = (0, daemon_js_1.getDaemonStatus)();
|
|
176
|
+
if (daemon.running) {
|
|
177
|
+
info('');
|
|
178
|
+
info(`Bastion is running (PID ${daemon.pid}). Restart required:`);
|
|
179
|
+
info(' bastion stop && bastion start');
|
|
180
|
+
}
|
|
181
|
+
info('');
|
|
182
|
+
info('Pro features activated successfully!');
|
|
183
|
+
});
|
|
184
|
+
// ── bastion pro deactivate ──
|
|
185
|
+
pro
|
|
186
|
+
.command('deactivate')
|
|
187
|
+
.description('Deactivate Pro features and remove configuration')
|
|
188
|
+
.option('--cleanup', 'Also delete installed plugin files and models')
|
|
189
|
+
.action((options) => {
|
|
190
|
+
// 1. Remove from config
|
|
191
|
+
removeProPluginConfig();
|
|
192
|
+
// 2. Remove license key
|
|
193
|
+
(0, pro_license_js_1.removeLicenseKey)();
|
|
194
|
+
info('License key removed');
|
|
195
|
+
// 3. Cleanup installed files
|
|
196
|
+
if (options.cleanup) {
|
|
197
|
+
const dest = proPluginDir();
|
|
198
|
+
if ((0, node_fs_1.existsSync)(dest)) {
|
|
199
|
+
(0, node_fs_1.rmSync)(dest, { recursive: true, force: true });
|
|
200
|
+
info(`Removed ${dest}`);
|
|
201
|
+
}
|
|
202
|
+
if ((0, node_fs_1.existsSync)(paths_js_1.paths.modelsDir)) {
|
|
203
|
+
(0, node_fs_1.rmSync)(paths_js_1.paths.modelsDir, { recursive: true, force: true });
|
|
204
|
+
info(`Removed ${paths_js_1.paths.modelsDir}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
info('');
|
|
208
|
+
info('Pro features deactivated.');
|
|
209
|
+
});
|
|
210
|
+
// ── bastion pro status ──
|
|
211
|
+
pro
|
|
212
|
+
.command('status')
|
|
213
|
+
.description('Show Pro plugin status')
|
|
214
|
+
.action(() => {
|
|
215
|
+
console.log('Bastion Pro Status');
|
|
216
|
+
console.log('─'.repeat(40));
|
|
217
|
+
// License
|
|
218
|
+
const key = (0, pro_license_js_1.readLicenseKey)();
|
|
219
|
+
if (key) {
|
|
220
|
+
const license = (0, pro_license_js_1.validateProLicense)(key);
|
|
221
|
+
if (license.valid) {
|
|
222
|
+
const isDevMode = key === '__DEV__' || process.env.BASTION_DEV === '1';
|
|
223
|
+
const planLabel = isDevMode ? `${license.plan} (dev mode)` : license.plan;
|
|
224
|
+
console.log(` License: ${planLabel}`);
|
|
225
|
+
console.log(` Expires: ${license.expiresAt.toISOString().slice(0, 10)}`);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
console.log(` License: invalid (${license.error})`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
console.log(' License: not activated');
|
|
233
|
+
}
|
|
234
|
+
// Plugin installed?
|
|
235
|
+
const dest = proPluginDir();
|
|
236
|
+
const pluginPkgPath = (0, node_path_1.join)(dest, 'package.json');
|
|
237
|
+
if ((0, node_fs_1.existsSync)(pluginPkgPath)) {
|
|
238
|
+
const pkg = JSON.parse((0, node_fs_1.readFileSync)(pluginPkgPath, 'utf-8'));
|
|
239
|
+
console.log(` Plugin: installed (v${pkg.version ?? '?'})`);
|
|
240
|
+
console.log(` Location: ${dest}`);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
console.log(' Plugin: not installed');
|
|
244
|
+
}
|
|
245
|
+
// Config enabled?
|
|
246
|
+
const config = readUserConfig();
|
|
247
|
+
const plugins = config.plugins ?? {};
|
|
248
|
+
const external = plugins.external ?? [];
|
|
249
|
+
const entry = external.find((e) => e.package === dest);
|
|
250
|
+
console.log(` Config: ${entry?.enabled ? 'enabled' : 'not configured'}`);
|
|
251
|
+
// Models
|
|
252
|
+
if ((0, node_fs_1.existsSync)(paths_js_1.paths.modelsDir)) {
|
|
253
|
+
const models = (0, node_fs_1.readdirSync)(paths_js_1.paths.modelsDir).filter((f) => f.endsWith('.onnx'));
|
|
254
|
+
console.log(` Models: ${models.length > 0 ? models.join(', ') : 'none'}`);
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
console.log(' Models: not downloaded');
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=pro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pro.js","sourceRoot":"","sources":["../../../src/cli/commands/pro.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -13,6 +13,7 @@ const trust_ca_js_1 = require("./commands/trust-ca.js");
|
|
|
13
13
|
const proxy_js_1 = require("./commands/proxy.js");
|
|
14
14
|
const openclaw_js_1 = require("./commands/openclaw.js");
|
|
15
15
|
const token_js_1 = require("./commands/token.js");
|
|
16
|
+
const pro_js_1 = require("./commands/pro.js");
|
|
16
17
|
const version_js_1 = require("../version.js");
|
|
17
18
|
const program = new commander_1.Command();
|
|
18
19
|
program
|
|
@@ -31,5 +32,6 @@ program
|
|
|
31
32
|
(0, proxy_js_1.registerProxyCommand)(program);
|
|
32
33
|
(0, openclaw_js_1.registerOpenclawCommand)(program);
|
|
33
34
|
(0, token_js_1.registerTokenCommand)(program);
|
|
35
|
+
(0, pro_js_1.registerProCommand)(program);
|
|
34
36
|
program.parse();
|
|
35
37
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,kDAA2D;AAC3D,gDAAyD;AACzD,kDAA2D;AAC3D,oDAA6D;AAC7D,oDAA6D;AAC7D,8CAAuD;AACvD,gDAAyD;AACzD,wDAAgE;AAChE,kDAA2D;AAC3D,wDAAiE;AACjE,kDAA2D;AAC3D,8CAA2C;AAE3C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,IAAA,uBAAU,GAAE,CAAC;KACrB,uBAAuB,EAAE,CAAC;AAE7B,IAAA,+BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,6BAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,+BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,iCAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,iCAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,2BAAkB,EAAC,OAAO,CAAC,CAAC;AAC5B,IAAA,6BAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,oCAAsB,EAAC,OAAO,CAAC,CAAC;AAChC,IAAA,+BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,qCAAuB,EAAC,OAAO,CAAC,CAAC;AACjC,IAAA,+BAAoB,EAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,kDAA2D;AAC3D,gDAAyD;AACzD,kDAA2D;AAC3D,oDAA6D;AAC7D,oDAA6D;AAC7D,8CAAuD;AACvD,gDAAyD;AACzD,wDAAgE;AAChE,kDAA2D;AAC3D,wDAAiE;AACjE,kDAA2D;AAC3D,8CAAuD;AACvD,8CAA2C;AAE3C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,IAAA,uBAAU,GAAE,CAAC;KACrB,uBAAuB,EAAE,CAAC;AAE7B,IAAA,+BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,6BAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,+BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,iCAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,iCAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,2BAAkB,EAAC,OAAO,CAAC,CAAC;AAC5B,IAAA,6BAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,oCAAsB,EAAC,OAAO,CAAC,CAAC;AAChC,IAAA,+BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,qCAAuB,EAAC,OAAO,CAAC,CAAC;AACjC,IAAA,+BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,2BAAkB,EAAC,OAAO,CAAC,CAAC;AAE5B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/config/paths.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK;;;;;;;;;;;CAWjB,CAAC"}
|
package/dist/config/paths.js
CHANGED
|
@@ -12,5 +12,8 @@ exports.paths = {
|
|
|
12
12
|
pidFile: (0, node_path_1.join)(BASTION_DIR, 'bastion.pid'),
|
|
13
13
|
logFile: (0, node_path_1.join)(BASTION_DIR, 'bastion.log'),
|
|
14
14
|
signaturesDir: (0, node_path_1.join)(BASTION_DIR, 'signatures'),
|
|
15
|
+
licenseFile: (0, node_path_1.join)(BASTION_DIR, 'license'),
|
|
16
|
+
pluginsDir: (0, node_path_1.join)(BASTION_DIR, 'plugins'),
|
|
17
|
+
modelsDir: (0, node_path_1.join)(BASTION_DIR, 'models'),
|
|
15
18
|
};
|
|
16
19
|
//# sourceMappingURL=paths.js.map
|
package/dist/config/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AACjC,qCAAkC;AAElC,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,IAAA,iBAAO,GAAE,EAAE,UAAU,CAAC,CAAC;AAEnC,QAAA,KAAK,GAAG;IACnB,UAAU,EAAE,WAAW;IACvB,UAAU,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,aAAa,CAAC;IAC5C,YAAY,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,YAAY,CAAC;IAC7C,iBAAiB,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,MAAM,CAAC;IAC5C,OAAO,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,aAAa,CAAC;IACzC,OAAO,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,aAAa,CAAC;IACzC,aAAa,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AACjC,qCAAkC;AAElC,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,IAAA,iBAAO,GAAE,EAAE,UAAU,CAAC,CAAC;AAEnC,QAAA,KAAK,GAAG;IACnB,UAAU,EAAE,WAAW;IACvB,UAAU,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,aAAa,CAAC;IAC5C,YAAY,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,YAAY,CAAC;IAC7C,iBAAiB,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,MAAM,CAAC;IAC5C,OAAO,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,aAAa,CAAC;IACzC,OAAO,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,aAAa,CAAC;IACzC,aAAa,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,YAAY,CAAC;IAC9C,WAAW,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,SAAS,CAAC;IACzC,UAAU,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,SAAS,CAAC;IACxC,SAAS,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,QAAQ,CAAC;CACvC,CAAC"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;QAC5B,IAAI,EAAE;YACJ,OAAO,EAAE,OAAO,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,YAAY,EAAE,MAAM,EAAE,CAAC;SACxB,CAAC;KACH,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;KAC5C,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC;SAClB,CAAC;QACF,GAAG,EAAE;YACH,OAAO,EAAE,OAAO,CAAC;YACjB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;YAC7C,QAAQ,EAAE,CAAC,iBAAiB,GAAG,WAAW,GAAG,eAAe,GAAG,kBAAkB,CAAC,EAAE,CAAC;YACrF,cAAc,EAAE;gBACd,GAAG,EAAE,MAAM,CAAC;gBACZ,MAAM,EAAE,MAAM,CAAC;gBACf,WAAW,EAAE,OAAO,CAAC;gBACrB,mBAAmB,EAAE,MAAM,CAAC;aAC7B,CAAC;YACF,YAAY,EAAE;gBACZ,OAAO,EAAE,OAAO,CAAC;gBACjB,QAAQ,EAAE,WAAW,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAyBzD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,aAAa,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAyBzD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,aAAa,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAuLpF"}
|
package/dist/core/bootstrap.js
CHANGED
|
@@ -94,6 +94,7 @@ async function bootstrap(options) {
|
|
|
94
94
|
remotePatterns: config.plugins.dlp.remotePatterns,
|
|
95
95
|
aiValidation: config.plugins.dlp.aiValidation,
|
|
96
96
|
getAction: () => configManager.get().plugins.dlp.action,
|
|
97
|
+
getLocalProvider: () => pluginStateGetter('pi-classifier', 'classifierProvider'),
|
|
97
98
|
}, eventBus));
|
|
98
99
|
if (!config.plugins.dlp.enabled)
|
|
99
100
|
pluginManager.disable('dlp-scanner');
|
|
@@ -132,6 +133,9 @@ async function bootstrap(options) {
|
|
|
132
133
|
}, eventBus));
|
|
133
134
|
if (!config.plugins.toolGuard?.enabled)
|
|
134
135
|
pluginManager.disable('tool-guard');
|
|
136
|
+
// pluginStateGetter is a lazy closure — DLP scanner is created before external plugins,
|
|
137
|
+
// so it captures the getter that gets updated once external plugins are loaded.
|
|
138
|
+
let pluginStateGetter = () => undefined;
|
|
135
139
|
// Load external plugins
|
|
136
140
|
const externalConfigs = config.plugins.external ?? [];
|
|
137
141
|
let destroyCallbacks = [];
|
|
@@ -140,6 +144,7 @@ async function bootstrap(options) {
|
|
|
140
144
|
const result = await (0, loader_js_1.loadExternalPlugins)(externalConfigs, db, eventBus);
|
|
141
145
|
destroyCallbacks = result.destroyCallbacks;
|
|
142
146
|
getPluginState = result.getPluginState;
|
|
147
|
+
pluginStateGetter = result.getPluginState;
|
|
143
148
|
for (const plugin of result.plugins) {
|
|
144
149
|
pluginManager.register(plugin);
|
|
145
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":";;;;;AA0DA,
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/core/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-routes.d.ts","sourceRoot":"","sources":["../../src/dashboard/api-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-routes.d.ts","sourceRoot":"","sources":["../../src/dashboard/api-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAiB3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAyBzD,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,GACxE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CA+pBxD"}
|
|
@@ -11,6 +11,7 @@ const dlp_patterns_js_1 = require("../storage/repositories/dlp-patterns.js");
|
|
|
11
11
|
const dlp_config_history_js_1 = require("../storage/repositories/dlp-config-history.js");
|
|
12
12
|
const tool_calls_js_1 = require("../storage/repositories/tool-calls.js");
|
|
13
13
|
const tool_guard_rules_js_1 = require("../storage/repositories/tool-guard-rules.js");
|
|
14
|
+
const plugin_events_js_1 = require("../storage/repositories/plugin-events.js");
|
|
14
15
|
const alert_js_1 = require("../tool-guard/alert.js");
|
|
15
16
|
const engine_js_1 = require("../dlp/engine.js");
|
|
16
17
|
const semantics_js_1 = require("../dlp/semantics.js");
|
|
@@ -45,6 +46,7 @@ function createApiRouter(db, configManager, pluginManager, getPluginState) {
|
|
|
45
46
|
const dlpConfigHistory = new dlp_config_history_js_1.DlpConfigHistoryRepository(db);
|
|
46
47
|
const toolCallsRepo = new tool_calls_js_1.ToolCallsRepository(db);
|
|
47
48
|
const toolGuardRulesRepo = new tool_guard_rules_js_1.ToolGuardRulesRepository(db);
|
|
49
|
+
const pluginEventsRepo = new plugin_events_js_1.PluginEventsRepository(db);
|
|
48
50
|
let devUnlocked = false;
|
|
49
51
|
return (req, res) => {
|
|
50
52
|
const url = parseUrl(req);
|
|
@@ -88,11 +90,13 @@ function createApiRouter(db, configManager, pluginManager, getPluginState) {
|
|
|
88
90
|
const recent = requestsRepo.getRecent(20, sinceHours);
|
|
89
91
|
const cacheStats = cacheRepo.getStats();
|
|
90
92
|
const dlpStats = dlpRepo.getStats();
|
|
93
|
+
const pluginEventStats = pluginEventsRepo.getStats();
|
|
91
94
|
sendJson(res, {
|
|
92
95
|
stats,
|
|
93
96
|
recent,
|
|
94
97
|
cache: cacheStats,
|
|
95
98
|
dlp: dlpStats,
|
|
99
|
+
pluginEvents: pluginEventStats,
|
|
96
100
|
version: (0, version_js_1.getVersion)(),
|
|
97
101
|
uptime: process.uptime(),
|
|
98
102
|
memory: process.memoryUsage().rss,
|
|
@@ -640,6 +644,25 @@ function createApiRouter(db, configManager, pluginManager, getPluginState) {
|
|
|
640
644
|
}
|
|
641
645
|
return true;
|
|
642
646
|
}
|
|
647
|
+
// GET /api/plugin-events/recent — recent plugin events (pi-classifier, etc.)
|
|
648
|
+
if (req.method === 'GET' && path === '/api/plugin-events/recent') {
|
|
649
|
+
const limit = parseInt(url.searchParams.get('limit') ?? '50', 10);
|
|
650
|
+
const hours = url.searchParams.get('hours');
|
|
651
|
+
const sinceHours = hours ? parseInt(hours, 10) : undefined;
|
|
652
|
+
const plugin = url.searchParams.get('plugin') ?? undefined;
|
|
653
|
+
if (plugin) {
|
|
654
|
+
sendJson(res, pluginEventsRepo.getByPlugin(plugin, limit));
|
|
655
|
+
}
|
|
656
|
+
else {
|
|
657
|
+
sendJson(res, pluginEventsRepo.getRecent(limit, sinceHours));
|
|
658
|
+
}
|
|
659
|
+
return true;
|
|
660
|
+
}
|
|
661
|
+
// GET /api/plugin-events/stats — plugin event stats
|
|
662
|
+
if (req.method === 'GET' && path === '/api/plugin-events/stats') {
|
|
663
|
+
sendJson(res, pluginEventsRepo.getStats());
|
|
664
|
+
return true;
|
|
665
|
+
}
|
|
643
666
|
// GET /api/license — Pro license status
|
|
644
667
|
if (req.method === 'GET' && path === '/api/license') {
|
|
645
668
|
// Dev token unlock — all features available for debugging
|