@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.
Files changed (209) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/CONTRIBUTING.md +117 -0
  3. package/README.md +213 -0
  4. package/dist/package.json +44 -0
  5. package/dist/src/index.d.ts +15 -0
  6. package/dist/src/index.d.ts.map +1 -0
  7. package/dist/src/index.js +21 -0
  8. package/dist/src/index.js.map +1 -0
  9. package/dist/src/internal.d.ts +12 -0
  10. package/dist/src/internal.d.ts.map +1 -0
  11. package/dist/src/internal.js +32 -0
  12. package/dist/src/internal.js.map +1 -0
  13. package/dist/src/lib/abilityCore/abilityConfig/context/abilityContext.d.ts +28 -0
  14. package/dist/src/lib/abilityCore/abilityConfig/context/abilityContext.d.ts.map +1 -0
  15. package/dist/src/lib/abilityCore/abilityConfig/context/abilityContext.js +51 -0
  16. package/dist/src/lib/abilityCore/abilityConfig/context/abilityContext.js.map +1 -0
  17. package/dist/src/lib/abilityCore/abilityConfig/context/resultCreators.d.ts +18 -0
  18. package/dist/src/lib/abilityCore/abilityConfig/context/resultCreators.d.ts.map +1 -0
  19. package/dist/src/lib/abilityCore/abilityConfig/context/resultCreators.js +48 -0
  20. package/dist/src/lib/abilityCore/abilityConfig/context/resultCreators.js.map +1 -0
  21. package/dist/src/lib/abilityCore/abilityConfig/context/types.d.ts +31 -0
  22. package/dist/src/lib/abilityCore/abilityConfig/context/types.d.ts.map +1 -0
  23. package/dist/src/lib/abilityCore/abilityConfig/context/types.js +9 -0
  24. package/dist/src/lib/abilityCore/abilityConfig/context/types.js.map +1 -0
  25. package/dist/src/lib/abilityCore/abilityConfig/types.d.ts +20 -0
  26. package/dist/src/lib/abilityCore/abilityConfig/types.d.ts.map +1 -0
  27. package/dist/src/lib/abilityCore/abilityConfig/types.js +4 -0
  28. package/dist/src/lib/abilityCore/abilityConfig/types.js.map +1 -0
  29. package/dist/src/lib/abilityCore/bundledAbility/bundledAbility.d.ts +5 -0
  30. package/dist/src/lib/abilityCore/bundledAbility/bundledAbility.d.ts.map +1 -0
  31. package/dist/src/lib/abilityCore/bundledAbility/bundledAbility.js +21 -0
  32. package/dist/src/lib/abilityCore/bundledAbility/bundledAbility.js.map +1 -0
  33. package/dist/src/lib/abilityCore/bundledAbility/types.d.ts +18 -0
  34. package/dist/src/lib/abilityCore/bundledAbility/types.d.ts.map +1 -0
  35. package/dist/src/lib/abilityCore/bundledAbility/types.js +4 -0
  36. package/dist/src/lib/abilityCore/bundledAbility/types.js.map +1 -0
  37. package/dist/src/lib/abilityCore/helpers/getMappedAbilityPolicyParams.d.ts +5 -0
  38. package/dist/src/lib/abilityCore/helpers/getMappedAbilityPolicyParams.d.ts.map +1 -0
  39. package/dist/src/lib/abilityCore/helpers/getMappedAbilityPolicyParams.js +18 -0
  40. package/dist/src/lib/abilityCore/helpers/getMappedAbilityPolicyParams.js.map +1 -0
  41. package/dist/src/lib/abilityCore/helpers/getPkpInfo.d.ts +10 -0
  42. package/dist/src/lib/abilityCore/helpers/getPkpInfo.d.ts.map +1 -0
  43. package/dist/src/lib/abilityCore/helpers/getPkpInfo.js +26 -0
  44. package/dist/src/lib/abilityCore/helpers/getPkpInfo.js.map +1 -0
  45. package/dist/src/lib/abilityCore/helpers/index.d.ts +5 -0
  46. package/dist/src/lib/abilityCore/helpers/index.d.ts.map +1 -0
  47. package/dist/src/lib/abilityCore/helpers/index.js +12 -0
  48. package/dist/src/lib/abilityCore/helpers/index.js.map +1 -0
  49. package/dist/src/lib/abilityCore/helpers/resultCreators.d.ts +21 -0
  50. package/dist/src/lib/abilityCore/helpers/resultCreators.d.ts.map +1 -0
  51. package/dist/src/lib/abilityCore/helpers/resultCreators.js +48 -0
  52. package/dist/src/lib/abilityCore/helpers/resultCreators.js.map +1 -0
  53. package/dist/src/lib/abilityCore/helpers/supportedPoliciesForAbility.d.ts +55 -0
  54. package/dist/src/lib/abilityCore/helpers/supportedPoliciesForAbility.d.ts.map +1 -0
  55. package/dist/src/lib/abilityCore/helpers/supportedPoliciesForAbility.js +68 -0
  56. package/dist/src/lib/abilityCore/helpers/supportedPoliciesForAbility.js.map +1 -0
  57. package/dist/src/lib/abilityCore/helpers/typeGuards.d.ts +8 -0
  58. package/dist/src/lib/abilityCore/helpers/typeGuards.d.ts.map +1 -0
  59. package/dist/src/lib/abilityCore/helpers/typeGuards.js +28 -0
  60. package/dist/src/lib/abilityCore/helpers/typeGuards.js.map +1 -0
  61. package/dist/src/lib/abilityCore/helpers/validatePolicies.d.ts +24 -0
  62. package/dist/src/lib/abilityCore/helpers/validatePolicies.d.ts.map +1 -0
  63. package/dist/src/lib/abilityCore/helpers/validatePolicies.js +31 -0
  64. package/dist/src/lib/abilityCore/helpers/validatePolicies.js.map +1 -0
  65. package/dist/src/lib/abilityCore/helpers/zod.d.ts +43 -0
  66. package/dist/src/lib/abilityCore/helpers/zod.d.ts.map +1 -0
  67. package/dist/src/lib/abilityCore/helpers/zod.js +70 -0
  68. package/dist/src/lib/abilityCore/helpers/zod.js.map +1 -0
  69. package/dist/src/lib/abilityCore/vincentAbility.d.ts +54 -0
  70. package/dist/src/lib/abilityCore/vincentAbility.d.ts.map +1 -0
  71. package/dist/src/lib/abilityCore/vincentAbility.js +162 -0
  72. package/dist/src/lib/abilityCore/vincentAbility.js.map +1 -0
  73. package/dist/src/lib/assertSupportedAbilityVersion.d.ts +2 -0
  74. package/dist/src/lib/assertSupportedAbilityVersion.d.ts.map +1 -0
  75. package/dist/src/lib/assertSupportedAbilityVersion.js +15 -0
  76. package/dist/src/lib/assertSupportedAbilityVersion.js.map +1 -0
  77. package/dist/src/lib/constants.d.ts +2 -0
  78. package/dist/src/lib/constants.d.ts.map +1 -0
  79. package/dist/src/lib/constants.js +5 -0
  80. package/dist/src/lib/constants.js.map +1 -0
  81. package/dist/src/lib/handlers/constants.d.ts +2 -0
  82. package/dist/src/lib/handlers/constants.d.ts.map +1 -0
  83. package/dist/src/lib/handlers/constants.js +6 -0
  84. package/dist/src/lib/handlers/constants.js.map +1 -0
  85. package/dist/src/lib/handlers/evaluatePolicies.d.ts +11 -0
  86. package/dist/src/lib/handlers/evaluatePolicies.d.ts.map +1 -0
  87. package/dist/src/lib/handlers/evaluatePolicies.js +110 -0
  88. package/dist/src/lib/handlers/evaluatePolicies.js.map +1 -0
  89. package/dist/src/lib/handlers/vincentAbilityHandler.d.ts +15 -0
  90. package/dist/src/lib/handlers/vincentAbilityHandler.d.ts.map +1 -0
  91. package/dist/src/lib/handlers/vincentAbilityHandler.js +160 -0
  92. package/dist/src/lib/handlers/vincentAbilityHandler.js.map +1 -0
  93. package/dist/src/lib/handlers/vincentPolicyHandler.d.ts +13 -0
  94. package/dist/src/lib/handlers/vincentPolicyHandler.d.ts.map +1 -0
  95. package/dist/src/lib/handlers/vincentPolicyHandler.js +70 -0
  96. package/dist/src/lib/handlers/vincentPolicyHandler.js.map +1 -0
  97. package/dist/src/lib/policyCore/bundledPolicy/bundledPolicy.d.ts +5 -0
  98. package/dist/src/lib/policyCore/bundledPolicy/bundledPolicy.d.ts.map +1 -0
  99. package/dist/src/lib/policyCore/bundledPolicy/bundledPolicy.js +21 -0
  100. package/dist/src/lib/policyCore/bundledPolicy/bundledPolicy.js.map +1 -0
  101. package/dist/src/lib/policyCore/bundledPolicy/types.d.ts +17 -0
  102. package/dist/src/lib/policyCore/bundledPolicy/types.d.ts.map +1 -0
  103. package/dist/src/lib/policyCore/bundledPolicy/types.js +4 -0
  104. package/dist/src/lib/policyCore/bundledPolicy/types.js.map +1 -0
  105. package/dist/src/lib/policyCore/helpers/index.d.ts +5 -0
  106. package/dist/src/lib/policyCore/helpers/index.d.ts.map +1 -0
  107. package/dist/src/lib/policyCore/helpers/index.js +16 -0
  108. package/dist/src/lib/policyCore/helpers/index.js.map +1 -0
  109. package/dist/src/lib/policyCore/helpers/resultCreators.d.ts +38 -0
  110. package/dist/src/lib/policyCore/helpers/resultCreators.d.ts.map +1 -0
  111. package/dist/src/lib/policyCore/helpers/resultCreators.js +89 -0
  112. package/dist/src/lib/policyCore/helpers/resultCreators.js.map +1 -0
  113. package/dist/src/lib/policyCore/helpers/typeGuards.d.ts +7 -0
  114. package/dist/src/lib/policyCore/helpers/typeGuards.d.ts.map +1 -0
  115. package/dist/src/lib/policyCore/helpers/typeGuards.js +23 -0
  116. package/dist/src/lib/policyCore/helpers/typeGuards.js.map +1 -0
  117. package/dist/src/lib/policyCore/helpers/zod.d.ts +55 -0
  118. package/dist/src/lib/policyCore/helpers/zod.d.ts.map +1 -0
  119. package/dist/src/lib/policyCore/helpers/zod.js +82 -0
  120. package/dist/src/lib/policyCore/helpers/zod.js.map +1 -0
  121. package/dist/src/lib/policyCore/index.d.ts +3 -0
  122. package/dist/src/lib/policyCore/index.d.ts.map +1 -0
  123. package/dist/src/lib/policyCore/index.js +8 -0
  124. package/dist/src/lib/policyCore/index.js.map +1 -0
  125. package/dist/src/lib/policyCore/policyConfig/context/policyConfigContext.d.ts +12 -0
  126. package/dist/src/lib/policyCore/policyConfig/context/policyConfigContext.d.ts.map +1 -0
  127. package/dist/src/lib/policyCore/policyConfig/context/policyConfigContext.js +20 -0
  128. package/dist/src/lib/policyCore/policyConfig/context/policyConfigContext.js.map +1 -0
  129. package/dist/src/lib/policyCore/policyConfig/context/resultCreators.d.ts +6 -0
  130. package/dist/src/lib/policyCore/policyConfig/context/resultCreators.d.ts.map +1 -0
  131. package/dist/src/lib/policyCore/policyConfig/context/resultCreators.js +30 -0
  132. package/dist/src/lib/policyCore/policyConfig/context/resultCreators.js.map +1 -0
  133. package/dist/src/lib/policyCore/policyConfig/context/types.d.ts +24 -0
  134. package/dist/src/lib/policyCore/policyConfig/context/types.d.ts.map +1 -0
  135. package/dist/src/lib/policyCore/policyConfig/context/types.js +5 -0
  136. package/dist/src/lib/policyCore/policyConfig/context/types.js.map +1 -0
  137. package/dist/src/lib/policyCore/policyConfig/types.d.ts +46 -0
  138. package/dist/src/lib/policyCore/policyConfig/types.d.ts.map +1 -0
  139. package/dist/src/lib/policyCore/policyConfig/types.js +3 -0
  140. package/dist/src/lib/policyCore/policyConfig/types.js.map +1 -0
  141. package/dist/src/lib/policyCore/policyParameters/getOnchainPolicyParams.d.ts +17 -0
  142. package/dist/src/lib/policyCore/policyParameters/getOnchainPolicyParams.d.ts.map +1 -0
  143. package/dist/src/lib/policyCore/policyParameters/getOnchainPolicyParams.js +54 -0
  144. package/dist/src/lib/policyCore/policyParameters/getOnchainPolicyParams.js.map +1 -0
  145. package/dist/src/lib/policyCore/vincentPolicy.d.ts +92 -0
  146. package/dist/src/lib/policyCore/vincentPolicy.d.ts.map +1 -0
  147. package/dist/src/lib/policyCore/vincentPolicy.js +242 -0
  148. package/dist/src/lib/policyCore/vincentPolicy.js.map +1 -0
  149. package/dist/src/lib/types.d.ts +260 -0
  150. package/dist/src/lib/types.d.ts.map +1 -0
  151. package/dist/src/lib/types.js +4 -0
  152. package/dist/src/lib/types.js.map +1 -0
  153. package/dist/src/lib/utils.d.ts +2 -0
  154. package/dist/src/lib/utils.d.ts.map +1 -0
  155. package/dist/src/lib/utils.js +8 -0
  156. package/dist/src/lib/utils.js.map +1 -0
  157. package/dist/src/type-inference-verification/ability-definition-tests.d.ts +702 -0
  158. package/dist/src/type-inference-verification/ability-definition-tests.d.ts.map +1 -0
  159. package/dist/src/type-inference-verification/ability-definition-tests.js +203 -0
  160. package/dist/src/type-inference-verification/ability-definition-tests.js.map +1 -0
  161. package/dist/src/type-inference-verification/ability-lifecycle-inference.d.ts +2 -0
  162. package/dist/src/type-inference-verification/ability-lifecycle-inference.d.ts.map +1 -0
  163. package/dist/src/type-inference-verification/ability-lifecycle-inference.js +109 -0
  164. package/dist/src/type-inference-verification/ability-lifecycle-inference.js.map +1 -0
  165. package/dist/src/type-inference-verification/ability-lifecycle-succeed-fail-tests.d.ts +923 -0
  166. package/dist/src/type-inference-verification/ability-lifecycle-succeed-fail-tests.d.ts.map +1 -0
  167. package/dist/src/type-inference-verification/ability-lifecycle-succeed-fail-tests.js +196 -0
  168. package/dist/src/type-inference-verification/ability-lifecycle-succeed-fail-tests.js.map +1 -0
  169. package/dist/src/type-inference-verification/allow-deny-test-cases-ability.d.ts +4305 -0
  170. package/dist/src/type-inference-verification/allow-deny-test-cases-ability.d.ts.map +1 -0
  171. package/dist/src/type-inference-verification/allow-deny-test-cases-ability.js +644 -0
  172. package/dist/src/type-inference-verification/allow-deny-test-cases-ability.js.map +1 -0
  173. package/dist/src/type-inference-verification/allow-deny-test-cases.d.ts +646 -0
  174. package/dist/src/type-inference-verification/allow-deny-test-cases.d.ts.map +1 -0
  175. package/dist/src/type-inference-verification/allow-deny-test-cases.js +264 -0
  176. package/dist/src/type-inference-verification/allow-deny-test-cases.js.map +1 -0
  177. package/dist/src/type-inference-verification/context-switching-tests.d.ts +637 -0
  178. package/dist/src/type-inference-verification/context-switching-tests.d.ts.map +1 -0
  179. package/dist/src/type-inference-verification/context-switching-tests.js +229 -0
  180. package/dist/src/type-inference-verification/context-switching-tests.js.map +1 -0
  181. package/dist/src/type-inference-verification/create-policy-map-from-tool-policies.d.ts +2 -0
  182. package/dist/src/type-inference-verification/create-policy-map-from-tool-policies.d.ts.map +1 -0
  183. package/dist/src/type-inference-verification/create-policy-map-from-tool-policies.js +56 -0
  184. package/dist/src/type-inference-verification/create-policy-map-from-tool-policies.js.map +1 -0
  185. package/dist/src/type-inference-verification/create-vincent-ability-policy.d.ts +2 -0
  186. package/dist/src/type-inference-verification/create-vincent-ability-policy.d.ts.map +1 -0
  187. package/dist/src/type-inference-verification/create-vincent-ability-policy.js +49 -0
  188. package/dist/src/type-inference-verification/create-vincent-ability-policy.js.map +1 -0
  189. package/dist/src/type-inference-verification/create-vincent-ability.d.ts +250 -0
  190. package/dist/src/type-inference-verification/create-vincent-ability.d.ts.map +1 -0
  191. package/dist/src/type-inference-verification/create-vincent-ability.js +68 -0
  192. package/dist/src/type-inference-verification/create-vincent-ability.js.map +1 -0
  193. package/dist/src/type-inference-verification/parameter-inference-tests-tool.d.ts +1710 -0
  194. package/dist/src/type-inference-verification/parameter-inference-tests-tool.d.ts.map +1 -0
  195. package/dist/src/type-inference-verification/parameter-inference-tests-tool.js +537 -0
  196. package/dist/src/type-inference-verification/parameter-inference-tests-tool.js.map +1 -0
  197. package/dist/src/type-inference-verification/parameter-inference-tests.d.ts +456 -0
  198. package/dist/src/type-inference-verification/parameter-inference-tests.d.ts.map +1 -0
  199. package/dist/src/type-inference-verification/parameter-inference-tests.js +179 -0
  200. package/dist/src/type-inference-verification/parameter-inference-tests.js.map +1 -0
  201. package/dist/src/type-inference-verification/playground.d.ts +1556 -0
  202. package/dist/src/type-inference-verification/playground.d.ts.map +1 -0
  203. package/dist/src/type-inference-verification/playground.js +473 -0
  204. package/dist/src/type-inference-verification/playground.js.map +1 -0
  205. package/dist/src/type-inference-verification/schema-test.d.ts +470 -0
  206. package/dist/src/type-inference-verification/schema-test.d.ts.map +1 -0
  207. package/dist/src/type-inference-verification/schema-test.js +252 -0
  208. package/dist/src/type-inference-verification/schema-test.js.map +1 -0
  209. package/package.json +43 -0
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ // src/type-inference-verification/ability-definition-tests.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.testPolicyEvaluationResults = testPolicyEvaluationResults;
5
+ /**
6
+ * Ability Definition Tests
7
+ *
8
+ * A focused test file to verify that VincentPolicyEvaluationResults inference works correctly,
9
+ * using an ability with two policies - one simple and one with commit functionality.
10
+ */
11
+ const zod_1 = require("zod");
12
+ const helpers_1 = require("../lib/abilityCore/helpers");
13
+ const vincentAbility_1 = require("../lib/abilityCore/vincentAbility");
14
+ const bundledPolicy_1 = require("../lib/policyCore/bundledPolicy/bundledPolicy");
15
+ const vincentPolicy_1 = require("../lib/policyCore/vincentPolicy");
16
+ // Base ability schema
17
+ const baseAbilitySchema = zod_1.z.object({
18
+ action: zod_1.z.string(),
19
+ target: zod_1.z.string(),
20
+ amount: zod_1.z.number(),
21
+ });
22
+ /* eslint-disable @typescript-eslint/no-unused-vars */
23
+ /**
24
+ * Simple test to verify inference of policy evaluation results
25
+ * with a focus on the commit function type inference.
26
+ */
27
+ function testPolicyEvaluationResults() {
28
+ // Policy 1: Simple policy with object result schema
29
+ const evalResultsPolicy = (0, vincentPolicy_1.createVincentPolicy)({
30
+ packageName: '@lit-protocol/simple-policy@1.0.0',
31
+ abilityParamsSchema: zod_1.z.object({
32
+ actionType: zod_1.z.string(),
33
+ targetId: zod_1.z.string(),
34
+ }),
35
+ evalAllowResultSchema: zod_1.z.object({
36
+ approved: zod_1.z.boolean(),
37
+ reason: zod_1.z.string(),
38
+ }),
39
+ evaluate: async (params, { allow }) => {
40
+ return allow({
41
+ approved: true,
42
+ reason: `Action ${params.abilityParams.actionType} approved`,
43
+ });
44
+ },
45
+ });
46
+ const simplePolicy = (0, vincentPolicy_1.createVincentAbilityPolicy)({
47
+ abilityParamsSchema: baseAbilitySchema,
48
+ bundledVincentPolicy: (0, bundledPolicy_1.asBundledVincentPolicy)(evalResultsPolicy, '109i0ifj'),
49
+ abilityParameterMappings: {
50
+ action: 'actionType',
51
+ target: 'targetId',
52
+ },
53
+ });
54
+ // Policy 2: Policy with commit function
55
+ const commitResultsPolicy = (0, vincentPolicy_1.createVincentPolicy)({
56
+ packageName: '@lit-protocol/commit-policy@1.0.0',
57
+ abilityParamsSchema: zod_1.z.object({
58
+ operation: zod_1.z.string(),
59
+ resource: zod_1.z.string(),
60
+ value: zod_1.z.number(),
61
+ }),
62
+ // Evaluation schema
63
+ evalAllowResultSchema: zod_1.z.object({
64
+ transactionId: zod_1.z.string(),
65
+ status: zod_1.z.string(),
66
+ }),
67
+ // Commit phase schemas
68
+ commitParamsSchema: zod_1.z.object({
69
+ transactionId: zod_1.z.string(),
70
+ status: zod_1.z.enum(['complete', 'reject']),
71
+ }),
72
+ commitAllowResultSchema: zod_1.z.object({
73
+ confirmed: zod_1.z.boolean(),
74
+ timestamp: zod_1.z.number(),
75
+ }),
76
+ evaluate: async (params, { allow }) => {
77
+ const txId = `tx-${Date.now()}`;
78
+ return allow({
79
+ transactionId: txId,
80
+ status: 'pending',
81
+ });
82
+ },
83
+ commit: async (params, { allow }) => {
84
+ // Access commit parameters
85
+ const { transactionId, status } = params;
86
+ console.log(transactionId);
87
+ return allow({
88
+ confirmed: status === 'complete',
89
+ timestamp: Date.now(),
90
+ });
91
+ },
92
+ });
93
+ const commitPolicy = (0, vincentPolicy_1.createVincentAbilityPolicy)({
94
+ abilityParamsSchema: baseAbilitySchema,
95
+ bundledVincentPolicy: (0, bundledPolicy_1.asBundledVincentPolicy)(commitResultsPolicy, 'ajialkjads'),
96
+ abilityParameterMappings: {
97
+ action: 'operation',
98
+ target: 'resource',
99
+ amount: 'value',
100
+ },
101
+ });
102
+ // Define ability result schemas
103
+ const executeSuccessSchema = zod_1.z.object({
104
+ success: zod_1.z.boolean(),
105
+ confirmed: zod_1.z.boolean().optional(),
106
+ timestamp: zod_1.z.number().optional(),
107
+ message: zod_1.z.string(),
108
+ });
109
+ const executeFailSchema = zod_1.z.object({
110
+ errorCode: zod_1.z.number(),
111
+ errorMessage: zod_1.z.string(),
112
+ });
113
+ const precheckSuccessSchema = zod_1.z.object({
114
+ valid: zod_1.z.boolean(),
115
+ validationMessage: zod_1.z.string().optional(),
116
+ });
117
+ const precheckFailSchema = zod_1.z.object({
118
+ valid: zod_1.z.boolean(),
119
+ issues: zod_1.z.array(zod_1.z.string()),
120
+ });
121
+ // Create ability with both policies
122
+ return (0, vincentAbility_1.createVincentAbility)({
123
+ packageName: '@lit-protocol/mahAbility@1.0.0',
124
+ abilityDescription: 'Mah Ability',
125
+ abilityParamsSchema: baseAbilitySchema,
126
+ supportedPolicies: (0, helpers_1.supportedPoliciesForAbility)([simplePolicy, commitPolicy]),
127
+ // Add schemas for ability results
128
+ precheckSuccessSchema,
129
+ precheckFailSchema,
130
+ executeSuccessSchema,
131
+ executeFailSchema,
132
+ precheck: async ({ abilityParams }, { fail, succeed }) => {
133
+ // Perform basic validation
134
+ if (!abilityParams.action || !abilityParams.target || abilityParams.amount <= 0) {
135
+ const issues = [];
136
+ if (!abilityParams.action)
137
+ issues.push('Missing action');
138
+ if (!abilityParams.target)
139
+ issues.push('Missing target');
140
+ if (abilityParams.amount <= 0)
141
+ issues.push('Amount must be positive');
142
+ return fail({
143
+ valid: false,
144
+ issues,
145
+ });
146
+ }
147
+ return succeed({
148
+ valid: true,
149
+ validationMessage: 'All parameters are valid',
150
+ });
151
+ },
152
+ // Execute function to demonstrate result type inference
153
+ execute: async (_, { fail, succeed, policiesContext }) => {
154
+ try {
155
+ // Verify type inference works correctly when results.allow is true
156
+ // Access specific policy results - now TypeScript knows this is defined
157
+ if (policiesContext.allowedPolicies['@lit-protocol/simple-policy@1.0.0']) {
158
+ const simpleResult = policiesContext.allowedPolicies['@lit-protocol/simple-policy@1.0.0'].result;
159
+ // TypeScript should now correctly infer the result type
160
+ const { approved, reason } = simpleResult;
161
+ console.log(approved, reason);
162
+ }
163
+ // Type inference should work for the commit policy result
164
+ if (policiesContext.allowedPolicies['@lit-protocol/commit-policy@1.0.0']) {
165
+ const commitPolicyResult = policiesContext.allowedPolicies['@lit-protocol/commit-policy@1.0.0'].result;
166
+ // No need for type guards anymore
167
+ const { transactionId, status } = commitPolicyResult;
168
+ console.log(status);
169
+ // The commit function should be available and properly typed
170
+ const commitFn = policiesContext.allowedPolicies['@lit-protocol/commit-policy@1.0.0'].commit;
171
+ // Call commit with properly typed parameters
172
+ const commitResult = await commitFn({
173
+ transactionId,
174
+ status: 'complete',
175
+ });
176
+ // Type inference should work for commit result
177
+ if (commitResult.allow) {
178
+ const { confirmed, timestamp } = commitResult.result;
179
+ return succeed({
180
+ success: true,
181
+ confirmed,
182
+ timestamp,
183
+ message: 'Operation executed successfully',
184
+ });
185
+ }
186
+ }
187
+ // If we reach here, something went wrong with the commit
188
+ return fail({
189
+ errorCode: 400,
190
+ errorMessage: 'Failed to complete the transaction commit process',
191
+ });
192
+ }
193
+ catch (error) {
194
+ // Handle any unexpected errors
195
+ return fail({
196
+ errorCode: 500,
197
+ errorMessage: 'Internal execution error',
198
+ });
199
+ }
200
+ },
201
+ });
202
+ }
203
+ //# sourceMappingURL=ability-definition-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ability-definition-tests.js","sourceRoot":"","sources":["../../../src/type-inference-verification/ability-definition-tests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function run(): Promise<void>;
2
+ //# sourceMappingURL=ability-lifecycle-inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ability-lifecycle-inference.d.ts","sourceRoot":"","sources":["../../../src/type-inference-verification/ability-lifecycle-inference.ts"],"names":[],"mappings":"AA6FA,wBAAsB,GAAG,kBAgCxB"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ // src/type-inference-verification/ability-lifecycle-inference.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.run = run;
5
+ const zod_1 = require("zod");
6
+ const helpers_1 = require("../lib/abilityCore/helpers");
7
+ const vincentAbility_1 = require("../lib/abilityCore/vincentAbility");
8
+ const bundledPolicy_1 = require("../lib/policyCore/bundledPolicy/bundledPolicy");
9
+ const resultCreators_1 = require("../lib/policyCore/helpers/resultCreators");
10
+ const vincentPolicy_1 = require("../lib/policyCore/vincentPolicy");
11
+ const abilityParamsSchema = zod_1.z.object({
12
+ flag: zod_1.z.boolean(),
13
+ value: zod_1.z.number(),
14
+ });
15
+ const aVincentPolicy = (0, vincentPolicy_1.createVincentPolicy)({
16
+ packageName: 'a',
17
+ abilityParamsSchema: zod_1.z.object({ foo: zod_1.z.string() }),
18
+ evalAllowResultSchema: zod_1.z.object({ approved: zod_1.z.boolean() }),
19
+ commit: async (_, ctx) => ctx.allow(),
20
+ evaluate: async (_, ctx) => ctx.allow({ approved: true }),
21
+ });
22
+ const policyA = (0, vincentPolicy_1.createVincentAbilityPolicy)({
23
+ abilityParamsSchema,
24
+ bundledVincentPolicy: (0, bundledPolicy_1.asBundledVincentPolicy)(aVincentPolicy, 'cid-a'),
25
+ abilityParameterMappings: {
26
+ flag: 'foo',
27
+ },
28
+ });
29
+ const bVincentPolicy = (0, vincentPolicy_1.createVincentPolicy)({
30
+ packageName: 'b',
31
+ abilityParamsSchema: zod_1.z.object({ bar: zod_1.z.number() }),
32
+ evalAllowResultSchema: zod_1.z.string(),
33
+ evaluate: async (_, ctx) => ctx.allow('hello'),
34
+ });
35
+ const policyB = (0, vincentPolicy_1.createVincentAbilityPolicy)({
36
+ abilityParamsSchema,
37
+ bundledVincentPolicy: (0, bundledPolicy_1.asBundledVincentPolicy)(bVincentPolicy, 'cid-b'),
38
+ abilityParameterMappings: {
39
+ value: 'bar',
40
+ },
41
+ });
42
+ const ability = (0, vincentAbility_1.createVincentAbility)({
43
+ packageName: '@lit-protocol/yesability3@1.0.0',
44
+ abilityDescription: 'Yes Ability',
45
+ abilityParamsSchema,
46
+ supportedPolicies: (0, helpers_1.supportedPoliciesForAbility)([policyA, policyB]),
47
+ execute: async ({ abilityParams }, { policiesContext, succeed, fail }) => {
48
+ // Type inference for allowedPolicies
49
+ const a = policiesContext.allowedPolicies['a'];
50
+ const b = policiesContext.allowedPolicies.b;
51
+ // ✅ Expect result to be { approved: boolean }
52
+ if (a) {
53
+ console.log(a.result.approved);
54
+ // ✅ Should compile - commit exists on 'a'
55
+ if (a.commit) {
56
+ const res = await a.commit();
57
+ const wat = res.allow;
58
+ console.log(wat);
59
+ if (res.allow) {
60
+ // @ts-expect-error - 'success' doesn't exist because no commit result schema
61
+ console.log(res.result.success);
62
+ }
63
+ }
64
+ }
65
+ if (b) {
66
+ // @ts-expect-error - 'approved' doesn't exist on string
67
+ console.log(b.result.approved);
68
+ // ✅ Expect result to be string
69
+ const s = b.result;
70
+ console.log(s);
71
+ fail();
72
+ // b.commit();
73
+ }
74
+ return succeed();
75
+ },
76
+ executeSuccessSchema: zod_1.z.undefined(),
77
+ executeFailSchema: zod_1.z.undefined(),
78
+ });
79
+ async function run() {
80
+ await ability.execute({
81
+ abilityParams: {
82
+ flag: true,
83
+ value: 123,
84
+ },
85
+ }, {
86
+ delegation: {
87
+ delegatorPkpInfo: {
88
+ tokenId: '90128301832',
89
+ ethAddress: '0x102398103981032',
90
+ publicKey: '0398103810938ef987ef978fe987ef',
91
+ },
92
+ delegateeAddress: 'y',
93
+ },
94
+ policiesContext: {
95
+ evaluatedPolicies: ['a', 'b'],
96
+ allowedPolicies: {
97
+ a: {
98
+ result: { approved: true },
99
+ commit: async () => (0, resultCreators_1.createAllowResult)({ result: undefined }),
100
+ },
101
+ // @ts-expect-error - commit is inferred as `never` and omitted on purpose
102
+ b: {
103
+ result: 'hello',
104
+ },
105
+ },
106
+ },
107
+ });
108
+ }
109
+ //# sourceMappingURL=ability-lifecycle-inference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ability-lifecycle-inference.js","sourceRoot":"","sources":["../../../src/type-inference-verification/ability-lifecycle-inference.ts"],"names":[],"mappings":"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"}