109 lines
4.1 KiB
YAML
109 lines
4.1 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/**'
|
|
- 'vendor/pptxgenjs/**'
|
|
- 'package.json'
|
|
- 'package-lock.json'
|
|
- '.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/**'
|
|
- 'vendor/pptxgenjs/**'
|
|
- 'package.json'
|
|
- 'package-lock.json'
|
|
- '.github/workflows/hive-mind-cli-cross-platform.yml'
|
|
|
|
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 ci
|
|
|
|
# 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."
|