@cat-factory/agents 0.100.0 → 0.102.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 (28) hide show
  1. package/dist/foundationalServices/FoundationalServiceCatalogService.d.ts +74 -28
  2. package/dist/foundationalServices/FoundationalServiceCatalogService.d.ts.map +1 -1
  3. package/dist/foundationalServices/FoundationalServiceCatalogService.js +122 -62
  4. package/dist/foundationalServices/FoundationalServiceCatalogService.js.map +1 -1
  5. package/dist/foundationalServices/FoundationalServiceSourceService.d.ts +34 -4
  6. package/dist/foundationalServices/FoundationalServiceSourceService.d.ts.map +1 -1
  7. package/dist/foundationalServices/FoundationalServiceSourceService.js +150 -40
  8. package/dist/foundationalServices/FoundationalServiceSourceService.js.map +1 -1
  9. package/dist/foundationalServices/contract-validation.d.ts +10 -4
  10. package/dist/foundationalServices/contract-validation.d.ts.map +1 -1
  11. package/dist/foundationalServices/contract-validation.js +23 -34
  12. package/dist/foundationalServices/contract-validation.js.map +1 -1
  13. package/dist/foundationalServices/folder-scan.d.ts +24 -4
  14. package/dist/foundationalServices/folder-scan.d.ts.map +1 -1
  15. package/dist/foundationalServices/folder-scan.js +44 -4
  16. package/dist/foundationalServices/folder-scan.js.map +1 -1
  17. package/dist/foundationalServices/foundational-catalog.d.ts +9 -5
  18. package/dist/foundationalServices/foundational-catalog.d.ts.map +1 -1
  19. package/dist/foundationalServices/foundational-catalog.js +24 -13
  20. package/dist/foundationalServices/foundational-catalog.js.map +1 -1
  21. package/dist/foundationalServices/foundational-source.logic.d.ts.map +1 -1
  22. package/dist/foundationalServices/foundational-source.logic.js +13 -4
  23. package/dist/foundationalServices/foundational-source.logic.js.map +1 -1
  24. package/dist/index.d.ts +1 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +1 -1
  27. package/dist/index.js.map +1 -1
  28. package/package.json +5 -5
@@ -1,5 +1,5 @@
1
1
  import type { ApiContractDocument, CreateFoundationalServiceInput, FoundationalService, FoundationalServiceOwnerKind, FoundationalServiceSuppression, ResolvedFoundationalService, UpdateFoundationalServiceInput } from '@cat-factory/contracts';
2
- import type { ApiContractRepository, Clock, FoundationalServiceRepository, GroupCacheHandle, WorkspaceRepository } from '@cat-factory/kernel';
2
+ import type { ApiContractRepository, Clock, FoundationalServiceRegistry, FoundationalServiceRepository, GroupCacheHandle, WorkspaceRepository } from '@cat-factory/kernel';
3
3
  export interface FoundationalServiceCatalogDependencies {
4
4
  foundationalServiceRepository: FoundationalServiceRepository;
5
5
  apiContractRepository: ApiContractRepository;
@@ -7,23 +7,35 @@ export interface FoundationalServiceCatalogDependencies {
7
7
  clock: Clock;
8
8
  /** The merged per-workspace catalog cache. Absent (tests) ⇒ every resolve reads through. */
9
9
  catalogCache?: GroupCacheHandle<ResolvedFoundationalService[]>;
10
+ /**
11
+ * The deployment's own registered services — the `builtin` tier. Optional and defaulted to an
12
+ * empty registry, so a construction site that omits it resolves the stored tiers exactly as
13
+ * before; a facade injects the SAME instance it registers on.
14
+ */
15
+ registry?: FoundationalServiceRegistry;
10
16
  }
11
17
  /**
12
18
  * The foundational-services catalog (backend/docs/adr/0031-foundational-services.md): per-tier CRUD
13
- * plus the merged account ⊕ workspace resolve every design dispatch reads.
19
+ * plus the merged builtin ⊕ account ⊕ workspace resolve every design dispatch reads.
14
20
  *
15
- * Two properties are load-bearing and are why this is a service rather than a repository call:
21
+ * Three properties are load-bearing and are why this is a service rather than a repository call:
16
22
  *
17
23
  * - **The catalog never carries a contract BODY.** `listTier` and `resolve` join the contract
18
24
  * MANIFEST (id, format, title, byte size, operation names) onto each service in ONE extra
19
25
  * query for the whole tier. The documents are read only by {@link contractsFor}, and only for
20
26
  * the ids a caller asks for.
21
- * - **A workspace row wins over an account row of the same id, and a workspace TOMBSTONE
22
- * suppresses one.** That is what lets a board opt out of an org-wide service without an
23
- * account admin, and it is why the merge reads the workspace tier `includeDeleted`.
27
+ * - **A later tier wins by id, and a TOMBSTONE at either stored tier suppresses what it
28
+ * inherits.** That is what lets a board opt out of an org-wide service without an account
29
+ * admin — and an account out of a deployment `builtin` — and it is why the merge reads both
30
+ * stored tiers `includeDeleted`.
31
+ * - **The `builtin` tier has no rows.** It is read from the app-owned
32
+ * {@link FoundationalServiceRegistry} on every resolve, so a deployment's catalog is present
33
+ * from a workspace's first request and cannot drift from the code that declares it.
24
34
  */
25
35
  export declare class FoundationalServiceCatalogService {
26
36
  private readonly deps;
37
+ /** The deployment's registered services; an empty registry when a facade wired none. */
38
+ private readonly registry;
27
39
  constructor(deps: FoundationalServiceCatalogDependencies);
28
40
  /** One tier's registered services, contract manifests joined on. Raw — not merged. */
29
41
  listTier(ownerKind: FoundationalServiceOwnerKind, ownerId: string): Promise<FoundationalService[]>;
@@ -38,55 +50,89 @@ export declare class FoundationalServiceCatalogService {
38
50
  */
39
51
  remove(ownerKind: FoundationalServiceOwnerKind, ownerId: string, serviceId: string): Promise<void>;
40
52
  /**
41
- * Suppress an ACCOUNT service for one workspace by writing a workspace-tier tombstone. The
42
- * row carries no content of its own it exists only to lose the mergeso it is written
43
- * here rather than through {@link create}, which would demand a name and summary for
44
- * something that is never rendered.
53
+ * Suppress an INHERITED service at one tier by writing a tombstone there: an account service
54
+ * for a board, a deployment `builtin` for either. The row carries no content of its own — it
55
+ * exists only to lose the merge — so it is written here rather than through {@link create},
56
+ * which would demand a name and summary for something that is never rendered.
57
+ *
58
+ * Both scopes are served because both now inherit. Leaving it workspace-only once the
59
+ * deployment tier existed would make a registered service un-opt-out-able for a whole account
60
+ * that has one board too many to do it per board.
45
61
  *
46
62
  * Both refusals are deliberate. An id the merged catalog does not carry would tombstone
47
- * NOTHING today and silently swallow whatever the account registers under it tomorrow — a
48
- * suppression nobody could later explain. An id the workspace owns at its own tier is not
49
- * inherited at all: tombstoning it there would read as a delete while destroying the board's
50
- * authored description and contracts, which is {@link remove}'s job and not this one's.
63
+ * NOTHING today and silently swallow whatever a lower tier registers under it tomorrow — a
64
+ * suppression nobody could later explain. An id this tier owns a row for is not inherited at
65
+ * all: tombstoning it there would read as a delete while destroying the authored description
66
+ * and contracts, which is {@link remove}'s job and not this one's.
51
67
  */
52
- suppressForWorkspace(workspaceId: string, serviceId: string): Promise<void>;
68
+ suppress(ownerKind: FoundationalServiceOwnerKind, ownerId: string, serviceId: string): Promise<void>;
53
69
  /**
54
- * What a board is currently suppressing. The merged catalog cannot answer this — a suppressed
70
+ * What a tier is currently suppressing. The merged catalog cannot answer this — a suppressed
55
71
  * id is precisely one it no longer carries — so the tombstones are read directly and joined
56
- * against the account tier for identity.
72
+ * against what this tier inherits for identity.
57
73
  *
58
74
  * `inherited: false` is the case worth keeping distinct: the tombstone shadows nothing today,
59
- * because the account withdrew the service or because the row is the remains of the board
75
+ * because the tier below withdrew the service or because the row is the remains of this tier
60
76
  * DELETING its own registration. Collapsing the two would tell an operator a capability is
61
77
  * being withheld when there is none to withhold.
62
78
  */
63
- listSuppressions(workspaceId: string): Promise<FoundationalServiceSuppression[]>;
79
+ listSuppressions(ownerKind: FoundationalServiceOwnerKind, ownerId: string): Promise<FoundationalServiceSuppression[]>;
64
80
  /**
65
- * Undo a suppression: DROP the workspace tombstone so the account service is inherited again.
81
+ * The identity of everything a tier INHERITS: the merge as the tier BELOW it resolves it.
82
+ *
83
+ * Deliberately the same {@link loadTierView} the merge and {@link suppress} run on, rather than
84
+ * a second walk over builtins + account rows. Inheritance is a precedence question, and the
85
+ * tombstone half of that precedence is easy to leave out of a hand-rolled second copy — which
86
+ * is exactly what happened: reading the account's LIVE rows beside the registry made a builtin
87
+ * the account had already suppressed still look inherited by every board under it, so a board's
88
+ * own opt-out claimed to be shadowing a service no board could see. `inherited` is the one
89
+ * thing this list has to be right about, since it is the difference between "a capability is
90
+ * being withheld" and "there is none to withhold".
91
+ *
92
+ * The cost is one manifest read whose contracts nothing here uses. That is the correct trade
93
+ * for a rare, human-driven settings read: a second precedence implementation is a standing
94
+ * invitation for the two to disagree again, and only one of them is the one agents resolve.
95
+ */
96
+ private inheritedIdentities;
97
+ /**
98
+ * Undo a suppression: DROP this tier's tombstone so the inherited service is offered again.
66
99
  *
67
100
  * The row is deleted rather than un-tombstoned because a tombstone carries no name, summary or
68
- * contracts — clearing its `deletedAt` would revive it as an EMPTY workspace override that
69
- * wins the merge, which is a worse outcome than the suppression it was meant to undo. It is
70
- * also why a LIVE workspace row is refused with a 404 on the suppression rather than deleted:
71
- * the caller asked to lift a suppression, and this tier is not suppressing anything.
101
+ * contracts — clearing its `deletedAt` would revive it as an EMPTY override that wins the
102
+ * merge, which is a worse outcome than the suppression it was meant to undo. It is also why a
103
+ * LIVE row is refused with a 404 rather than deleted: the caller asked to lift a suppression,
104
+ * and this tier is not suppressing anything.
72
105
  */
73
- restoreInherited(workspaceId: string, serviceId: string): Promise<void>;
106
+ restoreInherited(ownerKind: FoundationalServiceOwnerKind, ownerId: string, serviceId: string): Promise<void>;
74
107
  /** The merged catalog a workspace's agents see, cached per workspace. */
75
108
  resolve(workspaceId: string): Promise<ResolvedFoundationalService[]>;
76
109
  /**
77
110
  * The LAZY contract read: full documents for the named services, resolved against the same
78
- * account ⊕ workspace precedence the catalog uses. One batched query per tier — never a
79
- * per-service read — and an empty `serviceIds` returns `[]` without touching the store.
111
+ * builtin ⊕ account ⊕ workspace precedence the catalog uses. One batched query per stored
112
+ * tier — never a per-service read — and an empty `serviceIds` returns `[]` without touching
113
+ * the store.
80
114
  *
81
115
  * Precedence matters here as much as in the catalog: a workspace that overrode a service
82
116
  * must hand out ITS documents, or the design would be reviewed against the org's spec while
83
- * the code is written against the board's.
117
+ * the code is written against the board's. A `builtin` winner's documents come from the
118
+ * registry, which is the only place they exist.
84
119
  */
85
120
  contractsFor(workspaceId: string, serviceIds: string[]): Promise<Map<string, ApiContractDocument[]>>;
86
121
  /** Drop a tier's cached catalog. An account write invalidates every workspace's. */
87
122
  invalidate(ownerKind: FoundationalServiceOwnerKind, ownerId: string): Promise<void>;
88
123
  private loadCatalog;
124
+ /**
125
+ * The merge as ONE tier sees it — what {@link suppress} decides against. For a workspace that
126
+ * is the full catalog; for an account it is the deployment's registered services under its own
127
+ * rows, since an account has exactly one tier below it and no workspace above it to consult.
128
+ */
129
+ private loadTierView;
89
130
  private require;
131
+ /**
132
+ * Uploaded documents → stored rows. The definition was already refused at the top of the
133
+ * write (`assertValidDefinition`) — validating the SET has to happen before any of it is
134
+ * built, since a set's anchor may be its last document.
135
+ */
90
136
  private buildUploadedContracts;
91
137
  }
92
138
  //# sourceMappingURL=FoundationalServiceCatalogService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FoundationalServiceCatalogService.d.ts","sourceRoot":"","sources":["../../src/foundationalServices/FoundationalServiceCatalogService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,8BAA8B,EAC9B,mBAAmB,EACnB,4BAA4B,EAC5B,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC/B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAGV,qBAAqB,EACrB,KAAK,EAEL,6BAA6B,EAC7B,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAU5B,MAAM,WAAW,sCAAsC;IACrD,6BAA6B,EAAE,6BAA6B,CAAA;IAC5D,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,KAAK,EAAE,KAAK,CAAA;IACZ,4FAA4F;IAC5F,YAAY,CAAC,EAAE,gBAAgB,CAAC,2BAA2B,EAAE,CAAC,CAAA;CAC/D;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,iCAAiC;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,sCAAsC,EAAI;IAE7E,sFAAsF;IAChF,QAAQ,CACZ,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAOhC;IAED,oCAAoC;IAC9B,MAAM,CACV,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC,mBAAmB,CAAC,CAsC9B;IAED,qFAAqF;IAC/E,MAAM,CACV,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC,mBAAmB,CAAC,CAmC9B;IAED;;;;OAIG;IACG,MAAM,CACV,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAKf;IAED;;;;;;;;;;;OAWG;IACG,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2ChF;IAED;;;;;;;;;OASG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,8BAA8B,EAAE,CAAC,CAyBrF;IAED;;;;;;;;OAQG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS5E;IAED,yEAAyE;IACnE,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAGzE;IAED;;;;;;;;OAQG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC,CA0B7C;IAED,oFAAoF;IAC9E,UAAU,CAAC,SAAS,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQxF;YAEa,WAAW;YAoBX,OAAO;IAUrB,OAAO,CAAC,sBAAsB;CAyC/B"}
1
+ {"version":3,"file":"FoundationalServiceCatalogService.d.ts","sourceRoot":"","sources":["../../src/foundationalServices/FoundationalServiceCatalogService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,8BAA8B,EAC9B,mBAAmB,EACnB,4BAA4B,EAC5B,8BAA8B,EAC9B,2BAA2B,EAC3B,8BAA8B,EAC/B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAGV,qBAAqB,EACrB,KAAK,EAEL,2BAA2B,EAC3B,6BAA6B,EAC7B,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAU5B,MAAM,WAAW,sCAAsC;IACrD,6BAA6B,EAAE,6BAA6B,CAAA;IAC5D,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,KAAK,EAAE,KAAK,CAAA;IACZ,4FAA4F;IAC5F,YAAY,CAAC,EAAE,gBAAgB,CAAC,2BAA2B,EAAE,CAAC,CAAA;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,2BAA2B,CAAA;CACvC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,iCAAiC;IAIhC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,wFAAwF;IACxF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,YAA6B,IAAI,EAAE,sCAAsC,EAExE;IAED,sFAAsF;IAChF,QAAQ,CACZ,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAOhC;IAED,oCAAoC;IAC9B,MAAM,CACV,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC,mBAAmB,CAAC,CAuC9B;IAED,qFAAqF;IAC/E,MAAM,CACV,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC,mBAAmB,CAAC,CAoC9B;IAED;;;;OAIG;IACG,MAAM,CACV,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAKf;IAED;;;;;;;;;;;;;;;OAeG;IACG,QAAQ,CACZ,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA4Cf;IAED;;;;;;;;;OASG;IACG,gBAAgB,CACpB,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,8BAA8B,EAAE,CAAC,CAmB3C;IAED;;;;;;;;;;;;;;;OAeG;YACW,mBAAmB;IAajC;;;;;;;;OAQG;IACG,gBAAgB,CACpB,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAKf;IAED,yEAAyE;IACnE,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAGzE;IAED;;;;;;;;;;OAUG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC,CA8B7C;IAED,oFAAoF;IAC9E,UAAU,CAAC,SAAS,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQxF;YAEa,WAAW;IAqBzB;;;;OAIG;YACW,YAAY;YAkBZ,OAAO;IAUrB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;CAgC/B"}
@@ -1,24 +1,31 @@
1
- import { ConflictError, NotFoundError, ValidationError, summarizeContract, } from '@cat-factory/kernel';
1
+ import { ConflictError, NotFoundError, defaultFoundationalServiceRegistry, summarizeContract, } from '@cat-factory/kernel';
2
2
  import { mergeFoundationalTiers, toWire } from './foundational-catalog.js';
3
- import { validateUploadedContract } from './contract-validation.js';
3
+ import { assertValidDefinition } from './contract-validation.js';
4
4
  /**
5
5
  * The foundational-services catalog (backend/docs/adr/0031-foundational-services.md): per-tier CRUD
6
- * plus the merged account ⊕ workspace resolve every design dispatch reads.
6
+ * plus the merged builtin ⊕ account ⊕ workspace resolve every design dispatch reads.
7
7
  *
8
- * Two properties are load-bearing and are why this is a service rather than a repository call:
8
+ * Three properties are load-bearing and are why this is a service rather than a repository call:
9
9
  *
10
10
  * - **The catalog never carries a contract BODY.** `listTier` and `resolve` join the contract
11
11
  * MANIFEST (id, format, title, byte size, operation names) onto each service in ONE extra
12
12
  * query for the whole tier. The documents are read only by {@link contractsFor}, and only for
13
13
  * the ids a caller asks for.
14
- * - **A workspace row wins over an account row of the same id, and a workspace TOMBSTONE
15
- * suppresses one.** That is what lets a board opt out of an org-wide service without an
16
- * account admin, and it is why the merge reads the workspace tier `includeDeleted`.
14
+ * - **A later tier wins by id, and a TOMBSTONE at either stored tier suppresses what it
15
+ * inherits.** That is what lets a board opt out of an org-wide service without an account
16
+ * admin — and an account out of a deployment `builtin` — and it is why the merge reads both
17
+ * stored tiers `includeDeleted`.
18
+ * - **The `builtin` tier has no rows.** It is read from the app-owned
19
+ * {@link FoundationalServiceRegistry} on every resolve, so a deployment's catalog is present
20
+ * from a workspace's first request and cannot drift from the code that declares it.
17
21
  */
18
22
  export class FoundationalServiceCatalogService {
19
23
  deps;
24
+ /** The deployment's registered services; an empty registry when a facade wired none. */
25
+ registry;
20
26
  constructor(deps) {
21
27
  this.deps = deps;
28
+ this.registry = deps.registry ?? defaultFoundationalServiceRegistry();
22
29
  }
23
30
  /** One tier's registered services, contract manifests joined on. Raw — not merged. */
24
31
  async listTier(ownerKind, ownerId) {
@@ -31,6 +38,7 @@ export class FoundationalServiceCatalogService {
31
38
  }
32
39
  /** Register a service at a tier. */
33
40
  async create(ownerKind, ownerId, input) {
41
+ assertValidDefinition(input);
34
42
  const existing = await this.deps.foundationalServiceRepository.get(ownerKind, ownerId, input.id);
35
43
  // A LIVE row is a conflict; a tombstoned one is revived by this write. Refusing the
36
44
  // revival would leave an id permanently unusable after one delete.
@@ -61,6 +69,7 @@ export class FoundationalServiceCatalogService {
61
69
  }
62
70
  /** Patch a registered service. `contracts`, when present, replaces the whole set. */
63
71
  async update(ownerKind, ownerId, serviceId, input) {
72
+ assertValidDefinition(input);
64
73
  const existing = await this.require(ownerKind, ownerId, serviceId);
65
74
  const now = this.deps.clock.now();
66
75
  const record = {
@@ -96,42 +105,47 @@ export class FoundationalServiceCatalogService {
96
105
  await this.invalidate(ownerKind, ownerId);
97
106
  }
98
107
  /**
99
- * Suppress an ACCOUNT service for one workspace by writing a workspace-tier tombstone. The
100
- * row carries no content of its own it exists only to lose the mergeso it is written
101
- * here rather than through {@link create}, which would demand a name and summary for
102
- * something that is never rendered.
108
+ * Suppress an INHERITED service at one tier by writing a tombstone there: an account service
109
+ * for a board, a deployment `builtin` for either. The row carries no content of its own — it
110
+ * exists only to lose the merge — so it is written here rather than through {@link create},
111
+ * which would demand a name and summary for something that is never rendered.
112
+ *
113
+ * Both scopes are served because both now inherit. Leaving it workspace-only once the
114
+ * deployment tier existed would make a registered service un-opt-out-able for a whole account
115
+ * that has one board too many to do it per board.
103
116
  *
104
117
  * Both refusals are deliberate. An id the merged catalog does not carry would tombstone
105
- * NOTHING today and silently swallow whatever the account registers under it tomorrow — a
106
- * suppression nobody could later explain. An id the workspace owns at its own tier is not
107
- * inherited at all: tombstoning it there would read as a delete while destroying the board's
108
- * authored description and contracts, which is {@link remove}'s job and not this one's.
118
+ * NOTHING today and silently swallow whatever a lower tier registers under it tomorrow — a
119
+ * suppression nobody could later explain. An id this tier owns a row for is not inherited at
120
+ * all: tombstoning it there would read as a delete while destroying the authored description
121
+ * and contracts, which is {@link remove}'s job and not this one's.
109
122
  */
110
- async suppressForWorkspace(workspaceId, serviceId) {
111
- const existing = await this.deps.foundationalServiceRepository.get('workspace', workspaceId, serviceId);
123
+ async suppress(ownerKind, ownerId, serviceId) {
124
+ const existing = await this.deps.foundationalServiceRepository.get(ownerKind, ownerId, serviceId);
112
125
  // Already suppressed: the tombstone IS the whole state, so a retried request has nothing
113
126
  // left to do. Returning rather than 404-ing keeps the endpoint safe to retry, and the merge
114
127
  // below could not answer this case anyway — a suppressed id is exactly one the merged
115
128
  // catalog no longer carries.
116
129
  if (existing?.deletedAt)
117
130
  return;
118
- // Deliberately `loadCatalog` rather than the cached {@link resolve}: both refusals below are
119
- // decisions ABOUT persisted state, and a TTL'd merge can be behind it. Reading the cache
120
- // would 404 an opt-out for a service the account registered moments ago, and — worse —
121
- // write a tombstone against an id the account has since withdrawn, which is exactly the
122
- // shadows-nothing row the 404 exists to prevent. This is a rare, human-driven write, so the
123
- // four batched reads it costs are not worth trading for a refusal that can be wrong.
124
- const inherited = (await this.loadCatalog(workspaceId)).find((entry) => entry.id === serviceId);
131
+ // Deliberately the uncached merge: both refusals below are decisions ABOUT persisted state,
132
+ // and a TTL'd merge can be behind it. Reading the cache would 404 an opt-out for a service
133
+ // the account registered moments ago, and — worse — write a tombstone against an id the
134
+ // account has since withdrawn, which is exactly the shadows-nothing row the 404 exists to
135
+ // prevent. This is a rare, human-driven write, so the batched reads it costs are not worth
136
+ // trading for a refusal that can be wrong.
137
+ const merged = await this.loadTierView(ownerKind, ownerId);
138
+ const inherited = merged.find((entry) => entry.id === serviceId);
125
139
  if (!inherited)
126
140
  throw new NotFoundError('FoundationalService', serviceId);
127
- if (inherited.tier === 'workspace') {
128
- throw new ConflictError(`Foundational service '${serviceId}' is registered by this workspace, not inherited`, 'foundational_service_not_inherited', { serviceId });
141
+ if (inherited.tier === ownerKind) {
142
+ throw new ConflictError(`Foundational service '${serviceId}' is registered at this scope, not inherited`, 'foundational_service_not_inherited', { serviceId });
129
143
  }
130
144
  const now = this.deps.clock.now();
131
145
  await this.deps.foundationalServiceRepository.upsert({
132
146
  serviceId,
133
- ownerKind: 'workspace',
134
- ownerId: workspaceId,
147
+ ownerKind,
148
+ ownerId,
135
149
  name: '',
136
150
  summary: '',
137
151
  description: '',
@@ -143,33 +157,29 @@ export class FoundationalServiceCatalogService {
143
157
  updatedAt: now,
144
158
  deletedAt: now,
145
159
  });
146
- await this.invalidate('workspace', workspaceId);
160
+ await this.invalidate(ownerKind, ownerId);
147
161
  }
148
162
  /**
149
- * What a board is currently suppressing. The merged catalog cannot answer this — a suppressed
163
+ * What a tier is currently suppressing. The merged catalog cannot answer this — a suppressed
150
164
  * id is precisely one it no longer carries — so the tombstones are read directly and joined
151
- * against the account tier for identity.
165
+ * against what this tier inherits for identity.
152
166
  *
153
167
  * `inherited: false` is the case worth keeping distinct: the tombstone shadows nothing today,
154
- * because the account withdrew the service or because the row is the remains of the board
168
+ * because the tier below withdrew the service or because the row is the remains of this tier
155
169
  * DELETING its own registration. Collapsing the two would tell an operator a capability is
156
170
  * being withheld when there is none to withhold.
157
171
  */
158
- async listSuppressions(workspaceId) {
159
- const rows = await this.deps.foundationalServiceRepository.listByOwner('workspace', workspaceId, true);
172
+ async listSuppressions(ownerKind, ownerId) {
173
+ const rows = await this.deps.foundationalServiceRepository.listByOwner(ownerKind, ownerId, true);
160
174
  const tombstones = rows.filter((row) => row.deletedAt !== null);
161
175
  if (tombstones.length === 0)
162
176
  return [];
163
- const accountId = await this.deps.workspaceRepository.accountOf(workspaceId);
164
- const accountRows = accountId
165
- ? await this.deps.foundationalServiceRepository.listByOwner('account', accountId)
166
- : [];
167
- const inherited = new Map(accountRows.map((row) => [row.serviceId, row]));
177
+ const inherited = new Map((await this.inheritedIdentities(ownerKind, ownerId)).map((entry) => [entry.id, entry]));
168
178
  return tombstones.map((row) => {
169
179
  const shadowed = inherited.get(row.serviceId);
170
180
  return {
171
181
  id: row.serviceId,
172
- // The inherited row's identity when there is one; otherwise whatever the tombstone
182
+ // The inherited entry's identity when there is one; otherwise whatever the tombstone
173
183
  // carries, which is empty for a suppression written against an id this tier never
174
184
  // registered — the id is then the only honest name, and it is the one an Architect uses.
175
185
  name: shadowed?.name ?? row.name,
@@ -179,20 +189,47 @@ export class FoundationalServiceCatalogService {
179
189
  });
180
190
  }
181
191
  /**
182
- * Undo a suppression: DROP the workspace tombstone so the account service is inherited again.
192
+ * The identity of everything a tier INHERITS: the merge as the tier BELOW it resolves it.
193
+ *
194
+ * Deliberately the same {@link loadTierView} the merge and {@link suppress} run on, rather than
195
+ * a second walk over builtins + account rows. Inheritance is a precedence question, and the
196
+ * tombstone half of that precedence is easy to leave out of a hand-rolled second copy — which
197
+ * is exactly what happened: reading the account's LIVE rows beside the registry made a builtin
198
+ * the account had already suppressed still look inherited by every board under it, so a board's
199
+ * own opt-out claimed to be shadowing a service no board could see. `inherited` is the one
200
+ * thing this list has to be right about, since it is the difference between "a capability is
201
+ * being withheld" and "there is none to withhold".
202
+ *
203
+ * The cost is one manifest read whose contracts nothing here uses. That is the correct trade
204
+ * for a rare, human-driven settings read: a second precedence implementation is a standing
205
+ * invitation for the two to disagree again, and only one of them is the one agents resolve.
206
+ */
207
+ async inheritedIdentities(ownerKind, ownerId) {
208
+ // An account's tier below is the deployment's registry and nothing else.
209
+ if (ownerKind === 'account')
210
+ return this.registry.entries();
211
+ const accountId = await this.deps.workspaceRepository.accountOf(ownerId);
212
+ // A board with no account inherits the deployment tier directly, with nothing able to
213
+ // suppress it in between.
214
+ if (!accountId)
215
+ return this.registry.entries();
216
+ return this.loadTierView('account', accountId);
217
+ }
218
+ /**
219
+ * Undo a suppression: DROP this tier's tombstone so the inherited service is offered again.
183
220
  *
184
221
  * The row is deleted rather than un-tombstoned because a tombstone carries no name, summary or
185
- * contracts — clearing its `deletedAt` would revive it as an EMPTY workspace override that
186
- * wins the merge, which is a worse outcome than the suppression it was meant to undo. It is
187
- * also why a LIVE workspace row is refused with a 404 on the suppression rather than deleted:
188
- * the caller asked to lift a suppression, and this tier is not suppressing anything.
222
+ * contracts — clearing its `deletedAt` would revive it as an EMPTY override that wins the
223
+ * merge, which is a worse outcome than the suppression it was meant to undo. It is also why a
224
+ * LIVE row is refused with a 404 rather than deleted: the caller asked to lift a suppression,
225
+ * and this tier is not suppressing anything.
189
226
  */
190
- async restoreInherited(workspaceId, serviceId) {
191
- const row = await this.deps.foundationalServiceRepository.get('workspace', workspaceId, serviceId);
227
+ async restoreInherited(ownerKind, ownerId, serviceId) {
228
+ const row = await this.deps.foundationalServiceRepository.get(ownerKind, ownerId, serviceId);
192
229
  if (!row || !row.deletedAt)
193
230
  throw new NotFoundError('FoundationalServiceSuppression', serviceId);
194
- await this.deps.foundationalServiceRepository.hardDelete('workspace', workspaceId, serviceId);
195
- await this.invalidate('workspace', workspaceId);
231
+ await this.deps.foundationalServiceRepository.hardDelete(ownerKind, ownerId, serviceId);
232
+ await this.invalidate(ownerKind, ownerId);
196
233
  }
197
234
  /** The merged catalog a workspace's agents see, cached per workspace. */
198
235
  async resolve(workspaceId) {
@@ -202,12 +239,14 @@ export class FoundationalServiceCatalogService {
202
239
  }
203
240
  /**
204
241
  * The LAZY contract read: full documents for the named services, resolved against the same
205
- * account ⊕ workspace precedence the catalog uses. One batched query per tier — never a
206
- * per-service read — and an empty `serviceIds` returns `[]` without touching the store.
242
+ * builtin ⊕ account ⊕ workspace precedence the catalog uses. One batched query per stored
243
+ * tier — never a per-service read — and an empty `serviceIds` returns `[]` without touching
244
+ * the store.
207
245
  *
208
246
  * Precedence matters here as much as in the catalog: a workspace that overrode a service
209
247
  * must hand out ITS documents, or the design would be reviewed against the org's spec while
210
- * the code is written against the board's.
248
+ * the code is written against the board's. A `builtin` winner's documents come from the
249
+ * registry, which is the only place they exist.
211
250
  */
212
251
  async contractsFor(workspaceId, serviceIds) {
213
252
  const wanted = [...new Set(serviceIds)].filter(Boolean);
@@ -231,6 +270,10 @@ export class FoundationalServiceCatalogService {
231
270
  const tier = tierById.get(id);
232
271
  if (!tier)
233
272
  continue;
273
+ if (tier === 'builtin') {
274
+ out.set(id, this.registry.documentsFor(id));
275
+ continue;
276
+ }
234
277
  const docs = (tier === 'workspace' ? workspaceDocs : accountDocs).filter((doc) => doc.serviceId === id);
235
278
  out.set(id, docs.map(documentOf));
236
279
  }
@@ -254,7 +297,7 @@ export class FoundationalServiceCatalogService {
254
297
  const [workspaceRows, accountRows, workspaceManifest, accountManifest] = await Promise.all([
255
298
  this.deps.foundationalServiceRepository.listByOwner('workspace', workspaceId, true),
256
299
  accountId
257
- ? this.deps.foundationalServiceRepository.listByOwner('account', accountId)
300
+ ? this.deps.foundationalServiceRepository.listByOwner('account', accountId, true)
258
301
  : Promise.resolve([]),
259
302
  this.deps.apiContractRepository.listManifestByOwner('workspace', workspaceId),
260
303
  accountId
@@ -262,29 +305,46 @@ export class FoundationalServiceCatalogService {
262
305
  : Promise.resolve([]),
263
306
  ]);
264
307
  return mergeFoundationalTiers({
308
+ builtins: this.registry.entries(),
265
309
  accountRows,
266
310
  workspaceRows,
267
311
  accountManifest: indexManifest(accountManifest),
268
312
  workspaceManifest: indexManifest(workspaceManifest),
269
313
  });
270
314
  }
315
+ /**
316
+ * The merge as ONE tier sees it — what {@link suppress} decides against. For a workspace that
317
+ * is the full catalog; for an account it is the deployment's registered services under its own
318
+ * rows, since an account has exactly one tier below it and no workspace above it to consult.
319
+ */
320
+ async loadTierView(ownerKind, ownerId) {
321
+ if (ownerKind === 'workspace')
322
+ return this.loadCatalog(ownerId);
323
+ const [accountRows, accountManifest] = await Promise.all([
324
+ this.deps.foundationalServiceRepository.listByOwner('account', ownerId, true),
325
+ this.deps.apiContractRepository.listManifestByOwner('account', ownerId),
326
+ ]);
327
+ return mergeFoundationalTiers({
328
+ builtins: this.registry.entries(),
329
+ accountRows,
330
+ workspaceRows: [],
331
+ accountManifest: indexManifest(accountManifest),
332
+ workspaceManifest: new Map(),
333
+ });
334
+ }
271
335
  async require(ownerKind, ownerId, serviceId) {
272
336
  const record = await this.deps.foundationalServiceRepository.get(ownerKind, ownerId, serviceId);
273
337
  if (!record || record.deletedAt)
274
338
  throw new NotFoundError('FoundationalService', serviceId);
275
339
  return record;
276
340
  }
341
+ /**
342
+ * Uploaded documents → stored rows. The definition was already refused at the top of the
343
+ * write (`assertValidDefinition`) — validating the SET has to happen before any of it is
344
+ * built, since a set's anchor may be its last document.
345
+ */
277
346
  buildUploadedContracts(ownerKind, ownerId, serviceId, uploads, now) {
278
- const seen = new Set();
279
347
  return (uploads ?? []).map((upload) => {
280
- if (seen.has(upload.contractId)) {
281
- throw new ValidationError(`Duplicate contract id '${upload.contractId}'`, {
282
- reason: 'duplicate_contract_id',
283
- contractId: upload.contractId,
284
- });
285
- }
286
- seen.add(upload.contractId);
287
- validateUploadedContract(upload);
288
348
  const summary = summarizeContract({
289
349
  contractId: upload.contractId,
290
350
  format: upload.format,
@@ -1 +1 @@
1
- {"version":3,"file":"FoundationalServiceCatalogService.js","sourceRoot":"","sources":["../../src/foundationalServices/FoundationalServiceCatalogService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FoundationalServiceCatalogService.js","sourceRoot":"","sources":["../../src/foundationalServices/FoundationalServiceCatalogService.ts"],"names":[],"mappings":"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"}
@@ -73,6 +73,15 @@ export declare class FoundationalServiceSourceService {
73
73
  */
74
74
  refreshStale(staleAfterMs: number, limit: number): Promise<number>;
75
75
  private runSync;
76
+ /**
77
+ * Log the two coverage outcomes an operator would want to know about, each named for the fix
78
+ * it needs — a truncated walk asks for a narrower link, a missing folder for a corrected one.
79
+ *
80
+ * This is the ONLY standing signal an AUTOREFRESH pass leaves: the sweep discards the sync
81
+ * result, so a folder that vanished upstream reaches a human through this line or not at all.
82
+ * (A manual resync also surfaces both on the SPA's toast.)
83
+ */
84
+ private warnAboutCoverage;
76
85
  /**
77
86
  * `folder` mode: ONE service, named on the link, whose contracts are every contract document
78
87
  * under the linked folder (and its subfolders when the link says so).
@@ -99,12 +108,33 @@ export declare class FoundationalServiceSourceService {
99
108
  * tells a downstream agent how to read it, and a "contract" nobody can interpret is worse in
100
109
  * an agent's context than an absent one.
101
110
  *
102
- * A path whose EXTENSION could never yield a format is dropped without a read and without a
103
- * count it is a README beside the specs, not a contract that failed. Everything else that
104
- * fails is COUNTED on the report, because a link that produced fewer contracts than its
105
- * author expected has no other explanation available to them.
111
+ * A path that could never yield a format is dropped without a read and without a count — it
112
+ * is a README or a `package.json` beside the specs, not a contract that failed. Everything
113
+ * else that fails is COUNTED on the report and NAMED in the log (see {@link skip}), because a
114
+ * link that produced fewer contracts than its author expected has no other explanation
115
+ * available to them.
116
+ *
117
+ * `admitSupportingModules` relaxes exactly one of those rules, for `files` mode only: a
118
+ * TypeScript module that references no contract library rides along under the format the rest
119
+ * of the set resolved to. A contract module is a module GRAPH — the `defineApiContract` module
120
+ * plus the schema modules it imports — and only the entry point names the library, so without
121
+ * this the linked halves of ONE contract are dropped and a coder is handed imports that point
122
+ * at nothing. It is safe HERE and nowhere else because a `files` link is an explicit list a
123
+ * human wrote: the link plays the same role the `format` field plays on an upload. A `folder`
124
+ * or `directory` scan walks paths nobody named, so it keeps the content-led rule, or one link
125
+ * would sweep a repo's TypeScript into an agent's context as "contracts".
106
126
  */
107
127
  private readContracts;
128
+ /**
129
+ * Count one dropped candidate and name it in the log.
130
+ *
131
+ * The count alone answers "did I lose anything?" but never "which file, and why?" — and one
132
+ * reason is undiagnosable without the log line: a DUPLICATE contract id silently keeps the
133
+ * first claimant, so the losing document is absent from the catalog under a name that is
134
+ * present. `debug` rather than `warn` because a thin catalog entry is usually intended (prose
135
+ * and drafts sit beside specs); the count on the sync result is what asks for attention.
136
+ */
137
+ private skip;
108
138
  private writeService;
109
139
  private listDir;
110
140
  private readFile;
@@ -1 +1 @@
1
- {"version":3,"file":"FoundationalServiceSourceService.d.ts","sourceRoot":"","sources":["../../src/foundationalServices/FoundationalServiceSourceService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,yBAAyB,EACzB,+BAA+B,EAC/B,6BAA6B,EAC7B,kCAAkC,EACnC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAEV,qBAAqB,EACrB,KAAK,EAEL,6BAA6B,EAE7B,mCAAmC,EACnC,YAAY,EACZ,WAAW,EACX,MAAM,EAEP,MAAM,qBAAqB,CAAA;AAqD5B;;;;;GAKG;AACH,MAAM,MAAM,iCAAiC,GAAG,CAC9C,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;AAE3B,MAAM,WAAW,4CAA4C;IAC3D,mCAAmC,EAAE,mCAAmC,CAAA;IACxE,6BAA6B,EAAE,6BAA6B,CAAA;IAC5D,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,YAAY,EAAE,YAAY,CAAA;IAC1B,qBAAqB,EAAE,iCAAiC,CAAA;IACxD,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,gCAAgC;IAG/B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAE5B,YAA6B,IAAI,EAAE,4CAA4C,EAE9E;IAED,2DAA2D;IACrD,IAAI,CACR,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAGtC;IAED,wFAAwF;IAClF,IAAI,CACR,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kCAAkC,GACxC,OAAO,CAAC,yBAAyB,CAAC,CAiCpC;IAED,+DAA+D;IACzD,MAAM,CACV,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAgBf;IAED,yFAAyF;IACnF,MAAM,CACV,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,+BAA+B,CAAC,CAI1C;IAED,kGAAkG;IAC5F,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAQvE;IAED,uFAAuF;IACjF,IAAI,CACR,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,6BAA6B,CAAC,CAExC;IAED;;;;;;;;;OASG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBvE;YAIa,OAAO;IA8DrB;;;OAGG;YACW,eAAe;IA4E7B,mGAAmG;YACrF,kBAAkB;IAWhC,wFAAwF;YAC1E,oBAAoB;IAkFlC,0FAA0F;YAC5E,cAAc;IA8C5B;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;;;;;;;;OAUG;YACW,aAAa;YAgEb,YAAY;IAsC1B,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,QAAQ;YAcF,OAAO;YAkBP,mBAAmB;CAUlC"}
1
+ {"version":3,"file":"FoundationalServiceSourceService.d.ts","sourceRoot":"","sources":["../../src/foundationalServices/FoundationalServiceSourceService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,4BAA4B,EAC5B,yBAAyB,EACzB,+BAA+B,EAC/B,6BAA6B,EAC7B,kCAAkC,EACnC,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAEV,qBAAqB,EACrB,KAAK,EAEL,6BAA6B,EAE7B,mCAAmC,EACnC,YAAY,EACZ,WAAW,EACX,MAAM,EAEP,MAAM,qBAAqB,CAAA;AAsD5B;;;;;GAKG;AACH,MAAM,MAAM,iCAAiC,GAAG,CAC9C,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;AAE3B,MAAM,WAAW,4CAA4C;IAC3D,mCAAmC,EAAE,mCAAmC,CAAA;IACxE,6BAA6B,EAAE,6BAA6B,CAAA;IAC5D,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,YAAY,EAAE,YAAY,CAAA;IAC1B,qBAAqB,EAAE,iCAAiC,CAAA;IACxD,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,4BAA4B,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAChG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,gCAAgC;IAG/B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAE5B,YAA6B,IAAI,EAAE,4CAA4C,EAE9E;IAED,2DAA2D;IACrD,IAAI,CACR,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAGtC;IAED,wFAAwF;IAClF,IAAI,CACR,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,kCAAkC,GACxC,OAAO,CAAC,yBAAyB,CAAC,CAiCpC;IAED,+DAA+D;IACzD,MAAM,CACV,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAgBf;IAED,yFAAyF;IACnF,MAAM,CACV,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,+BAA+B,CAAC,CAI1C;IAED,kGAAkG;IAC5F,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAQvE;IAED,uFAAuF;IACjF,IAAI,CACR,SAAS,EAAE,4BAA4B,EACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,6BAA6B,CAAC,CAExC;IAED;;;;;;;;;OASG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBvE;YAIa,OAAO;IA8DrB;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;;OAGG;YACW,eAAe;IA0F7B,mGAAmG;YACrF,kBAAkB;IAWhC,wFAAwF;YAC1E,oBAAoB;IAkFlC,0FAA0F;YAC5E,cAAc;IAiD5B;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;;;;;;;;;;;;;;;;;;;OAqBG;YACW,aAAa;IA+E3B;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAI;YAkBE,YAAY;IAsC1B,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,QAAQ;YAcF,OAAO;YAkBP,mBAAmB;CAUlC"}