arkitekt-next 0.8.48__tar.gz → 0.8.49__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.
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/PKG-INFO +2 -2
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/__blok__.py +6 -2
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/arkitekt.py +24 -22
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/base.py +4 -2
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/gateway.py +18 -7
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/internal_docker.py +1 -5
- arkitekt_next-0.8.49/arkitekt_next/bloks/kraph.py +42 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/lok.py +2 -2
- arkitekt_next-0.8.49/arkitekt_next/bloks/ollama.py +92 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/orkestrator.py +57 -19
- arkitekt_next-0.8.49/arkitekt_next/bloks/self_signed.py +98 -0
- arkitekt_next-0.8.49/arkitekt_next/bloks/services/certer.py +14 -0
- arkitekt_next-0.8.49/arkitekt_next/bloks/services/ollama.py +16 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/kabinet/build.py +13 -1
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/pyproject.toml +2 -2
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/LICENSE +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/README.md +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/apps/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/apps/service/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/apps/service/fakts_next.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/apps/service/fakts_qt.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/apps/service/grant_registry.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/apps/service/herre.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/apps/service/herre_qt.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/apps/types.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/base_models.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/admin.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/config.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/fluss.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/kabinet.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/livekit.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/mikro.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/minio.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/mount.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/namegen.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/postgres.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/redis.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/rekuest.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/secret.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/admin.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/config.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/db.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/gateway.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/livekit.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/lok.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/mount.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/name.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/redis.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/s3.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/secret.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/services/socket.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/socket.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/bloks/tailscale.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/builders.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/call/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/call/local.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/call/main.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/call/remote.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/delegate/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/delegate/main.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/delegate/script.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/gen/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/gen/compile.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/gen/init.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/gen/main.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/gen/watch.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/init/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/init/main.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/inspect/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/inspect/main.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/inspect/requirements.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/inspect/templates.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/inspect/variables.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/kabinet/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/kabinet/init.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/kabinet/main.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/kabinet/publish.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/kabinet/stage.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/kabinet/utils.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/kabinet/validate.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/kabinet/wizard.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/manifest/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/manifest/inspect.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/manifest/main.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/manifest/scopes.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/manifest/version.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/manifest/wizard.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/run/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/run/dev.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/run/main.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/run/prod.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/run/utils.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/configs/base.yaml +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/constants.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/dockerfiles/vanilla.dockerfile +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/errors.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/inspect.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/io.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/main.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/options.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/fluss.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/gucker.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/kabinet.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/kluster.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/konviktion.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/kuay.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/mikro.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/mikro_next.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/napari.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/omero_ark.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/port.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/rekuest.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/rekuest_next.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/unlok.schema.graphql +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/templates/filter.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/templates/simple.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/texts.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/types.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/ui.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/utils.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/validators.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/vars.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/versions/v1.yaml +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/constants.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/__init__.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/assets/dark/gear.png +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/assets/dark/green pulse.gif +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/assets/dark/orange pulse.gif +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/assets/dark/pink pulse.gif +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/assets/dark/red pulse.gif +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/assets/light/gear.png +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/assets/light/green pulse.gif +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/assets/light/orange pulse.gif +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/assets/light/pink pulse.gif +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/assets/light/red pulse.gif +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/builders.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/magic_bar.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/types.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/utils.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/service_registry.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/tqdm.py +0 -0
- {arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: arkitekt-next
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.49
|
|
4
4
|
Summary: client for the arkitekt_next platform
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: jhnnsrs
|
|
@@ -18,7 +18,7 @@ Provides-Extra: blok
|
|
|
18
18
|
Provides-Extra: cli
|
|
19
19
|
Provides-Extra: extended
|
|
20
20
|
Provides-Extra: stream
|
|
21
|
-
Requires-Dist: blok (>=0.0.
|
|
21
|
+
Requires-Dist: blok (>=0.0.20) ; (python_version >= "3.9" and python_version < "4.0") and (extra == "blok")
|
|
22
22
|
Requires-Dist: cryptography (>=40.0.8) ; (python_version >= "3.8" and python_version < "4.0") and (extra == "blok")
|
|
23
23
|
Requires-Dist: dokker (>=1.0.0)
|
|
24
24
|
Requires-Dist: fakts-next (>=1.0.3)
|
|
@@ -4,7 +4,7 @@ from arkitekt_next.bloks.mikro import MikroBlok
|
|
|
4
4
|
from arkitekt_next.bloks.fluss import FlussBlok
|
|
5
5
|
from arkitekt_next.bloks.orkestrator import OrkestratorBlok
|
|
6
6
|
from arkitekt_next.bloks.redis import RedisBlok
|
|
7
|
-
from arkitekt_next.bloks.gateway import
|
|
7
|
+
from arkitekt_next.bloks.gateway import CaddyBlok
|
|
8
8
|
from arkitekt_next.bloks.livekit import LocalLiveKitBlok
|
|
9
9
|
from arkitekt_next.bloks.postgres import PostgresBlok
|
|
10
10
|
from arkitekt_next.bloks.minio import MinioBlok
|
|
@@ -18,6 +18,8 @@ from arkitekt_next.bloks.rekuest import RekuestBlok
|
|
|
18
18
|
from arkitekt_next.bloks.tailscale import TailscaleBlok
|
|
19
19
|
from arkitekt_next.bloks.secret import SecretBlok
|
|
20
20
|
from arkitekt_next.bloks.namegen import PreformedNamesBlok
|
|
21
|
+
from arkitekt_next.bloks.ollama import OllamaBlok
|
|
22
|
+
from arkitekt_next.bloks.self_signed import SelfSignedBlok
|
|
21
23
|
|
|
22
24
|
|
|
23
25
|
def get_bloks():
|
|
@@ -27,11 +29,13 @@ def get_bloks():
|
|
|
27
29
|
MikroBlok(),
|
|
28
30
|
FlussBlok(),
|
|
29
31
|
RedisBlok(),
|
|
30
|
-
|
|
32
|
+
CaddyBlok(),
|
|
31
33
|
LocalLiveKitBlok(),
|
|
32
34
|
PostgresBlok(),
|
|
33
35
|
MinioBlok(),
|
|
36
|
+
OllamaBlok(),
|
|
34
37
|
LokBlok(),
|
|
38
|
+
SelfSignedBlok(),
|
|
35
39
|
KabinetBlok(),
|
|
36
40
|
MountBlok(),
|
|
37
41
|
ConfigBlok(),
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
+
from typing import Any, Dict, Optional
|
|
2
|
+
|
|
1
3
|
from pydantic import BaseModel
|
|
2
|
-
|
|
4
|
+
|
|
5
|
+
from arkitekt_next.bloks.kraph import KraphBlok
|
|
3
6
|
from arkitekt_next.bloks.tailscale import TailscaleBlok
|
|
4
|
-
from blok import
|
|
5
|
-
|
|
6
|
-
from .mikro import MikroBlok
|
|
7
|
-
from .kabinet import KabinetBlok
|
|
8
|
-
from .rekuest import RekuestBlok
|
|
7
|
+
from blok import InitContext, Panel, Renderer, blok
|
|
8
|
+
|
|
9
9
|
from .fluss import FlussBlok
|
|
10
|
-
from .gateway import GatewayBlok
|
|
11
10
|
from .internal_docker import InternalDockerBlok
|
|
11
|
+
from .kabinet import KabinetBlok
|
|
12
|
+
from .livekit import LocalLiveKitBlok
|
|
13
|
+
from .mikro import MikroBlok
|
|
12
14
|
from .orkestrator import OrkestratorBlok
|
|
13
|
-
from
|
|
15
|
+
from .rekuest import RekuestBlok
|
|
16
|
+
from .ollama import OllamaBlok
|
|
14
17
|
|
|
15
18
|
|
|
16
19
|
class AdminCredentials(BaseModel):
|
|
@@ -19,8 +22,20 @@ class AdminCredentials(BaseModel):
|
|
|
19
22
|
email: str
|
|
20
23
|
|
|
21
24
|
|
|
22
|
-
@blok("live.arkitekt"
|
|
25
|
+
@blok("live.arkitekt", dependencies=[
|
|
26
|
+
MikroBlok.as_dependency(True, True),
|
|
27
|
+
KabinetBlok.as_dependency(True, True),
|
|
28
|
+
RekuestBlok.as_dependency(True, True),
|
|
29
|
+
FlussBlok.as_dependency(True, True),
|
|
30
|
+
InternalDockerBlok.as_dependency(True, True),
|
|
31
|
+
OrkestratorBlok.as_dependency(True, True),
|
|
32
|
+
KraphBlok.as_dependency(True, False),
|
|
33
|
+
LocalLiveKitBlok.as_dependency(True, False),
|
|
34
|
+
TailscaleBlok.as_dependency(True, False),
|
|
35
|
+
OllamaBlok.as_dependency(True, False),
|
|
36
|
+
])
|
|
23
37
|
class ArkitektBlok:
|
|
38
|
+
|
|
24
39
|
def entry(self, renderer: Renderer):
|
|
25
40
|
renderer.render(
|
|
26
41
|
Panel(
|
|
@@ -31,19 +46,6 @@ class ArkitektBlok:
|
|
|
31
46
|
)
|
|
32
47
|
)
|
|
33
48
|
|
|
34
|
-
def preflight(
|
|
35
|
-
self,
|
|
36
|
-
gateway: GatewayBlok,
|
|
37
|
-
livekit: Optional[LocalLiveKitBlok] = None,
|
|
38
|
-
mikro: Optional[MikroBlok] = None,
|
|
39
|
-
kabinet: Optional[KabinetBlok] = None,
|
|
40
|
-
rekuest: Optional[RekuestBlok] = None,
|
|
41
|
-
fluss: Optional[FlussBlok] = None,
|
|
42
|
-
internal_engine: Optional[InternalDockerBlok] = None,
|
|
43
|
-
scale: Optional[TailscaleBlok] = None,
|
|
44
|
-
orkestrator: Optional[OrkestratorBlok] = None,
|
|
45
|
-
):
|
|
46
|
-
pass
|
|
47
49
|
|
|
48
50
|
def build(self, cwd):
|
|
49
51
|
pass
|
|
@@ -94,7 +94,9 @@ class BaseArkitektService:
|
|
|
94
94
|
self.get_blok_meta().service_identifier, self.get_builder()
|
|
95
95
|
)
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
django_secret = secret.retrieve_secret()
|
|
98
|
+
|
|
99
|
+
dns_result = dns.get_dns_result()
|
|
98
100
|
|
|
99
101
|
csrf_trusted_origins = []
|
|
100
102
|
for hostname in dns_result.hostnames:
|
|
@@ -108,7 +110,7 @@ class BaseArkitektService:
|
|
|
108
110
|
"admin": asdict(admin_access),
|
|
109
111
|
"debug": True,
|
|
110
112
|
"hosts": ["*"],
|
|
111
|
-
"secret_key":
|
|
113
|
+
"secret_key": django_secret,
|
|
112
114
|
},
|
|
113
115
|
"redis": asdict(redis_access),
|
|
114
116
|
"lok": asdict(lok_access),
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
from arkitekt_next.bloks.services.certer import CerterService
|
|
1
2
|
from arkitekt_next.bloks.services.name import NameService
|
|
2
3
|
from blok import blok, InitContext, ExecutionContext, Option
|
|
3
4
|
from blok.tree import YamlFile, Repo
|
|
4
5
|
from pydantic import BaseModel
|
|
5
|
-
from typing import Dict, Any
|
|
6
|
+
from typing import Dict, Any, Optional
|
|
6
7
|
|
|
7
8
|
from blok import blok, InitContext
|
|
8
9
|
from blok.bloks.services.dns import DnsService
|
|
@@ -34,7 +35,7 @@ class ExposedPort(BaseModel):
|
|
|
34
35
|
@blok(
|
|
35
36
|
"live.arkitekt.gateway", description="A gateway for exposing services on the host"
|
|
36
37
|
)
|
|
37
|
-
class
|
|
38
|
+
class CaddyBlok:
|
|
38
39
|
def __init__(self) -> None:
|
|
39
40
|
self.exposed_hosts = {}
|
|
40
41
|
self.exposed_to_hosts = {}
|
|
@@ -47,6 +48,8 @@ class GatewayBlok:
|
|
|
47
48
|
self.https_port = 443
|
|
48
49
|
self.public_ips = DEFAULT_PUBLIC_URLS
|
|
49
50
|
self.public_hosts = DEFAULT_PUBLIC_HOSTS
|
|
51
|
+
self.cert_mount = None
|
|
52
|
+
self.depends_on = []
|
|
50
53
|
|
|
51
54
|
def get_internal_host(self):
|
|
52
55
|
return "caddy"
|
|
@@ -60,7 +63,7 @@ class GatewayBlok:
|
|
|
60
63
|
def retrieve_gateway_network(self):
|
|
61
64
|
return self.gateway_network
|
|
62
65
|
|
|
63
|
-
def preflight(self, init: InitContext, dns: DnsService, name: NameService):
|
|
66
|
+
def preflight(self, init: InitContext, dns: DnsService, name: NameService, certer: Optional[CerterService] = None):
|
|
64
67
|
for key, value in init.kwargs.items():
|
|
65
68
|
setattr(self, key, value)
|
|
66
69
|
|
|
@@ -68,6 +71,11 @@ class GatewayBlok:
|
|
|
68
71
|
self.public_hosts = dns.get_dns_result().hostnames
|
|
69
72
|
self.gateway_network = name.retrieve_name().replace("-", "_")
|
|
70
73
|
|
|
74
|
+
if certer is not None:
|
|
75
|
+
self.cert_mount = certer.retrieve_certs_mount()
|
|
76
|
+
self.depends_on = certer.retrieve_depends_on()
|
|
77
|
+
|
|
78
|
+
|
|
71
79
|
def build(
|
|
72
80
|
self,
|
|
73
81
|
context: ExecutionContext,
|
|
@@ -153,22 +161,25 @@ class GatewayBlok:
|
|
|
153
161
|
|
|
154
162
|
context.file_tree.set_nested("configs", "Caddyfile", caddyfile)
|
|
155
163
|
|
|
156
|
-
caddy_depends_on =
|
|
157
|
-
if self.with_certer:
|
|
158
|
-
caddy_depends_on.append("certer")
|
|
164
|
+
caddy_depends_on = self.depends_on
|
|
159
165
|
|
|
160
166
|
exposed_ports_strings = [
|
|
161
167
|
f"{port.port}:{port.port}" for port in self.exposed_ports.values()
|
|
162
168
|
]
|
|
163
169
|
|
|
170
|
+
|
|
171
|
+
volumes = ["./configs/Caddyfile:/etc/caddy/Caddyfile"]
|
|
172
|
+
if self.cert_mount:
|
|
173
|
+
volumes.append(f"{self.cert_mount}:/certs")
|
|
174
|
+
|
|
164
175
|
caddy_container = {
|
|
165
176
|
"image": "caddy:latest",
|
|
166
|
-
"volumes": ["./configs/Caddyfile:/etc/caddy/Caddyfile", "./certs:/certs"],
|
|
167
177
|
"ports": [
|
|
168
178
|
f"{self.http_port}:80",
|
|
169
179
|
f"{self.https_port}:443",
|
|
170
180
|
]
|
|
171
181
|
+ exposed_ports_strings,
|
|
182
|
+
"volumes": volumes,
|
|
172
183
|
"depends_on": caddy_depends_on,
|
|
173
184
|
"networks": [self.gateway_network, "default"],
|
|
174
185
|
}
|
|
@@ -17,7 +17,7 @@ class InternalDockerBlok:
|
|
|
17
17
|
def __init__(self) -> None:
|
|
18
18
|
self.host = "internal_docker"
|
|
19
19
|
|
|
20
|
-
self.image = "jhnnsrs/deployer:
|
|
20
|
+
self.image = "jhnnsrs/deployer:nightly"
|
|
21
21
|
self.instance_id = "INTERNAL_DOCKER"
|
|
22
22
|
|
|
23
23
|
def preflight(
|
|
@@ -51,10 +51,6 @@ class InternalDockerBlok:
|
|
|
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
|
"volumes": [f"{self._socket}:/var/run/docker.sock"],
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import click
|
|
2
|
+
from pydantic import BaseModel
|
|
3
|
+
from typing import Dict, Any
|
|
4
|
+
import yaml
|
|
5
|
+
import secrets
|
|
6
|
+
from blok import blok, InitContext
|
|
7
|
+
|
|
8
|
+
from blok import blok, InitContext, ExecutionContext, Option
|
|
9
|
+
from blok.tree import YamlFile, Repo
|
|
10
|
+
from arkitekt_next.bloks.base import BaseArkitektService
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AccessCredentials(BaseModel):
|
|
14
|
+
password: str
|
|
15
|
+
username: str
|
|
16
|
+
host: str
|
|
17
|
+
port: str
|
|
18
|
+
db_name: str
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@blok("live.arkitekt.kraph", description="Kraph allows you to interconnect structures in a graph database")
|
|
22
|
+
class KraphBlok(BaseArkitektService):
|
|
23
|
+
def __init__(self) -> None:
|
|
24
|
+
self.dev = False
|
|
25
|
+
self.host = "kraph"
|
|
26
|
+
self.command = "bash run-debug.sh"
|
|
27
|
+
self.repo = "https://github.com/arkitektio/kraph-server"
|
|
28
|
+
self.scopes = {
|
|
29
|
+
"kraph_read": "Read from the graph database",
|
|
30
|
+
"mikro_write": "Write image to the database",
|
|
31
|
+
}
|
|
32
|
+
self.image = "jhnnsrs/kraph:nightly"
|
|
33
|
+
self.mount_repo = False
|
|
34
|
+
self.build_repo = False
|
|
35
|
+
self.buckets = ["media"]
|
|
36
|
+
self.secret_key = secrets.token_hex(16)
|
|
37
|
+
|
|
38
|
+
def get_builder(self):
|
|
39
|
+
return "arkitekt.generic"
|
|
40
|
+
|
|
41
|
+
def build(self, context: ExecutionContext):
|
|
42
|
+
context.docker_compose.set_nested("services", self.host, self.service)
|
|
@@ -203,8 +203,8 @@ class LokBlok:
|
|
|
203
203
|
|
|
204
204
|
db_service = {
|
|
205
205
|
"labels": [
|
|
206
|
-
"
|
|
207
|
-
"
|
|
206
|
+
"fakts.service=live.arkitekt.lok",
|
|
207
|
+
"fakts.builder=arkitekt.lok",
|
|
208
208
|
],
|
|
209
209
|
"depends_on": depends_on,
|
|
210
210
|
"volumes": [
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
from typing import Dict, Any
|
|
2
|
+
import secrets
|
|
3
|
+
|
|
4
|
+
from arkitekt_next.bloks.services.gateway import GatewayService
|
|
5
|
+
from arkitekt_next.bloks.services.ollama import OllamaService, OllamaCredentials
|
|
6
|
+
from blok import blok, InitContext, ExecutionContext, Option
|
|
7
|
+
from blok.tree import YamlFile, Repo
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@blok(OllamaService, description="a self-hosted Ollama LLM server")
|
|
11
|
+
class OllamaBlok:
|
|
12
|
+
def __init__(self) -> None:
|
|
13
|
+
self.host = "ollama"
|
|
14
|
+
self.image = "ollama/ollama:latest"
|
|
15
|
+
self.port = 11434
|
|
16
|
+
self.skip = False
|
|
17
|
+
self.gpu = bool
|
|
18
|
+
|
|
19
|
+
def preflight(self, init: InitContext, gateway: GatewayService):
|
|
20
|
+
for key, value in init.kwargs.items():
|
|
21
|
+
setattr(self, key, value)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
if self.skip:
|
|
25
|
+
return
|
|
26
|
+
|
|
27
|
+
gateway.expose_port_to(self.port, self.host, 11434, False)
|
|
28
|
+
|
|
29
|
+
self.initialized = True
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def build(self, context: ExecutionContext):
|
|
33
|
+
if self.skip:
|
|
34
|
+
return
|
|
35
|
+
db_service = {
|
|
36
|
+
"labels": [
|
|
37
|
+
"fakts.service=io.ollama.ollama",
|
|
38
|
+
"fakts.builder=ollama.ollama",
|
|
39
|
+
],
|
|
40
|
+
"image": self.image,
|
|
41
|
+
"environment": {
|
|
42
|
+
"OLLAMA_KEEP_ALIVE": "24h",
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if self.gpu:
|
|
47
|
+
db_service["deploy"] = {
|
|
48
|
+
"resources": {
|
|
49
|
+
"reservations": {
|
|
50
|
+
"devices": [
|
|
51
|
+
{
|
|
52
|
+
"driver": "nvidia",
|
|
53
|
+
"count": 1,
|
|
54
|
+
"capabilities": ["gpu"],
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
context.docker_compose.set_nested("services", self.host, db_service)
|
|
63
|
+
|
|
64
|
+
def get_options(self):
|
|
65
|
+
with_host = Option(
|
|
66
|
+
subcommand="host",
|
|
67
|
+
help="The fakts url for connection",
|
|
68
|
+
default=self.host,
|
|
69
|
+
)
|
|
70
|
+
with_skip = Option(
|
|
71
|
+
subcommand="skip",
|
|
72
|
+
help="The fakts_next url for connection",
|
|
73
|
+
default=False,
|
|
74
|
+
type=bool,
|
|
75
|
+
)
|
|
76
|
+
with_gpu = Option(
|
|
77
|
+
subcommand="gpu",
|
|
78
|
+
help="Whether to use a gpu",
|
|
79
|
+
default=False,
|
|
80
|
+
type=self.gpu,
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
return [
|
|
84
|
+
with_host,
|
|
85
|
+
with_skip,
|
|
86
|
+
with_gpu,
|
|
87
|
+
]
|
|
88
|
+
|
|
89
|
+
def __str__(self) -> str:
|
|
90
|
+
return (
|
|
91
|
+
f"LiveKitBlok(host={self.host}, command={self.command}, image={self.image})"
|
|
92
|
+
)
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
from typing import Dict, Any
|
|
2
2
|
import secrets
|
|
3
|
+
from arkitekt_next.bloks.services.gateway import GatewayService
|
|
3
4
|
from arkitekt_next.bloks.services.mount import MountService
|
|
4
5
|
from blok import blok, InitContext, ExecutionContext, Option, Command
|
|
6
|
+
from blok.bloks.services.dns import DnsService
|
|
5
7
|
from blok.bloks.services.vscode import VsCodeService
|
|
6
8
|
from blok.tree import Repo, YamlFile
|
|
7
9
|
|
|
@@ -14,6 +16,8 @@ class OrkestratorBlok:
|
|
|
14
16
|
def __init__(self) -> None:
|
|
15
17
|
self.dev = False
|
|
16
18
|
self.disable = True
|
|
19
|
+
self.host = "orkestrator"
|
|
20
|
+
self.path_name = "orkestrator"
|
|
17
21
|
self.repo = "https://github.com/arkitektio/orkestrator-next"
|
|
18
22
|
self.build_command = ["yarn"]
|
|
19
23
|
self.up_command = ["yarn", "start"]
|
|
@@ -21,36 +25,58 @@ class OrkestratorBlok:
|
|
|
21
25
|
def preflight(
|
|
22
26
|
self,
|
|
23
27
|
init: InitContext,
|
|
28
|
+
gateway: GatewayService,
|
|
24
29
|
mount: MountService,
|
|
25
30
|
vscode: VsCodeService | None = None,
|
|
26
31
|
):
|
|
27
32
|
for key, value in init.kwargs.items():
|
|
28
33
|
setattr(self, key, value)
|
|
29
34
|
|
|
30
|
-
if self.disable
|
|
35
|
+
if self.disable:
|
|
31
36
|
return
|
|
32
|
-
|
|
37
|
+
|
|
38
|
+
if not self.dev:
|
|
39
|
+
gateway.expose(self.path_name, 80, self.host)
|
|
33
40
|
|
|
34
|
-
if vscode is not None:
|
|
35
|
-
vscode.register_task(
|
|
36
|
-
"Run Orkestrator",
|
|
37
|
-
"shell",
|
|
38
|
-
"yarn",
|
|
39
|
-
["start"],
|
|
40
|
-
{"cwd": f"{self.mount}"},
|
|
41
|
-
)
|
|
42
|
-
vscode.register_task(
|
|
43
|
-
"Build Orkestrator",
|
|
44
|
-
"shell",
|
|
45
|
-
"yarn",
|
|
46
|
-
[],
|
|
47
|
-
{"cwd": f"{self.mount}"},
|
|
48
|
-
)
|
|
49
41
|
|
|
50
|
-
|
|
42
|
+
self.service = {
|
|
43
|
+
"image": "jhnnsrs/orkestrator_next:nightly",
|
|
44
|
+
"environment": {
|
|
45
|
+
"PATH_NAME": self.path_name,
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return
|
|
50
|
+
|
|
51
|
+
else:
|
|
52
|
+
|
|
53
|
+
self.mount = mount.register_mount("orkestrator", Repo(self.repo))
|
|
54
|
+
|
|
55
|
+
if vscode is not None:
|
|
56
|
+
vscode.register_task(
|
|
57
|
+
"Run Orkestrator",
|
|
58
|
+
"shell",
|
|
59
|
+
"yarn",
|
|
60
|
+
["start"],
|
|
61
|
+
{"cwd": f"{self.mount}"},
|
|
62
|
+
)
|
|
63
|
+
vscode.register_task(
|
|
64
|
+
"Build Orkestrator",
|
|
65
|
+
"shell",
|
|
66
|
+
"yarn",
|
|
67
|
+
[],
|
|
68
|
+
{"cwd": f"{self.mount}"},
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
self.initialized = True
|
|
51
72
|
|
|
52
73
|
def build(self, context: ExecutionContext):
|
|
53
|
-
if self.disable
|
|
74
|
+
if self.disable:
|
|
75
|
+
return
|
|
76
|
+
|
|
77
|
+
if self.dev:
|
|
78
|
+
context.docker_compose.set_nested("services", self.host, self.service)
|
|
79
|
+
|
|
54
80
|
return
|
|
55
81
|
|
|
56
82
|
context.install_commands.set_nested(
|
|
@@ -77,9 +103,21 @@ class OrkestratorBlok:
|
|
|
77
103
|
help="Should we mount orkestrator as dev?",
|
|
78
104
|
default=self.dev,
|
|
79
105
|
)
|
|
106
|
+
with_path_name = Option(
|
|
107
|
+
subcommand="path_name",
|
|
108
|
+
help="The path name for the orkestrator service",
|
|
109
|
+
default=self.path_name,
|
|
110
|
+
)
|
|
111
|
+
with_host = Option(
|
|
112
|
+
subcommand="host",
|
|
113
|
+
help="The host for the orkestrator service",
|
|
114
|
+
default=self.host,
|
|
115
|
+
)
|
|
80
116
|
|
|
81
117
|
return [
|
|
82
118
|
with_dev,
|
|
83
119
|
with_repos,
|
|
120
|
+
with_path_name,
|
|
84
121
|
with_disable,
|
|
122
|
+
with_host,
|
|
85
123
|
]
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
from arkitekt_next.bloks.services.certer import CerterService
|
|
2
|
+
from arkitekt_next.bloks.services.name import NameService
|
|
3
|
+
from blok import blok, InitContext, ExecutionContext, Option
|
|
4
|
+
from blok.tree import YamlFile, Repo
|
|
5
|
+
from pydantic import BaseModel
|
|
6
|
+
from typing import Dict, Any, Optional
|
|
7
|
+
|
|
8
|
+
from blok import blok, InitContext
|
|
9
|
+
from blok.bloks.services.dns import DnsService
|
|
10
|
+
|
|
11
|
+
DEFAULT_PUBLIC_URLS = ["127.0.0.1"]
|
|
12
|
+
DEFAULT_PUBLIC_HOSTS = ["localhost"]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ExposedHost(BaseModel):
|
|
16
|
+
host: str
|
|
17
|
+
port: int
|
|
18
|
+
stip_prefix: bool = True
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class ExpostedToHost(BaseModel):
|
|
22
|
+
port: int
|
|
23
|
+
host: str
|
|
24
|
+
to: str
|
|
25
|
+
tls: bool = False
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class ExposedPort(BaseModel):
|
|
29
|
+
port: int
|
|
30
|
+
host: str
|
|
31
|
+
tls: bool = False
|
|
32
|
+
to: int
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@blok(
|
|
36
|
+
"live.arkitekt.certer", description="A self-signed certificate generator"
|
|
37
|
+
)
|
|
38
|
+
class SelfSignedBlok:
|
|
39
|
+
def __init__(self) -> None:
|
|
40
|
+
self.host = "certer"
|
|
41
|
+
self.certer_image = "jhnnsrs/certer:next"
|
|
42
|
+
self.certs_mount = "./certs"
|
|
43
|
+
|
|
44
|
+
def retrieve_certs_mount(self):
|
|
45
|
+
return self.certs_mount
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def retrieve_depends_on(self):
|
|
49
|
+
return ["certer"]
|
|
50
|
+
|
|
51
|
+
def preflight(self, init: InitContext, dns: DnsService):
|
|
52
|
+
for key, value in init.kwargs.items():
|
|
53
|
+
setattr(self, key, value)
|
|
54
|
+
|
|
55
|
+
self.public_ips = dns.get_dns_result().ip_addresses
|
|
56
|
+
self.public_hosts = dns.get_dns_result().hostnames
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def build(
|
|
60
|
+
self,
|
|
61
|
+
context: ExecutionContext,
|
|
62
|
+
):
|
|
63
|
+
|
|
64
|
+
context.file_tree.set_nested("certs", {})
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
certer_container = {
|
|
68
|
+
"image": self.certer_image,
|
|
69
|
+
"volumes": ["./certs:/certs"],
|
|
70
|
+
"environment": {
|
|
71
|
+
"DOMAIN_NAMES": ",".join(self.public_hosts),
|
|
72
|
+
"IP_ADDRESSED": ",".join(self.public_ips),
|
|
73
|
+
},
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
context.docker_compose.set_nested("services", self.host, certer_container)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def get_options(self):
|
|
81
|
+
with_public_urls = Option(
|
|
82
|
+
subcommand="public_url",
|
|
83
|
+
help="Which public urls to use",
|
|
84
|
+
type=str,
|
|
85
|
+
multiple=True,
|
|
86
|
+
default=DEFAULT_PUBLIC_URLS,
|
|
87
|
+
show_default=True,
|
|
88
|
+
)
|
|
89
|
+
with_public_services = Option(
|
|
90
|
+
subcommand="public_hosts",
|
|
91
|
+
help="Which public hosts to use",
|
|
92
|
+
type=str,
|
|
93
|
+
multiple=True,
|
|
94
|
+
default=DEFAULT_PUBLIC_HOSTS,
|
|
95
|
+
show_default=True,
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
return [with_public_urls, with_public_services]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from blok import blok, InitContext, ExecutionContext, Option
|
|
2
|
+
from blok.tree import YamlFile, Repo
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from typing import Dict, Any, Protocol
|
|
5
|
+
|
|
6
|
+
from blok import blok, InitContext, service
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@service("live.arkitekt.certer", description="Generate HTTPS certificates for services")
|
|
10
|
+
class CerterService(Protocol):
|
|
11
|
+
|
|
12
|
+
def retrieve_certs_mount(self) -> str: ...
|
|
13
|
+
|
|
14
|
+
def retrieve_depends_on(self) -> list[str]: ...
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from typing import Dict, Any, Protocol
|
|
2
|
+
from blok import blok, InitContext, Option
|
|
3
|
+
from blok import service
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class OllamaCredentials:
|
|
9
|
+
api_key: str
|
|
10
|
+
api_secret: str
|
|
11
|
+
api_url: str
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@service("io.ollama.ollama", description=" A self-hosted ollama LLM server")
|
|
15
|
+
class OllamaService(Protocol):
|
|
16
|
+
pass
|
|
@@ -233,8 +233,16 @@ def get_flavours(ctx: Context, select: Optional[str] = None) -> Dict[str, Flavou
|
|
|
233
233
|
is_flag=True,
|
|
234
234
|
default=False,
|
|
235
235
|
)
|
|
236
|
+
@click.option(
|
|
237
|
+
"--tag",
|
|
238
|
+
"-t",
|
|
239
|
+
help="Tag the build with a specific tag",
|
|
240
|
+
type=str,
|
|
241
|
+
default=None,
|
|
242
|
+
required=False,
|
|
243
|
+
)
|
|
236
244
|
@click.pass_context
|
|
237
|
-
def build(ctx: Context, flavour: str, no_inspect: bool) -> None:
|
|
245
|
+
def build(ctx: Context, flavour: str, no_inspect: bool, tag: str = None) -> None:
|
|
238
246
|
"""Builds the arkitekt_next app to docker"""
|
|
239
247
|
|
|
240
248
|
manifest = get_manifest(ctx)
|
|
@@ -262,6 +270,10 @@ def build(ctx: Context, flavour: str, no_inspect: bool) -> None:
|
|
|
262
270
|
|
|
263
271
|
build_tag = build_flavour(key, flavour)
|
|
264
272
|
|
|
273
|
+
if tag:
|
|
274
|
+
subprocess.run(["docker", "tag", build_tag, tag], check=True)
|
|
275
|
+
|
|
276
|
+
|
|
265
277
|
inspection = None
|
|
266
278
|
if not no_inspect:
|
|
267
279
|
inspection = inspect_build(build_tag)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "arkitekt-next"
|
|
3
|
-
version = "0.8.
|
|
3
|
+
version = "0.8.49"
|
|
4
4
|
description = "client for the arkitekt_next platform"
|
|
5
5
|
authors = ["jhnnsrs <jhnnsrs@gmail.com>"]
|
|
6
6
|
license = "MIT"
|
|
@@ -26,7 +26,7 @@ semver = { version = ">=3.0.1", optional = true }
|
|
|
26
26
|
dokker = ">=1.0.0"
|
|
27
27
|
koil = ">=1.0.3"
|
|
28
28
|
netifaces = { version = ">=0.11.0", python = "^3.8", optional = true }
|
|
29
|
-
blok = { version = ">=0.0.
|
|
29
|
+
blok = { version = ">=0.0.20", python = "^3.9", optional = true }
|
|
30
30
|
cryptography = { version = ">=40.0.8", python = "^3.8", optional = true }
|
|
31
31
|
namegenerator = { version = ">=1.0.6", python = "^3.8", optional = true }
|
|
32
32
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/delegate/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/inspect/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/inspect/requirements.py
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/inspect/templates.py
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/inspect/variables.py
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/kabinet/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/kabinet/validate.py
RENAMED
|
File without changes
|
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/manifest/__init__.py
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/manifest/inspect.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/commands/manifest/version.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/dockerfiles/vanilla.dockerfile
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/fluss.schema.graphql
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/gucker.schema.graphql
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/kabinet.schema.graphql
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/kluster.schema.graphql
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/konviktion.schema.graphql
RENAMED
|
File without changes
|
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/mikro.schema.graphql
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/mikro_next.schema.graphql
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/napari.schema.graphql
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/omero_ark.schema.graphql
RENAMED
|
File without changes
|
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/rekuest.schema.graphql
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/rekuest_next.schema.graphql
RENAMED
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/cli/schemas/unlok.schema.graphql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arkitekt_next-0.8.48 → arkitekt_next-0.8.49}/arkitekt_next/qt/assets/light/orange pulse.gif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|