feat: finalize mindspace service extraction phase a
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
export const MINDSPACE_SERVER_ADAPTER_BINDINGS = Object.freeze({
|
||||
serviceFacade: Object.freeze(['prepareConversationPackageRead']),
|
||||
conversationPackageRegistry: Object.freeze([
|
||||
'ensurePackage',
|
||||
'putObjectForSession',
|
||||
'recordArtifact',
|
||||
'readArtifactObject',
|
||||
'readManifestForSession',
|
||||
'writeManifestForSession',
|
||||
]),
|
||||
assetService: Object.freeze([
|
||||
'cancelUpload',
|
||||
'claimUploadArtifactsForConversation',
|
||||
'completeUpload',
|
||||
'createChatAsset',
|
||||
'createUpload',
|
||||
'deleteAsset',
|
||||
'listAssets',
|
||||
'readAsset',
|
||||
'readPublicAsset',
|
||||
'renderAssetPreview',
|
||||
'renderAssetThumbnail',
|
||||
'syncWorkspaceAssets',
|
||||
'writeUploadContent',
|
||||
'expireStaleUploads',
|
||||
]),
|
||||
pageService: Object.freeze([
|
||||
'createFromChat',
|
||||
'createPage',
|
||||
'deletePage',
|
||||
'findPageByRelativePath',
|
||||
'findPageBySourceAsset',
|
||||
'getDeletePreview',
|
||||
'getPage',
|
||||
'listPages',
|
||||
'listVersions',
|
||||
'localizePrivateResources',
|
||||
'redactPage',
|
||||
'regenerateThumbnail',
|
||||
'renderDraftPreview',
|
||||
'renderPreview',
|
||||
'renderThumbnail',
|
||||
'rewriteHtmlDownloadLinksForPage',
|
||||
'updatePage',
|
||||
'uploadThumbnail',
|
||||
]),
|
||||
pageLiveEditService: Object.freeze(['applyAgentPatch', 'bindSession', 'getRevisionSnapshot']),
|
||||
assetAgentService: Object.freeze(['applyAgentDelete']),
|
||||
publicationService: Object.freeze([
|
||||
'check',
|
||||
'cleanupExpiredUnconfirmedPublications',
|
||||
'getCurrent',
|
||||
'getPublicHomepage',
|
||||
'getStats',
|
||||
'offline',
|
||||
'publish',
|
||||
'resolvePrivateLink',
|
||||
'resolvePublic',
|
||||
'updatePublicationStatus',
|
||||
]),
|
||||
cleanupService: Object.freeze(['listCandidates', 'runCleanup']),
|
||||
agentJobService: Object.freeze([
|
||||
'cancelJob',
|
||||
'claimJob',
|
||||
'claimNextJob',
|
||||
'completeJob',
|
||||
'createJob',
|
||||
'getAssetForJob',
|
||||
'getJob',
|
||||
'heartbeat',
|
||||
'listJobs',
|
||||
'reapStaleJobs',
|
||||
'retryJob',
|
||||
]),
|
||||
});
|
||||
|
||||
export const MINDSPACE_SERVER_ADAPTER_BINDING_KEYS = Object.freeze(
|
||||
Object.keys(MINDSPACE_SERVER_ADAPTER_BINDINGS),
|
||||
);
|
||||
|
||||
export function assertMindSpaceServerAdapterBindingContract(bindingKey, service) {
|
||||
const methods = MINDSPACE_SERVER_ADAPTER_BINDINGS[bindingKey];
|
||||
if (!methods) {
|
||||
throw new Error(`Unknown MindSpace server adapter binding: ${bindingKey}`);
|
||||
}
|
||||
for (const method of methods) {
|
||||
if (typeof service?.[method] !== 'function') {
|
||||
throw new Error(
|
||||
`MindSpace server adapter binding "${bindingKey}" is missing method ${bindingKey}.${method}()`,
|
||||
);
|
||||
}
|
||||
}
|
||||
return service;
|
||||
}
|
||||
|
||||
export function assertMindSpaceServerAdapterBindings(bindings) {
|
||||
for (const bindingKey of MINDSPACE_SERVER_ADAPTER_BINDING_KEYS) {
|
||||
assertMindSpaceServerAdapterBindingContract(bindingKey, bindings?.[bindingKey]);
|
||||
}
|
||||
return bindings;
|
||||
}
|
||||
Reference in New Issue
Block a user