@cccarv82/freya 2.20.0 → 3.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.
@@ -4,52 +4,98 @@ globs:
4
4
  alwaysApply: false
5
5
  ---
6
6
 
7
- # F.R.E.Y.A. - AI Agent System
7
+ # F.R.E.Y.A. AI Agent System
8
8
 
9
9
  To invoke the assistant, simply type: `@freya`
10
10
 
11
11
  <agent-entry>
12
12
  1. **Trigger:** User types `@freya` or mentions `@freya`.
13
- 2. **Action:** Load `@.agent/rules/freya/agents/master.mdc`.
13
+ 2. **Action:** Load `@.agent/rules/freya/agents/master.mdc` (Orchestrator).
14
14
  3. **Behavior (AUTO-INGEST OBRIGATÓRIO):**
15
- - Sempre que o usuário compartilhar contexto relevante (mensagens de chat, decisões, status, prints, trechos de e-mail, screenshots, etc.), o Master Agent **NÃO DEVE perguntar se deve registrar**.
16
- - O comportamento padrão é: interpretar o pedido e **disparar automaticamente o sub-módulo Ingestor** para registrar o contexto em:
17
- - `logs/daily/{YYYY-MM-DD}.md` (raw input + notas estruturadas),
18
- - **SQLite database** (`data/freya.sqlite`) via backend API (tasks, blockers, projects, career entries).
19
- - Primeiro registra, depois confirma ao usuário o que foi gravado (não pedir permissão prévia para criar logs ou tasks).
20
- - Se o usuário colar uma **imagem** (screenshot, print, foto), ela é salva automaticamente em `data/attachments/` e referenciada no daily log e no contexto da conversa.
15
+ - Sempre que o usuário compartilhar contexto relevante, o Orchestrator **NÃO DEVE perguntar se deve registrar**.
16
+ - O comportamento padrão é: interpretar, planejar, e executar automaticamente via a hierarquia de agentes.
21
17
  </agent-entry>
22
18
 
23
- <menu-display>
24
- If the user just types `@freya` or asks for help, display:
19
+ ## Architecture: Orchestrator → Super Agents → Utility Agents → Tools
25
20
 
26
21
  ```
27
- — F.R.E.Y.A. —
28
- Assistente Responsiva com Otimização Aprimorada
29
-
30
- Como posso ajudar você hoje?
31
-
32
- [1] Ingest Log (Status, Blockers, Career) -> Triggers @.agent/rules/freya/agents/ingestor.mdc
33
- [2] Oracle Query (Project History, Decisions) -> Triggers @.agent/rules/freya/agents/oracle.mdc
34
- [3] Career Coach (Brag Sheet, Goals) -> Triggers @.agent/rules/freya/agents/coach.mdc
35
- [4] General Assistance
22
+ ┌─────────┐
23
+ │ User │
24
+ └────┬────┘
25
+
26
+ ┌─────────▼─────────┐
27
+ │ ORCHESTRATOR │ master.mdc
28
+ │ (Plan + Route + │ Feedback loop: receives results,
29
+ │ Feedback Loop) │ decides next steps, synthesizes
30
+ └──┬─────────────┬──┘
31
+ │ │
32
+ ┌──────────▼──┐ ┌─────▼──────────┐
33
+ │ SM AGENT │ │ ANALYTICS AGENT │ ← Super Agents
34
+ │ (Scrum │ │ (Insights, │ Coordinate utility agents,
35
+ │ Master) │ │ Patterns, │ domain logic, enrichment
36
+ └──┬───────┬──┘ │ Career) │
37
+ │ │ └──┬──────────┬───┘
38
+ ┌─────────▼──┐ ┌──▼────┐ │ ┌──▼─────┐
39
+ │ INGESTOR │ │ ORACLE│ │ │ COACH │ ← Utility Agents
40
+ │ (Capture) │ │(Query)│◄─┘ │(Career)│ Single responsibility,
41
+ └─────┬─────┘ └───┬───┘ └───┬────┘ structured I/O
42
+ │ │ │
43
+ ┌─────▼───────────▼───────────────────▼────┐
44
+ │ TOOLS / FUNCTIONS │
45
+ │ ┌──────────┐ ┌───────────┐ ┌──────────┐ │
46
+ │ │ SQLite │ │Daily Logs │ │npm scripts│ │
47
+ │ │ (primary │ │ (context) │ │ (reports) │ │
48
+ │ │ store) │ │ │ │ │ │
49
+ │ └──────────┘ └───────────┘ └──────────┘ │
50
+ │ ┌──────────┐ ┌───────────┐ │
51
+ │ │ Copilot │ │Attachments│ │
52
+ │ │ CLI │ │ (images) │ │
53
+ │ └──────────┘ └───────────┘ │
54
+ └──────────────────────────────────────────┘
36
55
  ```
37
- </menu-display>
38
56
 
39
- ## Data Architecture
57
+ ## Agent Files
40
58
 
41
- - **Primary store:** SQLite database at `data/freya.sqlite` (tasks, blockers, projects, career, embeddings)
42
- - **Daily logs:** `logs/daily/YYYY-MM-DD.md` (raw input, chronological notes in Markdown)
43
- - **Attachments:** `data/attachments/` (screenshots, images pasted via Ctrl+V)
44
- - **Reports & docs:** `docs/**` (generated reports, hubs)
45
- - **Settings:** `data/settings/project-slug-map.json` (slug inference rules)
59
+ | Layer | Agent | File | Role |
60
+ |-------|-------|------|------|
61
+ | **Orchestrator** | Master | `agents/master.mdc` | Plans execution, routes to Super Agents, feedback loop, synthesis |
62
+ | **Super Agent** | SM Agent | `agents/sm-agent.mdc` | Scrum Master workflows: capture + retrieval coordination |
63
+ | **Super Agent** | Analytics | `agents/analytics-agent.mdc` | Insights, patterns, anomalies, career intelligence |
64
+ | **Utility** | Ingestor | `agents/ingestor.mdc` | Data capture: daily logs + entity extraction → SQLite |
65
+ | **Utility** | Oracle | `agents/oracle.mdc` | Data retrieval: SQLite + daily logs → structured results |
66
+ | **Utility** | Coach | `agents/coach.mdc` | Career analysis: brag sheets, feedback, goals |
46
67
 
47
- Regra: nunca gravar logs diários em data/ ou docs/. Nunca gravar dados estruturados em logs/.
68
+ ## Key Properties
69
+
70
+ - **Ação orientada por objetivos**: Orchestrator creates execution plans based on user intent
71
+ - **Raciocínio lógico e planejamento**: Multi-step plans with conditional branching
72
+ - **Memória de longo prazo e reflexão**: SQLite persistence + daily logs across sessions
73
+ - **Capacidades de comunicação**: Natural Portuguese (BR), Obsidian-compatible, structured responses
48
74
 
49
75
  ## Data Flow
50
76
 
51
- 1. User input → **daily log** (safe append, always first)
52
- 2. NLP extraction → **JSON schema** (structured events)
53
- 3. Backend API processes JSON **SQLite** (tasks, blockers, projects, career)
54
- 4. Oracle queries reads **daily logs** + **SQLite** for answers
55
- 5. Reports generated from **SQLite** data via npm scripts
77
+ ```
78
+ User input
79
+ Orchestrator (intent analysis + plan creation)
80
+ SM Agent (coordinates capture + retrieval)
81
+ Ingestor (safe log entity extraction SQLite)
82
+ → Oracle (SQLite query → daily log search → results)
83
+ → Analytics Agent (pattern detection + insights)
84
+ → Oracle (data gathering)
85
+ → Coach (career analysis)
86
+ ← Feedback loop (evaluate results, retry if needed)
87
+ → Orchestrator (synthesize + present to user)
88
+ ```
89
+
90
+ ## Data Architecture
91
+
92
+ - **Primary store:** SQLite (`data/freya.sqlite`) — tasks, blockers, projects, career, embeddings
93
+ - **Daily logs:** `logs/daily/YYYY-MM-DD.md` — raw input, chronological notes, Obsidian-compatible
94
+ - **Attachments:** `data/attachments/` — screenshots, images (Ctrl+V paste support)
95
+ - **Reports:** `docs/**` — generated reports, hubs
96
+ - **Settings:** `data/settings/project-slug-map.json` — slug inference rules
97
+
98
+ Rules:
99
+ - Never write daily logs to `data/` or `docs/`
100
+ - Never write structured data to `logs/`
101
+ - Never write to legacy JSON files (task-log.json, status.json, career-log.json)
package/cli/web-ui.css CHANGED
@@ -1279,134 +1279,6 @@ textarea:focus {
1279
1279
  background: rgba(0, 0, 0, .18);
1280
1280
  }
1281
1281
 
1282
- /* ── Image Lightbox Modal ── */
1283
- .img-lightbox {
1284
- display: none;
1285
- position: fixed;
1286
- inset: 0;
1287
- z-index: 10000;
1288
- background: rgba(0, 0, 0, 0.85);
1289
- backdrop-filter: blur(8px);
1290
- -webkit-backdrop-filter: blur(8px);
1291
- justify-content: center;
1292
- align-items: center;
1293
- cursor: zoom-out;
1294
- animation: lbFadeIn 0.15s ease;
1295
- }
1296
-
1297
- .img-lightbox.active {
1298
- display: flex;
1299
- }
1300
-
1301
- @keyframes lbFadeIn {
1302
- from { opacity: 0; }
1303
- to { opacity: 1; }
1304
- }
1305
-
1306
- .img-lightbox img {
1307
- max-width: 92vw;
1308
- max-height: 88vh;
1309
- border-radius: 10px;
1310
- box-shadow: 0 8px 40px rgba(0, 0, 0, 0.5);
1311
- object-fit: contain;
1312
- cursor: default;
1313
- animation: lbZoomIn 0.2s ease;
1314
- }
1315
-
1316
- @keyframes lbZoomIn {
1317
- from { transform: scale(0.9); opacity: 0; }
1318
- to { transform: scale(1); opacity: 1; }
1319
- }
1320
-
1321
- .img-lightbox-close {
1322
- position: absolute;
1323
- top: 16px;
1324
- right: 20px;
1325
- width: 36px;
1326
- height: 36px;
1327
- border-radius: 50%;
1328
- background: rgba(255, 255, 255, 0.12);
1329
- border: 1px solid rgba(255, 255, 255, 0.2);
1330
- color: #fff;
1331
- font-size: 20px;
1332
- cursor: pointer;
1333
- display: flex;
1334
- align-items: center;
1335
- justify-content: center;
1336
- transition: background 0.15s;
1337
- }
1338
-
1339
- .img-lightbox-close:hover {
1340
- background: rgba(255, 255, 255, 0.25);
1341
- }
1342
-
1343
- .img-lightbox-name {
1344
- position: absolute;
1345
- bottom: 16px;
1346
- left: 50%;
1347
- transform: translateX(-50%);
1348
- color: rgba(255, 255, 255, 0.7);
1349
- font-size: 12px;
1350
- background: rgba(0, 0, 0, 0.4);
1351
- padding: 4px 14px;
1352
- border-radius: 20px;
1353
- max-width: 80vw;
1354
- overflow: hidden;
1355
- text-overflow: ellipsis;
1356
- white-space: nowrap;
1357
- }
1358
-
1359
- /* ── Paste Preview Strip ── */
1360
- .paste-thumb {
1361
- position: relative;
1362
- display: inline-block;
1363
- }
1364
-
1365
- .paste-thumb-remove {
1366
- position: absolute;
1367
- top: -6px;
1368
- right: -6px;
1369
- width: 18px;
1370
- height: 18px;
1371
- border-radius: 50%;
1372
- background: var(--danger, #ef4444);
1373
- color: #fff;
1374
- border: none;
1375
- font-size: 12px;
1376
- line-height: 18px;
1377
- text-align: center;
1378
- cursor: pointer;
1379
- padding: 0;
1380
- box-shadow: 0 1px 3px rgba(0,0,0,0.3);
1381
- }
1382
-
1383
- .paste-thumb-remove:hover {
1384
- background: #dc2626;
1385
- transform: scale(1.1);
1386
- }
1387
-
1388
- /* ── Bubble Attachments (images in chat) ── */
1389
- .bubble-attachments {
1390
- margin-top: 8px;
1391
- display: flex;
1392
- gap: 6px;
1393
- flex-wrap: wrap;
1394
- }
1395
-
1396
- .bubble-img {
1397
- max-height: 120px;
1398
- max-width: 200px;
1399
- border-radius: 8px;
1400
- border: 1px solid var(--border);
1401
- cursor: pointer;
1402
- transition: transform 0.15s ease;
1403
- }
1404
-
1405
- .bubble-img:hover {
1406
- transform: scale(1.05);
1407
- box-shadow: 0 2px 8px rgba(0,0,0,0.15);
1408
- }
1409
-
1410
1282
  .chatComposer {
1411
1283
  display: none;
1412
1284
  }
@@ -1741,10 +1613,6 @@ textarea:focus {
1741
1613
  font-size: 11px;
1742
1614
  }
1743
1615
 
1744
- * {
1745
- border-radius: 0 !important;
1746
- }
1747
-
1748
1616
  /* ── Kanban Board ── */
1749
1617
  .kanban-board {
1750
1618
  display: grid;