offrouter-core 0.5.0 → 0.6.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/audit.d.ts +51 -2
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +60 -3
- package/dist/audit.js.map +1 -1
- package/dist/config.d.ts +26 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +160 -1
- package/dist/config.js.map +1 -1
- package/dist/delegation.d.ts +40 -0
- package/dist/delegation.d.ts.map +1 -1
- package/dist/delegation.js +169 -8
- package/dist/delegation.js.map +1 -1
- package/dist/index.d.ts +27 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -7
- package/dist/index.js.map +1 -1
- package/dist/llm-judge.d.ts +41 -0
- package/dist/llm-judge.d.ts.map +1 -0
- package/dist/llm-judge.js +159 -0
- package/dist/llm-judge.js.map +1 -0
- package/dist/policy.d.ts +77 -0
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +81 -0
- package/dist/policy.js.map +1 -1
- package/dist/provider-health.d.ts +129 -0
- package/dist/provider-health.d.ts.map +1 -0
- package/dist/provider-health.js +423 -0
- package/dist/provider-health.js.map +1 -0
- package/dist/providers/catalog-data.d.ts +7 -0
- package/dist/providers/catalog-data.d.ts.map +1 -1
- package/dist/providers/catalog-data.js +140 -53
- package/dist/providers/catalog-data.js.map +1 -1
- package/dist/providers/catalog.d.ts +3 -3
- package/dist/providers/catalog.d.ts.map +1 -1
- package/dist/providers/catalog.js +1 -0
- package/dist/providers/catalog.js.map +1 -1
- package/dist/proxy/anthropic-mapper.d.ts +585 -0
- package/dist/proxy/anthropic-mapper.d.ts.map +1 -0
- package/dist/proxy/anthropic-mapper.js +539 -0
- package/dist/proxy/anthropic-mapper.js.map +1 -0
- package/dist/proxy/anthropic-server.d.ts +24 -0
- package/dist/proxy/anthropic-server.d.ts.map +1 -0
- package/dist/proxy/anthropic-server.js +606 -0
- package/dist/proxy/anthropic-server.js.map +1 -0
- package/dist/proxy/classify.d.ts +17 -0
- package/dist/proxy/classify.d.ts.map +1 -0
- package/dist/proxy/classify.js +65 -0
- package/dist/proxy/classify.js.map +1 -0
- package/dist/proxy/responses-mapper.d.ts +15 -0
- package/dist/proxy/responses-mapper.d.ts.map +1 -1
- package/dist/proxy/responses-mapper.js +9 -2
- package/dist/proxy/responses-mapper.js.map +1 -1
- package/dist/proxy/responses-server.d.ts.map +1 -1
- package/dist/proxy/responses-server.js +14 -1
- package/dist/proxy/responses-server.js.map +1 -1
- package/dist/router.d.ts +36 -2
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +158 -23
- package/dist/router.js.map +1 -1
- package/dist/schemas.d.ts +115 -34
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +35 -0
- package/dist/schemas.js.map +1 -1
- package/dist/secret-scan.d.ts +40 -0
- package/dist/secret-scan.d.ts.map +1 -0
- package/dist/secret-scan.js +125 -0
- package/dist/secret-scan.js.map +1 -0
- package/dist/secrets.d.ts +77 -6
- package/dist/secrets.d.ts.map +1 -1
- package/dist/secrets.js +356 -32
- package/dist/secrets.js.map +1 -1
- package/dist/spend.d.ts +122 -0
- package/dist/spend.d.ts.map +1 -0
- package/dist/spend.js +279 -0
- package/dist/spend.js.map +1 -0
- package/dist/task-classifier.d.ts +45 -0
- package/dist/task-classifier.d.ts.map +1 -0
- package/dist/task-classifier.js +153 -0
- package/dist/task-classifier.js.map +1 -0
- package/dist/types.d.ts +46 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/usage-file.d.ts +2 -6
- package/dist/usage-file.d.ts.map +1 -1
- package/dist/usage-file.js +64 -6
- package/dist/usage-file.js.map +1 -1
- package/dist/usage.d.ts +64 -10
- package/dist/usage.d.ts.map +1 -1
- package/dist/usage.js +79 -5
- package/dist/usage.js.map +1 -1
- package/package.json +1 -1
package/dist/audit.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { FallbackChainEntry, FallbackReason, PolicyDenial, RouteDecision, RouteRequest, SelectedRoute } from "./types.js";
|
|
1
|
+
import type { ClassifierName, FallbackChainEntry, FallbackReason, PolicyDenial, RouteClassification, RouteDecision, RouteRequest, SelectedRoute } from "./types.js";
|
|
2
2
|
/** Default max chars kept for an opt-in redacted prompt preview. */
|
|
3
3
|
export declare const DEFAULT_PREVIEW_MAX_CHARS = 80;
|
|
4
4
|
/** Cancellation lifecycle for an audited request/decision in-process. */
|
|
5
5
|
export type CancellationState = "active" | "cancelled" | "completed";
|
|
6
6
|
/** High-level audit event kind. */
|
|
7
|
-
export type AuditRecordKind = "route_decision" | "api_key_fallback" | "cancellation";
|
|
7
|
+
export type AuditRecordKind = "route_decision" | "api_key_fallback" | "cancellation" | "outbound_secret_finding";
|
|
8
8
|
/**
|
|
9
9
|
* Append-only audit record. Intentionally omits raw prompt text.
|
|
10
10
|
* `promptPreviewRedacted` appears only when explicitly requested at append.
|
|
@@ -32,11 +32,32 @@ export interface AuditRecord {
|
|
|
32
32
|
fallbackChain?: FallbackChainEntry[];
|
|
33
33
|
/** Explicit API-key fallback reason when paid capacity was used. */
|
|
34
34
|
apiKeyFallbackReason?: FallbackReason | string;
|
|
35
|
+
/** True when an api-key route was used with explicit spend approval. */
|
|
36
|
+
apiSpendApproved?: boolean;
|
|
37
|
+
/** True when a subscription route was used with an explicit account-switch acknowledgment. */
|
|
38
|
+
switchApproved?: boolean;
|
|
35
39
|
policyDenials?: PolicyDenial[];
|
|
36
40
|
blocked?: boolean;
|
|
37
41
|
needsConfiguration?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Classifier signal copied from the route decision. Family / confidence /
|
|
44
|
+
* stable signal ids only — never prompt text.
|
|
45
|
+
*/
|
|
46
|
+
classification?: RouteClassification;
|
|
47
|
+
/**
|
|
48
|
+
* Which classifier produced the recorded classification signal.
|
|
49
|
+
* Present when classification is recorded. Never prompt text.
|
|
50
|
+
*/
|
|
51
|
+
classifierName?: ClassifierName;
|
|
38
52
|
cancellationState?: CancellationState;
|
|
39
53
|
cancelledAt?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Credential pattern names matched in outbound content (outbound_secret_finding).
|
|
56
|
+
* Names only — never matched content, not even redacted excerpts.
|
|
57
|
+
*/
|
|
58
|
+
secretPatternNames?: string[];
|
|
59
|
+
/** Enforcement mode in effect when findings were recorded. */
|
|
60
|
+
outboundSecretScanMode?: "block" | "warn" | "off";
|
|
40
61
|
}
|
|
41
62
|
export interface AppendDecisionOptions {
|
|
42
63
|
/**
|
|
@@ -51,6 +72,10 @@ export interface AppendDecisionOptions {
|
|
|
51
72
|
* Never stored; used only during redaction.
|
|
52
73
|
*/
|
|
53
74
|
knownSecrets?: Iterable<string>;
|
|
75
|
+
/** Record that explicit api-spend approval accompanied this request. */
|
|
76
|
+
apiSpendApproved?: boolean;
|
|
77
|
+
/** Record that an explicit subscription account-switch acknowledgment accompanied this request. */
|
|
78
|
+
switchApproved?: boolean;
|
|
54
79
|
/** Initial cancellation state; default "active" for successful routes. */
|
|
55
80
|
cancellationState?: CancellationState;
|
|
56
81
|
/** Override clock for tests. */
|
|
@@ -92,6 +117,20 @@ export interface AuditStore {
|
|
|
92
117
|
markCompleted(requestId: string, options?: {
|
|
93
118
|
now?: () => Date;
|
|
94
119
|
}): Promise<AuditRecord | undefined>;
|
|
120
|
+
/**
|
|
121
|
+
* Record outbound secret-scan findings. Persists pattern names only —
|
|
122
|
+
* never matched content or redacted excerpts.
|
|
123
|
+
*/
|
|
124
|
+
recordOutboundSecretFindings(input: {
|
|
125
|
+
requestId: string;
|
|
126
|
+
decisionId?: string;
|
|
127
|
+
promptDigest?: string;
|
|
128
|
+
patternNames: string[];
|
|
129
|
+
mode: "block" | "warn" | "off";
|
|
130
|
+
/** Free-text explanation; must not include matched secret values. */
|
|
131
|
+
explanation?: string;
|
|
132
|
+
now?: () => Date;
|
|
133
|
+
}): Promise<AuditRecord>;
|
|
95
134
|
getCancellationState(requestId: string): Promise<CancellationState | undefined>;
|
|
96
135
|
list(options?: ListAuditOptions): Promise<AuditRecord[]>;
|
|
97
136
|
get(recordId: string): Promise<AuditRecord | undefined>;
|
|
@@ -107,6 +146,7 @@ export interface InMemoryAuditStoreOptions {
|
|
|
107
146
|
knownSecrets?: Iterable<string>;
|
|
108
147
|
now?: () => Date;
|
|
109
148
|
}
|
|
149
|
+
export declare function clampPreview(text: string, maxChars: number): string;
|
|
110
150
|
/**
|
|
111
151
|
* In-memory audit store for tests and single-process V1 use.
|
|
112
152
|
* Appends are serialized so concurrent writers cannot interleave corruptly.
|
|
@@ -129,6 +169,15 @@ export declare class InMemoryAuditStore implements AuditStore {
|
|
|
129
169
|
markCompleted(requestId: string, options?: {
|
|
130
170
|
now?: () => Date;
|
|
131
171
|
}): Promise<AuditRecord | undefined>;
|
|
172
|
+
recordOutboundSecretFindings(input: {
|
|
173
|
+
requestId: string;
|
|
174
|
+
decisionId?: string;
|
|
175
|
+
promptDigest?: string;
|
|
176
|
+
patternNames: string[];
|
|
177
|
+
mode: "block" | "warn" | "off";
|
|
178
|
+
explanation?: string;
|
|
179
|
+
now?: () => Date;
|
|
180
|
+
}): Promise<AuditRecord>;
|
|
132
181
|
getCancellationState(requestId: string): Promise<CancellationState | undefined>;
|
|
133
182
|
list(options?: ListAuditOptions): Promise<AuditRecord[]>;
|
|
134
183
|
get(recordId: string): Promise<AuditRecord | undefined>;
|
package/dist/audit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,oEAAoE;AACpE,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,yEAAyE;AACzE,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;AAErE,mCAAmC;AACnC,MAAM,MAAM,eAAe,GACvB,gBAAgB,GAChB,kBAAkB,GAClB,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/audit.js
CHANGED
|
@@ -14,7 +14,7 @@ export const DEFAULT_PREVIEW_MAX_CHARS = 80;
|
|
|
14
14
|
function newId(prefix) {
|
|
15
15
|
return `${prefix}_${randomBytes(8).toString("hex")}`;
|
|
16
16
|
}
|
|
17
|
-
function clampPreview(text, maxChars) {
|
|
17
|
+
export function clampPreview(text, maxChars) {
|
|
18
18
|
if (text.length <= maxChars)
|
|
19
19
|
return text;
|
|
20
20
|
return `${text.slice(0, Math.max(0, maxChars - 1))}…`;
|
|
@@ -122,6 +122,14 @@ export class InMemoryAuditStore {
|
|
|
122
122
|
auditSummary,
|
|
123
123
|
reason,
|
|
124
124
|
explanation,
|
|
125
|
+
...(options.apiSpendApproved === true &&
|
|
126
|
+
decision.route?.authTier === "api-key"
|
|
127
|
+
? { apiSpendApproved: true }
|
|
128
|
+
: {}),
|
|
129
|
+
...(options.switchApproved === true &&
|
|
130
|
+
decision.route?.authTier === "subscription"
|
|
131
|
+
? { switchApproved: true }
|
|
132
|
+
: {}),
|
|
125
133
|
route: decision.route ?? null,
|
|
126
134
|
fallbackChain: decision.fallbackChain
|
|
127
135
|
? decision.fallbackChain.map((e) => ({ ...e }))
|
|
@@ -135,6 +143,19 @@ export class InMemoryAuditStore {
|
|
|
135
143
|
: undefined,
|
|
136
144
|
blocked: decision.blocked,
|
|
137
145
|
needsConfiguration: decision.needsConfiguration,
|
|
146
|
+
...(decision.classification
|
|
147
|
+
? {
|
|
148
|
+
classification: {
|
|
149
|
+
recommendedFamily: decision.classification.recommendedFamily,
|
|
150
|
+
confidence: decision.classification.confidence,
|
|
151
|
+
// signals are stable rule ids; still run through redaction defensively
|
|
152
|
+
signals: decision.classification.signals.map((s) => safeRedact(s, known)),
|
|
153
|
+
},
|
|
154
|
+
}
|
|
155
|
+
: {}),
|
|
156
|
+
...(decision.classifierName
|
|
157
|
+
? { classifierName: decision.classifierName }
|
|
158
|
+
: {}),
|
|
138
159
|
cancellationState: initialCancellation,
|
|
139
160
|
};
|
|
140
161
|
if (redactedStoredPreview !== undefined) {
|
|
@@ -220,6 +241,36 @@ export class InMemoryAuditStore {
|
|
|
220
241
|
return structuredClone(update);
|
|
221
242
|
});
|
|
222
243
|
}
|
|
244
|
+
async recordOutboundSecretFindings(input) {
|
|
245
|
+
return this.#exclusive(() => {
|
|
246
|
+
const now = (input.now ?? this.#now)();
|
|
247
|
+
// Names only — strip any free-text that might accidentally embed secrets.
|
|
248
|
+
const names = [
|
|
249
|
+
...new Set((input.patternNames ?? []).filter((n) => typeof n === "string" && n.length > 0)),
|
|
250
|
+
];
|
|
251
|
+
const explanation = input.explanation !== undefined
|
|
252
|
+
? safeRedact(input.explanation, this.#defaultKnownSecrets)
|
|
253
|
+
: `Outbound content matched credential pattern(s): ${names.join(", ") || "(none)"}`;
|
|
254
|
+
const record = {
|
|
255
|
+
recordId: newId("aud"),
|
|
256
|
+
kind: "outbound_secret_finding",
|
|
257
|
+
timestamp: now.toISOString(),
|
|
258
|
+
requestId: input.requestId,
|
|
259
|
+
decisionId: input.decisionId,
|
|
260
|
+
promptDigest: input.promptDigest,
|
|
261
|
+
reason: input.mode === "block"
|
|
262
|
+
? "outbound_secret_blocked"
|
|
263
|
+
: "outbound_secret_warning",
|
|
264
|
+
explanation,
|
|
265
|
+
secretPatternNames: names,
|
|
266
|
+
outboundSecretScanMode: input.mode,
|
|
267
|
+
blocked: input.mode === "block",
|
|
268
|
+
cancellationState: input.mode === "block" ? "completed" : "active",
|
|
269
|
+
};
|
|
270
|
+
this.#push(record, { trackAsLatest: false });
|
|
271
|
+
return structuredClone(record);
|
|
272
|
+
});
|
|
273
|
+
}
|
|
223
274
|
async getCancellationState(requestId) {
|
|
224
275
|
const latest = this.#latestByRequest.get(requestId);
|
|
225
276
|
return latest?.cancellationState;
|
|
@@ -262,10 +313,16 @@ export class InMemoryAuditStore {
|
|
|
262
313
|
}, {}),
|
|
263
314
|
};
|
|
264
315
|
}
|
|
265
|
-
#push(record) {
|
|
316
|
+
#push(record, options = {}) {
|
|
266
317
|
this.#records.push(record);
|
|
267
318
|
this.#byId.set(record.recordId, record);
|
|
268
|
-
|
|
319
|
+
// Side-car findings (outbound secret scan) stay on the log but must not
|
|
320
|
+
// become the cancellation/completion base — otherwise markCompleted would
|
|
321
|
+
// clone them as a second "finding" row.
|
|
322
|
+
const trackAsLatest = options.trackAsLatest ?? true;
|
|
323
|
+
if (trackAsLatest) {
|
|
324
|
+
this.#latestByRequest.set(record.requestId, record);
|
|
325
|
+
}
|
|
269
326
|
if (this.#maxRecords !== undefined &&
|
|
270
327
|
this.#records.length > this.#maxRecords) {
|
|
271
328
|
const overflow = this.#records.length - this.#maxRecords;
|
package/dist/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAUhD,oEAAoE;AACpE,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAwI5C,SAAS,KAAK,CAAC,MAAc;IAC3B,OAAO,GAAG,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,QAAgB;IAClD,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CACjB,KAAyB,EACzB,YAA8B;IAE9B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,KAAK,IAAI,EAAE,CAAC;IACtD,OAAO,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAuB;IACtD,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3C,IAAI,QAAQ,CAAC,MAAM,KAAK,kBAAkB;YAAE,OAAO,IAAI,CAAC;QACxD,IACE,QAAQ,CAAC,aAAa,EAAE,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,kBAAkB,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,CACnE,EACD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,oEAAoE;QACpE,IACE,QAAQ,CAAC,aAAa,EAAE,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,MAAM,KAAK,wBAAwB;YACrC,CAAC,CAAC,MAAM,KAAK,uBAAuB;YACpC,CAAC,CAAC,MAAM,KAAK,2BAA2B;YACxC,CAAC,CAAC,MAAM,KAAK,gBAAgB,CAChC,EACD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,KAAK,kBAAkB,CAAC;AAChD,CAAC;AAED,SAAS,2BAA2B,CAClC,QAAuB;IAEvB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,EAAE,IAAI,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,kBAAkB,CACvC,CAAC;IACF,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC;IACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,EAAE,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,MAAM,KAAK,wBAAwB;QACrC,CAAC,CAAC,MAAM,KAAK,uBAAuB;QACpC,CAAC,CAAC,MAAM,KAAK,2BAA2B;QACxC,CAAC,CAAC,MAAM,KAAK,gBAAgB,CAChC,CAAC;IACF,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC,MAAM,CAAC;IACvC,IAAI,QAAQ,CAAC,KAAK,EAAE,QAAQ,KAAK,SAAS;QAAE,OAAO,kBAAkB,CAAC;IACtE,OAAO,QAAQ,CAAC,MAAM,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACpB,QAAQ,GAAkB,EAAE,CAAC;IAC7B,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAChD,wDAAwD;IAC/C,gBAAgB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAClD,WAAW,CAAqB;IAChC,oBAAoB,CAAW;IAC/B,IAAI,CAAa;IAC1B,MAAM,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IAE7C,YAAY,UAAqC,EAAE;QACjD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,YAAY;YAC9C,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAChF,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,6EAA6E;IAC7E,UAAU,CAAI,EAAwB;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CACpB,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,OAAqB,EACrB,QAAuB,EACvB,UAAiC,EAAE;QAEnC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;YAC1B,MAAM,KAAK,GAAG,UAAU,CACtB,IAAI,CAAC,oBAAoB,EACzB,OAAO,CAAC,YAAY,CACrB,CAAC;YACF,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,cAAc,GAAG,OAAO,CAAC,oBAAoB,KAAK,IAAI,CAAC;YAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,IAAI,yBAAyB,CAAC;YAEtE,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;YACnE,MAAM,IAAI,GAAoB,oBAAoB;gBAChD,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,gBAAgB,CAAC;YAErB,MAAM,mBAAmB,GACvB,OAAO,CAAC,iBAAiB;gBACzB,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAExE,8EAA8E;YAC9E,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY;gBACxC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC;gBAC1C,CAAC,CAAC,UAAU,CACR,YAAY,QAAQ,CAAC,UAAU,WAAW,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EACrE,KAAK,CACN,CAAC;YAEN,iEAAiE;YACjE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;YAC9C,MAAM,qBAAqB,GAAG,cAAc;gBAC1C,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC;gBACvD,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,MAAM,GAAgB;gBAC1B,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;gBACtB,IAAI;gBACJ,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;gBAChC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;gBACjC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY;gBACvC,YAAY;gBACZ,MAAM;gBACN,WAAW;gBACX,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI;gBAC7B,aAAa,EAAE,QAAQ,CAAC,aAAa;oBACnC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC/C,CAAC,CAAC,SAAS;gBACb,oBAAoB;gBACpB,aAAa,EAAE,QAAQ,CAAC,aAAa;oBACnC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACjC,GAAG,CAAC;wBACJ,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;qBACtC,CAAC,CAAC;oBACL,CAAC,CAAC,SAAS;gBACb,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;gBAC/C,iBAAiB,EAAE,mBAAmB;aACvC,CAAC;YAEF,IAAI,qBAAqB,KAAK,SAAS,EAAE,CAAC;gBACxC,uEAAuE;gBACvE,MAAM,CAAC,qBAAqB;oBAC1B,qBAAqB,CAAC,MAAM,GAAG,CAAC;wBAC9B,CAAC,CAAC,qBAAqB;wBACvB,CAAC,CAAC,QAAQ,CAAC;YACjB,CAAC;YAED,+EAA+E;YAC/E,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YAEjD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,KAS1B;QACC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;YAC1B,MAAM,KAAK,GAAG,UAAU,CACtB,IAAI,CAAC,oBAAoB,EACzB,KAAK,CAAC,YAAY,CACnB,CAAC;YACF,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,MAAM,GAAgB;gBAC1B,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;gBACtB,IAAI,EAAE,kBAAkB;gBACxB,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;gBAC/C,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;gBACjD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;gBAC1B,oBAAoB,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;gBAC7D,iBAAiB,EAAE,QAAQ;aAC5B,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,SAAiB,EACjB,UAAgC,EAAE;QAElC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YAC9B,IAAI,MAAM,CAAC,iBAAiB,KAAK,WAAW,EAAE,CAAC;gBAC7C,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACxC,MAAM,MAAM,GAAgB;gBAC1B,GAAG,MAAM;gBACT,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;gBACtB,IAAI,EAAE,cAAc;gBACpB,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC5B,iBAAiB,EAAE,WAAW;gBAC9B,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;oBACpB,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;oBACnC,CAAC,CAAC,WAAW;gBACf,WAAW,EAAE,OAAO,CAAC,MAAM;oBACzB,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;oBACnC,CAAC,CAAC,+BAA+B;aACpC,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,SAAiB,EACjB,UAAgC,EAAE;QAElC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YAC9B,IACE,MAAM,CAAC,iBAAiB,KAAK,WAAW;gBACxC,MAAM,CAAC,iBAAiB,KAAK,WAAW,EACxC,CAAC;gBACD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,MAAM,GAAgB;gBAC1B,GAAG,MAAM;gBACT,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;gBACtB,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;gBACnE,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC5B,iBAAiB,EAAE,WAAW;aAC/B,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,SAAiB;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,OAAO,MAAM,EAAE,iBAAiB,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAA4B,EAAE;QACvC,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;QACD,qBAAqB;QACrB,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YACtD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,QAAgB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,CAAC;IAED,MAAM;QACJ,6EAA6E;QAC7E,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YACjC,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/D,wDAAwD;YACxD,OAAO,EAAE,IAAI,CAAC,QAAQ;iBACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;iBAC1B,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YACpD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC7D,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACrC,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC;SACP,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAmB;QACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEpD,IACE,IAAI,CAAC,WAAW,KAAK,SAAS;YAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EACvC,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;YACzD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAClD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAChC,qEAAqE;gBACrE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACxD,IAAI,MAAM,EAAE,QAAQ,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACtC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB,CACd,MAAmB,EACnB,UAAkB,EAClB,YAAsB;QAEtB,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QACjD,MAAM,KAAK,GAAG;YACZ,MAAM,CAAC,YAAY;YACnB,MAAM,CAAC,MAAM;YACb,MAAM,CAAC,WAAW;YAClB,MAAM,CAAC,qBAAqB;YAC5B,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACvD;aACE,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;aACjD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,wFAAwF;QACxF,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,+DAA+D;YAC/D,IAAI,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9C,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,UAAU,CACxE,UAAU,EACV,QAAQ,CACT,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5C,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,UAAU,CACtE,UAAU,EACV,QAAQ,CACT,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,UAAU,CAC5D,UAAU,EACV,QAAQ,CACT,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,UAAU,CACjB,IAAuB,EACvB,KAAmC;IAEnC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACtB,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -9,6 +9,14 @@ export interface ConfiguredProvider {
|
|
|
9
9
|
id: string;
|
|
10
10
|
enabled: boolean;
|
|
11
11
|
accounts: ConfiguredAccount[];
|
|
12
|
+
/** Optional base URL override for an OpenAI-compatible provider endpoint. */
|
|
13
|
+
baseUrl?: string;
|
|
14
|
+
/** Per-provider hard spend cap in USD; overrides the global policy cap. */
|
|
15
|
+
spendCapUsd?: number;
|
|
16
|
+
/** When present, only these model ids (plus optional trailing `*` prefix glob) are allowed for this provider. */
|
|
17
|
+
allowedModels?: string[];
|
|
18
|
+
/** Listed model ids (plus optional trailing `*` prefix glob) are always blocked. Deny beats allow. */
|
|
19
|
+
deniedModels?: string[];
|
|
12
20
|
}
|
|
13
21
|
/** Named profile overlay loaded from profiles/*.toml. */
|
|
14
22
|
export interface ConfiguredProfile {
|
|
@@ -22,6 +30,23 @@ export interface ConfiguredAccount {
|
|
|
22
30
|
id: string;
|
|
23
31
|
label?: string;
|
|
24
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Synthetic provider ids for OAuth subscription candidates (built at runtime
|
|
35
|
+
* from stored tokens, never declared under `[providers.<id>]`). Routing rules
|
|
36
|
+
* may target these without a matching config stanza; see
|
|
37
|
+
* validateRoutingRules.
|
|
38
|
+
*/
|
|
39
|
+
export declare const SUBSCRIPTION_PROVIDER_IDS: readonly ["anthropic-sub", "openai-sub"];
|
|
40
|
+
/** Single user-defined routing rule from [[routing.rules]]. */
|
|
41
|
+
export interface RoutingRule {
|
|
42
|
+
/** Match keys (AND-ed). At least one of role or family is required. */
|
|
43
|
+
role?: string;
|
|
44
|
+
family?: "fast-coder" | "frontier-coder";
|
|
45
|
+
/** Target keys (exactly one of). */
|
|
46
|
+
model?: string;
|
|
47
|
+
provider?: string;
|
|
48
|
+
tier?: "subscription" | "local" | "api-key";
|
|
49
|
+
}
|
|
25
50
|
export interface ConfigWarning {
|
|
26
51
|
filePath: string;
|
|
27
52
|
path: string;
|
|
@@ -34,6 +59,7 @@ export interface OffRouterConfig {
|
|
|
34
59
|
policyDefaults: PolicyDefaults;
|
|
35
60
|
providers: Record<string, ConfiguredProvider>;
|
|
36
61
|
profiles: Record<string, ConfiguredProfile>;
|
|
62
|
+
routingRules: RoutingRule[];
|
|
37
63
|
warnings: ConfigWarning[];
|
|
38
64
|
}
|
|
39
65
|
export interface LoadConfigOptions {
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -8,6 +8,16 @@ import { homedir as osHomedir } from "node:os";
|
|
|
8
8
|
import { join, resolve } from "node:path";
|
|
9
9
|
import { parse as parseToml } from "smol-toml";
|
|
10
10
|
import { z } from "zod";
|
|
11
|
+
/**
|
|
12
|
+
* Synthetic provider ids for OAuth subscription candidates (built at runtime
|
|
13
|
+
* from stored tokens, never declared under `[providers.<id>]`). Routing rules
|
|
14
|
+
* may target these without a matching config stanza; see
|
|
15
|
+
* validateRoutingRules.
|
|
16
|
+
*/
|
|
17
|
+
export const SUBSCRIPTION_PROVIDER_IDS = [
|
|
18
|
+
"anthropic-sub",
|
|
19
|
+
"openai-sub",
|
|
20
|
+
];
|
|
11
21
|
export class ConfigError extends Error {
|
|
12
22
|
filePath;
|
|
13
23
|
issues;
|
|
@@ -26,16 +36,42 @@ function allowedFromZodShape(shape) {
|
|
|
26
36
|
}
|
|
27
37
|
const ProviderConfigShape = {
|
|
28
38
|
enabled: z.boolean().optional(),
|
|
39
|
+
base_url: z.string().optional(),
|
|
40
|
+
spend_cap_usd: z.number().min(0).optional(),
|
|
29
41
|
accounts: z
|
|
30
42
|
.array(z.object({ id: z.string().min(1), label: z.string().optional() }).strict())
|
|
31
43
|
.optional(),
|
|
44
|
+
allowed_models: z.array(z.string().min(1)).optional(),
|
|
45
|
+
denied_models: z.array(z.string().min(1)).optional(),
|
|
32
46
|
};
|
|
47
|
+
const OutboundSecretScanSchema = z.enum(["block", "warn", "off"]);
|
|
48
|
+
const SubscriptionSwitchSchema = z.enum(["auto", "ask"]);
|
|
49
|
+
const RoutingRuleSchema = z
|
|
50
|
+
.object({
|
|
51
|
+
role: z.string().min(1).optional(),
|
|
52
|
+
family: z.enum(["fast-coder", "frontier-coder"]).optional(),
|
|
53
|
+
model: z.string().min(1).optional(),
|
|
54
|
+
provider: z.string().min(1).optional(),
|
|
55
|
+
tier: z.enum(["subscription", "local", "api-key"]).optional(),
|
|
56
|
+
})
|
|
57
|
+
.strict()
|
|
58
|
+
.refine((rule) => (rule.role !== undefined || rule.family !== undefined) &&
|
|
59
|
+
[rule.model, rule.provider, rule.tier].filter(Boolean).length === 1, {
|
|
60
|
+
message: "routing.rules entry must have at least one of role/family and exactly one of model/provider/tier",
|
|
61
|
+
});
|
|
33
62
|
const PolicySectionShape = {
|
|
34
63
|
subscription_first: z.boolean().optional(),
|
|
35
64
|
allow_api_key_fallback: z.boolean().optional(),
|
|
36
65
|
allow_third_party_subscription_adapters: z.boolean().optional(),
|
|
37
66
|
denied_providers: z.array(z.string().min(1)).optional(),
|
|
38
67
|
near_limit_threshold: z.number().min(0).max(1).optional(),
|
|
68
|
+
/** Scan outbound prompts for credential shapes: block | warn | off. Default warn. */
|
|
69
|
+
outbound_secret_scan: OutboundSecretScanSchema.optional(),
|
|
70
|
+
/** Consent mode for switching subscription accounts within a provider family: auto | ask. Default auto. */
|
|
71
|
+
subscription_switch: SubscriptionSwitchSchema.optional(),
|
|
72
|
+
spend_cap_usd: z.number().min(0).optional(),
|
|
73
|
+
require_api_spend_approval: z.boolean().optional(),
|
|
74
|
+
classifier: z.enum(["heuristic", "llm"]).optional(),
|
|
39
75
|
};
|
|
40
76
|
const RootConfigShape = {
|
|
41
77
|
allowlisted_profiles: z.array(z.string().min(1)).optional(),
|
|
@@ -44,6 +80,12 @@ const RootConfigShape = {
|
|
|
44
80
|
providers: z
|
|
45
81
|
.record(z.string().min(1), z.object(ProviderConfigShape).strict())
|
|
46
82
|
.optional(),
|
|
83
|
+
routing: z
|
|
84
|
+
.object({
|
|
85
|
+
rules: z.array(RoutingRuleSchema),
|
|
86
|
+
})
|
|
87
|
+
.strict()
|
|
88
|
+
.optional(),
|
|
47
89
|
};
|
|
48
90
|
const ProfileFileShape = {
|
|
49
91
|
id: z.string().min(1).optional(),
|
|
@@ -57,10 +99,20 @@ const PROVIDER_ALLOWED = {
|
|
|
57
99
|
...allowedFromZodShape(ProviderConfigShape),
|
|
58
100
|
accounts: "leaf",
|
|
59
101
|
};
|
|
102
|
+
const ROUTING_ALLOWED = {
|
|
103
|
+
rules: {
|
|
104
|
+
role: "leaf",
|
|
105
|
+
family: "leaf",
|
|
106
|
+
model: "leaf",
|
|
107
|
+
provider: "leaf",
|
|
108
|
+
tier: "leaf",
|
|
109
|
+
},
|
|
110
|
+
};
|
|
60
111
|
const ROOT_ALLOWED = {
|
|
61
112
|
...allowedFromZodShape(RootConfigShape),
|
|
62
113
|
policy: allowedFromZodShape(PolicySectionShape),
|
|
63
114
|
providers: "record",
|
|
115
|
+
routing: ROUTING_ALLOWED,
|
|
64
116
|
};
|
|
65
117
|
const PROFILE_ALLOWED = allowedFromZodShape(ProfileFileShape);
|
|
66
118
|
const DEFAULT_DENIED_PROFILE_PATTERNS = ["*-work"];
|
|
@@ -76,6 +128,10 @@ export function defaultConfig(homeDir = "") {
|
|
|
76
128
|
deniedProfilePatterns: [...DEFAULT_DENIED_PROFILE_PATTERNS],
|
|
77
129
|
allowThirdPartySubscriptionAdapters: false,
|
|
78
130
|
deniedProviders: [],
|
|
131
|
+
// Default warn: do not break existing users; blocking is opt-in.
|
|
132
|
+
outboundSecretScan: "warn",
|
|
133
|
+
// Default auto: current routing behavior; ask-before-switch is opt-in.
|
|
134
|
+
subscriptionSwitch: "auto",
|
|
79
135
|
},
|
|
80
136
|
policyDefaults: {
|
|
81
137
|
subscriptionFirst: true,
|
|
@@ -83,6 +139,7 @@ export function defaultConfig(homeDir = "") {
|
|
|
83
139
|
},
|
|
84
140
|
providers: {},
|
|
85
141
|
profiles: {},
|
|
142
|
+
routingRules: [],
|
|
86
143
|
warnings: [],
|
|
87
144
|
};
|
|
88
145
|
}
|
|
@@ -109,6 +166,13 @@ function formatZodIssues(error) {
|
|
|
109
166
|
* Uses Zod internals only as type-shape guidance via a parallel known-keys model.
|
|
110
167
|
*/
|
|
111
168
|
function collectUnknownKeyWarnings(value, allowed, filePath, pathPrefix) {
|
|
169
|
+
if (Array.isArray(value)) {
|
|
170
|
+
const warnings = [];
|
|
171
|
+
for (let i = 0; i < value.length; i++) {
|
|
172
|
+
warnings.push(...collectUnknownKeyWarnings(value[i], allowed, filePath, `${pathPrefix}[${i}]`));
|
|
173
|
+
}
|
|
174
|
+
return warnings;
|
|
175
|
+
}
|
|
112
176
|
if (!isPlainObject(value)) {
|
|
113
177
|
return [];
|
|
114
178
|
}
|
|
@@ -186,6 +250,9 @@ function validateProfile(raw, filePath, fallbackId) {
|
|
|
186
250
|
};
|
|
187
251
|
}
|
|
188
252
|
function stripUnknown(value, allowed) {
|
|
253
|
+
if (Array.isArray(value)) {
|
|
254
|
+
return value.map((item) => stripUnknown(item, allowed));
|
|
255
|
+
}
|
|
189
256
|
if (!isPlainObject(value)) {
|
|
190
257
|
return value;
|
|
191
258
|
}
|
|
@@ -246,6 +313,22 @@ function mergeRootInto(target, root, sourcePath) {
|
|
|
246
313
|
if (root.policy.near_limit_threshold !== undefined) {
|
|
247
314
|
target.policy.nearLimitThreshold = root.policy.near_limit_threshold;
|
|
248
315
|
}
|
|
316
|
+
if (root.policy.outbound_secret_scan !== undefined) {
|
|
317
|
+
target.policy.outboundSecretScan = root.policy.outbound_secret_scan;
|
|
318
|
+
}
|
|
319
|
+
if (root.policy.subscription_switch !== undefined) {
|
|
320
|
+
target.policy.subscriptionSwitch = root.policy.subscription_switch;
|
|
321
|
+
}
|
|
322
|
+
if (root.policy.spend_cap_usd !== undefined) {
|
|
323
|
+
target.policy.spendCapUsd = root.policy.spend_cap_usd;
|
|
324
|
+
}
|
|
325
|
+
if (root.policy.require_api_spend_approval !== undefined) {
|
|
326
|
+
target.policy.requireApiSpendApproval =
|
|
327
|
+
root.policy.require_api_spend_approval;
|
|
328
|
+
}
|
|
329
|
+
if (root.policy.classifier !== undefined) {
|
|
330
|
+
target.policy.classifier = root.policy.classifier;
|
|
331
|
+
}
|
|
249
332
|
if (root.policy.denied_providers) {
|
|
250
333
|
target.policy.deniedProviders = uniqueStrings([
|
|
251
334
|
...(target.policy.deniedProviders ?? []),
|
|
@@ -253,22 +336,72 @@ function mergeRootInto(target, root, sourcePath) {
|
|
|
253
336
|
]);
|
|
254
337
|
}
|
|
255
338
|
}
|
|
339
|
+
if (root.routing?.rules) {
|
|
340
|
+
target.routingRules.push(...root.routing.rules);
|
|
341
|
+
}
|
|
256
342
|
if (root.providers) {
|
|
257
343
|
for (const [id, provider] of Object.entries(root.providers)) {
|
|
258
344
|
const accounts = provider.accounts
|
|
259
345
|
? provider.accounts.map((a) => ({ id: a.id, label: a.label }))
|
|
260
346
|
: [{ id }];
|
|
261
|
-
|
|
347
|
+
const configured = {
|
|
262
348
|
id,
|
|
263
349
|
enabled: provider.enabled ?? true,
|
|
264
350
|
accounts,
|
|
265
351
|
};
|
|
352
|
+
if (provider.base_url !== undefined) {
|
|
353
|
+
configured.baseUrl = provider.base_url;
|
|
354
|
+
}
|
|
355
|
+
if (provider.spend_cap_usd !== undefined) {
|
|
356
|
+
configured.spendCapUsd = provider.spend_cap_usd;
|
|
357
|
+
}
|
|
358
|
+
if (provider.allowed_models !== undefined) {
|
|
359
|
+
configured.allowedModels = provider.allowed_models;
|
|
360
|
+
}
|
|
361
|
+
if (provider.denied_models !== undefined) {
|
|
362
|
+
configured.deniedModels = provider.denied_models;
|
|
363
|
+
}
|
|
364
|
+
target.providers[id] = configured;
|
|
266
365
|
}
|
|
267
366
|
}
|
|
268
367
|
}
|
|
269
368
|
function uniqueStrings(values) {
|
|
270
369
|
return [...new Set(values)];
|
|
271
370
|
}
|
|
371
|
+
function validateRoutingRules(config) {
|
|
372
|
+
const validRules = [];
|
|
373
|
+
for (let i = 0; i < config.routingRules.length; i++) {
|
|
374
|
+
const rule = config.routingRules[i];
|
|
375
|
+
let providerId;
|
|
376
|
+
if (rule.provider !== undefined) {
|
|
377
|
+
providerId = rule.provider;
|
|
378
|
+
}
|
|
379
|
+
else if (rule.model !== undefined) {
|
|
380
|
+
const slashIdx = rule.model.indexOf("/");
|
|
381
|
+
if (slashIdx <= 0 || slashIdx === rule.model.length - 1) {
|
|
382
|
+
config.warnings.push({
|
|
383
|
+
filePath: config.sources[0] ?? config.homeDir,
|
|
384
|
+
path: `routing.rules[${i}]`,
|
|
385
|
+
message: `Routing rule ${i} model "${rule.model}" is not in provider/model-id form; rule ignored.`,
|
|
386
|
+
});
|
|
387
|
+
continue;
|
|
388
|
+
}
|
|
389
|
+
providerId = rule.model.slice(0, slashIdx);
|
|
390
|
+
}
|
|
391
|
+
if (providerId !== undefined &&
|
|
392
|
+
!(providerId in config.providers) &&
|
|
393
|
+
!SUBSCRIPTION_PROVIDER_IDS.includes(providerId)) {
|
|
394
|
+
config.warnings.push({
|
|
395
|
+
filePath: config.sources[0] ?? config.homeDir,
|
|
396
|
+
path: `routing.rules[${i}]`,
|
|
397
|
+
message: `Routing rule ${i} references unconfigured provider "${providerId}"; rule ignored.`,
|
|
398
|
+
});
|
|
399
|
+
continue;
|
|
400
|
+
}
|
|
401
|
+
validRules.push(rule);
|
|
402
|
+
}
|
|
403
|
+
config.routingRules = validRules;
|
|
404
|
+
}
|
|
272
405
|
async function readOptionalFile(path) {
|
|
273
406
|
try {
|
|
274
407
|
return await readFile(path, "utf8");
|
|
@@ -350,6 +483,32 @@ export async function loadConfig(options = {}) {
|
|
|
350
483
|
if (options.workspaceDir && options.workspaceTrusted) {
|
|
351
484
|
await loadRootFile(join(options.workspaceDir, ".offrouter", "config.toml"), config);
|
|
352
485
|
}
|
|
486
|
+
validateRoutingRules(config);
|
|
487
|
+
// Derive per-provider spend cap overrides onto the policy config so every
|
|
488
|
+
// caller of loadConfig enforces the same caps without remapping providers.
|
|
489
|
+
const providerSpendCapsUsd = {};
|
|
490
|
+
const providerAllowedModels = {};
|
|
491
|
+
const providerDeniedModels = {};
|
|
492
|
+
for (const [id, provider] of Object.entries(config.providers)) {
|
|
493
|
+
if (provider.spendCapUsd !== undefined) {
|
|
494
|
+
providerSpendCapsUsd[id] = provider.spendCapUsd;
|
|
495
|
+
}
|
|
496
|
+
if (provider.allowedModels !== undefined && provider.allowedModels.length > 0) {
|
|
497
|
+
providerAllowedModels[id] = provider.allowedModels;
|
|
498
|
+
}
|
|
499
|
+
if (provider.deniedModels !== undefined && provider.deniedModels.length > 0) {
|
|
500
|
+
providerDeniedModels[id] = provider.deniedModels;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
if (Object.keys(providerSpendCapsUsd).length > 0) {
|
|
504
|
+
config.policy.providerSpendCapsUsd = providerSpendCapsUsd;
|
|
505
|
+
}
|
|
506
|
+
if (Object.keys(providerAllowedModels).length > 0) {
|
|
507
|
+
config.policy.providerAllowedModels = providerAllowedModels;
|
|
508
|
+
}
|
|
509
|
+
if (Object.keys(providerDeniedModels).length > 0) {
|
|
510
|
+
config.policy.providerDeniedModels = providerDeniedModels;
|
|
511
|
+
}
|
|
353
512
|
return config;
|
|
354
513
|
}
|
|
355
514
|
//# sourceMappingURL=config.js.map
|