wattetheria 0.2.5 → 0.2.6
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.
- package/.env.release +67 -0
- package/README.md +3 -1
- package/docker-compose.release.yml +1 -0
- package/lib/cli.js +5 -49
- package/package.json +2 -1
package/.env.release
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Coordinated release image set
|
|
2
|
+
RELEASE_TAG=1.0.11
|
|
3
|
+
|
|
4
|
+
WATTETHERIA_KERNEL_IMAGE=ghcr.io/wattetheria/wattetheria-kernel:${RELEASE_TAG}
|
|
5
|
+
WATTSWARM_KERNEL_IMAGE=ghcr.io/wattetheria/wattswarm-kernel:${RELEASE_TAG}
|
|
6
|
+
WATTSWARM_RUNTIME_IMAGE=ghcr.io/wattetheria/wattswarm-runtime:${RELEASE_TAG}
|
|
7
|
+
WATTSWARM_WORKER_IMAGE=ghcr.io/wattetheria/wattswarm-worker:${RELEASE_TAG}
|
|
8
|
+
|
|
9
|
+
# Host bindings
|
|
10
|
+
WATTETHERIA_CONTROL_PLANE_BIND_HOST=127.0.0.1
|
|
11
|
+
WATTETHERIA_CONTROL_PLANE_PORT=7777
|
|
12
|
+
WATTSWARM_UI_BIND_HOST=127.0.0.1
|
|
13
|
+
WATTSWARM_UI_PORT=7788
|
|
14
|
+
WATTSWARM_SYNC_GRPC_BIND_HOST=127.0.0.1
|
|
15
|
+
WATTSWARM_SYNC_GRPC_PORT=7791
|
|
16
|
+
WATTSWARM_P2P_HOST_PORT=4001
|
|
17
|
+
WATTSWARM_UDP_ANNOUNCE_HOST_PORT=37931
|
|
18
|
+
|
|
19
|
+
# Host-mounted state directories for local agent access
|
|
20
|
+
WATTETHERIA_HOST_STATE_DIR=./data/wattetheria
|
|
21
|
+
WATTSWARM_HOST_STATE_DIR=./data/wattswarm
|
|
22
|
+
WATTETHERIA_COMPOSE_ENV_FILE=.env.release.local
|
|
23
|
+
WATTETHERIA_DEPLOY_DIR=.
|
|
24
|
+
WATTETHERIA_RUNTIME_ENV_FILE=/var/lib/wattetheria-deploy/.env.release.local
|
|
25
|
+
|
|
26
|
+
# Internal service endpoints used by the Wattetheria kernel and Wattswarm containers
|
|
27
|
+
WATTETHERIA_WATTSWARM_UI_BASE_URL=http://wattswarm-kernel:7788
|
|
28
|
+
WATTETHERIA_WATTSWARM_SYNC_GRPC_ENDPOINT=http://wattswarm-kernel:7791
|
|
29
|
+
WATTETHERIA_WATTSWARM_AGENT_EVENT_CALLBACK_BASE_URL=http://kernel:7777
|
|
30
|
+
WATTETHERIA_GATEWAY_URLS=
|
|
31
|
+
WATTETHERIA_GATEWAY_CONFIG_PATH=/var/lib/wattswarm/startup_config.json
|
|
32
|
+
|
|
33
|
+
# Agent-facing endpoints written into .agent-participation/manifest.json
|
|
34
|
+
WATTETHERIA_AGENT_CONTROL_PLANE_ENDPOINT=http://127.0.0.1:7777
|
|
35
|
+
WATTETHERIA_AGENT_WATTSWARM_UI_BASE_URL=http://127.0.0.1:7788
|
|
36
|
+
WATTETHERIA_AGENT_WATTSWARM_SYNC_GRPC_ENDPOINT=http://127.0.0.1:7791
|
|
37
|
+
WATTETHERIA_AGENT_HOST_DATA_DIR=./data/wattetheria
|
|
38
|
+
|
|
39
|
+
# Wattetheria runtime
|
|
40
|
+
WATTETHERIA_BRAIN_PROVIDER_KIND=rules
|
|
41
|
+
WATTETHERIA_BRAIN_BASE_URL=
|
|
42
|
+
WATTETHERIA_BRAIN_MODEL=
|
|
43
|
+
WATTETHERIA_BRAIN_API_KEY_ENV=
|
|
44
|
+
WATTETHERIA_BRAIN_API_KEY=
|
|
45
|
+
WATTETHERIA_SERVICENET_BASE_URL=
|
|
46
|
+
WATTETHERIA_AUTONOMY_ENABLED=false
|
|
47
|
+
WATTETHERIA_AUTONOMY_INTERVAL_SEC=30
|
|
48
|
+
|
|
49
|
+
# Wattswarm database
|
|
50
|
+
WATTSWARM_PG_DB=wattswarm
|
|
51
|
+
WATTSWARM_PG_USER=postgres
|
|
52
|
+
WATTSWARM_PG_PASSWORD=replace-with-strong-password
|
|
53
|
+
|
|
54
|
+
# Wattswarm runtime and network
|
|
55
|
+
WATTSWARM_P2P_ENABLED=true
|
|
56
|
+
WATTSWARM_P2P_MDNS=true
|
|
57
|
+
WATTSWARM_P2P_PORT=4001
|
|
58
|
+
WATTSWARM_IROH_RELAY_URLS=https://relay.wattetheria.com
|
|
59
|
+
WATTSWARM_IROH_PUBLISH_DIRECT_ADDRS=false
|
|
60
|
+
WATTSWARM_IROH_DATA_PLANE_START_TIMEOUT_MS=120000
|
|
61
|
+
WATTSWARM_WORKER_CONCURRENCY=16
|
|
62
|
+
WATTSWARM_WORKER_POLL_MS=250
|
|
63
|
+
WATTSWARM_WORKER_LEASE_MS=30000
|
|
64
|
+
WATTSWARM_UDP_ANNOUNCE_ENABLED=false
|
|
65
|
+
WATTSWARM_UDP_ANNOUNCE_MODE=multicast
|
|
66
|
+
WATTSWARM_UDP_ANNOUNCE_ADDR=239.255.42.99
|
|
67
|
+
WATTSWARM_UDP_ANNOUNCE_PORT=37931
|
package/README.md
CHANGED
|
@@ -625,7 +625,7 @@ pwsh ./scripts/deploy-release.ps1
|
|
|
625
625
|
- `docker-compose.yml` is the local `wattetheria`-only development stack
|
|
626
626
|
- `docker-compose.full.yml` is the local joint development stack for `wattetheria` + `wattswarm`
|
|
627
627
|
- `docker-compose.release.yml` is the image-based release deployment asset used by the CLI and fallback scripts
|
|
628
|
-
- the CLI
|
|
628
|
+
- `.env.release` is the single release environment template; the CLI reads it when generating or merging deployment `.env` files and resolves the latest published image release during install and update
|
|
629
629
|
- `scripts/deploy-release.ps1` is a cross-platform fallback deployment entry point
|
|
630
630
|
- this repository does not include `wattetheria-gateway`; gateway is a separate project and deployment unit
|
|
631
631
|
- The Docker entrypoint lives in `scripts/docker-kernel-entrypoint.sh`
|
|
@@ -710,6 +710,8 @@ WATTETHERIA_BRAIN_MODEL=openclaw
|
|
|
710
710
|
WATTETHERIA_BRAIN_API_KEY_ENV=WATTETHERIA_BRAIN_API_KEY
|
|
711
711
|
WATTETHERIA_BRAIN_API_KEY=<secret>
|
|
712
712
|
WATTETHERIA_GATEWAY_URLS=http://gateway.example.com:8080
|
|
713
|
+
WATTETHERIA_GATEWAY_CONFIG_PATH=/var/lib/wattswarm/startup_config.json
|
|
714
|
+
WATTSWARM_IROH_DATA_PLANE_START_TIMEOUT_MS=120000
|
|
713
715
|
```
|
|
714
716
|
|
|
715
717
|
`docker-compose.release.yml` also mounts `${WATTSWARM_HOST_STATE_DIR}/startup_config.json` into the
|
|
@@ -116,6 +116,7 @@ services:
|
|
|
116
116
|
WATTSWARM_UDP_ANNOUNCE_PORT: ${WATTSWARM_UDP_ANNOUNCE_PORT:-37931}
|
|
117
117
|
WATTSWARM_IROH_RELAY_URLS: ${WATTSWARM_IROH_RELAY_URLS:-https://relay.wattetheria.com}
|
|
118
118
|
WATTSWARM_IROH_PUBLISH_DIRECT_ADDRS: ${WATTSWARM_IROH_PUBLISH_DIRECT_ADDRS:-false}
|
|
119
|
+
WATTSWARM_IROH_DATA_PLANE_START_TIMEOUT_MS: ${WATTSWARM_IROH_DATA_PLANE_START_TIMEOUT_MS:-120000}
|
|
119
120
|
WATTSWARM_PUBLIC_BOOTSTRAP_URLS: ${WATTSWARM_PUBLIC_BOOTSTRAP_URLS:-}
|
|
120
121
|
WATTSWARM_PUBLIC_BOOTSTRAP_CONTACTS: ${WATTSWARM_PUBLIC_BOOTSTRAP_CONTACTS:-}
|
|
121
122
|
WATTSWARM_PUBLIC_GATEWAY_URLS: ${WATTSWARM_PUBLIC_GATEWAY_URLS:-}
|
package/lib/cli.js
CHANGED
|
@@ -11,12 +11,7 @@ const PACKAGE_JSON = require(path.join(PACKAGE_ROOT, "package.json"));
|
|
|
11
11
|
const DEFAULT_DEPLOY_DIR = path.join(os.homedir(), ".wattetheria", "deploy");
|
|
12
12
|
const DEFAULT_PROJECT_NAME = "wattetheria";
|
|
13
13
|
const DEFAULT_COMMAND = "help";
|
|
14
|
-
const
|
|
15
|
-
["WATTETHERIA_KERNEL_IMAGE", "ghcr.io/wattetheria/wattetheria-kernel:latest"],
|
|
16
|
-
["WATTSWARM_KERNEL_IMAGE", "ghcr.io/wattetheria/wattswarm-kernel:latest"],
|
|
17
|
-
["WATTSWARM_RUNTIME_IMAGE", "ghcr.io/wattetheria/wattswarm-runtime:latest"],
|
|
18
|
-
["WATTSWARM_WORKER_IMAGE", "ghcr.io/wattetheria/wattswarm-worker:latest"]
|
|
19
|
-
]);
|
|
14
|
+
const RELEASE_ENV_TEMPLATE_PATH = path.join(PACKAGE_ROOT, ".env.release");
|
|
20
15
|
const IMAGE_KEYS = [
|
|
21
16
|
"WATTETHERIA_KERNEL_IMAGE",
|
|
22
17
|
"WATTSWARM_KERNEL_IMAGE",
|
|
@@ -25,48 +20,6 @@ const IMAGE_KEYS = [
|
|
|
25
20
|
];
|
|
26
21
|
const HOST_STATE_DIR_KEYS = ["WATTETHERIA_HOST_STATE_DIR", "WATTSWARM_HOST_STATE_DIR"];
|
|
27
22
|
const REGISTRY_TAG_PAGE_SIZE = 1000;
|
|
28
|
-
const DEFAULT_ENV_ENTRIES = [
|
|
29
|
-
...DEFAULT_IMAGE_REFS.entries(),
|
|
30
|
-
["WATTETHERIA_CONTROL_PLANE_BIND_HOST", "127.0.0.1"],
|
|
31
|
-
["WATTETHERIA_CONTROL_PLANE_PORT", "7777"],
|
|
32
|
-
["WATTSWARM_UI_BIND_HOST", "127.0.0.1"],
|
|
33
|
-
["WATTSWARM_UI_PORT", "7788"],
|
|
34
|
-
["WATTSWARM_SYNC_GRPC_BIND_HOST", "127.0.0.1"],
|
|
35
|
-
["WATTSWARM_SYNC_GRPC_PORT", "7791"],
|
|
36
|
-
["WATTSWARM_P2P_HOST_PORT", "4001"],
|
|
37
|
-
["WATTSWARM_UDP_ANNOUNCE_HOST_PORT", "37931"],
|
|
38
|
-
["WATTETHERIA_HOST_STATE_DIR", "./data/wattetheria"],
|
|
39
|
-
["WATTSWARM_HOST_STATE_DIR", "./data/wattswarm"],
|
|
40
|
-
["WATTETHERIA_COMPOSE_ENV_FILE", ".env.release.local"],
|
|
41
|
-
["WATTETHERIA_DEPLOY_DIR", "."],
|
|
42
|
-
["WATTETHERIA_RUNTIME_ENV_FILE", "/var/lib/wattetheria-deploy/.env.release.local"],
|
|
43
|
-
["WATTETHERIA_AGENT_CONTROL_PLANE_ENDPOINT", "http://127.0.0.1:7777"],
|
|
44
|
-
["WATTETHERIA_AGENT_WATTSWARM_UI_BASE_URL", "http://127.0.0.1:7788"],
|
|
45
|
-
["WATTETHERIA_AGENT_WATTSWARM_SYNC_GRPC_ENDPOINT", "http://127.0.0.1:7791"],
|
|
46
|
-
["WATTETHERIA_AGENT_HOST_DATA_DIR", "./data/wattetheria"],
|
|
47
|
-
["WATTETHERIA_BRAIN_PROVIDER_KIND", "rules"],
|
|
48
|
-
["WATTETHERIA_BRAIN_BASE_URL", ""],
|
|
49
|
-
["WATTETHERIA_BRAIN_MODEL", ""],
|
|
50
|
-
["WATTETHERIA_BRAIN_API_KEY_ENV", ""],
|
|
51
|
-
["WATTETHERIA_SERVICENET_BASE_URL", ""],
|
|
52
|
-
["WATTETHERIA_AUTONOMY_ENABLED", "false"],
|
|
53
|
-
["WATTETHERIA_AUTONOMY_INTERVAL_SEC", "30"],
|
|
54
|
-
["WATTSWARM_PG_DB", "wattswarm"],
|
|
55
|
-
["WATTSWARM_PG_USER", "postgres"],
|
|
56
|
-
["WATTSWARM_PG_PASSWORD", "replace-with-strong-password"],
|
|
57
|
-
["WATTSWARM_P2P_ENABLED", "true"],
|
|
58
|
-
["WATTSWARM_P2P_MDNS", "true"],
|
|
59
|
-
["WATTSWARM_P2P_PORT", "4001"],
|
|
60
|
-
["WATTSWARM_IROH_RELAY_URLS", "https://relay.wattetheria.com"],
|
|
61
|
-
["WATTSWARM_IROH_PUBLISH_DIRECT_ADDRS", "false"],
|
|
62
|
-
["WATTSWARM_WORKER_CONCURRENCY", "16"],
|
|
63
|
-
["WATTSWARM_WORKER_POLL_MS", "250"],
|
|
64
|
-
["WATTSWARM_WORKER_LEASE_MS", "30000"],
|
|
65
|
-
["WATTSWARM_UDP_ANNOUNCE_ENABLED", "false"],
|
|
66
|
-
["WATTSWARM_UDP_ANNOUNCE_MODE", "multicast"],
|
|
67
|
-
["WATTSWARM_UDP_ANNOUNCE_ADDR", "239.255.42.99"],
|
|
68
|
-
["WATTSWARM_UDP_ANNOUNCE_PORT", "37931"]
|
|
69
|
-
];
|
|
70
23
|
const DOCKER_INSTALL_URLS = {
|
|
71
24
|
darwin: "https://www.docker.com/products/docker-desktop/",
|
|
72
25
|
win32: "https://www.docker.com/products/docker-desktop/",
|
|
@@ -468,7 +421,10 @@ function getReleaseImageMapFromEnv(envMap) {
|
|
|
468
421
|
}
|
|
469
422
|
|
|
470
423
|
function defaultEnvMap() {
|
|
471
|
-
|
|
424
|
+
if (!fs.existsSync(RELEASE_ENV_TEMPLATE_PATH)) {
|
|
425
|
+
throw new Error(`Release env template is missing: ${RELEASE_ENV_TEMPLATE_PATH}`);
|
|
426
|
+
}
|
|
427
|
+
return readEnvFile(RELEASE_ENV_TEMPLATE_PATH);
|
|
472
428
|
}
|
|
473
429
|
|
|
474
430
|
function getReleaseSource(options) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wattetheria",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "Wattetheria deployment CLI",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
"bin/",
|
|
10
10
|
"lib/",
|
|
11
|
+
".env.release",
|
|
11
12
|
"docker-compose.release.yml",
|
|
12
13
|
"README.md",
|
|
13
14
|
"LICENSE"
|