@kindgi/agents 0.0.0-bootstrap.0 → 0.1.1
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/LICENSE +201 -0
- package/README.md +131 -2
- package/dist/agent-turn-flow.d.ts +57 -0
- package/dist/agent-turn-flow.d.ts.map +1 -0
- package/dist/agent-turn-flow.js +172 -0
- package/dist/agent-turn-flow.js.map +1 -0
- package/dist/conversation-binding.d.ts +111 -0
- package/dist/conversation-binding.d.ts.map +1 -0
- package/dist/conversation-binding.js +4 -0
- package/dist/conversation-binding.js.map +1 -0
- package/dist/define.d.ts +180 -0
- package/dist/define.d.ts.map +1 -0
- package/dist/define.js +361 -0
- package/dist/define.js.map +1 -0
- package/dist/errors.d.ts +62 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +4 -0
- package/dist/errors.js.map +1 -0
- package/dist/guardrails-gate.d.ts +169 -0
- package/dist/guardrails-gate.d.ts.map +1 -0
- package/dist/guardrails-gate.js +202 -0
- package/dist/guardrails-gate.js.map +1 -0
- package/dist/handlers/budget-check.d.ts +22 -0
- package/dist/handlers/budget-check.d.ts.map +1 -0
- package/dist/handlers/budget-check.js +109 -0
- package/dist/handlers/budget-check.js.map +1 -0
- package/dist/handlers/build-initial-messages.d.ts +17 -0
- package/dist/handlers/build-initial-messages.d.ts.map +1 -0
- package/dist/handlers/build-initial-messages.js +86 -0
- package/dist/handlers/build-initial-messages.js.map +1 -0
- package/dist/handlers/compose-result.d.ts +10 -0
- package/dist/handlers/compose-result.d.ts.map +1 -0
- package/dist/handlers/compose-result.js +79 -0
- package/dist/handlers/compose-result.js.map +1 -0
- package/dist/handlers/constants.d.ts +8 -0
- package/dist/handlers/constants.d.ts.map +1 -0
- package/dist/handlers/constants.js +10 -0
- package/dist/handlers/constants.js.map +1 -0
- package/dist/handlers/context.d.ts +210 -0
- package/dist/handlers/context.d.ts.map +1 -0
- package/dist/handlers/context.js +4 -0
- package/dist/handlers/context.js.map +1 -0
- package/dist/handlers/dispatch-tools.d.ts +15 -0
- package/dist/handlers/dispatch-tools.d.ts.map +1 -0
- package/dist/handlers/dispatch-tools.js +511 -0
- package/dist/handlers/dispatch-tools.js.map +1 -0
- package/dist/handlers/errors.d.ts +133 -0
- package/dist/handlers/errors.d.ts.map +1 -0
- package/dist/handlers/errors.js +134 -0
- package/dist/handlers/errors.js.map +1 -0
- package/dist/handlers/evaluate-guardrails.d.ts +14 -0
- package/dist/handlers/evaluate-guardrails.d.ts.map +1 -0
- package/dist/handlers/evaluate-guardrails.js +128 -0
- package/dist/handlers/evaluate-guardrails.js.map +1 -0
- package/dist/handlers/final-iteration.d.ts +7 -0
- package/dist/handlers/final-iteration.d.ts.map +1 -0
- package/dist/handlers/final-iteration.js +26 -0
- package/dist/handlers/final-iteration.js.map +1 -0
- package/dist/handlers/index.d.ts +5 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +41 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/model-call.d.ts +13 -0
- package/dist/handlers/model-call.d.ts.map +1 -0
- package/dist/handlers/model-call.js +136 -0
- package/dist/handlers/model-call.js.map +1 -0
- package/dist/handlers/persist-final-message.d.ts +14 -0
- package/dist/handlers/persist-final-message.d.ts.map +1 -0
- package/dist/handlers/persist-final-message.js +54 -0
- package/dist/handlers/persist-final-message.js.map +1 -0
- package/dist/handlers/persist-provenance.d.ts +12 -0
- package/dist/handlers/persist-provenance.d.ts.map +1 -0
- package/dist/handlers/persist-provenance.js +34 -0
- package/dist/handlers/persist-provenance.js.map +1 -0
- package/dist/handlers/persist-user-message.d.ts +15 -0
- package/dist/handlers/persist-user-message.d.ts.map +1 -0
- package/dist/handlers/persist-user-message.js +59 -0
- package/dist/handlers/persist-user-message.js.map +1 -0
- package/dist/handlers/public-types.d.ts +201 -0
- package/dist/handlers/public-types.d.ts.map +1 -0
- package/dist/handlers/public-types.js +4 -0
- package/dist/handlers/public-types.js.map +1 -0
- package/dist/handlers/rehydrate.d.ts +8 -0
- package/dist/handlers/rehydrate.d.ts.map +1 -0
- package/dist/handlers/rehydrate.js +94 -0
- package/dist/handlers/rehydrate.js.map +1 -0
- package/dist/handlers/render-prompt.d.ts +12 -0
- package/dist/handlers/render-prompt.d.ts.map +1 -0
- package/dist/handlers/render-prompt.js +41 -0
- package/dist/handlers/render-prompt.js.map +1 -0
- package/dist/handlers/resolve-tools.d.ts +10 -0
- package/dist/handlers/resolve-tools.d.ts.map +1 -0
- package/dist/handlers/resolve-tools.js +55 -0
- package/dist/handlers/resolve-tools.js.map +1 -0
- package/dist/handlers/result-shape.d.ts +94 -0
- package/dist/handlers/result-shape.d.ts.map +1 -0
- package/dist/handlers/result-shape.js +19 -0
- package/dist/handlers/result-shape.js.map +1 -0
- package/dist/handlers/run-retrievals.d.ts +10 -0
- package/dist/handlers/run-retrievals.d.ts.map +1 -0
- package/dist/handlers/run-retrievals.js +64 -0
- package/dist/handlers/run-retrievals.js.map +1 -0
- package/dist/handlers/run-snapshot.d.ts +4 -0
- package/dist/handlers/run-snapshot.d.ts.map +1 -0
- package/dist/handlers/run-snapshot.js +26 -0
- package/dist/handlers/run-snapshot.js.map +1 -0
- package/dist/handlers/setup.d.ts +25 -0
- package/dist/handlers/setup.d.ts.map +1 -0
- package/dist/handlers/setup.js +231 -0
- package/dist/handlers/setup.js.map +1 -0
- package/dist/handlers/structured-output.d.ts +38 -0
- package/dist/handlers/structured-output.d.ts.map +1 -0
- package/dist/handlers/structured-output.js +89 -0
- package/dist/handlers/structured-output.js.map +1 -0
- package/dist/handlers/tool-errors.d.ts +56 -0
- package/dist/handlers/tool-errors.d.ts.map +1 -0
- package/dist/handlers/tool-errors.js +73 -0
- package/dist/handlers/tool-errors.js.map +1 -0
- package/dist/handlers/tool-hitl.d.ts +45 -0
- package/dist/handlers/tool-hitl.d.ts.map +1 -0
- package/dist/handlers/tool-hitl.js +81 -0
- package/dist/handlers/tool-hitl.js.map +1 -0
- package/dist/handlers/turn-environment.d.ts +26 -0
- package/dist/handlers/turn-environment.d.ts.map +1 -0
- package/dist/handlers/turn-environment.js +154 -0
- package/dist/handlers/turn-environment.js.map +1 -0
- package/dist/hitl-policy.d.ts +45 -0
- package/dist/hitl-policy.d.ts.map +1 -0
- package/dist/hitl-policy.js +74 -0
- package/dist/hitl-policy.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/invoke.d.ts +36 -0
- package/dist/invoke.d.ts.map +1 -0
- package/dist/invoke.js +228 -0
- package/dist/invoke.js.map +1 -0
- package/dist/migrations-dir.d.ts +11 -0
- package/dist/migrations-dir.d.ts.map +1 -0
- package/dist/migrations-dir.js +14 -0
- package/dist/migrations-dir.js.map +1 -0
- package/dist/project-run-result.d.ts +23 -0
- package/dist/project-run-result.d.ts.map +1 -0
- package/dist/project-run-result.js +116 -0
- package/dist/project-run-result.js.map +1 -0
- package/dist/prompt.d.ts +83 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +119 -0
- package/dist/prompt.js.map +1 -0
- package/dist/provenance-emit.d.ts +44 -0
- package/dist/provenance-emit.d.ts.map +1 -0
- package/dist/provenance-emit.js +51 -0
- package/dist/provenance-emit.js.map +1 -0
- package/dist/registry.d.ts +38 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +125 -0
- package/dist/registry.js.map +1 -0
- package/dist/retrieval.d.ts +47 -0
- package/dist/retrieval.d.ts.map +1 -0
- package/dist/retrieval.js +155 -0
- package/dist/retrieval.js.map +1 -0
- package/dist/run-snapshot-binding.d.ts +77 -0
- package/dist/run-snapshot-binding.d.ts.map +1 -0
- package/dist/run-snapshot-binding.js +4 -0
- package/dist/run-snapshot-binding.js.map +1 -0
- package/dist/schema.d.ts +497 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +133 -0
- package/dist/schema.js.map +1 -0
- package/dist/streaming.d.ts +118 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +17 -0
- package/dist/streaming.js.map +1 -0
- package/dist/tenant-policy.d.ts +16 -0
- package/dist/tenant-policy.d.ts.map +1 -0
- package/dist/tenant-policy.js +77 -0
- package/dist/tenant-policy.js.map +1 -0
- package/dist/types.d.ts +435 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/versioning.d.ts +29 -0
- package/dist/versioning.d.ts.map +1 -0
- package/dist/versioning.js +58 -0
- package/dist/versioning.js.map +1 -0
- package/migrations/0000_sparkling_talkback.sql +18 -0
- package/migrations/0001_tired_warhawk.sql +16 -0
- package/migrations/0002_violet_ezekiel.sql +2 -0
- package/migrations/meta/0000_snapshot.json +172 -0
- package/migrations/meta/0001_snapshot.json +275 -0
- package/migrations/meta/0002_snapshot.json +287 -0
- package/migrations/meta/_journal.json +27 -0
- package/package.json +76 -4
- package/src/agent-turn-flow.ts +183 -0
- package/src/conversation-binding.ts +147 -0
- package/src/define.ts +572 -0
- package/src/errors.ts +80 -0
- package/src/guardrails-gate.ts +342 -0
- package/src/handlers/budget-check.ts +143 -0
- package/src/handlers/build-initial-messages.ts +103 -0
- package/src/handlers/compose-result.ts +90 -0
- package/src/handlers/constants.ts +10 -0
- package/src/handlers/context.ts +226 -0
- package/src/handlers/dispatch-tools.ts +633 -0
- package/src/handlers/errors.ts +282 -0
- package/src/handlers/evaluate-guardrails.ts +153 -0
- package/src/handlers/final-iteration.ts +30 -0
- package/src/handlers/index.ts +63 -0
- package/src/handlers/model-call.ts +151 -0
- package/src/handlers/persist-final-message.ts +67 -0
- package/src/handlers/persist-provenance.ts +39 -0
- package/src/handlers/persist-user-message.ts +70 -0
- package/src/handlers/public-types.ts +209 -0
- package/src/handlers/rehydrate.ts +161 -0
- package/src/handlers/render-prompt.ts +46 -0
- package/src/handlers/resolve-tools.ts +68 -0
- package/src/handlers/result-shape.ts +113 -0
- package/src/handlers/run-retrievals.ts +77 -0
- package/src/handlers/run-snapshot.ts +44 -0
- package/src/handlers/setup.ts +269 -0
- package/src/handlers/structured-output.ts +117 -0
- package/src/handlers/tool-errors.ts +122 -0
- package/src/handlers/tool-hitl.ts +126 -0
- package/src/handlers/turn-environment.ts +191 -0
- package/src/hitl-policy.ts +128 -0
- package/src/index.ts +154 -0
- package/src/invoke.ts +299 -0
- package/src/migrations-dir.ts +17 -0
- package/src/project-run-result.ts +131 -0
- package/src/prompt.ts +185 -0
- package/src/provenance-emit.ts +100 -0
- package/src/registry.ts +164 -0
- package/src/retrieval.ts +219 -0
- package/src/run-snapshot-binding.ts +87 -0
- package/src/schema.ts +154 -0
- package/src/streaming.ts +153 -0
- package/src/tenant-policy.ts +78 -0
- package/src/types.ts +453 -0
- package/src/versioning.ts +77 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { EvaluationResult } from '@kindgi/guardrails';
|
|
2
|
+
import type { Semver } from '@kindgi/types';
|
|
3
|
+
import type { AgentId, ConversationId, ConversationMessage, RetrievedFact } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Discriminated union of every event a turn emits during execution.
|
|
6
|
+
* Callers wire `bindings.onEvent` to their transport (SSE, WebSocket,
|
|
7
|
+
* background job queue, or nothing at all).
|
|
8
|
+
*
|
|
9
|
+
* Order is deterministic per turn: `turn.started` first, `turn.completed`
|
|
10
|
+
* or `turn.failed` last. Intermediate events fire in the order the
|
|
11
|
+
* corresponding action happens.
|
|
12
|
+
*/
|
|
13
|
+
export type TurnEvent = TurnStartedEvent | RetrievalCompletedEvent | ModelCallStartedEvent | ModelCallCompletedEvent | ToolStartedEvent | ToolCompletedEvent | ToolFailedEvent | AgentMessageEvent | GuardrailViolatedEvent | TurnCompletedEvent | TurnFailedEvent;
|
|
14
|
+
export interface TurnStartedEvent {
|
|
15
|
+
readonly kind: 'turn.started';
|
|
16
|
+
readonly conversationId: ConversationId;
|
|
17
|
+
readonly turnNumber: number;
|
|
18
|
+
readonly agentId: AgentId;
|
|
19
|
+
readonly agentVersion: Semver;
|
|
20
|
+
readonly userMessage: string;
|
|
21
|
+
}
|
|
22
|
+
export interface RetrievalCompletedEvent {
|
|
23
|
+
readonly kind: 'retrieval.completed';
|
|
24
|
+
readonly count: number;
|
|
25
|
+
/** Fact ids retrieved this turn. Empty when no intents declared. */
|
|
26
|
+
readonly factIds: readonly string[];
|
|
27
|
+
}
|
|
28
|
+
export interface ModelCallStartedEvent {
|
|
29
|
+
readonly kind: 'model.call.started';
|
|
30
|
+
readonly step: number;
|
|
31
|
+
readonly providerId: string;
|
|
32
|
+
readonly model: string;
|
|
33
|
+
}
|
|
34
|
+
export interface ModelCallCompletedEvent {
|
|
35
|
+
readonly kind: 'model.call.completed';
|
|
36
|
+
readonly step: number;
|
|
37
|
+
readonly finishReason: 'stop' | 'length' | 'tool-use' | 'content-filter' | 'error';
|
|
38
|
+
readonly promptTokens: number;
|
|
39
|
+
readonly completionTokens: number;
|
|
40
|
+
readonly costUsd: number;
|
|
41
|
+
readonly durationMs: number;
|
|
42
|
+
}
|
|
43
|
+
export interface ToolStartedEvent {
|
|
44
|
+
readonly kind: 'tool.started';
|
|
45
|
+
readonly step: number;
|
|
46
|
+
readonly toolId: string;
|
|
47
|
+
/**
|
|
48
|
+
* The exact version dispatched (picked at run start by `resolve(id,
|
|
49
|
+
* range)` on the tenant's tool registry) so subscribers can
|
|
50
|
+
* distinguish `kb-search@1.2.3` from `kb-search@2.0.0`.
|
|
51
|
+
*/
|
|
52
|
+
readonly toolVersion: string;
|
|
53
|
+
/** The semver range the agent binding declared for this tool. */
|
|
54
|
+
readonly toolVersionRange: string;
|
|
55
|
+
readonly invocationId: string;
|
|
56
|
+
readonly arguments: Readonly<Record<string, unknown>>;
|
|
57
|
+
}
|
|
58
|
+
export interface ToolCompletedEvent {
|
|
59
|
+
readonly kind: 'tool.completed';
|
|
60
|
+
readonly step: number;
|
|
61
|
+
readonly toolId: string;
|
|
62
|
+
readonly toolVersion: string;
|
|
63
|
+
readonly toolVersionRange: string;
|
|
64
|
+
readonly invocationId: string;
|
|
65
|
+
readonly output: unknown;
|
|
66
|
+
readonly durationMs: number;
|
|
67
|
+
}
|
|
68
|
+
export interface ToolFailedEvent {
|
|
69
|
+
readonly kind: 'tool.failed';
|
|
70
|
+
readonly step: number;
|
|
71
|
+
readonly toolId: string;
|
|
72
|
+
readonly invocationId: string;
|
|
73
|
+
readonly error: {
|
|
74
|
+
readonly code: string;
|
|
75
|
+
readonly message: string;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export interface AgentMessageEvent {
|
|
79
|
+
readonly kind: 'agent.message';
|
|
80
|
+
readonly step: number;
|
|
81
|
+
/** True when this is the final message that closes the turn. */
|
|
82
|
+
readonly isFinal: boolean;
|
|
83
|
+
readonly message: ConversationMessage;
|
|
84
|
+
}
|
|
85
|
+
export interface GuardrailViolatedEvent {
|
|
86
|
+
readonly kind: 'guardrail.violated';
|
|
87
|
+
readonly action: EvaluationResult['action'];
|
|
88
|
+
readonly severity: EvaluationResult['severity'];
|
|
89
|
+
readonly guardrailId: string;
|
|
90
|
+
readonly reason?: string;
|
|
91
|
+
}
|
|
92
|
+
export interface TurnCompletedEvent {
|
|
93
|
+
readonly kind: 'turn.completed';
|
|
94
|
+
readonly conversationId: ConversationId;
|
|
95
|
+
readonly turnNumber: number;
|
|
96
|
+
readonly response: ConversationMessage;
|
|
97
|
+
readonly retrieved: readonly RetrievedFact[];
|
|
98
|
+
readonly durationMs: number;
|
|
99
|
+
readonly totalCostUsd: number;
|
|
100
|
+
}
|
|
101
|
+
export interface TurnFailedEvent {
|
|
102
|
+
readonly kind: 'turn.failed';
|
|
103
|
+
readonly conversationId: ConversationId;
|
|
104
|
+
readonly errorCode: string;
|
|
105
|
+
readonly message: string;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Adapter shape callers plug into `bindings.onEvent`. Sync + async both
|
|
109
|
+
* supported. Errors thrown inside the handler are caught by the runtime
|
|
110
|
+
* — a broken telemetry sink never breaks the turn.
|
|
111
|
+
*/
|
|
112
|
+
export type OnTurnEvent = (event: TurnEvent) => void | Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* Safe emit wrapper. Called by the turn's handlers at each observation
|
|
115
|
+
* point; catches handler throws so a broken sink can't break the run.
|
|
116
|
+
*/
|
|
117
|
+
export declare function emitTurnEvent(onEvent: OnTurnEvent | undefined, event: TurnEvent): Promise<void>;
|
|
118
|
+
//# sourceMappingURL=streaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* Safe emit wrapper. Called by the turn's handlers at each observation
|
|
5
|
+
* point; catches handler throws so a broken sink can't break the run.
|
|
6
|
+
*/
|
|
7
|
+
export async function emitTurnEvent(onEvent, event) {
|
|
8
|
+
if (onEvent === undefined)
|
|
9
|
+
return;
|
|
10
|
+
try {
|
|
11
|
+
await onEvent(event);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
// Intentionally swallow — telemetry sinks must not affect run outcome.
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=streaming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAyIjC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAgC,EAChC,KAAgB;IAEhB,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO;IAClC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;IACzE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TenantPolicy } from '@kindgi/capabilities';
|
|
2
|
+
/**
|
|
3
|
+
* Combine two tenant policies (the statically bound one and one derived
|
|
4
|
+
* from the policy registry) so the result is at least as strict as each:
|
|
5
|
+
*
|
|
6
|
+
* - allow lists (`providers.allow`, `models.allow`, `regionAllow`) →
|
|
7
|
+
* INTERSECTION when both set one; a list set on one side only applies
|
|
8
|
+
* as-is. An empty result allows nothing (the router fails closed).
|
|
9
|
+
* - deny lists (`providers.deny`, `models.deny`) → UNION.
|
|
10
|
+
* - `maxCostPerCallUsd` / `maxTokensPerCall` → the smaller value.
|
|
11
|
+
*
|
|
12
|
+
* Returns `undefined` when both are undefined (routing runs with no
|
|
13
|
+
* tenant policy).
|
|
14
|
+
*/
|
|
15
|
+
export declare function mergeTenantPolicies(a: TenantPolicy | undefined, b: TenantPolicy | undefined): TenantPolicy | undefined;
|
|
16
|
+
//# sourceMappingURL=tenant-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-policy.d.ts","sourceRoot":"","sources":["../src/tenant-policy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,YAAY,GAAG,SAAS,EAC3B,CAAC,EAAE,YAAY,GAAG,SAAS,GAC1B,YAAY,GAAG,SAAS,CAiB1B"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* Combine two tenant policies (the statically bound one and one derived
|
|
5
|
+
* from the policy registry) so the result is at least as strict as each:
|
|
6
|
+
*
|
|
7
|
+
* - allow lists (`providers.allow`, `models.allow`, `regionAllow`) →
|
|
8
|
+
* INTERSECTION when both set one; a list set on one side only applies
|
|
9
|
+
* as-is. An empty result allows nothing (the router fails closed).
|
|
10
|
+
* - deny lists (`providers.deny`, `models.deny`) → UNION.
|
|
11
|
+
* - `maxCostPerCallUsd` / `maxTokensPerCall` → the smaller value.
|
|
12
|
+
*
|
|
13
|
+
* Returns `undefined` when both are undefined (routing runs with no
|
|
14
|
+
* tenant policy).
|
|
15
|
+
*/
|
|
16
|
+
export function mergeTenantPolicies(a, b) {
|
|
17
|
+
if (a === undefined)
|
|
18
|
+
return b;
|
|
19
|
+
if (b === undefined)
|
|
20
|
+
return a;
|
|
21
|
+
const providers = mergeAllowDeny(a.providers, b.providers);
|
|
22
|
+
const models = mergeAllowDeny(a.models, b.models);
|
|
23
|
+
const regionAllow = intersectStrings(a.regionAllow, b.regionAllow);
|
|
24
|
+
const maxCost = minDefined(a.maxCostPerCallUsd, b.maxCostPerCallUsd);
|
|
25
|
+
const maxTokens = minDefined(a.maxTokensPerCall, b.maxTokensPerCall);
|
|
26
|
+
const merged = {
|
|
27
|
+
tenantId: a.tenantId,
|
|
28
|
+
};
|
|
29
|
+
if (providers !== undefined)
|
|
30
|
+
merged.providers = providers;
|
|
31
|
+
if (models !== undefined)
|
|
32
|
+
merged.models = models;
|
|
33
|
+
if (regionAllow !== undefined)
|
|
34
|
+
merged.regionAllow = regionAllow;
|
|
35
|
+
if (maxCost !== undefined)
|
|
36
|
+
merged.maxCostPerCallUsd = maxCost;
|
|
37
|
+
if (maxTokens !== undefined)
|
|
38
|
+
merged.maxTokensPerCall = maxTokens;
|
|
39
|
+
return merged;
|
|
40
|
+
}
|
|
41
|
+
function mergeAllowDeny(a, b) {
|
|
42
|
+
if (a === undefined)
|
|
43
|
+
return b;
|
|
44
|
+
if (b === undefined)
|
|
45
|
+
return a;
|
|
46
|
+
const allow = intersectStrings(a.allow, b.allow);
|
|
47
|
+
const deny = unionStrings(a.deny, b.deny);
|
|
48
|
+
if (allow === undefined && deny === undefined)
|
|
49
|
+
return undefined;
|
|
50
|
+
return {
|
|
51
|
+
...(allow !== undefined && { allow }),
|
|
52
|
+
...(deny !== undefined && { deny }),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function intersectStrings(a, b) {
|
|
56
|
+
if (a === undefined)
|
|
57
|
+
return b;
|
|
58
|
+
if (b === undefined)
|
|
59
|
+
return a;
|
|
60
|
+
const inB = new Set(b);
|
|
61
|
+
return Array.from(new Set(a)).filter((v) => inB.has(v));
|
|
62
|
+
}
|
|
63
|
+
function unionStrings(a, b) {
|
|
64
|
+
if (a === undefined)
|
|
65
|
+
return b;
|
|
66
|
+
if (b === undefined)
|
|
67
|
+
return a;
|
|
68
|
+
return Array.from(new Set([...a, ...b]));
|
|
69
|
+
}
|
|
70
|
+
function minDefined(a, b) {
|
|
71
|
+
if (a === undefined)
|
|
72
|
+
return b;
|
|
73
|
+
if (b === undefined)
|
|
74
|
+
return a;
|
|
75
|
+
return Math.min(a, b);
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=tenant-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-policy.js","sourceRoot":"","sources":["../src/tenant-policy.ts"],"names":[],"mappings":"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"}
|