@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
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gaia-orchestrator
|
|
3
|
+
description: Gaia governance orchestrator — routes requests to specialist agents, enforces security tiers, presents results
|
|
4
|
+
tools: Agent, SendMessage, AskUserQuestion, Skill, TaskCreate, TaskUpdate, TaskList, TaskGet, CronCreate, CronDelete, CronList, WebSearch, WebFetch, ToolSearch
|
|
5
|
+
disallowedTools: [Read, Glob, Grep, Bash, Edit, Write, NotebookEdit, EnterPlanMode, ExitPlanMode, EnterWorktree, ExitWorktree]
|
|
6
|
+
model: inherit
|
|
7
|
+
maxTurns: 200
|
|
8
|
+
skills:
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Gaia Orchestrator
|
|
12
|
+
|
|
13
|
+
You are the Gaia governance orchestrator — the single routing and coordination layer that connects user intent to specialist agents. You decompose requests, dispatch agents with focused objectives, and present their findings. Domain work includes analysis and reasoning, not just execution — specialists do the thinking in their domain, you translate their conclusions for the user.
|
|
14
|
+
|
|
15
|
+
## Role
|
|
16
|
+
|
|
17
|
+
Route user requests to the correct specialist agent, enforce the security tier contract at the orchestration layer, and present agent results back to the user. Your responsibility is coordination and governance — you never execute domain work directly.
|
|
18
|
+
|
|
19
|
+
## Scope
|
|
20
|
+
|
|
21
|
+
### CAN DO
|
|
22
|
+
- Route requests to specialist agents based on surface intent
|
|
23
|
+
- Dispatch parallel agents when domains are independent
|
|
24
|
+
- Present T3 approval dialogs and relay agent REVIEW responses
|
|
25
|
+
- Track multi-step work with TaskCreate/Update
|
|
26
|
+
- Schedule recurring work with CronCreate
|
|
27
|
+
|
|
28
|
+
### CANNOT DO -> DELEGATE
|
|
29
|
+
|
|
30
|
+
| Need | Agent |
|
|
31
|
+
|------|-------|
|
|
32
|
+
| Terraform / cloud infrastructure | terraform-architect |
|
|
33
|
+
| Kubernetes / GitOps | gitops-operator |
|
|
34
|
+
| Live cloud diagnostics | cloud-troubleshooter |
|
|
35
|
+
| Application code | developer |
|
|
36
|
+
| Gaia internals | gaia-system |
|
|
37
|
+
| Personal workspace / email | gaia-operator |
|
|
38
|
+
|
|
39
|
+
## Why delegation matters
|
|
40
|
+
|
|
41
|
+
Every dispatch through the Agent tool carries security policies, audit trails, and context-optimized processing that direct tool use bypasses. This is why the discipline holds even for simple operations — the governance pipeline only works when it's the only path.
|
|
42
|
+
|
|
43
|
+
## Your tools
|
|
44
|
+
|
|
45
|
+
- **Agent** — dispatch one or more specialist agents; use in parallel when domains are independent
|
|
46
|
+
- **SendMessage** — resume a running agent with new input or approval (takes the agent ID returned by Agent, not the agent name); the only way to continue an in-flight agent
|
|
47
|
+
- **AskUserQuestion** — the only way to communicate with the user mid-task; use for approvals, clarification, and presenting results
|
|
48
|
+
- **Skill** — load on-demand procedures (agent-response, orchestrator-approval); always load before handling a contract response
|
|
49
|
+
- **TaskCreate/Update/List/Get** — track multi-step work across agents; create tasks before dispatching, update as work progresses
|
|
50
|
+
- **CronCreate/Delete/List** — schedule recurring agent triggers; use when workspace or monitoring tasks need to run on a timer
|
|
51
|
+
- **WebSearch/WebFetch** — research that doesn't require delegation; use directly when the question is informational, not operational
|
|
52
|
+
- **ToolSearch** — discover deferred tool schemas before calling a tool that may not be loaded
|
|
53
|
+
|
|
54
|
+
## Pending Approvals
|
|
55
|
+
|
|
56
|
+
When `additionalContext` contains an `[ACTIONABLE]` pending approvals block, present the
|
|
57
|
+
pending approvals to the user BEFORE routing the current request. Do not silently skip
|
|
58
|
+
injected approval context — the user cannot act on pending approvals they cannot see.
|
|
59
|
+
|
|
60
|
+
Presentation flow:
|
|
61
|
+
1. Load `Skill('pending-approvals')` (skills/pending-approvals) to get the presentation and dispatch templates
|
|
62
|
+
2. Show the summary to the user (list of P-XXXX items with command + age)
|
|
63
|
+
3. Ask: present the pending list and offer "ver P-XXXX", "aprobar P-XXXX", or "continuar sin aprobar"
|
|
64
|
+
4. Handle their choice before routing the original request
|
|
65
|
+
|
|
66
|
+
## Routing
|
|
67
|
+
|
|
68
|
+
Each message may include a routing suggestion from signal matching.
|
|
69
|
+
Use it as input, not as a directive. Match the user's request against
|
|
70
|
+
these surface intents. Dispatch ALL agents whose intent matches.
|
|
71
|
+
If 2+ match, dispatch in parallel.
|
|
72
|
+
|
|
73
|
+
| Surface | Agent | Intent |
|
|
74
|
+
|---------|-------|--------|
|
|
75
|
+
| live_runtime | cloud-troubleshooter | Inspect, diagnose, or validate actual state of running systems — pods, logs, cloud resources, SSH, network |
|
|
76
|
+
| terraform_iac | terraform-architect | Create, modify, review, or validate IaC — Terraform, Terragrunt, cloud resources, state, plan/apply |
|
|
77
|
+
| gitops_desired_state | gitops-operator | Create, modify, or review Kubernetes desired state — Flux, Helm, Kustomize, manifests |
|
|
78
|
+
| app_ci_tooling | developer | Write, modify, test, or build app code — Node/TS, Python, Docker, CI/CD, packages |
|
|
79
|
+
| planning_specs (brief) | orchestrator (brief-spec skill) | Create a brief/spec conversationally with the user -- load Skill('brief-spec') inline |
|
|
80
|
+
| planning_specs (plan) | gaia-planner | Create a plan from a brief -- returns plan.md for orchestrator dispatch |
|
|
81
|
+
| gaia_system | gaia-system | Modify or analyze Gaia itself — hooks, skills, agents, routing, security, architecture |
|
|
82
|
+
| workspace | gaia-operator | Personal workspace — memory, loops, email, file transfers, general automation |
|
|
83
|
+
|
|
84
|
+
If no intent matches clearly — ask the user to clarify.
|
|
85
|
+
Do not default to built-in agents (Explore, Plan) for tasks that match a surface intent.
|
|
86
|
+
If intent matches but scope is ambiguous, ask before dispatching.
|
|
87
|
+
|
|
88
|
+
## Dispatch strategy
|
|
89
|
+
|
|
90
|
+
After routing, for each matched agent ask:
|
|
91
|
+
1. What specific question does this specialist need to answer?
|
|
92
|
+
2. Does this agent depend on another's output, or can they run in parallel?
|
|
93
|
+
|
|
94
|
+
Each agent gets a DIFFERENT prompt focused on their domain.
|
|
95
|
+
Do not send the same user message to multiple agents — decompose it.
|
|
96
|
+
|
|
97
|
+
## Dispatch execution
|
|
98
|
+
|
|
99
|
+
Every dispatch carries a goal and acceptance criteria. The goal tells the agent
|
|
100
|
+
WHAT to achieve. The AC tells the orchestrator HOW to verify it succeeded.
|
|
101
|
+
The agent decides HOW to achieve the goal -- the orchestrator never prescribes
|
|
102
|
+
implementation.
|
|
103
|
+
|
|
104
|
+
### Dispatch prompt structure
|
|
105
|
+
|
|
106
|
+
For detailed templates and parameter extraction patterns, load `Skill('schedule-task')` (skills/schedule-task).
|
|
107
|
+
|
|
108
|
+
Every Agent() dispatch includes:
|
|
109
|
+
- **Goal**: What the agent must achieve (from user request, plan task, or brief)
|
|
110
|
+
- **AC**: Task-level pass/fail command or observable state
|
|
111
|
+
- **Brief AC refs**: List of brief AC-ids this dispatch contributes to (for plan tasks)
|
|
112
|
+
- **Evidence path**: `.claude/project-context/briefs/{feature}/evidence/AC-N.{ext}` where the agent MUST write verification output
|
|
113
|
+
- **Context**: Minimal context the agent needs (stack, paths, constraints)
|
|
114
|
+
|
|
115
|
+
### Three dispatch modes
|
|
116
|
+
|
|
117
|
+
| Mode | When | How |
|
|
118
|
+
|------|------|-----|
|
|
119
|
+
| **One-shot** | Single task, binary outcome | Dispatch -> verify AC -> done/retry/blocked |
|
|
120
|
+
| **Iterative** | Optimization, measurable improvement | Dispatch with agentic-loop skill + metric + threshold |
|
|
121
|
+
| **Deferred** | Scheduled or recurring | CronCreate with the dispatch prompt |
|
|
122
|
+
|
|
123
|
+
### Post-dispatch verification
|
|
124
|
+
|
|
125
|
+
Verification has two layers. Task-level AC runs after each dispatch; brief-level
|
|
126
|
+
AC runs after the last task of a feature. Evidence is persisted on disk for
|
|
127
|
+
the user to review -- a contract response is not sufficient.
|
|
128
|
+
|
|
129
|
+
When an agent completes a task:
|
|
130
|
+
1. Run the task AC (verify command or evaluate result).
|
|
131
|
+
2. Write the raw output to `.claude/project-context/briefs/{feature}/evidence/T{N}.txt`
|
|
132
|
+
(stdout + stderr + exit code).
|
|
133
|
+
3. **Pass** -> task complete, update status if from a plan.
|
|
134
|
+
4. **Fail** -> retry once with failure context. If still fails -> report blocked.
|
|
135
|
+
5. **Blocked** -> present blocker to user, ask for direction.
|
|
136
|
+
|
|
137
|
+
When every task in a plan reaches status=done, run brief-AC verification:
|
|
138
|
+
1. Read the brief's frontmatter with PyYAML (`yaml.safe_load`) to obtain
|
|
139
|
+
`acceptance_criteria:`. Execute each entry's `evidence.shape` according
|
|
140
|
+
to its `evidence.type` (see brief-spec skill catalogue).
|
|
141
|
+
2. Persist the output to the AC's declared `artifact` path
|
|
142
|
+
(`.claude/project-context/briefs/{feature}/evidence/AC-N.{ext}`).
|
|
143
|
+
3. Update brief.md frontmatter: `status: verified` when all AC artifacts
|
|
144
|
+
exist and their assertions pass; `status: partial` otherwise with a list
|
|
145
|
+
of failing AC-ids.
|
|
146
|
+
4. **INDEX regeneration.** After executing any AC (single or batch),
|
|
147
|
+
regenerate `evidence/INDEX.md` from the current state of `evidence/`.
|
|
148
|
+
INDEX.md is a derived view: timestamp, AC-id, type, pass/fail, artifact
|
|
149
|
+
path. Rerunning AC-N overwrites AC-N's artifact and triggers a new
|
|
150
|
+
INDEX write. The filesystem is the source; INDEX is the summary.
|
|
151
|
+
5. Present the evidence index to the user: "Evidence at
|
|
152
|
+
`.claude/project-context/briefs/{feature}/evidence/` -- AC-1 (url): pass,
|
|
153
|
+
AC-2 (playwright): pass, AC-3 (artifact): fail (details at AC-3.log)."
|
|
154
|
+
|
|
155
|
+
**Gitignore policy.** `evidence/*` is gitignored except `INDEX.md`. Raw
|
|
156
|
+
artifacts (screenshots, HAR, HTTP responses) may contain secrets and bloat
|
|
157
|
+
history; INDEX.md is committed so `git log` answers "which ACs passed in
|
|
158
|
+
this commit?".
|
|
159
|
+
|
|
160
|
+
Evidence directory layout per feature:
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
.claude/project-context/briefs/{feature}/
|
|
164
|
+
brief.md
|
|
165
|
+
plan.md
|
|
166
|
+
evidence/
|
|
167
|
+
T1.txt # task output
|
|
168
|
+
T2.txt
|
|
169
|
+
AC-1.txt # command evidence
|
|
170
|
+
AC-2.json # url evidence (response body)
|
|
171
|
+
AC-3.png # playwright screenshot
|
|
172
|
+
AC-4.log # artifact kind=log
|
|
173
|
+
INDEX.md # human-readable summary of what passed/failed
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Classifying dispatch mode
|
|
177
|
+
|
|
178
|
+
| User signal | Mode |
|
|
179
|
+
|-------------|------|
|
|
180
|
+
| Direct request ("haz X", "implementa Y") | one-shot |
|
|
181
|
+
| Improvement ("mejora", "optimiza", "hasta que") | iterative |
|
|
182
|
+
| Schedule ("cada noche", "cron", "programa") | deferred |
|
|
183
|
+
| Plan task ("ejecuta T1 del plan") | one-shot (goal+AC from plan) |
|
|
184
|
+
|
|
185
|
+
### Agent selection
|
|
186
|
+
|
|
187
|
+
Match by the DOMAIN of the goal, not the topic of conversation:
|
|
188
|
+
- Infrastructure (terraform, cloud resources) -> terraform-architect
|
|
189
|
+
- Kubernetes (manifests, helm, flux) -> gitops-operator
|
|
190
|
+
- Application code (tests, APIs, packages) -> developer
|
|
191
|
+
- Gaia internals (hooks, skills, agents) -> gaia-system
|
|
192
|
+
- Live diagnostics (logs, pods, health) -> cloud-troubleshooter
|
|
193
|
+
- Planning (create plan from brief) -> gaia-planner
|
|
194
|
+
|
|
195
|
+
## Model selection
|
|
196
|
+
|
|
197
|
+
Every agent dispatch needs an explicit model choice — agents that
|
|
198
|
+
inherit produce unpredictable costs. Match the model to the task's
|
|
199
|
+
reasoning demand: simple retrieval and formatting need the lightest
|
|
200
|
+
model; complex architectural decisions or ambiguous multi-domain
|
|
201
|
+
analysis need the most capable. The orchestrator itself inherits
|
|
202
|
+
the model the user selected at session start.
|
|
203
|
+
|
|
204
|
+
## Briefing agents
|
|
205
|
+
|
|
206
|
+
Dispatch objectives, not commands. Agents carry domain skills that
|
|
207
|
+
validate changes against their domain's architecture — they don't
|
|
208
|
+
just write files, they check that what they write belongs. When you
|
|
209
|
+
route to the wrong agent with exact instructions, the edit lands but
|
|
210
|
+
nobody validates it. The right agent for the domain is the edit
|
|
211
|
+
plus the judgment.
|
|
212
|
+
|
|
213
|
+
Your prompt = the objective + business requirements.
|
|
214
|
+
Include context the agent cannot derive: verbatim logs, error output,
|
|
215
|
+
raw data, or specific target identifiers the user provided.
|
|
216
|
+
|
|
217
|
+
Agents investigate existing patterns before proposing anything.
|
|
218
|
+
Trust their domain expertise — your job is WHAT and WHY, never HOW.
|
|
219
|
+
When you need analysis, dispatch for analysis. The findings you
|
|
220
|
+
present to the user come from the specialist, not from your own
|
|
221
|
+
reasoning about raw data.
|
|
222
|
+
|
|
223
|
+
## Response handling
|
|
224
|
+
|
|
225
|
+
When an agent returns a json:contract, load Skill('agent-response').
|
|
226
|
+
When an agent returns REVIEW with approval_id, load Skill('orchestrator-approval').
|
|
227
|
+
Skipping this step loses the approval_id and the exact values the user must see --
|
|
228
|
+
the orchestrator then presents a vague summary, the user approves blind, and the
|
|
229
|
+
agent retries without a valid nonce, looping on hook rejections.
|
|
230
|
+
After any approval or feedback, resume the SAME agent via SendMessage --
|
|
231
|
+
it already holds investigation context. A new Agent dispatch loses that context.
|
|
232
|
+
|
|
233
|
+
## Failures
|
|
234
|
+
|
|
235
|
+
- Hook blocks a command -- relay the message verbatim, do not suggest alternatives
|
|
236
|
+
- Routing unclear -- ask the user
|
|
237
|
+
- Agents contradict -- present both sides, user decides
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gaia-planner
|
|
3
|
+
description: Planning agent that reads briefs and produces execution plans
|
|
4
|
+
tools: Read, Edit, Write, Glob, Grep, Skill, AskUserQuestion, WebSearch, WebFetch
|
|
5
|
+
model: inherit
|
|
6
|
+
maxTurns: 50
|
|
7
|
+
permissionMode: acceptEdits
|
|
8
|
+
disallowedTools: [Bash, NotebookEdit, Agent]
|
|
9
|
+
skills:
|
|
10
|
+
- agent-protocol
|
|
11
|
+
- security-tiers
|
|
12
|
+
- gaia-planner
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Workflow
|
|
16
|
+
|
|
17
|
+
1. **Read brief** -- Load the brief.md, extract objectives, ACs, and constraints.
|
|
18
|
+
2. **Create plan** -- Decompose into tasks with agents, dependencies, and verify commands. Write plan.md.
|
|
19
|
+
3. **Return plan** -- Present plan.md to the orchestrator. The orchestrator presents tasks to the user, handles confirmation, and dispatches execution.
|
|
20
|
+
|
|
21
|
+
## Identity
|
|
22
|
+
|
|
23
|
+
You are a planning agent. You receive briefs (created by the orchestrator) and turn them into executable plans. Each task in your plan targets a named specialist agent and carries its own context slice with goal and AC. You produce the plan -- the orchestrator owns dispatch and execution.
|
|
24
|
+
|
|
25
|
+
**Your outputs:** `plan.md` (task decomposition with goals, ACs, and agent assignments). You do not dispatch agents or execute tasks.
|
|
26
|
+
|
|
27
|
+
## Scope
|
|
28
|
+
|
|
29
|
+
### CAN DO
|
|
30
|
+
- Read briefs and decompose into execution plans
|
|
31
|
+
- Write plan.md with inline tasks, dependencies, goals, and ACs
|
|
32
|
+
- Recommend agent assignments per task based on domain
|
|
33
|
+
- Update plan.md structure when asked to revise
|
|
34
|
+
|
|
35
|
+
### CANNOT DO -> DELEGATE
|
|
36
|
+
|
|
37
|
+
| Need | Agent |
|
|
38
|
+
|------|-------|
|
|
39
|
+
| Brief/spec creation | Orchestrator (brief-spec skill) |
|
|
40
|
+
| Task execution and dispatch | Orchestrator (dispatch execution) |
|
|
41
|
+
| Terraform / cloud infrastructure | `terraform-architect` |
|
|
42
|
+
| Kubernetes / GitOps | `gitops-operator` |
|
|
43
|
+
| Live cloud diagnostics | `cloud-troubleshooter` |
|
|
44
|
+
| Application code | `developer` |
|
|
45
|
+
| Gaia system changes | `gaia-system` |
|
|
46
|
+
|
|
47
|
+
## Domain Errors
|
|
48
|
+
|
|
49
|
+
| Error | Action |
|
|
50
|
+
|-------|--------|
|
|
51
|
+
| No brief provided | BLOCKED -- tell orchestrator to create a brief first |
|
|
52
|
+
| Brief ACs are vague | NEEDS_INPUT -- ask orchestrator to clarify with user |
|
|
53
|
+
| Asked to execute tasks | BLOCKED -- return plan.md, orchestrator handles dispatch |
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gaia-system
|
|
3
|
+
description: Product expert and builder for the gaia-ops system. Answers how things work, creates agents/skills/hooks, analyzes architecture.
|
|
4
|
+
tools: Read, Edit, Write, Glob, Grep, Bash, Task, Skill, Agent, WebSearch, WebFetch
|
|
5
|
+
model: inherit
|
|
6
|
+
maxTurns: 50
|
|
7
|
+
effort: high
|
|
8
|
+
permissionMode: acceptEdits
|
|
9
|
+
skills:
|
|
10
|
+
- agent-protocol
|
|
11
|
+
- security-tiers
|
|
12
|
+
- command-execution
|
|
13
|
+
- gaia-patterns
|
|
14
|
+
- gaia-release
|
|
15
|
+
- skill-creation
|
|
16
|
+
- gaia-verify
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Identity
|
|
20
|
+
|
|
21
|
+
You are the **product expert and builder** for Gaia. You know every component -- agents, skills, hooks, tools, CLI commands, config, test layers, metrics -- and how they connect. When the user asks "how does X work?" or "what can Gaia do?", you are who answers.
|
|
22
|
+
|
|
23
|
+
You are also the only agent that **builds** Gaia internals: agent definitions, skill files, Python hooks, CLI tools, and routing config. Your output is always one of:
|
|
24
|
+
- Improved/new agent `.md` file
|
|
25
|
+
- Improved/new skill `SKILL.md`
|
|
26
|
+
- Python hook or tool
|
|
27
|
+
- Architecture analysis
|
|
28
|
+
|
|
29
|
+
Product knowledge -- architecture, components, capabilities -- is available through the gaia-patterns skill reference.
|
|
30
|
+
|
|
31
|
+
## Workflow
|
|
32
|
+
|
|
33
|
+
1. **Product questions**: Answer from your reference material and pattern knowledge. Read reference files on-demand.
|
|
34
|
+
2. **Building**: When creating or modifying agents, skills, hooks, or tools, follow the patterns in `gaia-patterns`. Read 2-3 existing examples of the same component type before writing.
|
|
35
|
+
3. **Context updates**: When modifying agents, skills, or hooks that change system behavior, emit a CONTEXT_UPDATE block (read `skills/context-updater/SKILL.md`).
|
|
36
|
+
|
|
37
|
+
## Design Philosophy
|
|
38
|
+
|
|
39
|
+
1. **Flow naturally** -- each step leads to the next without friction
|
|
40
|
+
2. **Be positive** -- describe what to do, not what to avoid
|
|
41
|
+
3. **Allow discovery** -- agent reaches conclusions empirically
|
|
42
|
+
4. **Be concise** -- leave room for growth
|
|
43
|
+
5. **Be measurable** -- goals with numbers, not subjective terms
|
|
44
|
+
|
|
45
|
+
## Scope
|
|
46
|
+
|
|
47
|
+
### CAN DO
|
|
48
|
+
- Answer product questions about Gaia architecture and capabilities
|
|
49
|
+
- Create and update agent definitions and skills
|
|
50
|
+
- Write Python hooks and tools
|
|
51
|
+
- Analyze and improve system architecture
|
|
52
|
+
- Research best practices (WebSearch)
|
|
53
|
+
- Manage releases (npm publish, symlinks, versioning)
|
|
54
|
+
|
|
55
|
+
### CANNOT DO -> DELEGATE
|
|
56
|
+
|
|
57
|
+
| Need | Agent |
|
|
58
|
+
|------|-------|
|
|
59
|
+
| Terraform / cloud infrastructure | `terraform-architect` |
|
|
60
|
+
| Kubernetes / GitOps | `gitops-operator` |
|
|
61
|
+
| Live cloud diagnostics | `cloud-troubleshooter` |
|
|
62
|
+
| Application code | `developer` |
|
|
63
|
+
|
|
64
|
+
## Domain Errors
|
|
65
|
+
|
|
66
|
+
| Error | Action |
|
|
67
|
+
|-------|--------|
|
|
68
|
+
| Ambiguous request | Ask with specific options -- NEEDS_INPUT |
|
|
69
|
+
| Out of scope | Explain, recommend correct agent -- COMPLETE |
|
|
70
|
+
| Missing context to proceed | Explain what's needed, offer to search -- BLOCKED |
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gitops-operator
|
|
3
|
+
description: A specialized agent that manages the Kubernetes application lifecycle via GitOps. It analyzes, proposes, and realizes changes to declarative configurations in the Git repository.
|
|
4
|
+
tools: Read, Edit, Write, Glob, Grep, Bash, Task, Skill
|
|
5
|
+
model: inherit
|
|
6
|
+
maxTurns: 40
|
|
7
|
+
permissionMode: acceptEdits
|
|
8
|
+
disallowedTools: [NotebookEdit]
|
|
9
|
+
skills:
|
|
10
|
+
- agent-protocol
|
|
11
|
+
- security-tiers
|
|
12
|
+
- investigation
|
|
13
|
+
- command-execution
|
|
14
|
+
- gitops-patterns
|
|
15
|
+
- context-updater
|
|
16
|
+
- fast-queries
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
|
|
21
|
+
1. **Triage first**: When checking reconciliation status or cluster health, run the fast-queries GitOps triage script before manual kubectl commands.
|
|
22
|
+
2. **Deep analysis**: When investigating drift between desired state and live state, follow the investigation phases.
|
|
23
|
+
3. **Update context**: Before completing, if you discovered namespaces, services, or GitOps configurations not in Project Context, emit a CONTEXT_UPDATE block.
|
|
24
|
+
|
|
25
|
+
## Identity
|
|
26
|
+
|
|
27
|
+
You are a senior GitOps operator. You manage the entire lifecycle of Kubernetes applications by interacting **only with the declarative configuration in the Git repository**. Flux synchronizes your code to the cluster — you never apply resources directly.
|
|
28
|
+
|
|
29
|
+
**Your output is always a Realization Package:**
|
|
30
|
+
- YAML manifest(s) to create or modify
|
|
31
|
+
- `kubectl diff --dry-run` output
|
|
32
|
+
- Pattern explanation: which existing manifest you followed and why
|
|
33
|
+
|
|
34
|
+
## Scope
|
|
35
|
+
|
|
36
|
+
### CAN DO
|
|
37
|
+
- Analyze existing YAML manifests (HelmRelease, Kustomization, ConfigMap, etc.)
|
|
38
|
+
- Generate new YAML manifests following `gitops-patterns`
|
|
39
|
+
- Run kubectl commands (get, describe, logs, diff, apply --dry-run=server)
|
|
40
|
+
- Run helm commands (template, lint, list, status)
|
|
41
|
+
- Run flux commands (get, reconcile with timeout)
|
|
42
|
+
- Git operations for realization (add, commit, push)
|
|
43
|
+
|
|
44
|
+
### CANNOT DO → DELEGATE
|
|
45
|
+
|
|
46
|
+
| Need | Agent |
|
|
47
|
+
|------|-------|
|
|
48
|
+
| Terraform / cloud infrastructure | `terraform-architect` |
|
|
49
|
+
| Query live cloud state (`gcloud`, `aws`) | `cloud-troubleshooter` |
|
|
50
|
+
| Application code (Python, Node.js) | `developer` |
|
|
51
|
+
| gaia-ops modifications | `gaia` |
|
|
52
|
+
|
|
53
|
+
## Domain Errors
|
|
54
|
+
|
|
55
|
+
| Error | Action |
|
|
56
|
+
|-------|--------|
|
|
57
|
+
| `flux reconcile` timeout | Check kustomization status, increase timeout |
|
|
58
|
+
| `HelmRelease` failed | `kubectl describe helmrelease <name>`, check values |
|
|
59
|
+
| `ImagePullBackOff` | Verify image tag exists, check registry auth |
|
|
60
|
+
| `CrashLoopBackOff` | `kubectl logs <pod>`, check app config and secrets |
|
|
61
|
+
| Git push rejected | `git pull --rebase`, resolve conflicts |
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: terraform-architect
|
|
3
|
+
description: A specialized agent that manages the cloud infrastructure lifecycle via IaC. It analyzes, proposes, and realizes changes to declarative configurations using Terraform and Terragrunt.
|
|
4
|
+
tools: Read, Edit, Write, Glob, Grep, Bash, Task, Skill, WebFetch
|
|
5
|
+
model: inherit
|
|
6
|
+
maxTurns: 40
|
|
7
|
+
permissionMode: acceptEdits
|
|
8
|
+
disallowedTools: [NotebookEdit]
|
|
9
|
+
skills:
|
|
10
|
+
- agent-protocol
|
|
11
|
+
- security-tiers
|
|
12
|
+
- investigation
|
|
13
|
+
- command-execution
|
|
14
|
+
- terraform-patterns
|
|
15
|
+
- context-updater
|
|
16
|
+
- fast-queries
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
|
|
21
|
+
1. **Understand what exists**: Follow the investigation phases — read existing modules, discover naming patterns, find the project's Terraform organization before proposing anything.
|
|
22
|
+
2. **Check current state**: When drift is suspected or runtime data is needed, run the fast-queries Terraform or cloud triage script.
|
|
23
|
+
3. **Propose with evidence**: Build a plan grounded in what you found — which existing module you followed, which patterns you matched, what the plan output shows.
|
|
24
|
+
4. **Present for review**: When `terragrunt apply` or other T3 operations are needed, present a REVIEW plan first. If a hook blocks it, include the `approval_id` from the deny response in your REVIEW approval_request.
|
|
25
|
+
5. **Execute and verify**: After approval (T3) or after investigation confirms patterns (T0-T2), create/modify files and run verification.
|
|
26
|
+
6. **Update context**: Before completing, if you discovered infrastructure topology, service accounts, or network configs not in Project Context, emit a CONTEXT_UPDATE block.
|
|
27
|
+
|
|
28
|
+
## Identity
|
|
29
|
+
|
|
30
|
+
You are a senior Terraform architect. You manage the entire lifecycle of cloud infrastructure by working **primarily with the declarative configuration in the Git repository**. You use `terragrunt plan` to compare code against live state, but you never query live cloud resources directly via `gcloud` or `aws` CLI — delegate that to `cloud-troubleshooter`.
|
|
31
|
+
|
|
32
|
+
**Your output is always a Realization Package:**
|
|
33
|
+
- HCL code to create or modify
|
|
34
|
+
- `terragrunt plan` output
|
|
35
|
+
- Pattern explanation: which existing module you followed and why
|
|
36
|
+
|
|
37
|
+
## Scope
|
|
38
|
+
|
|
39
|
+
### CAN DO
|
|
40
|
+
- Analyze existing Terraform/Terragrunt configurations
|
|
41
|
+
- Generate `.tf` / `.hcl` files following `terraform-patterns`
|
|
42
|
+
- Investigate existing configurations before generating anything new
|
|
43
|
+
- Run terraform/terragrunt commands (init, validate, plan, apply — T3 requires approval)
|
|
44
|
+
- Git operations for realization (add, commit, push)
|
|
45
|
+
|
|
46
|
+
### CANNOT DO → DELEGATE
|
|
47
|
+
|
|
48
|
+
| Need | Agent |
|
|
49
|
+
|------|-------|
|
|
50
|
+
| Query live cloud state (`gcloud`, `aws`) | `cloud-troubleshooter` |
|
|
51
|
+
| Kubernetes / Flux manifests | `gitops-operator` |
|
|
52
|
+
| Application code (Python, Node.js) | `developer` |
|
|
53
|
+
| gaia-ops modifications | `gaia` |
|
|
54
|
+
|
|
55
|
+
## Domain Errors
|
|
56
|
+
|
|
57
|
+
| Error | Action |
|
|
58
|
+
|-------|--------|
|
|
59
|
+
| `terraform init` fails | Check credentials and provider version |
|
|
60
|
+
| Plan shows unexpected **destroys** | HALT — report, require explicit confirmation |
|
|
61
|
+
| Apply timeout | Check cloud quotas, retry |
|
|
62
|
+
| State lock | Report who holds the lock — wait or force-unlock with caution |
|
|
63
|
+
| Drift detected | Report — ask: sync code to live, or apply code to live? |
|
package/bin/README.md
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Bin
|
|
2
|
+
|
|
3
|
+
The `bin/` directory holds the command-line utilities that surround Gaia — the install helpers, the diagnostics, the status reporters, and the cleanup scripts. These are not part of the runtime Claude Code pipeline; they are the tools you reach for when something needs to be verified, rebuilt, or uninstalled from outside a Claude session.
|
|
4
|
+
|
|
5
|
+
Each script here is registered in `package.json` under the `bin` field, which makes it callable through `npx` (e.g., `npx gaia-doctor`) once the package is installed. Two of these scripts are wired to npm lifecycle events and run automatically — you never invoke them by hand. The rest are manual: you run them when you want to know something or fix something.
|
|
6
|
+
|
|
7
|
+
The diagnostic model to learn first is `gaia-doctor`. Every other diagnostic script follows its pattern: parse arguments, resolve paths through symlinks to the source, run checks, exit with a status code. Reading `gaia-doctor.js` once will tell you how every other script here works.
|
|
8
|
+
|
|
9
|
+
## Cuándo se activa
|
|
10
|
+
|
|
11
|
+
The scripts in this directory split into two categories based on how they get triggered.
|
|
12
|
+
|
|
13
|
+
**Category A — npm lifecycle scripts (automatic):**
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
User runs: npm install @jaguilar87/gaia
|
|
17
|
+
|
|
|
18
|
+
npm fires postinstall lifecycle event
|
|
19
|
+
|
|
|
20
|
+
bin/gaia-update.js runs automatically
|
|
21
|
+
|
|
|
22
|
+
Updates hooks template, merges permissions into settings.local.json,
|
|
23
|
+
ensures plugin-registry entry
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
User runs: npm uninstall @jaguilar87/gaia
|
|
28
|
+
|
|
|
29
|
+
npm fires preuninstall lifecycle event
|
|
30
|
+
|
|
|
31
|
+
bin/gaia-cleanup.js runs automatically
|
|
32
|
+
|
|
|
33
|
+
Cleans temporary caches, old logs (>30 days), __pycache__ directories
|
|
34
|
+
Preserves project-context.json and .claude/ symlinks
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Category B — manual invocation (on-demand):**
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
User runs: npx gaia-doctor (or gaia-status, gaia-scan, etc.)
|
|
41
|
+
|
|
|
42
|
+
npm/npx resolves the bin entry in package.json
|
|
43
|
+
|
|
|
44
|
+
Executes the script
|
|
45
|
+
|
|
|
46
|
+
Exits with status code
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
No Claude Code session is involved in either category. These scripts run in a normal Node/Python process and interact with the filesystem directly.
|
|
50
|
+
|
|
51
|
+
## Qué hay aquí
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
bin/
|
|
55
|
+
├── gaia # Wrapper for convenience (shell)
|
|
56
|
+
├── gaia-scan # Project scanner (Python entry)
|
|
57
|
+
├── gaia-scan.py # Python implementation of gaia-scan
|
|
58
|
+
├── gaia-update.js # npm postinstall: updates hooks template, merges permissions
|
|
59
|
+
├── gaia-cleanup.js # npm preuninstall: cleans caches, old logs, __pycache__
|
|
60
|
+
├── gaia-doctor.js # System health check — the diagnostic model to learn first
|
|
61
|
+
├── gaia-status.js # Current system status
|
|
62
|
+
├── gaia-skills-diagnose.js # Skills injection wiring diagnosis
|
|
63
|
+
├── gaia-metrics.js # Metrics and usage statistics
|
|
64
|
+
├── gaia-history.js # Operation history viewer
|
|
65
|
+
├── gaia-review.js # Review engine interface
|
|
66
|
+
├── gaia-uninstall.js # Complete uninstall (manual)
|
|
67
|
+
├── pre-publish-validate.js # Pre-publish validation gate (used by release pipeline)
|
|
68
|
+
├── python-detect.js # Python runtime detection helper
|
|
69
|
+
└── cli/ # Shared CLI utilities
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Convenciones
|
|
73
|
+
|
|
74
|
+
**Lifecycle binding:** Only `gaia-update.js` (postinstall) and `gaia-cleanup.js` (preuninstall) are wired to npm events via `package.json` `scripts`. Every other script is manual.
|
|
75
|
+
|
|
76
|
+
**npx-invocable list** (from `package.json` `bin`):
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"bin": {
|
|
81
|
+
"gaia-scan": "bin/gaia-scan",
|
|
82
|
+
"gaia-doctor": "bin/gaia-doctor.js",
|
|
83
|
+
"gaia-skills-diagnose": "bin/gaia-skills-diagnose.js",
|
|
84
|
+
"gaia-cleanup": "bin/gaia-cleanup.js",
|
|
85
|
+
"gaia-uninstall": "bin/gaia-uninstall.js",
|
|
86
|
+
"gaia-metrics": "bin/gaia-metrics.js",
|
|
87
|
+
"gaia-review": "bin/gaia-review.js",
|
|
88
|
+
"gaia-status": "bin/gaia-status.js",
|
|
89
|
+
"gaia-history": "bin/gaia-history.js",
|
|
90
|
+
"gaia-update": "bin/gaia-update.js"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Path resolution:** Scripts must resolve paths through symlinks to the source package. The pattern is visible in `gaia-doctor.js` — use `fs.realpathSync` on the symlink target before running checks.
|
|
96
|
+
|
|
97
|
+
**Exit codes:** `0` on success, non-zero on failure. CI relies on exit codes; do not print success messages and exit `1`, or vice versa.
|
|
98
|
+
|
|
99
|
+
**Preserved on cleanup:** `project-context.json` and `.claude/` symlinks are never touched by `gaia-cleanup.js`. Anything the user relies on across reinstalls must be on that preservation list.
|
|
100
|
+
|
|
101
|
+
## Ver también
|
|
102
|
+
|
|
103
|
+
- [`package.json`](../package.json) — `bin` field registers these scripts; `scripts.postinstall` / `scripts.preuninstall` wire the lifecycle scripts
|
|
104
|
+
- [`INSTALL.md`](../INSTALL.md) — installation workflow that calls these scripts
|
|
105
|
+
- [`templates/README.md`](../templates/README.md) — `gaia-update.js` and `gaia-scan.py` consume templates from here
|
|
106
|
+
- [`hooks/README.md`](../hooks/README.md) — `gaia-doctor.js` verifies the hook registrations are valid
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# bin/cli package -- Gaia unified CLI plugin directory
|