visual-ai-assertions 0.19.0 → 0.20.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 CHANGED
@@ -579,6 +579,7 @@ Any [OpenRouter](https://openrouter.ai/models) model slug (always `vendor/model`
579
579
 
580
580
  | Model | Model ID | Input $/MTok | Output $/MTok | Notes |
581
581
  | -------------- | --------------------------- | ------------ | ------------- | ------------------------------------- |
582
+ | Muse Spark 1.3 | `meta/muse-spark-1.3` | $1.25 | $4.25 | Meta flagship, 1M context; gated¹ |
582
583
  | Grok 4.6 | `x-ai/grok-4.6` | $2 | $6 | Newest xAI flagship, 500K context |
583
584
  | Grok 4.5 | `x-ai/grok-4.5` | $2 | $6 | Prior xAI flagship, 500K context |
584
585
  | Kimi K3 | `moonshotai/kimi-k3` | $3 | $15 | Moonshot flagship, 1M context |
@@ -587,6 +588,10 @@ Any [OpenRouter](https://openrouter.ai/models) model slug (always `vendor/model`
587
588
  | Qwen3.7 Plus | `qwen/qwen3.7-plus` | $0.32 | $1.28 | Cost-effective, GUI/screen-reading |
588
589
  | Qwen3.6 Flash | `qwen/qwen3.6-flash` | $0.19 | $1.13 | **Default** — cheap flash vision tier |
589
590
 
591
+ ¹ Muse Spark 1.3 is age-gated by OpenRouter: calls return HTTP 403 (`VisualAIAuthError`) until the account completes the 18+ confirmation at [openrouter.ai/settings/preferences](https://openrouter.ai/settings/preferences). It also reasons by default — expect several hundred reasoning tokens per call even with no `reasoningEffort` set.
592
+
593
+ Meta also publishes `meta/muse-spark-1.3-contributor`, the same model at $0.10 / $0.20 per MTok — about 12x cheaper — because Meta uses everything submitted through it for product improvement. It has **no named constant** (`Model.OpenRouter` does not expose it) and never appears by default anywhere in this library, so using it takes a deliberate, explicit choice: pass the slug directly as a plain string, `visualAI({ model: "meta/muse-spark-1.3-contributor" })`. Any OpenRouter slug works this way — see the note above the table — and cost tracking works correctly once you opt in. OpenRouter itself blocks it with HTTP 404 (`paid-model-training-violation-by-account`) until the account's privacy settings allow training endpoints, at [openrouter.ai/settings/privacy](https://openrouter.ai/settings/privacy). Only use it if sending your screenshots to Meta for training is a trade you've deliberately made.
594
+
590
595
  `qwen/qwen3.7-max` and the DeepSeek V4 family (`deepseek/deepseek-v4-pro`, `deepseek/deepseek-v4-flash`, and dated variants such as `deepseek/deepseek-v4-pro-0813`) are not listed because they accept no image input on OpenRouter.
591
596
 
592
597
  ## License
package/dist/index.cjs CHANGED
@@ -126,6 +126,7 @@ var Model = {
126
126
  * recognizes them. All listed models accept image input.
127
127
  */
128
128
  OpenRouter: {
129
+ MUSE_SPARK_1_3: "meta/muse-spark-1.3",
129
130
  GROK_4_6: "x-ai/grok-4.6",
130
131
  GROK_4_5: "x-ai/grok-4.5",
131
132
  KIMI_K3: "moonshotai/kimi-k3",
@@ -1263,8 +1264,26 @@ var PRICING_TABLE = {
1263
1264
  inputPricePerToken: 0.5 / PER_MILLION,
1264
1265
  outputPricePerToken: 3 / PER_MILLION
1265
1266
  },
1266
- // OpenRouter passes through upstream per-model pricing (verified 2026-07-22
1267
+ // OpenRouter passes through upstream per-model pricing (verified 2026-09-03
1267
1268
  // against https://openrouter.ai/api/v1/models).
1269
+ // Meta's own listed rates ($1.25 / $4.25, cached input $0.15) match
1270
+ // OpenRouter's pass-through exactly. Cached input is not modelled here:
1271
+ // `calculateCost` applies no cache discount on any provider.
1272
+ [`${Provider.OPENROUTER}:${Model.OpenRouter.MUSE_SPARK_1_3}`]: {
1273
+ inputPricePerToken: 1.25 / PER_MILLION,
1274
+ outputPricePerToken: 4.25 / PER_MILLION
1275
+ },
1276
+ // Muse Spark 1.3's data-sharing tier: same model, ~12x cheaper, because
1277
+ // Meta trains on everything submitted through it. Deliberately keyed by the
1278
+ // literal slug rather than a `Model.OpenRouter` entry — it must never be
1279
+ // reachable via autocomplete or default selection. Pass the string yourself
1280
+ // (`model: "meta/muse-spark-1.3-contributor"`) to opt in; cost is still
1281
+ // tracked correctly once you do. Cached input is $0.002/MTok, not modelled
1282
+ // (no provider gets a cache discount here).
1283
+ [`${Provider.OPENROUTER}:meta/muse-spark-1.3-contributor`]: {
1284
+ inputPricePerToken: 0.1 / PER_MILLION,
1285
+ outputPricePerToken: 0.2 / PER_MILLION
1286
+ },
1268
1287
  [`${Provider.OPENROUTER}:${Model.OpenRouter.GROK_4_6}`]: {
1269
1288
  inputPricePerToken: 2 / PER_MILLION,
1270
1289
  outputPricePerToken: 6 / PER_MILLION