gaia-framework 1.66.0 → 1.83.2
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/.claude/commands/gaia-create-stakeholder.md +20 -0
- package/.claude/commands/gaia-test-gap-analysis.md +17 -0
- package/CLAUDE.md +87 -1
- package/README.md +2 -2
- package/_gaia/_config/global.yaml +5 -1
- package/_gaia/_config/lifecycle-sequence.yaml +20 -0
- package/_gaia/_config/skill-manifest.csv +2 -0
- package/_gaia/_config/workflow-manifest.csv +3 -1
- package/_gaia/core/engine/workflow.xml +5 -1
- package/_gaia/core/workflows/party-mode/steps/step-01-agent-loading.md +60 -9
- package/_gaia/creative/workflows/problem-solving/checklist.md +64 -14
- package/_gaia/creative/workflows/problem-solving/instructions.xml +367 -22
- package/_gaia/creative/workflows/problem-solving/workflow.yaml +31 -1
- package/_gaia/dev/agents/_base-dev.md +7 -1
- package/_gaia/dev/skills/_skill-index.yaml +9 -0
- package/_gaia/dev/skills/figma-integration.md +296 -0
- package/_gaia/lifecycle/templates/brownfield-scan-security-prompt.md +228 -0
- package/_gaia/lifecycle/templates/gap-entry-schema.md +39 -4
- package/_gaia/lifecycle/templates/story-template.md +22 -1
- package/_gaia/lifecycle/workflows/2-planning/create-ux-design/instructions.xml +52 -3
- package/_gaia/lifecycle/workflows/4-implementation/create-stakeholder/checklist.md +25 -0
- package/_gaia/lifecycle/workflows/4-implementation/create-stakeholder/instructions.xml +79 -0
- package/_gaia/lifecycle/workflows/4-implementation/create-stakeholder/workflow.yaml +22 -0
- package/_gaia/lifecycle/workflows/4-implementation/create-story/instructions.xml +10 -0
- package/_gaia/lifecycle/workflows/4-implementation/retrospective/instructions.xml +3 -3
- package/_gaia/lifecycle/workflows/4-implementation/validate-story/instructions.xml +11 -0
- package/_gaia/lifecycle/workflows/anytime/brownfield-onboarding/instructions.xml +11 -7
- package/_gaia/testing/workflows/test-gap-analysis/checklist.md +8 -0
- package/_gaia/testing/workflows/test-gap-analysis/instructions.xml +53 -0
- package/_gaia/testing/workflows/test-gap-analysis/workflow.yaml +38 -0
- package/bin/gaia-framework.js +36 -2
- package/bin/helpers/derive-bump-label.js +41 -0
- package/bin/helpers/validate-bump-labels.js +38 -0
- package/gaia-install.sh +71 -4
- package/package.json +1 -1
- package/_gaia/_memory/tier2-results/.gitkeep +0 -0
- package/_gaia/_memory/tier2-results/checkpoint-resume-2026-03-24.yaml +0 -6
- package/_gaia/_memory/tier2-results/engine-scenarios-2026-03-22.yaml +0 -14
package/gaia-install.sh
CHANGED
|
@@ -76,6 +76,7 @@ TARGET=""
|
|
|
76
76
|
OPT_YES=false
|
|
77
77
|
OPT_DRY_RUN=false
|
|
78
78
|
OPT_VERBOSE=false
|
|
79
|
+
OPT_BRANCH=""
|
|
79
80
|
|
|
80
81
|
# ─── Utility Functions ──────────────────────────────────────────────────────
|
|
81
82
|
|
|
@@ -95,7 +96,11 @@ clone_from_github() {
|
|
|
95
96
|
fi
|
|
96
97
|
TEMP_CLONE_DIR="$(mktemp -d "${TMPDIR:-/tmp}/gaia-framework-XXXXXX")"
|
|
97
98
|
info "Cloning GAIA from GitHub..." >&2
|
|
98
|
-
|
|
99
|
+
local branch_args=()
|
|
100
|
+
if [[ -n "$OPT_BRANCH" ]]; then
|
|
101
|
+
branch_args=(--branch "$OPT_BRANCH")
|
|
102
|
+
fi
|
|
103
|
+
if git clone --depth 1 "${branch_args[@]}" "$GITHUB_REPO" "$TEMP_CLONE_DIR" 2>/dev/null; then
|
|
99
104
|
success "Cloned to temporary directory" >&2
|
|
100
105
|
else
|
|
101
106
|
error "Failed to clone from $GITHUB_REPO"
|
|
@@ -495,7 +500,7 @@ cmd_init() {
|
|
|
495
500
|
|
|
496
501
|
# Step 8: Create custom directories (ADR-020: user-owned write targets)
|
|
497
502
|
step "Creating custom directories..."
|
|
498
|
-
for cdir in skills templates; do
|
|
503
|
+
for cdir in skills templates stakeholders; do
|
|
499
504
|
if [[ "$OPT_DRY_RUN" == true ]]; then
|
|
500
505
|
detail "[dry-run] Would create: custom/$cdir/"
|
|
501
506
|
else
|
|
@@ -628,6 +633,35 @@ cmd_update() {
|
|
|
628
633
|
"_config/manifest.yaml"
|
|
629
634
|
)
|
|
630
635
|
|
|
636
|
+
# ─── Migrate .customize.yaml files before _gaia/ overwrite (E10-S19, FR-153) ──
|
|
637
|
+
# Copy user customize.yaml files from _gaia/_config/agents/ to custom/skills/
|
|
638
|
+
# before the framework overwrite replaces _gaia/ contents with defaults.
|
|
639
|
+
# Copy-only semantics: originals are left in place as fallback (AC2).
|
|
640
|
+
step "Migrating customize.yaml files to custom/skills/..."
|
|
641
|
+
if [[ "$OPT_DRY_RUN" != true ]]; then
|
|
642
|
+
mkdir -p "$TARGET/custom/skills"
|
|
643
|
+
fi
|
|
644
|
+
local migrated=0
|
|
645
|
+
for cust_file in "$TARGET/_gaia/_config/agents/"*.customize.yaml; do
|
|
646
|
+
[[ -f "$cust_file" ]] || continue
|
|
647
|
+
local cust_basename
|
|
648
|
+
cust_basename="$(basename "$cust_file")"
|
|
649
|
+
if [[ -f "$TARGET/custom/skills/$cust_basename" ]]; then
|
|
650
|
+
[[ "$OPT_VERBOSE" == true ]] && detail "Skipped (already exists): custom/skills/$cust_basename"
|
|
651
|
+
continue
|
|
652
|
+
fi
|
|
653
|
+
if [[ "$OPT_DRY_RUN" == true ]]; then
|
|
654
|
+
detail "[dry-run] Would migrate: _gaia/_config/agents/$cust_basename → custom/skills/$cust_basename"
|
|
655
|
+
else
|
|
656
|
+
cp "$cust_file" "$TARGET/custom/skills/$cust_basename"
|
|
657
|
+
info "[migrate] _gaia/_config/agents/$cust_basename → custom/skills/$cust_basename"
|
|
658
|
+
migrated=$((migrated + 1))
|
|
659
|
+
fi
|
|
660
|
+
done
|
|
661
|
+
if [[ "$migrated" -gt 0 ]]; then
|
|
662
|
+
detail "Migrated $migrated customize.yaml file(s) to custom/skills/"
|
|
663
|
+
fi
|
|
664
|
+
|
|
631
665
|
step "Updating framework files..."
|
|
632
666
|
local updated=0 skipped=0 changed=0
|
|
633
667
|
|
|
@@ -690,7 +724,7 @@ cmd_update() {
|
|
|
690
724
|
done
|
|
691
725
|
|
|
692
726
|
# Ensure custom directories exist (user-owned, never overwritten — ADR-020)
|
|
693
|
-
for cdir in skills templates; do
|
|
727
|
+
for cdir in skills templates stakeholders; do
|
|
694
728
|
if [[ "$OPT_DRY_RUN" == true ]]; then
|
|
695
729
|
[[ ! -d "$TARGET/custom/$cdir" ]] && detail "[dry-run] Would create: custom/$cdir/"
|
|
696
730
|
else
|
|
@@ -740,6 +774,29 @@ cmd_update() {
|
|
|
740
774
|
fi
|
|
741
775
|
fi
|
|
742
776
|
|
|
777
|
+
# ─── Post-install verification: check skill references in customize.yaml (E10-S19, AC4) ──
|
|
778
|
+
step "Verifying skill references in custom/skills/*.customize.yaml..."
|
|
779
|
+
for cust_file in "$TARGET/custom/skills/"*.customize.yaml; do
|
|
780
|
+
[[ -f "$cust_file" ]] || continue
|
|
781
|
+
local cust_name
|
|
782
|
+
cust_name="$(basename "$cust_file")"
|
|
783
|
+
# Extract source: values from customize.yaml (simple grep — no full YAML parser needed)
|
|
784
|
+
while IFS= read -r source_line; do
|
|
785
|
+
# Strip key prefix, leading whitespace, and surrounding quotes via parameter expansion
|
|
786
|
+
local ref_path="${source_line#*source:}"
|
|
787
|
+
ref_path="${ref_path#"${ref_path%%[![:space:]]*}"}" # trim leading whitespace
|
|
788
|
+
ref_path="${ref_path#[\"\']}" # trim leading quote
|
|
789
|
+
ref_path="${ref_path%[\"\']}" # trim trailing quote
|
|
790
|
+
[[ -z "$ref_path" ]] && continue
|
|
791
|
+
# Resolve relative paths against TARGET
|
|
792
|
+
local full_path="$TARGET/$ref_path"
|
|
793
|
+
[[ "$ref_path" == /* ]] && full_path="$ref_path"
|
|
794
|
+
if [[ ! -f "$full_path" ]]; then
|
|
795
|
+
warn "[warn] Broken skill reference in $cust_name: $ref_path not found"
|
|
796
|
+
fi
|
|
797
|
+
done < <(grep 'source:' "$cust_file" || true)
|
|
798
|
+
done
|
|
799
|
+
|
|
743
800
|
# Summary
|
|
744
801
|
echo ""
|
|
745
802
|
if [[ -d "$backup_dir" ]]; then
|
|
@@ -832,9 +889,10 @@ cmd_validate() {
|
|
|
832
889
|
[[ -d "$TARGET/docs/$dir" ]]; check "Docs: $dir" $?
|
|
833
890
|
done
|
|
834
891
|
|
|
835
|
-
# Custom directories (ADR-020: user-owned write targets)
|
|
892
|
+
# Custom directories (ADR-020: user-owned write targets, ADR-026: stakeholder agents)
|
|
836
893
|
[[ -d "$TARGET/custom/skills" ]]; check "custom/skills/ exists" $?
|
|
837
894
|
[[ -d "$TARGET/custom/templates" ]]; check "custom/templates/ exists" $?
|
|
895
|
+
[[ -d "$TARGET/custom/stakeholders" ]]; check "custom/stakeholders/ exists" $?
|
|
838
896
|
|
|
839
897
|
# Version
|
|
840
898
|
local version
|
|
@@ -938,6 +996,7 @@ ${BOLD}Commands:${RESET}
|
|
|
938
996
|
|
|
939
997
|
${BOLD}Options:${RESET}
|
|
940
998
|
--source <path> Local GAIA source (or clones from GitHub if omitted)
|
|
999
|
+
--branch <name> Clone from a specific branch
|
|
941
1000
|
--yes Skip confirmation prompts
|
|
942
1001
|
--dry-run Show what would be done without making changes
|
|
943
1002
|
--verbose Show detailed progress
|
|
@@ -1011,6 +1070,14 @@ parse_args() {
|
|
|
1011
1070
|
OPT_VERBOSE=true
|
|
1012
1071
|
shift
|
|
1013
1072
|
;;
|
|
1073
|
+
--branch)
|
|
1074
|
+
if [[ -z "${2:-}" ]]; then
|
|
1075
|
+
error "--branch requires a branch name argument"
|
|
1076
|
+
exit 1
|
|
1077
|
+
fi
|
|
1078
|
+
OPT_BRANCH="$2"
|
|
1079
|
+
shift 2
|
|
1080
|
+
;;
|
|
1014
1081
|
--help|-h)
|
|
1015
1082
|
usage
|
|
1016
1083
|
exit 0
|
package/package.json
CHANGED
|
File without changes
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
test_name: "checkpoint-resume-reliability"
|
|
2
|
-
date: "2026-03-24"
|
|
3
|
-
result: "pass"
|
|
4
|
-
observations: "All 10 test scenarios passed. Checkpoint validation (schema, checksums, legacy format), resume state reconstruction (happy path, error cases), and file modification detection (modified, deleted) all verified. 45 total tests: 31 unit + 14 Tier 2."
|
|
5
|
-
runner: "Cleo (typescript-dev)"
|
|
6
|
-
framework_version: "1.48.3"
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
test_name: engine-scenarios
|
|
2
|
-
date: "2026-03-22T00:00:00Z"
|
|
3
|
-
result: pass
|
|
4
|
-
observations: |
|
|
5
|
-
All 6 ACs validated via 18 structural tests:
|
|
6
|
-
- AC1: Step ordering verified in workflow.xml and dev-story instructions.xml (4 tests)
|
|
7
|
-
- AC2: Checkpoint YAML schema validated with all required fields (3 tests)
|
|
8
|
-
- AC3: Quality gate structure validated across all workflow configs (3 tests)
|
|
9
|
-
- AC4: Variable resolution verified — all vars in known set, engine requires global.yaml (3 tests)
|
|
10
|
-
- AC5: Execution mode switching definitions validated in workflow.xml (3 tests)
|
|
11
|
-
- AC6: tier2-results directory exists, result YAML schema validated (2 tests)
|
|
12
|
-
Zero regressions in existing Tier 1 tests (3486 passing).
|
|
13
|
-
runner: vitest
|
|
14
|
-
framework_version: "1.45.0"
|