Files
waggle-os/.github/workflows/hive-mind-cli-cross-platform.yml
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

102 lines
3.9 KiB
YAML

name: hive-mind-cli cross-platform install + smoke
# Wave 1 cleanup brief 2026-04-29 §3.5 — windows-latest CI regression test.
# Verifies that `npm install -g @waggle/hive-mind-cli` followed by `hive-mind-cli doctor`
# works without ENOENT, quarantine, or manual debug on Windows + macOS + Linux.
#
# Acceptance per feedback_memory_install_dead_simple binding rule:
# - All three OS matrix cells PASS green
# - Zero manual intervention required
# - First MCP-style tool call (the doctor smoke test) succeeds in <60s
on:
push:
branches: [main, 'feature/**']
paths:
- 'packages/hive-mind-cli/**'
- 'packages/hive-mind-shim-core/**'
- 'packages/hive-mind-core/**'
- 'packages/hive-mind-mcp-server/**'
- 'packages/hive-mind-wiki-compiler/**'
- 'packages/hive-mind-hooks-claude-code/**'
- '.github/workflows/hive-mind-cli-cross-platform.yml'
pull_request:
branches: [main]
paths:
- 'packages/hive-mind-cli/**'
- 'packages/hive-mind-shim-core/**'
- 'packages/hive-mind-core/**'
jobs:
install-and-smoke:
name: ${{ matrix.os }} install + smoke
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
node-version: ['20.x']
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install workspace deps
run: npm install
# hive-mind-core imports @waggle/shared, whose dist/ is gitignored and so
# absent on a clean checkout. hive-mind-core/tsconfig declares no project
# reference to it (the OSS subtree-split mirrors that tsconfig, so a
# ../shared reference would dangle in the export root), so `tsc --build`
# won't bootstrap it. Build shared first — same as ci.yml/tauri-build-pr.yml.
- name: Build @waggle/shared (hive-mind-core dep)
run: cd packages/shared && npx tsc --build
- name: Build hive-mind-core (substrate)
run: cd packages/hive-mind-core && npx tsc --build
- name: Build hive-mind-wiki-compiler
run: cd packages/hive-mind-wiki-compiler && npx tsc --build
- name: Build hive-mind-mcp-server
run: cd packages/hive-mind-mcp-server && npx tsc --build
- name: Build hive-mind-cli
run: cd packages/hive-mind-cli && npx tsc --build
- name: Run postinstall (bundles fix on win32, no-op POSIX)
run: node packages/hive-mind-cli/postinstall.cjs
- name: Init hive-mind data dir (scaffold personal.mind for the smoke)
run: node packages/hive-mind-cli/dist/index.js init
env:
HIVE_MIND_DATA_DIR: ${{ runner.temp }}/waggle-ci-home
- name: Smoke test — hive-mind-cli doctor (independent of upstream hook)
run: node packages/hive-mind-cli/dist/index.js doctor
env:
# doctor + init resolve the mind via HIVE_MIND_DATA_DIR (the CLI never
# reads WAGGLE_HOME — that prior env was a no-op). Isolate to a CI temp
# dir; init above scaffolds personal.mind there so doctor finds it.
HIVE_MIND_DATA_DIR: ${{ runner.temp }}/waggle-ci-home
- name: Doctor smoke result must be green (no quarantine, no ENOENT)
run: |
# If we got here, doctor exited 0 — green. Re-emit a confirmation marker
# so log scrapers see the success line clearly.
echo "::notice title=hive-mind-cli doctor passed::Cross-platform install + smoke verified on ${{ matrix.os }}"
shell: bash
acceptance:
name: Wave 1 acceptance gate
runs-on: ubuntu-latest
needs: install-and-smoke
steps:
- name: All matrix cells passed
run: echo "Wave 1 dead-simple acceptance criteria met across windows-latest + macos-latest + ubuntu-latest."