arkitekt-next 0.12.1__tar.gz → 0.12.2__tar.gz

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 (152) hide show
  1. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/PKG-INFO +5 -5
  2. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/__blok__.py +0 -2
  3. arkitekt_next-0.12.2/arkitekt_next/bloks/alpaka.py +104 -0
  4. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/arkitekt.py +4 -7
  5. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/base.py +1 -8
  6. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/gateway.py +0 -12
  7. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/lok.py +2 -18
  8. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/protocols.py +1 -0
  9. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/pyproject.toml +5 -5
  10. arkitekt_next-0.12.1/arkitekt_next/bloks/alpaka.py +0 -45
  11. arkitekt_next-0.12.1/arkitekt_next/bloks/local_sign.py +0 -261
  12. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/.gitignore +0 -0
  13. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/LICENSE +0 -0
  14. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/README.md +0 -0
  15. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/__init__.py +0 -0
  16. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/apps/__init__.py +0 -0
  17. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/apps/protocols.py +0 -0
  18. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/apps/service/__init__.py +0 -0
  19. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/apps/service/fakts_next.py +0 -0
  20. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/apps/service/fakts_qt.py +0 -0
  21. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/apps/service/grant_registry.py +0 -0
  22. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/apps/service/herre.py +0 -0
  23. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/apps/service/herre_qt.py +0 -0
  24. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/apps/service/local_fakts.py +0 -0
  25. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/base_models.py +0 -0
  26. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/__init__.py +0 -0
  27. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/admin.py +0 -0
  28. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/channel.py +0 -0
  29. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/config.py +0 -0
  30. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/elektro.py +0 -0
  31. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/fluss.py +0 -0
  32. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/internal_docker.py +0 -0
  33. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/kabinet.py +0 -0
  34. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/kraph.py +0 -0
  35. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/livekit.py +0 -0
  36. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/mikro.py +0 -0
  37. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/minio.py +0 -0
  38. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/mount.py +0 -0
  39. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/namegen.py +0 -0
  40. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/ollama.py +0 -0
  41. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/orkestrator.py +0 -0
  42. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/postgres.py +0 -0
  43. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/redis.py +0 -0
  44. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/rekuest.py +0 -0
  45. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/secret.py +0 -0
  46. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/self_signed.py +0 -0
  47. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/__init__.py +0 -0
  48. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/admin.py +0 -0
  49. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/certer.py +0 -0
  50. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/channel.py +0 -0
  51. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/config.py +0 -0
  52. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/db.py +0 -0
  53. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/gateway.py +0 -0
  54. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/livekit.py +0 -0
  55. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/lok.py +0 -0
  56. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/mount.py +0 -0
  57. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/name.py +0 -0
  58. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/ollama.py +0 -0
  59. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/redis.py +0 -0
  60. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/s3.py +0 -0
  61. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/secret.py +0 -0
  62. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/services/socket.py +0 -0
  63. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/socket.py +0 -0
  64. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/bloks/tailscale.py +0 -0
  65. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/builders.py +0 -0
  66. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/__init__.py +0 -0
  67. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/call/__init__.py +0 -0
  68. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/call/local.py +0 -0
  69. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/call/main.py +0 -0
  70. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/call/remote.py +0 -0
  71. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/gen/__init__.py +0 -0
  72. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/gen/compile.py +0 -0
  73. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/gen/init.py +0 -0
  74. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/gen/main.py +0 -0
  75. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/gen/watch.py +0 -0
  76. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/init/__init__.py +0 -0
  77. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/init/main.py +0 -0
  78. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/inspect/__init__.py +0 -0
  79. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/inspect/implementations.py +0 -0
  80. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/inspect/main.py +0 -0
  81. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/inspect/requirements.py +0 -0
  82. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/inspect/variables.py +0 -0
  83. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/kabinet/__init__.py +0 -0
  84. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/kabinet/build.py +0 -0
  85. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/kabinet/init.py +0 -0
  86. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/kabinet/io.py +0 -0
  87. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/kabinet/main.py +0 -0
  88. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/kabinet/publish.py +0 -0
  89. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/kabinet/stage.py +0 -0
  90. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/kabinet/types.py +0 -0
  91. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/kabinet/utils.py +0 -0
  92. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/kabinet/validate.py +0 -0
  93. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/manifest/__init__.py +0 -0
  94. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/manifest/inspect.py +0 -0
  95. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/manifest/main.py +0 -0
  96. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/manifest/scopes.py +0 -0
  97. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/manifest/version.py +0 -0
  98. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/run/__init__.py +0 -0
  99. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/run/dev.py +0 -0
  100. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/run/main.py +0 -0
  101. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/run/prod.py +0 -0
  102. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/commands/run/utils.py +0 -0
  103. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/constants.py +0 -0
  104. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/dockerfiles/vanilla.dockerfile +0 -0
  105. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/errors.py +0 -0
  106. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/inspect.py +0 -0
  107. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/io.py +0 -0
  108. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/main.py +0 -0
  109. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/options.py +0 -0
  110. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/fluss.schema.graphql +0 -0
  111. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/gucker.schema.graphql +0 -0
  112. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/kabinet.schema.graphql +0 -0
  113. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/kluster.schema.graphql +0 -0
  114. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/konviktion.schema.graphql +0 -0
  115. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/kuay.schema.graphql +0 -0
  116. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/mikro.schema.graphql +0 -0
  117. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/mikro_next.schema.graphql +0 -0
  118. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/napari.schema.graphql +0 -0
  119. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/omero_ark.schema.graphql +0 -0
  120. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/port.schema.graphql +0 -0
  121. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/rekuest.schema.graphql +0 -0
  122. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/rekuest_next.schema.graphql +0 -0
  123. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/schemas/unlok.schema.graphql +0 -0
  124. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/templates/filter.py +0 -0
  125. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/templates/simple.py +0 -0
  126. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/texts.py +0 -0
  127. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/types.py +0 -0
  128. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/ui.py +0 -0
  129. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/utils.py +0 -0
  130. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/validators.py +0 -0
  131. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/vars.py +0 -0
  132. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/cli/versions/v1.yaml +0 -0
  133. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/constants.py +0 -0
  134. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/init_registry.py +0 -0
  135. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/__init__.py +0 -0
  136. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/assets/dark/gear.png +0 -0
  137. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/assets/dark/green pulse.gif +0 -0
  138. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/assets/dark/orange pulse.gif +0 -0
  139. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/assets/dark/pink pulse.gif +0 -0
  140. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/assets/dark/red pulse.gif +0 -0
  141. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/assets/light/gear.png +0 -0
  142. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/assets/light/green pulse.gif +0 -0
  143. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/assets/light/orange pulse.gif +0 -0
  144. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/assets/light/pink pulse.gif +0 -0
  145. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/assets/light/red pulse.gif +0 -0
  146. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/builders.py +0 -0
  147. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/magic_bar.py +0 -0
  148. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/types.py +0 -0
  149. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/qt/utils.py +0 -0
  150. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/service_registry.py +0 -0
  151. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/tqdm.py +0 -0
  152. {arkitekt_next-0.12.1 → arkitekt_next-0.12.2}/arkitekt_next/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arkitekt-next
3
- Version: 0.12.1
3
+ Version: 0.12.2
4
4
  Summary: client for the arkitekt_next platform
5
5
  Author-email: jhnnsrs <jhnnsrs@gmail.com>
6
6
  License-Expression: MIT
@@ -20,12 +20,12 @@ Requires-Dist: watchfiles>=1.0.5
20
20
  Provides-Extra: all
21
21
  Requires-Dist: fluss-next>=0.2.0; extra == 'all'
22
22
  Requires-Dist: kabinet>=0.2.0; extra == 'all'
23
- Requires-Dist: mikro-next>=0.3.1; extra == 'all'
23
+ Requires-Dist: mikro-next>=0.4; extra == 'all'
24
24
  Requires-Dist: reaktion-next>=0.2.0; extra == 'all'
25
25
  Requires-Dist: rekuest-next>=0.7; extra == 'all'
26
26
  Requires-Dist: rich-click>=1.6.1; extra == 'all'
27
27
  Requires-Dist: semver>=3.0.1; extra == 'all'
28
- Requires-Dist: turms>=0.8.2; extra == 'all'
28
+ Requires-Dist: turms>=0.9; extra == 'all'
29
29
  Requires-Dist: unlok-next>=0.2.0; extra == 'all'
30
30
  Requires-Dist: watchfiles>=0.18.1; extra == 'all'
31
31
  Provides-Extra: alpaka
@@ -33,7 +33,7 @@ Requires-Dist: alpaka>=0.2.0; extra == 'alpaka'
33
33
  Provides-Extra: blok
34
34
  Requires-Dist: blok>=0.1.0; extra == 'blok'
35
35
  Provides-Extra: cli
36
- Requires-Dist: turms>=0.8.2; extra == 'cli'
36
+ Requires-Dist: turms>=0.9.0; extra == 'cli'
37
37
  Provides-Extra: elektro
38
38
  Requires-Dist: elektro>=0.5.0; extra == 'elektro'
39
39
  Provides-Extra: extended
@@ -48,7 +48,7 @@ Requires-Dist: kraph>=0.2.0; extra == 'kraph'
48
48
  Provides-Extra: lovekit
49
49
  Requires-Dist: lovekit>=0.2.0; extra == 'lovekit'
50
50
  Provides-Extra: mikro
51
- Requires-Dist: mikro-next>=0.3.1; extra == 'mikro'
51
+ Requires-Dist: mikro-next>=0.4.0; extra == 'mikro'
52
52
  Provides-Extra: reaktion
53
53
  Requires-Dist: reaktion-next>=0.2.0; extra == 'reaktion'
54
54
  Provides-Extra: unlok
@@ -21,7 +21,6 @@ from arkitekt_next.bloks.namegen import PreformedNamesBlok
21
21
  from arkitekt_next.bloks.ollama import OllamaBlok
22
22
  from arkitekt_next.bloks.self_signed import SelfSignedBlok
23
23
  from arkitekt_next.bloks.kraph import KraphBlok
24
- from arkitekt_next.bloks.local_sign import LocalSignBlok
25
24
  from arkitekt_next.bloks.elektro import ElektroBlok
26
25
  from blok.blok import Blok
27
26
 
@@ -51,6 +50,5 @@ def get_bloks() -> list[Blok]:
51
50
  SecretBlok(),
52
51
  PreformedNamesBlok(),
53
52
  OrkestratorBlok(),
54
- LocalSignBlok(),
55
53
  ElektroBlok(),
56
54
  ]
@@ -0,0 +1,104 @@
1
+ from typing import Dict, Any
2
+ import secrets
3
+
4
+
5
+ from arkitekt_next.bloks.services.admin import AdminService
6
+ from arkitekt_next.bloks.services.channel import ChannelService
7
+ from arkitekt_next.bloks.services.config import ConfigService
8
+ from arkitekt_next.bloks.services.db import DBService
9
+ from arkitekt_next.bloks.services.gateway import GatewayService
10
+ from arkitekt_next.bloks.services.lok import LokService
11
+ from arkitekt_next.bloks.services.mount import MountService
12
+ from arkitekt_next.bloks.services.redis import RedisService
13
+ from arkitekt_next.bloks.services.s3 import S3Service
14
+ from arkitekt_next.bloks.services.secret import SecretService
15
+ from blok import blok, InitContext, ExecutionContext, Option
16
+ from blok.bloks.services.dns import DnsService
17
+ from blok.tree import Repo, YamlFile
18
+ from arkitekt_next.bloks.base import BaseArkitektService
19
+
20
+
21
+ @blok("live.arkitekt.alpaka", description="a container and app management service")
22
+ class AlpakaBlok(BaseArkitektService):
23
+ def __init__(self) -> None:
24
+ self.dev = False
25
+ self.host = "alpaka"
26
+ self.command = "bash run-debug.sh"
27
+ self.repo = "https://github.com/arkitektio/alpaka-server"
28
+ self.scopes = {
29
+ "alpaka_pull": "Pull new Models",
30
+ "alpaka_chat": "Add repositories to the database",
31
+ }
32
+ self.mount_repo = False
33
+ self.build_repo = False
34
+ self.buckets = ["media"]
35
+ self.secret_key = secrets.token_hex(16)
36
+ self.image = "jhnnsrs/alpaka:nightly"
37
+
38
+ def get_additional_config(self):
39
+ return {"ensured_repos": self.ensured_repos}
40
+
41
+ def preflight(
42
+ self,
43
+ init: InitContext,
44
+ lok: LokService,
45
+ db: DBService,
46
+ redis: RedisService,
47
+ s3: S3Service,
48
+ config: ConfigService,
49
+ channel: ChannelService,
50
+ mount: MountService,
51
+ admin: AdminService,
52
+ secret: SecretService,
53
+ gateway: GatewayService | None = None,
54
+ dns: DnsService = None,
55
+ mount_repo: bool = False,
56
+ host: str = "",
57
+ image: str = "",
58
+ secret_key: str = "",
59
+ build_repo: bool = False,
60
+ command: str = "",
61
+ repo: str = "",
62
+ disable: bool = False,
63
+ dev: bool = False,
64
+ ):
65
+ return super().preflight(
66
+ init,
67
+ lok,
68
+ db,
69
+ redis,
70
+ s3,
71
+ config,
72
+ channel,
73
+ mount,
74
+ admin,
75
+ secret,
76
+ gateway,
77
+ dns,
78
+ mount_repo,
79
+ host,
80
+ image,
81
+ secret_key,
82
+ build_repo,
83
+ command,
84
+ repo,
85
+ disable,
86
+ dev,
87
+ )
88
+
89
+ def get_builder(self):
90
+ return "arkitekt.generic"
91
+
92
+ def build(self, context: ExecutionContext):
93
+ context.docker_compose.set_nested("services", self.host, self.service)
94
+
95
+ def get_additional_options(self):
96
+ with_repos = Option(
97
+ subcommand="repos",
98
+ help="The default repos to enable for the service",
99
+ default=self.secret_key,
100
+ )
101
+
102
+ return [
103
+ with_repos,
104
+ ]
@@ -3,6 +3,7 @@ from typing import Any, Dict, Optional
3
3
  from pydantic import BaseModel
4
4
 
5
5
  from arkitekt_next.bloks.kraph import KraphBlok
6
+ from arkitekt_next.bloks.lok import LokBlok
6
7
  from arkitekt_next.bloks.tailscale import TailscaleBlok
7
8
  from blok import InitContext, Panel, Renderer, blok
8
9
 
@@ -26,21 +27,17 @@ class AdminCredentials(BaseModel):
26
27
  @blok(
27
28
  "live.arkitekt",
28
29
  dependencies=[
30
+ LokBlok.as_dependency(True, True),
29
31
  MikroBlok.as_dependency(True, True),
30
32
  KabinetBlok.as_dependency(True, True),
31
33
  RekuestBlok.as_dependency(True, True),
32
34
  FlussBlok.as_dependency(True, True),
33
35
  InternalDockerBlok.as_dependency(True, True),
34
- LocalLiveKitBlok.as_dependency(True, True),
35
- OrkestratorBlok.as_dependency(True, False),
36
- KraphBlok.as_dependency(True, False),
37
- TailscaleBlok.as_dependency(True, False),
38
- OllamaBlok.as_dependency(True, False),
39
- ElektroBlok.as_dependency(True, False),
36
+ KraphBlok.as_dependency(True, True),
37
+ ElektroBlok.as_dependency(True, True),
40
38
  ],
41
39
  )
42
40
  class ArkitektBlok:
43
-
44
41
  def entry(self, renderer: Renderer):
45
42
  renderer.render(
46
43
  Panel(
@@ -63,12 +63,10 @@ class BaseArkitektService:
63
63
  redis: RedisService,
64
64
  s3: S3Service,
65
65
  config: ConfigService,
66
- channel: ChannelService,
67
66
  mount: MountService,
68
67
  admin: AdminService,
69
68
  secret: SecretService,
70
- gateway: Optional[GatewayService] = None,
71
- dns: DnsService = None,
69
+ gateway: GatewayService,
72
70
  mount_repo: bool = False,
73
71
  host: str = "",
74
72
  image: str = "",
@@ -100,12 +98,7 @@ class BaseArkitektService:
100
98
 
101
99
  django_secret = secret.retrieve_secret()
102
100
 
103
- dns_result = dns.get_dns_result()
104
-
105
101
  csrf_trusted_origins = []
106
- for hostname in dns_result.hostnames:
107
- csrf_trusted_origins.append(f"http://{hostname}")
108
- csrf_trusted_origins.append(f"https://{hostname}")
109
102
 
110
103
  configuration = YamlFile(
111
104
  **{
@@ -67,20 +67,13 @@ class CaddyBlok:
67
67
  def preflight(
68
68
  self,
69
69
  init: InitContext,
70
- dns: DnsService,
71
70
  name: NameService,
72
- certer: CerterService,
73
71
  ):
74
72
  for key, value in init.kwargs.items():
75
73
  setattr(self, key, value)
76
74
 
77
- self.public_ips = dns.get_dns_result().ip_addresses
78
- self.public_hosts = dns.get_dns_result().hostnames
79
75
  self.gateway_network = name.retrieve_name().replace("-", "_")
80
76
 
81
- self.cert_mount = certer.retrieve_certs_mount()
82
- self.depends_on = certer.retrieve_depends_on()
83
-
84
77
  def build(
85
78
  self,
86
79
  context: ExecutionContext,
@@ -95,7 +88,6 @@ class CaddyBlok:
95
88
  if port.tls:
96
89
  caddyfile += f"""
97
90
  :{port.port} {{
98
- tls /certs/caddy.crt /certs/caddy.key
99
91
  reverse_proxy {port.host}:{port.to}
100
92
  }}
101
93
  """
@@ -112,7 +104,6 @@ class CaddyBlok:
112
104
  """
113
105
  caddyfile += (
114
106
  """
115
- tls /certs/caddy.crt /certs/caddy.key
116
107
  """
117
108
  if protocol == "https" and self.cert_mount
118
109
  else ""
@@ -173,8 +164,6 @@ class CaddyBlok:
173
164
  ]
174
165
 
175
166
  volumes = ["./configs/Caddyfile:/etc/caddy/Caddyfile"]
176
- if self.cert_mount:
177
- volumes.append(f"{self.cert_mount}:/certs")
178
167
 
179
168
  caddy_container = {
180
169
  "image": "caddy:latest",
@@ -184,7 +173,6 @@ class CaddyBlok:
184
173
  ]
185
174
  + exposed_ports_strings,
186
175
  "volumes": volumes,
187
- "depends_on": caddy_depends_on,
188
176
  "networks": [self.gateway_network, "default"],
189
177
  }
190
178
 
@@ -35,7 +35,7 @@ class UserParamType(click.ParamType):
35
35
  return value
36
36
  try:
37
37
  name, password = value.split(":")
38
- return {"name": name, "password": password}
38
+ return {"username": name, "password": password}
39
39
  except ValueError:
40
40
  self.fail(
41
41
  f"User '{value}' is not in the correct format. It should be 'name:password'.",
@@ -176,8 +176,6 @@ class LokBlok:
176
176
  admin: AdminService,
177
177
  secrets: SecretBlok,
178
178
  s3: S3Service,
179
- dns: DnsService,
180
- livekit: Optional[LivekitService] = None,
181
179
  ):
182
180
  for key, value in init.kwargs.items():
183
181
  setattr(self, key, value)
@@ -193,9 +191,6 @@ class LokBlok:
193
191
  self.redis_access = redis.register()
194
192
  self.admin_access = admin.retrieve()
195
193
  self.s3_access = s3.create_buckets(self.buckets)
196
- if livekit:
197
- self.local_access = livekit.retrieve_access()
198
- self.dns_result = dns.get_dns_result()
199
194
  self.initialized = True
200
195
 
201
196
  def build(self, context: ExecutionContext):
@@ -206,7 +201,7 @@ class LokBlok:
206
201
 
207
202
  if self.postgress_access.dependency:
208
203
  depends_on.append(self.postgress_access.dependency)
209
-
204
+
210
205
  if self.s3_access.dependency:
211
206
  depends_on.append(self.s3_access.dependency)
212
207
 
@@ -219,7 +214,6 @@ class LokBlok:
219
214
  "volumes": [
220
215
  "/var/run/docker.sock:/var/run/docker.sock",
221
216
  "./configs/lok.yaml:/workspace/config.yaml",
222
- "./certs:/certs",
223
217
  ],
224
218
  }
225
219
 
@@ -237,10 +231,6 @@ class LokBlok:
237
231
 
238
232
  trusted_origins = []
239
233
 
240
- for i in self.dns_result.hostnames:
241
- trusted_origins.append(f"http://{i}")
242
- trusted_origins.append(f"https://{i}")
243
-
244
234
  configuration = YamlFile(
245
235
  **{
246
236
  "db": asdict(self.postgress_access),
@@ -262,14 +252,8 @@ class LokBlok:
262
252
  ],
263
253
  "groups": [group for group in self.groups],
264
254
  "deployment": {"name": self.deployment_name},
265
- "livekit": (
266
- asdict(self.local_access)
267
- if self.local_access
268
- else {"api_key": "dev", "api_secret": "secret", "api_url": None}
269
- ),
270
255
  "s3": asdict(self.s3_access),
271
256
  "token_expire_seconds": self.token_expiry_seconds,
272
- "apps": [],
273
257
  "force_script_name": "lok",
274
258
  "csrf_trusted_origins": trusted_origins,
275
259
  }
@@ -16,6 +16,7 @@ from koil import unkoil
16
16
  from koil.composition import KoiledModel
17
17
  from arkitekt_next.base_models import Manifest
18
18
  from fakts_next import Fakts
19
+ from herre_next import Herre
19
20
 
20
21
 
21
22
  if TYPE_CHECKING:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "arkitekt-next"
3
- version = "0.12.1"
3
+ version = "0.12.2"
4
4
  description = "client for the arkitekt_next platform"
5
5
  authors = [{ name = "jhnnsrs", email = "jhnnsrs@gmail.com" }]
6
6
  requires-python = ">=3.11,<4"
@@ -22,11 +22,11 @@ dependencies = [
22
22
 
23
23
  [project.optional-dependencies]
24
24
  cli = [
25
- "turms>=0.8.2",
25
+ "turms>=0.9.0",
26
26
  ]
27
27
  alpaka = ["alpaka>=0.2.0"]
28
28
  kraph = ["kraph>=0.2.0"]
29
- mikro = ["mikro-next>=0.3.1"]
29
+ mikro = ["mikro-next>=0.4.0"]
30
30
  kabinet = ["kabinet>=0.4.0"]
31
31
  elektro = ["elektro>=0.5.0"]
32
32
  fluss = ["fluss-next>=0.2.0"]
@@ -36,11 +36,11 @@ unlok = ["unlok-next>=0.2.0"]
36
36
  all = [
37
37
  "rich-click>=1.6.1",
38
38
  "watchfiles>=0.18.1",
39
- "turms>=0.8.2",
39
+ "turms>=0.9",
40
40
  "semver>=3.0.1",
41
41
  "reaktion-next>=0.2.0",
42
42
  "rekuest-next>=0.7",
43
- "mikro-next>=0.3.1",
43
+ "mikro-next>=0.4",
44
44
  "kabinet>=0.2.0",
45
45
  "fluss-next>=0.2.0",
46
46
  "unlok-next>=0.2.0",
@@ -1,45 +0,0 @@
1
- from typing import Dict, Any
2
- import secrets
3
-
4
-
5
- from blok import blok, InitContext, ExecutionContext, Option
6
- from blok.tree import Repo, YamlFile
7
- from arkitekt_next.bloks.base import BaseArkitektService
8
-
9
-
10
- @blok("live.arkitekt.alpaka", description="a container and app management service")
11
- class AlpakaBlok(BaseArkitektService):
12
- def __init__(self) -> None:
13
- self.dev = False
14
- self.host = "alpaka"
15
- self.command = "bash run-debug.sh"
16
- self.repo = "https://github.com/jhnnsrs/alpaka-server"
17
- self.scopes = {
18
- "alpaka_pull": "Pull new Models",
19
- "alpaka_chat": "Add repositories to the database",
20
- }
21
- self.mount_repo = False
22
- self.build_repo = False
23
- self.buckets = ["media"]
24
- self.secret_key = secrets.token_hex(16)
25
- self.image = "jhnnsrs/alpaka:next"
26
-
27
- def get_additional_config(self):
28
- return {"ensured_repos": self.ensured_repos}
29
-
30
- def get_builder(self):
31
- return "arkitekt.generic"
32
-
33
- def build(self, context: ExecutionContext):
34
- context.docker_compose.set_nested("services", self.host, self.service)
35
-
36
- def get_additional_options(self):
37
- with_repos = Option(
38
- subcommand="repos",
39
- help="The default repos to enable for the service",
40
- default=self.secret_key,
41
- )
42
-
43
- return [
44
- with_repos,
45
- ]
@@ -1,261 +0,0 @@
1
- import click
2
-
3
- from pydantic import BaseModel
4
- from cryptography.hazmat.primitives import serialization as crypto_serialization
5
- from cryptography.hazmat.primitives.asymmetric import rsa
6
- from cryptography.hazmat.backends import default_backend as crypto_default_backend
7
- from typing import Dict, Optional
8
- from arkitekt_next.bloks.secret import SecretBlok
9
- from arkitekt_next.bloks.services.admin import AdminService
10
- from arkitekt_next.bloks.services.db import DBService
11
- from arkitekt_next.bloks.services.gateway import GatewayService
12
- from arkitekt_next.bloks.services.livekit import LivekitService
13
- from arkitekt_next.bloks.services.lok import LokCredentials, LokService
14
- import yaml
15
- import secrets
16
- from dataclasses import asdict
17
-
18
- from arkitekt_next.bloks.services.redis import RedisService
19
- from blok import blok, InitContext, ExecutionContext, Option
20
- from blok.bloks.services.dns import DnsService
21
- from blok.tree import YamlFile, Repo
22
- from blok import blok, InitContext
23
-
24
-
25
- DEFAULT_ARKITEKT_URL = "http://localhost:8000"
26
-
27
-
28
- # Define a custom user type that will parse and validate the user input
29
- class UserParamType(click.ParamType):
30
- name = "user"
31
-
32
- def convert(self, value, param, ctx):
33
- if isinstance(value, dict):
34
- return value
35
- try:
36
- name, password = value.split(":")
37
- return {"name": name, "password": password}
38
- except ValueError:
39
- self.fail(
40
- f"User '{value}' is not in the correct format. It should be 'name:password'.",
41
- param,
42
- ctx,
43
- )
44
-
45
-
46
- USER = UserParamType()
47
-
48
-
49
- # Define a custom user type that will parse and validate the user input
50
- class GroupParamType(click.ParamType):
51
- name = "group"
52
-
53
- def convert(self, value, param, ctx):
54
- if isinstance(value, dict):
55
- return value
56
- try:
57
- name, description = value.split(":")
58
- return {"name": name, "description": description}
59
- except ValueError:
60
- self.fail(
61
- f"User '{value}' is not in the correct format. It should be 'name:password'.",
62
- param,
63
- ctx,
64
- )
65
-
66
-
67
- GROUP = GroupParamType()
68
-
69
-
70
- class RedeemTokenParamType(click.ParamType):
71
- name = "redeem_token"
72
-
73
- def convert(self, value, param, ctx):
74
- if isinstance(value, dict):
75
- assert "user" in value, f"scope is required {value}"
76
- assert "token" in value, f"description is required {value}"
77
- return value
78
-
79
- try:
80
- user, token = value.split(":")
81
- return {"user": user, "token": token}
82
- except ValueError:
83
- self.fail(
84
- f"RedeemToken '{value}' is not in the correct format. It should be 'username:token'.",
85
- param,
86
- ctx,
87
- )
88
-
89
-
90
- TOKEN = RedeemTokenParamType()
91
-
92
-
93
- class ScopeParamType(click.ParamType):
94
- name = "scope"
95
-
96
- def convert(self, value, param, ctx):
97
- if isinstance(value, dict):
98
- assert "scope" in value, f"scope is required {value}"
99
- assert "description" in value, f"description is required {value}"
100
- return value
101
-
102
- try:
103
- name, description = value.split(":")
104
- return {"scope": name, "description": description}
105
- except ValueError:
106
- self.fail(
107
- f"Scopes '{value}' is not in the correct format. It should be 'scope:description'.",
108
- param,
109
- ctx,
110
- )
111
-
112
-
113
- SCOPE = ScopeParamType()
114
-
115
-
116
- @blok(LokService, description="A local sign service")
117
- class LocalSignBlok:
118
- db_name: str
119
-
120
- def __init__(self) -> None:
121
- self.db_name = "lok_db"
122
- self.mount_repo = False
123
- self.build_repo = False
124
- self.private_key = None
125
- self.public_key = None
126
- self.host = "lok"
127
- self.dev = False
128
- self.with_repo = False
129
- self.users = []
130
- self.tokens = []
131
- self.groups = []
132
- self.scopes = {}
133
- self.key = None
134
- self.deployment_name = "default"
135
- self.token_expiry_seconds = 700000
136
- self.preformed_redeem_tokens = [secrets.token_hex(16) for i in range(80)]
137
- self.registered_tokens = {}
138
- self.local_access = None
139
-
140
- def retrieve_credentials(self) -> LokCredentials:
141
- return LokCredentials(
142
- public_key=self.public_key, key_type="RS256", issuer="lok"
143
- )
144
-
145
- def retrieve_labels(self, service_name: str, builder_name: str) -> list[str]:
146
- return [
147
- f"fakts.service={service_name}",
148
- f"fakts.builder={builder_name}",
149
- ]
150
-
151
- def retrieve_token(self, user: str = "admin") -> str:
152
- pass
153
- return "fake-token"
154
-
155
- def register_scopes(self, scopes_dict: Dict[str, str]) -> LokCredentials:
156
- self.scopes = self.scopes | scopes_dict
157
-
158
- def preflight(
159
- self,
160
- init: InitContext
161
- ):
162
- for key, value in init.kwargs.items():
163
- setattr(self, key, value)
164
-
165
- assert self.public_key, "Public key is required"
166
- assert self.private_key, "Private key is required"
167
-
168
-
169
- def build(self, context: ExecutionContext):
170
- context.file_tree.set_nested("secrets", "public_key.pem", self.public_key)
171
- context.file_tree.set_nested("secrets", "private_key.pem", self.private_key)
172
-
173
- def get_options(self):
174
- key = rsa.generate_private_key(
175
- public_exponent=65537, key_size=2048, backend=crypto_default_backend()
176
- )
177
-
178
- private_key = key.private_bytes(
179
- crypto_serialization.Encoding.PEM,
180
- crypto_serialization.PrivateFormat.PKCS8,
181
- crypto_serialization.NoEncryption(),
182
- ).decode()
183
-
184
- public_key = (
185
- key.public_key()
186
- .public_bytes(
187
- crypto_serialization.Encoding.OpenSSH,
188
- crypto_serialization.PublicFormat.OpenSSH,
189
- )
190
- .decode()
191
- )
192
-
193
- with_dev = Option(
194
- subcommand="dev",
195
- help="Run the service in development mode",
196
- type=bool,
197
- default=self.dev,
198
- show_default=True,
199
- )
200
-
201
- with_fakts_url = Option(
202
- subcommand="db_name",
203
- help="The name of the database",
204
- default="db_name",
205
- show_default=True,
206
- )
207
- with_users = Option(
208
- subcommand="users",
209
- help="Users that should be greated by default. Format is name:password",
210
- default=["admin:admin"],
211
- multiple=True,
212
- type=USER,
213
- show_default=True,
214
- )
215
- with_groups = Option(
216
- subcommand="groups",
217
- help="Groups that should be greated by default. Format is name:description",
218
- default=["admin:admin_group"],
219
- multiple=True,
220
- type=GROUP,
221
- show_default=True,
222
- )
223
- with_public_key = Option(
224
- subcommand="public_key",
225
- help="The public key for the JWT creation",
226
- default=public_key,
227
- required=True,
228
- callback=validate_public_key,
229
- )
230
- with_private_key = Option(
231
- subcommand="private_key",
232
- help="The corresponding private key for the JWT creation",
233
- default=private_key,
234
- callback=validate_private_key,
235
- required=True,
236
- )
237
-
238
- return [
239
- with_dev,
240
- with_fakts_url,
241
- with_users,
242
- with_groups,
243
- with_private_key,
244
- with_public_key,
245
- ]
246
-
247
-
248
- def validate_public_key(ctx, param, value):
249
- if not value.startswith("ssh-rsa"):
250
- raise click.BadParameter(
251
- f"Public key must be in ssh-rsa format. Started with {value}"
252
- )
253
- return value
254
-
255
-
256
- def validate_private_key(ctx, param, value):
257
- if not value.startswith("-----BEGIN PRIVATE KEY-----"):
258
- raise click.BadParameter(
259
- f"Private key must be in PEM format. Started with {value}"
260
- )
261
- return value