mlclaw 0.3.8 → 0.4.1
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/.agents/skills/mlclaw/SKILL.md +23 -3
- package/Dockerfile +2 -2
- package/README.md +109 -19
- package/dist/hf-state-sync.js +4 -3
- package/dist/mlclaw-space-runtime.js +261 -62
- package/dist/mlclaw.mjs +7737 -544
- package/entrypoint.sh +5 -5
- package/openclaw.default.json +5 -3
- package/package.json +4 -4
- package/src/hf-state-sync/cli.ts +4 -3
- package/tsconfig.json +1 -0
package/entrypoint.sh
CHANGED
|
@@ -15,7 +15,7 @@ PROTECTED_STATE_DIR="/var/lib/mlclaw-protected"
|
|
|
15
15
|
HF_BROKER_STATE_DIR="$PROTECTED_STATE_DIR/hf-broker"
|
|
16
16
|
|
|
17
17
|
prepare_hf_broker() {
|
|
18
|
-
local broker_token="${MLCLAW_BROKER_HF_TOKEN
|
|
18
|
+
local broker_token="${MLCLAW_BROKER_HF_TOKEN:-}"
|
|
19
19
|
if [ -z "$broker_token" ]; then
|
|
20
20
|
echo "[hf-broker] MLCLAW_BROKER_HF_TOKEN is not configured; broker disabled"
|
|
21
21
|
return
|
|
@@ -45,7 +45,7 @@ prepare_hf_broker() {
|
|
|
45
45
|
chmod 0600 "$token_file" "$agent_secret_file" "$operator_secret_file" "$broker_agent_secrets" "$broker_operator_secrets" "$operator_brokers_file"
|
|
46
46
|
|
|
47
47
|
if [ -z "${MLCLAW_STATE_MOUNT_DIR:-}" ]; then
|
|
48
|
-
STATE_HF_TOKEN="$
|
|
48
|
+
STATE_HF_TOKEN="$broker_token"
|
|
49
49
|
fi
|
|
50
50
|
|
|
51
51
|
export MLCLAW_HF_BROKER_URL="http://127.0.0.1:7863"
|
|
@@ -130,8 +130,8 @@ fi
|
|
|
130
130
|
prepare_hf_broker
|
|
131
131
|
export MLCLAW_PROTECTED_STATE_DIR="$PROTECTED_STATE_DIR"
|
|
132
132
|
export MLCLAW_OPENAI_CREDENTIAL_STORE_FILE="$PROTECTED_STATE_DIR/control/openai-api-key.enc"
|
|
133
|
-
# The
|
|
134
|
-
# OpenClaw. The token is already in
|
|
133
|
+
# The broker token and legacy token variables must not enter the control plane
|
|
134
|
+
# or OpenClaw. The broker token is already in its owned runtime file before the
|
|
135
135
|
# environment is scrubbed; local bucket state sync receives a dedicated copy
|
|
136
136
|
# only around trusted restore and supervisor execution.
|
|
137
137
|
unset MLCLAW_BROKER_HF_TOKEN MLCLAW_ROUTER_TOKEN HF_ROUTER_TOKEN HF_TOKEN HUGGINGFACE_HUB_TOKEN
|
|
@@ -154,7 +154,7 @@ CONFIG_PATH="$OPENCLAW_CONFIG_PATH"
|
|
|
154
154
|
# silently start fresh then snapshot over a bucket that still holds data).
|
|
155
155
|
echo "[hf-state-sync] starting restore"
|
|
156
156
|
RESTORE_TIMEOUT_SECONDS="${MLCLAW_RESTORE_TIMEOUT_SECONDS:-180}"
|
|
157
|
-
node /app/hf-state-sync.js prepare-restore
|
|
157
|
+
env MLCLAW_STATE_HF_TOKEN="$STATE_HF_TOKEN" node /app/hf-state-sync.js prepare-restore
|
|
158
158
|
if command -v timeout >/dev/null 2>&1; then
|
|
159
159
|
env MLCLAW_STATE_HF_TOKEN="$STATE_HF_TOKEN" timeout "${RESTORE_TIMEOUT_SECONDS}s" gosu "$OPENCLAW_IDENTITY" node /app/hf-state-sync.js restore
|
|
160
160
|
else
|
package/openclaw.default.json
CHANGED
|
@@ -57,9 +57,11 @@
|
|
|
57
57
|
"session": {
|
|
58
58
|
"dmScope": "per-channel-peer",
|
|
59
59
|
"reset": {
|
|
60
|
-
"mode": "
|
|
61
|
-
"
|
|
62
|
-
|
|
60
|
+
"mode": "idle",
|
|
61
|
+
"idleMinutes": 2147483647
|
|
62
|
+
},
|
|
63
|
+
"maintenance": {
|
|
64
|
+
"resetArchiveRetention": false
|
|
63
65
|
}
|
|
64
66
|
},
|
|
65
67
|
"cron": {
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mlclaw",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"config": {
|
|
6
6
|
"openclawVersion": "2026.7.1",
|
|
7
|
-
"brokerkitVersion": "hf-broker/v0.
|
|
7
|
+
"brokerkitVersion": "hf-broker/v0.2.0",
|
|
8
8
|
"brokerkitPluginVersion": "0.2.1",
|
|
9
9
|
"runtimeImageRepository": "ghcr.io/osolmaz/mlclaw"
|
|
10
10
|
},
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
"pack:check": "node scripts/check-package.mjs",
|
|
56
56
|
"prepack": "npm run build",
|
|
57
57
|
"check:secrets": "node scripts/check-secrets.mjs",
|
|
58
|
-
"format": "prettier --check eslint.config.mjs vitest.config.ts vitest.stryker.config.ts package.json README.md src/hf-state-sync/archive.ts src/hf-state-sync/cli.ts src/hf-state-sync/paths.ts src/hf-state-sync/prepare.ts src/hf-state-sync/stage-worker.ts src/hf-state-sync/supervise.ts src/mlclaw/auth.ts src/mlclaw/hf-cli.ts src/mlclaw-space-runtime/delegated-brokerkit.ts src/mlclaw-space-runtime/delegated-revisions.ts src/mlclaw-space-runtime/operator-brokers.ts src/mlclaw-space-runtime/openclaw-config.ts src/mlclaw-space-runtime/app.ts src/mlclaw-space-runtime/config.ts src/mlclaw-space-runtime/openai-credentials.ts src/mlclaw-space-runtime/server.ts src/mlclaw-space-runtime/shell.ts src/mlclaw-control-ui/src/main.tsx src/mlclaw-control-ui/src/styles.css src/mlclaw-control-ui/src/components/ui/utils.ts src/mlclaw/git.ts test/hf-state-sync.archive.test.ts test/hf-state-sync.roundtrip.test.ts test/hf-state-sync.supervise.test.ts test/mlclaw.auth.test.ts test/mlclaw.brokerkit-agent-tools.test.ts test/mlclaw.bundle.test.ts test/mlclaw.delegated-brokerkit.test.ts test/mlclaw.generate-space.test.ts test/mlclaw.operator-brokers.test.ts test/mlclaw.runtime-image.test.ts test/mlclaw.space-runtime.test.ts docs/operator-brokers-config.md",
|
|
59
|
-
"format:write": "prettier --write eslint.config.mjs vitest.config.ts vitest.stryker.config.ts package.json README.md src/hf-state-sync/archive.ts src/hf-state-sync/cli.ts src/hf-state-sync/paths.ts src/hf-state-sync/prepare.ts src/hf-state-sync/stage-worker.ts src/hf-state-sync/supervise.ts src/mlclaw/auth.ts src/mlclaw/hf-cli.ts src/mlclaw-space-runtime/delegated-brokerkit.ts src/mlclaw-space-runtime/delegated-revisions.ts src/mlclaw-space-runtime/operator-brokers.ts src/mlclaw-space-runtime/openclaw-config.ts src/mlclaw-space-runtime/app.ts src/mlclaw-space-runtime/config.ts src/mlclaw-space-runtime/openai-credentials.ts src/mlclaw-space-runtime/server.ts src/mlclaw-space-runtime/shell.ts src/mlclaw-control-ui/src/main.tsx src/mlclaw-control-ui/src/styles.css src/mlclaw-control-ui/src/components/ui/utils.ts src/mlclaw/git.ts test/hf-state-sync.archive.test.ts test/hf-state-sync.roundtrip.test.ts test/hf-state-sync.supervise.test.ts test/mlclaw.auth.test.ts test/mlclaw.brokerkit-agent-tools.test.ts test/mlclaw.bundle.test.ts test/mlclaw.delegated-brokerkit.test.ts test/mlclaw.generate-space.test.ts test/mlclaw.operator-brokers.test.ts test/mlclaw.runtime-image.test.ts test/mlclaw.space-runtime.test.ts docs/operator-brokers-config.md",
|
|
58
|
+
"format": "prettier --check eslint.config.mjs vitest.config.ts vitest.stryker.config.ts package.json README.md src/hf-state-sync/archive.ts src/hf-state-sync/cli.ts src/hf-state-sync/paths.ts src/hf-state-sync/prepare.ts src/hf-state-sync/stage-worker.ts src/hf-state-sync/supervise.ts src/mlclaw/auth.ts src/mlclaw/cli.ts src/mlclaw/deployment-state.ts src/mlclaw/docker.ts src/mlclaw/hf-broker-credential.ts src/mlclaw/hf-cli.ts src/mlclaw/hub-api.ts src/mlclaw/local-config.ts src/mlclaw/tailscale.ts src/mlclaw-space-runtime/delegated-brokerkit.ts src/mlclaw-space-runtime/delegated-revisions.ts src/mlclaw-space-runtime/operator-brokers.ts src/mlclaw-space-runtime/openclaw-config.ts src/mlclaw-space-runtime/app.ts src/mlclaw-space-runtime/config.ts src/mlclaw-space-runtime/local-access.ts src/mlclaw-space-runtime/openai-credentials.ts src/mlclaw-space-runtime/proxy.ts src/mlclaw-space-runtime/server.ts src/mlclaw-space-runtime/session.ts src/mlclaw-space-runtime/shell.ts src/mlclaw-control-ui/src/main.tsx src/mlclaw-control-ui/src/styles.css src/mlclaw-control-ui/src/components/ui/utils.ts src/mlclaw/git.ts test/hf-state-sync.archive.test.ts test/hf-state-sync.roundtrip.test.ts test/hf-state-sync.supervise.test.ts test/mlclaw.auth.test.ts test/mlclaw.brokerkit-agent-tools.test.ts test/mlclaw.bundle.test.ts test/mlclaw.cli.test.ts test/mlclaw.delegated-brokerkit.test.ts test/mlclaw.deployment-state.test.ts test/mlclaw.docker.test.ts test/mlclaw.generate-space.test.ts test/mlclaw.hf-broker-credential.test.ts test/mlclaw.hub-api.test.ts test/mlclaw.local-config.test.ts test/mlclaw.operator-brokers.test.ts test/mlclaw.runtime-image.test.ts test/mlclaw.space-runtime.test.ts test/mlclaw.tailscale.test.ts docs/operator-brokers-config.md",
|
|
59
|
+
"format:write": "prettier --write eslint.config.mjs vitest.config.ts vitest.stryker.config.ts package.json README.md src/hf-state-sync/archive.ts src/hf-state-sync/cli.ts src/hf-state-sync/paths.ts src/hf-state-sync/prepare.ts src/hf-state-sync/stage-worker.ts src/hf-state-sync/supervise.ts src/mlclaw/auth.ts src/mlclaw/cli.ts src/mlclaw/deployment-state.ts src/mlclaw/docker.ts src/mlclaw/hf-broker-credential.ts src/mlclaw/hf-cli.ts src/mlclaw/hub-api.ts src/mlclaw/local-config.ts src/mlclaw/tailscale.ts src/mlclaw-space-runtime/delegated-brokerkit.ts src/mlclaw-space-runtime/delegated-revisions.ts src/mlclaw-space-runtime/operator-brokers.ts src/mlclaw-space-runtime/openclaw-config.ts src/mlclaw-space-runtime/app.ts src/mlclaw-space-runtime/config.ts src/mlclaw-space-runtime/local-access.ts src/mlclaw-space-runtime/openai-credentials.ts src/mlclaw-space-runtime/proxy.ts src/mlclaw-space-runtime/server.ts src/mlclaw-space-runtime/session.ts src/mlclaw-space-runtime/shell.ts src/mlclaw-control-ui/src/main.tsx src/mlclaw-control-ui/src/styles.css src/mlclaw-control-ui/src/components/ui/utils.ts src/mlclaw/git.ts test/hf-state-sync.archive.test.ts test/hf-state-sync.roundtrip.test.ts test/hf-state-sync.supervise.test.ts test/mlclaw.auth.test.ts test/mlclaw.brokerkit-agent-tools.test.ts test/mlclaw.bundle.test.ts test/mlclaw.cli.test.ts test/mlclaw.delegated-brokerkit.test.ts test/mlclaw.deployment-state.test.ts test/mlclaw.docker.test.ts test/mlclaw.generate-space.test.ts test/mlclaw.hf-broker-credential.test.ts test/mlclaw.hub-api.test.ts test/mlclaw.local-config.test.ts test/mlclaw.operator-brokers.test.ts test/mlclaw.runtime-image.test.ts test/mlclaw.space-runtime.test.ts test/mlclaw.tailscale.test.ts docs/operator-brokers-config.md",
|
|
60
60
|
"lint": "eslint --max-warnings 0 src/mlclaw-space-runtime/delegated-brokerkit.ts src/mlclaw-space-runtime/delegated-revisions.ts src/mlclaw-space-runtime/operator-brokers.ts src/mlclaw-space-runtime/openclaw-config.ts",
|
|
61
61
|
"coverage": "vitest run --coverage",
|
|
62
62
|
"dry": "slophammer-ts dry .",
|
package/src/hf-state-sync/cli.ts
CHANGED
|
@@ -34,6 +34,10 @@ async function main(argv: string[]): Promise<number> {
|
|
|
34
34
|
return runStageWorker(liveDir);
|
|
35
35
|
}
|
|
36
36
|
const config = resolveSyncConfig();
|
|
37
|
+
if (argv[0] === "prepare-restore") {
|
|
38
|
+
await prepareRestore(config);
|
|
39
|
+
return 0;
|
|
40
|
+
}
|
|
37
41
|
const hub = makeHub(config);
|
|
38
42
|
if (!hub) {
|
|
39
43
|
logError("OPENCLAW_HF_STATE_BUCKET is not set; state will NOT survive restarts");
|
|
@@ -41,9 +45,6 @@ async function main(argv: string[]): Promise<number> {
|
|
|
41
45
|
const mode = argv[0];
|
|
42
46
|
|
|
43
47
|
switch (mode) {
|
|
44
|
-
case "prepare-restore":
|
|
45
|
-
await prepareRestore(config);
|
|
46
|
-
return 0;
|
|
47
48
|
case "restore": {
|
|
48
49
|
if (!hub) {
|
|
49
50
|
return 0;
|