@creative-ia/cortex 1.0.5

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 (64) hide show
  1. package/README.md +41 -0
  2. package/dist/config/cloud-proxy.d.ts +15 -0
  3. package/dist/config/cloud-proxy.js +63 -0
  4. package/dist/config/cloudwatch-store.d.ts +13 -0
  5. package/dist/config/cloudwatch-store.js +66 -0
  6. package/dist/config/license.d.ts +29 -0
  7. package/dist/config/license.js +165 -0
  8. package/dist/config/ssm-store.d.ts +2 -0
  9. package/dist/config/ssm-store.js +38 -0
  10. package/dist/config/telemetry.d.ts +17 -0
  11. package/dist/config/telemetry.js +93 -0
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.js +460 -0
  14. package/dist/knowledge/dynamo-store.d.ts +17 -0
  15. package/dist/knowledge/dynamo-store.js +85 -0
  16. package/dist/knowledge/embeddings.d.ts +2 -0
  17. package/dist/knowledge/embeddings.js +36 -0
  18. package/dist/knowledge/loader.d.ts +8 -0
  19. package/dist/knowledge/loader.js +57 -0
  20. package/dist/lambda-package.zip +0 -0
  21. package/dist/lambda.d.ts +22 -0
  22. package/dist/lambda.js +496 -0
  23. package/dist/package.json +1 -0
  24. package/dist/tools/advance-process.d.ts +7 -0
  25. package/dist/tools/advance-process.js +128 -0
  26. package/dist/tools/analyze-code.d.ts +7 -0
  27. package/dist/tools/analyze-code.js +131 -0
  28. package/dist/tools/analyze-docs.d.ts +8 -0
  29. package/dist/tools/analyze-docs.js +147 -0
  30. package/dist/tools/config-registry.d.ts +3 -0
  31. package/dist/tools/config-registry.js +20 -0
  32. package/dist/tools/create-process.d.ts +6 -0
  33. package/dist/tools/create-process.js +257 -0
  34. package/dist/tools/decompose-epic.d.ts +7 -0
  35. package/dist/tools/decompose-epic.js +603 -0
  36. package/dist/tools/diagrams.d.ts +51 -0
  37. package/dist/tools/diagrams.js +304 -0
  38. package/dist/tools/generate-report.d.ts +9 -0
  39. package/dist/tools/generate-report.js +891 -0
  40. package/dist/tools/generate-wiki.d.ts +10 -0
  41. package/dist/tools/generate-wiki.js +700 -0
  42. package/dist/tools/get-architecture.d.ts +6 -0
  43. package/dist/tools/get-architecture.js +78 -0
  44. package/dist/tools/get-code-standards.d.ts +7 -0
  45. package/dist/tools/get-code-standards.js +52 -0
  46. package/dist/tools/init-process.d.ts +7 -0
  47. package/dist/tools/init-process.js +82 -0
  48. package/dist/tools/knowledge-crud.d.ts +26 -0
  49. package/dist/tools/knowledge-crud.js +142 -0
  50. package/dist/tools/logo-base64.d.ts +1 -0
  51. package/dist/tools/logo-base64.js +1 -0
  52. package/dist/tools/logs-query.d.ts +15 -0
  53. package/dist/tools/logs-query.js +46 -0
  54. package/dist/tools/reverse-engineer.d.ts +13 -0
  55. package/dist/tools/reverse-engineer.js +956 -0
  56. package/dist/tools/semantic-search.d.ts +7 -0
  57. package/dist/tools/semantic-search.js +68 -0
  58. package/dist/tools/update-process.d.ts +17 -0
  59. package/dist/tools/update-process.js +195 -0
  60. package/dist/tools/validate-idea.d.ts +7 -0
  61. package/dist/tools/validate-idea.js +339 -0
  62. package/dist/tools/validate-process.d.ts +6 -0
  63. package/dist/tools/validate-process.js +102 -0
  64. package/package.json +31 -0
@@ -0,0 +1,257 @@
1
+ /**
2
+ * Tool: create_process
3
+ * Cria esqueleto de processo a partir de linguagem natural.
4
+ *
5
+ * Recebe uma frase como "Criar processo de arquitetura de software para jornada PIX"
6
+ * e executa:
7
+ * 1. Extrai título, stakeholder, descrição
8
+ * 2. Inicializa processo (DynamoDB + template local)
9
+ * 3. Retorna esqueleto com conteúdo dos arquivos locais para criação pelo MCP client
10
+ *
11
+ * O parecer de viabilidade (02-parecer) é gerado APÓS o stakeholder estar completo,
12
+ * via fluxo interativo no client-side (Koa).
13
+ */
14
+ import { initProcess } from "./init-process.js";
15
+ function slugify(text) {
16
+ return text
17
+ .toLowerCase()
18
+ .normalize("NFD")
19
+ .replace(/[\u0300-\u036f]/g, "")
20
+ .replace(/[^a-z0-9]+/g, "-")
21
+ .replace(/^-|-$/g, "");
22
+ }
23
+ /**
24
+ * Extrai título, descrição e contexto de uma frase em linguagem natural.
25
+ */
26
+ function parsePrompt(prompt) {
27
+ const lower = prompt.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "");
28
+ let cleaned = prompt
29
+ .replace(/^(criar|iniciar|gerar|montar|preparar)\s+(um\s+)?(novo\s+)?(processo\s+)?(de\s+)?/i, "")
30
+ .replace(/^(create|start|generate)\s+(a\s+)?(new\s+)?(process\s+)?(for\s+)?/i, "")
31
+ .trim();
32
+ if (cleaned.length > 0) {
33
+ cleaned = cleaned.charAt(0).toUpperCase() + cleaned.slice(1);
34
+ }
35
+ let title = cleaned;
36
+ let description = cleaned;
37
+ const paraIdx = lower.indexOf(" para ");
38
+ if (paraIdx > 10) {
39
+ title = cleaned.slice(0, paraIdx).trim();
40
+ description = cleaned;
41
+ }
42
+ if (title.length > 80) {
43
+ title = title.slice(0, 77) + "...";
44
+ }
45
+ return { title, description, ideaText: prompt };
46
+ }
47
+ /**
48
+ * Gera conteúdo dos arquivos locais do processo.
49
+ * Retorna blocos marcados com <!-- CREATE_FILE: path --> para o MCP client criar.
50
+ */
51
+ function generateLocalFiles(uuid, title, description, stakeholder, slug) {
52
+ const date = new Date().toISOString().slice(0, 10);
53
+ const basePath = `orquestrador/creative-main/process/${uuid}`;
54
+ const readmeContent = `# Processo ${uuid} — ${title}
55
+
56
+ - **UUID:** ${uuid}
57
+ - **Data:** ${date}
58
+ - **Status:** Stakeholder [pending] → Intake [pending] → Épicos [pending] → Estratégia [pending] → Execução [pending]
59
+ - **Stakeholder:** ${stakeholder}
60
+ - **Versão:** v1.0.0
61
+
62
+ ## Descrição
63
+
64
+ ${description}
65
+
66
+ ## Documentos
67
+
68
+ | # | Arquivo | Fase | Status |
69
+ |---|---------|------|--------|
70
+ | 1 | [01-stakeholder-${slug}.md](./01-stakeholder-${slug}.md) | Stakeholder — Formulário de Intake | pending |
71
+
72
+ ## Workflow (obrigatório, sequencial)
73
+
74
+ \`\`\`
75
+ Stakeholder (01) → Intake (02) → Épicos (03) → Estratégia (04/05) → Execução
76
+ \`\`\`
77
+
78
+ > Nenhuma fase pode ser pulada. Artefatos de fases posteriores são INVÁLIDOS se fases anteriores estiverem incompletas.`;
79
+ const stakeholderContent = `# Formulário de Intake — Stakeholder
80
+
81
+ > Processo: ${uuid}
82
+ > Solicitante: ${stakeholder}
83
+ > Data: ${date}
84
+ > Status: draft
85
+
86
+ ---
87
+
88
+ ## 1. Visão Geral
89
+
90
+ ### 1.1 Qual o problema ou oportunidade?
91
+
92
+ ${description}
93
+
94
+ ### 1.2 Qual o contexto atual?
95
+
96
+ <!-- Descrever: sistemas existentes, integrações atuais, plataformas envolvidas, dependências -->
97
+
98
+ ### 1.3 Quem são os usuários finais?
99
+
100
+ <!-- Descrever: perfil dos usuários, segmentos, volume estimado -->
101
+
102
+ ---
103
+
104
+ ## 2. Fluxo Principal (Happy Path)
105
+
106
+ <!-- Descrever o fluxo principal da jornada do usuário, passo a passo -->
107
+
108
+ ### Jornadas secundárias
109
+
110
+ <!-- Listar jornadas alternativas ou complementares -->
111
+
112
+ ---
113
+
114
+ ## 3. Integrações
115
+
116
+ | Sistema | Tipo | Status | Observação |
117
+ |---------|------|--------|------------|
118
+ | <!-- Sistema --> | Interno/Externo | Existente/A definir | <!-- Obs --> |
119
+
120
+ ---
121
+
122
+ ## 4. Restrições e Compliance
123
+
124
+ | Tipo | Descrição |
125
+ |------|-----------|
126
+ | Regulatório | A definir |
127
+ | Compliance | A definir |
128
+ | Segurança | A definir |
129
+ | Prazo | A definir |
130
+ | Técnica | A definir |
131
+
132
+ ---
133
+
134
+ ## 5. Plataformas
135
+
136
+ - [ ] Mobile (iOS + Android)
137
+ - [ ] Web
138
+ - [ ] Ambas (Omnichannel)
139
+
140
+ ---
141
+
142
+ ## 6. KPIs e Resultados Esperados
143
+
144
+ | KPI | Meta | Observação |
145
+ |-----|------|------------|
146
+ | <!-- KPI --> | <!-- Meta --> | <!-- Obs --> |
147
+
148
+ ---
149
+
150
+ ## 7. Referências de Benchmark
151
+
152
+ <!-- Produtos similares no mercado, concorrentes, referências -->
153
+
154
+ ---
155
+
156
+ ## 8. Prioridade Percebida
157
+
158
+ > A definir pelo stakeholder
159
+
160
+ ---
161
+
162
+ ## 9. Tech Stack
163
+
164
+ > Definido na fase de coleta técnica. Preencher após validação do contexto de negócio.
165
+
166
+ | Camada | Tecnologia | Justificativa |
167
+ |--------|-----------|---------------|
168
+ | <!-- Camada --> | <!-- Tech --> | <!-- Justificativa --> |`;
169
+ const knowledgeContent = JSON.stringify({
170
+ process_id: uuid,
171
+ version: "1.0.0",
172
+ title: `Knowledge Base — ${title}`,
173
+ created_at: date,
174
+ updated_at: date,
175
+ status: "iniciado",
176
+ meetings: [],
177
+ decisions: [],
178
+ questions: [],
179
+ context: [],
180
+ learnings: [],
181
+ }, null, 2);
182
+ const orchestrationContent = JSON.stringify({
183
+ process_id: uuid,
184
+ version: "1.0.0",
185
+ created_at: date,
186
+ phases: {
187
+ stakeholder: { status: "pending", started_at: null, completed_at: null },
188
+ intake: { status: "pending", started_at: null, completed_at: null },
189
+ epics: { status: "pending", started_at: null, completed_at: null },
190
+ strategy: { status: "pending", started_at: null, completed_at: null },
191
+ execution: { status: "pending", started_at: null, completed_at: null },
192
+ },
193
+ repos: [],
194
+ sessions: [],
195
+ }, null, 2);
196
+ const files = [
197
+ { path: `${basePath}/README.md`, content: readmeContent },
198
+ { path: `${basePath}/01-stakeholder-${slug}.md`, content: stakeholderContent },
199
+ { path: `${basePath}/knowledge.json`, content: knowledgeContent },
200
+ { path: `${basePath}/orchestration.json`, content: orchestrationContent },
201
+ ];
202
+ const blocks = [
203
+ "",
204
+ "---",
205
+ "",
206
+ "## 📁 Arquivos Locais (criar automaticamente)",
207
+ "",
208
+ `> Diretório base: \`${basePath}/\``,
209
+ "",
210
+ ];
211
+ for (const f of files) {
212
+ const ext = f.path.endsWith(".json") ? "json" : "markdown";
213
+ blocks.push(`<!-- CREATE_FILE: ${f.path} -->`);
214
+ blocks.push("```" + ext);
215
+ blocks.push(f.content);
216
+ blocks.push("```");
217
+ blocks.push("");
218
+ }
219
+ return blocks.join("\n");
220
+ }
221
+ export async function createProcess(params) {
222
+ const { prompt, stakeholder } = params;
223
+ const parsed = parsePrompt(prompt);
224
+ const slug = slugify(parsed.title);
225
+ const out = [];
226
+ const errors = [];
227
+ // --- Step 1: Init Process (DynamoDB) ---
228
+ let processResult;
229
+ let uuid = "";
230
+ try {
231
+ processResult = await initProcess({
232
+ title: parsed.title,
233
+ stakeholder: stakeholder || "A definir",
234
+ description: parsed.description,
235
+ });
236
+ // Extrai UUID do output do initProcess
237
+ const uuidMatch = processResult.match(/Initialized:\s*([a-f0-9]{8})/);
238
+ uuid = uuidMatch ? uuidMatch[1] : crypto.randomUUID().slice(0, 8);
239
+ out.push(processResult);
240
+ }
241
+ catch (err) {
242
+ errors.push(`[init_process] ${String(err)}`);
243
+ processResult = "";
244
+ uuid = crypto.randomUUID().slice(0, 8);
245
+ }
246
+ out.push("\n---\n");
247
+ // --- Step 2: Gera conteúdo dos arquivos locais (esqueleto) ---
248
+ const localFiles = generateLocalFiles(uuid, parsed.title, parsed.description, stakeholder || "A definir", slug);
249
+ out.push(localFiles);
250
+ // --- Errors summary ---
251
+ if (errors.length > 0) {
252
+ out.push("\n### ⚠️ Erros no pipeline:");
253
+ for (const e of errors)
254
+ out.push(`- ${e}`);
255
+ }
256
+ return out.join("\n");
257
+ }
@@ -0,0 +1,7 @@
1
+ interface DecomposeEpicRequest {
2
+ processId: string;
3
+ epicId: string;
4
+ processDir: string;
5
+ }
6
+ export declare function decomposeEpic(params: DecomposeEpicRequest): Promise<string>;
7
+ export {};