@astrale-domains/shell 0.1.0-beta.4 → 0.1.0-beta.7

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 (460) hide show
  1. package/dist/actions/index.js +1 -0
  2. package/dist/actions/user/index.js +1 -0
  3. package/dist/actions/user/resolve-home.js +19 -0
  4. package/dist/application.d.ts +5 -0
  5. package/dist/application.js +29 -0
  6. package/dist/index.d.ts +3 -4
  7. package/dist/index.js +3 -4
  8. package/dist/mutations/group/index.js +1 -2
  9. package/dist/mutations/group/membership.js +19 -69
  10. package/dist/mutations/space/access.js +23 -52
  11. package/dist/mutations/space/default.js +23 -44
  12. package/dist/mutations/space/index.js +2 -3
  13. package/dist/mutations/user/index.js +1 -2
  14. package/dist/mutations/user/repair.js +85 -0
  15. package/dist/queries/space/access.js +13 -92
  16. package/dist/queries/space/admin.js +27 -0
  17. package/dist/queries/space/index.js +3 -3
  18. package/dist/queries/space/member.js +24 -0
  19. package/dist/queries/user/groups.js +24 -0
  20. package/dist/queries/user/home.js +28 -0
  21. package/dist/queries/user/index.js +5 -0
  22. package/dist/queries/user/owned-spaces.js +24 -0
  23. package/dist/queries/user/profile.js +17 -0
  24. package/dist/queries/user/setup.js +18 -0
  25. package/dist/runtime.d.ts +4 -0
  26. package/dist/runtime.js +18 -0
  27. package/dist/schema/domain/index.d.ts +26385 -8837
  28. package/dist/schema/domain/index.js +26 -42
  29. package/dist/schema/group/class.d.ts +3258 -29
  30. package/dist/schema/group/class.js +2 -6
  31. package/dist/schema/group/core.d.ts +9 -490
  32. package/dist/schema/group/core.js +7 -13
  33. package/dist/schema/group/index.d.ts +2 -3
  34. package/dist/schema/group/index.js +2 -3
  35. package/dist/schema/group/methods.d.ts +2028 -17
  36. package/dist/schema/group/methods.js +7 -7
  37. package/dist/schema/group/policies.d.ts +1 -3
  38. package/dist/schema/group/policies.js +5 -6
  39. package/dist/schema/group/relationships.d.ts +4264 -244
  40. package/dist/schema/group/relationships.js +2 -14
  41. package/dist/schema/group/view.d.ts +3258 -29
  42. package/dist/schema/group/view.js +0 -1
  43. package/dist/schema/home/index.d.ts +0 -1
  44. package/dist/schema/home/index.js +0 -1
  45. package/dist/schema/home/view.d.ts +0 -1
  46. package/dist/schema/home/view.js +0 -1
  47. package/dist/schema/index.d.ts +4 -5
  48. package/dist/schema/index.js +4 -5
  49. package/dist/schema/setup/functions.d.ts +47 -0
  50. package/dist/schema/setup/functions.js +27 -0
  51. package/dist/schema/setup/index.d.ts +1 -0
  52. package/dist/schema/setup/index.js +1 -0
  53. package/dist/schema/space/class.d.ts +2263 -24
  54. package/dist/schema/space/class.js +2 -6
  55. package/dist/schema/space/core.d.ts +22235 -710
  56. package/dist/schema/space/core.js +6 -8
  57. package/dist/schema/space/index.d.ts +0 -1
  58. package/dist/schema/space/index.js +0 -1
  59. package/dist/schema/space/methods.d.ts +2027 -16
  60. package/dist/schema/space/methods.js +7 -8
  61. package/dist/schema/space/policies.d.ts +1 -2
  62. package/dist/schema/space/policies.js +17 -11
  63. package/dist/schema/space/relationships.d.ts +22980 -826
  64. package/dist/schema/space/relationships.js +5 -6
  65. package/dist/schema/space/view.d.ts +2264 -25
  66. package/dist/schema/space/view.js +1 -2
  67. package/dist/schema/user/class.d.ts +1013 -10
  68. package/dist/schema/user/class.js +9 -5
  69. package/dist/schema/user/index.d.ts +1 -4
  70. package/dist/schema/user/index.js +1 -4
  71. package/dist/schema/user/methods.d.ts +14 -0
  72. package/dist/schema/user/methods.js +11 -0
  73. package/dist/schema/user/view.d.ts +1012 -10
  74. package/dist/schema/user/view.js +0 -1
  75. package/dist/workflows/group/assign.js +3 -0
  76. package/dist/workflows/group/change.js +31 -0
  77. package/dist/workflows/group/index.js +3 -4
  78. package/dist/workflows/group/unassign.js +3 -0
  79. package/dist/workflows/index.js +3 -4
  80. package/dist/workflows/setup/admin.js +3 -0
  81. package/dist/workflows/setup/index.js +5 -0
  82. package/dist/workflows/setup/member.js +3 -0
  83. package/dist/workflows/setup/plan.js +88 -0
  84. package/dist/workflows/setup/provision.js +57 -0
  85. package/dist/workflows/setup/run.js +74 -0
  86. package/dist/workflows/space/access.js +41 -0
  87. package/dist/workflows/space/add.js +3 -0
  88. package/dist/workflows/space/default.js +37 -0
  89. package/dist/workflows/space/index.js +4 -4
  90. package/dist/workflows/space/remove.js +3 -0
  91. package/package.json +13 -32
  92. package/dist/functions/application/index.d.ts +0 -3
  93. package/dist/functions/application/index.d.ts.map +0 -1
  94. package/dist/functions/application/index.js +0 -3
  95. package/dist/functions/application/index.js.map +0 -1
  96. package/dist/functions/application/install.d.ts +0 -4
  97. package/dist/functions/application/install.d.ts.map +0 -1
  98. package/dist/functions/application/install.js +0 -11
  99. package/dist/functions/application/install.js.map +0 -1
  100. package/dist/functions/application/uninstall.d.ts +0 -5
  101. package/dist/functions/application/uninstall.d.ts.map +0 -1
  102. package/dist/functions/application/uninstall.js +0 -11
  103. package/dist/functions/application/uninstall.js.map +0 -1
  104. package/dist/functions/execution/index.d.ts +0 -15
  105. package/dist/functions/execution/index.d.ts.map +0 -1
  106. package/dist/functions/execution/index.js +0 -2
  107. package/dist/functions/execution/index.js.map +0 -1
  108. package/dist/functions/group/assign-user.d.ts +0 -5
  109. package/dist/functions/group/assign-user.d.ts.map +0 -1
  110. package/dist/functions/group/assign-user.js +0 -11
  111. package/dist/functions/group/assign-user.js.map +0 -1
  112. package/dist/functions/group/index.d.ts +0 -3
  113. package/dist/functions/group/index.d.ts.map +0 -1
  114. package/dist/functions/group/index.js +0 -3
  115. package/dist/functions/group/index.js.map +0 -1
  116. package/dist/functions/group/unassign-user.d.ts +0 -5
  117. package/dist/functions/group/unassign-user.d.ts.map +0 -1
  118. package/dist/functions/group/unassign-user.js +0 -11
  119. package/dist/functions/group/unassign-user.js.map +0 -1
  120. package/dist/functions/index.d.ts +0 -6
  121. package/dist/functions/index.d.ts.map +0 -1
  122. package/dist/functions/index.js +0 -6
  123. package/dist/functions/index.js.map +0 -1
  124. package/dist/functions/space/add-user.d.ts +0 -5
  125. package/dist/functions/space/add-user.d.ts.map +0 -1
  126. package/dist/functions/space/add-user.js +0 -11
  127. package/dist/functions/space/add-user.js.map +0 -1
  128. package/dist/functions/space/index.d.ts +0 -4
  129. package/dist/functions/space/index.d.ts.map +0 -1
  130. package/dist/functions/space/index.js +0 -4
  131. package/dist/functions/space/index.js.map +0 -1
  132. package/dist/functions/space/remove-user.d.ts +0 -5
  133. package/dist/functions/space/remove-user.d.ts.map +0 -1
  134. package/dist/functions/space/remove-user.js +0 -11
  135. package/dist/functions/space/remove-user.js.map +0 -1
  136. package/dist/functions/space/set-default.d.ts +0 -6
  137. package/dist/functions/space/set-default.d.ts.map +0 -1
  138. package/dist/functions/space/set-default.js +0 -11
  139. package/dist/functions/space/set-default.js.map +0 -1
  140. package/dist/functions/user/administrator.d.ts +0 -4
  141. package/dist/functions/user/administrator.d.ts.map +0 -1
  142. package/dist/functions/user/administrator.js +0 -39
  143. package/dist/functions/user/administrator.js.map +0 -1
  144. package/dist/functions/user/ensure.d.ts +0 -18
  145. package/dist/functions/user/ensure.d.ts.map +0 -1
  146. package/dist/functions/user/ensure.js +0 -49
  147. package/dist/functions/user/ensure.js.map +0 -1
  148. package/dist/functions/user/index.d.ts +0 -3
  149. package/dist/functions/user/index.d.ts.map +0 -1
  150. package/dist/functions/user/index.js +0 -3
  151. package/dist/functions/user/index.js.map +0 -1
  152. package/dist/index.d.ts.map +0 -1
  153. package/dist/index.js.map +0 -1
  154. package/dist/mutations/application/association.d.ts +0 -14
  155. package/dist/mutations/application/association.d.ts.map +0 -1
  156. package/dist/mutations/application/association.js +0 -46
  157. package/dist/mutations/application/association.js.map +0 -1
  158. package/dist/mutations/application/errors.d.ts +0 -5
  159. package/dist/mutations/application/errors.d.ts.map +0 -1
  160. package/dist/mutations/application/errors.js +0 -2
  161. package/dist/mutations/application/errors.js.map +0 -1
  162. package/dist/mutations/application/index.d.ts +0 -4
  163. package/dist/mutations/application/index.d.ts.map +0 -1
  164. package/dist/mutations/application/index.js +0 -3
  165. package/dist/mutations/application/index.js.map +0 -1
  166. package/dist/mutations/application/removal.d.ts +0 -6
  167. package/dist/mutations/application/removal.d.ts.map +0 -1
  168. package/dist/mutations/application/removal.js +0 -17
  169. package/dist/mutations/application/removal.js.map +0 -1
  170. package/dist/mutations/group/errors.d.ts +0 -5
  171. package/dist/mutations/group/errors.d.ts.map +0 -1
  172. package/dist/mutations/group/errors.js +0 -2
  173. package/dist/mutations/group/errors.js.map +0 -1
  174. package/dist/mutations/group/index.d.ts +0 -3
  175. package/dist/mutations/group/index.d.ts.map +0 -1
  176. package/dist/mutations/group/index.js.map +0 -1
  177. package/dist/mutations/group/membership.d.ts +0 -26
  178. package/dist/mutations/group/membership.d.ts.map +0 -1
  179. package/dist/mutations/group/membership.js.map +0 -1
  180. package/dist/mutations/index.d.ts +0 -4
  181. package/dist/mutations/index.d.ts.map +0 -1
  182. package/dist/mutations/index.js +0 -4
  183. package/dist/mutations/index.js.map +0 -1
  184. package/dist/mutations/space/access.d.ts +0 -30
  185. package/dist/mutations/space/access.d.ts.map +0 -1
  186. package/dist/mutations/space/access.js.map +0 -1
  187. package/dist/mutations/space/default.d.ts +0 -26
  188. package/dist/mutations/space/default.d.ts.map +0 -1
  189. package/dist/mutations/space/default.js.map +0 -1
  190. package/dist/mutations/space/errors.d.ts +0 -5
  191. package/dist/mutations/space/errors.d.ts.map +0 -1
  192. package/dist/mutations/space/errors.js +0 -2
  193. package/dist/mutations/space/errors.js.map +0 -1
  194. package/dist/mutations/space/index.d.ts +0 -4
  195. package/dist/mutations/space/index.d.ts.map +0 -1
  196. package/dist/mutations/space/index.js.map +0 -1
  197. package/dist/mutations/user/index.d.ts +0 -1
  198. package/dist/mutations/user/index.d.ts.map +0 -1
  199. package/dist/mutations/user/index.js.map +0 -1
  200. package/dist/public.d.ts +0 -5
  201. package/dist/public.d.ts.map +0 -1
  202. package/dist/public.js +0 -154
  203. package/dist/public.js.map +0 -1
  204. package/dist/queries/application/association.d.ts +0 -18
  205. package/dist/queries/application/association.d.ts.map +0 -1
  206. package/dist/queries/application/association.js +0 -82
  207. package/dist/queries/application/association.js.map +0 -1
  208. package/dist/queries/application/identity.d.ts +0 -4
  209. package/dist/queries/application/identity.d.ts.map +0 -1
  210. package/dist/queries/application/identity.js +0 -41
  211. package/dist/queries/application/identity.js.map +0 -1
  212. package/dist/queries/application/index.d.ts +0 -3
  213. package/dist/queries/application/index.d.ts.map +0 -1
  214. package/dist/queries/application/index.js +0 -3
  215. package/dist/queries/application/index.js.map +0 -1
  216. package/dist/queries/group/identity.d.ts +0 -3
  217. package/dist/queries/group/identity.d.ts.map +0 -1
  218. package/dist/queries/group/identity.js +0 -29
  219. package/dist/queries/group/identity.js.map +0 -1
  220. package/dist/queries/group/index.d.ts +0 -3
  221. package/dist/queries/group/index.d.ts.map +0 -1
  222. package/dist/queries/group/index.js +0 -3
  223. package/dist/queries/group/index.js.map +0 -1
  224. package/dist/queries/group/membership.d.ts +0 -17
  225. package/dist/queries/group/membership.d.ts.map +0 -1
  226. package/dist/queries/group/membership.js +0 -47
  227. package/dist/queries/group/membership.js.map +0 -1
  228. package/dist/queries/index.d.ts +0 -4
  229. package/dist/queries/index.d.ts.map +0 -1
  230. package/dist/queries/index.js +0 -4
  231. package/dist/queries/index.js.map +0 -1
  232. package/dist/queries/space/access.d.ts +0 -24
  233. package/dist/queries/space/access.d.ts.map +0 -1
  234. package/dist/queries/space/access.js.map +0 -1
  235. package/dist/queries/space/default.d.ts +0 -10
  236. package/dist/queries/space/default.d.ts.map +0 -1
  237. package/dist/queries/space/default.js +0 -25
  238. package/dist/queries/space/default.js.map +0 -1
  239. package/dist/queries/space/index.d.ts +0 -3
  240. package/dist/queries/space/index.d.ts.map +0 -1
  241. package/dist/queries/space/index.js.map +0 -1
  242. package/dist/rules/application/association.d.ts +0 -13
  243. package/dist/rules/application/association.d.ts.map +0 -1
  244. package/dist/rules/application/association.js +0 -10
  245. package/dist/rules/application/association.js.map +0 -1
  246. package/dist/rules/application/index.d.ts +0 -4
  247. package/dist/rules/application/index.d.ts.map +0 -1
  248. package/dist/rules/application/index.js +0 -4
  249. package/dist/rules/application/index.js.map +0 -1
  250. package/dist/rules/application/removal.d.ts +0 -11
  251. package/dist/rules/application/removal.d.ts.map +0 -1
  252. package/dist/rules/application/removal.js +0 -6
  253. package/dist/rules/application/removal.js.map +0 -1
  254. package/dist/rules/application/result.d.ts +0 -8
  255. package/dist/rules/application/result.d.ts.map +0 -1
  256. package/dist/rules/application/result.js +0 -17
  257. package/dist/rules/application/result.js.map +0 -1
  258. package/dist/rules/group/index.d.ts +0 -2
  259. package/dist/rules/group/index.d.ts.map +0 -1
  260. package/dist/rules/group/index.js +0 -2
  261. package/dist/rules/group/index.js.map +0 -1
  262. package/dist/rules/group/membership.d.ts +0 -5
  263. package/dist/rules/group/membership.d.ts.map +0 -1
  264. package/dist/rules/group/membership.js +0 -12
  265. package/dist/rules/group/membership.js.map +0 -1
  266. package/dist/rules/index.d.ts +0 -5
  267. package/dist/rules/index.d.ts.map +0 -1
  268. package/dist/rules/index.js +0 -5
  269. package/dist/rules/index.js.map +0 -1
  270. package/dist/rules/space/access.d.ts +0 -8
  271. package/dist/rules/space/access.d.ts.map +0 -1
  272. package/dist/rules/space/access.js +0 -18
  273. package/dist/rules/space/access.js.map +0 -1
  274. package/dist/rules/space/default.d.ts +0 -4
  275. package/dist/rules/space/default.d.ts.map +0 -1
  276. package/dist/rules/space/default.js +0 -7
  277. package/dist/rules/space/default.js.map +0 -1
  278. package/dist/rules/space/index.d.ts +0 -3
  279. package/dist/rules/space/index.d.ts.map +0 -1
  280. package/dist/rules/space/index.js +0 -3
  281. package/dist/rules/space/index.js.map +0 -1
  282. package/dist/rules/user/ensure.d.ts +0 -21
  283. package/dist/rules/user/ensure.d.ts.map +0 -1
  284. package/dist/rules/user/ensure.js +0 -61
  285. package/dist/rules/user/ensure.js.map +0 -1
  286. package/dist/rules/user/grant.d.ts +0 -13
  287. package/dist/rules/user/grant.d.ts.map +0 -1
  288. package/dist/rules/user/grant.js +0 -12
  289. package/dist/rules/user/grant.js.map +0 -1
  290. package/dist/rules/user/index.d.ts +0 -3
  291. package/dist/rules/user/index.d.ts.map +0 -1
  292. package/dist/rules/user/index.js +0 -3
  293. package/dist/rules/user/index.js.map +0 -1
  294. package/dist/schema/application/class.d.ts +0 -152
  295. package/dist/schema/application/class.d.ts.map +0 -1
  296. package/dist/schema/application/class.js +0 -10
  297. package/dist/schema/application/class.js.map +0 -1
  298. package/dist/schema/application/core.d.ts +0 -159
  299. package/dist/schema/application/core.d.ts.map +0 -1
  300. package/dist/schema/application/core.js +0 -13
  301. package/dist/schema/application/core.js.map +0 -1
  302. package/dist/schema/application/index.d.ts +0 -7
  303. package/dist/schema/application/index.d.ts.map +0 -1
  304. package/dist/schema/application/index.js +0 -7
  305. package/dist/schema/application/index.js.map +0 -1
  306. package/dist/schema/application/methods.d.ts +0 -171
  307. package/dist/schema/application/methods.d.ts.map +0 -1
  308. package/dist/schema/application/methods.js +0 -48
  309. package/dist/schema/application/methods.js.map +0 -1
  310. package/dist/schema/application/policies.d.ts +0 -3
  311. package/dist/schema/application/policies.d.ts.map +0 -1
  312. package/dist/schema/application/policies.js +0 -11
  313. package/dist/schema/application/policies.js.map +0 -1
  314. package/dist/schema/application/relationships.d.ts +0 -795
  315. package/dist/schema/application/relationships.d.ts.map +0 -1
  316. package/dist/schema/application/relationships.js +0 -20
  317. package/dist/schema/application/relationships.js.map +0 -1
  318. package/dist/schema/application/view.d.ts +0 -155
  319. package/dist/schema/application/view.d.ts.map +0 -1
  320. package/dist/schema/application/view.js +0 -7
  321. package/dist/schema/application/view.js.map +0 -1
  322. package/dist/schema/domain/index.d.ts.map +0 -1
  323. package/dist/schema/domain/index.js.map +0 -1
  324. package/dist/schema/group/class.d.ts.map +0 -1
  325. package/dist/schema/group/class.js.map +0 -1
  326. package/dist/schema/group/core.d.ts.map +0 -1
  327. package/dist/schema/group/core.js.map +0 -1
  328. package/dist/schema/group/index.d.ts.map +0 -1
  329. package/dist/schema/group/index.js.map +0 -1
  330. package/dist/schema/group/methods.d.ts.map +0 -1
  331. package/dist/schema/group/methods.js.map +0 -1
  332. package/dist/schema/group/policies.d.ts.map +0 -1
  333. package/dist/schema/group/policies.js.map +0 -1
  334. package/dist/schema/group/relationships.d.ts.map +0 -1
  335. package/dist/schema/group/relationships.js.map +0 -1
  336. package/dist/schema/group/view.d.ts.map +0 -1
  337. package/dist/schema/group/view.js.map +0 -1
  338. package/dist/schema/home/index.d.ts.map +0 -1
  339. package/dist/schema/home/index.js.map +0 -1
  340. package/dist/schema/home/view.d.ts.map +0 -1
  341. package/dist/schema/home/view.js.map +0 -1
  342. package/dist/schema/index.d.ts.map +0 -1
  343. package/dist/schema/index.js.map +0 -1
  344. package/dist/schema/space/class.d.ts.map +0 -1
  345. package/dist/schema/space/class.js.map +0 -1
  346. package/dist/schema/space/core.d.ts.map +0 -1
  347. package/dist/schema/space/core.js.map +0 -1
  348. package/dist/schema/space/index.d.ts.map +0 -1
  349. package/dist/schema/space/index.js.map +0 -1
  350. package/dist/schema/space/methods.d.ts.map +0 -1
  351. package/dist/schema/space/methods.js.map +0 -1
  352. package/dist/schema/space/policies.d.ts.map +0 -1
  353. package/dist/schema/space/policies.js.map +0 -1
  354. package/dist/schema/space/relationships.d.ts.map +0 -1
  355. package/dist/schema/space/relationships.js.map +0 -1
  356. package/dist/schema/space/view.d.ts.map +0 -1
  357. package/dist/schema/space/view.js.map +0 -1
  358. package/dist/schema/user/administrator.d.ts +0 -30
  359. package/dist/schema/user/administrator.d.ts.map +0 -1
  360. package/dist/schema/user/administrator.js +0 -19
  361. package/dist/schema/user/administrator.js.map +0 -1
  362. package/dist/schema/user/class.d.ts.map +0 -1
  363. package/dist/schema/user/class.js.map +0 -1
  364. package/dist/schema/user/ensure.d.ts +0 -37
  365. package/dist/schema/user/ensure.d.ts.map +0 -1
  366. package/dist/schema/user/ensure.js +0 -28
  367. package/dist/schema/user/ensure.js.map +0 -1
  368. package/dist/schema/user/index.d.ts.map +0 -1
  369. package/dist/schema/user/index.js.map +0 -1
  370. package/dist/schema/user/interface.d.ts +0 -10
  371. package/dist/schema/user/interface.d.ts.map +0 -1
  372. package/dist/schema/user/interface.js +0 -12
  373. package/dist/schema/user/interface.js.map +0 -1
  374. package/dist/schema/user/view.d.ts.map +0 -1
  375. package/dist/schema/user/view.js.map +0 -1
  376. package/dist/tests/cross-layer/public.test.d.ts +0 -2
  377. package/dist/tests/cross-layer/public.test.d.ts.map +0 -1
  378. package/dist/tests/cross-layer/public.test.js +0 -70
  379. package/dist/tests/cross-layer/public.test.js.map +0 -1
  380. package/dist/tests/cross-layer/workflows.test.d.ts +0 -2
  381. package/dist/tests/cross-layer/workflows.test.d.ts.map +0 -1
  382. package/dist/tests/cross-layer/workflows.test.js +0 -290
  383. package/dist/tests/cross-layer/workflows.test.js.map +0 -1
  384. package/dist/tests/index.d.ts +0 -3
  385. package/dist/tests/index.d.ts.map +0 -1
  386. package/dist/tests/index.js +0 -3
  387. package/dist/tests/index.js.map +0 -1
  388. package/dist/utils/graph-endpoint/index.d.ts +0 -13
  389. package/dist/utils/graph-endpoint/index.d.ts.map +0 -1
  390. package/dist/utils/graph-endpoint/index.js +0 -6
  391. package/dist/utils/graph-endpoint/index.js.map +0 -1
  392. package/dist/utils/index.d.ts +0 -3
  393. package/dist/utils/index.d.ts.map +0 -1
  394. package/dist/utils/index.js +0 -3
  395. package/dist/utils/index.js.map +0 -1
  396. package/dist/utils/query-page/index.d.ts +0 -3
  397. package/dist/utils/query-page/index.d.ts.map +0 -1
  398. package/dist/utils/query-page/index.js +0 -2
  399. package/dist/utils/query-page/index.js.map +0 -1
  400. package/dist/utils/query-page/nodes.d.ts +0 -16
  401. package/dist/utils/query-page/nodes.d.ts.map +0 -1
  402. package/dist/utils/query-page/nodes.js +0 -22
  403. package/dist/utils/query-page/nodes.js.map +0 -1
  404. package/dist/workflows/application/errors.d.ts +0 -5
  405. package/dist/workflows/application/errors.d.ts.map +0 -1
  406. package/dist/workflows/application/errors.js +0 -25
  407. package/dist/workflows/application/errors.js.map +0 -1
  408. package/dist/workflows/application/index.d.ts +0 -3
  409. package/dist/workflows/application/index.d.ts.map +0 -1
  410. package/dist/workflows/application/index.js +0 -3
  411. package/dist/workflows/application/index.js.map +0 -1
  412. package/dist/workflows/application/install.d.ts +0 -3
  413. package/dist/workflows/application/install.d.ts.map +0 -1
  414. package/dist/workflows/application/install.js +0 -37
  415. package/dist/workflows/application/install.js.map +0 -1
  416. package/dist/workflows/application/uninstall.d.ts +0 -4
  417. package/dist/workflows/application/uninstall.d.ts.map +0 -1
  418. package/dist/workflows/application/uninstall.js +0 -25
  419. package/dist/workflows/application/uninstall.js.map +0 -1
  420. package/dist/workflows/group/assign-user.d.ts +0 -8
  421. package/dist/workflows/group/assign-user.d.ts.map +0 -1
  422. package/dist/workflows/group/assign-user.js +0 -32
  423. package/dist/workflows/group/assign-user.js.map +0 -1
  424. package/dist/workflows/group/ensure-administrator.d.ts +0 -4
  425. package/dist/workflows/group/ensure-administrator.d.ts.map +0 -1
  426. package/dist/workflows/group/ensure-administrator.js +0 -26
  427. package/dist/workflows/group/ensure-administrator.js.map +0 -1
  428. package/dist/workflows/group/errors.d.ts +0 -2
  429. package/dist/workflows/group/errors.d.ts.map +0 -1
  430. package/dist/workflows/group/errors.js +0 -7
  431. package/dist/workflows/group/errors.js.map +0 -1
  432. package/dist/workflows/group/index.d.ts +0 -4
  433. package/dist/workflows/group/index.d.ts.map +0 -1
  434. package/dist/workflows/group/index.js.map +0 -1
  435. package/dist/workflows/group/unassign-user.d.ts +0 -8
  436. package/dist/workflows/group/unassign-user.d.ts.map +0 -1
  437. package/dist/workflows/group/unassign-user.js +0 -32
  438. package/dist/workflows/group/unassign-user.js.map +0 -1
  439. package/dist/workflows/index.d.ts +0 -4
  440. package/dist/workflows/index.d.ts.map +0 -1
  441. package/dist/workflows/index.js.map +0 -1
  442. package/dist/workflows/space/add-user.d.ts +0 -8
  443. package/dist/workflows/space/add-user.d.ts.map +0 -1
  444. package/dist/workflows/space/add-user.js +0 -34
  445. package/dist/workflows/space/add-user.js.map +0 -1
  446. package/dist/workflows/space/errors.d.ts +0 -3
  447. package/dist/workflows/space/errors.d.ts.map +0 -1
  448. package/dist/workflows/space/errors.js +0 -10
  449. package/dist/workflows/space/errors.js.map +0 -1
  450. package/dist/workflows/space/index.d.ts +0 -4
  451. package/dist/workflows/space/index.d.ts.map +0 -1
  452. package/dist/workflows/space/index.js.map +0 -1
  453. package/dist/workflows/space/remove-user.d.ts +0 -8
  454. package/dist/workflows/space/remove-user.d.ts.map +0 -1
  455. package/dist/workflows/space/remove-user.js +0 -62
  456. package/dist/workflows/space/remove-user.js.map +0 -1
  457. package/dist/workflows/space/set-default.d.ts +0 -9
  458. package/dist/workflows/space/set-default.d.ts.map +0 -1
  459. package/dist/workflows/space/set-default.js +0 -43
  460. package/dist/workflows/space/set-default.js.map +0 -1
@@ -0,0 +1 @@
1
+ export * from './user/index.js';
@@ -0,0 +1 @@
1
+ export { resolveHomeAction } from './resolve-home.js';
@@ -0,0 +1,19 @@
1
+ import { defineAction } from '@astrale-os/sdk/action';
2
+ import { InvocationError } from '@astrale-os/sdk/execution';
3
+ import { Path } from '@astrale-os/sdk/graph/path';
4
+ import { observeHome } from '#queries/user';
5
+ export const resolveHomeAction = defineAction()('User.resolveHome', async ({ domain, query, self }) => {
6
+ const observed = await query(observeHome(domain), Path.id(self).raw);
7
+ if (observed.spaces.length > 1) {
8
+ throw new InvocationError('CONFLICT', 'The Shell User has more than one default Space.', {
9
+ reason: { code: 'MULTIPLE_DEFAULT_SPACES', details: {} },
10
+ });
11
+ }
12
+ const home = observed.spaces[0];
13
+ if (home !== undefined && home.class !== domain.classes.Space.key) {
14
+ throw new InvocationError('CONFLICT', 'The Shell User default target is not a Shell Space.', {
15
+ reason: { code: 'DEFAULT_SPACE_CLASS_CONFLICT', details: {} },
16
+ });
17
+ }
18
+ return Object.freeze({ userId: self, personalSpaceId: home?.id ?? null });
19
+ });
@@ -0,0 +1,5 @@
1
+ export declare const frontend: import("@astrale-os/sdk/view").Frontend<import("@astrale-os/sdk/schema").DomainSchema<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput, import("@astrale-os/sdk/schema").DomainOfInput<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput>>>;
2
+ export declare const application: import("@astrale-os/sdk/application").Application<import("@astrale-os/sdk/schema").DomainSchema<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput, import("@astrale-os/sdk/schema").DomainOfInput<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput>>, import("@astrale-os/sdk/runtime").Runtime<import("@astrale-os/sdk/schema").DomainSchema<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput, import("@astrale-os/sdk/schema").DomainOfInput<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput>>, {}, () => {
3
+ providers: {};
4
+ }, readonly [import("@astrale-os/sdk/action").ActionDefinition<import("@astrale-os/sdk/schema").DomainSchema<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput, import("@astrale-os/sdk/schema").DomainOfInput<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput>>, "User.resolveHome", Readonly<Record<never, never>>>], readonly [import("@astrale-os/sdk/workflow").WorkflowDefinition<import("@astrale-os/sdk/schema").DomainSchema<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput, import("@astrale-os/sdk/schema").DomainOfInput<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput>>, "setupAdmin", Readonly<Record<never, never>>>, import("@astrale-os/sdk/workflow").WorkflowDefinition<import("@astrale-os/sdk/schema").DomainSchema<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput, import("@astrale-os/sdk/schema").DomainOfInput<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput>>, "setupMember", Readonly<Record<never, never>>>, import("@astrale-os/sdk/workflow").WorkflowDefinition<import("@astrale-os/sdk/schema").DomainSchema<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput, import("@astrale-os/sdk/schema").DomainOfInput<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput>>, "Group.assignUser", Readonly<Record<never, never>>>, import("@astrale-os/sdk/workflow").WorkflowDefinition<import("@astrale-os/sdk/schema").DomainSchema<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput, import("@astrale-os/sdk/schema").DomainOfInput<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput>>, "Group.unassignUser", Readonly<Record<never, never>>>, import("@astrale-os/sdk/workflow").WorkflowDefinition<import("@astrale-os/sdk/schema").DomainSchema<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput, import("@astrale-os/sdk/schema").DomainOfInput<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput>>, "Space.addUser", Readonly<Record<never, never>>>, import("@astrale-os/sdk/workflow").WorkflowDefinition<import("@astrale-os/sdk/schema").DomainSchema<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput, import("@astrale-os/sdk/schema").DomainOfInput<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput>>, "Space.removeUser", Readonly<Record<never, never>>>, import("@astrale-os/sdk/workflow").WorkflowDefinition<import("@astrale-os/sdk/schema").DomainSchema<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput, import("@astrale-os/sdk/schema").DomainOfInput<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput>>, "Space.setDefault", Readonly<Record<never, never>>>]>, import("@astrale-os/sdk/view").Frontend<import("@astrale-os/sdk/schema").DomainSchema<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput, import("@astrale-os/sdk/schema").DomainOfInput<"shell.astrale.ai", import("./schema/domain/index.js").ShellSchemaInput>>>, undefined, import("@astrale-os/sdk/application").Requirements>;
5
+ export default application;
@@ -0,0 +1,29 @@
1
+ import { defineApplication, defineFrontend, external, requirements, } from '@astrale-os/sdk/application';
2
+ import { K } from '@astrale-os/sdk/schema';
3
+ import runtime from './runtime.js';
4
+ import { ShellSchema } from './schema/index.js';
5
+ export const frontend = defineFrontend({
6
+ schema: ShellSchema,
7
+ source: external('https://app.astrale.ai'),
8
+ routes: {
9
+ group: '/groups',
10
+ home: '/',
11
+ space: '/spaces',
12
+ user: '/users',
13
+ },
14
+ entrypoint: 'home',
15
+ });
16
+ export const application = defineApplication({
17
+ schema: ShellSchema,
18
+ runtime,
19
+ frontend,
20
+ requirements: requirements({
21
+ callables: [
22
+ K.classes.Identity.static.methods.whois,
23
+ K.functions.provision,
24
+ K.functions.query,
25
+ K.functions.mutate,
26
+ ],
27
+ }),
28
+ });
29
+ export default application;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- export { Application, Group, ORIGIN, S, ShellCore, ShellSchema, Space, User, adminGroup, administers_group, administers_space, applicationCore, applicationInstall, applicationUninstall, applicationView, application_of, belongsToSpace, default_space, defaultSpace, ensureAdministrator, ensureUser, groupAssignUser, groupCore, groupUnassignUser, groupView, homeView, iUser, installed_in, mayAdministerApplication, mayAdministerGroup, mayAdministerSpace, memberGroup, member_of_group, member_of_space, owns_space, ownsSpace, shellApplication, spaceAddUser, spaceCore, spaceRemoveUser, spaceSetDefault, spaceView, userView, type GroupMembershipInput, type GroupMembershipResult, type EnsureShellAdministratorInput, type EnsureShellAdministratorResult, type EnsureShellUserResult, type InstallApplicationInput, type InstallApplicationResult, type SetDefaultSpaceInput, type SetDefaultSpaceResult, type Shell, type ShellCoreName, type ShellDomainOperations, type ShellEdgeName, type ShellNodeName, type ShellSchemaInput, type SpaceUserAccess, type SpaceUserAccessInput, type SpaceUserAccessResult, type SpaceUserInput, type SpaceUserResult, type UninstallApplicationInput, type UninstallApplicationResult, } from '#schema';
2
- export { ShellDomain } from './public.js';
3
- export { buildShellUserProvisioning, projectShellUserProvisioning, type EnsureShellUserInput, type ShellUserProvisioning, } from './rules/user/index.js';
4
- //# sourceMappingURL=index.d.ts.map
1
+ export { Group, ORIGIN, S, ShellCore, ShellSchema, Space, User, adminGroup, administers_space, belongsToSpace, default_space, defaultSpace, groupAssignUser, groupCore, groupUnassignUser, groupView, homeView, mayAdministerSpace, maySetupUsers, memberGroup, member_of_group, member_of_space, owns_space, ownsSpace, resolveHome, setupAdmin, setupMember, spaceAddUser, spaceCore, spaceRemoveUser, spaceSetDefault, spaceView, userView, type GroupMembershipInput, type GroupMembershipResult, type ResolveHomeResult, type SetDefaultSpaceInput, type SetDefaultSpaceResult, type SetupUserInput, type SetupUserResult, type Shell, type SpaceUserAccess, type SpaceUserAccessInput, type SpaceUserAccessResult, type SpaceUserInput, type SpaceUserResult, } from '#schema';
2
+ export { application } from './application.js';
3
+ export { default as runtime } from './runtime.js';
package/dist/index.js CHANGED
@@ -1,4 +1,3 @@
1
- export { Application, Group, ORIGIN, S, ShellCore, ShellSchema, Space, User, adminGroup, administers_group, administers_space, applicationCore, applicationInstall, applicationUninstall, applicationView, application_of, belongsToSpace, default_space, defaultSpace, ensureAdministrator, ensureUser, groupAssignUser, groupCore, groupUnassignUser, groupView, homeView, iUser, installed_in, mayAdministerApplication, mayAdministerGroup, mayAdministerSpace, memberGroup, member_of_group, member_of_space, owns_space, ownsSpace, shellApplication, spaceAddUser, spaceCore, spaceRemoveUser, spaceSetDefault, spaceView, userView, } from '#schema';
2
- export { ShellDomain } from './public.js';
3
- export { buildShellUserProvisioning, projectShellUserProvisioning, } from './rules/user/index.js';
4
- //# sourceMappingURL=index.js.map
1
+ export { Group, ORIGIN, S, ShellCore, ShellSchema, Space, User, adminGroup, administers_space, belongsToSpace, default_space, defaultSpace, groupAssignUser, groupCore, groupUnassignUser, groupView, homeView, mayAdministerSpace, maySetupUsers, memberGroup, member_of_group, member_of_space, owns_space, ownsSpace, resolveHome, setupAdmin, setupMember, spaceAddUser, spaceCore, spaceRemoveUser, spaceSetDefault, spaceView, userView, } from '#schema';
2
+ export { application } from './application.js';
3
+ export { default as runtime } from './runtime.js';
@@ -1,2 +1 @@
1
- export { assignLocalGroupMembership, assignGroupMembership, unassignGroupMembership, } from './membership.js';
2
- //# sourceMappingURL=index.js.map
1
+ export { changeGroupMembership, } from './membership.js';
@@ -1,71 +1,21 @@
1
- import { ClassPath } from '@astrale-os/sdk/graph';
2
1
  import { Path } from '@astrale-os/sdk/graph/path';
3
2
  import { defineMutation } from '@astrale-os/sdk/mutation';
4
- import { err, ok } from '@astrale-os/sdk/result';
5
- import { K } from '@astrale-os/sdk/schema/kernel';
6
- import { S } from '#schema';
7
- const MEMBER_OF_GROUP = ClassPath.from(S.$.class('member_of_group'));
8
- const EXTENDS_WITH = ClassPath.from(K.extends_with);
9
- export const assignGroupMembership = defineMutation({
10
- id: 'shell.group.assign-membership',
11
- build: (change) => (mutation) => {
12
- mutation.expect.query(change.guards.authority);
13
- mutation.expect.query(change.guards.local);
14
- if (change.state === 'complete') {
15
- throw new TypeError('Complete Group membership is already converged.');
16
- }
17
- const source = Path.from(change.user);
18
- const target = Path.id(change.group);
19
- if (change.state === 'local-only') {
20
- mutation.expect.edge({ class: MEMBER_OF_GROUP, source, target });
21
- }
22
- if (change.state === 'authority-only') {
23
- mutation.expect.edge({ class: EXTENDS_WITH, source, target });
24
- }
25
- if (change.state !== 'local-only') {
26
- mutation.createEdge({ class: MEMBER_OF_GROUP, source, target });
27
- }
28
- if (change.state !== 'authority-only') {
29
- mutation.createEdge({ class: EXTENDS_WITH, source, target });
30
- }
31
- },
32
- project: () => ok(Object.freeze({})),
33
- reject: (failure) => err({ code: failure.code, outcomeKnown: failure.outcomeKnown }),
34
- });
35
- /** Converge Shell product membership without mutating Kernel identity authority. */
36
- export const assignLocalGroupMembership = defineMutation({
37
- id: 'shell.group.assign-local-membership',
38
- build: (change) => (mutation) => {
39
- mutation.expect.query(change.guard);
40
- mutation.createEdge({
41
- class: MEMBER_OF_GROUP,
42
- source: Path.from(change.user),
43
- target: Path.id(change.group),
44
- });
45
- },
46
- project: () => ok(Object.freeze({})),
47
- reject: (failure) => err({ code: failure.code, outcomeKnown: failure.outcomeKnown }),
48
- });
49
- export const unassignGroupMembership = defineMutation({
50
- id: 'shell.group.unassign-membership',
51
- build: (change) => (mutation) => {
52
- mutation.expect.query(change.guards.authority);
53
- mutation.expect.query(change.guards.local);
54
- if (change.state === 'absent') {
55
- throw new TypeError('Absent Group membership is already converged.');
56
- }
57
- const source = Path.from(change.user);
58
- const target = Path.id(change.group);
59
- if (change.state !== 'authority-only') {
60
- mutation.expect.edge({ class: MEMBER_OF_GROUP, source, target });
61
- mutation.deleteEdge({ class: MEMBER_OF_GROUP, source, target });
62
- }
63
- if (change.state !== 'local-only') {
64
- mutation.expect.edge({ class: EXTENDS_WITH, source, target });
65
- mutation.deleteEdge({ class: EXTENDS_WITH, source, target });
66
- }
67
- },
68
- project: () => ok(Object.freeze({})),
69
- reject: (failure) => err({ code: failure.code, outcomeKnown: failure.outcomeKnown }),
70
- });
71
- //# sourceMappingURL=membership.js.map
3
+ export function changeGroupMembership(domain) {
4
+ return defineMutation({
5
+ id: 'shell.group.membership',
6
+ change(mutation, change) {
7
+ mutation.expect.query(change.guard);
8
+ const edge = {
9
+ class: domain.classes.member_of_group,
10
+ source: Path.parse(change.user),
11
+ target: Path.id(change.group),
12
+ };
13
+ if (change.present)
14
+ mutation.createEdge(edge);
15
+ else
16
+ mutation.deleteEdge(edge);
17
+ },
18
+ project: () => Object.freeze({ ok: true }),
19
+ reject: (failure) => Object.freeze({ ok: false, code: failure.code, outcomeKnown: failure.outcomeKnown }),
20
+ });
21
+ }
@@ -1,54 +1,25 @@
1
- import { ClassPath } from '@astrale-os/sdk/graph';
2
1
  import { Path } from '@astrale-os/sdk/graph/path';
3
2
  import { defineMutation } from '@astrale-os/sdk/mutation';
4
- import { err, ok } from '@astrale-os/sdk/result';
5
- import { S } from '#schema';
6
- import { graphEndpointPath } from '#utils/graph-endpoint';
7
- const ADMINISTERS_SPACE = ClassPath.from(S.$.class('administers_space'));
8
- const MEMBER_OF_SPACE = ClassPath.from(S.$.class('member_of_space'));
9
- export const setSpaceUserAccess = defineMutation({
10
- id: 'shell.space.set-user-access',
11
- build: (change) => (mutation) => {
12
- mutation.expect.query(change.guards.admin);
13
- mutation.expect.query(change.guards.member);
14
- if (change.state === change.access) {
15
- throw new TypeError('Direct Space access is already converged.');
16
- }
17
- const source = graphEndpointPath(change.user);
18
- const target = Path.id(change.space);
19
- const requested = change.access === 'admin' ? ADMINISTERS_SPACE : MEMBER_OF_SPACE;
20
- const opposite = change.access === 'admin' ? MEMBER_OF_SPACE : ADMINISTERS_SPACE;
21
- if (change.state === 'admin' || change.state === 'conflict') {
22
- mutation.expect.edge({ class: ADMINISTERS_SPACE, source, target });
23
- }
24
- if (change.state === 'member' || change.state === 'conflict') {
25
- mutation.expect.edge({ class: MEMBER_OF_SPACE, source, target });
26
- }
27
- if (change.state !== 'none')
28
- mutation.deleteEdge({ class: opposite, source, target });
29
- if (change.state !== 'conflict')
30
- mutation.createEdge({ class: requested, source, target });
31
- },
32
- project: () => ok(Object.freeze({})),
33
- reject: (failure) => err({ code: failure.code, outcomeKnown: failure.outcomeKnown }),
34
- });
35
- export const removeSpaceUserAccess = defineMutation({
36
- id: 'shell.space.remove-user-access',
37
- build: (subject) => (mutation) => {
38
- mutation.expect.query(subject.guards.admin);
39
- mutation.expect.query(subject.guards.member);
40
- const source = graphEndpointPath(subject.user);
41
- const target = Path.id(subject.space);
42
- if (subject.state === 'member' || subject.state === 'conflict') {
43
- mutation.expect.edge({ class: MEMBER_OF_SPACE, source, target });
44
- mutation.deleteEdge({ class: MEMBER_OF_SPACE, source, target });
45
- }
46
- if (subject.state === 'admin' || subject.state === 'conflict') {
47
- mutation.expect.edge({ class: ADMINISTERS_SPACE, source, target });
48
- mutation.deleteEdge({ class: ADMINISTERS_SPACE, source, target });
49
- }
50
- },
51
- project: () => ok(Object.freeze({})),
52
- reject: (failure) => err({ code: failure.code, outcomeKnown: failure.outcomeKnown }),
53
- });
54
- //# sourceMappingURL=access.js.map
3
+ export function changeSpaceAccess(domain) {
4
+ return defineMutation({
5
+ id: 'shell.space.access',
6
+ change(mutation, change) {
7
+ mutation.expect.query(change.guards.member);
8
+ mutation.expect.query(change.guards.admin);
9
+ const source = Path.parse(change.user);
10
+ const target = Path.id(change.space);
11
+ const member = { class: domain.classes.member_of_space, source, target };
12
+ const admin = { class: domain.classes.administers_space, source, target };
13
+ if (change.removeMember)
14
+ mutation.deleteEdge(member);
15
+ if (change.removeAdmin)
16
+ mutation.deleteEdge(admin);
17
+ if (change.addMember)
18
+ mutation.createEdge(member);
19
+ if (change.addAdmin)
20
+ mutation.createEdge(admin);
21
+ },
22
+ project: () => Object.freeze({ ok: true }),
23
+ reject: (failure) => Object.freeze({ ok: false, code: failure.code, outcomeKnown: failure.outcomeKnown }),
24
+ });
25
+ }
@@ -1,46 +1,25 @@
1
- import { ClassPath } from '@astrale-os/sdk/graph';
2
1
  import { Path } from '@astrale-os/sdk/graph/path';
3
2
  import { defineMutation } from '@astrale-os/sdk/mutation';
4
- import { err, ok } from '@astrale-os/sdk/result';
5
- import { S } from '#schema';
6
- import { graphEndpointPath } from '#utils/graph-endpoint';
7
- const DEFAULT_SPACE = ClassPath.from(S.$.class('default_space'));
8
- export const setDefaultSpace = defineMutation({
9
- id: 'shell.space.set-default',
10
- build: (change) => (mutation) => {
11
- mutation.expect.query(change.guards.access);
12
- mutation.expect.query(change.guards.defaults);
13
- const source = graphEndpointPath(change.user);
14
- const selected = Path.id(change.space);
15
- const current = new Set(change.existing);
16
- if (current.size === 1 && current.has(change.space)) {
17
- throw new TypeError('Default Space is already converged.');
18
- }
19
- for (const space of current) {
20
- const target = Path.id(space);
21
- mutation.expect.edge({ class: DEFAULT_SPACE, source, target });
22
- if (space !== change.space)
23
- mutation.deleteEdge({ class: DEFAULT_SPACE, source, target });
24
- }
25
- if (!current.has(change.space)) {
26
- mutation.createEdge({ class: DEFAULT_SPACE, source, target: selected });
27
- }
28
- },
29
- project: () => ok(Object.freeze({})),
30
- reject: (failure) => err({ code: failure.code, outcomeKnown: failure.outcomeKnown }),
31
- });
32
- export const clearDefaultSpace = defineMutation({
33
- id: 'shell.space.clear-default',
34
- build: (subject) => (mutation) => {
35
- for (const guard of subject.guards.access)
36
- mutation.expect.query(guard);
37
- mutation.expect.query(subject.guards.defaults);
38
- const source = graphEndpointPath(subject.user);
39
- const target = Path.id(subject.space);
40
- mutation.expect.edge({ class: DEFAULT_SPACE, source, target });
41
- mutation.deleteEdge({ class: DEFAULT_SPACE, source, target });
42
- },
43
- project: () => ok(Object.freeze({})),
44
- reject: (failure) => err({ code: failure.code, outcomeKnown: failure.outcomeKnown }),
45
- });
46
- //# sourceMappingURL=default.js.map
3
+ export function changeDefaultSpace(domain) {
4
+ return defineMutation({
5
+ id: 'shell.space.default',
6
+ change(mutation, change) {
7
+ mutation.expect.query(change.guard);
8
+ const source = Path.id(change.user);
9
+ if (change.previous !== undefined) {
10
+ mutation.deleteEdge({
11
+ class: domain.classes.default_space,
12
+ source,
13
+ target: Path.id(change.previous),
14
+ });
15
+ }
16
+ mutation.createEdge({
17
+ class: domain.classes.default_space,
18
+ source,
19
+ target: Path.id(change.next),
20
+ });
21
+ },
22
+ project: () => Object.freeze({ ok: true }),
23
+ reject: (failure) => Object.freeze({ ok: false, code: failure.code, outcomeKnown: failure.outcomeKnown }),
24
+ });
25
+ }
@@ -1,3 +1,2 @@
1
- export { removeSpaceUserAccess, setSpaceUserAccess, } from './access.js';
2
- export { clearDefaultSpace, setDefaultSpace, } from './default.js';
3
- //# sourceMappingURL=index.js.map
1
+ export { changeSpaceAccess, } from './access.js';
2
+ export { changeDefaultSpace, } from './default.js';
@@ -1,2 +1 @@
1
- "use strict";
2
- //# sourceMappingURL=index.js.map
1
+ export { repairUser } from './repair.js';
@@ -0,0 +1,85 @@
1
+ import { LocalBinding } from '@astrale-os/sdk/graph';
2
+ import { Path } from '@astrale-os/sdk/graph/path';
3
+ import { defineMutation } from '@astrale-os/sdk/mutation';
4
+ const personalSpace = LocalBinding('personalSpace');
5
+ export function repairUser(domain) {
6
+ return defineMutation({
7
+ id: 'shell.user.repair',
8
+ change(mutation, repair) {
9
+ mutation.expect.query(repair.guards.home);
10
+ mutation.expect.query(repair.guards.ownedSpaces);
11
+ mutation.expect.query(repair.guards.groups);
12
+ mutation.expect.node({
13
+ node: Path.id(repair.userId),
14
+ class: domain.classes.User,
15
+ props: repair.currentDisplayName === undefined
16
+ ? { absent: ['displayName'] }
17
+ : { equals: { displayName: repair.currentDisplayName } },
18
+ });
19
+ if (repair.displayName !== undefined) {
20
+ mutation.updateNode({
21
+ node: Path.id(repair.userId),
22
+ class: domain.classes.User,
23
+ props: { set: { displayName: repair.displayName } },
24
+ });
25
+ }
26
+ const home = repair.home.kind === 'create'
27
+ ? mutation.createNode({
28
+ as: personalSpace,
29
+ class: domain.classes.Space,
30
+ props: { name: repair.home.name },
31
+ })
32
+ : Path.id(repair.home.id);
33
+ if (repair.home.kind === 'existing' && repair.home.name !== undefined) {
34
+ mutation.expect.node({
35
+ node: Path.id(repair.home.id),
36
+ class: domain.classes.Space,
37
+ props: { equals: { name: repair.home.currentName } },
38
+ });
39
+ mutation.updateNode({
40
+ node: Path.id(repair.home.id),
41
+ class: domain.classes.Space,
42
+ props: { set: { name: repair.home.name } },
43
+ });
44
+ }
45
+ if (repair.addOwnership) {
46
+ mutation.createEdge({
47
+ class: domain.classes.owns_space,
48
+ source: Path.id(repair.userId),
49
+ target: home,
50
+ });
51
+ }
52
+ if (repair.addDefault) {
53
+ mutation.createEdge({
54
+ class: domain.classes.default_space,
55
+ source: Path.id(repair.userId),
56
+ target: home,
57
+ });
58
+ }
59
+ if (repair.addMember) {
60
+ mutation.createEdge({
61
+ class: domain.classes.member_of_group,
62
+ source: Path.id(repair.userId),
63
+ target: Path.project(domain.core.nodes.member.ref),
64
+ });
65
+ }
66
+ if (repair.addAdmin) {
67
+ mutation.createEdge({
68
+ class: domain.classes.member_of_group,
69
+ source: Path.id(repair.userId),
70
+ target: Path.project(domain.core.nodes.admin.ref),
71
+ });
72
+ }
73
+ },
74
+ project(result, repair) {
75
+ const personalSpaceId = repair.home.kind === 'existing' ? repair.home.id : result.createdNodes[personalSpace];
76
+ if (personalSpaceId === undefined) {
77
+ throw new TypeError('Shell User repair omitted its created personal Space identity.');
78
+ }
79
+ return Object.freeze({ ok: true, personalSpaceId });
80
+ },
81
+ reject(failure) {
82
+ return Object.freeze({ ok: false, code: failure.code, outcomeKnown: failure.outcomeKnown });
83
+ },
84
+ });
85
+ }
@@ -1,93 +1,14 @@
1
- import { Query } from '@astrale-os/sdk/query';
2
- import { defineQuery } from '@astrale-os/sdk/query';
3
- import { S } from '#schema';
4
- import { graphEndpointPath } from '#utils/graph-endpoint';
5
- import { completeNodeQueryGuard } from '#utils/query-page';
6
- const SPACE = { origin: 'shell.astrale.ai', kind: 'class', name: 'Space' };
7
- const GROUP = { origin: 'shell.astrale.ai', kind: 'class', name: 'Group' };
8
- const ADMINISTERS_SPACE = S.$.class('administers_space').schemaRef;
9
- const MEMBER_OF_SPACE = S.$.class('member_of_space').schemaRef;
10
- const OWNS_SPACE = S.$.class('owns_space').schemaRef;
11
- const administeredSpaces = defineQuery({
12
- id: 'shell.space.administered-spaces',
13
- page: { size: 256 },
14
- pagination: { maximumPages: 64 },
15
- build: (user) => Query.from({ kind: 'node', paths: [graphEndpointPath(user)], binding: 'user' })
16
- .expand({
17
- via: [ADMINISTERS_SPACE],
18
- direction: 'outgoing',
19
- bindings: { edge: 'adminAccess', node: 'space' },
20
- })
21
- .filter({ satisfies: SPACE })
22
- .select({ kind: 'nodes', projection: { kind: 'reference' } }),
23
- project: spaceAccessEvidence,
24
- });
25
- const memberSpaces = defineQuery({
26
- id: 'shell.space.member-spaces',
27
- page: { size: 256 },
28
- pagination: { maximumPages: 64 },
29
- build: (user) => Query.from({ kind: 'node', paths: [graphEndpointPath(user)], binding: 'user' })
30
- .expand({
31
- via: [MEMBER_OF_SPACE],
32
- direction: 'outgoing',
33
- bindings: { edge: 'memberAccess', node: 'space' },
34
- })
35
- .filter({ satisfies: SPACE })
36
- .select({ kind: 'nodes', projection: { kind: 'reference' } }),
37
- project: spaceAccessEvidence,
38
- });
39
- const ownedSpaces = defineQuery({
40
- id: 'shell.space.owned-spaces',
41
- page: { size: 256 },
42
- pagination: { maximumPages: 64 },
43
- build: (user) => Query.from({ kind: 'node', paths: [graphEndpointPath(user)], binding: 'user' })
44
- .expand({
45
- via: [OWNS_SPACE],
46
- direction: 'outgoing',
47
- bindings: { edge: 'ownership', node: 'space' },
48
- })
49
- .filter({ satisfies: SPACE })
50
- .select({ kind: 'nodes', projection: { kind: 'reference' } }),
51
- project: spaceAccessEvidence,
52
- });
53
- const groupSpaces = defineQuery({
54
- id: 'shell.space.group-spaces',
55
- page: { size: 256 },
56
- pagination: { maximumPages: 64 },
57
- build: (user) => Query.from({ kind: 'node', paths: [graphEndpointPath(user)], binding: 'user' })
58
- .expand({
59
- via: [S.$.class('member_of_group').schemaRef],
60
- direction: 'outgoing',
61
- bindings: { edge: 'membership', node: 'group' },
62
- })
63
- .filter({ satisfies: GROUP })
64
- .expand({
65
- via: [OWNS_SPACE, ADMINISTERS_SPACE, MEMBER_OF_SPACE],
66
- direction: 'outgoing',
67
- bindings: { edge: 'groupAccess', node: 'space' },
68
- })
69
- .filter({ satisfies: SPACE })
70
- .select({ kind: 'nodes', projection: { kind: 'reference' } }),
71
- project: spaceAccessEvidence,
72
- });
73
- export const observeDirectSpaceAccess = defineQuery.composite({
74
- id: 'shell.space.observe-direct-access',
75
- compose: (query, subject) => query.combine({
76
- admin: query.query('admin', administeredSpaces, subject.user),
77
- member: query.query('member', memberSpaces, subject.user),
78
- }),
79
- });
80
- export const observeEffectiveSpaceAccess = defineQuery.composite({
81
- id: 'shell.space.observe-effective-access',
82
- compose: (query, subject) => query.combine({
83
- administers: query.query('administers', administeredSpaces, subject.user),
84
- group: query.query('group', groupSpaces, subject.user),
85
- member: query.query('member', memberSpaces, subject.user),
86
- owns: query.query('owns', ownedSpaces, subject.user),
87
- }),
88
- });
89
- function spaceAccessEvidence(pages, _user, { ast }) {
90
- const guard = completeNodeQueryGuard(pages, ast, 'Space access');
91
- return Object.freeze({ spaces: guard.equals.ids, guard });
1
+ import { defineCompositeQuery } from '@astrale-os/sdk/query';
2
+ import { observeAdminSpaces } from './admin.js';
3
+ import { observeMemberSpaces } from './member.js';
4
+ export function observeDirectSpaceAccess(domain) {
5
+ return defineCompositeQuery({
6
+ id: 'shell.space.direct-access',
7
+ compose({ combine, query }, user) {
8
+ return combine({
9
+ admin: query('admin', observeAdminSpaces(domain), user),
10
+ member: query('member', observeMemberSpaces(domain), user),
11
+ });
12
+ },
13
+ });
92
14
  }
93
- //# sourceMappingURL=access.js.map
@@ -0,0 +1,27 @@
1
+ import { Path } from '@astrale-os/sdk/graph/path';
2
+ import { Query, defineQuery, queryResult } from '@astrale-os/sdk/query';
3
+ function adminSpacesQuery(domain) {
4
+ return {
5
+ build(user) {
6
+ const source = Query.from({ nodes: [Path.parse(user)] });
7
+ const spaces = source.expand({
8
+ via: [domain.classes.administers_space],
9
+ direction: 'outgoing',
10
+ });
11
+ return spaces.select({ kind: 'nodes', binding: spaces.node, projection: { kind: 'value' } });
12
+ },
13
+ };
14
+ }
15
+ export function observeAdminSpaces(domain) {
16
+ return defineQuery({
17
+ id: 'shell.space.admin-access',
18
+ ...adminSpacesQuery(domain),
19
+ pagination: { maximumPages: 64 },
20
+ project(pages, _user, { ast, complete }) {
21
+ return Object.freeze({
22
+ spaces: queryResult.completeNodeValues(pages, 'direct administered Spaces'),
23
+ guard: Object.freeze({ query: ast, equals: complete }),
24
+ });
25
+ },
26
+ });
27
+ }
@@ -1,3 +1,3 @@
1
- export { observeDirectSpaceAccess, observeEffectiveSpaceAccess, } from './access.js';
2
- export { observeDefaultSpaces } from './default.js';
3
- //# sourceMappingURL=index.js.map
1
+ export { observeAdminSpaces } from './admin.js';
2
+ export { observeDirectSpaceAccess } from './access.js';
3
+ export { observeMemberSpaces } from './member.js';
@@ -0,0 +1,24 @@
1
+ import { Path } from '@astrale-os/sdk/graph/path';
2
+ import { Query, defineQuery, queryResult } from '@astrale-os/sdk/query';
3
+ function memberSpacesQuery(domain) {
4
+ return {
5
+ build(user) {
6
+ const source = Query.from({ nodes: [Path.parse(user)] });
7
+ const spaces = source.expand({ via: [domain.classes.member_of_space], direction: 'outgoing' });
8
+ return spaces.select({ kind: 'nodes', binding: spaces.node, projection: { kind: 'value' } });
9
+ },
10
+ };
11
+ }
12
+ export function observeMemberSpaces(domain) {
13
+ return defineQuery({
14
+ id: 'shell.space.member-access',
15
+ ...memberSpacesQuery(domain),
16
+ pagination: { maximumPages: 64 },
17
+ project(pages, _user, { ast, complete }) {
18
+ return Object.freeze({
19
+ spaces: queryResult.completeNodeValues(pages, 'direct member Spaces'),
20
+ guard: Object.freeze({ query: ast, equals: complete }),
21
+ });
22
+ },
23
+ });
24
+ }
@@ -0,0 +1,24 @@
1
+ import { Path } from '@astrale-os/sdk/graph/path';
2
+ import { Query, defineQuery, queryResult } from '@astrale-os/sdk/query';
3
+ function groupsQuery(domain) {
4
+ return {
5
+ build(user) {
6
+ const source = Query.from({ nodes: [Path.parse(user)] });
7
+ const groups = source.expand({ via: [domain.classes.member_of_group], direction: 'outgoing' });
8
+ return groups.select({ kind: 'nodes', binding: groups.node, projection: { kind: 'value' } });
9
+ },
10
+ };
11
+ }
12
+ export function observeUserGroups(domain) {
13
+ return defineQuery({
14
+ id: 'shell.user.groups',
15
+ ...groupsQuery(domain),
16
+ pagination: { maximumPages: 64 },
17
+ project(pages, _user, { ast, complete }) {
18
+ return Object.freeze({
19
+ groups: queryResult.completeNodeValues(pages, 'Shell User Groups'),
20
+ guard: Object.freeze({ query: ast, equals: complete }),
21
+ });
22
+ },
23
+ });
24
+ }