@jesonliu/lark-claudecode-bridge 1.3.6 → 1.3.8

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 (55) hide show
  1. package/README.md +31 -1
  2. package/assets/web/js/main.js +2 -1
  3. package/assets/web/js/pages/memory.js +543 -0
  4. package/config.example.yaml +51 -11
  5. package/dist/config.d.ts +3 -0
  6. package/dist/config.js +213 -14
  7. package/dist/config.js.map +1 -1
  8. package/dist/executor/claude-executor.d.ts +34 -4
  9. package/dist/executor/claude-executor.js +718 -282
  10. package/dist/executor/claude-executor.js.map +1 -1
  11. package/dist/executor/notify-server.d.ts +10 -0
  12. package/dist/executor/notify-server.js +11 -0
  13. package/dist/executor/notify-server.js.map +1 -1
  14. package/dist/executor/permission-gate.d.ts +38 -0
  15. package/dist/executor/permission-gate.js +53 -0
  16. package/dist/executor/permission-gate.js.map +1 -1
  17. package/dist/gateway/card-builder.d.ts +15 -3
  18. package/dist/gateway/card-builder.js +21 -10
  19. package/dist/gateway/card-builder.js.map +1 -1
  20. package/dist/gateway/feishu-gateway.d.ts +36 -2
  21. package/dist/gateway/feishu-gateway.js +105 -8
  22. package/dist/gateway/feishu-gateway.js.map +1 -1
  23. package/dist/gateway/progress-card.d.ts +4 -2
  24. package/dist/gateway/progress-card.js +52 -25
  25. package/dist/gateway/progress-card.js.map +1 -1
  26. package/dist/index.d.ts +10 -1
  27. package/dist/index.js +277 -44
  28. package/dist/index.js.map +1 -1
  29. package/dist/memory-installer.d.ts +138 -0
  30. package/dist/memory-installer.js +908 -0
  31. package/dist/memory-installer.js.map +1 -0
  32. package/dist/memory.d.ts +79 -0
  33. package/dist/memory.js +182 -0
  34. package/dist/memory.js.map +1 -0
  35. package/dist/security/audit.d.ts +43 -0
  36. package/dist/security/audit.js +46 -0
  37. package/dist/security/audit.js.map +1 -0
  38. package/dist/security/paths.d.ts +41 -0
  39. package/dist/security/paths.js +240 -0
  40. package/dist/security/paths.js.map +1 -0
  41. package/dist/security/redact.d.ts +59 -0
  42. package/dist/security/redact.js +151 -0
  43. package/dist/security/redact.js.map +1 -0
  44. package/dist/session/session-store.d.ts +15 -0
  45. package/dist/session/session-store.js +16 -0
  46. package/dist/session/session-store.js.map +1 -1
  47. package/dist/types.d.ts +82 -6
  48. package/dist/web/config-api.js +32 -0
  49. package/dist/web/config-api.js.map +1 -1
  50. package/dist/web/memory-api.d.ts +25 -0
  51. package/dist/web/memory-api.js +186 -0
  52. package/dist/web/memory-api.js.map +1 -0
  53. package/dist/web/server.js +73 -2
  54. package/dist/web/server.js.map +1 -1
  55. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-installer.js","sourceRoot":"","sources":["../src/memory-installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import type { MemoryConfig } from './types.js';
2
+ /** 记忆插件名(§6.9 自动注入目标;与 ~/.claude 侧 installed_plugins.json 键
3
+ * "openviking-memory@openviking" 的 @ 前段一致——discoverPlugins 的 name 口径) */
4
+ export declare const MEMORY_PLUGIN_NAME = "openviking-memory";
5
+ /** 记忆服务缺省端点(dev 模式回环默认;embedded 模式由 B3 分配后回写 config) */
6
+ export declare const DEFAULT_MEMORY_ENDPOINT = "http://127.0.0.1:1933";
7
+ /** memory 段的生效端点(remote 显式配置 > 缺省回环) */
8
+ export declare function memoryEndpoint(memory: MemoryConfig): string;
9
+ /**
10
+ * memory.enabled 时的 ns env 下发(§6.4/§6.6)——返回值由调用方以「保留既有值」方式并入
11
+ * taskEnv(apps[].env 手配 OPENVIKING_* = 专家覆盖口,优先级最高)。键语义:
12
+ * - OPENVIKING_ACCOUNT:账号轴(全局),缺省 lcb
13
+ * - OPENVIKING_USER:用户轴 = {appId}-{userId},**每条消息拼装**(群聊按人隔离;
14
+ * deputy 的 appId 天然不同于主 bot——「分身有自己的记忆、永不读主人记忆」的实现点)
15
+ * - OPENVIKING_API_KEY:连接 key。api_key 模式 = 该 bot 的独立 user key(userKeys 缓存,
16
+ * root key 永不下发子进程);dev 模式无 key(身份经 header 隔离)
17
+ * 纯函数 exported 便于单测;userId 为空串时不产出 OPENVIKING_USER(防御非消息触发的任务路径)。
18
+ */
19
+ export declare function memoryEnvFor(memory: MemoryConfig, appId: string, userId: string,
20
+ /** 启动时 Admin API 签发的 per-bot user key(api_key 模式);缺失/未签发则跳过 key 下发 */
21
+ userKeys?: ReadonlyMap<string, string>): Record<string, string>;
22
+ /** 探活结果:healthy + 服务端自报版本/鉴权模式(B2 配置页状态灯数据源;B3 受管进程崩溃检测) */
23
+ export interface MemoryHealth {
24
+ healthy: boolean;
25
+ /** /health 返回的 version 字段(成功时必有;探活失败缺省) */
26
+ version?: string;
27
+ /** /health 返回的 auth_mode("dev" / "api_key");决定身份隔离走 header 还是 user key */
28
+ authMode?: string;
29
+ /** 失败分类(配置页据此给「下一步动作」而非笼统「服务异常」):
30
+ * not-running=连接被拒(端口无监听,服务进程未运行——已装可拉起)
31
+ * unreachable=端点不可达/域名解析失败;timeout=探活超时;auth=401/403(key 不匹配)
32
+ * http-error=其他非 2xx;unhealthy=2xx 但服务自报异常;error=未分类异常 */
33
+ reason?: 'not-running' | 'unreachable' | 'timeout' | 'auth' | 'http-error' | 'unhealthy' | 'error';
34
+ /** 失败原因(用户可读,进状态灯 tooltip / 日志) */
35
+ detail?: string;
36
+ }
37
+ /**
38
+ * OpenViking server 探活(GET {endpoint}/health):B1 启动检查、B2 状态区状态灯、B3 受管进程
39
+ * 崩溃检测共用。短超时(缺省 2s)——探活走消息处理路径时不能拖住任务。Node 18+ 原生 fetch;
40
+ * 失败(网络/超时/非 200/JSON 异常)一律收敛为 { healthy: false, detail },不抛出。
41
+ */
42
+ export declare function probeMemoryHealth(endpoint: string, timeoutMs?: number): Promise<MemoryHealth>;
43
+ /** BridgeDeps.memory 最小接口(§6.6):探活供启动/状态页;namespacesFor 供 B2 ns 矩阵;
44
+ * userKeys 供 env 下发取 per-bot key(dev 模式为空 Map——身份走 header) */
45
+ export interface MemoryProvider {
46
+ isHealthy(): Promise<MemoryHealth>;
47
+ /** 某 bot 的 ns 映射(account/user 前缀;peer 轴按 workspace 运行期派生,不在此暴露) */
48
+ namespacesFor(appId: string): {
49
+ account: string;
50
+ userPrefix: string;
51
+ };
52
+ /** 启动/热重载时 Admin API 签发的 per-bot user key(appId → key);未签发/未启用为空 */
53
+ userKeys(): ReadonlyMap<string, string>;
54
+ }
55
+ /** 生产实现:全部现读 config.memory 与共享 key 缓存(同一 config 引用被热重载 mutate,改段即生效) */
56
+ export declare function createMemoryProvider(config: BridgeConfigLike, userKeys: ReadonlyMap<string, string>): MemoryProvider;
57
+ /** createMemoryProvider 只需 config 的 memory 段(结构子集,避免循环 import BridgeConfig) */
58
+ interface BridgeConfigLike {
59
+ memory?: MemoryConfig;
60
+ }
61
+ /** 单个 bot 的 user key 签发/跳过结果 */
62
+ export interface MemoryKeyOutcome {
63
+ appId: string;
64
+ /** 签发成功(api_key 模式);dev 模式为 undefined(skipped 带原因) */
65
+ userKey?: string;
66
+ skipped?: string;
67
+ error?: string;
68
+ }
69
+ /**
70
+ * 为每个 bot 签发独立 user key(§6.7 第 5 步;api_key 模式)。
71
+ * - dev 模式:整体跳过——身份隔离由 OPENVIKING_USER → X-OpenViking-User header 承担,
72
+ * Admin API 在 dev 模式被服务端禁用(403),跳过是唯一正解而非降级
73
+ * - api_key 模式:X-API-Key 携带 root key(memory.api_key,只在本函数与配置盘间流转),
74
+ * POST /api/v1/admin/accounts/{account}/users 签发;seed = sha256(appId+rootKey) 确定性
75
+ * ——同 seed 重签同值,LCB 重启无须持久化 key 存储
76
+ * - 失败不抛出(逐 bot 记 error):记忆不可用不应阻断机器人服务,与插件发现的容错基调一致
77
+ */
78
+ export declare function ensureMemoryUserKeys(memory: MemoryConfig, appIds: string[], timeoutMs?: number): Promise<Map<string, MemoryKeyOutcome>>;
79
+ export {};
package/dist/memory.js ADDED
@@ -0,0 +1,182 @@
1
+ // 长期记忆(OpenViking)集成 · B1 配置通道(生命周期方案 §6,docs/LCB会话生命周期与长期记忆整合方案-v2.3.md)。
2
+ // 职责收敛在「配置 → env 下发 / 插件注入」的纯计算 + 最小 HTTP(探活 / user key 签发)——弱耦合
3
+ // 验收:LCB 对 OpenViking 零 SDK 依赖、零 import,全部交互只有 HTTP 与环境变量。B3 嵌入式
4
+ // 安装器(uv / 受管子进程 / ov.conf 渲染)在此文件基础上扩展,不动本层语义。
5
+ //
6
+ // OpenViking 0.5.0 身份体系(源码探查 + 实测确认):
7
+ // - env 三键由 openviking_sdk 转为请求 header:OPENVIKING_API_KEY → X-API-Key、
8
+ // OPENVIKING_ACCOUNT → X-OpenViking-Account、OPENVIKING_USER → X-OpenViking-User
9
+ // - auth_mode=dev(单机默认):key 不校验,身份完全由 Account/User header 决定——env 下发
10
+ // OPENVIKING_USER 即得 ns 隔离,无须任何 key(仅限回环监听的本机场景)
11
+ // - auth_mode=api_key(root_api_key 配置后):Account/User header 被服务端剥除,身份由
12
+ // X-API-Key 自带(key = base64url(account).base64url(user).base64url(secret),不可伪造);
13
+ // user key 经 Admin API 签发(POST /api/v1/admin/accounts/{account}/users,X-API-Key 携带
14
+ // root key,seed 参数可得确定性 key——同 seed 重签同值,LCB 无须持久化存储 key)
15
+ import { createHash } from 'node:crypto';
16
+ /** 记忆插件名(§6.9 自动注入目标;与 ~/.claude 侧 installed_plugins.json 键
17
+ * "openviking-memory@openviking" 的 @ 前段一致——discoverPlugins 的 name 口径) */
18
+ export const MEMORY_PLUGIN_NAME = 'openviking-memory';
19
+ /** 记忆服务缺省端点(dev 模式回环默认;embedded 模式由 B3 分配后回写 config) */
20
+ export const DEFAULT_MEMORY_ENDPOINT = 'http://127.0.0.1:1933';
21
+ /** memory 段的生效端点(remote 显式配置 > 缺省回环) */
22
+ export function memoryEndpoint(memory) {
23
+ return memory.endpoint?.trim() || DEFAULT_MEMORY_ENDPOINT;
24
+ }
25
+ /**
26
+ * memory.enabled 时的 ns env 下发(§6.4/§6.6)——返回值由调用方以「保留既有值」方式并入
27
+ * taskEnv(apps[].env 手配 OPENVIKING_* = 专家覆盖口,优先级最高)。键语义:
28
+ * - OPENVIKING_ACCOUNT:账号轴(全局),缺省 lcb
29
+ * - OPENVIKING_USER:用户轴 = {appId}-{userId},**每条消息拼装**(群聊按人隔离;
30
+ * deputy 的 appId 天然不同于主 bot——「分身有自己的记忆、永不读主人记忆」的实现点)
31
+ * - OPENVIKING_API_KEY:连接 key。api_key 模式 = 该 bot 的独立 user key(userKeys 缓存,
32
+ * root key 永不下发子进程);dev 模式无 key(身份经 header 隔离)
33
+ * 纯函数 exported 便于单测;userId 为空串时不产出 OPENVIKING_USER(防御非消息触发的任务路径)。
34
+ */
35
+ export function memoryEnvFor(memory, appId, userId,
36
+ /** 启动时 Admin API 签发的 per-bot user key(api_key 模式);缺失/未签发则跳过 key 下发 */
37
+ userKeys) {
38
+ const env = { OPENVIKING_ACCOUNT: memory.account ?? 'lcb' };
39
+ if (userId)
40
+ env.OPENVIKING_USER = `${appId}-${userId}`;
41
+ const key = userKeys?.get(appId);
42
+ if (key)
43
+ env.OPENVIKING_API_KEY = key;
44
+ return env;
45
+ }
46
+ /**
47
+ * OpenViking server 探活(GET {endpoint}/health):B1 启动检查、B2 状态区状态灯、B3 受管进程
48
+ * 崩溃检测共用。短超时(缺省 2s)——探活走消息处理路径时不能拖住任务。Node 18+ 原生 fetch;
49
+ * 失败(网络/超时/非 200/JSON 异常)一律收敛为 { healthy: false, detail },不抛出。
50
+ */
51
+ export async function probeMemoryHealth(endpoint, timeoutMs = 2000) {
52
+ const url = `${endpoint.replace(/\/+$/, '')}/health`;
53
+ // host/port 仅用于失败文案定位(如「127.0.0.1:1933 无进程监听」);URL 非法时留空
54
+ const { hostname, port } = (() => { try {
55
+ return new URL(url);
56
+ }
57
+ catch {
58
+ return { hostname: '', port: '' };
59
+ } })();
60
+ const at = hostname ? `${hostname}:${port || '1933'}` : url;
61
+ const controller = new AbortController();
62
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
63
+ try {
64
+ const res = await fetch(url, { signal: controller.signal });
65
+ if (!res.ok) {
66
+ // 401/403 单列:api_key 模式 key 不匹配与服务未运行是完全不同的处置路径
67
+ if (res.status === 401 || res.status === 403) {
68
+ return { healthy: false, reason: 'auth', detail: `HTTP ${res.status}(鉴权失败:服务为 api_key 模式时检查 memory.api_key / root key 是否匹配)` };
69
+ }
70
+ return { healthy: false, reason: 'http-error', detail: `HTTP ${res.status}` };
71
+ }
72
+ const body = (await res.json());
73
+ // 服务端语义:status=ok(0.5.0 实测);healthy 字段兼容未来版本
74
+ const ok = body.status === 'ok' || body.healthy === true;
75
+ return ok
76
+ ? {
77
+ healthy: true,
78
+ ...(typeof body.version === 'string' ? { version: body.version } : {}),
79
+ ...(typeof body.auth_mode === 'string' ? { authMode: body.auth_mode } : {}),
80
+ }
81
+ : { healthy: false, reason: 'unhealthy', detail: `服务进程在但自报异常:${JSON.stringify(body)}` };
82
+ }
83
+ catch (e) {
84
+ // Node 18+ 原生 fetch(undici)连接层失败一律抛 TypeError: fetch failed,真实 errno 藏在
85
+ // e.cause.code——不读 cause 时用户只能看到「fetch failed」,无法区分「服务没跑」与「网络问题」
86
+ const err = e;
87
+ const code = err?.cause?.code ?? e?.code;
88
+ if (e instanceof Error && e.name === 'AbortError') {
89
+ return { healthy: false, reason: 'timeout', detail: `探活超时(>${timeoutMs}ms)——服务无响应` };
90
+ }
91
+ if (code === 'ECONNREFUSED') {
92
+ return { healthy: false, reason: 'not-running', detail: `连接被拒绝:${at} 无进程监听,服务未运行` };
93
+ }
94
+ if (code === 'ENOTFOUND' || code === 'EAI_AGAIN') {
95
+ return { healthy: false, reason: 'unreachable', detail: `域名无法解析:${hostname || url}` };
96
+ }
97
+ if (code === 'ETIMEDOUT' || code === 'ECONNRESET') {
98
+ return { healthy: false, reason: 'timeout', detail: `连接${code === 'ECONNRESET' ? '被重置' : '超时'}(${at})` };
99
+ }
100
+ if (code === 'EHOSTUNREACH' || code === 'ENETUNREACH') {
101
+ return { healthy: false, reason: 'unreachable', detail: `网络不可达:${hostname || url}` };
102
+ }
103
+ const detail = e instanceof Error
104
+ ? (e.message === 'fetch failed' && err.cause?.message ? `网络错误:${err.cause.message}` : e.message)
105
+ : String(e);
106
+ return { healthy: false, reason: 'error', detail };
107
+ }
108
+ finally {
109
+ clearTimeout(timer);
110
+ }
111
+ }
112
+ /** 生产实现:全部现读 config.memory 与共享 key 缓存(同一 config 引用被热重载 mutate,改段即生效) */
113
+ export function createMemoryProvider(config, userKeys) {
114
+ return {
115
+ isHealthy: () => (config.memory?.enabled
116
+ ? probeMemoryHealth(memoryEndpoint(config.memory))
117
+ : Promise.resolve({ healthy: false, detail: 'memory 段未开启' })),
118
+ namespacesFor: (appId) => ({
119
+ account: config.memory?.account ?? 'lcb',
120
+ userPrefix: `${appId}-`,
121
+ }),
122
+ userKeys: () => userKeys,
123
+ };
124
+ }
125
+ /**
126
+ * 为每个 bot 签发独立 user key(§6.7 第 5 步;api_key 模式)。
127
+ * - dev 模式:整体跳过——身份隔离由 OPENVIKING_USER → X-OpenViking-User header 承担,
128
+ * Admin API 在 dev 模式被服务端禁用(403),跳过是唯一正解而非降级
129
+ * - api_key 模式:X-API-Key 携带 root key(memory.api_key,只在本函数与配置盘间流转),
130
+ * POST /api/v1/admin/accounts/{account}/users 签发;seed = sha256(appId+rootKey) 确定性
131
+ * ——同 seed 重签同值,LCB 重启无须持久化 key 存储
132
+ * - 失败不抛出(逐 bot 记 error):记忆不可用不应阻断机器人服务,与插件发现的容错基调一致
133
+ */
134
+ export async function ensureMemoryUserKeys(memory, appIds, timeoutMs = 5000) {
135
+ const out = new Map();
136
+ const health = await probeMemoryHealth(memoryEndpoint(memory), timeoutMs);
137
+ if (!health.healthy) {
138
+ for (const appId of appIds) {
139
+ out.set(appId, { appId, skipped: `服务不可达(${health.detail ?? '未知原因'}),身份隔离依赖 OPENVIKING_USER header` });
140
+ }
141
+ return out;
142
+ }
143
+ if (health.authMode !== 'api_key') {
144
+ for (const appId of appIds) {
145
+ out.set(appId, { appId, skipped: `服务为 ${health.authMode ?? 'unknown'} 模式:身份经 X-OpenViking-User header 隔离,无需 user key(多租户部署请在 ov.conf 配 root_api_key 启用 api_key 模式)` });
146
+ }
147
+ return out;
148
+ }
149
+ const account = memory.account ?? 'lcb';
150
+ const rootKey = memory.apiKey;
151
+ if (!rootKey) {
152
+ for (const appId of appIds) {
153
+ out.set(appId, { appId, error: '服务为 api_key 模式但 memory.api_key(root key)未配置:无法签发 user key,请先在 memory 段配置 root key' });
154
+ }
155
+ return out;
156
+ }
157
+ for (const appId of appIds) {
158
+ try {
159
+ // seed 确定性:sha256(appId + rootKey) 前 32 位。root key 轮换 → seed 变 → 新 key(旧 key
160
+ // 失效),属预期安全行为;同 root key 下重签幂等
161
+ const seed = createHash('sha256').update(`${appId}:${rootKey}`).digest('hex').slice(0, 32);
162
+ const res = await fetch(`${memoryEndpoint(memory).replace(/\/+$/, '')}/api/v1/admin/accounts/${encodeURIComponent(account)}/users`, {
163
+ method: 'POST',
164
+ headers: { 'Content-Type': 'application/json', 'X-API-Key': rootKey },
165
+ body: JSON.stringify({ user_id: appId, role: 'user', seed }),
166
+ signal: AbortSignal.timeout(timeoutMs),
167
+ });
168
+ const body = (await res.json().catch(() => ({})));
169
+ if (res.ok && body.result?.user_key) {
170
+ out.set(appId, { appId, userKey: body.result.user_key });
171
+ }
172
+ else {
173
+ out.set(appId, { appId, error: `签发失败:HTTP ${res.status}${body.message ? `(${body.message})` : ''}` });
174
+ }
175
+ }
176
+ catch (e) {
177
+ out.set(appId, { appId, error: `签发异常:${e instanceof Error ? e.message : String(e)}` });
178
+ }
179
+ }
180
+ return out;
181
+ }
182
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,iEAAiE;AACjE,iEAAiE;AACjE,gDAAgD;AAChD,EAAE;AACF,sCAAsC;AACtC,uEAAuE;AACvE,kFAAkF;AAClF,qEAAqE;AACrE,mDAAmD;AACnD,uEAAuE;AACvE,mFAAmF;AACnF,qFAAqF;AACrF,4DAA4D;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;0EAC0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAEtD,wDAAwD;AACxD,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAE/D,wCAAwC;AACxC,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,uBAAuB,CAAC;AAC5D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAoB,EACpB,KAAa,EACb,MAAc;AACd,sEAAsE;AACtE,QAAsC;IAEtC,MAAM,GAAG,GAA2B,EAAE,kBAAkB,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC;IACpF,IAAI,MAAM;QAAE,GAAG,CAAC,eAAe,GAAG,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;IACvD,MAAM,GAAG,GAAG,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,GAAG;QAAE,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC;IACtC,OAAO,GAAG,CAAC;AACb,CAAC;AAkBD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB,EAAE,SAAS,GAAG,IAAI;IACxE,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;IACrD,yDAAyD;IACzD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAAC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnH,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,gDAAgD;YAChD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC7C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,CAAC,MAAM,yDAAyD,EAAE,CAAC;YACjI,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;QAChF,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAiF,CAAC;QAChH,6CAA6C;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;QACzD,OAAO,EAAE;YACP,CAAC,CAAC;gBACA,OAAO,EAAE,IAAI;gBACb,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5E;YACD,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IAC5F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,wEAAwE;QACxE,iEAAiE;QACjE,MAAM,GAAG,GAAG,CAA4D,CAAC;QACzE,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,IAAK,CAAkC,EAAE,IAAI,CAAC;QAC3E,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,SAAS,YAAY,EAAE,CAAC;QACvF,CAAC;QACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;QACtF,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACjD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,QAAQ,IAAI,GAAG,EAAE,EAAE,CAAC;QACxF,CAAC;QACD,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;QAC3G,CAAC;QACD,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YACtD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,QAAQ,IAAI,GAAG,EAAE,EAAE,CAAC;QACvF,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK;YAC/B,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,cAAc,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAChG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACrD,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAYD,wEAAwE;AACxE,MAAM,UAAU,oBAAoB,CAAC,MAAwB,EAAE,QAAqC;IAClG,OAAO;QACL,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;YACtC,CAAC,CAAC,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QAC/D,aAAa,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC;YACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,KAAK;YACxC,UAAU,EAAE,GAAG,KAAK,GAAG;SACxB,CAAC;QACF,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ;KACzB,CAAC;AACJ,CAAC;AAaD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAoB,EACpB,MAAgB,EAChB,SAAS,GAAG,IAAI;IAEhB,MAAM,GAAG,GAAG,IAAI,GAAG,EAA4B,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1E,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,IAAI,MAAM,iCAAiC,EAAE,CAAC,CAAC;QACxG,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,MAAM,CAAC,QAAQ,IAAI,SAAS,+FAA+F,EAAE,CAAC,CAAC;QACzK,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mFAAmF,EAAE,CAAC,CAAC;QACxH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,6EAA6E;YAC7E,+BAA+B;YAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3F,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,0BAA0B,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAC1G;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE;gBACrE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;gBAC5D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;aACvC,CACF,CAAC;YACF,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAyD,CAAC;YAC1G,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;gBACpC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACxG,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,43 @@
1
+ /** 安全事件(discriminated union;detail 内字段均已脱敏) */
2
+ export type SecurityEvent = {
3
+ kind: 'redact';
4
+ ruleIds: string[];
5
+ source: 'card' | 'caption' | 'final' | 'stream' | 'transcript';
6
+ } | {
7
+ kind: 'canary';
8
+ source: 'card' | 'caption' | 'final' | 'stream' | 'gate';
9
+ } | {
10
+ kind: 'path-deny';
11
+ tool: string;
12
+ path: string;
13
+ ruleId?: string;
14
+ } | {
15
+ kind: 'write-deny';
16
+ tool: string;
17
+ path: string;
18
+ } | {
19
+ kind: 'bash-deny';
20
+ command: string;
21
+ ruleId?: string;
22
+ } | {
23
+ kind: 'file-deny';
24
+ path: string;
25
+ };
26
+ /** 审计写入接口(DI:生产实现落盘,测试可注入内存 mock) */
27
+ export interface SecurityAuditWriter {
28
+ write(appId: string, ev: SecurityEvent): void;
29
+ }
30
+ export declare class SecurityAudit implements SecurityAuditWriter {
31
+ private baseDir;
32
+ private madeDir;
33
+ private lastWarnMin;
34
+ constructor(baseDir: string);
35
+ write(appId: string, ev: SecurityEvent): void;
36
+ }
37
+ /** 安全拦截统一话术(R1/R2/R4 拒绝模板):不解释保护对象、不确认目标是否存在——
38
+ * 模型回复「没有权限」时这是真话(能力缺失,非服从),杜绝侧信道试探 */
39
+ export declare const DENY_REDLINE_MESSAGE = "\u26D4 \u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u8BE5\u8DEF\u5F84\uFF08\u5B89\u5168\u7EA2\u7EBF\uFF0C\u4E0D\u53EF\u8D8A\u754C\uFF09\u3002\u8BF7\u6539\u7528\u5DF2\u5206\u914D\u5DE5\u4F5C\u533A\u5185\u7684\u6587\u4EF6\u7EE7\u7EED\u4EFB\u52A1";
40
+ export declare const DENY_WRITE_MESSAGE = "\u26D4 \u6CA1\u6709\u6743\u9650\u5199\u5165\u8BE5\u4F4D\u7F6E\uFF08\u5199\u5165\u4EC5\u9650\u5DF2\u5206\u914D\u7684\u5DE5\u4F5C\u533A\uFF09";
41
+ export declare const DENY_BASH_MESSAGE = "\u26D4 \u6CA1\u6709\u6743\u9650\u4F7F\u7528\u547D\u4EE4\u884C\u5DE5\u5177";
42
+ /** 金丝雀命中告警模板(gateway 与 gate 侧共用;文本不含任何敏感内容,自身出站无递归风险) */
43
+ export declare const CANARY_ALERT_TEXT = "\uD83D\uDEA8 \u5B89\u5168\u544A\u8B66\uFF1A\u68C0\u6D4B\u5230\u654F\u611F\u6807\u8BB0\u51FA\u73B0\u5728\u5BF9\u5916\u6D88\u606F\u4E2D\uFF08\u7591\u4F3C\u9632\u7EBF\u88AB\u7A7F\u900F\uFF09\u3002\u76F8\u5173\u5185\u5BB9\u5DF2\u8131\u654F\uFF0C\u8BF7\u7ACB\u5373\u68C0\u67E5\u672C\u673A\u662F\u5426\u5B58\u5728\u6CC4\u5BC6\u3002\u672C\u6D88\u606F\u7531\u5B89\u5168\u6A21\u5757\u81EA\u52A8\u53D1\u9001";
@@ -0,0 +1,46 @@
1
+ // 安全审计面(方案 v3 §八):deny / 脱敏 / 金丝雀事件全量落 JSONL。
2
+ // 铁律:审计只记「发生了什么类别的安全事件 + 规则/模式标识 + 路径」,绝不记录命中内容本身
3
+ // (脱敏命中的原文就是秘密,落盘即二次泄露)。写失败只节流告警,绝不阻断主流程(与 transcripts 同款)。
4
+ import { appendFileSync, existsSync, mkdirSync, renameSync, statSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ import { nowBeijingISO } from '../util/beijing-time.js';
7
+ // 单文件上限:超过即轮转为 .old(保留一代,足够回溯近期事件且不无界增长)
8
+ const MAX_FILE_BYTES = 5 * 1024 * 1024;
9
+ export class SecurityAudit {
10
+ baseDir;
11
+ madeDir = false;
12
+ lastWarnMin = 0;
13
+ constructor(baseDir) {
14
+ this.baseDir = baseDir;
15
+ }
16
+ write(appId, ev) {
17
+ try {
18
+ if (!this.madeDir) {
19
+ mkdirSync(this.baseDir, { recursive: true });
20
+ this.madeDir = true;
21
+ }
22
+ const file = join(this.baseDir, `audit-${appId}.jsonl`);
23
+ // 尺寸轮转:写入前检查,超限即改名(存在 .old 直接覆盖,只保留一代)
24
+ if (existsSync(file) && statSync(file).size > MAX_FILE_BYTES) {
25
+ renameSync(file, `${file}.old`);
26
+ }
27
+ const line = JSON.stringify({ v: 1, ts: nowBeijingISO(), app: appId, ...ev }) + '\n';
28
+ appendFileSync(file, line, 'utf8');
29
+ }
30
+ catch (e) {
31
+ const min = Math.floor(Date.now() / 60_000);
32
+ if (min !== this.lastWarnMin) {
33
+ this.lastWarnMin = min;
34
+ console.warn('[security] 审计落盘失败(不影响任务执行):', e instanceof Error ? e.message : e);
35
+ }
36
+ }
37
+ }
38
+ }
39
+ /** 安全拦截统一话术(R1/R2/R4 拒绝模板):不解释保护对象、不确认目标是否存在——
40
+ * 模型回复「没有权限」时这是真话(能力缺失,非服从),杜绝侧信道试探 */
41
+ export const DENY_REDLINE_MESSAGE = '⛔ 没有权限访问该路径(安全红线,不可越界)。请改用已分配工作区内的文件继续任务';
42
+ export const DENY_WRITE_MESSAGE = '⛔ 没有权限写入该位置(写入仅限已分配的工作区)';
43
+ export const DENY_BASH_MESSAGE = '⛔ 没有权限使用命令行工具';
44
+ /** 金丝雀命中告警模板(gateway 与 gate 侧共用;文本不含任何敏感内容,自身出站无递归风险) */
45
+ export const CANARY_ALERT_TEXT = '🚨 安全告警:检测到敏感标记出现在对外消息中(疑似防线被穿透)。相关内容已脱敏,请立即检查本机是否存在泄密。本消息由安全模块自动发送';
46
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/security/audit.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,kDAAkD;AAClD,4DAA4D;AAC5D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAcxD,yCAAyC;AACzC,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvC,MAAM,OAAO,aAAa;IAIJ,OAAO;IAHnB,OAAO,GAAG,KAAK,CAAC;IAChB,WAAW,GAAG,CAAC,CAAC;IAExB,YAAoB,OAAe;uBAAf,OAAO;IAAW,CAAC;IAEvC,KAAK,CAAC,KAAa,EAAE,EAAiB;QACpC,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC;YACxD,uCAAuC;YACvC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,cAAc,EAAE,CAAC;gBAC7D,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;YAClC,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;YACrF,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;YAC5C,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC7B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED;wCACwC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,0CAA0C,CAAC;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD,yDAAyD;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAC5B,qEAAqE,CAAC"}
@@ -0,0 +1,41 @@
1
+ export interface PathMatcher {
2
+ id: string;
3
+ re: RegExp;
4
+ }
5
+ /**
6
+ * 内置默认红区(R1 读黑名单,config security.redzone.read 缺省值;配置即整体替换)。
7
+ * 口径:凭证与身份的存储位置——bridge 自身配置/会话记录、lark-cli 授权 token、SSH/GPG/AWS、
8
+ * 浏览器资料、通用凭证文件形态。对 deputy 恒定生效;主机器人不消费(主人读本机文件属合法自用,
9
+ * 出站脱敏兜底)。误报取向:宁可多拦(双星加 .key 一类的密钥扩展名),分身工作区如需此类文件由主人显式调整清单。
10
+ */
11
+ export declare const DEFAULT_REDZONE_READ_SOURCES: readonly string[];
12
+ /** `~` 展开 + 绝对化 + 分隔符归一(/)+(Windows)小写。所有比较都走这一条漏斗 */
13
+ export declare function normalizeForCompare(p: string, cwd?: string): string;
14
+ /**
15
+ * 编译红区 glob 模式(config security.redzone.read)。支持:
16
+ * - `~/` 前缀展开为用户主目录
17
+ * - 双星加斜杠(`**` 后跟 `/`)匹配任意层级目录(含零层);`*` 单段内通配
18
+ * - 无通配模式按「目录前缀」语义:命中该路径本身与其下全部内容
19
+ * 非法/空条目跳过(配置页自由文本,坏条目 warn 不拖垮启动)。
20
+ */
21
+ export declare function compilePathPatterns(sources: readonly string[]): PathMatcher[];
22
+ /** 路径命中红区则返回命中的模式(审计/日志用),未命中返回 null */
23
+ export declare function matchRedzone(p: string, matchers: readonly PathMatcher[], cwd?: string): string | null;
24
+ /** 路径是否落在任一允许根之下(分隔符边界对齐,防 /ws-a 前缀误配 /ws-ab) */
25
+ export declare function isUnderAnyRoot(p: string, roots: readonly string[], cwd?: string): boolean;
26
+ /** 抽取工具入参中的候选路径(未声明路径参数的工具返回空数组) */
27
+ export declare function extractToolPaths(toolName: string, input: Record<string, unknown>): string[];
28
+ /** 写红线约束的写工具集合(Edit/Write/NotebookEdit 之外无落盘写语义) */
29
+ export declare const WRITE_TOOLS: ReadonlySet<string>;
30
+ /**
31
+ * Bash 命令串红区特征探测(best-effort,见文件头说明):
32
+ * - 把命令文本中的 `~/` 引用展开后,检查是否包含任一红区模式的「字面前缀」(模式首个通配符之前
33
+ * 的字面部分,如 `~/.ssh/**` → `<home>/.ssh/`);
34
+ * - 纯通配开头(如双星开头再接 credentials)无稳定字面前缀,跳过——此类交给出站脱敏兜底。
35
+ * inboxRoot(入站附件豁免根)传入时:命中字面前缀后须命令串中该前缀的每一处出现都指向 inbox
36
+ * 根内才豁免该模式,任一处不指向仍命中——fail-closed,不扩大既有绕过面。
37
+ * 命中返回模式串,未命中返回 null。
38
+ */
39
+ export declare function bashHitsRedzone(command: string, matchers: readonly PathMatcher[], inboxRoot?: string): string | null;
40
+ /** 带缓存的红区编译:同一份模式串(JSON 键)只编译一次,decide 热路径零重复开销 */
41
+ export declare function cachedPathMatchers(sources: readonly string[]): PathMatcher[];