@openleash/core 0.0.3 → 0.2.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 (64) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +13 -29
  3. package/dist/audit.d.ts +11 -0
  4. package/dist/audit.d.ts.map +1 -0
  5. package/dist/audit.js +76 -0
  6. package/dist/audit.js.map +1 -0
  7. package/dist/canonicalize.d.ts +5 -0
  8. package/dist/canonicalize.d.ts.map +1 -0
  9. package/dist/canonicalize.js +51 -0
  10. package/dist/canonicalize.js.map +1 -0
  11. package/dist/constraints.d.ts +3 -0
  12. package/dist/constraints.d.ts.map +1 -0
  13. package/dist/constraints.js +51 -0
  14. package/dist/constraints.js.map +1 -0
  15. package/dist/engine.d.ts +21 -0
  16. package/dist/engine.d.ts.map +1 -0
  17. package/dist/engine.js +139 -0
  18. package/dist/engine.js.map +1 -0
  19. package/dist/expression.d.ts +3 -0
  20. package/dist/expression.d.ts.map +1 -0
  21. package/dist/expression.js +60 -0
  22. package/dist/expression.js.map +1 -0
  23. package/dist/index.d.ts +15 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +31 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/jsonpath.d.ts +8 -0
  28. package/dist/jsonpath.d.ts.map +1 -0
  29. package/dist/jsonpath.js +48 -0
  30. package/dist/jsonpath.js.map +1 -0
  31. package/dist/keys.d.ts +9 -0
  32. package/dist/keys.d.ts.map +1 -0
  33. package/dist/keys.js +80 -0
  34. package/dist/keys.js.map +1 -0
  35. package/dist/nonce-cache.d.ts +17 -0
  36. package/dist/nonce-cache.d.ts.map +1 -0
  37. package/dist/nonce-cache.js +53 -0
  38. package/dist/nonce-cache.js.map +1 -0
  39. package/dist/obligations.d.ts +9 -0
  40. package/dist/obligations.d.ts.map +1 -0
  41. package/dist/obligations.js +89 -0
  42. package/dist/obligations.js.map +1 -0
  43. package/dist/policy-parser.d.ts +192 -0
  44. package/dist/policy-parser.d.ts.map +1 -0
  45. package/dist/policy-parser.js +153 -0
  46. package/dist/policy-parser.js.map +1 -0
  47. package/dist/signing.d.ts +34 -0
  48. package/dist/signing.d.ts.map +1 -0
  49. package/dist/signing.js +79 -0
  50. package/dist/signing.js.map +1 -0
  51. package/dist/state.d.ts +12 -0
  52. package/dist/state.d.ts.map +1 -0
  53. package/dist/state.js +118 -0
  54. package/dist/state.js.map +1 -0
  55. package/dist/tokens.d.ts +38 -0
  56. package/dist/tokens.d.ts.map +1 -0
  57. package/dist/tokens.js +56 -0
  58. package/dist/tokens.js.map +1 -0
  59. package/dist/types.d.ts +276 -0
  60. package/dist/types.d.ts.map +1 -0
  61. package/dist/types.js +70 -0
  62. package/dist/types.js.map +1 -0
  63. package/package.json +20 -19
  64. package/index.js +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,aAAa,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC,CA8BD;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,aAAa,EAAE,GACpB,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBpE"}
package/dist/tokens.js ADDED
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.issueProofToken = issueProofToken;
4
+ exports.verifyProofToken = verifyProofToken;
5
+ const paseto_1 = require("paseto");
6
+ const keys_js_1 = require("./keys.js");
7
+ async function issueProofToken(params) {
8
+ const now = new Date();
9
+ const exp = new Date(now.getTime() + params.ttlSeconds * 1000);
10
+ const claims = {
11
+ iss: 'openleash',
12
+ kid: params.key.kid,
13
+ iat: now.toISOString(),
14
+ exp: exp.toISOString(),
15
+ decision_id: params.decisionId,
16
+ owner_principal_id: params.ownerPrincipalId,
17
+ agent_id: params.agentId,
18
+ action_type: params.actionType,
19
+ action_hash: params.actionHash,
20
+ matched_rule_id: params.matchedRuleId,
21
+ };
22
+ if (params.trustProfile) {
23
+ claims.trust_profile = params.trustProfile;
24
+ }
25
+ if (params.constraintsSnapshot) {
26
+ claims.constraints_snapshot = params.constraintsSnapshot;
27
+ }
28
+ const privateKey = (0, keys_js_1.getPrivateKeyObject)(params.key);
29
+ const token = await paseto_1.V4.sign({ ...claims }, privateKey, {
30
+ expiresIn: `${params.ttlSeconds} seconds`,
31
+ });
32
+ return { token, expiresAt: exp.toISOString(), claims };
33
+ }
34
+ async function verifyProofToken(token, keys) {
35
+ // Try each key
36
+ for (const key of keys) {
37
+ try {
38
+ const publicKey = (0, keys_js_1.getPublicKeyObject)(key);
39
+ const payload = await paseto_1.V4.verify(token, publicKey);
40
+ // Check expiration
41
+ if (payload.exp) {
42
+ const expDate = new Date(payload.exp);
43
+ if (expDate.getTime() < Date.now()) {
44
+ return { valid: false, reason: 'Token expired', claims: payload };
45
+ }
46
+ }
47
+ return { valid: true, claims: payload };
48
+ }
49
+ catch {
50
+ // Try next key
51
+ continue;
52
+ }
53
+ }
54
+ return { valid: false, reason: 'No matching key found or invalid signature' };
55
+ }
56
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":";;AAiCA,0CAkCC;AAED,4CA0BC;AA9FD,mCAA4B;AAE5B,uCAAoE;AA8B7D,KAAK,UAAU,eAAe,CAAC,MAAwB;IAK5D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAgB;QAC1B,GAAG,EAAE,WAAW;QAChB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG;QACnB,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE;QACtB,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE;QACtB,WAAW,EAAE,MAAM,CAAC,UAAU;QAC9B,kBAAkB,EAAE,MAAM,CAAC,gBAAgB;QAC3C,QAAQ,EAAE,MAAM,CAAC,OAAO;QACxB,WAAW,EAAE,MAAM,CAAC,UAAU;QAC9B,WAAW,EAAE,MAAM,CAAC,UAAU;QAC9B,eAAe,EAAE,MAAM,CAAC,aAAa;KACtC,CAAC;IAEF,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC/B,MAAM,CAAC,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;IAC3D,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,6BAAmB,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,WAAE,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAwC,EAAE,UAAU,EAAE;QAC3F,SAAS,EAAE,GAAG,MAAM,CAAC,UAAU,UAAU;KAC1C,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC;AACzD,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,IAAqB;IAErB,eAAe;IACf,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAA,4BAAkB,EAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,MAAM,WAAE,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAgB,CAAC;YAEjE,mBAAmB;YACnB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;oBACnC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpE,CAAC;YACH,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;YACf,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,4CAA4C,EAAE,CAAC;AAChF,CAAC"}
@@ -0,0 +1,276 @@
1
+ import { z } from 'zod';
2
+ export declare const DecisionResult: z.ZodEnum<["ALLOW", "DENY", "REQUIRE_APPROVAL", "REQUIRE_STEP_UP", "REQUIRE_DEPOSIT"]>;
3
+ export type DecisionResult = z.infer<typeof DecisionResult>;
4
+ export declare const ObligationType: z.ZodEnum<["HUMAN_APPROVAL", "STEP_UP_AUTH", "DEPOSIT", "COUNTERPARTY_ATTESTATION"]>;
5
+ export type ObligationType = z.infer<typeof ObligationType>;
6
+ export declare const ObligationStatus: z.ZodEnum<["PENDING", "FULFILLED", "WAIVED"]>;
7
+ export type ObligationStatus = z.infer<typeof ObligationStatus>;
8
+ export declare const PrincipalType: z.ZodEnum<["HUMAN", "ORG"]>;
9
+ export type PrincipalType = z.infer<typeof PrincipalType>;
10
+ export declare const PrincipalStatus: z.ZodEnum<["ACTIVE", "SUSPENDED", "REVOKED"]>;
11
+ export type PrincipalStatus = z.infer<typeof PrincipalStatus>;
12
+ export declare const AgentStatus: z.ZodEnum<["ACTIVE", "REVOKED"]>;
13
+ export type AgentStatus = z.infer<typeof AgentStatus>;
14
+ export declare const TrustProfile: z.ZodEnum<["LOW", "MEDIUM", "HIGH", "REGULATED"]>;
15
+ export type TrustProfile = z.infer<typeof TrustProfile>;
16
+ export declare const AssuranceLevel: z.ZodEnum<["LOW", "SUBSTANTIAL", "HIGH"]>;
17
+ export type AssuranceLevel = z.infer<typeof AssuranceLevel>;
18
+ export declare const ActionRequestSchema: z.ZodObject<{
19
+ action_id: z.ZodString;
20
+ action_type: z.ZodString;
21
+ requested_at: z.ZodString;
22
+ principal: z.ZodObject<{
23
+ agent_id: z.ZodString;
24
+ }, "strip", z.ZodTypeAny, {
25
+ agent_id: string;
26
+ }, {
27
+ agent_id: string;
28
+ }>;
29
+ subject: z.ZodObject<{
30
+ principal_id: z.ZodString;
31
+ }, "strip", z.ZodTypeAny, {
32
+ principal_id: string;
33
+ }, {
34
+ principal_id: string;
35
+ }>;
36
+ relying_party: z.ZodOptional<z.ZodObject<{
37
+ rp_id: z.ZodOptional<z.ZodString>;
38
+ domain: z.ZodOptional<z.ZodString>;
39
+ trust_profile: z.ZodOptional<z.ZodEnum<["LOW", "MEDIUM", "HIGH", "REGULATED"]>>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ rp_id?: string | undefined;
42
+ domain?: string | undefined;
43
+ trust_profile?: "LOW" | "MEDIUM" | "HIGH" | "REGULATED" | undefined;
44
+ }, {
45
+ rp_id?: string | undefined;
46
+ domain?: string | undefined;
47
+ trust_profile?: "LOW" | "MEDIUM" | "HIGH" | "REGULATED" | undefined;
48
+ }>>;
49
+ payload: z.ZodRecord<z.ZodString, z.ZodUnknown>;
50
+ }, "strip", z.ZodTypeAny, {
51
+ action_id: string;
52
+ action_type: string;
53
+ requested_at: string;
54
+ principal: {
55
+ agent_id: string;
56
+ };
57
+ subject: {
58
+ principal_id: string;
59
+ };
60
+ payload: Record<string, unknown>;
61
+ relying_party?: {
62
+ rp_id?: string | undefined;
63
+ domain?: string | undefined;
64
+ trust_profile?: "LOW" | "MEDIUM" | "HIGH" | "REGULATED" | undefined;
65
+ } | undefined;
66
+ }, {
67
+ action_id: string;
68
+ action_type: string;
69
+ requested_at: string;
70
+ principal: {
71
+ agent_id: string;
72
+ };
73
+ subject: {
74
+ principal_id: string;
75
+ };
76
+ payload: Record<string, unknown>;
77
+ relying_party?: {
78
+ rp_id?: string | undefined;
79
+ domain?: string | undefined;
80
+ trust_profile?: "LOW" | "MEDIUM" | "HIGH" | "REGULATED" | undefined;
81
+ } | undefined;
82
+ }>;
83
+ export type ActionRequest = z.infer<typeof ActionRequestSchema>;
84
+ export declare const ObligationSchema: z.ZodObject<{
85
+ obligation_id: z.ZodString;
86
+ type: z.ZodEnum<["HUMAN_APPROVAL", "STEP_UP_AUTH", "DEPOSIT", "COUNTERPARTY_ATTESTATION"]>;
87
+ status: z.ZodEnum<["PENDING", "FULFILLED", "WAIVED"]>;
88
+ details_json: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
89
+ }, "strip", z.ZodTypeAny, {
90
+ type: "HUMAN_APPROVAL" | "STEP_UP_AUTH" | "DEPOSIT" | "COUNTERPARTY_ATTESTATION";
91
+ status: "PENDING" | "FULFILLED" | "WAIVED";
92
+ obligation_id: string;
93
+ details_json?: Record<string, unknown> | undefined;
94
+ }, {
95
+ type: "HUMAN_APPROVAL" | "STEP_UP_AUTH" | "DEPOSIT" | "COUNTERPARTY_ATTESTATION";
96
+ status: "PENDING" | "FULFILLED" | "WAIVED";
97
+ obligation_id: string;
98
+ details_json?: Record<string, unknown> | undefined;
99
+ }>;
100
+ export type Obligation = z.infer<typeof ObligationSchema>;
101
+ export interface AuthorizeResponse {
102
+ decision_id: string;
103
+ action_id: string;
104
+ action_hash: string;
105
+ result: DecisionResult;
106
+ matched_rule_id: string | null;
107
+ reason: string;
108
+ proof_token: string | null;
109
+ proof_expires_at: string | null;
110
+ obligations: Obligation[];
111
+ }
112
+ export interface PolicyExprMatch {
113
+ path: string;
114
+ op: 'eq' | 'neq' | 'in' | 'nin' | 'lt' | 'lte' | 'gt' | 'gte' | 'regex' | 'exists';
115
+ value?: unknown;
116
+ }
117
+ export type PolicyExpr = {
118
+ all: PolicyExpr[];
119
+ } | {
120
+ any: PolicyExpr[];
121
+ } | {
122
+ not: PolicyExpr;
123
+ } | {
124
+ match: PolicyExprMatch;
125
+ };
126
+ export interface PolicyConstraints {
127
+ amount_max?: number;
128
+ amount_min?: number;
129
+ currency?: string[];
130
+ merchant_domain?: string[];
131
+ allowed_domains?: string[];
132
+ blocked_domains?: string[];
133
+ }
134
+ export interface PolicyRequirements {
135
+ min_assurance_level?: 'LOW' | 'SUBSTANTIAL' | 'HIGH';
136
+ credential_scheme?: string;
137
+ }
138
+ export interface PolicyObligation {
139
+ type: string;
140
+ params?: Record<string, unknown>;
141
+ }
142
+ export interface PolicyProof {
143
+ required?: boolean;
144
+ ttl_seconds?: number;
145
+ }
146
+ export interface PolicyRule {
147
+ id: string;
148
+ effect: 'allow' | 'deny';
149
+ action: string;
150
+ description?: string;
151
+ when?: PolicyExpr;
152
+ constraints?: PolicyConstraints;
153
+ requirements?: PolicyRequirements;
154
+ obligations?: PolicyObligation[];
155
+ proof?: PolicyProof;
156
+ }
157
+ export interface Policy {
158
+ version: 1;
159
+ default: 'allow' | 'deny';
160
+ rules: PolicyRule[];
161
+ }
162
+ export interface RuleTrace {
163
+ rule_id: string;
164
+ pattern_match: boolean;
165
+ when_match: boolean | null;
166
+ constraints_match: boolean | null;
167
+ final_match: boolean;
168
+ }
169
+ export interface EvaluationTrace {
170
+ rules: RuleTrace[];
171
+ }
172
+ export interface StateKeyEntry {
173
+ kid: string;
174
+ path: string;
175
+ }
176
+ export interface StateOwnerEntry {
177
+ owner_principal_id: string;
178
+ path: string;
179
+ }
180
+ export interface StateAgentEntry {
181
+ agent_principal_id: string;
182
+ agent_id: string;
183
+ owner_principal_id: string;
184
+ path: string;
185
+ }
186
+ export interface StatePolicyEntry {
187
+ policy_id: string;
188
+ owner_principal_id: string;
189
+ applies_to_agent_principal_id: string | null;
190
+ path: string;
191
+ }
192
+ export interface StateBinding {
193
+ owner_principal_id: string;
194
+ policy_id: string;
195
+ applies_to_agent_principal_id: string | null;
196
+ }
197
+ export interface StateData {
198
+ version: 1;
199
+ created_at: string;
200
+ server_keys: {
201
+ active_kid: string;
202
+ keys: StateKeyEntry[];
203
+ };
204
+ owners: StateOwnerEntry[];
205
+ agents: StateAgentEntry[];
206
+ policies: StatePolicyEntry[];
207
+ bindings: StateBinding[];
208
+ }
209
+ export interface ServerKeyFile {
210
+ kid: string;
211
+ public_key_b64: string;
212
+ private_key_b64: string;
213
+ created_at: string;
214
+ revoked_at: string | null;
215
+ }
216
+ export interface OwnerFrontmatter {
217
+ owner_principal_id: string;
218
+ principal_type: PrincipalType;
219
+ display_name: string;
220
+ status: PrincipalStatus;
221
+ attributes: Record<string, unknown>;
222
+ created_at: string;
223
+ }
224
+ export interface AgentFrontmatter {
225
+ agent_principal_id: string;
226
+ agent_id: string;
227
+ owner_principal_id: string;
228
+ public_key_b64: string;
229
+ status: AgentStatus;
230
+ attributes: Record<string, unknown>;
231
+ created_at: string;
232
+ revoked_at: string | null;
233
+ }
234
+ export declare const AuditEventType: z.ZodEnum<["OWNER_CREATED", "AGENT_CHALLENGE_ISSUED", "AGENT_REGISTERED", "POLICY_UPSERTED", "AUTHORIZE_CALLED", "DECISION_CREATED", "PROOF_ISSUED", "PROOF_VERIFIED", "PLAYGROUND_RUN", "KEY_ROTATED", "SERVER_STARTED", "POLICY_UPDATED", "POLICY_DELETED", "POLICY_UNBOUND"]>;
235
+ export type AuditEventType = z.infer<typeof AuditEventType>;
236
+ export interface AuditEvent {
237
+ event_id: string;
238
+ timestamp: string;
239
+ event_type: string;
240
+ principal_id: string | null;
241
+ action_id: string | null;
242
+ decision_id: string | null;
243
+ metadata_json: Record<string, unknown>;
244
+ }
245
+ export interface OpenleashConfig {
246
+ server: {
247
+ bind_address: string;
248
+ };
249
+ admin: {
250
+ mode: 'localhost' | 'token' | 'localhost_or_token';
251
+ token: string;
252
+ allow_remote_admin: boolean;
253
+ };
254
+ security: {
255
+ nonce_ttl_seconds: number;
256
+ clock_skew_seconds: number;
257
+ };
258
+ tokens: {
259
+ format: 'paseto_v4_public';
260
+ default_ttl_seconds: number;
261
+ max_ttl_seconds: number;
262
+ };
263
+ gui?: {
264
+ enabled: boolean;
265
+ };
266
+ }
267
+ export interface RegistrationChallenge {
268
+ challenge_id: string;
269
+ challenge_b64: string;
270
+ agent_id: string;
271
+ agent_pubkey_b64: string;
272
+ owner_principal_id?: string;
273
+ agent_attributes_json?: Record<string, unknown>;
274
+ expires_at: string;
275
+ }
276
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuditEventType = exports.ObligationSchema = exports.ActionRequestSchema = exports.AssuranceLevel = exports.TrustProfile = exports.AgentStatus = exports.PrincipalStatus = exports.PrincipalType = exports.ObligationStatus = exports.ObligationType = exports.DecisionResult = void 0;
4
+ const zod_1 = require("zod");
5
+ // ─── Decision results ────────────────────────────────────────────────
6
+ exports.DecisionResult = zod_1.z.enum([
7
+ 'ALLOW',
8
+ 'DENY',
9
+ 'REQUIRE_APPROVAL',
10
+ 'REQUIRE_STEP_UP',
11
+ 'REQUIRE_DEPOSIT',
12
+ ]);
13
+ // ─── Obligation types ────────────────────────────────────────────────
14
+ exports.ObligationType = zod_1.z.enum([
15
+ 'HUMAN_APPROVAL',
16
+ 'STEP_UP_AUTH',
17
+ 'DEPOSIT',
18
+ 'COUNTERPARTY_ATTESTATION',
19
+ ]);
20
+ exports.ObligationStatus = zod_1.z.enum(['PENDING', 'FULFILLED', 'WAIVED']);
21
+ // ─── Principal types ─────────────────────────────────────────────────
22
+ exports.PrincipalType = zod_1.z.enum(['HUMAN', 'ORG']);
23
+ exports.PrincipalStatus = zod_1.z.enum(['ACTIVE', 'SUSPENDED', 'REVOKED']);
24
+ exports.AgentStatus = zod_1.z.enum(['ACTIVE', 'REVOKED']);
25
+ // ─── Trust profiles ──────────────────────────────────────────────────
26
+ exports.TrustProfile = zod_1.z.enum(['LOW', 'MEDIUM', 'HIGH', 'REGULATED']);
27
+ exports.AssuranceLevel = zod_1.z.enum(['LOW', 'SUBSTANTIAL', 'HIGH']);
28
+ // ─── ActionRequest ───────────────────────────────────────────────────
29
+ exports.ActionRequestSchema = zod_1.z.object({
30
+ action_id: zod_1.z.string().uuid(),
31
+ action_type: zod_1.z.string().min(1),
32
+ requested_at: zod_1.z.string(), // RFC3339
33
+ principal: zod_1.z.object({
34
+ agent_id: zod_1.z.string().min(1),
35
+ }),
36
+ subject: zod_1.z.object({
37
+ principal_id: zod_1.z.string().uuid(),
38
+ }),
39
+ relying_party: zod_1.z.object({
40
+ rp_id: zod_1.z.string().uuid().optional(),
41
+ domain: zod_1.z.string().optional(),
42
+ trust_profile: exports.TrustProfile.optional(),
43
+ }).optional(),
44
+ payload: zod_1.z.record(zod_1.z.unknown()),
45
+ });
46
+ // ─── Obligation ──────────────────────────────────────────────────────
47
+ exports.ObligationSchema = zod_1.z.object({
48
+ obligation_id: zod_1.z.string().uuid(),
49
+ type: exports.ObligationType,
50
+ status: exports.ObligationStatus,
51
+ details_json: zod_1.z.record(zod_1.z.unknown()).optional(),
52
+ });
53
+ // ─── Audit event ─────────────────────────────────────────────────────
54
+ exports.AuditEventType = zod_1.z.enum([
55
+ 'OWNER_CREATED',
56
+ 'AGENT_CHALLENGE_ISSUED',
57
+ 'AGENT_REGISTERED',
58
+ 'POLICY_UPSERTED',
59
+ 'AUTHORIZE_CALLED',
60
+ 'DECISION_CREATED',
61
+ 'PROOF_ISSUED',
62
+ 'PROOF_VERIFIED',
63
+ 'PLAYGROUND_RUN',
64
+ 'KEY_ROTATED',
65
+ 'SERVER_STARTED',
66
+ 'POLICY_UPDATED',
67
+ 'POLICY_DELETED',
68
+ 'POLICY_UNBOUND',
69
+ ]);
70
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,wEAAwE;AAC3D,QAAA,cAAc,GAAG,OAAC,CAAC,IAAI,CAAC;IACnC,OAAO;IACP,MAAM;IACN,kBAAkB;IAClB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC,CAAC;AAGH,wEAAwE;AAC3D,QAAA,cAAc,GAAG,OAAC,CAAC,IAAI,CAAC;IACnC,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,0BAA0B;CAC3B,CAAC,CAAC;AAGU,QAAA,gBAAgB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG3E,wEAAwE;AAC3D,QAAA,aAAa,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAGzC,QAAA,eAAe,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;AAG7D,QAAA,WAAW,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAGzD,wEAAwE;AAC3D,QAAA,YAAY,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAG9D,QAAA,cAAc,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;AAGrE,wEAAwE;AAC3D,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC5B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,UAAU;IACpC,SAAS,EAAE,OAAC,CAAC,MAAM,CAAC;QAClB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5B,CAAC;IACF,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC;QAChB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;KAChC,CAAC;IACF,aAAa,EAAE,OAAC,CAAC,MAAM,CAAC;QACtB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;QACnC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,aAAa,EAAE,oBAAY,CAAC,QAAQ,EAAE;KACvC,CAAC,CAAC,QAAQ,EAAE;IACb,OAAO,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC;CAC/B,CAAC,CAAC;AAGH,wEAAwE;AAC3D,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAChC,IAAI,EAAE,sBAAc;IACpB,MAAM,EAAE,wBAAgB;IACxB,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC;AA+JH,wEAAwE;AAC3D,QAAA,cAAc,GAAG,OAAC,CAAC,IAAI,CAAC;IACnC,eAAe;IACf,wBAAwB;IACxB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;CACjB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,27 +1,28 @@
1
1
  {
2
- "private": false,
3
- "publishConfig": {
4
- "access": "public"
5
- },
6
2
  "name": "@openleash/core",
7
- "version": "0.0.3",
8
- "description": "Core authorization and proof engine for OpenLeash — policy evaluation, cryptographic proof tokens, and audit logging for AI agents.",
9
- "main": "index.js",
10
- "types": "index.d.ts",
11
- "license": "MIT",
3
+ "version": "0.2.0",
4
+ "description": "Core authorization engine for openleash",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "files": ["dist", "LICENSE"],
8
+ "scripts": {
9
+ "build": "tsc -b"
10
+ },
11
+ "dependencies": {
12
+ "ajv": "^8.12.0",
13
+ "json-canonicalize": "^1.0.6",
14
+ "paseto": "^3.1.4",
15
+ "yaml": "^2.3.4",
16
+ "zod": "^3.22.4"
17
+ },
18
+ "license": "Apache-2.0",
12
19
  "repository": {
13
20
  "type": "git",
14
21
  "url": "git+https://github.com/openleash/openleash.git",
15
22
  "directory": "packages/core"
16
23
  },
17
- "homepage": "https://openleash.ai",
18
- "keywords": [
19
- "openleash",
20
- "authorization",
21
- "ai-agents",
22
- "policy-engine",
23
- "paseto",
24
- "proof-tokens",
25
- "security"
26
- ]
24
+ "homepage": "https://github.com/openleash/openleash/tree/main/packages/core",
25
+ "bugs": {
26
+ "url": "https://github.com/openleash/openleash/issues"
27
+ }
27
28
  }
package/index.js DELETED
@@ -1,3 +0,0 @@
1
- // @openleash/core — placeholder
2
- // Full implementation coming soon. See https://github.com/openleash/openleash
3
- throw new Error('@openleash/core is not yet implemented. This is a placeholder package.');