mirror of
https://github.com/openclaw/openclaw.git
synced 2026-10-04 10:10:01 +00:00
* fix: restore gateway recovery fixture lint and types Preserve the recovery coverage added in #134165 while using the actual WebSocket dependency and authored SecretRef fixture boundary. Co-authored-by: Shakker <165377636+shakkernerd@users.noreply.github.com> * fix(release): bind ClawHub staging to exact parent transactions Seal packed inventories before parent authorization, preserve distinct parent and child refs, and verify public bytes after terminal success. Record immutable npm producer provenance and avoid claiming historical OIDC authentication from artifact readback. * fix(release): pin ClawHub parent receipt contract Use the reviewed merged reusable workflow with parent-only 64 KiB receipt parsing and bounded file preflight. Keep v2 identity and recovery limits unchanged. * fix: authenticate CI checkout and lazy blob fetches * fix: prepare immutable reader history during CI checkout * fix(ci): declare historical reader selector entry point * test(release): follow canonical publication helpers * perf(anthropic): defer auth and catalog runtime imports Keep provider descriptors synchronous without importing credential stores, external auth discovery, or live catalog transport during registration. Load those implementations only when the existing asynchronous setup, doctor, usage, and catalog hooks need them. Expose the existing lightweight API-key descriptor factory through provider-entry while preserving the shipped auth SDK helpers and their synchronous contracts. The unchanged fresh-process registry proof retains its original timeout and verifies scoped failover without global activation. * docs(release): clarify optional ClawHub staging wait * docs(plugins): use public provider auth import in tutorial * test(ui): await agent menu lifecycle before keyboard navigation Wait for opening focus initialization and visible popup retirement before exercising selection and typing ownership. Preserve the existing focus, selected-agent, and composer assertions without changing product behavior or timeouts. * docs(release): explain parent-bound ClawHub repair authority --------- Co-authored-by: Shakker <165377636+shakkernerd@users.noreply.github.com>
88 lines
2.6 KiB
JavaScript
Executable file
88 lines
2.6 KiB
JavaScript
Executable file
#!/usr/bin/env -S node --import tsx
|
|
import { parseStrictBooleanArg } from "./lib/arg-utils.mts";
|
|
import { buildOpenClawReleaseClawHubRuntimeState } from "./lib/openclaw-release-clawhub-plan.ts";
|
|
|
|
function parseArgs(argv: string[]) {
|
|
const values = [...argv];
|
|
if (values[0] === "--") {
|
|
values.shift();
|
|
}
|
|
|
|
let repository: string | undefined;
|
|
let waitForClawHub: boolean | undefined;
|
|
let forceSkipClawHub: boolean | undefined;
|
|
let normalRunId: string | undefined;
|
|
let normalPublicationStaged = false;
|
|
let bootstrapRunId: string | undefined;
|
|
let bootstrapCompleted: boolean | undefined;
|
|
|
|
for (let index = 0; index < values.length; index += 1) {
|
|
const arg = values[index];
|
|
const next = () => {
|
|
const value = values[index + 1];
|
|
if (value === undefined || value.startsWith("-")) {
|
|
throw new Error(`${arg} requires a value.`);
|
|
}
|
|
index += 1;
|
|
return value;
|
|
};
|
|
|
|
switch (arg) {
|
|
case "--repository":
|
|
repository = next();
|
|
break;
|
|
case "--wait-for-clawhub":
|
|
waitForClawHub = parseStrictBooleanArg(next(), "--wait-for-clawhub");
|
|
break;
|
|
case "--force-skip-clawhub":
|
|
forceSkipClawHub = parseStrictBooleanArg(next(), "--force-skip-clawhub");
|
|
break;
|
|
case "--normal-run-id":
|
|
normalRunId = next();
|
|
break;
|
|
case "--normal-publication-staged":
|
|
normalPublicationStaged = parseStrictBooleanArg(next(), "--normal-publication-staged");
|
|
break;
|
|
case "--bootstrap-run-id":
|
|
bootstrapRunId = next();
|
|
break;
|
|
case "--bootstrap-completed":
|
|
bootstrapCompleted = parseStrictBooleanArg(next(), "--bootstrap-completed");
|
|
break;
|
|
default:
|
|
throw new Error(`Unknown argument: ${arg}`);
|
|
}
|
|
}
|
|
|
|
if (!repository?.trim()) {
|
|
throw new Error("--repository is required.");
|
|
}
|
|
if (waitForClawHub === undefined) {
|
|
throw new Error("--wait-for-clawhub is required.");
|
|
}
|
|
if (forceSkipClawHub === undefined) {
|
|
throw new Error("--force-skip-clawhub is required.");
|
|
}
|
|
if (bootstrapCompleted === undefined) {
|
|
throw new Error("--bootstrap-completed is required.");
|
|
}
|
|
|
|
return {
|
|
repository,
|
|
waitForClawHub,
|
|
forceSkipClawHub,
|
|
normalRunId,
|
|
normalPublicationStaged,
|
|
bootstrapRunId,
|
|
bootstrapCompleted,
|
|
};
|
|
}
|
|
|
|
try {
|
|
const state = buildOpenClawReleaseClawHubRuntimeState(parseArgs(process.argv.slice(2)));
|
|
process.stdout.write(`${JSON.stringify(state, null, 2)}\n`);
|
|
} catch (error) {
|
|
const message = error instanceof Error ? error.message : String(error);
|
|
console.error(message);
|
|
process.exit(1);
|
|
}
|