@aalis/runtime 0.15.0 → 0.16.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 (55) hide show
  1. package/README.md +11 -2
  2. package/dist/config-store.d.ts +49 -12
  3. package/dist/config-store.d.ts.map +1 -1
  4. package/dist/config-store.js +419 -58
  5. package/dist/config-store.js.map +1 -1
  6. package/dist/config-sync.d.ts +19 -8
  7. package/dist/config-sync.d.ts.map +1 -1
  8. package/dist/config-sync.js +81 -58
  9. package/dist/config-sync.js.map +1 -1
  10. package/dist/console-sink.d.ts +1 -1
  11. package/dist/file-logger.d.ts +4 -4
  12. package/dist/file-logger.d.ts.map +1 -1
  13. package/dist/file-logger.js +6 -5
  14. package/dist/file-logger.js.map +1 -1
  15. package/dist/home.d.ts +64 -0
  16. package/dist/home.d.ts.map +1 -0
  17. package/dist/home.js +229 -0
  18. package/dist/home.js.map +1 -0
  19. package/dist/host-logs.d.ts +9 -0
  20. package/dist/host-logs.d.ts.map +1 -0
  21. package/dist/host-logs.js +104 -0
  22. package/dist/host-logs.js.map +1 -0
  23. package/dist/index.d.ts +5 -3
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +7 -4
  26. package/dist/index.js.map +1 -1
  27. package/dist/instance-lock.d.ts +56 -0
  28. package/dist/instance-lock.d.ts.map +1 -0
  29. package/dist/instance-lock.js +281 -0
  30. package/dist/instance-lock.js.map +1 -0
  31. package/dist/node-modules-loader.d.ts +2 -2
  32. package/dist/node-modules-loader.d.ts.map +1 -1
  33. package/dist/node-modules-loader.js +8 -4
  34. package/dist/node-modules-loader.js.map +1 -1
  35. package/dist/plugin-discovery.d.ts +9 -4
  36. package/dist/plugin-discovery.d.ts.map +1 -1
  37. package/dist/plugin-discovery.js +28 -16
  38. package/dist/plugin-discovery.js.map +1 -1
  39. package/dist/providers.d.ts +38 -13
  40. package/dist/providers.d.ts.map +1 -1
  41. package/dist/providers.js +92 -216
  42. package/dist/providers.js.map +1 -1
  43. package/dist/secrets.d.ts +44 -0
  44. package/dist/secrets.d.ts.map +1 -0
  45. package/dist/secrets.js +104 -0
  46. package/dist/secrets.js.map +1 -0
  47. package/dist/start.d.ts +19 -12
  48. package/dist/start.d.ts.map +1 -1
  49. package/dist/start.js +166 -43
  50. package/dist/start.js.map +1 -1
  51. package/dist/yaml-file.d.ts +35 -0
  52. package/dist/yaml-file.d.ts.map +1 -0
  53. package/dist/yaml-file.js +213 -0
  54. package/dist/yaml-file.js.map +1 -0
  55. package/package.json +13 -7
package/dist/providers.js CHANGED
@@ -1,18 +1,25 @@
1
1
  import { spawn } from 'node:child_process';
2
- import { randomBytes } from 'node:crypto';
3
- import { chmodSync, existsSync, watch as fsWatch, readFileSync, renameSync, rmSync, statSync, writeFileSync, } from 'node:fs';
2
+ import { existsSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
4
3
  import { readdir } from 'node:fs/promises';
5
- import { basename, dirname, resolve } from 'node:path';
6
- import { ConfigSaveRefusedError } from '@aalis/api-host-config';
4
+ import { resolve } from 'node:path';
7
5
  import { DefaultLogger } from '@aalis/core';
8
- import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
6
+ import { CORE_CONFIG_SCHEMA, defaultsFrom } from '@aalis/schema-config';
7
+ import { stringify as stringifyYaml } from 'yaml';
8
+ import { assertAbsolute } from './home.js';
9
9
  import { HOST_CORE_DIR, importPluginDefinition, isLoadablePlugin, warnLikelyPluginMissingKeyword, } from './node-modules-loader.js';
10
10
  import { disarmTerminalStateRestorer } from './terminal.js';
11
+ import { openYamlFile } from './yaml-file.js';
11
12
  // ============================================================
12
13
  // FsYamlConfigProvider —— 从 YAML 文件加载+持久化配置
13
14
  // ============================================================
14
- const DEFAULT_CONFIG_FILE = 'aalis.config.yaml';
15
- const CORE_TOP_LEVEL_KEYS = new Set(['name', 'logLevel', 'plugins', 'disabledPlugins', 'servicePreferences']);
15
+ const CORE_TOP_LEVEL_KEYS = new Set([
16
+ 'name',
17
+ 'logLevel',
18
+ 'plugins',
19
+ 'disabledPlugins',
20
+ 'servicePreferences',
21
+ 'pluginServicePreferences',
22
+ ]);
16
23
  /**
17
24
  * 把 AalisConfig 序列化为 YAML 文本,按固定顺序输出 core 字段,
18
25
  * 透传其余顶层字段(业务字段,宿主不解释)。
@@ -28,6 +35,9 @@ function buildSaveYaml(config) {
28
35
  if (Object.keys(prefs).length > 0) {
29
36
  obj.servicePreferences = prefs;
30
37
  }
38
+ const pluginPrefs = config.pluginServicePreferences ?? {};
39
+ if (Object.keys(pluginPrefs).length > 0)
40
+ obj.pluginServicePreferences = pluginPrefs;
31
41
  for (const [key, value] of Object.entries(config)) {
32
42
  if (CORE_TOP_LEVEL_KEYS.has(key))
33
43
  continue;
@@ -48,225 +58,60 @@ function buildSaveYaml(config) {
48
58
  return stringifyYaml(obj, { lineWidth: 0 });
49
59
  }
50
60
  /**
51
- * 创建一个基于 YAML 文件的 ConfigProvider。
61
+ * 创建一个基于 YAML 文件的 ConfigProvider。`absPath` 是配置文件的绝对路径(startAalis 传家目录里的 aalis.config.yaml)。
52
62
  *
53
- * - 同步读取 + 解析(值原样加载,不做任何替换——`${VAR}` 插值已随 `.env` 机制删除)
54
- * - `save()` 同步写回;写前比对盘上内容,有尚未生效的外部修改时拒写(抛 {@link ConfigSaveRefusedError},只带路径)
55
- * - `watch()` 监听**配置文件所在目录**(按文件名过滤)+ 300ms debounce,
56
- * 并通过与 `rawYaml` 的内容比对去重,避免自激;拒写之后的下一次变更不去重;武装后立即对账一次
63
+ * - 同步读取 + 解析(值原样加载,不做任何替换);文件不存在时告警并以内存默认配置启动
64
+ * - `save()` 原子写回;写前比对盘上内容,有尚未生效的外部修改时拒写(抛 `ConfigSaveRefusedError`,只带路径)
65
+ * - `watch()` 监听配置文件所在目录(按文件名过滤)+ 300ms 去抖,按内容比对去重,避免自激;武装后立即对账一次
57
66
  *
58
- * 返回 config 快照与 provider,供宿主组装 App。
67
+ * 读写与监听的细节见 {@link openYamlFile},与密钥文件共用。
59
68
  */
60
- export function createFsYamlConfigProvider(configPath) {
61
- const absPath = configPath ? resolve(configPath) : resolve(process.cwd(), DEFAULT_CONFIG_FILE);
62
- const dataDir = dirname(absPath);
63
- let rawYaml = null;
64
- // 拒写之后调用方手里的配置文档(常连同运行态)已领先于文件:下一次文件变更不论内容是否等于 rawYaml
65
- // 都要投递,让宿主按文件重新对账。否则把文件原样改回的「修好」会被当成空变更跳过,文档与运行态从此
66
- // 偏离文件,下一次成功保存还会把被拒的改动写进去。
67
- let reconcilePending = false;
68
- let watcher = null;
69
- let debounceTimer = null;
70
- // 走 LogHub 而非 console:file logger 只订阅 LogHub,脱终端部署下 stderr
71
- // 进不了 data/latest.log,console 版的告警等于没加。
69
+ export function createFsYamlConfigProvider(absPath) {
70
+ assertAbsolute('配置文件路径', absPath);
71
+ // 走 LogHub 而非 console:file logger 只订阅 LogHub,脱终端部署下 stderr 进不了 logs/latest.log
72
72
  const logger = new DefaultLogger('aalis:config');
73
- /**
74
- * 解析错误只取首行:yaml 的完整消息会内嵌出错位置附近的源码摘录,而配置
75
- * 文件里有真实密钥——摘录随日志进 data/latest.log 即泄漏(WebUI 日志面板、
76
- * 崩溃落盘、外贴排查都是暴露面)。诊断种类与行列号都在首行;
77
- * **位置进日志,内容不进**(与配置校验消息不带值同一条纪律)。
78
- */
79
- const parseErrorFirstLine = (err) => (err instanceof Error ? err.message : String(err)).split('\n')[0];
80
- /** 值必须是纯映射才算配置:裸标量/数组会被下游按 Object.entries 摊开写回垃圾。 */
81
- const describeNonMapping = (v) => {
82
- if (v === null)
83
- return 'empty';
84
- if (Array.isArray(v))
85
- return 'array';
86
- if (typeof v !== 'object')
87
- return typeof v;
88
- return null;
89
- };
90
- function loadFromDisk() {
91
- if (existsSync(absPath)) {
92
- rawYaml = readFileSync(absPath, 'utf-8');
93
- let parsed;
94
- try {
95
- parsed = parseYaml(rawYaml) ?? {};
96
- }
97
- catch (err) {
98
- // 启动语法错误照样响亮拒启,但剥离源码摘录再上抛——崩溃日志同为暴露面。
99
- throw new Error(`配置文件解析失败:${parseErrorFirstLine(err)}(${absPath})`);
100
- }
101
- // 启动坏就该响亮:语法错误本就上抛,「解析成功但不是配置对象」同样上抛,
102
- // 不能放进 core 摊成 "0": f 再写回磁盘。空文件视同缺省(?? {} 已兜)。
103
- const kind = describeNonMapping(parsed);
104
- if (kind) {
105
- throw new Error(`配置文件不是一个配置对象(得到 ${kind}):${absPath}`);
106
- }
107
- return parsed;
108
- }
109
- logger.warn(`配置文件不存在(${absPath}),使用内存默认配置启动`);
110
- rawYaml = null;
111
- return { name: 'Aalis', logLevel: 'info', plugins: {} };
112
- }
113
- const initialConfig = loadFromDisk();
114
- const provider = {
115
- save(config) {
116
- // 写前比对磁盘实况:盘上内容必须仍是本进程最后读入或写出的那份。不是,就有尚未生效的
117
- // 外部修改(去抖窗口内、监听未武装、解析失败被搁置、另一个进程写过)——整份覆写会把它
118
- // 静默吃掉,所以拒写,让调用方收到拒绝。文件不存在时没有可保护的内容,照写。
119
- let onDisk = null;
120
- try {
121
- onDisk = readFileSync(absPath, 'utf-8');
122
- }
123
- catch (err) {
124
- if (err.code !== 'ENOENT')
125
- throw err;
126
- }
127
- if (onDisk !== null && onDisk !== rawYaml) {
128
- reconcilePending = true;
129
- throw new ConfigSaveRefusedError(`配置文件有尚未生效的外部修改,为免覆盖已拒绝本次保存(${absPath})`);
130
- }
131
- const yaml = buildSaveYaml(config);
132
- // 原子写:先写临时文件再 rename(同目录同分区,rename 原子覆盖)。
133
- // 直接 writeFileSync 是 O_CREAT|O_TRUNC——写中断(磁盘写满 / 进程被杀)时截断已经发生、
134
- // 写入却没完成,盘上留下 0 字节或半截 YAML。而空文件会被 loadFromDisk 当成「空配置」放行,
135
- // 随后 config-sync 按 schema 回填并再次存盘,没有 default 的 apiKey 就此永久消失,
136
- // 连「文件坏了」的现场都不留。同仓 plugin-storage-local 早已为同样的理由做原子写。
137
- // watch() 守的是目录而非文件(见下),所以 rename 换 inode 不会打断热重载。
138
- const tmp = `${absPath}.tmp.${process.pid}.${randomBytes(4).toString('hex')}`;
139
- // 临时文件建出来就是收紧的权限:沿用原文件的权限位,没有原文件(或取不到)时用 0o600。
140
- // 配置文件常含密钥:按默认 umask(通常 0644)建出再 chmod,其间或进程在 rename 前被杀时,
141
- // 目录里就有一份权限更宽的密钥副本;rename 让目标继承 tmp 的权限,用户 chmod 600 过的也不能退回 0644。
142
- let mode = 0o600;
143
- try {
144
- mode = statSync(absPath).mode & 0o777;
145
- }
146
- catch {
147
- /* 原文件不存在或取不到权限:按 0o600 建 */
148
- }
149
- try {
150
- writeFileSync(tmp, yaml, { encoding: 'utf-8', mode });
151
- // 建文件时的 mode 还会被 umask 收窄;对齐回目标权限位,至多放宽到原文件本就有的程度
152
- try {
153
- chmodSync(tmp, mode);
154
- }
155
- catch {
156
- /* 对不齐就保持建出时更窄的权限,不拖累写入本身 */
157
- }
158
- renameSync(tmp, absPath);
159
- }
160
- catch (err) {
161
- // 写入或改名失败:临时文件是整份配置(含密钥),不能留在配置目录里
162
- try {
163
- rmSync(tmp, { force: true });
164
- }
165
- catch {
166
- /* 删不掉也要把原始错误传出去 */
167
- }
168
- throw err;
169
- }
170
- rawYaml = yaml;
171
- reconcilePending = false;
73
+ const file = openYamlFile(absPath, {
74
+ label: '配置文件',
75
+ logger,
76
+ serialize: buildSaveYaml,
77
+ missing: () => {
78
+ logger.warn(`配置文件不存在(${absPath}),使用内存默认配置启动`);
79
+ // 名称与日志等级取 CORE_CONFIG_SCHEMA 的默认值,与配置文档补缺省同一来源
80
+ const { name, logLevel } = defaultsFrom(CORE_CONFIG_SCHEMA);
81
+ return { name: name, logLevel: logLevel, plugins: {} };
172
82
  },
173
- watch(onChange) {
174
- if (watcher)
175
- return () => { };
176
- // 守目录而非文件:文件可能尚未落盘(首启前),建出来时也要能接上。
177
- if (!existsSync(dataDir))
178
- return () => { };
179
- const fileName = basename(absPath);
180
- try {
181
- const schedule = () => {
182
- if (debounceTimer)
183
- clearTimeout(debounceTimer);
184
- debounceTimer = setTimeout(() => {
185
- debounceTimer = null;
186
- // 读盘失败与解析失败必须拆开:编辑器先删后建式保存的瞬时 ENOENT
187
- // 若与语法错误共用一个 catch,会被误报成「你的 YAML 写错了」——
188
- // 比不报还糟。读不到安静返回(下一个事件会来),解析失败才出声。
189
- let current;
190
- try {
191
- current = readFileSync(absPath, 'utf-8');
192
- }
193
- catch {
194
- return;
195
- }
196
- // rawYaml 在装载 / save / 本回调三处维护,比对它一并挡掉自写回、目录里
197
- // 无关文件的杂音、touch,以及改完又改回来的空变更。拒写之后的这一次除外(见 reconcilePending)。
198
- if (current === rawYaml && !reconcilePending)
199
- return;
200
- let parsed;
201
- try {
202
- parsed = parseYaml(current);
203
- }
204
- catch (err) {
205
- // rawYaml 只在解析成功后推进(不变量=当前生效的那份内容):
206
- // 同一份坏内容每次保存都重新告警,直到改对为止。
207
- logger.warn(`配置文件解析失败,本次变更已忽略,仍在使用上一份配置:${parseErrorFirstLine(err)}`);
208
- return;
209
- }
210
- // 空文件 / 裸标量 / 数组:都是「解析不出一个配置对象」的同一问题,
211
- // 一道闸拒收——放行会让全部插件按默认值 bounce 或往配置文件写回垃圾。
212
- const kind = describeNonMapping(parsed);
213
- if (kind) {
214
- logger.warn(`配置文件不是一个配置对象(得到 ${kind}),本次变更已忽略`);
215
- return;
216
- }
217
- rawYaml = current;
218
- reconcilePending = false;
219
- try {
220
- onChange(parsed);
221
- }
222
- catch (err) {
223
- // 变更处理器抛错此前被整段 catch 静默吞掉——保留兜底但必须出声。
224
- logger.warn(`配置变更处理器抛错:${err instanceof Error ? err.message : String(err)}`);
225
- }
226
- }, 300);
227
- };
228
- // **必须监听目录,不能监听文件本身。** fs.watch 绑的是那一刻的 inode,而编辑器
229
- // 保存普遍是「写临时文件 → rename 覆盖」——rename 之后同名文件已是新 inode,
230
- // 绑在旧 inode 上的 watcher 从此永不触发,且无异常、无日志、无返回值。
231
- // save() 同样是「写临时文件 → rename」(见上),自写回也会换 inode——守文件在
232
- // 第一次保存后就失聪;守目录则人改与自写回两种来源都接得住。
233
- watcher = fsWatch(dataDir, (_event, filename) => {
234
- // filename 平台不保证非空;为空时不敢过滤,交给下面的内容比对兜底。
235
- if (filename && basename(filename.toString()) !== fileName)
236
- return;
237
- schedule();
238
- });
239
- // 武装即对账一次:武装前(启动期)的外部修改不会再有事件,不补就既不生效、又让 save 一直拒写。
240
- schedule();
241
- }
242
- catch (err) {
243
- // 平台或挂载不支持 watch:外部修改从此不会自动生效,save 也会因盘上内容已变而拒写。
244
- logger.warn(`无法监听配置文件变更(${err instanceof Error ? err.message : String(err)}):手动修改后需重启才生效,重启前的进程保存会被拒绝`);
245
- }
246
- return () => {
247
- if (debounceTimer) {
248
- clearTimeout(debounceTimer);
249
- debounceTimer = null;
250
- }
251
- watcher?.close();
252
- watcher = null;
253
- };
254
- },
255
- };
256
- return { config: initialConfig, provider };
83
+ });
84
+ return { config: file.initial, provider: { save: config => file.save(config), watch: file.watch } };
85
+ }
86
+ /**
87
+ * 创建基于家目录 `secrets.yaml` 的密钥存储:顶层是「键 → 值」的映射。读写、拒写与监听同配置文件,
88
+ * 另有三处不同:文件不存在时按空映射处理、不告警(第一次保存时建出);运行中改成空文件或只剩注释时按空映射处理;
89
+ * 原子写的临时文件一律以 0600 创建,不沿用原文件的权限位。
90
+ */
91
+ export function createFsSecretsProvider(absPath) {
92
+ assertAbsolute('密钥文件路径', absPath);
93
+ const file = openYamlFile(absPath, {
94
+ label: '密钥文件',
95
+ logger: new DefaultLogger('aalis:secrets'),
96
+ serialize: values => stringifyYaml(values, { lineWidth: 0 }),
97
+ missing: () => ({}),
98
+ mode: 0o600,
99
+ emptyAsMissing: true,
100
+ });
101
+ return { values: file.initial, provider: { save: values => file.save(values), watch: file.watch } };
257
102
  }
258
103
  // ============================================================
259
104
  // FsPluginLoader —— 扫描目录 + dynamic import
260
105
  // ============================================================
261
106
  /**
262
- * 创建一个基于 packages 目录扫描的 PluginLoader。
107
+ * 创建一个基于 packages 目录扫描的 PluginLoader。`rootDir` 是 packages 目录的绝对路径(源码形态的入口传 `<仓库>/packages`)。
263
108
  *
264
109
  * - `discover()`:读 dir 下每个子目录的 package.json,按 aalis-plugin 关键词收录可加载插件
265
110
  * - `load()`:先经 assertSameCore 核对 core 是宿主那份,再用 `pathToFileURL(entry).href` 动态 import
266
111
  * - `reload()`:用入口文件 mtime 作为 import URL 的 query 强制 ESM 缓存失效
267
112
  */
268
- export function createFsPluginLoader(packagesDir) {
269
- const rootDir = packagesDir ?? resolve(process.cwd(), 'packages');
113
+ export function createFsPluginLoader(rootDir) {
114
+ assertAbsolute('packages 目录', rootDir);
270
115
  // 死门信号与 node_modules 加载器同一套(本仓自托管入口走的正是本加载器,
271
116
  // 只在一边出声等于对自己的部署失聪)。
272
117
  const loaderLogger = new DefaultLogger('aalis:loader');
@@ -320,11 +165,11 @@ export function isRestartRollback(v) {
320
165
  return !!r && typeof r.reason === 'string' && Array.isArray(r.restore);
321
166
  }
322
167
  /** 组装重生用的 exec + argv。分离出来是为了单测覆盖 execArgv 保留。 */
323
- export function buildRespawnCommand(argv = process.argv, execArgv = process.execArgv, cwd = process.cwd()) {
168
+ export function buildRespawnCommand(appDir, argv = process.argv, execArgv = process.execArgv) {
324
169
  const scriptFile = argv[1];
325
170
  if (scriptFile?.endsWith('.ts')) {
326
171
  // tsx 是包装脚本,node 层 flag 由它自己转交,不能塞在它前面。
327
- const tsxBin = resolve(cwd, 'node_modules', '.bin', 'tsx');
172
+ const tsxBin = resolve(appDir, 'node_modules', '.bin', 'tsx');
328
173
  return { exec: existsSync(tsxBin) ? tsxBin : 'tsx', args: [...argv.slice(1)] };
329
174
  }
330
175
  // execArgv 不在 argv 里:`node --max-old-space-size=4096 dist/start.js` 的
@@ -333,6 +178,36 @@ export function buildRespawnCommand(argv = process.argv, execArgv = process.exec
333
178
  const [exec, ...rest] = argv;
334
179
  return { exec: exec ?? process.execPath, args: [...execArgv, ...rest] };
335
180
  }
181
+ /** 服务形态下重启以这个退出码结束:服务管理器(launchd 的 KeepAlive={SuccessfulExit=false}、systemd 的 Restart=on-failure)据此重新拉起 */
182
+ export const SERVICE_RESTART_EXIT_CODE = 75;
183
+ /**
184
+ * 服务形态的重启策略:停掉 App 后以 {@link SERVICE_RESTART_EXIT_CODE} 退出,由服务管理器拉起新进程,
185
+ * 新进程取锁时本进程的锁已随退出释放。不自己 spawn:detached 的新进程会脱离服务管理器的监管
186
+ * (launchd 不再看着它,systemd 随 cgroup 把它一起杀掉)。
187
+ * 服务形态下没有「新版起不来就回滚」:带回滚凭据的重启(市场更新)照常退出,并记一条说明。
188
+ */
189
+ export function createServiceRestartStrategy() {
190
+ let restarting = false;
191
+ return {
192
+ async restart({ stop, rollback }) {
193
+ if (restarting) {
194
+ console.error('[aalis] 已有重启在进行中,忽略本次请求。');
195
+ return;
196
+ }
197
+ restarting = true;
198
+ if (isRestartRollback(rollback)) {
199
+ console.error(`[aalis] 以服务形态运行,重启交给服务管理器;新版本起不来时不会自动回滚(${rollback.reason})。`);
200
+ }
201
+ try {
202
+ await stop();
203
+ }
204
+ catch (err) {
205
+ console.error('[aalis] 停止应用时出错,仍继续重启:', err);
206
+ }
207
+ process.exit(SERVICE_RESTART_EXIT_CODE);
208
+ },
209
+ };
210
+ }
336
211
  /**
337
212
  * Node 进程重启策略:spawn 一个 detached 子进程接管,确认其起得来后再退出当前进程。
338
213
  *
@@ -355,13 +230,14 @@ export function buildRespawnCommand(argv = process.argv, execArgv = process.exec
355
230
  *
356
231
  * 对 .ts 入口(开发模式)会优先使用本地 `tsx` 二进制。
357
232
  */
358
- export function createProcessRespawnStrategy(opts = {}) {
233
+ export function createProcessRespawnStrategy(opts) {
359
234
  const readyTimeoutMs = opts.readyTimeoutMs ?? 30_000;
360
235
  let restarting = false;
361
236
  function spawnChild(withIpc) {
362
- const { exec, args } = buildRespawnCommand();
237
+ const { exec, args } = buildRespawnCommand(opts.appDir);
363
238
  return spawn(exec, args, {
364
- cwd: process.cwd(),
239
+ cwd: opts.cwd,
240
+ env: { ...process.env, ...opts.env },
365
241
  stdio: withIpc ? ['inherit', 'inherit', 'inherit', 'ipc'] : 'inherit',
366
242
  detached: true,
367
243
  });
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { type ConfigSchema } from '@aalis/schema-config';
2
+ /** 密钥字段上算「有值」的明文:非空。`''`、null、空 map、空 list 是没填,不进密钥存储 */
3
+ export declare function isSecretValue(value: unknown): boolean;
4
+ /** 值里出现的全部引用的键。不看 schema:用来判断一个键还有没有人用,宁可多算 */
5
+ export declare function referencedKeys(value: unknown, into?: Set<string>): Set<string>;
6
+ /** 密钥字段上的非空明文所在的路径(只收文档形态的写入口据此拒绝) */
7
+ export declare function plainSecretPaths(schema: ConfigSchema | undefined, config: Record<string, unknown>): string[];
8
+ export interface SplitSecrets {
9
+ /** 文档形态:密钥字段上只剩引用或没填的空值 */
10
+ doc: Record<string, unknown>;
11
+ /** 要写进密钥存储的键值,由调用方在生效后提交 */
12
+ writes: Map<string, unknown>;
13
+ /** 新值落到的位置与键(日志用,不带值) */
14
+ placed: Array<{
15
+ path: string;
16
+ key: string;
17
+ }>;
18
+ }
19
+ /**
20
+ * 提交的配置拆成文档形态:密钥字段上的非空明文换成引用,值放进 writes。
21
+ * - 顶层与分组里的字段:写进 `base`(该实例改动前的文档)在同一位置引用的键,键被别处共用时一并改到它们;
22
+ * 那里没有引用就取新键。
23
+ * - 数组元素里的字段:一律取新键。元素可能被重排、增删,按下标找到的可能是别的元素的键。
24
+ * 新键是 `<实例 id>.<字段路径>`(数组元素的路径不带下标),`taken` 认为被占用时依次加 `-2`、`-3`。
25
+ */
26
+ export declare function splitSecrets(schema: ConfigSchema | undefined, instanceId: string, submitted: Record<string, unknown>, base: Record<string, unknown>, taken: (key: string) => boolean): SplitSecrets;
27
+ export interface ResolvedSecrets {
28
+ config: Record<string, unknown>;
29
+ /** 引用的键不在密钥存储里:引用原样留在 config 里,插件的 parseConfig 会拒绝激活 */
30
+ dangling: Array<{
31
+ path: string;
32
+ key: string;
33
+ }>;
34
+ }
35
+ /**
36
+ * 文档形态解析成运行态:密钥字段上的引用换成密钥存储里的值。键不在存储里时不回落任何东西,引用原样留着,
37
+ * 让插件激活失败、点名键名(回落默认值会悄悄连上别的东西,例如默认的本机数据库)。
38
+ */
39
+ export declare function resolveSecrets(schema: ConfigSchema | undefined, doc: Record<string, unknown>, lookup: (key: string) => {
40
+ value: unknown;
41
+ } | undefined): ResolvedSecrets;
42
+ /** 悬空引用的日志:点名实例、字段与键,不涉及值 */
43
+ export declare function describeDangling(instanceId: string, dangling: ResolvedSecrets['dangling']): string;
44
+ //# sourceMappingURL=secrets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,YAAY,EAAgC,MAAM,sBAAsB,CAAC;AAEvF,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMrD;AAED,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,cAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,CAKpF;AAED,sCAAsC;AACtC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAO5G;AAED,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,4BAA4B;IAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,yBAAyB;IACzB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAC9B,YAAY,CAad;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,wDAAwD;IACxD,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GACtD,eAAe,CAUjB;AAED,6BAA6B;AAC7B,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,MAAM,CAGlG"}
@@ -0,0 +1,104 @@
1
+ // ============================================================
2
+ // secrets —— 配置文档与运行态之间的密钥换算(纯函数,不碰文件)
3
+ //
4
+ // schema 里 `secret: true` 的字段在文档里是引用 `{ $secret: '<键>' }`,值在宿主的密钥存储(家目录的 secrets.yaml);
5
+ // 交给 core(也就是插件)之前解析回原值。字段的位置只认 schema-config 的 mapSecretFields。
6
+ // ============================================================
7
+ import { isSecretRef, mapSecretFields } from '@aalis/schema-config';
8
+ /** 密钥字段上算「有值」的明文:非空。`''`、null、空 map、空 list 是没填,不进密钥存储 */
9
+ export function isSecretValue(value) {
10
+ if (value === undefined || value === null || value === '')
11
+ return false;
12
+ if (isSecretRef(value))
13
+ return false;
14
+ if (Array.isArray(value))
15
+ return value.length > 0;
16
+ if (typeof value === 'object')
17
+ return Object.keys(value).length > 0;
18
+ return true;
19
+ }
20
+ /** 值里出现的全部引用的键。不看 schema:用来判断一个键还有没有人用,宁可多算 */
21
+ export function referencedKeys(value, into = new Set()) {
22
+ if (isSecretRef(value))
23
+ into.add(value.$secret);
24
+ else if (Array.isArray(value))
25
+ for (const item of value)
26
+ referencedKeys(item, into);
27
+ else if (value !== null && typeof value === 'object')
28
+ for (const v of Object.values(value))
29
+ referencedKeys(v, into);
30
+ return into;
31
+ }
32
+ /** 密钥字段上的非空明文所在的路径(只收文档形态的写入口据此拒绝) */
33
+ export function plainSecretPaths(schema, config) {
34
+ const paths = [];
35
+ mapSecretFields(schema, config, (value, at) => {
36
+ if (isSecretValue(value))
37
+ paths.push(at.path);
38
+ return value;
39
+ });
40
+ return [...new Set(paths)];
41
+ }
42
+ /**
43
+ * 提交的配置拆成文档形态:密钥字段上的非空明文换成引用,值放进 writes。
44
+ * - 顶层与分组里的字段:写进 `base`(该实例改动前的文档)在同一位置引用的键,键被别处共用时一并改到它们;
45
+ * 那里没有引用就取新键。
46
+ * - 数组元素里的字段:一律取新键。元素可能被重排、增删,按下标找到的可能是别的元素的键。
47
+ * 新键是 `<实例 id>.<字段路径>`(数组元素的路径不带下标),`taken` 认为被占用时依次加 `-2`、`-3`。
48
+ */
49
+ export function splitSecrets(schema, instanceId, submitted, base, taken) {
50
+ const writes = new Map();
51
+ const placed = [];
52
+ const doc = mapSecretFields(schema, submitted, (value, at) => {
53
+ if (!isSecretValue(value))
54
+ return value;
55
+ const key = (at.inArray ? undefined : refAt(base, at.path)) ??
56
+ freshKey(`${instanceId}.${at.path}`, k => taken(k) || writes.has(k));
57
+ writes.set(key, value);
58
+ placed.push({ path: at.path, key });
59
+ return { $secret: key };
60
+ });
61
+ return { doc, writes, placed };
62
+ }
63
+ /**
64
+ * 文档形态解析成运行态:密钥字段上的引用换成密钥存储里的值。键不在存储里时不回落任何东西,引用原样留着,
65
+ * 让插件激活失败、点名键名(回落默认值会悄悄连上别的东西,例如默认的本机数据库)。
66
+ */
67
+ export function resolveSecrets(schema, doc, lookup) {
68
+ const dangling = [];
69
+ const config = mapSecretFields(schema, doc, (value, at) => {
70
+ if (!isSecretRef(value))
71
+ return value;
72
+ const hit = lookup(value.$secret);
73
+ if (hit)
74
+ return hit.value;
75
+ dangling.push({ path: at.path, key: value.$secret });
76
+ return value;
77
+ });
78
+ return { config, dangling };
79
+ }
80
+ /** 悬空引用的日志:点名实例、字段与键,不涉及值 */
81
+ export function describeDangling(instanceId, dangling) {
82
+ const items = dangling.map(d => `${d.path}(键 ${d.key})`).join('、');
83
+ return `${instanceId} 引用的密钥不在 secrets.yaml 里:${items};用 parseConfig 读配置的插件会激活失败,在 WebUI 重新填写或在 secrets.yaml 里补上这些键`;
84
+ }
85
+ /** 按点号路径取顶层或分组里那个位置上的引用键 */
86
+ function refAt(config, path) {
87
+ let value = config;
88
+ for (const part of path.split('.')) {
89
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
90
+ return undefined;
91
+ value = Object.hasOwn(value, part) ? value[part] : undefined;
92
+ }
93
+ return isSecretRef(value) ? value.$secret : undefined;
94
+ }
95
+ function freshKey(base, taken) {
96
+ if (!taken(base))
97
+ return base;
98
+ for (let n = 2;; n++) {
99
+ const key = `${base}-${n}`;
100
+ if (!taken(key))
101
+ return key;
102
+ }
103
+ }
104
+ //# sourceMappingURL=secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"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"}