@lit-protocol/vincent-ability-sdk 0.0.1-ea
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/CHANGELOG.md +64 -0
- package/CONTRIBUTING.md +117 -0
- package/README.md +213 -0
- package/dist/package.json +44 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +21 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/internal.d.ts +12 -0
- package/dist/src/internal.d.ts.map +1 -0
- package/dist/src/internal.js +32 -0
- package/dist/src/internal.js.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/abilityContext.d.ts +28 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/abilityContext.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/abilityContext.js +51 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/abilityContext.js.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/resultCreators.d.ts +18 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/resultCreators.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/resultCreators.js +48 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/resultCreators.js.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/types.d.ts +31 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/types.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/types.js +9 -0
- package/dist/src/lib/abilityCore/abilityConfig/context/types.js.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/types.d.ts +20 -0
- package/dist/src/lib/abilityCore/abilityConfig/types.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/abilityConfig/types.js +4 -0
- package/dist/src/lib/abilityCore/abilityConfig/types.js.map +1 -0
- package/dist/src/lib/abilityCore/bundledAbility/bundledAbility.d.ts +5 -0
- package/dist/src/lib/abilityCore/bundledAbility/bundledAbility.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/bundledAbility/bundledAbility.js +21 -0
- package/dist/src/lib/abilityCore/bundledAbility/bundledAbility.js.map +1 -0
- package/dist/src/lib/abilityCore/bundledAbility/types.d.ts +18 -0
- package/dist/src/lib/abilityCore/bundledAbility/types.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/bundledAbility/types.js +4 -0
- package/dist/src/lib/abilityCore/bundledAbility/types.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/getMappedAbilityPolicyParams.d.ts +5 -0
- package/dist/src/lib/abilityCore/helpers/getMappedAbilityPolicyParams.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/getMappedAbilityPolicyParams.js +18 -0
- package/dist/src/lib/abilityCore/helpers/getMappedAbilityPolicyParams.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/getPkpInfo.d.ts +10 -0
- package/dist/src/lib/abilityCore/helpers/getPkpInfo.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/getPkpInfo.js +26 -0
- package/dist/src/lib/abilityCore/helpers/getPkpInfo.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/index.d.ts +5 -0
- package/dist/src/lib/abilityCore/helpers/index.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/index.js +12 -0
- package/dist/src/lib/abilityCore/helpers/index.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/resultCreators.d.ts +21 -0
- package/dist/src/lib/abilityCore/helpers/resultCreators.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/resultCreators.js +48 -0
- package/dist/src/lib/abilityCore/helpers/resultCreators.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/supportedPoliciesForAbility.d.ts +55 -0
- package/dist/src/lib/abilityCore/helpers/supportedPoliciesForAbility.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/supportedPoliciesForAbility.js +68 -0
- package/dist/src/lib/abilityCore/helpers/supportedPoliciesForAbility.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/typeGuards.d.ts +8 -0
- package/dist/src/lib/abilityCore/helpers/typeGuards.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/typeGuards.js +28 -0
- package/dist/src/lib/abilityCore/helpers/typeGuards.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/validatePolicies.d.ts +24 -0
- package/dist/src/lib/abilityCore/helpers/validatePolicies.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/validatePolicies.js +31 -0
- package/dist/src/lib/abilityCore/helpers/validatePolicies.js.map +1 -0
- package/dist/src/lib/abilityCore/helpers/zod.d.ts +43 -0
- package/dist/src/lib/abilityCore/helpers/zod.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/helpers/zod.js +70 -0
- package/dist/src/lib/abilityCore/helpers/zod.js.map +1 -0
- package/dist/src/lib/abilityCore/vincentAbility.d.ts +54 -0
- package/dist/src/lib/abilityCore/vincentAbility.d.ts.map +1 -0
- package/dist/src/lib/abilityCore/vincentAbility.js +162 -0
- package/dist/src/lib/abilityCore/vincentAbility.js.map +1 -0
- package/dist/src/lib/assertSupportedAbilityVersion.d.ts +2 -0
- package/dist/src/lib/assertSupportedAbilityVersion.d.ts.map +1 -0
- package/dist/src/lib/assertSupportedAbilityVersion.js +15 -0
- package/dist/src/lib/assertSupportedAbilityVersion.js.map +1 -0
- package/dist/src/lib/constants.d.ts +2 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +5 -0
- package/dist/src/lib/constants.js.map +1 -0
- package/dist/src/lib/handlers/constants.d.ts +2 -0
- package/dist/src/lib/handlers/constants.d.ts.map +1 -0
- package/dist/src/lib/handlers/constants.js +6 -0
- package/dist/src/lib/handlers/constants.js.map +1 -0
- package/dist/src/lib/handlers/evaluatePolicies.d.ts +11 -0
- package/dist/src/lib/handlers/evaluatePolicies.d.ts.map +1 -0
- package/dist/src/lib/handlers/evaluatePolicies.js +110 -0
- package/dist/src/lib/handlers/evaluatePolicies.js.map +1 -0
- package/dist/src/lib/handlers/vincentAbilityHandler.d.ts +15 -0
- package/dist/src/lib/handlers/vincentAbilityHandler.d.ts.map +1 -0
- package/dist/src/lib/handlers/vincentAbilityHandler.js +160 -0
- package/dist/src/lib/handlers/vincentAbilityHandler.js.map +1 -0
- package/dist/src/lib/handlers/vincentPolicyHandler.d.ts +13 -0
- package/dist/src/lib/handlers/vincentPolicyHandler.d.ts.map +1 -0
- package/dist/src/lib/handlers/vincentPolicyHandler.js +70 -0
- package/dist/src/lib/handlers/vincentPolicyHandler.js.map +1 -0
- package/dist/src/lib/policyCore/bundledPolicy/bundledPolicy.d.ts +5 -0
- package/dist/src/lib/policyCore/bundledPolicy/bundledPolicy.d.ts.map +1 -0
- package/dist/src/lib/policyCore/bundledPolicy/bundledPolicy.js +21 -0
- package/dist/src/lib/policyCore/bundledPolicy/bundledPolicy.js.map +1 -0
- package/dist/src/lib/policyCore/bundledPolicy/types.d.ts +17 -0
- package/dist/src/lib/policyCore/bundledPolicy/types.d.ts.map +1 -0
- package/dist/src/lib/policyCore/bundledPolicy/types.js +4 -0
- package/dist/src/lib/policyCore/bundledPolicy/types.js.map +1 -0
- package/dist/src/lib/policyCore/helpers/index.d.ts +5 -0
- package/dist/src/lib/policyCore/helpers/index.d.ts.map +1 -0
- package/dist/src/lib/policyCore/helpers/index.js +16 -0
- package/dist/src/lib/policyCore/helpers/index.js.map +1 -0
- package/dist/src/lib/policyCore/helpers/resultCreators.d.ts +38 -0
- package/dist/src/lib/policyCore/helpers/resultCreators.d.ts.map +1 -0
- package/dist/src/lib/policyCore/helpers/resultCreators.js +89 -0
- package/dist/src/lib/policyCore/helpers/resultCreators.js.map +1 -0
- package/dist/src/lib/policyCore/helpers/typeGuards.d.ts +7 -0
- package/dist/src/lib/policyCore/helpers/typeGuards.d.ts.map +1 -0
- package/dist/src/lib/policyCore/helpers/typeGuards.js +23 -0
- package/dist/src/lib/policyCore/helpers/typeGuards.js.map +1 -0
- package/dist/src/lib/policyCore/helpers/zod.d.ts +55 -0
- package/dist/src/lib/policyCore/helpers/zod.d.ts.map +1 -0
- package/dist/src/lib/policyCore/helpers/zod.js +82 -0
- package/dist/src/lib/policyCore/helpers/zod.js.map +1 -0
- package/dist/src/lib/policyCore/index.d.ts +3 -0
- package/dist/src/lib/policyCore/index.d.ts.map +1 -0
- package/dist/src/lib/policyCore/index.js +8 -0
- package/dist/src/lib/policyCore/index.js.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/context/policyConfigContext.d.ts +12 -0
- package/dist/src/lib/policyCore/policyConfig/context/policyConfigContext.d.ts.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/context/policyConfigContext.js +20 -0
- package/dist/src/lib/policyCore/policyConfig/context/policyConfigContext.js.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/context/resultCreators.d.ts +6 -0
- package/dist/src/lib/policyCore/policyConfig/context/resultCreators.d.ts.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/context/resultCreators.js +30 -0
- package/dist/src/lib/policyCore/policyConfig/context/resultCreators.js.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/context/types.d.ts +24 -0
- package/dist/src/lib/policyCore/policyConfig/context/types.d.ts.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/context/types.js +5 -0
- package/dist/src/lib/policyCore/policyConfig/context/types.js.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/types.d.ts +46 -0
- package/dist/src/lib/policyCore/policyConfig/types.d.ts.map +1 -0
- package/dist/src/lib/policyCore/policyConfig/types.js +3 -0
- package/dist/src/lib/policyCore/policyConfig/types.js.map +1 -0
- package/dist/src/lib/policyCore/policyParameters/getOnchainPolicyParams.d.ts +17 -0
- package/dist/src/lib/policyCore/policyParameters/getOnchainPolicyParams.d.ts.map +1 -0
- package/dist/src/lib/policyCore/policyParameters/getOnchainPolicyParams.js +54 -0
- package/dist/src/lib/policyCore/policyParameters/getOnchainPolicyParams.js.map +1 -0
- package/dist/src/lib/policyCore/vincentPolicy.d.ts +92 -0
- package/dist/src/lib/policyCore/vincentPolicy.d.ts.map +1 -0
- package/dist/src/lib/policyCore/vincentPolicy.js +242 -0
- package/dist/src/lib/policyCore/vincentPolicy.js.map +1 -0
- package/dist/src/lib/types.d.ts +260 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +4 -0
- package/dist/src/lib/types.js.map +1 -0
- package/dist/src/lib/utils.d.ts +2 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +8 -0
- package/dist/src/lib/utils.js.map +1 -0
- package/dist/src/type-inference-verification/ability-definition-tests.d.ts +702 -0
- package/dist/src/type-inference-verification/ability-definition-tests.d.ts.map +1 -0
- package/dist/src/type-inference-verification/ability-definition-tests.js +203 -0
- package/dist/src/type-inference-verification/ability-definition-tests.js.map +1 -0
- package/dist/src/type-inference-verification/ability-lifecycle-inference.d.ts +2 -0
- package/dist/src/type-inference-verification/ability-lifecycle-inference.d.ts.map +1 -0
- package/dist/src/type-inference-verification/ability-lifecycle-inference.js +109 -0
- package/dist/src/type-inference-verification/ability-lifecycle-inference.js.map +1 -0
- package/dist/src/type-inference-verification/ability-lifecycle-succeed-fail-tests.d.ts +923 -0
- package/dist/src/type-inference-verification/ability-lifecycle-succeed-fail-tests.d.ts.map +1 -0
- package/dist/src/type-inference-verification/ability-lifecycle-succeed-fail-tests.js +196 -0
- package/dist/src/type-inference-verification/ability-lifecycle-succeed-fail-tests.js.map +1 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases-ability.d.ts +4305 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases-ability.d.ts.map +1 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases-ability.js +644 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases-ability.js.map +1 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases.d.ts +646 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases.d.ts.map +1 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases.js +264 -0
- package/dist/src/type-inference-verification/allow-deny-test-cases.js.map +1 -0
- package/dist/src/type-inference-verification/context-switching-tests.d.ts +637 -0
- package/dist/src/type-inference-verification/context-switching-tests.d.ts.map +1 -0
- package/dist/src/type-inference-verification/context-switching-tests.js +229 -0
- package/dist/src/type-inference-verification/context-switching-tests.js.map +1 -0
- package/dist/src/type-inference-verification/create-policy-map-from-tool-policies.d.ts +2 -0
- package/dist/src/type-inference-verification/create-policy-map-from-tool-policies.d.ts.map +1 -0
- package/dist/src/type-inference-verification/create-policy-map-from-tool-policies.js +56 -0
- package/dist/src/type-inference-verification/create-policy-map-from-tool-policies.js.map +1 -0
- package/dist/src/type-inference-verification/create-vincent-ability-policy.d.ts +2 -0
- package/dist/src/type-inference-verification/create-vincent-ability-policy.d.ts.map +1 -0
- package/dist/src/type-inference-verification/create-vincent-ability-policy.js +49 -0
- package/dist/src/type-inference-verification/create-vincent-ability-policy.js.map +1 -0
- package/dist/src/type-inference-verification/create-vincent-ability.d.ts +250 -0
- package/dist/src/type-inference-verification/create-vincent-ability.d.ts.map +1 -0
- package/dist/src/type-inference-verification/create-vincent-ability.js +68 -0
- package/dist/src/type-inference-verification/create-vincent-ability.js.map +1 -0
- package/dist/src/type-inference-verification/parameter-inference-tests-tool.d.ts +1710 -0
- package/dist/src/type-inference-verification/parameter-inference-tests-tool.d.ts.map +1 -0
- package/dist/src/type-inference-verification/parameter-inference-tests-tool.js +537 -0
- package/dist/src/type-inference-verification/parameter-inference-tests-tool.js.map +1 -0
- package/dist/src/type-inference-verification/parameter-inference-tests.d.ts +456 -0
- package/dist/src/type-inference-verification/parameter-inference-tests.d.ts.map +1 -0
- package/dist/src/type-inference-verification/parameter-inference-tests.js +179 -0
- package/dist/src/type-inference-verification/parameter-inference-tests.js.map +1 -0
- package/dist/src/type-inference-verification/playground.d.ts +1556 -0
- package/dist/src/type-inference-verification/playground.d.ts.map +1 -0
- package/dist/src/type-inference-verification/playground.js +473 -0
- package/dist/src/type-inference-verification/playground.js.map +1 -0
- package/dist/src/type-inference-verification/schema-test.d.ts +470 -0
- package/dist/src/type-inference-verification/schema-test.d.ts.map +1 -0
- package/dist/src/type-inference-verification/schema-test.js +252 -0
- package/dist/src/type-inference-verification/schema-test.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.vincentAbilityHandler = void 0;
|
|
4
|
+
exports.createAbilityExecutionContext = createAbilityExecutionContext;
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
const helpers_1 = require("../abilityCore/helpers");
|
|
7
|
+
const typeGuards_1 = require("../abilityCore/helpers/typeGuards");
|
|
8
|
+
const validatePolicies_1 = require("../abilityCore/helpers/validatePolicies");
|
|
9
|
+
const zod_1 = require("../abilityCore/helpers/zod");
|
|
10
|
+
const assertSupportedAbilityVersion_1 = require("../assertSupportedAbilityVersion");
|
|
11
|
+
const getOnchainPolicyParams_1 = require("../policyCore/policyParameters/getOnchainPolicyParams");
|
|
12
|
+
const utils_1 = require("../utils");
|
|
13
|
+
const constants_1 = require("./constants");
|
|
14
|
+
const evaluatePolicies_1 = require("./evaluatePolicies");
|
|
15
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
16
|
+
function createAbilityExecutionContext({ vincentAbility, policyEvaluationResults, baseContext, }) {
|
|
17
|
+
if (!policyEvaluationResults.allow) {
|
|
18
|
+
throw new Error('Received denied policies to createAbilityExecutionContext()');
|
|
19
|
+
}
|
|
20
|
+
const newContext = {
|
|
21
|
+
allow: true,
|
|
22
|
+
evaluatedPolicies: policyEvaluationResults.evaluatedPolicies,
|
|
23
|
+
allowedPolicies: {},
|
|
24
|
+
};
|
|
25
|
+
const policyByPackageName = vincentAbility.supportedPolicies.policyByPackageName;
|
|
26
|
+
const allowedKeys = Object.keys(policyEvaluationResults.allowedPolicies);
|
|
27
|
+
for (const packageName of allowedKeys) {
|
|
28
|
+
const entry = policyEvaluationResults.allowedPolicies[packageName];
|
|
29
|
+
const policy = policyByPackageName[packageName];
|
|
30
|
+
const vincentPolicy = policy.vincentPolicy;
|
|
31
|
+
if (!entry) {
|
|
32
|
+
throw new Error(`Missing entry on allowedPolicies for policy: ${packageName}`);
|
|
33
|
+
}
|
|
34
|
+
const resultWrapper = {
|
|
35
|
+
result: entry.result,
|
|
36
|
+
};
|
|
37
|
+
// TODO: Collect results of commit calls and add to the execution context result
|
|
38
|
+
if (vincentPolicy.commit) {
|
|
39
|
+
const commitFn = vincentPolicy.commit;
|
|
40
|
+
resultWrapper.commit = (commitParams) => {
|
|
41
|
+
return commitFn(commitParams, baseContext);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
newContext.allowedPolicies[packageName] =
|
|
45
|
+
resultWrapper;
|
|
46
|
+
}
|
|
47
|
+
return newContext;
|
|
48
|
+
}
|
|
49
|
+
/** @hidden */
|
|
50
|
+
const vincentAbilityHandler = ({ vincentAbility, abilityParams, context, }) => {
|
|
51
|
+
return async () => {
|
|
52
|
+
(0, assertSupportedAbilityVersion_1.assertSupportedAbilityVersion)(vincentAbilityApiVersion);
|
|
53
|
+
let policyEvalResults = undefined;
|
|
54
|
+
const abilityIpfsCid = LitAuth.actionIpfsIds[0];
|
|
55
|
+
const appDelegateeAddress = ethers_1.ethers.utils.getAddress(LitAuth.authSigAddress);
|
|
56
|
+
// Build an initial baseContext -- we will add info as we execute, so if an error is encountered the consumer gets
|
|
57
|
+
// all of the info we did find along the way
|
|
58
|
+
const baseContext = {
|
|
59
|
+
delegation: {
|
|
60
|
+
delegateeAddress: appDelegateeAddress,
|
|
61
|
+
// delegatorPkpInfo: null,
|
|
62
|
+
},
|
|
63
|
+
abilityIpfsCid,
|
|
64
|
+
// appId: undefined,
|
|
65
|
+
// appVersion: undefined,
|
|
66
|
+
};
|
|
67
|
+
try {
|
|
68
|
+
const delegationRpcUrl = await Lit.Actions.getRpcUrl({ chain: 'yellowstone' });
|
|
69
|
+
const parsedOrFail = (0, zod_1.validateOrFail)(abilityParams, vincentAbility.abilityParamsSchema, 'execute', 'input');
|
|
70
|
+
if ((0, typeGuards_1.isAbilityFailureResult)(parsedOrFail)) {
|
|
71
|
+
Lit.Actions.setResponse({
|
|
72
|
+
response: JSON.stringify({
|
|
73
|
+
abilityExecutionResult: parsedOrFail,
|
|
74
|
+
}),
|
|
75
|
+
});
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const userPkpInfo = await (0, helpers_1.getPkpInfo)({
|
|
79
|
+
litPubkeyRouterAddress: constants_1.LIT_DATIL_PUBKEY_ROUTER_ADDRESS,
|
|
80
|
+
yellowstoneRpcUrl: delegationRpcUrl,
|
|
81
|
+
pkpEthAddress: context.delegatorPkpEthAddress,
|
|
82
|
+
});
|
|
83
|
+
baseContext.delegation.delegatorPkpInfo = userPkpInfo;
|
|
84
|
+
const { decodedPolicies, appId, appVersion } = await (0, getOnchainPolicyParams_1.getPoliciesAndAppVersion)({
|
|
85
|
+
delegationRpcUrl,
|
|
86
|
+
appDelegateeAddress,
|
|
87
|
+
agentWalletPkpEthAddress: context.delegatorPkpEthAddress,
|
|
88
|
+
abilityIpfsCid,
|
|
89
|
+
});
|
|
90
|
+
baseContext.appId = appId.toNumber();
|
|
91
|
+
baseContext.appVersion = appVersion.toNumber();
|
|
92
|
+
const validatedPolicies = await (0, validatePolicies_1.validatePolicies)({
|
|
93
|
+
decodedPolicies,
|
|
94
|
+
vincentAbility,
|
|
95
|
+
parsedAbilityParams: parsedOrFail,
|
|
96
|
+
abilityIpfsCid,
|
|
97
|
+
});
|
|
98
|
+
console.log('validatedPolicies', JSON.stringify(validatedPolicies, utils_1.bigintReplacer));
|
|
99
|
+
const policyEvaluationResults = await (0, evaluatePolicies_1.evaluatePolicies)({
|
|
100
|
+
validatedPolicies,
|
|
101
|
+
vincentAbility,
|
|
102
|
+
context: baseContext,
|
|
103
|
+
vincentAbilityApiVersion,
|
|
104
|
+
});
|
|
105
|
+
console.log('policyEvaluationResults', JSON.stringify(policyEvaluationResults, utils_1.bigintReplacer));
|
|
106
|
+
policyEvalResults = policyEvaluationResults;
|
|
107
|
+
if (!policyEvalResults.allow) {
|
|
108
|
+
Lit.Actions.setResponse({
|
|
109
|
+
response: JSON.stringify({
|
|
110
|
+
abilityContext: {
|
|
111
|
+
...baseContext,
|
|
112
|
+
policiesContext: policyEvaluationResults,
|
|
113
|
+
},
|
|
114
|
+
abilityExecutionResult: {
|
|
115
|
+
success: false,
|
|
116
|
+
},
|
|
117
|
+
}),
|
|
118
|
+
});
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const executeContext = createAbilityExecutionContext({
|
|
122
|
+
vincentAbility,
|
|
123
|
+
policyEvaluationResults,
|
|
124
|
+
baseContext,
|
|
125
|
+
});
|
|
126
|
+
const abilityExecutionResult = await vincentAbility.execute({
|
|
127
|
+
abilityParams: parsedOrFail,
|
|
128
|
+
}, {
|
|
129
|
+
...baseContext,
|
|
130
|
+
policiesContext: executeContext,
|
|
131
|
+
});
|
|
132
|
+
console.log('abilityExecutionResult', JSON.stringify(abilityExecutionResult, utils_1.bigintReplacer));
|
|
133
|
+
Lit.Actions.setResponse({
|
|
134
|
+
response: JSON.stringify({
|
|
135
|
+
abilityExecutionResult,
|
|
136
|
+
abilityContext: {
|
|
137
|
+
...baseContext,
|
|
138
|
+
policiesContext: policyEvaluationResults,
|
|
139
|
+
},
|
|
140
|
+
}),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
Lit.Actions.setResponse({
|
|
145
|
+
response: JSON.stringify({
|
|
146
|
+
abilityContext: {
|
|
147
|
+
...baseContext,
|
|
148
|
+
policiesContext: policyEvalResults,
|
|
149
|
+
},
|
|
150
|
+
abilityExecutionResult: {
|
|
151
|
+
success: false,
|
|
152
|
+
runtimeError: err instanceof Error ? err.message : String(err),
|
|
153
|
+
},
|
|
154
|
+
}),
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
};
|
|
159
|
+
exports.vincentAbilityHandler = vincentAbilityHandler;
|
|
160
|
+
//# sourceMappingURL=vincentAbilityHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vincentAbilityHandler.js","sourceRoot":"","sources":["../../../../src/lib/handlers/vincentAbilityHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { PolicyConsumerContext, VincentPolicy } from '../types';
|
|
3
|
+
/** @hidden */
|
|
4
|
+
export declare function vincentPolicyHandler<PackageName extends string, PolicyAbilityParams extends z.ZodType, UserParams extends z.ZodType | undefined = undefined, EvalAllowResult extends z.ZodType | undefined = undefined, EvalDenyResult extends z.ZodType | undefined = undefined>({ vincentPolicy, context, abilityParams, }: {
|
|
5
|
+
vincentPolicy: VincentPolicy<PackageName, PolicyAbilityParams, UserParams, any, // PrecheckAllowResult
|
|
6
|
+
any, // PrecheckDenyResult
|
|
7
|
+
EvalAllowResult, EvalDenyResult, any, // CommitParams
|
|
8
|
+
any, // CommitAllowResult
|
|
9
|
+
any>;
|
|
10
|
+
abilityParams: unknown;
|
|
11
|
+
context: PolicyConsumerContext;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=vincentPolicyHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vincentPolicyHandler.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/vincentPolicyHandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAI7B,OAAO,KAAK,EAAoB,qBAAqB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA2BvF,cAAc;AACd,wBAAsB,oBAAoB,CACxC,WAAW,SAAS,MAAM,EAC1B,mBAAmB,SAAS,CAAC,CAAC,OAAO,EACrC,UAAU,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,EACpD,eAAe,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,EACzD,cAAc,SAAS,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,EACxD,EACA,aAAa,EACb,OAAO,EACP,aAAa,GACd,EAAE;IACD,aAAa,EAAE,aAAa,CAC1B,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,qBAAqB;IAC1B,eAAe,EACf,cAAc,EACd,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,oBAAoB;IACzB,GAAG,CACJ,CAAC;IACF,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,qBAAqB,CAAC;CAChC,iBAqEA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/lib/handlers/vincentPolicyHandler.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.vincentPolicyHandler = vincentPolicyHandler;
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
const helpers_1 = require("../abilityCore/helpers");
|
|
7
|
+
const assertSupportedAbilityVersion_1 = require("../assertSupportedAbilityVersion");
|
|
8
|
+
const helpers_2 = require("../policyCore/helpers");
|
|
9
|
+
const getOnchainPolicyParams_1 = require("../policyCore/policyParameters/getOnchainPolicyParams");
|
|
10
|
+
const utils_1 = require("../utils");
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
/** @hidden */
|
|
13
|
+
async function vincentPolicyHandler({ vincentPolicy, context, abilityParams, }) {
|
|
14
|
+
(0, assertSupportedAbilityVersion_1.assertSupportedAbilityVersion)(vincentAbilityApiVersion);
|
|
15
|
+
const { delegatorPkpEthAddress, abilityIpfsCid } = context; // FIXME: Set from ipfsCidsStack when it's shipped
|
|
16
|
+
console.log('actionIpfsIds:', LitAuth.actionIpfsIds.join(','));
|
|
17
|
+
const policyIpfsCid = LitAuth.actionIpfsIds[0];
|
|
18
|
+
console.log('context:', JSON.stringify(context, utils_1.bigintReplacer));
|
|
19
|
+
try {
|
|
20
|
+
const delegationRpcUrl = await Lit.Actions.getRpcUrl({
|
|
21
|
+
chain: 'yellowstone',
|
|
22
|
+
});
|
|
23
|
+
const userPkpInfo = await (0, helpers_1.getPkpInfo)({
|
|
24
|
+
litPubkeyRouterAddress: constants_1.LIT_DATIL_PUBKEY_ROUTER_ADDRESS,
|
|
25
|
+
yellowstoneRpcUrl: delegationRpcUrl,
|
|
26
|
+
pkpEthAddress: delegatorPkpEthAddress,
|
|
27
|
+
});
|
|
28
|
+
const appDelegateeAddress = ethers_1.ethers.utils.getAddress(LitAuth.authSigAddress);
|
|
29
|
+
console.log('appDelegateeAddress', appDelegateeAddress);
|
|
30
|
+
const { decodedPolicies, appId, appVersion } = await (0, getOnchainPolicyParams_1.getPoliciesAndAppVersion)({
|
|
31
|
+
delegationRpcUrl,
|
|
32
|
+
appDelegateeAddress,
|
|
33
|
+
agentWalletPkpEthAddress: delegatorPkpEthAddress,
|
|
34
|
+
abilityIpfsCid,
|
|
35
|
+
});
|
|
36
|
+
const baseContext = {
|
|
37
|
+
delegation: {
|
|
38
|
+
delegateeAddress: appDelegateeAddress,
|
|
39
|
+
delegatorPkpInfo: userPkpInfo,
|
|
40
|
+
},
|
|
41
|
+
abilityIpfsCid: abilityIpfsCid,
|
|
42
|
+
appId: appId.toNumber(),
|
|
43
|
+
appVersion: appVersion.toNumber(),
|
|
44
|
+
};
|
|
45
|
+
const onChainPolicyParams = await (0, getOnchainPolicyParams_1.getDecodedPolicyParams)({
|
|
46
|
+
decodedPolicies,
|
|
47
|
+
policyIpfsCid,
|
|
48
|
+
});
|
|
49
|
+
console.log('onChainPolicyParams:', JSON.stringify(onChainPolicyParams, utils_1.bigintReplacer));
|
|
50
|
+
const evaluateResult = await vincentPolicy.evaluate({
|
|
51
|
+
abilityParams,
|
|
52
|
+
userParams: onChainPolicyParams,
|
|
53
|
+
}, baseContext);
|
|
54
|
+
console.log('evaluateResult:', JSON.stringify(evaluateResult, utils_1.bigintReplacer));
|
|
55
|
+
Lit.Actions.setResponse({
|
|
56
|
+
response: JSON.stringify({
|
|
57
|
+
...evaluateResult,
|
|
58
|
+
}),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
console.log('Policy evaluation failed:', error.message, error.stack);
|
|
63
|
+
Lit.Actions.setResponse({
|
|
64
|
+
response: JSON.stringify((0, helpers_2.createDenyResult)({
|
|
65
|
+
runtimeError: error instanceof Error ? error.message : String(error),
|
|
66
|
+
})),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=vincentPolicyHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vincentPolicyHandler.js","sourceRoot":"","sources":["../../../../src/lib/handlers/vincentPolicyHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { VincentPolicy } from '../../types';
|
|
2
|
+
import type { BundledVincentPolicy } from './types';
|
|
3
|
+
/** @hidden */
|
|
4
|
+
export declare function asBundledVincentPolicy<const VP extends VincentPolicy<any, any, any, any, any, any, any, any, any, any, any, any, any>, const IpfsCid extends string>(vincentPolicy: VP, ipfsCid: IpfsCid): BundledVincentPolicy<VP, IpfsCid>;
|
|
5
|
+
//# sourceMappingURL=bundledPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundledPolicy.d.ts","sourceRoot":"","sources":["../../../../../src/lib/policyCore/bundledPolicy/bundledPolicy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAIpD,cAAc;AACd,wBAAgB,sBAAsB,CACpC,KAAK,CAAC,EAAE,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC/F,KAAK,CAAC,OAAO,SAAS,MAAM,EAC5B,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAAC,EAAE,EAAE,OAAO,CAAC,CAexE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/lib/policyCore/bundledPolicy/bundledPolicy.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.asBundledVincentPolicy = asBundledVincentPolicy;
|
|
5
|
+
const constants_1 = require("../../constants");
|
|
6
|
+
/** @hidden */
|
|
7
|
+
function asBundledVincentPolicy(vincentPolicy, ipfsCid) {
|
|
8
|
+
const bundledPolicy = {
|
|
9
|
+
ipfsCid,
|
|
10
|
+
vincentPolicy,
|
|
11
|
+
};
|
|
12
|
+
// Add non-enumerable 'magic' property
|
|
13
|
+
Object.defineProperty(bundledPolicy, 'vincentAbilityApiVersion', {
|
|
14
|
+
value: constants_1.VINCENT_TOOL_API_VERSION,
|
|
15
|
+
writable: false,
|
|
16
|
+
enumerable: true,
|
|
17
|
+
configurable: false,
|
|
18
|
+
});
|
|
19
|
+
return bundledPolicy;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=bundledPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundledPolicy.js","sourceRoot":"","sources":["../../../../../src/lib/policyCore/bundledPolicy/bundledPolicy.ts"],"names":[],"mappings":";AAAA,oDAAoD;;AAQpD,wDAkBC;AArBD,+CAA2D;AAE3D,cAAc;AACd,SAAgB,sBAAsB,CAGpC,aAAiB,EAAE,OAAgB;IACnC,MAAM,aAAa,GAAG;QACpB,OAAO;QACP,aAAa;KACuB,CAAC;IAEvC,sCAAsC;IACtC,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,0BAA0B,EAAE;QAC/D,KAAK,EAAE,oCAAwB;QAC/B,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IAEH,OAAO,aAAmF,CAAC;AAC7F,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { VincentPolicy } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* A VincentPolicy bundled with an IPFS CID
|
|
4
|
+
* This ensures only correctly constructed objects are assignable.
|
|
5
|
+
*
|
|
6
|
+
* @typeParam VP - The Vincent Policy that was bundled for usage
|
|
7
|
+
* @typeParam IpfsCid - The IPFS CID that the bundled ability was published to
|
|
8
|
+
*
|
|
9
|
+
* @category Interfaces
|
|
10
|
+
*/
|
|
11
|
+
export type BundledVincentPolicy<VP extends VincentPolicy<any, any, any, any, any, any, any, any, any, any, any, any, any>, IpfsCid extends string = string, VincentAbilityApiVersion extends string = string> = {
|
|
12
|
+
readonly ipfsCid: IpfsCid;
|
|
13
|
+
readonly vincentPolicy: VP;
|
|
14
|
+
/** @hidden */
|
|
15
|
+
readonly vincentAbilityApiVersion: VincentAbilityApiVersion;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/policyCore/bundledPolicy/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,CAC9B,EAAE,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACzF,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/B,wBAAwB,SAAS,MAAM,GAAG,MAAM,IAC9C;IAEF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC;IAC3B,cAAc;IACd,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;CAC7D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/lib/policyCore/bundledPolicy/types.ts"],"names":[],"mappings":";AAAA,4CAA4C"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { createDenyResult } from './resultCreators';
|
|
2
|
+
export { isPolicyResponse, isPolicyAllowResponse, isPolicyDenyResponse } from './typeGuards';
|
|
3
|
+
export { validateOrDeny, getValidatedParamsOrDeny } from './zod';
|
|
4
|
+
export { getSchemaForPolicyResponseResult } from './zod';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/policyCore/helpers/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,gCAAgC,EAAE,MAAM,OAAO,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/lib/policyCore/helpers/index.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getSchemaForPolicyResponseResult = exports.getValidatedParamsOrDeny = exports.validateOrDeny = exports.isPolicyDenyResponse = exports.isPolicyAllowResponse = exports.isPolicyResponse = exports.createDenyResult = void 0;
|
|
5
|
+
var resultCreators_1 = require("./resultCreators");
|
|
6
|
+
Object.defineProperty(exports, "createDenyResult", { enumerable: true, get: function () { return resultCreators_1.createDenyResult; } });
|
|
7
|
+
var typeGuards_1 = require("./typeGuards");
|
|
8
|
+
Object.defineProperty(exports, "isPolicyResponse", { enumerable: true, get: function () { return typeGuards_1.isPolicyResponse; } });
|
|
9
|
+
Object.defineProperty(exports, "isPolicyAllowResponse", { enumerable: true, get: function () { return typeGuards_1.isPolicyAllowResponse; } });
|
|
10
|
+
Object.defineProperty(exports, "isPolicyDenyResponse", { enumerable: true, get: function () { return typeGuards_1.isPolicyDenyResponse; } });
|
|
11
|
+
var zod_1 = require("./zod");
|
|
12
|
+
Object.defineProperty(exports, "validateOrDeny", { enumerable: true, get: function () { return zod_1.validateOrDeny; } });
|
|
13
|
+
Object.defineProperty(exports, "getValidatedParamsOrDeny", { enumerable: true, get: function () { return zod_1.getValidatedParamsOrDeny; } });
|
|
14
|
+
var zod_2 = require("./zod");
|
|
15
|
+
Object.defineProperty(exports, "getSchemaForPolicyResponseResult", { enumerable: true, get: function () { return zod_2.getSchemaForPolicyResponseResult; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/policyCore/helpers/index.ts"],"names":[],"mappings":";AAAA,sCAAsC;;;AAEtC,mDAAoD;AAA3C,kHAAA,gBAAgB,OAAA;AACzB,2CAA6F;AAApF,8GAAA,gBAAgB,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AACtE,6BAAiE;AAAxD,qGAAA,cAAc,OAAA;AAAE,+GAAA,wBAAwB,OAAA;AACjD,6BAAyD;AAAhD,uHAAA,gCAAgC,OAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { z, ZodType } from 'zod';
|
|
2
|
+
import type { PolicyResponseAllow, PolicyResponseDeny, PolicyResponseDenyNoResult, PolicyEvaluationResultContext, SchemaValidationError } from '../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Overload: return a fully-typed deny response with a result
|
|
5
|
+
*/
|
|
6
|
+
export declare function createDenyResult<T>(params: {
|
|
7
|
+
runtimeError?: string;
|
|
8
|
+
result: T;
|
|
9
|
+
schemaValidationError?: SchemaValidationError;
|
|
10
|
+
}): PolicyResponseDeny<T>;
|
|
11
|
+
/**
|
|
12
|
+
* Overload: return a deny response with no result
|
|
13
|
+
*/
|
|
14
|
+
export declare function createDenyResult(params: {
|
|
15
|
+
runtimeError: string;
|
|
16
|
+
schemaValidationError?: SchemaValidationError;
|
|
17
|
+
}): PolicyResponseDenyNoResult;
|
|
18
|
+
export declare function createDenyNoResult(runtimeError: string, schemaValidationError?: SchemaValidationError): PolicyResponseDenyNoResult;
|
|
19
|
+
/**
|
|
20
|
+
* Overload: return a fully-typed allow response with a result
|
|
21
|
+
*/
|
|
22
|
+
export declare function createAllowResult<T>(params: {
|
|
23
|
+
result: T;
|
|
24
|
+
}): PolicyResponseAllow<T>;
|
|
25
|
+
export declare function createAllowEvaluationResult<PolicyMapByPackageName extends Record<string, any>>(params: {
|
|
26
|
+
evaluatedPolicies: Array<keyof PolicyMapByPackageName>;
|
|
27
|
+
allowedPolicies: PolicyEvaluationResultContext<PolicyMapByPackageName>['allowedPolicies'];
|
|
28
|
+
}): PolicyEvaluationResultContext<PolicyMapByPackageName>;
|
|
29
|
+
export declare function createDenyEvaluationResult<PolicyMapByPackageName extends Record<string, any>>(params: {
|
|
30
|
+
evaluatedPolicies: Array<keyof PolicyMapByPackageName>;
|
|
31
|
+
allowedPolicies: PolicyEvaluationResultContext<PolicyMapByPackageName>['allowedPolicies'];
|
|
32
|
+
deniedPolicy: PolicyEvaluationResultContext<PolicyMapByPackageName>['deniedPolicy'];
|
|
33
|
+
}): PolicyEvaluationResultContext<PolicyMapByPackageName>;
|
|
34
|
+
export declare function wrapAllow<T extends ZodType<any, any, any>>(value: z.infer<T>): PolicyResponseAllow<z.infer<T>>;
|
|
35
|
+
export declare function wrapDeny<T extends ZodType<any, any, any>>(runtimeError: string, result: z.infer<T>, schemaValidationError?: SchemaValidationError): PolicyResponseDeny<z.infer<T>>;
|
|
36
|
+
export declare function returnNoResultDeny<T extends ZodType<any, any, any> | undefined>(runtimeError: string, schemaValidationError?: SchemaValidationError): T extends ZodType<any, any, any> ? PolicyResponseDeny<z.infer<T>> : PolicyResponseDenyNoResult;
|
|
37
|
+
export declare function isTypedAllowResponse<T extends ZodType<any, any, any>>(val: unknown): val is PolicyResponseAllow<z.infer<T>>;
|
|
38
|
+
//# sourceMappingURL=resultCreators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resultCreators.d.ts","sourceRoot":"","sources":["../../../../../src/lib/policyCore/helpers/resultCreators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/lib/policyCore/helpers/resultCreators.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.createDenyResult = createDenyResult;
|
|
5
|
+
exports.createDenyNoResult = createDenyNoResult;
|
|
6
|
+
exports.createAllowResult = createAllowResult;
|
|
7
|
+
exports.createAllowEvaluationResult = createAllowEvaluationResult;
|
|
8
|
+
exports.createDenyEvaluationResult = createDenyEvaluationResult;
|
|
9
|
+
exports.wrapAllow = wrapAllow;
|
|
10
|
+
exports.wrapDeny = wrapDeny;
|
|
11
|
+
exports.returnNoResultDeny = returnNoResultDeny;
|
|
12
|
+
exports.isTypedAllowResponse = isTypedAllowResponse;
|
|
13
|
+
/**
|
|
14
|
+
* Implementation
|
|
15
|
+
*/
|
|
16
|
+
function createDenyResult(params) {
|
|
17
|
+
if (params.result === undefined) {
|
|
18
|
+
return {
|
|
19
|
+
allow: false,
|
|
20
|
+
runtimeError: params.runtimeError,
|
|
21
|
+
result: undefined,
|
|
22
|
+
...(params.schemaValidationError
|
|
23
|
+
? { schemaValidationError: params.schemaValidationError }
|
|
24
|
+
: {}),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
allow: false,
|
|
29
|
+
runtimeError: params.runtimeError,
|
|
30
|
+
result: params.result,
|
|
31
|
+
...(params.schemaValidationError
|
|
32
|
+
? { schemaValidationError: params.schemaValidationError }
|
|
33
|
+
: {}),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function createDenyNoResult(runtimeError, schemaValidationError) {
|
|
37
|
+
return createDenyResult({ runtimeError, schemaValidationError });
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Overload: return an allow response with no result
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Implementation
|
|
44
|
+
*/
|
|
45
|
+
function createAllowResult(params) {
|
|
46
|
+
if (params.result === undefined) {
|
|
47
|
+
return {
|
|
48
|
+
allow: true,
|
|
49
|
+
result: undefined,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
allow: true,
|
|
54
|
+
result: params.result,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function createAllowEvaluationResult(params) {
|
|
58
|
+
return {
|
|
59
|
+
allow: true,
|
|
60
|
+
evaluatedPolicies: params.evaluatedPolicies,
|
|
61
|
+
allowedPolicies: params.allowedPolicies,
|
|
62
|
+
deniedPolicy: undefined, // important for union discrimination
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function createDenyEvaluationResult(params) {
|
|
66
|
+
return {
|
|
67
|
+
allow: false,
|
|
68
|
+
evaluatedPolicies: params.evaluatedPolicies,
|
|
69
|
+
allowedPolicies: params.allowedPolicies,
|
|
70
|
+
deniedPolicy: params.deniedPolicy,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// Wraps a validated value as a typed allow result
|
|
74
|
+
function wrapAllow(value) {
|
|
75
|
+
return createAllowResult({ result: value });
|
|
76
|
+
}
|
|
77
|
+
// Wraps a deny result as fully typed (for schema-defined denials)
|
|
78
|
+
function wrapDeny(runtimeError, result, schemaValidationError) {
|
|
79
|
+
return createDenyResult({ runtimeError, result, schemaValidationError });
|
|
80
|
+
}
|
|
81
|
+
// Wraps a schema-less denial into a conditionally valid deny return
|
|
82
|
+
function returnNoResultDeny(runtimeError, schemaValidationError) {
|
|
83
|
+
return createDenyNoResult(runtimeError, schemaValidationError);
|
|
84
|
+
}
|
|
85
|
+
// Optionally: type guard if needed
|
|
86
|
+
function isTypedAllowResponse(val) {
|
|
87
|
+
return typeof val === 'object' && val !== null && val.allow === true;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=resultCreators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resultCreators.js","sourceRoot":"","sources":["../../../../../src/lib/policyCore/helpers/resultCreators.ts"],"names":[],"mappings":";AAAA,+CAA+C;;AA+B/C,4CAwBC;AAED,gDAKC;AAcD,8CAcC;AAED,kEAYC;AAED,gEAaC;AAGD,8BAIC;AAGD,4BAMC;AAGD,gDAKC;AAGD,oDAIC;AA1HD;;GAEG;AACH,SAAgB,gBAAgB,CAAI,MAInC;IACC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,MAAM,EAAE,SAAkB;YAC1B,GAAG,CAAC,MAAM,CAAC,qBAAqB;gBAC9B,CAAC,CAAC,EAAE,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,EAAE;gBACzD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,CAAC,MAAM,CAAC,qBAAqB;YAC9B,CAAC,CAAC,EAAE,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,EAAE;YACzD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAChC,YAAoB,EACpB,qBAA6C;IAE7C,OAAO,gBAAgB,CAAC,EAAE,YAAY,EAAE,qBAAqB,EAAE,CAAC,CAAC;AACnE,CAAC;AAOD;;GAEG;AAEH;;GAEG;AACH,SAAgB,iBAAiB,CAAI,MAEpC;IACC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,SAAkB;SAC3B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC;AAED,SAAgB,2BAA2B,CAEzC,MAGD;IACC,OAAO;QACL,KAAK,EAAE,IAAI;QACX,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,YAAY,EAAE,SAAS,EAAE,qCAAqC;KACN,CAAC;AAC7D,CAAC;AAED,SAAgB,0BAA0B,CAExC,MAID;IACC,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,YAAY,EAAE,MAAM,CAAC,YAAY;KACuB,CAAC;AAC7D,CAAC;AAED,kDAAkD;AAClD,SAAgB,SAAS,CACvB,KAAiB;IAEjB,OAAO,iBAAiB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,kEAAkE;AAClE,SAAgB,QAAQ,CACtB,YAAoB,EACpB,MAAkB,EAClB,qBAA6C;IAE7C,OAAO,gBAAgB,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,oEAAoE;AACpE,SAAgB,kBAAkB,CAChC,YAAoB,EACpB,qBAA6C;IAE7C,OAAO,kBAAkB,CAAC,YAAY,EAAE,qBAAqB,CAAQ,CAAC;AACxE,CAAC;AAED,mCAAmC;AACnC,SAAgB,oBAAoB,CAClC,GAAY;IAEZ,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAK,GAAW,CAAC,KAAK,KAAK,IAAI,CAAC;AAChF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { PolicyResponse, PolicyResponseAllow, PolicyResponseDeny, SchemaValidationError } from '../../types';
|
|
3
|
+
export declare function isZodValidationDenyResult(result: unknown): result is SchemaValidationError;
|
|
4
|
+
export declare function isPolicyDenyResponse<T>(val: unknown): val is PolicyResponseDeny<T>;
|
|
5
|
+
export declare function isPolicyAllowResponse<T>(val: unknown): val is PolicyResponseAllow<T>;
|
|
6
|
+
export declare function isPolicyResponse<AllowResult extends z.ZodType, DenyResult extends z.ZodType>(value: unknown): value is PolicyResponse<AllowResult, DenyResult>;
|
|
7
|
+
//# sourceMappingURL=typeGuards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["../../../../../src/lib/policyCore/helpers/typeGuards.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,qBAAqB,CAE1F;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAElF;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAEpF;AAED,wBAAgB,gBAAgB,CAAC,WAAW,SAAS,CAAC,CAAC,OAAO,EAAE,UAAU,SAAS,CAAC,CAAC,OAAO,EAC1F,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,CAOlD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/lib/policyCore/helpers/typeGuards.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.isZodValidationDenyResult = isZodValidationDenyResult;
|
|
5
|
+
exports.isPolicyDenyResponse = isPolicyDenyResponse;
|
|
6
|
+
exports.isPolicyAllowResponse = isPolicyAllowResponse;
|
|
7
|
+
exports.isPolicyResponse = isPolicyResponse;
|
|
8
|
+
function isZodValidationDenyResult(result) {
|
|
9
|
+
return typeof result === 'object' && result !== null && 'zodError' in result;
|
|
10
|
+
}
|
|
11
|
+
function isPolicyDenyResponse(val) {
|
|
12
|
+
return typeof val === 'object' && val !== null && val.allow === false;
|
|
13
|
+
}
|
|
14
|
+
function isPolicyAllowResponse(val) {
|
|
15
|
+
return typeof val === 'object' && val !== null && val.allow === true;
|
|
16
|
+
}
|
|
17
|
+
function isPolicyResponse(value) {
|
|
18
|
+
return (typeof value === 'object' &&
|
|
19
|
+
value !== null &&
|
|
20
|
+
'allow' in value &&
|
|
21
|
+
typeof value.allow === 'boolean');
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=typeGuards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../../../src/lib/policyCore/helpers/typeGuards.ts"],"names":[],"mappings":";AAAA,2CAA2C;;AAY3C,8DAEC;AAED,oDAEC;AAED,sDAEC;AAED,4CASC;AArBD,SAAgB,yBAAyB,CAAC,MAAe;IACvD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,UAAU,IAAI,MAAM,CAAC;AAC/E,CAAC;AAED,SAAgB,oBAAoB,CAAI,GAAY;IAClD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAK,GAAW,CAAC,KAAK,KAAK,KAAK,CAAC;AACjF,CAAC;AAED,SAAgB,qBAAqB,CAAI,GAAY;IACnD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAK,GAAW,CAAC,KAAK,KAAK,IAAI,CAAC;AAChF,CAAC;AAED,SAAgB,gBAAgB,CAC9B,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAQ,KAAa,CAAC,KAAK,KAAK,SAAS,CAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ZodType } from 'zod';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import type { PolicyResponseDeny } from '../../types';
|
|
4
|
+
/**
|
|
5
|
+
* Matches the minimum structure of a PolicyResponse.
|
|
6
|
+
* This is useful when validating that a response shape is at least plausible.
|
|
7
|
+
*/
|
|
8
|
+
export declare const PolicyResponseShape: z.ZodObject<{
|
|
9
|
+
allow: z.ZodBoolean;
|
|
10
|
+
result: z.ZodUnknown;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
allow: boolean;
|
|
13
|
+
result?: unknown;
|
|
14
|
+
}, {
|
|
15
|
+
allow: boolean;
|
|
16
|
+
result?: unknown;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Validates a value using a Zod schema (or requires undefined if none given).
|
|
20
|
+
* Returns parsed result or a standardized deny object.
|
|
21
|
+
*
|
|
22
|
+
* @param value - The raw value to validate
|
|
23
|
+
* @param schema - A Zod schema to apply, or undefined (meaning: must be undefined)
|
|
24
|
+
* @param phase - One of 'evaluate' | 'precheck' | 'commit'
|
|
25
|
+
* @param stage - 'parameters' (before calling the lifecycle phase) or 'result' (after receiving the result)
|
|
26
|
+
*
|
|
27
|
+
* @returns The parsed result, or a PolicyResponseDeny with a ZodValidationDenyResult
|
|
28
|
+
*/
|
|
29
|
+
export declare function validateOrDeny<T extends ZodType<any, any, any>>(value: unknown, schema: T, phase: 'evaluate' | 'precheck' | 'commit', stage: 'input' | 'output'): z.infer<T> | PolicyResponseDeny<never>;
|
|
30
|
+
export declare function getValidatedParamsOrDeny<TAbilityParams extends z.ZodType<any, any, any>, TUserParams extends z.ZodType<any, any, any>>({ rawAbilityParams, rawUserParams, abilityParamsSchema, userParamsSchema, phase, }: {
|
|
31
|
+
rawAbilityParams: unknown;
|
|
32
|
+
rawUserParams: unknown;
|
|
33
|
+
abilityParamsSchema: TAbilityParams;
|
|
34
|
+
userParamsSchema: TUserParams;
|
|
35
|
+
phase: 'evaluate' | 'precheck';
|
|
36
|
+
}): PolicyResponseDeny<never> | {
|
|
37
|
+
abilityParams: z.infer<TAbilityParams>;
|
|
38
|
+
userParams: z.infer<TUserParams>;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Given an unknown policy response result and the known allow/deny schemas,
|
|
42
|
+
* this function returns the appropriate Zod schema to use when validating `.result`.
|
|
43
|
+
*
|
|
44
|
+
* - If the response shape is invalid, returns a Zod schema matching the PolicyResponse structure.
|
|
45
|
+
* - If the shape is valid, returns either the allow or deny result schema.
|
|
46
|
+
*/
|
|
47
|
+
export declare function getSchemaForPolicyResponseResult({ value, allowResultSchema, denyResultSchema, }: {
|
|
48
|
+
value: unknown;
|
|
49
|
+
allowResultSchema: z.ZodType<any, any, any>;
|
|
50
|
+
denyResultSchema: z.ZodType<any, any, any>;
|
|
51
|
+
}): {
|
|
52
|
+
schemaToUse: z.ZodType<any, any, any>;
|
|
53
|
+
parsedType: 'allow' | 'deny' | 'unknown';
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=zod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../../../../src/lib/policyCore/helpers/zod.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAMtD;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC7D,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,EACzC,KAAK,EAAE,OAAO,GAAG,QAAQ,GACxB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAiBxC;AAED,wBAAgB,wBAAwB,CACtC,cAAc,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC/C,WAAW,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC5C,EACA,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,GACN,EAAE;IACD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,cAAc,CAAC;IACpC,gBAAgB,EAAE,WAAW,CAAC;IAC9B,KAAK,EAAE,UAAU,GAAG,UAAU,CAAC;CAChC,GACG,kBAAkB,CAAC,KAAK,CAAC,GACzB;IACE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;CAClC,CAeJ;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,EAC/C,KAAK,EACL,iBAAiB,EACjB,gBAAgB,GACjB,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5C,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CAC5C,GAAG;IACF,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACtC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CAC1C,CAkBA"}
|