@konneal/engine 0.2.109 → 0.2.111
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ask-EAKLN77G.js → ask-6FXTHCMS.js} +2 -2
- package/dist/{chunk-G56TYXNN.js → chunk-32UDKBA2.js} +1 -0
- package/dist/{chunk-G4KBK5XZ.js → chunk-Y6X5WLCZ.js} +2 -2
- package/dist/{tools-WSWEGJVQ.js → tools-GSLHFD37.js} +1 -1
- package/dist/worker_public/src/index.js +4 -4
- package/package.json +1 -1
- package/workers/worker_public/src/route.ts +16 -6
- package/workers/worker_public/src/verdict.ts +5 -0
|
@@ -243,6 +243,7 @@ function extractChecks(content) {
|
|
|
243
243
|
if (b) out.push(b);
|
|
244
244
|
};
|
|
245
245
|
push(c.check);
|
|
246
|
+
push(c.expression);
|
|
246
247
|
push(c.limit?.expression);
|
|
247
248
|
push(c.acceptance_criteria?.limit && !c.acceptance_criteria.limit.expression?.includes("ocl{") ? null : c.acceptance_criteria?.limit?.expression);
|
|
248
249
|
const st = c.acceptance_criteria?.limit;
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
tableRetyped,
|
|
20
20
|
toolNote,
|
|
21
21
|
verdictNote
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-32UDKBA2.js";
|
|
23
23
|
import {
|
|
24
24
|
NO_CONTEXT,
|
|
25
25
|
STAGE_NAMES,
|
|
@@ -1390,8 +1390,8 @@ function routeFor(u, query) {
|
|
|
1390
1390
|
if ((u?.sub_queries ?? []).length > 0) features.push("sub-queries");
|
|
1391
1391
|
if (u?.process_intent) features.push("process-intent");
|
|
1392
1392
|
if (words > ROUTE_FAST_WORD_CAP) features.push("long-question");
|
|
1393
|
-
if (features.length) return { route: "deep", features };
|
|
1394
1393
|
if (u?.doc_number) features.push("doc-scoped");
|
|
1394
|
+
if (features.length) return { route: "deep", features };
|
|
1395
1395
|
if (u?.term) features.push("definitional");
|
|
1396
1396
|
if ((u?.defined_terms ?? []).length > 0) features.push("terminology");
|
|
1397
1397
|
features.push("short-question");
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
handleMemories,
|
|
5
5
|
scoreFaithfulness,
|
|
6
6
|
scoreJudge
|
|
7
|
-
} from "../../chunk-
|
|
7
|
+
} from "../../chunk-Y6X5WLCZ.js";
|
|
8
8
|
import {
|
|
9
9
|
TOOLS_REGISTRY,
|
|
10
10
|
bindModelNode,
|
|
11
11
|
modelGroundingBlock
|
|
12
|
-
} from "../../chunk-
|
|
12
|
+
} from "../../chunk-32UDKBA2.js";
|
|
13
13
|
import {
|
|
14
14
|
handleSearch
|
|
15
15
|
} from "../../chunk-HAU5INEJ.js";
|
|
@@ -994,13 +994,13 @@ async function callToolOnce(env, ctx, _req, tier, key, name, args, t0) {
|
|
|
994
994
|
// stream:false forces the JSON lane (anon defaults to SSE)
|
|
995
995
|
body: JSON.stringify({ ...args, stream: false })
|
|
996
996
|
});
|
|
997
|
-
const { runTool, TOOLS_REGISTRY: TOOLS_REGISTRY2 } = await import("../../tools-
|
|
997
|
+
const { runTool, TOOLS_REGISTRY: TOOLS_REGISTRY2 } = await import("../../tools-GSLHFD37.js");
|
|
998
998
|
let payload;
|
|
999
999
|
if (TOOLS_REGISTRY2.some((t) => t.name === name && t.audiences.includes("mcp"))) {
|
|
1000
1000
|
const r = await runTool({ ...env, DB: env.DB }, { name, args }, "mcp");
|
|
1001
1001
|
payload = r ? { tool: r.name, query: r.query, result: r.output } : { error: { message: `tool ${name} returned nothing for the given arguments` } };
|
|
1002
1002
|
} else {
|
|
1003
|
-
const res = name === "ask" ? await (await import("../../ask-
|
|
1003
|
+
const res = name === "ask" ? await (await import("../../ask-6FXTHCMS.js")).handleAsk(env, ctx, inner, tier, key) : await (await import("../../search-HKGN7F3O.js")).handleSearch(env, ctx, inner, tier, key);
|
|
1004
1004
|
payload = await res.json().catch(() => ({ error: { message: "tool transport failed", status: res.status } }));
|
|
1005
1005
|
}
|
|
1006
1006
|
telemetry(env, ctx, tier, `mcp:${name}`, null, !payload?.error, JSON.stringify(payload).length, await sha256Hex(`${name}:${JSON.stringify(args ?? {})}`), void 0, void 0, { durationMs: Date.now() - t0 });
|
package/package.json
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"playwright": "^1.62.1",
|
|
28
28
|
"yaml": "^2.9.1"
|
|
29
29
|
},
|
|
30
|
-
"version": "0.2.
|
|
30
|
+
"version": "0.2.111",
|
|
31
31
|
"description": "The Konneal engine: the publisher-agnostic build pipeline and API plane for standards intelligence (retrieval, answer contract, verdicts, evaluation).",
|
|
32
32
|
"license": "BSD-3-Clause",
|
|
33
33
|
"type": "module",
|
|
@@ -56,14 +56,24 @@ export function routeFor(u: RouteFeatures | null, query: string): {
|
|
|
56
56
|
if ((u?.sub_queries ?? []).length > 0) features.push("sub-queries");
|
|
57
57
|
if (u?.process_intent) features.push("process-intent");
|
|
58
58
|
if (words > ROUTE_FAST_WORD_CAP) features.push("long-question");
|
|
59
|
+
// a document scope (named in the question OR declared by a context
|
|
60
|
+
// chip — the chip writes the same understanding fields) NARROWS the
|
|
61
|
+
// candidate pool structurally: the dense filter does the scoping, and
|
|
62
|
+
// the sealed/narrowed pool needs every lane feeding it (the
|
|
63
|
+
// multi-query variants are its redundancy). The 2026-10-08 gate
|
|
64
|
+
// caught this class: ctx-entity-r60, chip-declared and routed fast,
|
|
65
|
+
// refused intermittently — a starved sealed pool (the 2026-09-08
|
|
66
|
+
// diagnosis's shape). Scoped questions ride deep until the grid
|
|
67
|
+
// prices the lanes against a sealed pool.
|
|
68
|
+
if (u?.doc_number) features.push("doc-scoped");
|
|
59
69
|
if (features.length) return { route: "deep", features };
|
|
60
70
|
|
|
61
|
-
// FAST — everything else:
|
|
62
|
-
// fast registry. The conservative direction is structural
|
|
63
|
-
// long, the complex, the multi-perspective
|
|
64
|
-
// routed deep above; under-routing
|
|
65
|
-
// only latency, and the grid
|
|
66
|
-
|
|
71
|
+
// FAST — everything else: an UNscoped question within the word cap
|
|
72
|
+
// rides the fast registry. The conservative direction is structural
|
|
73
|
+
// here: the long, the complex, the multi-perspective, the
|
|
74
|
+
// process-shaped and the scoped all routed deep above; under-routing
|
|
75
|
+
// costs accuracy, over-routing costs only latency, and the grid
|
|
76
|
+
// prices both.
|
|
67
77
|
if (u?.term) features.push("definitional");
|
|
68
78
|
if ((u?.defined_terms ?? []).length > 0) features.push("terminology");
|
|
69
79
|
features.push("short-question");
|
|
@@ -148,6 +148,11 @@ export function extractChecks(content: unknown): string[] {
|
|
|
148
148
|
const out: string[] = [];
|
|
149
149
|
const push = (e?: string) => { const b = e && oclBody(e); if (b) out.push(b); };
|
|
150
150
|
push(c.check);
|
|
151
|
+
// the plain oiml-r60 projection carries the OCL under `expression`
|
|
152
|
+
// (the r60-lml projection under `check`) — the dead-load geometry
|
|
153
|
+
// nodes bound for their whole life and evaluated to null because
|
|
154
|
+
// their only check sat under the key nobody read
|
|
155
|
+
push(c.expression);
|
|
151
156
|
push(c.limit?.expression);
|
|
152
157
|
push(c.acceptance_criteria?.limit && !c.acceptance_criteria.limit.expression?.includes("ocl{") ? null : c.acceptance_criteria?.limit?.expression);
|
|
153
158
|
// structured threshold limits compile to a comparison expression
|