Skip to main content
Glama
self_dialectical.test.ts3.07 kB
import { describe, expect, it } from "vitest"; import { auditModelCodes, getSelfDialecticalMethodology } from "../framework/self_dialectical.js"; import { isOk } from "../types/domain.js"; describe("Self-Dialectical Methodology", () => { describe("getSelfDialecticalMethodology", () => { it("returns canonical methodology payload with ordered stages", () => { const result = getSelfDialecticalMethodology(); expect(isOk(result)).toBe(true); if (!isOk(result)) { return; } const methodology = result.value; expect(methodology.id).toBe("self_dialectical_ai_v1_2"); expect(methodology.version).toBe("1.2"); const expectedStageOrder = [ "thesis", "antithesis", "synthesis", "convergence", "meta_reflection", ]; const actualStageOrder = methodology.stages.map((stage) => stage.stage); expect(actualStageOrder).toEqual(expectedStageOrder); const stageModelCount = methodology.stages.reduce( (total, stage) => total + stage.modelCodes.length, 0 ); expect(stageModelCount).toBeGreaterThan(0); const flattenedStageModels = new Set(methodology.stages.flatMap((stage) => stage.modelCodes)); const referencedCoverage = new Set([...flattenedStageModels, ...methodology.metaModels]); methodology.modelsReferenced.forEach((code) => { expect(referencedCoverage.has(code)).toBe(true); }); expect(methodology.metaModels).toEqual(["SY19", "SY1"]); }); }); describe("auditModelCodes", () => { it("returns ValidationError when no items are provided", () => { const result = auditModelCodes([]); expect(isOk(result)).toBe(false); if (isOk(result)) { return; } expect(result.error.type).toBe("ValidationError"); if (result.error.type === "ValidationError") { expect(result.error.field).toBe("codes"); } }); it("flags invalid, duplicate, and wrong transformation references", () => { const result = auditModelCodes([ { code: "P1" }, { code: "p1" }, { code: "IN11", expectedTransformation: "CO" }, { code: "ZZ99" }, ]); expect(isOk(result)).toBe(true); if (!isOk(result)) { return; } const payload = result.value; expect(payload.totalReferences).toBe(4); expect(payload.validCount).toBe(3); expect(payload.invalidCount).toBe(payload.issues.length); expect( payload.issues.some((issue) => issue.code === "P1" && issue.issueType === "Duplicate") ).toBe(true); expect( payload.issues.some( (issue) => issue.code === "IN11" && issue.issueType === "WrongTransformation" && issue.expectedTransformation === "CO" && issue.actualTransformation === "IN" ) ).toBe(true); expect( payload.issues.some((issue) => issue.code === "ZZ99" && issue.issueType === "NotFound") ).toBe(true); }); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hummbl-dev/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server