ai-model-verifier 1.4.0 → 2.0.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 (224) hide show
  1. package/README.md +79 -21
  2. package/dist/engine/context.d.ts +43 -0
  3. package/dist/engine/context.d.ts.map +1 -0
  4. package/dist/engine/context.js +50 -0
  5. package/dist/engine/context.js.map +1 -0
  6. package/dist/engine/evidence.d.ts +40 -0
  7. package/dist/engine/evidence.d.ts.map +1 -0
  8. package/dist/engine/evidence.js +108 -0
  9. package/dist/engine/evidence.js.map +1 -0
  10. package/dist/engine/handshake.d.ts +16 -0
  11. package/dist/engine/handshake.d.ts.map +1 -0
  12. package/dist/{handshake.js → engine/handshake.js} +35 -63
  13. package/dist/engine/handshake.js.map +1 -0
  14. package/dist/engine/probe-runner.d.ts +14 -0
  15. package/dist/engine/probe-runner.d.ts.map +1 -0
  16. package/dist/engine/probe-runner.js +163 -0
  17. package/dist/engine/probe-runner.js.map +1 -0
  18. package/dist/engine/verdict.d.ts +15 -0
  19. package/dist/engine/verdict.d.ts.map +1 -0
  20. package/dist/engine/verdict.js +19 -0
  21. package/dist/engine/verdict.js.map +1 -0
  22. package/dist/highlight.d.ts +2 -2
  23. package/dist/highlight.d.ts.map +1 -1
  24. package/dist/highlight.js +10 -9
  25. package/dist/highlight.js.map +1 -1
  26. package/dist/{patterns.d.ts → identity/patterns.d.ts} +7 -0
  27. package/dist/identity/patterns.d.ts.map +1 -0
  28. package/dist/{patterns.js → identity/patterns.js} +7 -0
  29. package/dist/identity/patterns.js.map +1 -0
  30. package/dist/identity/signals.d.ts +15 -0
  31. package/dist/identity/signals.d.ts.map +1 -0
  32. package/dist/{signals.js → identity/signals.js} +15 -24
  33. package/dist/identity/signals.js.map +1 -0
  34. package/dist/index.d.ts +15 -5
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +12 -5
  37. package/dist/index.js.map +1 -1
  38. package/dist/internal/utils.d.ts +3 -1
  39. package/dist/internal/utils.d.ts.map +1 -1
  40. package/dist/internal/utils.js +12 -6
  41. package/dist/internal/utils.js.map +1 -1
  42. package/dist/models/catalog.d.ts +7 -0
  43. package/dist/models/catalog.d.ts.map +1 -0
  44. package/dist/models/catalog.js +23 -0
  45. package/dist/models/catalog.js.map +1 -0
  46. package/dist/models/facts.d.ts +56 -0
  47. package/dist/models/facts.d.ts.map +1 -0
  48. package/dist/models/facts.js +91 -0
  49. package/dist/models/facts.js.map +1 -0
  50. package/dist/models/index.d.ts +6 -0
  51. package/dist/models/index.d.ts.map +1 -0
  52. package/dist/models/index.js +5 -0
  53. package/dist/models/index.js.map +1 -0
  54. package/dist/{substitution.d.ts → models/substitution.d.ts} +3 -4
  55. package/dist/models/substitution.d.ts.map +1 -0
  56. package/dist/{substitution.js → models/substitution.js} +3 -4
  57. package/dist/models/substitution.js.map +1 -0
  58. package/dist/models/tiers.d.ts +14 -0
  59. package/dist/models/tiers.d.ts.map +1 -0
  60. package/dist/models/tiers.js +35 -0
  61. package/dist/models/tiers.js.map +1 -0
  62. package/dist/probes/prompts.d.ts +23 -0
  63. package/dist/probes/prompts.d.ts.map +1 -0
  64. package/dist/probes/prompts.js +31 -0
  65. package/dist/probes/prompts.js.map +1 -0
  66. package/dist/probes/table.d.ts +37 -0
  67. package/dist/probes/table.d.ts.map +1 -0
  68. package/dist/probes/table.js +57 -0
  69. package/dist/probes/table.js.map +1 -0
  70. package/dist/registry.d.ts +26 -0
  71. package/dist/registry.d.ts.map +1 -0
  72. package/dist/registry.js +23 -0
  73. package/dist/registry.js.map +1 -0
  74. package/dist/rules/index.d.ts +15 -0
  75. package/dist/rules/index.d.ts.map +1 -0
  76. package/dist/rules/index.js +8 -0
  77. package/dist/rules/index.js.map +1 -0
  78. package/dist/rules/probe-ladder.d.ts +33 -0
  79. package/dist/rules/probe-ladder.d.ts.map +1 -0
  80. package/dist/rules/probe-ladder.js +156 -0
  81. package/dist/rules/probe-ladder.js.map +1 -0
  82. package/dist/{detectors → rules}/response-metadata.d.ts +11 -14
  83. package/dist/rules/response-metadata.d.ts.map +1 -0
  84. package/dist/{detectors → rules}/response-metadata.js +32 -15
  85. package/dist/rules/response-metadata.js.map +1 -0
  86. package/dist/rules/table.d.ts +27 -0
  87. package/dist/rules/table.d.ts.map +1 -0
  88. package/dist/rules/table.js +47 -0
  89. package/dist/rules/table.js.map +1 -0
  90. package/dist/{detectors → rules}/thinking-floor.d.ts +14 -29
  91. package/dist/rules/thinking-floor.d.ts.map +1 -0
  92. package/dist/rules/thinking-floor.js +119 -0
  93. package/dist/rules/thinking-floor.js.map +1 -0
  94. package/dist/rules/thinking-signature.d.ts +43 -0
  95. package/dist/rules/thinking-signature.d.ts.map +1 -0
  96. package/dist/rules/thinking-signature.js +72 -0
  97. package/dist/rules/thinking-signature.js.map +1 -0
  98. package/dist/{detectors → rules}/throughput.d.ts +7 -10
  99. package/dist/rules/throughput.d.ts.map +1 -0
  100. package/dist/{detectors → rules}/throughput.js +32 -11
  101. package/dist/rules/throughput.js.map +1 -0
  102. package/dist/{detectors → rules}/token-truth.d.ts +7 -13
  103. package/dist/rules/token-truth.d.ts.map +1 -0
  104. package/dist/rules/token-truth.js +112 -0
  105. package/dist/rules/token-truth.js.map +1 -0
  106. package/dist/rules/tokenizer-fingerprint.d.ts +46 -0
  107. package/dist/rules/tokenizer-fingerprint.d.ts.map +1 -0
  108. package/dist/rules/tokenizer-fingerprint.js +110 -0
  109. package/dist/rules/tokenizer-fingerprint.js.map +1 -0
  110. package/dist/rules/types.d.ts +57 -0
  111. package/dist/rules/types.d.ts.map +1 -0
  112. package/dist/rules/types.js +2 -0
  113. package/dist/rules/types.js.map +1 -0
  114. package/dist/transport.d.ts +10 -2
  115. package/dist/transport.d.ts.map +1 -1
  116. package/dist/transport.js +40 -32
  117. package/dist/transport.js.map +1 -1
  118. package/dist/types.d.ts +70 -31
  119. package/dist/types.d.ts.map +1 -1
  120. package/dist/vendors/anthropic.d.ts +44 -0
  121. package/dist/vendors/anthropic.d.ts.map +1 -0
  122. package/dist/vendors/anthropic.js +114 -0
  123. package/dist/vendors/anthropic.js.map +1 -0
  124. package/dist/vendors/base-url.d.ts +3 -0
  125. package/dist/vendors/base-url.d.ts.map +1 -0
  126. package/dist/vendors/base-url.js +6 -0
  127. package/dist/vendors/base-url.js.map +1 -0
  128. package/dist/vendors/gemini.d.ts +44 -0
  129. package/dist/vendors/gemini.d.ts.map +1 -0
  130. package/dist/vendors/gemini.js +77 -0
  131. package/dist/vendors/gemini.js.map +1 -0
  132. package/dist/vendors/index.d.ts +9 -0
  133. package/dist/vendors/index.d.ts.map +1 -0
  134. package/dist/vendors/index.js +7 -0
  135. package/dist/vendors/index.js.map +1 -0
  136. package/dist/vendors/openai.d.ts +46 -0
  137. package/dist/vendors/openai.d.ts.map +1 -0
  138. package/dist/vendors/openai.js +77 -0
  139. package/dist/vendors/openai.js.map +1 -0
  140. package/dist/vendors/table.d.ts +113 -0
  141. package/dist/vendors/table.d.ts.map +1 -0
  142. package/dist/vendors/table.js +14 -0
  143. package/dist/vendors/table.js.map +1 -0
  144. package/dist/vendors/types.d.ts +93 -0
  145. package/dist/vendors/types.d.ts.map +1 -0
  146. package/dist/vendors/types.js +2 -0
  147. package/dist/vendors/types.js.map +1 -0
  148. package/dist/verify.d.ts +30 -0
  149. package/dist/verify.d.ts.map +1 -0
  150. package/dist/verify.js +185 -0
  151. package/dist/verify.js.map +1 -0
  152. package/package.json +25 -10
  153. package/dist/detectors/response-metadata.d.ts.map +0 -1
  154. package/dist/detectors/response-metadata.js.map +0 -1
  155. package/dist/detectors/thinking-floor.d.ts.map +0 -1
  156. package/dist/detectors/thinking-floor.js +0 -135
  157. package/dist/detectors/thinking-floor.js.map +0 -1
  158. package/dist/detectors/thinking-signature.d.ts +0 -70
  159. package/dist/detectors/thinking-signature.d.ts.map +0 -1
  160. package/dist/detectors/thinking-signature.js +0 -177
  161. package/dist/detectors/thinking-signature.js.map +0 -1
  162. package/dist/detectors/throughput.d.ts.map +0 -1
  163. package/dist/detectors/throughput.js.map +0 -1
  164. package/dist/detectors/token-truth.d.ts.map +0 -1
  165. package/dist/detectors/token-truth.js +0 -142
  166. package/dist/detectors/token-truth.js.map +0 -1
  167. package/dist/detectors/tokenizer-fingerprint.d.ts +0 -65
  168. package/dist/detectors/tokenizer-fingerprint.d.ts.map +0 -1
  169. package/dist/detectors/tokenizer-fingerprint.js +0 -135
  170. package/dist/detectors/tokenizer-fingerprint.js.map +0 -1
  171. package/dist/handshake.d.ts +0 -23
  172. package/dist/handshake.d.ts.map +0 -1
  173. package/dist/handshake.js.map +0 -1
  174. package/dist/internal/fixed-text.d.ts +0 -13
  175. package/dist/internal/fixed-text.d.ts.map +0 -1
  176. package/dist/internal/fixed-text.js +0 -13
  177. package/dist/internal/fixed-text.js.map +0 -1
  178. package/dist/models.d.ts +0 -5
  179. package/dist/models.d.ts.map +0 -1
  180. package/dist/models.js +0 -54
  181. package/dist/models.js.map +0 -1
  182. package/dist/nonce.d.ts +0 -4
  183. package/dist/nonce.d.ts.map +0 -1
  184. package/dist/nonce.js +0 -12
  185. package/dist/nonce.js.map +0 -1
  186. package/dist/patterns.d.ts.map +0 -1
  187. package/dist/patterns.js.map +0 -1
  188. package/dist/probes.d.ts +0 -10
  189. package/dist/probes.d.ts.map +0 -1
  190. package/dist/probes.js +0 -54
  191. package/dist/probes.js.map +0 -1
  192. package/dist/providers/anthropic.d.ts +0 -3
  193. package/dist/providers/anthropic.d.ts.map +0 -1
  194. package/dist/providers/anthropic.js +0 -67
  195. package/dist/providers/anthropic.js.map +0 -1
  196. package/dist/providers/config.d.ts +0 -34
  197. package/dist/providers/config.d.ts.map +0 -1
  198. package/dist/providers/config.js +0 -14
  199. package/dist/providers/config.js.map +0 -1
  200. package/dist/providers/gemini.d.ts +0 -3
  201. package/dist/providers/gemini.d.ts.map +0 -1
  202. package/dist/providers/gemini.js +0 -58
  203. package/dist/providers/gemini.js.map +0 -1
  204. package/dist/providers/openai.d.ts +0 -3
  205. package/dist/providers/openai.d.ts.map +0 -1
  206. package/dist/providers/openai.js +0 -56
  207. package/dist/providers/openai.js.map +0 -1
  208. package/dist/rules.d.ts +0 -6
  209. package/dist/rules.d.ts.map +0 -1
  210. package/dist/rules.js +0 -28
  211. package/dist/rules.js.map +0 -1
  212. package/dist/runner.d.ts +0 -39
  213. package/dist/runner.d.ts.map +0 -1
  214. package/dist/runner.js +0 -352
  215. package/dist/runner.js.map +0 -1
  216. package/dist/signals.d.ts +0 -11
  217. package/dist/signals.d.ts.map +0 -1
  218. package/dist/signals.js.map +0 -1
  219. package/dist/substitution.d.ts.map +0 -1
  220. package/dist/substitution.js.map +0 -1
  221. package/dist/verdict.d.ts +0 -26
  222. package/dist/verdict.d.ts.map +0 -1
  223. package/dist/verdict.js +0 -84
  224. package/dist/verdict.js.map +0 -1
@@ -1,3 +0,0 @@
1
- import { type ProviderConfig } from "./config";
2
- export declare const geminiConfig: ProviderConfig;
3
- //# sourceMappingURL=gemini.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAyDlB,eAAO,MAAM,YAAY,EAAE,cAW1B,CAAC"}
@@ -1,58 +0,0 @@
1
- import { rec } from "../internal/utils";
2
- import { foreignPatternsExcept } from "../patterns";
3
- import { normalizeProbeBaseUrl, } from "./config";
4
- const GEMINI_MIN_OUTPUT_TOKENS = 1024;
5
- function buildRequest(args) {
6
- return {
7
- url: `${normalizeProbeBaseUrl(args.baseUrl)}/v1beta/models/${args.model}:generateContent`,
8
- headers: {
9
- "content-type": "application/json",
10
- "x-goog-api-key": args.apiKey,
11
- },
12
- body: {
13
- contents: [{ role: "user", parts: [{ text: args.prompt }] }],
14
- generationConfig: {
15
- maxOutputTokens: Math.max(args.maxTokens, GEMINI_MIN_OUTPUT_TOKENS),
16
- },
17
- },
18
- };
19
- }
20
- function extractText(data) {
21
- const d = rec(data) ?? {};
22
- if (d.error)
23
- return null;
24
- const parts = d.candidates?.[0]?.content?.parts;
25
- if (!parts)
26
- return null;
27
- return parts
28
- .map((p) => p.text ?? "")
29
- .join(" ")
30
- .toLowerCase();
31
- }
32
- function extractMeta(data) {
33
- const d = rec(data) ?? {};
34
- const u = d.usageMetadata;
35
- return {
36
- detectedModel: d.modelVersion ?? null,
37
- usage: u
38
- ? {
39
- prompt: u.promptTokenCount ?? null,
40
- completion: u.candidatesTokenCount ?? null,
41
- total: u.totalTokenCount ?? null,
42
- }
43
- : null,
44
- };
45
- }
46
- export const geminiConfig = {
47
- provider: "gemini",
48
- buildRequest,
49
- extractText,
50
- extractMeta,
51
- homeIdentityPatterns: ["google", "deepmind"],
52
- foreignIdentityPatterns: foreignPatternsExcept("google"),
53
- homeModelNamePatterns: ["gemini", "google"],
54
- cloudModelNamePatterns: [],
55
- tiers: null,
56
- acceptsCloudHostIdentity: false,
57
- };
58
- //# sourceMappingURL=gemini.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,qBAAqB,GAItB,MAAM,UAAU,CAAC;AAalB,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC,SAAS,YAAY,CAAC,IAAsB;IAC1C,OAAO;QACL,GAAG,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,KAAK,kBAAkB;QACzF,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,gBAAgB,EAAE,IAAI,CAAC,MAAM;SAC9B;QACD,IAAI,EAAE;YACJ,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;YAC5D,gBAAgB,EAAE;gBAChB,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC;aACpE;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAa;IAChC,MAAM,CAAC,GAAmB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,KAAK;SACT,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,WAAW,CAAC,IAAa;IAChC,MAAM,CAAC,GAAmB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;IAC1B,OAAO;QACL,aAAa,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;QACrC,KAAK,EAAE,CAAC;YACN,CAAC,CAAC;gBACE,MAAM,EAAE,CAAC,CAAC,gBAAgB,IAAI,IAAI;gBAClC,UAAU,EAAE,CAAC,CAAC,oBAAoB,IAAI,IAAI;gBAC1C,KAAK,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI;aACjC;YACH,CAAC,CAAC,IAAI;KACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,QAAQ,EAAE,QAAQ;IAClB,YAAY;IACZ,WAAW;IACX,WAAW;IACX,oBAAoB,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC5C,uBAAuB,EAAE,qBAAqB,CAAC,QAAQ,CAAC;IACxD,qBAAqB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC3C,sBAAsB,EAAE,EAAE;IAC1B,KAAK,EAAE,IAAI;IACX,wBAAwB,EAAE,KAAK;CAChC,CAAC"}
@@ -1,3 +0,0 @@
1
- import { type ProviderConfig } from "./config";
2
- export declare const openaiConfig: ProviderConfig;
3
- //# sourceMappingURL=openai.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAwDlB,eAAO,MAAM,YAAY,EAAE,cAW1B,CAAC"}
@@ -1,56 +0,0 @@
1
- import { rec } from "../internal/utils";
2
- import { foreignPatternsExcept } from "../patterns";
3
- import { normalizeProbeBaseUrl, } from "./config";
4
- const REASONING_MIN_OUTPUT_TOKENS = 2000;
5
- const REASONING_MODEL = /^(?:o[1-9]|gpt-5)/i;
6
- function buildRequest(args) {
7
- const maxCompletionTokens = REASONING_MODEL.test(args.model)
8
- ? Math.max(args.maxTokens, REASONING_MIN_OUTPUT_TOKENS)
9
- : args.maxTokens;
10
- return {
11
- url: `${normalizeProbeBaseUrl(args.baseUrl)}/v1/chat/completions`,
12
- headers: {
13
- "content-type": "application/json",
14
- authorization: `Bearer ${args.apiKey}`,
15
- },
16
- body: {
17
- model: args.model,
18
- max_completion_tokens: maxCompletionTokens,
19
- messages: [{ role: "user", content: args.prompt }],
20
- },
21
- };
22
- }
23
- function extractText(data) {
24
- const d = rec(data) ?? {};
25
- if (d.error)
26
- return null;
27
- const content = d.choices?.[0]?.message?.content;
28
- return typeof content === "string" ? content.toLowerCase() : null;
29
- }
30
- function extractMeta(data) {
31
- const d = rec(data) ?? {};
32
- const u = d.usage;
33
- return {
34
- detectedModel: d.model ?? null,
35
- usage: u
36
- ? {
37
- prompt: u.prompt_tokens ?? null,
38
- completion: u.completion_tokens ?? null,
39
- total: u.total_tokens ?? null,
40
- }
41
- : null,
42
- };
43
- }
44
- export const openaiConfig = {
45
- provider: "openai",
46
- buildRequest,
47
- extractText,
48
- extractMeta,
49
- homeIdentityPatterns: ["openai"],
50
- foreignIdentityPatterns: foreignPatternsExcept("openai"),
51
- homeModelNamePatterns: ["gpt", "openai", "o1", "o3", "o4"],
52
- cloudModelNamePatterns: [],
53
- tiers: null,
54
- acceptsCloudHostIdentity: false,
55
- };
56
- //# sourceMappingURL=openai.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,qBAAqB,GAItB,MAAM,UAAU,CAAC;AAalB,MAAM,2BAA2B,GAAG,IAAI,CAAC;AACzC,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAE7C,SAAS,YAAY,CAAC,IAAsB;IAC1C,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,2BAA2B,CAAC;QACvD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IACnB,OAAO;QACL,GAAG,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB;QACjE,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;SACvC;QACD,IAAI,EAAE;YACJ,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,qBAAqB,EAAE,mBAAmB;YAC1C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;SACnD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAa;IAChC,MAAM,CAAC,GAAuB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;IACjD,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,CAAC;AAED,SAAS,WAAW,CAAC,IAAa;IAChC,MAAM,CAAC,GAAuB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,OAAO;QACL,aAAa,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI;QAC9B,KAAK,EAAE,CAAC;YACN,CAAC,CAAC;gBACE,MAAM,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI;gBAC/B,UAAU,EAAE,CAAC,CAAC,iBAAiB,IAAI,IAAI;gBACvC,KAAK,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;aAC9B;YACH,CAAC,CAAC,IAAI;KACT,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,QAAQ,EAAE,QAAQ;IAClB,YAAY;IACZ,WAAW;IACX,WAAW;IACX,oBAAoB,EAAE,CAAC,QAAQ,CAAC;IAChC,uBAAuB,EAAE,qBAAqB,CAAC,QAAQ,CAAC;IACxD,qBAAqB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC1D,sBAAsB,EAAE,EAAE;IAC1B,KAAK,EAAE,IAAI;IACX,wBAAwB,EAAE,KAAK;CAChC,CAAC"}
package/dist/rules.d.ts DELETED
@@ -1,6 +0,0 @@
1
- export type DetectionRuleId = "coding-tool" | "scam" | "cjk-leak" | "mux" | "foreign" | "tier-mismatch" | "substituted";
2
- export declare const DETECTION_RULES: readonly DetectionRuleId[];
3
- export type DetectionExceptionId = "version" | "transient" | "cloud-host" | "reshaping" | "threshold";
4
- export declare const DETECTION_EXCEPTIONS: readonly DetectionExceptionId[];
5
- export declare function ruleIdForSignal(signal: string): DetectionRuleId | null;
6
- //# sourceMappingURL=rules.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,MAAM,GACN,UAAU,GACV,KAAK,GACL,SAAS,GACT,eAAe,GACf,aAAa,CAAC;AAElB,eAAO,MAAM,eAAe,EAAE,SAAS,eAAe,EAQrD,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC9B,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,CAAC;AAErE,eAAO,MAAM,oBAAoB,EAAE,SAAS,oBAAoB,EAM/D,CAAC;AAEF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAMtE"}
package/dist/rules.js DELETED
@@ -1,28 +0,0 @@
1
- export const DETECTION_RULES = [
2
- "coding-tool",
3
- "scam",
4
- "cjk-leak",
5
- "mux",
6
- "foreign",
7
- "tier-mismatch",
8
- "substituted",
9
- ];
10
- export const DETECTION_EXCEPTIONS = [
11
- "version",
12
- "transient",
13
- "cloud-host",
14
- "reshaping",
15
- "threshold",
16
- ];
17
- export function ruleIdForSignal(signal) {
18
- if (signal === "coding-tool")
19
- return "coding-tool";
20
- if (signal === "scam")
21
- return "scam";
22
- if (signal === "cjk-leak")
23
- return "cjk-leak";
24
- if (signal === "foreign")
25
- return "foreign";
26
- return null;
27
- }
28
- //# sourceMappingURL=rules.js.map
package/dist/rules.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,eAAe,GAA+B;IACzD,aAAa;IACb,MAAM;IACN,UAAU;IACV,KAAK;IACL,SAAS;IACT,eAAe;IACf,aAAa;CACd,CAAC;AAKF,MAAM,CAAC,MAAM,oBAAoB,GAAoC;IACnE,SAAS;IACT,WAAW;IACX,YAAY;IACZ,WAAW;IACX,WAAW;CACZ,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,IAAI,MAAM,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IACnD,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACrC,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC7C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/runner.d.ts DELETED
@@ -1,39 +0,0 @@
1
- import { type ThinkingFloorOptions } from "./detectors/thinking-floor";
2
- import { type TierSignatures } from "./detectors/tokenizer-fingerprint";
3
- import { type TransportFn } from "./transport";
4
- import type { TransportMode, VerifyProvider, VerifyResult } from "./types";
5
- export declare function runVerification(opts: {
6
- provider: VerifyProvider;
7
- baseUrl: string;
8
- apiKey: string;
9
- model: string;
10
- mode: TransportMode;
11
- timeoutMs?: number;
12
- transport?: TransportFn;
13
- /**
14
- * Run the Anthropic thinking-signature check too. Opt-in: it costs one extra
15
- * generation and only applies to Claude models that support thinking.
16
- */
17
- checkSignature?: boolean;
18
- /**
19
- * Verify the endpoint's token accounting (billing inflation, and the
20
- * tokenizer band that doubles as a tier check). Opt-in: three extra requests.
21
- */
22
- checkTokenTruth?: boolean;
23
- /**
24
- * For models that cannot switch thinking off (Gemini 2.5 Pro by default),
25
- * reject a reply with no reasoning tokens: a cheaper tier under the pro
26
- * name. Opt-in: one extra short generation. Pass options to change the
27
- * model list or the floor.
28
- */
29
- checkThinkingFloor?: boolean | ThinkingFloorOptions;
30
- /**
31
- * Measure the input-token delta for a fixed text and compare it with the
32
- * tier signatures (haiku by default). Claude only, over either wire. Opt-in:
33
- * two short requests. Pass `{ signatures }` to supply your own calibration.
34
- */
35
- checkTokenizerFingerprint?: boolean | {
36
- signatures?: TierSignatures;
37
- };
38
- }): Promise<VerifyResult>;
39
- //# sourceMappingURL=runner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,mCAAmC,CAAC;AAY3C,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EACd,YAAY,EACb,MAAM,SAAS,CAAC;AAwOjB,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IACpD;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,OAAO,GAAG;QAAE,UAAU,CAAC,EAAE,cAAc,CAAA;KAAE,CAAC;CACvE,GAAG,OAAO,CAAC,YAAY,CAAC,CAmLxB"}
package/dist/runner.js DELETED
@@ -1,352 +0,0 @@
1
- import { checkThinkingSignature } from "./detectors/thinking-signature";
2
- import { checkTokenTruth } from "./detectors/token-truth";
3
- import { readResponseMetadata } from "./detectors/response-metadata";
4
- import { sampleThroughput } from "./detectors/throughput";
5
- import { probeThinkingFloor, } from "./detectors/thinking-floor";
6
- import { judgeTokenizerFingerprint, measureTokenizerFingerprint, } from "./detectors/tokenizer-fingerprint";
7
- import { providerForModel } from "./models";
8
- import { sleep } from "./internal/utils";
9
- import { echoesNonce, makeNonce } from "./nonce";
10
- import { runHandshake } from "./handshake";
11
- import { PROBES } from "./probes";
12
- import { normalizeProbeBaseUrl, PROVIDER_CONFIGS, } from "./providers/config";
13
- import { detectSignal, isTransientError } from "./signals";
14
- import { probeTransport } from "./transport";
15
- import { aggregateVerdict, probeReason } from "./verdict";
16
- const NONCE_MISMATCH_RETRIES = 2;
17
- const NONCE_MISMATCH_BACKOFF_MS = 500;
18
- const DEFAULT_TIMEOUT_MS = 30_000;
19
- const RESPONSE_CAP = 2000;
20
- const cap = (text) => text.length > RESPONSE_CAP ? `${text.slice(0, RESPONSE_CAP)}...` : text;
21
- async function runProbe(args) {
22
- const probe = args.probe;
23
- const started = performance.now();
24
- let lastPrompt = "";
25
- let weakNonce = null;
26
- for (let attempt = 0; attempt <= NONCE_MISMATCH_RETRIES; attempt++) {
27
- if (attempt > 0)
28
- await sleep(NONCE_MISMATCH_BACKOFF_MS);
29
- const nonce = makeNonce();
30
- lastPrompt = probe.buildPrompt(nonce);
31
- const built = args.cfg.buildRequest({
32
- baseUrl: args.baseUrl,
33
- apiKey: args.apiKey,
34
- model: args.model,
35
- prompt: lastPrompt,
36
- maxTokens: probe.maxTokens,
37
- direct: args.mode === "direct",
38
- });
39
- const res = await args.transport({
40
- mode: args.mode,
41
- url: built.url,
42
- headers: built.headers,
43
- reqBody: built.body,
44
- timeoutMs: args.timeoutMs,
45
- });
46
- if (res.error !== null) {
47
- const transient = res.corsBlocked ||
48
- isTransientError(res.error) ||
49
- (res.status !== null && isTransientError(`HTTP ${res.status}`));
50
- return {
51
- label: probe.label,
52
- pass: false,
53
- signal: null,
54
- muxFailure: false,
55
- transient,
56
- latencyMs: Math.round(performance.now() - started),
57
- prompt: lastPrompt,
58
- responseText: null,
59
- httpStatus: res.status,
60
- usage: null,
61
- detectedModel: null,
62
- reason: probeReason(false, null, false, transient),
63
- text: undefined,
64
- corsBlocked: res.corsBlocked,
65
- };
66
- }
67
- const text = args.cfg.extractText(res.data);
68
- if (text === null) {
69
- return {
70
- label: probe.label,
71
- pass: false,
72
- signal: null,
73
- muxFailure: false,
74
- transient: false,
75
- latencyMs: Math.round(performance.now() - started),
76
- prompt: lastPrompt,
77
- responseText: null,
78
- httpStatus: res.status,
79
- usage: null,
80
- detectedModel: null,
81
- reason: "upstream error envelope",
82
- text: undefined,
83
- corsBlocked: false,
84
- };
85
- }
86
- if (!echoesNonce(text, nonce)) {
87
- if (text.trim().length > 0)
88
- weakNonce = { text, res: { data: res.data, status: res.status } };
89
- continue; // retry for a clean nonce echo first
90
- }
91
- const signal = detectSignal(text, probe.label, args.cfg.foreignIdentityPatterns, args.cfg.cloudModelNamePatterns, args.cfg.acceptsCloudHostIdentity);
92
- const meta = args.cfg.extractMeta(res.data);
93
- const pass = probe.evaluate(text, args.cfg);
94
- return {
95
- // Derived here because this is the only scope holding the raw payload;
96
- // the envelope facts are small, the payload itself is not carried.
97
- envelope: readResponseMetadata(res.data, args.cfg.provider),
98
- label: probe.label,
99
- pass,
100
- signal,
101
- muxFailure: false,
102
- transient: false,
103
- latencyMs: Math.round(performance.now() - started),
104
- prompt: lastPrompt,
105
- responseText: cap(text),
106
- httpStatus: res.status,
107
- usage: meta.usage,
108
- detectedModel: meta.detectedModel,
109
- reason: probeReason(pass, signal, false, false),
110
- text,
111
- corsBlocked: false,
112
- };
113
- }
114
- if (weakNonce) {
115
- const text = weakNonce.text;
116
- const signal = detectSignal(text, probe.label, args.cfg.foreignIdentityPatterns, args.cfg.cloudModelNamePatterns, args.cfg.acceptsCloudHostIdentity);
117
- const meta = args.cfg.extractMeta(weakNonce.res.data);
118
- const pass = probe.evaluate(text, args.cfg);
119
- return {
120
- label: probe.label,
121
- pass,
122
- signal,
123
- muxFailure: false,
124
- transient: false,
125
- latencyMs: Math.round(performance.now() - started),
126
- prompt: lastPrompt,
127
- responseText: cap(text),
128
- httpStatus: weakNonce.res.status,
129
- usage: meta.usage,
130
- detectedModel: meta.detectedModel,
131
- reason: pass
132
- ? "passed (no nonce echo)"
133
- : probeReason(pass, signal, false, false),
134
- text,
135
- corsBlocked: false,
136
- };
137
- }
138
- return {
139
- label: probe.label,
140
- pass: false,
141
- signal: null,
142
- muxFailure: true,
143
- transient: false,
144
- latencyMs: Math.round(performance.now() - started),
145
- prompt: lastPrompt,
146
- responseText: null,
147
- httpStatus: null,
148
- usage: null,
149
- detectedModel: null,
150
- reason: probeReason(false, null, true, false),
151
- text: undefined,
152
- corsBlocked: false,
153
- };
154
- }
155
- function sumUsage(usages) {
156
- const present = usages.filter((u) => u !== null);
157
- if (present.length === 0)
158
- return null;
159
- const add = (key) => {
160
- const vals = present
161
- .map((u) => u[key])
162
- .filter((v) => v !== null);
163
- return vals.length > 0 ? vals.reduce((a, b) => a + b, 0) : null;
164
- };
165
- return {
166
- prompt: add("prompt"),
167
- completion: add("completion"),
168
- total: add("total"),
169
- };
170
- }
171
- function hostOf(baseUrl) {
172
- try {
173
- return new URL(baseUrl).host;
174
- }
175
- catch {
176
- return baseUrl;
177
- }
178
- }
179
- function connectivityResult(opts, error, corsBlocked, startedAt) {
180
- return {
181
- provider: opts.provider,
182
- model: opts.model,
183
- baseUrlHost: hostOf(opts.baseUrl),
184
- verdict: "unverified",
185
- versionUnverifiable: false,
186
- probes: [],
187
- reasons: [error],
188
- probesPassed: 0,
189
- probesTotal: 0,
190
- latencyMs: Math.round(performance.now() - startedAt),
191
- transport: opts.mode,
192
- corsBlocked,
193
- detectedModel: null,
194
- totalUsage: null,
195
- resolvedProvider: opts.provider,
196
- connectivityError: error,
197
- };
198
- }
199
- export async function runVerification(opts) {
200
- const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
201
- const transport = opts.transport ?? probeTransport;
202
- const started = performance.now();
203
- const hs = await runHandshake({
204
- provider: opts.provider,
205
- baseUrl: opts.baseUrl,
206
- apiKey: opts.apiKey,
207
- model: opts.model,
208
- mode: opts.mode,
209
- timeoutMs,
210
- transport,
211
- });
212
- if (!hs.ok)
213
- return connectivityResult(opts, hs.reason, hs.corsBlocked, started);
214
- const resolvedProvider = hs.resolvedProvider;
215
- const cfg = PROVIDER_CONFIGS[resolvedProvider];
216
- const results = await Promise.all(PROBES.map((probe) => runProbe({
217
- probe,
218
- cfg,
219
- baseUrl: opts.baseUrl,
220
- apiKey: opts.apiKey,
221
- model: opts.model,
222
- mode: hs.mode,
223
- timeoutMs,
224
- transport,
225
- })));
226
- // Runs concurrently with nothing else pending, after the probes, so a
227
- // signature failure can never mask a probe result.
228
- const signature = opts.checkSignature && resolvedProvider === "anthropic"
229
- ? await checkThinkingSignature({
230
- transport,
231
- baseUrl: normalizeProbeBaseUrl(opts.baseUrl),
232
- apiKey: opts.apiKey,
233
- model: opts.model,
234
- timeoutMs,
235
- })
236
- : undefined;
237
- const tokenTruth = opts.checkTokenTruth && resolvedProvider === "anthropic"
238
- ? await checkTokenTruth({
239
- transport,
240
- baseUrl: normalizeProbeBaseUrl(opts.baseUrl),
241
- apiKey: opts.apiKey,
242
- model: opts.model,
243
- timeoutMs,
244
- })
245
- : undefined;
246
- const thinkingFloor = opts.checkThinkingFloor &&
247
- (resolvedProvider === "openai" || resolvedProvider === "gemini")
248
- ? await probeThinkingFloor({
249
- transport,
250
- baseUrl: normalizeProbeBaseUrl(opts.baseUrl),
251
- apiKey: opts.apiKey,
252
- model: opts.model,
253
- provider: resolvedProvider,
254
- timeoutMs,
255
- options: typeof opts.checkThinkingFloor === "object"
256
- ? opts.checkThinkingFloor
257
- : undefined,
258
- })
259
- : undefined;
260
- const tokenizerFingerprint = opts.checkTokenizerFingerprint &&
261
- providerForModel(opts.model) === "anthropic" &&
262
- resolvedProvider !== "gemini"
263
- ? await measureTokenizerFingerprint({
264
- transport,
265
- baseUrl: normalizeProbeBaseUrl(opts.baseUrl),
266
- apiKey: opts.apiKey,
267
- model: opts.model,
268
- wire: resolvedProvider === "anthropic" ? "anthropic" : "openai",
269
- timeoutMs,
270
- signatures: typeof opts.checkTokenizerFingerprint === "object"
271
- ? opts.checkTokenizerFingerprint.signatures
272
- : undefined,
273
- })
274
- : undefined;
275
- // Free metadata: derived from probe responses we already paid for.
276
- const richest = results.reduce((best, r) => (r.usage?.completion ?? 0) > (best?.usage?.completion ?? 0) ? r : best, null);
277
- const responseMetadata = richest?.envelope;
278
- const throughput = richest
279
- ? sampleThroughput({
280
- lane: hostOf(opts.baseUrl),
281
- model: opts.model,
282
- outputTokens: richest.usage?.completion ?? null,
283
- elapsedMs: richest.latencyMs,
284
- })
285
- : null;
286
- const detectedModel = results.find((r) => r.detectedModel)?.detectedModel ?? null;
287
- const aggregated = aggregateVerdict({
288
- model: opts.model,
289
- cfg,
290
- results,
291
- detectedModel,
292
- });
293
- // The floor is hard evidence the probes cannot see: the reply echoed the
294
- // right name and read fine, it just never thought.
295
- const fingerprintTier = tokenizerFingerprint && cfg.tiers
296
- ? judgeTokenizerFingerprint(opts.model, tokenizerFingerprint, cfg.tiers)
297
- : null;
298
- const verdict = thinkingFloor?.state === "no-thinking"
299
- ? {
300
- ...aggregated,
301
- verdict: "suspicious",
302
- reasons: [`no-thinking: ${thinkingFloor.reason}`],
303
- }
304
- : fingerprintTier
305
- ? {
306
- ...aggregated,
307
- verdict: "suspicious",
308
- reasons: [
309
- `tokenizer-fingerprint: delta ${tokenizerFingerprint.delta} is the ${fingerprintTier} signature, requested ${opts.model}`,
310
- ],
311
- }
312
- : aggregated;
313
- const corsBlocked = hs.mode === "direct" && results.some((r) => r.corsBlocked);
314
- return {
315
- provider: opts.provider,
316
- model: opts.model,
317
- baseUrlHost: hostOf(opts.baseUrl),
318
- verdict: verdict.verdict,
319
- versionUnverifiable: verdict.versionUnverifiable,
320
- probes: results.map((r) => ({
321
- label: r.label,
322
- pass: r.pass,
323
- signal: r.signal,
324
- muxFailure: r.muxFailure,
325
- transient: r.transient,
326
- latencyMs: r.latencyMs,
327
- prompt: r.prompt,
328
- responseText: r.responseText,
329
- httpStatus: r.httpStatus,
330
- usage: r.usage,
331
- detectedModel: r.detectedModel,
332
- reason: r.reason,
333
- })),
334
- reasons: verdict.reasons,
335
- probesPassed: results.filter((r) => r.pass).length,
336
- probesTotal: results.length,
337
- latencyMs: Math.round(performance.now() - started),
338
- transport: hs.mode,
339
- corsBlocked,
340
- detectedModel,
341
- totalUsage: sumUsage(results.map((r) => r.usage)),
342
- resolvedProvider,
343
- ...(signature ? { signature } : {}),
344
- ...(tokenTruth ? { tokenTruth } : {}),
345
- ...(thinkingFloor ? { thinkingFloor } : {}),
346
- ...(tokenizerFingerprint ? { tokenizerFingerprint } : {}),
347
- ...(responseMetadata ? { responseMetadata } : {}),
348
- ...(throughput ? { throughput } : {}),
349
- connectivityError: null,
350
- };
351
- }
352
- //# sourceMappingURL=runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/dist/signals.d.ts DELETED
@@ -1,11 +0,0 @@
1
- import type { ProbeLabel, ProbeSignal } from "./types";
2
- export declare const includesAny: (text: string, patterns: string[]) => boolean;
3
- export declare const hasCodingToolRefusal: (text: string) => boolean;
4
- export declare const hasScamPage: (text: string) => boolean;
5
- export declare function cjkLeak(text: string): boolean;
6
- export declare function hasForeignIdentity(text: string, foreignPatterns: string[], cloudModelNamePatterns: string[], probe: ProbeLabel): boolean;
7
- export declare function tierOf(text: string, tiers: readonly string[]): string | null;
8
- export declare function detectTierMismatch(requestedModel: string, modelNameText: string | undefined, tiers: readonly string[]): string | null;
9
- export declare function detectSignal(text: string, probeLabel: ProbeLabel, foreignPatterns: string[], cloudModelNamePatterns: string[], acceptsCloudHostIdentity: boolean): ProbeSignal;
10
- export declare function isTransientError(msg: string): boolean;
11
- //# sourceMappingURL=signals.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../src/signals.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvD,eAAO,MAAM,WAAW,SAAU,MAAM,YAAY,MAAM,EAAE,YACpB,CAAC;AAEzC,eAAO,MAAM,oBAAoB,SAAU,MAAM,YAEA,CAAC;AAElD,eAAO,MAAM,WAAW,SAAU,MAAM,YACD,CAAC;AAExC,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG7C;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,EAAE,EACzB,sBAAsB,EAAE,MAAM,EAAE,EAChC,KAAK,EAAE,UAAU,GAChB,OAAO,CAKT;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAG5E;AAED,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,MAAM,GAAG,IAAI,CAOf;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,MAAM,EAAE,EACzB,sBAAsB,EAAE,MAAM,EAAE,EAChC,wBAAwB,EAAE,OAAO,GAChC,WAAW,CAuBb;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAYrD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"signals.js","sourceRoot":"","sources":["../src/signals.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"substitution.d.ts","sourceRoot":"","sources":["../src/substitution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOtE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACvC,MAAM,GAAG,IAAI,CAGf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"substitution.js","sourceRoot":"","sources":["../src/substitution.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,MAAc;IAC3D,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CACzB,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAC9D,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,aAAwC;IAExC,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;AACtE,CAAC"}