auroq-os 2.2.2 → 2.3.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 (215) hide show
  1. package/.auroq-core/constitution.md +11 -151
  2. package/.auroq-core/core-config.yaml +1 -1
  3. package/.auroq-core/dna-operacional.md +9 -131
  4. package/.claude/CLAUDE.md +5 -466
  5. package/.claude/commands/AuroqOS/agents/ops.md +4 -1781
  6. package/.claude/commands/auroq-clone-forge.md +3 -3
  7. package/.claude/commands/auroq-companion.md +3 -3
  8. package/.claude/commands/auroq-consultor.md +4 -4
  9. package/.claude/commands/auroq-etlmaker.md +3 -3
  10. package/.claude/commands/auroq-mind-forge.md +4 -4
  11. package/.claude/commands/auroq-squad-forge.md +3 -3
  12. package/.claude/commands/auroq-worker-forge.md +4 -4
  13. package/.claude/hooks/auroq-sync.cjs +127 -0
  14. package/.claude/output-styles/direto.md +19 -0
  15. package/.claude/rules/agent-authority.md +8 -6
  16. package/.claude/rules/evolucao-incremental.md +8 -20
  17. package/.claude/rules/mcp-usage.md +10 -18
  18. package/.claude/rules/operacao-autonoma.md +29 -0
  19. package/.claude/rules/puxar-e-entregar.md +31 -0
  20. package/.claude/settings.json +22 -1
  21. package/.gitignore +4 -0
  22. package/AGENTS.md +10 -119
  23. package/README.md +8 -7
  24. package/bin/auroq-os.js +68 -18
  25. package/lib/auth.js +6 -6
  26. package/lib/credentials.js +13 -1
  27. package/package.json +18 -8
  28. package/scripts/postpack-casca.mjs +32 -0
  29. package/scripts/prepack-casca.mjs +47 -0
  30. package/scripts/validate-hybrid.mjs +2 -0
  31. package/.auroq-core/development/sistema-gestao-projetos.md +0 -193
  32. package/.auroq-core/development/sistema-memoria.md +0 -157
  33. package/agents/clone-forge/.state.json +0 -7
  34. package/agents/clone-forge/README.md +0 -81
  35. package/agents/clone-forge/agents/clone-forge-chief.md +0 -885
  36. package/agents/clone-forge/agents/cognitive-motor.md +0 -384
  37. package/agents/clone-forge/agents/innerlens.md +0 -453
  38. package/agents/clone-forge/checklists/clone-forge-validation.md +0 -160
  39. package/agents/clone-forge/checklists/driver-quality-gate.md +0 -79
  40. package/agents/clone-forge/checklists/miu-quality-gate.md +0 -86
  41. package/agents/clone-forge/checklists/psychometric-quality-gate.md +0 -76
  42. package/agents/clone-forge/checklists/smoke-test-clone.md +0 -313
  43. package/agents/clone-forge/config.yaml +0 -221
  44. package/agents/clone-forge/data/clone-anti-patterns.yaml +0 -148
  45. package/agents/clone-forge/data/clone-forge-kb.md +0 -106
  46. package/agents/clone-forge/data/clone-validation.yaml +0 -190
  47. package/agents/clone-forge/data/driver-catalog.yaml +0 -2595
  48. package/agents/clone-forge/data/driver-relationship-templates.yaml +0 -242
  49. package/agents/clone-forge/data/miu-classification-taxonomy.yaml +0 -273
  50. package/agents/clone-forge/data/output-examples.yaml +0 -102
  51. package/agents/clone-forge/data/poc-schema.yaml +0 -320
  52. package/agents/clone-forge/data/psychometric-systems.yaml +0 -1514
  53. package/agents/clone-forge/data/source-tiers.yaml +0 -119
  54. package/agents/clone-forge/data/source-type-handlers.yaml +0 -282
  55. package/agents/clone-forge/tasks/aggregate-profile.md +0 -519
  56. package/agents/clone-forge/tasks/clone-review.md +0 -105
  57. package/agents/clone-forge/tasks/collect-and-merge-sources.md +0 -621
  58. package/agents/clone-forge/tasks/deep-interview.md +0 -737
  59. package/agents/clone-forge/tasks/extract-dna-enriched.md +0 -371
  60. package/agents/clone-forge/tasks/extract-mius.md +0 -1018
  61. package/agents/clone-forge/tasks/extract-thinking-dna.md +0 -654
  62. package/agents/clone-forge/tasks/extract-voice-dna.md +0 -620
  63. package/agents/clone-forge/tasks/fidelity-score.md +0 -109
  64. package/agents/clone-forge/tasks/gap-analysis-questionnaire.md +0 -517
  65. package/agents/clone-forge/tasks/generate-agent-from-profile.md +0 -874
  66. package/agents/clone-forge/tasks/infer-drivers.md +0 -431
  67. package/agents/clone-forge/tasks/ingest-local-content.md +0 -578
  68. package/agents/clone-forge/tasks/map-psychometrics.md +0 -459
  69. package/agents/clone-forge/tasks/start.md +0 -805
  70. package/agents/clone-forge/tasks/validate-clone-forge.md +0 -743
  71. package/agents/clone-forge/tasks/validate-clone.md +0 -130
  72. package/agents/clone-forge/templates/driver-profile-tmpl.yaml +0 -137
  73. package/agents/clone-forge/templates/manifest-tmpl.yaml +0 -161
  74. package/agents/clone-forge/templates/miu-tmpl.yaml +0 -109
  75. package/agents/clone-forge/templates/poc-module-tmpl.yaml +0 -259
  76. package/agents/clone-forge/templates/quality-dashboard-360-tmpl.md +0 -218
  77. package/agents/clone-forge/workflows/wf-clone-forge-full.yaml +0 -678
  78. package/agents/clone-forge/workflows/wf-clone-forge-quick.yaml +0 -320
  79. package/agents/companion/agents/companion.md +0 -326
  80. package/agents/companion/knowledge/arcane-method.md +0 -247
  81. package/agents/companion/knowledge/companion-foundation.md +0 -57
  82. package/agents/companion/knowledge/modus-operandi.md +0 -161
  83. package/agents/companion/knowledge/system-guide.md +0 -380
  84. package/agents/companion/tasks/new-project.md +0 -111
  85. package/agents/companion/tasks/save-memory.md +0 -73
  86. package/agents/companion/tasks/start.md +0 -159
  87. package/agents/companion/tasks/weekly-review.md +0 -82
  88. package/agents/consultor/agents/consultor.md +0 -185
  89. package/agents/consultor/knowledge/01-arquitetura-e-engenharia.md +0 -157
  90. package/agents/consultor/knowledge/02-operar-o-negocio.md +0 -136
  91. package/agents/consultor/knowledge/03-os-8-agentes.md +0 -96
  92. package/agents/consultor/knowledge/04-filosofia-e-didatica.md +0 -131
  93. package/agents/consultor/knowledge/05-fazer-no-dia-a-dia.md +0 -99
  94. package/agents/consultor/knowledge/06-quando-criar-agente-ou-squad.md +0 -109
  95. package/agents/consultor/knowledge/07-logicas-de-uso-e-higiene.md +0 -87
  96. package/agents/consultor/tasks/start.md +0 -26
  97. package/agents/etlmaker/agents/analyst.md +0 -189
  98. package/agents/etlmaker/agents/architect.md +0 -173
  99. package/agents/etlmaker/agents/auditor.md +0 -217
  100. package/agents/etlmaker/agents/composer.md +0 -201
  101. package/agents/etlmaker/agents/etl-chief.md +0 -259
  102. package/agents/etlmaker/agents/extractor.md +0 -184
  103. package/agents/etlmaker/data/archive/extraction-lenses.yaml +0 -178
  104. package/agents/etlmaker/data/archive/miu-types.yaml +0 -128
  105. package/agents/etlmaker/data/etlmaker-kb.md +0 -175
  106. package/agents/etlmaker/data/quality-gates.yaml +0 -208
  107. package/agents/etlmaker/skill.md +0 -230
  108. package/agents/etlmaker/squad.yaml +0 -182
  109. package/agents/etlmaker/tasks/compose-volume.md +0 -292
  110. package/agents/etlmaker/tasks/ingest-sources.md +0 -157
  111. package/agents/etlmaker/tasks/integrate-package.md +0 -357
  112. package/agents/etlmaker/tasks/map-territory.md +0 -394
  113. package/agents/etlmaker/tasks/start.md +0 -225
  114. package/agents/etlmaker/tasks/validate-final.md +0 -471
  115. package/agents/etlmaker/templates/kb-template.md +0 -180
  116. package/agents/etlmaker/workflows/wf-knowledge-etl.yaml +0 -371
  117. package/agents/mind-forge/README.md +0 -64
  118. package/agents/mind-forge/agents/forge-chief.md +0 -293
  119. package/agents/mind-forge/agents/knowledge-miner.md +0 -280
  120. package/agents/mind-forge/agents/mind-smith.md +0 -306
  121. package/agents/mind-forge/checklists/analysis-completeness.md +0 -34
  122. package/agents/mind-forge/checklists/mind-quality.md +0 -55
  123. package/agents/mind-forge/data/extraction-lenses.yaml +0 -229
  124. package/agents/mind-forge/data/forge-kb.md +0 -182
  125. package/agents/mind-forge/data/kf-classification.yaml +0 -307
  126. package/agents/mind-forge/skill.md +0 -7
  127. package/agents/mind-forge/squad.yaml +0 -167
  128. package/agents/mind-forge/tasks/analyze-knowledge.md +0 -278
  129. package/agents/mind-forge/tasks/forge-mind.md +0 -199
  130. package/agents/mind-forge/tasks/ingest-sources.md +0 -130
  131. package/agents/mind-forge/tasks/playback-validate.md +0 -146
  132. package/agents/mind-forge/tasks/start.md +0 -137
  133. package/agents/mind-forge/tasks/validate-mind.md +0 -237
  134. package/agents/mind-forge/templates/agent-tmpl.md +0 -124
  135. package/agents/mind-forge/templates/config-tmpl.yaml +0 -17
  136. package/agents/mind-forge/templates/kb-tmpl.md +0 -66
  137. package/agents/mind-forge/workflows/wf-mind-forge.yaml +0 -168
  138. package/agents/squad-forge/README.md +0 -110
  139. package/agents/squad-forge/agents/forge-chief.md +0 -297
  140. package/agents/squad-forge/agents/forge-smith.md +0 -535
  141. package/agents/squad-forge/agents/process-archaeologist.md +0 -398
  142. package/agents/squad-forge/checklists/architecture-coherence.md +0 -28
  143. package/agents/squad-forge/checklists/extraction-completeness.md +0 -48
  144. package/agents/squad-forge/checklists/nuclear-structure-validation.md +0 -61
  145. package/agents/squad-forge/checklists/squad-operational.md +0 -24
  146. package/agents/squad-forge/checklists/user-validation.md +0 -23
  147. package/agents/squad-forge/data/executor-mapping-guide.yaml +0 -135
  148. package/agents/squad-forge/data/extraction-lenses.yaml +0 -330
  149. package/agents/squad-forge/data/forge-kb.md +0 -248
  150. package/agents/squad-forge/data/pu-classification.yaml +0 -229
  151. package/agents/squad-forge/data/quality-thresholds.yaml +0 -259
  152. package/agents/squad-forge/squad.yaml +0 -175
  153. package/agents/squad-forge/tasks/architect-squad.md +0 -398
  154. package/agents/squad-forge/tasks/assemble-squad.md +0 -831
  155. package/agents/squad-forge/tasks/extract-process.md +0 -378
  156. package/agents/squad-forge/tasks/fix-squad.md +0 -334
  157. package/agents/squad-forge/tasks/generate-prd.md +0 -265
  158. package/agents/squad-forge/tasks/generate-stories.md +0 -223
  159. package/agents/squad-forge/tasks/playback-validate.md +0 -263
  160. package/agents/squad-forge/tasks/rebuild-squad.md +0 -236
  161. package/agents/squad-forge/tasks/self-test.md +0 -237
  162. package/agents/squad-forge/tasks/start.md +0 -247
  163. package/agents/squad-forge/tasks/update-squad.md +0 -262
  164. package/agents/squad-forge/tasks/validate-squad.md +0 -377
  165. package/agents/squad-forge/templates/process-map-tmpl.yaml +0 -109
  166. package/agents/squad-forge/templates/pu-tmpl.yaml +0 -71
  167. package/agents/squad-forge/templates/squad-blueprint-tmpl.yaml +0 -113
  168. package/agents/squad-forge/workflows/wf-squad-forge.yaml +0 -300
  169. package/agents/worker-forge/README.md +0 -58
  170. package/agents/worker-forge/agents/knowledge-curator.md +0 -170
  171. package/agents/worker-forge/agents/role-designer.md +0 -150
  172. package/agents/worker-forge/agents/worker-chief.md +0 -273
  173. package/agents/worker-forge/agents/worker-smith.md +0 -258
  174. package/agents/worker-forge/data/worker-forge-kb.md +0 -264
  175. package/agents/worker-forge/knowledge/autonomous-agent-architectures.md +0 -275
  176. package/agents/worker-forge/knowledge/delegation-competency-performance.md +0 -256
  177. package/agents/worker-forge/knowledge/job-design-business-systems.md +0 -296
  178. package/agents/worker-forge/knowledge/knowledge-management-improvement.md +0 -242
  179. package/agents/worker-forge/skill.md +0 -7
  180. package/agents/worker-forge/squad.yaml +0 -101
  181. package/agents/worker-forge/tasks/assemble-worker.md +0 -239
  182. package/agents/worker-forge/tasks/discover-needs.md +0 -219
  183. package/agents/worker-forge/tasks/playback-validate.md +0 -126
  184. package/agents/worker-forge/tasks/propose-worker.md +0 -112
  185. package/agents/worker-forge/tasks/research-domain.md +0 -165
  186. package/agents/worker-forge/tasks/start.md +0 -67
  187. package/agents/worker-forge/tasks/validate-worker.md +0 -155
  188. package/agents/worker-forge/workflows/wf-worker-forge.yaml +0 -96
  189. package/docs/stories/AUROQ-2.1.0-hybrid-runtime.md +0 -64
  190. package/tests/installer-hybrid.test.mjs +0 -66
  191. package/tests/onepassword.test.mjs +0 -54
  192. package/tests/sync-codex-skills.test.mjs +0 -88
  193. /package/{agents → seeds/agents}/companion/data/contexto-dinamico.md +0 -0
  194. /package/{agents → seeds/agents}/companion/data/demandas-backlog.md +0 -0
  195. /package/{agents → seeds/agents}/companion/data/log-decisoes.md +0 -0
  196. /package/{agents → seeds/agents}/companion/data/padroes-observados.md +0 -0
  197. /package/{agents → seeds/agents}/companion/knowledge/expert-essencial.md +0 -0
  198. /package/{business → seeds/business}/campanhas/_template/BRIEFING.md +0 -0
  199. /package/{business → seeds/business}/campanhas/_template/CHECKLIST.md +0 -0
  200. /package/{business → seeds/business}/campanhas/_template/DIARIO.md +0 -0
  201. /package/{business → seeds/business}/campanhas/_template/RETROVISOR.md +0 -0
  202. /package/{business → seeds/business}/cockpit.md +0 -0
  203. /package/{business → seeds/business}/templates/tracker-template.md +0 -0
  204. /package/{docs → seeds/docs}/knowledge/expert-business/criacoes/.gitkeep +0 -0
  205. /package/{docs → seeds/docs}/knowledge/expert-business/posicionamento/.gitkeep +0 -0
  206. /package/{docs → seeds/docs}/knowledge/expert-business/posicionamento.md +0 -0
  207. /package/{docs → seeds/docs}/knowledge/expert-business/produto/.gitkeep +0 -0
  208. /package/{docs → seeds/docs}/knowledge/expert-business/publico-alvo.md +0 -0
  209. /package/{docs → seeds/docs}/knowledge/expert-mind/assessments/.gitkeep +0 -0
  210. /package/{docs → seeds/docs}/knowledge/expert-mind/historia.md +0 -0
  211. /package/{docs → seeds/docs}/knowledge/expert-mind/identidade/.gitkeep +0 -0
  212. /package/{docs → seeds/docs}/knowledge/expert-mind/identidade.md +0 -0
  213. /package/{docs → seeds/docs}/knowledge/expert-mind/proposito/.gitkeep +0 -0
  214. /package/{docs → seeds/docs}/knowledge/expert-mind/tom-de-voz.md +0 -0
  215. /package/{docs → seeds/docs}/knowledge/expert-mind/valores.md +0 -0
package/README.md CHANGED
@@ -80,11 +80,11 @@ claude
80
80
  *conectar-1password # reconectar o cofre (uma vez so nesta maquina)
81
81
  ```
82
82
 
83
- Ritual diario em toda maquina: **sentou → `*sync` · levantou → `*commit` + `*push`**.
83
+ Ritual diario em toda maquina: **abriu o `claude` → o sistema puxa sozinho o que mudou · terminou → diga "salva e entrega"** (qualquer agente executa o ritual do Ops; `*sync`/`*commit`/`*push` seguem como atalhos).
84
84
  Colaborador usa conta propria de tudo (GitHub via convite, assinatura Claude propria,
85
85
  cofre 1Password com escopo) — nunca a senha do dono. **Colaborador nao precisa ser
86
86
  aluno**: o acesso dele e o convite do GitHub (o `clone` nao pede login); quem atualiza
87
- o sistema e o dono, e o colaborador recebe as atualizacoes via `*sync`.
87
+ o sistema e o dono, e o colaborador recebe as atualizacoes automaticamente ao abrir o `claude`.
88
88
 
89
89
  ## Estrutura
90
90
 
@@ -117,10 +117,11 @@ agents/ → Seu exercito (companion, workers, minds, squads)
117
117
 
118
118
  ## Primeiro uso
119
119
 
120
- 1. Ative o Companion (`/auroq-companion` no Claude/Grok ou `$companion` no Codex)
121
- 2. Preencha os templates em `docs/knowledge/expert-mind/` (quem voce e)
122
- 3. Preencha `docs/knowledge/expert-business/` (o que voce faz)
123
- 4. Pronto — o sistema ja te conhece
120
+ 1. Ative o Ops (`/AuroqOS:agents:ops` no Claude/Grok ou `$ops` no Codex) e peca o Bootstrap 1.
121
+ 2. O Ops prepara browser oficial, Computer Use quando elegivel e Playwright como fallback, sempre com smoke test real.
122
+ 3. Ative o Companion (`/auroq-companion` no Claude/Grok ou `$companion` no Codex).
123
+ 4. Preencha os templates em `docs/knowledge/expert-mind/` e `docs/knowledge/expert-business/`.
124
+ 5. Pronto — o sistema ja te conhece.
124
125
 
125
126
  ## Filosofia
126
127
 
@@ -132,4 +133,4 @@ agents/ → Seu exercito (companion, workers, minds, squads)
132
133
 
133
134
  ---
134
135
 
135
- *Auroq OS v2.1.0 — by Euriler Jube / Arka*
136
+ *Auroq OS v2.2.4 — by Euriler Jube / Arka*
package/bin/auroq-os.js CHANGED
@@ -146,15 +146,14 @@ async function applySecretProtections(targetDir) {
146
146
  const HEALTH_CHECKS = [
147
147
  ['.auroq-core/constitution.md', 'Constitution'],
148
148
  ['.claude/CLAUDE.md', 'CLAUDE.md'],
149
+ ['.claude/output-styles/direto.md', 'Output style Direto'],
150
+ ['.claude/rules/operacao-autonoma.md', 'Rule de operacao autonoma'],
149
151
  ['.claude/hooks/synapse-engine.cjs', 'Synapse Hook'],
150
- ['agents/companion/agents/companion.md', 'Companion'],
151
- ['agents/organizer/agents/organizer.md', 'Organizer'],
152
- ['.claude/commands/AuroqOS/agents/ops.md', 'Ops'],
153
- ['agents/squad-forge/agents/forge-chief.md', 'Squad Forge'],
154
- ['agents/mind-forge/agents/forge-chief.md', 'Mind Forge'],
155
- ['agents/worker-forge/agents/worker-chief.md', 'Worker Forge'],
156
- ['agents/clone-forge/agents/clone-forge-chief.md', 'Clone Forge'],
157
- ['agents/etlmaker/agents/etl-chief.md', 'ETLmaker'],
152
+ ['.claude/hooks/auroq-sync.cjs', 'Sync Hook'],
153
+ ['.claude/rules/puxar-e-entregar.md', 'Rule puxar-e-entregar'],
154
+ ['.claude/rules/mcp-usage.md', 'Rule MCP (carve-out Arcane)'],
155
+ ['.claude/commands/auroq-companion.md', 'Casca Companion'],
156
+ ['.claude/commands/AuroqOS/agents/ops.md', 'Casca Ops'],
158
157
  ['business/cockpit.md', 'Cockpit'],
159
158
  ['.synapse/manifest', 'Synapse Manifest'],
160
159
  ['AGENTS.md', 'Codex AGENTS.md'],
@@ -165,21 +164,62 @@ const HEALTH_CHECKS = [
165
164
 
166
165
  async function runHealthChecks(targetDir) {
167
166
  let passed = 0;
167
+ const missing = [];
168
168
  for (const [file, label] of HEALTH_CHECKS) {
169
169
  if (await fs.pathExists(path.join(targetDir, file))) {
170
170
  passed++;
171
171
  } else {
172
- warn(`${label} nao encontrado`);
172
+ missing.push(`${label} (${file})`);
173
173
  }
174
174
  }
175
175
  if (passed === HEALTH_CHECKS.length) {
176
176
  success(`${passed}/${HEALTH_CHECKS.length} verificacoes OK`);
177
177
  } else {
178
- warn(`${passed}/${HEALTH_CHECKS.length} verificacoes OK — rode *bootstrap pra corrigir`);
178
+ error(`${passed}/${HEALTH_CHECKS.length} verificacoes OK — arquivo de autoload faltando:`);
179
+ for (const item of missing) error(` - ${item}`);
180
+ error('Nenhum arquivo de autoload pode faltar em silencio. Contato: 11 97312-2273');
181
+ process.exit(1);
179
182
  }
180
183
  return { passed, total: HEALTH_CHECKS.length };
181
184
  }
182
185
 
186
+ async function writeArcaneMcpConfig(targetDir) {
187
+ const pin = 'arcane-mcp@0.1.0';
188
+ const mcpPath = path.join(targetDir, '.mcp.json');
189
+ let json = { mcpServers: {} };
190
+ if (await fs.pathExists(mcpPath)) {
191
+ try { json = await fs.readJSON(mcpPath); } catch { json = { mcpServers: {} }; }
192
+ }
193
+ json.mcpServers = json.mcpServers || {};
194
+ json.mcpServers.arcane = { command: 'npx', args: ['-y', pin] };
195
+ await fs.writeJSON(mcpPath, json, { spaces: 2 });
196
+
197
+ const tomlPath = path.join(targetDir, '.codex', 'config.toml');
198
+ await fs.ensureDir(path.dirname(tomlPath));
199
+ const block = `[mcp_servers.arcane]\ncommand = "npx"\nargs = ["-y", "${pin}"]\n`;
200
+ let toml = '';
201
+ if (await fs.pathExists(tomlPath)) toml = await fs.readFile(tomlPath, 'utf8');
202
+ if (!toml.includes('[mcp_servers.arcane]')) {
203
+ const next = (toml.trimEnd() ? `${toml.trimEnd()}\n\n` : '') + block;
204
+ await fs.writeFile(tomlPath, next);
205
+ }
206
+ }
207
+
208
+ async function patchEnableAllProjectMcpServers(targetDir) {
209
+ const settingsPath = path.join(targetDir, '.claude', 'settings.local.json');
210
+ let json = {};
211
+ if (await fs.pathExists(settingsPath)) {
212
+ try {
213
+ json = await fs.readJSON(settingsPath);
214
+ } catch {
215
+ json = {};
216
+ }
217
+ }
218
+ if (json.enableAllProjectMcpServers === true) return;
219
+ json.enableAllProjectMcpServers = true;
220
+ await fs.writeJSON(settingsPath, json, { spaces: 2 });
221
+ }
222
+
183
223
  // ─── INSTALACAO ──────────────────────────────────────────
184
224
  async function init() {
185
225
  showBanner();
@@ -321,6 +361,7 @@ async function init() {
321
361
  '.claude/CLAUDE.md',
322
362
  '.claude/settings.json',
323
363
  '.claude/settings.local.json',
364
+ '.claude/output-styles/direto.md',
324
365
  '.claude/commands/auroq-companion.md',
325
366
  '.claude/commands/auroq-organizer.md',
326
367
  '.claude/commands/AuroqOS/agents/ops.md',
@@ -342,11 +383,14 @@ async function init() {
342
383
  '.claude/rules/project-tracker.md',
343
384
  '.claude/rules/tool-response-filtering.md',
344
385
  '.claude/rules/natural-language-first.md',
386
+ '.claude/rules/operacao-autonoma.md',
345
387
  '.claude/rules/custom-do-aluno.md',
388
+ '.claude/rules/puxar-e-entregar.md',
346
389
 
347
390
  // Hooks
348
391
  '.claude/hooks/synapse-engine.cjs',
349
392
  '.claude/hooks/precompact-session-digest.cjs',
393
+ '.claude/hooks/auroq-sync.cjs',
350
394
 
351
395
  // Synapse domain files
352
396
  '.synapse/manifest',
@@ -510,6 +554,14 @@ async function init() {
510
554
  }
511
555
  success(`${copied} arquivos instalados`);
512
556
 
557
+ const seedRoot = path.join(sourceDir, 'seeds');
558
+ if (await fs.pathExists(seedRoot)) {
559
+ await fs.copy(seedRoot, targetDir, { overwrite: false });
560
+ success('Semente do aluno instalada (memoria, docs, cockpit — nunca sobrescreve)');
561
+ }
562
+ await patchEnableAllProjectMcpServers(targetDir);
563
+ await writeArcaneMcpConfig(targetDir);
564
+
513
565
  // ─── Fase 4: Copiar Synapse Engine
514
566
  step('Instalando Synapse Engine...');
515
567
 
@@ -527,11 +579,7 @@ async function init() {
527
579
  step('Instalando Meta Squads e scripts...');
528
580
 
529
581
  const dirsToCopy = [
530
- { src: 'agents/squad-forge', label: 'Squad Forge' },
531
- { src: 'agents/mind-forge', label: 'Mind Forge' },
532
- { src: 'agents/worker-forge', label: 'Worker Forge' },
533
- { src: 'agents/clone-forge', label: 'Clone Forge' },
534
- { src: 'agents/etlmaker', label: 'ETLmaker' },
582
+ { src: 'agents/organizer', label: 'Organizer' },
535
583
  { src: '.auroq-core/development/scripts', label: 'Squad Scripts' },
536
584
  ];
537
585
 
@@ -785,6 +833,8 @@ async function clone(repoArg) {
785
833
  }
786
834
  }
787
835
 
836
+ await writeArcaneMcpConfig(destDir);
837
+
788
838
  // ─── Fase 8: Health check
789
839
  step('Verificando integridade...');
790
840
  await runHealthChecks(destDir);
@@ -805,10 +855,10 @@ ${DIM} Uma vez so, nesta maquina:${RESET}
805
855
 
806
856
  ${DIM} Ritual de todo dia, em toda maquina:${RESET}
807
857
 
808
- ${GOLD}Sentou${RESET} → ${CYAN}*sync${RESET} ${DIM}— puxa o que mudou nas outras maquinas${RESET}
809
- ${GOLD}Levantou${RESET} → ${CYAN}*commit${RESET} + ${CYAN}*push${RESET} ${DIM}— entrega o seu trabalho pro GitHub${RESET}
858
+ ${GOLD}Abriu${RESET} → ${DIM}o sistema puxa sozinho o que mudou nas outras maquinas (e te conta)${RESET}
859
+ ${GOLD}Levantou${RESET} → diga ${CYAN}"salva e entrega"${RESET} ${DIM}pra quem estiver na tela — vai pro GitHub${RESET}
810
860
 
811
- ${DIM} Nunca levante da maquina com trabalho nao entregue.${RESET}
861
+ ${DIM} Nunca levante da maquina com trabalho nao entregue — o sistema lembra, mas so voce entrega.${RESET}
812
862
 
813
863
  ${PURPLE}${BOLD} ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}
814
864
  ${DIM} Auroq OS v${PKG_VERSION} — Sistema Operacional de IA para Experts${RESET}
package/lib/auth.js CHANGED
@@ -150,7 +150,7 @@ async function interactiveLogin({ forceFresh = false } = {}) {
150
150
  process.exit(1);
151
151
  }
152
152
 
153
- if (status !== 'ativo') {
153
+ if (status !== 'ativo' && status !== 'finalizado') {
154
154
  await client.auth.signOut().catch(() => {});
155
155
  err(statusMessage(status));
156
156
  process.exit(1);
@@ -166,7 +166,7 @@ async function interactiveLogin({ forceFresh = false } = {}) {
166
166
  });
167
167
 
168
168
  ok(`Autenticado como ${BOLD}${user.email}${RESET}`);
169
- ok(`Status: ${GREEN}ativo${RESET}`);
169
+ ok(`Status: ${GREEN}${status}${RESET}`);
170
170
  return saved;
171
171
  }
172
172
 
@@ -208,7 +208,7 @@ async function getValidSession({ allowOffline = true } = {}) {
208
208
  refresh_token: cred.refresh_token,
209
209
  });
210
210
  const status = await checkAccess(client);
211
- if (status !== 'ativo') {
211
+ if (status !== 'ativo' && status !== 'finalizado') {
212
212
  err(statusMessage(status));
213
213
  credentials.clear();
214
214
  process.exit(1);
@@ -219,7 +219,7 @@ async function getValidSession({ allowOffline = true } = {}) {
219
219
  last_status: status,
220
220
  });
221
221
  ok(`Autenticado como ${BOLD}${cred.user.email}${RESET}`);
222
- ok(`Status: ${GREEN}ativo${RESET}`);
222
+ ok(`Status: ${GREEN}${status}${RESET}`);
223
223
  return saved;
224
224
  } catch (e) {
225
225
  if (isOffline(e) && allowOffline) {
@@ -248,7 +248,7 @@ async function getValidSession({ allowOffline = true } = {}) {
248
248
  process.exit(1);
249
249
  }
250
250
 
251
- if (status !== 'ativo') {
251
+ if (status !== 'ativo' && status !== 'finalizado') {
252
252
  err(statusMessage(status));
253
253
  credentials.clear();
254
254
  process.exit(1);
@@ -263,7 +263,7 @@ async function getValidSession({ allowOffline = true } = {}) {
263
263
  last_status: status,
264
264
  });
265
265
  ok(`Sessao renovada — ${BOLD}${user.email}${RESET}`);
266
- ok(`Status: ${GREEN}ativo${RESET}`);
266
+ ok(`Status: ${GREEN}${status}${RESET}`);
267
267
  return saved;
268
268
  } catch (e) {
269
269
  if (isOffline(e) && allowOffline) {
@@ -3,10 +3,20 @@
3
3
  const fs = require('fs');
4
4
  const path = require('path');
5
5
  const os = require('os');
6
+ const crypto = require('crypto');
6
7
 
7
8
  const CRED_DIR = path.join(os.homedir(), '.arcane');
8
9
  const CRED_FILE = path.join(CRED_DIR, 'credentials.json');
9
10
 
11
+ function deviceFingerprint() {
12
+ let username = 'unknown';
13
+ try {
14
+ username = os.userInfo().username;
15
+ } catch {}
16
+ const raw = `${os.hostname()}|${username}|${os.platform()}|${os.arch()}`;
17
+ return crypto.createHash('sha256').update(raw).digest('hex');
18
+ }
19
+
10
20
  function ensureDir() {
11
21
  if (!fs.existsSync(CRED_DIR)) {
12
22
  fs.mkdirSync(CRED_DIR, { recursive: true, mode: 0o700 });
@@ -33,6 +43,7 @@ function load() {
33
43
 
34
44
  function save(cred) {
35
45
  ensureDir();
46
+ const existing = load() || {};
36
47
  const payload = {
37
48
  access_token: cred.access_token,
38
49
  refresh_token: cred.refresh_token,
@@ -43,6 +54,7 @@ function save(cred) {
43
54
  },
44
55
  last_validated_at: cred.last_validated_at || Math.floor(Date.now() / 1000),
45
56
  last_status: cred.last_status || 'unknown',
57
+ device_fp: existing.device_fp || cred.device_fp || deviceFingerprint(),
46
58
  };
47
59
  fs.writeFileSync(CRED_FILE, JSON.stringify(payload, null, 2), { mode: 0o600 });
48
60
  try {
@@ -65,4 +77,4 @@ function isExpired(cred) {
65
77
  return now >= cred.expires_at - 60;
66
78
  }
67
79
 
68
- module.exports = { load, save, clear, isExpired, CRED_DIR, CRED_FILE };
80
+ module.exports = { load, save, clear, isExpired, deviceFingerprint, CRED_DIR, CRED_FILE };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auroq-os",
3
- "version": "2.2.2",
3
+ "version": "2.3.0",
4
4
  "description": "Auroq OS — Sistema Operacional de IA para Experts",
5
5
  "bin": {
6
6
  "auroq-os": "bin/auroq-os.js"
@@ -18,22 +18,32 @@
18
18
  "auroq:sync:codex:check": "npm run sync:codex:check",
19
19
  "auroq:validate": "npm run validate:hybrid",
20
20
  "validate:hybrid": "node scripts/validate-hybrid.mjs",
21
- "lint": "node --check bin/auroq-os.js && node --check lib/auth.js && node --check lib/credentials.js && node --check lib/onepassword.js && node --check lib/supabase.js && node --check scripts/sync-codex-skills.mjs && node --check scripts/validate-hybrid.mjs",
21
+ "lint": "node --check bin/auroq-os.js && node --check lib/auth.js && node --check lib/credentials.js && node --check lib/onepassword.js && node --check lib/supabase.js && node --check scripts/sync-codex-skills.mjs && node --check scripts/validate-hybrid.mjs && node --check scripts/prepack-casca.mjs && node --check scripts/postpack-casca.mjs",
22
22
  "typecheck": "npm run validate:hybrid",
23
23
  "test": "node --test tests/*.test.mjs",
24
+ "prepack": "node scripts/prepack-casca.mjs",
25
+ "postpack": "node scripts/postpack-casca.mjs",
24
26
  "build": "npm pack --dry-run --json > /dev/null"
25
27
  },
26
28
  "files": [
27
29
  "bin/",
28
30
  "lib/",
29
31
  "scripts/",
30
- ".auroq-core/",
31
- ".claude/",
32
+ "seeds/",
33
+ ".auroq-core/core/",
34
+ ".auroq-core/core-config.yaml",
35
+ ".auroq-core/constitution.md",
36
+ ".auroq-core/dna-operacional.md",
37
+ ".auroq-core/development/scripts/",
38
+ ".claude/hooks/",
39
+ ".claude/settings.json",
40
+ ".claude/settings.local.json",
41
+ ".claude/output-styles/",
42
+ ".claude/commands/",
43
+ ".claude/rules/",
44
+ ".claude/CLAUDE.md",
32
45
  ".synapse/",
33
- "agents/",
34
- "business/",
35
- "docs/",
36
- "tests/",
46
+ "agents/organizer/",
37
47
  "AGENTS.md",
38
48
  "README.md",
39
49
  ".gitignore",
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env node
2
+ /** Restaura o miolo depois do npm pack/publish. */
3
+ import fs from 'node:fs';
4
+ import path from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+
7
+ const root = fs.realpathSync(path.join(path.dirname(fileURLToPath(import.meta.url)), '..'));
8
+ const cascaRoot = path.join(root, 'casca');
9
+ const backupRoot = path.join(root, '.pack-casca-backup');
10
+
11
+ function walk(dir) {
12
+ const out = [];
13
+ if (!fs.existsSync(dir)) return out;
14
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
15
+ const full = path.join(dir, entry.name);
16
+ if (entry.isDirectory()) out.push(...walk(full));
17
+ else out.push(full);
18
+ }
19
+ return out;
20
+ }
21
+
22
+ if (!fs.existsSync(backupRoot)) process.exit(0);
23
+
24
+ for (const bak of walk(backupRoot)) {
25
+ const rel = path.relative(backupRoot, bak);
26
+ const dest = path.join(root, rel);
27
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
28
+ fs.copyFileSync(bak, dest);
29
+ }
30
+
31
+ fs.rmSync(backupRoot, { recursive: true, force: true });
32
+ console.log('postpack-casca: working tree restaurado');
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Overlay da casca no tarball 2.3.0. O working tree permanece com o miolo
4
+ * (fonte do pack.py --stage-core). prepack troca só o que viaja no npm.
5
+ */
6
+ import fs from 'node:fs';
7
+ import path from 'node:path';
8
+ import { fileURLToPath } from 'node:url';
9
+
10
+ const root = fs.realpathSync(path.join(path.dirname(fileURLToPath(import.meta.url)), '..'));
11
+ const cascaRoot = path.join(root, 'casca');
12
+ const backupRoot = path.join(root, '.pack-casca-backup');
13
+
14
+ function walk(dir) {
15
+ const out = [];
16
+ if (!fs.existsSync(dir)) return out;
17
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
18
+ const full = path.join(dir, entry.name);
19
+ if (entry.isDirectory()) out.push(...walk(full));
20
+ else out.push(full);
21
+ }
22
+ return out;
23
+ }
24
+
25
+ if (fs.existsSync(backupRoot)) {
26
+ fs.rmSync(backupRoot, { recursive: true, force: true });
27
+ }
28
+
29
+ const files = walk(cascaRoot);
30
+ if (!files.length) {
31
+ console.error('casca/ vazia — recusando pack');
32
+ process.exit(1);
33
+ }
34
+
35
+ for (const src of files) {
36
+ const rel = path.relative(cascaRoot, src);
37
+ const dest = path.join(root, rel);
38
+ if (fs.existsSync(dest)) {
39
+ const bak = path.join(backupRoot, rel);
40
+ fs.mkdirSync(path.dirname(bak), { recursive: true });
41
+ fs.copyFileSync(dest, bak);
42
+ }
43
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
44
+ fs.copyFileSync(src, dest);
45
+ }
46
+
47
+ console.log(`prepack-casca: ${files.length} arquivos sobrepostos`);
@@ -14,6 +14,8 @@ const requiredPaths = [
14
14
  '.auroq-core/constitution.md',
15
15
  '.auroq-core/core-config.yaml',
16
16
  '.claude/CLAUDE.md',
17
+ '.claude/output-styles/direto.md',
18
+ '.claude/rules/operacao-autonoma.md',
17
19
  '.claude/commands',
18
20
  '.claude/rules',
19
21
  '.synapse/manifest',
@@ -1,193 +0,0 @@
1
- # Sistema de Gestao de Projetos — Auroq OS
2
-
3
- > Como o expert opera seu negocio via projetos dentro do Auroq OS.
4
- > Fundamentacao: 10 mestres (Allen/GTD, Sutherland/Scrum, Goldratt/TOC, Drucker, Ohno/TPS, Cohn, Appelo, Gawande, Cagan, Deming)
5
-
6
- ---
7
-
8
- ## Problema que Resolve
9
-
10
- Expert operando com IA tem um problema novo: muitas possibilidades, muita velocidade, muita coisa rodando ao mesmo tempo. Sem sistema:
11
- - Perde visao do todo (o que ta rodando?)
12
- - Agentes trabalham sem saber o que outros fizeram
13
- - Projetos ficam pendurados sem conclusao
14
- - Ideias se misturam com compromissos
15
- - Nao tem historico de decisoes
16
-
17
- ---
18
-
19
- ## 10 Principios
20
-
21
- | # | Principio | Mestre | No Auroq OS |
22
- |---|-----------|--------|-------------|
23
- | 1 | **Capturar tudo, processar depois** | Allen (GTD) | Inbox → Companion classifica |
24
- | 2 | **Limitar trabalho em progresso** | Goldratt (TOC) | Max 3 projetos ativos. Sem excecao |
25
- | 3 | **Puxar, nao empurrar** | Ohno (TPS) | Agentes leem tracker e puxam trabalho |
26
- | 4 | **Processo sem dono esta morto** | Drucker | Toda tarefa tem dono (agente ou pessoa) |
27
- | 5 | **Checklists em pontos criticos** | Gawande | Weekly review = 6-item DO-CONFIRM |
28
- | 6 | **Melhoria continua** | Deming (PDSA) | Todo projeto termina com retro (3 perguntas) |
29
- | 7 | **Medir resultados, nao outputs** | Cagan | Metricas = outcomes, nao task count |
30
- | 8 | **Transparencia e ritmo** | Sutherland | Tracker visivel, weekly review e o ritmo |
31
- | 9 | **Estimar com honestidade** | Cohn | Deadlines reais, next action explicita |
32
- | 10 | **Sistema remove atrito** | Appelo | Agentes auto-orientam, expert valida |
33
-
34
- ---
35
-
36
- ## Arquitetura de 4 Camadas
37
-
38
- ```
39
- CAMADA 4 — INBOX
40
- "O que eu pensei / preciso resolver?"
41
- ↓ Companion captura e classifica
42
-
43
- CAMADA 3 — COCKPIT
44
- "O que ta rodando na empresa?" (Fonte unica de verdade)
45
- ↓ cada projeto ativo usa
46
-
47
- CAMADA 2 — PLAYBOOKS
48
- "Como se faz isso?" (Receita reutilizavel)
49
- ↓ quando o processo roda de verdade
50
-
51
- CAMADA 1 — TRACKERS
52
- "Onde estamos AGORA nesse que ta rodando?"
53
- ```
54
-
55
- ### Camada 4: Inbox
56
- - Ideias brutas capturadas pelo Companion
57
- - Nao sao projetos — sao possibilidades
58
- - Processadas no weekly review: sobe pra fila, congela, ou descarta
59
- - Vive no cockpit, secao INBOX
60
-
61
- ### Camada 3: Cockpit (`business/cockpit.md`)
62
- - Fonte UNICA de verdade sobre projetos
63
- - 7 secoes: ATIVOS (max 3), FILA, INBOX, CONGELADOS, OPERACOES, ARQUIVO, REGRAS
64
- - Mantido pelo Companion, validado pelo expert
65
- - Todo agente consulta antes de trabalhar
66
-
67
- ### Camada 2: Playbooks (`business/processos/`)
68
- - Receitas reutilizaveis (como fazer lancamento, como rodar campanha, etc.)
69
- - Criados apos fazer pela primeira vez (pavimentar → documentar → reutilizar)
70
- - Referenciados nos trackers
71
-
72
- ### Camada 1: Trackers (`business/campanhas/{projeto}/tracker.md`)
73
- - Execucao ao vivo do projeto
74
- - Fases, tarefas, dependencias, blockers, log, metricas, retro
75
- - Todo agente le ANTES de trabalhar e atualiza DEPOIS
76
- - Template padrao em `business/templates/tracker-template.md`
77
-
78
- ---
79
-
80
- ## Ciclo de Vida do Projeto
81
-
82
- ```
83
- IDEIA (inbox) → FILA (priorizada) → ATIVO (max 3) → CONCLUIDO (arquivo)
84
- ↕
85
- CONGELADO (someday)
86
- ```
87
-
88
- ### Nasce
89
- 1. Ideia capturada no inbox (pelo expert ou Companion)
90
- 2. Weekly review processa: vira projeto na fila ou descarta
91
- 3. Quando vaga abre (ativo sai), primeiro da fila entra
92
-
93
- ### Vive
94
- 1. Tracker criado (do template)
95
- 2. Fases e tarefas definidas
96
- 3. Agentes puxam trabalho (pull, nao push)
97
- 4. Log atualizado a cada acao
98
- 5. Blockers registrados imediatamente
99
-
100
- ### Morre
101
- 1. Ultima tarefa da ultima fase concluida
102
- 2. Metricas preenchidas
103
- 3. Retro feita (3 perguntas)
104
- 4. Move pro ARQUIVO no cockpit
105
- 5. Vaga abre — proximo da fila entra
106
-
107
- ---
108
-
109
- ## Protocolo de Agentes
110
-
111
- **Regra global** (`rules/project-tracker-protocol.md`):
112
-
113
- ### ANTES de trabalhar
114
- 1. Ler tracker → entender onde estamos
115
- 2. Verificar dependencias → nao comecar bloqueado
116
- 3. Identificar sua tarefa → saber exatamente o que fazer
117
-
118
- ### DURANTE
119
- 4. Focar no escopo → fazer o que o tracker define
120
- 5. Registrar blockers novos → imediatamente
121
-
122
- ### DEPOIS
123
- 6. Marcar tarefas Done + data
124
- 7. Adicionar log (data — @agente: o que fez)
125
- 8. Se desbloqueou outra tarefa → visivel automaticamente
126
- 9. Se completou ultima tarefa da fase → marcar fase Done
127
-
128
- ---
129
-
130
- ## Weekly Review (Companion conduz)
131
-
132
- **Frequencia:** Semanal (7 dias). Force alert em 14 dias.
133
- **Duracao:** 20 minutos max.
134
-
135
- ### 4 Passos:
136
- 1. **Briefing** — Companion apresenta estado de todos os projetos
137
- 2. **DO-CONFIRM checklist** (6 itens):
138
- - Todo ativo tem next action?
139
- - Algum ativo parado 5+ dias?
140
- - Algum blocker sem acao?
141
- - Fila ordenada corretamente?
142
- - Inbox processado?
143
- - Operacoes continuas saudaveis?
144
- 3. **Update** — Atualizar cockpit e trackers
145
- 4. **Close** — Resumo e proxima data de review
146
-
147
- ---
148
-
149
- ## Escalacao Automatica (Companion monitora)
150
-
151
- | Condicao | Acao |
152
- |----------|------|
153
- | Blocker 3+ dias | Alertar expert |
154
- | Projeto sem movimento 5+ dias | Perguntar: congelar? |
155
- | Deadline em 7 dias | Marcar urgente |
156
- | Weekly review atrasado 7+ dias | Pull automatico |
157
- | Weekly review atrasado 14+ dias | Force alert |
158
-
159
- ---
160
-
161
- ## Anti-Padroes
162
-
163
- | Anti-padrao | Por que e ruim |
164
- |-------------|---------------|
165
- | Mais de 3 ativos | Context switching mata throughput |
166
- | Cockpit sem weekly review | Vira documento abandonado |
167
- | Tracker sem donos | Ninguem se responsabiliza |
168
- | 50+ tarefas por tracker | Ninguem le |
169
- | Ignorar blockers | Perpetua impedimentos |
170
- | Pular retro | Repete mesmos erros |
171
- | Tracker sem cockpit | Fragmenta de volta |
172
- | Criar tracker sem projeto no cockpit | Projeto fantasma |
173
-
174
- ---
175
-
176
- ## Mapa de Arquivos
177
-
178
- ```
179
- business/
180
- ├── cockpit.md ← Fonte unica de verdade
181
- ├── templates/
182
- │ └── tracker-template.md ← Molde de tracker
183
- ├── processos/
184
- │ └── {playbooks documentados}/ ← Receitas reutilizaveis
185
- └── campanhas/
186
- ├── _template/ ← Template de campanha
187
- └── {projeto-ativo}/
188
- └── tracker.md ← Execucao ao vivo
189
- ```
190
-
191
- ---
192
-
193
- *Sistema desenhado com fundamentacao nos 10 mestres. Adaptado para expert operando com SO de IA.*