@warmdrift/kgauto-compiler 2.0.0-alpha.98 → 2.0.0-alpha.99

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 (37) hide show
  1. package/dist/{chunk-77AHSX6Y.mjs → chunk-2YCTWV4S.mjs} +1 -1
  2. package/dist/{chunk-KZNTCMGM.mjs → chunk-G33BUB43.mjs} +15 -6
  3. package/dist/{chunk-KENTOSJO.mjs → chunk-L3VBUB4I.mjs} +1 -1
  4. package/dist/{chunk-HHIXHL4O.mjs → chunk-PY4CBZFF.mjs} +12 -2
  5. package/dist/{compile-C2IfAGV1.d.mts → compile-hh_l7COL.d.mts} +1 -1
  6. package/dist/{compile-BlMXv6QT.d.ts → compile-nNpq-6yu.d.ts} +1 -1
  7. package/dist/glassbox/index.d.mts +3 -3
  8. package/dist/glassbox/index.d.ts +3 -3
  9. package/dist/glassbox-routes/format.d.mts +2 -2
  10. package/dist/glassbox-routes/format.d.ts +2 -2
  11. package/dist/glassbox-routes/index.d.mts +4 -4
  12. package/dist/glassbox-routes/index.d.ts +4 -4
  13. package/dist/glassbox-routes/index.js +12 -2
  14. package/dist/glassbox-routes/index.mjs +2 -2
  15. package/dist/glassbox-routes/react/index.d.mts +2 -2
  16. package/dist/glassbox-routes/react/index.d.ts +2 -2
  17. package/dist/index.d.mts +4 -4
  18. package/dist/index.d.ts +4 -4
  19. package/dist/index.js +26 -7
  20. package/dist/index.mjs +4 -4
  21. package/dist/{ir-DyMJ84je.d.mts → ir-BZ2qOPMp.d.mts} +13 -0
  22. package/dist/{ir-DbvOFKF-.d.ts → ir-CpkidtAd.d.ts} +13 -0
  23. package/dist/key-health.js +1 -1
  24. package/dist/key-health.mjs +1 -1
  25. package/dist/probe.d.mts +2 -2
  26. package/dist/probe.d.ts +2 -2
  27. package/dist/probe.js +25 -6
  28. package/dist/probe.mjs +3 -3
  29. package/dist/profiles.d.mts +1 -1
  30. package/dist/profiles.d.ts +1 -1
  31. package/dist/profiles.js +12 -2
  32. package/dist/profiles.mjs +1 -1
  33. package/dist/{types-D441T-KC.d.mts → types-BkdfoONZ.d.mts} +1 -1
  34. package/dist/{types-5TqjBeZD.d.ts → types-Bn-zF0S4.d.ts} +1 -1
  35. package/dist/{types-_myk4bxn.d.mts → types-DJFlO7ux.d.mts} +1 -1
  36. package/dist/{types-BlrbNQfj.d.ts → types-uWypgaAU.d.ts} +1 -1
  37. package/package.json +1 -1
@@ -2,7 +2,7 @@ import {
2
2
  allProfiles,
3
3
  resolveModelAlias,
4
4
  tryGetProfile
5
- } from "./chunk-HHIXHL4O.mjs";
5
+ } from "./chunk-PY4CBZFF.mjs";
6
6
 
7
7
  // src/brain-query.ts
8
8
  var FRESH_SNAPSHOT = {
@@ -9,7 +9,7 @@ import {
9
9
  getModelCompatibility,
10
10
  isBrainQueryActiveFor,
11
11
  policySetHas
12
- } from "./chunk-77AHSX6Y.mjs";
12
+ } from "./chunk-2YCTWV4S.mjs";
13
13
  import {
14
14
  bucketContext,
15
15
  bucketHistory,
@@ -30,7 +30,7 @@ import {
30
30
  latencyTierOf,
31
31
  resolveModelAlias,
32
32
  tryGetProfile
33
- } from "./chunk-HHIXHL4O.mjs";
33
+ } from "./chunk-PY4CBZFF.mjs";
34
34
 
35
35
  // src/models-brain.ts
36
36
  function isModelRow(x) {
@@ -2821,7 +2821,7 @@ function lowerGoogle(ir, profile, hints) {
2821
2821
  if (hints.forceTerseOutput) {
2822
2822
  generationConfig.maxOutputTokens = 200;
2823
2823
  }
2824
- if (ir.constraints?.structuredOutput && profile.structuredOutput === "native") {
2824
+ if (ir.constraints?.structuredOutput && profile.structuredOutput !== "none") {
2825
2825
  generationConfig.responseMimeType = "application/json";
2826
2826
  }
2827
2827
  const contents = buildGoogleContents(ir.history ?? [], ir.currentTurn);
@@ -2880,7 +2880,9 @@ function toGoogleTools(tools) {
2880
2880
  }
2881
2881
  function lowerOpenAI(ir, profile, hints) {
2882
2882
  const ordered = sortSections(ir.sections);
2883
- const systemText = ordered.map((s) => s.text).join("\n\n");
2883
+ const sectionText = ordered.map((s) => s.text).join("\n\n");
2884
+ const jsonInstruction = ir.constraints?.structuredOutput ? "Respond with a single valid JSON value and nothing else. Do not wrap the JSON in a markdown code fence, and do not add any prose before or after it." : "";
2885
+ const systemText = [sectionText, jsonInstruction].filter(Boolean).join("\n\n");
2884
2886
  const systemRole = profile.systemPromptMode === "as_developer" ? "developer" : "system";
2885
2887
  const messages = systemText ? [{ role: systemRole, content: systemText }] : [];
2886
2888
  for (const m of ir.history ?? []) {
@@ -2926,7 +2928,9 @@ function toOpenAITools(tools) {
2926
2928
  }
2927
2929
  function lowerDeepSeek(ir, profile, hints) {
2928
2930
  const ordered = sortSections(ir.sections);
2929
- const systemText = ordered.map((s) => s.text).join("\n\n");
2931
+ const sectionText = ordered.map((s) => s.text).join("\n\n");
2932
+ const jsonInstruction = ir.constraints?.structuredOutput ? "Respond with a single valid JSON value and nothing else. Do not wrap the JSON in a markdown code fence, and do not add any prose before or after it." : "";
2933
+ const systemText = [sectionText, jsonInstruction].filter(Boolean).join("\n\n");
2930
2934
  const messages = systemText ? [{ role: "system", content: systemText }] : [];
2931
2935
  for (const m of ir.history ?? []) {
2932
2936
  if (m.role === "system") continue;
@@ -2946,6 +2950,9 @@ function lowerDeepSeek(ir, profile, hints) {
2946
2950
  provider: "deepseek",
2947
2951
  model: profile.id,
2948
2952
  messages,
2953
+ // Safe only because `jsonInstruction` above guarantees the literal word
2954
+ // "json" reaches the prompt — DeepSeek 400s otherwise (measurement C).
2955
+ response_format: ir.constraints?.structuredOutput ? { type: "json_object" } : void 0,
2949
2956
  // Every tool the IR carries. Never fewer — see the note above.
2950
2957
  tools: ir.tools && ir.tools.length > 0 ? ir.tools.map((t) => ({
2951
2958
  type: "function",
@@ -2965,7 +2972,9 @@ function lowerDeepSeek(ir, profile, hints) {
2965
2972
  }
2966
2973
  function buildOpenAICompatibleParts(ir) {
2967
2974
  const ordered = sortSections(ir.sections);
2968
- const systemText = ordered.map((s) => s.text).join("\n\n");
2975
+ const sectionText = ordered.map((s) => s.text).join("\n\n");
2976
+ const jsonInstruction = ir.constraints?.structuredOutput ? "Respond with a single valid JSON value and nothing else. Do not wrap the JSON in a markdown code fence, and do not add any prose before or after it." : "";
2977
+ const systemText = [sectionText, jsonInstruction].filter(Boolean).join("\n\n");
2969
2978
  const messages = systemText ? [{ role: "system", content: systemText }] : [];
2970
2979
  for (const m of ir.history ?? []) {
2971
2980
  if (m.role === "system") continue;
@@ -1,5 +1,5 @@
1
1
  // src/version.ts
2
- var LIBRARY_VERSION = "2.0.0-alpha.98";
2
+ var LIBRARY_VERSION = "2.0.0-alpha.99";
3
3
 
4
4
  // src/key-health.ts
5
5
  var JSON_HEADERS = { "Content-Type": "application/json" };
@@ -805,7 +805,12 @@ var PROFILES_RAW = [
805
805
  // "7-8 calls per step" — which was never a claim that only one tool may be
806
806
  // offered. See the note in lower.ts:lowerDeepSeek.
807
807
  parallelToolCalls: true,
808
- structuredOutput: "native",
808
+ structuredOutput: "grammar",
809
+ // alpha.99 — MEASURED 2026-08-29: DeepSeek rejects
810
+ // `response_format: {type:'json_schema'}` outright ("This response_format type is
811
+ // unavailable now"), so there is no schema-enforced mode for `'native'` to name.
812
+ // It supports `json_object` only, and only when the prompt contains the literal
813
+ // word "json" — the lowering emits the instruction that guarantees it.
809
814
  systemPromptMode: "inline",
810
815
  streaming: true,
811
816
  // alpha.96 — the `tool_count@1 -> drop_to_top_relevant` cliff was DELETED.
@@ -899,7 +904,12 @@ var PROFILES_RAW = [
899
904
  // "7-8 calls per step" — which was never a claim that only one tool may be
900
905
  // offered. See the note in lower.ts:lowerDeepSeek.
901
906
  parallelToolCalls: true,
902
- structuredOutput: "native",
907
+ structuredOutput: "grammar",
908
+ // alpha.99 — MEASURED 2026-08-29: DeepSeek rejects
909
+ // `response_format: {type:'json_schema'}` outright ("This response_format type is
910
+ // unavailable now"), so there is no schema-enforced mode for `'native'` to name.
911
+ // It supports `json_object` only, and only when the prompt contains the literal
912
+ // word "json" — the lowering emits the instruction that guarantees it.
903
913
  systemPromptMode: "inline",
904
914
  streaming: true,
905
915
  // alpha.96 — the `tool_count@1 -> drop_to_top_relevant` cliff was DELETED.
@@ -1,4 +1,4 @@
1
- import { a as CompilePolicy } from './ir-DyMJ84je.mjs';
1
+ import { a as CompilePolicy } from './ir-BZ2qOPMp.mjs';
2
2
  import { ModelProfile } from './profiles.mjs';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { a as CompilePolicy } from './ir-DbvOFKF-.js';
1
+ import { a as CompilePolicy } from './ir-CpkidtAd.js';
2
2
  import { ModelProfile } from './profiles.js';
3
3
 
4
4
  /**
@@ -1,6 +1,6 @@
1
- import { G as GlassboxEvent } from '../types-_myk4bxn.mjs';
2
- export { A as AdvisoryFiredData, C as CompileDoneData, a as CompileStartData, E as ExecuteAttemptData, b as ExecuteSuccessData, F as FallbackWalkedData, c as GLASSBOX_STREAM_TTL_MS, d as GlassboxEventKind, e as GlassboxPubSub } from '../types-_myk4bxn.mjs';
3
- import '../ir-DyMJ84je.mjs';
1
+ import { G as GlassboxEvent } from '../types-DJFlO7ux.mjs';
2
+ export { A as AdvisoryFiredData, C as CompileDoneData, a as CompileStartData, E as ExecuteAttemptData, b as ExecuteSuccessData, F as FallbackWalkedData, c as GLASSBOX_STREAM_TTL_MS, d as GlassboxEventKind, e as GlassboxPubSub } from '../types-DJFlO7ux.mjs';
3
+ import '../ir-BZ2qOPMp.mjs';
4
4
  import '../dialect.mjs';
5
5
 
6
6
  /**
@@ -1,6 +1,6 @@
1
- import { G as GlassboxEvent } from '../types-BlrbNQfj.js';
2
- export { A as AdvisoryFiredData, C as CompileDoneData, a as CompileStartData, E as ExecuteAttemptData, b as ExecuteSuccessData, F as FallbackWalkedData, c as GLASSBOX_STREAM_TTL_MS, d as GlassboxEventKind, e as GlassboxPubSub } from '../types-BlrbNQfj.js';
3
- import '../ir-DbvOFKF-.js';
1
+ import { G as GlassboxEvent } from '../types-uWypgaAU.js';
2
+ export { A as AdvisoryFiredData, C as CompileDoneData, a as CompileStartData, E as ExecuteAttemptData, b as ExecuteSuccessData, F as FallbackWalkedData, c as GLASSBOX_STREAM_TTL_MS, d as GlassboxEventKind, e as GlassboxPubSub } from '../types-uWypgaAU.js';
3
+ import '../ir-CpkidtAd.js';
4
4
  import '../dialect.js';
5
5
 
6
6
  /**
@@ -1,5 +1,5 @@
1
- import { T as TraceHealth } from '../types-D441T-KC.mjs';
2
- import '../ir-DyMJ84je.mjs';
1
+ import { T as TraceHealth } from '../types-BkdfoONZ.mjs';
2
+ import '../ir-BZ2qOPMp.mjs';
3
3
  import '../dialect.mjs';
4
4
 
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { T as TraceHealth } from '../types-5TqjBeZD.js';
2
- import '../ir-DbvOFKF-.js';
1
+ import { T as TraceHealth } from '../types-Bn-zF0S4.js';
2
+ import '../ir-CpkidtAd.js';
3
3
  import '../dialect.js';
4
4
 
5
5
  /**
@@ -1,7 +1,7 @@
1
- import { G as GlassboxEvent } from '../types-_myk4bxn.mjs';
2
- import { a as TraceDetail, b as TraceSummary, c as TraceCounterfactual } from '../types-D441T-KC.mjs';
3
- export { A as AdvisoryRecord, T as TraceHealth, d as TraceSectionRewrite } from '../types-D441T-KC.mjs';
4
- import '../ir-DyMJ84je.mjs';
1
+ import { G as GlassboxEvent } from '../types-DJFlO7ux.mjs';
2
+ import { a as TraceDetail, b as TraceSummary, c as TraceCounterfactual } from '../types-BkdfoONZ.mjs';
3
+ export { A as AdvisoryRecord, T as TraceHealth, d as TraceSectionRewrite } from '../types-BkdfoONZ.mjs';
4
+ import '../ir-BZ2qOPMp.mjs';
5
5
  import '../dialect.mjs';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
- import { G as GlassboxEvent } from '../types-BlrbNQfj.js';
2
- import { a as TraceDetail, b as TraceSummary, c as TraceCounterfactual } from '../types-5TqjBeZD.js';
3
- export { A as AdvisoryRecord, T as TraceHealth, d as TraceSectionRewrite } from '../types-5TqjBeZD.js';
4
- import '../ir-DbvOFKF-.js';
1
+ import { G as GlassboxEvent } from '../types-uWypgaAU.js';
2
+ import { a as TraceDetail, b as TraceSummary, c as TraceCounterfactual } from '../types-Bn-zF0S4.js';
3
+ export { A as AdvisoryRecord, T as TraceHealth, d as TraceSectionRewrite } from '../types-Bn-zF0S4.js';
4
+ import '../ir-CpkidtAd.js';
5
5
  import '../dialect.js';
6
6
 
7
7
  /**
@@ -850,7 +850,12 @@ var PROFILES_RAW = [
850
850
  // "7-8 calls per step" — which was never a claim that only one tool may be
851
851
  // offered. See the note in lower.ts:lowerDeepSeek.
852
852
  parallelToolCalls: true,
853
- structuredOutput: "native",
853
+ structuredOutput: "grammar",
854
+ // alpha.99 — MEASURED 2026-08-29: DeepSeek rejects
855
+ // `response_format: {type:'json_schema'}` outright ("This response_format type is
856
+ // unavailable now"), so there is no schema-enforced mode for `'native'` to name.
857
+ // It supports `json_object` only, and only when the prompt contains the literal
858
+ // word "json" — the lowering emits the instruction that guarantees it.
854
859
  systemPromptMode: "inline",
855
860
  streaming: true,
856
861
  // alpha.96 — the `tool_count@1 -> drop_to_top_relevant` cliff was DELETED.
@@ -944,7 +949,12 @@ var PROFILES_RAW = [
944
949
  // "7-8 calls per step" — which was never a claim that only one tool may be
945
950
  // offered. See the note in lower.ts:lowerDeepSeek.
946
951
  parallelToolCalls: true,
947
- structuredOutput: "native",
952
+ structuredOutput: "grammar",
953
+ // alpha.99 — MEASURED 2026-08-29: DeepSeek rejects
954
+ // `response_format: {type:'json_schema'}` outright ("This response_format type is
955
+ // unavailable now"), so there is no schema-enforced mode for `'native'` to name.
956
+ // It supports `json_object` only, and only when the prompt contains the literal
957
+ // word "json" — the lowering emits the instruction that guarantees it.
948
958
  systemPromptMode: "inline",
949
959
  streaming: true,
950
960
  // alpha.96 — the `tool_count@1 -> drop_to_top_relevant` cliff was DELETED.
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  ARCHETYPE_FLOOR_DEFAULT,
3
3
  getDefaultFallbackChain
4
- } from "../chunk-77AHSX6Y.mjs";
4
+ } from "../chunk-2YCTWV4S.mjs";
5
5
  import {
6
6
  tryGetProfile
7
- } from "../chunk-HHIXHL4O.mjs";
7
+ } from "../chunk-PY4CBZFF.mjs";
8
8
  import {
9
9
  subscribe,
10
10
  subscribeApp
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { a as TraceDetail } from '../../types-D441T-KC.mjs';
3
- import '../../ir-DyMJ84je.mjs';
2
+ import { a as TraceDetail } from '../../types-BkdfoONZ.mjs';
3
+ import '../../ir-BZ2qOPMp.mjs';
4
4
  import '../../dialect.mjs';
5
5
 
6
6
  /**
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { a as TraceDetail } from '../../types-5TqjBeZD.js';
3
- import '../../ir-DbvOFKF-.js';
2
+ import { a as TraceDetail } from '../../types-Bn-zF0S4.js';
3
+ import '../../ir-CpkidtAd.js';
4
4
  import '../../dialect.js';
5
5
 
6
6
  /**
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
- import { C as CompileOptions } from './compile-C2IfAGV1.mjs';
2
- import { N as NormalizedResponse, A as ApiKeys, P as ProviderOverrides, C as CompiledRequest, a as CompilePolicy, b as PromptIR, c as CallOptions, d as CallResult, S as SystemModelMessage, e as CompileResult, B as BestPracticeAdvisory, F as FallbackReason, f as SectionRewrite, R as RecordInput, g as RecordOutcomeInput, O as OutcomeResult, h as OutcomeSource, i as OracleScore, j as Adapter, k as PerAxisMetrics, l as Provider, m as ChainEntry, G as Grounding } from './ir-DyMJ84je.mjs';
3
- export { n as CallAttempt, o as CallError, p as ChainModelEntry, q as ChainWithGrounding, r as Constraints, E as EffortLevel, s as GoldenCaptureOptions, H as HistoryCachePolicy, I as IntentDeclaration, M as Message, t as MutationApplied, u as NormalizedTokens, v as OutcomeKind, w as PerAxisMetricsByModel, x as PromptSection, y as SectionKind, z as ShadowProbeConfig, T as ToolCall, D as ToolDefinition, J as captureGoldenIr, K as hasMutation, L as mutationId, Q as parseGoldenCaptureRate, U as resolveGoldenCaptureRate, V as shouldCaptureGolden } from './ir-DyMJ84je.mjs';
1
+ import { C as CompileOptions } from './compile-hh_l7COL.mjs';
2
+ import { N as NormalizedResponse, A as ApiKeys, P as ProviderOverrides, C as CompiledRequest, a as CompilePolicy, b as PromptIR, c as CallOptions, d as CallResult, S as SystemModelMessage, e as CompileResult, B as BestPracticeAdvisory, F as FallbackReason, f as SectionRewrite, R as RecordInput, g as RecordOutcomeInput, O as OutcomeResult, h as OutcomeSource, i as OracleScore, j as Adapter, k as PerAxisMetrics, l as Provider, m as ChainEntry, G as Grounding } from './ir-BZ2qOPMp.mjs';
3
+ export { n as CallAttempt, o as CallError, p as ChainModelEntry, q as ChainWithGrounding, r as Constraints, E as EffortLevel, s as GoldenCaptureOptions, H as HistoryCachePolicy, I as IntentDeclaration, M as Message, t as MutationApplied, u as NormalizedTokens, v as OutcomeKind, w as PerAxisMetricsByModel, x as PromptSection, y as SectionKind, z as ShadowProbeConfig, T as ToolCall, D as ToolDefinition, J as captureGoldenIr, K as hasMutation, L as mutationId, Q as parseGoldenCaptureRate, U as resolveGoldenCaptureRate, V as shouldCaptureGolden } from './ir-BZ2qOPMp.mjs';
4
4
  export { BrainForwardConfig, BrainForwardRoutes, createBrainForwardRoutes } from './brain-proxy.mjs';
5
5
  export { KEY_FINGERPRINT_DOMAIN, KEY_FINGERPRINT_LENGTH, KeyHealthConfig, KeyHealthProvider, KeyHealthResponseBody, KeyHealthResult, KeyHealthRoute, createKeyHealthRoute, keyFingerprint } from './key-health.mjs';
6
6
  import { ModelProfile, ArchetypeConvention, ProbedLimit } from './profiles.mjs';
@@ -1241,7 +1241,7 @@ declare function runStrategyEvalWithAttribution(opts: Omit<GoldenEvalOptions, 'a
1241
1241
  * guard in `tests/version.test.ts` fails the suite (and therefore
1242
1242
  * `prepublishOnly`) when they diverge — a stale constant cannot reach npm.
1243
1243
  */
1244
- declare const LIBRARY_VERSION = "2.0.0-alpha.98";
1244
+ declare const LIBRARY_VERSION = "2.0.0-alpha.99";
1245
1245
 
1246
1246
  /**
1247
1247
  * Oracle contract — how an app tells the brain whether a response was good.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { C as CompileOptions } from './compile-BlMXv6QT.js';
2
- import { N as NormalizedResponse, A as ApiKeys, P as ProviderOverrides, C as CompiledRequest, a as CompilePolicy, b as PromptIR, c as CallOptions, d as CallResult, S as SystemModelMessage, e as CompileResult, B as BestPracticeAdvisory, F as FallbackReason, f as SectionRewrite, R as RecordInput, g as RecordOutcomeInput, O as OutcomeResult, h as OutcomeSource, i as OracleScore, j as Adapter, k as PerAxisMetrics, l as Provider, m as ChainEntry, G as Grounding } from './ir-DbvOFKF-.js';
3
- export { n as CallAttempt, o as CallError, p as ChainModelEntry, q as ChainWithGrounding, r as Constraints, E as EffortLevel, s as GoldenCaptureOptions, H as HistoryCachePolicy, I as IntentDeclaration, M as Message, t as MutationApplied, u as NormalizedTokens, v as OutcomeKind, w as PerAxisMetricsByModel, x as PromptSection, y as SectionKind, z as ShadowProbeConfig, T as ToolCall, D as ToolDefinition, J as captureGoldenIr, K as hasMutation, L as mutationId, Q as parseGoldenCaptureRate, U as resolveGoldenCaptureRate, V as shouldCaptureGolden } from './ir-DbvOFKF-.js';
1
+ import { C as CompileOptions } from './compile-nNpq-6yu.js';
2
+ import { N as NormalizedResponse, A as ApiKeys, P as ProviderOverrides, C as CompiledRequest, a as CompilePolicy, b as PromptIR, c as CallOptions, d as CallResult, S as SystemModelMessage, e as CompileResult, B as BestPracticeAdvisory, F as FallbackReason, f as SectionRewrite, R as RecordInput, g as RecordOutcomeInput, O as OutcomeResult, h as OutcomeSource, i as OracleScore, j as Adapter, k as PerAxisMetrics, l as Provider, m as ChainEntry, G as Grounding } from './ir-CpkidtAd.js';
3
+ export { n as CallAttempt, o as CallError, p as ChainModelEntry, q as ChainWithGrounding, r as Constraints, E as EffortLevel, s as GoldenCaptureOptions, H as HistoryCachePolicy, I as IntentDeclaration, M as Message, t as MutationApplied, u as NormalizedTokens, v as OutcomeKind, w as PerAxisMetricsByModel, x as PromptSection, y as SectionKind, z as ShadowProbeConfig, T as ToolCall, D as ToolDefinition, J as captureGoldenIr, K as hasMutation, L as mutationId, Q as parseGoldenCaptureRate, U as resolveGoldenCaptureRate, V as shouldCaptureGolden } from './ir-CpkidtAd.js';
4
4
  export { BrainForwardConfig, BrainForwardRoutes, createBrainForwardRoutes } from './brain-proxy.js';
5
5
  export { KEY_FINGERPRINT_DOMAIN, KEY_FINGERPRINT_LENGTH, KeyHealthConfig, KeyHealthProvider, KeyHealthResponseBody, KeyHealthResult, KeyHealthRoute, createKeyHealthRoute, keyFingerprint } from './key-health.js';
6
6
  import { ModelProfile, ArchetypeConvention, ProbedLimit } from './profiles.js';
@@ -1241,7 +1241,7 @@ declare function runStrategyEvalWithAttribution(opts: Omit<GoldenEvalOptions, 'a
1241
1241
  * guard in `tests/version.test.ts` fails the suite (and therefore
1242
1242
  * `prepublishOnly`) when they diverge — a stale constant cannot reach npm.
1243
1243
  */
1244
- declare const LIBRARY_VERSION = "2.0.0-alpha.98";
1244
+ declare const LIBRARY_VERSION = "2.0.0-alpha.99";
1245
1245
 
1246
1246
  /**
1247
1247
  * Oracle contract — how an app tells the brain whether a response was good.
package/dist/index.js CHANGED
@@ -1170,7 +1170,12 @@ var PROFILES_RAW = [
1170
1170
  // "7-8 calls per step" — which was never a claim that only one tool may be
1171
1171
  // offered. See the note in lower.ts:lowerDeepSeek.
1172
1172
  parallelToolCalls: true,
1173
- structuredOutput: "native",
1173
+ structuredOutput: "grammar",
1174
+ // alpha.99 — MEASURED 2026-08-29: DeepSeek rejects
1175
+ // `response_format: {type:'json_schema'}` outright ("This response_format type is
1176
+ // unavailable now"), so there is no schema-enforced mode for `'native'` to name.
1177
+ // It supports `json_object` only, and only when the prompt contains the literal
1178
+ // word "json" — the lowering emits the instruction that guarantees it.
1174
1179
  systemPromptMode: "inline",
1175
1180
  streaming: true,
1176
1181
  // alpha.96 — the `tool_count@1 -> drop_to_top_relevant` cliff was DELETED.
@@ -1264,7 +1269,12 @@ var PROFILES_RAW = [
1264
1269
  // "7-8 calls per step" — which was never a claim that only one tool may be
1265
1270
  // offered. See the note in lower.ts:lowerDeepSeek.
1266
1271
  parallelToolCalls: true,
1267
- structuredOutput: "native",
1272
+ structuredOutput: "grammar",
1273
+ // alpha.99 — MEASURED 2026-08-29: DeepSeek rejects
1274
+ // `response_format: {type:'json_schema'}` outright ("This response_format type is
1275
+ // unavailable now"), so there is no schema-enforced mode for `'native'` to name.
1276
+ // It supports `json_object` only, and only when the prompt contains the literal
1277
+ // word "json" — the lowering emits the instruction that guarantees it.
1268
1278
  systemPromptMode: "inline",
1269
1279
  streaming: true,
1270
1280
  // alpha.96 — the `tool_count@1 -> drop_to_top_relevant` cliff was DELETED.
@@ -4028,7 +4038,7 @@ function lowerGoogle(ir, profile, hints) {
4028
4038
  if (hints.forceTerseOutput) {
4029
4039
  generationConfig.maxOutputTokens = 200;
4030
4040
  }
4031
- if (ir.constraints?.structuredOutput && profile.structuredOutput === "native") {
4041
+ if (ir.constraints?.structuredOutput && profile.structuredOutput !== "none") {
4032
4042
  generationConfig.responseMimeType = "application/json";
4033
4043
  }
4034
4044
  const contents = buildGoogleContents(ir.history ?? [], ir.currentTurn);
@@ -4087,7 +4097,9 @@ function toGoogleTools(tools) {
4087
4097
  }
4088
4098
  function lowerOpenAI(ir, profile, hints) {
4089
4099
  const ordered = sortSections(ir.sections);
4090
- const systemText = ordered.map((s) => s.text).join("\n\n");
4100
+ const sectionText = ordered.map((s) => s.text).join("\n\n");
4101
+ const jsonInstruction = ir.constraints?.structuredOutput ? "Respond with a single valid JSON value and nothing else. Do not wrap the JSON in a markdown code fence, and do not add any prose before or after it." : "";
4102
+ const systemText = [sectionText, jsonInstruction].filter(Boolean).join("\n\n");
4091
4103
  const systemRole = profile.systemPromptMode === "as_developer" ? "developer" : "system";
4092
4104
  const messages = systemText ? [{ role: systemRole, content: systemText }] : [];
4093
4105
  for (const m of ir.history ?? []) {
@@ -4133,7 +4145,9 @@ function toOpenAITools(tools) {
4133
4145
  }
4134
4146
  function lowerDeepSeek(ir, profile, hints) {
4135
4147
  const ordered = sortSections(ir.sections);
4136
- const systemText = ordered.map((s) => s.text).join("\n\n");
4148
+ const sectionText = ordered.map((s) => s.text).join("\n\n");
4149
+ const jsonInstruction = ir.constraints?.structuredOutput ? "Respond with a single valid JSON value and nothing else. Do not wrap the JSON in a markdown code fence, and do not add any prose before or after it." : "";
4150
+ const systemText = [sectionText, jsonInstruction].filter(Boolean).join("\n\n");
4137
4151
  const messages = systemText ? [{ role: "system", content: systemText }] : [];
4138
4152
  for (const m of ir.history ?? []) {
4139
4153
  if (m.role === "system") continue;
@@ -4153,6 +4167,9 @@ function lowerDeepSeek(ir, profile, hints) {
4153
4167
  provider: "deepseek",
4154
4168
  model: profile.id,
4155
4169
  messages,
4170
+ // Safe only because `jsonInstruction` above guarantees the literal word
4171
+ // "json" reaches the prompt — DeepSeek 400s otherwise (measurement C).
4172
+ response_format: ir.constraints?.structuredOutput ? { type: "json_object" } : void 0,
4156
4173
  // Every tool the IR carries. Never fewer — see the note above.
4157
4174
  tools: ir.tools && ir.tools.length > 0 ? ir.tools.map((t) => ({
4158
4175
  type: "function",
@@ -4172,7 +4189,9 @@ function lowerDeepSeek(ir, profile, hints) {
4172
4189
  }
4173
4190
  function buildOpenAICompatibleParts(ir) {
4174
4191
  const ordered = sortSections(ir.sections);
4175
- const systemText = ordered.map((s) => s.text).join("\n\n");
4192
+ const sectionText = ordered.map((s) => s.text).join("\n\n");
4193
+ const jsonInstruction = ir.constraints?.structuredOutput ? "Respond with a single valid JSON value and nothing else. Do not wrap the JSON in a markdown code fence, and do not add any prose before or after it." : "";
4194
+ const systemText = [sectionText, jsonInstruction].filter(Boolean).join("\n\n");
4176
4195
  const messages = systemText ? [{ role: "system", content: systemText }] : [];
4177
4196
  for (const m of ir.history ?? []) {
4178
4197
  if (m.role === "system") continue;
@@ -6737,7 +6756,7 @@ function validateFinalFit(ir, profile, tokens) {
6737
6756
  }
6738
6757
 
6739
6758
  // src/version.ts
6740
- var LIBRARY_VERSION = "2.0.0-alpha.98";
6759
+ var LIBRARY_VERSION = "2.0.0-alpha.99";
6741
6760
 
6742
6761
  // src/pricing-brain.ts
6743
6762
  function isPricingRow(x) {
package/dist/index.mjs CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  LIBRARY_VERSION,
8
8
  createKeyHealthRoute,
9
9
  keyFingerprint
10
- } from "./chunk-KENTOSJO.mjs";
10
+ } from "./chunk-L3VBUB4I.mjs";
11
11
  import {
12
12
  ARCHETYPE_FAMILY_FITS,
13
13
  BLOCKED_MODEL_FAMILY_SIBLING_SERVED_CODE,
@@ -63,7 +63,7 @@ import {
63
63
  runAdvisor,
64
64
  setTokenizer,
65
65
  wilsonLowerBound
66
- } from "./chunk-KZNTCMGM.mjs";
66
+ } from "./chunk-G33BUB43.mjs";
67
67
  import {
68
68
  ABSOLUTE_FLOOR,
69
69
  ARCHETYPE_FLOOR_DEFAULT,
@@ -100,7 +100,7 @@ import {
100
100
  policySetHas,
101
101
  readBrainReadEnv,
102
102
  resolveProviderKey
103
- } from "./chunk-77AHSX6Y.mjs";
103
+ } from "./chunk-2YCTWV4S.mjs";
104
104
  import {
105
105
  ALL_ARCHETYPES,
106
106
  DIALECT_VERSION,
@@ -127,7 +127,7 @@ import {
127
127
  registerProfiles,
128
128
  resolveModelAlias,
129
129
  tryGetProfile
130
- } from "./chunk-HHIXHL4O.mjs";
130
+ } from "./chunk-PY4CBZFF.mjs";
131
131
  import {
132
132
  emitAdvisoryFired,
133
133
  emitCompileDone,
@@ -579,6 +579,19 @@ type CompiledRequest = {
579
579
  content: unknown;
580
580
  }>;
581
581
  tools?: unknown[];
582
+ /**
583
+ * alpha.99 — DeepSeek's only structured-output mode. The type could not
584
+ * express this field, so `lowerDeepSeek` could not have emitted it even
585
+ * if someone had noticed it was missing: the omission was enforced by
586
+ * the type, and the typecheck stayed green because nothing tried.
587
+ * Same family as the alpha.68 output-mode screen typed too narrowly to
588
+ * receive the value that triggers it — a type that cannot represent the
589
+ * case is indistinguishable from a case that never arises.
590
+ *
591
+ * `{ type: 'json_object' }` only; `json_schema` is rejected outright
592
+ * (measured 2026-08-29: "This response_format type is unavailable now").
593
+ */
594
+ response_format?: unknown;
582
595
  } | {
583
596
  provider: 'zai';
584
597
  model: string;
@@ -579,6 +579,19 @@ type CompiledRequest = {
579
579
  content: unknown;
580
580
  }>;
581
581
  tools?: unknown[];
582
+ /**
583
+ * alpha.99 — DeepSeek's only structured-output mode. The type could not
584
+ * express this field, so `lowerDeepSeek` could not have emitted it even
585
+ * if someone had noticed it was missing: the omission was enforced by
586
+ * the type, and the typecheck stayed green because nothing tried.
587
+ * Same family as the alpha.68 output-mode screen typed too narrowly to
588
+ * receive the value that triggers it — a type that cannot represent the
589
+ * case is indistinguishable from a case that never arises.
590
+ *
591
+ * `{ type: 'json_object' }` only; `json_schema` is rejected outright
592
+ * (measured 2026-08-29: "This response_format type is unavailable now").
593
+ */
594
+ response_format?: unknown;
582
595
  } | {
583
596
  provider: 'zai';
584
597
  model: string;
@@ -28,7 +28,7 @@ __export(key_health_exports, {
28
28
  module.exports = __toCommonJS(key_health_exports);
29
29
 
30
30
  // src/version.ts
31
- var LIBRARY_VERSION = "2.0.0-alpha.98";
31
+ var LIBRARY_VERSION = "2.0.0-alpha.99";
32
32
 
33
33
  // src/key-health.ts
34
34
  var JSON_HEADERS = { "Content-Type": "application/json" };
@@ -3,7 +3,7 @@ import {
3
3
  KEY_FINGERPRINT_LENGTH,
4
4
  createKeyHealthRoute,
5
5
  keyFingerprint
6
- } from "./chunk-KENTOSJO.mjs";
6
+ } from "./chunk-L3VBUB4I.mjs";
7
7
  export {
8
8
  KEY_FINGERPRINT_DOMAIN,
9
9
  KEY_FINGERPRINT_LENGTH,
package/dist/probe.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- import { C as CompileOptions } from './compile-C2IfAGV1.mjs';
1
+ import { C as CompileOptions } from './compile-hh_l7COL.mjs';
2
2
  import { CliffRule } from './profiles.mjs';
3
3
  export { CliffEvidence, deriveCliffEvidenceClass } from './profiles.mjs';
4
- import { b as PromptIR, e as CompileResult } from './ir-DyMJ84je.mjs';
4
+ import { b as PromptIR, e as CompileResult } from './ir-BZ2qOPMp.mjs';
5
5
  import './dialect.mjs';
6
6
 
7
7
  /**
package/dist/probe.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { C as CompileOptions } from './compile-BlMXv6QT.js';
1
+ import { C as CompileOptions } from './compile-nNpq-6yu.js';
2
2
  import { CliffRule } from './profiles.js';
3
3
  export { CliffEvidence, deriveCliffEvidenceClass } from './profiles.js';
4
- import { b as PromptIR, e as CompileResult } from './ir-DbvOFKF-.js';
4
+ import { b as PromptIR, e as CompileResult } from './ir-CpkidtAd.js';
5
5
  import './dialect.js';
6
6
 
7
7
  /**
package/dist/probe.js CHANGED
@@ -912,7 +912,12 @@ var PROFILES_RAW = [
912
912
  // "7-8 calls per step" — which was never a claim that only one tool may be
913
913
  // offered. See the note in lower.ts:lowerDeepSeek.
914
914
  parallelToolCalls: true,
915
- structuredOutput: "native",
915
+ structuredOutput: "grammar",
916
+ // alpha.99 — MEASURED 2026-08-29: DeepSeek rejects
917
+ // `response_format: {type:'json_schema'}` outright ("This response_format type is
918
+ // unavailable now"), so there is no schema-enforced mode for `'native'` to name.
919
+ // It supports `json_object` only, and only when the prompt contains the literal
920
+ // word "json" — the lowering emits the instruction that guarantees it.
916
921
  systemPromptMode: "inline",
917
922
  streaming: true,
918
923
  // alpha.96 — the `tool_count@1 -> drop_to_top_relevant` cliff was DELETED.
@@ -1006,7 +1011,12 @@ var PROFILES_RAW = [
1006
1011
  // "7-8 calls per step" — which was never a claim that only one tool may be
1007
1012
  // offered. See the note in lower.ts:lowerDeepSeek.
1008
1013
  parallelToolCalls: true,
1009
- structuredOutput: "native",
1014
+ structuredOutput: "grammar",
1015
+ // alpha.99 — MEASURED 2026-08-29: DeepSeek rejects
1016
+ // `response_format: {type:'json_schema'}` outright ("This response_format type is
1017
+ // unavailable now"), so there is no schema-enforced mode for `'native'` to name.
1018
+ // It supports `json_object` only, and only when the prompt contains the literal
1019
+ // word "json" — the lowering emits the instruction that guarantees it.
1010
1020
  systemPromptMode: "inline",
1011
1021
  streaming: true,
1012
1022
  // alpha.96 — the `tool_count@1 -> drop_to_top_relevant` cliff was DELETED.
@@ -3655,7 +3665,7 @@ function lowerGoogle(ir, profile, hints) {
3655
3665
  if (hints.forceTerseOutput) {
3656
3666
  generationConfig.maxOutputTokens = 200;
3657
3667
  }
3658
- if (ir.constraints?.structuredOutput && profile.structuredOutput === "native") {
3668
+ if (ir.constraints?.structuredOutput && profile.structuredOutput !== "none") {
3659
3669
  generationConfig.responseMimeType = "application/json";
3660
3670
  }
3661
3671
  const contents = buildGoogleContents(ir.history ?? [], ir.currentTurn);
@@ -3714,7 +3724,9 @@ function toGoogleTools(tools) {
3714
3724
  }
3715
3725
  function lowerOpenAI(ir, profile, hints) {
3716
3726
  const ordered = sortSections(ir.sections);
3717
- const systemText = ordered.map((s) => s.text).join("\n\n");
3727
+ const sectionText = ordered.map((s) => s.text).join("\n\n");
3728
+ const jsonInstruction = ir.constraints?.structuredOutput ? "Respond with a single valid JSON value and nothing else. Do not wrap the JSON in a markdown code fence, and do not add any prose before or after it." : "";
3729
+ const systemText = [sectionText, jsonInstruction].filter(Boolean).join("\n\n");
3718
3730
  const systemRole = profile.systemPromptMode === "as_developer" ? "developer" : "system";
3719
3731
  const messages = systemText ? [{ role: systemRole, content: systemText }] : [];
3720
3732
  for (const m of ir.history ?? []) {
@@ -3760,7 +3772,9 @@ function toOpenAITools(tools) {
3760
3772
  }
3761
3773
  function lowerDeepSeek(ir, profile, hints) {
3762
3774
  const ordered = sortSections(ir.sections);
3763
- const systemText = ordered.map((s) => s.text).join("\n\n");
3775
+ const sectionText = ordered.map((s) => s.text).join("\n\n");
3776
+ const jsonInstruction = ir.constraints?.structuredOutput ? "Respond with a single valid JSON value and nothing else. Do not wrap the JSON in a markdown code fence, and do not add any prose before or after it." : "";
3777
+ const systemText = [sectionText, jsonInstruction].filter(Boolean).join("\n\n");
3764
3778
  const messages = systemText ? [{ role: "system", content: systemText }] : [];
3765
3779
  for (const m of ir.history ?? []) {
3766
3780
  if (m.role === "system") continue;
@@ -3780,6 +3794,9 @@ function lowerDeepSeek(ir, profile, hints) {
3780
3794
  provider: "deepseek",
3781
3795
  model: profile.id,
3782
3796
  messages,
3797
+ // Safe only because `jsonInstruction` above guarantees the literal word
3798
+ // "json" reaches the prompt — DeepSeek 400s otherwise (measurement C).
3799
+ response_format: ir.constraints?.structuredOutput ? { type: "json_object" } : void 0,
3783
3800
  // Every tool the IR carries. Never fewer — see the note above.
3784
3801
  tools: ir.tools && ir.tools.length > 0 ? ir.tools.map((t) => ({
3785
3802
  type: "function",
@@ -3799,7 +3816,9 @@ function lowerDeepSeek(ir, profile, hints) {
3799
3816
  }
3800
3817
  function buildOpenAICompatibleParts(ir) {
3801
3818
  const ordered = sortSections(ir.sections);
3802
- const systemText = ordered.map((s) => s.text).join("\n\n");
3819
+ const sectionText = ordered.map((s) => s.text).join("\n\n");
3820
+ const jsonInstruction = ir.constraints?.structuredOutput ? "Respond with a single valid JSON value and nothing else. Do not wrap the JSON in a markdown code fence, and do not add any prose before or after it." : "";
3821
+ const systemText = [sectionText, jsonInstruction].filter(Boolean).join("\n\n");
3803
3822
  const messages = systemText ? [{ role: "system", content: systemText }] : [];
3804
3823
  for (const m of ir.history ?? []) {
3805
3824
  if (m.role === "system") continue;
package/dist/probe.mjs CHANGED
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  compile
3
- } from "./chunk-KZNTCMGM.mjs";
4
- import "./chunk-77AHSX6Y.mjs";
3
+ } from "./chunk-G33BUB43.mjs";
4
+ import "./chunk-2YCTWV4S.mjs";
5
5
  import "./chunk-FEMPY6EC.mjs";
6
6
  import {
7
7
  deriveCliffEvidenceClass,
8
8
  getProfile
9
- } from "./chunk-HHIXHL4O.mjs";
9
+ } from "./chunk-PY4CBZFF.mjs";
10
10
 
11
11
  // src/probe.ts
12
12
  function compileSuppressing(ir, opts) {
@@ -1,4 +1,4 @@
1
- import { l as Provider } from './ir-DyMJ84je.mjs';
1
+ import { l as Provider } from './ir-BZ2qOPMp.mjs';
2
2
  import { IntentArchetypeName } from './dialect.mjs';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { l as Provider } from './ir-DbvOFKF-.js';
1
+ import { l as Provider } from './ir-CpkidtAd.js';
2
2
  import { IntentArchetypeName } from './dialect.js';
3
3
 
4
4
  /**
package/dist/profiles.js CHANGED
@@ -843,7 +843,12 @@ var PROFILES_RAW = [
843
843
  // "7-8 calls per step" — which was never a claim that only one tool may be
844
844
  // offered. See the note in lower.ts:lowerDeepSeek.
845
845
  parallelToolCalls: true,
846
- structuredOutput: "native",
846
+ structuredOutput: "grammar",
847
+ // alpha.99 — MEASURED 2026-08-29: DeepSeek rejects
848
+ // `response_format: {type:'json_schema'}` outright ("This response_format type is
849
+ // unavailable now"), so there is no schema-enforced mode for `'native'` to name.
850
+ // It supports `json_object` only, and only when the prompt contains the literal
851
+ // word "json" — the lowering emits the instruction that guarantees it.
847
852
  systemPromptMode: "inline",
848
853
  streaming: true,
849
854
  // alpha.96 — the `tool_count@1 -> drop_to_top_relevant` cliff was DELETED.
@@ -937,7 +942,12 @@ var PROFILES_RAW = [
937
942
  // "7-8 calls per step" — which was never a claim that only one tool may be
938
943
  // offered. See the note in lower.ts:lowerDeepSeek.
939
944
  parallelToolCalls: true,
940
- structuredOutput: "native",
945
+ structuredOutput: "grammar",
946
+ // alpha.99 — MEASURED 2026-08-29: DeepSeek rejects
947
+ // `response_format: {type:'json_schema'}` outright ("This response_format type is
948
+ // unavailable now"), so there is no schema-enforced mode for `'native'` to name.
949
+ // It supports `json_object` only, and only when the prompt contains the literal
950
+ // word "json" — the lowering emits the instruction that guarantees it.
941
951
  systemPromptMode: "inline",
942
952
  streaming: true,
943
953
  // alpha.96 — the `tool_count@1 -> drop_to_top_relevant` cliff was DELETED.
package/dist/profiles.mjs CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  registerProfiles,
15
15
  resolveModelAlias,
16
16
  tryGetProfile
17
- } from "./chunk-HHIXHL4O.mjs";
17
+ } from "./chunk-PY4CBZFF.mjs";
18
18
  export {
19
19
  ALIASES,
20
20
  LATENCY_TIER_MS,
@@ -1,4 +1,4 @@
1
- import { j as Adapter, F as FallbackReason, y as SectionKind } from './ir-DyMJ84je.mjs';
1
+ import { j as Adapter, F as FallbackReason, y as SectionKind } from './ir-BZ2qOPMp.mjs';
2
2
 
3
3
  /**
4
4
  * Wire contract for the Glass-Box Chrome extension's brain-poll endpoint.
@@ -1,4 +1,4 @@
1
- import { j as Adapter, F as FallbackReason, y as SectionKind } from './ir-DbvOFKF-.js';
1
+ import { j as Adapter, F as FallbackReason, y as SectionKind } from './ir-CpkidtAd.js';
2
2
 
3
3
  /**
4
4
  * Wire contract for the Glass-Box Chrome extension's brain-poll endpoint.
@@ -1,4 +1,4 @@
1
- import { t as MutationApplied, B as BestPracticeAdvisory, F as FallbackReason, n as CallAttempt } from './ir-DyMJ84je.mjs';
1
+ import { t as MutationApplied, B as BestPracticeAdvisory, F as FallbackReason, n as CallAttempt } from './ir-BZ2qOPMp.mjs';
2
2
 
3
3
  /**
4
4
  * Glass-Box observability types (alpha.17).
@@ -1,4 +1,4 @@
1
- import { t as MutationApplied, B as BestPracticeAdvisory, F as FallbackReason, n as CallAttempt } from './ir-DbvOFKF-.js';
1
+ import { t as MutationApplied, B as BestPracticeAdvisory, F as FallbackReason, n as CallAttempt } from './ir-CpkidtAd.js';
2
2
 
3
3
  /**
4
4
  * Glass-Box observability types (alpha.17).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@warmdrift/kgauto-compiler",
3
- "version": "2.0.0-alpha.98",
3
+ "version": "2.0.0-alpha.99",
4
4
  "description": "Prompt compiler with executable provider knowledge for multi-model AI apps: normalized multi-provider transport with fallback chains, compile-time cliff guards, a curated model registry, and a telemetry flight recorder. Swap models without rewriting prompts.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",