@aalis/plugin-storage-local 0.12.1 → 0.13.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.
- package/README.md +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +307 -135
- package/dist/index.js.map +1 -1
- package/package.json +10 -7
package/README.md
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type HostPaths } from '@aalis/api-host-paths';
|
|
1
2
|
import { type Logger, type Services } from '@aalis/core';
|
|
2
3
|
declare const _default: import("@aalis/core").PluginDefinition<{
|
|
3
4
|
provide: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Provide, import("@aalis/core").Provide>;
|
|
@@ -5,6 +6,7 @@ declare const _default: import("@aalis/core").PluginDefinition<{
|
|
|
5
6
|
logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => Logger, Logger>;
|
|
6
7
|
lifecycle: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").LifecycleCap, import("@aalis/core").LifecycleCap>;
|
|
7
8
|
config: import("@aalis/core").ServiceDescriptor<(identity: symbol) => Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>>;
|
|
9
|
+
paths: import("@aalis/core").ServiceDescriptor<HostPaths, HostPaths>;
|
|
8
10
|
doctor: import("@aalis/core").OptionalUse<import("@aalis/api-doctor").DoctorService, import("@aalis/api-doctor").BoundDoctor>;
|
|
9
11
|
}>;
|
|
10
12
|
export default _default;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,uBAAuB,CAAC;AAclE,OAAO,EAGL,KAAK,MAAM,EAKX,KAAK,QAAQ,EAEd,MAAM,aAAa,CAAC;;;;;;;;;;AA82BrB,wBAuDG"}
|
package/dist/index.js
CHANGED
|
@@ -1,33 +1,36 @@
|
|
|
1
1
|
import { randomBytes } from 'node:crypto';
|
|
2
2
|
import { createReadStream, watch as fsWatch, statSync } from 'node:fs';
|
|
3
3
|
import { chmod, lstat, mkdir, open, readdir, readFile, realpath, rename, rm, stat, unlink, writeFile, } from 'node:fs/promises';
|
|
4
|
-
import { basename, dirname, extname, isAbsolute, relative, resolve, sep } from 'node:path';
|
|
4
|
+
import { basename, dirname, extname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
5
|
+
import { checkpoint } from '@aalis/api-checkpoint';
|
|
5
6
|
import { doctor } from '@aalis/api-doctor';
|
|
7
|
+
import { hostPaths } from '@aalis/api-host-paths';
|
|
6
8
|
import { storage, } from '@aalis/api-storage';
|
|
7
9
|
import { config, definePlugin, lifecycle, logger, optional, provide, services, } from '@aalis/core';
|
|
10
|
+
import { defineConfig, parseConfig } from '@aalis/schema-config';
|
|
8
11
|
const PLUGIN_NAME = '@aalis/plugin-storage-local';
|
|
9
12
|
/**
|
|
10
|
-
*
|
|
13
|
+
* 这个插件不是沙箱。它做四件事:
|
|
11
14
|
*
|
|
12
|
-
* 1.
|
|
13
|
-
*
|
|
14
|
-
* 宿主机绝对路径。
|
|
15
|
+
* 1. 给若干本机目录起稳定的名字:插件自己的数据在按家目录布局派生的内置根里,文件工具用的根在 roots 数组里声明
|
|
16
|
+
* (缺省只有 workspace),让上层用 URI 表示文件,避免到处写宿主机绝对路径。
|
|
15
17
|
* 2. 在每条 API 内对 `..` 穿越做规范化与校验,防止"workspace:/../../etc/passwd"
|
|
16
18
|
* 这类逻辑越界 bug。
|
|
17
19
|
* 3. 把所有读/写/删过一道 logger,作为统一审计点。
|
|
20
|
+
* 4. 宿主控制文件的执行点兜底:不管经哪个根进来,密钥文件读写都拒,主配置拒写(见 {@link HostFileGuard})。
|
|
18
21
|
*
|
|
19
22
|
* 它无法阻止 run_python / shell 等子进程在拿到 cwd 之后访问 OS 用户可访问的任何文件——
|
|
20
23
|
* 这种隔离只能靠 OS 用户权限或容器层。请按这个边界来理解和配置。
|
|
21
24
|
*
|
|
22
|
-
* 关于 browsable:仅是给"文件浏览器类 UI"的 hint
|
|
23
|
-
*
|
|
24
|
-
* 不会让它们出现在文件页里——那些根仅供 agent/工具按 URI 寻址使用。
|
|
25
|
+
* 关于 browsable:仅是给"文件浏览器类 UI"的 hint。WebUI 没有文件浏览页,不读它;
|
|
26
|
+
* 这些根供 agent 与工具按 URI 寻址。
|
|
25
27
|
*
|
|
26
|
-
* 当 agent
|
|
28
|
+
* 当 agent 需要访问默认根之外的目录时:
|
|
27
29
|
* - 推荐:在 roots 里加一条具名根(如 share / project_x),路径限定到目标目录
|
|
28
30
|
* - 一刀切:在 roots 里加 { name: host, path: '/' },agent 即可用 host:/绝对路径 访问
|
|
29
31
|
* 宿主机任何位置(高危,启动时会有 WARN 日志)
|
|
30
32
|
*/
|
|
33
|
+
/** 用户 roots 缺省时注册的根:只有文件工具的工作根。插件自己的数据都在下面的内部路由根里 */
|
|
31
34
|
const DEFAULT_ROOTS = [
|
|
32
35
|
{
|
|
33
36
|
name: 'workspace',
|
|
@@ -39,71 +42,69 @@ const DEFAULT_ROOTS = [
|
|
|
39
42
|
writable: true,
|
|
40
43
|
deletable: true,
|
|
41
44
|
},
|
|
42
|
-
{
|
|
43
|
-
name: 'data',
|
|
44
|
-
path: 'data',
|
|
45
|
-
label: 'Data',
|
|
46
|
-
kind: 'data',
|
|
47
|
-
browsable: false,
|
|
48
|
-
readable: true,
|
|
49
|
-
writable: true,
|
|
50
|
-
// 可删:/clear 的附件清理(data/images 等)依赖它,关掉会让开箱用户连手动清理都失败。
|
|
51
|
-
// deletable 是能力位不是权限闸——agent 侧删除面由各工具自身档位把关
|
|
52
|
-
// (file_delete=restricted+confirm+allowedRoots、skill_delete=sensitive 等,档位各异)。
|
|
53
|
-
deletable: true,
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
name: 'tmp',
|
|
57
|
-
path: 'workspace/.tmp',
|
|
58
|
-
label: '临时文件',
|
|
59
|
-
kind: 'tmp',
|
|
60
|
-
browsable: false,
|
|
61
|
-
readable: true,
|
|
62
|
-
writable: true,
|
|
63
|
-
deletable: true,
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
name: 'pluginData',
|
|
67
|
-
path: 'data/plugins',
|
|
68
|
-
label: '插件数据',
|
|
69
|
-
kind: 'pluginData',
|
|
70
|
-
browsable: false,
|
|
71
|
-
readable: true,
|
|
72
|
-
writable: true,
|
|
73
|
-
deletable: true,
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
name: 'logs',
|
|
77
|
-
path: 'data',
|
|
78
|
-
label: '日志',
|
|
79
|
-
kind: 'logs',
|
|
80
|
-
browsable: false,
|
|
81
|
-
readable: true,
|
|
82
|
-
writable: false,
|
|
83
|
-
deletable: false,
|
|
84
|
-
},
|
|
85
45
|
// 高危直通:取消注释或改 enabled 字段无意义——存在即注册。如需 host:/ 直通根,把下行加进 roots:
|
|
86
46
|
// { name: 'host', path: '/', label: '宿主机根', kind: 'host', browsable: false, readable: true, writable: false, deletable: false },
|
|
87
47
|
];
|
|
88
|
-
|
|
48
|
+
/** 插件读写、可删的内部根的权限位 */
|
|
49
|
+
const PRIVATE = { browsable: false, readable: true, writable: true, deletable: true };
|
|
50
|
+
/**
|
|
51
|
+
* 插件内置的内部路由根:按家目录布局(host-paths)派生,不受用户 roots 影响,不在文件页出现。在用户根之后注册;
|
|
52
|
+
* 用户 roots 里与内部根同名的项被跳过并告警(内部根优先)。见计划书「插件数据约定」。
|
|
53
|
+
* - data:插件状态(数据库、向量库、checkpoint、会话与附件……)。附件句柄里的根名 data 保留,映射到 state/,
|
|
54
|
+
* 不改写历史。可删:/clear 的附件清理依赖它;删除面由各工具自身档位把关。
|
|
55
|
+
* - pluginData:各插件的私有数据目录 state/plugins。
|
|
56
|
+
* - tmp、cache:临时区与缓存;logs:runtime 写文件日志的目录,WebUI 与 CLI 的日志页从这里读,只读。
|
|
57
|
+
* - personas、skills、workflows:self 下按用途分开的三个根,一个根里的路径拼接失误到不了另一个根。
|
|
58
|
+
* - paper:白纸枢纽存放远端任务成品;public:发布服务存放审核通过的作品,作品站从这里读出来部署。
|
|
59
|
+
* kind 供 checkpoint 等按类判断:data、pluginData、tmp、cache、logs、paper、public、self 都不记账
|
|
60
|
+
* (self 等访问层限定写入者后再记,见 plugin-checkpoint)。
|
|
61
|
+
*/
|
|
62
|
+
function internalRoots(paths) {
|
|
63
|
+
return [
|
|
64
|
+
{ name: 'data', path: paths.state, label: '状态', kind: 'data', ...PRIVATE },
|
|
65
|
+
{ name: 'pluginData', path: join(paths.state, 'plugins'), label: '插件数据', kind: 'pluginData', ...PRIVATE },
|
|
66
|
+
{ name: 'tmp', path: paths.tmp, label: '临时文件', kind: 'tmp', ...PRIVATE },
|
|
67
|
+
{ name: 'cache', path: paths.cache, label: '缓存', kind: 'cache', ...PRIVATE },
|
|
68
|
+
{
|
|
69
|
+
name: 'logs',
|
|
70
|
+
path: paths.logs,
|
|
71
|
+
label: '日志',
|
|
72
|
+
kind: 'logs',
|
|
73
|
+
browsable: false,
|
|
74
|
+
readable: true,
|
|
75
|
+
writable: false,
|
|
76
|
+
deletable: false,
|
|
77
|
+
},
|
|
78
|
+
{ name: 'personas', path: paths.self.personas, label: '人设卡', kind: 'self', ...PRIVATE },
|
|
79
|
+
{ name: 'skills', path: paths.self.skills, label: '技能', kind: 'self', ...PRIVATE },
|
|
80
|
+
{ name: 'workflows', path: paths.self.workflows, label: '编排定义', kind: 'self', ...PRIVATE },
|
|
81
|
+
{ name: 'paper', path: paths.stage.paper, label: '白纸', kind: 'paper', ...PRIVATE },
|
|
82
|
+
{ name: 'public', path: paths.stage.public, label: '公开作品', kind: 'public', ...PRIVATE },
|
|
83
|
+
];
|
|
84
|
+
}
|
|
85
|
+
const configSchema = defineConfig({
|
|
89
86
|
roots: {
|
|
90
87
|
type: 'array',
|
|
91
88
|
label: '存储根目录',
|
|
92
|
-
description: '
|
|
89
|
+
description: '文件工具与 agent 寻址用的根(缺省只有 workspace);插件自己的数据在内置根里(data、pluginData、tmp、cache、logs、personas、skills、workflows、paper、public),这里同名的项会被跳过。' +
|
|
93
90
|
'直接编辑这个数组:删除不要的、修改 path、加自定义根、加 host:/ 直通根。' +
|
|
94
|
-
'browsable
|
|
95
|
-
'其它根仅作为工具/agent 寻址使用)。',
|
|
91
|
+
'browsable 是给文件浏览器类界面的 hint(WebUI 没有文件浏览页,不读它)。',
|
|
96
92
|
default: DEFAULT_ROOTS,
|
|
93
|
+
onInvalid: 'error',
|
|
97
94
|
items: {
|
|
98
95
|
name: {
|
|
99
96
|
type: 'string',
|
|
100
97
|
label: '根名 (URI scheme)',
|
|
98
|
+
required: true,
|
|
99
|
+
onInvalid: 'error',
|
|
101
100
|
description: '只允许字母/数字/下划线/连字符,且需以字母开头;如 workspace、share',
|
|
102
101
|
},
|
|
103
102
|
path: {
|
|
104
103
|
type: 'string',
|
|
105
104
|
label: '本机路径',
|
|
106
|
-
|
|
105
|
+
required: true,
|
|
106
|
+
onInvalid: 'error',
|
|
107
|
+
description: '可绝对,亦可相对家目录;不存在时自动创建。指向 / 即注册宿主机直通根(高危)。',
|
|
107
108
|
},
|
|
108
109
|
label: { type: 'string', label: '展示名称', default: '' },
|
|
109
110
|
kind: {
|
|
@@ -114,16 +115,17 @@ const configSchema = {
|
|
|
114
115
|
},
|
|
115
116
|
browsable: {
|
|
116
117
|
type: 'boolean',
|
|
117
|
-
label: '
|
|
118
|
+
label: '文件浏览器可见 (hint)',
|
|
118
119
|
default: false,
|
|
119
|
-
|
|
120
|
+
onInvalid: 'error',
|
|
121
|
+
description: 'hint:给文件浏览器类界面用,WebUI 不读它',
|
|
120
122
|
},
|
|
121
|
-
readable: { type: 'boolean', label: '允许读', default: true },
|
|
122
|
-
writable: { type: 'boolean', label: '允许写', default: false },
|
|
123
|
-
deletable: { type: 'boolean', label: '允许删除', default: false },
|
|
123
|
+
readable: { type: 'boolean', label: '允许读', default: true, onInvalid: 'error' },
|
|
124
|
+
writable: { type: 'boolean', label: '允许写', default: false, onInvalid: 'error' },
|
|
125
|
+
deletable: { type: 'boolean', label: '允许删除', default: false, onInvalid: 'error' },
|
|
124
126
|
},
|
|
125
127
|
},
|
|
126
|
-
};
|
|
128
|
+
});
|
|
127
129
|
function isInside(parent, child) {
|
|
128
130
|
const rel = relative(parent, child);
|
|
129
131
|
return rel === '' || (!!rel && !rel.startsWith('..') && !isAbsolute(rel));
|
|
@@ -144,23 +146,102 @@ function parseUri(uri) {
|
|
|
144
146
|
return { root, relPath };
|
|
145
147
|
}
|
|
146
148
|
/**
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
149
|
+
* 宿主控制文件的执行点兜底:密钥文件读写都拒,主配置拒写,只许 runtime 自己读写它们(见计划书「执行点兜底」)。
|
|
150
|
+
* 不管目标经哪个根进来都查:
|
|
151
|
+
* - 文件本身:按 (dev, ino) 比,硬链接与符号链接都挡得住;文件还不存在时按真实路径比(不分大小写,
|
|
152
|
+
* macOS 与 Windows 的卷默认不分),落在控制文件路径之下的也拒(不许把它建成目录);
|
|
153
|
+
* ino 按 bigint 取:Windows 的 64 位文件 ID 转成 number 会丢低位,不同文件可能撞号;
|
|
154
|
+
* - 整个子树:删除、移动、改名一个目录,或以写、删的方式把目录的本地路径交给别的工具时,按目录身份 (dev, ino)
|
|
155
|
+
* 看它是不是控制文件的祖先目录。按身份而不按路径比:macOS 的 firmlink 与 bind mount 给同一个目录不同的路径。
|
|
156
|
+
* 控制文件每次现查:主配置保存时整份换掉,inode 会变。
|
|
157
|
+
*/
|
|
158
|
+
class HostFileGuard {
|
|
159
|
+
files;
|
|
160
|
+
constructor(files) {
|
|
161
|
+
this.files = files;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* `read`:读内容(只挡密钥文件);`write`:写、删、移动(两个都挡);`subtree`:目标是目录时连子树一起查。
|
|
165
|
+
*/
|
|
166
|
+
async check(abs, mode, subtree = false) {
|
|
167
|
+
const guarded = mode === 'read' ? [this.files.secrets] : [this.files.secrets, this.files.config];
|
|
168
|
+
const target = await identify(abs);
|
|
169
|
+
for (const file of guarded) {
|
|
170
|
+
const control = await identify(file);
|
|
171
|
+
const sameFile = target.stat !== undefined &&
|
|
172
|
+
control.stat !== undefined &&
|
|
173
|
+
target.stat.dev === control.stat.dev &&
|
|
174
|
+
target.stat.ino === control.stat.ino;
|
|
175
|
+
// 含路径相同(isInside 对同一路径判内)
|
|
176
|
+
const underControl = isInside(foldCase(control.real), foldCase(target.real));
|
|
177
|
+
const containsControl = subtree && target.stat?.isDirectory() === true && (await ancestorIds(control.real)).has(idOf(target.stat));
|
|
178
|
+
if (sameFile || underControl) {
|
|
179
|
+
const what = file === this.files.secrets ? '密钥文件(只经宿主读写)' : '主配置(只经宿主修改)';
|
|
180
|
+
throw new Error(`不能经存储${mode === 'read' ? '读取' : '修改'}宿主的${what}`);
|
|
181
|
+
}
|
|
182
|
+
if (containsControl)
|
|
183
|
+
throw new Error('目录里有宿主的密钥文件或主配置,不能经存储删除、移动或交出写权限');
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const foldCase = (p) => p.toLowerCase();
|
|
188
|
+
const idOf = (s) => `${s.dev}:${s.ino}`;
|
|
189
|
+
/** 路径的真实路径与 stat;不存在时从最近的已存在祖先算真实路径、不给 stat */
|
|
190
|
+
async function identify(abs) {
|
|
191
|
+
try {
|
|
192
|
+
return { real: await realpath(abs), stat: await stat(abs, { bigint: true }) };
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
/* 不存在或读不了:往上找 */
|
|
196
|
+
}
|
|
197
|
+
const missing = [];
|
|
198
|
+
let dir = abs;
|
|
199
|
+
for (;;) {
|
|
200
|
+
missing.unshift(basename(dir));
|
|
201
|
+
const parent = dirname(dir);
|
|
202
|
+
if (parent === dir)
|
|
203
|
+
return { real: abs };
|
|
204
|
+
dir = parent;
|
|
205
|
+
try {
|
|
206
|
+
return { real: join(await realpath(dir), ...missing) };
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
/* 继续往上 */
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/** 控制文件的各级祖先目录的身份(找得到的那些) */
|
|
214
|
+
async function ancestorIds(real) {
|
|
215
|
+
const ids = new Set();
|
|
216
|
+
let dir = dirname(real);
|
|
217
|
+
for (;;) {
|
|
218
|
+
try {
|
|
219
|
+
ids.add(idOf(await stat(dir, { bigint: true })));
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
/* 不存在的跳过 */
|
|
223
|
+
}
|
|
224
|
+
const parent = dirname(dir);
|
|
225
|
+
if (parent === dir)
|
|
226
|
+
return ids;
|
|
227
|
+
dir = parent;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* 一个根的存储操作:真实权限由 StorageRootInfo 的 readable/writable/deletable 位携带,每个操作先核对。
|
|
232
|
+
* 不单独登记:{@link LocalStorage} 按 URI 的根名分给它。
|
|
154
233
|
*/
|
|
155
234
|
class ScopedStorageService {
|
|
156
235
|
root;
|
|
236
|
+
guard;
|
|
157
237
|
logger;
|
|
158
238
|
services;
|
|
159
239
|
onDispose;
|
|
160
|
-
constructor(root, logger, services,
|
|
240
|
+
constructor(root, guard, logger, services,
|
|
161
241
|
/** 本次激活的清理登记:watch 建的 fs 监听器归提供者所有,提供者关闭时一并关闭 */
|
|
162
242
|
onDispose) {
|
|
163
243
|
this.root = root;
|
|
244
|
+
this.guard = guard;
|
|
164
245
|
this.logger = logger;
|
|
165
246
|
this.services = services;
|
|
166
247
|
this.onDispose = onDispose;
|
|
@@ -192,13 +273,12 @@ class ScopedStorageService {
|
|
|
192
273
|
this.recentLogAt.set(key, now);
|
|
193
274
|
this.logger.debug(msg);
|
|
194
275
|
}
|
|
195
|
-
/** 懒解析 checkpoint
|
|
276
|
+
/** 懒解析 checkpoint 服务,在场就调 beforeMutate:写入是否处在回合里、要不要快照由它判断 */
|
|
196
277
|
async snapshot(uri, op, abs, targetUri) {
|
|
197
|
-
//
|
|
198
|
-
//
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
if (!cp?.isActive())
|
|
278
|
+
// 动态查而不写进 uses:checkpoint 自己要用存储,声明它会让两者互为依赖。动态查到的不算声明依赖,
|
|
279
|
+
// 与这里需要的语义一致(快照能力有就用、没有就直接落盘,不设激活闸)。
|
|
280
|
+
const cp = this.services.get(checkpoint);
|
|
281
|
+
if (!cp)
|
|
202
282
|
return;
|
|
203
283
|
await cp.beforeMutate(uri, op, async () => {
|
|
204
284
|
// 只有「目录」与「文件不存在」才返回 null —— checkpoint 据此判定为本回合新建。
|
|
@@ -274,6 +354,7 @@ class ScopedStorageService {
|
|
|
274
354
|
const relPath = this.parseSelfUri(uri);
|
|
275
355
|
this.requirePermission('readable');
|
|
276
356
|
const abs = await this.resolveExisting(relPath);
|
|
357
|
+
await this.guard.check(abs, 'read');
|
|
277
358
|
const s = await stat(abs);
|
|
278
359
|
if (s.isDirectory())
|
|
279
360
|
throw new Error('不能读取目录');
|
|
@@ -286,6 +367,7 @@ class ScopedStorageService {
|
|
|
286
367
|
const relPath = this.parseSelfUri(uri);
|
|
287
368
|
this.requirePermission('readable');
|
|
288
369
|
const abs = await this.resolveExisting(relPath);
|
|
370
|
+
await this.guard.check(abs, 'read');
|
|
289
371
|
const s = await stat(abs);
|
|
290
372
|
if (s.isDirectory())
|
|
291
373
|
throw new Error('不能读取目录');
|
|
@@ -307,18 +389,20 @@ class ScopedStorageService {
|
|
|
307
389
|
const relPath = this.parseSelfUri(uri);
|
|
308
390
|
this.requirePermission('readable');
|
|
309
391
|
const abs = await this.resolveExisting(relPath);
|
|
392
|
+
await this.guard.check(abs, 'read');
|
|
310
393
|
const fileStat = await this.statFromAbs(abs, relPath);
|
|
311
394
|
if (fileStat.isDirectory)
|
|
312
395
|
throw new Error('不能下载目录');
|
|
313
396
|
this.logger.info(`storage.download ${toUri(this.root.name, relPath)} size=${fileStat.size}`);
|
|
314
397
|
return { stream: createReadStream(abs), stat: fileStat };
|
|
315
398
|
}
|
|
316
|
-
async writeFile(uri, data) {
|
|
399
|
+
async writeFile(uri, data, options) {
|
|
317
400
|
const relPath = this.parseSelfUri(uri);
|
|
318
401
|
this.requirePermission('writable');
|
|
319
402
|
if (!relPath)
|
|
320
403
|
throw new Error('不能覆盖根目录');
|
|
321
404
|
const abs = await this.resolveForWrite(relPath);
|
|
405
|
+
await this.guard.check(abs, 'write');
|
|
322
406
|
// 目标是目录 → 在快照之前就拒。写目录反正必失败(rename 覆盖不了非空目录),
|
|
323
407
|
// 但放它走到 snapshot 会让 checkpoint 记一条幽灵 write-new(loadOriginal 对目录返回 null),
|
|
324
408
|
// 回滚时按 write-new 把整棵目录删掉。
|
|
@@ -330,14 +414,14 @@ class ScopedStorageService {
|
|
|
330
414
|
// 原子写:先写临时文件再 rename(同分区原子覆盖),防崩溃/并发半写损坏关键持久化(users.json/scheduler-jobs 等)。
|
|
331
415
|
// 随机段避免同进程同毫秒并发写同一路径撞出同名 tmp(一方 rename 后另一方 ENOENT,或串写对方内容)。
|
|
332
416
|
const tmp = `${abs}.tmp.${process.pid}.${Date.now()}.${randomBytes(4).toString('hex')}`;
|
|
333
|
-
//
|
|
334
|
-
//
|
|
335
|
-
|
|
336
|
-
const
|
|
417
|
+
// rename 后目标继承 tmp 的权限位:凭据一律 0600;覆盖已有文件时沿用它的权限位,否则可执行脚本写一次就从 755
|
|
418
|
+
// 掉到 644;其余按默认。权限位在建 tmp 时就给上,内容从不以更宽的权限落盘;chmod 再对齐被 umask 收窄的部分
|
|
419
|
+
//(只会比给定的窄),打在 tmp 上而非 rename 后的目标,避开两步之间的窗口,失败不拖累写入本身。
|
|
420
|
+
const mode = options?.secret ? 0o600 : existing ? existing.mode & 0o777 : undefined;
|
|
337
421
|
try {
|
|
338
|
-
await writeFile(tmp, data);
|
|
339
|
-
if (
|
|
340
|
-
await chmod(tmp,
|
|
422
|
+
await writeFile(tmp, data, { mode });
|
|
423
|
+
if (mode !== undefined)
|
|
424
|
+
await chmod(tmp, mode).catch(() => { });
|
|
341
425
|
await rename(tmp, abs);
|
|
342
426
|
}
|
|
343
427
|
catch (err) {
|
|
@@ -357,6 +441,8 @@ class ScopedStorageService {
|
|
|
357
441
|
const abs = await this.resolveExisting(relPath);
|
|
358
442
|
const newRel = normalizeRelPath(`${dirname(relPath) === '.' ? '' : dirname(relPath)}/${newName}`);
|
|
359
443
|
const target = await this.resolveForWrite(newRel);
|
|
444
|
+
await this.guard.check(abs, 'write', true);
|
|
445
|
+
await this.guard.check(target, 'write');
|
|
360
446
|
try {
|
|
361
447
|
await lstat(target);
|
|
362
448
|
throw new Error('目标名称已存在');
|
|
@@ -385,6 +471,8 @@ class ScopedStorageService {
|
|
|
385
471
|
throw new Error('目标不能是根目录');
|
|
386
472
|
const absFrom = await this.resolveExisting(fromRel);
|
|
387
473
|
const absTo = await this.resolveForWrite(toRel);
|
|
474
|
+
await this.guard.check(absFrom, 'write', true);
|
|
475
|
+
await this.guard.check(absTo, 'write');
|
|
388
476
|
try {
|
|
389
477
|
await lstat(absTo);
|
|
390
478
|
throw new Error('目标已存在');
|
|
@@ -409,6 +497,7 @@ class ScopedStorageService {
|
|
|
409
497
|
if (!relPath)
|
|
410
498
|
throw new Error('根目录已存在,无需创建');
|
|
411
499
|
const abs = await this.resolveForWrite(relPath);
|
|
500
|
+
await this.guard.check(abs, 'write');
|
|
412
501
|
await mkdir(abs, { recursive: true }); // recursive:建全路径;已存在则 no-op(幂等)
|
|
413
502
|
this.logger.info(`storage.mkdir ${toUri(this.root.name, relPath)}`);
|
|
414
503
|
return toUri(this.root.name, relPath);
|
|
@@ -423,6 +512,7 @@ class ScopedStorageService {
|
|
|
423
512
|
// (isInside 对 rel==='' 判内、normalizeRelPath 不中和 `..`;审计发现的旁路)。
|
|
424
513
|
if (abs === (await realpath(this.root.realPath)))
|
|
425
514
|
throw new Error('不能删除根目录');
|
|
515
|
+
await this.guard.check(abs, 'write', true);
|
|
426
516
|
await this.snapshot(toUri(this.root.name, relPath), 'delete', abs);
|
|
427
517
|
await rm(abs, { recursive: true, force: false });
|
|
428
518
|
this.logger.info(`storage.delete ${toUri(this.root.name, relPath)}`);
|
|
@@ -432,6 +522,9 @@ class ScopedStorageService {
|
|
|
432
522
|
const permission = access === 'delete' ? 'deletable' : access === 'write' ? 'writable' : 'readable';
|
|
433
523
|
this.requirePermission(permission);
|
|
434
524
|
const abs = access === 'write' ? await this.resolveForWrite(relPath) : await this.resolveExisting(relPath);
|
|
525
|
+
// 以写、删的方式交出目录时连子树一起查。以读的方式交出目录(命令的工作目录等)不查子树:拿到目录的工具
|
|
526
|
+
// 本来就能按绝对路径读任何文件,挡它们靠沙箱的拒读清单,在这里拒只会让家目录的上级目录用不了
|
|
527
|
+
await this.guard.check(abs, access === 'read' ? 'read' : 'write', access !== 'read');
|
|
435
528
|
this.logger.debug(`storage.resolveLocalPath ${toUri(this.root.name, relPath)} access=${access}`);
|
|
436
529
|
return abs;
|
|
437
530
|
}
|
|
@@ -540,7 +633,7 @@ class ScopedStorageService {
|
|
|
540
633
|
parseSelfUri(uri) {
|
|
541
634
|
const { root, relPath } = parseUri(uri);
|
|
542
635
|
if (root !== this.root.name) {
|
|
543
|
-
throw new Error(`URI 根 "${root}"
|
|
636
|
+
throw new Error(`URI 根 "${root}" 不是存储根 ${this.root.name}(不能跨根移动)`);
|
|
544
637
|
}
|
|
545
638
|
return relPath;
|
|
546
639
|
}
|
|
@@ -616,8 +709,66 @@ class ScopedStorageService {
|
|
|
616
709
|
return info;
|
|
617
710
|
}
|
|
618
711
|
}
|
|
619
|
-
|
|
620
|
-
|
|
712
|
+
/**
|
|
713
|
+
* 本插件登记的唯一一个 storage 提供者:按 URI 的根名分给各根的 {@link ScopedStorageService}。根表在登记之前就建好,
|
|
714
|
+
* 依赖方激活时所有根都在。根名不认识时同步抛错并列出已有的根
|
|
715
|
+
*/
|
|
716
|
+
class LocalStorage {
|
|
717
|
+
roots;
|
|
718
|
+
constructor(roots) {
|
|
719
|
+
this.roots = roots;
|
|
720
|
+
}
|
|
721
|
+
route(uri) {
|
|
722
|
+
const { root } = parseUri(uri);
|
|
723
|
+
const scoped = this.roots.get(root);
|
|
724
|
+
if (!scoped)
|
|
725
|
+
throw new Error(`未知存储根: ${root}(已注册根: ${[...this.roots.keys()].join(', ') || '(无)'})`);
|
|
726
|
+
return scoped;
|
|
727
|
+
}
|
|
728
|
+
listRoots() {
|
|
729
|
+
return [...this.roots.values()].flatMap(scoped => scoped.listRoots());
|
|
730
|
+
}
|
|
731
|
+
list(uri) {
|
|
732
|
+
return this.route(uri).list(uri);
|
|
733
|
+
}
|
|
734
|
+
stat(uri) {
|
|
735
|
+
return this.route(uri).stat(uri);
|
|
736
|
+
}
|
|
737
|
+
readFile(uri, encoding) {
|
|
738
|
+
return this.route(uri).readFile(uri, encoding);
|
|
739
|
+
}
|
|
740
|
+
readFileRange(uri, start, end) {
|
|
741
|
+
return this.route(uri).readFileRange(uri, start, end);
|
|
742
|
+
}
|
|
743
|
+
createReadStream(uri) {
|
|
744
|
+
return this.route(uri).createReadStream(uri);
|
|
745
|
+
}
|
|
746
|
+
writeFile(uri, data, options) {
|
|
747
|
+
return this.route(uri).writeFile(uri, data, options);
|
|
748
|
+
}
|
|
749
|
+
rename(uri, newName) {
|
|
750
|
+
return this.route(uri).rename(uri, newName);
|
|
751
|
+
}
|
|
752
|
+
/** 只在同一个根里移动:目标的根由那个根自己核对 */
|
|
753
|
+
move(fromUri, toUri) {
|
|
754
|
+
return this.route(fromUri).move(fromUri, toUri);
|
|
755
|
+
}
|
|
756
|
+
mkdir(uri) {
|
|
757
|
+
return this.route(uri).mkdir(uri);
|
|
758
|
+
}
|
|
759
|
+
delete(uri) {
|
|
760
|
+
return this.route(uri).delete(uri);
|
|
761
|
+
}
|
|
762
|
+
resolveLocalPath(uri, access) {
|
|
763
|
+
return this.route(uri).resolveLocalPath(uri, access);
|
|
764
|
+
}
|
|
765
|
+
watch(uri, listener) {
|
|
766
|
+
return this.route(uri).watch(uri, listener);
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
async function createRoot(home, name, label, kind, rootPath, options) {
|
|
770
|
+
// 相对路径按家目录解析:进程的 cwd 不带语义
|
|
771
|
+
const abs = resolve(home, rootPath);
|
|
621
772
|
// path 已是文件系统根('/')等存在的目录时不需要创建;其它情况 mkdir -p
|
|
622
773
|
if (rootPath !== '/') {
|
|
623
774
|
await mkdir(abs, { recursive: true });
|
|
@@ -631,26 +782,60 @@ async function createRoot(name, label, kind, rootPath, options) {
|
|
|
631
782
|
};
|
|
632
783
|
}
|
|
633
784
|
const ROOT_NAME_RE = /^[a-zA-Z][a-zA-Z0-9_-]*$/;
|
|
634
|
-
/**
|
|
635
|
-
async function
|
|
636
|
-
|
|
785
|
+
/** 按一条根配置建目录、解析真实路径并打注册日志;失败时告警并返回 undefined */
|
|
786
|
+
async function openRoot(home, item, logger) {
|
|
787
|
+
const { name } = item;
|
|
788
|
+
try {
|
|
789
|
+
const root = await createRoot(home, name, item.label || name, item.kind || 'custom', item.path, {
|
|
790
|
+
browsable: item.browsable === true,
|
|
791
|
+
readable: item.readable !== false,
|
|
792
|
+
writable: item.writable === true,
|
|
793
|
+
deletable: item.deletable === true,
|
|
794
|
+
});
|
|
795
|
+
// 按路径**深度**判定,不按字符串长度:`/x` 只是个普通目录却因为长度 2 被误报,
|
|
796
|
+
// 而 `/etc`(长度 4)这种真该提醒的反而漏报。深度 ≤ 1 才是「根或根下一层」。
|
|
797
|
+
// 这只影响日志级别与提示文案,不参与任何 grant/deny —— 能访问什么由 realPath
|
|
798
|
+
// 加根的 read/write/delete 位决定,与本判断无关。
|
|
799
|
+
const depth = root.realPath.split('/').filter(Boolean).length;
|
|
800
|
+
const isHostScope = depth <= 1;
|
|
801
|
+
const log = isHostScope ? logger.warn.bind(logger) : logger.info.bind(logger);
|
|
802
|
+
log(`root ${name}:/ -> ${root.realPath}` +
|
|
803
|
+
` (browsable=${root.browsable} read=${root.readable} write=${root.writable} delete=${root.deletable})` +
|
|
804
|
+
(isHostScope ? ' ⚠ 该根接近/等于文件系统根,agent 通过此根可访问宿主机大量文件' : ''));
|
|
805
|
+
return root;
|
|
806
|
+
}
|
|
807
|
+
catch {
|
|
808
|
+
logger.warn(`root ${name} 注册失败,请检查 path 与目录权限`);
|
|
809
|
+
return undefined;
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
/**
|
|
813
|
+
* 从已校验的 roots 构造用户根;空数组时注册默认的 workspace 根。与内部根同名的项跳过并告警,告警里写明配置的路径
|
|
814
|
+
* 与内部根实际指向的位置:升级前把 data、tmp 等根指到别处的配置,那里的数据要搬过去。
|
|
815
|
+
*/
|
|
816
|
+
async function buildRoots(home, parsedRoots, internal, logger) {
|
|
817
|
+
let entries = parsedRoots.slice();
|
|
637
818
|
if (entries.length === 0) {
|
|
638
|
-
logger.warn('storage roots
|
|
819
|
+
logger.warn('storage roots 配置为空,将注册默认根 workspace');
|
|
639
820
|
entries = DEFAULT_ROOTS.slice();
|
|
640
821
|
}
|
|
641
822
|
const out = [];
|
|
642
823
|
const seen = new Set();
|
|
643
824
|
for (const item of entries) {
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
const name = String(item.name || '').trim();
|
|
647
|
-
const path = String(item.path ?? '').trim();
|
|
825
|
+
const name = item.name.trim();
|
|
826
|
+
const path = item.path.trim();
|
|
648
827
|
if (!name || !path) {
|
|
649
|
-
logger.warn(
|
|
828
|
+
logger.warn('roots 跳过无效项:name/path 为空');
|
|
650
829
|
continue;
|
|
651
830
|
}
|
|
652
831
|
if (!ROOT_NAME_RE.test(name)) {
|
|
653
|
-
logger.warn(
|
|
832
|
+
logger.warn('roots 跳过非法根名(仅允许字母/数字/下划线/连字符,且需以字母开头)');
|
|
833
|
+
continue;
|
|
834
|
+
}
|
|
835
|
+
const internalPath = internal.get(name);
|
|
836
|
+
if (internalPath !== undefined) {
|
|
837
|
+
logger.warn(`roots 跳过 ${name}(配置的 path:${path}):与插件内部根同名,${name}:/ 指向 ${internalPath};` +
|
|
838
|
+
'配置里的这一项可以删掉,原来放在别处的数据要搬到这里');
|
|
654
839
|
continue;
|
|
655
840
|
}
|
|
656
841
|
if (seen.has(name)) {
|
|
@@ -658,32 +843,13 @@ async function buildRoots(rawRoots, logger) {
|
|
|
658
843
|
continue;
|
|
659
844
|
}
|
|
660
845
|
seen.add(name);
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
browsable: item.browsable === true,
|
|
664
|
-
readable: item.readable !== false,
|
|
665
|
-
writable: item.writable === true,
|
|
666
|
-
deletable: item.deletable === true,
|
|
667
|
-
});
|
|
668
|
-
// 按路径**深度**判定,不按字符串长度:`/x` 只是个普通目录却因为长度 2 被误报,
|
|
669
|
-
// 而 `/etc`(长度 4)这种真该提醒的反而漏报。深度 ≤ 1 才是「根或根下一层」。
|
|
670
|
-
// 这只影响日志级别与提示文案,不参与任何 grant/deny —— 能访问什么由 realPath
|
|
671
|
-
// 加根的 read/write/delete 位决定,与本判断无关。
|
|
672
|
-
const depth = root.realPath.split('/').filter(Boolean).length;
|
|
673
|
-
const isHostScope = depth <= 1;
|
|
674
|
-
const log = isHostScope ? logger.warn.bind(logger) : logger.info.bind(logger);
|
|
675
|
-
log(`root ${name}:/ -> ${root.realPath}` +
|
|
676
|
-
` (browsable=${root.browsable} read=${root.readable} write=${root.writable} delete=${root.deletable})` +
|
|
677
|
-
(isHostScope ? ' ⚠ 该根接近/等于文件系统根,agent 通过此根可访问宿主机大量文件' : ''));
|
|
846
|
+
const root = await openRoot(home, { ...item, name, path }, logger);
|
|
847
|
+
if (root)
|
|
678
848
|
out.push(root);
|
|
679
|
-
}
|
|
680
|
-
catch (err) {
|
|
681
|
-
logger.warn(`root 注册失败 ${name}: ${err instanceof Error ? err.message : String(err)}`);
|
|
682
|
-
}
|
|
683
849
|
}
|
|
684
850
|
return out;
|
|
685
851
|
}
|
|
686
|
-
const uses = { provide, services, logger, lifecycle, config, doctor: optional(doctor) };
|
|
852
|
+
const uses = { provide, services, logger, lifecycle, config, paths: hostPaths, doctor: optional(doctor) };
|
|
687
853
|
export default definePlugin({
|
|
688
854
|
name: PLUGIN_NAME,
|
|
689
855
|
displayName: '本地存储根(命名 + 路径解析)',
|
|
@@ -692,29 +858,35 @@ export default definePlugin({
|
|
|
692
858
|
provides: [storage],
|
|
693
859
|
uses,
|
|
694
860
|
async apply(caps) {
|
|
695
|
-
const logger = caps.logger.child('storage');
|
|
696
|
-
const
|
|
861
|
+
const logger = caps.logger.use.child('storage');
|
|
862
|
+
const cfg = parseConfig(configSchema, caps.config.use, logger);
|
|
863
|
+
const paths = caps.paths.use;
|
|
864
|
+
const home = paths.home;
|
|
865
|
+
const guard = new HostFileGuard({ secrets: paths.secrets, config: paths.config });
|
|
866
|
+
const internal = internalRoots(paths);
|
|
867
|
+
const roots = await buildRoots(home, cfg.roots, new Map(internal.map(r => [r.name, r.path])), logger);
|
|
868
|
+
// 插件自己的数据都在内部根里;用户根一个都没有时只是缺了文件工具的工作根,照常提供存储
|
|
697
869
|
if (roots.length === 0)
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
870
|
+
logger.warn('没有可用的用户根(文件工具的工作根),请检查 roots 配置');
|
|
871
|
+
for (const item of internal) {
|
|
872
|
+
const root = await openRoot(home, item, logger);
|
|
873
|
+
if (root)
|
|
874
|
+
roots.push(root);
|
|
875
|
+
}
|
|
876
|
+
// 全部根就绪之后整体登记一个提供者,根在它内部路由:依赖方激活时就看得到每一个根
|
|
877
|
+
const scoped = new Map();
|
|
703
878
|
for (const root of roots) {
|
|
704
879
|
if (!root.readable && !root.writable && !root.deletable) {
|
|
705
880
|
logger.warn(`root ${root.name} 没有任何权限位,跳过注册`);
|
|
706
881
|
continue;
|
|
707
882
|
}
|
|
708
|
-
|
|
709
|
-
caps.provide(storage, scoped, {
|
|
710
|
-
entryId: `${caps.lifecycle.id}/${root.name}`,
|
|
711
|
-
label: root.label || `本地根 ${root.name}`,
|
|
712
|
-
});
|
|
883
|
+
scoped.set(root.name, new ScopedStorageService(root, guard, logger, caps.services.use, caps.lifecycle.use.onDispose));
|
|
713
884
|
}
|
|
885
|
+
caps.provide.use(storage, new LocalStorage(scoped), { label: '本地存储' });
|
|
714
886
|
// 诊断检查项:探测每个 writable root 是否真的可写。
|
|
715
|
-
// 由 storage
|
|
716
|
-
//
|
|
717
|
-
caps.doctor.registerCheck({
|
|
887
|
+
// 由 storage 插件按全部根(含内置根)上报,而非 doctor 硬编码 fs.data:
|
|
888
|
+
// 按根上报才能反映用户自定义根(如 host:/、project_x)的真实状态。
|
|
889
|
+
caps.doctor.use.registerCheck({
|
|
718
890
|
id: 'storage.roots',
|
|
719
891
|
category: 'filesystem',
|
|
720
892
|
async run() {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/plugin-storage-local",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"url": "https://github.com/AalisLabs/Aalis/issues"
|
|
13
13
|
},
|
|
14
14
|
"homepage": "https://github.com/AalisLabs/Aalis#readme",
|
|
15
|
-
"description": "
|
|
15
|
+
"description": "存储服务的本地实现:命名根与路径解析(非沙箱)",
|
|
16
16
|
"type": "module",
|
|
17
17
|
"keywords": [
|
|
18
18
|
"aalis",
|
|
@@ -24,17 +24,19 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aalis/
|
|
28
|
-
"@aalis/
|
|
29
|
-
"@aalis/api-
|
|
27
|
+
"@aalis/api-checkpoint": ">=0.1.0 <1.0.0",
|
|
28
|
+
"@aalis/schema-config": ">=0.15.0 <1.0.0",
|
|
29
|
+
"@aalis/api-doctor": ">=0.8.0 <1.0.0",
|
|
30
|
+
"@aalis/api-host-paths": ">=0.1.0 <1.0.0",
|
|
31
|
+
"@aalis/api-storage": ">=0.8.0 <1.0.0"
|
|
30
32
|
},
|
|
31
33
|
"devDependencies": {
|
|
32
34
|
"@types/node": "^22.0.0",
|
|
33
35
|
"typescript": "^5.7.0",
|
|
34
|
-
"@aalis/core": "0.
|
|
36
|
+
"@aalis/core": "0.20.0"
|
|
35
37
|
},
|
|
36
38
|
"peerDependencies": {
|
|
37
|
-
"@aalis/core": ">=0.
|
|
39
|
+
"@aalis/core": ">=0.20.0 <1.0.0"
|
|
38
40
|
},
|
|
39
41
|
"aalis": {
|
|
40
42
|
"service": {
|
|
@@ -46,6 +48,7 @@
|
|
|
46
48
|
],
|
|
47
49
|
"required": [
|
|
48
50
|
"config",
|
|
51
|
+
"host-paths",
|
|
49
52
|
"lifecycle",
|
|
50
53
|
"logger",
|
|
51
54
|
"provide",
|