arkitekt-next 0.15.0__tar.gz → 0.16.0__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 (146) hide show
  1. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/PKG-INFO +3 -3
  2. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/alpaka.py +4 -1
  3. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/base.py +9 -7
  4. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/gateway.py +6 -12
  5. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/internal_docker.py +1 -6
  6. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/livekit.py +0 -4
  7. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/lok.py +67 -6
  8. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/lovekit.py +4 -1
  9. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/minio.py +4 -2
  10. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/ollama.py +0 -4
  11. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/postgres.py +0 -2
  12. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/gateway.py +12 -2
  13. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/lok.py +4 -0
  14. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/pyproject.toml +3 -3
  15. arkitekt_next-0.15.0/arkitekt_next/bloks/l.py +0 -136
  16. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/.gitignore +0 -0
  17. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/LICENSE +0 -0
  18. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/README.md +0 -0
  19. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/__blok__.py +0 -0
  20. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/__init__.py +0 -0
  21. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/app/__init__.py +0 -0
  22. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/app/app.py +0 -0
  23. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/app/fakts.py +0 -0
  24. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/__init__.py +0 -0
  25. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/admin.py +0 -0
  26. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/arkitekt.py +0 -0
  27. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/channel.py +0 -0
  28. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/config.py +0 -0
  29. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/elektro.py +0 -0
  30. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/fluss.py +0 -0
  31. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/kabinet.py +0 -0
  32. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/kraph.py +0 -0
  33. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/mikro.py +0 -0
  34. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/mount.py +0 -0
  35. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/namegen.py +0 -0
  36. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/orkestrator.py +0 -0
  37. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/redis.py +0 -0
  38. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/rekuest.py +0 -0
  39. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/secret.py +0 -0
  40. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/self_signed.py +0 -0
  41. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/__init__.py +0 -0
  42. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/admin.py +0 -0
  43. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/certer.py +0 -0
  44. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/channel.py +0 -0
  45. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/config.py +0 -0
  46. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/db.py +0 -0
  47. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/livekit.py +0 -0
  48. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/mount.py +0 -0
  49. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/name.py +0 -0
  50. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/ollama.py +0 -0
  51. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/redis.py +0 -0
  52. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/s3.py +0 -0
  53. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/secret.py +0 -0
  54. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/services/socket.py +0 -0
  55. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/socket.py +0 -0
  56. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/bloks/tailscale.py +0 -0
  57. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/builders.py +0 -0
  58. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/__init__.py +0 -0
  59. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/call/__init__.py +0 -0
  60. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/call/local.py +0 -0
  61. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/call/main.py +0 -0
  62. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/call/remote.py +0 -0
  63. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/gen/__init__.py +0 -0
  64. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/gen/compile.py +0 -0
  65. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/gen/init.py +0 -0
  66. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/gen/main.py +0 -0
  67. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/gen/watch.py +0 -0
  68. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/init/__init__.py +0 -0
  69. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/init/main.py +0 -0
  70. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/inspect/__init__.py +0 -0
  71. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/inspect/implementations.py +0 -0
  72. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/inspect/main.py +0 -0
  73. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/inspect/requirements.py +0 -0
  74. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/inspect/variables.py +0 -0
  75. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/kabinet/__init__.py +0 -0
  76. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/kabinet/build.py +0 -0
  77. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/kabinet/init.py +0 -0
  78. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/kabinet/io.py +0 -0
  79. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/kabinet/main.py +0 -0
  80. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/kabinet/publish.py +0 -0
  81. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/kabinet/stage.py +0 -0
  82. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/kabinet/types.py +0 -0
  83. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/kabinet/utils.py +0 -0
  84. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/kabinet/validate.py +0 -0
  85. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/manifest/__init__.py +0 -0
  86. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/manifest/inspect.py +0 -0
  87. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/manifest/main.py +0 -0
  88. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/manifest/scopes.py +0 -0
  89. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/manifest/version.py +0 -0
  90. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/run/__init__.py +0 -0
  91. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/run/dev.py +0 -0
  92. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/run/main.py +0 -0
  93. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/run/prod.py +0 -0
  94. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/commands/run/utils.py +0 -0
  95. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/constants.py +0 -0
  96. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/dockerfiles/vanilla.dockerfile +0 -0
  97. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/errors.py +0 -0
  98. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/inspect.py +0 -0
  99. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/io.py +0 -0
  100. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/main.py +0 -0
  101. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/options.py +0 -0
  102. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/fluss.schema.graphql +0 -0
  103. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/gucker.schema.graphql +0 -0
  104. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/kabinet.schema.graphql +0 -0
  105. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/kluster.schema.graphql +0 -0
  106. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/konviktion.schema.graphql +0 -0
  107. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/kuay.schema.graphql +0 -0
  108. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/mikro.schema.graphql +0 -0
  109. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/mikro_next.schema.graphql +0 -0
  110. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/napari.schema.graphql +0 -0
  111. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/omero_ark.schema.graphql +0 -0
  112. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/port.schema.graphql +0 -0
  113. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/rekuest.schema.graphql +0 -0
  114. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/rekuest_next.schema.graphql +0 -0
  115. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/schemas/unlok.schema.graphql +0 -0
  116. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/templates/filter.py +0 -0
  117. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/templates/simple.py +0 -0
  118. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/texts.py +0 -0
  119. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/types.py +0 -0
  120. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/ui.py +0 -0
  121. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/utils.py +0 -0
  122. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/validators.py +0 -0
  123. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/vars.py +0 -0
  124. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/cli/versions/v1.yaml +0 -0
  125. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/constants.py +0 -0
  126. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/init_registry.py +0 -0
  127. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/inspect.py +0 -0
  128. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/protocols.py +0 -0
  129. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/__init__.py +0 -0
  130. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/assets/dark/gear.png +0 -0
  131. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/assets/dark/green pulse.gif +0 -0
  132. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/assets/dark/orange pulse.gif +0 -0
  133. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/assets/dark/pink pulse.gif +0 -0
  134. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/assets/dark/red pulse.gif +0 -0
  135. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/assets/light/gear.png +0 -0
  136. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/assets/light/green pulse.gif +0 -0
  137. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/assets/light/orange pulse.gif +0 -0
  138. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/assets/light/pink pulse.gif +0 -0
  139. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/assets/light/red pulse.gif +0 -0
  140. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/builders.py +0 -0
  141. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/magic_bar.py +0 -0
  142. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/types.py +0 -0
  143. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/qt/utils.py +0 -0
  144. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/service_registry.py +0 -0
  145. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/tqdm.py +0 -0
  146. {arkitekt_next-0.15.0 → arkitekt_next-0.16.0}/arkitekt_next/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arkitekt-next
3
- Version: 0.15.0
3
+ Version: 0.16.0
4
4
  Summary: client for the arkitekt_next platform
5
5
  Author-email: jhnnsrs <jhnnsrs@gmail.com>
6
6
  License-Expression: MIT
@@ -19,7 +19,7 @@ Requires-Dist: watchfiles>=1.0.5
19
19
  Provides-Extra: all
20
20
  Requires-Dist: fluss-next>=0.2.0; extra == 'all'
21
21
  Requires-Dist: kabinet>=0.2.0; extra == 'all'
22
- Requires-Dist: mikro-next>=0.4; extra == 'all'
22
+ Requires-Dist: mikro-next>=0.6; extra == 'all'
23
23
  Requires-Dist: reaktion-next>=0.2.0; extra == 'all'
24
24
  Requires-Dist: rekuest-next>=0.7; extra == 'all'
25
25
  Requires-Dist: rich-click>=1.6.1; extra == 'all'
@@ -47,7 +47,7 @@ Requires-Dist: kraph>=0.2.0; extra == 'kraph'
47
47
  Provides-Extra: lovekit
48
48
  Requires-Dist: lovekit>=0.2.0; extra == 'lovekit'
49
49
  Provides-Extra: mikro
50
- Requires-Dist: mikro-next>=0.4.0; extra == 'mikro'
50
+ Requires-Dist: mikro-next>=0.6.0; extra == 'mikro'
51
51
  Provides-Extra: reaktion
52
52
  Requires-Dist: reaktion-next>=0.2.0; extra == 'reaktion'
53
53
  Provides-Extra: unlok
@@ -66,7 +66,10 @@ class AlpakaBlok(BaseArkitektService):
66
66
 
67
67
  path_name = self.host
68
68
 
69
- gateway.expose(path_name, 80, self.host)
69
+ gateway_path = gateway.expose_service(path_name, 80, self.host)
70
+ lok.register_service_on_subpath(
71
+ self.get_blok_meta().service_identifier, gateway_path, "ht"
72
+ )
70
73
 
71
74
  postgress_access = db.register_db(self.host)
72
75
  redis_access = redis.register()
@@ -83,17 +83,20 @@ class BaseArkitektService:
83
83
 
84
84
  path_name = self.host
85
85
 
86
- if gateway:
87
- print("Registering gateway access")
88
- gateway_access = gateway.expose(path_name, 80, self.host)
89
-
90
86
  postgress_access = db.register_db(self.host)
91
87
  redis_access = redis.register()
92
88
  lok_access = lok.retrieve_credentials()
93
89
  admin_access = admin.retrieve()
94
90
  minio_access = s3.create_buckets(self.buckets)
95
- lok_labels = lok.retrieve_labels(
96
- self.get_blok_meta().service_identifier, self.get_builder()
91
+
92
+ self.service_identifier = self.get_blok_meta().service_identifier
93
+
94
+ gateway_path = gateway.expose_service(
95
+ path_name, 80, self.host, strip_prefix=False
96
+ )
97
+
98
+ lok_labels = lok.register_service_on_subpath(
99
+ self.service_identifier, gateway_path, "ht"
97
100
  )
98
101
 
99
102
  django_secret = secret.retrieve_secret()
@@ -135,7 +138,6 @@ class BaseArkitektService:
135
138
  depends_on.append(minio_access.dependency)
136
139
 
137
140
  service = {
138
- "labels": lok_labels,
139
141
  "volumes": [f"{config_mount}:/workspace/config.yaml"],
140
142
  "depends_on": depends_on,
141
143
  }
@@ -42,9 +42,7 @@ class CaddyBlok:
42
42
  self.exposed_to_hosts = {}
43
43
  self.http_expose_default = None
44
44
  self.exposed_ports = {}
45
- self.with_certer = True
46
- self.with_tailscale = True
47
- self.certer_image = "jhnnsrs/certer:next"
45
+ self.with_certer = False
48
46
  self.http_port = 80
49
47
  self.https_port = 443
50
48
  self.public_ips = DEFAULT_PUBLIC_URLS
@@ -68,14 +66,10 @@ class CaddyBlok:
68
66
  self,
69
67
  init: InitContext,
70
68
  name: NameService,
71
- certs: CerterService,
72
69
  ):
73
70
  for key, value in init.kwargs.items():
74
71
  setattr(self, key, value)
75
72
 
76
- self.cert_mount = certs.retrieve_certs_mount()
77
- self.depends_on = certs.retrieve_depends_on()
78
-
79
73
  self.gateway_network = name.retrieve_name().replace("-", "_")
80
74
 
81
75
  def build(
@@ -102,7 +96,7 @@ class CaddyBlok:
102
96
  }}
103
97
  """
104
98
 
105
- for protocol in ["http", "https"]:
99
+ for protocol in ["http"]:
106
100
  caddyfile += f"""
107
101
  {protocol}:// {{
108
102
  """
@@ -168,14 +162,11 @@ class CaddyBlok:
168
162
  ]
169
163
 
170
164
  volumes = ["./configs/Caddyfile:/etc/caddy/Caddyfile"]
171
- if self.cert_mount:
172
- volumes.append(f"{self.cert_mount}:/certs")
173
165
 
174
166
  caddy_container = {
175
167
  "image": "caddy:latest",
176
168
  "ports": [
177
169
  f"{self.http_port}:80",
178
- f"{self.https_port}:443",
179
170
  ]
180
171
  + exposed_ports_strings,
181
172
  "volumes": volumes,
@@ -190,10 +181,13 @@ class CaddyBlok:
190
181
  {"driver": "bridge", "name": self.gateway_network},
191
182
  )
192
183
 
193
- def expose(self, path_name: str, port: int, host: str, strip_prefix: bool = False):
184
+ def expose_service(
185
+ self, path_name: str, port: int, host: str, strip_prefix: bool = False
186
+ ):
194
187
  self.exposed_hosts[path_name] = ExposedHost(
195
188
  host=host, port=port, stip_prefix=strip_prefix
196
189
  )
190
+ return path_name
197
191
 
198
192
  def expose_mapped(self, path_name: str, port: int, host: str, to: str):
199
193
  self.exposed_to_hosts[path_name] = ExpostedToHost(host=host, port=port, to=to)
@@ -15,7 +15,7 @@ from blok.tree import YamlFile, Repo
15
15
  )
16
16
  class InternalDockerBlok:
17
17
  def __init__(self) -> None:
18
- self.host = "internal_docker"
18
+ self.host = "deployer"
19
19
 
20
20
  self.image = "jhnnsrs/deployer:nightly"
21
21
  self.instance_id = "INTERNAL_DOCKER"
@@ -32,9 +32,6 @@ class InternalDockerBlok:
32
32
 
33
33
  deps = init.dependencies
34
34
 
35
- if self.skip:
36
- return
37
-
38
35
  self._socket = socket.register_socket(self.host)
39
36
  self.gateway_host = gateway.get_internal_host()
40
37
  self.gateway_port = gateway.get_http_port()
@@ -48,8 +45,6 @@ class InternalDockerBlok:
48
45
  self.initialized = True
49
46
 
50
47
  def build(self, context: ExecutionContext):
51
- if self.skip:
52
- return
53
48
  db_service = {
54
49
  "image": self.image,
55
50
  "command": self.command,
@@ -51,10 +51,6 @@ class LocalLiveKitBlok:
51
51
  if self.skip:
52
52
  return
53
53
  db_service = {
54
- "labels": [
55
- "fakts.service=io.livekit.livekit",
56
- "fakts.builder=livekitio.livekit",
57
- ],
58
54
  "image": self.image,
59
55
  "command": self.command,
60
56
  "ports": [
@@ -139,6 +139,13 @@ class LokBlok:
139
139
  "read": "A generic read access",
140
140
  "write": "A generic write access",
141
141
  }
142
+ self.email_service: str = "smtp"
143
+ self.email_host: str = "NOT_SET"
144
+ self.email_port: int = 587
145
+ self.email_user: str = "NOT_SET"
146
+ self.email_password: str = "NOT_SET"
147
+ self.email_from: str = "NOT_SET"
148
+
142
149
  self.buckets = ["media"]
143
150
  self.key = None
144
151
  self.deployment_name = "default"
@@ -146,6 +153,31 @@ class LokBlok:
146
153
  self.preformed_redeem_tokens = [secrets.token_hex(16) for i in range(80)]
147
154
  self.registered_tokens = {}
148
155
  self.local_access = None
156
+ self.registered_instances = [
157
+ {
158
+ "identifier": "local-lok",
159
+ "service": "live.arkitekt.lok",
160
+ "aliases": [
161
+ {
162
+ "layer": "public",
163
+ "kind": "relative",
164
+ "path": "lok",
165
+ "challenge": "ht",
166
+ }
167
+ ],
168
+ },
169
+ {
170
+ "identifier": "local-datalayer",
171
+ "service": "live.arkitekt.s3",
172
+ "aliases": [
173
+ {
174
+ "layer": "public",
175
+ "kind": "relative",
176
+ "challenge": "minio/health/live",
177
+ }
178
+ ],
179
+ },
180
+ ]
149
181
 
150
182
  def retrieve_credentials(self) -> LokCredentials:
151
183
  return LokCredentials(
@@ -167,6 +199,21 @@ class LokBlok:
167
199
  def register_scopes(self, scopes_dict: Dict[str, str]) -> LokCredentials:
168
200
  self.scopes = self.scopes | scopes_dict
169
201
 
202
+ def register_service_on_subpath(self, service_name: str, subpath: str, htpath: str):
203
+ registered_instance = {
204
+ "identifier": f"local-{service_name}",
205
+ "service": service_name,
206
+ "aliases": [
207
+ {
208
+ "layer": "public",
209
+ "kind": "relative",
210
+ "path": subpath,
211
+ "challenge": htpath,
212
+ }
213
+ ],
214
+ }
215
+ self.registered_instances.append(registered_instance)
216
+
170
217
  def preflight(
171
218
  self,
172
219
  init: InitContext,
@@ -183,7 +230,11 @@ class LokBlok:
183
230
  assert self.public_key, "Public key is required"
184
231
  assert self.private_key, "Private key is required"
185
232
 
186
- gateway.expose("lok", 80, self.host, strip_prefix=False)
233
+ self.exposed_path = gateway.expose_service(
234
+ "lok", 80, self.host, strip_prefix=False
235
+ )
236
+ self.exposed_services = {"live.arkitekt.lok": {}}
237
+
187
238
  gateway.expose_mapped(".well-known", 80, self.host, "lok")
188
239
 
189
240
  self.secret_blok = secrets
@@ -206,13 +257,8 @@ class LokBlok:
206
257
  depends_on.append(self.s3_access.dependency)
207
258
 
208
259
  db_service = {
209
- "labels": [
210
- "fakts.service=live.arkitekt.lok",
211
- "fakts.builder=arkitekt.lok",
212
- ],
213
260
  "depends_on": depends_on,
214
261
  "volumes": [
215
- "/var/run/docker.sock:/var/run/docker.sock",
216
262
  "./configs/lok.yaml:/workspace/config.yaml",
217
263
  ],
218
264
  }
@@ -255,7 +301,22 @@ class LokBlok:
255
301
  "s3": asdict(self.s3_access),
256
302
  "token_expire_seconds": self.token_expiry_seconds,
257
303
  "force_script_name": "lok",
304
+ "layers": [
305
+ {
306
+ "identifier": "public",
307
+ "kind": "public",
308
+ }
309
+ ],
310
+ "instances": self.registered_instances,
258
311
  "csrf_trusted_origins": trusted_origins,
312
+ "email": {
313
+ "service": self.email_service,
314
+ "host": self.email_host,
315
+ "port": self.email_port,
316
+ "user": self.email_user,
317
+ "password": self.email_password,
318
+ "from": self.email_from,
319
+ },
259
320
  }
260
321
  )
261
322
 
@@ -64,7 +64,10 @@ class LovekitBlok:
64
64
 
65
65
  path_name = self.host
66
66
 
67
- gateway.expose(path_name, 80, self.host)
67
+ gateway_path = gateway.expose_service(path_name, 80, self.host)
68
+ lok.register_service_on_subpath(
69
+ self.get_blok_meta().service_identifier, gateway_path, "ht"
70
+ )
68
71
 
69
72
  postgress_access = db.register_db(self.host)
70
73
  redis_access = redis.register()
@@ -66,10 +66,13 @@ class MinioBlok:
66
66
  for bucket in buckets:
67
67
  bucket_name = self.name_service.retrieve_name()
68
68
  bucket_map[bucket] = bucket_name
69
- self.gateway_service.expose(bucket_name, 9000, self.host)
69
+ self.gateway_service.expose_service(bucket_name, 9000, self.host)
70
70
 
71
71
  self.buckets.extend(bucket_map.values())
72
72
 
73
+ # expose the health check endpoints
74
+ self.gateway_service.expose_service("minio/health/live", 9000, self.host)
75
+
73
76
  creds = S3Credentials(
74
77
  name=self.name_service.retrieve_name(),
75
78
  access_key=new_access_key,
@@ -126,7 +129,6 @@ class MinioBlok:
126
129
  },
127
130
  "image": self.minio_image,
128
131
  "volumes": ["./data:/data"],
129
- "labels": ["fakts.service=live.arkitekt.s3", "fakts.builder=arkitekt.s3"],
130
132
  }
131
133
 
132
134
  context.file_tree.set_nested("data", {})
@@ -38,10 +38,6 @@ class OllamaBlok:
38
38
  if self.skip:
39
39
  return
40
40
  db_service = {
41
- "labels": [
42
- "fakts.service=io.ollama.ollama",
43
- "fakts.builder=ollama.ollama",
44
- ],
45
41
  "image": self.image,
46
42
  "environment": {
47
43
  "OLLAMA_KEEP_ALIVE": "24h",
@@ -61,7 +61,6 @@ class PostgresBlok(BaseModel):
61
61
  "POSTGRES_PASSWORD": self.password,
62
62
  "POSTGRES_MULTIPLE_DATABASES": "",
63
63
  },
64
- "labels": ["fakts.service=live.arkitekt.postgres"],
65
64
  }
66
65
 
67
66
  if self.build_repo or self.dev:
@@ -73,7 +72,6 @@ class PostgresBlok(BaseModel):
73
72
  self.build_image["image"] = self.image
74
73
 
75
74
  def build(self, context: ExecutionContext):
76
-
77
75
  self.build_image["environment"]["POSTGRES_MULTIPLE_DATABASES"] = ",".join(
78
76
  self.registered_dbs.keys()
79
77
  )
@@ -8,9 +8,19 @@ from blok import blok, InitContext, service
8
8
 
9
9
  @service("live.arkitekt.gateway")
10
10
  class GatewayService(Protocol):
11
- def expose(
11
+ def expose_service(
12
12
  self, path_name: str, port: int, host: str, strip_prefix: bool = True
13
- ): ...
13
+ ) -> str:
14
+ """
15
+ Expose a service on the gateway.
16
+
17
+ :param path_name: The name of the path to expose.
18
+ :param port: The port to expose the service on.
19
+ :param host: The host to expose the service on.
20
+ :param strip_prefix: Whether to strip the prefix from the path.
21
+ :return: The name of the exposed service.
22
+ """
23
+ ...
14
24
 
15
25
  def retrieve_gateway_network(self): ...
16
26
 
@@ -18,3 +18,7 @@ class LokService(Protocol):
18
18
  def retrieve_labels(self, service_name: str, builder_name: str) -> list[str]: ...
19
19
 
20
20
  def register_scopes(self, scopes_dict: Dict[str, str]): ...
21
+
22
+ def register_service_on_subpath(
23
+ self, service_name: str, subpath: str, htpath: str = ""
24
+ ) -> None: ...
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "arkitekt-next"
3
- version = "0.15.0"
3
+ version = "0.16.0"
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"
@@ -25,7 +25,7 @@ cli = [
25
25
  ]
26
26
  alpaka = ["alpaka>=0.2.0"]
27
27
  kraph = ["kraph>=0.2.0"]
28
- mikro = ["mikro-next>=0.4.0"]
28
+ mikro = ["mikro-next>=0.6.0"]
29
29
  kabinet = ["kabinet>=0.4.0"]
30
30
  elektro = ["elektro>=0.5.0"]
31
31
  fluss = ["fluss-next>=0.2.0"]
@@ -39,7 +39,7 @@ all = [
39
39
  "semver>=3.0.1",
40
40
  "reaktion-next>=0.2.0",
41
41
  "rekuest-next>=0.7",
42
- "mikro-next>=0.4",
42
+ "mikro-next>=0.6",
43
43
  "kabinet>=0.2.0",
44
44
  "fluss-next>=0.2.0",
45
45
  "unlok-next>=1.1.1",
@@ -1,136 +0,0 @@
1
- from dataclasses import asdict
2
- from typing import Dict, Any
3
- import secrets
4
-
5
-
6
- from arkitekt_next.bloks.services.admin import AdminService
7
- from arkitekt_next.bloks.services.channel import ChannelService
8
- from arkitekt_next.bloks.services.config import ConfigService
9
- from arkitekt_next.bloks.services.db import DBService
10
- from arkitekt_next.bloks.services.gateway import GatewayService
11
- from arkitekt_next.bloks.services.lok import LokService
12
- from arkitekt_next.bloks.services.mount import MountService
13
- from arkitekt_next.bloks.services.ollama import OllamaService
14
- from arkitekt_next.bloks.services.redis import RedisService
15
- from arkitekt_next.bloks.services.s3 import S3Service
16
- from arkitekt_next.bloks.services.secret import SecretService
17
- from blok import blok, InitContext, ExecutionContext, Option
18
- from blok.bloks.services.dns import DnsService
19
- from blok.tree import Repo, YamlFile
20
- from arkitekt_next.bloks.base import BaseArkitektService
21
-
22
-
23
- @blok("live.arkitekt.alpaka", description="a container and app management service")
24
- class AlpakaBlok(BaseArkitektService):
25
- def get_builder(self):
26
- return "arkitekt.generic"
27
-
28
- def __init__(self) -> None:
29
- self.dev = False
30
- self.host = "alpaka"
31
- self.command = "bash run-debug.sh"
32
- self.repo = "https://github.com/arkitektio/alpaka-server"
33
- self.scopes = {
34
- "alpaka_pull": "Pull new Models",
35
- "alpaka_chat": "Add repositories to the database",
36
- }
37
- self.mount_repo = False
38
- self.build_repo = False
39
- self.buckets = ["media"]
40
- self.secret_key = secrets.token_hex(16)
41
- self.image = "jhnnsrs/alpaka:nightly"
42
-
43
- def preflight(
44
- self,
45
- lok: LokService,
46
- db: DBService,
47
- redis: RedisService,
48
- s3: S3Service,
49
- config: ConfigService,
50
- ollama: OllamaService,
51
- mount: MountService,
52
- admin: AdminService,
53
- secret: SecretService,
54
- gateway: GatewayService,
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
- lok.register_scopes(self.scopes)
66
-
67
- path_name = self.host
68
-
69
- gateway.expose(path_name, 80, self.host)
70
-
71
- postgress_access = db.register_db(self.host)
72
- redis_access = redis.register()
73
- lok_access = lok.retrieve_credentials()
74
- admin_access = admin.retrieve()
75
- minio_access = s3.create_buckets(self.buckets)
76
- lok_labels = lok.retrieve_labels("live.arkitekt.alpaka", self.get_builder())
77
- ollama_access = ollama.get_access()
78
-
79
- django_secret = secret.retrieve_secret()
80
-
81
- csrf_trusted_origins = []
82
-
83
- configuration = YamlFile(
84
- **{
85
- "db": asdict(postgress_access),
86
- "django": {
87
- "admin": asdict(admin_access),
88
- "debug": True,
89
- "hosts": ["*"],
90
- "secret_key": django_secret,
91
- },
92
- "redis": asdict(redis_access),
93
- "lok": asdict(lok_access),
94
- "s3": asdict(minio_access),
95
- "scopes": self.scopes,
96
- "force_script_name": path_name,
97
- "csrf_trusted_origins": csrf_trusted_origins,
98
- **self.get_additional_config(),
99
- }
100
- )
101
-
102
- config_mount = config.register_config(f"{self.host}.yaml", configuration)
103
-
104
- depends_on = []
105
-
106
- if redis_access.dependency:
107
- depends_on.append(redis_access.dependency)
108
-
109
- if postgress_access.dependency:
110
- depends_on.append(postgress_access.dependency)
111
-
112
- if minio_access.dependency:
113
- depends_on.append(minio_access.dependency)
114
-
115
- if ollama_access.dependency:
116
- depends_on.append(ollama_access.dependency)
117
-
118
- service = {
119
- "labels": lok_labels,
120
- "volumes": [f"{config_mount}:/workspace/config.yaml"],
121
- "depends_on": depends_on,
122
- }
123
-
124
- if mount_repo or dev:
125
- mount = mount.register_mount(self.host, Repo(repo))
126
- service["volumes"].extend([f"{mount}:/workspace"])
127
-
128
- if build_repo or dev:
129
- mount = mount.register_mount(self.host, Repo(repo))
130
- service["build"] = mount
131
- else:
132
- service["image"] = image
133
-
134
- service["command"] = command
135
-
136
- self.service = service
File without changes
File without changes