import assert from 'node:assert'; import path from 'node:path'; import fs from 'node:fs'; import { Yonexus } from '../src/index'; import { YonexusError } from '../src/models/errors'; const root = path.resolve(process.cwd(), 'data/test-openclaw'); const dataFile = path.resolve(process.cwd(), 'data/test-org.json'); if (fs.existsSync(dataFile)) fs.unlinkSync(dataFile); if (fs.existsSync(root)) fs.rmSync(root, { recursive: true, force: true }); const app = new Yonexus({ dataFile, registrars: ['orion'], openclawDir: root }); app.registerAgent({ agentId: 'orion' }, 'orion', 'Orion', ['org_admin', 'agent']); app.registerAgent({ agentId: 'orion' }, 'u1', 'U1', ['agent']); const org = app.createOrganization({ agentId: 'orion' }, 'Yonexus'); const dept = app.createDepartment({ agentId: 'orion' }, 'Eng', org.id); const team = app.createTeam({ agentId: 'orion' }, 'API', dept.id); app.assignIdentity({ agentId: 'orion' }, 'u1', dept.id, team.id, { git_user_name: 'u1', position: 'dev' }); const result = app.queryAgents( { agentId: 'orion' }, { deptId: dept.id }, { filters: [{ field: 'git_user_name', op: 'eq', value: 'u1' }] } ); assert.equal(result.length, 1); const expectedAgentDocsDir = path.join(root, 'yonexus', 'organizations', 'yonexus', 'teams', 'api', 'agents', 'u1', 'docs'); assert.equal(fs.existsSync(expectedAgentDocsDir), true); let thrown = false; try { app.queryAgents( { agentId: 'orion' }, { deptId: dept.id }, { filters: [{ field: 'team', op: 'eq', value: 'API' }] } ); } catch (e) { thrown = e instanceof YonexusError && e.code === 'FIELD_NOT_QUERYABLE'; } assert.equal(thrown, true); let invalidRegexThrown = false; try { app.getDocs('agent', 'docs', '['); } catch (e) { invalidRegexThrown = e instanceof YonexusError && e.code === 'VALIDATION_ERROR'; } assert.equal(invalidRegexThrown, true); console.log('smoke test passed');