agentlang 0.0.2

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 (240) hide show
  1. package/LICENSE +83 -0
  2. package/README.md +120 -0
  3. package/bin/cli.js +4 -0
  4. package/out/api/http.d.ts +3 -0
  5. package/out/api/http.d.ts.map +1 -0
  6. package/out/api/http.js +290 -0
  7. package/out/api/http.js.map +1 -0
  8. package/out/cli/cli-util.d.ts +7 -0
  9. package/out/cli/cli-util.d.ts.map +1 -0
  10. package/out/cli/cli-util.js +9 -0
  11. package/out/cli/cli-util.js.map +1 -0
  12. package/out/cli/docs.d.ts +2 -0
  13. package/out/cli/docs.d.ts.map +1 -0
  14. package/out/cli/docs.js +236 -0
  15. package/out/cli/docs.js.map +1 -0
  16. package/out/cli/main.d.ts +288 -0
  17. package/out/cli/main.d.ts.map +1 -0
  18. package/out/cli/main.js +119 -0
  19. package/out/cli/main.js.map +1 -0
  20. package/out/cli/openapi-docs.yml +695 -0
  21. package/out/extension/main.cjs +18093 -0
  22. package/out/extension/main.cjs.map +7 -0
  23. package/out/extension/main.d.ts +4 -0
  24. package/out/extension/main.d.ts.map +1 -0
  25. package/out/extension/main.js +42 -0
  26. package/out/extension/main.js.map +1 -0
  27. package/out/language/agentlang-module.d.ts +42 -0
  28. package/out/language/agentlang-module.d.ts.map +1 -0
  29. package/out/language/agentlang-module.js +42 -0
  30. package/out/language/agentlang-module.js.map +1 -0
  31. package/out/language/agentlang-validator.d.ts +15 -0
  32. package/out/language/agentlang-validator.d.ts.map +1 -0
  33. package/out/language/agentlang-validator.js +50 -0
  34. package/out/language/agentlang-validator.js.map +1 -0
  35. package/out/language/generated/ast.d.ts +491 -0
  36. package/out/language/generated/ast.d.ts.map +1 -0
  37. package/out/language/generated/ast.js +934 -0
  38. package/out/language/generated/ast.js.map +1 -0
  39. package/out/language/generated/grammar.d.ts +7 -0
  40. package/out/language/generated/grammar.d.ts.map +1 -0
  41. package/out/language/generated/grammar.js +4475 -0
  42. package/out/language/generated/grammar.js.map +1 -0
  43. package/out/language/generated/module.d.ts +14 -0
  44. package/out/language/generated/module.d.ts.map +1 -0
  45. package/out/language/generated/module.js +21 -0
  46. package/out/language/generated/module.js.map +1 -0
  47. package/out/language/main-browser.d.ts +2 -0
  48. package/out/language/main-browser.d.ts.map +1 -0
  49. package/out/language/main-browser.js +10 -0
  50. package/out/language/main-browser.js.map +1 -0
  51. package/out/language/main.cjs +36229 -0
  52. package/out/language/main.cjs.map +7 -0
  53. package/out/language/main.d.ts +2 -0
  54. package/out/language/main.d.ts.map +1 -0
  55. package/out/language/main.js +11 -0
  56. package/out/language/main.js.map +1 -0
  57. package/out/language/parser.d.ts +9 -0
  58. package/out/language/parser.d.ts.map +1 -0
  59. package/out/language/parser.js +273 -0
  60. package/out/language/parser.js.map +1 -0
  61. package/out/language/syntax.d.ts +155 -0
  62. package/out/language/syntax.d.ts.map +1 -0
  63. package/out/language/syntax.js +527 -0
  64. package/out/language/syntax.js.map +1 -0
  65. package/out/runtime/agents/common.d.ts +2 -0
  66. package/out/runtime/agents/common.d.ts.map +1 -0
  67. package/out/runtime/agents/common.js +178 -0
  68. package/out/runtime/agents/common.js.map +1 -0
  69. package/out/runtime/agents/impl/openai.d.ts +8 -0
  70. package/out/runtime/agents/impl/openai.d.ts.map +1 -0
  71. package/out/runtime/agents/impl/openai.js +15 -0
  72. package/out/runtime/agents/impl/openai.js.map +1 -0
  73. package/out/runtime/agents/provider.d.ts +21 -0
  74. package/out/runtime/agents/provider.d.ts.map +1 -0
  75. package/out/runtime/agents/provider.js +32 -0
  76. package/out/runtime/agents/provider.js.map +1 -0
  77. package/out/runtime/agents/registry.d.ts +2 -0
  78. package/out/runtime/agents/registry.d.ts.map +1 -0
  79. package/out/runtime/agents/registry.js +10 -0
  80. package/out/runtime/agents/registry.js.map +1 -0
  81. package/out/runtime/auth/cognito.d.ts +16 -0
  82. package/out/runtime/auth/cognito.d.ts.map +1 -0
  83. package/out/runtime/auth/cognito.js +186 -0
  84. package/out/runtime/auth/cognito.js.map +1 -0
  85. package/out/runtime/auth/defs.d.ts +11 -0
  86. package/out/runtime/auth/defs.d.ts.map +1 -0
  87. package/out/runtime/auth/defs.js +24 -0
  88. package/out/runtime/auth/defs.js.map +1 -0
  89. package/out/runtime/auth/interface.d.ts +22 -0
  90. package/out/runtime/auth/interface.d.ts.map +1 -0
  91. package/out/runtime/auth/interface.js +2 -0
  92. package/out/runtime/auth/interface.js.map +1 -0
  93. package/out/runtime/defs.js +24 -0
  94. package/out/runtime/defs.js.map +1 -0
  95. package/out/runtime/interpreter.d.ts +69 -0
  96. package/out/runtime/interpreter.d.ts.map +1 -0
  97. package/out/runtime/interpreter.js +1163 -0
  98. package/out/runtime/interpreter.js.map +1 -0
  99. package/out/runtime/loader.d.ts +25 -0
  100. package/out/runtime/loader.d.ts.map +1 -0
  101. package/out/runtime/loader.js +346 -0
  102. package/out/runtime/loader.js.map +1 -0
  103. package/out/runtime/logger.d.ts +2 -0
  104. package/out/runtime/logger.d.ts.map +1 -0
  105. package/out/runtime/logger.js +44 -0
  106. package/out/runtime/logger.js.map +1 -0
  107. package/out/runtime/module.d.ts +273 -0
  108. package/out/runtime/module.d.ts.map +1 -0
  109. package/out/runtime/module.js +1786 -0
  110. package/out/runtime/module.js.map +1 -0
  111. package/out/runtime/modules/ai.d.ts +26 -0
  112. package/out/runtime/modules/ai.d.ts.map +1 -0
  113. package/out/runtime/modules/ai.js +211 -0
  114. package/out/runtime/modules/ai.js.map +1 -0
  115. package/out/runtime/modules/auth.d.ts +39 -0
  116. package/out/runtime/modules/auth.d.ts.map +1 -0
  117. package/out/runtime/modules/auth.js +359 -0
  118. package/out/runtime/modules/auth.js.map +1 -0
  119. package/out/runtime/modules/core.d.ts +2 -0
  120. package/out/runtime/modules/core.d.ts.map +1 -0
  121. package/out/runtime/modules/core.js +67 -0
  122. package/out/runtime/modules/core.js.map +1 -0
  123. package/out/runtime/relgraph.d.ts +21 -0
  124. package/out/runtime/relgraph.d.ts.map +1 -0
  125. package/out/runtime/relgraph.js +156 -0
  126. package/out/runtime/relgraph.js.map +1 -0
  127. package/out/runtime/resolvers/interface.d.ts +59 -0
  128. package/out/runtime/resolvers/interface.d.ts.map +1 -0
  129. package/out/runtime/resolvers/interface.js +111 -0
  130. package/out/runtime/resolvers/interface.js.map +1 -0
  131. package/out/runtime/resolvers/registry.d.ts +8 -0
  132. package/out/runtime/resolvers/registry.d.ts.map +1 -0
  133. package/out/runtime/resolvers/registry.js +26 -0
  134. package/out/runtime/resolvers/registry.js.map +1 -0
  135. package/out/runtime/resolvers/sqldb/database.d.ts +50 -0
  136. package/out/runtime/resolvers/sqldb/database.d.ts.map +1 -0
  137. package/out/runtime/resolvers/sqldb/database.js +618 -0
  138. package/out/runtime/resolvers/sqldb/database.js.map +1 -0
  139. package/out/runtime/resolvers/sqldb/dbutil.d.ts +18 -0
  140. package/out/runtime/resolvers/sqldb/dbutil.d.ts.map +1 -0
  141. package/out/runtime/resolvers/sqldb/dbutil.js +221 -0
  142. package/out/runtime/resolvers/sqldb/dbutil.js.map +1 -0
  143. package/out/runtime/resolvers/sqldb/impl.d.ts +26 -0
  144. package/out/runtime/resolvers/sqldb/impl.d.ts.map +1 -0
  145. package/out/runtime/resolvers/sqldb/impl.js +300 -0
  146. package/out/runtime/resolvers/sqldb/impl.js.map +1 -0
  147. package/out/runtime/state.js +83 -0
  148. package/out/runtime/state.js.map +1 -0
  149. package/out/runtime/util.d.ts +43 -0
  150. package/out/runtime/util.d.ts.map +1 -0
  151. package/out/runtime/util.js +447 -0
  152. package/out/runtime/util.js.map +1 -0
  153. package/out/setupClassic.d.ts +98 -0
  154. package/out/setupClassic.d.ts.map +1 -0
  155. package/out/setupClassic.js +38 -0
  156. package/out/setupClassic.js.map +1 -0
  157. package/out/setupCommon.d.ts +2 -0
  158. package/out/setupCommon.d.ts.map +1 -0
  159. package/out/setupCommon.js +33 -0
  160. package/out/setupCommon.js.map +1 -0
  161. package/out/setupExtended.d.ts +40 -0
  162. package/out/setupExtended.d.ts.map +1 -0
  163. package/out/setupExtended.js +67 -0
  164. package/out/setupExtended.js.map +1 -0
  165. package/out/syntaxes/agentlang.monarch.d.ts +77 -0
  166. package/out/syntaxes/agentlang.monarch.d.ts.map +1 -0
  167. package/out/syntaxes/agentlang.monarch.js +31 -0
  168. package/out/syntaxes/agentlang.monarch.js.map +1 -0
  169. package/out/utils/fs/index.d.ts +14 -0
  170. package/out/utils/fs/index.d.ts.map +1 -0
  171. package/out/utils/fs/index.js +26 -0
  172. package/out/utils/fs/index.js.map +1 -0
  173. package/out/utils/fs/interfaces.d.ts +105 -0
  174. package/out/utils/fs/interfaces.d.ts.map +1 -0
  175. package/out/utils/fs/interfaces.js +5 -0
  176. package/out/utils/fs/interfaces.js.map +1 -0
  177. package/out/utils/fs/lightning-fs.d.ts +116 -0
  178. package/out/utils/fs/lightning-fs.d.ts.map +1 -0
  179. package/out/utils/fs/lightning-fs.js +243 -0
  180. package/out/utils/fs/lightning-fs.js.map +1 -0
  181. package/out/utils/fs/node-fs.d.ts +93 -0
  182. package/out/utils/fs/node-fs.d.ts.map +1 -0
  183. package/out/utils/fs/node-fs.js +169 -0
  184. package/out/utils/fs/node-fs.js.map +1 -0
  185. package/out/utils/fs-utils.d.ts +153 -0
  186. package/out/utils/fs-utils.d.ts.map +1 -0
  187. package/out/utils/fs-utils.js +271 -0
  188. package/out/utils/fs-utils.js.map +1 -0
  189. package/out/utils/runtime.d.ts +36 -0
  190. package/out/utils/runtime.d.ts.map +1 -0
  191. package/out/utils/runtime.js +39 -0
  192. package/out/utils/runtime.js.map +1 -0
  193. package/package.json +155 -0
  194. package/src/api/http.ts +361 -0
  195. package/src/cli/cli-util.ts +18 -0
  196. package/src/cli/main.ts +146 -0
  197. package/src/extension/main.ts +51 -0
  198. package/src/language/agentlang-module.ts +75 -0
  199. package/src/language/agentlang-validator.ts +60 -0
  200. package/src/language/agentlang.langium +178 -0
  201. package/src/language/generated/ast.ts +1698 -0
  202. package/src/language/generated/grammar.ts +4477 -0
  203. package/src/language/generated/module.ts +25 -0
  204. package/src/language/main-browser.ts +19 -0
  205. package/src/language/main.ts +13 -0
  206. package/src/language/parser.ts +329 -0
  207. package/src/language/syntax.ts +646 -0
  208. package/src/runtime/agents/common.ts +177 -0
  209. package/src/runtime/agents/impl/openai.ts +19 -0
  210. package/src/runtime/agents/provider.ts +58 -0
  211. package/src/runtime/agents/registry.ts +9 -0
  212. package/src/runtime/auth/cognito.ts +225 -0
  213. package/src/runtime/auth/defs.ts +33 -0
  214. package/src/runtime/auth/interface.ts +31 -0
  215. package/src/runtime/defs.ts +33 -0
  216. package/src/runtime/interpreter.ts +1352 -0
  217. package/src/runtime/loader.ts +450 -0
  218. package/src/runtime/logger.ts +51 -0
  219. package/src/runtime/module.ts +2188 -0
  220. package/src/runtime/modules/ai.ts +257 -0
  221. package/src/runtime/modules/auth.ts +489 -0
  222. package/src/runtime/modules/core.ts +95 -0
  223. package/src/runtime/relgraph.ts +195 -0
  224. package/src/runtime/resolvers/interface.ts +160 -0
  225. package/src/runtime/resolvers/registry.ts +30 -0
  226. package/src/runtime/resolvers/sqldb/database.ts +823 -0
  227. package/src/runtime/resolvers/sqldb/dbutil.ts +257 -0
  228. package/src/runtime/resolvers/sqldb/impl.ts +471 -0
  229. package/src/runtime/state.ts +87 -0
  230. package/src/runtime/util.ts +513 -0
  231. package/src/setupClassic.ts +43 -0
  232. package/src/setupCommon.ts +33 -0
  233. package/src/setupExtended.ts +79 -0
  234. package/src/syntaxes/agentlang.monarch.ts +31 -0
  235. package/src/utils/fs/index.ts +28 -0
  236. package/src/utils/fs/interfaces.ts +118 -0
  237. package/src/utils/fs/lightning-fs.ts +284 -0
  238. package/src/utils/fs/node-fs.ts +185 -0
  239. package/src/utils/fs-utils.ts +304 -0
  240. package/src/utils/runtime.ts +43 -0
@@ -0,0 +1,359 @@
1
+ import { Environment, makeEventEvaluator } from '../interpreter.js';
2
+ import { logger } from '../logger.js';
3
+ import { RbacPermissionFlag } from '../module.js';
4
+ import { makeCoreModuleName } from '../util.js';
5
+ import { isSqlTrue } from '../resolvers/sqldb/dbutil.js';
6
+ import { AdminUserId, BypassSession, isAuthEnabled } from '../auth/defs.js';
7
+ import { isNodeEnv } from '../../utils/runtime.js';
8
+ import { CognitoAuth } from '../auth/cognito.js';
9
+ export const CoreAuthModuleName = makeCoreModuleName('auth');
10
+ export default `module ${CoreAuthModuleName}
11
+
12
+ import "./modules/auth.js" as Auth
13
+
14
+ entity User {
15
+ id UUID @id @default(uuid()),
16
+ email Email @unique @indexed,
17
+ firstName String,
18
+ lastName String
19
+ }
20
+
21
+ workflow CreateUser {
22
+ {User {id CreateUser.id,
23
+ email CreateUser.email,
24
+ firstName CreateUser.firstName,
25
+ lastName CreateUser.lastName}}
26
+ }
27
+
28
+ workflow FindUser {
29
+ {User {id? FindUser.id}} as [user];
30
+ user
31
+ }
32
+
33
+ workflow FindUserByEmail {
34
+ {User {email? FindUserByEmail.email}} as [user];
35
+ user
36
+ }
37
+
38
+ entity Role {
39
+ name String @id
40
+ }
41
+
42
+ relationship UserRole between (User, Role)
43
+
44
+ entity Permission {
45
+ id String @id,
46
+ resourceFqName String @indexed,
47
+ c Boolean,
48
+ r Boolean,
49
+ u Boolean,
50
+ d Boolean
51
+ }
52
+
53
+ relationship RolePermission between(Role, Permission)
54
+
55
+ workflow CreateRole {
56
+ upsert {Role {name CreateRole.name}}
57
+ }
58
+
59
+ workflow FindRole {
60
+ {Role {name? FindRole.name}} as [role];
61
+ role
62
+ }
63
+
64
+ workflow AssignUserToRole {
65
+ {User {id? AssignUserToRole.userId}} as [user];
66
+ {Role {name? AssignUserToRole.roleName}} as [role];
67
+ upsert {UserRole {User user, Role role}}
68
+ }
69
+
70
+ workflow AssignUserToRoleByEmail {
71
+ {User {email? AssignUserToRoleByEmail.email}} as [user];
72
+ {Role {name? AssignUserToRoleByEmail.roleName}} as [role];
73
+ upsert {UserRole {User user, Role role}}
74
+ }
75
+
76
+ workflow FindUserRoles {
77
+ {User {id? FindUserRoles.userId},
78
+ UserRole {Role? {}}}
79
+ }
80
+
81
+ workflow CreatePermission {
82
+ upsert {Permission {id CreatePermission.id,
83
+ resourceFqName CreatePermission.resourceFqName,
84
+ c CreatePermission.c,
85
+ r CreatePermission.r,
86
+ u CreatePermission.u,
87
+ d CreatePermission.d},
88
+ RolePermission {Role {name? CreatePermission.roleName}}}
89
+ }
90
+
91
+ workflow AddPermissionToRole {
92
+ {Role {name? AddPermissionToRole.roleName}} as role;
93
+ {Permission {id? AddPermissionToRole.permissionId}} as perm;
94
+ upsert {RolePermission {Role role, Permission perm}}
95
+ }
96
+
97
+ workflow FindRolePermissions {
98
+ {Role {name? FindRolePermissions.role},
99
+ RolePermission {Permission? {}}}
100
+ }
101
+
102
+ entity Session {
103
+ id UUID @id,
104
+ userId UUID @indexed,
105
+ authToken String @optional,
106
+ isActive Boolean
107
+ }
108
+
109
+ workflow CreateSession {
110
+ {Session {id CreateSession.id, userId CreateSession.userId,
111
+ authToken CreateSession.authToken, isActive true}}
112
+ }
113
+
114
+ workflow FindSession {
115
+ {Session {id? FindSession.id}} as [session];
116
+ session
117
+ }
118
+
119
+ workflow FindUserSession {
120
+ {Session {userId? FindUserSession.id}} as [session];
121
+ session
122
+ }
123
+
124
+ workflow RemoveSession {
125
+ purge {Session {id? RemoveSession.id}}
126
+ }
127
+
128
+ workflow signup {
129
+ await Auth.signUpUser(signup.email, signup.password, signup.userData)
130
+ }
131
+
132
+ workflow login {
133
+ await Auth.loginUser(login.email, login.password)
134
+ }
135
+ `;
136
+ const evalEvent = makeEventEvaluator(CoreAuthModuleName);
137
+ export async function createUser(id, email, firstName, lastName, env) {
138
+ return await evalEvent('CreateUser', {
139
+ id: id,
140
+ email: email,
141
+ firstName: firstName,
142
+ lastName: lastName,
143
+ }, env);
144
+ }
145
+ export async function findUser(id, env) {
146
+ return await evalEvent('FindUser', {
147
+ id: id,
148
+ }, env);
149
+ }
150
+ export async function findUserByEmail(email, env) {
151
+ return await evalEvent('FindUserByEmail', {
152
+ email: email,
153
+ }, env);
154
+ }
155
+ export async function ensureUser(email, firstName, lastName, env) {
156
+ const user = await findUserByEmail(email, env);
157
+ if (user) {
158
+ return user;
159
+ }
160
+ return await createUser(crypto.randomUUID(), email, firstName, lastName, env);
161
+ }
162
+ export async function ensureUserSession(userId, token, env) {
163
+ const sess = await findUserSession(userId, env);
164
+ if (sess) {
165
+ await removeSession(sess.lookup('id'), env);
166
+ }
167
+ return await createSession(crypto.randomUUID(), userId, token, env);
168
+ }
169
+ export async function createSession(id, userId, token, env) {
170
+ return await evalEvent('CreateSession', {
171
+ id: id,
172
+ userId: userId,
173
+ authToken: token,
174
+ }, env);
175
+ }
176
+ export async function findSession(id, env) {
177
+ return await evalEvent('FindSession', {
178
+ id: id,
179
+ }, env);
180
+ }
181
+ export async function findUserSession(userId, env) {
182
+ return await evalEvent('FindUserSession', {
183
+ userId: userId,
184
+ }, env);
185
+ }
186
+ export async function removeSession(id, env) {
187
+ return await evalEvent('RemoveSession', {
188
+ id: id,
189
+ }, env);
190
+ }
191
+ export async function findRole(name, env) {
192
+ return await evalEvent('FindRole', { name: name }, env);
193
+ }
194
+ export async function createRole(name, env) {
195
+ await evalEvent('CreateRole', { name: name }, env).catch((reason) => {
196
+ logger.error(`Failed to create role '${name}' - ${reason}`);
197
+ });
198
+ }
199
+ export async function createPermission(id, roleName, resourceFqName, c = false, r = false, u = false, d = false, env) {
200
+ await evalEvent('CreatePermission', {
201
+ id: id,
202
+ roleName: roleName,
203
+ resourceFqName: resourceFqName,
204
+ c: c,
205
+ r: r,
206
+ u: u,
207
+ d: d,
208
+ }, env).catch((reason) => {
209
+ logger.error(`Failed to create permission ${id} - ${reason}`);
210
+ });
211
+ }
212
+ export async function assignUserToRole(userId, roleName, env) {
213
+ let r = true;
214
+ await evalEvent('AssignUserToRole', { userId: userId, roleName: roleName }, env).catch((reason) => {
215
+ logger.error(`Failed to assign user ${userId} to role ${roleName} - ${reason}`);
216
+ r = false;
217
+ });
218
+ return r;
219
+ }
220
+ export async function findUserRoles(userId, env) {
221
+ const result = await evalEvent('FindUserRoles', { userId: userId }, env);
222
+ const inst = result ? result[0] : undefined;
223
+ if (inst) {
224
+ return inst.getRelatedInstances('UserRole');
225
+ }
226
+ return undefined;
227
+ }
228
+ const UserRoleCache = new Map();
229
+ const RolePermissionsCache = new Map();
230
+ async function findRolePermissions(role, env) {
231
+ return await evalEvent('FindRolePermissions', { role: role }, env);
232
+ }
233
+ async function updatePermissionCacheForRole(role, env) {
234
+ const result = await findRolePermissions(role, env);
235
+ if (result instanceof Array && result.length > 0) {
236
+ const roleInst = result[0];
237
+ const permInsts = roleInst.getRelatedInstances('RolePermission');
238
+ if (permInsts) {
239
+ RolePermissionsCache.set(role, permInsts.map((inst) => {
240
+ return inst.cast();
241
+ }));
242
+ }
243
+ }
244
+ }
245
+ export async function userHasPermissions(userId, resourceFqName, perms, env) {
246
+ if (userId == AdminUserId) {
247
+ return true;
248
+ }
249
+ let userRoles = UserRoleCache.get(userId);
250
+ if (userRoles == undefined) {
251
+ const roles = await findUserRoles(userId, env);
252
+ userRoles = [];
253
+ if (roles) {
254
+ for (let i = 0; i < roles.length; ++i) {
255
+ const r = roles[i];
256
+ const n = r.attributes.get('name');
257
+ userRoles.push(n);
258
+ if (!RolePermissionsCache.get(n)) {
259
+ await updatePermissionCacheForRole(n, env);
260
+ }
261
+ }
262
+ }
263
+ UserRoleCache.set(userId, userRoles);
264
+ }
265
+ const [c, r, u, d] = [
266
+ perms.has(RbacPermissionFlag.CREATE),
267
+ perms.has(RbacPermissionFlag.READ),
268
+ perms.has(RbacPermissionFlag.UPDATE),
269
+ perms.has(RbacPermissionFlag.DELETE),
270
+ ];
271
+ for (let i = 0; i < userRoles.length; ++i) {
272
+ const permInsts = RolePermissionsCache.get(userRoles[i]);
273
+ if (permInsts) {
274
+ if (permInsts.find((p) => {
275
+ return (p.resourceFqName == resourceFqName &&
276
+ (c ? isSqlTrue(p.c) : true) &&
277
+ (r ? isSqlTrue(p.r) : true) &&
278
+ (u ? isSqlTrue(p.u) : true) &&
279
+ (d ? isSqlTrue(p.d) : true));
280
+ }))
281
+ return true;
282
+ }
283
+ }
284
+ return false;
285
+ }
286
+ const CreateOperation = new Set([RbacPermissionFlag.CREATE]);
287
+ const ReadOperation = new Set([RbacPermissionFlag.READ]);
288
+ const UpdateOperation = new Set([RbacPermissionFlag.UPDATE]);
289
+ const DeleteOperation = new Set([RbacPermissionFlag.DELETE]);
290
+ function canUserPerfom(opr) {
291
+ // TODO: check parent hierarchy
292
+ // TODO: cache permissions for user
293
+ async function f(userId, resourceFqName, env) {
294
+ if (userId == AdminUserId) {
295
+ return true;
296
+ }
297
+ return await userHasPermissions(userId, resourceFqName, opr, env);
298
+ }
299
+ return f;
300
+ }
301
+ export const canUserCreate = canUserPerfom(CreateOperation);
302
+ export const canUserRead = canUserPerfom(ReadOperation);
303
+ export const canUserUpdate = canUserPerfom(UpdateOperation);
304
+ export const canUserDelete = canUserPerfom(DeleteOperation);
305
+ let runtimeAuth;
306
+ if (isNodeEnv) {
307
+ runtimeAuth = new CognitoAuth();
308
+ }
309
+ function fetchAuthImpl() {
310
+ if (runtimeAuth) {
311
+ return runtimeAuth;
312
+ }
313
+ else {
314
+ throw new Error('Auth not initialized');
315
+ }
316
+ }
317
+ export async function signUpUser(username, password, userData, env) {
318
+ let result;
319
+ await fetchAuthImpl().signUp(username, password, userData ? new Map(Object.entries(userData)) : undefined, env, (userInfo) => {
320
+ result = userInfo;
321
+ });
322
+ return result;
323
+ }
324
+ export async function loginUser(username, password, env) {
325
+ let result = '';
326
+ await fetchAuthImpl().login(username, password, env, (r) => {
327
+ result = `${r.userId}/${r.sessionId}`;
328
+ });
329
+ return result;
330
+ }
331
+ export async function verifySession(token, env) {
332
+ if (!isAuthEnabled())
333
+ return BypassSession;
334
+ const parts = token.split('/');
335
+ const sessId = parts[1];
336
+ const needCommit = env ? false : true;
337
+ env = env ? env : new Environment();
338
+ const f = async () => {
339
+ const sess = await findSession(sessId, env);
340
+ if (sess != undefined) {
341
+ await fetchAuthImpl().verifyToken(sess.lookup('authToken'), env);
342
+ return { sessionId: sessId, userId: parts[0] };
343
+ }
344
+ else {
345
+ throw new Error(`No active session for user '${parts[0]}'`);
346
+ }
347
+ };
348
+ if (needCommit) {
349
+ return await env.callInTransaction(f);
350
+ }
351
+ else {
352
+ return await f();
353
+ }
354
+ }
355
+ export function requireAuth(moduleName, eventName) {
356
+ const f = moduleName == CoreAuthModuleName && (eventName == 'login' || eventName == 'signup');
357
+ return !f;
358
+ }
359
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/runtime/modules/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const CoreModules: string[];
2
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/runtime/modules/core.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,EAAE,MAAM,EAAO,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { default as ai } from './ai.js';
2
+ import { default as auth } from './auth.js';
3
+ import { DefaultModuleName } from '../util.js';
4
+ import { isInstanceOfType } from '../module.js';
5
+ import { Environment, parseAndEvaluateStatement } from '../interpreter.js';
6
+ import { logger } from '../logger.js';
7
+ const CoreModuleDefinition = `module ${DefaultModuleName}
8
+ entity timer {
9
+ name String @id,
10
+ duration Int,
11
+ unit @enum("millisecond", "second", "minute", "hour") @default("second"),
12
+ trigger String,
13
+ status @enum("I", "C", "R") @default("I") // Inited, Cancelled, Running
14
+ }
15
+
16
+ entity auditlog {
17
+ id UUID @id @default(uuid()),
18
+ action @enum("c", "d", "u"), // Create, Delete, Update
19
+ resource String, // __path__
20
+ timestamp DateTime @default(now()),
21
+ previous_value Any @optional,
22
+ user String,
23
+ token String @optional
24
+ }
25
+ `;
26
+ export const CoreModules = [];
27
+ export function registerCoreModules() {
28
+ CoreModules.push(CoreModuleDefinition);
29
+ [auth, ai].forEach((mdef) => {
30
+ CoreModules.push(mdef);
31
+ });
32
+ }
33
+ export function setTimerRunning(timerInst) {
34
+ timerInst.attributes.set('status', 'R');
35
+ }
36
+ export async function maybeCancelTimer(name, timer, env) {
37
+ await parseAndEvaluateStatement(`{agentlang/timer {name? "${name}"}}`, undefined, env).then((result) => {
38
+ if (result == null || (result instanceof Array && result.length == 0)) {
39
+ clearInterval(timer);
40
+ }
41
+ });
42
+ }
43
+ async function addAudit(env, action, resource, previuos_value) {
44
+ const user = env.getActiveUser();
45
+ const token = env.getActiveToken();
46
+ const newEnv = new Environment('auditlog', env).setInKernelMode(true);
47
+ const r = await parseAndEvaluateStatement(`{agentlang/auditlog {
48
+ action "${action}",
49
+ resource "${resource}",
50
+ previous_value "${previuos_value ? JSON.stringify(previuos_value.asObject()) : ''}",
51
+ user "${user}",
52
+ token "${token ? token : ''}"
53
+ }}`, undefined, newEnv);
54
+ if (!isInstanceOfType(r, 'agentlang/auditlog')) {
55
+ logger.warn(`Failed to create auditlog for action ${action} and resource ${resource} for user ${user}`);
56
+ }
57
+ }
58
+ export async function addCreateAudit(resource, env) {
59
+ await addAudit(env, 'c', resource);
60
+ }
61
+ export async function addDeleteAudit(resource, previous_value, env) {
62
+ await addAudit(env, 'd', resource, previous_value);
63
+ }
64
+ export async function addUpdateAudit(resource, previous_value, env) {
65
+ await addAudit(env, 'u', resource, previous_value);
66
+ }
67
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/runtime/modules/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { Relationship } from './module.js';
2
+ import { Path } from './util.js';
3
+ export type RelationshipGraphNode = {
4
+ entity: Path;
5
+ edges: RelationshipGraphEdge[];
6
+ };
7
+ export type RelationshipGraphEdge = {
8
+ relationship: Relationship;
9
+ node: RelationshipGraphNode;
10
+ };
11
+ export declare class RelationshipGraph {
12
+ nodes: RelationshipGraphNode[];
13
+ constructor(nodes: Array<RelationshipGraphNode>);
14
+ getRoots(): RelationshipGraphNode[];
15
+ asObject(): object;
16
+ private walkEdges;
17
+ walk(onNode: Function, onContainsRelationship: Function, onBetweenRelationship: Function): void;
18
+ }
19
+ export declare function buildGraph(moduleName: string): RelationshipGraph;
20
+ export declare function findEdgeForRelationship(relName: string, moduleName: string, edges: RelationshipGraphEdge[]): RelationshipGraphEdge | undefined;
21
+ //# sourceMappingURL=relgraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relgraph.d.ts","sourceRoot":"","sources":["../../src/runtime/relgraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAGb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAqB,IAAI,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,qBAAqB,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,qBAAqB,CAAC;CAC7B,CAAC;AAmBF,qBAAa,iBAAiB;IAC5B,KAAK,EAAE,qBAAqB,EAAE,CAAC;gBAEnB,KAAK,EAAE,KAAK,CAAC,qBAAqB,CAAC;IAI/C,QAAQ,IAAI,qBAAqB,EAAE;IAInC,QAAQ,IAAI,MAAM;IAQlB,OAAO,CAAC,SAAS;IAiBjB,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,QAAQ;CAKzF;AAKD,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,CAqDhE;AAmDD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,qBAAqB,EAAE,GAC7B,qBAAqB,GAAG,SAAS,CAInC"}
@@ -0,0 +1,156 @@
1
+ import { fetchModule, getUserModuleNames, } from './module.js';
2
+ import { DefaultModuleName, Path } from './util.js';
3
+ function asEdgeEntry(rge) {
4
+ const nm = new Map();
5
+ nm.set(rge.node.entity.asFqName(), rge.node.edges.map(asEdgeEntry));
6
+ const e = {
7
+ relationship: rge.relationship.getFqName(),
8
+ type: rge.relationship.isContains() ? 'contains' : 'between',
9
+ to: Object.fromEntries(nm),
10
+ };
11
+ return e;
12
+ }
13
+ export class RelationshipGraph {
14
+ constructor(nodes) {
15
+ this.nodes = nodes;
16
+ }
17
+ getRoots() {
18
+ return this.nodes;
19
+ }
20
+ asObject() {
21
+ const result = new Map();
22
+ this.nodes.forEach((node) => {
23
+ result.set(node.entity.asFqName(), node.edges.map(asEdgeEntry));
24
+ });
25
+ return Object.fromEntries(result);
26
+ }
27
+ walkEdges(node, onNode, onContainsRelationship, onBetweenRelationship) {
28
+ const n = node.entity.asFqName();
29
+ onNode(n, node.edges);
30
+ node.edges.forEach((edge) => {
31
+ const rf = edge.relationship.isContains()
32
+ ? onContainsRelationship
33
+ : onBetweenRelationship;
34
+ rf(n, edge.node.entity.asFqName(), edge.relationship);
35
+ this.walkEdges(edge.node, onNode, onContainsRelationship, onBetweenRelationship);
36
+ });
37
+ }
38
+ walk(onNode, onContainsRelationship, onBetweenRelationship) {
39
+ this.nodes.forEach((node) => {
40
+ this.walkEdges(node, onNode, onContainsRelationship, onBetweenRelationship);
41
+ });
42
+ }
43
+ }
44
+ const NullEdge = [];
45
+ const EmptyGraph = new RelationshipGraph(new Array());
46
+ export function buildGraph(moduleName) {
47
+ if (moduleName == DefaultModuleName)
48
+ return EmptyGraph;
49
+ const rootEnts = new Set();
50
+ const inRels = new Set();
51
+ const nodes = [];
52
+ let localMod;
53
+ getUserModuleNames().forEach((n) => {
54
+ const m = fetchModule(n);
55
+ if (n == moduleName)
56
+ localMod = m;
57
+ const rels = m.getRelationshipEntries();
58
+ rels.forEach((re) => {
59
+ const n1 = re.parentNode();
60
+ const n2 = re.childNode();
61
+ if (n1.path.getModuleName() == moduleName) {
62
+ const nn = n1.path.getEntryName();
63
+ if (!inRels.has(nn))
64
+ rootEnts.add(nn);
65
+ if (n2.path.getModuleName() == moduleName) {
66
+ const en = n2.path.getEntryName();
67
+ if (rootEnts.has(en)) {
68
+ rootEnts.delete(en);
69
+ }
70
+ if (re.isContains())
71
+ inRels.add(en);
72
+ }
73
+ const node = forceFindNode(nodes, n1.path);
74
+ connectEdge(node, re);
75
+ }
76
+ else if (n2.path.getModuleName() == moduleName) {
77
+ const en = n2.path.getEntryName();
78
+ inRels.add(en);
79
+ const node = forceFindNode(nodes, n1.path);
80
+ connectEdge(node, re);
81
+ }
82
+ });
83
+ });
84
+ if (localMod == undefined) {
85
+ throw new Error(`Failed to find module ${moduleName}`);
86
+ }
87
+ const remEnts = new Set();
88
+ const entityNames = localMod.getEntityNames();
89
+ for (const name of entityNames) {
90
+ if (!inRels.has(name)) {
91
+ remEnts.add(name);
92
+ }
93
+ }
94
+ remEnts.forEach((n) => {
95
+ if (!rootEnts.has(n)) {
96
+ const rn = {
97
+ entity: new Path(moduleName, n),
98
+ edges: NullEdge,
99
+ };
100
+ nodes.push(rn);
101
+ }
102
+ });
103
+ return new RelationshipGraph(nodes);
104
+ }
105
+ function forceFindNode(nodes, path) {
106
+ for (let i = 0; i < nodes.length; ++i) {
107
+ const n = nodes[i];
108
+ if (n.entity.equals(path)) {
109
+ return n;
110
+ }
111
+ else {
112
+ const n0 = findNodeInEdges(n.edges, path);
113
+ if (n0)
114
+ return n0;
115
+ }
116
+ }
117
+ const n = {
118
+ entity: path,
119
+ edges: NullEdge,
120
+ };
121
+ nodes.push(n);
122
+ return n;
123
+ }
124
+ function findNodeInEdges(edges, path) {
125
+ for (let i = 0; i < edges.length; ++i) {
126
+ const e = edges[i];
127
+ if (e.node.entity.equals(path)) {
128
+ return e.node;
129
+ }
130
+ const r = findNodeInEdges(e.node.edges, path);
131
+ if (r)
132
+ return r;
133
+ }
134
+ return undefined;
135
+ }
136
+ function connectEdge(node, re) {
137
+ const cn = re.childNode();
138
+ const n = {
139
+ entity: cn.path,
140
+ edges: NullEdge,
141
+ };
142
+ const e = {
143
+ relationship: re,
144
+ node: n,
145
+ };
146
+ if (node.edges == NullEdge) {
147
+ node.edges = new Array();
148
+ }
149
+ node.edges.push(e);
150
+ }
151
+ export function findEdgeForRelationship(relName, moduleName, edges) {
152
+ return edges.find((v) => {
153
+ return v.relationship.moduleName == moduleName && v.relationship.name == relName;
154
+ });
155
+ }
156
+ //# sourceMappingURL=relgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relgraph.js","sourceRoot":"","sources":["../../src/runtime/relgraph.ts"],"names":[],"mappings":"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"}