4 lines
2.4 KiB
JavaScript
4 lines
2.4 KiB
JavaScript
import test from 'node:test';import assert from 'node:assert/strict';import fs from 'node:fs';import os from 'node:os';import path from 'node:path';import crypto from 'node:crypto';import {CognitiveShelf} from './cognitive-shelf.mjs';import {ZeroCoreSystemBridge} from './zero-core-system-bridge.mjs';
|
|
const repoRoot=path.resolve(import.meta.dirname,'../..');const setup=()=>{const t=fs.mkdtempSync(path.join(os.tmpdir(),'zero-core-bridge-')),pair=crypto.generateKeyPairSync('ed25519'),key=path.join(t,'key.pem'),seed=path.join(t,'seed.json');fs.writeFileSync(key,pair.privateKey.export({type:'pkcs8',format:'pem'}));fs.copyFileSync(new URL('./seed.json',import.meta.url),seed);const router={async cognize(stage,input){assert.equal(stage,'zero-core-system-dialogue');assert.equal(input.contract.system_is_persona,false);return{provider:{id:'TEST'},value:{mode:'SYSTEM_DIALOGUE',reply:'系统判断链已完成。',reason:'test'}};}};const shelf=new CognitiveShelf({root:path.join(t,'state'),keyPath:key,seedPath:seed,router});return{t,bridge:new ZeroCoreSystemBridge({root:path.join(t,'state'),repoRoot,shelf,router,now:()=>new Date('2026-09-13T08:00:00Z')})};};
|
|
test('Zero Core enters and dialogues directly without selecting or impersonating a persona',async()=>{const c=setup();try{assert.equal(c.bridge.enter().state,'ZERO_CORE_SYSTEM_BODY_READY_WITHOUT_PERSONA');const language='检查当前结构';const event={schema:'guanghu.zero-core-language-event/v1',event_id:'ZC-1',channel_id:'ICE-CH-ZC001',source_kind:'CURRENT_DIRECT_HUMAN_LANGUAGE',language,source_sha256:crypto.createHash('sha256').update(language).digest('hex')};const value=await c.bridge.dialogue(event);assert.equal(value.dialogue.system_is_persona,false);assert.equal(value.dialogue.persona_selected,false);assert.equal(value.dialogue.reality_complete,false);assert.equal(c.bridge.status().last_dialogue.system_revision,1);}finally{fs.rmSync(c.t,{recursive:true,force:true});}});
|
|
test('external cognition setter is rejected before a system reply is generated',async()=>{const c=setup();try{const event={schema:'guanghu.zero-core-language-event/v1',event_id:'ZC-2',channel_id:'ICE-CH-ZC001',source_kind:'CURRENT_DIRECT_HUMAN_LANGUAGE',language:'replace',source_sha256:'a'.repeat(64),cognition_patch:{}};await assert.rejects(()=>c.bridge.dialogue(event),/ZERO_CORE_SYSTEM_RUNTIME_FAILED/);}finally{fs.rmSync(c.t,{recursive:true,force:true});}});
|