import test from 'node:test'; import assert from 'node:assert/strict'; import { applySkillGrantsToCapabilities, DEFAULT_USER_SKILLS, listPlatformSkillCatalog, normalizeSkillPatch, resolveSkillMap, } from './skills-registry.mjs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; const h5Root = path.dirname(fileURLToPath(import.meta.url)); test('lists static-page-publish in platform catalog', () => { const catalog = listPlatformSkillCatalog(h5Root); assert.ok(catalog.some((item) => item.name === 'static-page-publish')); assert.ok(catalog.some((item) => item.name === 'page-data-collect')); assert.ok(catalog.some((item) => item.name === 'schedule-assistant')); assert.ok(catalog.some((item) => item.name === 'service-integration-smoke')); assert.ok(catalog.some((item) => item.name === 'product-campaign-page')); assert.ok(catalog.some((item) => item.name === 'long-image-download')); const imageGeneration = catalog.find((item) => item.name === 'image-generation'); assert.ok(imageGeneration); assert.ok(imageGeneration.manifest.trigger.keywords.includes('AI配图')); assert.equal(imageGeneration.manifest.router.promptKey, 'image-generation'); assert.ok(catalog.some((item) => item.name === 'excel-analyst')); }); test('granting page-data-collect enables static_publish capability', () => { const caps = applySkillGrantsToCapabilities( { static_publish: false, skills: false }, { 'page-data-collect': true }, ); assert.equal(caps.static_publish, true); assert.equal(caps.skills, true); }); test('granting publish skill enables static_publish capability', () => { const caps = applySkillGrantsToCapabilities( { static_publish: false, skills: false }, { 'static-page-publish': true }, ); assert.equal(caps.static_publish, true); assert.equal(caps.skills, true); }); test('resolveSkillMap prefers user overrides', () => { const catalog = listPlatformSkillCatalog(h5Root); const resolved = resolveSkillMap( { 'static-page-publish': false }, { 'static-page-publish': true }, catalog, ); assert.equal(resolved['static-page-publish'], true); }); test('normalizeSkillPatch ignores unknown skills', () => { const catalog = listPlatformSkillCatalog(h5Root); assert.deepEqual(normalizeSkillPatch(catalog, { unknown: true }), {}); }); test('DEFAULT_USER_SKILLS enables common platform skills', () => { assert.equal(DEFAULT_USER_SKILLS.web, true); assert.equal(DEFAULT_USER_SKILLS.search, true); assert.equal(DEFAULT_USER_SKILLS['schedule-assistant'], true); assert.equal(DEFAULT_USER_SKILLS['service-integration-smoke'], true); assert.equal(DEFAULT_USER_SKILLS['form-builder'], true); assert.equal(DEFAULT_USER_SKILLS['table-viewer'], true); assert.equal(DEFAULT_USER_SKILLS['product-campaign-page'], true); assert.equal(DEFAULT_USER_SKILLS['long-image-download'], true); assert.equal(DEFAULT_USER_SKILLS['image-generation'], true); assert.equal(DEFAULT_USER_SKILLS['page-data-collect'], true); assert.equal(DEFAULT_USER_SKILLS['static-page-publish'], false); assert.equal(DEFAULT_USER_SKILLS['excel-analyst'], false); });