arkitekt-next 0.13.0__py3-none-any.whl → 0.14.1__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 (48) hide show
  1. arkitekt_next/__blok__.py +4 -0
  2. arkitekt_next/__init__.py +1 -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 +10 -17
  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/protocols.py +7 -24
  30. arkitekt_next/qt/__init__.py +2 -2
  31. arkitekt_next/qt/builders.py +11 -118
  32. arkitekt_next/qt/magic_bar.py +1 -1
  33. arkitekt_next/qt/types.py +1 -1
  34. arkitekt_next/service_registry.py +13 -29
  35. arkitekt_next/utils.py +1 -1
  36. {arkitekt_next-0.13.0.dist-info → arkitekt_next-0.14.1.dist-info}/METADATA +3 -4
  37. {arkitekt_next-0.13.0.dist-info → arkitekt_next-0.14.1.dist-info}/RECORD +40 -45
  38. arkitekt_next/apps/__init__.py +0 -3
  39. arkitekt_next/apps/service/__init__.py +0 -3
  40. arkitekt_next/apps/service/fakts_qt.py +0 -57
  41. arkitekt_next/apps/service/grant_registry.py +0 -27
  42. arkitekt_next/apps/service/herre.py +0 -26
  43. arkitekt_next/apps/service/herre_qt.py +0 -57
  44. arkitekt_next/apps/service/local_fakts.py +0 -95
  45. arkitekt_next/base_models.py +0 -104
  46. {arkitekt_next-0.13.0.dist-info → arkitekt_next-0.14.1.dist-info}/WHEEL +0 -0
  47. {arkitekt_next-0.13.0.dist-info → arkitekt_next-0.14.1.dist-info}/entry_points.txt +0 -0
  48. {arkitekt_next-0.13.0.dist-info → arkitekt_next-0.14.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,43 +1,38 @@
1
- arkitekt_next/__blok__.py,sha256=1u-ggUla503bHMWsnHLOucmUMF4JuHNQRKuG1Vc343Q,1901
2
- arkitekt_next/__init__.py,sha256=6id-PHkRWAvHSSUpOg9rS7pTKYGherVpCO-Fy_ZVVvE,3205
3
- arkitekt_next/base_models.py,sha256=GlxtMcV4YbeY8wkbK943HsIFzB8caEsDOfzJ2EDLJ9s,4247
4
- arkitekt_next/builders.py,sha256=VjVipPc4EIpeHVQPSwfBzxIt1pJMIU8AweYN2WP91Yg,7646
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
5
+ arkitekt_next/init_registry.py,sha256=ePt5fYZ11ra30jXdOlhMQUDMyqquodXbMR8f8y8ngwg,3470
7
6
  arkitekt_next/inspect.py,sha256=iJKyN_9jlrsoEEgl_kMriEZ46uKDNV-vz6PwzqDRE3g,587
8
- arkitekt_next/protocols.py,sha256=ZZFLOKtLlSjrKX4kWqZC-_C7QqSXN2MyeA8AbD9jfgo,2031
9
- arkitekt_next/service_registry.py,sha256=gA7c2JKWqZPme5VatVJWFlX0e8HPcxb2BkzZrBMGPUk,7307
7
+ arkitekt_next/protocols.py,sha256=pv8txCroig4imMWfchvrI6IDU2JbTyOKTR29yyIuijE,1369
8
+ arkitekt_next/service_registry.py,sha256=Fuk5Ba1jZUIINR_0fiJvrF29AltAi5CqiXFgSSxJ4Zc,6921
10
9
  arkitekt_next/tqdm.py,sha256=KLGeviRa8iEx89OENMXOuoz8hRDKxDktwG3L8oPlR7I,3415
11
- arkitekt_next/utils.py,sha256=7kWfUU4jacD8sKgV2-GsZV547EXYpzDNx_7LnIrb0oU,2454
12
- arkitekt_next/apps/__init__.py,sha256=zJckn9LUtKJdL7k5TrJPFoS9uItqHhjvtLDtC1PZvKA,46
13
- arkitekt_next/apps/protocols.py,sha256=-NSGdR32Jx_oMyjocVPIoPa3fS4sbxKqG3ZApAg-JYg,1760
14
- arkitekt_next/apps/service/__init__.py,sha256=p4iRwiFBKRq2lfbjDBzUR_GMhPWjkjWTa01ohuKz_L4,157
15
- arkitekt_next/apps/service/fakts_next.py,sha256=4kM0NwlQKWT_8db-EfyfpMQbjTImOIlgLraG0P6Wa_M,2632
16
- arkitekt_next/apps/service/fakts_qt.py,sha256=k8DZU_aTBYDSuHQyj54BAUreh0R8zRApVhCBSsErlXc,1943
17
- arkitekt_next/apps/service/grant_registry.py,sha256=h0jRKBd9EAXiVV6aHVtzNAlm1yiWPigg0qka68y6yKM,876
18
- arkitekt_next/apps/service/herre.py,sha256=y3Urlja0A8ZbrnVNnU6UuVMUtlOzIeatj51d0hLZriM,844
19
- arkitekt_next/apps/service/herre_qt.py,sha256=42APOZl0SnX0FWl6K-TC9CcZUO-BSXMXyH6B31A0y3U,1679
20
- 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
21
14
  arkitekt_next/bloks/__init__.py,sha256=_4EeR63d6avQUWLG4mK2n_FvogTPQ_Jx6f2_RvNbWeA,29
22
- arkitekt_next/bloks/admin.py,sha256=LzlcGWtpoS3NR3llRjzj1EuwH5o_hroBje3ZSm7ZXOI,1293
23
- arkitekt_next/bloks/alpaka.py,sha256=Ojw1iOQL6JtEEwCTGshYO5e6iYn5dwx8LiG4ArdDCa4,3151
24
- 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
25
18
  arkitekt_next/bloks/base.py,sha256=n3cfEF-7OFJFUDMA5UDEfH118Mg-9aKBxFEFtm8Vb5E,6271
26
19
  arkitekt_next/bloks/channel.py,sha256=PsFlb1qjL9ULtbVt8g1dsuaa9bd60zJCT059LztUkGA,739
27
20
  arkitekt_next/bloks/config.py,sha256=YMQChT4SCdc_vvvbkAj_qGyA--6JVEHds7MalqUp3lw,1269
28
21
  arkitekt_next/bloks/elektro.py,sha256=7UlSZ6EjwCV3SEN7Wn0En2pDZwZcLF_wa5nQvZmKvGI,1288
29
22
  arkitekt_next/bloks/fluss.py,sha256=8nf5Z2k-tA3CNRQeIqh7-aaFe5my_NN2lAhbyYbwKEs,1074
30
- arkitekt_next/bloks/gateway.py,sha256=H_8ZzEaeTOgVUjL8_qOa0hm6b8kqhXma6p2lxRDPfiY,6207
23
+ arkitekt_next/bloks/gateway.py,sha256=8eQxIk7hlrmSlsOocqV0mGHVyRYCR6zdinPav4jxm-o,6431
31
24
  arkitekt_next/bloks/internal_docker.py,sha256=4onnegXts8zOaXEgg4kw8zaqlACRNwvdknJeFHipGtQ,2829
32
25
  arkitekt_next/bloks/kabinet.py,sha256=NKP6tpr8XcVvvFifX-lxgBPkP0P810kJ4URv25jf2z8,1489
33
26
  arkitekt_next/bloks/kraph.py,sha256=vbDkLNC5X644pwM_rpUpTNl4uwGpswFm0iNsyMPWY6c,1292
34
- 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
35
29
  arkitekt_next/bloks/lok.py,sha256=LL5yoFwIXO4INGKHEha5k2VmkWyHgQIHmy1roDxEae0,11500
30
+ arkitekt_next/bloks/lovekit.py,sha256=7_6eL7UiV1QCi8-3tsySmL8N1iOO50LED_BRyoJwYY0,6823
36
31
  arkitekt_next/bloks/mikro.py,sha256=bnI9lWd6FXyOViog0Xko3_yhKOt7AAdB_PA4N0XkXAU,1291
37
32
  arkitekt_next/bloks/minio.py,sha256=gVFVoq5Po7yWO-CeTxQQecK4b3bBr_vdnEodF991WR4,5595
38
33
  arkitekt_next/bloks/mount.py,sha256=IEod6LDuV5NNKvvRJ3Xgo8l2caVZnNmJYDgGGBUB3Cg,1088
39
34
  arkitekt_next/bloks/namegen.py,sha256=W9xco2d3eJLdL2NYpTFmqw2d4s3vCpBREIFNm38gMYY,1087
40
- arkitekt_next/bloks/ollama.py,sha256=wjVYOK7e5kmQI2BzFpayyQr7FNBdWW8tb6xH0oX5hdw,2521
35
+ arkitekt_next/bloks/ollama.py,sha256=UtJ-ghtkDb-wHbQt2h6I1-xZHUSVT3Kv6FRjJB4BBT0,2679
41
36
  arkitekt_next/bloks/orkestrator.py,sha256=pjLvcvQ11XF94BORi8uaGMGMBvLu4BiE-WnCi59MH6k,3537
42
37
  arkitekt_next/bloks/postgres.py,sha256=UbQnbedEUf_VKAfavz1sCGvAa-ZweDwrUeEj76lo_L8,4276
43
38
  arkitekt_next/bloks/redis.py,sha256=A9scMZohACsk-k1LQZo-rTFTB_eq12dqL4zVZkKdKLQ,2274
@@ -47,20 +42,20 @@ arkitekt_next/bloks/self_signed.py,sha256=UIJEXRVHluC-QnrOXJGrjfwXQ7ozQwQkGQMZ6G
47
42
  arkitekt_next/bloks/socket.py,sha256=IW4954Hgms_oZsDIk9SgLoVGz07gW3sHi7-WuhN074Q,1067
48
43
  arkitekt_next/bloks/tailscale.py,sha256=87cJv9m7N_I3y2ZRvv5WVepRhvIZk4ftUpwa0yUdwj4,2961
49
44
  arkitekt_next/bloks/services/__init__.py,sha256=i9vGNd1lFBem3O2PblTouRzFVQkdwOYoUmqqU43dIWQ,592
50
- arkitekt_next/bloks/services/admin.py,sha256=qeNa9KkFJk0DSNV-Ses-vkLjC3xHtvHnVHJ3w0DPKOA,463
45
+ arkitekt_next/bloks/services/admin.py,sha256=xjhZnpJHtdBbrytYMssEPTUFEv0tWziXeYIjKKycxZM,485
51
46
  arkitekt_next/bloks/services/certer.py,sha256=5KuWf6h7-8t2M3yvNJUfatR3J40Rnb7sIhLQC_ty9rw,439
52
47
  arkitekt_next/bloks/services/channel.py,sha256=OQm_qI748o60V2wbFz3kuCO8rQoIAqqYbfohor-ziOQ,269
53
48
  arkitekt_next/bloks/services/config.py,sha256=E0X-AweMxbbVQihqPuUEUzt9Y5J2DKY5sFX2efORtS0,378
54
49
  arkitekt_next/bloks/services/db.py,sha256=Lc8uL8xibz99-16YPxtB_ls6CP3dN_jCaOzJ9uZ8b_0,588
55
50
  arkitekt_next/bloks/services/gateway.py,sha256=X7ghhLXZ9hDQIMXMTkfBMcS9o9oc16y0C-b_3r3uwCo,847
56
- arkitekt_next/bloks/services/livekit.py,sha256=5Qv1dcL2sQTveYvxZOuZPboNqn2wH0kyP6q7OkA6Kzs,357
51
+ arkitekt_next/bloks/services/livekit.py,sha256=Z8iwVgpJhyJOqb6y5lGR0kFReU5RDFAtC6-aH02gckY,428
57
52
  arkitekt_next/bloks/services/lok.py,sha256=fzOGum0VmcVaONUhTv4jHYky4WrFq2ygDAYJjBv2vAI,500
58
53
  arkitekt_next/bloks/services/mount.py,sha256=UAp7IzUNGYtqrh8ACAVgRtc5jYVGvzsKjKdegBdK_i0,273
59
54
  arkitekt_next/bloks/services/name.py,sha256=ysr7b8Hn9yIeuBlqv9Zz-ngWKdQtwl3V1I1TeDvhLlA,254
60
- arkitekt_next/bloks/services/ollama.py,sha256=9L9DgUFcNxrYDg1p8W7THfzQmqQzBy0J7QTMhh-3WN8,352
55
+ arkitekt_next/bloks/services/ollama.py,sha256=ZQ963XvQeFufTL1NEWkf7Wn6QLRWjIXutmKsU8Xdmbc,507
61
56
  arkitekt_next/bloks/services/redis.py,sha256=W9CraIZJztFE1vQVCfxCxY4T_gBPRTM84VwFR8Hwtp8,472
62
57
  arkitekt_next/bloks/services/s3.py,sha256=_mk_9NdaeHRVZ__1M9CL1Ec1gSQKkzlOiQXse7MSx94,485
63
- arkitekt_next/bloks/services/secret.py,sha256=cnZsH09gN9YRXBbmalZaFD2LcmWLlfm52mDTAnfuYT4,344
58
+ arkitekt_next/bloks/services/secret.py,sha256=7DIELrrK19GTJdYVvxCehyTc0VAaYig_s1Bf6q5936w,338
64
59
  arkitekt_next/bloks/services/socket.py,sha256=3MbENiJrwQbFKrpWxax56F24elnSD7S-olgycfuOX7s,423
65
60
  arkitekt_next/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
61
  arkitekt_next/cli/constants.py,sha256=ONXKA8LRxXQkOQ56ZElVMZSTiaIH1LE_ikmUUKem98g,1410
@@ -70,9 +65,9 @@ arkitekt_next/cli/io.py,sha256=FyL7UQgDvss_I2M6NYtcZKvOwYmtOsGVmlaHZkk6BCQ,1900
70
65
  arkitekt_next/cli/main.py,sha256=Ua7sq_OfC491F6r6zNs_oEiR4jVOsZwxLpX0ZXR0Jk0,2227
71
66
  arkitekt_next/cli/options.py,sha256=LwhEdjZutH_go568buS37L9Gn_roinrCC6BUu2sC3B0,3814
72
67
  arkitekt_next/cli/texts.py,sha256=sYK94BLCt_FWFtdgPDZuKgpINICGFcHQLqO74fxQkug,688
73
- arkitekt_next/cli/types.py,sha256=s5gRsiQISrf6D2RKJi7jCoaAjpa8wcml5X2r2ED4kl8,1236
74
- arkitekt_next/cli/ui.py,sha256=L4g_1qwGBVgv4hfRRN22p5Xm7z6CiSIqBRvmmvQ1gow,3620
75
- 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
76
71
  arkitekt_next/cli/validators.py,sha256=XkLrOrDzBJwcG1keTawa_NJPt3QIBhb5KjepeH4N1KA,719
77
72
  arkitekt_next/cli/vars.py,sha256=ev7cKDSPoik8hU9A_ohNpjRZX4FT1GYJaBoGLnxCKjU,982
78
73
  arkitekt_next/cli/commands/call/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -87,18 +82,18 @@ arkitekt_next/cli/commands/gen/watch.py,sha256=nf4QckdTJOWxvKoeNRwvC4rXQ4xhIx8LC
87
82
  arkitekt_next/cli/commands/init/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
83
  arkitekt_next/cli/commands/init/main.py,sha256=1ZbZDBECZRxlcnulycdS15s-uQ5ngx4xP3T1v-gkJ3U,5435
89
84
  arkitekt_next/cli/commands/inspect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
- arkitekt_next/cli/commands/inspect/implementations.py,sha256=7z5Ktzs6WLEJFBVL-Ar1OTPgipZDjsnoxN6YbV3Zgg0,2801
85
+ arkitekt_next/cli/commands/inspect/implementations.py,sha256=R-2kqOJhvY4awISXhMtCXmiF1a6-o9IeeHBTvq0umqw,2794
91
86
  arkitekt_next/cli/commands/inspect/main.py,sha256=khT5u8bF4EokgA-JtOLVVN3dD0jq32zbtCb9BqsaARU,650
92
- arkitekt_next/cli/commands/inspect/requirements.py,sha256=CiVApGLpG2haDkFj0klIrKIjhIV5Z_TL8HrZeS4Swug,1761
87
+ arkitekt_next/cli/commands/inspect/requirements.py,sha256=tpZKJCUUXkCqdSiUVXhIaZZqvpH7slsibQNKjLwLOZc,1754
93
88
  arkitekt_next/cli/commands/inspect/variables.py,sha256=sBVTKCI98BWAUiqhF5xRu_jQDgwk8sGfcyEozpAnDwg,2654
94
89
  arkitekt_next/cli/commands/kabinet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
- arkitekt_next/cli/commands/kabinet/build.py,sha256=uxAxaPL2bBXhNXFho5NsexYslLWqCiK11vFDbEh7yZE,10689
90
+ arkitekt_next/cli/commands/kabinet/build.py,sha256=IX7PjUM-Mvo8dPORPWLQL1Tncqp6lameKZJWuz9PNQU,10639
96
91
  arkitekt_next/cli/commands/kabinet/init.py,sha256=otVakPcD6bC-7VtmqiLWNZKi3BE9evtMVv0TOGRnaD4,3583
97
92
  arkitekt_next/cli/commands/kabinet/io.py,sha256=1jFMDAYbZ4Ius0sZe_UDngxLJHaf-x9O86l2geMUrpo,5567
98
93
  arkitekt_next/cli/commands/kabinet/main.py,sha256=PFc8JGeSxbU8ZzxPlFDQp7--ogQyxL9sGQ4pA8XQmEo,1314
99
94
  arkitekt_next/cli/commands/kabinet/publish.py,sha256=B22UKmJMkiC1GZl--Nxwm-AWpAYaZ0o0Wo4t1iTJQ2M,3538
100
95
  arkitekt_next/cli/commands/kabinet/stage.py,sha256=kOkZ_GCkIzCEUmtc80u35hFwU4uOtfXODfhrPuHMaMk,2013
101
- arkitekt_next/cli/commands/kabinet/types.py,sha256=PYQM8ca_5fpPg79T3ZYwKckE-5rJiJgevvxF5M4mivY,4024
96
+ arkitekt_next/cli/commands/kabinet/types.py,sha256=J0JucfWpXFb-q6PlANZnQ9acstwGKra3iX4lHou3XWI,3969
102
97
  arkitekt_next/cli/commands/kabinet/utils.py,sha256=5MFFy9pBBOGMs_ACoLcffclCUCmX8bsTjLnrvFHE2Q4,1649
103
98
  arkitekt_next/cli/commands/kabinet/validate.py,sha256=9zeTb6yzjQpjk6FQq6ce38a8u_pH9gDg2mBqqp-Pqwg,2473
104
99
  arkitekt_next/cli/commands/manifest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -107,10 +102,10 @@ arkitekt_next/cli/commands/manifest/main.py,sha256=b_kz8wPYF1eHv_9WmB9Gop8TlDUgf
107
102
  arkitekt_next/cli/commands/manifest/scopes.py,sha256=sw0HRy8GliEcmx3Sh6cPRpBkf1vxAGJwLgIO63ZB_t4,4879
108
103
  arkitekt_next/cli/commands/manifest/version.py,sha256=3JdcXqiFeCvIaEpsMfeSKWU_uQehDkEawEpdSxWaKSA,4822
109
104
  arkitekt_next/cli/commands/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
- arkitekt_next/cli/commands/run/dev.py,sha256=eF7LMHxqqwelW82BscKDqJJuUhnuupyMBf53LsC2yms,10461
105
+ arkitekt_next/cli/commands/run/dev.py,sha256=K7wa8Xu80BMuoQqvwKUkipKi41IP5ua6AAc7rwgWCjg,10352
111
106
  arkitekt_next/cli/commands/run/main.py,sha256=0bNO3DqwbZ4ddMsDWbCGmlPD6Cs3Jlg4yh2-zilsEbY,552
112
107
  arkitekt_next/cli/commands/run/prod.py,sha256=N2x1ZowCUpvgUOAlKP148vraRTVc2XRq4SyyzOnVgjQ,1627
113
- 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
114
109
  arkitekt_next/cli/dockerfiles/vanilla.dockerfile,sha256=0ujdG22rZ6v2n5TMHNA4HR5f1PP9KJvAQORz-DGHBpo,184
115
110
  arkitekt_next/cli/schemas/fluss.schema.graphql,sha256=MqrSpOxtWO9kWFCoUn9ySBPhIH3XozFiqrQl2zjEbiQ,35803
116
111
  arkitekt_next/cli/schemas/gucker.schema.graphql,sha256=r_KL-MoFRCGUobbtcBLCnpmFcali2A12TguynqQgmN4,152947
@@ -129,10 +124,10 @@ arkitekt_next/cli/schemas/unlok.schema.graphql,sha256=fXR846snIBIqkuQ-PlYnSkQjkF
129
124
  arkitekt_next/cli/templates/filter.py,sha256=mD2jdNEXrZNagC_8WtuTisGJrGIbJDSylCvh19cF49I,650
130
125
  arkitekt_next/cli/templates/simple.py,sha256=IbcThJ5LryXVFQUdzxfHQCtzSNxEQWTxbD__Ygxsp4M,1171
131
126
  arkitekt_next/cli/versions/v1.yaml,sha256=rv2-F6FQbTZi_H6pSE_csdICdtKBObDdoo_asOFi43Y,12
132
- arkitekt_next/qt/__init__.py,sha256=5tCCd-FA3sMN9Lo5JRUYUM6xgs2zxyHj5YDpdWYbR0w,471
133
- arkitekt_next/qt/builders.py,sha256=E-BdslAZE7futxwo-TX-iQoZWVbY0t4V-ZFLmadgssk,9184
134
- arkitekt_next/qt/magic_bar.py,sha256=J6H3xMJHVButzaWcFmwos8DKihSF3QXR_aH65xnk91c,17600
135
- 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
136
131
  arkitekt_next/qt/utils.py,sha256=MgBPtPmCSBkIuATov3UgREESwxAHh77lWNNxyE7Qs48,773
137
132
  arkitekt_next/qt/assets/dark/gear.png,sha256=nYl1JZhcpwd7s5FgG2g-1RpkK7TH_QQRqJMmK6r0BpU,6296
138
133
  arkitekt_next/qt/assets/dark/green pulse.gif,sha256=cUd2F3Qlvjb7SnsU-LjGgeLTa8KoPgu3C-LNrixIQds,105386
@@ -144,8 +139,8 @@ arkitekt_next/qt/assets/light/green pulse.gif,sha256=cUd2F3Qlvjb7SnsU-LjGgeLTa8K
144
139
  arkitekt_next/qt/assets/light/orange pulse.gif,sha256=0gDvrRed0mzZZPHB4tP6vptx7myUCAa_hEVGdjRhNy8,94769
145
140
  arkitekt_next/qt/assets/light/pink pulse.gif,sha256=rxd6ZTHSIG9JZuuHhi3jiSB_JYFBZpy7OWUeZETlhQ4,107513
146
141
  arkitekt_next/qt/assets/light/red pulse.gif,sha256=U7WLbZvSl5e-Ob5RmawtlC0Rh9VVHxkjDbGjj7NYVUo,108749
147
- arkitekt_next-0.13.0.dist-info/METADATA,sha256=VW7ONrep0p_hY3IFfYVm4ag-FAYjBxP9qVxX6MxXiTw,5778
148
- arkitekt_next-0.13.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
149
- arkitekt_next-0.13.0.dist-info/entry_points.txt,sha256=IY-mUEDBU6QncqnYw-Ufw5bvNNXjqSlLf1uexZZCJhc,61
150
- arkitekt_next-0.13.0.dist-info/licenses/LICENSE,sha256=YZ2oRjC248t-GpoEyw7J13vwKYNG6zhYMaEAix6EzF0,1089
151
- arkitekt_next-0.13.0.dist-info/RECORD,,
142
+ arkitekt_next-0.14.1.dist-info/METADATA,sha256=hh6ll8JfjDAgpdOOV6SHnh_YJjHtCwBxtjK_7l0i40Q,5742
143
+ arkitekt_next-0.14.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
144
+ arkitekt_next-0.14.1.dist-info/entry_points.txt,sha256=IY-mUEDBU6QncqnYw-Ufw5bvNNXjqSlLf1uexZZCJhc,61
145
+ arkitekt_next-0.14.1.dist-info/licenses/LICENSE,sha256=YZ2oRjC248t-GpoEyw7J13vwKYNG6zhYMaEAix6EzF0,1089
146
+ arkitekt_next-0.14.1.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 """