bigpowers 2.82.4 → 2.83.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/align-grid/SKILL.md +110 -0
- package/.agents/skills/assess-impact/SKILL.md +91 -0
- package/.agents/skills/audit-code/SKILL.md +187 -0
- package/.agents/skills/audit-plan/SKILL.md +89 -0
- package/.agents/skills/build-epic/SKILL.md +105 -0
- package/.agents/skills/change-request/SKILL.md +121 -0
- package/.agents/skills/commit-message/SKILL.md +140 -0
- package/.agents/skills/compose-workflow/SKILL.md +82 -0
- package/.agents/skills/context7-mcp/SKILL.md +55 -0
- package/.agents/skills/craft-skill/SKILL.md +179 -0
- package/.agents/skills/deepen-architecture/SKILL.md +260 -0
- package/.agents/skills/define-language/SKILL.md +80 -0
- package/.agents/skills/define-success/SKILL.md +65 -0
- package/.agents/skills/delegate-task/SKILL.md +91 -0
- package/.agents/skills/deploy/SKILL.md +198 -0
- package/.agents/skills/design-interface/SKILL.md +97 -0
- package/.agents/skills/develop-tdd/SKILL.md +406 -0
- package/.agents/skills/diagnose-root/SKILL.md +24 -0
- package/.agents/skills/diagnose-stall/SKILL.md +54 -0
- package/.agents/skills/dispatch-agents/SKILL.md +118 -0
- package/.agents/skills/edit-document/SKILL.md +23 -0
- package/.agents/skills/elaborate-spec/SKILL.md +101 -0
- package/.agents/skills/enforce-first/SKILL.md +32 -0
- package/.agents/skills/evolve-skill/SKILL.md +55 -0
- package/.agents/skills/execute-plan/SKILL.md +61 -0
- package/.agents/skills/extract-design/SKILL.md +132 -0
- package/.agents/skills/find-way/SKILL.md +191 -0
- package/.agents/skills/fix-bug/SKILL.md +67 -0
- package/.agents/skills/gate-trace/SKILL.md +88 -0
- package/.agents/skills/generate-allure-report/SKILL.md +285 -0
- package/.agents/skills/grill-me/SKILL.md +96 -0
- package/.agents/skills/grill-with-docs/SKILL.md +41 -0
- package/.agents/skills/guard-git/SKILL.md +231 -0
- package/.agents/skills/harden-vps/SKILL.md +288 -0
- package/.agents/skills/hook-commits/SKILL.md +94 -0
- package/.agents/skills/inspect-quality/SKILL.md +106 -0
- package/.agents/skills/investigate-bug/SKILL.md +127 -0
- package/.agents/skills/kickoff-branch/SKILL.md +143 -0
- package/.agents/skills/maintain-wiki/SKILL.md +64 -0
- package/.agents/skills/map-codebase/SKILL.md +71 -0
- package/.agents/skills/migrate-spec/SKILL.md +862 -0
- package/.agents/skills/model-domain/SKILL.md +232 -0
- package/.agents/skills/orchestrate-project/SKILL.md +174 -0
- package/.agents/skills/organize-workspace/SKILL.md +164 -0
- package/.agents/skills/plan-refactor/SKILL.md +87 -0
- package/.agents/skills/plan-release/SKILL.md +145 -0
- package/.agents/skills/plan-tests/SKILL.md +75 -0
- package/.agents/skills/plan-work/SKILL.md +260 -0
- package/.agents/skills/publish-package/SKILL.md +328 -0
- package/.agents/skills/quick-fix/SKILL.md +114 -0
- package/.agents/skills/release-branch/SKILL.md +298 -0
- package/.agents/skills/request-review/SKILL.md +112 -0
- package/.agents/skills/research-first/SKILL.md +87 -0
- package/.agents/skills/reset-baseline/SKILL.md +21 -0
- package/.agents/skills/respond-review/SKILL.md +71 -0
- package/.agents/skills/run-benchmark/SKILL.md +85 -0
- package/.agents/skills/run-evals/SKILL.md +80 -0
- package/.agents/skills/run-planning/SKILL.md +101 -0
- package/.agents/skills/scope-work/SKILL.md +63 -0
- package/.agents/skills/search-skills/SKILL.md +73 -0
- package/.agents/skills/security-review/SKILL.md +384 -0
- package/.agents/skills/seed-conventions/SKILL.md +285 -0
- package/.agents/skills/session-state/SKILL.md +146 -0
- package/.agents/skills/setup-environment/SKILL.md +39 -0
- package/.agents/skills/simulate-agents/SKILL.md +26 -0
- package/.agents/skills/slice-tasks/SKILL.md +68 -0
- package/.agents/skills/smoke-test/SKILL.md +242 -0
- package/.agents/skills/spike-prototype/SKILL.md +95 -0
- package/.agents/skills/stocktake-skills/SKILL.md +72 -0
- package/.agents/skills/survey-context/SKILL.md +135 -0
- package/.agents/skills/terse-mode/SKILL.md +42 -0
- package/.agents/skills/trace-requirement/SKILL.md +69 -0
- package/.agents/skills/using-bigpowers/SKILL.md +111 -0
- package/.agents/skills/validate-contracts/SKILL.md +309 -0
- package/.agents/skills/validate-fix/SKILL.md +106 -0
- package/.agents/skills/verify-work/SKILL.md +191 -0
- package/.agents/skills/visual-dashboard/SKILL.md +50 -0
- package/.agents/skills/wire-ci/SKILL.md +375 -0
- package/.agents/skills/wire-observability/SKILL.md +97 -0
- package/.agents/skills/write-document/SKILL.md +255 -0
- package/.hermes/skills/align-grid/SKILL.md +110 -0
- package/.hermes/skills/assess-impact/SKILL.md +91 -0
- package/.hermes/skills/audit-code/SKILL.md +187 -0
- package/.hermes/skills/audit-plan/SKILL.md +89 -0
- package/.hermes/skills/build-epic/SKILL.md +105 -0
- package/.hermes/skills/change-request/SKILL.md +121 -0
- package/.hermes/skills/commit-message/SKILL.md +140 -0
- package/.hermes/skills/compose-workflow/SKILL.md +82 -0
- package/.hermes/skills/context7-mcp/SKILL.md +55 -0
- package/.hermes/skills/craft-skill/SKILL.md +179 -0
- package/.hermes/skills/deepen-architecture/SKILL.md +260 -0
- package/.hermes/skills/define-language/SKILL.md +80 -0
- package/.hermes/skills/define-success/SKILL.md +65 -0
- package/.hermes/skills/delegate-task/SKILL.md +91 -0
- package/.hermes/skills/deploy/SKILL.md +198 -0
- package/.hermes/skills/design-interface/SKILL.md +97 -0
- package/.hermes/skills/develop-tdd/SKILL.md +406 -0
- package/.hermes/skills/diagnose-root/SKILL.md +24 -0
- package/.hermes/skills/diagnose-stall/SKILL.md +54 -0
- package/.hermes/skills/dispatch-agents/SKILL.md +118 -0
- package/.hermes/skills/edit-document/SKILL.md +23 -0
- package/.hermes/skills/elaborate-spec/SKILL.md +101 -0
- package/.hermes/skills/enforce-first/SKILL.md +32 -0
- package/.hermes/skills/evolve-skill/SKILL.md +55 -0
- package/.hermes/skills/execute-plan/SKILL.md +61 -0
- package/.hermes/skills/extract-design/SKILL.md +132 -0
- package/.hermes/skills/find-way/SKILL.md +191 -0
- package/.hermes/skills/fix-bug/SKILL.md +67 -0
- package/.hermes/skills/gate-trace/SKILL.md +88 -0
- package/.hermes/skills/generate-allure-report/SKILL.md +285 -0
- package/.hermes/skills/grill-me/SKILL.md +96 -0
- package/.hermes/skills/grill-with-docs/SKILL.md +41 -0
- package/.hermes/skills/guard-git/SKILL.md +231 -0
- package/.hermes/skills/harden-vps/SKILL.md +288 -0
- package/.hermes/skills/hook-commits/SKILL.md +94 -0
- package/.hermes/skills/inspect-quality/SKILL.md +106 -0
- package/.hermes/skills/investigate-bug/SKILL.md +127 -0
- package/.hermes/skills/kickoff-branch/SKILL.md +143 -0
- package/.hermes/skills/maintain-wiki/SKILL.md +64 -0
- package/.hermes/skills/map-codebase/SKILL.md +71 -0
- package/.hermes/skills/migrate-spec/SKILL.md +862 -0
- package/.hermes/skills/model-domain/SKILL.md +232 -0
- package/.hermes/skills/orchestrate-project/SKILL.md +174 -0
- package/.hermes/skills/organize-workspace/SKILL.md +164 -0
- package/.hermes/skills/plan-refactor/SKILL.md +87 -0
- package/.hermes/skills/plan-release/SKILL.md +145 -0
- package/.hermes/skills/plan-tests/SKILL.md +75 -0
- package/.hermes/skills/plan-work/SKILL.md +260 -0
- package/.hermes/skills/publish-package/SKILL.md +328 -0
- package/.hermes/skills/quick-fix/SKILL.md +114 -0
- package/.hermes/skills/release-branch/SKILL.md +298 -0
- package/.hermes/skills/request-review/SKILL.md +112 -0
- package/.hermes/skills/research-first/SKILL.md +87 -0
- package/.hermes/skills/reset-baseline/SKILL.md +21 -0
- package/.hermes/skills/respond-review/SKILL.md +71 -0
- package/.hermes/skills/run-benchmark/SKILL.md +85 -0
- package/.hermes/skills/run-evals/SKILL.md +80 -0
- package/.hermes/skills/run-planning/SKILL.md +101 -0
- package/.hermes/skills/scope-work/SKILL.md +63 -0
- package/.hermes/skills/search-skills/SKILL.md +73 -0
- package/.hermes/skills/security-review/SKILL.md +384 -0
- package/.hermes/skills/seed-conventions/SKILL.md +285 -0
- package/.hermes/skills/session-state/SKILL.md +146 -0
- package/.hermes/skills/setup-environment/SKILL.md +39 -0
- package/.hermes/skills/simulate-agents/SKILL.md +26 -0
- package/.hermes/skills/slice-tasks/SKILL.md +68 -0
- package/.hermes/skills/smoke-test/SKILL.md +242 -0
- package/.hermes/skills/spike-prototype/SKILL.md +95 -0
- package/.hermes/skills/stocktake-skills/SKILL.md +72 -0
- package/.hermes/skills/survey-context/SKILL.md +135 -0
- package/.hermes/skills/terse-mode/SKILL.md +42 -0
- package/.hermes/skills/trace-requirement/SKILL.md +69 -0
- package/.hermes/skills/using-bigpowers/SKILL.md +111 -0
- package/.hermes/skills/validate-contracts/SKILL.md +309 -0
- package/.hermes/skills/validate-fix/SKILL.md +106 -0
- package/.hermes/skills/verify-work/SKILL.md +191 -0
- package/.hermes/skills/visual-dashboard/SKILL.md +50 -0
- package/.hermes/skills/wire-ci/SKILL.md +375 -0
- package/.hermes/skills/wire-observability/SKILL.md +97 -0
- package/.hermes/skills/write-document/SKILL.md +255 -0
- package/.mimocode/skills/align-grid/SKILL.md +110 -0
- package/.mimocode/skills/assess-impact/SKILL.md +91 -0
- package/.mimocode/skills/audit-code/SKILL.md +187 -0
- package/.mimocode/skills/audit-plan/SKILL.md +89 -0
- package/.mimocode/skills/build-epic/SKILL.md +105 -0
- package/.mimocode/skills/change-request/SKILL.md +121 -0
- package/.mimocode/skills/commit-message/SKILL.md +140 -0
- package/.mimocode/skills/compose-workflow/SKILL.md +82 -0
- package/.mimocode/skills/context7-mcp/SKILL.md +55 -0
- package/.mimocode/skills/craft-skill/SKILL.md +179 -0
- package/.mimocode/skills/deepen-architecture/SKILL.md +260 -0
- package/.mimocode/skills/define-language/SKILL.md +80 -0
- package/.mimocode/skills/define-success/SKILL.md +65 -0
- package/.mimocode/skills/delegate-task/SKILL.md +91 -0
- package/.mimocode/skills/deploy/SKILL.md +198 -0
- package/.mimocode/skills/design-interface/SKILL.md +97 -0
- package/.mimocode/skills/develop-tdd/SKILL.md +406 -0
- package/.mimocode/skills/diagnose-root/SKILL.md +24 -0
- package/.mimocode/skills/diagnose-stall/SKILL.md +54 -0
- package/.mimocode/skills/dispatch-agents/SKILL.md +118 -0
- package/.mimocode/skills/edit-document/SKILL.md +23 -0
- package/.mimocode/skills/elaborate-spec/SKILL.md +101 -0
- package/.mimocode/skills/enforce-first/SKILL.md +32 -0
- package/.mimocode/skills/evolve-skill/SKILL.md +55 -0
- package/.mimocode/skills/execute-plan/SKILL.md +61 -0
- package/.mimocode/skills/extract-design/SKILL.md +132 -0
- package/.mimocode/skills/find-way/SKILL.md +191 -0
- package/.mimocode/skills/fix-bug/SKILL.md +67 -0
- package/.mimocode/skills/gate-trace/SKILL.md +88 -0
- package/.mimocode/skills/generate-allure-report/SKILL.md +285 -0
- package/.mimocode/skills/grill-me/SKILL.md +96 -0
- package/.mimocode/skills/grill-with-docs/SKILL.md +41 -0
- package/.mimocode/skills/guard-git/SKILL.md +231 -0
- package/.mimocode/skills/harden-vps/SKILL.md +288 -0
- package/.mimocode/skills/hook-commits/SKILL.md +94 -0
- package/.mimocode/skills/inspect-quality/SKILL.md +106 -0
- package/.mimocode/skills/investigate-bug/SKILL.md +127 -0
- package/.mimocode/skills/kickoff-branch/SKILL.md +143 -0
- package/.mimocode/skills/maintain-wiki/SKILL.md +64 -0
- package/.mimocode/skills/map-codebase/SKILL.md +71 -0
- package/.mimocode/skills/migrate-spec/SKILL.md +862 -0
- package/.mimocode/skills/model-domain/SKILL.md +232 -0
- package/.mimocode/skills/orchestrate-project/SKILL.md +174 -0
- package/.mimocode/skills/organize-workspace/SKILL.md +164 -0
- package/.mimocode/skills/plan-refactor/SKILL.md +87 -0
- package/.mimocode/skills/plan-release/SKILL.md +145 -0
- package/.mimocode/skills/plan-tests/SKILL.md +75 -0
- package/.mimocode/skills/plan-work/SKILL.md +260 -0
- package/.mimocode/skills/publish-package/SKILL.md +328 -0
- package/.mimocode/skills/quick-fix/SKILL.md +114 -0
- package/.mimocode/skills/release-branch/SKILL.md +298 -0
- package/.mimocode/skills/request-review/SKILL.md +112 -0
- package/.mimocode/skills/research-first/SKILL.md +87 -0
- package/.mimocode/skills/reset-baseline/SKILL.md +21 -0
- package/.mimocode/skills/respond-review/SKILL.md +71 -0
- package/.mimocode/skills/run-benchmark/SKILL.md +85 -0
- package/.mimocode/skills/run-evals/SKILL.md +80 -0
- package/.mimocode/skills/run-planning/SKILL.md +101 -0
- package/.mimocode/skills/scope-work/SKILL.md +63 -0
- package/.mimocode/skills/search-skills/SKILL.md +73 -0
- package/.mimocode/skills/security-review/SKILL.md +384 -0
- package/.mimocode/skills/seed-conventions/SKILL.md +285 -0
- package/.mimocode/skills/session-state/SKILL.md +146 -0
- package/.mimocode/skills/setup-environment/SKILL.md +39 -0
- package/.mimocode/skills/simulate-agents/SKILL.md +26 -0
- package/.mimocode/skills/slice-tasks/SKILL.md +68 -0
- package/.mimocode/skills/smoke-test/SKILL.md +242 -0
- package/.mimocode/skills/spike-prototype/SKILL.md +95 -0
- package/.mimocode/skills/stocktake-skills/SKILL.md +72 -0
- package/.mimocode/skills/survey-context/SKILL.md +135 -0
- package/.mimocode/skills/terse-mode/SKILL.md +42 -0
- package/.mimocode/skills/trace-requirement/SKILL.md +69 -0
- package/.mimocode/skills/using-bigpowers/SKILL.md +111 -0
- package/.mimocode/skills/validate-contracts/SKILL.md +309 -0
- package/.mimocode/skills/validate-fix/SKILL.md +106 -0
- package/.mimocode/skills/verify-work/SKILL.md +191 -0
- package/.mimocode/skills/visual-dashboard/SKILL.md +50 -0
- package/.mimocode/skills/wire-ci/SKILL.md +375 -0
- package/.mimocode/skills/wire-observability/SKILL.md +97 -0
- package/.mimocode/skills/write-document/SKILL.md +255 -0
- package/.pi/package.json +1 -1
- package/.zcode/skills/align-grid/SKILL.md +110 -0
- package/.zcode/skills/assess-impact/SKILL.md +91 -0
- package/.zcode/skills/audit-code/SKILL.md +187 -0
- package/.zcode/skills/audit-plan/SKILL.md +89 -0
- package/.zcode/skills/build-epic/SKILL.md +105 -0
- package/.zcode/skills/change-request/SKILL.md +121 -0
- package/.zcode/skills/commit-message/SKILL.md +140 -0
- package/.zcode/skills/compose-workflow/SKILL.md +82 -0
- package/.zcode/skills/context7-mcp/SKILL.md +55 -0
- package/.zcode/skills/craft-skill/SKILL.md +179 -0
- package/.zcode/skills/deepen-architecture/SKILL.md +260 -0
- package/.zcode/skills/define-language/SKILL.md +80 -0
- package/.zcode/skills/define-success/SKILL.md +65 -0
- package/.zcode/skills/delegate-task/SKILL.md +91 -0
- package/.zcode/skills/deploy/SKILL.md +198 -0
- package/.zcode/skills/design-interface/SKILL.md +97 -0
- package/.zcode/skills/develop-tdd/SKILL.md +406 -0
- package/.zcode/skills/diagnose-root/SKILL.md +24 -0
- package/.zcode/skills/diagnose-stall/SKILL.md +54 -0
- package/.zcode/skills/dispatch-agents/SKILL.md +118 -0
- package/.zcode/skills/edit-document/SKILL.md +23 -0
- package/.zcode/skills/elaborate-spec/SKILL.md +101 -0
- package/.zcode/skills/enforce-first/SKILL.md +32 -0
- package/.zcode/skills/evolve-skill/SKILL.md +55 -0
- package/.zcode/skills/execute-plan/SKILL.md +61 -0
- package/.zcode/skills/extract-design/SKILL.md +132 -0
- package/.zcode/skills/find-way/SKILL.md +191 -0
- package/.zcode/skills/fix-bug/SKILL.md +67 -0
- package/.zcode/skills/gate-trace/SKILL.md +88 -0
- package/.zcode/skills/generate-allure-report/SKILL.md +285 -0
- package/.zcode/skills/grill-me/SKILL.md +96 -0
- package/.zcode/skills/grill-with-docs/SKILL.md +41 -0
- package/.zcode/skills/guard-git/SKILL.md +231 -0
- package/.zcode/skills/harden-vps/SKILL.md +288 -0
- package/.zcode/skills/hook-commits/SKILL.md +94 -0
- package/.zcode/skills/inspect-quality/SKILL.md +106 -0
- package/.zcode/skills/investigate-bug/SKILL.md +127 -0
- package/.zcode/skills/kickoff-branch/SKILL.md +143 -0
- package/.zcode/skills/maintain-wiki/SKILL.md +64 -0
- package/.zcode/skills/map-codebase/SKILL.md +71 -0
- package/.zcode/skills/migrate-spec/SKILL.md +862 -0
- package/.zcode/skills/model-domain/SKILL.md +232 -0
- package/.zcode/skills/orchestrate-project/SKILL.md +174 -0
- package/.zcode/skills/organize-workspace/SKILL.md +164 -0
- package/.zcode/skills/plan-refactor/SKILL.md +87 -0
- package/.zcode/skills/plan-release/SKILL.md +145 -0
- package/.zcode/skills/plan-tests/SKILL.md +75 -0
- package/.zcode/skills/plan-work/SKILL.md +260 -0
- package/.zcode/skills/publish-package/SKILL.md +328 -0
- package/.zcode/skills/quick-fix/SKILL.md +114 -0
- package/.zcode/skills/release-branch/SKILL.md +298 -0
- package/.zcode/skills/request-review/SKILL.md +112 -0
- package/.zcode/skills/research-first/SKILL.md +87 -0
- package/.zcode/skills/reset-baseline/SKILL.md +21 -0
- package/.zcode/skills/respond-review/SKILL.md +71 -0
- package/.zcode/skills/run-benchmark/SKILL.md +85 -0
- package/.zcode/skills/run-evals/SKILL.md +80 -0
- package/.zcode/skills/run-planning/SKILL.md +101 -0
- package/.zcode/skills/scope-work/SKILL.md +63 -0
- package/.zcode/skills/search-skills/SKILL.md +73 -0
- package/.zcode/skills/security-review/SKILL.md +384 -0
- package/.zcode/skills/seed-conventions/SKILL.md +285 -0
- package/.zcode/skills/session-state/SKILL.md +146 -0
- package/.zcode/skills/setup-environment/SKILL.md +39 -0
- package/.zcode/skills/simulate-agents/SKILL.md +26 -0
- package/.zcode/skills/slice-tasks/SKILL.md +68 -0
- package/.zcode/skills/smoke-test/SKILL.md +242 -0
- package/.zcode/skills/spike-prototype/SKILL.md +95 -0
- package/.zcode/skills/stocktake-skills/SKILL.md +72 -0
- package/.zcode/skills/survey-context/SKILL.md +135 -0
- package/.zcode/skills/terse-mode/SKILL.md +42 -0
- package/.zcode/skills/trace-requirement/SKILL.md +69 -0
- package/.zcode/skills/using-bigpowers/SKILL.md +111 -0
- package/.zcode/skills/validate-contracts/SKILL.md +309 -0
- package/.zcode/skills/validate-fix/SKILL.md +106 -0
- package/.zcode/skills/verify-work/SKILL.md +191 -0
- package/.zcode/skills/visual-dashboard/SKILL.md +50 -0
- package/.zcode/skills/wire-ci/SKILL.md +375 -0
- package/.zcode/skills/wire-observability/SKILL.md +97 -0
- package/.zcode/skills/write-document/SKILL.md +255 -0
- package/CHANGELOG.md +27 -0
- package/bin/setup.js +27 -5
- package/package.json +1 -1
- package/scripts/adapters/agy.sh +44 -1
- package/scripts/adapters/gemini.sh +83 -0
- package/scripts/adapters/hermes.sh +53 -1
- package/scripts/adapters/mimo.sh +41 -0
- package/scripts/adapters/zcode.sh +37 -0
- package/scripts/hooks/hermes/gateway/session-log/HOOK.yaml +5 -0
- package/scripts/hooks/hermes/gateway/session-log/handler.py +7 -0
- package/scripts/hooks/hermes/plugin/guard-git-plugin.py +14 -0
- package/scripts/hooks/hermes/shell/block-dangerous-terminal.sh +23 -0
- package/scripts/hooks/hermes/shell/hooks-config.example.yaml +7 -0
- package/scripts/install-cursor-skills-local.sh +8 -6
- package/scripts/install-cursor-skills.sh +15 -25
- package/scripts/install.sh +211 -13
- package/scripts/lib/__pycache__/link_utils.cpython-312.pyc +0 -0
- package/scripts/lib/golden-suite-gates.sh +2 -1
- package/scripts/lib/install-helpers.js +207 -12
- package/scripts/lib/sync-render.sh +43 -0
- package/scripts/lib/target-contracts.sh +22 -0
- package/scripts/targets.yaml +31 -1
- package/scripts/test-agy-hub.sh +59 -0
- package/scripts/test-gemini-adapter.sh +70 -0
- package/scripts/test-gemini-hub.sh +55 -0
- package/scripts/test-hermes-adapter.sh +85 -0
- package/scripts/test-hermes-hub.sh +51 -0
- package/scripts/test-install-helpers.js +103 -0
- package/scripts/test-install-helpers.sh +7 -0
- package/scripts/test-mimo-hub.sh +51 -0
- package/scripts/test-zcode-hub.sh +51 -0
- package/scripts/verify-install.sh +31 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e61s01
|
|
3
|
+
# Regression tests for Hermes adapter render + hook templates.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
+
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
8
|
+
|
|
9
|
+
PASS=0
|
|
10
|
+
FAIL=0
|
|
11
|
+
|
|
12
|
+
pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
|
|
13
|
+
fail() { echo "FAIL: $1"; FAIL=$((FAIL + 1)); }
|
|
14
|
+
|
|
15
|
+
echo "=== test-hermes-adapter.sh ==="
|
|
16
|
+
|
|
17
|
+
TMP=$(mktemp -d)
|
|
18
|
+
trap 'rm -rf "$TMP"' EXIT
|
|
19
|
+
|
|
20
|
+
# Task 1+2: stdin SkillIR render
|
|
21
|
+
if echo '{"name":"test-skill","description":"test desc","body":"test body"}' \
|
|
22
|
+
| HERMES_SKILLS="$TMP/skills" bash "$REPO_ROOT/scripts/adapters/hermes.sh" \
|
|
23
|
+
&& [[ -f "$TMP/skills/test-skill/SKILL.md" ]] \
|
|
24
|
+
&& grep -q 'name: test-skill' "$TMP/skills/test-skill/SKILL.md" \
|
|
25
|
+
&& grep -q 'test body' "$TMP/skills/test-skill/SKILL.md"; then
|
|
26
|
+
pass "render_skill emits SKILL.md from stdin SkillIR"
|
|
27
|
+
else
|
|
28
|
+
fail "render_skill emits SKILL.md from stdin SkillIR"
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# IR_NAME sanitization rejects path traversal
|
|
32
|
+
if ! echo '{"name":"../escape","description":"d","body":"b"}' \
|
|
33
|
+
| HERMES_SKILLS="$TMP/bad" bash "$REPO_ROOT/scripts/adapters/hermes.sh" 2>/dev/null; then
|
|
34
|
+
pass "rejects path traversal in skill name"
|
|
35
|
+
else
|
|
36
|
+
fail "rejects path traversal in skill name"
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# Gateway template
|
|
40
|
+
if [[ -f "$REPO_ROOT/scripts/hooks/hermes/gateway/session-log/HOOK.yaml" ]] \
|
|
41
|
+
&& [[ -f "$REPO_ROOT/scripts/hooks/hermes/gateway/session-log/handler.py" ]] \
|
|
42
|
+
&& grep -q 'agent:start' "$REPO_ROOT/scripts/hooks/hermes/gateway/session-log/HOOK.yaml" \
|
|
43
|
+
&& grep -q 'async def handle' "$REPO_ROOT/scripts/hooks/hermes/gateway/session-log/handler.py"; then
|
|
44
|
+
pass "gateway hook template present"
|
|
45
|
+
else
|
|
46
|
+
fail "gateway hook template present"
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
# Shell template
|
|
50
|
+
if [[ -f "$REPO_ROOT/scripts/hooks/hermes/shell/block-dangerous-terminal.sh" ]] \
|
|
51
|
+
&& [[ -f "$REPO_ROOT/scripts/hooks/hermes/shell/hooks-config.example.yaml" ]] \
|
|
52
|
+
&& grep -q 'pre_tool_call' "$REPO_ROOT/scripts/hooks/hermes/shell/hooks-config.example.yaml"; then
|
|
53
|
+
pass "shell hook template present"
|
|
54
|
+
else
|
|
55
|
+
fail "shell hook template present"
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
# Plugin template
|
|
59
|
+
if [[ -f "$REPO_ROOT/scripts/hooks/hermes/plugin/guard-git-plugin.py" ]] \
|
|
60
|
+
&& grep -q 'register_hook' "$REPO_ROOT/scripts/hooks/hermes/plugin/guard-git-plugin.py"; then
|
|
61
|
+
pass "plugin hook template present"
|
|
62
|
+
else
|
|
63
|
+
fail "plugin hook template present"
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# Shell hook block decision shape
|
|
67
|
+
BLOCK_OUT=$(echo '{"tool_name":"terminal","tool_input":{"command":"git push --force origin main"}}' \
|
|
68
|
+
| bash "$REPO_ROOT/scripts/hooks/hermes/shell/block-dangerous-terminal.sh")
|
|
69
|
+
if echo "$BLOCK_OUT" | grep -q 'block'; then
|
|
70
|
+
pass "shell hook blocks dangerous terminal command"
|
|
71
|
+
else
|
|
72
|
+
fail "shell hook blocks dangerous terminal command"
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
# test-adapters smoke (exit code may be 1 due to ta_cleanup trap when TA_TMPDIR unset — pre-existing e37)
|
|
76
|
+
ADAPTER_OUT=$(bash "$REPO_ROOT/scripts/test-adapters.sh" hermes 2>&1 || true)
|
|
77
|
+
if echo "$ADAPTER_OUT" | grep -q '0 failed' && echo "$ADAPTER_OUT" | grep -q 'PASS hermes: idempotent wire_context'; then
|
|
78
|
+
pass "test-adapters.sh hermes"
|
|
79
|
+
else
|
|
80
|
+
fail "test-adapters.sh hermes"
|
|
81
|
+
echo "$ADAPTER_OUT"
|
|
82
|
+
fi
|
|
83
|
+
|
|
84
|
+
echo "test-hermes-adapter: $PASS passed, $FAIL failed"
|
|
85
|
+
[[ "$FAIL" -eq 0 ]] || exit 1
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e61s02
|
|
3
|
+
# Regression tests for Hermes install hub wiring (Wave B).
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
7
|
+
PASS=0
|
|
8
|
+
FAIL=0
|
|
9
|
+
|
|
10
|
+
pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
|
|
11
|
+
fail() { echo "FAIL: $1" >&2; FAIL=$((FAIL + 1)); }
|
|
12
|
+
|
|
13
|
+
echo "=== test-hermes-hub.sh ==="
|
|
14
|
+
|
|
15
|
+
INSTALL_SH="$REPO_ROOT/scripts/install.sh"
|
|
16
|
+
HELPERS_JS="$REPO_ROOT/scripts/lib/install-helpers.js"
|
|
17
|
+
SETUP_JS="$REPO_ROOT/bin/setup.js"
|
|
18
|
+
TARGETS_YAML="$REPO_ROOT/scripts/targets.yaml"
|
|
19
|
+
|
|
20
|
+
grep -q 'install_hermes()' "$INSTALL_SH" && pass 'install.sh: install_hermes()' || fail 'install.sh: missing install_hermes()'
|
|
21
|
+
grep -q 'uninstall_hermes()' "$INSTALL_SH" && pass 'install.sh: uninstall_hermes()' || fail 'install.sh: missing uninstall_hermes()'
|
|
22
|
+
grep -q 'HERMES_SKILLS_DIR=' "$INSTALL_SH" && pass 'install.sh: HERMES_SKILLS_DIR' || fail 'install.sh: missing HERMES_SKILLS_DIR'
|
|
23
|
+
grep -q 'install_hermes' "$INSTALL_SH" && grep -q 'uninstall_hermes' "$INSTALL_SH" && pass 'install.sh: dispatch wired' || fail 'install.sh: dispatch missing hermes'
|
|
24
|
+
|
|
25
|
+
DRY_OUT="$(bash "$INSTALL_SH" --dry-run 2>&1)"
|
|
26
|
+
echo "$DRY_OUT" | grep -q 'Hermes Agent →' && pass 'dry-run: Hermes Agent section' || fail 'dry-run: missing Hermes Agent section'
|
|
27
|
+
DRY_UNINSTALL="$(bash "$INSTALL_SH" --dry-run --uninstall 2>&1)"
|
|
28
|
+
echo "$DRY_UNINSTALL" | grep -q 'Hermes Agent →' && pass 'dry-run uninstall: Hermes Agent section' || fail 'dry-run uninstall: missing Hermes Agent section'
|
|
29
|
+
|
|
30
|
+
grep -q "case 'hermes'" "$HELPERS_JS" && pass 'install-helpers: hermes global case' || fail 'install-helpers: missing hermes global case'
|
|
31
|
+
grep -q "case 'hermes'" "$HELPERS_JS" && pass 'install-helpers: hermes cases present' || fail 'install-helpers: missing hermes cases'
|
|
32
|
+
|
|
33
|
+
SETUP_SRC="$(cat "$SETUP_JS")"
|
|
34
|
+
echo "$SETUP_SRC" | grep -q "SUPPORTED_IDS = new Set" && pass 'setup.js: SUPPORTED_IDS set' || fail 'setup.js: missing SUPPORTED_IDS'
|
|
35
|
+
echo "$SETUP_SRC" | grep -q "'hermes'" "$SETUP_JS" && pass 'setup.js: hermes in TOOLS' || fail 'setup.js: hermes missing from TOOLS'
|
|
36
|
+
echo "$SETUP_SRC" | grep -q "'hermes'" && echo "$SETUP_SRC" | grep -q "SUPPORTED_IDS" \
|
|
37
|
+
&& grep -q "'hermes'" <<< "$(sed -n "/SUPPORTED_IDS = new Set/,/);/p" "$SETUP_JS")" \
|
|
38
|
+
&& pass 'setup.js: hermes in SUPPORTED_IDS' || fail 'setup.js: hermes not in SUPPORTED_IDS'
|
|
39
|
+
|
|
40
|
+
grep -q 'id: hermes' "$TARGETS_YAML" && pass 'targets.yaml: hermes row' || fail 'targets.yaml: missing hermes row'
|
|
41
|
+
grep -q 'adapter: hermes' "$TARGETS_YAML" && pass 'targets.yaml: hermes adapter' || fail 'targets.yaml: missing hermes adapter'
|
|
42
|
+
grep -q 'bridge_key: instructions' "$TARGETS_YAML" && pass 'targets.yaml: instructions bridge_key' || fail 'targets.yaml: missing bridge_key'
|
|
43
|
+
|
|
44
|
+
grep -q 'install_hermes()' "$REPO_ROOT/scripts/verify-install.sh" && pass 'verify-install: install_hermes assertion' || fail 'verify-install: missing install_hermes assertion'
|
|
45
|
+
|
|
46
|
+
bash -n "$INSTALL_SH" && pass 'bash -n install.sh' || fail 'bash -n install.sh'
|
|
47
|
+
node --check "$HELPERS_JS" && pass 'node --check install-helpers.js' || fail 'node --check install-helpers.js'
|
|
48
|
+
node --check "$SETUP_JS" && pass 'node --check setup.js' || fail 'node --check setup.js'
|
|
49
|
+
|
|
50
|
+
echo "test-hermes-hub: $PASS passed, $FAIL failed"
|
|
51
|
+
[[ "$FAIL" -eq 0 ]] || exit 1
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// story: e60s01
|
|
3
|
+
// Regression selftest for scripts/lib/install-helpers.js (Wave 0 closeout).
|
|
4
|
+
'use strict';
|
|
5
|
+
|
|
6
|
+
const assert = require('assert');
|
|
7
|
+
const fs = require('fs');
|
|
8
|
+
const os = require('os');
|
|
9
|
+
const path = require('path');
|
|
10
|
+
const { mkdtempSync, rmSync } = fs;
|
|
11
|
+
|
|
12
|
+
const ROOT = path.resolve(__dirname, '..');
|
|
13
|
+
const tmpHome = mkdtempSync(path.join(os.tmpdir(), 'bp-install-helpers-'));
|
|
14
|
+
process.env.HOME = tmpHome;
|
|
15
|
+
|
|
16
|
+
const { installGlobal, linkHook } = require('../scripts/lib/install-helpers.js');
|
|
17
|
+
|
|
18
|
+
try {
|
|
19
|
+
const hookSrc = path.join(ROOT, 'skills', 'guard-git', 'scripts', 'block-dangerous-git.sh');
|
|
20
|
+
assert.ok(fs.existsSync(hookSrc), `Claude guard-git hook source must exist: ${hookSrc}`);
|
|
21
|
+
|
|
22
|
+
const rtkSrc = path.join(ROOT, 'scripts', 'hooks', 'rtk-rewrite.sh');
|
|
23
|
+
assert.ok(fs.existsSync(rtkSrc), `rtk-rewrite hook source must exist: ${rtkSrc}`);
|
|
24
|
+
|
|
25
|
+
assert.throws(
|
|
26
|
+
() => linkHook(path.join(tmpHome, 'missing-hook.sh'), path.join(tmpHome, 'dst-hook.sh')),
|
|
27
|
+
/Hook source missing/
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
const { linkDir, uninstallTool } = require('../scripts/lib/install-helpers.js');
|
|
31
|
+
assert.throws(
|
|
32
|
+
() => linkDir(path.join(tmpHome, 'missing-dir'), path.join(tmpHome, 'dst-dir')),
|
|
33
|
+
/Link source missing/
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const setupSrc = fs.readFileSync(path.join(ROOT, 'bin/setup.js'), 'utf8');
|
|
37
|
+
assert.ok(/id:\s*'pi'/.test(setupSrc), 'bin/setup.js TOOLS must include pi');
|
|
38
|
+
assert.ok(!/const ALL_ID/.test(setupSrc), 'dead ALL_ID constant must be removed');
|
|
39
|
+
|
|
40
|
+
installGlobal({ id: 'claude', name: 'Claude Code' }, ROOT);
|
|
41
|
+
|
|
42
|
+
const linked = path.join(tmpHome, '.claude', 'hooks', 'block-dangerous-git.sh');
|
|
43
|
+
assert.ok(fs.lstatSync(linked).isSymbolicLink(), 'block-dangerous-git.sh must be symlinked');
|
|
44
|
+
assert.strictEqual(fs.readlinkSync(linked), hookSrc, 'symlink must point at skills/guard-git path');
|
|
45
|
+
|
|
46
|
+
const libLinked = path.join(tmpHome, '.claude', 'hooks', 'lib');
|
|
47
|
+
const libSrc = path.join(ROOT, 'skills', 'guard-git', 'scripts', 'lib');
|
|
48
|
+
assert.ok(fs.lstatSync(libLinked).isSymbolicLink(), 'guard-git lib/ must be symlinked for hook runtime');
|
|
49
|
+
assert.strictEqual(fs.readlinkSync(libLinked), libSrc, 'lib symlink must point at skills/guard-git/scripts/lib');
|
|
50
|
+
assert.ok(
|
|
51
|
+
fs.existsSync(path.join(libSrc, 'git-guardrails-core.sh')),
|
|
52
|
+
'git-guardrails-core.sh must exist under linked lib'
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
const rtkLinked = path.join(tmpHome, '.claude', 'hooks', 'rtk-rewrite.sh');
|
|
56
|
+
assert.ok(fs.lstatSync(rtkLinked).isSymbolicLink(), 'rtk-rewrite.sh must be symlinked');
|
|
57
|
+
assert.strictEqual(fs.readlinkSync(rtkLinked), rtkSrc, 'rtk-rewrite symlink must point at scripts/hooks source');
|
|
58
|
+
|
|
59
|
+
installGlobal({ id: 'pi', name: 'pi' }, ROOT);
|
|
60
|
+
const piSkill = path.join(tmpHome, '.pi', 'agent', 'skills');
|
|
61
|
+
assert.ok(fs.existsSync(piSkill), 'pi skills dir must exist after installGlobal');
|
|
62
|
+
const sample = fs.readdirSync(piSkill).find((n) => {
|
|
63
|
+
try {
|
|
64
|
+
return fs.lstatSync(path.join(piSkill, n)).isSymbolicLink();
|
|
65
|
+
} catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
assert.ok(sample, 'pi install must create at least one skill symlink');
|
|
70
|
+
assert.ok(
|
|
71
|
+
fs.readlinkSync(path.join(piSkill, sample)).includes(path.join('skills', sample)),
|
|
72
|
+
'pi skill symlink must point into repo skills/'
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
uninstallTool('pi', ROOT);
|
|
76
|
+
assert.ok(
|
|
77
|
+
!fs.existsSync(path.join(piSkill, sample)),
|
|
78
|
+
'uninstallTool(pi) must remove repo-rooted skill symlinks'
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
const rulesSrc = path.join(ROOT, '.cursor', 'rules');
|
|
82
|
+
assert.ok(fs.existsSync(rulesSrc), '.cursor/rules must exist (run sync-skills)');
|
|
83
|
+
installGlobal({ id: 'cursor', name: 'Cursor' }, ROOT);
|
|
84
|
+
const rulesDst = path.join(tmpHome, '.cursor', 'rules');
|
|
85
|
+
assert.ok(fs.lstatSync(rulesDst).isSymbolicLink(), 'cursor rules must be symlinked');
|
|
86
|
+
assert.strictEqual(fs.readlinkSync(rulesDst), rulesSrc, 'cursor rules symlink must point at repo .cursor/rules');
|
|
87
|
+
uninstallTool('cursor', ROOT);
|
|
88
|
+
assert.ok(!fs.existsSync(rulesDst), 'uninstallTool(cursor) must remove rules symlink');
|
|
89
|
+
|
|
90
|
+
const installSh = fs.readFileSync(path.join(ROOT, 'scripts/install.sh'), 'utf8');
|
|
91
|
+
assert.ok(
|
|
92
|
+
installSh.includes('skills/guard-git/scripts/block-dangerous-git.sh'),
|
|
93
|
+
'install.sh must use skills/guard-git hook path'
|
|
94
|
+
);
|
|
95
|
+
assert.ok(
|
|
96
|
+
!/REPO_ROOT\/guard-git\//.test(installSh),
|
|
97
|
+
'install.sh must not reference bare guard-git/ path'
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
console.log('test-install-helpers: ALL PASS');
|
|
101
|
+
} finally {
|
|
102
|
+
rmSync(tmpHome, { recursive: true, force: true });
|
|
103
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e69s02
|
|
3
|
+
# Regression tests for MiMo Code install hub wiring (Wave B).
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
7
|
+
PASS=0
|
|
8
|
+
FAIL=0
|
|
9
|
+
|
|
10
|
+
pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
|
|
11
|
+
fail() { echo "FAIL: $1" >&2; FAIL=$((FAIL + 1)); }
|
|
12
|
+
|
|
13
|
+
echo "=== test-mimo-hub.sh ==="
|
|
14
|
+
|
|
15
|
+
INSTALL_SH="$REPO_ROOT/scripts/install.sh"
|
|
16
|
+
HELPERS_JS="$REPO_ROOT/scripts/lib/install-helpers.js"
|
|
17
|
+
SETUP_JS="$REPO_ROOT/bin/setup.js"
|
|
18
|
+
TARGETS_YAML="$REPO_ROOT/scripts/targets.yaml"
|
|
19
|
+
|
|
20
|
+
grep -q 'install_mimo()' "$INSTALL_SH" && pass 'install.sh: install_mimo()' || fail 'install.sh: missing install_mimo()'
|
|
21
|
+
grep -q 'uninstall_mimo()' "$INSTALL_SH" && pass 'install.sh: uninstall_mimo()' || fail 'install.sh: missing uninstall_mimo()'
|
|
22
|
+
grep -q 'MIMO_SKILLS_DIR=' "$INSTALL_SH" && pass 'install.sh: MIMO_SKILLS_DIR' || fail 'install.sh: missing MIMO_SKILLS_DIR'
|
|
23
|
+
grep -q 'install_mimo' "$INSTALL_SH" && grep -q 'uninstall_mimo' "$INSTALL_SH" && pass 'install.sh: dispatch wired' || fail 'install.sh: dispatch missing mimo'
|
|
24
|
+
|
|
25
|
+
DRY_OUT="$(bash "$INSTALL_SH" --dry-run 2>&1)"
|
|
26
|
+
echo "$DRY_OUT" | grep -q 'MiMo Code →' && pass 'dry-run: MiMo Code section' || fail 'dry-run: missing MiMo Code section'
|
|
27
|
+
DRY_UNINSTALL="$(bash "$INSTALL_SH" --dry-run --uninstall 2>&1)"
|
|
28
|
+
echo "$DRY_UNINSTALL" | grep -q 'MiMo Code →' && pass 'dry-run uninstall: MiMo Code section' || fail 'dry-run uninstall: missing MiMo Code section'
|
|
29
|
+
|
|
30
|
+
grep -q "case 'mimo'" "$HELPERS_JS" && pass 'install-helpers: mimo global case' || fail 'install-helpers: missing mimo global case'
|
|
31
|
+
grep -q "case 'mimo'" "$HELPERS_JS" && pass 'install-helpers: mimo cases present' || fail 'install-helpers: missing mimo cases'
|
|
32
|
+
|
|
33
|
+
SETUP_SRC="$(cat "$SETUP_JS")"
|
|
34
|
+
echo "$SETUP_SRC" | grep -q "SUPPORTED_IDS = new Set" && pass 'setup.js: SUPPORTED_IDS set' || fail 'setup.js: missing SUPPORTED_IDS'
|
|
35
|
+
echo "$SETUP_SRC" | grep -q "'mimo'" "$SETUP_JS" && pass 'setup.js: mimo in TOOLS' || fail 'setup.js: mimo missing from TOOLS'
|
|
36
|
+
echo "$SETUP_SRC" | grep -q "'mimo'" && echo "$SETUP_SRC" | grep -q "SUPPORTED_IDS" \
|
|
37
|
+
&& grep -q "'mimo'" <<< "$(sed -n "/SUPPORTED_IDS = new Set/,/);/p" "$SETUP_JS")" \
|
|
38
|
+
&& pass 'setup.js: mimo in SUPPORTED_IDS' || fail 'setup.js: mimo not in SUPPORTED_IDS'
|
|
39
|
+
|
|
40
|
+
grep -q 'id: mimo' "$TARGETS_YAML" && pass 'targets.yaml: mimo row' || fail 'targets.yaml: missing mimo row'
|
|
41
|
+
grep -q 'adapter: mimo' "$TARGETS_YAML" && pass 'targets.yaml: mimo adapter' || fail 'targets.yaml: missing mimo adapter'
|
|
42
|
+
grep -q 'output: .mimocode/skills' "$TARGETS_YAML" && pass 'targets.yaml: mimo output path' || fail 'targets.yaml: missing mimo output'
|
|
43
|
+
|
|
44
|
+
grep -q 'install_mimo()' "$REPO_ROOT/scripts/verify-install.sh" && pass 'verify-install: install_mimo assertion' || fail 'verify-install: missing install_mimo assertion'
|
|
45
|
+
|
|
46
|
+
bash -n "$INSTALL_SH" && pass 'bash -n install.sh' || fail 'bash -n install.sh'
|
|
47
|
+
node --check "$HELPERS_JS" && pass 'node --check install-helpers.js' || fail 'node --check install-helpers.js'
|
|
48
|
+
node --check "$SETUP_JS" && pass 'node --check setup.js' || fail 'node --check setup.js'
|
|
49
|
+
|
|
50
|
+
echo "test-mimo-hub: $PASS passed, $FAIL failed"
|
|
51
|
+
[[ "$FAIL" -eq 0 ]] || exit 1
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# story: e76s02
|
|
3
|
+
# Regression tests for ZCode install hub wiring (Wave B).
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
7
|
+
PASS=0
|
|
8
|
+
FAIL=0
|
|
9
|
+
|
|
10
|
+
pass() { echo "PASS: $1"; PASS=$((PASS + 1)); }
|
|
11
|
+
fail() { echo "FAIL: $1" >&2; FAIL=$((FAIL + 1)); }
|
|
12
|
+
|
|
13
|
+
echo "=== test-zcode-hub.sh ==="
|
|
14
|
+
|
|
15
|
+
INSTALL_SH="$REPO_ROOT/scripts/install.sh"
|
|
16
|
+
HELPERS_JS="$REPO_ROOT/scripts/lib/install-helpers.js"
|
|
17
|
+
SETUP_JS="$REPO_ROOT/bin/setup.js"
|
|
18
|
+
TARGETS_YAML="$REPO_ROOT/scripts/targets.yaml"
|
|
19
|
+
|
|
20
|
+
grep -q 'install_zcode()' "$INSTALL_SH" && pass 'install.sh: install_zcode()' || fail 'install.sh: missing install_zcode()'
|
|
21
|
+
grep -q 'uninstall_zcode()' "$INSTALL_SH" && pass 'install.sh: uninstall_zcode()' || fail 'install.sh: missing uninstall_zcode()'
|
|
22
|
+
grep -q 'ZCODE_SKILLS_DIR=' "$INSTALL_SH" && pass 'install.sh: ZCODE_SKILLS_DIR' || fail 'install.sh: missing ZCODE_SKILLS_DIR'
|
|
23
|
+
grep -q 'install_zcode' "$INSTALL_SH" && grep -q 'uninstall_zcode' "$INSTALL_SH" && pass 'install.sh: dispatch wired' || fail 'install.sh: dispatch missing zcode'
|
|
24
|
+
|
|
25
|
+
DRY_OUT="$(bash "$INSTALL_SH" --dry-run 2>&1)"
|
|
26
|
+
echo "$DRY_OUT" | grep -q 'ZCode →' && pass 'dry-run: ZCode section' || fail 'dry-run: missing ZCode section'
|
|
27
|
+
DRY_UNINSTALL="$(bash "$INSTALL_SH" --dry-run --uninstall 2>&1)"
|
|
28
|
+
echo "$DRY_UNINSTALL" | grep -q 'ZCode →' && pass 'dry-run uninstall: ZCode section' || fail 'dry-run uninstall: missing ZCode section'
|
|
29
|
+
|
|
30
|
+
grep -q "case 'zcode'" "$HELPERS_JS" && pass 'install-helpers: zcode global case' || fail 'install-helpers: missing zcode global case'
|
|
31
|
+
grep -q "case 'zcode'" "$HELPERS_JS" && pass 'install-helpers: zcode cases present' || fail 'install-helpers: missing zcode cases'
|
|
32
|
+
|
|
33
|
+
SETUP_SRC="$(cat "$SETUP_JS")"
|
|
34
|
+
echo "$SETUP_SRC" | grep -q "SUPPORTED_IDS = new Set" && pass 'setup.js: SUPPORTED_IDS set' || fail 'setup.js: missing SUPPORTED_IDS'
|
|
35
|
+
echo "$SETUP_SRC" | grep -q "'zcode'" "$SETUP_JS" && pass 'setup.js: zcode in TOOLS' || fail 'setup.js: zcode missing from TOOLS'
|
|
36
|
+
echo "$SETUP_SRC" | grep -q "'zcode'" && echo "$SETUP_SRC" | grep -q "SUPPORTED_IDS" \
|
|
37
|
+
&& grep -q "'zcode'" <<< "$(sed -n "/SUPPORTED_IDS = new Set/,/);/p" "$SETUP_JS")" \
|
|
38
|
+
&& pass 'setup.js: zcode in SUPPORTED_IDS' || fail 'setup.js: zcode not in SUPPORTED_IDS'
|
|
39
|
+
|
|
40
|
+
grep -q 'id: zcode' "$TARGETS_YAML" && pass 'targets.yaml: zcode row' || fail 'targets.yaml: missing zcode row'
|
|
41
|
+
grep -q 'adapter: zcode' "$TARGETS_YAML" && pass 'targets.yaml: zcode adapter' || fail 'targets.yaml: missing zcode adapter'
|
|
42
|
+
grep -q 'output: .zcode/skills' "$TARGETS_YAML" && pass 'targets.yaml: zcode output path' || fail 'targets.yaml: missing zcode output'
|
|
43
|
+
|
|
44
|
+
grep -q 'install_zcode()' "$REPO_ROOT/scripts/verify-install.sh" && pass 'verify-install: install_zcode assertion' || fail 'verify-install: missing install_zcode assertion'
|
|
45
|
+
|
|
46
|
+
bash -n "$INSTALL_SH" && pass 'bash -n install.sh' || fail 'bash -n install.sh'
|
|
47
|
+
node --check "$HELPERS_JS" && pass 'node --check install-helpers.js' || fail 'node --check install-helpers.js'
|
|
48
|
+
node --check "$SETUP_JS" && pass 'node --check setup.js' || fail 'node --check setup.js'
|
|
49
|
+
|
|
50
|
+
echo "test-zcode-hub: $PASS passed, $FAIL failed"
|
|
51
|
+
[[ "$FAIL" -eq 0 ]] || exit 1
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# story: e47s04 e37s02 e37s04 e37s08
|
|
3
|
+
# story: e74s02
|
|
3
4
|
# verify-install.sh — manual assertion harness for install + seed wiring + Reach matrix
|
|
4
5
|
set -euo pipefail
|
|
5
6
|
source "$(dirname "${BASH_SOURCE[0]}")/lib/skill-common.sh"
|
|
@@ -70,6 +71,7 @@ echo "$DRY_OUT" | grep -qi 'opencode' && ta_fail "install references opencode" |
|
|
|
70
71
|
echo "$DRY_OUT" | grep -q 'Claude Code →' && ta_pass "install includes Claude Code" || ta_fail "install missing Claude Code"
|
|
71
72
|
echo "$DRY_OUT" | grep -q 'Gemini CLI →' && ta_pass "install includes Gemini CLI" || ta_fail "install missing Gemini CLI"
|
|
72
73
|
echo "$DRY_OUT" | grep -q 'Cursor →' && ta_pass "install includes Cursor" || ta_fail "install missing Cursor"
|
|
74
|
+
echo "$DRY_OUT" | grep -q 'Hermes Agent →' && ta_pass "install includes Hermes Agent" || ta_fail "install missing Hermes Agent"
|
|
73
75
|
|
|
74
76
|
for tool in "Claude Code" "pi"; do
|
|
75
77
|
section=$(echo "$DRY_OUT" | sed -n "/${tool} →/,/^$/p")
|
|
@@ -128,6 +130,35 @@ echo "=== install.sh source ==="
|
|
|
128
130
|
grep -q 'install_pi()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: install_pi()" || ta_fail "source: missing install_pi()"
|
|
129
131
|
grep -q 'uninstall_pi()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: uninstall_pi()" || ta_fail "source: missing uninstall_pi()"
|
|
130
132
|
grep -q 'PI_SKILLS_DIR="$PI_CONFIG_DIR/agent/skills"' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: targets ~/.pi/agent/skills/" || ta_fail "source: wrong pi target"
|
|
133
|
+
grep -q 'install_hermes()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: install_hermes()" || ta_fail "source: missing install_hermes()"
|
|
134
|
+
grep -q 'uninstall_hermes()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: uninstall_hermes()" || ta_fail "source: missing uninstall_hermes()"
|
|
135
|
+
grep -q 'HERMES_SKILLS_DIR=' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: targets ~/.hermes/skills/" || ta_fail "source: wrong hermes target"
|
|
136
|
+
grep -q "'hermes'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: hermes supported" || ta_fail "setup.js: hermes not in SUPPORTED_IDS"
|
|
137
|
+
grep -q "case 'hermes'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: hermes case" || ta_fail "install-helpers: missing hermes case"
|
|
138
|
+
grep -q 'install_zcode()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: install_zcode()" || ta_fail "source: missing install_zcode()"
|
|
139
|
+
grep -q 'uninstall_zcode()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: uninstall_zcode()" || ta_fail "source: missing uninstall_zcode()"
|
|
140
|
+
grep -q 'ZCODE_SKILLS_DIR=' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: targets ~/.zcode/skills/" || ta_fail "source: wrong zcode target"
|
|
141
|
+
grep -q "'zcode'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: zcode supported" || ta_fail "setup.js: zcode not in SUPPORTED_IDS"
|
|
142
|
+
grep -q "case 'zcode'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: zcode case" || ta_fail "install-helpers: missing zcode case"
|
|
143
|
+
grep -q 'install_mimo()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: install_mimo()" || ta_fail "source: missing install_mimo()"
|
|
144
|
+
grep -q 'uninstall_mimo()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: uninstall_mimo()" || ta_fail "source: missing uninstall_mimo()"
|
|
145
|
+
grep -q 'MIMO_SKILLS_DIR=' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: targets ~/.mimocode/skills/" || ta_fail "source: wrong mimo target"
|
|
146
|
+
grep -q "'mimo'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: mimo supported" || ta_fail "setup.js: mimo not in SUPPORTED_IDS"
|
|
147
|
+
grep -q "case 'mimo'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: mimo case" || ta_fail "install-helpers: missing mimo case"
|
|
148
|
+
grep -q 'install_gemini()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: install_gemini()" || ta_fail "source: missing install_gemini()"
|
|
149
|
+
grep -q 'uninstall_gemini()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: uninstall_gemini()" || ta_fail "source: missing uninstall_gemini()"
|
|
150
|
+
grep -q 'before-tool-git-guard.sh' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: gemini Wave A hook templates" || ta_fail "source: missing gemini hook templates"
|
|
151
|
+
grep -q "'gemini'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: gemini supported" || ta_fail "setup.js: gemini not in SUPPORTED_IDS"
|
|
152
|
+
grep -q "case 'gemini'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: gemini case" || ta_fail "install-helpers: missing gemini case"
|
|
153
|
+
grep -q 'gemini_hooks_manifest' "$REPO_ROOT/scripts/targets.yaml" && ta_pass "targets.yaml: gemini_hooks_manifest" || ta_fail "targets.yaml: missing gemini_hooks_manifest"
|
|
154
|
+
grep -q 'install_agy()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: install_agy()" || ta_fail "source: missing install_agy()"
|
|
155
|
+
grep -q 'uninstall_agy()' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: uninstall_agy()" || ta_fail "source: missing uninstall_agy()"
|
|
156
|
+
grep -q 'AGY_SKILLS_DIR=' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: targets ~/.gemini/antigravity-cli/skills/" || ta_fail "source: wrong agy target"
|
|
157
|
+
grep -q "'antigravity'" "$REPO_ROOT/bin/setup.js" && grep -q 'SUPPORTED_IDS' "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: antigravity supported" || ta_fail "setup.js: antigravity not in SUPPORTED_IDS"
|
|
158
|
+
grep -q "'agy'" "$REPO_ROOT/bin/setup.js" && ta_pass "setup.js: agy supported" || ta_fail "setup.js: agy not in SUPPORTED_IDS"
|
|
159
|
+
grep -q "case 'antigravity'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: antigravity case" || ta_fail "install-helpers: missing antigravity case"
|
|
160
|
+
grep -q "case 'agy'" "$REPO_ROOT/scripts/lib/install-helpers.js" && ta_pass "install-helpers: agy case" || ta_fail "install-helpers: missing agy case"
|
|
161
|
+
! grep -q '\.gemini/extensions/bigpowers' <<< "$(sed -n '/install_agy/,/^}/p' "$REPO_ROOT/scripts/install.sh")" && ta_pass "source: agy avoids gemini extension path" || ta_fail "source: agy touches gemini extension path"
|
|
131
162
|
! grep -q 'install_opencode\|print_opencode_instructions' "$REPO_ROOT/scripts/install.sh" && ta_pass "source: no opencode functions" || ta_fail "source: opencode functions remain"
|
|
132
163
|
|
|
133
164
|
echo ""
|