The stable and dogfood OpenClaw source pins need different public-surface hardlink patch shapes while upstream is still catching up. Select the right patch per source and make package contents import the OpenAI provider policy public surface, which is the path the gateway uses before a model run. Tests: nix fmt --accept-flake-config; git diff --check; remote mac-mini nix build .#checks.aarch64-darwin.package-contents-dogfood --no-link; remote mac-mini nix build .#checks.aarch64-darwin.package-contents --no-link Co-authored-by: Codex <noreply@openai.com>
93 lines
3.0 KiB
Bash
Executable File
93 lines
3.0 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
if [ -z "${OPENCLAW_GATEWAY:-}" ]; then
|
|
echo "OPENCLAW_GATEWAY is not set" >&2
|
|
exit 1
|
|
fi
|
|
|
|
root="${OPENCLAW_GATEWAY}/lib/openclaw"
|
|
|
|
require_path() {
|
|
if [ ! -e "$1" ]; then
|
|
echo "Missing: $1" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
require_path "${root}/extensions"
|
|
require_path "${root}/extensions/memory-core"
|
|
require_path "${root}/extensions/memory-core/openclaw.plugin.json"
|
|
require_path "${root}/dist/extensions/memory-core/openclaw.plugin.json"
|
|
require_path "${root}/dist-runtime/extensions"
|
|
require_path "${root}/dist-runtime/extensions/memory-core/openclaw.plugin.json"
|
|
require_path "${root}/dist-runtime/extensions/acpx/openclaw.plugin.json"
|
|
require_path "${root}/dist-runtime/extensions/acpx/package.json"
|
|
require_path "${root}/dist-runtime/extensions/acpx/index.js"
|
|
require_path "${root}/dist-runtime/extensions/acpx/error-format.mjs"
|
|
require_path "${root}/dist-runtime/extensions/acpx/mcp-command-line.mjs"
|
|
require_path "${root}/dist-runtime/extensions/acpx/mcp-proxy.mjs"
|
|
require_path "${root}/docs/reference/templates"
|
|
require_path "${root}/docs/reference/templates/AGENTS.md"
|
|
require_path "${root}/docs/reference/templates/SOUL.md"
|
|
require_path "${root}/docs/reference/templates/TOOLS.md"
|
|
require_path "${root}/skills"
|
|
require_path "${root}/node_modules/hasown"
|
|
require_path "${root}/node_modules/combined-stream"
|
|
|
|
public_surface_loader="$(
|
|
find "${root}/dist" -name "*.js" -type f -exec grep -sl "function loadBundledPluginPublicArtifactModuleSync" {} + | head -1
|
|
)"
|
|
if [ -z "$public_surface_loader" ]; then
|
|
echo "Missing bundled plugin public surface loader" >&2
|
|
exit 1
|
|
fi
|
|
if grep -q "rejectHardlinks: true" "$public_surface_loader"; then
|
|
echo "Bundled plugin public surface loader still rejects hardlinked package files" >&2
|
|
exit 1
|
|
fi
|
|
export PUBLIC_SURFACE_LOADER="$public_surface_loader"
|
|
node --input-type=module <<'NODE'
|
|
import { pathToFileURL } from "node:url";
|
|
|
|
const loaderPath = process.env.PUBLIC_SURFACE_LOADER;
|
|
if (!loaderPath) {
|
|
throw new Error("PUBLIC_SURFACE_LOADER is not set");
|
|
}
|
|
|
|
const loader = await import(pathToFileURL(loaderPath).href);
|
|
const loadBundledPluginPublicArtifactModuleSync =
|
|
loader.loadBundledPluginPublicArtifactModuleSync ?? loader.t;
|
|
|
|
if (typeof loadBundledPluginPublicArtifactModuleSync !== "function") {
|
|
throw new Error("Bundled plugin public surface loader export not found");
|
|
}
|
|
|
|
loadBundledPluginPublicArtifactModuleSync({
|
|
dirName: "openai",
|
|
artifactBasename: "provider-policy-api.js",
|
|
});
|
|
NODE
|
|
|
|
require_js_alias_target() {
|
|
alias="$1"
|
|
alias_path="${root}/dist/${alias}"
|
|
require_path "$alias_path"
|
|
|
|
target="$(sed -n 's/^export \* from "\.\/\(.*\)";$/\1/p' "$alias_path" | head -1)"
|
|
if [ -z "$target" ]; then
|
|
echo "Alias has no export target: $alias_path" >&2
|
|
exit 1
|
|
fi
|
|
require_path "${root}/dist/${target}"
|
|
}
|
|
|
|
require_js_alias_target "runtime-model-auth.runtime.js"
|
|
|
|
if ! find "${root}/skills" -name SKILL.md -type f | grep -q .; then
|
|
echo "Missing bundled SKILL.md files under ${root}/skills" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "openclaw package contents: ok"
|