@jaguilar87/gaia 5.0.0-rc1
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-plugin/marketplace.json +33 -0
- package/.claude-plugin/plugin.json +26 -0
- package/ARCHITECTURE.md +335 -0
- package/CHANGELOG.md +1212 -0
- package/CODE_OF_CONDUCT.md +11 -0
- package/CONTRIBUTING.md +146 -0
- package/INSTALL.md +436 -0
- package/LICENSE +21 -0
- package/README.md +222 -0
- package/SECURITY.md +47 -0
- package/agents/README.md +78 -0
- package/agents/cloud-troubleshooter.md +73 -0
- package/agents/developer.md +65 -0
- package/agents/gaia-operator.md +64 -0
- package/agents/gaia-orchestrator.md +237 -0
- package/agents/gaia-planner.md +53 -0
- package/agents/gaia-system.md +70 -0
- package/agents/gitops-operator.md +61 -0
- package/agents/terraform-architect.md +63 -0
- package/bin/README.md +106 -0
- package/bin/cli/__init__.py +1 -0
- package/bin/cli/approvals.py +740 -0
- package/bin/cli/cleanup.py +562 -0
- package/bin/cli/context.py +283 -0
- package/bin/cli/doctor.py +628 -0
- package/bin/cli/history.py +305 -0
- package/bin/cli/memory.py +464 -0
- package/bin/cli/metrics.py +1068 -0
- package/bin/cli/plans.py +515 -0
- package/bin/cli/status.py +302 -0
- package/bin/cli/update.py +382 -0
- package/bin/gaia +112 -0
- package/bin/gaia-cleanup.js +531 -0
- package/bin/gaia-doctor.js +635 -0
- package/bin/gaia-evidence +126 -0
- package/bin/gaia-history.js +251 -0
- package/bin/gaia-metrics.js +1278 -0
- package/bin/gaia-review.js +269 -0
- package/bin/gaia-scan +44 -0
- package/bin/gaia-scan.py +589 -0
- package/bin/gaia-skills-diagnose.js +929 -0
- package/bin/gaia-status.js +278 -0
- package/bin/gaia-uninstall.js +111 -0
- package/bin/gaia-update.js +816 -0
- package/bin/pre-publish-validate.js +610 -0
- package/bin/python-detect.js +60 -0
- package/commands/README.md +64 -0
- package/commands/gaia.md +37 -0
- package/commands/scan-project.md +67 -0
- package/config/README.md +71 -0
- package/config/cloud/aws.json +134 -0
- package/config/cloud/gcp.json +139 -0
- package/config/context-contracts.json +158 -0
- package/config/crons-schema.md +81 -0
- package/config/git_standards.json +72 -0
- package/config/surface-routing.json +421 -0
- package/config/universal-rules.json +102 -0
- package/dist/gaia-ops/.claude-plugin/plugin.json +24 -0
- package/dist/gaia-ops/README.md +80 -0
- package/dist/gaia-ops/agents/cloud-troubleshooter.md +73 -0
- package/dist/gaia-ops/agents/developer.md +65 -0
- package/dist/gaia-ops/agents/gaia-operator.md +64 -0
- package/dist/gaia-ops/agents/gaia-orchestrator.md +237 -0
- package/dist/gaia-ops/agents/gaia-planner.md +53 -0
- package/dist/gaia-ops/agents/gaia-system.md +70 -0
- package/dist/gaia-ops/agents/gitops-operator.md +61 -0
- package/dist/gaia-ops/agents/terraform-architect.md +63 -0
- package/dist/gaia-ops/commands/gaia.md +37 -0
- package/dist/gaia-ops/config/README.md +71 -0
- package/dist/gaia-ops/config/cloud/aws.json +134 -0
- package/dist/gaia-ops/config/cloud/gcp.json +139 -0
- package/dist/gaia-ops/config/context-contracts.json +158 -0
- package/dist/gaia-ops/config/crons-schema.md +81 -0
- package/dist/gaia-ops/config/git_standards.json +72 -0
- package/dist/gaia-ops/config/surface-routing.json +421 -0
- package/dist/gaia-ops/config/universal-rules.json +102 -0
- package/dist/gaia-ops/hooks/adapters/__init__.py +52 -0
- package/dist/gaia-ops/hooks/adapters/base.py +219 -0
- package/dist/gaia-ops/hooks/adapters/channel.py +17 -0
- package/dist/gaia-ops/hooks/adapters/claude_code.py +1890 -0
- package/dist/gaia-ops/hooks/adapters/types.py +194 -0
- package/dist/gaia-ops/hooks/adapters/utils.py +25 -0
- package/dist/gaia-ops/hooks/hooks.json +163 -0
- package/dist/gaia-ops/hooks/modules/__init__.py +15 -0
- package/dist/gaia-ops/hooks/modules/agents/__init__.py +29 -0
- package/dist/gaia-ops/hooks/modules/agents/contract_validator.py +647 -0
- package/dist/gaia-ops/hooks/modules/agents/response_contract.py +496 -0
- package/dist/gaia-ops/hooks/modules/agents/skill_injection_verifier.py +120 -0
- package/dist/gaia-ops/hooks/modules/agents/state_tracker.py +267 -0
- package/dist/gaia-ops/hooks/modules/agents/task_info_builder.py +74 -0
- package/dist/gaia-ops/hooks/modules/agents/transcript_analyzer.py +458 -0
- package/dist/gaia-ops/hooks/modules/agents/transcript_reader.py +152 -0
- package/dist/gaia-ops/hooks/modules/audit/__init__.py +28 -0
- package/dist/gaia-ops/hooks/modules/audit/event_detector.py +168 -0
- package/dist/gaia-ops/hooks/modules/audit/logger.py +131 -0
- package/dist/gaia-ops/hooks/modules/audit/metrics.py +134 -0
- package/dist/gaia-ops/hooks/modules/audit/workflow_auditor.py +611 -0
- package/dist/gaia-ops/hooks/modules/audit/workflow_recorder.py +296 -0
- package/dist/gaia-ops/hooks/modules/context/__init__.py +11 -0
- package/dist/gaia-ops/hooks/modules/context/agentic_loop_detector.py +165 -0
- package/dist/gaia-ops/hooks/modules/context/anchor_tracker.py +317 -0
- package/dist/gaia-ops/hooks/modules/context/compact_context_builder.py +218 -0
- package/dist/gaia-ops/hooks/modules/context/context_freshness.py +145 -0
- package/dist/gaia-ops/hooks/modules/context/context_injector.py +558 -0
- package/dist/gaia-ops/hooks/modules/context/context_writer.py +530 -0
- package/dist/gaia-ops/hooks/modules/context/contracts_loader.py +161 -0
- package/dist/gaia-ops/hooks/modules/core/__init__.py +40 -0
- package/dist/gaia-ops/hooks/modules/core/hook_entry.py +78 -0
- package/dist/gaia-ops/hooks/modules/core/paths.py +160 -0
- package/dist/gaia-ops/hooks/modules/core/plugin_mode.py +149 -0
- package/dist/gaia-ops/hooks/modules/core/plugin_setup.py +577 -0
- package/dist/gaia-ops/hooks/modules/core/state.py +179 -0
- package/dist/gaia-ops/hooks/modules/core/stdin.py +24 -0
- package/dist/gaia-ops/hooks/modules/events/__init__.py +1 -0
- package/dist/gaia-ops/hooks/modules/events/event_writer.py +210 -0
- package/dist/gaia-ops/hooks/modules/memory/__init__.py +8 -0
- package/dist/gaia-ops/hooks/modules/memory/episode_writer.py +216 -0
- package/dist/gaia-ops/hooks/modules/orchestrator/__init__.py +1 -0
- package/dist/gaia-ops/hooks/modules/orchestrator/delegate_mode.py +122 -0
- package/dist/gaia-ops/hooks/modules/scanning/__init__.py +8 -0
- package/dist/gaia-ops/hooks/modules/scanning/scan_trigger.py +84 -0
- package/dist/gaia-ops/hooks/modules/security/__init__.py +120 -0
- package/dist/gaia-ops/hooks/modules/security/approval_cleanup.py +87 -0
- package/dist/gaia-ops/hooks/modules/security/approval_constants.py +23 -0
- package/dist/gaia-ops/hooks/modules/security/approval_grants.py +1638 -0
- package/dist/gaia-ops/hooks/modules/security/approval_messages.py +71 -0
- package/dist/gaia-ops/hooks/modules/security/approval_scopes.py +222 -0
- package/dist/gaia-ops/hooks/modules/security/blocked_commands.py +595 -0
- package/dist/gaia-ops/hooks/modules/security/blocked_message_formatter.py +87 -0
- package/dist/gaia-ops/hooks/modules/security/command_semantics.py +181 -0
- package/dist/gaia-ops/hooks/modules/security/composition_rules.py +547 -0
- package/dist/gaia-ops/hooks/modules/security/flag_classifiers.py +873 -0
- package/dist/gaia-ops/hooks/modules/security/gitops_validator.py +179 -0
- package/dist/gaia-ops/hooks/modules/security/mutative_verbs.py +1131 -0
- package/dist/gaia-ops/hooks/modules/security/network_hosts.py +481 -0
- package/dist/gaia-ops/hooks/modules/security/prompt_validator.py +40 -0
- package/dist/gaia-ops/hooks/modules/security/shell_unwrapper.py +165 -0
- package/dist/gaia-ops/hooks/modules/security/tiers.py +196 -0
- package/dist/gaia-ops/hooks/modules/session/__init__.py +10 -0
- package/dist/gaia-ops/hooks/modules/session/pending_scanner.py +174 -0
- package/dist/gaia-ops/hooks/modules/session/session_context_writer.py +100 -0
- package/dist/gaia-ops/hooks/modules/session/session_event_injector.py +160 -0
- package/dist/gaia-ops/hooks/modules/session/session_manager.py +31 -0
- package/dist/gaia-ops/hooks/modules/session/session_registry.py +232 -0
- package/dist/gaia-ops/hooks/modules/tools/__init__.py +29 -0
- package/dist/gaia-ops/hooks/modules/tools/bash_validator.py +1008 -0
- package/dist/gaia-ops/hooks/modules/tools/cloud_pipe_validator.py +231 -0
- package/dist/gaia-ops/hooks/modules/tools/hook_response.py +55 -0
- package/dist/gaia-ops/hooks/modules/tools/shell_parser.py +227 -0
- package/dist/gaia-ops/hooks/modules/tools/stage_decomposer.py +315 -0
- package/dist/gaia-ops/hooks/modules/tools/task_validator.py +294 -0
- package/dist/gaia-ops/hooks/modules/validation/__init__.py +23 -0
- package/dist/gaia-ops/hooks/modules/validation/commit_validator.py +380 -0
- package/dist/gaia-ops/hooks/post_compact.py +43 -0
- package/dist/gaia-ops/hooks/post_tool_use.py +54 -0
- package/dist/gaia-ops/hooks/pre_compact.py +60 -0
- package/dist/gaia-ops/hooks/pre_tool_use.py +413 -0
- package/dist/gaia-ops/hooks/session_start.py +81 -0
- package/dist/gaia-ops/hooks/stop_hook.py +82 -0
- package/dist/gaia-ops/hooks/subagent_start.py +71 -0
- package/dist/gaia-ops/hooks/subagent_stop.py +295 -0
- package/dist/gaia-ops/hooks/task_completed.py +70 -0
- package/dist/gaia-ops/hooks/user_prompt_submit.py +246 -0
- package/dist/gaia-ops/settings.json +72 -0
- package/dist/gaia-ops/skills/README.md +154 -0
- package/dist/gaia-ops/skills/agent-protocol/SKILL.md +93 -0
- package/dist/gaia-ops/skills/agent-protocol/examples.md +223 -0
- package/dist/gaia-ops/skills/agent-response/SKILL.md +69 -0
- package/dist/gaia-ops/skills/agentic-loop/SKILL.md +80 -0
- package/dist/gaia-ops/skills/agentic-loop/reference.md +378 -0
- package/dist/gaia-ops/skills/blog-writing/SKILL.md +98 -0
- package/dist/gaia-ops/skills/blog-writing/reference.md +130 -0
- package/dist/gaia-ops/skills/brief-spec/SKILL.md +182 -0
- package/dist/gaia-ops/skills/command-execution/SKILL.md +64 -0
- package/dist/gaia-ops/skills/command-execution/reference.md +83 -0
- package/dist/gaia-ops/skills/context-updater/SKILL.md +87 -0
- package/dist/gaia-ops/skills/context-updater/examples.md +71 -0
- package/dist/gaia-ops/skills/developer-patterns/SKILL.md +50 -0
- package/dist/gaia-ops/skills/developer-patterns/reference.md +112 -0
- package/dist/gaia-ops/skills/execution/SKILL.md +99 -0
- package/dist/gaia-ops/skills/fast-queries/SKILL.md +43 -0
- package/dist/gaia-ops/skills/gaia-compact/SKILL.md +74 -0
- package/dist/gaia-ops/skills/gaia-patterns/SKILL.md +108 -0
- package/dist/gaia-ops/skills/gaia-patterns/reference.md +395 -0
- package/dist/gaia-ops/skills/gaia-planner/SKILL.md +37 -0
- package/dist/gaia-ops/skills/gaia-planner/reference.md +107 -0
- package/dist/gaia-ops/skills/gaia-release/SKILL.md +82 -0
- package/dist/gaia-ops/skills/gaia-release/reference.md +102 -0
- package/dist/gaia-ops/skills/gaia-self-check/SKILL.md +114 -0
- package/dist/gaia-ops/skills/gaia-self-check/reference.md +453 -0
- package/dist/gaia-ops/skills/gaia-verify/SKILL.md +77 -0
- package/dist/gaia-ops/skills/gaia-verify/reference.md +80 -0
- package/dist/gaia-ops/skills/git-conventions/SKILL.md +47 -0
- package/dist/gaia-ops/skills/gitops-patterns/SKILL.md +60 -0
- package/dist/gaia-ops/skills/gitops-patterns/reference.md +183 -0
- package/dist/gaia-ops/skills/gmail-policy/SKILL.md +200 -0
- package/dist/gaia-ops/skills/gmail-policy/reference.md +150 -0
- package/dist/gaia-ops/skills/gmail-triage/SKILL.md +100 -0
- package/dist/gaia-ops/skills/gws-setup/SKILL.md +99 -0
- package/dist/gaia-ops/skills/gws-setup/reference.md +73 -0
- package/dist/gaia-ops/skills/investigation/SKILL.md +100 -0
- package/dist/gaia-ops/skills/memory-curation/SKILL.md +83 -0
- package/dist/gaia-ops/skills/memory-search/SKILL.md +88 -0
- package/dist/gaia-ops/skills/orchestrator-approval/SKILL.md +160 -0
- package/dist/gaia-ops/skills/orchestrator-approval/reference.md +174 -0
- package/dist/gaia-ops/skills/pending-approvals/SKILL.md +72 -0
- package/dist/gaia-ops/skills/pending-approvals/reference.md +214 -0
- package/dist/gaia-ops/skills/readme-writing/SKILL.md +71 -0
- package/dist/gaia-ops/skills/readme-writing/reference.md +188 -0
- package/dist/gaia-ops/skills/reference.md +135 -0
- package/dist/gaia-ops/skills/request-approval/SKILL.md +140 -0
- package/dist/gaia-ops/skills/request-approval/examples.md +140 -0
- package/dist/gaia-ops/skills/request-approval/reference.md +57 -0
- package/dist/gaia-ops/skills/schedule-task/SKILL.md +64 -0
- package/dist/gaia-ops/skills/schedule-task/reference.md +233 -0
- package/dist/gaia-ops/skills/security-tiers/SKILL.md +141 -0
- package/dist/gaia-ops/skills/security-tiers/destructive-commands-reference.md +623 -0
- package/dist/gaia-ops/skills/security-tiers/reference.md +39 -0
- package/dist/gaia-ops/skills/skill-creation/SKILL.md +92 -0
- package/dist/gaia-ops/skills/skill-creation/reference.md +29 -0
- package/dist/gaia-ops/skills/terraform-patterns/SKILL.md +89 -0
- package/dist/gaia-ops/skills/terraform-patterns/reference.md +93 -0
- package/dist/gaia-ops/tools/__init__.py +9 -0
- package/dist/gaia-ops/tools/agentic-loop/decide-status.py +210 -0
- package/dist/gaia-ops/tools/agentic-loop/parse-metric.py +106 -0
- package/dist/gaia-ops/tools/agentic-loop/record-iteration.py +221 -0
- package/dist/gaia-ops/tools/context/README.md +132 -0
- package/dist/gaia-ops/tools/context/__init__.py +42 -0
- package/dist/gaia-ops/tools/context/_paths.py +20 -0
- package/dist/gaia-ops/tools/context/context_provider.py +721 -0
- package/dist/gaia-ops/tools/context/context_section_reader.py +342 -0
- package/dist/gaia-ops/tools/context/deep_merge.py +159 -0
- package/dist/gaia-ops/tools/context/pending_updates.py +760 -0
- package/dist/gaia-ops/tools/context/surface_router.py +278 -0
- package/dist/gaia-ops/tools/fast-queries/README.md +65 -0
- package/dist/gaia-ops/tools/fast-queries/__init__.py +30 -0
- package/dist/gaia-ops/tools/fast-queries/appservices/quicktriage_devops_developer.sh +75 -0
- package/dist/gaia-ops/tools/fast-queries/cloud/aws/quicktriage_aws_troubleshooter.sh +32 -0
- package/dist/gaia-ops/tools/fast-queries/cloud/gcp/quicktriage_gcp_troubleshooter.sh +88 -0
- package/dist/gaia-ops/tools/fast-queries/gitops/quicktriage_gitops_operator.sh +48 -0
- package/dist/gaia-ops/tools/fast-queries/run_triage.sh +59 -0
- package/dist/gaia-ops/tools/fast-queries/terraform/quicktriage_terraform_architect.sh +80 -0
- package/dist/gaia-ops/tools/gaia_simulator/__init__.py +33 -0
- package/dist/gaia-ops/tools/gaia_simulator/cli.py +354 -0
- package/dist/gaia-ops/tools/gaia_simulator/extractor.py +457 -0
- package/dist/gaia-ops/tools/gaia_simulator/reporter.py +258 -0
- package/dist/gaia-ops/tools/gaia_simulator/routing_simulator.py +334 -0
- package/dist/gaia-ops/tools/gaia_simulator/runner.py +539 -0
- package/dist/gaia-ops/tools/gaia_simulator/skills_mapper.py +264 -0
- package/dist/gaia-ops/tools/memory/README.md +0 -0
- package/dist/gaia-ops/tools/memory/__init__.py +20 -0
- package/dist/gaia-ops/tools/memory/backfill_fts5.py +107 -0
- package/dist/gaia-ops/tools/memory/conflict_detector.py +295 -0
- package/dist/gaia-ops/tools/memory/episodic.py +1210 -0
- package/dist/gaia-ops/tools/memory/git_invalidator.py +262 -0
- package/dist/gaia-ops/tools/memory/paths.py +102 -0
- package/dist/gaia-ops/tools/memory/scoring.py +193 -0
- package/dist/gaia-ops/tools/memory/search_store.py +360 -0
- package/dist/gaia-ops/tools/persist_transcript_analysis.py +85 -0
- package/dist/gaia-ops/tools/review/__init__.py +1 -0
- package/dist/gaia-ops/tools/review/review_engine.py +157 -0
- package/dist/gaia-ops/tools/scan/__init__.py +35 -0
- package/dist/gaia-ops/tools/scan/config.py +247 -0
- package/dist/gaia-ops/tools/scan/merge.py +212 -0
- package/dist/gaia-ops/tools/scan/orchestrator.py +549 -0
- package/dist/gaia-ops/tools/scan/registry.py +127 -0
- package/dist/gaia-ops/tools/scan/scanners/__init__.py +18 -0
- package/dist/gaia-ops/tools/scan/scanners/base.py +137 -0
- package/dist/gaia-ops/tools/scan/scanners/environment.py +349 -0
- package/dist/gaia-ops/tools/scan/scanners/git.py +570 -0
- package/dist/gaia-ops/tools/scan/scanners/infrastructure.py +875 -0
- package/dist/gaia-ops/tools/scan/scanners/orchestration.py +600 -0
- package/dist/gaia-ops/tools/scan/scanners/stack.py +1085 -0
- package/dist/gaia-ops/tools/scan/scanners/tools.py +260 -0
- package/dist/gaia-ops/tools/scan/setup.py +686 -0
- package/dist/gaia-ops/tools/scan/tests/__init__.py +1 -0
- package/dist/gaia-ops/tools/scan/tests/conftest.py +796 -0
- package/dist/gaia-ops/tools/scan/tests/test_environment.py +323 -0
- package/dist/gaia-ops/tools/scan/tests/test_git.py +419 -0
- package/dist/gaia-ops/tools/scan/tests/test_infrastructure.py +382 -0
- package/dist/gaia-ops/tools/scan/tests/test_integration.py +920 -0
- package/dist/gaia-ops/tools/scan/tests/test_merge.py +269 -0
- package/dist/gaia-ops/tools/scan/tests/test_orchestration.py +304 -0
- package/dist/gaia-ops/tools/scan/tests/test_stack.py +604 -0
- package/dist/gaia-ops/tools/scan/tests/test_tools.py +349 -0
- package/dist/gaia-ops/tools/scan/ui.py +624 -0
- package/dist/gaia-ops/tools/scan/verify.py +270 -0
- package/dist/gaia-ops/tools/scan/walk.py +118 -0
- package/dist/gaia-ops/tools/scan/workspace.py +85 -0
- package/dist/gaia-ops/tools/validation/README.md +244 -0
- package/dist/gaia-ops/tools/validation/__init__.py +17 -0
- package/dist/gaia-ops/tools/validation/approval_gate.py +321 -0
- package/dist/gaia-ops/tools/validation/validate_skills.py +189 -0
- package/dist/gaia-security/.claude-plugin/plugin.json +24 -0
- package/dist/gaia-security/README.md +90 -0
- package/dist/gaia-security/config/universal-rules.json +102 -0
- package/dist/gaia-security/hooks/adapters/__init__.py +52 -0
- package/dist/gaia-security/hooks/adapters/base.py +219 -0
- package/dist/gaia-security/hooks/adapters/channel.py +17 -0
- package/dist/gaia-security/hooks/adapters/claude_code.py +1890 -0
- package/dist/gaia-security/hooks/adapters/types.py +194 -0
- package/dist/gaia-security/hooks/adapters/utils.py +25 -0
- package/dist/gaia-security/hooks/hooks.json +84 -0
- package/dist/gaia-security/hooks/modules/__init__.py +15 -0
- package/dist/gaia-security/hooks/modules/agents/__init__.py +29 -0
- package/dist/gaia-security/hooks/modules/agents/contract_validator.py +647 -0
- package/dist/gaia-security/hooks/modules/agents/response_contract.py +496 -0
- package/dist/gaia-security/hooks/modules/agents/skill_injection_verifier.py +120 -0
- package/dist/gaia-security/hooks/modules/agents/state_tracker.py +267 -0
- package/dist/gaia-security/hooks/modules/agents/task_info_builder.py +74 -0
- package/dist/gaia-security/hooks/modules/agents/transcript_analyzer.py +458 -0
- package/dist/gaia-security/hooks/modules/agents/transcript_reader.py +152 -0
- package/dist/gaia-security/hooks/modules/audit/__init__.py +28 -0
- package/dist/gaia-security/hooks/modules/audit/event_detector.py +168 -0
- package/dist/gaia-security/hooks/modules/audit/logger.py +131 -0
- package/dist/gaia-security/hooks/modules/audit/metrics.py +134 -0
- package/dist/gaia-security/hooks/modules/audit/workflow_auditor.py +611 -0
- package/dist/gaia-security/hooks/modules/audit/workflow_recorder.py +296 -0
- package/dist/gaia-security/hooks/modules/context/__init__.py +11 -0
- package/dist/gaia-security/hooks/modules/context/agentic_loop_detector.py +165 -0
- package/dist/gaia-security/hooks/modules/context/anchor_tracker.py +317 -0
- package/dist/gaia-security/hooks/modules/context/compact_context_builder.py +218 -0
- package/dist/gaia-security/hooks/modules/context/context_freshness.py +145 -0
- package/dist/gaia-security/hooks/modules/context/context_injector.py +558 -0
- package/dist/gaia-security/hooks/modules/context/context_writer.py +530 -0
- package/dist/gaia-security/hooks/modules/context/contracts_loader.py +161 -0
- package/dist/gaia-security/hooks/modules/core/__init__.py +40 -0
- package/dist/gaia-security/hooks/modules/core/hook_entry.py +78 -0
- package/dist/gaia-security/hooks/modules/core/paths.py +160 -0
- package/dist/gaia-security/hooks/modules/core/plugin_mode.py +149 -0
- package/dist/gaia-security/hooks/modules/core/plugin_setup.py +577 -0
- package/dist/gaia-security/hooks/modules/core/state.py +179 -0
- package/dist/gaia-security/hooks/modules/core/stdin.py +24 -0
- package/dist/gaia-security/hooks/modules/events/__init__.py +1 -0
- package/dist/gaia-security/hooks/modules/events/event_writer.py +210 -0
- package/dist/gaia-security/hooks/modules/memory/__init__.py +8 -0
- package/dist/gaia-security/hooks/modules/memory/episode_writer.py +216 -0
- package/dist/gaia-security/hooks/modules/orchestrator/__init__.py +1 -0
- package/dist/gaia-security/hooks/modules/orchestrator/delegate_mode.py +122 -0
- package/dist/gaia-security/hooks/modules/scanning/__init__.py +8 -0
- package/dist/gaia-security/hooks/modules/scanning/scan_trigger.py +84 -0
- package/dist/gaia-security/hooks/modules/security/__init__.py +120 -0
- package/dist/gaia-security/hooks/modules/security/approval_cleanup.py +87 -0
- package/dist/gaia-security/hooks/modules/security/approval_constants.py +23 -0
- package/dist/gaia-security/hooks/modules/security/approval_grants.py +1638 -0
- package/dist/gaia-security/hooks/modules/security/approval_messages.py +71 -0
- package/dist/gaia-security/hooks/modules/security/approval_scopes.py +222 -0
- package/dist/gaia-security/hooks/modules/security/blocked_commands.py +595 -0
- package/dist/gaia-security/hooks/modules/security/blocked_message_formatter.py +87 -0
- package/dist/gaia-security/hooks/modules/security/command_semantics.py +181 -0
- package/dist/gaia-security/hooks/modules/security/composition_rules.py +547 -0
- package/dist/gaia-security/hooks/modules/security/flag_classifiers.py +873 -0
- package/dist/gaia-security/hooks/modules/security/gitops_validator.py +179 -0
- package/dist/gaia-security/hooks/modules/security/mutative_verbs.py +1131 -0
- package/dist/gaia-security/hooks/modules/security/network_hosts.py +481 -0
- package/dist/gaia-security/hooks/modules/security/prompt_validator.py +40 -0
- package/dist/gaia-security/hooks/modules/security/shell_unwrapper.py +165 -0
- package/dist/gaia-security/hooks/modules/security/tiers.py +196 -0
- package/dist/gaia-security/hooks/modules/session/__init__.py +10 -0
- package/dist/gaia-security/hooks/modules/session/pending_scanner.py +174 -0
- package/dist/gaia-security/hooks/modules/session/session_context_writer.py +100 -0
- package/dist/gaia-security/hooks/modules/session/session_event_injector.py +160 -0
- package/dist/gaia-security/hooks/modules/session/session_manager.py +31 -0
- package/dist/gaia-security/hooks/modules/session/session_registry.py +232 -0
- package/dist/gaia-security/hooks/modules/tools/__init__.py +29 -0
- package/dist/gaia-security/hooks/modules/tools/bash_validator.py +1008 -0
- package/dist/gaia-security/hooks/modules/tools/cloud_pipe_validator.py +231 -0
- package/dist/gaia-security/hooks/modules/tools/hook_response.py +55 -0
- package/dist/gaia-security/hooks/modules/tools/shell_parser.py +227 -0
- package/dist/gaia-security/hooks/modules/tools/stage_decomposer.py +315 -0
- package/dist/gaia-security/hooks/modules/tools/task_validator.py +294 -0
- package/dist/gaia-security/hooks/modules/validation/__init__.py +23 -0
- package/dist/gaia-security/hooks/modules/validation/commit_validator.py +380 -0
- package/dist/gaia-security/hooks/post_tool_use.py +54 -0
- package/dist/gaia-security/hooks/pre_tool_use.py +413 -0
- package/dist/gaia-security/hooks/session_start.py +81 -0
- package/dist/gaia-security/hooks/stop_hook.py +82 -0
- package/dist/gaia-security/hooks/user_prompt_submit.py +246 -0
- package/dist/gaia-security/settings.json +58 -0
- package/git-hooks/commit-msg +41 -0
- package/hooks/README.md +100 -0
- package/hooks/adapters/__init__.py +52 -0
- package/hooks/adapters/base.py +219 -0
- package/hooks/adapters/channel.py +17 -0
- package/hooks/adapters/claude_code.py +1890 -0
- package/hooks/adapters/types.py +194 -0
- package/hooks/adapters/utils.py +25 -0
- package/hooks/elicitation_result.py +179 -0
- package/hooks/hooks.json +84 -0
- package/hooks/modules/README.md +189 -0
- package/hooks/modules/__init__.py +15 -0
- package/hooks/modules/agents/__init__.py +29 -0
- package/hooks/modules/agents/contract_validator.py +647 -0
- package/hooks/modules/agents/response_contract.py +496 -0
- package/hooks/modules/agents/skill_injection_verifier.py +120 -0
- package/hooks/modules/agents/state_tracker.py +267 -0
- package/hooks/modules/agents/task_info_builder.py +74 -0
- package/hooks/modules/agents/transcript_analyzer.py +458 -0
- package/hooks/modules/agents/transcript_reader.py +152 -0
- package/hooks/modules/audit/__init__.py +28 -0
- package/hooks/modules/audit/event_detector.py +168 -0
- package/hooks/modules/audit/logger.py +131 -0
- package/hooks/modules/audit/metrics.py +134 -0
- package/hooks/modules/audit/workflow_auditor.py +611 -0
- package/hooks/modules/audit/workflow_recorder.py +296 -0
- package/hooks/modules/context/__init__.py +11 -0
- package/hooks/modules/context/agentic_loop_detector.py +165 -0
- package/hooks/modules/context/anchor_tracker.py +317 -0
- package/hooks/modules/context/compact_context_builder.py +218 -0
- package/hooks/modules/context/context_freshness.py +145 -0
- package/hooks/modules/context/context_injector.py +558 -0
- package/hooks/modules/context/context_writer.py +530 -0
- package/hooks/modules/context/contracts_loader.py +161 -0
- package/hooks/modules/core/__init__.py +40 -0
- package/hooks/modules/core/hook_entry.py +78 -0
- package/hooks/modules/core/paths.py +160 -0
- package/hooks/modules/core/plugin_mode.py +149 -0
- package/hooks/modules/core/plugin_setup.py +577 -0
- package/hooks/modules/core/state.py +179 -0
- package/hooks/modules/core/stdin.py +24 -0
- package/hooks/modules/events/__init__.py +1 -0
- package/hooks/modules/events/event_writer.py +210 -0
- package/hooks/modules/evidence/__init__.py +34 -0
- package/hooks/modules/evidence/assertions.py +137 -0
- package/hooks/modules/evidence/index_writer.py +57 -0
- package/hooks/modules/evidence/loader.py +126 -0
- package/hooks/modules/evidence/runner.py +241 -0
- package/hooks/modules/memory/__init__.py +8 -0
- package/hooks/modules/memory/episode_writer.py +216 -0
- package/hooks/modules/orchestrator/__init__.py +1 -0
- package/hooks/modules/orchestrator/delegate_mode.py +122 -0
- package/hooks/modules/scanning/__init__.py +8 -0
- package/hooks/modules/scanning/scan_trigger.py +84 -0
- package/hooks/modules/security/__init__.py +120 -0
- package/hooks/modules/security/approval_cleanup.py +87 -0
- package/hooks/modules/security/approval_constants.py +23 -0
- package/hooks/modules/security/approval_grants.py +1638 -0
- package/hooks/modules/security/approval_messages.py +71 -0
- package/hooks/modules/security/approval_scopes.py +222 -0
- package/hooks/modules/security/blocked_commands.py +595 -0
- package/hooks/modules/security/blocked_message_formatter.py +87 -0
- package/hooks/modules/security/command_semantics.py +181 -0
- package/hooks/modules/security/composition_rules.py +547 -0
- package/hooks/modules/security/flag_classifiers.py +873 -0
- package/hooks/modules/security/gitops_validator.py +179 -0
- package/hooks/modules/security/mutative_verbs.py +1131 -0
- package/hooks/modules/security/network_hosts.py +481 -0
- package/hooks/modules/security/prompt_validator.py +40 -0
- package/hooks/modules/security/shell_unwrapper.py +165 -0
- package/hooks/modules/security/tiers.py +196 -0
- package/hooks/modules/session/__init__.py +10 -0
- package/hooks/modules/session/pending_scanner.py +174 -0
- package/hooks/modules/session/session_context_writer.py +100 -0
- package/hooks/modules/session/session_event_injector.py +160 -0
- package/hooks/modules/session/session_manager.py +31 -0
- package/hooks/modules/session/session_registry.py +232 -0
- package/hooks/modules/tools/__init__.py +29 -0
- package/hooks/modules/tools/bash_validator.py +1008 -0
- package/hooks/modules/tools/cloud_pipe_validator.py +231 -0
- package/hooks/modules/tools/hook_response.py +55 -0
- package/hooks/modules/tools/shell_parser.py +227 -0
- package/hooks/modules/tools/stage_decomposer.py +315 -0
- package/hooks/modules/tools/task_validator.py +294 -0
- package/hooks/modules/validation/__init__.py +23 -0
- package/hooks/modules/validation/commit_validator.py +380 -0
- package/hooks/post_compact.py +43 -0
- package/hooks/post_tool_use.py +54 -0
- package/hooks/pre_compact.py +60 -0
- package/hooks/pre_tool_use.py +413 -0
- package/hooks/session_start.py +81 -0
- package/hooks/stop_hook.py +82 -0
- package/hooks/subagent_start.py +71 -0
- package/hooks/subagent_stop.py +295 -0
- package/hooks/task_completed.py +70 -0
- package/hooks/user_prompt_submit.py +246 -0
- package/index.js +83 -0
- package/package.json +99 -0
- package/pyproject.toml +32 -0
- package/skills/README.md +154 -0
- package/skills/agent-protocol/SKILL.md +93 -0
- package/skills/agent-protocol/examples.md +223 -0
- package/skills/agent-response/SKILL.md +69 -0
- package/skills/agentic-loop/SKILL.md +80 -0
- package/skills/agentic-loop/reference.md +378 -0
- package/skills/blog-writing/SKILL.md +98 -0
- package/skills/blog-writing/reference.md +130 -0
- package/skills/brief-spec/SKILL.md +182 -0
- package/skills/command-execution/SKILL.md +64 -0
- package/skills/command-execution/reference.md +83 -0
- package/skills/context-updater/SKILL.md +87 -0
- package/skills/context-updater/examples.md +71 -0
- package/skills/developer-patterns/SKILL.md +50 -0
- package/skills/developer-patterns/reference.md +112 -0
- package/skills/execution/SKILL.md +99 -0
- package/skills/fast-queries/SKILL.md +43 -0
- package/skills/gaia-compact/SKILL.md +74 -0
- package/skills/gaia-patterns/SKILL.md +108 -0
- package/skills/gaia-patterns/reference.md +395 -0
- package/skills/gaia-planner/SKILL.md +37 -0
- package/skills/gaia-planner/reference.md +107 -0
- package/skills/gaia-release/SKILL.md +82 -0
- package/skills/gaia-release/reference.md +102 -0
- package/skills/gaia-self-check/SKILL.md +114 -0
- package/skills/gaia-self-check/reference.md +453 -0
- package/skills/gaia-verify/SKILL.md +77 -0
- package/skills/gaia-verify/reference.md +80 -0
- package/skills/git-conventions/SKILL.md +47 -0
- package/skills/gitops-patterns/SKILL.md +60 -0
- package/skills/gitops-patterns/reference.md +183 -0
- package/skills/gmail-policy/SKILL.md +200 -0
- package/skills/gmail-policy/reference.md +150 -0
- package/skills/gmail-triage/SKILL.md +100 -0
- package/skills/gws-setup/SKILL.md +99 -0
- package/skills/gws-setup/reference.md +73 -0
- package/skills/investigation/SKILL.md +100 -0
- package/skills/memory-curation/SKILL.md +83 -0
- package/skills/memory-search/SKILL.md +88 -0
- package/skills/orchestrator-approval/SKILL.md +160 -0
- package/skills/orchestrator-approval/reference.md +174 -0
- package/skills/pending-approvals/SKILL.md +72 -0
- package/skills/pending-approvals/reference.md +214 -0
- package/skills/readme-writing/SKILL.md +71 -0
- package/skills/readme-writing/reference.md +188 -0
- package/skills/reference.md +135 -0
- package/skills/request-approval/SKILL.md +140 -0
- package/skills/request-approval/examples.md +140 -0
- package/skills/request-approval/reference.md +57 -0
- package/skills/schedule-task/SKILL.md +64 -0
- package/skills/schedule-task/reference.md +233 -0
- package/skills/security-tiers/SKILL.md +141 -0
- package/skills/security-tiers/destructive-commands-reference.md +623 -0
- package/skills/security-tiers/reference.md +39 -0
- package/skills/skill-creation/SKILL.md +92 -0
- package/skills/skill-creation/reference.md +29 -0
- package/skills/terraform-patterns/SKILL.md +89 -0
- package/skills/terraform-patterns/reference.md +93 -0
- package/templates/README.md +69 -0
- package/templates/managed-settings.template.json +43 -0
- package/tools/__init__.py +9 -0
- package/tools/agentic-loop/decide-status.py +210 -0
- package/tools/agentic-loop/parse-metric.py +106 -0
- package/tools/agentic-loop/record-iteration.py +221 -0
- package/tools/context/README.md +132 -0
- package/tools/context/__init__.py +42 -0
- package/tools/context/_paths.py +20 -0
- package/tools/context/context_provider.py +721 -0
- package/tools/context/context_section_reader.py +342 -0
- package/tools/context/deep_merge.py +159 -0
- package/tools/context/pending_updates.py +760 -0
- package/tools/context/surface_router.py +278 -0
- package/tools/fast-queries/README.md +65 -0
- package/tools/fast-queries/__init__.py +30 -0
- package/tools/fast-queries/appservices/quicktriage_devops_developer.sh +75 -0
- package/tools/fast-queries/cloud/aws/quicktriage_aws_troubleshooter.sh +32 -0
- package/tools/fast-queries/cloud/gcp/quicktriage_gcp_troubleshooter.sh +88 -0
- package/tools/fast-queries/gitops/quicktriage_gitops_operator.sh +48 -0
- package/tools/fast-queries/run_triage.sh +59 -0
- package/tools/fast-queries/terraform/quicktriage_terraform_architect.sh +80 -0
- package/tools/gaia_simulator/__init__.py +33 -0
- package/tools/gaia_simulator/cli.py +354 -0
- package/tools/gaia_simulator/extractor.py +457 -0
- package/tools/gaia_simulator/reporter.py +258 -0
- package/tools/gaia_simulator/routing_simulator.py +334 -0
- package/tools/gaia_simulator/runner.py +539 -0
- package/tools/gaia_simulator/skills_mapper.py +264 -0
- package/tools/memory/README.md +0 -0
- package/tools/memory/__init__.py +20 -0
- package/tools/memory/backfill_fts5.py +107 -0
- package/tools/memory/conflict_detector.py +295 -0
- package/tools/memory/episodic.py +1210 -0
- package/tools/memory/git_invalidator.py +262 -0
- package/tools/memory/paths.py +102 -0
- package/tools/memory/scoring.py +193 -0
- package/tools/memory/search_store.py +360 -0
- package/tools/persist_transcript_analysis.py +85 -0
- package/tools/review/__init__.py +1 -0
- package/tools/review/review_engine.py +157 -0
- package/tools/scan/__init__.py +35 -0
- package/tools/scan/config.py +247 -0
- package/tools/scan/merge.py +212 -0
- package/tools/scan/orchestrator.py +549 -0
- package/tools/scan/registry.py +127 -0
- package/tools/scan/scanners/__init__.py +18 -0
- package/tools/scan/scanners/base.py +137 -0
- package/tools/scan/scanners/environment.py +349 -0
- package/tools/scan/scanners/git.py +570 -0
- package/tools/scan/scanners/infrastructure.py +875 -0
- package/tools/scan/scanners/orchestration.py +600 -0
- package/tools/scan/scanners/stack.py +1085 -0
- package/tools/scan/scanners/tools.py +260 -0
- package/tools/scan/setup.py +686 -0
- package/tools/scan/tests/__init__.py +1 -0
- package/tools/scan/tests/conftest.py +796 -0
- package/tools/scan/tests/test_environment.py +323 -0
- package/tools/scan/tests/test_git.py +419 -0
- package/tools/scan/tests/test_infrastructure.py +382 -0
- package/tools/scan/tests/test_integration.py +920 -0
- package/tools/scan/tests/test_merge.py +269 -0
- package/tools/scan/tests/test_orchestration.py +304 -0
- package/tools/scan/tests/test_stack.py +604 -0
- package/tools/scan/tests/test_tools.py +349 -0
- package/tools/scan/ui.py +624 -0
- package/tools/scan/verify.py +270 -0
- package/tools/scan/walk.py +118 -0
- package/tools/scan/workspace.py +85 -0
- package/tools/validation/README.md +244 -0
- package/tools/validation/__init__.py +17 -0
- package/tools/validation/approval_gate.py +321 -0
- package/tools/validation/validate_skills.py +189 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,1212 @@
|
|
|
1
|
+
# Changelog: CLAUDE.md
|
|
2
|
+
|
|
3
|
+
All notable changes to the gaia-ops orchestration system are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [5.0.0-rc1] - 2026-04-21
|
|
11
|
+
|
|
12
|
+
### Release Candidate: Context Evals, Planner M1-M6, Memory CLI, Security Hardening
|
|
13
|
+
|
|
14
|
+
First release candidate for v5.0.0. Consolidates the agentic-loop evaluation
|
|
15
|
+
framework, the closed gaia-planner milestones, the unified `gaia memory` CLI,
|
|
16
|
+
and a round of security hardening covering approval lifecycle, Gmail policy,
|
|
17
|
+
and session compaction.
|
|
18
|
+
|
|
19
|
+
#### Added
|
|
20
|
+
- **Context-evals framework** — full pytest-driven evaluation suite for agent
|
|
21
|
+
context consumption. 5 graders (code, contract, trace, routing,
|
|
22
|
+
skill-injection), 3 backends (static, headless, live), 10 scenarios in
|
|
23
|
+
catalog, baseline snapshot with drift detection, and reporter for CI-friendly
|
|
24
|
+
output. Tests under `tests/evals/` with `baseline.json` tracked and
|
|
25
|
+
`{timestamp}-smoke.json` gitignored.
|
|
26
|
+
- **gaia-planner M1-M6 closed** — brief-spec + gaia-planner agent pipeline
|
|
27
|
+
end-to-end. Includes plan state machine, REVIEW -> APPROVAL_REQUEST split,
|
|
28
|
+
session_registry liveness filter, and approvals-drift-fix closed 2026-04-20.
|
|
29
|
+
- **gaia memory CLI** — `python3 bin/gaia memory` subcommand with search
|
|
30
|
+
(`gaia memory search`), episode inspection (`gaia memory show <id>`), FTS5
|
|
31
|
+
full-text index, scoring overhaul, and session context orientation.
|
|
32
|
+
- **gaia-compact skill** — structured session compaction preserving decisions,
|
|
33
|
+
components, gaps, file map, and next steps. Invoked via `/compact` or
|
|
34
|
+
orchestrator-level "compacta" triggers.
|
|
35
|
+
- **tools/__init__.py** — namespace marker for pytest rootdir parity. Resolves
|
|
36
|
+
8 collection errors when running full suite (tests goes to 3702 passed,
|
|
37
|
+
36 skipped, 0 errors).
|
|
38
|
+
|
|
39
|
+
#### Changed
|
|
40
|
+
- **Gmail policy** — macro-prefix fix: `+` in label prefixes now correctly
|
|
41
|
+
strips before state-machine classification. Reply classified as mutative
|
|
42
|
+
(was previously read-only, causing false negatives in T3 flow).
|
|
43
|
+
- **Approval workflow docs** — documented that `permissionMode` does not
|
|
44
|
+
survive SendMessage resume. Subagents emitting APPROVAL_REQUEST mid-task
|
|
45
|
+
require orchestrator to re-dispatch fresh (mode does not inherit on resume).
|
|
46
|
+
- **Package version** — `package.json` aligned with `pyproject.toml` at
|
|
47
|
+
`5.0.0-rc1` (previously drifted at `5.0.0-beta.9`).
|
|
48
|
+
|
|
49
|
+
#### Fixed
|
|
50
|
+
- **pytest collection** — `tools/__init__.py` prevents rootdir walk-up mismatch
|
|
51
|
+
between `tests/` and `tools/scan/tests/`. Full suite now collects cleanly.
|
|
52
|
+
- **Evals smoke JSONs** — transient artifacts no longer tracked in git;
|
|
53
|
+
`tests/evals/results/*-smoke.json` gitignored, `baseline.json` preserved.
|
|
54
|
+
|
|
55
|
+
### Unified Python CLI + JS CLI Deprecation (inherited from beta cycle)
|
|
56
|
+
|
|
57
|
+
The JS CLIs (`gaia-status`, `gaia-doctor`, `gaia-cleanup`, `gaia-update`, `gaia-history`, `gaia-metrics`) are now deprecated in favor of the unified `bin/gaia` Python CLI. The JS CLIs remain functional but print deprecation warnings to stderr on every invocation.
|
|
58
|
+
|
|
59
|
+
#### Migration: Old Command → New Command
|
|
60
|
+
|
|
61
|
+
| Old JS command | New unified command |
|
|
62
|
+
|---|---|
|
|
63
|
+
| `npx gaia-status` | `python3 bin/gaia status` |
|
|
64
|
+
| `npx gaia-doctor` | `python3 bin/gaia doctor` |
|
|
65
|
+
| `npx gaia-cleanup` | `python3 bin/gaia cleanup` |
|
|
66
|
+
| `npx gaia-update` | `python3 bin/gaia update` |
|
|
67
|
+
| `npx gaia-history` | `python3 bin/gaia history` |
|
|
68
|
+
| `npx gaia-metrics` | `python3 bin/gaia metrics` |
|
|
69
|
+
|
|
70
|
+
#### New commands with no JS equivalent
|
|
71
|
+
|
|
72
|
+
The unified CLI also provides subcommands that did not exist as standalone JS CLIs:
|
|
73
|
+
|
|
74
|
+
| New command | Description |
|
|
75
|
+
|---|---|
|
|
76
|
+
| `python3 bin/gaia approvals list` | List pending T3 approval requests |
|
|
77
|
+
| `python3 bin/gaia approvals show APPROVAL_ID` | Show approval detail |
|
|
78
|
+
| `python3 bin/gaia approvals reject NONCE` | Reject a pending approval |
|
|
79
|
+
| `python3 bin/gaia approvals clean` | Remove expired grants |
|
|
80
|
+
| `python3 bin/gaia approvals stats` | Show approval statistics |
|
|
81
|
+
| `python3 bin/gaia plans list` | List all feature briefs |
|
|
82
|
+
| `python3 bin/gaia plans show BRIEF_NAME` | Show a brief and plan |
|
|
83
|
+
| `python3 bin/gaia context show` | Display project-context.json summary |
|
|
84
|
+
| `python3 bin/gaia context scan` | Invoke gaia-scan to refresh context |
|
|
85
|
+
|
|
86
|
+
#### Deprecation timeline
|
|
87
|
+
|
|
88
|
+
- **Now (M6):** JS CLIs print `[DEPRECATED]` warnings to stderr. All functionality remains intact.
|
|
89
|
+
- **Future version (TBD):** JS CLIs will be removed from `package.json` bin field.
|
|
90
|
+
|
|
91
|
+
#### Why a unified CLI?
|
|
92
|
+
|
|
93
|
+
- Zero external dependencies (stdlib only, Python 3.9+)
|
|
94
|
+
- Single entry point: `bin/gaia --help` for all subcommands
|
|
95
|
+
- Machine-readable `--json` output on all subcommands
|
|
96
|
+
- Consistent exit codes: 0=ok, 1=warnings, 2=errors
|
|
97
|
+
- Extensible: add subcommands by dropping a `bin/cli/<name>.py` file
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## [4.5.0] - 2026-03-24
|
|
102
|
+
|
|
103
|
+
### Settings Architecture Redesign + Multi-Cloud Security
|
|
104
|
+
|
|
105
|
+
Unified approach for permissions across NPM and plugin installation modes. Permissions now live in `settings.local.json` (union merge, preserves user config). `settings.json` contains only hooks.
|
|
106
|
+
|
|
107
|
+
#### Added
|
|
108
|
+
- **Azure deny rules** — 39 rules covering resource groups, networking, AKS, Key Vault, CosmosDB, Service Bus, and more
|
|
109
|
+
- **Generic wildcard deny rules** — 20 rules that catch all present and future cloud services (`aws * delete-*`, `az * delete`, `gcloud * delete`, etc.)
|
|
110
|
+
- **Indirect execution detection** — Catches `bash -c`, `eval`, `python3 -c`, `node -e`, `ruby -e`, `perl -e` wrappers that bypass regex patterns
|
|
111
|
+
- **Managed settings template** — `templates/managed-settings.template.json` for enterprise deployment via Claude.ai Admin Console
|
|
112
|
+
- **`updateLocalPermissions()`** in `gaia-update.js` — NPM postinstall now merges permissions into `settings.local.json` (same approach as plugin SessionStart)
|
|
113
|
+
- **Plugin mode detection via `plugin.json`** — `plugin_setup.py` and `plugin_mode.py` now read `.claude-plugin/plugin.json` for reliable name/version/mode detection with `--plugin-dir`
|
|
114
|
+
- **First-run welcome message** — `user_prompt_submit.py` detects first run and injects a welcome explaining that restart is needed to activate permissions
|
|
115
|
+
|
|
116
|
+
#### Changed
|
|
117
|
+
- **`settings.template.json`** — Removed permissions block; template now contains only hooks + environment
|
|
118
|
+
- **`_DENY_RULES` centralized in Python** — Single source of truth in `plugin_setup.py`, shared by both OPS and SECURITY modes
|
|
119
|
+
- **T3 approval flow** — All T3 mutative operations now use native `ask` dialog (both ops and security mode). Nonce workflow removed from direct conversation; kept for subagent use via skills.
|
|
120
|
+
- **`approval_messages.py`** — Simplified T3 block message to minimal data (tier + nonce). Workflow instructions live in skills, not hook messages.
|
|
121
|
+
- **`pre_tool_use.py`** — Simplified: passes through `block_response` from `bash_validator` directly, no more mode-specific branching
|
|
122
|
+
- **`bash_validator.py`** — T3 mutative returns `ask` response directly (no nonce generation, no pending files)
|
|
123
|
+
- **`session_start.py`** — Uses `mark_done=False` so `user_prompt_submit.py` can detect first-run and show welcome before marking initialized
|
|
124
|
+
- **`gaia-update.js` registry path** — Fixed to write `plugin-registry.json` in `.claude/` (same path Python hooks expect)
|
|
125
|
+
- **`gaia-doctor.js`** — Now checks permissions in `settings.local.json` (not just `settings.json`). Updated agent and config file lists.
|
|
126
|
+
- **`gaia-update.js` health check** — Updated config files (`surface-routing.json`) and agent list (`gaia-system.md`, `speckit-planner.md`)
|
|
127
|
+
|
|
128
|
+
#### Fixed
|
|
129
|
+
- **Registry path mismatch** — `gaia-update.js` wrote to `.claude/project-context/`, Python read from `.claude/`. Now both use `.claude/`.
|
|
130
|
+
- **Orphaned nonce files** — `bash_validator` no longer writes pending approval files for `ask` responses
|
|
131
|
+
- **Plugin mode detection** — `--plugin-dir` now correctly detects `gaia-ops` vs `gaia-security` via `plugin.json` instead of path parsing
|
|
132
|
+
- **First-run welcome race condition** — `SessionStart` no longer marks initialized; `UserPromptSubmit` marks after showing welcome
|
|
133
|
+
- **`_build_welcome()` framing** — Rewritten to explain WHY the user needs to restart (permissions not active yet), making Claude naturally relay the message
|
|
134
|
+
|
|
135
|
+
## [4.4.0-rc.5] - 2026-03-19
|
|
136
|
+
|
|
137
|
+
### Identity Redesign
|
|
138
|
+
|
|
139
|
+
Orchestrator identity is now minimal (~900 chars) and delegates to on-demand skills. CLAUDE.template.md deleted -- the UserPromptSubmit hook is the single source of truth for orchestrator identity.
|
|
140
|
+
|
|
141
|
+
#### Added
|
|
142
|
+
- **`skills/project-dispatch/SKILL.md`** (Reference type) -- agent routing table and dispatch rules, loaded on-demand via Skill tool
|
|
143
|
+
- **`skills/agent-response/SKILL.md`** (Protocol type) -- contract status handling, loaded on-demand via Skill tool
|
|
144
|
+
- Plugin distribution: `.claude-plugin/plugin.json` manifest with engines + categories for Claude Code native plugin system
|
|
145
|
+
- Self-hosted marketplace: `.claude-plugin/marketplace.json` with 2 sub-plugin tiers (gaia-security, gaia-ops)
|
|
146
|
+
- Adapter layer: `hooks/adapters/` with normalized types, abstract base, and Claude Code adapter
|
|
147
|
+
- `hooks/hooks.json` for plugin-channel hook configuration
|
|
148
|
+
- Distribution channel detection (`hooks/adapters/channel.py`)
|
|
149
|
+
- Integration tests for adapter -> business logic -> response flow
|
|
150
|
+
- Plugin manifest validation tests
|
|
151
|
+
|
|
152
|
+
#### Changed
|
|
153
|
+
- **`hooks/modules/identity/ops_identity.py`** -- reduced to ~900 chars; tells orchestrator to load skills on-demand instead of embedding all instructions inline
|
|
154
|
+
- **SendMessage validation** -- moved from invalid hook event to PreToolUse matcher (agent ID format + nonce approval check)
|
|
155
|
+
- **`hooks/modules/scanning/scan_trigger.py`** -- imports `tools.scan` directly (no `bin/` dependency), works in both npm and plugin mode
|
|
156
|
+
- **Agent namespace support** -- accepts both `cloud-troubleshooter` and `gaia-ops:cloud-troubleshooter` forms
|
|
157
|
+
- **`hooks/user_prompt_submit.py`** -- calls `ensure_plugin_registry()` as fallback if SessionStart didn't fire
|
|
158
|
+
- **`hooks/modules/context/context_injector.py`** -- path fixes for plugin mode
|
|
159
|
+
- **`hooks/modules/session/session_event_injector.py`** -- path fixes for plugin mode
|
|
160
|
+
- Hook entry points (pre_tool_use.py, post_tool_use.py, subagent_stop.py) now use adapter layer for stdin/stdout
|
|
161
|
+
- hook_response.py delegates to ClaudeCodeAdapter internally
|
|
162
|
+
- npm dist-tag now derived from version suffix (rc -> next, beta -> beta, etc.)
|
|
163
|
+
|
|
164
|
+
#### Removed
|
|
165
|
+
- **`templates/CLAUDE.template.md`** -- identity now injected dynamically; no generated CLAUDE.md
|
|
166
|
+
- **`copy_claude_md()`** in `tools/scan/setup.py` -- deprecated to no-op (callers still reference it for backward compat)
|
|
167
|
+
|
|
168
|
+
## [4.0.0] - 2026-03-03
|
|
169
|
+
|
|
170
|
+
### Breaking: Contracts as Single Source of Truth
|
|
171
|
+
|
|
172
|
+
Contracts now fully control what context each agent receives. Removed the progressive disclosure layer that was silently overriding contract definitions, and cleaned up ~400 lines of dead code from context_provider.py.
|
|
173
|
+
|
|
174
|
+
#### Changed
|
|
175
|
+
- **context_provider.py**: Contracts are the single source of truth -- removed progressive disclosure filtering that overrode contract-defined sections
|
|
176
|
+
- **context_provider.py**: Simplified output payload -- removed `enrichment` and `progressive_disclosure` keys from response
|
|
177
|
+
- **contracts/terraform-architect.json**: Now reads `cluster_details` and `application_services` sections
|
|
178
|
+
- **contracts/gitops-operator.json**: Now reads `gcp_services` section (GCP overlay)
|
|
179
|
+
- **pre_tool_use.py**: Updated log message to show sections count and rules count
|
|
180
|
+
- **templates/CLAUDE.template.md**: Synced agent routing descriptions with CLAUDE.md
|
|
181
|
+
|
|
182
|
+
#### Fixed
|
|
183
|
+
- **context_provider.py `get_contracts_dir()`**: Path traversal went up 2 levels instead of 3, producing wrong directory -- masked by legacy fallback that silently compensated
|
|
184
|
+
|
|
185
|
+
#### Removed
|
|
186
|
+
- **context_provider.py**: ~400 lines of dead code:
|
|
187
|
+
- Progressive disclosure engine (section filtering, phase-based visibility)
|
|
188
|
+
- `LEGACY_AGENT_CONTRACTS` dictionary (hardcoded fallback contracts)
|
|
189
|
+
- Semantic enrichment pipeline
|
|
190
|
+
- `validate_project_paths()` function
|
|
191
|
+
- Path resolution utility functions
|
|
192
|
+
|
|
193
|
+
#### Tests
|
|
194
|
+
- **tests/tools/test_context_provider.py**: Complete rewrite -- 8 tests covering all 6 agents, payload structure, and invalid agent handling
|
|
195
|
+
|
|
196
|
+
## [3.15.1] - 2026-02-24
|
|
197
|
+
|
|
198
|
+
### Fix: Cross-Layer Consistency & Dead Code Cleanup
|
|
199
|
+
|
|
200
|
+
Comprehensive audit of skills, hooks, and security modules. Fixed inconsistencies between layers that caused silent failures (tests pass but system broken).
|
|
201
|
+
|
|
202
|
+
#### Fixed
|
|
203
|
+
- **bash_validator**: Check blocked commands BEFORE safe commands (defense-in-depth order was inverted)
|
|
204
|
+
- **tiers.py**: Split `VALIDATION_PATTERNS` into `T1_PATTERNS` (validate, lint, fmt, check) and `T2_PATTERNS` (plan, template, diff) — aligns with security-tiers skill
|
|
205
|
+
- **tiers.py**: Removed `terraform plan` from `ULTRA_COMMON_T0_COMMANDS` fast-path (was T0, should be T2)
|
|
206
|
+
- **safe_commands.py**: Removed `terraform plan`/`terragrunt plan` from `ALWAYS_SAFE_MULTIWORD` (simulation, not read-only)
|
|
207
|
+
- **safe_commands.py**: Removed `python3`, `python` from `always_safe` (can execute arbitrary code)
|
|
208
|
+
- **safe_commands.py**: Removed `tar`, `gzip`, `gunzip`, `zip`, `unzip` from `always_safe` (modify filesystem)
|
|
209
|
+
- **task_validator.py**: Removed legacy `APPROVAL_INDICATORS` (`'validation["approved"] == True'`, `"Phase 5: Realization"`)
|
|
210
|
+
- **task_validator.py**: Added `speckit-planner` to `META_AGENTS`
|
|
211
|
+
- **pre_tool_use.py**: Resume regex `{6,7}` → `{5,}` to accept real Claude Code agent IDs
|
|
212
|
+
- **pre_tool_use.py**: Session events now inject BEFORE `# User Task` marker (was after)
|
|
213
|
+
- **post_tool_use.py**: Added `fcntl.flock` to prevent race conditions on `context.json`
|
|
214
|
+
- **post_tool_use.py**: Guard empty timestamps in retention filter
|
|
215
|
+
- **subagent_stop.py**: Fixed indentation bug in consecutive failure detection
|
|
216
|
+
- **subagent_stop.py**: Use `deque(f, maxlen=7)` instead of `f.readlines()` for metrics.jsonl
|
|
217
|
+
- **settings.json**: Moved 7 T3 commands from `allow` → `ask`: kubectl exec/label/annotate/uncordon, helm rollback, flux suspend/resume
|
|
218
|
+
- **settings.json**: Added `flux create` to `ask` list (was unprotected)
|
|
219
|
+
- **agent-protocol skill**: Removed `CURRENT_PHASE` from AGENT_STATUS (redundant with `PLAN_STATUS`)
|
|
220
|
+
- **agent-protocol skill**: `PLANNING` state now explicitly emitted in Phase 2
|
|
221
|
+
- **execution skill**: Scope clarified as T3-only (was accidentally broadened to T2)
|
|
222
|
+
- All 3 hooks: Removed `logging.StreamHandler()` (was sending noise to stderr)
|
|
223
|
+
|
|
224
|
+
#### Removed
|
|
225
|
+
- **`config_loader.py`** — Dead code, never imported by any module
|
|
226
|
+
- **`discovery_classifier.py`** — Deprecated, replaced by context_writer.py (609 lines)
|
|
227
|
+
- **`exhaustion_detector.py`** — Never worked (wrong glob pattern, wrong file format parsing, 200K thresholds obsolete with 1M context)
|
|
228
|
+
- **`detect_speckit_milestone()`** in event_detector.py — Dead code (post_hook only runs for Bash, not Skill)
|
|
229
|
+
- **`SPECKIT_MILESTONE`** enum value from EventType
|
|
230
|
+
- **`test_config_loader.py`** — Tests for deleted module
|
|
231
|
+
- **`test_discovery_classifier.py`** — Tests for deleted module
|
|
232
|
+
- Slow execution detection in subagent_stop.py (duration_ms always None)
|
|
233
|
+
|
|
234
|
+
#### Added
|
|
235
|
+
- **`test_cross_layer_consistency.py`** — 24 tests validating consistency between settings.json ↔ safe_commands ↔ blocked_commands ↔ tiers ↔ skills ↔ task_validator
|
|
236
|
+
|
|
237
|
+
#### Metrics
|
|
238
|
+
- Dead code removed: ~1,500 lines (config_loader + discovery_classifier + exhaustion_detector + dead test files)
|
|
239
|
+
- All 890 tests pass, 0 failures
|
|
240
|
+
|
|
241
|
+
## [3.12.0] - 2026-02-17
|
|
242
|
+
|
|
243
|
+
### Refactor: Principle-First Skills & Agent Deduplication
|
|
244
|
+
|
|
245
|
+
Major redesign of skills and agents. Skills now teach principles instead of enumerating commands. Agents delegate process knowledge to skills, keeping only domain identity.
|
|
246
|
+
|
|
247
|
+
#### Removed
|
|
248
|
+
- **`skills/anti-patterns/`** - Merged into `command-execution` skill as defensive execution principles
|
|
249
|
+
|
|
250
|
+
#### Changed
|
|
251
|
+
- **`skills/command-execution/SKILL.md`** - Complete rewrite with defensive execution framework
|
|
252
|
+
- Timeout hierarchy (tool-native → shell wrapper → abort)
|
|
253
|
+
- Pre-flight checklist ("Can this hang?" / "Do I know the timeout?")
|
|
254
|
+
- 7 numbered rules: no pipes, one command per step, Claude Code tools over bash, validate before mutate, absolute paths, files over inline data, quote variables
|
|
255
|
+
- **`skills/security-tiers/SKILL.md`** - Changed from command enumeration to decision framework
|
|
256
|
+
- Classification by question: "Does it modify live state?" → T3
|
|
257
|
+
- **`skills/terraform-patterns/SKILL.md`** - Split into slim SKILL.md (86 lines) + reference.md
|
|
258
|
+
- **`skills/gitops-patterns/SKILL.md`** - Split into slim SKILL.md (94 lines) + reference.md
|
|
259
|
+
- **`skills/fast-queries/SKILL.md`** - Cut from 256 to 41 lines (essentials only)
|
|
260
|
+
- **`skills/investigation/SKILL.md`** - Fixed to use Glob/Grep/Read tools, removed duplicated content
|
|
261
|
+
- **`skills/output-format/SKILL.md`** - Removed dead escalation protocol
|
|
262
|
+
- **`skills/execution/SKILL.md`** - Consolidated commit format to git-conventions reference
|
|
263
|
+
- **`skills/approval/SKILL.md`** - Removed duplicated commit standards and AskUserQuestion section
|
|
264
|
+
- **All 6 agents** - Removed duplicated Before Acting, Investigation Protocol, Pre-loaded Standards, and command enumeration tier tables
|
|
265
|
+
|
|
266
|
+
#### Added
|
|
267
|
+
- **`skills/reference.md`** - Agent template and npm release checklist (moved from gaia agent)
|
|
268
|
+
- **`skills/terraform-patterns/reference.md`** - Full HCL examples
|
|
269
|
+
- **`skills/gitops-patterns/reference.md`** - Full YAML examples
|
|
270
|
+
- **`investigation` skill** assigned to cloud-troubleshooter, terraform-architect, gitops-operator, devops-developer, gaia
|
|
271
|
+
- **`git-conventions` skill** assigned to terraform-architect, gitops-operator, devops-developer
|
|
272
|
+
- **`agent-protocol` + `security-tiers` skills** assigned to speckit-planner
|
|
273
|
+
|
|
274
|
+
#### Metrics
|
|
275
|
+
- Skills: 1,865 → 725 lines (-61%)
|
|
276
|
+
- Agents: 1,914 → 1,007 lines (-47%)
|
|
277
|
+
- Total injected tokens significantly reduced
|
|
278
|
+
- All 882 tests pass
|
|
279
|
+
|
|
280
|
+
## [3.11.0] - 2026-02-16
|
|
281
|
+
|
|
282
|
+
### feat: 3-Layer E2E Testing System
|
|
283
|
+
|
|
284
|
+
Added Layer 1 prompt regression tests (86 tests) validating agent frontmatter, prompt content, skill cross-references, context contracts, security tier consistency, routing table, and skill content rules.
|
|
285
|
+
|
|
286
|
+
## [3.7.0] - 2026-01-20
|
|
287
|
+
|
|
288
|
+
### Refactor: Commit Validator Architecture
|
|
289
|
+
|
|
290
|
+
Moved commit validation to hooks system for better encapsulation and clearer separation of concerns.
|
|
291
|
+
|
|
292
|
+
#### Changed
|
|
293
|
+
- **commit_validator.py location**: Moved from `tools/validation/` to `hooks/modules/validation/`
|
|
294
|
+
- **bash_validator.py imports**: Updated to use relative import from sibling module
|
|
295
|
+
- **Module structure**: commit_validator.py now exclusively used by bash_validator.py (no direct imports)
|
|
296
|
+
- **Documentation**: Updated tools/validation/README.md to reflect new architecture
|
|
297
|
+
|
|
298
|
+
#### Technical Details
|
|
299
|
+
- bash_validator.py now uses relative import: `from ..validation.commit_validator import validate_commit_message`
|
|
300
|
+
- commit_validator.py path resolution updated for new location (4 dirname calls instead of 3)
|
|
301
|
+
- pre-publish-validate.js updated to validate new path
|
|
302
|
+
- tools/validation/__init__.py no longer exports commit_validator (internal use only)
|
|
303
|
+
|
|
304
|
+
#### Benefits
|
|
305
|
+
- Better encapsulation: commit validation only accessible through bash_validator
|
|
306
|
+
- Clearer architecture: validation logic properly contained within hooks system
|
|
307
|
+
- No breaking changes: commit validation continues to work identically
|
|
308
|
+
|
|
309
|
+
## [3.6.1] - 2026-01-20
|
|
310
|
+
|
|
311
|
+
### Fix: Include skills/ directory in npm package
|
|
312
|
+
|
|
313
|
+
#### Fixed
|
|
314
|
+
- **package.json files array**: Added `"skills/"` to ensure skills directory is published to npm
|
|
315
|
+
- This was preventing skills/standards/ from being available in v3.6.0
|
|
316
|
+
|
|
317
|
+
## [3.6.0] - 2026-01-20
|
|
318
|
+
|
|
319
|
+
### Standards Migration to Skills System
|
|
320
|
+
|
|
321
|
+
Major architectural change: migrated from dual context system (standards + skills) to unified skills-based architecture.
|
|
322
|
+
|
|
323
|
+
#### Added
|
|
324
|
+
- **New skills directory**: `skills/standards/` with 4 standards skills:
|
|
325
|
+
- `security-tiers/` - T0-T3 operation classification (auto_load)
|
|
326
|
+
- `output-format/` - Global output contract for all agents (auto_load)
|
|
327
|
+
- `command-execution/` - Shell security rules and timeout guidelines (triggered)
|
|
328
|
+
- `anti-patterns/` - Common mistakes by tool: kubectl, terraform, gcloud, helm, flux, npm, docker (triggered)
|
|
329
|
+
- **Standards loader in skill_loader.py**: New `_load_standards_skills()` method
|
|
330
|
+
- **Standards config in skill-triggers.json**: New `standards` section with auto_load and triggers
|
|
331
|
+
|
|
332
|
+
#### Changed
|
|
333
|
+
- **Unified loading system**: All context now loaded via `skill_loader.py` (skills only)
|
|
334
|
+
- **skill-triggers.json**: Added `standards` section with 4 skills configuration
|
|
335
|
+
|
|
336
|
+
#### Removed
|
|
337
|
+
- **build_standards_context()**: Removed 91 lines from `context_provider.py`
|
|
338
|
+
- **Standards system**: Deleted `get_standards_dir()`, `read_standard_file()`, `should_preload_standard()`, `build_standards_context()`
|
|
339
|
+
- **--no-standards flag**: Removed from context_provider.py (no longer needed)
|
|
340
|
+
- **docs/ directory**: Eliminated symlink `.claude/docs` (standards now in skills/)
|
|
341
|
+
- **Obsolete tests**: Removed 66 lines of standards-specific tests from `test_context_provider.py`
|
|
342
|
+
- **Duplicate content**: Removed docs/standards reference from universal-protocol skill
|
|
343
|
+
|
|
344
|
+
#### Migration Notes
|
|
345
|
+
- **Breaking change**: Systems relying on `.claude/docs/standards/` must update to use skills system
|
|
346
|
+
- **Skills auto-load**: `security-tiers` and `output-format` now load for ALL agents (not just PROJECT_AGENTS)
|
|
347
|
+
- **No functional impact**: Same content, different delivery mechanism
|
|
348
|
+
- **Benefits**: Single loading system, better versioning, no duplication
|
|
349
|
+
|
|
350
|
+
## [3.3.2] - 2025-12-11
|
|
351
|
+
|
|
352
|
+
### Read-Only Auto-Approval & Code Optimization
|
|
353
|
+
|
|
354
|
+
Major improvements to the permission system with compound command support and code quality optimizations.
|
|
355
|
+
|
|
356
|
+
#### Added
|
|
357
|
+
- **Compound command auto-approval**: Safe compound commands (`cat file | grep foo`, `ls && pwd`, `tail file || echo error`) now execute WITHOUT ASK prompts
|
|
358
|
+
- **Extended safe command list**: Added `base64`, `md5sum`, `sha256sum`, `tar`, `gzip`, `time`, `timeout`, `sleep` to always-safe commands
|
|
359
|
+
- **Multi-word command support**: Added `kubectl get/describe/logs`, `helm list/status`, `flux check/get`, `docker ps/images`, `gcloud/aws describe/list` as always-safe
|
|
360
|
+
|
|
361
|
+
#### Changed
|
|
362
|
+
- **R1: Unified safe command configuration** (`SAFE_COMMANDS_CONFIG`) - Single source of truth for all safe commands, eliminating ~150 lines of duplicate patterns
|
|
363
|
+
- **R2: Unified validation flow** - `classify_command_tier()` now uses `is_read_only_command()` for T0 classification
|
|
364
|
+
- **R4: Singleton ShellCommandParser** - Single instance reused across all validations
|
|
365
|
+
|
|
366
|
+
#### Removed
|
|
367
|
+
- **R3: Dead code removal** - Removed unused `_contains_command_chaining()` method (~30 lines)
|
|
368
|
+
- **Removed tenacity dependency** - Simplified capabilities loading (retry logic was over-engineering)
|
|
369
|
+
- **Removed duplicate `allowed_read_operations`** - Now derived from `SAFE_COMMANDS_CONFIG`
|
|
370
|
+
|
|
371
|
+
#### Fixed
|
|
372
|
+
- Compound commands with safe components no longer trigger ASK prompts
|
|
373
|
+
- More consistent tier classification between auto-approval and security validation
|
|
374
|
+
|
|
375
|
+
#### Technical Details
|
|
376
|
+
- **Lines reduced**: ~200 lines removed through deduplication
|
|
377
|
+
- **Maintainability**: Single source of truth for safe commands
|
|
378
|
+
- **Performance**: Singleton parser avoids repeated instantiation
|
|
379
|
+
|
|
380
|
+
#### Test Results
|
|
381
|
+
All previous tests continue to pass:
|
|
382
|
+
- Simple read-only commands: NO ASK (auto-approved)
|
|
383
|
+
- Safe compound commands: NO ASK (NEW - auto-approved)
|
|
384
|
+
- Dangerous commands: BLOCKED correctly
|
|
385
|
+
- Compound with dangerous components: BLOCKED correctly
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
## [3.3.1] - 2025-12-11
|
|
390
|
+
|
|
391
|
+
### Granular AWS Permissions & Command Chaining Block
|
|
392
|
+
|
|
393
|
+
Refined AWS permission patterns to read-only operations and blocked command chaining to ensure predictable permission evaluation.
|
|
394
|
+
|
|
395
|
+
#### Changed
|
|
396
|
+
- **AWS permissions**: Replaced broad service wildcards with granular read-only patterns
|
|
397
|
+
- `Bash(aws ec2:*)` → 40 specific `describe-*` and `get-*` commands
|
|
398
|
+
- `Bash(aws s3:*)` → `s3 ls`, `s3api get-*`, `s3api list-*`, `s3api head-*`
|
|
399
|
+
- `Bash(aws rds:*)` → `describe-*`, `list-tags-for-resource`
|
|
400
|
+
- `Bash(aws iam:*)` → `get-*`, `list-*`, `generate-*`, `simulate-*`
|
|
401
|
+
- Similar granular patterns for Lambda, Logs, CloudWatch, CloudFormation, ELB, Route53, SecretsManager, SSM, SNS, SQS, DynamoDB, ECR, EKS, ElastiCache
|
|
402
|
+
|
|
403
|
+
#### Added
|
|
404
|
+
- **Command chaining block** in `pre_tool_use.py`:
|
|
405
|
+
- Blocks `&&`, `;`, `||` operators to prevent bypassing permission checks
|
|
406
|
+
- Allows pipes `|` (don't affect permissions)
|
|
407
|
+
- Smart detection avoids false positives in quoted strings
|
|
408
|
+
- Clear error message: "Execute each command separately"
|
|
409
|
+
|
|
410
|
+
#### Fixed
|
|
411
|
+
- Moved `agents/README.md` files to `docs/` to resolve Claude Code parse errors
|
|
412
|
+
|
|
413
|
+
#### Security Impact
|
|
414
|
+
- Modification commands (create, start, stop) now properly require ASK confirmation
|
|
415
|
+
- Chained commands can no longer bypass individual permission evaluation
|
|
416
|
+
- Read-only operations execute without confirmation
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## [3.2.3] - 2025-12-09
|
|
421
|
+
|
|
422
|
+
### Service-Level Permission Wildcards
|
|
423
|
+
|
|
424
|
+
Simplified permission patterns using service-level wildcards for better Claude Code compatibility.
|
|
425
|
+
|
|
426
|
+
#### Changed
|
|
427
|
+
- **AWS patterns**: Simplified from `Bash(aws rds describe-:*)` to `Bash(aws rds :*)`
|
|
428
|
+
- Service-level wildcards: `aws ec2`, `aws rds`, `aws s3`, `aws iam`, etc.
|
|
429
|
+
- Works around Claude Code pattern matching issues with hyphens
|
|
430
|
+
- **GCP patterns**: Simplified to `Bash(gcloud compute :*)`, `Bash(gcloud container :*)`, etc.
|
|
431
|
+
- **Format standardization**: Removed spaces before `:*` for commands without arguments
|
|
432
|
+
|
|
433
|
+
#### Fixed
|
|
434
|
+
- Agent README files renamed back to `README.md` (underscore prefix removed)
|
|
435
|
+
- Pattern matching now works for `aws rds describe-db-instances` and similar commands
|
|
436
|
+
|
|
437
|
+
#### Impact
|
|
438
|
+
- **Read-only commands**: Execute automatically ✓
|
|
439
|
+
- **Modification commands** (start/stop, upload, resize): Now execute automatically (Option A1)
|
|
440
|
+
- **Destructive commands** (delete, terminate): Still blocked ✓
|
|
441
|
+
|
|
442
|
+
#### Philosophy (Option A1 - Permissive with guardrails)
|
|
443
|
+
- Wide `allow[]` for entire services (e.g., `aws ec2 :*`)
|
|
444
|
+
- Strict `deny[]` for destructive operations
|
|
445
|
+
- Trade-off: Modification commands no longer require confirmation
|
|
446
|
+
|
|
447
|
+
---
|
|
448
|
+
|
|
449
|
+
## [3.2.2] - 2025-12-09
|
|
450
|
+
|
|
451
|
+
### Enhanced Permissions System
|
|
452
|
+
|
|
453
|
+
Complete overhaul of the permissions configuration to implement "permissive-with-guardrails" strategy.
|
|
454
|
+
|
|
455
|
+
#### Changed
|
|
456
|
+
- **Comprehensive allow[] rules**: 331 specific read-only patterns for shell, git, kubernetes, helm, flux, terraform, aws, gcp, docker commands
|
|
457
|
+
- **Granular ask[] rules**: 162 modification operations that require user confirmation
|
|
458
|
+
- **Strict deny[] rules**: 73 destructive operations that are completely blocked
|
|
459
|
+
|
|
460
|
+
#### Fixed
|
|
461
|
+
- Removed duplicate patterns (`uname:*`, `xargs:*`)
|
|
462
|
+
- Fixed `gsutil rm -r:*::*` → `gsutil rm -r:*` (incorrect double colon)
|
|
463
|
+
- Added missing `git branch:*` to allow[] for `git branch -a`
|
|
464
|
+
|
|
465
|
+
#### Added
|
|
466
|
+
- **New test suite**: `tests/permissions-validation/test_permissions_validation.py`
|
|
467
|
+
- Emulates Claude Code's actual permission matching behavior
|
|
468
|
+
- 114 test cases across 13 categories
|
|
469
|
+
- Tests prefix matching with `:*` wildcard
|
|
470
|
+
- Validates precedence: Deny → Allow → Ask
|
|
471
|
+
|
|
472
|
+
#### Philosophy
|
|
473
|
+
- **Allow**: Read-only commands execute automatically (no confirmation)
|
|
474
|
+
- **Ask**: Modification commands require user approval (can be approved)
|
|
475
|
+
- **Deny**: Destructive commands are blocked (cannot be approved)
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
## [3.2.1] - 2025-12-06
|
|
480
|
+
|
|
481
|
+
### Security Fix - Permission Bypass Bug
|
|
482
|
+
|
|
483
|
+
**Critical security fix** for permission enforcement in `settings.template.json`.
|
|
484
|
+
|
|
485
|
+
#### Fixed
|
|
486
|
+
- **Removed generic `"Bash"` from `allow[]`**: The generic `"Bash"` permission was bypassing all specific `ask[]` rules like `"Bash(git push:*)"`, allowing T3 operations (git push, git commit) to execute without user confirmation.
|
|
487
|
+
- **Changed hook matcher from `"BashTool"` to `"Bash"`**: The PreToolUse and PostToolUse hooks were configured with matcher `"BashTool"` but Claude Code invokes the tool as `"Bash"`, causing hooks to never execute.
|
|
488
|
+
|
|
489
|
+
#### Root Cause Analysis
|
|
490
|
+
- See post-mortem: Generic permission `allow: ["Bash"]` has higher precedence than specific `ask: ["Bash(git push:*)"]` in Claude Code's permission evaluation.
|
|
491
|
+
- Hook matchers must match the exact tool name used by Claude Code.
|
|
492
|
+
|
|
493
|
+
#### Impact
|
|
494
|
+
- All git operations (push, commit, add) now correctly trigger "ask" confirmation
|
|
495
|
+
- PreToolUse hooks now execute for bash commands
|
|
496
|
+
- Security tier enforcement restored
|
|
497
|
+
|
|
498
|
+
---
|
|
499
|
+
|
|
500
|
+
## [3.2.0] - 2025-12-06
|
|
501
|
+
|
|
502
|
+
### Added - Episodic Memory P0+P1 Enhancements
|
|
503
|
+
|
|
504
|
+
Inspired by [memory-graph](https://github.com/gregorydickson/memory-graph) analysis, selective feature adoption.
|
|
505
|
+
|
|
506
|
+
- **P0: Outcome Tracking** (`tools/4-memory/episodic.py`)
|
|
507
|
+
- New fields: `outcome`, `success`, `duration_seconds`, `commands_executed`
|
|
508
|
+
- Valid outcomes: "success", "partial", "failed", "abandoned"
|
|
509
|
+
- New method: `update_outcome()` - Update episode results after execution
|
|
510
|
+
- Search boost: 10% relevance increase for successful episodes
|
|
511
|
+
|
|
512
|
+
- **P1: Simple Relationships** (`tools/4-memory/episodic.py`)
|
|
513
|
+
- New field: `related_episodes` - List of related episode IDs with types
|
|
514
|
+
- Relationship types: SOLVES, CAUSES, DEPENDS_ON, VALIDATES, SUPERSEDES, RELATED_TO
|
|
515
|
+
- New method: `add_relationship()` - Link episodes together
|
|
516
|
+
- New method: `get_related_episodes()` - Query related episodes (outgoing/incoming/both)
|
|
517
|
+
- Search enhancement: `include_relationships=True` parameter
|
|
518
|
+
|
|
519
|
+
- **Statistics Enhancements**
|
|
520
|
+
- Outcome counts by type
|
|
521
|
+
- Total relationships count
|
|
522
|
+
- Relationship types breakdown
|
|
523
|
+
|
|
524
|
+
- **CLI Commands**
|
|
525
|
+
- `store --outcome --duration` - Store with outcome tracking
|
|
526
|
+
- `update-outcome <id> <outcome>` - Update episode outcome
|
|
527
|
+
- `add-relationship <source> <target> <type>` - Create relationship
|
|
528
|
+
- `get-related <id>` - Query related episodes
|
|
529
|
+
- `search --include-relationships` - Search with relationship context
|
|
530
|
+
|
|
531
|
+
### Design Decisions
|
|
532
|
+
|
|
533
|
+
- Backward compatible: All new fields optional with None defaults
|
|
534
|
+
- Audit trail: Relationship and outcome events logged to JSONL
|
|
535
|
+
- Performance limits: 1000 episodes, 5000 relationships in index
|
|
536
|
+
- No external dependencies: Pure Python implementation
|
|
537
|
+
|
|
538
|
+
## [3.1.1] - 2025-12-06
|
|
539
|
+
|
|
540
|
+
### Fixed
|
|
541
|
+
|
|
542
|
+
- **package.json** - Added `docs/` to files array (was missing in 3.1.0)
|
|
543
|
+
- `docs/standards/` now included in npm package
|
|
544
|
+
- Required for hybrid pre-loading in `context_provider.py`
|
|
545
|
+
|
|
546
|
+
## [3.1.0] - 2025-12-06
|
|
547
|
+
|
|
548
|
+
### Added - Token Optimization & Consolidation
|
|
549
|
+
|
|
550
|
+
- **NEW:** `docs/standards/` - Shared execution standards
|
|
551
|
+
- `security-tiers.md` - T0-T3 definitions
|
|
552
|
+
- `output-format.md` - Report structure
|
|
553
|
+
- `command-execution.md` - Execution pillars
|
|
554
|
+
- `anti-patterns.md` - Common mistakes by tool
|
|
555
|
+
|
|
556
|
+
- **NEW:** Hybrid pre-loading in `context_provider.py`
|
|
557
|
+
- Always loads: security-tiers, output-format
|
|
558
|
+
- On-demand: command-execution
|
|
559
|
+
- **78% token reduction** per agent invocation
|
|
560
|
+
|
|
561
|
+
- **NEW:** QuickTriage scripts
|
|
562
|
+
- `tools/fast-queries/cloud/aws/quicktriage_aws_troubleshooter.sh`
|
|
563
|
+
- `tools/fast-queries/appservices/quicktriage_devops_developer.sh`
|
|
564
|
+
|
|
565
|
+
### Changed - Agent Optimization
|
|
566
|
+
|
|
567
|
+
- **agents/*.md** - All 6 agents reduced by 78%
|
|
568
|
+
- terraform-architect: 916 → 183 lines
|
|
569
|
+
- gitops-operator: 1,238 → 217 lines
|
|
570
|
+
- gcp-troubleshooter: 600 → 156 lines
|
|
571
|
+
- aws-troubleshooter: 565 → 142 lines
|
|
572
|
+
- devops-developer: 641 → 173 lines
|
|
573
|
+
|
|
574
|
+
### Removed - Session System Consolidation
|
|
575
|
+
|
|
576
|
+
- **REMOVED:** Session management system (consolidated into Episodic Memory)
|
|
577
|
+
- `commands/save-session.md`
|
|
578
|
+
- `commands/restore-session.md`
|
|
579
|
+
- `commands/session-status.md`
|
|
580
|
+
- `hooks/session_start.py`
|
|
581
|
+
- `tools/5-task-management/session-manager.py`
|
|
582
|
+
- `tools/5-task-management/create_current_session_bundle.py`
|
|
583
|
+
- `tools/5-task-management/restore_session.py`
|
|
584
|
+
|
|
585
|
+
### Changed - Episodic Memory Enhanced
|
|
586
|
+
|
|
587
|
+
- **tools/4-memory/episodic.py** - Added `capture_git_state()` migrated from session system
|
|
588
|
+
|
|
589
|
+
### Fixed - Test Suite
|
|
590
|
+
|
|
591
|
+
- **359 tests passing (100%)**
|
|
592
|
+
- Fixed import in `test_commit_validator.py`
|
|
593
|
+
- Fixed import in `test_episodic_memory.py`
|
|
594
|
+
- Updated `test_agent_definitions.py` for meta-agents
|
|
595
|
+
- Changed `test_hook_blocks_docker_ps` to `test_hook_default_permit_for_docker_ps`
|
|
596
|
+
- Fixed 11 warnings (return → assert)
|
|
597
|
+
|
|
598
|
+
### Changed - Documentation
|
|
599
|
+
|
|
600
|
+
- **README.md & README.en.md** - Updated to v3.1.0, reduced 41%
|
|
601
|
+
- **All subdirectory READMEs** - Reduced 63% total (~2,025 lines removed)
|
|
602
|
+
- Eliminated all references to session system
|
|
603
|
+
|
|
604
|
+
---
|
|
605
|
+
|
|
606
|
+
## [3.0.0] - 2025-12-05
|
|
607
|
+
|
|
608
|
+
### Added - Agent Intelligence System (MAJOR)
|
|
609
|
+
|
|
610
|
+
- **NEW:** `tools/10-agent-intelligence/` module for intelligent agent optimization
|
|
611
|
+
- `agent_writing_assistant.py` (24KB) - Assists in writing and improving agent definitions
|
|
612
|
+
- `workflow_optimizer.py` (29KB) - Applies the 7 LLM Engineering Principles to optimize workflows
|
|
613
|
+
- Binary Decision Trees
|
|
614
|
+
- Guards Over Advice
|
|
615
|
+
- Tool Contracts
|
|
616
|
+
- Failure Paths
|
|
617
|
+
- TL;DR First
|
|
618
|
+
- References Over Duplication
|
|
619
|
+
- Metrics Over Subjective Goals
|
|
620
|
+
|
|
621
|
+
- **NEW:** `tools/4-memory/` Episodic Memory System
|
|
622
|
+
- `episodic.py` (23KB) - Persistent storage and retrieval of historical context
|
|
623
|
+
- `demo.py` - Demonstration script for episodic memory
|
|
624
|
+
- Features:
|
|
625
|
+
- Automatic episode storage with keywords and classifications
|
|
626
|
+
- Smart search with time decay and relevance scoring
|
|
627
|
+
- Auto-classification of episode types (deployment, troubleshooting, etc.)
|
|
628
|
+
- Index management with automatic trimming (1000 episode limit)
|
|
629
|
+
- Audit trail with append-only JSONL file
|
|
630
|
+
|
|
631
|
+
- **NEW:** `tools/conversation/` Enhanced Conversation Management
|
|
632
|
+
- `enhanced_conversation_manager.py` (21KB) - Advanced conversation state management
|
|
633
|
+
- `agent_contract_builder.py` (19KB) - Dynamic agent contract generation
|
|
634
|
+
- `progressive_disclosure.py` (17KB) - Progressive context disclosure for token optimization
|
|
635
|
+
|
|
636
|
+
- **NEW:** `tests/workflow/` directory for workflow-specific tests
|
|
637
|
+
- **NEW:** `tests/test_agent_contract_integration.py` - Agent contract validation tests
|
|
638
|
+
- **NEW:** `tools/agent_capabilities.json` - Centralized agent capabilities definition
|
|
639
|
+
|
|
640
|
+
### Changed - Agent Enhancements
|
|
641
|
+
|
|
642
|
+
- **agents/gaia.md** - Major refactoring (1707 lines changed)
|
|
643
|
+
- Streamlined agent definition
|
|
644
|
+
- Improved protocol definitions
|
|
645
|
+
- Better integration with new intelligence modules
|
|
646
|
+
|
|
647
|
+
- **agents/gitops-operator.md** - Enhanced with 234 new lines
|
|
648
|
+
- Improved Kubernetes operation patterns
|
|
649
|
+
- Better Flux CD integration guidance
|
|
650
|
+
- Enhanced troubleshooting protocols
|
|
651
|
+
|
|
652
|
+
- **agents/terraform-architect.md** - Enhanced with 47 new lines
|
|
653
|
+
- Improved Terragrunt support
|
|
654
|
+
- Better module design guidance
|
|
655
|
+
- Enhanced security scanning protocols
|
|
656
|
+
|
|
657
|
+
- **agents/gcp-troubleshooter.md** - Enhanced with 52 new lines
|
|
658
|
+
- Improved GKE diagnostics
|
|
659
|
+
- Better IAM analysis patterns
|
|
660
|
+
- Enhanced networking troubleshooting
|
|
661
|
+
|
|
662
|
+
### Changed - Tools & Infrastructure
|
|
663
|
+
|
|
664
|
+
- **hooks/pre_tool_use.py** - Major enhancement (286+ lines)
|
|
665
|
+
- Improved security validations
|
|
666
|
+
- Better command blocking logic
|
|
667
|
+
- Enhanced credential detection
|
|
668
|
+
|
|
669
|
+
- **hooks/subagent_stop.py** - Enhanced with 193 new lines
|
|
670
|
+
- Better result packaging
|
|
671
|
+
- Improved bundle generation
|
|
672
|
+
- Enhanced session integration
|
|
673
|
+
|
|
674
|
+
- **tools/2-context/context_provider.py** - Enhanced (120+ lines changed)
|
|
675
|
+
- Better provider detection
|
|
676
|
+
- Improved contract validation
|
|
677
|
+
- Enhanced error handling
|
|
678
|
+
|
|
679
|
+
- **tools/3-clarification/workflow.py** - Major enhancement (162+ lines)
|
|
680
|
+
- Episodic memory integration
|
|
681
|
+
- Improved ambiguity detection
|
|
682
|
+
- Better context enrichment
|
|
683
|
+
|
|
684
|
+
- **tools/9-agent-framework/agent_orchestrator.py** - Enhanced (38+ lines)
|
|
685
|
+
- Better phase management
|
|
686
|
+
- Improved error recovery
|
|
687
|
+
- Enhanced logging
|
|
688
|
+
|
|
689
|
+
### Changed - Fast Queries (Simplified)
|
|
690
|
+
|
|
691
|
+
- **tools/fast-queries/README.md** - Simplified documentation (185 lines changed)
|
|
692
|
+
- **tools/fast-queries/run_triage.sh** - Streamlined (152 lines changed)
|
|
693
|
+
- **tools/fast-queries/terraform/quicktriage_terraform_architect.sh** - Enhanced (90+ lines)
|
|
694
|
+
- **tools/fast-queries/gitops/quicktriage_gitops_operator.sh** - Enhanced (69+ lines)
|
|
695
|
+
- **tools/fast-queries/cloud/gcp/quicktriage_gcp_troubleshooter.sh** - Enhanced (99+ lines)
|
|
696
|
+
|
|
697
|
+
### Removed (BREAKING)
|
|
698
|
+
|
|
699
|
+
- **REMOVED:** `tools/fast-queries/USAGE_GUIDE.md` (369 lines) - Consolidated into README
|
|
700
|
+
- **REMOVED:** `tools/fast-queries/appservices/quicktriage_devops_developer.sh` (38 lines)
|
|
701
|
+
- **REMOVED:** `tools/fast-queries/cloud/aws/quicktriage_aws_troubleshooter.sh` (45 lines)
|
|
702
|
+
|
|
703
|
+
### Improved
|
|
704
|
+
|
|
705
|
+
- **Token Efficiency:** New progressive disclosure system reduces context by up to 70%
|
|
706
|
+
- **Agent Intelligence:** Workflows now validated against 7 engineering principles
|
|
707
|
+
- **Memory System:** Historical context improves routing accuracy over time
|
|
708
|
+
- **Conversation Management:** Multi-turn conversations with intelligent context carry-over
|
|
709
|
+
- **Test Coverage:** New workflow and integration tests
|
|
710
|
+
|
|
711
|
+
### Migration Guide for v3.0.0
|
|
712
|
+
|
|
713
|
+
**Breaking Changes:**
|
|
714
|
+
1. Removed `quicktriage_devops_developer.sh` - Use agent directly
|
|
715
|
+
2. Removed `quicktriage_aws_troubleshooter.sh` - Use agent directly
|
|
716
|
+
3. Removed `USAGE_GUIDE.md` - See README.md instead
|
|
717
|
+
|
|
718
|
+
**New Features to Adopt:**
|
|
719
|
+
```python
|
|
720
|
+
# Episodic Memory
|
|
721
|
+
from tools.4_memory.episodic import EpisodicMemory
|
|
722
|
+
memory = EpisodicMemory()
|
|
723
|
+
memory.store_episode(prompt="...", context={...})
|
|
724
|
+
|
|
725
|
+
# Workflow Optimizer
|
|
726
|
+
from tools.10_agent_intelligence.workflow_optimizer import WorkflowOptimizer
|
|
727
|
+
optimizer = WorkflowOptimizer()
|
|
728
|
+
result = optimizer.analyze(workflow_content)
|
|
729
|
+
|
|
730
|
+
# Enhanced Conversation
|
|
731
|
+
from tools.conversation.enhanced_conversation_manager import EnhancedConversationManager
|
|
732
|
+
manager = EnhancedConversationManager()
|
|
733
|
+
```
|
|
734
|
+
|
|
735
|
+
**Recommended Actions:**
|
|
736
|
+
- Review new agent definitions for improved patterns
|
|
737
|
+
- Enable episodic memory for better context over time
|
|
738
|
+
- Use workflow optimizer to validate custom workflows
|
|
739
|
+
|
|
740
|
+
---
|
|
741
|
+
|
|
742
|
+
## [2.6.2] - 2025-11-14
|
|
743
|
+
|
|
744
|
+
### Added - Absolute Paths Support
|
|
745
|
+
|
|
746
|
+
- **NEW:** `normalizePath()` function - Handles both absolute and relative paths transparently
|
|
747
|
+
- **NEW:** CLI option `--project-context-repo` - Specify git repository for project context in non-interactive mode
|
|
748
|
+
- **NEW:** Environment variable `CLAUDE_PROJECT_CONTEXT_REPO` - Alternative way to specify context repo
|
|
749
|
+
|
|
750
|
+
### Changed
|
|
751
|
+
|
|
752
|
+
- **`getConfiguration()`** - Now normalizes paths using `normalizePath()`
|
|
753
|
+
- **`validateAndSetupProjectPaths()`** - Enhanced to handle absolute paths correctly
|
|
754
|
+
- **CLI help and documentation** - Updated examples with absolute paths
|
|
755
|
+
|
|
756
|
+
### Improved
|
|
757
|
+
|
|
758
|
+
- Path handling is now more robust and user-friendly
|
|
759
|
+
- Better error messages for path-related issues
|
|
760
|
+
- Clearer documentation and examples
|
|
761
|
+
|
|
762
|
+
### Examples
|
|
763
|
+
|
|
764
|
+
```bash
|
|
765
|
+
# Absolute paths without context repo
|
|
766
|
+
npx gaia-init --non-interactive \
|
|
767
|
+
--gitops /home/user/project/gitops \
|
|
768
|
+
--terraform /home/user/project/terraform \
|
|
769
|
+
--app-services /home/user/project/services
|
|
770
|
+
|
|
771
|
+
# Absolute paths with context repo
|
|
772
|
+
npx gaia-init --non-interactive \
|
|
773
|
+
--gitops /path/to/gitops \
|
|
774
|
+
--terraform /path/to/terraform \
|
|
775
|
+
--project-context-repo git@bitbucket.org:org/repo.git
|
|
776
|
+
```
|
|
777
|
+
|
|
778
|
+
---
|
|
779
|
+
|
|
780
|
+
## [2.3.0] - 2025-11-11
|
|
781
|
+
|
|
782
|
+
### Added - Phase 0 Clarification Module
|
|
783
|
+
|
|
784
|
+
- **NEW:** `tools/clarification/` module for intelligent ambiguity detection before routing
|
|
785
|
+
- `clarification/engine.py`: Core clarification engine (refactored from clarify_engine.py)
|
|
786
|
+
- `clarification/patterns.py`: Ambiguity detection patterns (ServiceAmbiguityPattern, NamespaceAmbiguityPattern, etc.)
|
|
787
|
+
- `clarification/workflow.py`: High-level helper functions for orchestrators (`execute_workflow()`)
|
|
788
|
+
- `clarification/__init__.py`: Clean public API
|
|
789
|
+
- **Protocol G** in `agents/gaia.md`: Clarification system analysis and troubleshooting guide
|
|
790
|
+
- **Rule 5.0.1** in `templates/CLAUDE.template.md`: Phase 0 implementation guide with code examples
|
|
791
|
+
- **Phase 0 integration** in `/speckit.specify` command
|
|
792
|
+
- **Regression tests** in `tests/integration/test_phase_0_regression.py`
|
|
793
|
+
- **Clarification metrics** to Key System Metrics (target: 20-30% clarification rate)
|
|
794
|
+
|
|
795
|
+
### Changed - Module Restructuring (BREAKING)
|
|
796
|
+
|
|
797
|
+
- **BREAKING:** `clarify_engine.py` and `clarify_patterns.py` moved to `clarification/` module
|
|
798
|
+
- **Old imports:** `from clarify_engine import request_clarification`
|
|
799
|
+
- **New imports:** `from clarification import execute_workflow, request_clarification`
|
|
800
|
+
- Updated `application_services` structure in project-context.json:
|
|
801
|
+
- Added `tech_stack` field (replaces `technology`)
|
|
802
|
+
- Added `namespace` field for service location
|
|
803
|
+
- **Removed** `status` field (dynamic state must be verified in real-time, not stored in SSOT)
|
|
804
|
+
- Service metadata now shows only static information: `tech_stack | namespace | port`
|
|
805
|
+
|
|
806
|
+
### Fixed
|
|
807
|
+
|
|
808
|
+
- Import paths in `tests/tools/test_clarify_engine.py` updated to new module structure
|
|
809
|
+
- Service metadata test updated to reflect removal of dynamic status field
|
|
810
|
+
- All 20 unit tests passing with new module structure
|
|
811
|
+
|
|
812
|
+
### Migration Guide for v2.3.0
|
|
813
|
+
|
|
814
|
+
```python
|
|
815
|
+
# Before (v2.2.x)
|
|
816
|
+
from clarify_engine import request_clarification, process_clarification
|
|
817
|
+
|
|
818
|
+
# After (v2.3.0)
|
|
819
|
+
from clarification import execute_workflow
|
|
820
|
+
|
|
821
|
+
# Simple usage
|
|
822
|
+
result = execute_workflow(user_prompt)
|
|
823
|
+
enriched_prompt = result["enriched_prompt"]
|
|
824
|
+
```
|
|
825
|
+
|
|
826
|
+
---
|
|
827
|
+
|
|
828
|
+
## [2.2.3] - 2025-11-11
|
|
829
|
+
|
|
830
|
+
### Fixed - Deterministic Project Context Location
|
|
831
|
+
|
|
832
|
+
- **context_provider.py**
|
|
833
|
+
- Always reads `.claude/project-context/project-context.json` (no fallback to legacy paths)
|
|
834
|
+
- Removed legacy auto-detection logic and unused imports
|
|
835
|
+
- Prevents "Context file not found" errors when projects only use the new structure
|
|
836
|
+
- **templates/CLAUDE.template.md**
|
|
837
|
+
- Rule 1 clarifies when to delegate vs. self-execute
|
|
838
|
+
- Rule 2 explicitly documents the `context_provider.py --context-file .claude/project-context/project-context.json …` invocation
|
|
839
|
+
- Workflow summary now references orchestration docs after the table (cleaner render)
|
|
840
|
+
|
|
841
|
+
### Changed - CLI Documentation & Version Alignment
|
|
842
|
+
|
|
843
|
+
- **README.md / README.en.md**
|
|
844
|
+
- Documented the exact `npx` commands (`npx gaia-init` / `npx @jaguilar87/gaia-ops`) and clarified installation steps
|
|
845
|
+
- Updated "Current version" badges to **2.2.3**
|
|
846
|
+
- **package.json**
|
|
847
|
+
- Bumped package version to `2.2.3`
|
|
848
|
+
|
|
849
|
+
### Benefits
|
|
850
|
+
|
|
851
|
+
- No manual tweaks needed to point `context_provider.py` at the correct project context
|
|
852
|
+
- CLAUDE template now tells the orchestrator exactly how to invoke the context provider
|
|
853
|
+
- README instructions reflect the real CLI entry points, reducing confusion for new installs
|
|
854
|
+
|
|
855
|
+
---
|
|
856
|
+
|
|
857
|
+
## [2.2.2] - 2025-11-11
|
|
858
|
+
|
|
859
|
+
### Added - Pre-generated Semantic Embeddings
|
|
860
|
+
|
|
861
|
+
- **NEW:** Included pre-generated intent embeddings in package (74KB total)
|
|
862
|
+
- `config/intent_embeddings.json` (55KB) - Semantic vectors for intent matching
|
|
863
|
+
- `config/intent_embeddings.npy` (19KB) - Binary embeddings for fast loading
|
|
864
|
+
- `config/embeddings_info.json` (371B) - Metadata about embeddings
|
|
865
|
+
|
|
866
|
+
### Changed - Semantic Routing Now Works Out-of-the-Box
|
|
867
|
+
|
|
868
|
+
- **Semantic matching enabled by default:** No manual setup required
|
|
869
|
+
- **Routing accuracy improved:** Ambiguous queries now route correctly using semantic similarity
|
|
870
|
+
- **Example improvement:**
|
|
871
|
+
```
|
|
872
|
+
Query: "puede decirme el estado de los servicios de tcm?"
|
|
873
|
+
Before: devops-developer (keyword "ci" - incorrect)
|
|
874
|
+
After: gitops-operator (semantic matching - correct)
|
|
875
|
+
```
|
|
876
|
+
|
|
877
|
+
### Fixed - Directory Structure Consistency
|
|
878
|
+
|
|
879
|
+
- **Consolidated `configs/` into `config/`:** All configuration and data files now in single directory
|
|
880
|
+
- **Updated tool references:**
|
|
881
|
+
- `tools/semantic_matcher.py`: Updated embeddings path (configs/ → config/)
|
|
882
|
+
- `tools/generate_embeddings.py`: Updated output path (configs/ → config/)
|
|
883
|
+
- All documentation updated to reference correct paths
|
|
884
|
+
|
|
885
|
+
### Fixed - Test Suite (254 tests, 100% passing)
|
|
886
|
+
|
|
887
|
+
- **tests/system/test_configuration_files.py:**
|
|
888
|
+
- Updated to validate `templates/settings.template.json` (package contains template, not installed settings.json)
|
|
889
|
+
- Tests now reflect npm package structure instead of installed project structure
|
|
890
|
+
|
|
891
|
+
- **tests/system/test_directory_structure.py:**
|
|
892
|
+
- Completely rewritten for npm package validation
|
|
893
|
+
- Tests now verify package directories (agents/, tools/, config/, templates/, bin/)
|
|
894
|
+
- Removed tests for installed-project structure (session/, .claude/ name)
|
|
895
|
+
- Added comprehensive tests for all package subdirectories (agents, tools, hooks, config, speckit)
|
|
896
|
+
|
|
897
|
+
- **tests/tools/test_clarify_engine.py:**
|
|
898
|
+
- Fixed import paths (tests/tools → gaia-ops/tools)
|
|
899
|
+
- Made emoji checks flexible (accepts any emoji, not just 📦)
|
|
900
|
+
- All 32 clarify_engine tests now pass
|
|
901
|
+
|
|
902
|
+
- **tests/tools/test_context_provider.py:**
|
|
903
|
+
- Updated troubleshooter contract test (application_services is optional, not required)
|
|
904
|
+
- Fixed invalid_agent test expectation (now correctly exits with code 1)
|
|
905
|
+
|
|
906
|
+
- **tools/context_provider.py:**
|
|
907
|
+
- Changed behavior for invalid agents: now exits with code 1 (was: warning + empty contract)
|
|
908
|
+
- Better error messages: "ERROR: Invalid agent" instead of "Warning: No contract found"
|
|
909
|
+
|
|
910
|
+
### Benefits
|
|
911
|
+
|
|
912
|
+
- Zero configuration: Semantic routing works immediately after installation
|
|
913
|
+
- Better routing: Handles ambiguous queries with 6x higher confidence
|
|
914
|
+
- Consistent structure: All config files in one place (`config/`)
|
|
915
|
+
- Smaller package: Embeddings optimized for size (74KB vs 5MB unoptimized)
|
|
916
|
+
- Regeneration optional: Users can regenerate with `python3 .claude/tools/generate_embeddings.py` if needed
|
|
917
|
+
- Test coverage: 254 tests passing (0 failures)
|
|
918
|
+
|
|
919
|
+
---
|
|
920
|
+
|
|
921
|
+
## [2.2.1] - 2025-11-10
|
|
922
|
+
|
|
923
|
+
### Fixed - Documentation Consistency
|
|
924
|
+
|
|
925
|
+
- **README.md & README.en.md:**
|
|
926
|
+
- Updated version numbers from 2.1.0 → 2.2.0
|
|
927
|
+
- Corrected package structure (hooks/, templates/, commands/)
|
|
928
|
+
- Fixed hooks/ listing: now shows actual Python files (pre_tool_use.py, post_tool_use.py, etc.) instead of non-existent pre-commit
|
|
929
|
+
- Fixed templates/ listing: removed non-existent code-examples/, listed actual files (CLAUDE.template.md, settings.template.json)
|
|
930
|
+
- Added context-contracts.gcp.json and context-contracts.aws.json to config/ section
|
|
931
|
+
- Removed CLAUDE.md and AGENTS.md from package root (only templates exist)
|
|
932
|
+
- Added speckit/ directory to structure
|
|
933
|
+
|
|
934
|
+
- **config/AGENTS.md:**
|
|
935
|
+
- Updated all references: `.claude/docs/` → `.claude/config/`
|
|
936
|
+
- Fixed quick links and support documentation paths
|
|
937
|
+
|
|
938
|
+
- **config/agent-catalog.md:**
|
|
939
|
+
- Updated all 5 context contract references: `.claude/docs/` → `.claude/config/`
|
|
940
|
+
|
|
941
|
+
- **index.js:**
|
|
942
|
+
- Deprecated `getDocPath()` function with console warning
|
|
943
|
+
- Function now redirects to `config/` directory instead of non-existent `docs/`
|
|
944
|
+
- Added JSDoc @deprecated annotation
|
|
945
|
+
|
|
946
|
+
- **README.en.md (Documentation section):**
|
|
947
|
+
- Removed broken reference to `./CLAUDE.md` (file not in package)
|
|
948
|
+
- Fixed all documentation links: `./docs/` → `./config/`
|
|
949
|
+
- Updated to match actual config/ directory structure
|
|
950
|
+
|
|
951
|
+
- **speckit/README.en.md:**
|
|
952
|
+
- Removed 3 non-existent commands: speckit.clarify, speckit.analyze-plan, speckit.constitution
|
|
953
|
+
- Updated command count: 9 → 7 actual commands
|
|
954
|
+
- Removed references to non-existent tasks-richer.py tool
|
|
955
|
+
- Removed entire sections for non-existent templates (data-model-template.md, contracts-template.md)
|
|
956
|
+
- Updated tool files list with actual tools (task_manager.py, clarify_engine.py, context_provider.py)
|
|
957
|
+
- Fixed all code examples to use only existing commands
|
|
958
|
+
|
|
959
|
+
- **tools/context_provider.py:**
|
|
960
|
+
- Added auto-detection for project-context.json location
|
|
961
|
+
- Honors GAIA_CONTEXT_PATH environment variable
|
|
962
|
+
- Falls back through common locations (.claude/project-context.json, .claude/project-context/project-context.json)
|
|
963
|
+
- Fixes agent routing failures when project-context.json is in non-legacy location
|
|
964
|
+
|
|
965
|
+
- **package.json:**
|
|
966
|
+
- Fixed `npm test` script (was calling non-existent pytest tests)
|
|
967
|
+
- Now echoes informative message about fixture availability
|
|
968
|
+
|
|
969
|
+
- **Agent Branding Unification:**
|
|
970
|
+
- Renamed `agents/claude-architect.md` → `agents/gaia.md` (aligns with gaia-ops package name)
|
|
971
|
+
- Renamed `commands/gaina.md` → `commands/gaia.md` (unified as `/gaia` command)
|
|
972
|
+
- Updated all references in README.md, README.en.md, and agents/gaia.md
|
|
973
|
+
- Complete branding consistency: package name, agent name, and command name all use "gaia"
|
|
974
|
+
|
|
975
|
+
### Benefits
|
|
976
|
+
|
|
977
|
+
- Accurate documentation: All paths and structures match actual package contents
|
|
978
|
+
- No broken links: References point to existing files
|
|
979
|
+
- Clear API: Deprecated functions clearly marked
|
|
980
|
+
- User trust: Documentation matches reality
|
|
981
|
+
- npm test passes: No false failures
|
|
982
|
+
|
|
983
|
+
---
|
|
984
|
+
|
|
985
|
+
## [2.2.0] - 2025-11-10
|
|
986
|
+
|
|
987
|
+
### Added - Unified Settings Template & Auto-Installation
|
|
988
|
+
|
|
989
|
+
- **NEW:** Created unified `templates/settings.template.json` (214 lines)
|
|
990
|
+
- Merged functionality from `settings.json` + `settings.local.json`
|
|
991
|
+
- Includes all hooks (PreToolUse, PostToolUse, SubagentStop)
|
|
992
|
+
- Complete permissions (75+ allow, 9 deny, 27 ask entries)
|
|
993
|
+
- Full security tier definitions (T0-T3)
|
|
994
|
+
- Environment configuration
|
|
995
|
+
|
|
996
|
+
- **Auto-Installation:** `gaia-init.js` now automatically generates `.claude/settings.json`
|
|
997
|
+
- Added `generateSettingsJson()` function
|
|
998
|
+
- Integrated into installation workflow (Step 6.5)
|
|
999
|
+
- Projects get complete settings from day 1
|
|
1000
|
+
|
|
1001
|
+
### Removed - Dead Code Elimination
|
|
1002
|
+
|
|
1003
|
+
- **CLAUDE.md** from package root (only template exists now)
|
|
1004
|
+
- **templates/code-examples/** (321 lines - never imported or executed)
|
|
1005
|
+
- `commit_validation.py`
|
|
1006
|
+
- `clarification_workflow.py`
|
|
1007
|
+
- `approval_gate_workflow.py`
|
|
1008
|
+
- **templates/project-context.template.json** (126 lines - unused, installer generates programmatically)
|
|
1009
|
+
- **templates/project-context.template.aws.json** (128 lines - never used)
|
|
1010
|
+
- **package.json:** Removed `CLAUDE.md` from files array
|
|
1011
|
+
|
|
1012
|
+
### Changed - Package Consistency
|
|
1013
|
+
|
|
1014
|
+
- **templates/CLAUDE.template.md:**
|
|
1015
|
+
- Updated all references: `.claude/docs/` → `.claude/config/`
|
|
1016
|
+
- Updated package name: `@aaxis/claude-agents` → `@jaguilar87/gaia-ops`
|
|
1017
|
+
- Removed code-examples reference (no longer exists)
|
|
1018
|
+
|
|
1019
|
+
- **README.en.md:**
|
|
1020
|
+
- Updated API examples to use `@jaguilar87/gaia-ops`
|
|
1021
|
+
- Changed `getDocPath()` → `getConfigPath()` (correct function)
|
|
1022
|
+
|
|
1023
|
+
- **index.js:**
|
|
1024
|
+
- Updated header and JSDoc comments with new package name
|
|
1025
|
+
- Updated example usage
|
|
1026
|
+
|
|
1027
|
+
- **agents/gaia.md:**
|
|
1028
|
+
- Updated system paths to reflect gaia-ops package structure
|
|
1029
|
+
- Clarified symlink architecture and layout
|
|
1030
|
+
|
|
1031
|
+
### Improved - Package Quality
|
|
1032
|
+
|
|
1033
|
+
- **Reduced template bloat by 57%:** 882 lines → 378 lines (504 lines removed)
|
|
1034
|
+
- **Single source of truth:** One settings template instead of scattered config
|
|
1035
|
+
- **Cleaner architecture:** Only actual templates remain in `templates/`
|
|
1036
|
+
- **Better defaults:** Projects start with complete, production-ready settings
|
|
1037
|
+
|
|
1038
|
+
### Benefits
|
|
1039
|
+
|
|
1040
|
+
- Unified configuration: Everything in one settings.json file
|
|
1041
|
+
- Automatic setup: No manual settings configuration needed
|
|
1042
|
+
- Smaller package: 57% reduction in template code
|
|
1043
|
+
- Flexibility maintained: Users can still create `settings.local.json` for overrides
|
|
1044
|
+
- Package consistency: All references use correct package name
|
|
1045
|
+
|
|
1046
|
+
---
|
|
1047
|
+
|
|
1048
|
+
## [2.1.0] - 2025-11-10
|
|
1049
|
+
|
|
1050
|
+
### Added - Provider-Specific Context Contracts
|
|
1051
|
+
|
|
1052
|
+
- **NEW:** Created separate contract files per cloud provider
|
|
1053
|
+
- `config/context-contracts.gcp.json` - GCP-specific contracts
|
|
1054
|
+
- `config/context-contracts.aws.json` - AWS-specific contracts
|
|
1055
|
+
- Ready for `context-contracts.azure.json` (future)
|
|
1056
|
+
|
|
1057
|
+
- **Auto-Detection:** `context_provider.py` now automatically:
|
|
1058
|
+
1. Detects cloud provider from `metadata.cloud_provider`
|
|
1059
|
+
2. Falls back to inferring from field presence (`project_id` → GCP, `account_id` → AWS)
|
|
1060
|
+
3. Loads the correct contract file
|
|
1061
|
+
4. Validates against provider-specific requirements
|
|
1062
|
+
|
|
1063
|
+
- **Test Fixtures:** Added sample contexts for testing
|
|
1064
|
+
- `tests/fixtures/project-context.gcp.json`
|
|
1065
|
+
- `tests/fixtures/project-context.aws.json`
|
|
1066
|
+
|
|
1067
|
+
### Changed
|
|
1068
|
+
|
|
1069
|
+
- **Context Provider:** Updated `tools/context_provider.py`
|
|
1070
|
+
- Added `detect_cloud_provider()` function
|
|
1071
|
+
- Added `load_provider_contracts()` function
|
|
1072
|
+
- Updated `get_contract_context()` to accept provider contracts
|
|
1073
|
+
- Legacy contracts remain for backward compatibility
|
|
1074
|
+
|
|
1075
|
+
- **Field Names:** Standardized provider-specific fields
|
|
1076
|
+
- GCP: `project_details.project_id` (no change)
|
|
1077
|
+
- AWS: `project_details.account_id` (was `aws_account`)
|
|
1078
|
+
- Installer updated to generate correct field names
|
|
1079
|
+
|
|
1080
|
+
- **Templates:** Created AWS-specific template
|
|
1081
|
+
- `templates/project-context.template.aws.json`
|
|
1082
|
+
- Matches AWS naming conventions (EKS, RDS, ECR, etc.)
|
|
1083
|
+
|
|
1084
|
+
- **Documentation:** Updated `config/context-contracts.md`
|
|
1085
|
+
- Added "Provider-Specific Contracts" section
|
|
1086
|
+
- Documented how provider detection works
|
|
1087
|
+
- Explained benefits of provider-specific approach
|
|
1088
|
+
- Version bumped to 2.1.0
|
|
1089
|
+
|
|
1090
|
+
### Benefits
|
|
1091
|
+
|
|
1092
|
+
- Clarity: Field names match cloud provider terminology
|
|
1093
|
+
- Simplicity: No complex conditional validation logic in agents
|
|
1094
|
+
- Extensibility: Adding Azure = create one JSON file (15 minutes)
|
|
1095
|
+
- Agents Stay Agnostic: Agents use pattern discovery, don't need provider logic
|
|
1096
|
+
- Single Source of Truth: Orchestrator selects the right contract
|
|
1097
|
+
|
|
1098
|
+
### Backward Compatibility
|
|
1099
|
+
|
|
1100
|
+
- Legacy support maintained: If provider-specific contracts don't exist, falls back to hardcoded contracts
|
|
1101
|
+
- Existing projects: Continue to work without changes
|
|
1102
|
+
- Migration: Optional, but recommended for clarity
|
|
1103
|
+
|
|
1104
|
+
---
|
|
1105
|
+
|
|
1106
|
+
## [1.4.0] - 2025-11-10
|
|
1107
|
+
|
|
1108
|
+
### Changed - BREAKING: Complete Installer Redesign
|
|
1109
|
+
|
|
1110
|
+
- **NEW FLOW:** Directories first, context second (much more logical!)
|
|
1111
|
+
1. Ask for directories (gitops, terraform, app-services) - ALWAYS
|
|
1112
|
+
2. Ask for project context repo - OPTIONAL
|
|
1113
|
+
3. If NO context: Ask basic questions to create project-context.json
|
|
1114
|
+
4. If YES context: Use that configuration and done!
|
|
1115
|
+
|
|
1116
|
+
### Improved
|
|
1117
|
+
|
|
1118
|
+
- **Clearer Purpose:** Context repo is now clearly optional
|
|
1119
|
+
- **Better Fallback:** If no context exists, creates a basic one with minimal info
|
|
1120
|
+
- **All Fields Optional:** Can leave everything empty if you don't know yet
|
|
1121
|
+
- **Logical Order:** Ask for what you always need first (paths), then optional context
|
|
1122
|
+
|
|
1123
|
+
---
|
|
1124
|
+
|
|
1125
|
+
## [1.3.6] - 2025-11-10
|
|
1126
|
+
|
|
1127
|
+
### Fixed
|
|
1128
|
+
|
|
1129
|
+
- **Installer:** Skip questions when project context already has the answers
|
|
1130
|
+
- **Smart Detection:** Only ask what's missing or needs confirmation (paths)
|
|
1131
|
+
- **User Experience:** Show config summary when context is loaded
|
|
1132
|
+
- **Directory Creation:** Auto-create missing directories without prompting
|
|
1133
|
+
|
|
1134
|
+
### Changed
|
|
1135
|
+
|
|
1136
|
+
- When project context loads successfully, only asks to confirm/adjust paths
|
|
1137
|
+
- Cloud provider, credentials, region, and cluster name auto-applied from context
|
|
1138
|
+
- Clearer feedback showing what was loaded from project context
|
|
1139
|
+
- Missing directories (gitops, terraform, app-services) now created automatically
|
|
1140
|
+
|
|
1141
|
+
---
|
|
1142
|
+
|
|
1143
|
+
## [1.3.5] - 2025-11-10
|
|
1144
|
+
|
|
1145
|
+
### Added
|
|
1146
|
+
|
|
1147
|
+
- **Smart Installer Flow:** Project context repo now asked FIRST, with auto-population of all config
|
|
1148
|
+
- **Input Sanitization:** Handles "git clone <url>" pastes automatically (extracts just URL)
|
|
1149
|
+
- **Auto-Configuration:** Parses project-context.json and pre-fills all wizard questions
|
|
1150
|
+
- **Better Error Messages:** Clear troubleshooting tips for git clone failures (SSH keys, access, URL)
|
|
1151
|
+
|
|
1152
|
+
### Changed
|
|
1153
|
+
|
|
1154
|
+
- **Wizard Question Order:** Project context moved from last to first question
|
|
1155
|
+
- **User Experience:** Reduced manual input when project context exists
|
|
1156
|
+
- **Clone Strategy:** Validates project context early, then sets up in final location
|
|
1157
|
+
- **Error Handling:** Installation continues even if project context clone fails
|
|
1158
|
+
|
|
1159
|
+
---
|
|
1160
|
+
|
|
1161
|
+
## [1.3.4] - 2025-11-10
|
|
1162
|
+
|
|
1163
|
+
### Fixed
|
|
1164
|
+
|
|
1165
|
+
- **Installer:** Removed incorrect AGENTS.md symlink creation in project root during installation
|
|
1166
|
+
- **Documentation:** AGENTS.md now only accessible via `.claude/config/AGENTS.md` as intended
|
|
1167
|
+
- **Package Quality:** Excluded Python cache files (`__pycache__/`) from published package
|
|
1168
|
+
|
|
1169
|
+
### Changed
|
|
1170
|
+
|
|
1171
|
+
- **README.md:** Updated project structure documentation to reflect correct AGENTS.md location
|
|
1172
|
+
- **README.en.md:** Updated project structure and corrected package references
|
|
1173
|
+
- **Package Size:** Reduced from 911.7 kB (93 files) to 660.7 kB (77 files) - 27% reduction
|
|
1174
|
+
|
|
1175
|
+
### Added
|
|
1176
|
+
|
|
1177
|
+
- **Package Metadata:** Added `homepage` and `bugs` fields to package.json for better npm discovery
|
|
1178
|
+
- **Badges:** Added npm version, license, and Node.js version badges to README files
|
|
1179
|
+
- **CI/CD:** Created GitHub Actions workflow for automated npm publishing
|
|
1180
|
+
- **.npmignore:** Added file to exclude development artifacts from package
|
|
1181
|
+
- **Cleanup Script:** Added `npm run clean` to remove Python cache files automatically
|
|
1182
|
+
- **Pre-publish Hook:** Added `prepublishOnly` script for automatic cleanup before publishing
|
|
1183
|
+
|
|
1184
|
+
---
|
|
1185
|
+
|
|
1186
|
+
## Versioning Policy
|
|
1187
|
+
|
|
1188
|
+
### Version Number Format: MAJOR.MINOR.PATCH
|
|
1189
|
+
|
|
1190
|
+
- **MAJOR:** Breaking changes to orchestrator behavior (requires agent updates, system changes)
|
|
1191
|
+
- **MINOR:** New features, sections, or substantial improvements (backward compatible)
|
|
1192
|
+
- **PATCH:** Bug fixes, clarifications, typos (backward compatible)
|
|
1193
|
+
|
|
1194
|
+
### Examples
|
|
1195
|
+
|
|
1196
|
+
- Adding new agent: MINOR (e.g., 2.0.0 → 2.1.0)
|
|
1197
|
+
- Changing core principle: MAJOR (e.g., 2.1.0 → 3.0.0)
|
|
1198
|
+
- Fixing typo in docs: PATCH (e.g., 2.1.0 → 2.1.1)
|
|
1199
|
+
- Refactoring structure (like 2.0.0): MAJOR (changed from monolith to modular)
|
|
1200
|
+
|
|
1201
|
+
---
|
|
1202
|
+
|
|
1203
|
+
## Maintainers
|
|
1204
|
+
|
|
1205
|
+
- **Primary:** Jorge Aguilar (jorge.aguilar87@gmail.com)
|
|
1206
|
+
- **Contributors:** Claude Code Agent Swarm
|
|
1207
|
+
|
|
1208
|
+
---
|
|
1209
|
+
|
|
1210
|
+
## License
|
|
1211
|
+
|
|
1212
|
+
Internal documentation for Aaxis RnD team. Not for external distribution.
|