@yss123/cage-kernel 0.1.0 → 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 (140) hide show
  1. package/README.md +71 -9
  2. package/dist/authorization.d.ts +34 -0
  3. package/dist/authorization.js +89 -0
  4. package/dist/authorization.js.map +1 -0
  5. package/dist/brands.d.ts +10 -0
  6. package/dist/brands.js +11 -1
  7. package/dist/brands.js.map +1 -1
  8. package/dist/db/connect.d.ts +14 -0
  9. package/dist/db/connect.js +18 -2
  10. package/dist/db/connect.js.map +1 -1
  11. package/dist/db/ddl.d.ts +40 -1
  12. package/dist/db/ddl.js +111 -7
  13. package/dist/db/ddl.js.map +1 -1
  14. package/dist/db/event-version-schema.d.ts +9 -0
  15. package/dist/db/event-version-schema.js +10 -0
  16. package/dist/db/event-version-schema.js.map +1 -0
  17. package/dist/db/index.d.ts +4 -0
  18. package/dist/db/index.js +4 -0
  19. package/dist/db/index.js.map +1 -1
  20. package/dist/db/migrate.d.ts +10 -0
  21. package/dist/db/migrate.js +9 -1
  22. package/dist/db/migrate.js.map +1 -1
  23. package/dist/db/rows.d.ts +2 -0
  24. package/dist/db/rows.js +6 -0
  25. package/dist/db/rows.js.map +1 -1
  26. package/dist/db/runtime-schema.d.ts +9 -0
  27. package/dist/db/runtime-schema.js +41 -0
  28. package/dist/db/runtime-schema.js.map +1 -0
  29. package/dist/db/session.d.ts +6 -0
  30. package/dist/db/session.js +6 -0
  31. package/dist/db/session.js.map +1 -1
  32. package/dist/errors.d.ts +12 -0
  33. package/dist/errors.js +14 -0
  34. package/dist/errors.js.map +1 -1
  35. package/dist/files/links.d.ts +10 -0
  36. package/dist/files/links.js +50 -0
  37. package/dist/files/links.js.map +1 -0
  38. package/dist/files/schema.d.ts +9 -0
  39. package/dist/files/schema.js +51 -0
  40. package/dist/files/schema.js.map +1 -0
  41. package/dist/index.d.ts +12 -2
  42. package/dist/index.js +12 -2
  43. package/dist/index.js.map +1 -1
  44. package/dist/kernel.d.ts +88 -0
  45. package/dist/kernel.js +82 -41
  46. package/dist/kernel.js.map +1 -1
  47. package/dist/mask.d.ts +7 -1
  48. package/dist/mask.js +11 -0
  49. package/dist/mask.js.map +1 -1
  50. package/dist/org.d.ts +7 -0
  51. package/dist/org.js +5 -0
  52. package/dist/org.js.map +1 -1
  53. package/dist/pipeline/draft.d.ts +16 -0
  54. package/dist/pipeline/draft.js +39 -0
  55. package/dist/pipeline/draft.js.map +1 -0
  56. package/dist/pipeline/idempotency.d.ts +6 -0
  57. package/dist/pipeline/idempotency.js +6 -0
  58. package/dist/pipeline/idempotency.js.map +1 -1
  59. package/dist/pipeline/invoker.d.ts +9 -0
  60. package/dist/pipeline/invoker.js +22 -0
  61. package/dist/pipeline/invoker.js.map +1 -0
  62. package/dist/pipeline/load.d.ts +13 -0
  63. package/dist/pipeline/load.js +22 -6
  64. package/dist/pipeline/load.js.map +1 -1
  65. package/dist/primitives/aggregate.d.ts +95 -2
  66. package/dist/primitives/aggregate.js +15 -1
  67. package/dist/primitives/aggregate.js.map +1 -1
  68. package/dist/primitives/business-process.d.ts +128 -0
  69. package/dist/primitives/business-process.js +62 -0
  70. package/dist/primitives/business-process.js.map +1 -0
  71. package/dist/primitives/collection.d.ts +65 -0
  72. package/dist/primitives/collection.js +79 -0
  73. package/dist/primitives/collection.js.map +1 -0
  74. package/dist/primitives/command.d.ts +110 -11
  75. package/dist/primitives/command.js +16 -0
  76. package/dist/primitives/command.js.map +1 -1
  77. package/dist/primitives/constraints.d.ts +30 -1
  78. package/dist/primitives/constraints.js +14 -0
  79. package/dist/primitives/constraints.js.map +1 -1
  80. package/dist/primitives/event.d.ts +36 -0
  81. package/dist/primitives/event.js +12 -1
  82. package/dist/primitives/event.js.map +1 -1
  83. package/dist/primitives/fields.d.ts +176 -36
  84. package/dist/primitives/fields.js +134 -14
  85. package/dist/primitives/fields.js.map +1 -1
  86. package/dist/primitives/flow.d.ts +173 -8
  87. package/dist/primitives/flow.js +29 -2
  88. package/dist/primitives/flow.js.map +1 -1
  89. package/dist/primitives/states.d.ts +34 -2
  90. package/dist/primitives/states.js +15 -0
  91. package/dist/primitives/states.js.map +1 -1
  92. package/dist/read.d.ts +39 -3
  93. package/dist/read.js +193 -48
  94. package/dist/read.js.map +1 -1
  95. package/dist/registry.d.ts +51 -1
  96. package/dist/registry.js +105 -5
  97. package/dist/registry.js.map +1 -1
  98. package/dist/relations.d.ts +21 -0
  99. package/dist/relations.js +65 -0
  100. package/dist/relations.js.map +1 -0
  101. package/dist/runtime.d.ts +35 -0
  102. package/dist/runtime.js +9 -0
  103. package/dist/runtime.js.map +1 -0
  104. package/dist/scope/index.d.ts +5 -0
  105. package/dist/scope/index.js +5 -0
  106. package/dist/scope/index.js.map +1 -1
  107. package/dist/telemetry.d.ts +8 -0
  108. package/dist/telemetry.js +28 -3
  109. package/dist/telemetry.js.map +1 -1
  110. package/dist/transfer/csv.d.ts +19 -0
  111. package/dist/transfer/csv.js +125 -0
  112. package/dist/transfer/csv.js.map +1 -0
  113. package/dist/transfer/index.d.ts +67 -0
  114. package/dist/transfer/index.js +271 -0
  115. package/dist/transfer/index.js.map +1 -0
  116. package/dist/transfer/schema.d.ts +9 -0
  117. package/dist/transfer/schema.js +36 -0
  118. package/dist/transfer/schema.js.map +1 -0
  119. package/dist/types.d.ts +38 -2
  120. package/dist/types.js +8 -0
  121. package/dist/types.js.map +1 -1
  122. package/dist/util/names.d.ts +6 -0
  123. package/dist/util/names.js +6 -0
  124. package/dist/util/names.js.map +1 -1
  125. package/dist/worker/consumers.d.ts +7 -0
  126. package/dist/worker/consumers.js +21 -9
  127. package/dist/worker/consumers.js.map +1 -1
  128. package/dist/worker/health.d.ts +38 -0
  129. package/dist/worker/health.js +20 -0
  130. package/dist/worker/health.js.map +1 -0
  131. package/dist/worker/index.d.ts +34 -1
  132. package/dist/worker/index.js +176 -37
  133. package/dist/worker/index.js.map +1 -1
  134. package/dist/worker/outbox.d.ts +25 -2
  135. package/dist/worker/outbox.js +40 -2
  136. package/dist/worker/outbox.js.map +1 -1
  137. package/dist/worker/scheduler.d.ts +10 -1
  138. package/dist/worker/scheduler.js +34 -4
  139. package/dist/worker/scheduler.js.map +1 -1
  140. package/package.json +1 -1
package/dist/db/ddl.js CHANGED
@@ -1,7 +1,19 @@
1
+ import { isRelation } from '../primitives/fields.js';
1
2
  import { snake } from '../util/names.js';
3
+ import { TRANSFER_MIGRATION } from '../transfer/schema.js';
4
+ import { RUNTIME_MIGRATION } from './runtime-schema.js';
5
+ import { FILE_MIGRATION } from '../files/schema.js';
6
+ import { EVENT_VERSION_MIGRATION } from './event-version-schema.js';
7
+ import { relationTable } from '../relations.js';
8
+ /** SQL 标识符引用,双引号转义;仅用于已由声明验证的名称,不接受任意 SQL 片段。 */
2
9
  export const q = (ident) => `"${ident.replace(/"/g, '""')}"`;
10
+ /** 模式和表名分别引用,避免把含点名称误当成一个未限定标识符。 */
3
11
  export const qt = (t) => `${q(t.schema)}.${q(t.name)}`;
4
12
  const lit = (s) => `'${s.replace(/'/g, "''")}'`;
13
+ /**
14
+ * 从字段/状态/范围生成主表列和索引,集合关系不作为主表列。
15
+ * 参与 manyToMany 的主表补租户/id 复合唯一键,让关联外键在数据库层保证双方租户一致。
16
+ */
5
17
  export function tableModel(agg, reg) {
6
18
  const t = agg.table;
7
19
  const columns = [
@@ -9,6 +21,8 @@ export function tableModel(agg, reg) {
9
21
  { name: 'tenant_id', type: 'uuid', notNull: true },
10
22
  ];
11
23
  for (const [k, f] of Object.entries(agg.fields)) {
24
+ if (isRelation(f))
25
+ continue;
12
26
  const target = f.ref ? reg.aggregate(f.ref) : undefined;
13
27
  columns.push({
14
28
  name: snake(k),
@@ -26,9 +40,13 @@ export function tableModel(agg, reg) {
26
40
  indexes.push({ name: `${t.name}_tenant_${snake(f)}_idx`, columns: ['tenant_id', snake(f)] });
27
41
  indexes.push({ name: `${t.name}_status_idx`, columns: ['tenant_id', 'status'] });
28
42
  for (const [k, f] of Object.entries(agg.fields)) {
29
- if (f.ref && !scopeCols.includes(k))
43
+ if (f.kind === 'ref' && !scopeCols.includes(k))
30
44
  indexes.push({ name: `${t.name}_${snake(k)}_idx`, columns: [snake(k)] });
31
45
  }
46
+ const participates = reg.aggregates.some((owner) => Object.values(owner.fields)
47
+ .some((f) => f.kind === 'manyToMany' && (owner === agg || f.ref === agg.name)));
48
+ if (participates)
49
+ indexes.push({ name: `${t.name}_tenant_id_uq`, columns: ['tenant_id', 'id'], unique: true });
32
50
  return { schema: t.schema, name: t.name, aggregate: agg.name, columns, statusValues: [...agg.states.values], indexes };
33
51
  }
34
52
  /** 按外键依赖排序:被引用的表在前 */
@@ -53,8 +71,21 @@ export function schemaModel(reg) {
53
71
  };
54
72
  for (const m of [...models].sort((a, b) => key(a).localeCompare(key(b))))
55
73
  visit(m, new Set());
74
+ // 主表及复合唯一键先就绪,再建立关联表,避免前向外键依赖。
75
+ for (const owner of reg.aggregates)
76
+ for (const [field, f] of Object.entries(owner.fields)) {
77
+ if (f.kind !== 'manyToMany')
78
+ continue;
79
+ const target = reg.aggregate(f.ref);
80
+ const table = relationTable(owner, field);
81
+ out.push({ ...table, aggregate: owner.name, relation: {
82
+ field, source: `${owner.table.schema}.${owner.table.name}`, target: `${target.table.schema}.${target.table.name}`,
83
+ }, columns: ['tenant_id', 'source_id', 'target_id'].map((name) => ({ name, type: 'uuid', notNull: true })),
84
+ statusValues: [], indexes: [{ name: `${table.name.slice(0, 52)}_target_idx`, columns: ['tenant_id', 'target_id'] }] });
85
+ }
56
86
  return { version: 1, tables: out };
57
87
  }
88
+ /** 生成列片段;新增列迁移暂不附 NOT NULL,给旧数据回填留下阶段,创建整表则完整约束。 */
58
89
  function columnSql(t, c, forCreate) {
59
90
  let s = `${q(c.name)} ${c.type}`;
60
91
  if (c.name === 'id')
@@ -73,24 +104,48 @@ function columnSql(t, c, forCreate) {
73
104
  s += ` CONSTRAINT ${q(`${t.name}_${c.name}_check`)} CHECK (${q(c.name)} IN (${c.values.map(lit).join(', ')}))`;
74
105
  return s;
75
106
  }
107
+ /** 状态枚举落为数据库 CHECK,给绕过应用校验的异常写入提供最后一道结构约束。 */
76
108
  function statusCheckSql(t) {
77
109
  return `CONSTRAINT ${q(`${t.name}_status_check`)} CHECK (status IN (${t.statusValues.map(lit).join(', ')}))`;
78
110
  }
111
+ /**
112
+ * 生成建表与索引 SQL,不执行它。普通表创建状态约束,关联表创建租户复合主键和双方外键。
113
+ * 仅关联表授予删除链接权限;普通业务对象的删除仍应由命令状态迁移表达。
114
+ */
79
115
  export function createTableSql(t) {
80
116
  const cols = t.columns.map((c) => ` ${columnSql(t, c, true)}`);
81
- cols.push(` ${statusCheckSql(t)}`);
117
+ if (t.relation) {
118
+ cols.push(' PRIMARY KEY (tenant_id, source_id, target_id)', ...relationForeignKeys(t).map((fk) => ` ${fk}`));
119
+ }
120
+ else
121
+ cols.push(` ${statusCheckSql(t)}`);
82
122
  const lines = [`CREATE TABLE IF NOT EXISTS ${qt(t)} (`, cols.join(',\n'), ');'];
83
123
  for (const c of t.columns.filter((x) => x.unique)) {
84
124
  lines.push(`CREATE UNIQUE INDEX IF NOT EXISTS ${q(`${t.name}_${c.name}_uq`)} ON ${qt(t)} (tenant_id, ${q(c.name)});`);
85
125
  }
86
126
  for (const i of t.indexes) {
87
- lines.push(`CREATE INDEX IF NOT EXISTS ${q(i.name)} ON ${qt(t)} (${i.columns.map(q).join(', ')});`);
127
+ lines.push(indexSql(t, i));
88
128
  }
129
+ if (t.relation)
130
+ lines.push(`GRANT DELETE ON ${qt(t)} TO cage_app;`);
89
131
  return lines.join('\n');
90
132
  }
133
+ const tableNameSql = (name) => name.split('.').map(q).join('.');
134
+ const indexSql = (t, i) => `CREATE ${i.unique ? 'UNIQUE ' : ''}INDEX IF NOT EXISTS ${q(i.name)} ON ${qt(t)} (${i.columns.map(q).join(', ')});`;
135
+ /** 两个复合外键把租户一致性放进数据库;解绑只删链接,源对象硬删除才级联清理链接。 */
136
+ function relationForeignKeys(t) {
137
+ return [
138
+ `CONSTRAINT ${q(`${t.name.slice(0, 53)}_source_fk`)} FOREIGN KEY (tenant_id, source_id) REFERENCES ${tableNameSql(t.relation.source)} (tenant_id, id) ON DELETE CASCADE`,
139
+ `CONSTRAINT ${q(`${t.name.slice(0, 53)}_target_fk`)} FOREIGN KEY (tenant_id, target_id) REFERENCES ${tableNameSql(t.relation.target)} (tenant_id, id)`,
140
+ ];
141
+ }
91
142
  /**
92
143
  * 比较两份结构,生成迁移草稿语句。破坏性变更(删表、删列)只生成注释,按「先扩展再收缩」由人决定。
93
144
  */
145
+ /**
146
+ * prev 为迁移中的历史期望快照,null 表示首次建表;这里不会连接数据库扫描实际结构。
147
+ * 非空新增列和类型变化会生成待审查步骤,删除只给注释;自动草稿不保证既有数据能够直接迁移。
148
+ */
94
149
  export function diffSchemas(prev, next) {
95
150
  const out = [];
96
151
  const prevMap = new Map((prev?.tables ?? []).map((t) => [`${t.schema}.${t.name}`, t]));
@@ -144,7 +199,7 @@ export function diffSchemas(prev, next) {
144
199
  out.push(`-- 收缩:字段 ${t.aggregate}.${c.name} 已从声明删除。确认所有读写都已切走后再取消注释(先扩展再收缩)\n-- ALTER TABLE ${qt(t)} DROP COLUMN ${q(c.name)};`);
145
200
  }
146
201
  }
147
- if (JSON.stringify(p.statusValues) !== JSON.stringify(t.statusValues)) {
202
+ if (!t.relation && JSON.stringify(p.statusValues) !== JSON.stringify(t.statusValues)) {
148
203
  const removed = p.statusValues.filter((s) => !t.statusValues.includes(s));
149
204
  if (removed.length)
150
205
  out.push(`-- 注意:状态 ${removed.join(', ')} 被删除,先确认没有数据处于这些状态`);
@@ -153,7 +208,14 @@ export function diffSchemas(prev, next) {
153
208
  const pi = new Set(p.indexes.map((i) => i.name));
154
209
  for (const i of t.indexes)
155
210
  if (!pi.has(i.name))
156
- out.push(`CREATE INDEX IF NOT EXISTS ${q(i.name)} ON ${qt(t)} (${i.columns.map(q).join(', ')});`);
211
+ out.push(indexSql(t, i));
212
+ if (t.relation && p.relation && JSON.stringify(t.relation) !== JSON.stringify(p.relation)) {
213
+ out.push(`-- 关联目标变化:请先迁移已有链接,再应用新的外键`);
214
+ for (const side of ['source', 'target'])
215
+ out.push(`ALTER TABLE ${qt(t)} DROP CONSTRAINT ${q(`${t.name.slice(0, 53)}_${side}_fk`)};`);
216
+ for (const fk of relationForeignKeys(t))
217
+ out.push(`ALTER TABLE ${qt(t)} ADD ${fk};`);
218
+ }
157
219
  }
158
220
  for (const [k, p] of prevMap) {
159
221
  if (!nextMap.has(k))
@@ -162,6 +224,7 @@ export function diffSchemas(prev, next) {
162
224
  return out;
163
225
  }
164
226
  // ---------------- 安全层:函数、策略、视图(每次整体重建) ----------------
227
+ /** 数据库范围函数与 scope/index.ts 保持同口径;缺少身份/授权会保守拒绝,不默认开放全部。 */
165
228
  export const IN_SCOPE_SQL = `
166
229
  -- 生成物:范围判断。读取会话变量 app.scopes({"聚合":[{"c":"组合子","deptIds":[...]}]}),多个授权取并集。
167
230
  -- SECURITY DEFINER:以表属主身份读部门表,避免部门表自己的行级策略递归。
@@ -183,6 +246,7 @@ RETURNS boolean LANGUAGE sql STABLE SECURITY DEFINER SET search_path = pg_catalo
183
246
  nullif(current_setting('app.scopes', true), '')::jsonb -> '*',
184
247
  '[{"c":"self"}]'::jsonb)) AS g
185
248
  $$;`;
249
+ /** 安全视图使用的字段掩码函数;明文权限来自事务会话变量,展示策略须与内存 maskValue 一致。 */
186
250
  export const MASK_SQL = `
187
251
  -- 生成物:按敏感种类掩码。持有「聚合.种类」明文权限时原样返回。
188
252
  CREATE OR REPLACE FUNCTION sys.mask(agg text, kind text, val text)
@@ -200,13 +264,17 @@ RETURNS text LANGUAGE sql STABLE AS $$
200
264
  ELSE '******'
201
265
  END
202
266
  $$;`;
267
+ /**
268
+ * 为单聚合生成 RLS 和 security_barrier 安全视图;hidden/关系字段不投影,敏感字段调用 sys.mask。
269
+ * cage_read 只有视图 SELECT,视图属主受到范围策略;cage_app 的写入授权由内核流水线执行。
270
+ */
203
271
  export function aggregateSafeSql(agg) {
204
272
  const t = agg.table;
205
273
  const dept = agg.scope.deptField ? q(snake(agg.scope.deptField)) : 'NULL::uuid';
206
274
  const owner = agg.scope.ownerField ? q(snake(agg.scope.ownerField)) : 'NULL::uuid';
207
275
  const cols = ['id'];
208
276
  for (const [k, f] of Object.entries(agg.fields)) {
209
- if (f.isHidden)
277
+ if (f.isHidden || isRelation(f))
210
278
  continue;
211
279
  const c = q(snake(k));
212
280
  cols.push(f.sensitiveKind ? `sys.mask(${lit(agg.name)}, ${lit(f.sensitiveKind)}, ${c}::text) AS ${c}` : c);
@@ -230,6 +298,7 @@ export function aggregateSafeSql(agg) {
230
298
  `GRANT SELECT ON ${view} TO cage_read;`,
231
299
  ].join('\n');
232
300
  }
301
+ /** 系统审计视图只做租户过滤,系统管理接口还需检查 Sys.audit.read 等能力。 */
233
302
  export const SYSTEM_SAFE_SQL = `
234
303
  -- 审计查询视图:读侧账号经系统管理接口使用,按租户过滤
235
304
  DROP VIEW IF EXISTS safe.audit_log;
@@ -241,14 +310,43 @@ CREATE VIEW safe.audit_log WITH (security_barrier) AS
241
310
  ALTER VIEW safe.audit_log OWNER TO cage_view_owner;
242
311
  GRANT SELECT ON safe.audit_log TO cage_read;`;
243
312
  /** 整个安全层:先删掉旧的 safe 视图,再按声明重建(幂等) */
313
+ /** 主视图先于关系视图重建;关系视图连接双方安全视图,因此来源/目标范围和逻辑删除都生效。 */
244
314
  export function safeLayerSql(reg) {
245
- const parts = [IN_SCOPE_SQL, MASK_SQL];
315
+ // 关系视图依赖两侧主视图,先删除框架标记的旧关系视图(包括已删除声明的关系)。
316
+ // 不用 CASCADE,防止顺带移除用户自己维护的数据库对象。
317
+ const parts = [IN_SCOPE_SQL, MASK_SQL, `DO $$ DECLARE v record; BEGIN
318
+ FOR v IN SELECT c.relname FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
319
+ WHERE n.nspname = 'safe' AND c.relkind = 'v' AND obj_description(c.oid, 'pg_class') = 'cage:relation'
320
+ LOOP EXECUTE format('DROP VIEW safe.%I', v.relname); END LOOP;
321
+ END $$;`];
246
322
  for (const a of reg.aggregates)
247
323
  parts.push(aggregateSafeSql(a));
324
+ for (const t of schemaModel(reg).tables)
325
+ if (t.relation) {
326
+ const source = t.relation.source.split('.')[1], target = t.relation.target.split('.')[1];
327
+ const view = `${q('safe')}.${q(t.name)}`;
328
+ parts.push([
329
+ `ALTER TABLE ${qt(t)} ENABLE ROW LEVEL SECURITY;`,
330
+ `DROP POLICY IF EXISTS scope_read ON ${qt(t)};`,
331
+ `CREATE POLICY scope_read ON ${qt(t)} FOR SELECT TO cage_view_owner USING (tenant_id = nullif(current_setting('app.tenant_id', true), '')::uuid);`,
332
+ `DROP POLICY IF EXISTS kernel_rw ON ${qt(t)};`,
333
+ `CREATE POLICY kernel_rw ON ${qt(t)} TO cage_app USING (true) WITH CHECK (true);`,
334
+ `CREATE VIEW ${view} WITH (security_barrier) AS SELECT link.source_id, link.target_id FROM ${qt(t)} link`,
335
+ `JOIN safe.${q(source)} src ON src.id = link.source_id JOIN safe.${q(target)} dst ON dst.id = link.target_id`,
336
+ `WHERE src.status <> 'deleted' AND dst.status <> 'deleted';`,
337
+ `COMMENT ON VIEW ${view} IS 'cage:relation';`,
338
+ `ALTER VIEW ${view} OWNER TO cage_view_owner;`,
339
+ `GRANT SELECT ON ${view} TO cage_read;`,
340
+ ].join('\n'));
341
+ }
248
342
  parts.push(SYSTEM_SAFE_SQL);
249
343
  return parts.join('\n\n');
250
344
  }
251
345
  /** 建库时执行一次(超级用户):模式、账号、默认权限 */
346
+ /**
347
+ * 为已有数据库生成模式、角色与默认权限 SQL;函数本身不执行、不建库,也不提供业务数据初始化。
348
+ * SQL 含密码且会调整既有同名账号,调用方必须先核对集群角色复用策略,不能直接用于普通 dev 启动。
349
+ */
252
350
  export function bootstrapSql(pw, dbName) {
253
351
  const role = (name, login, password) => `
254
352
  DO $$ BEGIN
@@ -290,6 +388,7 @@ ALTER DEFAULT PRIVILEGES FOR ROLE cage_migrate IN SCHEMA flow GRANT USAGE, SELEC
290
388
  /** 单租户部署使用的默认租户(启用多租户时每个租户一行 sys.tenant) */
291
389
  export const DEFAULT_TENANT = '00000000-0000-4000-8000-000000000001';
292
390
  /** 框架系统表(框架自己的迁移流,按名字记入 sys.schema_migrations) */
391
+ /** 系统迁移按数组顺序前向执行;历史 SQL(包括字符串内注释)参与 checksum,必须保持不可变。 */
293
392
  export const SYSTEM_MIGRATIONS = [
294
393
  {
295
394
  name: 'cage:0001_system',
@@ -444,7 +543,12 @@ CREATE TABLE IF NOT EXISTS sys.job_state (
444
543
  );
445
544
  `,
446
545
  },
546
+ TRANSFER_MIGRATION,
547
+ RUNTIME_MIGRATION,
548
+ FILE_MIGRATION,
549
+ EVENT_VERSION_MIGRATION,
447
550
  ];
551
+ /** 迁移账本记录名称、摘要及提交时间;执行器先建账本,再校验全部已执行文件内容。 */
448
552
  export const SCHEMA_MIGRATIONS_SQL = `
449
553
  CREATE TABLE IF NOT EXISTS sys.schema_migrations (
450
554
  name text PRIMARY KEY,
@@ -1 +1 @@
1
- {"version":3,"file":"ddl.js","sourceRoot":"","sources":["../../src/db/ddl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ddl.js","sourceRoot":"","sources":["../../src/db/ddl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** 提交版本属于事件执行证据;追加迁移,不重写已发布的 outbox 表定义。 */
2
+ /**
3
+ * aggregate_version 允许时间线将事件对应到实际提交版本;历史事件没有值时仍可正常消费。
4
+ * 不回填猜测版本,避免把当前对象版本错误归因于旧事件;迁移 SQL 作为历史保持不可变。
5
+ */
6
+ export declare const EVENT_VERSION_MIGRATION: {
7
+ name: string;
8
+ sql: string;
9
+ };
@@ -0,0 +1,10 @@
1
+ /** 提交版本属于事件执行证据;追加迁移,不重写已发布的 outbox 表定义。 */
2
+ /**
3
+ * aggregate_version 允许时间线将事件对应到实际提交版本;历史事件没有值时仍可正常消费。
4
+ * 不回填猜测版本,避免把当前对象版本错误归因于旧事件;迁移 SQL 作为历史保持不可变。
5
+ */
6
+ export const EVENT_VERSION_MIGRATION = {
7
+ name: 'cage:0005_event_version',
8
+ sql: 'ALTER TABLE sys.outbox ADD COLUMN aggregate_version integer;',
9
+ };
10
+ //# sourceMappingURL=event-version-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-version-schema.js","sourceRoot":"","sources":["../../src/db/event-version-schema.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,yBAAyB;IAC/B,GAAG,EAAE,8DAA8D;CACpE,CAAC"}
@@ -1,5 +1,9 @@
1
+ /** 账号连接及生命周期;数据库连接只由基础设施创建,领域 handler 使用注入的只读依赖。 */
1
2
  export * from './connect.js';
3
+ /** 同一注册表推导物理结构和安全视图;SQL 生成本身不连接或修改数据库。 */
2
4
  export * from './ddl.js';
5
+ /** 前向迁移与历史 checksum 校验;调用方须明确选择迁移账号和待执行文件。 */
3
6
  export * from './migrate.js';
7
+ /** 内部行/快照转换与事务会话变量,不能作为业务绕过命令和安全读侧的接口。 */
4
8
  export * from './rows.js';
5
9
  export * from './session.js';
package/dist/db/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  // @yss123/cage-kernel/db:连接、DDL 生成、迁移执行(cli、testkit、http 使用;业务代码不应导入)
2
+ /** 账号连接及生命周期;数据库连接只由基础设施创建,领域 handler 使用注入的只读依赖。 */
2
3
  export * from './connect.js';
4
+ /** 同一注册表推导物理结构和安全视图;SQL 生成本身不连接或修改数据库。 */
3
5
  export * from './ddl.js';
6
+ /** 前向迁移与历史 checksum 校验;调用方须明确选择迁移账号和待执行文件。 */
4
7
  export * from './migrate.js';
8
+ /** 内部行/快照转换与事务会话变量,不能作为业务绕过命令和安全读侧的接口。 */
5
9
  export * from './rows.js';
6
10
  export * from './session.js';
7
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oDAAoD;AACpD,cAAc,cAAc,CAAC;AAC7B,0CAA0C;AAC1C,cAAc,UAAU,CAAC;AACzB,8CAA8C;AAC9C,cAAc,cAAc,CAAC;AAC7B,0CAA0C;AAC1C,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import type { Registry } from '../registry.js';
2
2
  import { type SchemaModel } from './ddl.js';
3
+ /** applied 只列出本次新提交的迁移;safeLayerRebuilt 表示最后的安全层事务也已成功提交。 */
3
4
  export interface MigrateResult {
4
5
  applied: string[];
5
6
  safeLayerRebuilt: boolean;
6
7
  }
8
+ /** name 是持久迁移身份而非展示名称;同名 SQL 的摘要一旦落库,后续执行必须保持一致。 */
7
9
  export interface MigrationFile {
8
10
  name: string;
9
11
  sql: string;
@@ -12,8 +14,16 @@ export interface MigrationFile {
12
14
  export declare function readMigrations(dir: string): MigrationFile[];
13
15
  /** 迁移文件末尾内嵌的结构快照(cage gen 写入),用于下一次比较 */
14
16
  export declare function snapshotOf(m: MigrationFile): SchemaModel | null;
17
+ /** 从已排序迁移末尾向前查找最近的结构快照;它是生成基线,不是实际数据库结构扫描。 */
15
18
  export declare function latestSnapshot(files: MigrationFile[]): SchemaModel | null;
19
+ /** 把期望结构附到迁移注释中,供下一次 gen 比较;不解析或验证手工 SQL 的实际效果。 */
16
20
  export declare function embedSnapshot(sql: string, model: SchemaModel): string;
21
+ /**
22
+ * 用独立迁移连接取得数据库咨询锁,先核对全部已执行迁移摘要,再逐个事务应用缺失迁移。
23
+ * 系统、扩展和项目迁移按组合顺序执行;后一个失败不会撤销此前已经提交的迁移。
24
+ * 最后单独重建安全层和审计分区,只有此事务也成功才返回;finally 始终尝试释放锁并关闭连接。
25
+ * 不创建数据库或账号,不修正历史迁移,不推断真实 schema 是否存在人工漂移。
26
+ */
17
27
  export declare function runMigrations(opts: {
18
28
  migrateUrl: string;
19
29
  registry: Registry;
@@ -20,6 +20,7 @@ export function snapshotOf(m) {
20
20
  const hit = SNAPSHOT_RE.exec(m.sql);
21
21
  return hit ? JSON.parse(hit[1]) : null;
22
22
  }
23
+ /** 从已排序迁移末尾向前查找最近的结构快照;它是生成基线,不是实际数据库结构扫描。 */
23
24
  export function latestSnapshot(files) {
24
25
  for (let i = files.length - 1; i >= 0; i--) {
25
26
  const s = snapshotOf(files[i]);
@@ -28,10 +29,17 @@ export function latestSnapshot(files) {
28
29
  }
29
30
  return null;
30
31
  }
32
+ /** 把期望结构附到迁移注释中,供下一次 gen 比较;不解析或验证手工 SQL 的实际效果。 */
31
33
  export function embedSnapshot(sql, model) {
32
34
  return `${sql.trimEnd()}\n\n/* cage:schema\n${JSON.stringify(model)}\n*/\n`;
33
35
  }
34
36
  const checksum = (s) => createHash('sha256').update(s).digest('hex').slice(0, 16);
37
+ /**
38
+ * 用独立迁移连接取得数据库咨询锁,先核对全部已执行迁移摘要,再逐个事务应用缺失迁移。
39
+ * 系统、扩展和项目迁移按组合顺序执行;后一个失败不会撤销此前已经提交的迁移。
40
+ * 最后单独重建安全层和审计分区,只有此事务也成功才返回;finally 始终尝试释放锁并关闭连接。
41
+ * 不创建数据库或账号,不修正历史迁移,不推断真实 schema 是否存在人工漂移。
42
+ */
35
43
  export async function runMigrations(opts) {
36
44
  const log = opts.log ?? (() => { });
37
45
  const client = new pg.Client({ connectionString: opts.migrateUrl, application_name: 'cage-migrate' });
@@ -41,7 +49,7 @@ export async function runMigrations(opts) {
41
49
  await client.query('select pg_advisory_lock($1)', [MIGRATION_LOCK]);
42
50
  await client.query(SCHEMA_MIGRATIONS_SQL);
43
51
  const done = new Map((await client.query('select name, checksum from sys.schema_migrations')).rows.map((r) => [r.name, r.checksum]));
44
- const all = [...SYSTEM_MIGRATIONS, ...opts.registry.systemDdl.map((sql, i) => ({ name: `cage:ext_${checksum(sql)}_${i}`, sql })), ...opts.migrations];
52
+ const all = [...SYSTEM_MIGRATIONS, ...opts.registry.systemDdl.map((sql, i) => ({ name: `cage:ext_${checksum(sql)}_${i}`, sql })), ...opts.registry.systemMigrations, ...opts.migrations];
45
53
  // 在执行任何新迁移之前核对历史内容。否则同名文件被改写后会被直接跳过,
46
54
  // 本地结构快照看起来已更新,真实数据库却仍保持旧结构,下一次发布才会出错。
47
55
  for (const migration of all) {
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"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"}
package/dist/db/rows.d.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  import type { AnyAggregate } from '../primitives/aggregate.js';
2
2
  export declare const SYSTEM_COLUMNS: string[];
3
3
  /** 行 → 快照(不含 tenantId;hidden 字段可选保留) */
4
+ /** 内部写流水线默认保留 hidden 以供业务校验;对外呈现仍必须再经过 present 或安全视图。 */
4
5
  export declare function rowToSnapshot(agg: AnyAggregate, row: Record<string, unknown>, keepHidden?: boolean): Record<string, any>;
5
6
  /** 视图行(列名 snake_case)→ camelCase 对象 */
6
7
  export declare function viewRowToObject(row: Record<string, unknown>): Record<string, any>;
7
8
  /** 快照字段 → 列值(jsonb 字段序列化) */
9
+ /** 仅转换已声明且本次提供的业务字段;关系由独立事务绑定流程处理,系统列由调用者设置。 */
8
10
  export declare function fieldsToColumns(agg: AnyAggregate, values: Record<string, unknown>): Record<string, unknown>;
9
11
  /** 只比较业务字段,找出变化的字段 */
10
12
  export declare function diffFields(agg: AnyAggregate, cur: Record<string, unknown>, next: Record<string, unknown>): string[];
package/dist/db/rows.js CHANGED
@@ -1,11 +1,14 @@
1
+ import { isRelation } from '../primitives/fields.js';
1
2
  import { camel, snake } from '../util/names.js';
2
3
  export const SYSTEM_COLUMNS = ['id', 'tenant_id', 'status', 'version', 'created_at', 'updated_at'];
4
+ /** 只规范驱动返回的 Date;numeric 金额字符串与 JSON 内容保持原类型,避免额外精度损失。 */
3
5
  function normalize(v) {
4
6
  if (v instanceof Date)
5
7
  return v.toISOString();
6
8
  return v;
7
9
  }
8
10
  /** 行 → 快照(不含 tenantId;hidden 字段可选保留) */
11
+ /** 内部写流水线默认保留 hidden 以供业务校验;对外呈现仍必须再经过 present 或安全视图。 */
9
12
  export function rowToSnapshot(agg, row, keepHidden = true) {
10
13
  const out = {
11
14
  id: row.id,
@@ -34,9 +37,12 @@ export function viewRowToObject(row) {
34
37
  return out;
35
38
  }
36
39
  /** 快照字段 → 列值(jsonb 字段序列化) */
40
+ /** 仅转换已声明且本次提供的业务字段;关系由独立事务绑定流程处理,系统列由调用者设置。 */
37
41
  export function fieldsToColumns(agg, values) {
38
42
  const out = {};
39
43
  for (const [k, f] of Object.entries(agg.fields)) {
44
+ if (isRelation(f))
45
+ continue;
40
46
  if (!(k in values))
41
47
  continue;
42
48
  const v = values[k];
@@ -1 +1 @@
1
- {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/db/rows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/db/rows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * connector_execution 用租户/操作/幂等键唯一标识外部执行,保存请求摘要、租约和成功回执。
3
+ * unknown 表示远端是否执行无法确定,不能按普通失败直接重发;worker_runtime 则保存进程指纹与心跳。
4
+ * SQL 字符串是已发布迁移内容,任何后续结构变化必须追加新迁移,不能修改此历史文本。
5
+ */
6
+ export declare const RUNTIME_MIGRATION: {
7
+ name: string;
8
+ sql: string;
9
+ };
@@ -0,0 +1,41 @@
1
+ // 运行协议的持久证据独立于业务聚合;追加系统迁移,保留已发布迁移校验和。
2
+ /**
3
+ * connector_execution 用租户/操作/幂等键唯一标识外部执行,保存请求摘要、租约和成功回执。
4
+ * unknown 表示远端是否执行无法确定,不能按普通失败直接重发;worker_runtime 则保存进程指纹与心跳。
5
+ * SQL 字符串是已发布迁移内容,任何后续结构变化必须追加新迁移,不能修改此历史文本。
6
+ */
7
+ export const RUNTIME_MIGRATION = {
8
+ name: 'cage:0003_runtime_reliability',
9
+ sql: `
10
+ CREATE TABLE IF NOT EXISTS sys.connector_execution (
11
+ tenant_id uuid NOT NULL,
12
+ connector text NOT NULL,
13
+ operation text NOT NULL,
14
+ idempotency_key text NOT NULL,
15
+ request_hash text NOT NULL,
16
+ status text NOT NULL CHECK (status IN ('planned','calling','succeeded','failed','unknown')),
17
+ response jsonb,
18
+ error text,
19
+ attempts int NOT NULL DEFAULT 0,
20
+ outbox_id bigint,
21
+ consumer text,
22
+ lease_token text,
23
+ lease_until timestamptz,
24
+ updated_at timestamptz NOT NULL DEFAULT now(),
25
+ PRIMARY KEY (tenant_id, connector, operation, idempotency_key)
26
+ );
27
+ CREATE INDEX IF NOT EXISTS connector_execution_outbox_idx ON sys.connector_execution (tenant_id, outbox_id);
28
+ DROP INDEX IF EXISTS sys.sync_record_key_uq;
29
+ CREATE UNIQUE INDEX sync_record_key_uq ON sys.sync_record (tenant_id, connector, operation, idempotency_key);
30
+ CREATE TABLE IF NOT EXISTS sys.worker_runtime (
31
+ id text PRIMARY KEY,
32
+ pid int NOT NULL,
33
+ registry_fingerprint text NOT NULL,
34
+ manifest jsonb NOT NULL,
35
+ status text NOT NULL,
36
+ details jsonb NOT NULL DEFAULT '{}',
37
+ heartbeat_at timestamptz NOT NULL DEFAULT now()
38
+ );
39
+ `,
40
+ };
41
+ //# sourceMappingURL=runtime-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-schema.js","sourceRoot":"","sources":["../../src/db/runtime-schema.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,+BAA+B;IACrC,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BN;CACA,CAAC"}
@@ -1,4 +1,10 @@
1
1
  import { type Kysely, type Transaction } from 'kysely';
2
2
  import type { Ctx } from '../types.js';
3
+ /** 把内存 ScopeGrant 压缩成数据库函数约定的 c/deptIds 格式,不改变多角色 OR 语义。 */
3
4
  export declare function scopesJson(ctx: Ctx): string;
5
+ /**
6
+ * 为安全视图设置当前租户、真人、部门、范围和明文种类;所有值参数化传递。
7
+ * 生产路径应在事务内使用默认 local=true,保证连接归还池后不会遗留前一用户身份。
8
+ * local=false 仅适合明确管理连接生命周期的工具/测试,调用者必须承担会话清理责任。
9
+ */
4
10
  export declare function setSessionVars(tx: Transaction<any> | Kysely<any>, ctx: Ctx, local?: boolean): Promise<void>;
@@ -1,6 +1,7 @@
1
1
  // 会话变量:内核在事务开始时写入当前主体,安全视图和行级策略读取它们。
2
2
  // set_config 的第三个参数 true 表示只在本事务内有效,事务结束自动清空;忘了设置时一条都查不到。
3
3
  import { sql } from 'kysely';
4
+ /** 把内存 ScopeGrant 压缩成数据库函数约定的 c/deptIds 格式,不改变多角色 OR 语义。 */
4
5
  export function scopesJson(ctx) {
5
6
  const out = {};
6
7
  for (const [agg, grants] of Object.entries(ctx.scopes)) {
@@ -8,6 +9,11 @@ export function scopesJson(ctx) {
8
9
  }
9
10
  return JSON.stringify(out);
10
11
  }
12
+ /**
13
+ * 为安全视图设置当前租户、真人、部门、范围和明文种类;所有值参数化传递。
14
+ * 生产路径应在事务内使用默认 local=true,保证连接归还池后不会遗留前一用户身份。
15
+ * local=false 仅适合明确管理连接生命周期的工具/测试,调用者必须承担会话清理责任。
16
+ */
11
17
  export async function setSessionVars(tx, ctx, local = true) {
12
18
  await sql `select
13
19
  set_config('app.user_id', ${ctx.userId ?? ctx.onBehalfOf ?? ''}, ${local}),
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/db/session.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,0DAA0D;AAC1D,OAAO,EAAe,GAAG,EAAoB,MAAM,QAAQ,CAAC;AAG5D,MAAM,UAAU,UAAU,CAAC,GAAQ;IACjC,MAAM,GAAG,GAAwD,EAAE,CAAC;IACpE,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAkC,EAAE,GAAQ,EAAE,KAAK,GAAG,IAAI;IAC7F,MAAM,GAAG,CAAA;kCACuB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,KAAK,KAAK;kCAC5C,GAAG,CAAC,QAAQ,KAAK,KAAK;kCACtB,GAAG,CAAC,MAAM,IAAI,EAAE,KAAK,KAAK;kCAC1B,GAAG,CAAC,QAAQ,IAAI,EAAE,KAAK,KAAK;kCAC5B,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK;kCACzB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/db/session.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,0DAA0D;AAC1D,OAAO,EAAe,GAAG,EAAoB,MAAM,QAAQ,CAAC;AAG5D,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,GAAQ;IACjC,MAAM,GAAG,GAAwD,EAAE,CAAC;IACpE,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAkC,EAAE,GAAQ,EAAE,KAAK,GAAG,IAAI;IAC7F,MAAM,GAAG,CAAA;kCACuB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,KAAK,KAAK;kCAC5C,GAAG,CAAC,QAAQ,KAAK,KAAK;kCACtB,GAAG,CAAC,MAAM,IAAI,EAAE,KAAK,KAAK;kCAC1B,GAAG,CAAC,QAAQ,IAAI,EAAE,KAAK,KAAK;kCAC5B,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK;kCACzB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAChF,CAAC"}