aios-core 4.0.2 → 4.1.0

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.
Files changed (111) hide show
  1. package/.aios-core/cli/commands/migrate/analyze.js +6 -6
  2. package/.aios-core/cli/commands/migrate/backup.js +2 -2
  3. package/.aios-core/cli/commands/migrate/execute.js +4 -4
  4. package/.aios-core/cli/commands/migrate/index.js +5 -5
  5. package/.aios-core/cli/commands/migrate/rollback.js +6 -6
  6. package/.aios-core/cli/commands/migrate/update-imports.js +2 -2
  7. package/.aios-core/cli/commands/migrate/validate.js +2 -2
  8. package/.aios-core/cli/commands/pro/index.js +52 -0
  9. package/.aios-core/cli/index.js +1 -1
  10. package/.aios-core/core/ids/registry-updater.js +29 -3
  11. package/.aios-core/core/migration/migration-config.yaml +2 -2
  12. package/.aios-core/core/migration/module-mapping.yaml +2 -2
  13. package/.aios-core/core/registry/README.md +2 -2
  14. package/.aios-core/core/synapse/context/context-builder.js +34 -0
  15. package/.aios-core/core/synapse/diagnostics/collectors/consistency-collector.js +168 -0
  16. package/.aios-core/core/synapse/diagnostics/collectors/hook-collector.js +129 -0
  17. package/.aios-core/core/synapse/diagnostics/collectors/manifest-collector.js +82 -0
  18. package/.aios-core/core/synapse/diagnostics/collectors/output-analyzer.js +134 -0
  19. package/.aios-core/core/synapse/diagnostics/collectors/pipeline-collector.js +75 -0
  20. package/.aios-core/core/synapse/diagnostics/collectors/quality-collector.js +252 -0
  21. package/.aios-core/core/synapse/diagnostics/collectors/relevance-matrix.js +174 -0
  22. package/.aios-core/core/synapse/diagnostics/collectors/safe-read-json.js +31 -0
  23. package/.aios-core/core/synapse/diagnostics/collectors/session-collector.js +102 -0
  24. package/.aios-core/core/synapse/diagnostics/collectors/timing-collector.js +126 -0
  25. package/.aios-core/core/synapse/diagnostics/collectors/uap-collector.js +83 -0
  26. package/.aios-core/core/synapse/diagnostics/report-formatter.js +484 -0
  27. package/.aios-core/core/synapse/diagnostics/synapse-diagnostics.js +95 -0
  28. package/.aios-core/core/synapse/engine.js +73 -20
  29. package/.aios-core/core/synapse/runtime/hook-runtime.js +60 -0
  30. package/.aios-core/core-config.yaml +6 -0
  31. package/.aios-core/data/agent-config-requirements.yaml +2 -2
  32. package/.aios-core/data/aios-kb.md +4 -4
  33. package/.aios-core/data/entity-registry.yaml +5 -5
  34. package/.aios-core/development/agents/architect.md +10 -10
  35. package/.aios-core/development/agents/devops.md +93 -50
  36. package/.aios-core/development/agents/qa.md +94 -40
  37. package/.aios-core/development/agents/ux-design-expert.md +25 -25
  38. package/.aios-core/development/scripts/activation-runtime.js +63 -0
  39. package/.aios-core/development/scripts/generate-greeting.js +9 -8
  40. package/.aios-core/development/scripts/unified-activation-pipeline.js +102 -2
  41. package/.aios-core/development/tasks/{db-expansion-pack-integration.md → db-squad-integration.md} +5 -5
  42. package/.aios-core/development/tasks/{integrate-expansion-pack.md → integrate-squad.md} +2 -2
  43. package/.aios-core/development/tasks/next.md +3 -3
  44. package/.aios-core/development/tasks/pr-automation.md +2 -2
  45. package/.aios-core/development/tasks/publish-npm.md +257 -0
  46. package/.aios-core/development/tasks/release-management.md +4 -4
  47. package/.aios-core/development/tasks/setup-github.md +1 -1
  48. package/.aios-core/development/tasks/squad-creator-migrate.md +1 -1
  49. package/.aios-core/development/tasks/squad-creator-sync-ide-command.md +14 -14
  50. package/.aios-core/development/tasks/update-aios.md +1 -1
  51. package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +1 -1
  52. package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +5 -5
  53. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +21 -21
  54. package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +25 -25
  55. package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +4 -4
  56. package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +3 -3
  57. package/.aios-core/docs/standards/STANDARDS-INDEX.md +13 -13
  58. package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +1 -1
  59. package/.aios-core/framework-config.yaml +4 -0
  60. package/.aios-core/infrastructure/scripts/codex-skills-sync/index.js +182 -0
  61. package/.aios-core/infrastructure/scripts/codex-skills-sync/validate.js +172 -0
  62. package/.aios-core/infrastructure/scripts/ide-sync/README.md +14 -0
  63. package/.aios-core/infrastructure/scripts/ide-sync/index.js +6 -0
  64. package/.aios-core/infrastructure/scripts/tool-resolver.js +4 -4
  65. package/.aios-core/infrastructure/scripts/validate-paths.js +142 -0
  66. package/.aios-core/infrastructure/templates/aios-sync.yaml.template +11 -11
  67. package/.aios-core/infrastructure/templates/github-workflows/README.md +1 -1
  68. package/.aios-core/install-manifest.yaml +190 -106
  69. package/.aios-core/local-config.yaml.template +2 -0
  70. package/.aios-core/product/README.md +2 -2
  71. package/.aios-core/product/data/integration-patterns.md +1 -1
  72. package/.aios-core/product/templates/ide-rules/cline-rules.md +1 -1
  73. package/.aios-core/product/templates/ide-rules/codex-rules.md +65 -0
  74. package/.aios-core/product/templates/ide-rules/copilot-rules.md +1 -1
  75. package/.aios-core/product/templates/ide-rules/roo-rules.md +1 -1
  76. package/.aios-core/user-guide.md +15 -14
  77. package/.aios-core/workflow-intelligence/engine/output-formatter.js +1 -1
  78. package/.claude/hooks/enforce-architecture-first.py +196 -0
  79. package/.claude/hooks/install-hooks.sh +41 -0
  80. package/.claude/hooks/mind-clone-governance.py +192 -0
  81. package/.claude/hooks/pre-commit-mmos-guard.sh +99 -0
  82. package/.claude/hooks/pre-commit-version-check.sh +156 -0
  83. package/.claude/hooks/read-protection.py +151 -0
  84. package/.claude/hooks/slug-validation.py +176 -0
  85. package/.claude/hooks/sql-governance.py +182 -0
  86. package/.claude/hooks/synapse-engine.js +9 -20
  87. package/.claude/hooks/write-path-validation.py +194 -0
  88. package/README.md +44 -14
  89. package/bin/aios-init.js +255 -184
  90. package/bin/aios-minimal.js +2 -2
  91. package/bin/aios.js +19 -19
  92. package/package.json +7 -4
  93. package/packages/aios-pro-cli/bin/aios-pro.js +75 -2
  94. package/packages/aios-pro-cli/package.json +5 -1
  95. package/packages/aios-pro-cli/src/recover.js +100 -0
  96. package/packages/installer/src/__tests__/performance-benchmark.js +382 -0
  97. package/packages/installer/src/config/ide-configs.js +12 -1
  98. package/packages/installer/src/config/templates/core-config-template.js +2 -2
  99. package/packages/installer/src/installer/aios-core-installer.js +2 -2
  100. package/packages/installer/src/installer/file-hasher.js +97 -0
  101. package/packages/installer/src/installer/post-install-validator.js +41 -1
  102. package/packages/installer/src/pro/pro-scaffolder.js +335 -0
  103. package/packages/installer/src/utils/aios-colors.js +2 -2
  104. package/packages/installer/src/wizard/feedback.js +1 -1
  105. package/packages/installer/src/wizard/ide-config-generator.js +2 -2
  106. package/packages/installer/src/wizard/index.js +58 -19
  107. package/packages/installer/src/wizard/pro-setup.js +547 -0
  108. package/packages/installer/src/wizard/questions.js +20 -14
  109. package/packages/installer/src/wizard/validators.js +1 -1
  110. package/scripts/package-synapse.js +323 -0
  111. package/scripts/validate-package-completeness.js +317 -0
@@ -0,0 +1,182 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Hook: SQL Governance
4
+
5
+ REGRA: Comandos SQL que criam/alteram/deletam objetos de banco DEVEM ser aprovados.
6
+
7
+ Este hook intercepta comandos Bash que contêm SQL perigoso e bloqueia
8
+ operações não autorizadas em banco de dados.
9
+
10
+ Exit Codes:
11
+ - 0: Permitido
12
+ - 2: Bloqueado (SQL perigoso detectado)
13
+ """
14
+
15
+ import json
16
+ import sys
17
+ import os
18
+ import re
19
+
20
+ # =============================================================================
21
+ # CONFIGURAÇÃO: Patterns SQL que requerem aprovação
22
+ # =============================================================================
23
+
24
+ DANGEROUS_PATTERNS = [
25
+ # DDL - Criação
26
+ (r"\bCREATE\s+TABLE\b", "CREATE TABLE"),
27
+ (r"\bCREATE\s+VIEW\b", "CREATE VIEW"),
28
+ (r"\bCREATE\s+MATERIALIZED\s+VIEW\b", "CREATE MATERIALIZED VIEW"),
29
+ (r"\bCREATE\s+FUNCTION\b", "CREATE FUNCTION"),
30
+ (r"\bCREATE\s+TRIGGER\b", "CREATE TRIGGER"),
31
+ (r"\bCREATE\s+INDEX\b", "CREATE INDEX"),
32
+ (r"\bCREATE\s+TYPE\b", "CREATE TYPE"),
33
+ (r"\bCREATE\s+SCHEMA\b", "CREATE SCHEMA"),
34
+ (r"\bCREATE\s+EXTENSION\b", "CREATE EXTENSION"),
35
+ (r"\bCREATE\s+POLICY\b", "CREATE POLICY"),
36
+
37
+ # DDL - Alteração
38
+ (r"\bALTER\s+TABLE\b", "ALTER TABLE"),
39
+ (r"\bALTER\s+VIEW\b", "ALTER VIEW"),
40
+ (r"\bALTER\s+FUNCTION\b", "ALTER FUNCTION"),
41
+
42
+ # DDL - Deleção
43
+ (r"\bDROP\s+TABLE\b", "DROP TABLE"),
44
+ (r"\bDROP\s+VIEW\b", "DROP VIEW"),
45
+ (r"\bDROP\s+FUNCTION\b", "DROP FUNCTION"),
46
+ (r"\bDROP\s+TRIGGER\b", "DROP TRIGGER"),
47
+ (r"\bDROP\s+INDEX\b", "DROP INDEX"),
48
+ (r"\bDROP\s+SCHEMA\b", "DROP SCHEMA"),
49
+ (r"\bDROP\s+POLICY\b", "DROP POLICY"),
50
+
51
+ # DML Perigoso
52
+ (r"\bTRUNCATE\b", "TRUNCATE"),
53
+ (r"\bDELETE\s+FROM\b(?!.*\bWHERE\b)", "DELETE without WHERE"),
54
+
55
+ # Backup proibido (criar tabela como cópia)
56
+ (r"\bCREATE\s+TABLE\b.*\bAS\s+SELECT\b", "CREATE TABLE AS SELECT (backup proibido)"),
57
+
58
+ # Storage
59
+ (r"\bINSERT\s+INTO\s+storage\.buckets\b", "INSERT INTO storage.buckets"),
60
+ ]
61
+
62
+ # Patterns que indicam contexto seguro (não bloquear)
63
+ SAFE_CONTEXTS = [
64
+ r"--.*$", # Comentário SQL
65
+ r"SELECT\s+.*\bFROM\b", # Query de leitura
66
+ r"information_schema", # Query de metadata
67
+ r"pg_catalog", # Query de sistema
68
+ r"\bEXPLAIN\b", # Explain plan
69
+ ]
70
+
71
+ # Comandos que são sempre permitidos
72
+ ALLOWED_COMMANDS = [
73
+ "supabase migration", # CLI de migration
74
+ "supabase db push", # Push de migrations
75
+ "supabase db pull", # Pull de schema
76
+ "pg_dump", # Backup (exportar)
77
+ "psql.*-f.*migrations", # Aplicar migration file
78
+ ]
79
+
80
+ # =============================================================================
81
+ # LÓGICA DO HOOK
82
+ # =============================================================================
83
+
84
+ def extract_sql_from_command(command: str) -> str:
85
+ """Extrai possível SQL de um comando bash."""
86
+ # Remover aspas externas se houver
87
+ sql = command
88
+
89
+ # Detectar SQL inline em psql -c
90
+ psql_match = re.search(r'psql.*-c\s+["\'](.+?)["\']', command, re.DOTALL)
91
+ if psql_match:
92
+ sql = psql_match.group(1)
93
+
94
+ # Detectar heredoc
95
+ heredoc_match = re.search(r'<<["\']?(\w+)["\']?\s*\n(.+?)\n\1', command, re.DOTALL)
96
+ if heredoc_match:
97
+ sql = heredoc_match.group(2)
98
+
99
+ return sql.upper()
100
+
101
+ def is_safe_context(command: str) -> bool:
102
+ """Verifica se o comando está em contexto seguro."""
103
+ command_lower = command.lower()
104
+
105
+ for allowed in ALLOWED_COMMANDS:
106
+ if re.search(allowed, command_lower):
107
+ return True
108
+
109
+ return False
110
+
111
+ def detect_dangerous_sql(command: str) -> list[tuple[str, str]]:
112
+ """Detecta patterns SQL perigosos no comando."""
113
+ sql = extract_sql_from_command(command)
114
+ detected = []
115
+
116
+ for pattern, description in DANGEROUS_PATTERNS:
117
+ if re.search(pattern, sql, re.IGNORECASE):
118
+ detected.append((pattern, description))
119
+
120
+ return detected
121
+
122
+ def main():
123
+ # Ler input do stdin
124
+ try:
125
+ input_data = json.load(sys.stdin)
126
+ except json.JSONDecodeError:
127
+ # Se não conseguir parsear, permitir (fail-open)
128
+ sys.exit(0)
129
+
130
+ tool_name = input_data.get("tool_name", "")
131
+ tool_input = input_data.get("tool_input", {})
132
+
133
+ # Só processar Bash
134
+ if tool_name != "Bash":
135
+ sys.exit(0)
136
+
137
+ command = tool_input.get("command", "")
138
+ if not command:
139
+ sys.exit(0)
140
+
141
+ # Verificar se é contexto seguro
142
+ if is_safe_context(command):
143
+ sys.exit(0)
144
+
145
+ # Detectar SQL perigoso
146
+ dangerous = detect_dangerous_sql(command)
147
+
148
+ if not dangerous:
149
+ sys.exit(0)
150
+
151
+ # BLOQUEAR: SQL perigoso detectado
152
+ detected_list = "\n".join([f"║ • {desc:<64} ║" for _, desc in dangerous[:5]])
153
+
154
+ error_message = f"""
155
+ ╔══════════════════════════════════════════════════════════════════════════════╗
156
+ ║ 🛑 SQL GOVERNANCE: Operação de banco requer aprovação ║
157
+ ╠══════════════════════════════════════════════════════════════════════════════╣
158
+ ║ ║
159
+ ║ Operações detectadas: ║
160
+ {detected_list}
161
+ ║ ║
162
+ ║ REGRA: Comandos que criam/alteram/deletam objetos de banco DEVEM: ║
163
+ ║ ║
164
+ ║ 1. Ser propostos ao usuário ANTES de executar ║
165
+ ║ 2. Incluir justificativa e análise de impacto ║
166
+ ║ 3. Aguardar aprovação explícita ║
167
+ ║ ║
168
+ ║ EXCEÇÕES PERMITIDAS: ║
169
+ ║ • supabase migration (CLI oficial) ║
170
+ ║ • pg_dump (backup/export) ║
171
+ ║ • Aplicar migrations existentes em supabase/migrations/ ║
172
+ ║ ║
173
+ ║ AÇÃO: Proponha as mudanças ao usuário e aguarde aprovação. ║
174
+ ║ Use o formato: Schema/SQL + Justificativa + Impacto ║
175
+ ║ ║
176
+ ╚══════════════════════════════════════════════════════════════════════════════╝
177
+ """
178
+ print(error_message, file=sys.stderr)
179
+ sys.exit(2)
180
+
181
+ if __name__ == "__main__":
182
+ main()
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env node
2
+ // SYN-14: Boot time captured before ANY require — measures hook cold start
3
+ const _BOOT_TIME = process.hrtime.bigint();
2
4
  'use strict';
3
5
 
4
6
  /**
@@ -16,7 +18,9 @@
16
18
  */
17
19
 
18
20
  const path = require('path');
19
- const fs = require('fs');
21
+ const { resolveHookRuntime, buildHookOutput } = require(
22
+ path.join(__dirname, '..', '..', '.aios-core', 'core', 'synapse', 'runtime', 'hook-runtime.js'),
23
+ );
20
24
 
21
25
  /** Safety timeout (ms) — defense-in-depth; Claude Code also manages hook timeout. */
22
26
  const HOOK_TIMEOUT_MS = 5000;
@@ -41,26 +45,11 @@ function readStdin() {
41
45
  /** Main hook execution pipeline. */
42
46
  async function main() {
43
47
  const input = await readStdin();
44
- const { sessionId, cwd, prompt } = input;
45
- if (!cwd) return;
46
- const synapsePath = path.join(cwd, '.synapse');
47
- if (!fs.existsSync(synapsePath)) return;
48
+ const runtime = resolveHookRuntime(input);
49
+ if (!runtime) return;
48
50
 
49
- const { loadSession } = require(
50
- path.join(cwd, '.aios-core', 'core', 'synapse', 'session', 'session-manager.js')
51
- );
52
- const { SynapseEngine } = require(
53
- path.join(cwd, '.aios-core', 'core', 'synapse', 'engine.js')
54
- );
55
-
56
- const sessionsDir = path.join(synapsePath, 'sessions');
57
- const session = loadSession(sessionId, sessionsDir) || { prompt_count: 0 };
58
- const engine = new SynapseEngine(synapsePath);
59
- const result = await engine.process(prompt, session);
60
-
61
- process.stdout.write(JSON.stringify({
62
- hookSpecificOutput: { additionalContext: result.xml || '' },
63
- }));
51
+ const result = await runtime.engine.process(input.prompt, runtime.session);
52
+ process.stdout.write(JSON.stringify(buildHookOutput(result.xml)));
64
53
  }
65
54
 
66
55
  /**
@@ -0,0 +1,194 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Hook: Write Path Validation
4
+
5
+ REGRA: Documentos devem ir para os paths corretos conforme convenções.
6
+
7
+ Este hook intercepta Write/Edit e AVISA (não bloqueia) quando o path
8
+ parece violar as convenções de organização de documentos.
9
+
10
+ Exit Codes:
11
+ - 0: Sempre (apenas avisa, nunca bloqueia)
12
+ """
13
+
14
+ import json
15
+ import sys
16
+ import os
17
+ import re
18
+ from datetime import datetime
19
+
20
+ # =============================================================================
21
+ # CONFIGURAÇÃO: Regras de organização de documentos
22
+ # =============================================================================
23
+
24
+ PATH_RULES = [
25
+ # (pattern no nome/conteúdo, path esperado, descrição)
26
+ {
27
+ "name_patterns": [r"session", r"handoff", r"^2\d{3}-\d{2}-\d{2}"],
28
+ "expected_path": "docs/sessions/",
29
+ "description": "Session logs e handoffs → docs/sessions/YYYY-MM/",
30
+ },
31
+ {
32
+ "name_patterns": [r"architecture", r"system-design", r"infra"],
33
+ "expected_path": "docs/architecture/",
34
+ "description": "Docs de arquitetura → docs/architecture/",
35
+ "exclude_patterns": [r"ARCHITECTURE_RULES"], # Exceção para MMOS
36
+ },
37
+ {
38
+ "name_patterns": [r"guide", r"tutorial", r"how-to"],
39
+ "expected_path": "docs/guides/",
40
+ "description": "Guias e tutoriais → docs/guides/",
41
+ },
42
+ {
43
+ "name_patterns": [r"prd\.md$", r"epic.*\.md$", r"story.*\.md$"],
44
+ "expected_path": "docs/projects/",
45
+ "description": "PRDs, Epics, Stories → docs/projects/{project}/",
46
+ },
47
+ {
48
+ "name_patterns": [r"mind.*specific", r"mind.*validation"],
49
+ "expected_path": "outputs/minds/",
50
+ "description": "Docs específicos de mind → outputs/minds/{slug}/docs/",
51
+ },
52
+ ]
53
+
54
+ # Paths que são sempre válidos (não avisar)
55
+ ALWAYS_VALID_PATHS = [
56
+ ".claude/",
57
+ ".aios-core/",
58
+ ".aios-upstream/",
59
+ "squads/",
60
+ "node_modules/",
61
+ ".git/",
62
+ "app/",
63
+ "supabase/",
64
+ "outputs/",
65
+ ]
66
+
67
+ # =============================================================================
68
+ # LÓGICA DO HOOK
69
+ # =============================================================================
70
+
71
+ def get_project_root():
72
+ """Obtém o root do projeto."""
73
+ return os.environ.get("CLAUDE_PROJECT_DIR", os.getcwd())
74
+
75
+ def normalize_path(file_path: str, project_root: str) -> str:
76
+ """Normaliza path para relativo."""
77
+ if file_path.startswith(project_root):
78
+ return file_path[len(project_root):].lstrip("/")
79
+ return file_path
80
+
81
+ def is_always_valid(relative_path: str) -> bool:
82
+ """Verifica se o path está em área sempre válida."""
83
+ for valid in ALWAYS_VALID_PATHS:
84
+ if relative_path.startswith(valid):
85
+ return True
86
+ return False
87
+
88
+ def is_documentation_file(relative_path: str) -> bool:
89
+ """Verifica se é um arquivo de documentação."""
90
+ doc_extensions = [".md", ".mdx", ".txt", ".rst"]
91
+ return any(relative_path.endswith(ext) for ext in doc_extensions)
92
+
93
+ def check_path_rules(relative_path: str) -> list[dict]:
94
+ """
95
+ Verifica se o path viola alguma regra.
96
+
97
+ Returns:
98
+ Lista de violações com sugestões
99
+ """
100
+ violations = []
101
+ filename = os.path.basename(relative_path)
102
+
103
+ for rule in PATH_RULES:
104
+ # Verificar se o nome do arquivo corresponde ao pattern
105
+ matches_name = False
106
+ for pattern in rule["name_patterns"]:
107
+ if re.search(pattern, filename, re.IGNORECASE):
108
+ matches_name = True
109
+ break
110
+
111
+ if not matches_name:
112
+ continue
113
+
114
+ # Verificar exceções
115
+ if "exclude_patterns" in rule:
116
+ is_excluded = False
117
+ for exc_pattern in rule["exclude_patterns"]:
118
+ if re.search(exc_pattern, filename, re.IGNORECASE):
119
+ is_excluded = True
120
+ break
121
+ if is_excluded:
122
+ continue
123
+
124
+ # Verificar se está no path esperado
125
+ expected = rule["expected_path"]
126
+ if not relative_path.startswith(expected):
127
+ violations.append({
128
+ "current_path": relative_path,
129
+ "expected_path": expected,
130
+ "description": rule["description"],
131
+ })
132
+
133
+ return violations
134
+
135
+ def main():
136
+ # Ler input do stdin
137
+ try:
138
+ input_data = json.load(sys.stdin)
139
+ except json.JSONDecodeError:
140
+ sys.exit(0)
141
+
142
+ tool_name = input_data.get("tool_name", "")
143
+ tool_input = input_data.get("tool_input", {})
144
+
145
+ # Só processar Write e Edit
146
+ if tool_name not in ["Write", "Edit"]:
147
+ sys.exit(0)
148
+
149
+ file_path = tool_input.get("file_path", "")
150
+ if not file_path:
151
+ sys.exit(0)
152
+
153
+ # Normalizar path
154
+ project_root = get_project_root()
155
+ relative_path = normalize_path(file_path, project_root)
156
+
157
+ # Verificar se é área sempre válida
158
+ if is_always_valid(relative_path):
159
+ sys.exit(0)
160
+
161
+ # Só verificar arquivos de documentação
162
+ if not is_documentation_file(relative_path):
163
+ sys.exit(0)
164
+
165
+ # Verificar regras
166
+ violations = check_path_rules(relative_path)
167
+
168
+ if not violations:
169
+ sys.exit(0)
170
+
171
+ # AVISAR (não bloquear)
172
+ violation = violations[0] # Mostrar primeira violação
173
+
174
+ warning_message = f"""
175
+ ┌──────────────────────────────────────────────────────────────────────────────┐
176
+ │ ⚠️ PATH WARNING: Documento pode estar no local errado │
177
+ ├──────────────────────────────────────────────────────────────────────────────┤
178
+ │ │
179
+ │ Arquivo: {relative_path[:60]:<60} │
180
+ │ │
181
+ │ Convenção: {violation['description'][:56]:<56} │
182
+ │ Esperado: {violation['expected_path']:<57} │
183
+ │ │
184
+ │ NOTA: Este é apenas um AVISO, a operação será executada. │
185
+ │ Verifique se o path está correto antes de continuar. │
186
+ │ │
187
+ └──────────────────────────────────────────────────────────────────────────────┘
188
+ """
189
+ # Imprimir warning mas NÃO bloquear (exit 0)
190
+ print(warning_message, file=sys.stderr)
191
+ sys.exit(0)
192
+
193
+ if __name__ == "__main__":
194
+ main()
package/README.md CHANGED
@@ -80,7 +80,7 @@ Esta abordagem de duas fases elimina tanto a **inconsistência de planejamento**
80
80
  - **[Aprender como usar o AIOS](docs/guides/user-guide.md)** → Guia completo do usuário e passo a passo
81
81
  - **[Ver agentes IA disponíveis](#agentes-disponíveis)** → Papéis especializados para sua equipe
82
82
  - **[Explorar usos não técnicos](#-além-do-desenvolvimento-de-software---squads)** → Escrita criativa, negócios, bem-estar, educação
83
- - **[Criar meus próprios agentes IA](#criando-seu-próprio-expansion-pack)** → Construir agentes para seu domínio
83
+ - **[Criar meus próprios agentes IA](#criando-seu-próprio-squad)** → Construir agentes para seu domínio
84
84
  - **[Navegar Squads prontos](docs/guides/squads-overview.md)** → Veja como criar e usar equipes de agentes IA
85
85
  - **[Entender a arquitetura](docs/architecture/ARCHITECTURE-INDEX.md)** → Mergulho técnico profundo
86
86
  - **[Juntar-se à comunidade](https://discord.gg/gk8jAdXWmj)** → Obter ajuda e compartilhar ideias
@@ -90,7 +90,7 @@ Esta abordagem de duas fases elimina tanto a **inconsistência de planejamento**
90
90
  **Mantenha-se atualizado sem esforço!** Para atualizar sua instalação AIOS existente:
91
91
 
92
92
  ```bash
93
- npx github:SynkraAI/aios-core install
93
+ npx aios-core@latest install
94
94
  ```
95
95
 
96
96
  Isto vai:
@@ -139,7 +139,7 @@ O Synkra AIOS agora inclui uma experiência de instalação interativa de últim
139
139
 
140
140
  - ✅ Download da versão mais recente do NPM
141
141
  - ✅ Assistente de instalação interativo moderno
142
- - ✅ Configuração automática do IDE (Windsurf, Cursor ou Claude Code)
142
+ - ✅ Configuração automática do IDE (Codex CLI, Windsurf, Cursor ou Claude Code)
143
143
  - ✅ Configuração de todos os agentes e fluxos de trabalho AIOS
144
144
  - ✅ Criação dos arquivos de configuração necessários
145
145
  - ✅ Inicialização do sistema de meta-agentes
@@ -155,7 +155,7 @@ O Synkra AIOS agora inclui uma experiência de instalação interativa de últim
155
155
  Se você já tem o AIOS instalado:
156
156
 
157
157
  ```bash
158
- npx github:SynkraAI/aios-core install
158
+ npx aios-core@latest install
159
159
  # O instalador detectará sua instalação existente e a atualizará
160
160
  ```
161
161
 
@@ -174,6 +174,13 @@ O Synkra AIOS inclui regras pré-configuradas para IDE para melhorar sua experi
174
174
 
175
175
  - ✅ Já configurado! O arquivo `.claude/CLAUDE.md` é carregado automaticamente
176
176
 
177
+ #### Para Codex CLI:
178
+
179
+ - ✅ Já configurado! O arquivo `AGENTS.md` na raiz é carregado automaticamente
180
+ - Opcional: sincronize agentes auxiliares com `npm run sync:ide:codex`
181
+ - Recomendado neste repositório: gerar e versionar skills locais com `npm run sync:skills:codex`
182
+ - Use `npm run sync:skills:codex:global` apenas fora deste projeto (para evitar duplicidade no `/skills`)
183
+
177
184
  Estas regras fornecem:
178
185
 
179
186
  - 🤖 Reconhecimento e integração de comandos de agentes
@@ -185,7 +192,7 @@ Estas regras fornecem:
185
192
  ### Início Mais Rápido com Interface Web (2 minutos)
186
193
 
187
194
  1. **Instale o AIOS**: Execute `npx aios-core init meu-projeto`
188
- 2. **Configure seu IDE**: Siga as instruções de configuração para Windsurf, Cursor ou Claude Code
195
+ 2. **Configure seu IDE**: Siga as instruções de configuração para Codex CLI, Windsurf, Cursor ou Claude Code
189
196
  3. **Comece a Planejar**: Ative um agente como `@analyst` para começar a criar seu briefing
190
197
  4. **Use comandos AIOS**: Digite `*help` para ver comandos disponíveis
191
198
  5. **Siga o fluxo**: Veja o [Guia do usuário](docs/guides/user-guide.md) para mais detalhes
@@ -368,13 +375,13 @@ npm run install:aios
368
375
  Para membros da equipe ingressando no projeto:
369
376
 
370
377
  ```bash
371
- # Instalar AIOS com configuração GitHub
372
- npx github:SynkraAI/aios-core setup
378
+ # Instalar AIOS no projeto
379
+ npx aios-core@latest install
373
380
 
374
381
  # Isto vai:
375
- # 1. Verificar/instalar GitHub CLI
376
- # 2. Autenticar com GitHub
377
- # 3. Executar o instalador AIOS
382
+ # 1. Detectar instalação existente (se houver)
383
+ # 2. Instalar/atualizar framework AIOS
384
+ # 3. Configurar agentes e workflows
378
385
  ```
379
386
 
380
387
  ## 🌟 Além do Desenvolvimento de Software - Squads
@@ -512,17 +519,17 @@ User Request → Spec Pipeline → Execution Engine → QA Review → Working Co
512
519
 
513
520
  ## Criando Seu Próprio Squad
514
521
 
515
- Expansion packs permitem estender o AIOS para qualquer domínio. Estrutura básica:
522
+ Squads permitem estender o AIOS para qualquer domínio. Estrutura básica:
516
523
 
517
524
  ```
518
- squads/seu-pack/
519
- ├── config.yaml # Configuração do pack
525
+ squads/seu-squad/
526
+ ├── config.yaml # Configuração do squad
520
527
  ├── agents/ # Agentes especializados
521
528
  ├── tasks/ # Fluxos de trabalho de tarefas
522
529
  ├── templates/ # Templates de documentos
523
530
  ├── checklists/ # Checklists de validação
524
531
  ├── data/ # Base de conhecimento
525
- ├── README.md # Documentação do pack
532
+ ├── README.md # Documentação do squad
526
533
  └── user-guide.md # Guia do usuário
527
534
  ```
528
535
 
@@ -536,6 +543,29 @@ Squads são equipes modulares de agentes IA. Veja a [Visão Geral de Squads](doc
536
543
 
537
544
  - **[hybrid-ops](https://github.com/SynkraAI/aios-hybrid-ops-pedro-valerio)** - Operações híbridas humano-agente (repositório separado)
538
545
 
546
+ ## AIOS Pro
547
+
548
+ O **AIOS Pro** (`@aios-fullstack/pro`) é o módulo premium do Synkra AIOS, oferecendo funcionalidades avançadas para equipes e projetos de maior escala.
549
+
550
+ > **Disponibilidade restrita:** O AIOS Pro está disponível exclusivamente para membros do **AIOS Cohort Advanced**. [Saiba mais sobre o programa](https://synkra.ai).
551
+
552
+ ### Instalação
553
+
554
+ ```bash
555
+ npm install @aios-fullstack/pro
556
+ ```
557
+
558
+ ### Features Premium
559
+
560
+ - **Squads Avançados** - Squads especializados com capacidades expandidas
561
+ - **Memory Layer** - Memória persistente de padrões e insights entre sessões
562
+ - **Métricas & Analytics** - Dashboard de produtividade e métricas de desenvolvimento
563
+ - **Integrações Enterprise** - Conectores para Jira, Linear, Notion e mais
564
+ - **Configuração em Camadas** - Sistema de configuração L1-L4 com herança
565
+ - **Licenciamento** - Gerenciamento de licença via `aios pro activate --key <KEY>`
566
+
567
+ Para mais informações, execute `npx aios-core pro --help` após a instalação.
568
+
539
569
  ## Suporte & Comunidade
540
570
 
541
571
  - 📖 [Guia da Comunidade](docs/community.md) - Como participar e contribuir