ai-model-verifier 3.5.0 → 3.7.0

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.
Files changed (70) hide show
  1. package/README.md +14 -1
  2. package/dist/engine/probe-runner.d.ts +2 -0
  3. package/dist/engine/probe-runner.d.ts.map +1 -1
  4. package/dist/engine/probe-runner.js +17 -0
  5. package/dist/engine/probe-runner.js.map +1 -1
  6. package/dist/engine/survey-runner.d.ts +6 -0
  7. package/dist/engine/survey-runner.d.ts.map +1 -1
  8. package/dist/engine/survey-runner.js +9 -1
  9. package/dist/engine/survey-runner.js.map +1 -1
  10. package/dist/identity/patterns.d.ts +30 -0
  11. package/dist/identity/patterns.d.ts.map +1 -1
  12. package/dist/identity/patterns.js +30 -0
  13. package/dist/identity/patterns.js.map +1 -1
  14. package/dist/internal/utils.d.ts +1 -0
  15. package/dist/internal/utils.d.ts.map +1 -1
  16. package/dist/internal/utils.js +3 -0
  17. package/dist/internal/utils.js.map +1 -1
  18. package/dist/makers/table.d.ts +1 -0
  19. package/dist/makers/table.d.ts.map +1 -1
  20. package/dist/makers/table.js +3 -0
  21. package/dist/makers/table.js.map +1 -1
  22. package/dist/models/facts.d.ts +3 -0
  23. package/dist/models/facts.d.ts.map +1 -1
  24. package/dist/models/facts.js +16 -0
  25. package/dist/models/facts.js.map +1 -1
  26. package/dist/probes/survey.d.ts +4 -0
  27. package/dist/probes/survey.d.ts.map +1 -1
  28. package/dist/probes/survey.js +9 -0
  29. package/dist/probes/survey.js.map +1 -1
  30. package/dist/registry.d.ts +1 -1
  31. package/dist/rules/fake-200.d.ts +9 -0
  32. package/dist/rules/fake-200.d.ts.map +1 -0
  33. package/dist/rules/fake-200.js +37 -0
  34. package/dist/rules/fake-200.js.map +1 -0
  35. package/dist/rules/mask-contradiction.d.ts +13 -0
  36. package/dist/rules/mask-contradiction.d.ts.map +1 -0
  37. package/dist/rules/mask-contradiction.js +40 -0
  38. package/dist/rules/mask-contradiction.js.map +1 -0
  39. package/dist/rules/masked-identity.d.ts +8 -0
  40. package/dist/rules/masked-identity.d.ts.map +1 -0
  41. package/dist/rules/masked-identity.js +50 -0
  42. package/dist/rules/masked-identity.js.map +1 -0
  43. package/dist/rules/table.d.ts +1 -1
  44. package/dist/rules/table.d.ts.map +1 -1
  45. package/dist/rules/table.js +6 -0
  46. package/dist/rules/table.js.map +1 -1
  47. package/dist/types.d.ts +7 -1
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/vendors/anthropic.d.ts +2 -0
  50. package/dist/vendors/anthropic.d.ts.map +1 -1
  51. package/dist/vendors/anthropic.js +9 -2
  52. package/dist/vendors/anthropic.js.map +1 -1
  53. package/dist/vendors/gemini.d.ts +2 -0
  54. package/dist/vendors/gemini.d.ts.map +1 -1
  55. package/dist/vendors/gemini.js +10 -2
  56. package/dist/vendors/gemini.js.map +1 -1
  57. package/dist/vendors/openai.d.ts +2 -0
  58. package/dist/vendors/openai.d.ts.map +1 -1
  59. package/dist/vendors/openai.js +20 -2
  60. package/dist/vendors/openai.js.map +1 -1
  61. package/dist/vendors/table.d.ts +3 -0
  62. package/dist/vendors/table.d.ts.map +1 -1
  63. package/dist/vendors/types.d.ts +5 -0
  64. package/dist/vendors/types.d.ts.map +1 -1
  65. package/dist/vendors/types.js.map +1 -1
  66. package/dist/verify.d.ts +2 -2
  67. package/dist/verify.d.ts.map +1 -1
  68. package/dist/verify.js +3 -0
  69. package/dist/verify.js.map +1 -1
  70. package/package.json +1 -1
@@ -0,0 +1,37 @@
1
+ /**
2
+ * A platform refusal or error page sent as the model's answer at HTTP 200. The
3
+ * gateway in front of the lane bills it as a reply and never fails over, so a
4
+ * user sees "unable to provide content" or the reseller's own error markup in
5
+ * place of the model. Read from every answered probe and survey reply, so it
6
+ * runs with the survey, whose sensitive question is the one that trips filters.
7
+ */
8
+ import { PLATFORM_REFUSAL } from "../identity/patterns";
9
+ import { defineRule } from "./types";
10
+ const QUOTE = 120;
11
+ export const fake200Rule = defineRule({
12
+ id: "fake-200",
13
+ layer: "evidence",
14
+ needs: ["probes", "survey"],
15
+ check: "survey",
16
+ applies: () => true,
17
+ judge: async (ctx) => {
18
+ const replies = [];
19
+ for (const p of await ctx.evidence("probes"))
20
+ if (p.httpStatus === 200 && p.text)
21
+ replies.push({ label: p.label, text: p.text });
22
+ for (const s of await ctx.evidence("survey"))
23
+ if (s.httpStatus === 200 && s.text)
24
+ replies.push({ label: s.label, text: s.text });
25
+ const hit = replies.find((r) => PLATFORM_REFUSAL.test(r.text));
26
+ if (!hit)
27
+ return null;
28
+ const at = hit.text.search(PLATFORM_REFUSAL);
29
+ const quote = hit.text.slice(Math.max(0, at - 20), at + QUOTE).trim();
30
+ return {
31
+ severity: "suspect",
32
+ reason: `fake-200: platform refusal sent as the reply (${hit.label}: "${quote}")`,
33
+ data: { label: hit.label, quote },
34
+ };
35
+ },
36
+ });
37
+ //# sourceMappingURL=fake-200.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-200.js","sourceRoot":"","sources":["../../src/rules/fake-200.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,KAAK,GAAG,GAAG,CAAC;AAElB,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC3B,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;IACnB,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACnB,MAAM,OAAO,GAAsC,EAAE,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC1C,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,KAAK,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC1C,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACtE,OAAO;YACL,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,iDAAiD,GAAG,CAAC,KAAK,MAAM,KAAK,IAAI;YACjF,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE;SAClC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The survey asks the lane to replay its prior instructions. A relay that
3
+ * stamps its own brand on the real model ("you are deepseek-v4-flash, provided
4
+ * by X") is not evidence of a swap: across 266 masked lanes on 2026-10-11 the
5
+ * swap signals ran no higher than on unmasked ones. A mask that assigns
6
+ * another maker's identity is: "you are claude" on a glm lane means the lane
7
+ * either serves claude under the glm name or coaches glm to pose as claude.
8
+ * A note, not evidence: asked to repeat instructions it never got, a model
9
+ * recites a remembered one ("you are chatgpt, a large language model trained
10
+ * by openai"), and every hit in 3 weeks was a single run out of 20 to 57.
11
+ */
12
+ export declare const maskContradictionRule: import("./types").Rule<"mask-contradiction", "survey", "note">;
13
+ //# sourceMappingURL=mask-contradiction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mask-contradiction.d.ts","sourceRoot":"","sources":["../../src/rules/mask-contradiction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,eAAO,MAAM,qBAAqB,gEAyBhC,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * The survey asks the lane to replay its prior instructions. A relay that
3
+ * stamps its own brand on the real model ("you are deepseek-v4-flash, provided
4
+ * by X") is not evidence of a swap: across 266 masked lanes on 2026-10-11 the
5
+ * swap signals ran no higher than on unmasked ones. A mask that assigns
6
+ * another maker's identity is: "you are claude" on a glm lane means the lane
7
+ * either serves claude under the glm name or coaches glm to pose as claude.
8
+ * A note, not evidence: asked to repeat instructions it never got, a model
9
+ * recites a remembered one ("you are chatgpt, a large language model trained
10
+ * by openai"), and every hit in 3 weeks was a single run out of 20 to 57.
11
+ */
12
+ import { IDENTITY_ASSIGNMENT, NEGATED_ASSIGNMENT, REPLAY_REFUSAL, WRAPPER_PRODUCTS, } from "../identity/patterns";
13
+ import { includesAnyWord } from "../identity/signals";
14
+ import { defineRule } from "./types";
15
+ export const maskContradictionRule = defineRule({
16
+ id: "mask-contradiction",
17
+ layer: "note",
18
+ needs: ["survey"],
19
+ check: "survey",
20
+ applies: () => true,
21
+ judge: async (ctx) => {
22
+ const reply = (await ctx.evidence("survey")).find((s) => s.label === "system-prompt");
23
+ const text = reply?.answer?.toLowerCase() ?? "";
24
+ if (!text || REPLAY_REFUSAL.test(text))
25
+ return null;
26
+ for (const m of text.matchAll(IDENTITY_ASSIGNMENT)) {
27
+ const assigned = m[1].trim();
28
+ if (NEGATED_ASSIGNMENT.test(assigned) || WRAPPER_PRODUCTS.test(assigned))
29
+ continue;
30
+ if (includesAnyWord(assigned, ctx.maker.foreign))
31
+ return {
32
+ severity: "note",
33
+ reason: `mask-contradiction: the injected prompt says "${m[0].trim()}"`,
34
+ data: { assigned },
35
+ };
36
+ }
37
+ return null;
38
+ },
39
+ });
40
+ //# sourceMappingURL=mask-contradiction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mask-contradiction.js","sourceRoot":"","sources":["../../src/rules/mask-contradiction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAAC;IAC9C,EAAE,EAAE,oBAAoB;IACxB,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,CAAC,QAAQ,CAAC;IACjB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;IACnB,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,eAAe,CACnC,CAAC;QACF,MAAM,IAAI,GAAG,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACtE,SAAS;YACX,IAAI,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC9C,OAAO;oBACL,QAAQ,EAAE,MAAM;oBAChB,MAAM,EAAE,iDAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG;oBACvE,IAAI,EAAE,EAAE,QAAQ,EAAE;iBACnB,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A lane serving one model under another's name injects a prompt telling it
3
+ * to deny the backend. Coached replies pass every identity probe, but the
4
+ * model's own reasoning restates the coaching, so the probes' reasoning (and
5
+ * any reasoning leaked into the content) is searched for that instruction.
6
+ */
7
+ export declare const maskedIdentityRule: import("./types").Rule<"masked-identity", "probes", "evidence">;
8
+ //# sourceMappingURL=masked-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masked-identity.d.ts","sourceRoot":"","sources":["../../src/rules/masked-identity.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6BH,eAAO,MAAM,kBAAkB,iEAyB7B,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * A lane serving one model under another's name injects a prompt telling it
3
+ * to deny the backend. Coached replies pass every identity probe, but the
4
+ * model's own reasoning restates the coaching, so the probes' reasoning (and
5
+ * any reasoning leaked into the content) is searched for that instruction.
6
+ */
7
+ import { MASKING_DECLARED_IDENTITY, MASKING_HIDDEN_BACKEND, MASKING_INSTRUCTED, MASKING_VERB, } from "../identity/patterns";
8
+ import { includesAnyWord } from "../identity/signals";
9
+ import { defineRule } from "./types";
10
+ const WINDOW = 80;
11
+ function maskingHit(text, ctx) {
12
+ if (!MASKING_INSTRUCTED.test(text))
13
+ return null;
14
+ if (MASKING_DECLARED_IDENTITY.test(text))
15
+ return text.match(MASKING_DECLARED_IDENTITY)?.[0] ?? null;
16
+ for (const m of text.matchAll(MASKING_VERB)) {
17
+ const after = text.slice(m.index, m.index + m[0].length + WINDOW);
18
+ if (MASKING_HIDDEN_BACKEND.test(after) ||
19
+ includesAnyWord(after, ctx.maker.foreign))
20
+ return after.trim();
21
+ }
22
+ return null;
23
+ }
24
+ export const maskedIdentityRule = defineRule({
25
+ id: "masked-identity",
26
+ layer: "evidence",
27
+ needs: ["probes"],
28
+ applies: () => true,
29
+ judge: async (ctx) => {
30
+ const hits = [];
31
+ for (const p of await ctx.evidence("probes")) {
32
+ const thought = ctx.wire.read.reasoningText?.(p.raw) ?? "";
33
+ for (const source of [thought, p.text ?? ""]) {
34
+ const quote = source ? maskingHit(source, ctx) : null;
35
+ if (quote) {
36
+ hits.push({ label: p.label, quote });
37
+ break;
38
+ }
39
+ }
40
+ }
41
+ return hits.length > 0
42
+ ? {
43
+ severity: "suspect",
44
+ reason: `masked-identity: told to hide its backend (${hits[0].label}: "${hits[0].quote}")`,
45
+ data: { hits },
46
+ }
47
+ : null;
48
+ },
49
+ });
50
+ //# sourceMappingURL=masked-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masked-identity.js","sourceRoot":"","sources":["../../src/rules/masked-identity.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,MAAM,GAAG,EAAE,CAAC;AAElB,SAAS,UAAU,CAAC,IAAY,EAAE,GAAW;IAC3C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5D,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QAClE,IACE,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;YAClC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;YAEzC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;IAC3C,EAAE,EAAE,iBAAiB;IACrB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,QAAQ,CAAC;IACjB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI;IACnB,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACnB,MAAM,IAAI,GAAuC,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3D,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtD,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;oBACrC,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC;gBACE,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,8CAA8C,IAAI,CAAC,CAAC,CAAE,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,CAAE,CAAC,KAAK,IAAI;gBAC5F,IAAI,EAAE,EAAE,IAAI,EAAE;aACf;YACH,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;CACF,CAAC,CAAC"}
@@ -4,7 +4,7 @@ import type { Rule } from "./types";
4
4
  * verdict. Evidence rules sit above the probe ladder because they read facts a
5
5
  * coached reply cannot fake; note rules only report.
6
6
  */
7
- export declare const RULES: readonly [Rule<"thinking-floor", "floorReply", "evidence">, Rule<"tokenizer-fingerprint", "fixedText", "evidence">, Rule<"coding-tool", "probes", "probe">, Rule<"scam", "probes", "probe">, Rule<"cjk-leak", "probes", "probe">, Rule<"mux", "probes", "probe">, Rule<"foreign", "probes", "probe">, Rule<"served-model-mismatch", "probes", "probe">, Rule<"substituted", "probes", "probe">, Rule<"quorum", "probes", "probe">, Rule<"tier-self-report", "probes", "note">, Rule<"signature", "thinkingReply", "note">, Rule<"token-truth", "countTokens" | "fixedText", "note">, Rule<"envelope", "probes", "note">, Rule<"throughput", "probes", "note">, Rule<"think-leak", "probes", "note">, Rule<"wrapper-leak", "survey", "note">, Rule<"survey", "survey", "note">, Rule<"answer-fingerprint", "answerFingerprint", "note">];
7
+ export declare const RULES: readonly [Rule<"thinking-floor", "floorReply", "evidence">, Rule<"tokenizer-fingerprint", "fixedText", "evidence">, Rule<"masked-identity", "probes", "evidence">, Rule<"fake-200", "probes" | "survey", "evidence">, Rule<"coding-tool", "probes", "probe">, Rule<"scam", "probes", "probe">, Rule<"cjk-leak", "probes", "probe">, Rule<"mux", "probes", "probe">, Rule<"foreign", "probes", "probe">, Rule<"served-model-mismatch", "probes", "probe">, Rule<"substituted", "probes", "probe">, Rule<"quorum", "probes", "probe">, Rule<"tier-self-report", "probes", "note">, Rule<"signature", "thinkingReply", "note">, Rule<"token-truth", "countTokens" | "fixedText", "note">, Rule<"envelope", "probes", "note">, Rule<"throughput", "probes", "note">, Rule<"think-leak", "probes", "note">, Rule<"wrapper-leak", "survey", "note">, Rule<"mask-contradiction", "survey", "note">, Rule<"survey", "survey", "note">, Rule<"answer-fingerprint", "answerFingerprint", "note">];
8
8
  type RuleEntry = (typeof RULES)[number];
9
9
  export type RuleId = RuleEntry["id"];
10
10
  /** Rules that can decide a verdict; a UI naming every rule keys off this. */
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/rules/table.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC;;;;GAIG;AACH,eAAO,MAAM,KAAK,yyBAoBkB,CAAC;AAErC,KAAK,SAAS,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AACxC,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACrC,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,OAAO,CACjC,SAAS,EACT;IAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAA;CAAE,CAChC,CAAC,IAAI,CAAC,CAAC;AAER,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EAGlC,CAAC;AAEnB,eAAO,MAAM,oBAAoB,YAC/B,SAAS,EACT,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,CACH,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,0EAA0E;AAC1E,eAAO,MAAM,eAAe;4BACX,aAAa;mBACtB,MAAM;yBACA,UAAU;sBACb,SAAS;;oBAEX,QAAQ;CAC0D,CAAC"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/rules/table.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpC;;;;GAIG;AACH,eAAO,MAAM,KAAK,y7BAuBkB,CAAC;AAErC,KAAK,SAAS,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AACxC,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACrC,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,OAAO,CACjC,SAAS,EACT;IAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAA;CAAE,CAChC,CAAC,IAAI,CAAC,CAAC;AAER,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EAGlC,CAAC;AAEnB,eAAO,MAAM,oBAAoB,YAC/B,SAAS,EACT,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,CACH,CAAC;AACX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,0EAA0E;AAC1E,eAAO,MAAM,eAAe;4BACX,aAAa;mBACtB,MAAM;yBACA,UAAU;sBACb,SAAS;;oBAEX,QAAQ;CAC0D,CAAC"}
@@ -4,6 +4,9 @@ import { signatureRule } from "./thinking-signature";
4
4
  import { surveyRule } from "./survey";
5
5
  import { answerFingerprintRule } from "./answer-fingerprint";
6
6
  import { thinkLeakRule } from "./think-leak";
7
+ import { maskedIdentityRule } from "./masked-identity";
8
+ import { maskContradictionRule } from "./mask-contradiction";
9
+ import { fake200Rule } from "./fake-200";
7
10
  import { wrapperLeakRule } from "./wrapper-leak";
8
11
  import { thinkingFloorRule } from "./thinking-floor";
9
12
  import { throughputRule } from "./throughput";
@@ -17,6 +20,8 @@ import { tokenizerFingerprintRule } from "./tokenizer-fingerprint";
17
20
  export const RULES = [
18
21
  thinkingFloorRule,
19
22
  tokenizerFingerprintRule,
23
+ maskedIdentityRule,
24
+ fake200Rule,
20
25
  codingToolRule,
21
26
  scamRule,
22
27
  cjkLeakRule,
@@ -32,6 +37,7 @@ export const RULES = [
32
37
  throughputRule,
33
38
  thinkLeakRule,
34
39
  wrapperLeakRule,
40
+ maskContradictionRule,
35
41
  surveyRule,
36
42
  answerFingerprintRule,
37
43
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/rules/table.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,cAAc,EACd,WAAW,EACX,OAAO,EACP,UAAU,EACV,QAAQ,EACR,uBAAuB,EACvB,eAAe,EACf,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAGnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,iBAAiB;IACjB,wBAAwB;IACxB,cAAc;IACd,QAAQ;IACR,WAAW;IACX,OAAO;IACP,WAAW;IACX,uBAAuB;IACvB,eAAe;IACf,UAAU;IACV,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,YAAY;IACZ,cAAc;IACd,aAAa;IACb,eAAe;IACf,UAAU;IACV,qBAAqB;CACa,CAAC;AAUrC,MAAM,CAAC,MAAM,eAAe,GAA6B,KAAK,CAAC,MAAM,CACnE,CAAC,CAAC,EAA4D,EAAE,CAC9D,CAAC,CAAC,KAAK,KAAK,MAAM,CACrB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnB,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS;IACT,WAAW;IACX,YAAY;IACZ,WAAW;IACX,WAAW;CACH,CAAC;AAGX,0EAA0E;AAC1E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,aAAa,EAAE,aAAa;IAC5B,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,IAAI;IAClB,KAAK,EAAE,QAAQ;CAC0D,CAAC"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/rules/table.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,cAAc,EACd,WAAW,EACX,OAAO,EACP,UAAU,EACV,QAAQ,EACR,uBAAuB,EACvB,eAAe,EACf,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAGnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,iBAAiB;IACjB,wBAAwB;IACxB,kBAAkB;IAClB,WAAW;IACX,cAAc;IACd,QAAQ;IACR,WAAW;IACX,OAAO;IACP,WAAW;IACX,uBAAuB;IACvB,eAAe;IACf,UAAU;IACV,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,YAAY;IACZ,cAAc;IACd,aAAa;IACb,eAAe;IACf,qBAAqB;IACrB,UAAU;IACV,qBAAqB;CACa,CAAC;AAUrC,MAAM,CAAC,MAAM,eAAe,GAA6B,KAAK,CAAC,MAAM,CACnE,CAAC,CAAC,EAA4D,EAAE,CAC9D,CAAC,CAAC,KAAK,KAAK,MAAM,CACrB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEnB,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,SAAS;IACT,WAAW;IACX,YAAY;IACZ,WAAW;IACX,WAAW;CACH,CAAC;AAGX,0EAA0E;AAC1E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,aAAa,EAAE,aAAa;IAC5B,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,IAAI;IAClB,KAAK,EAAE,QAAQ;CAC0D,CAAC"}
package/dist/types.d.ts CHANGED
@@ -6,7 +6,7 @@ import type { RuleId } from "./rules/table";
6
6
  import type { TransportFn, TransportMode } from "./transport";
7
7
  import type { MakerId } from "./makers/table";
8
8
  import type { VendorId } from "./vendors/table";
9
- import type { BuiltRequest, ProbeUsage } from "./vendors/types";
9
+ import type { BuiltRequest, ProbeUsage, ReasoningUsage } from "./vendors/types";
10
10
  import type { TierSignatures } from "./rules/tokenizer-fingerprint";
11
11
  export type { ProbeUsage, ProbeLabel, ProbeSignal, SurveyLabel, FingerprintLabel, TransportMode, VendorId, RuleId, };
12
12
  export type VerifyVerdict = "genuine" | "suspicious" | "unverified";
@@ -23,6 +23,12 @@ export type ProbeOutcome = {
23
23
  usage: ProbeUsage | null;
24
24
  detectedModel: string | null;
25
25
  reason: string | null;
26
+ /** Why generation stopped, as the wire spells it; null with no answer. */
27
+ finishReason: string | null;
28
+ /** Hidden and visible output counts when the wire reports them. */
29
+ reasoning: ReasoningUsage | null;
30
+ /** The error body of a refused request, capped; null when it answered. */
31
+ errorBody: string | null;
26
32
  };
27
33
  /** One request of a probe, survey question or fingerprint cell, including the nonce retries; for a caller's own log. */
28
34
  export type ProbeAttempt = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ declare function countTokens(req: CountRequest, ctx: WireCtx): {
13
13
  };
14
14
  };
15
15
  declare function text(data: unknown): string | null;
16
+ declare function reasoningText(data: unknown): string | null;
16
17
  declare function meta(data: unknown): ProbeMeta;
17
18
  declare function thinkingBlock(data: unknown): ThinkingBlockRead | null;
18
19
  declare function countedTokens(data: unknown): number | null;
@@ -30,6 +31,7 @@ export declare const anthropicVendor: {
30
31
  readonly meta: typeof meta;
31
32
  readonly thinkingBlock: typeof thinkingBlock;
32
33
  readonly countedTokens: typeof countedTokens;
34
+ readonly reasoningText: typeof reasoningText;
33
35
  };
34
36
  readonly defaultMaker: "anthropic";
35
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/vendors/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACb,MAAM,SAAS,CAAC;AAwCjB,iBAAS,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO;;;;EAwB3C;AAED,iBAAS,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO;IAEhD,GAAG;IACH,OAAO;IACP,IAAI;QAAI,KAAK;QAAa,QAAQ;;EAErC;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQ1C;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAgBtC;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,IAAI,CAU9D;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGnD;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;CAQ1B,CAAC"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/vendors/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACb,MAAM,SAAS,CAAC;AAyCjB,iBAAS,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO;;;;EAwB3C;AAED,iBAAS,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO;IAEhD,GAAG;IACH,OAAO;IACP,IAAI;QAAI,KAAK;QAAa,QAAQ;;EAErC;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQ1C;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAKnD;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAiBtC;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,GAAG,IAAI,CAU9D;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGnD;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;CAQ1B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { intOf, rec } from "../internal/utils";
1
+ import { intOf, rec, strOf } from "../internal/utils";
2
2
  import { normalizeBaseUrl } from "./base-url";
3
3
  import { defineVendor, } from "./types";
4
4
  // Anthropic refuses a browser preflight unless the caller opts in with this
@@ -65,6 +65,12 @@ function text(data) {
65
65
  .join(" ")
66
66
  .toLowerCase();
67
67
  }
68
+ function reasoningText(data) {
69
+ const thoughts = blocksOf(data)
70
+ .filter((b) => b.type === "thinking" && typeof b.thinking === "string")
71
+ .map((b) => b.thinking ?? "");
72
+ return thoughts.length > 0 ? thoughts.join(" ").toLowerCase() : null;
73
+ }
68
74
  function meta(data) {
69
75
  const d = rec(data) ?? {};
70
76
  const u = d.usage;
@@ -79,6 +85,7 @@ function meta(data) {
79
85
  total: prompt !== null && completion !== null ? prompt + completion : null,
80
86
  }
81
87
  : null,
88
+ finishReason: strOf(d.stop_reason),
82
89
  };
83
90
  }
84
91
  function thinkingBlock(data) {
@@ -103,7 +110,7 @@ export const anthropicVendor = defineVendor({
103
110
  envelope: "anthropic",
104
111
  fallbackWires: ["openai"],
105
112
  ops: { chat, countTokens },
106
- read: { text, meta, thinkingBlock, countedTokens },
113
+ read: { text, meta, thinkingBlock, countedTokens, reasoningText },
107
114
  defaultMaker: "anthropic",
108
115
  });
109
116
  //# sourceMappingURL=anthropic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/vendors/anthropic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/vendors/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EACL,YAAY,GAMb,MAAM,SAAS,CAAC;AAkBjB,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,4DAA4D;AAC5D,MAAM,qBAAqB,GAAG,2CAA2C,CAAC;AAE1E,SAAS,OAAO,CAAC,GAAY;IAC3B,MAAM,CAAC,GAA2B;QAChC,cAAc,EAAE,kBAAkB;QAClC,WAAW,EAAE,GAAG,CAAC,MAAM;QACvB,mBAAmB,EAAE,YAAY;KAClC,CAAC;IACF,IAAI,GAAG,CAAC,MAAM;QAAE,CAAC,CAAC,qBAAqB,CAAC,GAAG,MAAM,CAAC;IAClD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAkB,EAAE;IACjD,MAAM,CAAC,GAAsB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7B,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;QAC1E,CAAC,CAAC,EAAE,CAAC;AACT,CAAC,CAAC;AAEF,SAAS,IAAI,CAAC,GAAgB,EAAE,GAAY;IAC1C,MAAM,IAAI,GAA4B;QACpC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,UAAU,EAAE,GAAG,CAAC,SAAS;QACzB,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC;IACF,kEAAkE;IAClE,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,QAAQ;QAChD,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC;IACxC,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;IACtE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,CAAC;YACd,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU;gBAC9B,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE;gBAC/D,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QAClD,mEAAmE;QACnE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU;YAClC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAChD,CAAC;IACD,OAAO;QACL,GAAG,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc;QACnD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;QACrB,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,GAAiB,EAAE,GAAY;IAClD,OAAO;QACL,GAAG,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,2BAA2B;QAChE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;QACrB,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,IAAa;IACzB,MAAM,CAAC,GAAsB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,QAAQ,CAAC,IAAI,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;SACxB,IAAI,CAAC,GAAG,CAAC;SACT,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;SACtE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAChC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC;AAED,SAAS,IAAI,CAAC,IAAa;IACzB,MAAM,CAAC,GAAsB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IAC3C,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QAC3D,KAAK,EAAE,CAAC;YACN,CAAC,CAAC;gBACE,MAAM;gBACN,UAAU;gBACV,KAAK,EACH,MAAM,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI;aACtE;YACH,CAAC,CAAC,IAAI;QACR,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB;YAAE,SAAS;QACtE,OAAO;YACL,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YAC7D,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC9D,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,IAAa;IAClC,MAAM,CAAC,GAAsB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7C,OAAO,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;IAC1C,EAAE,EAAE,WAAW;IACf,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,WAAW;IACrB,aAAa,EAAE,CAAC,QAAQ,CAAC;IACzB,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;IAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE;IACjE,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC"}
@@ -19,6 +19,7 @@ declare function chat(req: ChatRequest, ctx: WireCtx): {
19
19
  };
20
20
  };
21
21
  declare function text(data: unknown): string | null;
22
+ declare function reasoningText(data: unknown): string | null;
22
23
  declare function meta(data: unknown): ProbeMeta;
23
24
  declare function reasoningUsage(data: unknown): ReasoningUsage | null;
24
25
  export declare const geminiVendor: {
@@ -33,6 +34,7 @@ export declare const geminiVendor: {
33
34
  readonly text: typeof text;
34
35
  readonly meta: typeof meta;
35
36
  readonly reasoningUsage: typeof reasoningUsage;
37
+ readonly reasoningText: typeof reasoningText;
36
38
  };
37
39
  readonly defaultMaker: "google";
38
40
  };
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/vendors/gemini.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,OAAO,EACb,MAAM,SAAS,CAAC;AAiBjB,iBAAS,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO;;;QAItC,cAAc;QACd,gBAAgB;;;;;;;;;;;;;;EAkBrB;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAS1C;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAatC;AAED,iBAAS,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAQ5D;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;CAQvB,CAAC"}
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/vendors/gemini.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,OAAO,EACb,MAAM,SAAS,CAAC;AAoBjB,iBAAS,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO;;;QAItC,cAAc;QACd,gBAAgB;;;;;;;;;;;;;;EAkBrB;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAS1C;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAMnD;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CActC;AAED,iBAAS,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAQ5D;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;CAQvB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { intOf, rec } from "../internal/utils";
1
+ import { intOf, rec, strOf } from "../internal/utils";
2
2
  import { normalizeBaseUrl } from "./base-url";
3
3
  import { defineVendor, } from "./types";
4
4
  /** A thinking budget would otherwise eat the whole output cap. */
@@ -38,6 +38,13 @@ function text(data) {
38
38
  .join(" ")
39
39
  .toLowerCase();
40
40
  }
41
+ function reasoningText(data) {
42
+ const d = rec(data) ?? {};
43
+ const thoughts = (d.candidates?.[0]?.content?.parts ?? [])
44
+ .filter((p) => p.thought === true && typeof p.text === "string")
45
+ .map((p) => p.text ?? "");
46
+ return thoughts.length > 0 ? thoughts.join(" ").toLowerCase() : null;
47
+ }
41
48
  function meta(data) {
42
49
  const d = rec(data) ?? {};
43
50
  const u = d.usageMetadata;
@@ -50,6 +57,7 @@ function meta(data) {
50
57
  total: intOf(u.totalTokenCount),
51
58
  }
52
59
  : null,
60
+ finishReason: strOf(d.candidates?.[0]?.finishReason),
53
61
  };
54
62
  }
55
63
  function reasoningUsage(data) {
@@ -68,7 +76,7 @@ export const geminiVendor = defineVendor({
68
76
  envelope: "gemini",
69
77
  fallbackWires: ["openai"],
70
78
  ops: { chat },
71
- read: { text, meta, reasoningUsage },
79
+ read: { text, meta, reasoningUsage, reasoningText },
72
80
  defaultMaker: "google",
73
81
  });
74
82
  //# sourceMappingURL=gemini.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/vendors/gemini.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/vendors/gemini.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ declare function chat(req: ChatRequest, ctx: WireCtx): {
24
24
  };
25
25
  };
26
26
  declare function text(data: unknown): string | null;
27
+ declare function reasoningText(data: unknown): string | null;
27
28
  declare function meta(data: unknown): ProbeMeta;
28
29
  declare function reasoningUsage(data: unknown): ReasoningUsage | null;
29
30
  export declare const openaiVendor: {
@@ -38,6 +39,7 @@ export declare const openaiVendor: {
38
39
  readonly text: typeof text;
39
40
  readonly meta: typeof meta;
40
41
  readonly reasoningUsage: typeof reasoningUsage;
42
+ readonly reasoningText: typeof reasoningText;
41
43
  };
42
44
  readonly defaultMaker: "openai";
43
45
  };
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/vendors/openai.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,OAAO,EACb,MAAM,SAAS,CAAC;AAkBjB,iBAAS,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO;IAaxC,GAAG;IACH,OAAO;QACL,cAAc;QACd,aAAa;;IAEf,IAAI;;;;;;;;;;;;;;;;;EASP;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAY1C;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAatC;AAED,iBAAS,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAW5D;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;CAQvB,CAAC"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/vendors/openai.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,OAAO,EACb,MAAM,SAAS,CAAC;AAsBjB,iBAAS,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO;IAaxC,GAAG;IACH,OAAO;QACL,cAAc;QACd,aAAa;;IAEf,IAAI;;;;;;;;;;;;;;;;;EASP;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAY1C;AAID,iBAAS,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAWnD;AAED,iBAAS,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CActC;AAED,iBAAS,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAW5D;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;CAQvB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { intOf, rec } from "../internal/utils";
1
+ import { intOf, rec, strOf } from "../internal/utils";
2
2
  import { normalizeBaseUrl } from "./base-url";
3
3
  import { defineVendor, } from "./types";
4
4
  function chat(req, ctx) {
@@ -43,6 +43,23 @@ function text(data) {
43
43
  .toLowerCase();
44
44
  return null;
45
45
  }
46
+ // Relays spell visible reasoning three ways: DeepSeek's reasoning_content,
47
+ // OpenRouter's reasoning string, and its reasoning_details array.
48
+ function reasoningText(data) {
49
+ const d = rec(data) ?? {};
50
+ const m = d.choices?.[0]?.message;
51
+ if (!m)
52
+ return null;
53
+ const parts = [];
54
+ for (const v of [m.reasoning_content, m.reasoning])
55
+ if (typeof v === "string" && v.trim())
56
+ parts.push(v);
57
+ for (const r of m.reasoning_details ?? [])
58
+ for (const v of [r?.text, r?.summary])
59
+ if (typeof v === "string" && v.trim())
60
+ parts.push(v);
61
+ return parts.length > 0 ? parts.join(" ").toLowerCase() : null;
62
+ }
46
63
  function meta(data) {
47
64
  const d = rec(data) ?? {};
48
65
  const u = d.usage;
@@ -55,6 +72,7 @@ function meta(data) {
55
72
  total: intOf(u.total_tokens),
56
73
  }
57
74
  : null,
75
+ finishReason: strOf(d.choices?.[0]?.finish_reason),
58
76
  };
59
77
  }
60
78
  function reasoningUsage(data) {
@@ -74,7 +92,7 @@ export const openaiVendor = defineVendor({
74
92
  envelope: "openai",
75
93
  fallbackWires: [],
76
94
  ops: { chat },
77
- read: { text, meta, reasoningUsage },
95
+ read: { text, meta, reasoningUsage, reasoningText },
78
96
  defaultMaker: "openai",
79
97
  });
80
98
  //# sourceMappingURL=openai.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/vendors/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/vendors/openai.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ export declare const VENDORS: readonly [{
24
24
  readonly meta: (data: unknown) => import("./types").ProbeMeta;
25
25
  readonly thinkingBlock: (data: unknown) => import("./types").ThinkingBlockRead | null;
26
26
  readonly countedTokens: (data: unknown) => number | null;
27
+ readonly reasoningText: (data: unknown) => string | null;
27
28
  };
28
29
  readonly defaultMaker: "anthropic";
29
30
  }, {
@@ -61,6 +62,7 @@ export declare const VENDORS: readonly [{
61
62
  readonly text: (data: unknown) => string | null;
62
63
  readonly meta: (data: unknown) => import("./types").ProbeMeta;
63
64
  readonly reasoningUsage: (data: unknown) => import("./types").ReasoningUsage | null;
65
+ readonly reasoningText: (data: unknown) => string | null;
64
66
  };
65
67
  readonly defaultMaker: "openai";
66
68
  }, {
@@ -93,6 +95,7 @@ export declare const VENDORS: readonly [{
93
95
  readonly text: (data: unknown) => string | null;
94
96
  readonly meta: (data: unknown) => import("./types").ProbeMeta;
95
97
  readonly reasoningUsage: (data: unknown) => import("./types").ReasoningUsage | null;
98
+ readonly reasoningText: (data: unknown) => string | null;
96
99
  };
97
100
  readonly defaultMaker: "google";
98
101
  }];
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/vendors/table.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIyB,CAAC;AAE9C,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAMtD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EACxC,OAAO,EAAE,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,EACpC,EAAE,EAAE,MAAM,GACT,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAE9B"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/vendors/table.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIyB,CAAC;AAE9C,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAMtD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EACxC,OAAO,EAAE,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,EACpC,EAAE,EAAE,MAAM,GACT,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAE9B"}
@@ -44,6 +44,8 @@ export type BuiltRequest = {
44
44
  export type ProbeMeta = {
45
45
  detectedModel: string | null;
46
46
  usage: ProbeUsage | null;
47
+ /** Why generation stopped, as the wire spells it (`stop`, `length`, `end_turn`, `STOP`). */
48
+ finishReason: string | null;
47
49
  };
48
50
  export type ThinkingBlockRead = {
49
51
  /** The raw block, for replay. */
@@ -76,6 +78,9 @@ export type VendorAdapter<Id extends string = string> = {
76
78
  meta(data: unknown): ProbeMeta;
77
79
  thinkingBlock?(data: unknown): ThinkingBlockRead | null;
78
80
  reasoningUsage?(data: unknown): ReasoningUsage | null;
81
+ /** Lowercased visible reasoning (reasoning_content, thinking blocks,
82
+ * thought parts); null when the reply carries none. */
83
+ reasoningText?(data: unknown): string | null;
79
84
  countedTokens?(data: unknown): number | null;
80
85
  };
81
86
  /** Maker whose vocabulary judges a model the facts table does not know. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vendors/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vendors/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vendors/types.ts"],"names":[],"mappings":"AAgGA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAgC,MAAS,EAAK,EAAE,CAC1E,MAAM,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vendors/types.ts"],"names":[],"mappings":"AAqGA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAgC,MAAS,EAAK,EAAE,CAC1E,MAAM,CAAC"}