mindspace: version runtime contracts and audit packages

This commit is contained in:
john
2026-07-27 17:43:38 +08:00
parent e94052ff24
commit 70264a4c4c
23 changed files with 1448 additions and 20 deletions
+20 -2
View File
@@ -5,6 +5,11 @@ import {
createMindSpaceServerAdapter,
resolveMindSpaceServerAdapterKind,
} from './mindspace-server-adapter.mjs';
import {
MINDSPACE_SERVER_ADAPTER_BINDINGS,
MINDSPACE_SERVER_ADAPTER_CONTRACT_VERSION,
MINDSPACE_SERVER_ADAPTER_REQUIRED_CAPABILITIES,
} from './mindspace-server-adapter-contract.mjs';
test('resolveMindSpaceServerAdapterKind defaults to local and rejects unknown kinds', () => {
assert.equal(resolveMindSpaceServerAdapterKind({}), 'local');
@@ -39,19 +44,32 @@ test('createMindSpaceServerAdapter returns a contract-complete local adapter by
assert.equal(assertMindSpaceServerAdapterContract(adapter), adapter);
});
test('createMindSpaceServerAdapter exposes a remote stub that fails fast when selected', () => {
test('createMindSpaceServerAdapter exposes a remote stub that validates contract when selected', async () => {
const adapter = createMindSpaceServerAdapter({
env: {
MINDSPACE_SERVER_ADAPTER: 'remote',
MINDSPACE_REMOTE_BASE_URL: 'https://mindspace.example.com',
},
fetchFn: async () => ({
ok: true,
status: 200,
async text() {
return JSON.stringify({
contractVersion:
MINDSPACE_SERVER_ADAPTER_CONTRACT_VERSION,
bindings: MINDSPACE_SERVER_ADAPTER_BINDINGS,
requiredCapabilities:
MINDSPACE_SERVER_ADAPTER_REQUIRED_CAPABILITIES,
});
},
}),
logger: { log() {}, warn() {}, error() {} },
});
assert.equal(adapter.kind, 'remote');
assert.equal(adapter.implementationStatus, 'scaffold');
assert.equal(assertMindSpaceServerAdapterContract(adapter), adapter);
assert.equal(adapter.assertReady(), true);
assert.equal(await adapter.assertReady(), true);
assert.deepEqual(adapter.startBackgroundJobs(), {
publicationCleanup: null,
agentWorker: null,