@qitqode/qitqore 0.1.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.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +165 -0
  3. package/dist/decision-policy.d.ts +132 -0
  4. package/dist/decision-policy.d.ts.map +1 -0
  5. package/dist/decision-policy.js +308 -0
  6. package/dist/decision-policy.js.map +1 -0
  7. package/dist/device-authorization.d.ts +67 -0
  8. package/dist/device-authorization.d.ts.map +1 -0
  9. package/dist/device-authorization.js +122 -0
  10. package/dist/device-authorization.js.map +1 -0
  11. package/dist/errors.d.ts +36 -0
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js +108 -17
  14. package/dist/errors.js.map +1 -1
  15. package/dist/index.d.ts +11 -2
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +10 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/recovery-capabilities.d.ts +26 -0
  20. package/dist/recovery-capabilities.d.ts.map +1 -0
  21. package/dist/recovery-capabilities.js +113 -0
  22. package/dist/recovery-capabilities.js.map +1 -0
  23. package/dist/recovery-directive.d.ts +20 -0
  24. package/dist/recovery-directive.d.ts.map +1 -0
  25. package/dist/recovery-directive.js +116 -0
  26. package/dist/recovery-directive.js.map +1 -0
  27. package/dist/recovery-lease.d.ts +80 -0
  28. package/dist/recovery-lease.d.ts.map +1 -0
  29. package/dist/recovery-lease.js +257 -0
  30. package/dist/recovery-lease.js.map +1 -0
  31. package/dist/recovery-status.d.ts +22 -0
  32. package/dist/recovery-status.d.ts.map +1 -0
  33. package/dist/recovery-status.js +113 -0
  34. package/dist/recovery-status.js.map +1 -0
  35. package/dist/recovery.d.ts +13 -0
  36. package/dist/recovery.d.ts.map +1 -1
  37. package/dist/recovery.js +94 -55
  38. package/dist/recovery.js.map +1 -1
  39. package/dist/redaction.d.ts +64 -0
  40. package/dist/redaction.d.ts.map +1 -0
  41. package/dist/redaction.js +154 -0
  42. package/dist/redaction.js.map +1 -0
  43. package/dist/route-contract.d.ts +36 -0
  44. package/dist/route-contract.d.ts.map +1 -0
  45. package/dist/route-contract.js +89 -0
  46. package/dist/route-contract.js.map +1 -0
  47. package/dist/sse.d.ts +4 -0
  48. package/dist/sse.d.ts.map +1 -1
  49. package/dist/sse.js +16 -1
  50. package/dist/sse.js.map +1 -1
  51. package/dist/stream-payload.d.ts +40 -0
  52. package/dist/stream-payload.d.ts.map +1 -0
  53. package/dist/stream-payload.js +96 -0
  54. package/dist/stream-payload.js.map +1 -0
  55. package/dist/transport.d.ts +10 -0
  56. package/dist/transport.d.ts.map +1 -1
  57. package/dist/transport.js +28 -0
  58. package/dist/transport.js.map +1 -1
  59. package/package.json +12 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-policy.js","sourceRoot":"","sources":["../src/decision-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Stateless Forgewise device-authorization protocol (RFC 8628 response shapes).
3
+ * These functions validate protocol data and classify poll outcomes. They never
4
+ * poll, sleep, open a browser, persist a code, install or refresh a credential,
5
+ * or read a clock: the caller passes the current time explicitly.
6
+ */
7
+ export declare const DEVICE_AUTHORIZATION_DEFAULT_EXPIRES_IN_SECONDS = 900;
8
+ export declare const DEVICE_AUTHORIZATION_DEFAULT_INTERVAL_SECONDS = 5;
9
+ export declare const DEVICE_AUTHORIZATION_SLOW_DOWN_STEP_SECONDS = 5;
10
+ /** Upper bound for any server-supplied polling interval, so a hostile value cannot stall a host. */
11
+ export declare const DEVICE_AUTHORIZATION_MAX_INTERVAL_SECONDS = 3600;
12
+ /** Upper bound for any server-supplied code lifetime. */
13
+ export declare const DEVICE_AUTHORIZATION_MAX_EXPIRES_IN_SECONDS = 86400;
14
+ /** Validated device authorization start, with the expiry resolved to epoch milliseconds. */
15
+ export interface DeviceAuthorizationStart {
16
+ deviceCode: string;
17
+ userCode: string;
18
+ verificationUri: string;
19
+ verificationUriComplete?: string;
20
+ expiresAt: number;
21
+ intervalSeconds: number;
22
+ }
23
+ /** Outcome of one token poll. Only bounded, safe fields are carried. */
24
+ export type DeviceTokenPollOutcome = {
25
+ kind: "success";
26
+ accessToken: string;
27
+ refreshToken?: string;
28
+ expiresInSeconds?: number;
29
+ } | {
30
+ kind: "pending";
31
+ intervalSeconds: number;
32
+ } | {
33
+ kind: "denied";
34
+ } | {
35
+ kind: "expired";
36
+ } | {
37
+ kind: "failed";
38
+ code: string;
39
+ } | {
40
+ kind: "invalid";
41
+ };
42
+ /** Thrown when the authorization-start response is missing a required protocol field. */
43
+ export declare class DeviceAuthorizationProtocolError extends Error {
44
+ constructor(message?: string);
45
+ }
46
+ /**
47
+ * Validate the device authorization response. Required fields must be present
48
+ * and well-formed. Optional timing is clamped, not trusted. `now` is the caller's
49
+ * current epoch time in milliseconds.
50
+ */
51
+ export declare function parseDeviceAuthorizationStart(value: unknown, now: number): DeviceAuthorizationStart;
52
+ /** True once the code's lifetime has elapsed. The boundary instant itself counts as expired. */
53
+ export declare function deviceAuthorizationExpired(input: {
54
+ expiresAt: number;
55
+ now: number;
56
+ }): boolean;
57
+ /**
58
+ * Classify one device-token poll. `intervalSeconds` is the host's current
59
+ * interval, which `slow_down` increases by a bounded step. Errors other than the
60
+ * RFC 8628 set are reported only by their safe code, never by description text.
61
+ */
62
+ export declare function classifyDeviceTokenPoll(input: {
63
+ status: number;
64
+ body: unknown;
65
+ intervalSeconds: number;
66
+ }): DeviceTokenPollOutcome;
67
+ //# sourceMappingURL=device-authorization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-authorization.d.ts","sourceRoot":"","sources":["../src/device-authorization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,+CAA+C,MAAM,CAAC;AACnE,eAAO,MAAM,6CAA6C,IAAI,CAAC;AAC/D,eAAO,MAAM,2CAA2C,IAAI,CAAC;AAC7D,oGAAoG;AACpG,eAAO,MAAM,yCAAyC,OAAQ,CAAC;AAC/D,yDAAyD;AACzD,eAAO,MAAM,2CAA2C,QAAS,CAAC;AAQlE,4FAA4F;AAC5F,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wEAAwE;AACxE,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB,yFAAyF;AACzF,qBAAa,gCAAiC,SAAQ,KAAK;gBAC7C,OAAO,SAAiE;CAIrF;AA6BD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,wBAAwB,CA8BnG;AAED,gGAAgG;AAChG,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE7F;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,sBAAsB,CAiCzB"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Stateless Forgewise device-authorization protocol (RFC 8628 response shapes).
3
+ * These functions validate protocol data and classify poll outcomes. They never
4
+ * poll, sleep, open a browser, persist a code, install or refresh a credential,
5
+ * or read a clock: the caller passes the current time explicitly.
6
+ */
7
+ export const DEVICE_AUTHORIZATION_DEFAULT_EXPIRES_IN_SECONDS = 900;
8
+ export const DEVICE_AUTHORIZATION_DEFAULT_INTERVAL_SECONDS = 5;
9
+ export const DEVICE_AUTHORIZATION_SLOW_DOWN_STEP_SECONDS = 5;
10
+ /** Upper bound for any server-supplied polling interval, so a hostile value cannot stall a host. */
11
+ export const DEVICE_AUTHORIZATION_MAX_INTERVAL_SECONDS = 3_600;
12
+ /** Upper bound for any server-supplied code lifetime. */
13
+ export const DEVICE_AUTHORIZATION_MAX_EXPIRES_IN_SECONDS = 86_400;
14
+ const MAX_CODE_LENGTH = 2_048;
15
+ const MAX_USER_CODE_LENGTH = 64;
16
+ const MAX_URI_LENGTH = 2_048;
17
+ const MAX_TOKEN_LENGTH = 16_384;
18
+ const SAFE_ERROR_CODE = /^[a-z_]{1,64}$/;
19
+ /** Thrown when the authorization-start response is missing a required protocol field. */
20
+ export class DeviceAuthorizationProtocolError extends Error {
21
+ constructor(message = "Forgewise returned an invalid device authorization response.") {
22
+ super(message);
23
+ this.name = "DeviceAuthorizationProtocolError";
24
+ }
25
+ }
26
+ function isRecord(value) {
27
+ return value !== null && typeof value === "object" && !Array.isArray(value);
28
+ }
29
+ function boundedString(value, maxLength) {
30
+ return typeof value === "string" && value.length > 0 && value.length <= maxLength ? value : undefined;
31
+ }
32
+ /** A verification URI must be absolute HTTPS, or plain HTTP only for a loopback host. */
33
+ function verificationUri(value) {
34
+ const text = boundedString(value, MAX_URI_LENGTH);
35
+ if (text === undefined)
36
+ return undefined;
37
+ try {
38
+ const url = new URL(text);
39
+ const loopback = ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname);
40
+ return url.protocol === "https:" || (url.protocol === "http:" && loopback) ? text : undefined;
41
+ }
42
+ catch {
43
+ return undefined;
44
+ }
45
+ }
46
+ /** Clamp a server-supplied number to [1, max] and fall back to the default when it is absent or invalid. */
47
+ function boundedSeconds(value, fallback, max) {
48
+ if (typeof value !== "number" || !Number.isFinite(value))
49
+ return fallback;
50
+ return Math.min(max, Math.max(1, Math.floor(value)));
51
+ }
52
+ /**
53
+ * Validate the device authorization response. Required fields must be present
54
+ * and well-formed. Optional timing is clamped, not trusted. `now` is the caller's
55
+ * current epoch time in milliseconds.
56
+ */
57
+ export function parseDeviceAuthorizationStart(value, now) {
58
+ if (!isRecord(value))
59
+ throw new DeviceAuthorizationProtocolError();
60
+ const deviceCode = boundedString(value.device_code, MAX_CODE_LENGTH);
61
+ const userCode = boundedString(value.user_code, MAX_USER_CODE_LENGTH);
62
+ const verification = verificationUri(value.verification_uri);
63
+ if (deviceCode === undefined || userCode === undefined || verification === undefined) {
64
+ throw new DeviceAuthorizationProtocolError();
65
+ }
66
+ const complete = value.verification_uri_complete === undefined ? undefined : verificationUri(value.verification_uri_complete);
67
+ if (value.verification_uri_complete !== undefined && complete === undefined) {
68
+ throw new DeviceAuthorizationProtocolError();
69
+ }
70
+ const expiresIn = boundedSeconds(value.expires_in, DEVICE_AUTHORIZATION_DEFAULT_EXPIRES_IN_SECONDS, DEVICE_AUTHORIZATION_MAX_EXPIRES_IN_SECONDS);
71
+ return {
72
+ deviceCode,
73
+ userCode,
74
+ verificationUri: verification,
75
+ ...(complete === undefined ? {} : { verificationUriComplete: complete }),
76
+ expiresAt: now + expiresIn * 1_000,
77
+ intervalSeconds: boundedSeconds(value.interval, DEVICE_AUTHORIZATION_DEFAULT_INTERVAL_SECONDS, DEVICE_AUTHORIZATION_MAX_INTERVAL_SECONDS),
78
+ };
79
+ }
80
+ /** True once the code's lifetime has elapsed. The boundary instant itself counts as expired. */
81
+ export function deviceAuthorizationExpired(input) {
82
+ return input.now >= input.expiresAt;
83
+ }
84
+ /**
85
+ * Classify one device-token poll. `intervalSeconds` is the host's current
86
+ * interval, which `slow_down` increases by a bounded step. Errors other than the
87
+ * RFC 8628 set are reported only by their safe code, never by description text.
88
+ */
89
+ export function classifyDeviceTokenPoll(input) {
90
+ const body = isRecord(input.body) ? input.body : undefined;
91
+ if (input.status >= 200 && input.status < 300) {
92
+ const accessToken = boundedString(body?.access_token, MAX_TOKEN_LENGTH);
93
+ if (accessToken === undefined)
94
+ return { kind: "invalid" };
95
+ const refreshToken = boundedString(body?.refresh_token, MAX_TOKEN_LENGTH);
96
+ const expiresIn = typeof body?.expires_in === "number" && Number.isFinite(body.expires_in) && body.expires_in > 0
97
+ ? body.expires_in
98
+ : undefined;
99
+ return {
100
+ kind: "success",
101
+ accessToken,
102
+ ...(refreshToken === undefined ? {} : { refreshToken }),
103
+ ...(expiresIn === undefined ? {} : { expiresInSeconds: expiresIn }),
104
+ };
105
+ }
106
+ const error = typeof body?.error === "string" && SAFE_ERROR_CODE.test(body.error) ? body.error : undefined;
107
+ if (error === "authorization_pending") {
108
+ return { kind: "pending", intervalSeconds: input.intervalSeconds };
109
+ }
110
+ if (error === "slow_down") {
111
+ return {
112
+ kind: "pending",
113
+ intervalSeconds: Math.min(DEVICE_AUTHORIZATION_MAX_INTERVAL_SECONDS, input.intervalSeconds + DEVICE_AUTHORIZATION_SLOW_DOWN_STEP_SECONDS),
114
+ };
115
+ }
116
+ if (error === "access_denied")
117
+ return { kind: "denied" };
118
+ if (error === "expired_token")
119
+ return { kind: "expired" };
120
+ return { kind: "failed", code: error ?? `http_${input.status}` };
121
+ }
122
+ //# sourceMappingURL=device-authorization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-authorization.js","sourceRoot":"","sources":["../src/device-authorization.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -1,4 +1,29 @@
1
+ import { type QortexRecoveryDirective } from "./recovery-directive.js";
1
2
  export type QortexErrorCategory = "credentials" | "authorization" | "validation" | "rate-limit" | "gateway" | "server" | "http" | "protocol" | "transport" | "timeout";
3
+ /** Server-reported acceptance, restricted to the public states. */
4
+ export type QortexAcceptanceState = "unknown" | "not-accepted" | "accepted";
5
+ /**
6
+ * Bounded replay evidence from an error envelope. Only the fields below survive.
7
+ * `accepted` is set whenever the server reported any acceptance other than
8
+ * `not-accepted`, including an unrecognized value, so ambiguity fails closed.
9
+ * Use `hasReplayBlockingEvidence` rather than reading one field by itself.
10
+ */
11
+ export interface QortexErrorEvidence {
12
+ contractVersion: 1;
13
+ /** True when the error body was a JSON object whose fields could be examined. */
14
+ replayEvidenceAvailable: boolean;
15
+ accepted?: true;
16
+ partialOutput?: true;
17
+ sideEffectStarted?: true;
18
+ acceptance?: QortexAcceptanceState;
19
+ recoveryDirective?: QortexRecoveryDirective;
20
+ /**
21
+ * The server's explicit retryability verdict, from its directive or envelope.
22
+ * Absent when the server stated none, in which case `QortexError.retryable`
23
+ * falls back to the HTTP status.
24
+ */
25
+ retryable?: boolean;
26
+ }
2
27
  export interface QortexErrorDetails {
3
28
  category: QortexErrorCategory;
4
29
  message: string;
@@ -6,13 +31,24 @@ export interface QortexErrorDetails {
6
31
  status?: number;
7
32
  requestId?: string;
8
33
  retryable: boolean;
34
+ evidence?: QortexErrorEvidence;
9
35
  }
36
+ /** The first safe request ID named in an error body, read from the documented envelope locations. */
37
+ export declare function qortexErrorRequestId(payload: unknown): string | undefined;
38
+ /**
39
+ * Read only the bounded evidence from an error payload. Raw strings, unknown
40
+ * fields, and credentials are never copied into the result.
41
+ */
42
+ export declare function qortexErrorEvidence(payload: unknown): QortexErrorEvidence;
43
+ /** True when any server evidence forbids replaying the failed attempt. */
44
+ export declare function hasReplayBlockingEvidence(evidence: QortexErrorEvidence | undefined): boolean;
10
45
  export declare class QortexError extends Error {
11
46
  readonly category: QortexErrorCategory;
12
47
  readonly code?: string;
13
48
  readonly status?: number;
14
49
  readonly requestId?: string;
15
50
  readonly retryable: boolean;
51
+ readonly evidence?: QortexErrorEvidence;
16
52
  constructor(details: QortexErrorDetails, options?: {
17
53
  cause?: unknown;
18
54
  });
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,eAAe,GACf,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,QAAQ,GACR,MAAM,GACN,UAAU,GACV,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAmDD,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAG1B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;IAWnC,MAAM,IAAI,kBAAkB;CAU7B;AAED,qBAAa,eAAgB,SAAQ,WAAW;gBAClC,OAAO,EAAE,kBAAkB,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAI3E;AAED,qBAAa,kBAAmB,SAAQ,WAAW;gBACrC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAYjE;AAED,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAY9C;AAED,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAWjE;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,eAAe,CA4CjB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAG/F,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,eAAe,GACf,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,QAAQ,GACR,MAAM,GACN,UAAU,GACV,WAAW,GACX,SAAS,CAAC;AAEd,mEAAmE;AACnE,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,cAAc,GAAG,UAAU,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,CAAC,CAAC;IACnB,iFAAiF;IACjF,uBAAuB,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAsCD,qGAAqG;AACrG,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIzE;AA8BD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,CAczE;AA4BD,0EAA0E;AAC1E,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAQ5F;AAQD,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;gBAGtC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;IAYnC,MAAM,IAAI,kBAAkB;CAW7B;AAED,qBAAa,eAAgB,SAAQ,WAAW;gBAClC,OAAO,EAAE,kBAAkB,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAI3E;AAED,qBAAa,kBAAmB,SAAQ,WAAW;gBACrC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAYjE;AAED,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAY9C;AAED,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAWjE;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,eAAe,CA+CjB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpD"}
package/dist/errors.js CHANGED
@@ -1,10 +1,9 @@
1
+ import { parseRecoveryDirective } from "./recovery-directive.js";
2
+ import { redactSensitiveText } from "./redaction.js";
1
3
  const SAFE_CODE = /^[A-Za-z0-9_.:-]{1,128}$/;
2
4
  const SAFE_REQUEST_ID = /^[A-Za-z0-9_.:-]{1,160}$/;
3
- const AUTH_HEADER = /\b(authorization)\s*[:=]\s*(?:bearer|basic)\s+\S+/gi;
4
- const SECRET_VALUE = /\b(api[-_ ]?key|access[-_ ]?token|refresh[-_ ]?token|token|password|secret)\s*[:=]\s*["']?[^\s,;"'&]+/gi;
5
- const BEARER_TOKEN = /\b(bearer|basic)\s+[A-Za-z0-9._~+/-]+=*/gi;
6
- const URL_SECRET = /([?&](?:api[-_]?key|access[-_]?token|refresh[-_]?token|token|secret)=)[^&\s]+/gi;
7
- const JWT = /\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g;
5
+ const ACCEPTANCE_STATES = new Set(["unknown", "not-accepted", "accepted"]);
6
+ const REPLAY_FLAGS = ["accepted", "partialOutput", "sideEffectStarted"];
8
7
  function record(value) {
9
8
  return value !== null && typeof value === "object" && !Array.isArray(value)
10
9
  ? value
@@ -13,16 +12,7 @@ function record(value) {
13
12
  function boundedText(value, maxLength) {
14
13
  if (typeof value !== "string")
15
14
  return undefined;
16
- const safe = value
17
- .replace(AUTH_HEADER, "$1: [redacted]")
18
- .replace(SECRET_VALUE, "$1=[redacted]")
19
- .replace(BEARER_TOKEN, "$1 [redacted]")
20
- .replace(URL_SECRET, "$1[redacted]")
21
- .replace(JWT, "[redacted-token]")
22
- .replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/g, " ")
23
- .trim()
24
- .slice(0, maxLength);
25
- return safe || undefined;
15
+ return redactSensitiveText(value, maxLength) || undefined;
26
16
  }
27
17
  function safeCode(value) {
28
18
  if (typeof value !== "string")
@@ -42,12 +32,108 @@ function safeRequestId(value) {
42
32
  const candidate = value?.trim();
43
33
  return candidate && SAFE_REQUEST_ID.test(candidate) ? candidate : undefined;
44
34
  }
35
+ /** The first safe request ID named in an error body, read from the documented envelope locations. */
36
+ export function qortexErrorRequestId(payload) {
37
+ return envelopeRecords(payload)
38
+ .map((item) => safeRequestId(typeof item.requestId === "string" ? item.requestId : undefined))
39
+ .find((value) => value !== undefined);
40
+ }
41
+ /**
42
+ * The error envelope may appear at the top level, under `error`, or under
43
+ * `details`. Those are the documented locations, and each is read once here,
44
+ * before the raw payload is discarded.
45
+ */
46
+ function envelopeRecords(payload) {
47
+ const outer = record(payload);
48
+ if (!outer)
49
+ return [];
50
+ return [outer, record(outer.error), record(outer.details)].filter((item) => item !== undefined);
51
+ }
52
+ function replayEvidence(records) {
53
+ const evidence = {};
54
+ for (const flag of REPLAY_FLAGS) {
55
+ // Any value other than an explicit `false` is ambiguous, and ambiguity blocks replay.
56
+ if (records.some((item) => item[flag] != null && item[flag] !== false))
57
+ evidence[flag] = true;
58
+ }
59
+ const reported = records.map((item) => item.acceptance).filter((value) => value != null);
60
+ if (reported.some((value) => value !== "not-accepted"))
61
+ evidence.accepted = true;
62
+ if (reported.length === 0)
63
+ return evidence;
64
+ if (reported.includes("accepted"))
65
+ evidence.acceptance = "accepted";
66
+ else if (reported.includes("unknown"))
67
+ evidence.acceptance = "unknown";
68
+ else if (reported.every((value) => value === "not-accepted"))
69
+ evidence.acceptance = "not-accepted";
70
+ return evidence;
71
+ }
72
+ /**
73
+ * Read only the bounded evidence from an error payload. Raw strings, unknown
74
+ * fields, and credentials are never copied into the result.
75
+ */
76
+ export function qortexErrorEvidence(payload) {
77
+ const records = envelopeRecords(payload);
78
+ if (records.length === 0)
79
+ return { contractVersion: 1, replayEvidenceAvailable: false };
80
+ const directiveSource = records.map((item) => item.recoveryDirective).find((value) => value !== undefined);
81
+ const directive = directiveSource === undefined ? undefined : parseDirectiveSafely(directiveSource);
82
+ const retryable = explicitRetryable(records, directive);
83
+ return {
84
+ contractVersion: 1,
85
+ replayEvidenceAvailable: true,
86
+ ...replayEvidence(records),
87
+ ...(directive === undefined ? {} : { recoveryDirective: directive }),
88
+ ...(retryable === undefined ? {} : { retryable }),
89
+ };
90
+ }
91
+ /**
92
+ * The server's own verdict. An explicit `false` is terminal. Otherwise a valid
93
+ * directive decides, and then an explicit `true` from the envelope.
94
+ */
95
+ function explicitRetryable(records, directive) {
96
+ const verdicts = records
97
+ .map((item) => item.retryable)
98
+ .filter((value) => typeof value === "boolean");
99
+ if (verdicts.includes(false))
100
+ return false;
101
+ if (directive !== undefined)
102
+ return directive.retryable;
103
+ if (verdicts.includes(true))
104
+ return true;
105
+ return undefined;
106
+ }
107
+ function parseDirectiveSafely(value) {
108
+ // A malformed or future directive is omitted rather than reflected to the caller.
109
+ try {
110
+ return parseRecoveryDirective(value);
111
+ }
112
+ catch {
113
+ return undefined;
114
+ }
115
+ }
116
+ /** True when any server evidence forbids replaying the failed attempt. */
117
+ export function hasReplayBlockingEvidence(evidence) {
118
+ return (evidence !== undefined &&
119
+ (evidence.accepted === true ||
120
+ evidence.partialOutput === true ||
121
+ evidence.sideEffectStarted === true ||
122
+ (evidence.acceptance !== undefined && evidence.acceptance !== "not-accepted")));
123
+ }
124
+ /** The server's explicit verdict wins. Otherwise the HTTP status decides. */
125
+ function resolveRetryable(status, evidence) {
126
+ if (evidence.retryable !== undefined)
127
+ return evidence.retryable;
128
+ return status === 408 || status === 425 || status === 429 || status >= 500;
129
+ }
45
130
  export class QortexError extends Error {
46
131
  category;
47
132
  code;
48
133
  status;
49
134
  requestId;
50
135
  retryable;
136
+ evidence;
51
137
  constructor(details, options = {}) {
52
138
  super(details.message, options.cause === undefined ? undefined : { cause: options.cause });
53
139
  this.name = "QortexError";
@@ -56,6 +142,7 @@ export class QortexError extends Error {
56
142
  this.status = details.status;
57
143
  this.requestId = details.requestId;
58
144
  this.retryable = details.retryable;
145
+ this.evidence = details.evidence;
59
146
  }
60
147
  toJSON() {
61
148
  return {
@@ -65,6 +152,7 @@ export class QortexError extends Error {
65
152
  ...(this.status === undefined ? {} : { status: this.status }),
66
153
  ...(this.requestId ? { requestId: this.requestId } : {}),
67
154
  retryable: this.retryable,
155
+ ...(this.evidence ? { evidence: this.evidence } : {}),
68
156
  };
69
157
  }
70
158
  }
@@ -112,6 +200,7 @@ export class QortexProtocolError extends QortexError {
112
200
  export function qortexHttpError(status, payload, headers) {
113
201
  const outer = record(payload);
114
202
  const nested = record(outer?.error);
203
+ const evidence = qortexErrorEvidence(payload);
115
204
  const code = safeCode(outer?.code) ??
116
205
  safeCode(nested?.code) ??
117
206
  (typeof outer?.error === "string" ? safeCode(outer.error) : undefined) ??
@@ -124,7 +213,8 @@ export function qortexHttpError(status, payload, headers) {
124
213
  const requestHeaders = new Headers(headers);
125
214
  const requestId = safeRequestId(requestHeaders.get("x-request-id")) ??
126
215
  safeRequestId(requestHeaders.get("request-id")) ??
127
- safeRequestId(requestHeaders.get("x-qlex-request-id"));
216
+ safeRequestId(requestHeaders.get("x-qlex-request-id")) ??
217
+ qortexErrorRequestId(payload);
128
218
  const envelopeFailure = outer?.success === false;
129
219
  let category;
130
220
  if (envelopeFailure && status < 400)
@@ -153,7 +243,8 @@ export function qortexHttpError(status, payload, headers) {
153
243
  code,
154
244
  status,
155
245
  ...(requestId ? { requestId } : {}),
156
- retryable: status === 408 || status === 425 || status === 429 || status >= 500,
246
+ retryable: resolveRetryable(status, evidence),
247
+ evidence,
157
248
  });
158
249
  }
159
250
  export function isAbortError(error) {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,14 @@
1
- export { QortexError, QortexHttpError, QortexProtocolError, QortexTimeoutError, QortexTransportError, isAbortError, qortexHttpError, type QortexErrorCategory, type QortexErrorDetails, } from "./errors.js";
1
+ export { QortexError, QortexHttpError, QortexProtocolError, QortexTimeoutError, QortexTransportError, hasReplayBlockingEvidence, isAbortError, qortexErrorEvidence, qortexErrorRequestId, qortexHttpError, type QortexAcceptanceState, type QortexErrorCategory, type QortexErrorDetails, type QortexErrorEvidence, } from "./errors.js";
2
+ export { classifyQortexStreamPayload, type QortexCostFrameID, type QortexStreamPayload, type QortexUsageFrameID, } from "./stream-payload.js";
3
+ export { createSecretRedactor, secretEncodings, type SecretRedactionStream, type SecretRedactor, type SecretRedactorOptions, } from "./redaction.js";
4
+ export { DeviceAuthorizationProtocolError, classifyDeviceTokenPoll, deviceAuthorizationExpired, parseDeviceAuthorizationStart, type DeviceAuthorizationStart, type DeviceTokenPollOutcome, } from "./device-authorization.js";
2
5
  export { QortexClient, createQortexClient, isQortexHttpError, unwrapSuccessEnvelope, type QortexClientOptions, type QortexJsonResult, type QortexRequestPolicy, } from "./transport.js";
3
6
  export { SseDecoder, iterateSse, type QortexSseEvent, } from "./sse.js";
4
- export { abortableDelay, runWithRecovery, type AttemptOutcome, type QortexAttemptContext, type RecoveryOptions, type RemoteAcceptance, type ReplayAuthorizationContext, } from "./recovery.js";
7
+ export { parseRecoveryStatus, type QortexExecutionState, type QortexRecoveryStatus, type QortexResultRecovery, } from "./recovery-status.js";
8
+ export { parseRecoveryCapabilities, parseRecoveryCapability, type QortexRecoveryCapabilities, type QortexRecoveryCapability, type QortexRecoveryMode, type QortexRecoveryRetry, type QortexRecoveryReplay, type QortexRecoveryResume, type QortexRecoveryReconciliation, } from "./recovery-capabilities.js";
9
+ export { parseRecoveryDirective, type QortexRecoveryDirective, type QortexRecoveryFailureLayer, type QortexRecoveryFailureCategory, type QortexRecommendedRecoveryAction, } from "./recovery-directive.js";
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
+ export { qortexModuleEndpoint, qortexRequestHeaders, recoveryRouteID, } from "./route-contract.js";
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";
5
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,YAAY,EACZ,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AACrB,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,cAAc,EACd,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,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
@@ -1,5 +1,14 @@
1
- export { QortexError, QortexHttpError, QortexProtocolError, QortexTimeoutError, QortexTransportError, isAbortError, qortexHttpError, } from "./errors.js";
1
+ export { QortexError, QortexHttpError, QortexProtocolError, QortexTimeoutError, QortexTransportError, hasReplayBlockingEvidence, isAbortError, qortexErrorEvidence, qortexErrorRequestId, qortexHttpError, } from "./errors.js";
2
+ export { classifyQortexStreamPayload, } from "./stream-payload.js";
3
+ export { createSecretRedactor, secretEncodings, } from "./redaction.js";
4
+ export { DeviceAuthorizationProtocolError, classifyDeviceTokenPoll, deviceAuthorizationExpired, parseDeviceAuthorizationStart, } from "./device-authorization.js";
2
5
  export { QortexClient, createQortexClient, isQortexHttpError, unwrapSuccessEnvelope, } from "./transport.js";
3
6
  export { SseDecoder, iterateSse, } from "./sse.js";
7
+ export { parseRecoveryStatus, } from "./recovery-status.js";
8
+ export { parseRecoveryCapabilities, parseRecoveryCapability, } from "./recovery-capabilities.js";
9
+ export { parseRecoveryDirective, } from "./recovery-directive.js";
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
+ export { qortexModuleEndpoint, qortexRequestHeaders, recoveryRouteID, } from "./route-contract.js";
4
12
  export { abortableDelay, runWithRecovery, } from "./recovery.js";
13
+ export { DECISION_POLICY_CONTRACT_VERSION, assertDecisionPolicyRequest, createDecisionPolicyClient, parseDecisionPolicyResult, } from "./decision-policy.js";
5
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,YAAY,EACZ,eAAe,GAGhB,MAAM,aAAa,CAAC;AACrB,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,cAAc,EACd,eAAe,GAMhB,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"}
@@ -0,0 +1,26 @@
1
+ export type QortexRecoveryMode = "buffered" | "streaming" | "async_job" | "utility";
2
+ export type QortexRecoveryRetry = "pre_execution_only" | "safe_observation" | "unsupported";
3
+ export type QortexRecoveryReplay = "retained_result" | "unsupported";
4
+ export type QortexRecoveryResume = "supported" | "unsupported";
5
+ export type QortexRecoveryReconciliation = "recovery_status" | "billing_status_only" | "job_status" | "unsupported";
6
+ export interface QortexRecoveryCapability {
7
+ contractVersion: 1;
8
+ routeID: string;
9
+ mode: QortexRecoveryMode;
10
+ retry: QortexRecoveryRetry;
11
+ replay: QortexRecoveryReplay;
12
+ resume: QortexRecoveryResume;
13
+ reconciliation: QortexRecoveryReconciliation;
14
+ requiresIdempotencyKey: boolean;
15
+ retentionMs?: number;
16
+ maxBackendAdditionalWork: number;
17
+ }
18
+ export interface QortexRecoveryCapabilities {
19
+ contractVersion: 1;
20
+ capabilities: QortexRecoveryCapability[];
21
+ }
22
+ /** Parse one route capability. Unrecognized fields are rejected rather than forwarded. */
23
+ export declare function parseRecoveryCapability(value: unknown): QortexRecoveryCapability;
24
+ /** Parse only bounded route facts; never pass through unrecognized server metadata. */
25
+ export declare function parseRecoveryCapabilities(value: unknown): QortexRecoveryCapabilities;
26
+ //# sourceMappingURL=recovery-capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery-capabilities.d.ts","sourceRoot":"","sources":["../src/recovery-capabilities.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;AACpF,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,aAAa,CAAC;AAC5F,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,aAAa,CAAC;AACrE,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,aAAa,CAAC;AAC/D,MAAM,MAAM,4BAA4B,GACpC,iBAAiB,GACjB,qBAAqB,GACrB,YAAY,GACZ,aAAa,CAAC;AAElB,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,CAAC,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,cAAc,EAAE,4BAA4B,CAAC;IAC7C,sBAAsB,EAAE,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,CAAC,CAAC;IACnB,YAAY,EAAE,wBAAwB,EAAE,CAAC;CAC1C;AAsCD,0FAA0F;AAC1F,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,wBAAwB,CAqDhF;AAED,uFAAuF;AACvF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B,CAyBpF"}