@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.
|
|
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)
|
|
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
|
}>;
|