@cccarv82/freya 1.0.53 → 1.0.55
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/oracle.mdc +13 -1
- package/README.md +1 -1
- package/cli/web-ui.css +133 -75
- package/cli/web-ui.js +2 -2
- package/cli/web.js +90 -86
- package/package.json +2 -2
- package/scripts/generate-executive-report.js +195 -6
- package/templates/base/.agent/rules/freya/agents/oracle.mdc +14 -1
- package/templates/base/README.md +61 -2
- package/templates/base/USER_GUIDE.md +38 -1
- package/templates/base/scripts/generate-executive-report.js +195 -6
|
@@ -25,6 +25,12 @@ Do not invent status updates.
|
|
|
25
25
|
* **Keywords:** "Tarefa", "Task", "To-Do", "Fazer", "Agenda", "Delegado".
|
|
26
26
|
* **Target File:** `data/tasks/task-log.json`.
|
|
27
27
|
* **Action:** Read file directly.
|
|
28
|
+
* **If Daily Log Query:**
|
|
29
|
+
* **Keywords:** "log diário", "diário", "daily log", "anotações", "o que anotei", "ontem", "hoje", "semana passada".
|
|
30
|
+
* **Target Folder:** `logs/daily/`.
|
|
31
|
+
* **If date provided:** Read `logs/daily/YYYY-MM-DD.md`.
|
|
32
|
+
* **If date is relative (hoje/ontem):** Resolve to an exact date and read the matching file.
|
|
33
|
+
* **If no specific date or file missing:** Route to **Search** across `logs/daily/` (or ask the user to refine the date). If Search is unavailable, say you have no records for that date and offer to list available log dates.
|
|
28
34
|
* **If Project Query:**
|
|
29
35
|
* Proceed to Project Lookup (Glob search).
|
|
30
36
|
* **Strategy:** Search recursively in `data/Clients`.
|
|
@@ -46,7 +52,13 @@ Do not invent status updates.
|
|
|
46
52
|
* **Context:** "Aqui estão suas tarefas pendentes [{Category}]:"
|
|
47
53
|
* **List:** Bullet points.
|
|
48
54
|
* Format: `* [ID-Short] {Description} ({Priority})`
|
|
49
|
-
|
|
55
|
+
* **Empty:** "Você não tem tarefas pendentes nesta categoria."
|
|
56
|
+
|
|
57
|
+
* **Daily Log Logic:**
|
|
58
|
+
* Read the Markdown file from `logs/daily/YYYY-MM-DD.md`.
|
|
59
|
+
* Return a concise excerpt (first few meaningful lines or bullet points).
|
|
60
|
+
* If the file is empty, say: "Log registrado sem detalhes para essa data."
|
|
61
|
+
* If the file does not exist: "Não encontrei log diário para esta data."
|
|
50
62
|
|
|
51
63
|
* **Project Logic:**
|
|
52
64
|
* If matches found: Read the `status.json` file(s).
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ F.R.E.Y.A. é um sistema de agentes de IA projetado para organizar seu trabalho,
|
|
|
8
8
|
|
|
9
9
|
* **Ingestão Universal:** Registre updates, blockers e notas mentais em linguagem natural.
|
|
10
10
|
* **Gestão de Tarefas:** Crie, liste e conclua tarefas ("Lembre-me de fazer X", "Minhas tarefas", "Terminei X").
|
|
11
|
-
* **Oráculo:** Pergunte sobre o status de qualquer projeto ("Como está o projeto X?").
|
|
11
|
+
* **Oráculo:** Pergunte sobre o status de qualquer projeto ("Como está o projeto X?") e recupere logs diários ("O que anotei ontem?").
|
|
12
12
|
* **Career Coach:** Gere "Brag Sheets" automáticas para suas avaliações de desempenho.
|
|
13
13
|
* **Relatórios Automatizados:** Gere resumos semanais, dailies, relatório de Scrum Master e relatórios executivos.
|
|
14
14
|
* **Blockers & Riscos:** Gere um relatório rápido de blockers priorizados por severidade.
|
package/cli/web-ui.css
CHANGED
|
@@ -28,16 +28,18 @@
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
[data-theme="dark"] {
|
|
31
|
-
--bg: #
|
|
32
|
-
--paper: rgba(
|
|
33
|
-
--paper2: rgba(
|
|
34
|
-
--line: rgba(
|
|
35
|
-
--line2: rgba(
|
|
31
|
+
--bg: #0f1113;
|
|
32
|
+
--paper: rgba(20, 22, 25, .98);
|
|
33
|
+
--paper2: rgba(27, 30, 34, .92);
|
|
34
|
+
--line: rgba(255, 255, 255, .08);
|
|
35
|
+
--line2: rgba(255, 255, 255, .18);
|
|
36
36
|
--text: #e5e7eb;
|
|
37
|
-
--muted: rgba(229, 231, 235, .
|
|
38
|
-
--faint: rgba(229, 231, 235, .
|
|
39
|
-
--chip: rgba(
|
|
40
|
-
--chip2: rgba(
|
|
37
|
+
--muted: rgba(229, 231, 235, .72);
|
|
38
|
+
--faint: rgba(229, 231, 235, .50);
|
|
39
|
+
--chip: rgba(45, 212, 191, .15);
|
|
40
|
+
--chip2: rgba(56, 189, 248, .18);
|
|
41
|
+
--accent: #2dd4bf;
|
|
42
|
+
--primary: #22d3ee;
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
* { box-sizing: border-box; }
|
|
@@ -62,13 +64,14 @@
|
|
|
62
64
|
body {
|
|
63
65
|
margin: 0;
|
|
64
66
|
font-family: var(--sans);
|
|
65
|
-
background:
|
|
66
|
-
radial-gradient(900px 400px at 12% 0%, rgba(249,115,22,.12), transparent 60%),
|
|
67
|
-
radial-gradient(900px 450px at 90% 8%, rgba(37,99,235,.14), transparent 60%),
|
|
68
|
-
var(--bg);
|
|
67
|
+
background: var(--bg);
|
|
69
68
|
color: var(--text);
|
|
70
69
|
}
|
|
71
70
|
|
|
71
|
+
[data-theme="dark"] body {
|
|
72
|
+
background: radial-gradient(800px 360px at 65% 10%, rgba(45,212,191,.10), transparent 55%), var(--bg);
|
|
73
|
+
}
|
|
74
|
+
|
|
72
75
|
.app { padding: 18px; }
|
|
73
76
|
|
|
74
77
|
.frame {
|
|
@@ -78,45 +81,68 @@ body {
|
|
|
78
81
|
overflow: hidden;
|
|
79
82
|
box-shadow: var(--shadow);
|
|
80
83
|
border: 1px solid var(--line);
|
|
81
|
-
background:
|
|
84
|
+
background: var(--paper2);
|
|
82
85
|
}
|
|
83
86
|
|
|
84
87
|
.shell {
|
|
85
88
|
display: grid;
|
|
86
|
-
grid-template-columns:
|
|
89
|
+
grid-template-columns: 72px minmax(520px, 1fr) 360px;
|
|
87
90
|
height: calc(100vh - 36px);
|
|
88
91
|
min-height: 0;
|
|
89
92
|
}
|
|
90
93
|
|
|
91
94
|
@media (max-width: 1200px) {
|
|
92
|
-
.shell { grid-template-columns:
|
|
95
|
+
.shell { grid-template-columns: 72px 1fr; }
|
|
93
96
|
.chatPane { display: none; }
|
|
94
97
|
}
|
|
95
98
|
|
|
96
99
|
@media (max-width: 860px) {
|
|
97
100
|
.shell { grid-template-columns: 1fr; }
|
|
98
|
-
.
|
|
101
|
+
.rail { display: none; }
|
|
99
102
|
}
|
|
100
103
|
|
|
101
|
-
/* LEFT */
|
|
102
|
-
.
|
|
103
|
-
|
|
104
|
-
min-height: 0;
|
|
105
|
-
background: linear-gradient(180deg, rgba(255,250,242,.85), rgba(255,250,242,.60));
|
|
104
|
+
/* LEFT RAIL */
|
|
105
|
+
.rail {
|
|
106
|
+
background: var(--paper);
|
|
106
107
|
border-right: 1px solid var(--line);
|
|
107
|
-
|
|
108
|
+
display: flex;
|
|
109
|
+
flex-direction: column;
|
|
110
|
+
align-items: center;
|
|
111
|
+
padding: 16px 10px;
|
|
112
|
+
gap: 14px;
|
|
108
113
|
}
|
|
109
114
|
|
|
110
|
-
|
|
111
|
-
|
|
115
|
+
.railTop { display: flex; align-items: center; justify-content: center; width: 100%; }
|
|
116
|
+
.railLogo {
|
|
117
|
+
width: 38px;
|
|
118
|
+
height: 38px;
|
|
119
|
+
border-radius: 14px;
|
|
120
|
+
background: rgba(45, 212, 191, .18);
|
|
121
|
+
color: var(--text);
|
|
122
|
+
display: grid;
|
|
123
|
+
place-items: center;
|
|
124
|
+
font-weight: 700;
|
|
125
|
+
font-size: 14px;
|
|
126
|
+
border: 1px solid var(--line2);
|
|
112
127
|
}
|
|
113
128
|
|
|
114
|
-
.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
129
|
+
.railNav { display: flex; flex-direction: column; gap: 10px; width: 100%; align-items: center; }
|
|
130
|
+
.railBtn {
|
|
131
|
+
width: 38px;
|
|
132
|
+
height: 38px;
|
|
133
|
+
border-radius: 12px;
|
|
134
|
+
border: 1px solid var(--line);
|
|
135
|
+
background: rgba(255,255,255,.04);
|
|
136
|
+
color: var(--muted);
|
|
137
|
+
display: grid;
|
|
138
|
+
place-items: center;
|
|
139
|
+
font-size: 12px;
|
|
140
|
+
cursor: pointer;
|
|
119
141
|
}
|
|
142
|
+
.railBtn.active { border-color: rgba(45,212,191,.5); color: var(--text); box-shadow: 0 0 0 1px rgba(45,212,191,.35); }
|
|
143
|
+
.railBtn:hover { border-color: var(--line2); }
|
|
144
|
+
.railBottom { margin-top: auto; padding-bottom: 6px; }
|
|
145
|
+
.railToggle { width: 44px; height: 44px; font-size: 11px; }
|
|
120
146
|
|
|
121
147
|
.sideHeader .logo {
|
|
122
148
|
font-weight: 900;
|
|
@@ -158,62 +184,102 @@ body {
|
|
|
158
184
|
width: 100%;
|
|
159
185
|
text-align: left;
|
|
160
186
|
border: 1px solid var(--line);
|
|
161
|
-
border-radius:
|
|
162
|
-
background:
|
|
187
|
+
border-radius: 12px;
|
|
188
|
+
background: rgba(0,0,0,.18);
|
|
163
189
|
padding: 10px 12px;
|
|
164
190
|
cursor: pointer;
|
|
165
191
|
display: flex;
|
|
166
192
|
align-items: center;
|
|
167
193
|
gap: 10px;
|
|
168
|
-
font-weight:
|
|
194
|
+
font-weight: 700;
|
|
169
195
|
color: var(--muted);
|
|
170
196
|
}
|
|
171
197
|
.miniCard:hover { border-color: var(--line2); box-shadow: var(--shadow2); }
|
|
172
198
|
|
|
173
199
|
.miniIcon {
|
|
174
|
-
width:
|
|
175
|
-
height:
|
|
176
|
-
border-radius:
|
|
200
|
+
width: 24px;
|
|
201
|
+
height: 24px;
|
|
202
|
+
border-radius: 8px;
|
|
177
203
|
display: grid;
|
|
178
204
|
place-items: center;
|
|
179
|
-
background:
|
|
205
|
+
background: rgba(45,212,191,.18);
|
|
180
206
|
border: 1px solid var(--line);
|
|
181
207
|
color: var(--primary);
|
|
182
|
-
font-weight:
|
|
208
|
+
font-weight: 800;
|
|
183
209
|
}
|
|
184
|
-
.miniIcon.warn { background:
|
|
210
|
+
.miniIcon.warn { background: rgba(56,189,248,.18); color: var(--accent); }
|
|
185
211
|
|
|
186
212
|
/* CENTER */
|
|
187
213
|
.center {
|
|
188
|
-
background:
|
|
214
|
+
background: transparent;
|
|
189
215
|
display: flex;
|
|
190
216
|
flex-direction: column;
|
|
191
217
|
min-height: 0;
|
|
218
|
+
padding: 8px 0 18px;
|
|
192
219
|
}
|
|
193
|
-
[data-theme="dark"] .center { background: rgba(10, 14, 26, .55); }
|
|
194
220
|
|
|
195
221
|
.topbar {
|
|
196
222
|
display: flex;
|
|
197
223
|
justify-content: space-between;
|
|
198
224
|
align-items: center;
|
|
199
|
-
padding:
|
|
200
|
-
|
|
201
|
-
background: linear-gradient(90deg, rgba(255,250,242,.75), rgba(255,250,242,.45));
|
|
225
|
+
padding: 16px 20px 10px;
|
|
226
|
+
background: transparent;
|
|
202
227
|
}
|
|
203
228
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
.brand {
|
|
207
|
-
.
|
|
208
|
-
.
|
|
209
|
-
.
|
|
210
|
-
|
|
211
|
-
.toggle { border: 1px solid var(--line); border-radius: 999px; background: var(--paper2); padding: 7px 10px; cursor: pointer; color: var(--muted); font-weight: 800; font-size: 12px; }
|
|
229
|
+
.brandLine { display: flex; align-items: center; gap: 12px; }
|
|
230
|
+
.brandStack { display: flex; flex-direction: column; gap: 2px; }
|
|
231
|
+
.brand { font-weight: 700; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
|
|
232
|
+
.brandSub { font-size: 12px; color: var(--faint); }
|
|
233
|
+
.spark { width: 10px; height: 10px; border-radius: 4px; background: linear-gradient(135deg, var(--accent), var(--primary)); box-shadow: 0 0 0 6px rgba(45,212,191,.10); }
|
|
234
|
+
.topActions { display: flex; align-items: center; gap: 10px; }
|
|
235
|
+
.chip { font-family: var(--mono); font-size: 12px; padding: 7px 10px; border-radius: 999px; border: 1px solid var(--line); background: rgba(0,0,0,.22); color: var(--faint); }
|
|
212
236
|
|
|
213
237
|
.centerBody {
|
|
214
|
-
padding: 16px;
|
|
238
|
+
padding: 16px 20px 20px;
|
|
215
239
|
overflow: auto;
|
|
216
240
|
min-height: 0;
|
|
241
|
+
display: flex;
|
|
242
|
+
flex-direction: column;
|
|
243
|
+
gap: 18px;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.promptShell { display: flex; justify-content: center; }
|
|
247
|
+
.promptBar {
|
|
248
|
+
width: min(720px, 100%);
|
|
249
|
+
background: var(--paper);
|
|
250
|
+
border: 1px solid var(--line);
|
|
251
|
+
border-radius: 16px;
|
|
252
|
+
padding: 14px;
|
|
253
|
+
display: flex;
|
|
254
|
+
flex-direction: column;
|
|
255
|
+
gap: 10px;
|
|
256
|
+
box-shadow: var(--shadow2);
|
|
257
|
+
}
|
|
258
|
+
.promptMeta { display: flex; justify-content: space-between; align-items: center; }
|
|
259
|
+
.promptTitle { font-size: 11px; text-transform: uppercase; letter-spacing: .2em; color: var(--faint); }
|
|
260
|
+
.promptActions { display: flex; gap: 10px; flex-wrap: wrap; }
|
|
261
|
+
.promptToggles { display: flex; gap: 14px; flex-wrap: wrap; }
|
|
262
|
+
|
|
263
|
+
.utilityGrid {
|
|
264
|
+
display: grid;
|
|
265
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
266
|
+
gap: 14px;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.utilityCard {
|
|
270
|
+
background: var(--paper);
|
|
271
|
+
border: 1px solid var(--line);
|
|
272
|
+
border-radius: 16px;
|
|
273
|
+
padding: 14px;
|
|
274
|
+
box-shadow: var(--shadow2);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.utilityHead {
|
|
278
|
+
font-size: 12px;
|
|
279
|
+
text-transform: uppercase;
|
|
280
|
+
letter-spacing: .18em;
|
|
281
|
+
color: var(--muted);
|
|
282
|
+
margin-bottom: 10px;
|
|
217
283
|
}
|
|
218
284
|
.centerHead { display: flex; justify-content: space-between; align-items: flex-end; gap: 18px; margin-bottom: 14px; }
|
|
219
285
|
.statusLine { display:flex; align-items:center; justify-content:flex-end; gap: 12px; }
|
|
@@ -257,21 +323,21 @@ h1 { margin: 0; font-size: 22px; letter-spacing: -.02em; }
|
|
|
257
323
|
|
|
258
324
|
/* FORMS */
|
|
259
325
|
label { display: block; font-size: 12px; color: var(--muted); margin-bottom: 6px; }
|
|
260
|
-
input { width: 100%; padding: 11px 12px; border-radius: 12px; border: 1px solid var(--line); background: rgba(
|
|
261
|
-
[data-theme="dark"] input { background: rgba(0,0,0,.
|
|
262
|
-
input:focus { box-shadow: var(--ring); border-color: rgba(
|
|
326
|
+
input { width: 100%; padding: 11px 12px; border-radius: 12px; border: 1px solid var(--line); background: rgba(0,0,0,.22); color: var(--text); outline: none; }
|
|
327
|
+
[data-theme="dark"] input { background: rgba(0,0,0,.22); }
|
|
328
|
+
input:focus { box-shadow: var(--ring); border-color: rgba(45,212,191,.35); }
|
|
263
329
|
textarea {
|
|
264
330
|
width: 100%;
|
|
265
331
|
padding: 10px 12px;
|
|
266
332
|
border-radius: 12px;
|
|
267
333
|
border: 1px solid var(--line);
|
|
268
|
-
background: rgba(
|
|
334
|
+
background: rgba(0,0,0,.22);
|
|
269
335
|
color: var(--text);
|
|
270
336
|
outline: none;
|
|
271
337
|
resize: vertical;
|
|
272
338
|
}
|
|
273
|
-
[data-theme="dark"] textarea { background: rgba(0,0,0,.
|
|
274
|
-
textarea:focus { box-shadow: var(--ring); border-color: rgba(
|
|
339
|
+
[data-theme="dark"] textarea { background: rgba(0,0,0,.22); }
|
|
340
|
+
textarea:focus { box-shadow: var(--ring); border-color: rgba(45,212,191,.35); }
|
|
275
341
|
|
|
276
342
|
.row { display: grid; grid-template-columns: 1fr auto; gap: 10px; align-items: center; }
|
|
277
343
|
.stack { display: flex; gap: 10px; flex-wrap: wrap; }
|
|
@@ -282,16 +348,16 @@ textarea:focus { box-shadow: var(--ring); border-color: rgba(37,99,235,.35); }
|
|
|
282
348
|
.btn {
|
|
283
349
|
border: 1px solid var(--line);
|
|
284
350
|
border-radius: 12px;
|
|
285
|
-
background:
|
|
351
|
+
background: rgba(0,0,0,.20);
|
|
286
352
|
padding: 10px 12px;
|
|
287
353
|
cursor: pointer;
|
|
288
|
-
font-weight:
|
|
354
|
+
font-weight: 700;
|
|
289
355
|
color: var(--muted);
|
|
290
356
|
}
|
|
291
357
|
|
|
292
358
|
.btn:hover { border-color: var(--line2); box-shadow: var(--shadow2); }
|
|
293
359
|
.btn.small { padding: 7px 10px; border-radius: 10px; font-size: 12px; }
|
|
294
|
-
.btn.primary { background: rgba(
|
|
360
|
+
.btn.primary { background: rgba(45,212,191,.18); border-color: rgba(45,212,191,.45); color: rgba(45,212,191,.95); }
|
|
295
361
|
.sideBtn { width: 100%; text-align: left; margin-top: 8px; }
|
|
296
362
|
|
|
297
363
|
.k {
|
|
@@ -329,18 +395,15 @@ textarea:focus { box-shadow: var(--ring); border-color: rgba(37,99,235,.35); }
|
|
|
329
395
|
/* RIGHT: CHAT */
|
|
330
396
|
.chatPane {
|
|
331
397
|
border-left: 1px solid var(--line);
|
|
332
|
-
background:
|
|
398
|
+
background: var(--paper);
|
|
333
399
|
display: grid;
|
|
334
|
-
grid-template-rows: auto 1fr
|
|
400
|
+
grid-template-rows: auto 1fr;
|
|
335
401
|
overflow: hidden;
|
|
336
402
|
min-height: 0;
|
|
337
403
|
}
|
|
338
|
-
[data-theme="dark"] .chatPane {
|
|
339
|
-
background: linear-gradient(180deg, rgba(17,24,39,.92), rgba(17,24,39,.68));
|
|
340
|
-
}
|
|
341
404
|
|
|
342
|
-
.chatHead { padding:
|
|
343
|
-
.chatTitle { font-weight:
|
|
405
|
+
.chatHead { padding: 18px 16px; border-bottom: 1px solid var(--line); }
|
|
406
|
+
.chatTitle { font-weight: 800; letter-spacing: -.01em; }
|
|
344
407
|
.chatSub { margin-top: 2px; font-size: 12px; color: var(--faint); }
|
|
345
408
|
|
|
346
409
|
.chatThread {
|
|
@@ -389,12 +452,7 @@ textarea:focus { box-shadow: var(--ring); border-color: rgba(37,99,235,.35); }
|
|
|
389
452
|
}
|
|
390
453
|
[data-theme="dark"] .bubble.assistant { background: rgba(0,0,0,.18); }
|
|
391
454
|
|
|
392
|
-
.chatComposer {
|
|
393
|
-
padding: 12px 14px 14px;
|
|
394
|
-
border-top: 1px solid var(--line);
|
|
395
|
-
background: rgba(255,250,242,.55);
|
|
396
|
-
}
|
|
397
|
-
[data-theme="dark"] .chatComposer { background: rgba(0,0,0,.12); }
|
|
455
|
+
.chatComposer { display: none; }
|
|
398
456
|
|
|
399
457
|
.composerActions { display: flex; gap: 10px; margin-top: 10px; flex-wrap: wrap; }
|
|
400
458
|
.composerToggles { margin-top: 10px; display: grid; gap: 6px; }
|
package/cli/web-ui.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
function toggleTheme() {
|
|
29
|
-
const t = localStorage.getItem('freya.theme') || '
|
|
29
|
+
const t = localStorage.getItem('freya.theme') || 'dark';
|
|
30
30
|
applyTheme(t === 'dark' ? 'light' : 'dark');
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -988,7 +988,7 @@
|
|
|
988
988
|
}
|
|
989
989
|
|
|
990
990
|
// init
|
|
991
|
-
applyTheme(localStorage.getItem('freya.theme') || '
|
|
991
|
+
applyTheme(localStorage.getItem('freya.theme') || 'dark');
|
|
992
992
|
$('chipPort').textContent = location.host;
|
|
993
993
|
loadLocal();
|
|
994
994
|
|