arkitekt-next 0.12.2__py3-none-any.whl → 0.14.0__py3-none-any.whl

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.

Potentially problematic release.


This version of arkitekt-next might be problematic. Click here for more details.

Files changed (49) hide show
  1. arkitekt_next/__blok__.py +4 -0
  2. arkitekt_next/__init__.py +4 -1
  3. arkitekt_next/app/__init__.py +3 -0
  4. arkitekt_next/{apps/protocols.py → app/app.py} +8 -4
  5. arkitekt_next/{apps/service/fakts_next.py → app/fakts.py} +7 -5
  6. arkitekt_next/bloks/admin.py +1 -1
  7. arkitekt_next/bloks/alpaka.py +74 -42
  8. arkitekt_next/bloks/arkitekt.py +4 -1
  9. arkitekt_next/bloks/gateway.py +6 -0
  10. arkitekt_next/bloks/l.py +136 -0
  11. arkitekt_next/bloks/livekit.py +4 -3
  12. arkitekt_next/bloks/lovekit.py +199 -0
  13. arkitekt_next/bloks/ollama.py +12 -7
  14. arkitekt_next/bloks/services/admin.py +5 -6
  15. arkitekt_next/bloks/services/livekit.py +6 -3
  16. arkitekt_next/bloks/services/ollama.py +7 -2
  17. arkitekt_next/bloks/services/secret.py +1 -3
  18. arkitekt_next/builders.py +15 -23
  19. arkitekt_next/cli/commands/inspect/implementations.py +1 -1
  20. arkitekt_next/cli/commands/inspect/requirements.py +1 -1
  21. arkitekt_next/cli/commands/kabinet/build.py +0 -1
  22. arkitekt_next/cli/commands/kabinet/types.py +3 -5
  23. arkitekt_next/cli/commands/run/dev.py +6 -22
  24. arkitekt_next/cli/commands/run/utils.py +6 -6
  25. arkitekt_next/cli/types.py +1 -2
  26. arkitekt_next/cli/ui.py +2 -2
  27. arkitekt_next/cli/utils.py +1 -1
  28. arkitekt_next/init_registry.py +32 -27
  29. arkitekt_next/inspect.py +29 -0
  30. arkitekt_next/protocols.py +10 -34
  31. arkitekt_next/qt/__init__.py +2 -2
  32. arkitekt_next/qt/builders.py +11 -118
  33. arkitekt_next/qt/magic_bar.py +1 -1
  34. arkitekt_next/qt/types.py +1 -1
  35. arkitekt_next/service_registry.py +13 -29
  36. arkitekt_next/utils.py +1 -1
  37. {arkitekt_next-0.12.2.dist-info → arkitekt_next-0.14.0.dist-info}/METADATA +2 -3
  38. {arkitekt_next-0.12.2.dist-info → arkitekt_next-0.14.0.dist-info}/RECORD +41 -45
  39. arkitekt_next/apps/__init__.py +0 -3
  40. arkitekt_next/apps/service/__init__.py +0 -3
  41. arkitekt_next/apps/service/fakts_qt.py +0 -57
  42. arkitekt_next/apps/service/grant_registry.py +0 -27
  43. arkitekt_next/apps/service/herre.py +0 -26
  44. arkitekt_next/apps/service/herre_qt.py +0 -57
  45. arkitekt_next/apps/service/local_fakts.py +0 -95
  46. arkitekt_next/base_models.py +0 -104
  47. {arkitekt_next-0.12.2.dist-info → arkitekt_next-0.14.0.dist-info}/WHEEL +0 -0
  48. {arkitekt_next-0.12.2.dist-info → arkitekt_next-0.14.0.dist-info}/entry_points.txt +0 -0
  49. {arkitekt_next-0.12.2.dist-info → arkitekt_next-0.14.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,42 +1,38 @@
1
- arkitekt_next/__blok__.py,sha256=1u-ggUla503bHMWsnHLOucmUMF4JuHNQRKuG1Vc343Q,1901
2
- arkitekt_next/__init__.py,sha256=HOKaWJpoMBgHx9Xo8WaO6vY-RhF_bQ6aUQh3p5r20B4,3108
3
- arkitekt_next/base_models.py,sha256=GlxtMcV4YbeY8wkbK943HsIFzB8caEsDOfzJ2EDLJ9s,4247
4
- arkitekt_next/builders.py,sha256=7FsGNpLa9mGhSW9UTAXt1ZJLdlIvbsPy7qQxYD0LEmU,7627
1
+ arkitekt_next/__blok__.py,sha256=kQi4Itj11iIkU7Z66W_mUriY1BXUj6bI27Ho0d5bu5Y,2048
2
+ arkitekt_next/__init__.py,sha256=mIXB8TLD16DjXjEjVqTsn-CmN-1rUctmxDkpH6D7y6A,3198
3
+ arkitekt_next/builders.py,sha256=1E9iM398QPRP8HEVEuzcU24WW2GNOQMZ0n6G9FiIJCc,7276
5
4
  arkitekt_next/constants.py,sha256=N_tP85BDHPiOG663wwaEyMWYiUGtL2T_h4wBVPgsSUU,87
6
- arkitekt_next/init_registry.py,sha256=RHAHBI1dJNpFrNZRiDxMHBj_p4GLq2Oj0GnY9Vs31os,3230
7
- arkitekt_next/protocols.py,sha256=A5xHlehqaoGNVmA8VFEMNUl8r0CeOJ1OUnlZ2OT_WhE,2061
8
- arkitekt_next/service_registry.py,sha256=gA7c2JKWqZPme5VatVJWFlX0e8HPcxb2BkzZrBMGPUk,7307
5
+ arkitekt_next/init_registry.py,sha256=ePt5fYZ11ra30jXdOlhMQUDMyqquodXbMR8f8y8ngwg,3470
6
+ arkitekt_next/inspect.py,sha256=iJKyN_9jlrsoEEgl_kMriEZ46uKDNV-vz6PwzqDRE3g,587
7
+ arkitekt_next/protocols.py,sha256=pv8txCroig4imMWfchvrI6IDU2JbTyOKTR29yyIuijE,1369
8
+ arkitekt_next/service_registry.py,sha256=Fuk5Ba1jZUIINR_0fiJvrF29AltAi5CqiXFgSSxJ4Zc,6921
9
9
  arkitekt_next/tqdm.py,sha256=KLGeviRa8iEx89OENMXOuoz8hRDKxDktwG3L8oPlR7I,3415
10
- arkitekt_next/utils.py,sha256=7kWfUU4jacD8sKgV2-GsZV547EXYpzDNx_7LnIrb0oU,2454
11
- arkitekt_next/apps/__init__.py,sha256=zJckn9LUtKJdL7k5TrJPFoS9uItqHhjvtLDtC1PZvKA,46
12
- arkitekt_next/apps/protocols.py,sha256=-NSGdR32Jx_oMyjocVPIoPa3fS4sbxKqG3ZApAg-JYg,1760
13
- arkitekt_next/apps/service/__init__.py,sha256=p4iRwiFBKRq2lfbjDBzUR_GMhPWjkjWTa01ohuKz_L4,157
14
- arkitekt_next/apps/service/fakts_next.py,sha256=4kM0NwlQKWT_8db-EfyfpMQbjTImOIlgLraG0P6Wa_M,2632
15
- arkitekt_next/apps/service/fakts_qt.py,sha256=k8DZU_aTBYDSuHQyj54BAUreh0R8zRApVhCBSsErlXc,1943
16
- arkitekt_next/apps/service/grant_registry.py,sha256=h0jRKBd9EAXiVV6aHVtzNAlm1yiWPigg0qka68y6yKM,876
17
- arkitekt_next/apps/service/herre.py,sha256=y3Urlja0A8ZbrnVNnU6UuVMUtlOzIeatj51d0hLZriM,844
18
- arkitekt_next/apps/service/herre_qt.py,sha256=42APOZl0SnX0FWl6K-TC9CcZUO-BSXMXyH6B31A0y3U,1679
19
- arkitekt_next/apps/service/local_fakts.py,sha256=Wy37fjsEP2yjKZPtMlLilNlkO0olFX_7P5IIr6g3jkE,2900
10
+ arkitekt_next/utils.py,sha256=a1tZp8KEjdBJg-Dler60xeNmxcsMSiMYQpof2DqUEwI,2446
11
+ arkitekt_next/app/__init__.py,sha256=ZekdO9ekv7UFF94yJljHwg6yMnH1PUiwtWNuh1eWX_I,40
12
+ arkitekt_next/app/app.py,sha256=zj8RWXtB9d_C7mfeFxQSOO_flC9hDddmmCRwbIzHeSE,1945
13
+ arkitekt_next/app/fakts.py,sha256=M6UcECwx-Hc0nXjyQ8qDmYyrg4pNV_26G8eZgqLuFMw,2659
20
14
  arkitekt_next/bloks/__init__.py,sha256=_4EeR63d6avQUWLG4mK2n_FvogTPQ_Jx6f2_RvNbWeA,29
21
- arkitekt_next/bloks/admin.py,sha256=LzlcGWtpoS3NR3llRjzj1EuwH5o_hroBje3ZSm7ZXOI,1293
22
- arkitekt_next/bloks/alpaka.py,sha256=Ojw1iOQL6JtEEwCTGshYO5e6iYn5dwx8LiG4ArdDCa4,3151
23
- arkitekt_next/bloks/arkitekt.py,sha256=BiqKLcptePUIDKtZ-IOf0mQnYPtZCquYbs0qKj8pUFk,1580
15
+ arkitekt_next/bloks/admin.py,sha256=BP2Wh3Q4BkLabX5lV8CkyyreJYH7jGIvYkzOlnhRdjM,1293
16
+ arkitekt_next/bloks/alpaka.py,sha256=37pyi0K6sW2cYurLBH1-lfPLkV0ahfbe9CTsEEXgjvA,4546
17
+ arkitekt_next/bloks/arkitekt.py,sha256=mY4NJ067Tqh-_zRU-Ylwhn-4WfWGMJgjkdu56BGsgpg,1699
24
18
  arkitekt_next/bloks/base.py,sha256=n3cfEF-7OFJFUDMA5UDEfH118Mg-9aKBxFEFtm8Vb5E,6271
25
19
  arkitekt_next/bloks/channel.py,sha256=PsFlb1qjL9ULtbVt8g1dsuaa9bd60zJCT059LztUkGA,739
26
20
  arkitekt_next/bloks/config.py,sha256=YMQChT4SCdc_vvvbkAj_qGyA--6JVEHds7MalqUp3lw,1269
27
21
  arkitekt_next/bloks/elektro.py,sha256=7UlSZ6EjwCV3SEN7Wn0En2pDZwZcLF_wa5nQvZmKvGI,1288
28
22
  arkitekt_next/bloks/fluss.py,sha256=8nf5Z2k-tA3CNRQeIqh7-aaFe5my_NN2lAhbyYbwKEs,1074
29
- arkitekt_next/bloks/gateway.py,sha256=H_8ZzEaeTOgVUjL8_qOa0hm6b8kqhXma6p2lxRDPfiY,6207
23
+ arkitekt_next/bloks/gateway.py,sha256=8eQxIk7hlrmSlsOocqV0mGHVyRYCR6zdinPav4jxm-o,6431
30
24
  arkitekt_next/bloks/internal_docker.py,sha256=4onnegXts8zOaXEgg4kw8zaqlACRNwvdknJeFHipGtQ,2829
31
25
  arkitekt_next/bloks/kabinet.py,sha256=NKP6tpr8XcVvvFifX-lxgBPkP0P810kJ4URv25jf2z8,1489
32
26
  arkitekt_next/bloks/kraph.py,sha256=vbDkLNC5X644pwM_rpUpTNl4uwGpswFm0iNsyMPWY6c,1292
33
- arkitekt_next/bloks/livekit.py,sha256=Wf4JM236ZwuWC5qHnZkGDPq_FZftKLi1nDWbkwRoVso,2611
27
+ arkitekt_next/bloks/l.py,sha256=37pyi0K6sW2cYurLBH1-lfPLkV0ahfbe9CTsEEXgjvA,4546
28
+ arkitekt_next/bloks/livekit.py,sha256=HmAkmHgriGLhjOAlmX1g2v6Saal3eME6kooeferih6U,2653
34
29
  arkitekt_next/bloks/lok.py,sha256=LL5yoFwIXO4INGKHEha5k2VmkWyHgQIHmy1roDxEae0,11500
30
+ arkitekt_next/bloks/lovekit.py,sha256=7_6eL7UiV1QCi8-3tsySmL8N1iOO50LED_BRyoJwYY0,6823
35
31
  arkitekt_next/bloks/mikro.py,sha256=bnI9lWd6FXyOViog0Xko3_yhKOt7AAdB_PA4N0XkXAU,1291
36
32
  arkitekt_next/bloks/minio.py,sha256=gVFVoq5Po7yWO-CeTxQQecK4b3bBr_vdnEodF991WR4,5595
37
33
  arkitekt_next/bloks/mount.py,sha256=IEod6LDuV5NNKvvRJ3Xgo8l2caVZnNmJYDgGGBUB3Cg,1088
38
34
  arkitekt_next/bloks/namegen.py,sha256=W9xco2d3eJLdL2NYpTFmqw2d4s3vCpBREIFNm38gMYY,1087
39
- arkitekt_next/bloks/ollama.py,sha256=wjVYOK7e5kmQI2BzFpayyQr7FNBdWW8tb6xH0oX5hdw,2521
35
+ arkitekt_next/bloks/ollama.py,sha256=UtJ-ghtkDb-wHbQt2h6I1-xZHUSVT3Kv6FRjJB4BBT0,2679
40
36
  arkitekt_next/bloks/orkestrator.py,sha256=pjLvcvQ11XF94BORi8uaGMGMBvLu4BiE-WnCi59MH6k,3537
41
37
  arkitekt_next/bloks/postgres.py,sha256=UbQnbedEUf_VKAfavz1sCGvAa-ZweDwrUeEj76lo_L8,4276
42
38
  arkitekt_next/bloks/redis.py,sha256=A9scMZohACsk-k1LQZo-rTFTB_eq12dqL4zVZkKdKLQ,2274
@@ -46,20 +42,20 @@ arkitekt_next/bloks/self_signed.py,sha256=UIJEXRVHluC-QnrOXJGrjfwXQ7ozQwQkGQMZ6G
46
42
  arkitekt_next/bloks/socket.py,sha256=IW4954Hgms_oZsDIk9SgLoVGz07gW3sHi7-WuhN074Q,1067
47
43
  arkitekt_next/bloks/tailscale.py,sha256=87cJv9m7N_I3y2ZRvv5WVepRhvIZk4ftUpwa0yUdwj4,2961
48
44
  arkitekt_next/bloks/services/__init__.py,sha256=i9vGNd1lFBem3O2PblTouRzFVQkdwOYoUmqqU43dIWQ,592
49
- arkitekt_next/bloks/services/admin.py,sha256=qeNa9KkFJk0DSNV-Ses-vkLjC3xHtvHnVHJ3w0DPKOA,463
45
+ arkitekt_next/bloks/services/admin.py,sha256=xjhZnpJHtdBbrytYMssEPTUFEv0tWziXeYIjKKycxZM,485
50
46
  arkitekt_next/bloks/services/certer.py,sha256=5KuWf6h7-8t2M3yvNJUfatR3J40Rnb7sIhLQC_ty9rw,439
51
47
  arkitekt_next/bloks/services/channel.py,sha256=OQm_qI748o60V2wbFz3kuCO8rQoIAqqYbfohor-ziOQ,269
52
48
  arkitekt_next/bloks/services/config.py,sha256=E0X-AweMxbbVQihqPuUEUzt9Y5J2DKY5sFX2efORtS0,378
53
49
  arkitekt_next/bloks/services/db.py,sha256=Lc8uL8xibz99-16YPxtB_ls6CP3dN_jCaOzJ9uZ8b_0,588
54
50
  arkitekt_next/bloks/services/gateway.py,sha256=X7ghhLXZ9hDQIMXMTkfBMcS9o9oc16y0C-b_3r3uwCo,847
55
- arkitekt_next/bloks/services/livekit.py,sha256=5Qv1dcL2sQTveYvxZOuZPboNqn2wH0kyP6q7OkA6Kzs,357
51
+ arkitekt_next/bloks/services/livekit.py,sha256=Z8iwVgpJhyJOqb6y5lGR0kFReU5RDFAtC6-aH02gckY,428
56
52
  arkitekt_next/bloks/services/lok.py,sha256=fzOGum0VmcVaONUhTv4jHYky4WrFq2ygDAYJjBv2vAI,500
57
53
  arkitekt_next/bloks/services/mount.py,sha256=UAp7IzUNGYtqrh8ACAVgRtc5jYVGvzsKjKdegBdK_i0,273
58
54
  arkitekt_next/bloks/services/name.py,sha256=ysr7b8Hn9yIeuBlqv9Zz-ngWKdQtwl3V1I1TeDvhLlA,254
59
- arkitekt_next/bloks/services/ollama.py,sha256=9L9DgUFcNxrYDg1p8W7THfzQmqQzBy0J7QTMhh-3WN8,352
55
+ arkitekt_next/bloks/services/ollama.py,sha256=ZQ963XvQeFufTL1NEWkf7Wn6QLRWjIXutmKsU8Xdmbc,507
60
56
  arkitekt_next/bloks/services/redis.py,sha256=W9CraIZJztFE1vQVCfxCxY4T_gBPRTM84VwFR8Hwtp8,472
61
57
  arkitekt_next/bloks/services/s3.py,sha256=_mk_9NdaeHRVZ__1M9CL1Ec1gSQKkzlOiQXse7MSx94,485
62
- arkitekt_next/bloks/services/secret.py,sha256=cnZsH09gN9YRXBbmalZaFD2LcmWLlfm52mDTAnfuYT4,344
58
+ arkitekt_next/bloks/services/secret.py,sha256=7DIELrrK19GTJdYVvxCehyTc0VAaYig_s1Bf6q5936w,338
63
59
  arkitekt_next/bloks/services/socket.py,sha256=3MbENiJrwQbFKrpWxax56F24elnSD7S-olgycfuOX7s,423
64
60
  arkitekt_next/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
61
  arkitekt_next/cli/constants.py,sha256=ONXKA8LRxXQkOQ56ZElVMZSTiaIH1LE_ikmUUKem98g,1410
@@ -69,9 +65,9 @@ arkitekt_next/cli/io.py,sha256=FyL7UQgDvss_I2M6NYtcZKvOwYmtOsGVmlaHZkk6BCQ,1900
69
65
  arkitekt_next/cli/main.py,sha256=Ua7sq_OfC491F6r6zNs_oEiR4jVOsZwxLpX0ZXR0Jk0,2227
70
66
  arkitekt_next/cli/options.py,sha256=LwhEdjZutH_go568buS37L9Gn_roinrCC6BUu2sC3B0,3814
71
67
  arkitekt_next/cli/texts.py,sha256=sYK94BLCt_FWFtdgPDZuKgpINICGFcHQLqO74fxQkug,688
72
- arkitekt_next/cli/types.py,sha256=s5gRsiQISrf6D2RKJi7jCoaAjpa8wcml5X2r2ED4kl8,1236
73
- arkitekt_next/cli/ui.py,sha256=L4g_1qwGBVgv4hfRRN22p5Xm7z6CiSIqBRvmmvQ1gow,3620
74
- arkitekt_next/cli/utils.py,sha256=koY46mGLmmM1EJ9KbeF5-vNiKAY-2Dk7ldPOcrIgkxs,449
68
+ arkitekt_next/cli/types.py,sha256=8uw_iR3QYdknn_m1y67dHuUB-7FAoWP48szJkHAYrHQ,1227
69
+ arkitekt_next/cli/ui.py,sha256=AYBS8LyRkzWb92kULJvTRmTEBGi0Mqiu4zvX6r9e_f8,3631
70
+ arkitekt_next/cli/utils.py,sha256=SKJy5fQ_c5TF7QdskpHP64J_SzV93o76dEOKbj6Dw6I,442
75
71
  arkitekt_next/cli/validators.py,sha256=XkLrOrDzBJwcG1keTawa_NJPt3QIBhb5KjepeH4N1KA,719
76
72
  arkitekt_next/cli/vars.py,sha256=ev7cKDSPoik8hU9A_ohNpjRZX4FT1GYJaBoGLnxCKjU,982
77
73
  arkitekt_next/cli/commands/call/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -86,18 +82,18 @@ arkitekt_next/cli/commands/gen/watch.py,sha256=nf4QckdTJOWxvKoeNRwvC4rXQ4xhIx8LC
86
82
  arkitekt_next/cli/commands/init/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
83
  arkitekt_next/cli/commands/init/main.py,sha256=1ZbZDBECZRxlcnulycdS15s-uQ5ngx4xP3T1v-gkJ3U,5435
88
84
  arkitekt_next/cli/commands/inspect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
- arkitekt_next/cli/commands/inspect/implementations.py,sha256=7z5Ktzs6WLEJFBVL-Ar1OTPgipZDjsnoxN6YbV3Zgg0,2801
85
+ arkitekt_next/cli/commands/inspect/implementations.py,sha256=R-2kqOJhvY4awISXhMtCXmiF1a6-o9IeeHBTvq0umqw,2794
90
86
  arkitekt_next/cli/commands/inspect/main.py,sha256=khT5u8bF4EokgA-JtOLVVN3dD0jq32zbtCb9BqsaARU,650
91
- arkitekt_next/cli/commands/inspect/requirements.py,sha256=CiVApGLpG2haDkFj0klIrKIjhIV5Z_TL8HrZeS4Swug,1761
87
+ arkitekt_next/cli/commands/inspect/requirements.py,sha256=tpZKJCUUXkCqdSiUVXhIaZZqvpH7slsibQNKjLwLOZc,1754
92
88
  arkitekt_next/cli/commands/inspect/variables.py,sha256=sBVTKCI98BWAUiqhF5xRu_jQDgwk8sGfcyEozpAnDwg,2654
93
89
  arkitekt_next/cli/commands/kabinet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
- arkitekt_next/cli/commands/kabinet/build.py,sha256=uxAxaPL2bBXhNXFho5NsexYslLWqCiK11vFDbEh7yZE,10689
90
+ arkitekt_next/cli/commands/kabinet/build.py,sha256=IX7PjUM-Mvo8dPORPWLQL1Tncqp6lameKZJWuz9PNQU,10639
95
91
  arkitekt_next/cli/commands/kabinet/init.py,sha256=otVakPcD6bC-7VtmqiLWNZKi3BE9evtMVv0TOGRnaD4,3583
96
92
  arkitekt_next/cli/commands/kabinet/io.py,sha256=1jFMDAYbZ4Ius0sZe_UDngxLJHaf-x9O86l2geMUrpo,5567
97
93
  arkitekt_next/cli/commands/kabinet/main.py,sha256=PFc8JGeSxbU8ZzxPlFDQp7--ogQyxL9sGQ4pA8XQmEo,1314
98
94
  arkitekt_next/cli/commands/kabinet/publish.py,sha256=B22UKmJMkiC1GZl--Nxwm-AWpAYaZ0o0Wo4t1iTJQ2M,3538
99
95
  arkitekt_next/cli/commands/kabinet/stage.py,sha256=kOkZ_GCkIzCEUmtc80u35hFwU4uOtfXODfhrPuHMaMk,2013
100
- arkitekt_next/cli/commands/kabinet/types.py,sha256=PYQM8ca_5fpPg79T3ZYwKckE-5rJiJgevvxF5M4mivY,4024
96
+ arkitekt_next/cli/commands/kabinet/types.py,sha256=J0JucfWpXFb-q6PlANZnQ9acstwGKra3iX4lHou3XWI,3969
101
97
  arkitekt_next/cli/commands/kabinet/utils.py,sha256=5MFFy9pBBOGMs_ACoLcffclCUCmX8bsTjLnrvFHE2Q4,1649
102
98
  arkitekt_next/cli/commands/kabinet/validate.py,sha256=9zeTb6yzjQpjk6FQq6ce38a8u_pH9gDg2mBqqp-Pqwg,2473
103
99
  arkitekt_next/cli/commands/manifest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -106,10 +102,10 @@ arkitekt_next/cli/commands/manifest/main.py,sha256=b_kz8wPYF1eHv_9WmB9Gop8TlDUgf
106
102
  arkitekt_next/cli/commands/manifest/scopes.py,sha256=sw0HRy8GliEcmx3Sh6cPRpBkf1vxAGJwLgIO63ZB_t4,4879
107
103
  arkitekt_next/cli/commands/manifest/version.py,sha256=3JdcXqiFeCvIaEpsMfeSKWU_uQehDkEawEpdSxWaKSA,4822
108
104
  arkitekt_next/cli/commands/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
- arkitekt_next/cli/commands/run/dev.py,sha256=eF7LMHxqqwelW82BscKDqJJuUhnuupyMBf53LsC2yms,10461
105
+ arkitekt_next/cli/commands/run/dev.py,sha256=K7wa8Xu80BMuoQqvwKUkipKi41IP5ua6AAc7rwgWCjg,10352
110
106
  arkitekt_next/cli/commands/run/main.py,sha256=0bNO3DqwbZ4ddMsDWbCGmlPD6Cs3Jlg4yh2-zilsEbY,552
111
107
  arkitekt_next/cli/commands/run/prod.py,sha256=N2x1ZowCUpvgUOAlKP148vraRTVc2XRq4SyyzOnVgjQ,1627
112
- arkitekt_next/cli/commands/run/utils.py,sha256=NnvB9_EphzbQU13MkoGq3sxbt49-ykOOjquTnSjk6k0,617
108
+ arkitekt_next/cli/commands/run/utils.py,sha256=HPKkE4F_LlRoAOR-E4eSZ2MElvgrX2s7V8hyAIBURHc,589
113
109
  arkitekt_next/cli/dockerfiles/vanilla.dockerfile,sha256=0ujdG22rZ6v2n5TMHNA4HR5f1PP9KJvAQORz-DGHBpo,184
114
110
  arkitekt_next/cli/schemas/fluss.schema.graphql,sha256=MqrSpOxtWO9kWFCoUn9ySBPhIH3XozFiqrQl2zjEbiQ,35803
115
111
  arkitekt_next/cli/schemas/gucker.schema.graphql,sha256=r_KL-MoFRCGUobbtcBLCnpmFcali2A12TguynqQgmN4,152947
@@ -128,10 +124,10 @@ arkitekt_next/cli/schemas/unlok.schema.graphql,sha256=fXR846snIBIqkuQ-PlYnSkQjkF
128
124
  arkitekt_next/cli/templates/filter.py,sha256=mD2jdNEXrZNagC_8WtuTisGJrGIbJDSylCvh19cF49I,650
129
125
  arkitekt_next/cli/templates/simple.py,sha256=IbcThJ5LryXVFQUdzxfHQCtzSNxEQWTxbD__Ygxsp4M,1171
130
126
  arkitekt_next/cli/versions/v1.yaml,sha256=rv2-F6FQbTZi_H6pSE_csdICdtKBObDdoo_asOFi43Y,12
131
- arkitekt_next/qt/__init__.py,sha256=5tCCd-FA3sMN9Lo5JRUYUM6xgs2zxyHj5YDpdWYbR0w,471
132
- arkitekt_next/qt/builders.py,sha256=E-BdslAZE7futxwo-TX-iQoZWVbY0t4V-ZFLmadgssk,9184
133
- arkitekt_next/qt/magic_bar.py,sha256=J6H3xMJHVButzaWcFmwos8DKihSF3QXR_aH65xnk91c,17600
134
- arkitekt_next/qt/types.py,sha256=JWRaCZ4Tk9MoNX-SJtS8xfBsuM2hjYicIkXAOZ8SlXY,4047
127
+ arkitekt_next/qt/__init__.py,sha256=MeKBI1aYsHt6yDFfYyppj-LM8Nn5URNl2pJlXrdzjzc,443
128
+ arkitekt_next/qt/builders.py,sha256=GaSG4rWfBAoz3kEghtWMOAKqYUp9tDyNy12O6wAjMKU,5801
129
+ arkitekt_next/qt/magic_bar.py,sha256=PGXnOSZYwLHSAqAJINGApc6EWVS_EHaZ0sKS1jA9d1g,17593
130
+ arkitekt_next/qt/types.py,sha256=sqi4cLTIjBOv1FIcmrjjDVl5-1AGGYC23ebrWjvuvZ0,4016
135
131
  arkitekt_next/qt/utils.py,sha256=MgBPtPmCSBkIuATov3UgREESwxAHh77lWNNxyE7Qs48,773
136
132
  arkitekt_next/qt/assets/dark/gear.png,sha256=nYl1JZhcpwd7s5FgG2g-1RpkK7TH_QQRqJMmK6r0BpU,6296
137
133
  arkitekt_next/qt/assets/dark/green pulse.gif,sha256=cUd2F3Qlvjb7SnsU-LjGgeLTa8KoPgu3C-LNrixIQds,105386
@@ -143,8 +139,8 @@ arkitekt_next/qt/assets/light/green pulse.gif,sha256=cUd2F3Qlvjb7SnsU-LjGgeLTa8K
143
139
  arkitekt_next/qt/assets/light/orange pulse.gif,sha256=0gDvrRed0mzZZPHB4tP6vptx7myUCAa_hEVGdjRhNy8,94769
144
140
  arkitekt_next/qt/assets/light/pink pulse.gif,sha256=rxd6ZTHSIG9JZuuHhi3jiSB_JYFBZpy7OWUeZETlhQ4,107513
145
141
  arkitekt_next/qt/assets/light/red pulse.gif,sha256=U7WLbZvSl5e-Ob5RmawtlC0Rh9VVHxkjDbGjj7NYVUo,108749
146
- arkitekt_next-0.12.2.dist-info/METADATA,sha256=leA2aYQ9y-YiSz64LTDt4KvMjum64Kas3gU35xktQ2k,5778
147
- arkitekt_next-0.12.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
148
- arkitekt_next-0.12.2.dist-info/entry_points.txt,sha256=IY-mUEDBU6QncqnYw-Ufw5bvNNXjqSlLf1uexZZCJhc,61
149
- arkitekt_next-0.12.2.dist-info/licenses/LICENSE,sha256=YZ2oRjC248t-GpoEyw7J13vwKYNG6zhYMaEAix6EzF0,1089
150
- arkitekt_next-0.12.2.dist-info/RECORD,,
142
+ arkitekt_next-0.14.0.dist-info/METADATA,sha256=Ayhzkn6U-9tFXvmrAYuUh9x7CyVhInSroDw8_m8GFIM,5743
143
+ arkitekt_next-0.14.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
144
+ arkitekt_next-0.14.0.dist-info/entry_points.txt,sha256=IY-mUEDBU6QncqnYw-Ufw5bvNNXjqSlLf1uexZZCJhc,61
145
+ arkitekt_next-0.14.0.dist-info/licenses/LICENSE,sha256=YZ2oRjC248t-GpoEyw7J13vwKYNG6zhYMaEAix6EzF0,1089
146
+ arkitekt_next-0.14.0.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- from .protocols import App
2
-
3
- __all__ = ["App"]
@@ -1,3 +0,0 @@
1
- """ Modules for services, all services should be placed here.
2
- Services SHOULD not be used directly, but build through the
3
- builders in arkitekt_next/apps."""
@@ -1,57 +0,0 @@
1
- from fakts_next.fakts import Fakts
2
- from typing import Optional
3
- from fakts_next.grants.remote import RemoteGrant
4
- from fakts_next.grants.remote.demanders.device_code import DeviceCodeDemander
5
-
6
- from fakts_next.grants.remote.claimers.post import ClaimEndpointClaimer
7
- from fakts_next.grants.remote.discovery.qt.selectable_beacon import (
8
- SelectBeaconWidget,
9
- QtSelectableDiscovery,
10
- )
11
- from arkitekt_next.base_models import Manifest
12
- from qtpy import QtCore, QtWidgets
13
- from fakts_next.cache.qt.settings import QtSettingsCache
14
-
15
-
16
- class ArkitektNextFaktsQtRemoteGrant(RemoteGrant):
17
- """An ArkitektNext Fakts grant that uses Qt widgets for token and endpoint storage"""
18
-
19
- discovery: QtSelectableDiscovery
20
-
21
-
22
- class ArkitektNextFaktsQt(Fakts):
23
- """A Fakts that uses Qt widgets for token and endpoint storage"""
24
-
25
- grant: ArkitektNextFaktsQtRemoteGrant
26
-
27
-
28
- def build_arkitekt_next_qt_fakts_next(
29
- manifest: Manifest,
30
- no_cache: Optional[bool] = False,
31
- beacon_widget: Optional[QtWidgets.QWidget] = None,
32
- parent: Optional[QtWidgets.QWidget] = None,
33
- settings: Optional[QtCore.QSettings] = None,
34
- ) -> ArkitektNextFaktsQt:
35
- beacon_widget = beacon_widget or SelectBeaconWidget(
36
- parent=parent, settings=settings
37
- )
38
-
39
- return ArkitektNextFaktsQt(
40
- grant=ArkitektNextFaktsQtRemoteGrant(
41
- demander=DeviceCodeDemander(
42
- manifest=manifest,
43
- redirect_uri="http://127.0.0.1:6767",
44
- open_browser=True,
45
- requested_client_kind="desktop",
46
- ),
47
- discovery=QtSelectableDiscovery(
48
- widget=beacon_widget,
49
- settings=settings,
50
- allow_appending_slash=True,
51
- auto_protocols=["http", "https"],
52
- additional_beacons=["http://localhost"],
53
- ),
54
- claimer=ClaimEndpointClaimer(),
55
- ),
56
- cache=QtSettingsCache(settings=settings),
57
- )
@@ -1,27 +0,0 @@
1
- from herre_next.fakts.grant import FaktsGrant
2
- from herre_next.fakts.registry import GrantRegistry, GrantType
3
- from herre_next.grants.oauth2.authorization_code import AuthorizationCodeGrant
4
- from herre_next.grants.oauth2.redirecters.aiohttp_server import AioHttpServerRedirecter
5
- from herre_next.grants.oauth2.client_credentials import ClientCredentialsGrant
6
-
7
-
8
- ARKITEKT_GRANT_REGISTRY = GrantRegistry()
9
-
10
-
11
- def build_authorization_code_grant(**kwargs) -> FaktsGrant:
12
- return AuthorizationCodeGrant(**kwargs, redirecter=AioHttpServerRedirecter())
13
-
14
-
15
- def build_client_credentials_grant(**kwargs) -> FaktsGrant:
16
- return ClientCredentialsGrant(**kwargs)
17
-
18
-
19
- ARKITEKT_GRANT_REGISTRY.register_grant(
20
- GrantType.AUTHORIZATION_CODE,
21
- build_authorization_code_grant,
22
- )
23
-
24
- ARKITEKT_GRANT_REGISTRY.register_grant(
25
- GrantType.CLIENT_CREDENTIALS,
26
- build_client_credentials_grant,
27
- )
@@ -1,26 +0,0 @@
1
- from herre_next.herre import Herre
2
- from fakts_next import Fakts
3
- from herre_next.grants.oauth2.refresh import RefreshGrant
4
- from herre_next.fakts.fakts_endpoint_fetcher import FaktsUserFetcher
5
- from herre_next.fakts.grant import FaktsGrant
6
- from arkitekt_next.base_models import User
7
- from arkitekt_next.apps.service.grant_registry import ARKITEKT_GRANT_REGISTRY
8
-
9
-
10
- class ArkitektNextHerre(Herre):
11
- pass
12
-
13
-
14
- def build_arkitekt_next_herre_next(fakts_next: Fakts) -> ArkitektNextHerre:
15
- return ArkitektNextHerre(
16
- grant=RefreshGrant(
17
- grant=FaktsGrant(
18
- fakts=fakts_next,
19
- fakts_group="lok",
20
- grant_registry=ARKITEKT_GRANT_REGISTRY,
21
- ),
22
- ),
23
- fetcher=FaktsUserFetcher(
24
- fakts=fakts_next, fakts_key="lok.userinfo_url", userModel=User
25
- ),
26
- )
@@ -1,57 +0,0 @@
1
- from herre_next.herre import Herre
2
- from fakts_next import Fakts
3
- from herre_next.grants.oauth2.refresh import RefreshGrant
4
- from herre_next.fakts.grant import FaktsGrant
5
- from herre_next.fakts.fakts_qt_store import FaktsQtStore
6
-
7
- from herre_next.grants.auto_login import AutoLoginGrant
8
- from herre_next.grants.qt.auto_login import AutoLoginWidget
9
- from herre_next.fakts.fakts_endpoint_fetcher import FaktsUserFetcher
10
- from arkitekt_next.base_models import Manifest, User
11
- from arkitekt_next.apps.service.grant_registry import ARKITEKT_GRANT_REGISTRY
12
-
13
-
14
- class ArkitektNextAutoLogin(AutoLoginGrant):
15
- store: FaktsQtStore
16
- fetcher: FaktsUserFetcher
17
- grant: FaktsGrant
18
-
19
-
20
- class ArkitektNextRefreshGrant(RefreshGrant):
21
- grant: ArkitektNextAutoLogin
22
-
23
-
24
- class ArkitektNextHerreQt(Herre):
25
- grant: ArkitektNextRefreshGrant
26
-
27
-
28
- def build_arkitekt_next_qt_herre_next(
29
- manifest: Manifest,
30
- fakts: Fakts,
31
- login_widget=None,
32
- parent=None,
33
- settings=None,
34
- ):
35
- login_widget = login_widget or AutoLoginWidget(parent=parent)
36
-
37
- grant = ArkitektNextAutoLogin(
38
- store=FaktsQtStore(
39
- fakts=fakts,
40
- settings=settings,
41
- fakts_key="lok.endpoint_url",
42
- ),
43
- widget=login_widget,
44
- fetcher=FaktsUserFetcher(
45
- fakts=fakts, fakts_key="lok.userinfo_url", userModel=User
46
- ),
47
- grant=FaktsGrant(
48
- fakts=fakts, fakts_group="lok", grant_registry=ARKITEKT_GRANT_REGISTRY
49
- ),
50
- )
51
-
52
- return ArkitektNextHerreQt(
53
- grant=ArkitektNextRefreshGrant(grant=grant),
54
- fetcher=FaktsUserFetcher(
55
- fakts=fakts, fakts_key="lok.userinfo_url", userModel=User
56
- ),
57
- )
@@ -1,95 +0,0 @@
1
- from typing import Optional
2
-
3
- from fakts_next.fakts import Fakts
4
- from fakts_next.grants.remote import RemoteGrant
5
- from fakts_next.grants.remote.discovery.well_known import WellKnownDiscovery
6
- from fakts_next.grants.remote import RemoteGrant
7
- from fakts_next.grants.remote.demanders.static import StaticDemander
8
- from fakts_next.grants.remote.demanders.device_code import DeviceCodeDemander
9
- from fakts_next.grants.remote.claimers.post import ClaimEndpointClaimer
10
- from fakts_next.grants.remote.demanders.redeem import RedeemDemander
11
- from fakts_next.cache.file import FileCache
12
- from arkitekt_next.base_models import Manifest
13
-
14
-
15
- class ArkitektNextFaktsQt(Fakts):
16
- grant: RemoteGrant
17
-
18
-
19
- class ArkitektNextFaktsNext(Fakts):
20
- pass
21
-
22
-
23
- def build_arkitekt_next_fakts_next(
24
- manifest: Manifest,
25
- url: Optional[str] = None,
26
- no_cache: bool = False,
27
- headless: bool = False,
28
- client_kind: str = "development",
29
- ) -> ArkitektNextFaktsNext:
30
- identifier = manifest.identifier
31
- version = manifest.version
32
-
33
- demander = DeviceCodeDemander(
34
- manifest=manifest,
35
- redirect_uri="http://127.0.0.1:6767",
36
- open_browser=not headless,
37
- requested_client_kind=client_kind,
38
- )
39
-
40
- return ArkitektNextFaktsNext(
41
- grant=RemoteGrant(
42
- demander=demander,
43
- discovery=WellKnownDiscovery(url=url, auto_protocols=["https", "http"]),
44
- claimer=ClaimEndpointClaimer(),
45
- ),
46
- cache=FileCache(
47
- cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
48
- hash=manifest.hash() + url,
49
- skip_cache=no_cache,
50
- ),
51
- )
52
-
53
-
54
- def build_arkitekt_next_redeem_fakts_next(
55
- manifest: Manifest,
56
- redeem_token: str,
57
- url,
58
- no_cache: Optional[bool] = False,
59
- headless=False,
60
- ):
61
- identifier = manifest.identifier
62
- version = manifest.version
63
-
64
- return ArkitektNextFaktsNext(
65
- grant=RemoteGrant(
66
- demander=RedeemDemander(token=redeem_token, manifest=manifest),
67
- discovery=WellKnownDiscovery(url=url, auto_protocols=["https", "http"]),
68
- claimer=ClaimEndpointClaimer(),
69
- ),
70
- cache=FileCache(
71
- cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
72
- hash=manifest.hash() + url,
73
- ),
74
- )
75
-
76
-
77
- def build_arkitekt_next_token_fakts_next(
78
- manifest: Manifest,
79
- token: str,
80
- url,
81
- ):
82
- identifier = manifest.identifier
83
- version = manifest.version
84
-
85
- return ArkitektNextFaktsNext(
86
- grant=RemoteGrant(
87
- demander=StaticDemander(token=token),
88
- discovery=WellKnownDiscovery(url=url, auto_protocols=["https", "http"]),
89
- claimer=ClaimEndpointClaimer(),
90
- ),
91
- cache=FileCache(
92
- cache_file=f".arkitekt_next/cache/{identifier}-{version}_fakts_cache.json",
93
- hash=manifest.hash() + url,
94
- ),
95
- )
@@ -1,104 +0,0 @@
1
- """Models for ArkitektNext. Thiese include extensiosn for the Fakts Manifest and the User model."""
2
-
3
- from hashlib import sha256
4
- import json
5
- from pydantic import BaseModel, Field, field_validator, ConfigDict
6
- from typing import List, Optional
7
-
8
-
9
- class Requirement(BaseModel):
10
- key: str
11
- service: str
12
- """ The service is the service that will be used to fill the key, it will be used to find the correct instance. It needs to fullfill
13
- the reverse domain naming scheme"""
14
- optional: bool = False
15
- """ The optional flag indicates if the requirement is optional or not. Users should be able to use the client even if the requirement is not met. """
16
- description: Optional[str] = None
17
- """ The description is a human readable description of the requirement. Will be show to the user when asking for the requirement."""
18
-
19
-
20
- class Manifest(BaseModel):
21
- """A manifest for an app that can be installed in ArkitektNext
22
-
23
- Manifests are used to describe apps that can be installed in ArkitektNext.
24
- They provide information about the app, such as the
25
- its globally unique identifier, the version, the scopes it needs, etc.
26
-
27
- This Manifest is send to the Fakts server on initial app configuration,
28
- and is used to register the app with the Fakts server, which in turn
29
- will prompt the user to grant the app access to establish itself as
30
- an ArkitektNext app (and therefore as an OAuth2 client) (see more in the
31
- Fakts documentation).
32
-
33
- """
34
-
35
- version: str
36
- """ The version of the app TODO: Should this be a semver? """
37
- identifier: str
38
- """ The globally unique identifier of the app: TODO: Should we check for a reverse domain name? """
39
- scopes: List[str]
40
- """ Scopes that this app should request from the user """
41
- logo: Optional[str]
42
- """ A URL to the logo of the app TODO: We should enforce this to be a http URL as local paths won't work """
43
- requirements: Optional[List[Requirement]] = Field(default_factory=list)
44
- """ Requirements that this app has TODO: What are the requirements? """
45
- model_config = ConfigDict(extra="forbid")
46
-
47
- description: Optional[str] = None
48
- """ A human readable description of the app """
49
-
50
- def hash(self):
51
- """Hash the manifest
52
-
53
- A manifest describes all the metadata of an app. This method
54
- hashes the manifest to create a unique hash for the current configuration of the app.
55
- This hash can be used to check if the app has changed since the last time it was run,
56
- and can be used to invalidate caches.
57
-
58
- Returns:
59
- str: The hash of the manifest
60
-
61
- """
62
-
63
- unsorted_dict = self.model_dump()
64
-
65
- # sort the requirements
66
- unsorted_dict["requirements"] = sorted(
67
- unsorted_dict["requirements"], key=lambda x: x["key"]
68
- )
69
- # sort the scopes
70
- unsorted_dict["scopes"] = sorted(unsorted_dict["scopes"])
71
-
72
- # JSON encode the dictionary
73
- json_dd = json.dumps(unsorted_dict, sort_keys=True)
74
- # Hash the JSON encoded dictionary
75
- return sha256(json_dd.encode()).hexdigest()
76
-
77
- @field_validator("identifier", mode="after")
78
- def check_identifier(cls, v: str) -> str:
79
- assert "/" not in v, "The identifier should not contain a /"
80
- assert len(v) > 0, "The identifier should not be empty"
81
- assert len(v) < 256, "The identifier should not be longer than 256 characters"
82
- return v
83
-
84
-
85
- class User(BaseModel):
86
- """A user of ArkitektNext
87
-
88
- This model represents a user on ArkitektNext. As herre_next is acgnostic to the
89
- user model, we need to provide a model that can be used to represent
90
- the ArkitektNext user. This model is used by the
91
- :class:`herre_next.fakts.fakts_endpoint_fetcher.FaktsUserFetcher` to
92
- fetch the user from the associated ArkitektNext Lok instance. This model
93
- is closely mimicking the OIDC user model, and is therefore compatible
94
- to represent OIDC users.
95
-
96
- """
97
-
98
- id: str = Field(alias="sub")
99
- """ The user's id (in lok, this is the user's sub(ject) ID)"""
100
-
101
- username: str = Field(alias="preferred_username")
102
- """ The user's preferred username """
103
- email: str = Field(alias="email")
104
- """ The user's preferred username """