@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.
- package/.agent/rules/freya/agents/analytics-agent.mdc +161 -0
- package/.agent/rules/freya/agents/coach.mdc +94 -62
- package/.agent/rules/freya/agents/ingestor.mdc +99 -101
- package/.agent/rules/freya/agents/master.mdc +140 -67
- package/.agent/rules/freya/agents/oracle.mdc +111 -99
- package/.agent/rules/freya/agents/sm-agent.mdc +133 -0
- package/.agent/rules/freya/freya.mdc +78 -32
- package/cli/web-ui.css +0 -132
- package/cli/web-ui.js +156 -211
- package/cli/web.js +52 -93
- package/package.json +1 -1
- package/templates/base/.agent/rules/freya/agents/analytics-agent.mdc +161 -0
- package/templates/base/.agent/rules/freya/agents/coach.mdc +94 -62
- package/templates/base/.agent/rules/freya/agents/ingestor.mdc +99 -101
- package/templates/base/.agent/rules/freya/agents/master.mdc +140 -67
- package/templates/base/.agent/rules/freya/agents/oracle.mdc +111 -99
- package/templates/base/.agent/rules/freya/agents/sm-agent.mdc +133 -0
- package/templates/base/.agent/rules/freya/freya.mdc +78 -32
|
@@ -4,52 +4,98 @@ globs:
|
|
|
4
4
|
alwaysApply: false
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# F.R.E.Y.A.
|
|
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
|
|
16
|
-
- O comportamento padrão é: interpretar
|
|
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
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
##
|
|
57
|
+
## Agent Files
|
|
40
58
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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;
|