@aion0/bastion 0.1.11 → 0.1.13

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 (98) hide show
  1. package/README.md +49 -6
  2. package/README.zh.md +48 -22
  3. package/config/default.yaml +2 -2
  4. package/dist/cli/commands/plugins.d.ts +3 -0
  5. package/dist/cli/commands/plugins.d.ts.map +1 -0
  6. package/dist/cli/commands/plugins.js +201 -0
  7. package/dist/cli/commands/plugins.js.map +1 -0
  8. package/dist/cli/commands/start.d.ts.map +1 -1
  9. package/dist/cli/commands/start.js +0 -18
  10. package/dist/cli/commands/start.js.map +1 -1
  11. package/dist/cli/index.js +2 -0
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/config/paths.d.ts +2 -0
  14. package/dist/config/paths.d.ts.map +1 -1
  15. package/dist/config/paths.js +2 -0
  16. package/dist/config/paths.js.map +1 -1
  17. package/dist/config/schema.d.ts +29 -1
  18. package/dist/config/schema.d.ts.map +1 -1
  19. package/dist/core/bootstrap.d.ts.map +1 -1
  20. package/dist/core/bootstrap.js +10 -0
  21. package/dist/core/bootstrap.js.map +1 -1
  22. package/dist/dashboard/api-routes.d.ts.map +1 -1
  23. package/dist/dashboard/api-routes.js +114 -50
  24. package/dist/dashboard/api-routes.js.map +1 -1
  25. package/dist/dashboard/page.d.ts.map +1 -1
  26. package/dist/dashboard/page.js +132 -69
  27. package/dist/dashboard/page.js.map +1 -1
  28. package/dist/dlp/ai-validator.d.ts +5 -2
  29. package/dist/dlp/ai-validator.d.ts.map +1 -1
  30. package/dist/dlp/ai-validator.js +20 -2
  31. package/dist/dlp/ai-validator.js.map +1 -1
  32. package/dist/dlp/heuristic-validator.d.ts +24 -0
  33. package/dist/dlp/heuristic-validator.d.ts.map +1 -0
  34. package/dist/dlp/heuristic-validator.js +97 -0
  35. package/dist/dlp/heuristic-validator.js.map +1 -0
  36. package/dist/plugin-api/index.d.ts +1 -1
  37. package/dist/plugin-api/index.d.ts.map +1 -1
  38. package/dist/plugin-api/index.js.map +1 -1
  39. package/dist/plugin-api/types.d.ts +19 -0
  40. package/dist/plugin-api/types.d.ts.map +1 -1
  41. package/dist/plugins/builtin/audit-logger.js +1 -1
  42. package/dist/plugins/builtin/dlp-scanner.d.ts +2 -0
  43. package/dist/plugins/builtin/dlp-scanner.d.ts.map +1 -1
  44. package/dist/plugins/builtin/dlp-scanner.js +9 -3
  45. package/dist/plugins/builtin/dlp-scanner.js.map +1 -1
  46. package/dist/plugins/builtin/metrics-collector.js +1 -1
  47. package/dist/plugins/builtin/metrics-collector.js.map +1 -1
  48. package/dist/plugins/builtin/threat-scorer.d.ts +6 -0
  49. package/dist/plugins/builtin/threat-scorer.d.ts.map +1 -0
  50. package/dist/plugins/builtin/threat-scorer.js +266 -0
  51. package/dist/plugins/builtin/threat-scorer.js.map +1 -0
  52. package/dist/plugins/builtin/token-optimizer.js +1 -1
  53. package/dist/plugins/builtin/tool-guard.d.ts.map +1 -1
  54. package/dist/plugins/builtin/tool-guard.js +18 -5
  55. package/dist/plugins/builtin/tool-guard.js.map +1 -1
  56. package/dist/plugins/loader.d.ts.map +1 -1
  57. package/dist/plugins/loader.js +22 -5
  58. package/dist/plugins/loader.js.map +1 -1
  59. package/dist/plugins/types.d.ts +3 -0
  60. package/dist/plugins/types.d.ts.map +1 -1
  61. package/dist/storage/migrations.d.ts.map +1 -1
  62. package/dist/storage/migrations.js +43 -0
  63. package/dist/storage/migrations.js.map +1 -1
  64. package/dist/storage/repositories/taint-marks.d.ts +26 -0
  65. package/dist/storage/repositories/taint-marks.d.ts.map +1 -0
  66. package/dist/storage/repositories/taint-marks.js +27 -0
  67. package/dist/storage/repositories/taint-marks.js.map +1 -0
  68. package/dist/storage/repositories/threat-score-events.d.ts +27 -0
  69. package/dist/storage/repositories/threat-score-events.d.ts.map +1 -0
  70. package/dist/storage/repositories/threat-score-events.js +24 -0
  71. package/dist/storage/repositories/threat-score-events.js.map +1 -0
  72. package/dist/storage/repositories/threat-scores.d.ts +26 -0
  73. package/dist/storage/repositories/threat-scores.d.ts.map +1 -0
  74. package/dist/storage/repositories/threat-scores.js +42 -0
  75. package/dist/storage/repositories/threat-scores.js.map +1 -0
  76. package/dist/storage/repositories/tool-chain-detections.d.ts +24 -0
  77. package/dist/storage/repositories/tool-chain-detections.d.ts.map +1 -0
  78. package/dist/storage/repositories/tool-chain-detections.js +27 -0
  79. package/dist/storage/repositories/tool-chain-detections.js.map +1 -0
  80. package/dist/tool-guard/chain-detector.d.ts +18 -0
  81. package/dist/tool-guard/chain-detector.d.ts.map +1 -0
  82. package/dist/tool-guard/chain-detector.js +55 -0
  83. package/dist/tool-guard/chain-detector.js.map +1 -0
  84. package/dist/tool-guard/chain-rules.d.ts +10 -0
  85. package/dist/tool-guard/chain-rules.d.ts.map +1 -0
  86. package/dist/tool-guard/chain-rules.js +30 -0
  87. package/dist/tool-guard/chain-rules.js.map +1 -0
  88. package/dist/tool-guard/taint-tracker.d.ts +24 -0
  89. package/dist/tool-guard/taint-tracker.d.ts.map +1 -0
  90. package/dist/tool-guard/taint-tracker.js +70 -0
  91. package/dist/tool-guard/taint-tracker.js.map +1 -0
  92. package/integration/openclaw-docker/fix-issues/not-install-brew/Dockerfile.patch +31 -0
  93. package/integration/openclaw-docker/fix-issues/not-install-brew/docker-setup.sh.patch +33 -0
  94. package/package.json +1 -1
  95. package/dist/license/verify.d.ts +0 -18
  96. package/dist/license/verify.d.ts.map +0 -1
  97. package/dist/license/verify.js +0 -71
  98. package/dist/license/verify.js.map +0 -1
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
- # macOS / Linux
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. Installs to `~/.bastion/app/`.
43
+ Requires Node.js 22 LTS (recommended). Node.js 18+ supported.
41
44
 
42
45
  ## Quick Start
43
46
 
@@ -101,6 +104,15 @@ Monitors and blocks dangerous tool calls made by AI agents in real-time. Interce
101
104
 
102
105
  Action modes: `audit` (log and alert) or `block` (intercept in real-time, including streaming responses). Desktop notifications and webhook alerts (Slack, Discord) for high-severity matches.
103
106
 
107
+ ### 🔍 Threat Intelligence
108
+
109
+ Session-level threat scoring with multi-signal correlation. Aggregates events from DLP, Tool Guard, and Prompt Injection detection into a unified threat score per session.
110
+
111
+ - **Chain detection** — detects multi-step attack patterns (e.g., credential access followed by network exfiltration)
112
+ - **Taint tracking** — tracks sensitive data fingerprints across tool calls to detect data flow violations
113
+ - **Threat levels** — normal / elevated / high / critical with exponential decay scoring
114
+ - **3 built-in chain rules** — credential→exfil, execution→destruction, credential→publish
115
+
104
116
  ### 📝 Audit Logger
105
117
 
106
118
  Full request/response history for every AI interaction, encrypted at rest. Session-based timeline with DLP and Tool Guard tags. Any security event automatically creates an audit entry — even if the audit plugin is disabled.
@@ -113,11 +125,11 @@ Configurable retention with automatic purge. Formatted viewer in the dashboard f
113
125
 
114
126
  Real-time security dashboard at `http://127.0.0.1:8420/dashboard`:
115
127
 
116
- - **Overview** — Request metrics, cost, tokens, per-provider/model/session breakdown
128
+ - **Overview** — Request metrics, cost, tokens, per-provider/model/session breakdown, threat gauge
117
129
  - **DLP** — Findings, config, signature management, standalone test scanner with trace log
118
- - **Tool Guard** — Tool call history, severity, rule management (built-in + custom)
130
+ - **Tool Guard** — Tool call history, severity, rule management (built-in + custom), threat sessions, chain detections
119
131
  - **Audit** — Session timeline, security-tagged entries, formatted request/response viewer
120
- - **Settings** — Toggle plugins, configure rules — all changes apply without restart
132
+ - **Settings** — Toggle plugins, optional features management — all changes apply without restart
121
133
 
122
134
  ## How It Works
123
135
 
@@ -149,6 +161,36 @@ bastion openclaw docker attach <container-name> # Existing container
149
161
 
150
162
  See [OpenClaw Docker Guide](docs/openclaw-docker.md) | [Local Guide](docs/openclaw-local.md)
151
163
 
164
+ #### OpenClaw Skills
165
+
166
+ 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.
167
+
168
+ ```bash
169
+ openclaw skill install @aion0/bastion-skills
170
+ ```
171
+
172
+ 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`:
173
+
174
+ ```bash
175
+ bash ~/.openclaw/skills/bastion/scripts/docker-setup.sh
176
+ ```
177
+
178
+ See [@aion0/bastion-skills on GitHub](https://github.com/aiwatching/bastion-skills)
179
+
180
+ ## Optional Plugins
181
+
182
+ Bastion's core detection is fully free. For ML-based detection with heavier dependencies (ONNX Runtime, ~436 MB models), install the optional plugin pack:
183
+
184
+ ```bash
185
+ bastion plugins install # auto-detects sibling bastion-plugin-api
186
+ bastion plugins list # show installed plugins
187
+ bastion plugins uninstall # remove (prompts to also delete models)
188
+ ```
189
+
190
+ Or via the Dashboard → Settings → Optional Features.
191
+
192
+ See [@aiwatching/bastion-pro](https://github.com/aiwatching/bastion-plugin-api) for details.
193
+
152
194
  ## Documentation
153
195
 
154
196
  | Doc | Description |
@@ -172,6 +214,7 @@ Everything stays on your machine in `~/.bastion/`:
172
214
  config.yaml # Your config overrides
173
215
  ca.key / ca.crt / certs/ # Local CA & certificates
174
216
  .key # AES encryption key for audit data
217
+ models/ # ML models (optional, ~436 MB if plugins installed)
175
218
  ```
176
219
 
177
220
  ## Contributing
package/README.zh.md CHANGED
@@ -13,31 +13,18 @@
13
13
 
14
14
  ## 安装
15
15
 
16
- ### macOS / Linux
17
-
18
- ```bash
19
- curl -fsSL https://raw.githubusercontent.com/aiwatching/bastion/main/install.sh | bash
20
- ```
21
-
22
- 或从本地源码安装:
23
-
24
16
  ```bash
25
- cd bastion && bash install.sh
26
- ```
17
+ # npm(推荐)
18
+ npm install -g @aion0/bastion
27
19
 
28
- ### Windows (PowerShell)
20
+ # macOS / Linux(从源码安装)
21
+ curl -fsSL https://raw.githubusercontent.com/aiwatching/bastion/main/install.sh | bash
29
22
 
30
- ```powershell
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`
@@ -204,12 +207,12 @@ bastion trust-ca
204
207
  网关运行时,在浏览器中打开 `http://127.0.0.1:8420/dashboard`。
205
208
 
206
209
  6 个标签页:
207
- - **Overview** — 请求指标、费用、token 数、按提供商/模型/会话分类的统计
210
+ - **Overview** — 请求指标、费用、token 数、按提供商/模型/会话分类的统计、威胁仪表盘
208
211
  - **DLP** — 子标签:Findings(方向、片段、钻取至审计记录)、Config(引擎开关、动作模式、AI 验证、语义规则)、Signatures(远程同步状态、版本追踪、变更日志、模式管理)、Test(独立扫描器,含预设、trace 日志)
209
- - **Tool Guard** — 子标签:Calls(最近工具调用历史,含严重级别、规则匹配、执行动作)、Rules(26 条内置规则 + 自定义规则管理,可逐条启用/禁用)
212
+ - **Tool Guard** — 子标签:Calls(最近工具调用历史,含严重级别、规则匹配、执行动作)、Rules(26 条内置规则 + 自定义规则管理,可逐条启用/禁用)、威胁会话、链式检测
210
213
  - **Optimizer** — 缓存命中率、节省的 token 数
211
214
  - **Audit** — 基于会话的时间线、DLP/Tool Guard 标记条目、摘要预览、格式化请求/响应查看器
212
- - **Settings** — 切换 plugin、配置 AI 验证、语义规则,运行时修改无需重启
215
+ - **Settings** — 切换 plugin、可选功能管理,运行时修改无需重启
213
216
 
214
217
  ## 工作原理
215
218
 
@@ -326,6 +329,14 @@ plugins:
326
329
  - **响应缓存** — 对相同请求进行精确匹配缓存(AES-256-GCM 加密)
327
330
  - **空白压缩** — 折叠多余空白以节省 token
328
331
 
332
+ ### 威胁情报
333
+ 会话级威胁评分,多信号关联分析。聚合 DLP、Tool Guard、Prompt Injection 检测事件,为每个会话生成统一威胁分数。
334
+
335
+ - **链式检测** — 检测多步攻击模式(如凭证访问后跟网络外泄)
336
+ - **污点追踪** — 跟踪敏感数据指纹在工具调用间的流动,检测数据流违规
337
+ - **威胁等级** — normal / elevated / high / critical,指数衰减评分
338
+ - **3 条内置链式规则** — 凭证→外泄、执行→破坏、凭证→发布
339
+
329
340
  ### Audit Logger
330
341
  存储请求/响应内容(静态加密)以供在 Dashboard 中查看。可配置保留期限,自动清理。即使此 plugin 未启用,DLP 命中也会自动记录审计日志。
331
342
 
@@ -440,6 +451,20 @@ BASTION_LOG_LEVEL=debug bastion start
440
451
  | `GET` | `/api/config` | Current configuration + plugin status |
441
452
  | `PUT` | `/api/config` | Update configuration at runtime |
442
453
 
454
+ ## 可选插件
455
+
456
+ Bastion 核心检测能力完全免费。如需基于 ML 的检测(ONNX Runtime,~436 MB 模型),可安装可选插件包:
457
+
458
+ ```bash
459
+ bastion plugins install # 自动检测同级 bastion-plugin-api 目录
460
+ bastion plugins list # 查看已安装插件
461
+ bastion plugins uninstall # 卸载(会提示是否同时删除模型文件)
462
+ ```
463
+
464
+ 也可通过 Dashboard → Settings → Optional Features 管理。
465
+
466
+ 详见 [@aiwatching/bastion-pro](https://github.com/aiwatching/bastion-plugin-api)。
467
+
443
468
  ## 文档
444
469
 
445
470
  - [DLP 引擎架构](docs/dlp.zh.md) — 5 层检测管线详解
@@ -465,4 +490,5 @@ BASTION_LOG_LEVEL=debug bastion start
465
490
  .key # AES encryption key for cache & audit
466
491
  bastion.pid # Daemon PID file
467
492
  bastion.log # Daemon log file
493
+ models/ # ML 模型(可选,安装插件后 ~436 MB)
468
494
  ```
@@ -69,5 +69,5 @@ retention:
69
69
  pluginEventsHours: 720
70
70
 
71
71
  timeouts:
72
- upstream: 120000
73
- plugin: 50
72
+ upstream: 120000 # ms — max wait for upstream LLM response
73
+ plugin: 500 # ms — per-plugin onRequest timeout (onResponse: x100, onResponseComplete: x10)
@@ -0,0 +1,3 @@
1
+ import { type Command } from 'commander';
2
+ export declare function registerPluginsCommand(program: Command): void;
3
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,201 @@
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.registerPluginsCommand = registerPluginsCommand;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = require("node:path");
9
+ const node_os_1 = require("node:os");
10
+ const node_child_process_1 = require("node:child_process");
11
+ const node_readline_1 = require("node:readline");
12
+ const js_yaml_1 = __importDefault(require("js-yaml"));
13
+ const BASTION_DIR = (0, node_path_1.join)((0, node_os_1.homedir)(), '.bastion');
14
+ const CONFIG_PATH = (0, node_path_1.join)(BASTION_DIR, 'config.yaml');
15
+ const MODELS_DIR = (0, node_path_1.join)(BASTION_DIR, 'models');
16
+ function ask(question) {
17
+ const rl = (0, node_readline_1.createInterface)({ input: process.stdin, output: process.stdout });
18
+ return new Promise((resolve) => {
19
+ rl.question(question, (answer) => { rl.close(); resolve(answer.trim().toLowerCase()); });
20
+ });
21
+ }
22
+ function dirSize(dir) {
23
+ let total = 0;
24
+ try {
25
+ for (const entry of (0, node_fs_1.readdirSync)(dir, { recursive: true })) {
26
+ try {
27
+ const st = (0, node_fs_1.statSync)((0, node_path_1.join)(dir, entry));
28
+ if (st.isFile())
29
+ total += st.size;
30
+ }
31
+ catch { /* skip */ }
32
+ }
33
+ }
34
+ catch {
35
+ return '0 MB';
36
+ }
37
+ if (total > 1024 * 1024 * 1024)
38
+ return `${(total / 1024 / 1024 / 1024).toFixed(1)} GB`;
39
+ return `${(total / 1024 / 1024).toFixed(0)} MB`;
40
+ }
41
+ function loadConfig() {
42
+ try {
43
+ const raw = (0, node_fs_1.readFileSync)(CONFIG_PATH, 'utf-8');
44
+ return js_yaml_1.default.load(raw) ?? {};
45
+ }
46
+ catch {
47
+ return {};
48
+ }
49
+ }
50
+ function saveConfig(config) {
51
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(CONFIG_PATH), { recursive: true });
52
+ (0, node_fs_1.writeFileSync)(CONFIG_PATH, js_yaml_1.default.dump(config), 'utf-8');
53
+ }
54
+ function getExternalPlugins(config) {
55
+ const plugins = config.plugins;
56
+ return plugins?.external ?? [];
57
+ }
58
+ function registerPluginsCommand(program) {
59
+ const cmd = program
60
+ .command('plugins')
61
+ .description('Manage optional plugins');
62
+ cmd
63
+ .command('list')
64
+ .description('List installed external plugins')
65
+ .action(() => {
66
+ const config = loadConfig();
67
+ const entries = getExternalPlugins(config);
68
+ if (entries.length === 0) {
69
+ console.log('No external plugins installed.');
70
+ console.log('\nInstall optional plugins:');
71
+ console.log(' bastion plugins install (from sibling bastion-plugin-api directory)');
72
+ return;
73
+ }
74
+ console.log('External plugins:\n');
75
+ for (const entry of entries) {
76
+ const status = entry.enabled ? '\x1b[32mENABLED\x1b[0m' : '\x1b[33mDISABLED\x1b[0m';
77
+ const exists = (0, node_fs_1.existsSync)(entry.package);
78
+ const dir = exists ? '' : ' \x1b[31m(directory missing)\x1b[0m';
79
+ console.log(` ${entry.package} [${status}]${dir}`);
80
+ }
81
+ });
82
+ cmd
83
+ .command('install')
84
+ .description('Install optional plugin pack')
85
+ .argument('[path]', 'Path to plugin source directory')
86
+ .action((sourcePath) => {
87
+ // Resolve plugin source directory
88
+ let pluginSource = sourcePath;
89
+ if (!pluginSource) {
90
+ // Try ../bastion-plugin-api relative to CWD
91
+ const candidate = (0, node_path_1.join)(process.cwd(), '..', 'bastion-plugin-api');
92
+ if ((0, node_fs_1.existsSync)((0, node_path_1.join)(candidate, 'package.json'))) {
93
+ pluginSource = candidate;
94
+ }
95
+ }
96
+ if (!pluginSource || !(0, node_fs_1.existsSync)((0, node_path_1.join)(pluginSource, 'package.json'))) {
97
+ console.error('Cannot find plugin source directory.');
98
+ console.error('Usage: bastion plugins install [path-to-bastion-plugin-api]');
99
+ console.error(' Or run from the bastion directory (auto-detects sibling bastion-plugin-api)');
100
+ process.exit(1);
101
+ }
102
+ // Determine install dir (where bastion is installed)
103
+ const appDir = (0, node_path_1.join)(BASTION_DIR, 'app');
104
+ if (!(0, node_fs_1.existsSync)((0, node_path_1.join)(appDir, 'package.json'))) {
105
+ console.error(`Bastion app not found at ${appDir}. Run install.sh first.`);
106
+ process.exit(1);
107
+ }
108
+ const pluginsDest = (0, node_path_1.join)(appDir, 'plugins', 'bastion-pro');
109
+ const pluginApiDir = (0, node_path_1.join)(appDir, 'packages', 'bastion-plugin-api');
110
+ console.log(`Installing optional plugins from: ${pluginSource}`);
111
+ // Copy source (exclude node_modules, .git, dist)
112
+ (0, node_fs_1.mkdirSync)(pluginsDest, { recursive: true });
113
+ // Use rsync if available, fallback to cpSync
114
+ try {
115
+ (0, node_child_process_1.execSync)(`rsync -a --exclude node_modules --exclude .git --exclude dist "${pluginSource}/" "${pluginsDest}/"`, { stdio: 'pipe' });
116
+ }
117
+ catch {
118
+ // Fallback: remove and copy
119
+ (0, node_fs_1.rmSync)(pluginsDest, { recursive: true, force: true });
120
+ (0, node_fs_1.cpSync)(pluginSource, pluginsDest, { recursive: true, filter: (src) => !src.includes('node_modules') && !src.includes('.git') });
121
+ }
122
+ // Rewrite @aiwatching/bastion-plugin-api to file: path
123
+ const pkgPath = (0, node_path_1.join)(pluginsDest, 'package.json');
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}`;
128
+ (0, node_fs_1.writeFileSync)(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
129
+ console.log(`Rewrote plugin-api path to: file:${relPath}`);
130
+ }
131
+ // npm install + build
132
+ console.log('Installing dependencies...');
133
+ (0, node_child_process_1.execSync)('npm install', { cwd: pluginsDest, stdio: 'pipe' });
134
+ console.log('Building...');
135
+ (0, node_child_process_1.execSync)('npm run build', { cwd: pluginsDest, stdio: 'pipe' });
136
+ // Update config.yaml
137
+ const config = loadConfig();
138
+ const plugins = (config.plugins ?? {});
139
+ const entries = plugins.external ?? [];
140
+ const alreadyConfigured = entries.some(e => e.package.includes('bastion-pro'));
141
+ if (!alreadyConfigured) {
142
+ entries.push({ package: pluginsDest, enabled: true });
143
+ plugins.external = entries;
144
+ config.plugins = plugins;
145
+ saveConfig(config);
146
+ console.log('Added to config.yaml');
147
+ }
148
+ else {
149
+ console.log('Plugin already configured in config.yaml');
150
+ }
151
+ console.log('\nOptional plugins installed. Restart Bastion to apply.');
152
+ });
153
+ cmd
154
+ .command('uninstall')
155
+ .description('Uninstall an optional plugin')
156
+ .argument('[name]', 'Plugin directory name (default: bastion-pro)', 'bastion-pro')
157
+ .option('--all', 'Remove everything including downloaded models')
158
+ .action(async (name, opts) => {
159
+ const config = loadConfig();
160
+ const entries = getExternalPlugins(config);
161
+ // Find matching entry
162
+ const match = entries.find(e => e.package.includes(name));
163
+ if (!match) {
164
+ console.error(`No external plugin matching "${name}" found in config.`);
165
+ process.exit(1);
166
+ }
167
+ // Remove plugin directory
168
+ const pluginDir = match.package;
169
+ if ((0, node_fs_1.existsSync)(pluginDir)) {
170
+ (0, node_fs_1.rmSync)(pluginDir, { recursive: true, force: true });
171
+ console.log(`Removed: ${pluginDir}`);
172
+ }
173
+ else {
174
+ console.log(`Directory not found (already removed): ${pluginDir}`);
175
+ }
176
+ // Update config
177
+ const plugins = config.plugins;
178
+ plugins.external = entries.filter(e => e !== match);
179
+ saveConfig(config);
180
+ console.log('Updated config.yaml');
181
+ // Handle models cleanup
182
+ const hasModels = (0, node_fs_1.existsSync)(MODELS_DIR) && (0, node_fs_1.readdirSync)(MODELS_DIR).filter(f => !f.startsWith('.')).length > 0;
183
+ if (hasModels) {
184
+ let removeModels = opts.all ?? false;
185
+ if (!removeModels) {
186
+ const size = dirSize(MODELS_DIR);
187
+ const answer = await ask(`\nAlso remove downloaded models (~${size} in ${MODELS_DIR})? [y/N] `);
188
+ removeModels = answer === 'y' || answer === 'yes';
189
+ }
190
+ if (removeModels) {
191
+ (0, node_fs_1.rmSync)(MODELS_DIR, { recursive: true, force: true });
192
+ console.log(`Removed: ${MODELS_DIR}`);
193
+ }
194
+ else {
195
+ console.log(`Models kept at: ${MODELS_DIR}`);
196
+ }
197
+ }
198
+ console.log('\nPlugin uninstalled. Restart Bastion to apply.');
199
+ });
200
+ }
201
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/cli/commands/plugins.ts"],"names":[],"mappings":";;;;;AA0DA,wDA0JC;AAnND,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,EAAE,aAAa,CAAC,CAAC;QAC3D,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,uDAAuD;QACvD,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,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC,gCAAgC,CAAC,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,IAAA,oBAAQ,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YACpD,GAAG,CAAC,YAAY,CAAC,gCAAgC,CAAC,GAAG,QAAQ,OAAO,EAAE,CAAC;YACvE,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,aAAa,CAAC,CAAC,CAAC;QAC/E,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,8CAA8C,EAAE,aAAa,CAAC;SACjF,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,WAAW,CAAC;AAIjD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuD3D"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwC3D"}
@@ -1,11 +1,6 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.registerStartCommand = registerStartCommand;
7
- const node_crypto_1 = __importDefault(require("node:crypto"));
8
- const commander_1 = require("commander");
9
4
  const daemon_js_1 = require("../daemon.js");
10
5
  const version_js_1 = require("../../version.js");
11
6
  function registerStartCommand(program) {
@@ -14,23 +9,10 @@ function registerStartCommand(program) {
14
9
  .description('Start the Bastion AI Gateway')
15
10
  .option('--foreground', 'Run in foreground (no daemon)')
16
11
  .option('-p, --port <port>', 'Override port')
17
- .addOption(new commander_1.Option('--dev').default(false).hideHelp())
18
12
  .action(async (options) => {
19
13
  if (options.port) {
20
14
  process.env.BASTION_PORT = options.port;
21
15
  }
22
- // --dev only works with --foreground
23
- if (options.dev && !options.foreground) {
24
- console.error('--dev requires --foreground');
25
- process.exit(1);
26
- }
27
- if (options.dev) {
28
- process.env.BASTION_DEV = '1';
29
- const devToken = node_crypto_1.default.randomBytes(16).toString('hex');
30
- process.env.BASTION_DEV_TOKEN = devToken;
31
- console.log(`\n Dev token: ${devToken}`);
32
- console.log(' Enter this token in Dashboard → Settings → Pro Features to unlock all features\n');
33
- }
34
16
  if (options.foreground) {
35
17
  // Import and run server directly
36
18
  const { startGateway } = await import('../../index.js');
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":";;;;;AAKA,oDAuDC;AA5DD,8DAAiC;AACjC,yCAAiD;AACjD,4CAA4D;AAC5D,iDAA8C;AAE9C,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,cAAc,EAAE,+BAA+B,CAAC;SACvD,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC;SAC5C,SAAS,CAAC,IAAI,kBAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1C,CAAC;QAED,qCAAqC;QACrC,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;YAC9B,MAAM,QAAQ,GAAG,qBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,QAAQ,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,iCAAiC;YACjC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACxD,MAAM,YAAY,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,MAAM,MAAM,GAAG,IAAA,2BAAe,GAAE,CAAC;QACjC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,oCAAoC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,uBAAU,GAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAA,uBAAW,GAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,kBAAkB,GAAG,GAAG,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":";;AAIA,oDAwCC;AA3CD,4CAA4D;AAC5D,iDAA8C;AAE9C,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,cAAc,EAAE,+BAA+B,CAAC;SACvD,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC;SAC5C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1C,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,iCAAiC;YACjC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACxD,MAAM,YAAY,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,MAAM,MAAM,GAAG,IAAA,2BAAe,GAAE,CAAC;QACjC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,oCAAoC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,uBAAU,GAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAA,uBAAW,GAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,kBAAkB,GAAG,GAAG,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACP,CAAC"}
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 plugins_js_1 = require("./commands/plugins.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, plugins_js_1.registerPluginsCommand)(program);
34
36
  program.parse();
35
37
  //# sourceMappingURL=index.js.map
@@ -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;AAE9B,OAAO,CAAC,KAAK,EAAE,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,sDAA+D;AAC/D,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,mCAAsB,EAAC,OAAO,CAAC,CAAC;AAEhC,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -6,5 +6,7 @@ export declare const paths: {
6
6
  pidFile: string;
7
7
  logFile: string;
8
8
  signaturesDir: string;
9
+ pluginsDir: string;
10
+ modelsDir: string;
9
11
  };
10
12
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK;;;;;;;;CAQjB,CAAC"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK;;;;;;;;;;CAUjB,CAAC"}
@@ -12,5 +12,7 @@ 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
+ pluginsDir: (0, node_path_1.join)(BASTION_DIR, 'plugins'),
16
+ modelsDir: (0, node_path_1.join)(BASTION_DIR, 'models'),
15
17
  };
16
18
  //# sourceMappingURL=paths.js.map
@@ -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;CAC/C,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,UAAU,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,SAAS,CAAC;IACxC,SAAS,EAAE,IAAA,gBAAI,EAAC,WAAW,EAAE,QAAQ,CAAC;CACvC,CAAC"}
@@ -29,7 +29,7 @@ export interface BastionConfig {
29
29
  };
30
30
  aiValidation: {
31
31
  enabled: boolean;
32
- provider: 'anthropic' | 'openai';
32
+ provider: 'anthropic' | 'openai' | 'local';
33
33
  model: string;
34
34
  apiKey: string;
35
35
  timeoutMs: number;
@@ -62,6 +62,34 @@ export interface BastionConfig {
62
62
  alertDesktop: boolean;
63
63
  alertWebhookUrl: string;
64
64
  };
65
+ threatIntelligence?: {
66
+ enabled: boolean;
67
+ scoring?: {
68
+ piWeight?: number;
69
+ dlpWeight?: number;
70
+ toolGuardWeights?: {
71
+ critical?: number;
72
+ high?: number;
73
+ medium?: number;
74
+ low?: number;
75
+ };
76
+ toolChainWeight?: number;
77
+ decayPerMinute?: number;
78
+ };
79
+ thresholds?: {
80
+ elevated?: number;
81
+ high?: number;
82
+ critical?: number;
83
+ };
84
+ toolChain?: {
85
+ enabled?: boolean;
86
+ maxWindowSize?: number;
87
+ };
88
+ taintTracking?: {
89
+ enabled?: boolean;
90
+ ttlMinutes?: number;
91
+ };
92
+ };
65
93
  external?: Array<{
66
94
  package: string;
67
95
  enabled: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
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,CAiLpF"}
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;AA0BzD,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,CA2LpF"}