Commit Graph

37 Commits

Author SHA1 Message Date
joshp123
54e09bce18 Expose runtime tools to OpenClaw Codex harness
Add Home Manager runtimePackages/environment options that feed the gateway wrapper without polluting the user PATH. Link the same runtime package set into Codex's isolated agent home so shell calls from the Codex harness see Nix-managed plugin and helper CLIs.

Tests: ./scripts/check-flake-lock-owners.sh; nix flake show --accept-flake-config; nix build --accept-flake-config .#checks.aarch64-darwin.ci --no-link; nix build --accept-flake-config .#checks.aarch64-darwin.qmd-runtime .#checks.aarch64-darwin.bin-surface .#checks.aarch64-darwin.package-contents --no-link; nix eval --accept-flake-config .#checks.x86_64-linux.default-instance.drvPath; ./scripts/hm-activation-macos.sh
2026-05-06 14:44:56 +02:00
joshp123
3abd2d14cb feat: bundle QMD for opt-in local memory
Make QMD the Nix-supported batteries-included local memory backend by pinning the upstream QMD flake and adding qmd to the private openclaw wrapper PATH.

Keep QMD opt-in through upstream OpenClaw config with memory.backend = qmd, and document that builtin memorySearch.provider = local remains an escape hatch rather than the primary supported Nix path.

Also point nix run .#openclaw at the batteries-included bundle so app execution gets the same internal runtime PATH as the package.

Tests: sh -n nix/scripts/check-openclaw-qmd-runtime.sh; scripts/check-flake-lock-owners.sh; git diff --check; nix flake show --accept-flake-config --json; nix build .#checks.aarch64-darwin.qmd-runtime .#checks.aarch64-darwin.bin-surface .#packages.aarch64-darwin.openclaw --accept-flake-config --no-link --print-out-paths; nix build .#checks.x86_64-linux.qmd-runtime --accept-flake-config --no-link --print-out-paths; nix build .#checks.aarch64-darwin.ci --accept-flake-config --no-link --print-out-paths; nix build .#packages.x86_64-linux.openclaw .#checks.x86_64-linux.bin-surface --accept-flake-config --no-link --print-out-paths; scripts/hm-activation-macos.sh; nix build .#checks.x86_64-linux.gateway-smoke --accept-flake-config --no-link --print-out-paths; nix run .#openclaw --accept-flake-config -- --version; bash -n scripts/update-pins.sh; node --check scripts/select-openclaw-release.mjs; node --check scripts/select-openclaw-release.test.mjs; node scripts/select-openclaw-release.test.mjs
2026-05-05 20:24:25 +02:00
joshp123
8c6267b2c3 fix: decouple source and mac app release pins
Select the latest stable OpenClaw source release independently from the newest public macOS app artifact. Report app lag instead of skipping source releases without desktop assets, and teach yolo to materialize source/app pins separately.

Tests: bash -n scripts/update-pins.sh; node --check scripts/select-openclaw-release.mjs scripts/select-openclaw-release.test.mjs; node scripts/select-openclaw-release.test.mjs; GITHUB_ACTIONS=true scripts/update-pins.sh select; ruby -e 'require "yaml"; YAML.load_file(".github/workflows/yolo-update.yml")'; nix flake show --accept-flake-config --json; git diff --check
2026-05-05 18:22:33 +02:00
joshp123
e16f9743fd chore: rename first-party tools flake input
What:
- replace nix-steipete-tools with nix-openclaw-tools across flake wiring
- pass first-party tool packages through the overlay and package set explicitly
- update the bundled plugin catalog for the renamed tool repo

Why:
- keep nix-openclaw aligned with the upstream OpenClaw tool repo rename
- avoid stale steipete naming in package and plugin resolution

Tests:
- git diff --cached --check: passed
- scripts/check-flake-lock-owners.sh: passed
- nix eval --raw .#packages.x86_64-linux.openclaw-tools.name --accept-flake-config: openclaw-tools
- nix eval --json --impure --expr '<overlay toolNames eval>': returned node/pnpm/core plus gogcli, goplaces, summarize, camsnap, sonoscli
2026-05-05 12:29:59 +02:00
joshp123
d9b42b0f77 test: cover OpenClaw plugin surface
Fix the documented minimal Home Manager plugin option to use customPlugins, remove the stale duplicate skill-file builder, and assert duplicate plugin skill paths against the paths Home Manager actually installs.

Add local plugin fixtures so the default-instance check covers the agent-facing customPlugins path and duplicate skill collisions.
2026-05-05 09:29:34 +02:00
joshp123
a468354c55 fix: harden OpenClaw Nix release packaging
What:
- make openclaw the canonical agent-first package surface and document the maintainer automation contract
- select the newest full packageable OpenClaw stable release and report newer assetless stable releases
- validate public CLI config, smoke-test gateway runtime, and share source checks across gateway tests/config option generation
- fix Nix-store hardlink runtime handling and Linux builder scratch space
- add daily Codex maintainer automation for direct-to-main repair after full gates
- block yolo promotion if promote materializes a different diff than validation

Why:
- keep nix-openclaw reliable for macOS and Linux users while upstream release assets lag source tags
- make yolo and daily automation uphold one clean Nix package contract

Tests:
- node scripts/select-openclaw-release.test.mjs
- bash -n scripts/update-pins.sh
- sh -n nix/scripts/build-root.sh nix/scripts/gateway-install.sh nix/scripts/gateway-prebuild.sh nix/scripts/gateway-tests-check.sh nix/scripts/source-checks-check.sh
- ruby -e 'require "yaml"; YAML.load_file(".github/workflows/yolo-update.yml")'
- scripts/check-flake-lock-owners.sh
- GITHUB_ACTIONS=true scripts/update-pins.sh select
- nix flake show --accept-flake-config
- nix build .#checks.aarch64-darwin.ci --accept-flake-config --max-jobs 1 -L
- nix build .#checks.x86_64-linux.ci --accept-flake-config --max-jobs 1 -L
2026-05-05 08:00:13 +02:00
joshp123
ed86924dd3 fix(release): hash the app zip the way fetchzip expects
The stable mirror had advanced main to v2026.4.14 with an app hash that only
matched prefetch output, not the unpacked tree hash that fetchzip validates.
That left macOS CI red on the pinned stable release.

Compute the app hash from the unpacked zip contents in update-pins.sh and fix
the current v2026.4.14 app pin to the actual fetchzip hash.

Tests:
- bash -n scripts/update-pins.sh
- nix build .#openclaw-app --accept-flake-config -L
2026-04-14 18:15:54 +02:00
joshp123
34e5f011b9 fix(ci): validate stable release bumps before promotion
What:
- split the stable-release updater into read-only selection and pin materialization modes
- rewrite yolo into select, validate-linux, validate-macos, and promote jobs
- fail yolo when the newest stable release is incomplete instead of silently sticking
- update maintainer docs to describe the new safe promotion policy

Why:
- stop direct yolo pushes from moving main without the same Linux and macOS proof as CI
- keep mirroring the newest stable release while making broken upstream releases visible

Tests:
- bash -n scripts/update-pins.sh
- ruby -e 'require "yaml"; YAML.load_file(".github/workflows/yolo-update.yml"); puts "yaml-ok"'
- GITHUB_ACTIONS=true GH_TOKEN="$(gh auth token)" scripts/update-pins.sh select
- temp copy pinned to v2026.4.11: scripts/update-pins.sh select emits v2026.4.14 tuple
2026-04-14 18:10:25 +02:00
joshp123
4e93f4ac56 feat(releases): mirror OpenClaw stable releases
What:
- switch the pin updater from upstream-main commit selection to upstream stable release selection
- restore Yolo Update Pins as an hourly stable-release poller
- update maintainer and README docs to describe stable-release mirroring and the recovery lesson

Why:
- OpenClaw stable is already tag-based upstream, and nix-openclaw should mirror that release line directly
- this removes the old latest-green-main churn model and keeps source + app pins tied to one published upstream release

Tests:
- bash -n scripts/update-pins.sh
- GITHUB_ACTIONS=true GH_TOKEN="$(gh auth token)" scripts/update-pins.sh
2026-04-10 16:05:01 +02:00
joshp123
15a35bc58d fix(ci): fail stale yolo runs and unblock offline A2UI build
What:
- export node_modules/.pnpm/node_modules/.bin in gateway build before canvas:a2ui:bundle
  so rolldown is found in sandbox/offline builds
- track openclaw bump failure in scripts/update-pins.sh and fail the workflow when
  openclaw upstream is ahead but no openclaw pin update was produced

Why:
- yolo was reporting success while silently restoring old pins
- openclaw bump attempts were repeatedly failing at A2UI bundling, keeping pins stale

Tests:
- bash -n scripts/update-pins.sh
- bash -n nix/scripts/gateway-build.sh
2026-02-26 16:07:31 +01:00
joshp123
f8681411dd refactor: share gateway build plumbing + stamp config-options provenance 2026-02-14 23:24:31 -08:00
joshp123
807a6563ab chore: make update-pins best-effort for tools vs openclaw 2026-02-14 20:13:41 -08:00
DJTBOT
99b8afffab chore: roll forward to OpenClaw rename
What:
- update pin bump workflow to select OpenClaw-*.zip (not legacy Clawdbot assets)
- modernize updater to use `nix flake update --update-input …`
- standardize HM app install paths to OpenClaw.app

Why:
- upstream renamed Clawdbot -> OpenClaw; we should pin the current artifacts
- ensure pin bumps pull in upstream model catalog / pi updates

Tests:
- bash -n scripts/update-pins.sh
2026-02-05 12:57:09 -08:00
DJTBOT
5ee2f8190c ci: add HM activation tests
Add a Linux nixosTest for Home Manager activation and a macOS CI workflow to run the activation script.

Wire the new Linux check into flake checks and Garnix.

Tests: not run (CI wiring).
2026-02-01 00:15:26 +01:00
DJTBOT
635d66ed36 🐛 fix: allow openclaw org in flake lock owners check 2026-01-30 14:47:59 +01:00
DJTBOT
9d8bafc4a8 🔄 rebrand: moltbot → openclaw
Rename all packages, modules, scripts, docs from moltbot to openclaw.

- Packages: moltbot-gateway → openclaw-gateway, moltbot → openclaw
- Binary: mainProgram now 'openclaw' (matches upstream package.json)
- Modules: homeManagerModules.openclaw, darwinModules.openclaw
- Programs: programs.openclaw
- Paths: ~/.openclaw, /tmp/openclaw, lib/openclaw
- Env vars: OPENCLAW_LOG_DIR, OPENCLAW_RELOAD_HM_CMD
- Launchd: com.steipete.openclaw.*
- Plugin API: openclawPlugin
- Kept: CLAWDBOT_* env vars (upstream still uses these)
- Kept: upstream source patch match string in gateway-postpatch.sh

Tests: not run locally (x86_64-linux; CI will validate)
2026-01-30 14:34:49 +01:00
DJTBOT
9bcb3cbfd0 Pins: unpack prefetched source tarball in update-pins
What: handle prefetched tarball store paths when regenerating config options
Why: nix store prefetch-file now returns tarball path even with --unpack
Tests: not run (script change)
2026-01-29 18:18:44 +01:00
DJTBOT
8bcb2b7771 🤖 refresh nix-steipete-tools input in yolo pins
What:
- update nix-steipete-tools flake input
- yolo update-pins now bumps nix-steipete-tools and stages flake.lock

Why:
- keep tool packaging updates flowing into nix-moltbot

Tests:
- not run (update-pins handles builds)
2026-01-28 21:36:06 +01:00
DJTBOT
48930e35b2 🤖 add flake.lock owner allowlist
What:
- add flake.lock GitHub owner allowlist + check script
- run allowlist check in config-options CI

Why:
- guard against unexpected supply-chain inputs

Tests:
- scripts/check-flake-lock-owners.sh flake.lock scripts/allowed-flake-lock-owners.txt
2026-01-28 16:09:54 +01:00
DJTBOT
f0482a8a0c 🤖 rename nix-moltbot surfaces to moltbot
What:
- rename Clawdbot modules/packages/scripts/docs to Moltbot naming
- update yolo updater + config generation for Moltbot schema
- keep Clawdbot app asset names + env exports for upstream compatibility

Why:
- align Nix packaging with moltbot org rename
- fix hourly pin update failures after schema rename

Tests:
- not run (blocked on updated nix-moltbot remote for full nixos-config build)
2026-01-28 12:21:06 +01:00
DJTBOT
f7a287fb28 🤖 codex: update app pin helper + docs channel
What:
- accept Clawdbot/Clawdis app zip names in update-pins
- auto-fix app hash when fetchzip differs
- rename Discord channel reference in README

Why:
- upstream release assets renamed
- keep pin updates reliable

Tests:
- not run (script change only)
2026-01-17 20:28:17 +01:00
DJTBOT
942f05228d 🤖 codex: keep config options fresh on pin bumps 2026-01-11 16:40:39 +01:00
DJTBOT
4a4bd7262b 🤖 codex: gate yolo pins on non-windows CI (no-issue)
What:
- require upstream non-windows check runs to be green before trying a SHA
- keep local build validation in place for pnpm hash resolution

Why:
- honor yolo mode without blocking on Windows-only failures

Tests:
- nix flake check --accept-flake-config
2026-01-09 17:49:14 +01:00
DJTBOT
5e04694321 🤖 codex: rebase yolo pins before push (no-issue)
What:
- rebase on latest main before pushing yolo pin updates

Why:
- avoid non-fast-forward failures when main advances during the job

Tests:
- nix flake check --accept-flake-config
- ubs --diff
2026-01-09 17:43:46 +01:00
DJTBOT
a4eb80fec5 🤖 codex: skip app build on linux yolo (no-issue)
What:
- only build clawdbot-app on darwin during yolo updates

Why:
- linux runners don't expose clawdbot-app in flake outputs

Tests:
- nix flake check --accept-flake-config
- ubs --diff
2026-01-09 17:39:16 +01:00
DJTBOT
9125cb7cd5 🤖 codex: gate yolo pins on buildable upstream (no-issue)
What:
- try recent upstream SHAs until nix build succeeds
- keep pnpmDepsHash recalculation working per candidate

Why:
- allow yolo pins to advance when upstream builds (ignore unrelated CI failures)

Tests:
- nix flake check --accept-flake-config
- ubs --diff
2026-01-09 17:34:57 +01:00
DJTBOT
369ef04321 🤖 codex: bump clawdbot pins + fix updater (no-issue)
What:
- pin clawdbot source to latest upstream main
- repair yolo updater pnpmDepsHash replacement when empty

Why:
- keep yolo pins moving and prevent empty hash regressions

Tests:
- nix build .#clawdbot-gateway --accept-flake-config
- nix build .#clawdbot-app --accept-flake-config
- nix flake check --accept-flake-config
- ubs --diff
2026-01-09 15:22:43 +01:00
DJTBOT
ee70a64327 🤖 codex: avoid grep pipefail exit (no-issue)
What:
- tolerate missing pnpm hash in build log

Why:
- ensure updater prints build errors instead of exiting silently

Tests:
- nix flake check --accept-flake-config
2026-01-09 11:48:19 +01:00
DJTBOT
b65353e3cb 🤖 codex: log pnpm hash failures (no-issue)
What:
- log pnpmDepsHash mismatch and print tail of build logs on failure

Why:
- surface actionable errors from the yolo updater

Tests:
- nix flake check --accept-flake-config
2026-01-09 11:45:22 +01:00
DJTBOT
69b12f1749 🤖 codex: fix app asset selection + build logging (no-issue)
What:
- avoid selecting dSYM zips for the macOS app
- surface build logs if pnpmDepsHash validation fails

Why:
- keep yolo updater resilient and diagnosable

Tests:
- nix flake check --accept-flake-config
2026-01-09 11:42:43 +01:00
DJTBOT
41c3d65199 🤖 codex: add updater logging (no-issue)
What:
- add progress logging to the yolo updater steps

Why:
- make CI failures diagnosable in workflow logs

Tests:
- nix flake check --accept-flake-config
2026-01-09 11:39:51 +01:00
DJTBOT
953ad0bd6f 🤖 codex: guard updater network calls (no-issue)
What:
- handle ls-remote and release API failures gracefully

Why:
- make yolo updater errors visible in CI logs

Tests:
- nix flake check --accept-flake-config
2026-01-09 11:36:46 +01:00
DJTBOT
206210417d 🤖 codex: prefetch unpacked hashes (no-issue)
What:
- prefetch unpacked hashes for source tarball and app zip

Why:
- match fetchFromGitHub/fetchzip hashing semantics

Tests:
- nix flake check --accept-flake-config
2026-01-09 11:33:40 +01:00
DJTBOT
205efa7648 🤖 codex: pick latest app release with asset (no-issue)
What:
- select the latest release that includes a Clawdis zip asset

Why:
- avoid updater failures when the newest release lacks app artifacts

Tests:
- nix flake check --accept-flake-config
2026-01-09 11:31:16 +01:00
DJTBOT
3f5d60e433 🤖 codex: fix updater replacements (no-issue)
What:
- use safe perl delimiters for hash/url replacements

Why:
- prevent CI failures when hashes contain slashes

Tests:
- nix flake check --accept-flake-config
2026-01-09 11:29:37 +01:00
DJTBOT
9a0a2f746f 🤖 codex: harden yolo updater (no-issue)
What:
- make prefetch steps explicit and parse via jq
- add nix-command feature flags and clearer error output

Why:
- fix CI failures resolving source/app hashes

Tests:
- nix flake check --accept-flake-config
2026-01-09 11:27:45 +01:00
DJTBOT
7b4ffc2443 🤖 codex: add yolo pin updater (no-issue)
What:
- add hourly GitHub Action to update clawdbot source/app pins
- add updater script to resolve main SHA, release asset, and hashes

Why:
- keep nix-clawdbot tracking upstream main automatically

Tests:
- nix flake check --accept-flake-config
2026-01-09 01:34:14 +01:00