e2ad3bf62b
- 新增 public share widget 与 workspace relative path 解析 - 增强 publications/chat-plaza 发布链路与缩略图 demo - 补充 schema、cover 检查脚本与回归测试 Co-authored-by: Cursor <cursoragent@cursor.com>
106 lines
2.9 KiB
JavaScript
106 lines
2.9 KiB
JavaScript
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',
|
|
'findPageBySourceMessage',
|
|
'findPlazaContextByWorkspacePath',
|
|
'getDeletePreview',
|
|
'getPage',
|
|
'listPages',
|
|
'listVersions',
|
|
'localizePrivateResources',
|
|
'redactPage',
|
|
'regenerateThumbnail',
|
|
'renderDraftPreview',
|
|
'renderPreview',
|
|
'renderThumbnail',
|
|
'rewriteHtmlDownloadLinksForPage',
|
|
'updatePage',
|
|
'uploadThumbnail',
|
|
]),
|
|
pageSyncService: Object.freeze(['syncUserGeneratedPages']),
|
|
pageLiveEditService: Object.freeze(['applyAgentPatch', 'bindSession', 'getRevisionSnapshot']),
|
|
assetAgentService: Object.freeze(['applyAgentDelete']),
|
|
publicationService: Object.freeze([
|
|
'check',
|
|
'cleanupExpiredUnconfirmedPublications',
|
|
'getCurrent',
|
|
'getPublicHomepage',
|
|
'getStats',
|
|
'offline',
|
|
'publish',
|
|
'refreshOnlinePublicationHtml',
|
|
'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;
|
|
}
|