usertrust 1.4.0 → 1.5.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/dist/anomaly/detector.d.ts.map +1 -1
- package/dist/anomaly/detector.js +36 -11
- package/dist/anomaly/detector.js.map +1 -1
- package/dist/anomaly/signals/spend-velocity.d.ts +39 -12
- package/dist/anomaly/signals/spend-velocity.d.ts.map +1 -1
- package/dist/anomaly/signals/spend-velocity.js +66 -43
- package/dist/anomaly/signals/spend-velocity.js.map +1 -1
- package/dist/anomaly/signals/token-rate.d.ts +33 -13
- package/dist/anomaly/signals/token-rate.d.ts.map +1 -1
- package/dist/anomaly/signals/token-rate.js +124 -38
- package/dist/anomaly/signals/token-rate.js.map +1 -1
- package/dist/anomaly/types.d.ts +28 -6
- package/dist/anomaly/types.d.ts.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +98 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/main.js +0 -0
- package/dist/detect.d.ts +34 -1
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +124 -0
- package/dist/detect.js.map +1 -1
- package/dist/govern.d.ts +8 -1
- package/dist/govern.d.ts.map +1 -1
- package/dist/govern.js +191 -12
- package/dist/govern.js.map +1 -1
- package/dist/headless.d.ts +41 -2
- package/dist/headless.d.ts.map +1 -1
- package/dist/headless.js +54 -3
- package/dist/headless.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/ledger/pricing.d.ts +54 -0
- package/dist/ledger/pricing.d.ts.map +1 -1
- package/dist/ledger/pricing.js +128 -8
- package/dist/ledger/pricing.js.map +1 -1
- package/dist/shared/types.d.ts +175 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +55 -5
- package/dist/shared/types.js.map +1 -1
- package/dist/streaming.d.ts +8 -3
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +61 -30
- package/dist/streaming.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright 2026 Usertools, Inc.
|
|
3
|
+
/**
|
|
4
|
+
* token-rate.ts — Token-rate anomaly signal.
|
|
5
|
+
*
|
|
6
|
+
* Buckets observed chunks into fixed-width windows (default 2 s) and counts
|
|
7
|
+
* tokens-per-second within each window. Trips when N consecutive windows
|
|
8
|
+
* exceed the effective threshold (default 500 tok/s, 3 windows).
|
|
9
|
+
*
|
|
10
|
+
* Brief spikes (1-2 hot windows) are ignored — only sustained runaway
|
|
11
|
+
* behavior trips the circuit.
|
|
12
|
+
*
|
|
13
|
+
* M2 scoped thresholds: each observation may carry the event's model and
|
|
14
|
+
* endpointClass. Local-scope events select `perModel` (trailing-* glob,
|
|
15
|
+
* matched via matchModelPattern) first, then `localThresholdTokPerSec`
|
|
16
|
+
* (default 5000 — fast local GPU inference legitimately exceeds the cloud
|
|
17
|
+
* 500). Cloud/unscoped events keep the legacy `thresholdTokPerSec`. The
|
|
18
|
+
* check() result names which threshold applied via `thresholdLabel`.
|
|
19
|
+
*
|
|
20
|
+
* Cross-scope isolation: cloud and local keep SEPARATE rolling windows, each
|
|
21
|
+
* judged against its own threshold. A shared detector observes interleaved
|
|
22
|
+
* cloud+local streams, so a single mutable threshold/window would let one
|
|
23
|
+
* scope's chunks contaminate the other's verdict — a cloud runaway inheriting
|
|
24
|
+
* the 10x local threshold (evasion), or a local burst false-tripping the cloud
|
|
25
|
+
* 500. Mirrors the dual-series pattern in spend-velocity.ts.
|
|
26
|
+
*/
|
|
27
|
+
import { matchModelPattern } from "../../ledger/pricing.js";
|
|
28
|
+
/** Default local-scope threshold, applied where consumed (resolved config keeps it optional). */
|
|
29
|
+
const LOCAL_THRESHOLD_TOK_PER_SEC_DEFAULT = 5_000;
|
|
3
30
|
export const TOKEN_RATE_DEFAULTS = {
|
|
4
31
|
thresholdTokPerSec: 500,
|
|
5
32
|
windowMs: 2_000,
|
|
@@ -8,82 +35,141 @@ export const TOKEN_RATE_DEFAULTS = {
|
|
|
8
35
|
export function resolveTokenRateConfig(cfg) {
|
|
9
36
|
return {
|
|
10
37
|
thresholdTokPerSec: cfg?.thresholdTokPerSec ?? TOKEN_RATE_DEFAULTS.thresholdTokPerSec,
|
|
38
|
+
// M2 fields stay optional in resolved config — defaulted where consumed.
|
|
39
|
+
localThresholdTokPerSec: cfg?.localThresholdTokPerSec,
|
|
40
|
+
perModel: cfg?.perModel,
|
|
11
41
|
windowMs: cfg?.windowMs ?? TOKEN_RATE_DEFAULTS.windowMs,
|
|
12
42
|
consecutiveWindows: cfg?.consecutiveWindows ?? TOKEN_RATE_DEFAULTS.consecutiveWindows,
|
|
13
43
|
};
|
|
14
44
|
}
|
|
15
45
|
export function createTokenRateSignal(cfg) {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
46
|
+
const localDefaultThreshold = cfg.localThresholdTokPerSec ?? LOCAL_THRESHOLD_TOK_PER_SEC_DEFAULT;
|
|
47
|
+
function makeWindow(threshold, label) {
|
|
48
|
+
return {
|
|
49
|
+
currentWindowTokens: 0,
|
|
50
|
+
currentWindowStartMs: 0,
|
|
51
|
+
consecutiveHotWindows: 0,
|
|
52
|
+
lastWindowRateTokPerSec: 0,
|
|
53
|
+
initialized: false,
|
|
54
|
+
threshold,
|
|
55
|
+
thresholdLabel: label,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// Independent per-scope windows: cloud/unscoped events accumulate against the
|
|
59
|
+
// legacy threshold, local events against the local/perModel threshold. Neither
|
|
60
|
+
// can move the other's threshold or window (evasion + false-trip fix).
|
|
61
|
+
const cloud = makeWindow(cfg.thresholdTokPerSec, "thresholdTokPerSec");
|
|
62
|
+
const local = makeWindow(localDefaultThreshold, "localThresholdTokPerSec");
|
|
63
|
+
const state = { cloud, local };
|
|
64
|
+
/** Resolve the local-scope threshold/label for an event's model (perModel glob first). */
|
|
65
|
+
function applyLocalThreshold(model) {
|
|
66
|
+
if (model !== undefined && cfg.perModel !== undefined) {
|
|
67
|
+
const match = matchModelPattern(model, cfg.perModel);
|
|
68
|
+
if (match !== undefined) {
|
|
69
|
+
local.threshold = match.value;
|
|
70
|
+
local.thresholdLabel = `perModel["${match.pattern}"]`;
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
local.threshold = localDefaultThreshold;
|
|
75
|
+
local.thresholdLabel = "localThresholdTokPerSec";
|
|
76
|
+
}
|
|
77
|
+
function rollWindowsTo(w, nowMs) {
|
|
24
78
|
// Roll forward: close completed windows, evaluate threshold, advance.
|
|
25
|
-
while (nowMs -
|
|
26
|
-
const windowEndMs =
|
|
79
|
+
while (nowMs - w.currentWindowStartMs >= cfg.windowMs) {
|
|
80
|
+
const windowEndMs = w.currentWindowStartMs + cfg.windowMs;
|
|
27
81
|
const seconds = cfg.windowMs / 1_000;
|
|
28
|
-
const rate =
|
|
29
|
-
|
|
30
|
-
if (rate >=
|
|
31
|
-
|
|
82
|
+
const rate = w.currentWindowTokens / seconds;
|
|
83
|
+
w.lastWindowRateTokPerSec = rate;
|
|
84
|
+
if (rate >= w.threshold) {
|
|
85
|
+
w.consecutiveHotWindows += 1;
|
|
32
86
|
}
|
|
33
87
|
else {
|
|
34
|
-
|
|
88
|
+
w.consecutiveHotWindows = 0;
|
|
35
89
|
}
|
|
36
|
-
|
|
37
|
-
|
|
90
|
+
w.currentWindowStartMs = windowEndMs;
|
|
91
|
+
w.currentWindowTokens = 0;
|
|
38
92
|
}
|
|
39
93
|
}
|
|
40
|
-
function observe(deltaTokens, nowMs) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
94
|
+
function observe(deltaTokens, nowMs, context) {
|
|
95
|
+
const w = context?.endpointClass === "local" ? local : cloud;
|
|
96
|
+
if (w === local) {
|
|
97
|
+
applyLocalThreshold(context?.model);
|
|
98
|
+
}
|
|
99
|
+
if (!w.initialized) {
|
|
100
|
+
w.currentWindowStartMs = nowMs;
|
|
101
|
+
w.initialized = true;
|
|
44
102
|
}
|
|
45
|
-
rollWindowsTo(nowMs);
|
|
46
|
-
|
|
103
|
+
rollWindowsTo(w, nowMs);
|
|
104
|
+
w.currentWindowTokens += Math.max(0, deltaTokens);
|
|
47
105
|
}
|
|
48
|
-
|
|
49
|
-
|
|
106
|
+
/** Evaluate one scope's window against its own threshold. */
|
|
107
|
+
function evaluate(w, nowMs) {
|
|
108
|
+
if (!w.initialized) {
|
|
50
109
|
return {
|
|
51
110
|
tripped: false,
|
|
52
111
|
metric: 0,
|
|
53
|
-
threshold:
|
|
112
|
+
threshold: w.threshold,
|
|
54
113
|
hotWindows: 0,
|
|
114
|
+
thresholdLabel: w.thresholdLabel,
|
|
55
115
|
};
|
|
56
116
|
}
|
|
57
|
-
rollWindowsTo(nowMs);
|
|
117
|
+
rollWindowsTo(w, nowMs);
|
|
58
118
|
// Also evaluate the current (incomplete) window if it has surpassed threshold
|
|
59
119
|
// by enough margin to count: only if it would already be a "hot" window.
|
|
60
|
-
const elapsedMs = nowMs -
|
|
120
|
+
const elapsedMs = nowMs - w.currentWindowStartMs;
|
|
61
121
|
let inFlightHot = false;
|
|
62
122
|
let inFlightRate = 0;
|
|
63
123
|
if (elapsedMs > 0) {
|
|
64
|
-
inFlightRate =
|
|
124
|
+
inFlightRate = w.currentWindowTokens / (elapsedMs / 1_000);
|
|
65
125
|
// Only consider in-flight as "hot" once the window has accumulated meaningful
|
|
66
126
|
// data (>=50% elapsed) to avoid false positives from one large early chunk.
|
|
67
|
-
if (elapsedMs >= cfg.windowMs / 2 && inFlightRate >=
|
|
127
|
+
if (elapsedMs >= cfg.windowMs / 2 && inFlightRate >= w.threshold) {
|
|
68
128
|
inFlightHot = true;
|
|
69
129
|
}
|
|
70
130
|
}
|
|
71
|
-
const effectiveHot =
|
|
131
|
+
const effectiveHot = w.consecutiveHotWindows + (inFlightHot ? 1 : 0);
|
|
72
132
|
const tripped = effectiveHot >= cfg.consecutiveWindows;
|
|
73
|
-
const metric = Math.max(
|
|
133
|
+
const metric = Math.max(w.lastWindowRateTokPerSec, inFlightRate);
|
|
74
134
|
return {
|
|
75
135
|
tripped,
|
|
76
136
|
metric,
|
|
77
|
-
threshold:
|
|
137
|
+
threshold: w.threshold,
|
|
78
138
|
hotWindows: effectiveHot,
|
|
139
|
+
thresholdLabel: w.thresholdLabel,
|
|
79
140
|
};
|
|
80
141
|
}
|
|
142
|
+
function check(nowMs) {
|
|
143
|
+
// Cloud is evaluated first so a cloud runaway is reported with the cloud
|
|
144
|
+
// threshold even while a slower local stream interleaves.
|
|
145
|
+
const cloudResult = evaluate(cloud, nowMs);
|
|
146
|
+
if (cloudResult.tripped)
|
|
147
|
+
return cloudResult;
|
|
148
|
+
const localResult = evaluate(local, nowMs);
|
|
149
|
+
if (localResult.tripped)
|
|
150
|
+
return localResult;
|
|
151
|
+
// Neither tripped: report the initialized scope closer to its threshold
|
|
152
|
+
// (higher metric/threshold ratio); default to cloud (legacy) otherwise.
|
|
153
|
+
if (!local.initialized)
|
|
154
|
+
return cloudResult;
|
|
155
|
+
if (!cloud.initialized)
|
|
156
|
+
return localResult;
|
|
157
|
+
const cloudRatio = cloudResult.threshold > 0 ? cloudResult.metric / cloudResult.threshold : 0;
|
|
158
|
+
const localRatio = localResult.threshold > 0 ? localResult.metric / localResult.threshold : 0;
|
|
159
|
+
return localRatio > cloudRatio ? localResult : cloudResult;
|
|
160
|
+
}
|
|
81
161
|
function reset() {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
162
|
+
for (const w of [cloud, local]) {
|
|
163
|
+
w.currentWindowTokens = 0;
|
|
164
|
+
w.currentWindowStartMs = 0;
|
|
165
|
+
w.consecutiveHotWindows = 0;
|
|
166
|
+
w.lastWindowRateTokPerSec = 0;
|
|
167
|
+
w.initialized = false;
|
|
168
|
+
}
|
|
169
|
+
cloud.threshold = cfg.thresholdTokPerSec;
|
|
170
|
+
cloud.thresholdLabel = "thresholdTokPerSec";
|
|
171
|
+
local.threshold = localDefaultThreshold;
|
|
172
|
+
local.thresholdLabel = "localThresholdTokPerSec";
|
|
87
173
|
}
|
|
88
174
|
return { state, observe, check, reset };
|
|
89
175
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-rate.js","sourceRoot":"","sources":["../../../src/anomaly/signals/token-rate.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;
|
|
1
|
+
{"version":3,"file":"token-rate.js","sourceRoot":"","sources":["../../../src/anomaly/signals/token-rate.ts"],"names":[],"mappings":"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"}
|
package/dist/anomaly/types.d.ts
CHANGED
|
@@ -7,13 +7,17 @@
|
|
|
7
7
|
* should VOID the PENDING hold, throw `AnomalyError`, and emit a hash-chained
|
|
8
8
|
* `anomaly_detected` audit event.
|
|
9
9
|
*/
|
|
10
|
-
import type { LLMClientKind } from "../shared/types.js";
|
|
10
|
+
import type { EndpointClass, LLMClientKind } from "../shared/types.js";
|
|
11
11
|
/** The three signal types the detector watches. */
|
|
12
12
|
export type AnomalyKind = "token_rate" | "spend_velocity" | "injection_cascade";
|
|
13
13
|
/** Token-rate signal config. */
|
|
14
14
|
export interface TokenRateConfig {
|
|
15
15
|
/** Threshold tokens-per-second above which a window is "hot". Default 500. */
|
|
16
16
|
thresholdTokPerSec?: number;
|
|
17
|
+
/** Local-scope threshold tokens-per-second (M2). Default 5000. */
|
|
18
|
+
localThresholdTokPerSec?: number | undefined;
|
|
19
|
+
/** Per-model threshold overrides. Keys: exact model or trailing-* glob (M2). */
|
|
20
|
+
perModel?: Record<string, number> | undefined;
|
|
17
21
|
/** Window size in milliseconds. Default 2000. */
|
|
18
22
|
windowMs?: number;
|
|
19
23
|
/** Number of consecutive hot windows required to trip. Default 3. */
|
|
@@ -23,6 +27,8 @@ export interface TokenRateConfig {
|
|
|
23
27
|
export interface SpendVelocityConfig {
|
|
24
28
|
/** Maximum dollars per minute (rolling). Default 1.00. */
|
|
25
29
|
thresholdDollarsPerMin?: number;
|
|
30
|
+
/** Local-scope threshold in nominal usertokens per minute (M2). Default 10000. */
|
|
31
|
+
localThresholdUsertokensPerMin?: number | undefined;
|
|
26
32
|
/** Rolling window in milliseconds. Default 10000. */
|
|
27
33
|
windowMs?: number;
|
|
28
34
|
}
|
|
@@ -43,11 +49,17 @@ export interface AnomalyConfig {
|
|
|
43
49
|
/** Cooldown after a trip before auto-reset. Default 30000 ms. */
|
|
44
50
|
cooldownMs?: number;
|
|
45
51
|
}
|
|
46
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Resolved (defaulted) config used internally.
|
|
54
|
+
*
|
|
55
|
+
* Legacy fields are fully defaulted; the M2 local-scope fields
|
|
56
|
+
* (localThresholdTokPerSec, perModel, localThresholdUsertokensPerMin) stay
|
|
57
|
+
* optional here and are defaulted at the signal when absent.
|
|
58
|
+
*/
|
|
47
59
|
export interface ResolvedAnomalyConfig {
|
|
48
60
|
enabled: boolean;
|
|
49
|
-
tokenRate: Required<TokenRateConfig>;
|
|
50
|
-
spendVelocity: Required<SpendVelocityConfig>;
|
|
61
|
+
tokenRate: Required<Omit<TokenRateConfig, "localThresholdTokPerSec" | "perModel">> & Pick<TokenRateConfig, "localThresholdTokPerSec" | "perModel">;
|
|
62
|
+
spendVelocity: Required<Omit<SpendVelocityConfig, "localThresholdUsertokensPerMin">> & Pick<SpendVelocityConfig, "localThresholdUsertokensPerMin">;
|
|
51
63
|
injectionCascade: Required<InjectionCascadeConfig>;
|
|
52
64
|
cooldownMs: number;
|
|
53
65
|
}
|
|
@@ -62,6 +74,10 @@ export interface AnomalyChunkEvent {
|
|
|
62
74
|
cumulativeOutputTokens: number;
|
|
63
75
|
/** Wall-clock timestamp. Defaults to Date.now() if omitted. */
|
|
64
76
|
at?: number;
|
|
77
|
+
/** Model of the call this chunk belongs to. Overrides options.model when present (M2). */
|
|
78
|
+
model?: string | undefined;
|
|
79
|
+
/** Endpoint scope of the call this chunk belongs to. Default scope: cloud (M2). */
|
|
80
|
+
endpointClass?: EndpointClass | undefined;
|
|
65
81
|
}
|
|
66
82
|
/** Out-of-band injection event (fired when detect.injection finds something). */
|
|
67
83
|
export interface AnomalyInjectionEvent {
|
|
@@ -87,8 +103,14 @@ export interface AnomalyDetectorOptions {
|
|
|
87
103
|
provider?: LLMClientKind;
|
|
88
104
|
/** Model name being observed (used for cost calculation in spend-velocity). */
|
|
89
105
|
model?: string;
|
|
90
|
-
/**
|
|
91
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Override the cost calculator. Returns the cost for the given cumulative tokens —
|
|
108
|
+
* dollars for cloud-scope events, nominal usertokens for local-scope events.
|
|
109
|
+
* The observed chunk event is passed as the optional 4th argument so an injected
|
|
110
|
+
* calculator can price per-event (scoped by event.model/event.endpointClass); 3-arg
|
|
111
|
+
* implementations remain assignable (backward compatible).
|
|
112
|
+
*/
|
|
113
|
+
costCalculator?: (model: string, inputTokens: number, outputTokens: number, event?: AnomalyChunkEvent) => number;
|
|
92
114
|
/** Time source override (for deterministic tests). */
|
|
93
115
|
now?: () => number;
|
|
94
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/anomaly/types.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/anomaly/types.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIvE,mDAAmD;AACnD,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;AAIhF,gCAAgC;AAChC,MAAM,WAAW,eAAe;IAC/B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kEAAkE;IAClE,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC9C,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,oCAAoC;AACpC,MAAM,WAAW,mBAAmB;IACnC,0DAA0D;IAC1D,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kFAAkF;IAClF,8BAA8B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpD,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,uCAAuC;AACvC,MAAM,WAAW,sBAAsB;IACtC,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa;IAC7B,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,yBAAyB,GAAG,UAAU,CAAC,CAAC,GACjF,IAAI,CAAC,eAAe,EAAE,yBAAyB,GAAG,UAAU,CAAC,CAAC;IAC/D,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,gCAAgC,CAAC,CAAC,GACnF,IAAI,CAAC,mBAAmB,EAAE,gCAAgC,CAAC,CAAC;IAC7D,gBAAgB,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IACnD,UAAU,EAAE,MAAM,CAAC;CACnB;AAID,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,qBAAqB,EAAE,MAAM,CAAC;IAC9B,+EAA+E;IAC/E,sBAAsB,EAAE,MAAM,CAAC;IAC/B,+DAA+D;IAC/D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,mFAAmF;IACnF,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CAC1C;AAED,iFAAiF;AACjF,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,qBAAqB,CAAC;AAIrE,4DAA4D;AAC5D,MAAM,MAAM,cAAc,GACvB;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,GAClB;IACA,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;CACjB,CAAC;AAIL,MAAM,WAAW,sBAAsB;IACtC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CAChB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,iBAAiB,KACrB,MAAM,CAAC;IACZ,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACpC,sFAAsF;IACtF,OAAO,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yCAAyC;IACzC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CAChC"}
|
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,UAAU;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,UAAU;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAwED,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuS5E"}
|
package/dist/cli/init.js
CHANGED
|
@@ -18,6 +18,11 @@ const ENV_VAR_MAP = {
|
|
|
18
18
|
openai: "OPENAI_API_KEY",
|
|
19
19
|
google: "GOOGLE_API_KEY",
|
|
20
20
|
};
|
|
21
|
+
const LOCAL_PRESET_URLS = {
|
|
22
|
+
ollama: "http://localhost:11434",
|
|
23
|
+
lmstudio: "http://localhost:1234",
|
|
24
|
+
vllm: "http://localhost:8000",
|
|
25
|
+
};
|
|
21
26
|
const DEFAULT_POLICY = `rules:
|
|
22
27
|
- name: block-budget-overshoot
|
|
23
28
|
effect: deny
|
|
@@ -47,6 +52,31 @@ const SUBDIRS = ["audit", "policies", "patterns", "snapshots", "board", "dlq"];
|
|
|
47
52
|
function envVarName(provider) {
|
|
48
53
|
return ENV_VAR_MAP[provider] ?? `${provider.toUpperCase()}_API_KEY`;
|
|
49
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Probe an OpenAI-compatible endpoint for its installed model list.
|
|
57
|
+
* Best-effort: global fetch with a 500ms AbortController timeout; any
|
|
58
|
+
* failure (endpoint down, non-200, bad JSON) returns an empty list and
|
|
59
|
+
* the wizard proceeds without a model list.
|
|
60
|
+
*/
|
|
61
|
+
async function probeLocalModels(base) {
|
|
62
|
+
const controller = new AbortController();
|
|
63
|
+
const timer = setTimeout(() => controller.abort(), 500);
|
|
64
|
+
try {
|
|
65
|
+
const res = await fetch(`${base}/v1/models`, { signal: controller.signal });
|
|
66
|
+
if (!res.ok)
|
|
67
|
+
return [];
|
|
68
|
+
const body = (await res.json());
|
|
69
|
+
if (!Array.isArray(body.data))
|
|
70
|
+
return [];
|
|
71
|
+
return body.data.map((entry) => entry.id).filter((id) => typeof id === "string");
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
clearTimeout(timer);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
50
80
|
export async function run(rootDir, opts) {
|
|
51
81
|
const root = rootDir ?? process.cwd();
|
|
52
82
|
const vaultPath = join(root, VAULT_DIR);
|
|
@@ -234,12 +264,71 @@ export async function run(rootDir, opts) {
|
|
|
234
264
|
clack.log.success(`Updated ${model}`);
|
|
235
265
|
}
|
|
236
266
|
}
|
|
237
|
-
// Step 4:
|
|
267
|
+
// Step 4: Local inference — Ollama / LM Studio / vLLM endpoint presets.
|
|
268
|
+
// The chosen endpoint classifies as LOCAL scope: calls settle at nominal
|
|
269
|
+
// local rates (default {0,0} + the >=1 floor = 1 usertoken per call)
|
|
270
|
+
// instead of frontier fallback rates.
|
|
271
|
+
let endpoints;
|
|
272
|
+
let localModels;
|
|
273
|
+
// Opt-in confirm gate before the runtime picker (Task 7 integration fix):
|
|
274
|
+
// declining (the default) reproduces the pre-M2 prompt sequence exactly —
|
|
275
|
+
// the picker below (clack.select, a prompt primitive the pre-M2 wizard
|
|
276
|
+
// never used) is only reached on explicit opt-in, so existing interactive
|
|
277
|
+
// flows and their pinned tests observe an unchanged wizard.
|
|
278
|
+
const wantsLocal = await clack.confirm({
|
|
279
|
+
message: "Configure local inference (Ollama / LM Studio / vLLM)?",
|
|
280
|
+
initialValue: false,
|
|
281
|
+
});
|
|
282
|
+
if (clack.isCancel(wantsLocal)) {
|
|
283
|
+
clack.log.warn("Setup cancelled.");
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
if (wantsLocal === true) {
|
|
287
|
+
const localChoice = await clack.select({
|
|
288
|
+
message: "Pick your local runtime:",
|
|
289
|
+
options: [
|
|
290
|
+
{ value: "skip", label: "Skip — cloud providers only" },
|
|
291
|
+
{ value: "ollama", label: `Ollama (${LOCAL_PRESET_URLS.ollama})` },
|
|
292
|
+
{ value: "lmstudio", label: `LM Studio (${LOCAL_PRESET_URLS.lmstudio})` },
|
|
293
|
+
{ value: "vllm", label: `vLLM (${LOCAL_PRESET_URLS.vllm})` },
|
|
294
|
+
],
|
|
295
|
+
initialValue: "skip",
|
|
296
|
+
});
|
|
297
|
+
if (clack.isCancel(localChoice)) {
|
|
298
|
+
clack.log.warn("Setup cancelled.");
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
if (localChoice !== "skip") {
|
|
302
|
+
const runtime = localChoice;
|
|
303
|
+
const base = LOCAL_PRESET_URLS[runtime];
|
|
304
|
+
endpoints = [{ match: base, class: "local", runtime }];
|
|
305
|
+
const s = clack.spinner();
|
|
306
|
+
s.start(`Probing ${base}/v1/models...`);
|
|
307
|
+
const models = await probeLocalModels(base);
|
|
308
|
+
if (models.length > 0) {
|
|
309
|
+
s.stop(`Found ${models.length} model${models.length === 1 ? "" : "s"} at ${base}`);
|
|
310
|
+
// {0,0} suggested rates: with the >=1 cost floor, every call to these
|
|
311
|
+
// models settles at exactly 1 nominal usertoken. Raise the rates later
|
|
312
|
+
// for GPU-amortized showback (local.rateClass: "amortized-usd").
|
|
313
|
+
localModels = {};
|
|
314
|
+
for (const model of models) {
|
|
315
|
+
clack.log.step(` ${model}`);
|
|
316
|
+
localModels[model] = { inputPer1k: 0, outputPer1k: 0 };
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
s.stop("No response — endpoint saved without a model list");
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
// Step 5: Create vault
|
|
238
325
|
createVault(vaultPath, {
|
|
239
326
|
budget: budgetUsertokens,
|
|
240
327
|
providers,
|
|
241
328
|
pricing,
|
|
242
329
|
...(customRates !== undefined ? { customRates } : {}),
|
|
330
|
+
...(endpoints !== undefined ? { endpoints } : {}),
|
|
331
|
+
...(localModels !== undefined ? { localModels } : {}),
|
|
243
332
|
keys,
|
|
244
333
|
});
|
|
245
334
|
clack.outro(`Vault created at ${vaultPath}`);
|
|
@@ -266,6 +355,14 @@ function createVault(vaultPath, data) {
|
|
|
266
355
|
if (data.customRates && Object.keys(data.customRates).length > 0) {
|
|
267
356
|
config.customRates = data.customRates;
|
|
268
357
|
}
|
|
358
|
+
if (data.endpoints && data.endpoints.length > 0) {
|
|
359
|
+
config.endpoints = data.endpoints;
|
|
360
|
+
}
|
|
361
|
+
if (data.localModels && Object.keys(data.localModels).length > 0) {
|
|
362
|
+
// All other local.* keys are zod-defaulted (autoDetectLoopback: true,
|
|
363
|
+
// defaultRate {0,0}, rateClass "nominal", injectUsageOptions: true).
|
|
364
|
+
config.local = { models: data.localModels };
|
|
365
|
+
}
|
|
269
366
|
// Write config
|
|
270
367
|
writeFileSync(join(vaultPath, "usertrust.config.json"), JSON.stringify(config, null, "\t"), "utf-8");
|
|
271
368
|
// Write default policy
|
package/dist/cli/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.js
CHANGED
|
File without changes
|
package/dist/detect.d.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* implement their own budget and audit controls or wrap calls through the
|
|
17
17
|
* governed entry points above.
|
|
18
18
|
*/
|
|
19
|
-
import type { LLMClientKind } from "./shared/types.js";
|
|
19
|
+
import type { EndpointInfo, LLMClientKind, TrustConfig } from "./shared/types.js";
|
|
20
20
|
/**
|
|
21
21
|
* Detect which LLM SDK a client belongs to by inspecting its shape.
|
|
22
22
|
*
|
|
@@ -32,4 +32,37 @@ import type { LLMClientKind } from "./shared/types.js";
|
|
|
32
32
|
* @throws {Error} if the client does not match any known SDK shape
|
|
33
33
|
*/
|
|
34
34
|
export declare function detectClientKind(client: unknown): LLMClientKind;
|
|
35
|
+
/**
|
|
36
|
+
* Classify the endpoint a client points at — local (self-hosted) or cloud —
|
|
37
|
+
* selecting the settlement regime for every governed call. Runs BESIDE
|
|
38
|
+
* `detectClientKind` (which stays the transport detector); the endpoint class,
|
|
39
|
+
* not the model string, picks local vs cloud metering, so model-name spoofing
|
|
40
|
+
* (`ollama cp llama3.2 gpt-4o`) cannot change the regime.
|
|
41
|
+
*
|
|
42
|
+
* Classification order:
|
|
43
|
+
* 1. `override.class` provided → override wins (runtime defaults to "unknown").
|
|
44
|
+
* 2. `client.baseURL` read when it is a string; absent or malformed (URL parse
|
|
45
|
+
* failure) → treated as absent → cloud default. Never throws.
|
|
46
|
+
* 3. `config.endpoints[]` first match (origin / leading-star hostname suffix /
|
|
47
|
+
* bare hostname — see matchesEndpointEntry).
|
|
48
|
+
* 4. Loopback autodetect (config.local.autoDetectLoopback): hostname
|
|
49
|
+
* localhost | 127.0.0.1 | ::1 | ::ffff:127.0.0.1 (case-insensitive, IPv6
|
|
50
|
+
* brackets stripped, IPv4-mapped form matched by its WHATWG serialization) →
|
|
51
|
+
* local, runtime hinted by port (11434 ollama, 1234 lmstudio, 8000 vllm,
|
|
52
|
+
* else "openai-compat").
|
|
53
|
+
* 5. Default `{ class: "cloud", runtime: "unknown" }` — fail-EXPENSIVE:
|
|
54
|
+
* over-charging at cloud rates is recoverable, under-charging a paid
|
|
55
|
+
* endpoint is not.
|
|
56
|
+
*
|
|
57
|
+
* **Security posture (trusted-operator boundary):** endpoint classification —
|
|
58
|
+
* config matchers, overrides, and loopback autodetect — is a TRUSTED-OPERATOR
|
|
59
|
+
* decision. Never wire it to end-user or request input. In server/multi-tenant
|
|
60
|
+
* deployments set `local.autoDetectLoopback: false` and classify via explicit
|
|
61
|
+
* `endpoints[]` config: loopback inside a container can be a forwarding sidecar
|
|
62
|
+
* to a paid API. This is the same trust boundary as `budget`/`customRates` —
|
|
63
|
+
* the config author already controls billing entirely. Note that a compromised
|
|
64
|
+
* local server can under-report usage; receipts expose `usageSource` and
|
|
65
|
+
* `meter.rateSource` precisely so that this is auditable.
|
|
66
|
+
*/
|
|
67
|
+
export declare function classifyEndpoint(client: unknown, config: TrustConfig, override?: Partial<EndpointInfo>): EndpointInfo;
|
|
35
68
|
//# sourceMappingURL=detect.d.ts.map
|
package/dist/detect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAgB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhG;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAyC/D;AAsED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,WAAW,EACnB,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC9B,YAAY,CA8Bd"}
|