ai-model-verifier 3.7.1 → 3.9.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.
- package/README.md +7 -2
- package/dist/engine/context.d.ts +1 -0
- package/dist/engine/context.d.ts.map +1 -1
- package/dist/engine/context.js +1 -0
- package/dist/engine/context.js.map +1 -1
- package/dist/engine/evidence.d.ts +12 -1
- package/dist/engine/evidence.d.ts.map +1 -1
- package/dist/engine/evidence.js +36 -1
- package/dist/engine/evidence.js.map +1 -1
- package/dist/models/facts.d.ts +6 -1
- package/dist/models/facts.d.ts.map +1 -1
- package/dist/models/facts.js +7 -1
- package/dist/models/facts.js.map +1 -1
- package/dist/models/index.d.ts +2 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +1 -0
- package/dist/models/index.js.map +1 -1
- package/dist/models/tokenizers.d.ts +36 -0
- package/dist/models/tokenizers.d.ts.map +1 -0
- package/dist/models/tokenizers.js +60 -0
- package/dist/models/tokenizers.js.map +1 -0
- package/dist/probes/prompts.d.ts +21 -0
- package/dist/probes/prompts.d.ts.map +1 -1
- package/dist/probes/prompts.js +25 -0
- package/dist/probes/prompts.js.map +1 -1
- package/dist/registry.d.ts +1 -1
- package/dist/rules/index.d.ts +4 -0
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +2 -0
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/table.d.ts +1 -1
- package/dist/rules/table.d.ts.map +1 -1
- package/dist/rules/table.js +4 -0
- package/dist/rules/table.js.map +1 -1
- package/dist/rules/thinking-honored.d.ts +36 -0
- package/dist/rules/thinking-honored.d.ts.map +1 -0
- package/dist/rules/thinking-honored.js +77 -0
- package/dist/rules/thinking-honored.js.map +1 -0
- package/dist/rules/tokenizer-family.d.ts +33 -0
- package/dist/rules/tokenizer-family.d.ts.map +1 -0
- package/dist/rules/tokenizer-family.js +89 -0
- package/dist/rules/tokenizer-family.js.map +1 -0
- package/dist/rules/types.d.ts +4 -0
- package/dist/rules/types.d.ts.map +1 -1
- package/dist/rules/types.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/vendors/gemini.d.ts +4 -0
- package/dist/vendors/gemini.d.ts.map +1 -1
- package/dist/vendors/gemini.js +8 -0
- package/dist/vendors/gemini.js.map +1 -1
- package/dist/vendors/openai.d.ts +2 -0
- package/dist/vendors/openai.d.ts.map +1 -1
- package/dist/vendors/openai.js +1 -0
- package/dist/vendors/openai.js.map +1 -1
- package/dist/vendors/table.d.ts +6 -0
- package/dist/vendors/table.d.ts.map +1 -1
- package/dist/vendors/types.d.ts +2 -0
- package/dist/vendors/types.d.ts.map +1 -1
- package/dist/vendors/types.js.map +1 -1
- package/dist/verify.d.ts +2 -2
- package/dist/verify.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -90,9 +90,14 @@ const { verify } = createVerifier({
|
|
|
90
90
|
## What it detects
|
|
91
91
|
|
|
92
92
|
Verdict rules, in precedence order: a must-think model answering with no
|
|
93
|
-
reasoning tokens (`thinking-floor`, opt-in); a
|
|
93
|
+
reasoning tokens (`thinking-floor`, opt-in); a model that thinks only when asked
|
|
94
|
+
answering a high-effort request with too little thought (`thinking-honored`,
|
|
95
|
+
opt-in with `thinkingFloor`); a tokenizer fingerprint matching a
|
|
94
96
|
cheaper tier under a caller-supplied calibration (`tokenizer-fingerprint`,
|
|
95
|
-
opt-in; ships no table, see the rule's note);
|
|
97
|
+
opt-in; ships no table, see the rule's note); input-token deltas on four script
|
|
98
|
+
runs naming another maker's vocabulary (`tokenizer-family`, opt-in with
|
|
99
|
+
`tokenizerFamily`; a persona prompt cannot change how the backend splits text);
|
|
100
|
+
`coding-tool` refusals (Kiro or
|
|
96
101
|
Amazon Q wearing a Claude badge); scam pages; CJK language leaks from a
|
|
97
102
|
substituted Chinese model (skipped for makers that train on Chinese);
|
|
98
103
|
response-mixing proxies (`mux`); another maker named as the maker, judged by the
|
package/dist/engine/context.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,OAAO,EACR,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE;QAAE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,oBAAoB,EAAE;QAAE,UAAU,EAAE,cAAc,GAAG,SAAS,CAAA;KAAE,GAAG,IAAI,CAAC;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpE,CAAC;AAEF,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,OAAO,EACR,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE;QAAE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,oBAAoB,EAAE;QAAE,UAAU,EAAE,cAAc,GAAG,SAAS,CAAA;KAAE,GAAG,IAAI,CAAC;IACxE,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpE,CAAC;AAEF,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAEjD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CA0CxE;AAED,gDAAgD;AAChD,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACrB,eAAe,EAAE,CAAC,CAAC;IACnB,qFAAqF;IACrF,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACvB;;;;OAIG;IACH,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,WAAW,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,OAAO,QAAS,MAAM,KAAG,OAKpC,CAAC;AAEH,0DAA0D;AAC1D,wBAAgB,eAAe,CAC7B,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAGT;AAED,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,eAAe,CAAC,CAQ1B;AAED,eAAO,MAAM,SAAS,QACf,MAAM,OACN,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,KAC9B,YAC4D,CAAC;AAEhE,eAAO,MAAM,IAAI,QAAS,MAAM,OAAO,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,6BAC7B,CAAC"}
|
package/dist/engine/context.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ScriptVariant } from "../probes/prompts";
|
|
1
2
|
import type { TransportResult } from "../transport";
|
|
2
3
|
import { type RunCtx } from "./context";
|
|
3
4
|
import { type ProbeEval } from "./probe-runner";
|
|
@@ -9,6 +10,10 @@ export type FixedTextEvidence = {
|
|
|
9
10
|
/** The script-mixed text every vocabulary splits differently. */
|
|
10
11
|
diverse: TransportResult;
|
|
11
12
|
};
|
|
13
|
+
export type ScriptTokensEvidence = {
|
|
14
|
+
base: TransportResult;
|
|
15
|
+
variants: Record<ScriptVariant, TransportResult>;
|
|
16
|
+
};
|
|
12
17
|
export type ThinkingReplyEvidence = {
|
|
13
18
|
res: TransportResult;
|
|
14
19
|
/** Only when the strict replay ran: the endpoint accepted the block back. */
|
|
@@ -26,24 +31,30 @@ export type EvidenceBag = {
|
|
|
26
31
|
/** One-word answer counts at temperature 1, for a caller to accumulate. */
|
|
27
32
|
answerFingerprint: FingerprintSample;
|
|
28
33
|
fixedText: FixedTextEvidence;
|
|
34
|
+
/** The anchor and the four script runs the tokenizer family is read from. */
|
|
35
|
+
scriptTokens: ScriptTokensEvidence;
|
|
29
36
|
/** null when the wire has no count endpoint or the short reply had no usage. */
|
|
30
37
|
countTokens: TransportResult | null;
|
|
31
38
|
/** null when the model has no thinking mode to ask for. */
|
|
32
39
|
thinkingReply: ThinkingReplyEvidence;
|
|
33
40
|
/** null when the model may legitimately answer without thinking. */
|
|
34
41
|
floorReply: TransportResult | null;
|
|
42
|
+
/** null unless the model thinks only when asked: the reply to a high-effort request. */
|
|
43
|
+
askedThinkingReply: TransportResult | null;
|
|
35
44
|
};
|
|
36
45
|
export type EvidenceKey = keyof EvidenceBag;
|
|
37
46
|
/** Collection order when several keys are needed: probes first, then the extras. */
|
|
38
|
-
export declare const EVIDENCE_ORDER: readonly ["probes", "survey", "answerFingerprint", "thinkingReply", "fixedText", "countTokens", "floorReply"];
|
|
47
|
+
export declare const EVIDENCE_ORDER: readonly ["probes", "survey", "answerFingerprint", "thinkingReply", "fixedText", "scriptTokens", "countTokens", "floorReply", "askedThinkingReply"];
|
|
39
48
|
export declare class EvidenceStore {
|
|
40
49
|
private readonly probes;
|
|
41
50
|
private readonly survey;
|
|
42
51
|
private readonly answerFingerprint;
|
|
43
52
|
private readonly fixedText;
|
|
53
|
+
private readonly scriptTokens;
|
|
44
54
|
private readonly countTokens;
|
|
45
55
|
private readonly thinkingReply;
|
|
46
56
|
private readonly floorReply;
|
|
57
|
+
private readonly askedThinkingReply;
|
|
47
58
|
constructor(ctx: RunCtx);
|
|
48
59
|
get<K extends EvidenceKey>(key: K): Promise<EvidenceBag[K]>;
|
|
49
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/engine/evidence.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/engine/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAA2B,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAQrC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,eAAe,CAAC;IACtB,iEAAiE;IACjE,OAAO,EAAE,eAAe,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,eAAe,CAAC;IACrB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,IAAI,CAAC;AAET;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,iDAAiD;IACjD,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,2EAA2E;IAC3E,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,6EAA6E;IAC7E,YAAY,EAAE,oBAAoB,CAAC;IACnC,gFAAgF;IAChF,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,2DAA2D;IAC3D,aAAa,EAAE,qBAAqB,CAAC;IACrC,oEAAoE;IACpE,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IACnC,wFAAwF;IACxF,kBAAkB,EAAE,eAAe,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC;AAE5C,oFAAoF;AACpF,eAAO,MAAM,cAAc,qJAUgB,CAAC;AA6G5C,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmC;IACrE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IACnE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IACpE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuC;IACrE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwC;IACnE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwC;IAE3E,YAAY,GAAG,EAAE,MAAM,EAUtB;IAED,GAAG,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAuB7D"}
|
package/dist/engine/evidence.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { COUNT_PROBE_MAX_TOKENS, DIVERSE_PROMPT, FLOOR_PROMPT, LONG_PROMPT, SHORT_PROMPT, SIGNATURE_PROMPT, } from "../probes/prompts";
|
|
1
|
+
import { COUNT_PROBE_MAX_TOKENS, DIVERSE_PROMPT, ASKED_THINKING_PROMPT, FLOOR_PROMPT, LONG_PROMPT, SHORT_PROMPT, SIGNATURE_PROMPT, SCRIPT_BASE_PROMPT, SCRIPT_VARIANTS, } from "../probes/prompts";
|
|
2
2
|
import { callWire, chat, wireCtx } from "./context";
|
|
3
3
|
import { collectProbes } from "./probe-runner";
|
|
4
4
|
import { collectSurvey } from "./survey-runner";
|
|
@@ -15,8 +15,10 @@ export const EVIDENCE_ORDER = [
|
|
|
15
15
|
"answerFingerprint",
|
|
16
16
|
"thinkingReply",
|
|
17
17
|
"fixedText",
|
|
18
|
+
"scriptTokens",
|
|
18
19
|
"countTokens",
|
|
19
20
|
"floorReply",
|
|
21
|
+
"askedThinkingReply",
|
|
20
22
|
];
|
|
21
23
|
const ok = (r) => r.status !== null && r.status < 400;
|
|
22
24
|
async function collectFixedText(ctx) {
|
|
@@ -31,6 +33,22 @@ async function collectFixedText(ctx) {
|
|
|
31
33
|
]);
|
|
32
34
|
return { short, long, diverse };
|
|
33
35
|
}
|
|
36
|
+
async function collectScriptTokens(ctx) {
|
|
37
|
+
const ask = (prompt) => chat(ctx, {
|
|
38
|
+
maxTokens: COUNT_PROBE_MAX_TOKENS,
|
|
39
|
+
messages: [{ role: "user", content: prompt }],
|
|
40
|
+
});
|
|
41
|
+
// The anchor first: a relay that caches prefixes then bills every run the same way.
|
|
42
|
+
const base = await ask(SCRIPT_BASE_PROMPT);
|
|
43
|
+
const run = (k) => ask(SCRIPT_BASE_PROMPT + SCRIPT_VARIANTS[k]);
|
|
44
|
+
const [digits, cjk, spaces, code] = await Promise.all([
|
|
45
|
+
run("digits"),
|
|
46
|
+
run("cjk"),
|
|
47
|
+
run("spaces"),
|
|
48
|
+
run("code"),
|
|
49
|
+
]);
|
|
50
|
+
return { base, variants: { digits, cjk, spaces, code } };
|
|
51
|
+
}
|
|
34
52
|
async function collectCountTokens(ctx, store) {
|
|
35
53
|
const count = ctx.wire.ops.countTokens;
|
|
36
54
|
if (!count)
|
|
@@ -78,6 +96,15 @@ async function collectFloorReply(ctx) {
|
|
|
78
96
|
messages: [{ role: "user", content: FLOOR_PROMPT }],
|
|
79
97
|
});
|
|
80
98
|
}
|
|
99
|
+
async function collectAskedThinkingReply(ctx) {
|
|
100
|
+
if (!ctx.facts.thinksWhenAsked)
|
|
101
|
+
return null;
|
|
102
|
+
return chat(ctx, {
|
|
103
|
+
maxTokens: FLOOR_MAX_TOKENS,
|
|
104
|
+
reasoningEffort: "high",
|
|
105
|
+
messages: [{ role: "user", content: ASKED_THINKING_PROMPT }],
|
|
106
|
+
});
|
|
107
|
+
}
|
|
81
108
|
const memo = (fn) => {
|
|
82
109
|
let p;
|
|
83
110
|
return () => (p ??= fn());
|
|
@@ -87,17 +114,21 @@ export class EvidenceStore {
|
|
|
87
114
|
survey;
|
|
88
115
|
answerFingerprint;
|
|
89
116
|
fixedText;
|
|
117
|
+
scriptTokens;
|
|
90
118
|
countTokens;
|
|
91
119
|
thinkingReply;
|
|
92
120
|
floorReply;
|
|
121
|
+
askedThinkingReply;
|
|
93
122
|
constructor(ctx) {
|
|
94
123
|
this.probes = memo(() => collectProbes(ctx));
|
|
95
124
|
this.survey = memo(() => collectSurvey(ctx));
|
|
96
125
|
this.answerFingerprint = memo(() => collectAnswerFingerprint(ctx));
|
|
97
126
|
this.fixedText = memo(() => collectFixedText(ctx));
|
|
127
|
+
this.scriptTokens = memo(() => collectScriptTokens(ctx));
|
|
98
128
|
this.countTokens = memo(() => collectCountTokens(ctx, this));
|
|
99
129
|
this.thinkingReply = memo(() => collectThinkingReply(ctx));
|
|
100
130
|
this.floorReply = memo(() => collectFloorReply(ctx));
|
|
131
|
+
this.askedThinkingReply = memo(() => collectAskedThinkingReply(ctx));
|
|
101
132
|
}
|
|
102
133
|
get(key) {
|
|
103
134
|
switch (key) {
|
|
@@ -109,12 +140,16 @@ export class EvidenceStore {
|
|
|
109
140
|
return this.answerFingerprint();
|
|
110
141
|
case "fixedText":
|
|
111
142
|
return this.fixedText();
|
|
143
|
+
case "scriptTokens":
|
|
144
|
+
return this.scriptTokens();
|
|
112
145
|
case "countTokens":
|
|
113
146
|
return this.countTokens();
|
|
114
147
|
case "thinkingReply":
|
|
115
148
|
return this.thinkingReply();
|
|
116
149
|
case "floorReply":
|
|
117
150
|
return this.floorReply();
|
|
151
|
+
case "askedThinkingReply":
|
|
152
|
+
return this.askedThinkingReply();
|
|
118
153
|
}
|
|
119
154
|
}
|
|
120
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/engine/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/engine/evidence.ts"],"names":[],"mappings":"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"}
|
package/dist/models/facts.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export type ModelFacts<M extends string = MakerId> = {
|
|
|
18
18
|
tokenizer: TokenizerGeneration | null;
|
|
19
19
|
/** Cannot switch reasoning off (a reply with no thought tokens is a cheaper tier). */
|
|
20
20
|
alwaysThinks: boolean;
|
|
21
|
+
/** Thinks only when asked: at high effort a reply with no thought means the effort was dropped. */
|
|
22
|
+
thinksWhenAsked: boolean;
|
|
21
23
|
/** Reasoning models need room for hidden thought before the visible answer. */
|
|
22
24
|
minOutputTokens: number | null;
|
|
23
25
|
};
|
|
@@ -45,7 +47,10 @@ export declare const MODEL_FACTS: readonly [{
|
|
|
45
47
|
readonly match: readonly ["glm-5-3*", "kimi-k2-6*", "kimi-k2-7*", "kimi-k3*", "deepseek-v4-pro*", "deepseek-v4-1-flash*", "qwen3-8-flash*"];
|
|
46
48
|
readonly alwaysThinks: true;
|
|
47
49
|
}, {
|
|
48
|
-
readonly match:
|
|
50
|
+
readonly match: "gemini-4*";
|
|
51
|
+
readonly thinksWhenAsked: true;
|
|
52
|
+
}, {
|
|
53
|
+
readonly match: readonly ["gemini-2-5*", "gemini-3*", "gemini-4*"];
|
|
49
54
|
readonly minOutputTokens: 2000;
|
|
50
55
|
}, {
|
|
51
56
|
readonly match: readonly ["glm-5*", "kimi-k2-6*", "kimi-k2-7*", "kimi-k3*", "deepseek-v4*", "minimax-m2-5*", "minimax-m2-7*", "minimax-m3*", "mimo-v2-5*", "qwen3-8*", "hy4*"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facts.d.ts","sourceRoot":"","sources":["../../src/models/facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAC5D,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,WAAW,CAAC;AAE5D,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,OAAO,IAAI;IACnD,uEAAuE;IACvE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACtC,sFAAsF;IACtF,YAAY,EAAE,OAAO,CAAC;IACtB,+EAA+E;IAC/E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,OAAO,IAAI;IACnD,oFAAoF;IACpF,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;CACnC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3B,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,UAAW,MAAM,KAAG,MACwB,CAAC;AAI1E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAMlE;AAED,eAAO,MAAM,WAAW;;uBAGV,UAAU;wBACT,WAAW;;;uBAWZ,UAAU;;oBAEb,UAAU;wBAAa,WAAW
|
|
1
|
+
{"version":3,"file":"facts.d.ts","sourceRoot":"","sources":["../../src/models/facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAC5D,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,WAAW,CAAC;AAE5D,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,OAAO,IAAI;IACnD,uEAAuE;IACvE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACtC,sFAAsF;IACtF,YAAY,EAAE,OAAO,CAAC;IACtB,mGAAmG;IACnG,eAAe,EAAE,OAAO,CAAC;IACzB,+EAA+E;IAC/E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,OAAO,IAAI;IACnD,oFAAoF;IACpF,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;CACnC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3B,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,UAAW,MAAM,KAAG,MACwB,CAAC;AAI1E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAMlE;AAED,eAAO,MAAM,WAAW;;uBAGV,UAAU;wBACT,WAAW;;;uBAWZ,UAAU;;oBAEb,UAAU;wBAAa,WAAW;;;;;;;;oBAuBlC,WAAW;;;;8BAGiD,IAAI;;;8BAiBtD,IAAI;;;8BAeJ,IAAI;EAEiB,CAAC;AAE3C,eAAO,MAAM,gBAAgB,GAAI,KAAK,CAAC,CAAC,SAAS,SAAS,UAAU,EAAE,SAC7D,CAAC,KACP,CAAU,CAAC;AAgCd,wFAAwF;AACxF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,GAC5B,UAAU,CAAC;AACd,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,EAC/B,MAAM,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAC1B,UAAU,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/models/facts.js
CHANGED
|
@@ -55,9 +55,13 @@ export const MODEL_FACTS = [
|
|
|
55
55
|
],
|
|
56
56
|
alwaysThinks: true,
|
|
57
57
|
},
|
|
58
|
+
// Gemini 4 at low or medium effort often skips thinking entirely, so only a
|
|
59
|
+
// high-effort request is evidence: Google spent 304 to 360 thought tokens on
|
|
60
|
+
// the probe, the a7 merchants that dropped the effort 0 to 59.
|
|
61
|
+
{ match: "gemini-4*", thinksWhenAsked: true },
|
|
58
62
|
// Gemini thinks before it answers over the OpenAI wire too, and a 60 token
|
|
59
63
|
// cap left a few characters of visible reply on the order book sellers.
|
|
60
|
-
{ match: ["gemini-2-5*", "gemini-3*"], minOutputTokens: 2000 },
|
|
64
|
+
{ match: ["gemini-2-5*", "gemini-3*", "gemini-4*"], minOutputTokens: 2000 },
|
|
61
65
|
// Open-weight thinkers answer after a hidden reasoning pass on every relay
|
|
62
66
|
// that leaves it on; a 60 token cap returned a bracket and nothing else.
|
|
63
67
|
{
|
|
@@ -98,6 +102,7 @@ const DEFAULTS = {
|
|
|
98
102
|
thinking: "none",
|
|
99
103
|
tokenizer: null,
|
|
100
104
|
alwaysThinks: false,
|
|
105
|
+
thinksWhenAsked: false,
|
|
101
106
|
minOutputTokens: null,
|
|
102
107
|
};
|
|
103
108
|
const FACT_KEYS = [
|
|
@@ -105,6 +110,7 @@ const FACT_KEYS = [
|
|
|
105
110
|
"thinking",
|
|
106
111
|
"tokenizer",
|
|
107
112
|
"alwaysThinks",
|
|
113
|
+
"thinksWhenAsked",
|
|
108
114
|
"minOutputTokens",
|
|
109
115
|
];
|
|
110
116
|
function take(out, entry, key, seen) {
|
package/dist/models/facts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facts.js","sourceRoot":"","sources":["../../src/models/facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAgB,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"facts.js","sourceRoot":"","sources":["../../src/models/facts.ts"],"names":[],"mappings":"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"}
|
package/dist/models/index.d.ts
CHANGED
|
@@ -3,4 +3,6 @@ export type { FactsEntry, ModelFacts, ThinkingMode, TokenizerGeneration, } from
|
|
|
3
3
|
export { CURATED_MODELS, makerForModel, vendorForRow, wireForModel, } from "./catalog";
|
|
4
4
|
export { detectSubstitution, modelsMatch } from "./substitution";
|
|
5
5
|
export { detectServedModelMismatch, detectTierMismatch, tierOf } from "./tiers";
|
|
6
|
+
export { TOKENIZER_FAMILIES, SCRIPT_TOLERANCE, matchTokenizerFamilies, knowsMaker, } from "./tokenizers";
|
|
7
|
+
export type { TokenizerFamily, ScriptVector } from "./tokenizers";
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,UAAU,EACV,UAAU,EACV,YAAY,EACZ,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,UAAU,EACV,UAAU,EACV,YAAY,EACZ,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/models/index.js
CHANGED
|
@@ -2,4 +2,5 @@ export { MODEL_FACTS, defineModelFacts, globMatches, normalizeModelId, resolveMo
|
|
|
2
2
|
export { CURATED_MODELS, makerForModel, vendorForRow, wireForModel, } from "./catalog";
|
|
3
3
|
export { detectSubstitution, modelsMatch } from "./substitution";
|
|
4
4
|
export { detectServedModelMismatch, detectTierMismatch, tierOf } from "./tiers";
|
|
5
|
+
export { TOKENIZER_FAMILIES, SCRIPT_TOLERANCE, matchTokenizerFamilies, knowsMaker, } from "./tokenizers";
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/dist/models/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAOjB,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAOjB,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,GACX,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tokenizer families by the input-token deltas they bill for the four
|
|
3
|
+
* SCRIPT_VARIANTS runs (digits, cjk, spaces, code), in that order.
|
|
4
|
+
*
|
|
5
|
+
* Open families were computed from each maker's published tokenizer and agree
|
|
6
|
+
* with the counts their own lanes bill (glm-5.3 and gpt-5.5 to the token).
|
|
7
|
+
* Closed families were measured on lanes that pass every other rule: Gemini on
|
|
8
|
+
* three relays, Claude on five relay paths, which bill five different vectors
|
|
9
|
+
* between them and so get one entry each.
|
|
10
|
+
*
|
|
11
|
+
* Kimi is left out: one relay billed two different vectors for kimi-k3 a day
|
|
12
|
+
* apart, so a moonshot lane is never judged.
|
|
13
|
+
*
|
|
14
|
+
* Families share a vector where the tokenizers agree on these runs: Llama 4,
|
|
15
|
+
* Muse Spark and Grok 4.3 all bill 101/80/101/120, so that entry names both
|
|
16
|
+
* makers and only says "neither of these is Claude".
|
|
17
|
+
*/
|
|
18
|
+
import type { MakerId } from "../makers/table";
|
|
19
|
+
import { type ScriptVariant } from "../probes/prompts";
|
|
20
|
+
export type ScriptVector = Readonly<Record<ScriptVariant, number>>;
|
|
21
|
+
export type TokenizerFamily = {
|
|
22
|
+
id: string;
|
|
23
|
+
makers: readonly MakerId[];
|
|
24
|
+
vector: ScriptVector;
|
|
25
|
+
/**
|
|
26
|
+
* Relays estimate usage with OpenAI's tokenizers when the upstream reports
|
|
27
|
+
* none, so a match here may be the relay counting, not the model.
|
|
28
|
+
*/
|
|
29
|
+
estimator?: boolean;
|
|
30
|
+
};
|
|
31
|
+
export declare const TOKENIZER_FAMILIES: readonly TokenizerFamily[];
|
|
32
|
+
/** One token either way: Vertex bills Gemini one less on every run. */
|
|
33
|
+
export declare const SCRIPT_TOLERANCE = 1;
|
|
34
|
+
export declare function matchTokenizerFamilies(measured: ScriptVector, families?: readonly TokenizerFamily[]): TokenizerFamily[];
|
|
35
|
+
export declare const knowsMaker: (maker: string, families?: readonly TokenizerFamily[]) => boolean;
|
|
36
|
+
//# sourceMappingURL=tokenizers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizers.d.ts","sourceRoot":"","sources":["../../src/models/tokenizers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE5E,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;AAEnE,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AASF,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAiCxD,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,YAAY,EACtB,QAAQ,GAAE,SAAS,eAAe,EAAuB,GACxD,eAAe,EAAE,CAMnB;AAED,eAAO,MAAM,UAAU,UACd,MAAM,aACH,SAAS,eAAe,EAAE,KACnC,OAAkE,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tokenizer families by the input-token deltas they bill for the four
|
|
3
|
+
* SCRIPT_VARIANTS runs (digits, cjk, spaces, code), in that order.
|
|
4
|
+
*
|
|
5
|
+
* Open families were computed from each maker's published tokenizer and agree
|
|
6
|
+
* with the counts their own lanes bill (glm-5.3 and gpt-5.5 to the token).
|
|
7
|
+
* Closed families were measured on lanes that pass every other rule: Gemini on
|
|
8
|
+
* three relays, Claude on five relay paths, which bill five different vectors
|
|
9
|
+
* between them and so get one entry each.
|
|
10
|
+
*
|
|
11
|
+
* Kimi is left out: one relay billed two different vectors for kimi-k3 a day
|
|
12
|
+
* apart, so a moonshot lane is never judged.
|
|
13
|
+
*
|
|
14
|
+
* Families share a vector where the tokenizers agree on these runs: Llama 4,
|
|
15
|
+
* Muse Spark and Grok 4.3 all bill 101/80/101/120, so that entry names both
|
|
16
|
+
* makers and only says "neither of these is Claude".
|
|
17
|
+
*/
|
|
18
|
+
import { SCRIPT_VARIANT_KEYS } from "../probes/prompts";
|
|
19
|
+
const v = (digits, cjk, spaces, code) => ({ digits, cjk, spaces, code });
|
|
20
|
+
export const TOKENIZER_FAMILIES = [
|
|
21
|
+
{
|
|
22
|
+
id: "o200k",
|
|
23
|
+
makers: ["openai"],
|
|
24
|
+
vector: v(101, 101, 101, 120),
|
|
25
|
+
estimator: true,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: "cl100k",
|
|
29
|
+
makers: ["openai"],
|
|
30
|
+
vector: v(101, 172, 101, 120),
|
|
31
|
+
estimator: true,
|
|
32
|
+
},
|
|
33
|
+
{ id: "llama4", makers: ["meta", "xai"], vector: v(101, 80, 101, 120) },
|
|
34
|
+
{ id: "gemini", makers: ["google"], vector: v(301, 80, 101, 150) },
|
|
35
|
+
{ id: "glm", makers: ["zhipu"], vector: v(191, 70, 101, 120) },
|
|
36
|
+
{
|
|
37
|
+
id: "deepseek",
|
|
38
|
+
makers: ["deepseek", "stepfun"],
|
|
39
|
+
vector: v(101, 61, 101, 120),
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: "qwen",
|
|
43
|
+
makers: ["alibaba", "xiaomi", "tencent"],
|
|
44
|
+
vector: v(301, 72, 101, 120),
|
|
45
|
+
},
|
|
46
|
+
{ id: "minimax", makers: ["minimax"], vector: v(101, 70, 101, 120) },
|
|
47
|
+
{ id: "ernie", makers: ["baidu"], vector: v(301, 70, 101, 150) },
|
|
48
|
+
{ id: "claude-direct", makers: ["anthropic"], vector: v(101, 151, 100, 149) },
|
|
49
|
+
{ id: "claude-cloud", makers: ["anthropic"], vector: v(34, 158, 106, 127) },
|
|
50
|
+
{ id: "claude-relay-a", makers: ["anthropic"], vector: v(144, 135, 78, 156) },
|
|
51
|
+
{ id: "claude-relay-b", makers: ["anthropic"], vector: v(107, 168, 75, 155) },
|
|
52
|
+
{ id: "claude-relay-c", makers: ["anthropic"], vector: v(103, 147, 51, 126) },
|
|
53
|
+
];
|
|
54
|
+
/** One token either way: Vertex bills Gemini one less on every run. */
|
|
55
|
+
export const SCRIPT_TOLERANCE = 1;
|
|
56
|
+
export function matchTokenizerFamilies(measured, families = TOKENIZER_FAMILIES) {
|
|
57
|
+
return families.filter((f) => SCRIPT_VARIANT_KEYS.every((k) => Math.abs(f.vector[k] - measured[k]) <= SCRIPT_TOLERANCE));
|
|
58
|
+
}
|
|
59
|
+
export const knowsMaker = (maker, families = TOKENIZER_FAMILIES) => families.some((f) => f.makers.some((m) => m === maker));
|
|
60
|
+
//# sourceMappingURL=tokenizers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizers.js","sourceRoot":"","sources":["../../src/models/tokenizers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,mBAAmB,EAAsB,MAAM,mBAAmB,CAAC;AAe5E,MAAM,CAAC,GAAG,CACR,MAAc,EACd,GAAW,EACX,MAAc,EACd,IAAY,EACE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,kBAAkB,GAA+B;IAC5D;QACE,EAAE,EAAE,OAAO;QACX,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAC7B,SAAS,EAAE,IAAI;KAChB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAC7B,SAAS,EAAE,IAAI;KAChB;IACD,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IACvE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IAClE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IAC9D;QACE,EAAE,EAAE,UAAU;QACd,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;QAC/B,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;KAC7B;IACD;QACE,EAAE,EAAE,MAAM;QACV,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QACxC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;KAC7B;IACD,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IACpE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IAChE,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IAC7E,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IAC3E,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE;IAC7E,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE;IAC7E,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE;CAC9E,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,MAAM,UAAU,sBAAsB,CACpC,QAAsB,EACtB,QAAQ,GAA+B,kBAAkB;IAEzD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3B,mBAAmB,CAAC,KAAK,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAC/D,CACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,KAAa,EACb,QAAQ,GAA+B,kBAAkB,EAChD,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC"}
|
package/dist/probes/prompts.d.ts
CHANGED
|
@@ -27,4 +27,25 @@ export declare const DIVERSE_PROMPT = "Reply with exactly: ok\n\nReference text:
|
|
|
27
27
|
*/
|
|
28
28
|
export declare const SIGNATURE_PROMPT = "Find the greatest common divisor of 2378 and 1547 using the Euclidean algorithm.";
|
|
29
29
|
export declare const FLOOR_PROMPT = "Reply with only the word ok.";
|
|
30
|
+
/**
|
|
31
|
+
* Small enough to answer in one token, hard enough that a model asked for high
|
|
32
|
+
* effort thinks first: genuine Gemini 4 spent 300 or more thought tokens on it.
|
|
33
|
+
*/
|
|
34
|
+
export declare const ASKED_THINKING_PROMPT = "A bat and a ball cost 1.10 in total. The bat costs 1.00 more than the ball. How much does the ball cost? Reply with only the number.";
|
|
35
|
+
/**
|
|
36
|
+
* The tokenizer family probe: one anchor and four runs appended to it, each
|
|
37
|
+
* chosen because vocabularies split it differently (digits in ones or threes,
|
|
38
|
+
* Chinese by word or by character, whitespace runs). The four deltas together
|
|
39
|
+
* name a tokenizer family where one English run cannot. Fixed bytes, like the
|
|
40
|
+
* prompts above: the family table in models/tokenizers.ts was measured on these.
|
|
41
|
+
*/
|
|
42
|
+
export declare const SCRIPT_BASE_PROMPT = "Reply with only the word ok.";
|
|
43
|
+
export declare const SCRIPT_VARIANTS: {
|
|
44
|
+
readonly digits: ` ${string}`;
|
|
45
|
+
readonly cjk: ` ${string}`;
|
|
46
|
+
readonly spaces: ` ${string}`;
|
|
47
|
+
readonly code: ` ${string}`;
|
|
48
|
+
};
|
|
49
|
+
export type ScriptVariant = keyof typeof SCRIPT_VARIANTS;
|
|
50
|
+
export declare const SCRIPT_VARIANT_KEYS: readonly ["digits", "cjk", "spaces", "code"];
|
|
30
51
|
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/probes/prompts.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,IAAI,MAAM,CAIlC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,2BAA2B,CAAC;AACrD,eAAO,MAAM,WAAW,QAA6D,CAAC;AACtF,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,4xBAAgb,CAAC;AAE5c;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,qFACuD,CAAC;AAErF,eAAO,MAAM,YAAY,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/probes/prompts.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,IAAI,MAAM,CAIlC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,2BAA2B,CAAC;AACrD,eAAO,MAAM,WAAW,QAA6D,CAAC;AACtF,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,4xBAAgb,CAAC;AAE5c;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,qFACuD,CAAC;AAErF,eAAO,MAAM,YAAY,iCAAiC,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,yIACsG,CAAC;AAEzI;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,iCAAiC,CAAC;AACjE,eAAO,MAAM,eAAe;aAC1B,MAAM;aACN,GAAG;aACH,MAAM;aACN,IAAI;CACI,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,eAAe,CAAC;AACzD,eAAO,MAAM,mBAAmB,8CAKa,CAAC"}
|
package/dist/probes/prompts.js
CHANGED
|
@@ -35,4 +35,29 @@ export const DIVERSE_PROMPT = `${SHORT_PROMPT}\n\nReference text: 深度学习
|
|
|
35
35
|
*/
|
|
36
36
|
export const SIGNATURE_PROMPT = "Find the greatest common divisor of 2378 and 1547 using the Euclidean algorithm.";
|
|
37
37
|
export const FLOOR_PROMPT = "Reply with only the word ok.";
|
|
38
|
+
/**
|
|
39
|
+
* Small enough to answer in one token, hard enough that a model asked for high
|
|
40
|
+
* effort thinks first: genuine Gemini 4 spent 300 or more thought tokens on it.
|
|
41
|
+
*/
|
|
42
|
+
export const ASKED_THINKING_PROMPT = "A bat and a ball cost 1.10 in total. The bat costs 1.00 more than the ball. How much does the ball cost? Reply with only the number.";
|
|
43
|
+
/**
|
|
44
|
+
* The tokenizer family probe: one anchor and four runs appended to it, each
|
|
45
|
+
* chosen because vocabularies split it differently (digits in ones or threes,
|
|
46
|
+
* Chinese by word or by character, whitespace runs). The four deltas together
|
|
47
|
+
* name a tokenizer family where one English run cannot. Fixed bytes, like the
|
|
48
|
+
* prompts above: the family table in models/tokenizers.ts was measured on these.
|
|
49
|
+
*/
|
|
50
|
+
export const SCRIPT_BASE_PROMPT = "Reply with only the word ok.";
|
|
51
|
+
export const SCRIPT_VARIANTS = {
|
|
52
|
+
digits: ` ${"1234567890".repeat(30)}`,
|
|
53
|
+
cjk: ` ${"我们今天去公园散步然后吃饭".repeat(10)}`,
|
|
54
|
+
spaces: ` ${"a ".repeat(100)}`,
|
|
55
|
+
code: ` ${" if (x) {\n return y;\n }\n".repeat(10)}`,
|
|
56
|
+
};
|
|
57
|
+
export const SCRIPT_VARIANT_KEYS = [
|
|
58
|
+
"digits",
|
|
59
|
+
"cjk",
|
|
60
|
+
"spaces",
|
|
61
|
+
"code",
|
|
62
|
+
];
|
|
38
63
|
//# sourceMappingURL=prompts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/probes/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS;IACvB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,OAAO,kCAAkC,KAAK,mCAAmC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAa;IACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,CAAC;AACrD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,YAAY,sBAAsB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,YAAY,8ZAA8Z,CAAC;AAE5c;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAC3B,kFAAkF,CAAC;AAErF,MAAM,CAAC,MAAM,YAAY,GAAG,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/probes/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS;IACvB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,OAAO,kCAAkC,KAAK,mCAAmC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAa;IACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,CAAC;AACrD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,YAAY,sBAAsB,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,YAAY,8ZAA8Z,CAAC;AAE5c;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAC3B,kFAAkF,CAAC;AAErF,MAAM,CAAC,MAAM,YAAY,GAAG,8BAA8B,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,sIAAsI,CAAC;AAEzI;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,8BAA8B,CAAC;AACjE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;IACrC,GAAG,EAAE,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;IACrC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;IAC9B,IAAI,EAAE,IAAI,0CAA0C,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;CACzD,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,MAAM;CACqC,CAAC"}
|
package/dist/registry.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export declare function createVerifier<V extends string = never, R extends strin
|
|
|
20
20
|
omit?: readonly RuleId[];
|
|
21
21
|
modelFacts?: readonly FactsEntry<MakerId | M>[];
|
|
22
22
|
}): {
|
|
23
|
-
registry: Registry<"anthropic" | "gemini" | "openai" | V, "answer-fingerprint" | "cjk-leak" | "coding-tool" | "envelope" | "fake-200" | "foreign" | "mask-contradiction" | "masked-identity" | "mux" | "quorum" | "scam" | "served-model-mismatch" | "signature" | "substituted" | "survey" | "think-leak" | "thinking-floor" | "throughput" | "tier-self-report" | "token-truth" | "tokenizer-fingerprint" | "wrapper-leak" | R, "ai21" | "aion" | "alibaba" | "amazon" | "anthropic" | "arcee" | "baidu" | "bytedance" | "cohere" | "deepseek" | "google" | "ibm" | "inception" | "inclusionai" | "internlm" | "jetbrains" | "kwaipilot" | "liquid" | "meituan" | "meta" | "microsoft" | "minimax" | "mistral" | "moondream" | "moonshot" | "nexagi" | "nous" | "nvidia" | "openai" | "openbmb" | "perplexity" | "poolside" | "rednote" | "sarvam" | "sensetime" | "stepfun" | "swissai" | "tencent" | "typhoon" | "venice" | "writer" | "xai" | "xiaomi" | "zhipu" | M>;
|
|
23
|
+
registry: Registry<"anthropic" | "gemini" | "openai" | V, "answer-fingerprint" | "cjk-leak" | "coding-tool" | "envelope" | "fake-200" | "foreign" | "mask-contradiction" | "masked-identity" | "mux" | "quorum" | "scam" | "served-model-mismatch" | "signature" | "substituted" | "survey" | "think-leak" | "thinking-floor" | "thinking-honored" | "throughput" | "tier-self-report" | "token-truth" | "tokenizer-family" | "tokenizer-fingerprint" | "wrapper-leak" | R, "ai21" | "aion" | "alibaba" | "amazon" | "anthropic" | "arcee" | "baidu" | "bytedance" | "cohere" | "deepseek" | "google" | "ibm" | "inception" | "inclusionai" | "internlm" | "jetbrains" | "kwaipilot" | "liquid" | "meituan" | "meta" | "microsoft" | "minimax" | "mistral" | "moondream" | "moonshot" | "nexagi" | "nous" | "nvidia" | "openai" | "openbmb" | "perplexity" | "poolside" | "rednote" | "sarvam" | "sensetime" | "stepfun" | "swissai" | "tencent" | "typhoon" | "venice" | "writer" | "xai" | "xiaomi" | "zhipu" | M>;
|
|
24
24
|
verify: (opts: VerifyOptions<VendorId | V>) => Promise<VerifyResult<VendorId | V, RuleId | R, MakerId | M>>;
|
|
25
25
|
runRules: (opts: VerifyOptions<VendorId | V> & {
|
|
26
26
|
only: readonly (RuleId | R)[];
|
package/dist/rules/index.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export { defineRule } from "./types";
|
|
|
3
3
|
export type * from "./types";
|
|
4
4
|
export { DEFAULT_MIN_COMPLETION_TOKENS, judgeThinkingFloor, judgeReasoningUsage, mustAlwaysThink, readThinkingUsage, } from "./thinking-floor";
|
|
5
5
|
export type { ThinkingFloorOptions, ThinkingFloorResult, ThinkingFloorState, } from "./thinking-floor";
|
|
6
|
+
export { MIN_ASKED_THINKING_TOKENS, judgeThinkingHonored, } from "./thinking-honored";
|
|
7
|
+
export type { ThinkingHonoredResult, ThinkingHonoredState, } from "./thinking-honored";
|
|
6
8
|
export { DEFAULT_TIER_SIGNATURES, fingerprintDrifted, judgeTokenizerFingerprint, tierForDelta, } from "./tokenizer-fingerprint";
|
|
7
9
|
export type { TierSignatures, TokenizerFingerprintResult, TokenizerFingerprintState, } from "./tokenizer-fingerprint";
|
|
8
10
|
export type { SignatureResult, SignatureState } from "./thinking-signature";
|
|
@@ -16,4 +18,6 @@ export type { FingerprintSample, FingerprintCellSample, } from "../engine/answer
|
|
|
16
18
|
export { compareFingerprints, compareToProfiles, fingerprintClusters, jensenShannon, mergeFingerprints, DEFAULT_MATCH_BITS, DEFAULT_MISMATCH_BITS, DEFAULT_MIN_CELL_SAMPLES, } from "./answer-fingerprint";
|
|
17
19
|
export type { CompareOptions, CompareResult, CompareVerdict, ProfileVerdict, } from "./answer-fingerprint";
|
|
18
20
|
export type { ThroughputComparison, ThroughputSample } from "./throughput";
|
|
21
|
+
export { judgeTokenizerFamily } from "./tokenizer-family";
|
|
22
|
+
export type { TokenizerFamilyResult, TokenizerFamilyState, } from "./tokenizer-family";
|
|
19
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,mBAAmB,SAAS,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,cAAc,EACd,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EACV,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,mBAAmB,SAAS,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,GACb,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,cAAc,EACd,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EACV,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EACV,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC"}
|
package/dist/rules/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export * from "./table";
|
|
2
2
|
export { defineRule } from "./types";
|
|
3
3
|
export { DEFAULT_MIN_COMPLETION_TOKENS, judgeThinkingFloor, judgeReasoningUsage, mustAlwaysThink, readThinkingUsage, } from "./thinking-floor";
|
|
4
|
+
export { MIN_ASKED_THINKING_TOKENS, judgeThinkingHonored, } from "./thinking-honored";
|
|
4
5
|
export { DEFAULT_TIER_SIGNATURES, fingerprintDrifted, judgeTokenizerFingerprint, tierForDelta, } from "./tokenizer-fingerprint";
|
|
5
6
|
export { expectedInputDelta } from "./token-truth";
|
|
6
7
|
export { readResponseMetadata } from "./response-metadata";
|
|
7
8
|
export { compareThroughput, sampleThroughput } from "./throughput";
|
|
8
9
|
export { compareFingerprints, compareToProfiles, fingerprintClusters, jensenShannon, mergeFingerprints, DEFAULT_MATCH_BITS, DEFAULT_MISMATCH_BITS, DEFAULT_MIN_CELL_SAMPLES, } from "./answer-fingerprint";
|
|
10
|
+
export { judgeTokenizerFamily } from "./tokenizer-family";
|
|
9
11
|
//# sourceMappingURL=index.js.map
|
package/dist/rules/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,GACb,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAMnE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,GACb,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAMnE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|