mlclaw 0.6.0 → 0.6.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 +7 -5
- package/Dockerfile +1 -1
- package/README.md +15 -7
- package/dist/mlclaw-space-runtime.js +34 -3
- package/dist/mlclaw.mjs +1 -1
- package/package.json +1 -1
|
@@ -298,11 +298,13 @@ mlclaw credentials codex login <agent>
|
|
|
298
298
|
```
|
|
299
299
|
|
|
300
300
|
After login, ML Claw imports the deployment credential into a managed native
|
|
301
|
-
OpenClaw OAuth profile
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
301
|
+
OpenClaw OAuth profile and enables OpenClaw's bundled Codex app-server harness
|
|
302
|
+
for `openai/*` agent models. OpenClaw contacts OpenAI directly, refreshes the
|
|
303
|
+
OAuth credential in its private auth store, and discovers the account-visible
|
|
304
|
+
catalog, including `openai/gpt-5.6-sol` when entitled. ML Claw does not proxy
|
|
305
|
+
model discovery or inference and does not install or invoke a Codex CLI from
|
|
306
|
+
`PATH`. Normal `OPENAI_API_KEY` profiles can coexist with subscription OAuth;
|
|
307
|
+
OpenAI agent turns use the Codex harness with either credential type.
|
|
306
308
|
|
|
307
309
|
## Branding
|
|
308
310
|
|
package/Dockerfile
CHANGED
|
@@ -2,7 +2,7 @@ ARG OPENCLAW_VERSION=2026.7.1
|
|
|
2
2
|
ARG OPENCLAW_BASE_IMAGE=ghcr.io/openclaw/openclaw:${OPENCLAW_VERSION}
|
|
3
3
|
ARG BROKERKIT_PLUGIN_VERSION=0.4.1
|
|
4
4
|
ARG BROKERKIT_VERSION=hf-broker/v0.6.2
|
|
5
|
-
ARG MLCLAW_RUNTIME_IMAGE=ghcr.io/huggingface/mlclaw:0.6.
|
|
5
|
+
ARG MLCLAW_RUNTIME_IMAGE=ghcr.io/huggingface/mlclaw:0.6.1-openclaw-2026.7.1
|
|
6
6
|
|
|
7
7
|
FROM golang:1.26.5-bookworm AS hf-broker-build
|
|
8
8
|
ARG BROKERKIT_VERSION
|
package/README.md
CHANGED
|
@@ -389,13 +389,21 @@ native `openai/*` provider. For example, an entitled account may expose
|
|
|
389
389
|
`openai/gpt-5.6-sol` alongside the other live Codex models.
|
|
390
390
|
|
|
391
391
|
At startup, ML Claw imports the encrypted login into a managed native OpenClaw
|
|
392
|
-
OAuth profile
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
392
|
+
OAuth profile and enables OpenClaw's bundled Codex app-server harness for
|
|
393
|
+
`openai/*` agent models. Codex owns the low-level model loop, native thread
|
|
394
|
+
state, tool continuation, and compaction; OpenClaw continues to own channels,
|
|
395
|
+
approvals, dynamic tools, model selection, and the visible transcript mirror.
|
|
396
|
+
OpenClaw manages its compatible app-server binary, so ML Claw still does not
|
|
397
|
+
install or invoke a Codex CLI from `PATH`.
|
|
398
|
+
|
|
399
|
+
OpenClaw contacts OpenAI directly for model discovery, inference, and token
|
|
400
|
+
refresh; ML Claw is not in the inference path. OpenClaw keeps its own model
|
|
401
|
+
names, metadata, transport, and refreshed credential, and a normal
|
|
402
|
+
`OPENAI_API_KEY` profile can coexist with the ChatGPT route. OpenAI agent models
|
|
403
|
+
also use the Codex harness with API-key auth. `status` and `logout` inspect or
|
|
404
|
+
revoke the deployment-scoped login without exposing tokens. Raw OAuth tokens
|
|
405
|
+
are never printed, stored in the Space repository or model configuration, or
|
|
406
|
+
included in workspace files.
|
|
399
407
|
|
|
400
408
|
## How State Works
|
|
401
409
|
|
|
@@ -4571,6 +4571,7 @@ function readRuntimeSettings(file) {
|
|
|
4571
4571
|
|
|
4572
4572
|
// src/mlclaw-space-runtime/server.ts
|
|
4573
4573
|
import { spawn as spawn2 } from "node:child_process";
|
|
4574
|
+
import { randomBytes as randomBytes9 } from "node:crypto";
|
|
4574
4575
|
import http3 from "node:http";
|
|
4575
4576
|
import { Readable as Readable2 } from "node:stream";
|
|
4576
4577
|
|
|
@@ -12128,8 +12129,11 @@ async function configureOpenClawGateway(config2, options = {}) {
|
|
|
12128
12129
|
allowedOrigins: config2.accessOrigins,
|
|
12129
12130
|
embedSandbox: "scripts"
|
|
12130
12131
|
};
|
|
12131
|
-
|
|
12132
|
-
|
|
12132
|
+
const codexConfigured = Boolean(options.codexConfigured);
|
|
12133
|
+
const openAiConfigured2 = Boolean(options.openAiConfigured);
|
|
12134
|
+
configureOpenClawModels(openclawConfig, config2, codexConfigured, openAiConfigured2);
|
|
12135
|
+
configureOpenAiAuthMetadata(openclawConfig, codexConfigured);
|
|
12136
|
+
configureCodexRuntimePlugin(openclawConfig, codexConfigured || openAiConfigured2);
|
|
12133
12137
|
disableAutomaticSessionResets(openclawConfig);
|
|
12134
12138
|
configureManagedMcpServers(openclawConfig, config2);
|
|
12135
12139
|
configureBrokerMcpServer(openclawConfig, config2);
|
|
@@ -12208,6 +12212,31 @@ function brokerAgentScope(value) {
|
|
|
12208
12212
|
function brokerApprovalMode(value) {
|
|
12209
12213
|
return value === "auto" || value === "prompt" || value === "approve" ? value : void 0;
|
|
12210
12214
|
}
|
|
12215
|
+
function configureCodexRuntimePlugin(openclawConfig, enabled) {
|
|
12216
|
+
const plugins = object(openclawConfig, "plugins");
|
|
12217
|
+
const entries = object(plugins, "entries");
|
|
12218
|
+
const existing = objectValue2(entries.codex);
|
|
12219
|
+
if (!enabled) {
|
|
12220
|
+
if (existing) entries.codex = { ...existing, enabled: false };
|
|
12221
|
+
return;
|
|
12222
|
+
}
|
|
12223
|
+
if (plugins.allow !== void 0) {
|
|
12224
|
+
plugins.allow = uniqueStrings(uniqueStrings(plugins.allow, "openai"), "codex");
|
|
12225
|
+
}
|
|
12226
|
+
const existingConfig = objectValue2(existing?.config);
|
|
12227
|
+
const existingAppServer = objectValue2(existingConfig?.appServer);
|
|
12228
|
+
entries.codex = {
|
|
12229
|
+
...existing,
|
|
12230
|
+
enabled: true,
|
|
12231
|
+
config: {
|
|
12232
|
+
...existingConfig,
|
|
12233
|
+
appServer: {
|
|
12234
|
+
...existingAppServer,
|
|
12235
|
+
clearEnv: uniqueStrings(existingAppServer?.clearEnv, "OPENCLAW_GATEWAY_PASSWORD")
|
|
12236
|
+
}
|
|
12237
|
+
}
|
|
12238
|
+
};
|
|
12239
|
+
}
|
|
12211
12240
|
function configureBrokerKitPlugin(openclawConfig, config2) {
|
|
12212
12241
|
const plugins = object(openclawConfig, "plugins");
|
|
12213
12242
|
const load = object(plugins, "load");
|
|
@@ -12278,7 +12307,7 @@ function configureAgentModelChoices(defaults, config2, routerChoices, codexConfi
|
|
|
12278
12307
|
};
|
|
12279
12308
|
defaults.models = {
|
|
12280
12309
|
...Object.fromEntries(routerChoices.map((choice) => [choice.openclawModel, { alias: aliasForChoice(choice) }])),
|
|
12281
|
-
...openAiAvailable ? { "openai/*": { agentRuntime: { id: "
|
|
12310
|
+
...openAiAvailable ? { "openai/*": { agentRuntime: { id: "codex" } } } : {}
|
|
12282
12311
|
};
|
|
12283
12312
|
}
|
|
12284
12313
|
function resolvePrimaryModel(params) {
|
|
@@ -20150,6 +20179,7 @@ var SpaceRuntimeServer = class {
|
|
|
20150
20179
|
});
|
|
20151
20180
|
}
|
|
20152
20181
|
openclaw;
|
|
20182
|
+
openclawGatewayPassword = randomBytes9(48).toString("base64url");
|
|
20153
20183
|
openclawStarting = false;
|
|
20154
20184
|
openclawStopping = false;
|
|
20155
20185
|
app;
|
|
@@ -20330,6 +20360,7 @@ var SpaceRuntimeServer = class {
|
|
|
20330
20360
|
await this.syncOAuthProfile({ config: this.config, env });
|
|
20331
20361
|
throw new Error("OpenAI OAuth credentials were revoked during native profile provisioning");
|
|
20332
20362
|
}
|
|
20363
|
+
env.OPENCLAW_GATEWAY_PASSWORD = this.openclawGatewayPassword;
|
|
20333
20364
|
this.openclaw = spawn2(this.config.openclawCommand, this.config.openclawArgs, {
|
|
20334
20365
|
stdio: "inherit",
|
|
20335
20366
|
env,
|
package/dist/mlclaw.mjs
CHANGED
|
@@ -15383,7 +15383,7 @@ function nextLink(header) {
|
|
|
15383
15383
|
|
|
15384
15384
|
// src/mlclaw/release-config.generated.ts
|
|
15385
15385
|
var RELEASE_CONFIG = {
|
|
15386
|
-
"packageVersion": "0.6.
|
|
15386
|
+
"packageVersion": "0.6.1",
|
|
15387
15387
|
"openclawVersion": "2026.7.1",
|
|
15388
15388
|
"brokerkitVersion": "hf-broker/v0.6.2",
|
|
15389
15389
|
"brokerkitPluginVersion": "0.4.1",
|