@cat-factory/server 0.263.0 → 0.265.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/dist/agents/binaryGenerators.d.ts +10 -10
- package/dist/agents/binaryGenerators.d.ts.map +1 -1
- package/dist/agents/binaryGenerators.js +157 -59
- package/dist/agents/binaryGenerators.js.map +1 -1
- package/dist/agents/toolServers.d.ts.map +1 -1
- package/dist/agents/toolServers.js +62 -23
- package/dist/agents/toolServers.js.map +1 -1
- package/dist/modules/capabilityCredentials/declaredCredentials.d.ts.map +1 -1
- package/dist/modules/capabilityCredentials/declaredCredentials.js +13 -11
- package/dist/modules/capabilityCredentials/declaredCredentials.js.map +1 -1
- package/dist/modules/persistence/PersistenceController.d.ts.map +1 -1
- package/dist/modules/persistence/PersistenceController.js +59 -0
- package/dist/modules/persistence/PersistenceController.js.map +1 -1
- package/dist/modules/publicApi/openapiDocument.generated.d.ts +1 -1
- package/dist/modules/publicApi/openapiDocument.generated.d.ts.map +1 -1
- package/dist/modules/publicApi/openapiDocument.generated.js +1 -1
- package/dist/modules/publicApi/openapiDocument.generated.js.map +1 -1
- package/dist/modules/toolServers/mcpOAuthRedirect.d.ts +4 -2
- package/dist/modules/toolServers/mcpOAuthRedirect.d.ts.map +1 -1
- package/dist/modules/toolServers/mcpOAuthRedirect.js +4 -2
- package/dist/modules/toolServers/mcpOAuthRedirect.js.map +1 -1
- package/dist/modules/toolServers/probeToolServer.d.ts.map +1 -1
- package/dist/modules/toolServers/probeToolServer.js +32 -7
- package/dist/modules/toolServers/probeToolServer.js.map +1 -1
- package/dist/persistence/binaryGenerators.js +1 -0
- package/dist/persistence/binaryGenerators.js.map +1 -1
- package/dist/persistence/rpc-allowlist.d.ts.map +1 -1
- package/dist/persistence/rpc-allowlist.js +86 -31
- package/dist/persistence/rpc-allowlist.js.map +1 -1
- package/dist/persistence/rpc-scope.logic.d.ts +24 -1
- package/dist/persistence/rpc-scope.logic.d.ts.map +1 -1
- package/dist/persistence/rpc-scope.logic.js +62 -0
- package/dist/persistence/rpc-scope.logic.js.map +1 -1
- package/dist/persistence/rpc.d.ts +79 -0
- package/dist/persistence/rpc.d.ts.map +1 -1
- package/dist/persistence/rpc.js +17 -1
- package/dist/persistence/rpc.js.map +1 -1
- package/package.json +8 -8
|
@@ -48,6 +48,15 @@ export function persistenceController() {
|
|
|
48
48
|
const blockRepository = registry.blockRepository;
|
|
49
49
|
const serviceRepository = registry.serviceRepository;
|
|
50
50
|
const skillSourceRepository = registry.skillSourceRepository;
|
|
51
|
+
// The owner-pair content-library source tables, keyed by the `LibrarySourceEntity` the rule
|
|
52
|
+
// names, so one resolver answers for both (and a new library is one row here). Keyed by the
|
|
53
|
+
// UNION rather than by `string`: a member added to `LibrarySourceEntity` must fail to compile
|
|
54
|
+
// here rather than resolve to nothing, which the stored-half check would otherwise be entitled
|
|
55
|
+
// to read as "no such row" and admit.
|
|
56
|
+
const librarySourceRepos = {
|
|
57
|
+
fragmentSource: registry.fragmentSourceRepository,
|
|
58
|
+
foundationalServiceSource: registry.foundationalServiceSourceRepository,
|
|
59
|
+
};
|
|
51
60
|
const resolveAccountId = (workspaceId) => workspaceRepository?.accountOf?.(workspaceId) ??
|
|
52
61
|
Promise.resolve(undefined);
|
|
53
62
|
// The `block`/`serviceList`/`service` scope checks resolve the owning account by reading the
|
|
@@ -74,6 +83,21 @@ export function persistenceController() {
|
|
|
74
83
|
const blockFindByIds = memoizeRead((ids) => blockRepository?.findByIds?.(ids));
|
|
75
84
|
const serviceListByIds = memoizeRead((ids) => serviceRepository?.listByIds?.(ids));
|
|
76
85
|
const skillSourceGet = memoizeRead((id) => skillSourceRepository?.get?.(id));
|
|
86
|
+
// One memo per source TABLE, keyed by entity: the resolver and the dispatched `get` of the same
|
|
87
|
+
// library then share a read, exactly as `skillSourceGet` does for skills. A table whose `get`
|
|
88
|
+
// this deployment does not wire gets NO reader rather than one answering `undefined`, so the
|
|
89
|
+
// resolver below can report `unreadable` instead of the absence that would admit an upsert.
|
|
90
|
+
const librarySourceReader = (entity) => {
|
|
91
|
+
const repo = librarySourceRepos[entity];
|
|
92
|
+
if (typeof repo?.get !== 'function')
|
|
93
|
+
return undefined;
|
|
94
|
+
// Called through the repository so a class-implemented `get` keeps its receiver.
|
|
95
|
+
return memoizeRead((id) => repo.get(id));
|
|
96
|
+
};
|
|
97
|
+
const librarySourceGets = {
|
|
98
|
+
fragmentSource: librarySourceReader('fragmentSource'),
|
|
99
|
+
foundationalServiceSource: librarySourceReader('foundationalServiceSource'),
|
|
100
|
+
};
|
|
77
101
|
// For the self-keyed reads, point the dispatcher's own call at the memo so it hits the
|
|
78
102
|
// resolver's already-resolved result. Only the one dispatched method is overridden; the rest
|
|
79
103
|
// of the registry is untouched. Keyed `repo.method` so a new self-keyed read is one row here
|
|
@@ -87,6 +111,25 @@ export function persistenceController() {
|
|
|
87
111
|
// The `skillSource` scope resolves a source's account by reading the source; when the
|
|
88
112
|
// dispatched call IS that read (the sync service's `get`), reuse the resolver's result.
|
|
89
113
|
'skillSourceRepository.get': { skillSourceRepository: { get: skillSourceGet } },
|
|
114
|
+
// The same self-keyed read for the two owner-pair libraries' source tables. Contributed only
|
|
115
|
+
// where a reader exists: a table whose `get` is unwired has nothing to memoise, and the
|
|
116
|
+
// dispatcher's own wiring check answers that call with `... is not wired` regardless.
|
|
117
|
+
...(librarySourceGets.fragmentSource
|
|
118
|
+
? {
|
|
119
|
+
'fragmentSourceRepository.get': {
|
|
120
|
+
fragmentSourceRepository: { get: librarySourceGets.fragmentSource },
|
|
121
|
+
},
|
|
122
|
+
}
|
|
123
|
+
: {}),
|
|
124
|
+
...(librarySourceGets.foundationalServiceSource
|
|
125
|
+
? {
|
|
126
|
+
'foundationalServiceSourceRepository.get': {
|
|
127
|
+
foundationalServiceSourceRepository: {
|
|
128
|
+
get: librarySourceGets.foundationalServiceSource,
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
}
|
|
132
|
+
: {}),
|
|
90
133
|
};
|
|
91
134
|
// Substitute ONLY for a method the real registry actually wires. `memoizeRead` returns a
|
|
92
135
|
// function unconditionally — it closes over an optional-chained call — so overriding an ABSENT
|
|
@@ -137,6 +180,22 @@ export function persistenceController() {
|
|
|
137
180
|
const source = (await skillSourceGet(sourceId));
|
|
138
181
|
return source?.accountId;
|
|
139
182
|
},
|
|
183
|
+
// The owner-PAIR libraries' equivalent: a fragment / foundational-service source is owned by
|
|
184
|
+
// an `(ownerKind, ownerId)` tier rather than an account, so project the pair and let the rule
|
|
185
|
+
// resolve it the way it resolves a positional owner. A source that does not exist answers
|
|
186
|
+
// `absent`, which the sourceId-keyed rules fail closed on (404) exactly like a missing
|
|
187
|
+
// block/service, and which `ownerFieldUpsert` alone reads as a create.
|
|
188
|
+
resolveLibrarySourceOwner: async (entity, sourceId) => {
|
|
189
|
+
const read = librarySourceGets[entity];
|
|
190
|
+
// No reader for that table: nothing is known about the id, so say so. Answering `absent`
|
|
191
|
+
// here would let an id-keyed upsert through on its DECLARED owner alone.
|
|
192
|
+
if (!read)
|
|
193
|
+
return { status: 'unreadable' };
|
|
194
|
+
const source = (await read(sourceId));
|
|
195
|
+
return source
|
|
196
|
+
? { status: 'found', owner: { ownerKind: source.ownerKind, ownerId: source.ownerId } }
|
|
197
|
+
: { status: 'absent' };
|
|
198
|
+
},
|
|
140
199
|
// The member-display scope (`user`/`userList`): a userId is in scope iff a co-member of an
|
|
141
200
|
// in-scope account, so resolve each in-scope account's roster to userIds. Bounded by the
|
|
142
201
|
// token's account scope, not the requested user list.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersistenceController.js","sourceRoot":"","sources":["../../../src/modules/persistence/PersistenceController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAEhE,OAAO,
|
|
1
|
+
{"version":3,"file":"PersistenceController.js","sourceRoot":"","sources":["../../../src/modules/persistence/PersistenceController.ts"],"names":[],"mappings":"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"}
|