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.
@@ -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. OpenClaw contacts OpenAI directly, refreshes the OAuth
302
- credential in its private auth store, and discovers the account-visible catalog
303
- under `openai/*`, including `openai/gpt-5.6-sol` when entitled. ML Claw does not
304
- proxy model discovery or inference. Normal `OPENAI_API_KEY` profiles continue
305
- to use the OpenAI Platform route.
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.0-openclaw-2026.7.1
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. OpenClaw then contacts OpenAI directly for model discovery,
393
- Responses requests, and token refresh; ML Claw is not in the inference path.
394
- OpenClaw keeps its own model names, metadata, transport, and refreshed
395
- credential, and a normal `OPENAI_API_KEY` profile can coexist with the ChatGPT
396
- route. `status` and `logout` inspect or revoke the deployment-scoped login
397
- without exposing tokens. Raw OAuth tokens are never printed, stored in the
398
- Space repository or model configuration, or included in workspace files.
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
- configureOpenClawModels(openclawConfig, config2, Boolean(options.codexConfigured), Boolean(options.openAiConfigured));
12132
- configureOpenAiAuthMetadata(openclawConfig, Boolean(options.codexConfigured));
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: "openclaw" } } } : {}
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.0",
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",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mlclaw",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "license": "MIT",
5
5
  "config": {
6
6
  "openclawVersion": "2026.7.1",