@qitqode/qitqore 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,13 +22,12 @@ The library is tracked as its own product in Umbrella. Its own `products/qitqore
22
22
  folder, dedicated repository, and Umbrella tracking are the intended setup;
23
23
  a separate Replit preview artifact is not required.
24
24
 
25
- Repository metadata here applies to future package releases. The already
26
- published `@qitqode/qitqore@0.1.0` remains immutable and has not been republished.
27
- Future releases are licensed under the [MIT License](./LICENSE), the same license
28
- as QitQode. The copyright holder is QitQode contributors, Spannings LLC.
25
+ The published `@qitqode/qitqore@0.3.0` release is immutable and licensed under
26
+ the [MIT License](./LICENSE), the same license as QitQode. Its package includes
27
+ the `LICENSE` file. The copyright holder is QitQode contributors, Spannings LLC.
29
28
 
30
- The local source candidate is now `0.2.0`; it is not published. The immutable
31
- `0.1.0` artifact and all consumer pins remain unchanged.
29
+ The `0.1.0` and `0.2.0` artifacts remain immutable; current consumer pins target
30
+ `0.2.0` until each consumer adopts `0.3.0`.
32
31
 
33
32
  ## Development
34
33
 
@@ -45,10 +44,12 @@ compiled ESM export at `.`.
45
44
 
46
45
  ## Released consumer adoption
47
46
 
48
- The public package is **`@qitqode/qitqore@0.1.0`**. Install it with
49
- `npm install --save-exact @qitqode/qitqore@0.1.0`. The independently managed
50
- QitQode CLI, its backend SDK, and Wud pin that exact release in their own
51
- manifests and native Bun/npm lockfiles; they do not import sibling source.
47
+ The latest public package is **`@qitqode/qitqore@0.3.0`**. Install it with
48
+ `npm install --save-exact @qitqode/qitqore@0.3.0`. The independently managed
49
+ QitQode CLI, its backend SDK, and Wud currently pin the exact `0.2.0` release in
50
+ their own manifests and native Bun/npm lockfiles; they do not import sibling
51
+ source. Adopting `0.3.0` in a consumer is a separate change to its exact pin and
52
+ regenerated lockfile.
52
53
 
53
54
  QitQode retains AI SDK/native-tool adaptation, credential recovery, advisory
54
55
  budgets and session policy. Session retries carry an explicit operation ID;
@@ -91,8 +92,9 @@ regenerated native lockfiles.
91
92
 
92
93
  Release 0.1.0's registry manifest does not declare a license. QitQode's generated
93
94
  notice inventory identifies that exact release as first-party code without
94
- inventing a third-party license grant. That release is not rewritten. The 0.2.0
95
- candidate declares `"license": "MIT"` and ships its `LICENSE` file in the package.
95
+ inventing a third-party license grant. That release is not rewritten. The
96
+ published `0.2.0` release declares `"license": "MIT"` and ships its `LICENSE`
97
+ file in the package.
96
98
 
97
99
  ## Host responsibilities
98
100
 
@@ -124,9 +126,40 @@ Errors expose bounded, redacted diagnostic fields and request IDs, not raw
124
126
  response bodies or request credentials. Hosts may retain their existing
125
127
  product-specific error mappings around these shared primitives.
126
128
 
127
- ## Shared wire contracts (0.2 candidate)
129
+ ## Release 0.3.0
128
130
 
129
- The 0.2 candidate adds one implementation of the public Qortex contracts that
131
+ Version 0.3.0 adds features without removing or renaming any 0.2.0 export:
132
+
133
+ - **Decision-policy client.** New `createDecisionPolicyClient`,
134
+ `assertDecisionPolicyRequest`, `parseDecisionPolicyResult` and
135
+ `DECISION_POLICY_CONTRACT_VERSION`, described below.
136
+ - **Free-tier fallback stage.** `SseDecoder` events may carry
137
+ `routingStatus: "free-fallback"` and `routingStage: "auto-free" | "free-pool"`
138
+ from Qortex's routing headers. `classifyQortexStreamPayload` reports the same
139
+ stage as an optional `fallbackStage` on a `routing-status` control frame.
140
+ - **Untrusted stage values.** A routing-status frame whose `fallbackStage` is
141
+ present but is neither `auto-free` nor `free-pool` is now classified as plain
142
+ `json` instead of a routing-status control. A frame without `fallbackStage`
143
+ is classified exactly as in 0.2.0.
144
+
145
+ ## Decision-policy client
146
+
147
+ `createDecisionPolicyClient` is a typed, zero-dependency client for OmniQuery's
148
+ named decision policies, reached through a Qortex module route. It validates the
149
+ request and response contract, and it makes exactly one POST per call with no
150
+ retries. The host supplies the base URL, the module path, the function name and
151
+ the caller's credential headers. QitQore never chooses a policy, tier, model or
152
+ rubric, never loads or stores credentials, and never invents request or
153
+ idempotency identities. A result is returned as data for the host to decide on.
154
+
155
+ The response parser cross-checks the status against the findings and the
156
+ aggregate usage against the per-invocation segments. A tampered or inconsistent
157
+ result is a `QortexProtocolError`, not a decision. The client was first
158
+ published in `0.3.0`.
159
+
160
+ ## Shared wire contracts (0.2.0)
161
+
162
+ The 0.2.0 release adds one implementation of the public Qortex contracts that
130
163
  QitQode and Wud previously duplicated. Each area states what QitQore does and
131
164
  what stays with the host.
132
165
 
@@ -146,7 +179,10 @@ what stays with the host.
146
179
  - **SSE payloads.** `SseDecoder` and `iterateSse` frame the stream.
147
180
  `classifyQortexStreamPayload` then returns a tagged result: `text`, `json`,
148
181
  `usage`, `cost`, `control` (the documented free-fallback routing signal),
149
- `done`, `error`, or `empty`. Plain tokens stay `text`, malformed or non-object
182
+ `done`, `error`, or `empty`. The routing control keeps its generic status and
183
+ accepts only an optional `fallbackStage` of `auto-free` or `free-pool`; legacy
184
+ stage-less frames remain valid, while unknown stage values stay ordinary JSON.
185
+ Plain tokens stay `text`, malformed or non-object
150
186
  JSON stays `text`, and unknown objects stay `json`. The host converts OpenAI
151
187
  chunks, tool calls, finish reasons, accounting, and terminal success. A stream
152
188
  that ends without a terminator remains incomplete.
@@ -0,0 +1,132 @@
1
+ import { QortexClient } from "./transport.js";
2
+ export declare const DECISION_POLICY_CONTRACT_VERSION = 1;
3
+ export type DecisionPolicyStatus = "decided" | "partial" | "abstained";
4
+ export type DecisionNativeTier = "decisions" | "quick-decisions";
5
+ export interface DecisionPolicySubject {
6
+ kind: "request" | "candidate" | "requirement_check";
7
+ id: string;
8
+ requirementID?: string;
9
+ checkID?: string;
10
+ evidenceIDs?: string[];
11
+ }
12
+ export interface DecisionPolicyFinding {
13
+ findingID: string;
14
+ subject: DecisionPolicySubject;
15
+ status: "decided" | "abstained";
16
+ source: "model" | "deterministic";
17
+ nativeType: "noul" | "choice" | "score" | null;
18
+ verdict: string | null;
19
+ selectedCandidateID?: string;
20
+ noul?: number;
21
+ probabilities?: Record<string, number>;
22
+ confidence?: number;
23
+ ordinalScore?: number;
24
+ legend?: Record<string, unknown>;
25
+ nativeTier?: DecisionNativeTier;
26
+ reasonCodes: string[];
27
+ }
28
+ export interface DecisionPolicyInvocation {
29
+ invocationID: string;
30
+ tier: DecisionNativeTier;
31
+ nativeUsage: {
32
+ input_tokens: number;
33
+ output_tokens: number;
34
+ };
35
+ usage: {
36
+ prompt_tokens: number;
37
+ completion_tokens: number;
38
+ total_tokens: number;
39
+ context_window: number;
40
+ };
41
+ }
42
+ export interface DecisionPolicyResult {
43
+ contractVersion: 1;
44
+ policy: string;
45
+ policyVersion: string;
46
+ status: DecisionPolicyStatus;
47
+ verdict: string | null;
48
+ findings: DecisionPolicyFinding[];
49
+ observationOnly: boolean;
50
+ reasonCodes: string[];
51
+ durationMs: number;
52
+ requestID?: string;
53
+ usage: {
54
+ invocations: DecisionPolicyInvocation[];
55
+ aggregate: {
56
+ promptTokens: number;
57
+ completionTokens: number;
58
+ totalTokens: number;
59
+ };
60
+ };
61
+ }
62
+ export interface DecisionPolicyRequest {
63
+ contractVersion: 1;
64
+ policy: string;
65
+ expectedPolicyVersion?: string;
66
+ state: Record<string, unknown>;
67
+ evidence?: Record<string, unknown>;
68
+ images?: Array<string | {
69
+ content_type: string;
70
+ base64: string;
71
+ }>;
72
+ timeoutMs?: number;
73
+ requestID?: string;
74
+ escalation?: "none" | "full-on-abstain";
75
+ }
76
+ export interface DecisionPolicyCallOptions {
77
+ /** Caller-supplied credential headers, for example the Forgewise or Qortex key. QitQode never creates them. */
78
+ headers: HeadersInit;
79
+ /** Host-supplied request identity. Never invented here. */
80
+ requestId?: string;
81
+ /** Host-supplied stable idempotency key. Never invented here. */
82
+ idempotencyKey?: string;
83
+ signal?: AbortSignal;
84
+ timeoutMs?: number;
85
+ }
86
+ export interface DecisionPolicyResponse {
87
+ data: DecisionPolicyResult;
88
+ status: number;
89
+ requestId?: string;
90
+ }
91
+ export interface DecisionPolicyClientOptions {
92
+ /** Explicit Qortex base URL. Required so the route origin is always an explicit host decision. */
93
+ baseUrl: string | URL;
94
+ /** Optional preconstructed transport. Its base URL must match `baseUrl`. */
95
+ client?: QortexClient;
96
+ fetch?: typeof globalThis.fetch;
97
+ timeoutMs?: number;
98
+ /** Host-selected approved module path, for example the one the host has tested against. No default. */
99
+ module: string;
100
+ /** Host-selected public function name, for example `evaluateDecisionPolicy`. No default. */
101
+ functionName: string;
102
+ }
103
+ export interface DecisionPolicyClient {
104
+ evaluate(request: DecisionPolicyRequest, options: DecisionPolicyCallOptions): Promise<DecisionPolicyResponse>;
105
+ }
106
+ /**
107
+ * Validate a caller's request locally before any network call.
108
+ * @param value - Untrusted request body.
109
+ * @returns The same request, typed.
110
+ * @throws TypeError naming the first violated rule. Values are never echoed.
111
+ */
112
+ export declare function assertDecisionPolicyRequest(value: unknown): DecisionPolicyRequest;
113
+ /**
114
+ * Parse and cross-check a policy result. The status must agree with the findings, and the aggregate must equal
115
+ * the sum of the per-invocation segments, so a malformed or tampered response cannot pass as a decided result.
116
+ * @param value - Unwrapped policy result from the Qortex envelope.
117
+ * @param context - Status and request ID for sanitized error evidence.
118
+ * @returns A typed result.
119
+ * @throws QortexProtocolError for any contract violation.
120
+ */
121
+ export declare function parseDecisionPolicyResult(value: unknown, context?: {
122
+ status?: number;
123
+ requestId?: string;
124
+ }): DecisionPolicyResult;
125
+ /**
126
+ * Create a typed decision-policy client for one explicitly selected Qortex module function.
127
+ * @param options - Base URL, optional transport, and the host-chosen module and function names.
128
+ * @returns A client whose `evaluate` sends one POST per call and never retries.
129
+ * @throws TypeError for an invalid module, function name or base URL.
130
+ */
131
+ export declare function createDecisionPolicyClient(options: DecisionPolicyClientOptions): DecisionPolicyClient;
132
+ //# sourceMappingURL=decision-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-policy.d.ts","sourceRoot":"","sources":["../src/decision-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,308 @@
1
+ /**
2
+ * Typed client for OmniQuery's named decision policies, reached through a Qortex module route.
3
+ *
4
+ * QitQore validates the contract and carries the call. It never chooses a policy, tier, model, rubric or
5
+ * temperature; never loads or stores credentials; never invents operation or idempotency IDs; and never retries.
6
+ * The host supplies the module path, function name, base URL and caller credential headers explicitly, so no
7
+ * historical alias is picked silently. Semantic outcomes are returned as data; this client decides nothing with them.
8
+ */
9
+ import { QortexProtocolError } from "./errors.js";
10
+ import { qortexModuleEndpoint, qortexRequestHeaders } from "./route-contract.js";
11
+ import { createQortexClient, unwrapSuccessEnvelope } from "./transport.js";
12
+ export const DECISION_POLICY_CONTRACT_VERSION = 1;
13
+ /** Largest request body the native decision layer accepts (13 MiB serialized). */
14
+ const MAX_REQUEST_BYTES = 13 * 1024 * 1024;
15
+ const MAX_TIMEOUT_MS = 60_000;
16
+ const MAX_IMAGES = 4;
17
+ const POLICY_NAME = /^[a-z][a-z0-9]*(?:\.[a-z0-9]+)*\.v[0-9]+$/;
18
+ const POLICY_VERSION = /^[a-z][a-z0-9]*(?:\.[a-z0-9]+)*\.v[0-9]+@[0-9]+\.[0-9]+\.[0-9]+$/;
19
+ const TIERS = new Set(["decisions", "quick-decisions"]);
20
+ const REQUEST_KEYS = new Set([
21
+ "contractVersion", "policy", "expectedPolicyVersion", "state", "evidence",
22
+ "images", "timeoutMs", "requestID", "escalation",
23
+ ]);
24
+ /** Options a caller may never send: tier, model and sampling are chosen server-side by the registry. */
25
+ const FORBIDDEN_REQUEST_KEYS = ["tier", "model", "temperature"];
26
+ function contractError(message) {
27
+ return new TypeError(message);
28
+ }
29
+ function isPlainObject(value) {
30
+ if (value === null || typeof value !== "object" || Array.isArray(value))
31
+ return false;
32
+ const prototype = Object.getPrototypeOf(value);
33
+ return prototype === Object.prototype || prototype === null;
34
+ }
35
+ /**
36
+ * Validate a caller's request locally before any network call.
37
+ * @param value - Untrusted request body.
38
+ * @returns The same request, typed.
39
+ * @throws TypeError naming the first violated rule. Values are never echoed.
40
+ */
41
+ export function assertDecisionPolicyRequest(value) {
42
+ if (!isPlainObject(value))
43
+ throw contractError("Decision policy request must be a plain object");
44
+ for (const key of FORBIDDEN_REQUEST_KEYS) {
45
+ if (Object.hasOwn(value, key))
46
+ throw contractError("Decision policy requests cannot choose a tier, model or sampling option");
47
+ }
48
+ for (const key of Object.keys(value)) {
49
+ if (!REQUEST_KEYS.has(key))
50
+ throw contractError("Decision policy request contains an undocumented field");
51
+ }
52
+ if (value.contractVersion !== DECISION_POLICY_CONTRACT_VERSION)
53
+ throw contractError("Decision policy contractVersion must be 1");
54
+ if (typeof value.policy !== "string" || value.policy.length > 80 || !POLICY_NAME.test(value.policy)) {
55
+ throw contractError("Decision policy name is invalid");
56
+ }
57
+ if (value.expectedPolicyVersion !== undefined && (typeof value.expectedPolicyVersion !== "string"
58
+ || value.expectedPolicyVersion.length > 120 || !POLICY_VERSION.test(value.expectedPolicyVersion))) {
59
+ throw contractError("expectedPolicyVersion must name an immutable policy version");
60
+ }
61
+ if (!isPlainObject(value.state))
62
+ throw contractError("Decision policy state must be a plain object");
63
+ if (value.evidence !== undefined && !isPlainObject(value.evidence))
64
+ throw contractError("Decision policy evidence must be a plain object");
65
+ if (value.images !== undefined) {
66
+ if (!Array.isArray(value.images) || value.images.length > MAX_IMAGES)
67
+ throw contractError("Decision policy images must be an array of at most four items");
68
+ for (const image of value.images) {
69
+ const valid = typeof image === "string"
70
+ ? /^data:/i.test(image)
71
+ : isPlainObject(image) && typeof image.content_type === "string" && typeof image.base64 === "string" && image.base64.length > 0;
72
+ if (!valid)
73
+ throw contractError("Decision policy image must be a data URL or a content_type and base64 pair");
74
+ }
75
+ }
76
+ if (value.timeoutMs !== undefined && (typeof value.timeoutMs !== "number" || !Number.isFinite(value.timeoutMs)
77
+ || value.timeoutMs <= 0 || value.timeoutMs > MAX_TIMEOUT_MS)) {
78
+ throw contractError("Decision policy timeoutMs must be between 1 and 60000");
79
+ }
80
+ if (value.requestID !== undefined && (typeof value.requestID !== "string" || value.requestID.length === 0 || value.requestID.length > 128)) {
81
+ throw contractError("Decision policy requestID must contain between 1 and 128 characters");
82
+ }
83
+ if (value.escalation !== undefined && value.escalation !== "none" && value.escalation !== "full-on-abstain") {
84
+ throw contractError("Decision policy escalation must be none or full-on-abstain");
85
+ }
86
+ return value;
87
+ }
88
+ function protocolError(message, status, requestId) {
89
+ return new QortexProtocolError(message, status, requestId);
90
+ }
91
+ function isFiniteNumber(value, min = -Infinity, max = Infinity) {
92
+ return typeof value === "number" && Number.isFinite(value) && value >= min && value <= max;
93
+ }
94
+ function isCount(value) {
95
+ return Number.isInteger(value) && value >= 0;
96
+ }
97
+ function isStringArray(value, max) {
98
+ return Array.isArray(value) && value.length <= max && value.every(item => typeof item === "string");
99
+ }
100
+ function isProbabilityMap(value) {
101
+ return isPlainObject(value) && Object.values(value).every(probability => isFiniteNumber(probability, 0, 1));
102
+ }
103
+ function parseSubject(value) {
104
+ if (!isPlainObject(value) || typeof value.id !== "string")
105
+ throw protocolError("Decision policy subject is malformed");
106
+ if (value.kind === "request")
107
+ return { kind: "request", id: value.id };
108
+ if (value.kind === "candidate")
109
+ return { kind: "candidate", id: value.id };
110
+ if (value.kind === "requirement_check" && typeof value.requirementID === "string"
111
+ && typeof value.checkID === "string" && isStringArray(value.evidenceIDs, 5)) {
112
+ return { kind: "requirement_check", id: value.id, requirementID: value.requirementID, checkID: value.checkID, evidenceIDs: [...value.evidenceIDs] };
113
+ }
114
+ throw protocolError("Decision policy subject kind is not recognized");
115
+ }
116
+ function parseFinding(value) {
117
+ if (!isPlainObject(value) || typeof value.findingID !== "string")
118
+ throw protocolError("Decision policy finding is malformed");
119
+ const status = value.status;
120
+ const source = value.source;
121
+ const nativeType = value.nativeType;
122
+ if ((status !== "decided" && status !== "abstained") || (source !== "model" && source !== "deterministic")) {
123
+ throw protocolError("Decision policy finding status is not recognized");
124
+ }
125
+ if (nativeType !== null && nativeType !== "noul" && nativeType !== "choice" && nativeType !== "score") {
126
+ throw protocolError("Decision policy native type is not recognized");
127
+ }
128
+ if (value.verdict !== null && typeof value.verdict !== "string")
129
+ throw protocolError("Decision policy verdict must be a string or null");
130
+ if (!isStringArray(value.reasonCodes, 16))
131
+ throw protocolError("Decision policy reason codes are malformed");
132
+ if (value.noul !== undefined && !isFiniteNumber(value.noul, 0, 1))
133
+ throw protocolError("Decision policy noul must be a probability");
134
+ if (value.probabilities !== undefined && !isProbabilityMap(value.probabilities))
135
+ throw protocolError("Decision policy probabilities must be probabilities");
136
+ if (value.confidence !== undefined && !isFiniteNumber(value.confidence, 0, 1))
137
+ throw protocolError("Decision policy confidence must be a probability");
138
+ if (value.ordinalScore !== undefined && !isFiniteNumber(value.ordinalScore))
139
+ throw protocolError("Decision policy ordinal score must be finite");
140
+ if (value.nativeTier !== undefined && !TIERS.has(value.nativeTier))
141
+ throw protocolError("Decision policy native tier is not recognized");
142
+ if (value.selectedCandidateID !== undefined && typeof value.selectedCandidateID !== "string")
143
+ throw protocolError("Decision policy selected candidate is malformed");
144
+ return {
145
+ findingID: value.findingID,
146
+ subject: parseSubject(value.subject),
147
+ status,
148
+ source,
149
+ nativeType,
150
+ verdict: value.verdict,
151
+ reasonCodes: [...value.reasonCodes],
152
+ ...(value.noul !== undefined && { noul: value.noul }),
153
+ ...(value.probabilities !== undefined && { probabilities: { ...value.probabilities } }),
154
+ ...(value.confidence !== undefined && { confidence: value.confidence }),
155
+ ...(value.ordinalScore !== undefined && { ordinalScore: value.ordinalScore }),
156
+ ...(value.legend !== undefined && isPlainObject(value.legend) && { legend: { ...value.legend } }),
157
+ ...(value.nativeTier !== undefined && { nativeTier: value.nativeTier }),
158
+ ...(value.selectedCandidateID !== undefined && { selectedCandidateID: value.selectedCandidateID }),
159
+ };
160
+ }
161
+ function parseInvocation(value) {
162
+ if (!isPlainObject(value) || typeof value.invocationID !== "string" || !TIERS.has(value.tier)) {
163
+ throw protocolError("Decision policy usage segment is malformed");
164
+ }
165
+ const native = value.nativeUsage;
166
+ const usage = value.usage;
167
+ if (!isPlainObject(native) || !isCount(native.input_tokens) || !isCount(native.output_tokens)) {
168
+ throw protocolError("Decision policy native usage is malformed");
169
+ }
170
+ if (!isPlainObject(usage) || !isCount(usage.prompt_tokens) || !isCount(usage.completion_tokens)
171
+ || !isCount(usage.total_tokens) || !isCount(usage.context_window)) {
172
+ throw protocolError("Decision policy usage is malformed");
173
+ }
174
+ return {
175
+ invocationID: value.invocationID,
176
+ tier: value.tier,
177
+ nativeUsage: { input_tokens: native.input_tokens, output_tokens: native.output_tokens },
178
+ usage: {
179
+ prompt_tokens: usage.prompt_tokens, completion_tokens: usage.completion_tokens,
180
+ total_tokens: usage.total_tokens, context_window: usage.context_window,
181
+ },
182
+ };
183
+ }
184
+ /**
185
+ * Parse and cross-check a policy result. The status must agree with the findings, and the aggregate must equal
186
+ * the sum of the per-invocation segments, so a malformed or tampered response cannot pass as a decided result.
187
+ * @param value - Unwrapped policy result from the Qortex envelope.
188
+ * @param context - Status and request ID for sanitized error evidence.
189
+ * @returns A typed result.
190
+ * @throws QortexProtocolError for any contract violation.
191
+ */
192
+ export function parseDecisionPolicyResult(value, context = {}) {
193
+ const fail = (message) => protocolError(message, context.status, context.requestId);
194
+ if (!isPlainObject(value))
195
+ throw fail("Decision policy result is malformed");
196
+ if (value.contractVersion !== DECISION_POLICY_CONTRACT_VERSION)
197
+ throw fail("Decision policy result uses an unsupported contract version");
198
+ if (typeof value.policy !== "string" || !POLICY_NAME.test(value.policy))
199
+ throw fail("Decision policy result names an invalid policy");
200
+ if (typeof value.policyVersion !== "string" || !POLICY_VERSION.test(value.policyVersion))
201
+ throw fail("Decision policy result has an invalid policy version");
202
+ if (value.status !== "decided" && value.status !== "partial" && value.status !== "abstained")
203
+ throw fail("Decision policy status is not recognized");
204
+ if (value.verdict !== null && typeof value.verdict !== "string")
205
+ throw fail("Decision policy verdict must be a string or null");
206
+ if (!Array.isArray(value.findings) || value.findings.length === 0 || value.findings.length > 128)
207
+ throw fail("Decision policy findings are malformed");
208
+ if (typeof value.observationOnly !== "boolean")
209
+ throw fail("Decision policy observationOnly must be a boolean");
210
+ if (!isStringArray(value.reasonCodes, 16) || !isFiniteNumber(value.durationMs, 0))
211
+ throw fail("Decision policy result metadata is malformed");
212
+ if (value.requestID !== undefined && typeof value.requestID !== "string")
213
+ throw fail("Decision policy requestID must be a string");
214
+ if (!isPlainObject(value.usage) || !Array.isArray(value.usage.invocations) || value.usage.invocations.length > 128)
215
+ throw fail("Decision policy usage is malformed");
216
+ const findings = value.findings.map(parseFinding);
217
+ const invocations = value.usage.invocations.map(parseInvocation);
218
+ const decidedCount = findings.filter(finding => finding.status === "decided").length;
219
+ const expectedStatus = decidedCount === findings.length ? "decided" : decidedCount === 0 ? "abstained" : "partial";
220
+ if (value.status !== expectedStatus)
221
+ throw fail("Decision policy status does not match its findings");
222
+ const aggregate = value.usage.aggregate;
223
+ const sum = (pick) => invocations.reduce((total, segment) => total + pick(segment), 0);
224
+ const expectedAggregate = {
225
+ promptTokens: sum(segment => segment.usage.prompt_tokens),
226
+ completionTokens: sum(segment => segment.usage.completion_tokens),
227
+ totalTokens: sum(segment => segment.usage.total_tokens),
228
+ };
229
+ if (!isPlainObject(aggregate) || aggregate.promptTokens !== expectedAggregate.promptTokens
230
+ || aggregate.completionTokens !== expectedAggregate.completionTokens || aggregate.totalTokens !== expectedAggregate.totalTokens) {
231
+ throw fail("Decision policy aggregate usage does not equal its invocations");
232
+ }
233
+ return {
234
+ contractVersion: 1,
235
+ policy: value.policy,
236
+ policyVersion: value.policyVersion,
237
+ status: value.status,
238
+ verdict: value.verdict,
239
+ findings,
240
+ observationOnly: value.observationOnly,
241
+ reasonCodes: [...value.reasonCodes],
242
+ durationMs: value.durationMs,
243
+ ...(value.requestID !== undefined && { requestID: value.requestID }),
244
+ usage: { invocations, aggregate: expectedAggregate },
245
+ };
246
+ }
247
+ function resolveTransport(options) {
248
+ if (options.client)
249
+ return options.client;
250
+ return createQortexClient({
251
+ baseUrl: options.baseUrl,
252
+ ...(options.fetch && { fetch: options.fetch }),
253
+ ...(options.timeoutMs !== undefined && { timeoutMs: options.timeoutMs }),
254
+ });
255
+ }
256
+ /**
257
+ * Create a typed decision-policy client for one explicitly selected Qortex module function.
258
+ * @param options - Base URL, optional transport, and the host-chosen module and function names.
259
+ * @returns A client whose `evaluate` sends one POST per call and never retries.
260
+ * @throws TypeError for an invalid module, function name or base URL.
261
+ */
262
+ export function createDecisionPolicyClient(options) {
263
+ // Resolving the endpoint once validates the base URL and the host-chosen module and function names up front.
264
+ const endpoint = qortexModuleEndpoint({ baseUrl: options.baseUrl, module: options.module, functionName: options.functionName });
265
+ const transport = resolveTransport(options);
266
+ return {
267
+ async evaluate(request, callOptions) {
268
+ const body = assertDecisionPolicyRequest(request);
269
+ if (callOptions === null || typeof callOptions !== "object" || callOptions.headers === undefined) {
270
+ throw contractError("Decision policy calls require caller-supplied headers");
271
+ }
272
+ const serialized = JSON.stringify(body);
273
+ if (new TextEncoder().encode(serialized).byteLength > MAX_REQUEST_BYTES) {
274
+ throw contractError("Decision policy request exceeds the 13 MiB limit");
275
+ }
276
+ const headers = new Headers(callOptions.headers);
277
+ headers.set("content-type", "application/json");
278
+ for (const [name, value] of Object.entries(qortexRequestHeaders({
279
+ ...(callOptions.requestId !== undefined && { requestId: callOptions.requestId }),
280
+ ...(callOptions.idempotencyKey !== undefined && { idempotencyKey: callOptions.idempotencyKey }),
281
+ }))) {
282
+ headers.set(name, value);
283
+ }
284
+ const policy = {
285
+ ...(callOptions.signal && { signal: callOptions.signal }),
286
+ ...(callOptions.timeoutMs !== undefined && { timeoutMs: callOptions.timeoutMs }),
287
+ };
288
+ // Exactly one attempt. Decision inference may already be metered or accepted, so a retry is a host decision.
289
+ const response = await transport.requestJson(endpoint, { method: "POST", headers, body: serialized }, policy);
290
+ const data = parseDecisionPolicyResult(unwrapSuccessEnvelope(response.data), {
291
+ status: response.status,
292
+ ...(response.requestId !== undefined && { requestId: response.requestId }),
293
+ });
294
+ if (data.policy !== body.policy) {
295
+ throw protocolError("Decision policy result names a different policy than requested", response.status, response.requestId);
296
+ }
297
+ if (body.expectedPolicyVersion !== undefined && data.policyVersion !== body.expectedPolicyVersion) {
298
+ throw protocolError("Decision policy result does not match the expected policy version", response.status, response.requestId);
299
+ }
300
+ return {
301
+ data,
302
+ status: response.status,
303
+ ...(response.requestId !== undefined && { requestId: response.requestId }),
304
+ };
305
+ },
306
+ };
307
+ }
308
+ //# sourceMappingURL=decision-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-policy.js","sourceRoot":"","sources":["../src/decision-policy.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,4 +10,5 @@ export { parseRecoveryDirective, type QortexRecoveryDirective, type QortexRecove
10
10
  export { MAX_RECOVERY_ADDITIONAL_WORK, MAX_RECOVERY_ROOT_REMAINING_MS, QORTEX_RECOVERY_CONTROL_HEADER, decodeRecoveryControlHeader, encodeRecoveryControlEnvelope, parseRecoveryControlEnvelope, parseRecoveryLeaseUsage, withRecoveryControlHeader, type QortexRecoveryAction, type QortexRecoveryAdditionalWorkAction, type QortexRecoveryConsumedWork, type QortexRecoveryControlEnvelope, type QortexRecoveryControlOperation, type QortexRecoveryLeaseUsage, } from "./recovery-lease.js";
11
11
  export { qortexModuleEndpoint, qortexRequestHeaders, recoveryRouteID, } from "./route-contract.js";
12
12
  export { abortableDelay, runWithRecovery, type AttemptOutcome, type QortexAttemptContext, type RecoveryAttemptOutcomeContext, type RecoveryOptions, type RemoteAcceptance, type ReplayAuthorizationContext, } from "./recovery.js";
13
+ export { DECISION_POLICY_CONTRACT_VERSION, assertDecisionPolicyRequest, createDecisionPolicyClient, parseDecisionPolicyResult, type DecisionNativeTier, type DecisionPolicyCallOptions, type DecisionPolicyClient, type DecisionPolicyClientOptions, type DecisionPolicyFinding, type DecisionPolicyInvocation, type DecisionPolicyRequest, type DecisionPolicyResponse, type DecisionPolicyResult, type DecisionPolicyStatus, type DecisionPolicySubject, } from "./decision-policy.js";
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,2BAA2B,EAC3B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gCAAgC,EAChC,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,UAAU,EACV,UAAU,EACV,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,GAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,+BAA+B,GACrC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,KAAK,kCAAkC,EACvC,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,EAClC,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,GAChC,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,2BAA2B,EAC3B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gCAAgC,EAChC,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,GAC5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,UAAU,EACV,UAAU,EACV,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,GAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,+BAA+B,GACrC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,KAAK,kCAAkC,EACvC,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,EAClC,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -10,4 +10,5 @@ export { parseRecoveryDirective, } from "./recovery-directive.js";
10
10
  export { MAX_RECOVERY_ADDITIONAL_WORK, MAX_RECOVERY_ROOT_REMAINING_MS, QORTEX_RECOVERY_CONTROL_HEADER, decodeRecoveryControlHeader, encodeRecoveryControlEnvelope, parseRecoveryControlEnvelope, parseRecoveryLeaseUsage, withRecoveryControlHeader, } from "./recovery-lease.js";
11
11
  export { qortexModuleEndpoint, qortexRequestHeaders, recoveryRouteID, } from "./route-contract.js";
12
12
  export { abortableDelay, runWithRecovery, } from "./recovery.js";
13
+ export { DECISION_POLICY_CONTRACT_VERSION, assertDecisionPolicyRequest, createDecisionPolicyClient, parseDecisionPolicyResult, } from "./decision-policy.js";
13
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,GAKhB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,2BAA2B,GAI5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,eAAe,GAIhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gCAAgC,EAChC,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,GAG9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GAItB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,UAAU,EACV,UAAU,GAEX,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,mBAAmB,GAIpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,GAQxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,sBAAsB,GAKvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,GAO1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,eAAe,GAOhB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,GAKhB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,2BAA2B,GAI5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,eAAe,GAIhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gCAAgC,EAChC,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,GAG9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,GAItB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,UAAU,EACV,UAAU,GAEX,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,mBAAmB,GAIpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,GAQxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,sBAAsB,GAKvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,GAO1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,eAAe,GAOhB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,GAY1B,MAAM,sBAAsB,CAAC"}
package/dist/sse.d.ts CHANGED
@@ -3,6 +3,8 @@ export interface QortexSseEvent {
3
3
  event?: string;
4
4
  id?: string;
5
5
  retry?: number;
6
+ routingStatus?: "free-fallback";
7
+ routingStage?: "auto-free" | "free-pool";
6
8
  }
7
9
  export declare class SseDecoder {
8
10
  private readonly decoder;
@@ -12,6 +14,8 @@ export declare class SseDecoder {
12
14
  private eventId;
13
15
  private lastEventId;
14
16
  private retry;
17
+ private routingStatus;
18
+ private routingStage;
15
19
  push(chunk: Uint8Array | string): QortexSseEvent[];
16
20
  finish(): QortexSseEvent[];
17
21
  private consume;
package/dist/sse.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,KAAK,CAAqB;IAElC,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,cAAc,EAAE;IAQlD,MAAM,IAAI,cAAc,EAAE;IAS1B,OAAO,CAAC,OAAO;IAgCf,OAAO,CAAC,WAAW;IA4CnB,OAAO,CAAC,UAAU;CAMnB;AAED,wBAAuB,UAAU,CAC/B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,cAAc,CAAC,CA0ChC"}
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,YAAY,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;CAC1C;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,YAAY,CAAwC;IAE5D,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,cAAc,EAAE;IAQlD,MAAM,IAAI,cAAc,EAAE;IAS1B,OAAO,CAAC,OAAO;IAgCf,OAAO,CAAC,WAAW;IAsDnB,OAAO,CAAC,UAAU;CAQnB;AAED,wBAAuB,UAAU,CAC/B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,cAAc,CAAC,CA0ChC"}
package/dist/sse.js CHANGED
@@ -6,6 +6,8 @@ export class SseDecoder {
6
6
  eventId;
7
7
  lastEventId;
8
8
  retry;
9
+ routingStatus;
10
+ routingStage;
9
11
  push(chunk) {
10
12
  const text = typeof chunk === "string"
11
13
  ? this.decoder.decode() + chunk
@@ -55,7 +57,7 @@ export class SseDecoder {
55
57
  }
56
58
  processLine(line) {
57
59
  if (line.length === 0) {
58
- if (this.data.length === 0) {
60
+ if (this.data.length === 0 && this.routingStatus === undefined) {
59
61
  this.resetFrame();
60
62
  return [];
61
63
  }
@@ -66,6 +68,8 @@ export class SseDecoder {
66
68
  ? { id: this.eventId ?? this.lastEventId }
67
69
  : {}),
68
70
  ...(this.retry === undefined ? {} : { retry: this.retry }),
71
+ ...(this.routingStatus ? { routingStatus: this.routingStatus } : {}),
72
+ ...(this.routingStage ? { routingStage: this.routingStage } : {}),
69
73
  };
70
74
  this.resetFrame();
71
75
  return [event];
@@ -94,6 +98,15 @@ export class SseDecoder {
94
98
  if (/^\d+$/.test(value))
95
99
  this.retry = Number(value);
96
100
  break;
101
+ case "qortex-routing-status":
102
+ if (value === "free-fallback")
103
+ this.routingStatus = "free-fallback";
104
+ break;
105
+ case "qortex-routing-stage":
106
+ if (this.routingStatus === "free-fallback" && (value === "auto-free" || value === "free-pool")) {
107
+ this.routingStage = value;
108
+ }
109
+ break;
97
110
  }
98
111
  return [];
99
112
  }
@@ -102,6 +115,8 @@ export class SseDecoder {
102
115
  this.eventName = undefined;
103
116
  this.eventId = undefined;
104
117
  this.retry = undefined;
118
+ this.routingStatus = undefined;
119
+ this.routingStage = undefined;
105
120
  }
106
121
  }
107
122
  export async function* iterateSse(stream, signal) {
package/dist/sse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,UAAU;IACJ,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IACrC,MAAM,GAAG,EAAE,CAAC;IACZ,IAAI,GAAa,EAAE,CAAC;IACpB,SAAS,CAAqB;IAC9B,OAAO,CAAqB;IAC5B,WAAW,CAAqB;IAChC,KAAK,CAAqB;IAC1B,aAAa,CAA8B;IAC3C,YAAY,CAAwC;IAE5D,IAAI,CAAC,KAA0B;QAC7B,MAAM,IAAI,GACR,OAAO,KAAK,KAAK,QAAQ;YACvB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,KAAK;YAC/B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,yEAAyE;QACzE,uDAAuD;QACvD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,OAAO,CAAC,IAAY,EAAE,KAAc;QAC1C,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QACpB,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,IAAI,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK;oBAAE,MAAM;gBACvD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAClD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;oBAAE,MAAM,IAAI,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,CAAC;gBACZ,SAAS,GAAG,MAAM,CAAC;YACrB,CAAC;iBAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvE,MAAM,IAAI,CAAC,CAAC;gBACZ,SAAS,GAAG,MAAM,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,IAAY;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,KAAK,GAAmB;gBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC1B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW;oBAClC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE;oBAC1C,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1D,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE,CAAC;YACF,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACjE,IAAI,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAElD,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,MAAM;YACR,KAAK,IAAI;gBACP,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBAC3B,CAAC;gBACD,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;oBAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,uBAAuB;gBAC1B,IAAI,KAAK,KAAK,eAAe;oBAAE,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC;gBACpE,MAAM;YACR,KAAK,sBAAsB;gBACzB,IAAI,IAAI,CAAC,aAAa,KAAK,eAAe,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,WAAW,CAAC,EAAE,CAAC;oBAC/F,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC5B,CAAC;gBACD,MAAM;QACV,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,UAAU,CAC/B,MAAkC,EAClC,MAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC;IACjC,IAAI,aAAuC,CAAC;IAC5C,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACpG,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,aAAa,GAAG,GAAG,EAAE;gBACnB,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpB,MAAM,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YACpG,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;YACR,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;QAC5D,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;YAAE,MAAM,KAAK,CAAC;IACpD,CAAC;YAAS,CAAC;QACT,IAAI,MAAM,IAAI,aAAa;YAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,iDAAiD;YACnD,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,sDAAsD;QACxD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -26,6 +26,7 @@ export type QortexStreamPayload = {
26
26
  kind: "control";
27
27
  control: "routing-status";
28
28
  status: "free-fallback";
29
+ fallbackStage?: "auto-free" | "free-pool";
29
30
  } | {
30
31
  kind: "done";
31
32
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"stream-payload.d.ts","sourceRoot":"","sources":["../src/stream-payload.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,WAAW,CAAC;AAC5D,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,aAAa,CAAC;AAEjE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAChG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACvF;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAwC1E,yFAAyF;AACzF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAqC7E"}
1
+ {"version":3,"file":"stream-payload.d.ts","sourceRoot":"","sources":["../src/stream-payload.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,WAAW,CAAC;AAC5D,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,aAAa,CAAC;AAEjE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAChG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACvF;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,eAAe,CAAC;IAAC,aAAa,CAAC,EAAE,WAAW,GAAG,WAAW,CAAA;CAAE,GAClH;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAwC1E,yFAAyF;AACzF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CA+C7E"}
@@ -79,7 +79,17 @@ export function classifyQortexStreamPayload(data) {
79
79
  };
80
80
  }
81
81
  if (id === "qortex-routing" && parsed.object === "qortex.routing.status" && parsed.status === "free-fallback") {
82
- return { kind: "control", control: "routing-status", status: "free-fallback" };
82
+ const hasStage = Object.prototype.hasOwnProperty.call(parsed, "fallbackStage");
83
+ const fallbackStage = parsed.fallbackStage;
84
+ if (hasStage && fallbackStage !== "auto-free" && fallbackStage !== "free-pool") {
85
+ return { kind: "json", value: parsed };
86
+ }
87
+ return {
88
+ kind: "control",
89
+ control: "routing-status",
90
+ status: "free-fallback",
91
+ ...(hasStage ? { fallbackStage: fallbackStage } : {}),
92
+ };
83
93
  }
84
94
  return { kind: "json", value: parsed };
85
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream-payload.js","sourceRoot":"","sources":["../src/stream-payload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream-payload.js","sourceRoot":"","sources":["../src/stream-payload.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qitqode/qitqore",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Shared, host-neutral Qortex HTTP, streaming, and recovery primitives",
5
5
  "license": "MIT",
6
6
  "repository": {