@konneal/engine 0.2.63 → 0.2.65

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.
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  handleAsk
3
- } from "./chunk-U2CNCNMG.js";
3
+ } from "./chunk-APUINV57.js";
4
4
  import "./chunk-TPV5GPY2.js";
5
5
  import "./chunk-SPKPH54J.js";
6
6
  import "./chunk-A3QHHUN5.js";
7
7
  import "./chunk-LVZTWUVJ.js";
8
8
  import "./chunk-2PCUAJJO.js";
9
- import "./chunk-D6CMIRMB.js";
9
+ import "./chunk-VGVTIPFW.js";
10
10
  import "./chunk-3FYJM7LH.js";
11
11
  export {
12
12
  handleAsk
@@ -6,7 +6,7 @@ import {
6
6
  registerNote,
7
7
  registerTokens,
8
8
  searchRegister
9
- } from "./chunk-D6CMIRMB.js";
9
+ } from "./chunk-VGVTIPFW.js";
10
10
  import "./chunk-3FYJM7LH.js";
11
11
  export {
12
12
  buildRegisterQuery,
@@ -68,7 +68,7 @@ import {
68
68
  certificateLinks,
69
69
  registerNote,
70
70
  searchRegister
71
- } from "./chunk-D6CMIRMB.js";
71
+ } from "./chunk-VGVTIPFW.js";
72
72
  import {
73
73
  P
74
74
  } from "./chunk-3FYJM7LH.js";
@@ -1892,7 +1892,7 @@ async function runTool(db, call) {
1892
1892
  if (call.name !== "register_search") return null;
1893
1893
  const query = String(call.args?.query ?? "").trim().slice(0, 160);
1894
1894
  if (!query) return null;
1895
- const { searchRegister: searchRegister2, registerNote: registerNote2 } = await import("./certificates-IQU7GQCJ.js");
1895
+ const { searchRegister: searchRegister2, registerNote: registerNote2 } = await import("./certificates-DNRUOYRF.js");
1896
1896
  const reg = await searchRegister2(db, query, true);
1897
1897
  const output = reg?.rows?.length ? registerNote2(reg.rows) : `No certificate was found for "${query}" in the certificates database (the register snapshot). State this as the search's result, with the searched string visible.`;
1898
1898
  return { name: call.name, query, output };
@@ -2303,8 +2303,9 @@ async function handleAsk(env, ctx, req, tier, key) {
2303
2303
  const graphDocNumbers = await graphExpand(env, understanding);
2304
2304
  const eNote = await editionNote(env, understanding);
2305
2305
  let register = await searchRegister(env.DB, q.query);
2306
- if (withImage && /certificate|certified|certification/i.test(q.query)) {
2307
- const np = await extractNameplate(env.AI, MODELS.member, withImage);
2306
+ const bridgeImage = userImage ?? storedImage;
2307
+ if (bridgeImage && /certificate|certified|certification/i.test(q.query)) {
2308
+ const np = await extractNameplate(env.AI, MODELS.member, bridgeImage);
2308
2309
  if (np?.manufacturer) {
2309
2310
  const bridged = await searchRegister(env.DB, nameplateRegisterQuery(np, q.query));
2310
2311
  if (bridged?.rows?.length) {
@@ -95,6 +95,9 @@ async function searchRegister(db, query, force = false) {
95
95
  const built = buildRegisterQuery(tokens);
96
96
  let { sql, params } = built;
97
97
  const family = queryFamily(query);
98
+ if (!family) {
99
+ sql = sql.replace("family = ?FAMILY AND ", "");
100
+ }
98
101
  if (family) {
99
102
  sql = sql.replace(/\?(\d+)/g, (_, n) => `?${Number(n) + 1}`);
100
103
  sql = sql.replace("?FAMILY", "?1");
@@ -6,7 +6,7 @@ import {
6
6
  modelGroundingBlock,
7
7
  scoreFaithfulness,
8
8
  scoreJudge
9
- } from "../../chunk-U2CNCNMG.js";
9
+ } from "../../chunk-APUINV57.js";
10
10
  import {
11
11
  handleSearch
12
12
  } from "../../chunk-FLNX4O7C.js";
@@ -63,7 +63,7 @@ import {
63
63
  sha256Hex,
64
64
  today
65
65
  } from "../../chunk-2PCUAJJO.js";
66
- import "../../chunk-D6CMIRMB.js";
66
+ import "../../chunk-VGVTIPFW.js";
67
67
  import {
68
68
  P,
69
69
  setProfile
@@ -959,7 +959,7 @@ async function handleMcp(env, ctx, req, tier, key) {
959
959
  // stream:false forces the JSON lane (anon defaults to SSE)
960
960
  body: JSON.stringify({ ...args, stream: false })
961
961
  });
962
- const res = name === "ask" ? await (await import("../../ask-R442D7HU.js")).handleAsk(env, ctx, inner, tier, key) : await (await import("../../search-PBOODCMQ.js")).handleSearch(env, ctx, inner, tier, key);
962
+ const res = name === "ask" ? await (await import("../../ask-B77IV2Y2.js")).handleAsk(env, ctx, inner, tier, key) : await (await import("../../search-PBOODCMQ.js")).handleSearch(env, ctx, inner, tier, key);
963
963
  return res.json().catch(() => ({ error: { message: "tool transport failed", status: res.status } }));
964
964
  });
965
965
  if (out.ok && "accepted" in out) return new Response(null, { status: 202 });
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.63",
30
+ "version": "0.2.65",
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",
@@ -628,8 +628,9 @@ let convEntities: Array<{ entity: string; kind: string }> = [];
628
628
  // Fires whenever a photo is present: the text lane's tokens are the
629
629
  // question's stopwords ("this", "have") and can match an unrelated
630
630
  // holder, and the photograph's own reading is authoritative over them.
631
- if (withImage && /certificate|certified|certification/i.test(q.query)) {
632
- const np = await extractNameplate((env as any).AI, MODELS.member, withImage);
631
+ const bridgeImage = userImage ?? storedImage;
632
+ if (bridgeImage && /certificate|certified|certification/i.test(q.query)) {
633
+ const np = await extractNameplate((env as any).AI, MODELS.member, bridgeImage);
633
634
  if (np?.manufacturer) {
634
635
  const bridged = await searchRegister(env.DB, nameplateRegisterQuery(np, q.query));
635
636
  if (bridged?.rows?.length) {
@@ -98,6 +98,10 @@ export async function searchRegister(db: any, query: string, force = false): Pro
98
98
  const built = buildRegisterQuery(tokens);
99
99
  let { sql, params } = built;
100
100
  const family = queryFamily(query);
101
+ if (!family) {
102
+ // a tool query that names no family must not carry the placeholder
103
+ sql = sql.replace("family = ?FAMILY AND ", "");
104
+ }
101
105
  if (family) {
102
106
  // the register's family column is the DIGITS ONLY ("60", "105") —
103
107
  // the letter+padding form ("R60") never matched a single row