@zhin.js/agent 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/lib/agent-prompt/resolver.d.ts.map +1 -1
  2. package/lib/agent-prompt/resolver.js.map +1 -1
  3. package/lib/assistant/home-mcp-bridge.d.ts +1 -1
  4. package/lib/assistant/home-mcp-bridge.d.ts.map +1 -1
  5. package/lib/builtin/knowledge-search-tool.d.ts +6 -0
  6. package/lib/builtin/knowledge-search-tool.d.ts.map +1 -0
  7. package/lib/builtin/knowledge-search-tool.js +184 -0
  8. package/lib/builtin/knowledge-search-tool.js.map +1 -0
  9. package/lib/builtin/orchestration-tools.d.ts +2 -1
  10. package/lib/builtin/orchestration-tools.d.ts.map +1 -1
  11. package/lib/builtin/orchestration-tools.js.map +1 -1
  12. package/lib/builtin/run-spec-dry-run-tool.d.ts +1 -4
  13. package/lib/builtin/run-spec-dry-run-tool.d.ts.map +1 -1
  14. package/lib/builtin/run-spec-dry-run-tool.js.map +1 -1
  15. package/lib/builtin/run-validation-spec-tool.d.ts +1 -4
  16. package/lib/builtin/run-validation-spec-tool.d.ts.map +1 -1
  17. package/lib/builtin/run-validation-spec-tool.js.map +1 -1
  18. package/lib/builtin/spawn-task-tool.d.ts +2 -1
  19. package/lib/builtin/spawn-task-tool.d.ts.map +1 -1
  20. package/lib/builtin/spawn-task-tool.js.map +1 -1
  21. package/lib/builtin/web-fetch-tool.d.ts +2 -0
  22. package/lib/builtin/web-fetch-tool.d.ts.map +1 -1
  23. package/lib/builtin/web-fetch-tool.js +53 -8
  24. package/lib/builtin/web-fetch-tool.js.map +1 -1
  25. package/lib/builtin-tools.d.ts +2 -0
  26. package/lib/builtin-tools.d.ts.map +1 -1
  27. package/lib/builtin-tools.js +4 -0
  28. package/lib/builtin-tools.js.map +1 -1
  29. package/lib/config/fix-ai-config.d.ts +1 -1
  30. package/lib/config/fix-ai-config.d.ts.map +1 -1
  31. package/lib/config/normalize-ai-config.d.ts +1 -1
  32. package/lib/config/normalize-ai-config.d.ts.map +1 -1
  33. package/lib/config/provider-instance.d.ts +1 -1
  34. package/lib/config/provider-instance.d.ts.map +1 -1
  35. package/lib/config/provider-instance.js +1 -1
  36. package/lib/config/provider-instance.js.map +1 -1
  37. package/lib/config/types.d.ts +1 -1
  38. package/lib/config/types.d.ts.map +1 -1
  39. package/lib/create-agent-session.d.ts +1 -1
  40. package/lib/create-agent-session.d.ts.map +1 -1
  41. package/lib/deferred-worker-runner.d.ts +1 -1
  42. package/lib/deferred-worker-runner.d.ts.map +1 -1
  43. package/lib/index.d.ts +0 -18
  44. package/lib/index.d.ts.map +1 -1
  45. package/lib/index.js +0 -9
  46. package/lib/index.js.map +1 -1
  47. package/lib/init/activate-ai-database-storage.d.ts +1 -1
  48. package/lib/init/activate-ai-database-storage.d.ts.map +1 -1
  49. package/lib/init/activate-ai-database-storage.js +12 -8
  50. package/lib/init/activate-ai-database-storage.js.map +1 -1
  51. package/lib/init/create-zhin-agent.d.ts.map +1 -1
  52. package/lib/init/create-zhin-agent.js +18 -6
  53. package/lib/init/create-zhin-agent.js.map +1 -1
  54. package/lib/init/message-media.d.ts +2 -1
  55. package/lib/init/message-media.d.ts.map +1 -1
  56. package/lib/init/message-media.js.map +1 -1
  57. package/lib/init/register-builtin-tools.d.ts.map +1 -1
  58. package/lib/init/register-builtin-tools.js +6 -3
  59. package/lib/init/register-builtin-tools.js.map +1 -1
  60. package/lib/init/register-db-upgrade.js.map +1 -1
  61. package/lib/mcp-client/connection.d.ts.map +1 -1
  62. package/lib/mcp-client/connection.js +37 -1
  63. package/lib/mcp-client/connection.js.map +1 -1
  64. package/lib/orchestrator/agent-dispatcher.d.ts +1 -1
  65. package/lib/orchestrator/agent-dispatcher.d.ts.map +1 -1
  66. package/lib/orchestrator/remote-agent-registry.d.ts +1 -1
  67. package/lib/orchestrator/remote-agent-registry.d.ts.map +1 -1
  68. package/lib/routing/runtime-binding.d.ts +1 -1
  69. package/lib/routing/runtime-binding.d.ts.map +1 -1
  70. package/lib/security/audit-logger.d.ts +1 -0
  71. package/lib/security/audit-logger.d.ts.map +1 -1
  72. package/lib/security/audit-logger.js +12 -2
  73. package/lib/security/audit-logger.js.map +1 -1
  74. package/lib/security/dangerous-tool-policy.d.ts.map +1 -1
  75. package/lib/security/dangerous-tool-policy.js +4 -2
  76. package/lib/security/dangerous-tool-policy.js.map +1 -1
  77. package/lib/security/exec-policy.d.ts +1 -1
  78. package/lib/security/exec-policy.d.ts.map +1 -1
  79. package/lib/security/exec-policy.js +47 -0
  80. package/lib/security/exec-policy.js.map +1 -1
  81. package/lib/security/file-role-policy.js +1 -1
  82. package/lib/security/file-role-policy.js.map +1 -1
  83. package/lib/security/index.d.ts +2 -46
  84. package/lib/security/index.d.ts.map +1 -1
  85. package/lib/security/index.js +2 -67
  86. package/lib/security/index.js.map +1 -1
  87. package/lib/security/owner-approve-always-store.js +0 -1
  88. package/lib/security/owner-approve-always-store.js.map +1 -1
  89. package/lib/security/sandbox-docker.d.ts +28 -0
  90. package/lib/security/sandbox-docker.d.ts.map +1 -0
  91. package/lib/security/sandbox-docker.js +177 -0
  92. package/lib/security/sandbox-docker.js.map +1 -0
  93. package/lib/security/sandbox.d.ts +9 -0
  94. package/lib/security/sandbox.d.ts.map +1 -1
  95. package/lib/security/sandbox.js +215 -14
  96. package/lib/security/sandbox.js.map +1 -1
  97. package/lib/service.d.ts +4 -5
  98. package/lib/service.d.ts.map +1 -1
  99. package/lib/service.js +1 -8
  100. package/lib/service.js.map +1 -1
  101. package/lib/subagent.d.ts +7 -3
  102. package/lib/subagent.d.ts.map +1 -1
  103. package/lib/subagent.js +2 -2
  104. package/lib/subagent.js.map +1 -1
  105. package/lib/zhin-agent/builtin-tools.d.ts +1 -1
  106. package/lib/zhin-agent/builtin-tools.d.ts.map +1 -1
  107. package/lib/zhin-agent/config.d.ts +25 -0
  108. package/lib/zhin-agent/config.d.ts.map +1 -1
  109. package/lib/zhin-agent/config.js.map +1 -1
  110. package/lib/zhin-agent/index.d.ts +17 -16
  111. package/lib/zhin-agent/index.d.ts.map +1 -1
  112. package/lib/zhin-agent/index.js +76 -70
  113. package/lib/zhin-agent/index.js.map +1 -1
  114. package/lib/zhin-agent/interfaces.d.ts +63 -0
  115. package/lib/zhin-agent/interfaces.d.ts.map +1 -0
  116. package/lib/zhin-agent/interfaces.js +8 -0
  117. package/lib/zhin-agent/interfaces.js.map +1 -0
  118. package/lib/zhin-agent/prompt-assembly.d.ts +2 -2
  119. package/lib/zhin-agent/prompt-assembly.d.ts.map +1 -1
  120. package/lib/zhin-agent/prompt-assembly.js.map +1 -1
  121. package/lib/zhin-agent/prompt.d.ts +2 -2
  122. package/lib/zhin-agent/prompt.d.ts.map +1 -1
  123. package/lib/zhin-agent/prompt.js +22 -2
  124. package/lib/zhin-agent/prompt.js.map +1 -1
  125. package/lib/zhin-agent/session-io.d.ts +2 -2
  126. package/lib/zhin-agent/session-io.d.ts.map +1 -1
  127. package/lib/zhin-agent/session-io.js +2 -3
  128. package/lib/zhin-agent/session-io.js.map +1 -1
  129. package/lib/zhin-agent/task-continuation.d.ts +4 -4
  130. package/lib/zhin-agent/task-continuation.d.ts.map +1 -1
  131. package/lib/zhin-agent/task-continuation.js.map +1 -1
  132. package/package.json +4 -4
  133. package/lib/monitoring/index.d.ts +0 -79
  134. package/lib/monitoring/index.d.ts.map +0 -1
  135. package/lib/monitoring/index.js +0 -197
  136. package/lib/monitoring/index.js.map +0 -1
  137. package/lib/monitoring/metrics.d.ts +0 -260
  138. package/lib/monitoring/metrics.d.ts.map +0 -1
  139. package/lib/monitoring/metrics.js +0 -550
  140. package/lib/monitoring/metrics.js.map +0 -1
  141. package/lib/security/budget-limiter.d.ts +0 -161
  142. package/lib/security/budget-limiter.d.ts.map +0 -1
  143. package/lib/security/budget-limiter.js +0 -392
  144. package/lib/security/budget-limiter.js.map +0 -1
  145. package/lib/security/network-policy.d.ts +0 -98
  146. package/lib/security/network-policy.d.ts.map +0 -1
  147. package/lib/security/network-policy.js +0 -305
  148. package/lib/security/network-policy.js.map +0 -1
  149. package/lib/security/security-config.example.d.ts +0 -33
  150. package/lib/security/security-config.example.d.ts.map +0 -1
  151. package/lib/security/security-config.example.js +0 -166
  152. package/lib/security/security-config.example.js.map +0 -1
@@ -1,305 +0,0 @@
1
- /**
2
- * 网络访问安全策略
3
- *
4
- * 控制 AI Agent 的网络请求,防止:
5
- * - 访问恶意域名
6
- * - 数据外泄
7
- * - SSRF 攻击
8
- * - 资源滥用
9
- *
10
- */
11
- import { URL } from 'node:url';
12
- const DEFAULT_CONFIG = {
13
- enabled: true,
14
- blockPrivateIPs: true,
15
- maxRequestSize: 10 * 1024 * 1024, // 10 MB
16
- maxResponseSize: 50 * 1024 * 1024, // 50 MB
17
- requestTimeout: 30000, // 30 秒
18
- rateLimit: 100, // 每分钟 100 次
19
- blockedProtocols: ['file', 'ftp', 'gopher'],
20
- blockedPorts: [22, 23, 25, 465, 587, 1080, 3389, 5900],
21
- };
22
- // ── 私有 IP 检测 ──────────────────────────────────────────────────────
23
- const PRIVATE_IP_PATTERNS = [
24
- /^10\./, // 10.0.0.0/8
25
- /^172\.(1[6-9]|2[0-9]|3[0-1])\./, // 172.16.0.0/12
26
- /^192\.168\./, // 192.168.0.0/16
27
- /^127\./, // 127.0.0.0/8 (localhost)
28
- /^0\./, // 0.0.0.0
29
- /^::1$/, // IPv6 localhost
30
- /^fc00:/, // IPv6 private
31
- /^fd[0-9a-f]{2}:/, // IPv6 private
32
- /^fe80:/, // IPv6 link-local
33
- ];
34
- /**
35
- * 检查 IP 是否为私有地址
36
- */
37
- function isPrivateIP(ip) {
38
- return PRIVATE_IP_PATTERNS.some(pattern => pattern.test(ip));
39
- }
40
- // ── 常见危险域名模式 ──────────────────────────────────────────────────
41
- const SUSPICIOUS_DOMAIN_PATTERNS = [
42
- /\.tk$/i, // 免费域名,常用于钓鱼
43
- /\.ml$/i,
44
- /\.ga$/i,
45
- /\.cf$/i,
46
- /\.gq$/i,
47
- /pastebin\.com/i, // 代码分享,可能含恶意内容
48
- /hastebin\.com/i,
49
- /ngrok\.io/i, // 隧道服务
50
- /serveo\.net/i,
51
- /localtunnel\.me/i,
52
- ];
53
- // ── 速率限制器 ────────────────────────────────────────────────────────
54
- class RateLimiter {
55
- requests = new Map();
56
- /**
57
- * 检查是否超过速率限制
58
- * @returns true 表示超过限制
59
- */
60
- isLimited(key, limit, windowMs = 60000) {
61
- const now = Date.now();
62
- const windowStart = now - windowMs;
63
- // 获取或初始化请求记录
64
- let timestamps = this.requests.get(key) || [];
65
- // 清理过期记录
66
- timestamps = timestamps.filter(t => t > windowStart);
67
- // 检查是否超过限制
68
- if (timestamps.length >= limit) {
69
- return true;
70
- }
71
- // 记录本次请求
72
- timestamps.push(now);
73
- this.requests.set(key, timestamps);
74
- return false;
75
- }
76
- /**
77
- * 清理过期记录
78
- */
79
- cleanup() {
80
- const now = Date.now();
81
- for (const [key, timestamps] of this.requests.entries()) {
82
- const valid = timestamps.filter(t => t > now - 120000); // 保留 2 分钟内的记录
83
- if (valid.length === 0) {
84
- this.requests.delete(key);
85
- }
86
- else {
87
- this.requests.set(key, valid);
88
- }
89
- }
90
- }
91
- }
92
- // ── 网络策略类 ────────────────────────────────────────────────────────
93
- export class NetworkPolicy {
94
- config;
95
- rateLimiter;
96
- cleanupTimer;
97
- constructor(config = {}) {
98
- this.config = { ...DEFAULT_CONFIG, ...config };
99
- this.rateLimiter = new RateLimiter();
100
- // 定期清理速率限制器
101
- this.cleanupTimer = setInterval(() => this.rateLimiter.cleanup(), 60000);
102
- if (this.cleanupTimer && typeof this.cleanupTimer === 'object' && 'unref' in this.cleanupTimer) {
103
- this.cleanupTimer.unref();
104
- }
105
- }
106
- /**
107
- * 检查 URL 是否允许访问
108
- */
109
- checkUrl(url, userId) {
110
- if (!this.config.enabled) {
111
- return { allowed: true };
112
- }
113
- let parsed;
114
- try {
115
- parsed = new URL(url);
116
- }
117
- catch {
118
- return { allowed: false, reason: '无效的 URL 格式' };
119
- }
120
- // 1. 协议检查
121
- if (this.config.blockedProtocols?.includes(parsed.protocol.replace(':', ''))) {
122
- return {
123
- allowed: false,
124
- reason: `禁止的协议: ${parsed.protocol}`,
125
- sanitizedUrl: `${parsed.protocol}//***`,
126
- };
127
- }
128
- // 2. 端口检查
129
- const port = parsed.port ? parseInt(parsed.port, 10) : this.getDefaultPort(parsed.protocol);
130
- if (port && this.config.blockedPorts?.includes(port)) {
131
- return {
132
- allowed: false,
133
- reason: `禁止的端口: ${port}`,
134
- sanitizedUrl: `${parsed.protocol}//${parsed.hostname}:***`,
135
- };
136
- }
137
- // 3. 私有 IP 检查(在白名单检查之前)
138
- const hostname = parsed.hostname.toLowerCase();
139
- if (this.config.blockPrivateIPs && this.isPrivateIP(hostname)) {
140
- return {
141
- allowed: false,
142
- reason: '禁止访问私有 IP 地址',
143
- sanitizedUrl: `${parsed.protocol}//***`,
144
- };
145
- }
146
- // 4. 可疑域名检查(在白名单检查之前)
147
- if (this.isSuspiciousDomain(hostname)) {
148
- return {
149
- allowed: false,
150
- reason: `可疑域名: ${this.maskDomain(hostname)}`,
151
- sanitizedUrl: `${parsed.protocol}//${this.maskDomain(hostname)}`,
152
- };
153
- }
154
- // 5. 域名黑名单检查
155
- if (this.isBlockedDomain(hostname)) {
156
- return {
157
- allowed: false,
158
- reason: `域名在黑名单中: ${this.maskDomain(hostname)}`,
159
- sanitizedUrl: `${parsed.protocol}//${this.maskDomain(hostname)}`,
160
- };
161
- }
162
- // 6. 域名白名单检查
163
- if (this.config.allowedDomains && this.config.allowedDomains.length > 0) {
164
- if (!this.isAllowedDomain(hostname)) {
165
- return {
166
- allowed: false,
167
- reason: `域名不在白名单中: ${this.maskDomain(hostname)}`,
168
- sanitizedUrl: `${parsed.protocol}//${this.maskDomain(hostname)}`,
169
- };
170
- }
171
- }
172
- // 7. 速率限制检查
173
- const rateLimitKey = userId || hostname;
174
- if (this.config.rateLimit && this.rateLimiter.isLimited(rateLimitKey, this.config.rateLimit)) {
175
- return {
176
- allowed: false,
177
- reason: '请求过于频繁,请稍后再试',
178
- sanitizedUrl: `${parsed.protocol}//${this.maskDomain(hostname)}`,
179
- };
180
- }
181
- // 通过所有检查
182
- return {
183
- allowed: true,
184
- sanitizedUrl: `${parsed.protocol}//${this.maskDomain(hostname)}${parsed.pathname}`,
185
- };
186
- }
187
- /**
188
- * 检查域名是否在黑名单中
189
- */
190
- isBlockedDomain(domain) {
191
- if (!this.config.blockedDomains)
192
- return false;
193
- return this.config.blockedDomains.some(blocked => {
194
- // 支持通配符匹配
195
- if (blocked.startsWith('*.')) {
196
- const suffix = blocked.slice(1); // *.example.com -> .example.com
197
- return domain.endsWith(suffix) || domain === suffix.slice(1);
198
- }
199
- return domain === blocked || domain.endsWith(`.${blocked}`);
200
- });
201
- }
202
- /**
203
- * 检查域名是否在白名单中
204
- */
205
- isAllowedDomain(domain) {
206
- if (!this.config.allowedDomains || this.config.allowedDomains.length === 0) {
207
- return true; // 没有白名单则允许所有
208
- }
209
- return this.config.allowedDomains.some(allowed => {
210
- if (allowed.startsWith('*.')) {
211
- const suffix = allowed.slice(1);
212
- return domain.endsWith(suffix) || domain === suffix.slice(1);
213
- }
214
- return domain === allowed || domain.endsWith(`.${allowed}`);
215
- });
216
- }
217
- /**
218
- * 检查是否为可疑域名
219
- */
220
- isSuspiciousDomain(domain) {
221
- return SUSPICIOUS_DOMAIN_PATTERNS.some(pattern => pattern.test(domain));
222
- }
223
- /**
224
- * 检查是否为私有 IP
225
- */
226
- isPrivateIP(hostname) {
227
- // 简单的 IP 格式检查
228
- const ipPattern = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
229
- if (!ipPattern.test(hostname)) {
230
- // 可能是域名,需要解析(这里简化处理)
231
- return false;
232
- }
233
- return isPrivateIP(hostname);
234
- }
235
- /**
236
- * 获取默认端口
237
- */
238
- getDefaultPort(protocol) {
239
- const ports = {
240
- 'http:': 80,
241
- 'https:': 443,
242
- 'ftp:': 21,
243
- 'ssh:': 22,
244
- };
245
- return ports[protocol] || null;
246
- }
247
- /**
248
- * 脱敏域名
249
- */
250
- maskDomain(domain) {
251
- const parts = domain.split('.');
252
- if (parts.length <= 2) {
253
- return domain; // 顶级域名不脱敏
254
- }
255
- // 保留顶级域名,中间部分脱敏
256
- return `***.${parts.slice(-2).join('.')}`;
257
- }
258
- /**
259
- * 更新配置
260
- */
261
- updateConfig(config) {
262
- this.config = { ...this.config, ...config };
263
- }
264
- /**
265
- * 获取配置(脱敏)
266
- */
267
- getConfig() {
268
- return { ...this.config };
269
- }
270
- dispose() {
271
- if (this.cleanupTimer) {
272
- clearInterval(this.cleanupTimer);
273
- this.cleanupTimer = undefined;
274
- }
275
- }
276
- }
277
- // ── 全局网络策略实例 ──────────────────────────────────────────────────
278
- let globalNetworkPolicy = null;
279
- /**
280
- * 获取全局网络策略实例
281
- */
282
- export function getNetworkPolicy() {
283
- if (!globalNetworkPolicy) {
284
- globalNetworkPolicy = new NetworkPolicy();
285
- }
286
- return globalNetworkPolicy;
287
- }
288
- /**
289
- * 初始化网络策略
290
- */
291
- export function initNetworkPolicy(config) {
292
- globalNetworkPolicy = new NetworkPolicy(config);
293
- return globalNetworkPolicy;
294
- }
295
- /** 重置全局网络策略(用于测试隔离) */
296
- export function resetNetworkPolicy() {
297
- globalNetworkPolicy = null;
298
- }
299
- /**
300
- * 检查 URL 是否允许访问
301
- */
302
- export function checkNetworkAccess(url, userId) {
303
- return getNetworkPolicy().checkUrl(url, userId);
304
- }
305
- //# sourceMappingURL=network-policy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network-policy.js","sourceRoot":"","sources":["../../src/security/network-policy.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- /**
2
- * Agent 安全策略配置示例
3
- *
4
- * 展示如何配置所有安全策略。
5
- */
6
- import type { SecurityPolicyConfig } from './index.js';
7
- /**
8
- * 生产环境安全配置
9
- *
10
- * 严格的安全策略,适用于生产环境
11
- */
12
- export declare const PRODUCTION_SECURITY_CONFIG: SecurityPolicyConfig;
13
- /**
14
- * 开发环境安全配置
15
- *
16
- * 宽松的安全策略,适用于开发和测试
17
- */
18
- export declare const DEVELOPMENT_SECURITY_CONFIG: SecurityPolicyConfig;
19
- /**
20
- * 最小安全配置
21
- *
22
- * 仅启用基本安全检查,适用于受信任环境
23
- */
24
- export declare const MINIMAL_SECURITY_CONFIG: SecurityPolicyConfig;
25
- /**
26
- * 根据环境获取安全配置
27
- */
28
- export declare function getSecurityConfigForEnvironment(env?: string): SecurityPolicyConfig;
29
- /**
30
- * 合并自定义配置与默认配置
31
- */
32
- export declare function mergeSecurityConfig(base: SecurityPolicyConfig, custom: Partial<SecurityPolicyConfig>): SecurityPolicyConfig;
33
- //# sourceMappingURL=security-config.example.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security-config.example.d.ts","sourceRoot":"","sources":["../../src/security/security-config.example.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,oBA+DxC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,oBAgDzC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,oBAYrC,CAAC;AAEF;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAWlF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACpC,oBAAoB,CAMtB"}
@@ -1,166 +0,0 @@
1
- /**
2
- * Agent 安全策略配置示例
3
- *
4
- * 展示如何配置所有安全策略。
5
- */
6
- /**
7
- * 生产环境安全配置
8
- *
9
- * 严格的安全策略,适用于生产环境
10
- */
11
- export const PRODUCTION_SECURITY_CONFIG = {
12
- // 审计日志配置
13
- audit: {
14
- enabled: true,
15
- logFile: 'data/audit/agent-audit.log',
16
- minSeverity: 'info',
17
- logSensitiveData: false, // 生产环境不记录敏感数据
18
- retentionDays: 90, // 保留 90 天
19
- maxFileSizeMB: 200, // 最大 200MB
20
- },
21
- // 网络策略配置
22
- network: {
23
- enabled: true,
24
- // 允许访问的域名(白名单)
25
- allowedDomains: [
26
- 'api.openai.com',
27
- 'api.anthropic.com',
28
- 'api.ollama.ai',
29
- 'github.com',
30
- 'api.github.com',
31
- 'registry.npmjs.org',
32
- 'api.npmjs.org',
33
- ],
34
- // 禁止访问的域名(黑名单)
35
- blockedDomains: [
36
- '*.malware.com',
37
- '*.phishing.com',
38
- 'pastebin.com',
39
- 'hastebin.com',
40
- ],
41
- // 禁止私有 IP
42
- blockPrivateIPs: true,
43
- // 请求限制
44
- maxRequestSize: 5 * 1024 * 1024, // 5MB
45
- maxResponseSize: 20 * 1024 * 1024, // 20MB
46
- requestTimeout: 15000, // 15 秒
47
- rateLimit: 60, // 每分钟 60 次
48
- // 禁止的协议
49
- blockedProtocols: ['file', 'ftp', 'gopher', 'ssh'],
50
- // 禁止的端口
51
- blockedPorts: [22, 23, 25, 465, 587, 1080, 3306, 5432, 6379, 27017],
52
- },
53
- // 预算限制配置
54
- budget: {
55
- enabled: true,
56
- // Token 限制
57
- maxTokensPerSession: 500000, // 500K tokens
58
- maxTokensPerUserPerDay: 2000000, // 2M tokens
59
- // 成本限制
60
- maxCostPerSession: 5.0, // $5
61
- maxCostPerUserPerDay: 20.0, // $20
62
- // 调用限制
63
- maxToolCallsPerSession: 50,
64
- maxIterationsPerSession: 15,
65
- // 时长限制
66
- maxSessionDuration: 1800000, // 30 分钟
67
- // 警告阈值
68
- warningThreshold: 75, // 75%
69
- // 自动终止
70
- autoTerminate: true,
71
- },
72
- };
73
- /**
74
- * 开发环境安全配置
75
- *
76
- * 宽松的安全策略,适用于开发和测试
77
- */
78
- export const DEVELOPMENT_SECURITY_CONFIG = {
79
- audit: {
80
- enabled: true,
81
- logFile: 'data/audit/agent-audit-dev.log',
82
- minSeverity: 'warn', // 开发环境只记录警告及以上
83
- logSensitiveData: true, // 开发环境可以记录敏感数据
84
- retentionDays: 7, // 保留 7 天
85
- maxFileSizeMB: 50, // 最大 50MB
86
- },
87
- network: {
88
- enabled: true,
89
- // 开发环境允许更多域名
90
- allowedDomains: [
91
- 'api.openai.com',
92
- 'api.anthropic.com',
93
- 'api.ollama.ai',
94
- 'github.com',
95
- 'api.github.com',
96
- 'registry.npmjs.org',
97
- 'api.npmjs.org',
98
- 'localhost',
99
- '127.0.0.1',
100
- '*.dev',
101
- '*.test',
102
- '*.local',
103
- ],
104
- blockPrivateIPs: false, // 开发环境允许私有 IP
105
- maxRequestSize: 50 * 1024 * 1024, // 50MB
106
- maxResponseSize: 100 * 1024 * 1024, // 100MB
107
- requestTimeout: 60000, // 60 秒
108
- rateLimit: 200, // 每分钟 200 次
109
- blockedProtocols: ['file', 'ftp'],
110
- blockedPorts: [22, 25, 465, 587],
111
- },
112
- budget: {
113
- enabled: true,
114
- maxTokensPerSession: 2000000, // 2M tokens
115
- maxTokensPerUserPerDay: 10000000, // 10M tokens
116
- maxCostPerSession: 20.0, // $20
117
- maxCostPerUserPerDay: 100.0, // $100
118
- maxToolCallsPerSession: 200,
119
- maxIterationsPerSession: 50,
120
- maxSessionDuration: 7200000, // 2 小时
121
- warningThreshold: 85, // 85%
122
- autoTerminate: false,
123
- },
124
- };
125
- /**
126
- * 最小安全配置
127
- *
128
- * 仅启用基本安全检查,适用于受信任环境
129
- */
130
- export const MINIMAL_SECURITY_CONFIG = {
131
- audit: {
132
- enabled: false,
133
- },
134
- network: {
135
- enabled: false,
136
- },
137
- budget: {
138
- enabled: false,
139
- },
140
- };
141
- /**
142
- * 根据环境获取安全配置
143
- */
144
- export function getSecurityConfigForEnvironment(env) {
145
- switch (env) {
146
- case 'production':
147
- return PRODUCTION_SECURITY_CONFIG;
148
- case 'development':
149
- return DEVELOPMENT_SECURITY_CONFIG;
150
- case 'minimal':
151
- return MINIMAL_SECURITY_CONFIG;
152
- default:
153
- return DEVELOPMENT_SECURITY_CONFIG;
154
- }
155
- }
156
- /**
157
- * 合并自定义配置与默认配置
158
- */
159
- export function mergeSecurityConfig(base, custom) {
160
- return {
161
- audit: { ...base.audit, ...custom.audit },
162
- network: { ...base.network, ...custom.network },
163
- budget: { ...base.budget, ...custom.budget },
164
- };
165
- }
166
- //# sourceMappingURL=security-config.example.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security-config.example.js","sourceRoot":"","sources":["../../src/security/security-config.example.ts"],"names":[],"mappings":"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"}