Skip to content

Commit 0d87d76

Browse files
fix(scorer): require all framework dimensions in knowledgeEntrySchema
z.record(dimKeyEnum, ...) validates key names but does not require every enum key to be present. Added superRefine to reject entries that omit any declared dimension — fixing the failing schema.test.ts assertion. Bump all packages to 0.3.2. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 265e2f0 commit 0d87d76

5 files changed

Lines changed: 13 additions & 7 deletions

File tree

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "fluently-cli",
3-
"version": "0.3.1",
3+
"version": "0.3.2",
44
"main": "src/index.ts",
55
"bin": {
66
"fluent": "dist/index.js"

packages/mcp-server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "fluently-mcp-server",
3-
"version": "0.3.1",
3+
"version": "0.3.2",
44
"description": "MCP server for the Fluently framework. Exposes knowledge retrieval and contribution tools so any AI agent (Claude, GPT, Gemini, Mistral, Copilot…) can find, reason over, and extend Fluently cycles.",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

packages/scorer/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "fluently-scorer",
3-
"version": "0.3.1",
3+
"version": "0.3.2",
44
"description": "Zero-dependency scoring and validation engine for human-AI collaboration frameworks. Validates knowledge cycles, ranks them by similarity, and evaluates framework compliance. Bundles the AI Fluency 4D Framework; any framework with named dimensions can be registered.",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

packages/scorer/src/framework-schema.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,13 @@ export function buildKnowledgeSchemas(framework: FrameworkDefinition) {
178178
framework_id: z.string().default(framework.id),
179179
title: z.string(),
180180
domain: domainEnum,
181-
dimensions: z.record(dimKeyEnum, dimensionValueSchema),
181+
dimensions: z.record(dimKeyEnum, dimensionValueSchema).superRefine((dims, ctx) => {
182+
for (const key of keys) {
183+
if (!(key in dims)) {
184+
ctx.addIssue({ code: z.ZodIssueCode.custom, message: `Missing required dimension: ${key}` });
185+
}
186+
}
187+
}),
182188
score_hints: z.record(dimKeyEnum, z.number().min(0).max(1)).refine(
183189
obj => Math.abs(Object.values(obj).reduce((a: number, b: number) => a + b, 0) - 1) < 1e-9,
184190
{ message: "Dimension weights must sum to 1" }

0 commit comments

Comments
 (0)