@synoikia/core 0.3.0 → 0.4.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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Nir
3
+ Copyright (c) 2026 via-justa
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -31,42 +31,26 @@ export declare function resolveAccess(db: DbLike, instanceId: string, key: strin
31
31
  reason: 'unknown_operation';
32
32
  };
33
33
  /**
34
- * Sets one group's level; operations with their own level keep it. Raising to `write` must carry
35
- * `acknowledge` = exactly the writes that will then run without asking (the list the admin was
36
- * shown); if a sync changed that list in between, this fails with 409 and the fresh list.
34
+ * Sets one group's level and resets every operation in it to follow the group (locked operations go
35
+ * back to closed). Raising to `write` acknowledges the plain writes it lets run without asking; the
36
+ * audit event lists them.
37
37
  */
38
38
  export declare function setGroupLevel(db: Db, instanceId: string, key: string, level: string, opts?: {
39
- acknowledge?: string[];
40
39
  actor?: Actor;
41
40
  now?: Date;
42
41
  }): GroupSummary;
43
- export interface BulkPreview {
44
- level: AccessLevel;
45
- /** `exposes`: writes that will run without asking at `write` (only listed for a `write` preview). */
46
- groups: {
47
- key: string;
48
- label: string;
49
- from: AccessLevel;
50
- exposes: {
51
- id: string;
52
- key: string;
53
- }[];
54
- }[];
55
- /** Pass back unchanged as `acknowledge` when applying a bulk `write`. */
56
- acknowledge: string[];
57
- }
58
- export declare function previewBulkLevel(db: DbLike, instanceId: string, level: string): BulkPreview;
59
42
  /**
60
- * Sets every group of an instance to one level (operations with their own level keep it).
61
- * `none`/`read`/`ask` apply directly. `write` requires `confirm` = the instance slug and
62
- * `acknowledge` = the current preview's list. Locked operations never auto-run.
43
+ * Sets every group of an instance to one level and resets every operation to follow its group.
44
+ * `write` acknowledges the plain writes it lets run without asking. Locked operations never auto-run.
63
45
  */
64
46
  export declare function applyBulkLevel(db: Db, instanceId: string, level: string, opts?: {
65
- confirm?: string;
66
- acknowledge?: string[];
67
47
  actor?: Actor;
68
48
  now?: Date;
69
- }): BulkPreview['groups'];
49
+ }): {
50
+ key: string;
51
+ label: string;
52
+ from: AccessLevel;
53
+ }[];
70
54
  export declare function renameGroup(db: Db, instanceId: string, key: string, label: string, opts?: {
71
55
  actor?: Actor;
72
56
  }): void;
@@ -83,17 +67,16 @@ export declare function mergeGroups(db: Db, instanceId: string, input: {
83
67
  now?: Date;
84
68
  }): GroupSummary;
85
69
  export interface OperationPatch {
86
- /** The operation's own level; `null` makes it follow its group again. */
70
+ /** The operation's own level (one its kind allows); `null` makes it follow its group again. */
87
71
  level?: AccessLevel | null;
88
72
  acknowledged?: boolean;
89
- classification?: 'read' | 'write';
90
73
  /** Require a best-practice key (guides) for this operation; turning it off is remembered across syncs. */
91
74
  attestationRequired?: boolean;
92
75
  }
93
76
  /**
94
- * Per-operation level, acknowledgement and classification override. Locked operations can't be set
95
- * to `write` and can't change classification (409). Setting a write to `write`, or overriding an
96
- * operation's classification to write, acknowledges it.
77
+ * Per-operation level and acknowledgement. Read or write comes from the plugin and isn't editable. The
78
+ * level must be one the operation's kind allows (reads: none/read/ask; writes: none/ask/write; locked:
79
+ * none/ask); locked operations refuse `write` with 409. Setting a write to `write` acknowledges it.
97
80
  */
98
81
  export declare function updateOperation(db: Db, instanceId: string, opId: string, patch: OperationPatch, opts?: {
99
82
  actor?: Actor;
@@ -3,7 +3,7 @@ import { and, asc, eq, inArray } from 'drizzle-orm';
3
3
  import { writeAudit } from '../audit.js';
4
4
  import { operationGroupAliases, operationGroups, operations, pluginInstances } from '../db/schema.js';
5
5
  import { ConflictError, NotFoundError, ValidationError } from '../errors.js';
6
- import { ACCESS_LEVELS, FULL_ACCESS, effectiveAccess, isAccessLevel, minLevel } from '../gate/access.js';
6
+ import { ACCESS_LEVELS, FULL_ACCESS, allowedLevels, effectiveAccess, isAccessLevel, minLevel } from '../gate/access.js';
7
7
  function assertLevel(level) {
8
8
  if (!isAccessLevel(level)) {
9
9
  throw new ValidationError('invalid_level', `Level must be one of ${ACCESS_LEVELS.join(', ')}`);
@@ -17,15 +17,26 @@ export const accessInput = (op) => ({
17
17
  });
18
18
  const isPlainWrite = (op) => !op.stale && !op.locked && op.classification === 'write';
19
19
  /**
20
- * Writes that would run without asking once their group is at `write`: plain writes that follow the
21
- * group. Raising a group to `write` must acknowledge exactly these (locked ops never auto-run).
20
+ * Writes that run without asking once their group is at `write`. Setting a group's level resets every
21
+ * operation in it to follow the group, so that is every plain write in it; raising a group to `write`
22
+ * acknowledges them (locked ops never auto-run).
22
23
  */
23
- const followsGroupWrite = (op) => isPlainWrite(op) && op.levelOverride === null;
24
+ const runsAtGroupWrite = isPlainWrite;
25
+ /** Resets every operation in these groups to follow its group; returns the keys that had their own level. */
26
+ function resetOwnLevels(db, groupIds) {
27
+ const own = opsInGroups(db, groupIds).filter((o) => o.levelOverride !== null);
28
+ if (own.length > 0) {
29
+ db.update(operations)
30
+ .set({ levelOverride: null })
31
+ .where(inArray(operations.id, own.map((o) => o.id)))
32
+ .run();
33
+ }
34
+ return own.map((o) => o.key);
35
+ }
24
36
  /** Writes whose effective level is `write` but that nobody acknowledged yet: they ask until someone does. */
25
37
  function isPendingWrite(op, group) {
26
38
  return isPlainWrite(op) && !op.writeAcknowledged && (op.levelOverride ?? group?.level) === 'write';
27
39
  }
28
- const sameSet = (a = [], b) => a.length === b.length && new Set(a).size === b.length && b.every((x) => a.includes(x));
29
40
  function getGroup(db, instanceId, key) {
30
41
  const group = db
31
42
  .select()
@@ -88,9 +99,9 @@ export function resolveAccess(db, instanceId, key, principal = FULL_ACCESS) {
88
99
  }
89
100
  // ── group level ──────────────────────────────────────────────────────────────────────────────────
90
101
  /**
91
- * Sets one group's level; operations with their own level keep it. Raising to `write` must carry
92
- * `acknowledge` = exactly the writes that will then run without asking (the list the admin was
93
- * shown); if a sync changed that list in between, this fails with 409 and the fresh list.
102
+ * Sets one group's level and resets every operation in it to follow the group (locked operations go
103
+ * back to closed). Raising to `write` acknowledges the plain writes it lets run without asking; the
104
+ * audit event lists them.
94
105
  */
95
106
  export function setGroupLevel(db, instanceId, key, level, opts = {}) {
96
107
  assertLevel(level);
@@ -98,20 +109,9 @@ export function setGroupLevel(db, instanceId, key, level, opts = {}) {
98
109
  const actor = opts.actor ?? {};
99
110
  db.transaction((tx) => {
100
111
  const group = getGroup(tx, instanceId, key);
101
- let acknowledged = [];
102
- if (level === 'write') {
103
- const autoRun = opsInGroups(tx, [group.id]).filter(followsGroupWrite);
104
- const expected = autoRun.map((o) => o.id);
105
- if (!sameSet(opts.acknowledge, expected)) {
106
- throw new ConflictError('acknowledgement_mismatch', 'Acknowledge exactly the writes that will run without asking', {
107
- expected: autoRun.map((o) => ({ id: o.id, key: o.key })),
108
- });
109
- }
110
- const fresh = autoRun.filter((o) => !o.writeAcknowledged);
111
- acknowledge(tx, fresh.map((o) => o.id), actor, now);
112
- acknowledged = fresh.map((o) => o.key);
113
- }
114
- if (group.level === level && acknowledged.length === 0)
112
+ const acknowledged = level === 'write' ? acknowledgeWrites(tx, [group.id], actor, now) : [];
113
+ const reset = resetOwnLevels(tx, [group.id]);
114
+ if (group.level === level && acknowledged.length === 0 && reset.length === 0)
115
115
  return;
116
116
  tx.update(operationGroups)
117
117
  .set({ level, levelChangedAt: now, levelChangedBy: actor.userId ?? null })
@@ -123,34 +123,20 @@ export function setGroupLevel(db, instanceId, key, level, opts = {}) {
123
123
  decision: 'group_level_changed',
124
124
  actorKind: 'user',
125
125
  actorId: actor.userId,
126
- detail: { group: key, from: group.level, to: level, acknowledged },
126
+ detail: { group: key, from: group.level, to: level, acknowledged, reset },
127
127
  }, now);
128
128
  });
129
129
  return listGroups(db, instanceId).find((g) => g.key === key);
130
130
  }
131
- export function previewBulkLevel(db, instanceId, level) {
132
- assertLevel(level);
133
- const groups = db
134
- .select()
135
- .from(operationGroups)
136
- .where(eq(operationGroups.instanceId, instanceId))
137
- .orderBy(asc(operationGroups.key))
138
- .all();
139
- const pending = level === 'write'
140
- ? opsInGroups(db, groups.map((g) => g.id)).filter(followsGroupWrite)
141
- : [];
142
- const preview = groups.map((g) => ({
143
- key: g.key,
144
- label: g.label,
145
- from: g.level,
146
- exposes: pending.filter((o) => o.groupId === g.id).map((o) => ({ id: o.id, key: o.key })),
147
- }));
148
- return { level, groups: preview, acknowledge: pending.map((o) => o.id) };
131
+ /** Acknowledges the not-yet-acknowledged plain writes in these groups; returns their keys. */
132
+ function acknowledgeWrites(db, groupIds, actor, now) {
133
+ const fresh = opsInGroups(db, groupIds).filter((o) => runsAtGroupWrite(o) && !o.writeAcknowledged);
134
+ acknowledge(db, fresh.map((o) => o.id), actor, now);
135
+ return fresh.map((o) => o.key);
149
136
  }
150
137
  /**
151
- * Sets every group of an instance to one level (operations with their own level keep it).
152
- * `none`/`read`/`ask` apply directly. `write` requires `confirm` = the instance slug and
153
- * `acknowledge` = the current preview's list. Locked operations never auto-run.
138
+ * Sets every group of an instance to one level and resets every operation to follow its group.
139
+ * `write` acknowledges the plain writes it lets run without asking. Locked operations never auto-run.
154
140
  */
155
141
  export function applyBulkLevel(db, instanceId, level, opts = {}) {
156
142
  assertLevel(level);
@@ -160,25 +146,15 @@ export function applyBulkLevel(db, instanceId, level, opts = {}) {
160
146
  const instance = tx.select().from(pluginInstances).where(eq(pluginInstances.id, instanceId)).get();
161
147
  if (!instance)
162
148
  throw new NotFoundError('instance_not_found', 'No such instance');
163
- const preview = previewBulkLevel(tx, instanceId, level);
164
- if (level === 'write') {
165
- if (opts.confirm !== instance.slug) {
166
- throw new ConflictError('confirmation_required', `Type the endpoint slug "${instance.slug}" to confirm`);
167
- }
168
- if (!sameSet(opts.acknowledge, preview.acknowledge)) {
169
- throw new ConflictError('acknowledgement_mismatch', 'The list of exposed writes changed; review it again', {
170
- preview,
171
- });
172
- }
173
- acknowledge(tx, opsInGroups(tx, tx
174
- .select({ id: operationGroups.id })
175
- .from(operationGroups)
176
- .where(eq(operationGroups.instanceId, instanceId))
177
- .all()
178
- .map((g) => g.id))
179
- .filter((o) => followsGroupWrite(o) && !o.writeAcknowledged)
180
- .map((o) => o.id), actor, now);
181
- }
149
+ const groups = tx
150
+ .select()
151
+ .from(operationGroups)
152
+ .where(eq(operationGroups.instanceId, instanceId))
153
+ .orderBy(asc(operationGroups.key))
154
+ .all();
155
+ const ids = groups.map((g) => g.id);
156
+ const acknowledged = level === 'write' ? acknowledgeWrites(tx, ids, actor, now) : [];
157
+ const reset = resetOwnLevels(tx, ids);
182
158
  tx.update(operationGroups)
183
159
  .set({ level, levelChangedAt: now, levelChangedBy: actor.userId ?? null })
184
160
  .where(eq(operationGroups.instanceId, instanceId))
@@ -191,11 +167,12 @@ export function applyBulkLevel(db, instanceId, level, opts = {}) {
191
167
  actorId: actor.userId,
192
168
  detail: {
193
169
  to: level,
194
- groups: preview.groups.map((g) => ({ key: g.key, from: g.from, to: level })),
195
- acknowledged: preview.groups.flatMap((g) => g.exposes.map((o) => o.key)),
170
+ groups: groups.map((g) => ({ key: g.key, from: g.level, to: level })),
171
+ acknowledged,
172
+ reset,
196
173
  },
197
174
  }, now);
198
- return preview.groups;
175
+ return groups.map((g) => ({ key: g.key, label: g.label, from: g.level }));
199
176
  });
200
177
  }
201
178
  // ── regrouping ───────────────────────────────────────────────────────────────────────────────────
@@ -296,9 +273,9 @@ export function mergeGroups(db, instanceId, input, opts = {}) {
296
273
  return listGroups(db, instanceId).find((g) => g.key === into);
297
274
  }
298
275
  /**
299
- * Per-operation level, acknowledgement and classification override. Locked operations can't be set
300
- * to `write` and can't change classification (409). Setting a write to `write`, or overriding an
301
- * operation's classification to write, acknowledges it.
276
+ * Per-operation level and acknowledgement. Read or write comes from the plugin and isn't editable. The
277
+ * level must be one the operation's kind allows (reads: none/read/ask; writes: none/ask/write; locked:
278
+ * none/ask); locked operations refuse `write` with 409. Setting a write to `write` acknowledges it.
302
279
  */
303
280
  export function updateOperation(db, instanceId, opId, patch, opts = {}) {
304
281
  const now = opts.now ?? new Date();
@@ -312,22 +289,21 @@ export function updateOperation(db, instanceId, opId, patch, opts = {}) {
312
289
  if (!op)
313
290
  throw new NotFoundError('operation_not_found', 'No such operation on this instance');
314
291
  const set = {};
315
- if (patch.classification !== undefined && patch.classification !== op.classification) {
316
- if (op.locked)
317
- throw new ConflictError('operation_locked', `${op.key} is locked; its classification can't change`);
318
- set.classification = patch.classification;
319
- set.classificationSource = 'override';
320
- }
321
292
  if (patch.level !== undefined && patch.level !== op.levelOverride) {
322
- if (patch.level !== null)
293
+ if (patch.level !== null) {
323
294
  assertLevel(patch.level);
324
- if (patch.level === 'write' && op.locked) {
325
- throw new ConflictError('operation_locked', `${op.key} is locked; it always asks for approval`);
295
+ if (patch.level === 'write' && op.locked) {
296
+ throw new ConflictError('operation_locked', `${op.key} is locked; it always asks for approval`);
297
+ }
298
+ const allowed = allowedLevels(op);
299
+ if (!allowed.includes(patch.level)) {
300
+ throw new ValidationError('invalid_level_for_operation', `${op.key} is a ${op.locked ? 'locked operation' : op.classification}; its level must be one of ${allowed.join(', ')}`);
301
+ }
326
302
  }
327
303
  set.levelOverride = patch.level;
328
304
  }
329
- const isWrite = (set.classification ?? op.classification) === 'write';
330
- const acknowledges = patch.acknowledged === true || set.classification === 'write' || (patch.level === 'write' && isWrite);
305
+ const isWrite = op.locked || op.classification === 'write';
306
+ const acknowledges = patch.acknowledged === true || (patch.level === 'write' && isWrite);
331
307
  if (acknowledges && !op.writeAcknowledged) {
332
308
  Object.assign(set, { writeAcknowledged: true, acknowledgedAt: now, acknowledgedBy: actor.userId ?? null });
333
309
  }
@@ -352,7 +328,6 @@ export function updateOperation(db, instanceId, opId, patch, opts = {}) {
352
328
  before: {
353
329
  level: op.levelOverride,
354
330
  writeAcknowledged: op.writeAcknowledged,
355
- classification: op.classification,
356
331
  attestationRequired: op.attestationRequired,
357
332
  },
358
333
  after: set,
@@ -1 +1 @@
1
- {"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/catalog/groups.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/catalog/groups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACtG,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAexH,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,eAAe,CAAC,eAAe,EAAE,wBAAwB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAgB,EAAE,EAAE,CAAC,CAAC;IAChD,cAAc,EAAE,EAAE,CAAC,cAAc;IACjC,MAAM,EAAE,EAAE,CAAC,MAAM;IACjB,aAAa,EAAE,EAAE,CAAC,aAAa;IAC/B,iBAAiB,EAAE,EAAE,CAAC,iBAAiB;CACxC,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,EAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,cAAc,KAAK,OAAO,CAAC;AAEpG;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAEtC,6GAA6G;AAC7G,SAAS,cAAc,CAAC,EAAU,EAAE,QAAkB;IACpD,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC;IAC9E,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;aAClB,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC5B,KAAK,CACJ,OAAO,CACL,UAAU,CAAC,EAAE,EACb,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrB,CACF;aACA,GAAG,EAAE,CAAC;IACX,CAAC;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,6GAA6G;AAC7G,SAAS,cAAc,CAAC,EAAgB,EAAE,KAA2B;IACnE,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,KAAK,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC;AACrG,CAAC;AAED,SAAS,QAAQ,CAAC,EAAU,EAAE,UAAkB,EAAE,GAAW;IAC3D,MAAM,KAAK,GAAG,EAAE;SACb,MAAM,EAAE;SACR,IAAI,CAAC,eAAe,CAAC;SACrB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SACpF,GAAG,EAAE,CAAC;IACT,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,aAAa,GAAG,oBAAoB,CAAC,CAAC;IAC7F,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,EAAU,EAAE,QAAkB;IACjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACtH,CAAC;AAED,SAAS,WAAW,CAAC,EAAU,EAAE,KAAe,EAAE,KAAY,EAAE,GAAS;IACvE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/B,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;SAClB,GAAG,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;SAC3F,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;SACpC,GAAG,EAAE,CAAC;AACX,CAAC;AAYD,MAAM,UAAU,UAAU,CAAC,EAAU,EAAE,UAAkB;IACvD,MAAM,MAAM,GAAG,EAAE;SACd,MAAM,EAAE;SACR,IAAI,CAAC,eAAe,CAAC;SACrB,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SACjD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;SACjC,GAAG,EAAE,CAAC;IACT,MAAM,GAAG,GAAG,WAAW,CACrB,EAAE,EACF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACxB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO;YACL,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,MAAM;gBACzE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,cAAc,KAAK,OAAO,CAAC,CAAC,MAAM;gBAC3E,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;gBAC3C,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;gBAC9D,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,MAAM;aAChE;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,aAAa,CAC3B,EAAU,EACV,UAAkB,EAClB,GAAW,EACX,YAA6B,WAAW;IAExC,MAAM,EAAE,GAAG,EAAE;SACV,MAAM,EAAE;SACR,IAAI,CAAC,UAAU,CAAC;SAChB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SAC1E,GAAG,EAAE,CAAC;IACT,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9E,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAChG,OAAO,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,oGAAoG;AAEpG;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAM,EACN,UAAkB,EAClB,GAAW,EACX,KAAa,EACb,OAAsC,EAAE;IAExC,WAAW,CAAC,KAAK,CAAC,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/B,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACrF,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC;aACvB,GAAG,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;aACzE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;aACvC,GAAG,EAAE,CAAC;QACT,UAAU,CACR,EAAE,EACF;YACE,IAAI,EAAE,QAAQ;YACd,UAAU;YACV,QAAQ,EAAE,qBAAqB;YAC/B,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE;SAC1E,EACD,GAAG,CACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAE,CAAC;AAChE,CAAC;AAED,8FAA8F;AAC9F,SAAS,iBAAiB,CAAC,EAAU,EAAE,QAAkB,EAAE,KAAY,EAAE,GAAS;IAChF,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACnG,WAAW,CACT,EAAE,EACF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACtB,KAAK,EACL,GAAG,CACJ,CAAC;IACF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAM,EACN,UAAkB,EAClB,KAAa,EACb,OAAsC,EAAE;IAExC,WAAW,CAAC,KAAK,CAAC,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/B,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACnG,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,EAAE;aACd,MAAM,EAAE;aACR,IAAI,CAAC,eAAe,CAAC;aACrB,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;aACjD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;aACjC,GAAG,EAAE,CAAC;QACT,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,YAAY,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACtC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC;aACvB,GAAG,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;aACzE,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;aACjD,GAAG,EAAE,CAAC;QACT,UAAU,CACR,EAAE,EACF;YACE,IAAI,EAAE,QAAQ;YACd,UAAU;YACV,QAAQ,EAAE,0BAA0B;YACpC,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,MAAM,EAAE;gBACN,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACrE,YAAY;gBACZ,KAAK;aACN;SACF,EACD,GAAG,CACJ,CAAC;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oGAAoG;AAEpG,MAAM,UAAU,WAAW,CAAC,EAAM,EAAE,UAAkB,EAAE,GAAW,EAAE,KAAa,EAAE,OAA0B,EAAE;IAC9G,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,eAAe,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;IACpF,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5C,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACjG,UAAU,CAAC,EAAE,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,UAAU;YACV,QAAQ,EAAE,eAAe;YACzB,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM;YAC3B,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE;SACvD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,EAAM,EACN,UAAkB,EAClB,KAAuD,EACvD,OAAsC,EAAE;IAExC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAC9G,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACpE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,wCAAwC,CAAC,CAAC;IAEnH,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE;QACpB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,MAAM,GAAG,EAAE;aACZ,MAAM,EAAE;aACR,IAAI,CAAC,eAAe,CAAC;aACrB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;aACrF,GAAG,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7F,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG;gBACP,EAAE,EAAE,UAAU,EAAE;gBAChB,UAAU;gBACV,GAAG,EAAE,IAAI;gBACT,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI;gBAClC,KAAK;gBACL,cAAc,EAAE,GAAG;gBACnB,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI;gBAC1C,WAAW,EAAE,GAAG;gBAChB,KAAK,EAAE,KAAK;aACb,CAAC;YACF,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC;iBACvB,GAAG,CAAC;gBACH,KAAK;gBACL,KAAK,EAAE,KAAK;gBACZ,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvG,CAAC;iBACD,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;iBACxC,GAAG,EAAE,CAAC;QACX,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACnF,kEAAkE;QAClE,KAAK,MAAM,CAAC,IAAI,EAAE;aACf,MAAM,EAAE;aACR,IAAI,CAAC,qBAAqB,CAAC;aAC3B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;aAC/G,GAAG,EAAE,EAAE,CAAC;YACT,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAClC,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC;iBAC7B,MAAM,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBACnD,kBAAkB,CAAC;gBAClB,MAAM,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,qBAAqB,CAAC,WAAW,CAAC;gBAC7E,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;aACxB,CAAC;iBACD,GAAG,EAAE,CAAC;QACX,CAAC;QACD,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACtG,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/E,UAAU,CACR,EAAE,EACF;YACE,IAAI,EAAE,QAAQ;YACd,UAAU;YACV,QAAQ,EAAE,eAAe;YACzB,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM;YAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;SACpF,EACD,GAAG,CACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAE,CAAC;AACjE,CAAC;AAYD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAM,EACN,UAAkB,EAClB,IAAY,EACZ,KAAqB,EACrB,OAAsC,EAAE;IAExC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/B,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE;QACpB,MAAM,EAAE,GAAG,EAAE;aACV,MAAM,EAAE;aACR,IAAI,CAAC,UAAU,CAAC;aAChB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;aAC1E,GAAG,EAAE,CAAC;QACT,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,oCAAoC,CAAC,CAAC;QAE9F,MAAM,GAAG,GAA4C,EAAE,CAAC;QACxD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,aAAa,EAAE,CAAC;YAClE,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBACzB,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;oBACzC,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,GAAG,yCAAyC,CAAC,CAAC;gBAClG,CAAC;gBACD,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnC,MAAM,IAAI,eAAe,CACvB,6BAA6B,EAC7B,GAAG,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,8BAA8B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvH,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;QAClC,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,cAAc,KAAK,OAAO,CAAC;QAC3D,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,CAAC,CAAC;QACzF,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS,IAAI,KAAK,CAAC,mBAAmB,KAAK,EAAE,CAAC,mBAAmB,EAAE,CAAC;YACpG,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;YACpD,GAAG,CAAC,iBAAiB,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC;QACrD,CAAC;QACD,IAAI,KAAK,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE1C,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACrE,UAAU,CACR,EAAE,EACF;YACE,IAAI,EAAE,QAAQ;YACd,UAAU;YACV,YAAY,EAAE,EAAE,CAAC,GAAG;YACpB,QAAQ,EAAE,mBAAmB;YAC7B,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,KAAK,CAAC,MAAM;YACrB,MAAM,EAAE;gBACN,MAAM,EAAE;oBACN,KAAK,EAAE,EAAE,CAAC,aAAa;oBACvB,iBAAiB,EAAE,EAAE,CAAC,iBAAiB;oBACvC,mBAAmB,EAAE,EAAE,CAAC,mBAAmB;iBAC5C;gBACD,KAAK,EAAE,GAAG;aACX;SACF,EACD,GAAG,CACJ,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -18,12 +18,16 @@ export interface SyncSummary {
18
18
  * untrusted and re-validated here. Runs in one transaction: either the whole catalog lands or none.
19
19
  *
20
20
  * - Operations missing from the result are marked `stale`, never deleted (history is kept).
21
- * - `locked` always follows the plugin seed; admin overrides survive unless the op becomes locked.
21
+ * - Read or write always comes from the plugin (the upstream API decides); `locked` follows its seed.
22
22
  * - New writes, and reads reclassified to writes, arrive unacknowledged (quarantined). So does an
23
23
  * acknowledged write whose parameters, kind, match profile or lock changed, or that returns from
24
24
  * stale: the admin acknowledged what it was, not what it became.
25
25
  * - Enabled pre-approval rules are re-checked against the new catalog (and the plugin's match
26
26
  * profiles, when given); rules that no longer fit are disabled and audited.
27
- * - Plugin groups are mapped through admin aliases; missing groups are created at `read`.
27
+ * - Plugin groups are mapped through admin aliases; missing groups are created at `ask`.
28
+ * - An operation that appears in a group that already existed gets its own level, so a group an admin
29
+ * already opened never exposes it by itself: reads at Read, writes at None. In a group at None it
30
+ * just follows the group. Operations in a brand-new group follow it.
31
+ * - An operation's own level that no longer fits its kind (it became a write, or locked) is narrowed.
28
32
  */
29
33
  export declare function applyCatalogSync(db: Db, instanceId: string, rawResult: unknown, now?: Date, manifest?: Pick<Manifest, 'matchProfiles' | 'targets'>): SyncSummary;
@@ -4,6 +4,7 @@ import { and, eq, inArray } from 'drizzle-orm';
4
4
  import { writeAudit } from '../audit.js';
5
5
  import { operationGroupAliases, operationGroups, operations, pluginInstances, preApprovalRules } from '../db/schema.js';
6
6
  import { ValidationError } from '../errors.js';
7
+ import { levelInForce, normalizeLevel } from '../gate/access.js';
7
8
  import { MatchSchema } from '../gate/match.js';
8
9
  import { matchMisfit } from './rules.js';
9
10
  /** What an acknowledgement covers: a change to any of these makes the write ask again. */
@@ -14,13 +15,17 @@ const isEffectiveWrite = (op) => op.locked || op.classification === 'write';
14
15
  * untrusted and re-validated here. Runs in one transaction: either the whole catalog lands or none.
15
16
  *
16
17
  * - Operations missing from the result are marked `stale`, never deleted (history is kept).
17
- * - `locked` always follows the plugin seed; admin overrides survive unless the op becomes locked.
18
+ * - Read or write always comes from the plugin (the upstream API decides); `locked` follows its seed.
18
19
  * - New writes, and reads reclassified to writes, arrive unacknowledged (quarantined). So does an
19
20
  * acknowledged write whose parameters, kind, match profile or lock changed, or that returns from
20
21
  * stale: the admin acknowledged what it was, not what it became.
21
22
  * - Enabled pre-approval rules are re-checked against the new catalog (and the plugin's match
22
23
  * profiles, when given); rules that no longer fit are disabled and audited.
23
- * - Plugin groups are mapped through admin aliases; missing groups are created at `read`.
24
+ * - Plugin groups are mapped through admin aliases; missing groups are created at `ask`.
25
+ * - An operation that appears in a group that already existed gets its own level, so a group an admin
26
+ * already opened never exposes it by itself: reads at Read, writes at None. In a group at None it
27
+ * just follows the group. Operations in a brand-new group follow it.
28
+ * - An operation's own level that no longer fits its kind (it became a write, or locked) is narrowed.
24
29
  */
25
30
  export function applyCatalogSync(db, instanceId, rawResult, now = new Date(), manifest) {
26
31
  const result = SyncCatalogResultSchema.parse(rawResult);
@@ -49,6 +54,8 @@ export function applyCatalogSync(db, instanceId, rawResult, now = new Date(), ma
49
54
  .where(eq(operations.instanceId, instanceId))
50
55
  .all()
51
56
  .map((o) => [o.key, o]));
57
+ // Groups as they were before this sync: only operations new to one of these become exceptions.
58
+ const groupsBefore = new Map([...groups.values()].map((g) => [g.id, g]));
52
59
  const summary = {
53
60
  added: 0,
54
61
  updated: 0,
@@ -64,7 +71,7 @@ export function applyCatalogSync(db, instanceId, rawResult, now = new Date(), ma
64
71
  const found = groups.get(key);
65
72
  if (found)
66
73
  return found.id;
67
- const row = { id: randomUUID(), instanceId, key, label: label ?? key, level: 'read', firstSeenAt: now };
74
+ const row = { id: randomUUID(), instanceId, key, label: label ?? key, level: 'ask', firstSeenAt: now };
68
75
  tx.insert(operationGroups).values(row).run();
69
76
  groups.set(key, { ...row, levelChangedAt: null, levelChangedBy: null, stale: false });
70
77
  summary.newGroups.push(key);
@@ -73,9 +80,8 @@ export function applyCatalogSync(db, instanceId, rawResult, now = new Date(), ma
73
80
  for (const d of result.operations) {
74
81
  const prev = existing.get(d.key);
75
82
  const locked = d.locked;
76
- const override = !locked && prev?.classificationSource === 'override';
77
- const classification = locked ? 'write' : override ? prev.classification : d.classification;
78
- const classificationSource = locked ? 'locked' : override ? 'override' : 'inferred';
83
+ const classification = locked ? 'write' : d.classification;
84
+ const classificationSource = locked ? 'locked' : 'inferred';
79
85
  const fields = {
80
86
  displayName: d.displayName ?? null,
81
87
  kind: d.kind,
@@ -92,18 +98,22 @@ export function applyCatalogSync(db, instanceId, rawResult, now = new Date(), ma
92
98
  needsReview: d.needsReview,
93
99
  matchProfile: d.matchProfile ?? null,
94
100
  paramsSchema: d.paramsSchema ?? null,
101
+ sensitiveParams: d.sensitiveParams ?? null,
95
102
  docs: d.docs ?? null,
96
103
  lastSeenAt: now,
97
104
  stale: false,
98
105
  };
99
106
  const nowWrite = isEffectiveWrite({ classification, locked });
100
107
  if (!prev) {
108
+ const group = groupsBefore.get(fields.groupId);
109
+ const ownLevel = group && group.level !== 'none' && !locked ? (nowWrite ? 'none' : 'read') : null;
101
110
  tx.insert(operations)
102
111
  .values({
103
112
  id: randomUUID(),
104
113
  instanceId,
105
114
  key: d.key,
106
115
  ...fields,
116
+ levelOverride: ownLevel,
107
117
  attestationRequired: d.attestationRequired,
108
118
  firstSeenAt: now,
109
119
  })
@@ -116,14 +126,29 @@ export function applyCatalogSync(db, instanceId, rawResult, now = new Date(), ma
116
126
  const becameLocked = locked && !prev.locked;
117
127
  const changed = fingerprint(prev) !== fingerprint(fields) || prev.stale;
118
128
  const becameWrite = nowWrite && (!isEffectiveWrite(prev) || (prev.writeAcknowledged && changed));
129
+ // Its own level, made to fit what it is now. A newly locked op starts closed again (it needs its
130
+ // own `ask`). One the plugin moved to another group keeps the access it had there, so a regroup
131
+ // never opens it wider (a new group starts at `ask`; an existing one may be at `write`).
132
+ let levelOverride = prev.levelOverride;
133
+ if (becameLocked)
134
+ levelOverride = null;
135
+ else if (prev.levelOverride !== null)
136
+ levelOverride = normalizeLevel({ classification, locked }, prev.levelOverride);
137
+ else if (prev.groupId !== fields.groupId && !locked) {
138
+ const had = levelInForce({ classification: prev.classification, locked: prev.locked, levelOverride: null, writeAcknowledged: false }, groupsBefore.get(prev.groupId));
139
+ const newGroup = [...groups.values()].find((g) => g.id === fields.groupId);
140
+ const kind = { classification, locked, levelOverride: null, writeAcknowledged: false };
141
+ // Only an exception when following the new group would give it different access.
142
+ if (levelInForce(kind, newGroup) !== normalizeLevel(kind, had))
143
+ levelOverride = normalizeLevel(kind, had);
144
+ }
119
145
  tx.update(operations)
120
146
  .set({
121
147
  ...fields,
122
148
  // The plugin can add the attestation requirement; only an admin can remove it (and then it stays off).
123
149
  attestationRequired: prev.attestationRequired || (d.attestationRequired && !prev.attestationWaived),
124
150
  ...(becameWrite ? { writeAcknowledged: false, acknowledgedAt: null, acknowledgedBy: null } : {}),
125
- // A newly locked op starts closed again: it needs its own `ask` level to be callable.
126
- ...(becameLocked ? { levelOverride: null } : {}),
151
+ ...(levelOverride !== prev.levelOverride ? { levelOverride } : {}),
127
152
  })
128
153
  .where(eq(operations.id, prev.id))
129
154
  .run();
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/catalog/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/catalog/sync.ts"],"names":[],"mappings":"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"}
@@ -1958,6 +1958,25 @@ export declare const operations: import("drizzle-orm/sqlite-core").SQLiteTableWi
1958
1958
  identity: undefined;
1959
1959
  generated: undefined;
1960
1960
  }, {}, {}>;
1961
+ sensitiveParams: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1962
+ name: string;
1963
+ tableName: "operations";
1964
+ dataType: "json";
1965
+ columnType: "SQLiteTextJson";
1966
+ data: string[];
1967
+ driverParam: string;
1968
+ notNull: false;
1969
+ hasDefault: false;
1970
+ isPrimaryKey: false;
1971
+ isAutoincrement: false;
1972
+ hasRuntimeDefault: false;
1973
+ enumValues: undefined;
1974
+ baseColumn: never;
1975
+ identity: undefined;
1976
+ generated: undefined;
1977
+ }, {}, {
1978
+ $type: string[];
1979
+ }>;
1961
1980
  docs: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1962
1981
  name: string;
1963
1982
  tableName: "operations";
package/dist/db/schema.js CHANGED
@@ -114,7 +114,7 @@ export const operationGroups = sqliteTable('operation_groups', {
114
114
  .references(() => pluginInstances.id, { onDelete: 'cascade' }),
115
115
  key: text('key').notNull(),
116
116
  label: text('label').notNull(),
117
- /** New groups start read-only. */
117
+ /** Catalog sync creates groups at `ask` (reads run, writes ask); the column default is only a fallback. */
118
118
  level: text('level', { enum: ['none', 'read', 'ask', 'write'] })
119
119
  .notNull()
120
120
  .default('read'),
@@ -164,6 +164,8 @@ export const operations = sqliteTable('operations', {
164
164
  needsReview: flag('needs_review').notNull().default(false),
165
165
  matchProfile: text('match_profile'),
166
166
  paramsSchema: json('params_schema'),
167
+ /** JSON-pointer paths into params that hold a secret without a key name (a positional password). */
168
+ sensitiveParams: json('sensitive_params').$type(),
167
169
  docs: json('docs'),
168
170
  firstSeenAt: ts('first_seen_at').notNull(),
169
171
  lastSeenAt: ts('last_seen_at').notNull(),