@vxil/cli 0.20.1 → 0.21.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
@@ -23,7 +23,7 @@ export default defineConfig({
23
23
  features: {
24
24
  auth: { enabled: true },
25
25
  cms: { enabled: true, draftPublish: true },
26
- notifications: { enabled: true, provider: 'resend', fromEmail: 'noreply@example.app' },
26
+ notifications: { enabled: true, provider: 'resend', fromEmail: 'noreply@example.com' },
27
27
  },
28
28
  // (b) CMS schema-as-code — collections + fields, reconciled by `vxil push`
29
29
  cms: {
@@ -0,0 +1,16 @@
1
+ export declare const AI_THINKING_LEVELS: readonly ["minimal", "low", "medium", "high"];
2
+ export type GeminiThinkingLevel = (typeof AI_THINKING_LEVELS)[number];
3
+ /** The lowest thinking level the model accepts. 3.x thinks by default; the
4
+ * 2.5-era `thinkingBudget:0` is INVALID on 3.x, and `thinkingLevel:'minimal'`
5
+ * (which zeroes thought tokens) is accepted by gemini-3-flash … 3.6-flash and
6
+ * every flash-lite, but REJECTED with a 400 ("Thinking level MINIMAL is not
7
+ * supported for this model") by gemini-3.7-flash and gemini-3.8-flash
8
+ * (measured 2026-10-03 on the staging key). Unknown model shapes (incl. the
9
+ * Pro models) get 'low': it is the one level measured as accepted on every
10
+ * 3.x model tried. */
11
+ export declare function minimalThinkingLevel(model: string): GeminiThinkingLevel;
12
+ /** Null when `model` is not known to reject `level`, else the reason. Only
13
+ * 'minimal' is checked (per the table above). Measured: 'low' on every 3.x
14
+ * model tried; medium/high are NOT verified per model — a model that rejects
15
+ * one fails as a provider 4xx after the reserve (refunded), not here. */
16
+ export declare function geminiThinkingLevelError(model: string, level: GeminiThinkingLevel): string | null;
@@ -37,10 +37,12 @@ interface CdcRuleLike {
37
37
  export declare function validateCdcConfig(cdc: Record<string, CdcRuleLike> | undefined): string[];
38
38
  /** What a payload:'full' change-data rule must know about its target
39
39
  * collection's read gates. `readRoleFields`: fields with a non-empty
40
- * `readRoles`; `endUserAccess`: the collection's end-user access mode. */
40
+ * `readRoles`; `endUserAccess`: the collection's end-user access mode;
41
+ * `ownerField`: the end-user owner-scope field (null/absent = none). */
41
42
  export interface CdcCollectionGates {
42
43
  readRoleFields?: readonly string[];
43
44
  endUserAccess?: 'readwrite' | 'read' | 'none';
45
+ ownerField?: string | null;
44
46
  }
45
47
  /**
46
48
  * A `payload: 'full'` change-data rule inlines the stored row into a realtime
@@ -48,7 +50,9 @@ export interface CdcCollectionGates {
48
50
  * the read projection. So it must never target a collection whose reads are
49
51
  * gated: a field with `readRoles` (the frame would carry the gated value), or
50
52
  * an `endUserAccess` of 'read' / 'none' (the frame would bypass the
51
- * collection's end-user gate). Pure; one problem line per offending ENABLED
53
+ * collection's end-user gate), or an `ownerField` (end users read only their
54
+ * own rows, but the frame would carry every user's row to every subscriber —
55
+ * CDC-FULL-OWNER-SCOPED). Pure; one problem line per offending ENABLED
52
56
  * rule (an unknown collection is skipped). The safe shape is `payload: 'ids'`
53
57
  * and a re-read through the cms, where every gate applies.
54
58
  */
@@ -1,4 +1,5 @@
1
1
  import { type Static, type TSchema } from '@sinclair/typebox';
2
+ export { AI_THINKING_LEVELS, geminiThinkingLevelError, minimalThinkingLevel, type GeminiThinkingLevel } from './_vxil-feature-configs-geminiThinking.js';
2
3
  export * from './_vxil-feature-configs-hooks.js';
3
4
  export * from './_vxil-feature-configs-readmodels.js';
4
5
  export * from './_vxil-feature-configs-apiState.js';
@@ -605,11 +606,12 @@ export declare const AiConfigSchema: import("@sinclair/typebox").TObject<{
605
606
  openaiBaseUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
606
607
  }>>;
607
608
  }>;
608
- defaults: import("@sinclair/typebox").TObject<{
609
+ defaults: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
609
610
  model: import("@sinclair/typebox").TString;
610
611
  maxTokens: import("@sinclair/typebox").TInteger;
611
612
  temperature: import("@sinclair/typebox").TNumber;
612
- }>;
613
+ thinkingLevel: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"minimal" | "low" | "medium" | "high">[]>>;
614
+ }>>;
613
615
  cache: import("@sinclair/typebox").TObject<{
614
616
  ttlSeconds: import("@sinclair/typebox").TInteger;
615
617
  }>;