@predicatesystems/authority 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +24 -0
- package/LICENSE-APACHE +201 -0
- package/LICENSE-MIT +21 -0
- package/README.md +267 -0
- package/dist/src/contracts/action-request.d.ts +43 -0
- package/dist/src/contracts/action-request.d.ts.map +1 -0
- package/dist/src/contracts/action-request.js +32 -0
- package/dist/src/contracts/action-request.js.map +1 -0
- package/dist/src/contracts/authorization-decision.d.ts +11 -0
- package/dist/src/contracts/authorization-decision.d.ts.map +1 -0
- package/dist/src/contracts/authorization-decision.js +17 -0
- package/dist/src/contracts/authorization-decision.js.map +1 -0
- package/dist/src/contracts/decision.d.ts +10 -0
- package/dist/src/contracts/decision.d.ts.map +1 -0
- package/dist/src/contracts/decision.js +13 -0
- package/dist/src/contracts/decision.js.map +1 -0
- package/dist/src/contracts/enums.d.ts +7 -0
- package/dist/src/contracts/enums.d.ts.map +1 -0
- package/dist/src/contracts/enums.js +12 -0
- package/dist/src/contracts/enums.js.map +1 -0
- package/dist/src/contracts/index.d.ts +16 -0
- package/dist/src/contracts/index.d.ts.map +1 -0
- package/dist/src/contracts/index.js +9 -0
- package/dist/src/contracts/index.js.map +1 -0
- package/dist/src/contracts/mandate.d.ts +29 -0
- package/dist/src/contracts/mandate.d.ts.map +1 -0
- package/dist/src/contracts/mandate.js +24 -0
- package/dist/src/contracts/mandate.js.map +1 -0
- package/dist/src/contracts/policy-rule.d.ts +12 -0
- package/dist/src/contracts/policy-rule.d.ts.map +1 -0
- package/dist/src/contracts/policy-rule.js +17 -0
- package/dist/src/contracts/policy-rule.js.map +1 -0
- package/dist/src/contracts/proof-event.d.ts +13 -0
- package/dist/src/contracts/proof-event.d.ts.map +1 -0
- package/dist/src/contracts/proof-event.js +15 -0
- package/dist/src/contracts/proof-event.js.map +1 -0
- package/dist/src/contracts/verification.d.ts +4 -0
- package/dist/src/contracts/verification.d.ts.map +1 -0
- package/dist/src/contracts/verification.js +15 -0
- package/dist/src/contracts/verification.js.map +1 -0
- package/dist/src/errors.d.ts +13 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +16 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/evidence/non-web.d.ts +47 -0
- package/dist/src/evidence/non-web.d.ts.map +1 -0
- package/dist/src/evidence/non-web.js +58 -0
- package/dist/src/evidence/non-web.js.map +1 -0
- package/dist/src/evidence/web-state.d.ts +33 -0
- package/dist/src/evidence/web-state.d.ts.map +1 -0
- package/dist/src/evidence/web-state.js +58 -0
- package/dist/src/evidence/web-state.js.map +1 -0
- package/dist/src/guard/action-guard.d.ts +24 -0
- package/dist/src/guard/action-guard.d.ts.map +1 -0
- package/dist/src/guard/action-guard.js +49 -0
- package/dist/src/guard/action-guard.js.map +1 -0
- package/dist/src/index.d.ts +27 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +142 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/policy/engine.d.ts +19 -0
- package/dist/src/policy/engine.d.ts.map +1 -0
- package/dist/src/policy/engine.js +82 -0
- package/dist/src/policy/engine.js.map +1 -0
- package/dist/src/policy/matching.d.ts +6 -0
- package/dist/src/policy/matching.d.ts.map +1 -0
- package/dist/src/policy/matching.js +46 -0
- package/dist/src/policy/matching.js.map +1 -0
- package/dist/src/types.d.ts +19 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +11 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/wrappers/sensitive-operations.d.ts +44 -0
- package/dist/src/wrappers/sensitive-operations.d.ts.map +1 -0
- package/dist/src/wrappers/sensitive-operations.js +52 -0
- package/dist/src/wrappers/sensitive-operations.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision.js","sourceRoot":"","sources":["../../../src/contracts/decision.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,CACL,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS;QAChC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAC9B,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC;QAC/D,CAAC,GAAG,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC;QACrE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACjC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAC/D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const AUTHORIZATION_REASONS: readonly ["allowed", "no_matching_policy", "explicit_deny", "missing_required_verification", "max_delegation_depth_exceeded", "invalid_mandate", "rate_limit_exceeded"];
|
|
2
|
+
export type AuthorizationReason = (typeof AUTHORIZATION_REASONS)[number];
|
|
3
|
+
export declare const VERIFICATION_STATUSES: readonly ["passed", "failed", "skipped"];
|
|
4
|
+
export type VerificationStatus = (typeof VERIFICATION_STATUSES)[number];
|
|
5
|
+
export declare const POLICY_EFFECTS: readonly ["allow", "deny"];
|
|
6
|
+
export type PolicyEffect = (typeof POLICY_EFFECTS)[number];
|
|
7
|
+
//# sourceMappingURL=enums.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/contracts/enums.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,yKAQxB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,eAAO,MAAM,qBAAqB,0CAA2C,CAAC;AAC9E,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,eAAO,MAAM,cAAc,4BAA6B,CAAC;AACzD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const AUTHORIZATION_REASONS = [
|
|
2
|
+
"allowed",
|
|
3
|
+
"no_matching_policy",
|
|
4
|
+
"explicit_deny",
|
|
5
|
+
"missing_required_verification",
|
|
6
|
+
"max_delegation_depth_exceeded",
|
|
7
|
+
"invalid_mandate",
|
|
8
|
+
"rate_limit_exceeded",
|
|
9
|
+
];
|
|
10
|
+
export const VERIFICATION_STATUSES = ["passed", "failed", "skipped"];
|
|
11
|
+
export const POLICY_EFFECTS = ["allow", "deny"];
|
|
12
|
+
//# sourceMappingURL=enums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/contracts/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,SAAS;IACT,oBAAoB;IACpB,eAAe;IACf,+BAA+B;IAC/B,+BAA+B;IAC/B,iBAAiB;IACjB,qBAAqB;CACb,CAAC;AAIX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAG9E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,CAAU,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type { ActionRequest, ActionSpec, AuthorizeRequest, PrincipalRef, SidecarAuthorizeRequest, StateEvidence, VerificationEvidence, VerificationSignal, } from "./action-request.js";
|
|
2
|
+
export { toSidecarAuthorizeRequest } from "./action-request.js";
|
|
3
|
+
export type { AuthorizationResponse } from "./decision.js";
|
|
4
|
+
export { isAuthorizationResponse } from "./decision.js";
|
|
5
|
+
export type { AuthorizationDecision } from "./authorization-decision.js";
|
|
6
|
+
export { isAuthorizationDecision } from "./authorization-decision.js";
|
|
7
|
+
export type { AuthorizationReason, PolicyEffect, VerificationStatus } from "./enums.js";
|
|
8
|
+
export { AUTHORIZATION_REASONS, POLICY_EFFECTS, VERIFICATION_STATUSES } from "./enums.js";
|
|
9
|
+
export type { MandateClaims, SignedMandate } from "./mandate.js";
|
|
10
|
+
export { isMandateClaims, isSignedMandate } from "./mandate.js";
|
|
11
|
+
export type { PolicyRule } from "./policy-rule.js";
|
|
12
|
+
export { isPolicyRule } from "./policy-rule.js";
|
|
13
|
+
export type { ProofEvent } from "./proof-event.js";
|
|
14
|
+
export { isProofEvent } from "./proof-event.js";
|
|
15
|
+
export { isLabelPassed, passedLabels } from "./verification.js";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC1F,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { toSidecarAuthorizeRequest } from "./action-request.js";
|
|
2
|
+
export { isAuthorizationResponse } from "./decision.js";
|
|
3
|
+
export { isAuthorizationDecision } from "./authorization-decision.js";
|
|
4
|
+
export { AUTHORIZATION_REASONS, POLICY_EFFECTS, VERIFICATION_STATUSES } from "./enums.js";
|
|
5
|
+
export { isMandateClaims, isSignedMandate } from "./mandate.js";
|
|
6
|
+
export { isPolicyRule } from "./policy-rule.js";
|
|
7
|
+
export { isProofEvent } from "./proof-event.js";
|
|
8
|
+
export { isLabelPassed, passedLabels } from "./verification.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contracts/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE1F,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface MandateClaims {
|
|
2
|
+
mandate_id: string;
|
|
3
|
+
principal_id: string;
|
|
4
|
+
action: string;
|
|
5
|
+
resource: string;
|
|
6
|
+
intent_hash: string;
|
|
7
|
+
state_hash: string;
|
|
8
|
+
issued_at_epoch_s: number;
|
|
9
|
+
expires_at_epoch_s: number;
|
|
10
|
+
delegated_by?: string | null;
|
|
11
|
+
parent_mandate_id?: string | null;
|
|
12
|
+
delegation_depth?: number;
|
|
13
|
+
delegation_chain_hash?: string | null;
|
|
14
|
+
iss?: string | null;
|
|
15
|
+
aud?: string | null;
|
|
16
|
+
sub?: string | null;
|
|
17
|
+
iat?: number | null;
|
|
18
|
+
exp?: number | null;
|
|
19
|
+
nbf?: number | null;
|
|
20
|
+
jti?: string | null;
|
|
21
|
+
}
|
|
22
|
+
export interface SignedMandate {
|
|
23
|
+
token: string;
|
|
24
|
+
claims: MandateClaims;
|
|
25
|
+
signature: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function isMandateClaims(value: unknown): value is MandateClaims;
|
|
28
|
+
export declare function isSignedMandate(value: unknown): value is SignedMandate;
|
|
29
|
+
//# sourceMappingURL=mandate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mandate.d.ts","sourceRoot":"","sources":["../../../src/contracts/mandate.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAetE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAUtE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export function isMandateClaims(value) {
|
|
2
|
+
if (typeof value !== "object" || value === null) {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
const obj = value;
|
|
6
|
+
return (typeof obj.mandate_id === "string" &&
|
|
7
|
+
typeof obj.principal_id === "string" &&
|
|
8
|
+
typeof obj.action === "string" &&
|
|
9
|
+
typeof obj.resource === "string" &&
|
|
10
|
+
typeof obj.intent_hash === "string" &&
|
|
11
|
+
typeof obj.state_hash === "string" &&
|
|
12
|
+
typeof obj.issued_at_epoch_s === "number" &&
|
|
13
|
+
typeof obj.expires_at_epoch_s === "number");
|
|
14
|
+
}
|
|
15
|
+
export function isSignedMandate(value) {
|
|
16
|
+
if (typeof value !== "object" || value === null) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
const obj = value;
|
|
20
|
+
return (typeof obj.token === "string" &&
|
|
21
|
+
typeof obj.signature === "string" &&
|
|
22
|
+
isMandateClaims(obj.claims));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=mandate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mandate.js","sourceRoot":"","sources":["../../../src/contracts/mandate.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,CACL,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;QAClC,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;QACpC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAC9B,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAChC,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ;QACnC,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;QAClC,OAAO,GAAG,CAAC,iBAAiB,KAAK,QAAQ;QACzC,OAAO,GAAG,CAAC,kBAAkB,KAAK,QAAQ,CAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,CACL,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;QAC7B,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ;QACjC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PolicyEffect } from "./enums.js";
|
|
2
|
+
export interface PolicyRule {
|
|
3
|
+
name: string;
|
|
4
|
+
effect: PolicyEffect;
|
|
5
|
+
principals: string[];
|
|
6
|
+
actions: string[];
|
|
7
|
+
resources: string[];
|
|
8
|
+
required_labels?: string[];
|
|
9
|
+
max_delegation_depth?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function isPolicyRule(value: unknown): value is PolicyRule;
|
|
12
|
+
//# sourceMappingURL=policy-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-rule.d.ts","sourceRoot":"","sources":["../../../src/contracts/policy-rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAchE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function isPolicyRule(value) {
|
|
2
|
+
if (typeof value !== "object" || value === null) {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
const obj = value;
|
|
6
|
+
return (typeof obj.name === "string" &&
|
|
7
|
+
(obj.effect === "allow" || obj.effect === "deny") &&
|
|
8
|
+
isStringArray(obj.principals) &&
|
|
9
|
+
isStringArray(obj.actions) &&
|
|
10
|
+
isStringArray(obj.resources) &&
|
|
11
|
+
(obj.required_labels === undefined || isStringArray(obj.required_labels)) &&
|
|
12
|
+
(obj.max_delegation_depth === undefined || typeof obj.max_delegation_depth === "number"));
|
|
13
|
+
}
|
|
14
|
+
function isStringArray(value) {
|
|
15
|
+
return Array.isArray(value) && value.every((item) => typeof item === "string");
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=policy-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy-rule.js","sourceRoot":"","sources":["../../../src/contracts/policy-rule.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,CACL,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAC5B,CAAC,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC;QACjD,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QAC7B,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;QAC1B,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC;QAC5B,CAAC,GAAG,CAAC,eAAe,KAAK,SAAS,IAAI,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACzE,CAAC,GAAG,CAAC,oBAAoB,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,oBAAoB,KAAK,QAAQ,CAAC,CACzF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;AACjF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AuthorizationReason } from "./enums.js";
|
|
2
|
+
export interface ProofEvent {
|
|
3
|
+
event_type: string;
|
|
4
|
+
principal_id: string;
|
|
5
|
+
action: string;
|
|
6
|
+
resource: string;
|
|
7
|
+
reason: AuthorizationReason | string;
|
|
8
|
+
allowed: boolean;
|
|
9
|
+
mandate_id: string | null;
|
|
10
|
+
emitted_at_epoch_s: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function isProofEvent(value: unknown): value is ProofEvent;
|
|
13
|
+
//# sourceMappingURL=proof-event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proof-event.d.ts","sourceRoot":"","sources":["../../../src/contracts/proof-event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAehE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function isProofEvent(value) {
|
|
2
|
+
if (typeof value !== "object" || value === null) {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
const obj = value;
|
|
6
|
+
return (typeof obj.event_type === "string" &&
|
|
7
|
+
typeof obj.principal_id === "string" &&
|
|
8
|
+
typeof obj.action === "string" &&
|
|
9
|
+
typeof obj.resource === "string" &&
|
|
10
|
+
typeof obj.reason === "string" &&
|
|
11
|
+
typeof obj.allowed === "boolean" &&
|
|
12
|
+
(obj.mandate_id === null || typeof obj.mandate_id === "string") &&
|
|
13
|
+
typeof obj.emitted_at_epoch_s === "number");
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=proof-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proof-event.js","sourceRoot":"","sources":["../../../src/contracts/proof-event.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,OAAO,CACL,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;QAClC,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;QACpC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAC9B,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAChC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAC9B,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS;QAChC,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC;QAC/D,OAAO,GAAG,CAAC,kBAAkB,KAAK,QAAQ,CAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { VerificationEvidence } from "./action-request.js";
|
|
2
|
+
export declare function isLabelPassed(evidence: VerificationEvidence | undefined, label: string): boolean;
|
|
3
|
+
export declare function passedLabels(evidence: VerificationEvidence | undefined): string[];
|
|
4
|
+
//# sourceMappingURL=verification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../src/contracts/verification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,oBAAoB,GAAG,SAAS,EAC1C,KAAK,EAAE,MAAM,GACZ,OAAO,CAOT;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,GAAG,MAAM,EAAE,CAOjF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function isLabelPassed(evidence, label) {
|
|
2
|
+
if (!evidence?.signals || label.trim() === "") {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
return evidence.signals.some((signal) => signal.label === label && signal.status === "passed");
|
|
6
|
+
}
|
|
7
|
+
export function passedLabels(evidence) {
|
|
8
|
+
if (!evidence?.signals) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
return evidence.signals
|
|
12
|
+
.filter((signal) => signal.status === "passed")
|
|
13
|
+
.map((signal) => signal.label);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=verification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/contracts/verification.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAC3B,QAA0C,EAC1C,KAAa;IAEb,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAC1B,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAA0C;IACrE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO;SACpB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC;SAC9C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type AuthorityClientErrorCode = "timeout" | "network_error" | "protocol_error" | "bad_request" | "unauthorized" | "forbidden" | "server_error";
|
|
2
|
+
export declare class AuthorityClientError extends Error {
|
|
3
|
+
readonly code: AuthorityClientErrorCode;
|
|
4
|
+
readonly status?: number;
|
|
5
|
+
readonly details?: unknown;
|
|
6
|
+
constructor(message: string, options: {
|
|
7
|
+
code: AuthorityClientErrorCode;
|
|
8
|
+
status?: number;
|
|
9
|
+
details?: unknown;
|
|
10
|
+
cause?: unknown;
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAChC,SAAS,GACT,eAAe,GACf,gBAAgB,GAChB,aAAa,GACb,cAAc,GACd,WAAW,GACX,cAAc,CAAC;AAEnB,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;gBAGzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,IAAI,EAAE,wBAAwB,CAAC;QAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;CAWJ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export class AuthorityClientError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
status;
|
|
4
|
+
details;
|
|
5
|
+
constructor(message, options) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "AuthorityClientError";
|
|
8
|
+
this.code = options.code;
|
|
9
|
+
this.status = options.status;
|
|
10
|
+
this.details = options.details;
|
|
11
|
+
if (options.cause !== undefined) {
|
|
12
|
+
this.cause = options.cause;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,IAAI,CAA2B;IAC/B,MAAM,CAAU;IAChB,OAAO,CAAW;IAE3B,YACE,OAAe,EACf,OAKC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAoC,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9D,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { StateEvidence, VerificationEvidence, VerificationSignal } from "../contracts/action-request.js";
|
|
2
|
+
export type EvidenceHasher = (material: string) => string;
|
|
3
|
+
export interface TerminalSessionSnapshot {
|
|
4
|
+
session_id?: string;
|
|
5
|
+
terminal_id?: string;
|
|
6
|
+
cwd?: string;
|
|
7
|
+
command?: string;
|
|
8
|
+
transcript_hash?: string;
|
|
9
|
+
observed_at?: string;
|
|
10
|
+
confidence?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface DesktopAccessibilitySnapshot {
|
|
13
|
+
app_name?: string;
|
|
14
|
+
window_title?: string;
|
|
15
|
+
focused_role?: string;
|
|
16
|
+
focused_name?: string;
|
|
17
|
+
ui_tree_hash?: string;
|
|
18
|
+
observed_at?: string;
|
|
19
|
+
confidence?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface TerminalEvidenceProvider {
|
|
22
|
+
captureTerminalSnapshot(): Promise<TerminalSessionSnapshot> | TerminalSessionSnapshot;
|
|
23
|
+
}
|
|
24
|
+
export interface DesktopAccessibilityEvidenceProvider {
|
|
25
|
+
captureAccessibilitySnapshot(): Promise<DesktopAccessibilitySnapshot> | DesktopAccessibilitySnapshot;
|
|
26
|
+
}
|
|
27
|
+
export interface VerificationSignalProvider {
|
|
28
|
+
collectVerificationSignals(): Promise<VerificationSignal[]> | VerificationSignal[];
|
|
29
|
+
}
|
|
30
|
+
export interface TerminalStateEvidenceOptions {
|
|
31
|
+
snapshot: TerminalSessionSnapshot;
|
|
32
|
+
stateHash?: string;
|
|
33
|
+
schemaVersion?: string;
|
|
34
|
+
confidence?: number;
|
|
35
|
+
hasher?: EvidenceHasher;
|
|
36
|
+
}
|
|
37
|
+
export interface DesktopStateEvidenceOptions {
|
|
38
|
+
snapshot: DesktopAccessibilitySnapshot;
|
|
39
|
+
stateHash?: string;
|
|
40
|
+
schemaVersion?: string;
|
|
41
|
+
confidence?: number;
|
|
42
|
+
hasher?: EvidenceHasher;
|
|
43
|
+
}
|
|
44
|
+
export declare function buildTerminalStateEvidence(options: TerminalStateEvidenceOptions): StateEvidence;
|
|
45
|
+
export declare function buildDesktopAccessibilityStateEvidence(options: DesktopStateEvidenceOptions): StateEvidence;
|
|
46
|
+
export declare function collectVerificationEvidence(provider: VerificationSignalProvider): Promise<VerificationEvidence>;
|
|
47
|
+
//# sourceMappingURL=non-web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-web.d.ts","sourceRoot":"","sources":["../../../src/evidence/non-web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAE9G,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;AAE1D,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,wBAAwB;IACvC,uBAAuB,IAAI,OAAO,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,CAAC;CACvF;AAED,MAAM,WAAW,oCAAoC;IACnD,4BAA4B,IACxB,OAAO,CAAC,4BAA4B,CAAC,GACrC,4BAA4B,CAAC;CAClC;AAED,MAAM,WAAW,0BAA0B;IACzC,0BAA0B,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC;CACpF;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,uBAAuB,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,4BAA4B,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,4BAA4B,GAAG,aAAa,CAQ/F;AAED,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,2BAA2B,GACnC,aAAa,CAQf;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,0BAA0B,GACnC,OAAO,CAAC,oBAAoB,CAAC,CAE/B"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export function buildTerminalStateEvidence(options) {
|
|
2
|
+
const stateHash = options.stateHash ?? hashMaterial(materializeTerminalSnapshot(options.snapshot), options.hasher);
|
|
3
|
+
return {
|
|
4
|
+
source: "terminal",
|
|
5
|
+
state_hash: stateHash,
|
|
6
|
+
schema_version: options.schemaVersion ?? "terminal-v1",
|
|
7
|
+
confidence: options.confidence ?? options.snapshot.confidence,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export function buildDesktopAccessibilityStateEvidence(options) {
|
|
11
|
+
const stateHash = options.stateHash ?? hashMaterial(materializeDesktopSnapshot(options.snapshot), options.hasher);
|
|
12
|
+
return {
|
|
13
|
+
source: "desktop_accessibility",
|
|
14
|
+
state_hash: stateHash,
|
|
15
|
+
schema_version: options.schemaVersion ?? "desktop-a11y-v1",
|
|
16
|
+
confidence: options.confidence ?? options.snapshot.confidence,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export async function collectVerificationEvidence(provider) {
|
|
20
|
+
return { signals: await provider.collectVerificationSignals() };
|
|
21
|
+
}
|
|
22
|
+
function materializeTerminalSnapshot(snapshot) {
|
|
23
|
+
return JSON.stringify({
|
|
24
|
+
command: snapshot.command ?? "",
|
|
25
|
+
confidence: snapshot.confidence ?? "",
|
|
26
|
+
cwd: snapshot.cwd ?? "",
|
|
27
|
+
observed_at: snapshot.observed_at ?? "",
|
|
28
|
+
session_id: snapshot.session_id ?? "",
|
|
29
|
+
terminal_id: snapshot.terminal_id ?? "",
|
|
30
|
+
transcript_hash: snapshot.transcript_hash ?? "",
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function materializeDesktopSnapshot(snapshot) {
|
|
34
|
+
return JSON.stringify({
|
|
35
|
+
app_name: snapshot.app_name ?? "",
|
|
36
|
+
confidence: snapshot.confidence ?? "",
|
|
37
|
+
focused_name: snapshot.focused_name ?? "",
|
|
38
|
+
focused_role: snapshot.focused_role ?? "",
|
|
39
|
+
observed_at: snapshot.observed_at ?? "",
|
|
40
|
+
ui_tree_hash: snapshot.ui_tree_hash ?? "",
|
|
41
|
+
window_title: snapshot.window_title ?? "",
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function hashMaterial(material, hasher) {
|
|
45
|
+
if (hasher) {
|
|
46
|
+
return hasher(material);
|
|
47
|
+
}
|
|
48
|
+
return `sh_${fnv1a32Hex(material)}`;
|
|
49
|
+
}
|
|
50
|
+
function fnv1a32Hex(input) {
|
|
51
|
+
let hash = 0x811c9dc5;
|
|
52
|
+
for (let i = 0; i < input.length; i += 1) {
|
|
53
|
+
hash ^= input.charCodeAt(i);
|
|
54
|
+
hash = Math.imul(hash, 0x01000193);
|
|
55
|
+
}
|
|
56
|
+
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=non-web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-web.js","sourceRoot":"","sources":["../../../src/evidence/non-web.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { StateEvidence } from "../contracts/action-request.js";
|
|
2
|
+
export interface WebStateSnapshot {
|
|
3
|
+
url?: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
dom_hash?: string;
|
|
6
|
+
visible_text_hash?: string;
|
|
7
|
+
event_id?: string;
|
|
8
|
+
observed_at?: string;
|
|
9
|
+
dominant_group_key?: string;
|
|
10
|
+
snapshot_timestamp?: string;
|
|
11
|
+
confidence?: number;
|
|
12
|
+
confidence_reasons?: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface RuntimeSnapshotLike {
|
|
15
|
+
url?: string;
|
|
16
|
+
timestamp?: string;
|
|
17
|
+
dominant_group_key?: string;
|
|
18
|
+
diagnostics?: {
|
|
19
|
+
confidence?: number | null;
|
|
20
|
+
reasons?: string[];
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface WebStateEvidenceOptions {
|
|
24
|
+
snapshot: WebStateSnapshot;
|
|
25
|
+
stateHash?: string;
|
|
26
|
+
schemaVersion?: string;
|
|
27
|
+
confidence?: number;
|
|
28
|
+
hasher?: (material: string) => string;
|
|
29
|
+
}
|
|
30
|
+
export declare function buildWebStateEvidence(options: WebStateEvidenceOptions): StateEvidence;
|
|
31
|
+
export declare function webStateSnapshotFromRuntimeSnapshot(snapshot: RuntimeSnapshotLike): WebStateSnapshot;
|
|
32
|
+
export declare function buildWebStateEvidenceFromRuntimeSnapshot(snapshot: RuntimeSnapshotLike, options?: Omit<WebStateEvidenceOptions, "snapshot" | "confidence">): StateEvidence;
|
|
33
|
+
//# sourceMappingURL=web-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-state.d.ts","sourceRoot":"","sources":["../../../src/evidence/web-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE;QACZ,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa,CAQrF;AAED,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,mBAAmB,GAAG,gBAAgB,CASnG;AAED,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,CAAC,EAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,YAAY,CAAC,GACjE,aAAa,CASf"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export function buildWebStateEvidence(options) {
|
|
2
|
+
const stateHash = options.stateHash ?? hashWebSnapshotMaterial(materializeSnapshot(options.snapshot), options.hasher);
|
|
3
|
+
return {
|
|
4
|
+
source: "browser",
|
|
5
|
+
state_hash: stateHash,
|
|
6
|
+
schema_version: options.schemaVersion ?? "web-v1",
|
|
7
|
+
confidence: options.confidence ?? options.snapshot.confidence,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export function webStateSnapshotFromRuntimeSnapshot(snapshot) {
|
|
11
|
+
return {
|
|
12
|
+
url: snapshot.url,
|
|
13
|
+
observed_at: snapshot.timestamp,
|
|
14
|
+
snapshot_timestamp: snapshot.timestamp,
|
|
15
|
+
dominant_group_key: snapshot.dominant_group_key,
|
|
16
|
+
confidence: snapshot.diagnostics?.confidence ?? undefined,
|
|
17
|
+
confidence_reasons: snapshot.diagnostics?.reasons,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function buildWebStateEvidenceFromRuntimeSnapshot(snapshot, options) {
|
|
21
|
+
const mapped = webStateSnapshotFromRuntimeSnapshot(snapshot);
|
|
22
|
+
return buildWebStateEvidence({
|
|
23
|
+
snapshot: mapped,
|
|
24
|
+
stateHash: options?.stateHash,
|
|
25
|
+
schemaVersion: options?.schemaVersion,
|
|
26
|
+
hasher: options?.hasher,
|
|
27
|
+
confidence: mapped.confidence,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function materializeSnapshot(snapshot) {
|
|
31
|
+
return JSON.stringify({
|
|
32
|
+
confidence: snapshot.confidence ?? "",
|
|
33
|
+
confidence_reasons: snapshot.confidence_reasons ?? [],
|
|
34
|
+
dom_hash: snapshot.dom_hash ?? "",
|
|
35
|
+
dominant_group_key: snapshot.dominant_group_key ?? "",
|
|
36
|
+
event_id: snapshot.event_id ?? "",
|
|
37
|
+
observed_at: snapshot.observed_at ?? "",
|
|
38
|
+
snapshot_timestamp: snapshot.snapshot_timestamp ?? "",
|
|
39
|
+
title: snapshot.title ?? "",
|
|
40
|
+
url: snapshot.url ?? "",
|
|
41
|
+
visible_text_hash: snapshot.visible_text_hash ?? "",
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function hashWebSnapshotMaterial(material, hasher) {
|
|
45
|
+
if (hasher) {
|
|
46
|
+
return hasher(material);
|
|
47
|
+
}
|
|
48
|
+
return `sh_${fnv1a32Hex(material)}`;
|
|
49
|
+
}
|
|
50
|
+
function fnv1a32Hex(input) {
|
|
51
|
+
let hash = 0x811c9dc5;
|
|
52
|
+
for (let i = 0; i < input.length; i += 1) {
|
|
53
|
+
hash ^= input.charCodeAt(i);
|
|
54
|
+
hash = Math.imul(hash, 0x01000193);
|
|
55
|
+
}
|
|
56
|
+
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=web-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-state.js","sourceRoot":"","sources":["../../../src/evidence/web-state.ts"],"names":[],"mappings":"AAiCA,MAAM,UAAU,qBAAqB,CAAC,OAAgC;IACpE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,uBAAuB,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtH,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,SAAS;QACrB,cAAc,EAAE,OAAO,CAAC,aAAa,IAAI,QAAQ;QACjD,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,QAA6B;IAC/E,OAAO;QACL,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,WAAW,EAAE,QAAQ,CAAC,SAAS;QAC/B,kBAAkB,EAAE,QAAQ,CAAC,SAAS;QACtC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;QAC/C,UAAU,EAAE,QAAQ,CAAC,WAAW,EAAE,UAAU,IAAI,SAAS;QACzD,kBAAkB,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO;KAClD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wCAAwC,CACtD,QAA6B,EAC7B,OAAkE;IAElE,MAAM,MAAM,GAAG,mCAAmC,CAAC,QAAQ,CAAC,CAAC;IAC7D,OAAO,qBAAqB,CAAC;QAC3B,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,aAAa,EAAE,OAAO,EAAE,aAAa;QACrC,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,QAA0B;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE;QACrC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,IAAI,EAAE;QACrD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;QACjC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,IAAI,EAAE;QACrD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE;QACjC,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;QACvC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,IAAI,EAAE;QACrD,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;QAC3B,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,EAAE;QACvB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,IAAI,EAAE;KACpD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB,EAAE,MAAqC;IACtF,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ActionRequest } from "../contracts/action-request.js";
|
|
2
|
+
import type { PolicyEngine } from "../policy/engine.js";
|
|
3
|
+
import type { AuthorizationDecision, SignedMandate } from "../types.js";
|
|
4
|
+
export declare class AuthorizationDeniedError extends Error {
|
|
5
|
+
readonly decision: AuthorizationDecision;
|
|
6
|
+
constructor(decision: AuthorizationDecision);
|
|
7
|
+
}
|
|
8
|
+
export interface ActionExecutionResult<T> {
|
|
9
|
+
value: T;
|
|
10
|
+
decision: AuthorizationDecision;
|
|
11
|
+
mandate: SignedMandate | null;
|
|
12
|
+
}
|
|
13
|
+
export interface ActionGuardOptions {
|
|
14
|
+
policyEngine: PolicyEngine;
|
|
15
|
+
mandateIssuer?: (request: ActionRequest) => SignedMandate;
|
|
16
|
+
}
|
|
17
|
+
export declare class ActionGuard {
|
|
18
|
+
private readonly policyEngine;
|
|
19
|
+
private readonly mandateIssuer?;
|
|
20
|
+
constructor(options: ActionGuardOptions);
|
|
21
|
+
authorize(request: ActionRequest, delegationDepth?: number): AuthorizationDecision;
|
|
22
|
+
enforce<T>(action: () => T, request: ActionRequest, delegationDepth?: number): ActionExecutionResult<T>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=action-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-guard.d.ts","sourceRoot":"","sources":["../../../src/guard/action-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAExE,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;gBAE7B,QAAQ,EAAE,qBAAqB;CAK5C;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,qBAAqB,CAAC;IAChC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,aAAa,CAAC;CAC3D;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAA4C;gBAE/D,OAAO,EAAE,kBAAkB;IAKvC,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,SAAI,GAAG,qBAAqB;IAsB7E,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,SAAI,GAAG,qBAAqB,CAAC,CAAC,CAAC;CAYnG"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export class AuthorizationDeniedError extends Error {
|
|
2
|
+
decision;
|
|
3
|
+
constructor(decision) {
|
|
4
|
+
super(`authority denied: ${decision.reason}`);
|
|
5
|
+
this.name = "AuthorizationDeniedError";
|
|
6
|
+
this.decision = decision;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class ActionGuard {
|
|
10
|
+
policyEngine;
|
|
11
|
+
mandateIssuer;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.policyEngine = options.policyEngine;
|
|
14
|
+
this.mandateIssuer = options.mandateIssuer;
|
|
15
|
+
}
|
|
16
|
+
authorize(request, delegationDepth = 0) {
|
|
17
|
+
const evaluation = this.policyEngine.evaluate(request, delegationDepth);
|
|
18
|
+
if (!evaluation.allowed) {
|
|
19
|
+
return {
|
|
20
|
+
allowed: false,
|
|
21
|
+
reason: evaluation.reason,
|
|
22
|
+
violated_rule: evaluation.matched_rule ?? null,
|
|
23
|
+
missing_labels: evaluation.missing_labels ?? [],
|
|
24
|
+
mandate: null,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const mandate = this.mandateIssuer ? this.mandateIssuer(request) : null;
|
|
28
|
+
return {
|
|
29
|
+
allowed: true,
|
|
30
|
+
reason: "allowed",
|
|
31
|
+
violated_rule: evaluation.matched_rule ?? null,
|
|
32
|
+
missing_labels: [],
|
|
33
|
+
mandate,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
enforce(action, request, delegationDepth = 0) {
|
|
37
|
+
const decision = this.authorize(request, delegationDepth);
|
|
38
|
+
if (!decision.allowed) {
|
|
39
|
+
throw new AuthorizationDeniedError(decision);
|
|
40
|
+
}
|
|
41
|
+
const value = action();
|
|
42
|
+
return {
|
|
43
|
+
value,
|
|
44
|
+
decision,
|
|
45
|
+
mandate: decision.mandate ?? null,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=action-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-guard.js","sourceRoot":"","sources":["../../../src/guard/action-guard.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,QAAQ,CAAwB;IAEzC,YAAY,QAA+B;QACzC,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAaD,MAAM,OAAO,WAAW;IACL,YAAY,CAAe;IAC3B,aAAa,CAA6C;IAE3E,YAAY,OAA2B;QACrC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC7C,CAAC;IAED,SAAS,CAAC,OAAsB,EAAE,eAAe,GAAG,CAAC;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,aAAa,EAAE,UAAU,CAAC,YAAY,IAAI,IAAI;gBAC9C,cAAc,EAAE,UAAU,CAAC,cAAc,IAAI,EAAE;gBAC/C,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,UAAU,CAAC,YAAY,IAAI,IAAI;YAC9C,cAAc,EAAE,EAAE;YAClB,OAAO;SACR,CAAC;IACJ,CAAC;IAED,OAAO,CAAI,MAAe,EAAE,OAAsB,EAAE,eAAe,GAAG,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;QACvB,OAAO;YACL,KAAK;YACL,QAAQ;YACR,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI;SAClC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type AuthorizationResponse, type AuthorizeRequest } from "./types.js";
|
|
2
|
+
export type { ActionRequest, ActionSpec, AuthorizationDecision, AuthorizationRequest, AuthorizationReason, AuthorizeRequest, AuthorizationResponse, MandateClaims, PolicyEffect, PolicyRule, PrincipalRef, ProofEvent, SidecarAuthorizeRequest, SignedMandate, StateEvidence, VerificationEvidence, VerificationSignal, VerificationStatus, } from "./types.js";
|
|
3
|
+
export { AuthorityClientError, type AuthorityClientErrorCode } from "./errors.js";
|
|
4
|
+
export { AUTHORIZATION_REASONS, POLICY_EFFECTS, VERIFICATION_STATUSES, isAuthorizationDecision, isMandateClaims, isLabelPassed, isPolicyRule, isProofEvent, passedLabels, isSignedMandate, toSidecarAuthorizeRequest, } from "./types.js";
|
|
5
|
+
export { effectiveMaxDelegationDepth, globMatch, matchesRule } from "./policy/matching.js";
|
|
6
|
+
export { PolicyEngine, type PolicyMatchResult } from "./policy/engine.js";
|
|
7
|
+
export { ActionGuard, AuthorizationDeniedError, type ActionExecutionResult, type ActionGuardOptions, } from "./guard/action-guard.js";
|
|
8
|
+
export { guardedFileRead, guardedFileWrite, guardedHttp, guardedShell, type GuardedFileReadOptions, type GuardedFileWriteOptions, type GuardedHttpOptions, type GuardedShellOptions, } from "./wrappers/sensitive-operations.js";
|
|
9
|
+
export { buildWebStateEvidenceFromRuntimeSnapshot, buildWebStateEvidence, type RuntimeSnapshotLike, type WebStateEvidenceOptions, type WebStateSnapshot, webStateSnapshotFromRuntimeSnapshot, } from "./evidence/web-state.js";
|
|
10
|
+
export { buildDesktopAccessibilityStateEvidence, buildTerminalStateEvidence, collectVerificationEvidence, type DesktopAccessibilityEvidenceProvider, type DesktopAccessibilitySnapshot, type DesktopStateEvidenceOptions, type EvidenceHasher, type TerminalEvidenceProvider, type TerminalSessionSnapshot, type TerminalStateEvidenceOptions, type VerificationSignalProvider, } from "./evidence/non-web.js";
|
|
11
|
+
export interface AuthorityClientOptions {
|
|
12
|
+
baseUrl: string;
|
|
13
|
+
timeoutMs?: number;
|
|
14
|
+
maxRetries?: number;
|
|
15
|
+
backoffInitialMs?: number;
|
|
16
|
+
endpointPath?: "/v1/authorize" | "/authorize";
|
|
17
|
+
}
|
|
18
|
+
export declare class AuthorityClient {
|
|
19
|
+
private readonly baseUrl;
|
|
20
|
+
private readonly timeoutMs;
|
|
21
|
+
private readonly maxRetries;
|
|
22
|
+
private readonly backoffInitialMs;
|
|
23
|
+
private readonly endpointPath;
|
|
24
|
+
constructor(options: AuthorityClientOptions);
|
|
25
|
+
authorize(request: AuthorizeRequest): Promise<AuthorizationResponse>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|