@danieltmn/tamnora 0.25.0 → 0.26.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 (110) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +13 -25
  3. package/SECURITY.md +3 -4
  4. package/harness/packages/cli/src/cli.js +0 -3
  5. package/harness/packages/cli/src/commands/bridge.js +0 -1
  6. package/harness/packages/cli/src/commands/repl.js +20 -4
  7. package/harness/packages/cli/src/commands/run.js +6 -2
  8. package/harness/packages/cli/src/commands/server.js +1 -1
  9. package/harness/packages/cli/src/commands/tui.js +6 -2
  10. package/harness/packages/cli/src/lib/runtime.js +2 -0
  11. package/harness/packages/cli/src/lib/util.js +2 -2
  12. package/harness/packages/cli/src/tui/app.js +24 -4
  13. package/harness/packages/cli/src/tui/layout.js +1 -1
  14. package/harness/packages/cli/test/tunnel.test.js +5 -32
  15. package/harness/packages/core/src/agent/runAgent.js +5 -2
  16. package/harness/packages/core/src/agents/index.js +113 -0
  17. package/harness/packages/core/src/config/app.js +0 -4
  18. package/harness/packages/core/src/config/home.js +1 -20
  19. package/harness/packages/core/src/config/index.js +6 -8
  20. package/harness/packages/core/src/extensions/load.js +22 -0
  21. package/harness/packages/core/src/frontmatter.js +32 -0
  22. package/harness/packages/core/src/hooks/index.js +2 -16
  23. package/harness/packages/core/src/index.js +12 -14
  24. package/harness/packages/core/src/plugins/index.js +2 -16
  25. package/harness/packages/core/src/procs/project.js +68 -0
  26. package/harness/packages/core/src/procs/static.js +17 -0
  27. package/harness/packages/core/src/providers/index.js +3 -1
  28. package/harness/packages/core/src/providers/ollama.js +4 -1
  29. package/harness/packages/core/src/providers/openaiCompatible.js +6 -1
  30. package/harness/packages/core/src/providers/openrouter.js +5 -1
  31. package/harness/packages/core/src/providers/presets.js +4 -3
  32. package/harness/packages/core/src/providers/reasoning.js +58 -0
  33. package/harness/packages/core/src/rules/index.js +8 -27
  34. package/harness/packages/core/src/skills/index.js +8 -19
  35. package/harness/packages/core/src/storage/sqlite.js +595 -690
  36. package/harness/packages/core/src/tunnel.js +9 -147
  37. package/harness/packages/core/test/agents.test.js +111 -0
  38. package/harness/packages/core/test/home.test.js +2 -35
  39. package/harness/packages/core/test/procs.test.js +3 -64
  40. package/harness/packages/core/test/reasoning.test.js +43 -0
  41. package/harness/packages/core/test/storage.test.js +1 -12
  42. package/harness/packages/server/public/app.js +39 -19
  43. package/harness/packages/server/public/appearance.js +2 -56
  44. package/harness/packages/server/public/boot.js +2 -2
  45. package/harness/packages/server/public/cards.js +2 -21
  46. package/harness/packages/server/public/chat.js +1 -16
  47. package/harness/packages/server/public/chatFormat.js +0 -11
  48. package/harness/packages/server/public/chrome.js +95 -5
  49. package/harness/packages/server/public/commands.js +1 -2
  50. package/harness/packages/server/public/core.js +1 -1
  51. package/harness/packages/server/public/explorer.js +7 -10
  52. package/harness/packages/server/public/icons (1).zip +0 -0
  53. package/harness/packages/server/public/index.html +1228 -1237
  54. package/harness/packages/server/public/landing/boot.js +2 -3
  55. package/harness/packages/server/public/landing/index.html +3 -367
  56. package/harness/packages/server/public/sessions.js +1 -0
  57. package/harness/packages/server/public/settings.js +1255 -1155
  58. package/harness/packages/server/public/settingsNav.js +1 -1
  59. package/harness/packages/server/public/styles.css +2341 -2867
  60. package/harness/packages/server/public/system.js +356 -495
  61. package/harness/packages/server/public/voice.js +6 -22
  62. package/harness/packages/server/src/auth.js +4 -15
  63. package/harness/packages/server/src/cli.js +1 -1
  64. package/harness/packages/server/src/lib/agents.js +60 -0
  65. package/harness/packages/server/src/lib/appearance.js +3 -22
  66. package/harness/packages/server/src/lib/channels/telegram/commands.js +1 -1
  67. package/harness/packages/server/src/lib/channels/telegram/run.js +1 -0
  68. package/harness/packages/server/src/lib/definitions.js +40 -0
  69. package/harness/packages/server/src/lib/prompt.js +11 -3
  70. package/harness/packages/server/src/lib/scheduler.js +4 -0
  71. package/harness/packages/server/src/lib/sessionView.js +1 -0
  72. package/harness/packages/server/src/lib/skills.js +27 -21
  73. package/harness/packages/server/src/lib/tasks.js +71 -23
  74. package/harness/packages/server/src/lib/ttsSettings.js +2 -2
  75. package/harness/packages/server/src/lib/workspace.js +9 -11
  76. package/harness/packages/server/src/routes/agents.js +88 -0
  77. package/harness/packages/server/src/routes/chat.js +9 -44
  78. package/harness/packages/server/src/routes/preview.js +5 -22
  79. package/harness/packages/server/src/routes/procs.js +2 -4
  80. package/harness/packages/server/src/routes/providers.js +7 -0
  81. package/harness/packages/server/src/routes/sessions.js +3 -1
  82. package/harness/packages/server/src/routes/tts.js +1 -1
  83. package/harness/packages/server/src/server.js +8 -5
  84. package/harness/packages/server/test/agents.test.js +194 -0
  85. package/harness/packages/server/test/appearance-route.test.js +3 -3
  86. package/harness/packages/server/test/appearance.test.js +12 -38
  87. package/harness/packages/server/test/chatFormat.test.js +0 -8
  88. package/harness/packages/server/test/consoleTabs.test.js +2 -2
  89. package/harness/packages/server/test/ops.test.js +8 -56
  90. package/harness/packages/server/test/preview.test.js +2 -42
  91. package/harness/packages/server/test/security.test.js +194 -370
  92. package/harness/packages/server/test/settingsNav.test.js +2 -2
  93. package/harness/packages/server/test/tts.test.js +4 -4
  94. package/harness/tamnora.example.json +2 -1
  95. package/package.json +2 -2
  96. package/harness/packages/cli/src/commands/eval.js +0 -186
  97. package/harness/packages/core/src/eval/dataset.js +0 -47
  98. package/harness/packages/core/src/eval/judge.js +0 -39
  99. package/harness/packages/core/src/eval/report.js +0 -48
  100. package/harness/packages/core/src/eval/runTask.js +0 -62
  101. package/harness/packages/core/src/eval/runner.js +0 -153
  102. package/harness/packages/core/src/eval/scorers.js +0 -217
  103. package/harness/packages/core/src/eval/task.js +0 -59
  104. package/harness/packages/core/src/procs/detect.js +0 -149
  105. package/harness/packages/core/test/eval.test.js +0 -144
  106. package/harness/packages/server/src/lib/advisor.js +0 -198
  107. package/harness/packages/server/src/routes/advisor.js +0 -79
  108. package/harness/packages/server/src/routes/eval.js +0 -100
  109. package/harness/packages/server/test/advisor.test.js +0 -249
  110. package/harness/scripts/example-dataset.jsonl +0 -4
@@ -1,13 +1,12 @@
1
1
  (function () {
2
- var THEMES = ['paper', 'dark', 'midnight', 'nord', 'dracula', 'solarized', 'solarized-dark', 'bosque', 'vino', 'arena', 'hielo', 'vercel', 'dark-plus', 'github', 'github-dark', 'mocha', 'ebano'];
3
- var DARK = ['dark', 'midnight', 'nord', 'dracula', 'solarized-dark', 'vercel', 'dark-plus', 'github-dark', 'mocha', 'ebano'];
2
+ var THEMES = ['paper', 'github', 'dark', 'mocha'];
3
+ var DARK = ['dark', 'mocha'];
4
4
  var theme = null;
5
5
  try {
6
6
  theme = localStorage.getItem('tamnora-console-theme');
7
7
  } catch {
8
8
  theme = null;
9
9
  }
10
- if (theme === 'light') theme = 'paper';
11
10
  if (THEMES.indexOf(theme) < 0) {
12
11
  theme = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'paper';
13
12
  }
@@ -75,259 +75,7 @@
75
75
  --page-tint: linear-gradient(180deg, rgba(18, 19, 14, 0.32), rgba(24, 25, 20, 0.32));
76
76
  }
77
77
 
78
- html[data-theme='midnight'] {
79
- color-scheme: dark;
80
- --paper: #0f1729;
81
- --paper-2: #16203a;
82
- --ink: #e2e8f0;
83
- --muted: #94a3b8;
84
- --line: rgba(226, 232, 240, 0.14);
85
- --border-strong: rgba(226, 232, 240, 0.28);
86
- --accent: #5b8def;
87
- --accent-dark: #82a8f4;
88
- --glass: rgba(15, 23, 41, 0.8);
89
- --nav: #cdd7e6;
90
- --copy: #b3c0d4;
91
- --hint: #94a3b8;
92
- --label: #aab8cc;
93
- --kicker: #a0aec2;
94
- --surface: rgba(226, 232, 240, 0.07);
95
- --surface-strong: rgba(226, 232, 240, 0.15);
96
- --field-bg: rgba(226, 232, 240, 0.06);
97
- --btn-bg: var(--accent);
98
- --btn-fg: #f8fafc;
99
- --btn-hover: #82a8f4;
100
- --footer: rgba(226, 232, 240, 0.5);
101
- --page-outer: #0b1220;
102
- --page-bg: linear-gradient(90deg, rgba(11, 18, 32, 0.85) 0%, rgba(11, 18, 32, 0.62) 43%, rgba(11, 18, 32, 0.34) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
103
- --page-tint: linear-gradient(180deg, rgba(11, 18, 32, 0.34), rgba(15, 23, 41, 0.34));
104
- }
105
-
106
- html[data-theme='nord'] {
107
- color-scheme: dark;
108
- --paper: #353b48;
109
- --paper-2: #3f4654;
110
- --ink: #eceff4;
111
- --muted: #9aa5b5;
112
- --line: rgba(216, 222, 233, 0.16);
113
- --border-strong: rgba(216, 222, 233, 0.3);
114
- --accent: #88c0d0;
115
- --accent-dark: #9fd0de;
116
- --glass: rgba(46, 52, 64, 0.8);
117
- --nav: #d6dde8;
118
- --copy: #bcc6d4;
119
- --hint: #9aa5b5;
120
- --label: #b6c0cf;
121
- --kicker: #aab5c4;
122
- --surface: rgba(216, 222, 233, 0.07);
123
- --surface-strong: rgba(216, 222, 233, 0.15);
124
- --field-bg: rgba(216, 222, 233, 0.06);
125
- --btn-bg: var(--accent);
126
- --btn-fg: #2e3440;
127
- --btn-hover: #9fd0de;
128
- --footer: rgba(216, 222, 233, 0.5);
129
- --page-outer: #272c36;
130
- --page-bg: linear-gradient(90deg, rgba(39, 44, 54, 0.85) 0%, rgba(39, 44, 54, 0.62) 43%, rgba(39, 44, 54, 0.34) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
131
- --page-tint: linear-gradient(180deg, rgba(39, 44, 54, 0.34), rgba(53, 59, 72, 0.34));
132
- }
133
-
134
- html[data-theme='dracula'] {
135
- color-scheme: dark;
136
- --paper: #2f3140;
137
- --paper-2: #383a4c;
138
- --ink: #f8f8f2;
139
- --muted: #a7a9be;
140
- --line: rgba(248, 248, 242, 0.14);
141
- --border-strong: rgba(248, 248, 242, 0.28);
142
- --accent: #bd93f9;
143
- --accent-dark: #cba9fb;
144
- --glass: rgba(40, 42, 54, 0.82);
145
- --nav: #e4e4f0;
146
- --copy: #c8c8de;
147
- --hint: #a7a9be;
148
- --label: #bfc0d6;
149
- --kicker: #b0b2c8;
150
- --surface: rgba(248, 248, 242, 0.07);
151
- --surface-strong: rgba(248, 248, 242, 0.15);
152
- --field-bg: rgba(248, 248, 242, 0.06);
153
- --btn-bg: var(--accent);
154
- --btn-fg: #21222c;
155
- --btn-hover: #cba9fb;
156
- --footer: rgba(248, 248, 242, 0.5);
157
- --page-outer: #21222c;
158
- --page-bg: linear-gradient(90deg, rgba(33, 34, 44, 0.85) 0%, rgba(33, 34, 44, 0.62) 43%, rgba(33, 34, 44, 0.34) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
159
- --page-tint: linear-gradient(180deg, rgba(33, 34, 44, 0.34), rgba(47, 49, 64, 0.34));
160
- }
161
-
162
- html[data-theme='solarized'] {
163
- color-scheme: light;
164
- --paper: #fdf6e3;
165
- --paper-2: #f5edd6;
166
- --ink: #073642;
167
- --muted: #657b83;
168
- --line: rgba(7, 54, 66, 0.18);
169
- --border-strong: rgba(7, 54, 66, 0.36);
170
- --accent: #b58900;
171
- --accent-dark: #cb4b16;
172
- --glass: rgba(253, 246, 227, 0.75);
173
- --nav: #4b5f66;
174
- --copy: #5a6f75;
175
- --hint: #657b83;
176
- --label: #5f7379;
177
- --kicker: #6a7d82;
178
- --surface: rgba(238, 232, 213, 0.6);
179
- --surface-strong: rgba(238, 232, 213, 0.85);
180
- --field-bg: rgba(255, 252, 240, 0.72);
181
- --btn-bg: var(--ink);
182
- --btn-fg: #fdf6e3;
183
- --btn-hover: #0a4650;
184
- --footer: rgba(101, 123, 131, 0.62);
185
- --page-outer: #eee8d5;
186
- --page-bg: linear-gradient(90deg, rgba(253, 246, 227, 0.78) 0%, rgba(253, 246, 227, 0.46) 43%, rgba(253, 246, 227, 0.16) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
187
- --page-tint: linear-gradient(180deg, rgba(253, 246, 227, 0.24), rgba(238, 232, 213, 0.24));
188
- }
189
-
190
- html[data-theme='solarized-dark'] {
191
- color-scheme: dark;
192
- --paper: #073642;
193
- --paper-2: #0b3f4c;
194
- --ink: #eee8d5;
195
- --muted: #93a1a1;
196
- --line: rgba(238, 232, 213, 0.16);
197
- --border-strong: rgba(238, 232, 213, 0.3);
198
- --accent: #b58900;
199
- --accent-dark: #d3a012;
200
- --glass: rgba(0, 43, 54, 0.8);
201
- --nav: #d5cfbd;
202
- --copy: #c2bcab;
203
- --hint: #93a1a1;
204
- --label: #b8b2a1;
205
- --kicker: #a7a999;
206
- --surface: rgba(238, 232, 213, 0.07);
207
- --surface-strong: rgba(238, 232, 213, 0.15);
208
- --field-bg: rgba(238, 232, 213, 0.06);
209
- --btn-bg: var(--accent);
210
- --btn-fg: #002b36;
211
- --btn-hover: #d3a012;
212
- --footer: rgba(238, 232, 213, 0.5);
213
- --page-outer: #002b36;
214
- --page-bg: linear-gradient(90deg, rgba(0, 43, 54, 0.85) 0%, rgba(0, 43, 54, 0.62) 43%, rgba(0, 43, 54, 0.34) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
215
- --page-tint: linear-gradient(180deg, rgba(0, 43, 54, 0.34), rgba(7, 54, 66, 0.34));
216
- }
217
-
218
- html[data-theme='bosque'] {
219
- color-scheme: light;
220
- --paper: #f2f4ec;
221
- --paper-2: #e8ecdf;
222
- --ink: #1e241c;
223
- --muted: #5f6b59;
224
- --line: rgba(30, 36, 28, 0.16);
225
- --border-strong: rgba(30, 36, 28, 0.34);
226
- --accent: #4f8a4a;
227
- --accent-dark: #3d6f39;
228
- --glass: rgba(244, 246, 238, 0.75);
229
- --nav: #3f4a39;
230
- --copy: #4f5a49;
231
- --hint: #5f6b59;
232
- --label: #55614f;
233
- --kicker: #616b5b;
234
- --surface: rgba(231, 235, 223, 0.6);
235
- --surface-strong: rgba(231, 235, 223, 0.85);
236
- --field-bg: rgba(248, 250, 244, 0.72);
237
- --btn-bg: var(--ink);
238
- --btn-fg: #f8faf4;
239
- --btn-hover: #2b3327;
240
- --footer: rgba(95, 107, 89, 0.62);
241
- --page-outer: #dfe4d5;
242
- --page-bg: linear-gradient(90deg, rgba(242, 244, 236, 0.78) 0%, rgba(242, 244, 236, 0.46) 43%, rgba(242, 244, 236, 0.16) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
243
- --page-tint: linear-gradient(180deg, rgba(242, 244, 236, 0.24), rgba(231, 235, 223, 0.24));
244
- }
245
-
246
- html[data-theme='vino'] {
247
- color-scheme: light;
248
- --paper: #f7eeee;
249
- --paper-2: #efe0e1;
250
- --ink: #26181a;
251
- --muted: #6d5a5d;
252
- --line: rgba(38, 24, 26, 0.16);
253
- --border-strong: rgba(38, 24, 26, 0.34);
254
- --accent: #a3344a;
255
- --accent-dark: #82273a;
256
- --glass: rgba(248, 240, 240, 0.75);
257
- --nav: #4a383a;
258
- --copy: #5a4649;
259
- --hint: #6d5a5d;
260
- --label: #614d50;
261
- --kicker: #6b585b;
262
- --surface: rgba(238, 223, 223, 0.6);
263
- --surface-strong: rgba(238, 223, 223, 0.85);
264
- --field-bg: rgba(252, 246, 246, 0.72);
265
- --btn-bg: var(--ink);
266
- --btn-fg: #fbf5f5;
267
- --btn-hover: #3a2528;
268
- --footer: rgba(109, 90, 93, 0.62);
269
- --page-outer: #e5d4d5;
270
- --page-bg: linear-gradient(90deg, rgba(247, 238, 238, 0.78) 0%, rgba(247, 238, 238, 0.46) 43%, rgba(247, 238, 238, 0.16) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
271
- --page-tint: linear-gradient(180deg, rgba(247, 238, 238, 0.24), rgba(238, 223, 223, 0.24));
272
- }
273
-
274
- html[data-theme='vercel'] {
275
- color-scheme: dark;
276
- --paper: #0a0a0a;
277
- --paper-2: #111111;
278
- --ink: #ededed;
279
- --muted: #8f8f8f;
280
- --line: rgba(255, 255, 255, 0.14);
281
- --border-strong: rgba(255, 255, 255, 0.28);
282
- --accent: #0070f3;
283
- --accent-dark: #3291ff;
284
- --glass: rgba(0, 0, 0, 0.8);
285
- --nav: #cfcfcf;
286
- --copy: #b5b5b5;
287
- --hint: #8f8f8f;
288
- --label: #a8a8a8;
289
- --kicker: #9a9a9a;
290
- --surface: rgba(255, 255, 255, 0.06);
291
- --surface-strong: rgba(255, 255, 255, 0.12);
292
- --field-bg: rgba(255, 255, 255, 0.05);
293
- --btn-bg: var(--accent);
294
- --btn-fg: #ffffff;
295
- --btn-hover: #3291ff;
296
- --footer: rgba(255, 255, 255, 0.5);
297
- --page-outer: #000000;
298
- --page-bg: linear-gradient(90deg, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.62) 43%, rgba(0, 0, 0, 0.34) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
299
- --page-tint: linear-gradient(180deg, rgba(0, 0, 0, 0.4), rgba(10, 10, 10, 0.4));
300
- }
301
-
302
- html[data-theme='dark-plus'] {
303
- color-scheme: dark;
304
- --paper: #252526;
305
- --paper-2: #2d2d2d;
306
- --ink: #d4d4d4;
307
- --muted: #9a9a9a;
308
- --line: rgba(255, 255, 255, 0.12);
309
- --border-strong: rgba(255, 255, 255, 0.26);
310
- --accent: #0e639c;
311
- --accent-dark: #1177bb;
312
- --glass: rgba(30, 30, 30, 0.82);
313
- --nav: #c5c5c5;
314
- --copy: #b0b0b0;
315
- --hint: #9a9a9a;
316
- --label: #ababab;
317
- --kicker: #a0a0a0;
318
- --surface: rgba(255, 255, 255, 0.06);
319
- --surface-strong: rgba(255, 255, 255, 0.12);
320
- --field-bg: rgba(255, 255, 255, 0.05);
321
- --btn-bg: var(--accent);
322
- --btn-fg: #ffffff;
323
- --btn-hover: #1177bb;
324
- --footer: rgba(212, 212, 212, 0.5);
325
- --page-outer: #1e1e1e;
326
- --page-bg: linear-gradient(90deg, rgba(30, 30, 30, 0.85) 0%, rgba(30, 30, 30, 0.62) 43%, rgba(30, 30, 30, 0.34) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
327
- --page-tint: linear-gradient(180deg, rgba(30, 30, 30, 0.4), rgba(37, 37, 38, 0.4));
328
- }
329
-
330
- html[data-theme='github'] {
78
+ html[data-theme='github'] {
331
79
  color-scheme: light;
332
80
  --paper: #ffffff;
333
81
  --paper-2: #f6f8fa;
@@ -355,91 +103,7 @@
355
103
  --page-tint: linear-gradient(180deg, rgba(255, 255, 255, 0.3), rgba(246, 248, 250, 0.3));
356
104
  }
357
105
 
358
- html[data-theme='github-dark'] {
359
- color-scheme: dark;
360
- --paper: #161b22;
361
- --paper-2: #1c2128;
362
- --ink: #e6edf3;
363
- --muted: #8b949e;
364
- --line: rgba(240, 246, 252, 0.14);
365
- --border-strong: rgba(240, 246, 252, 0.28);
366
- --accent: #58a6ff;
367
- --accent-dark: #79c0ff;
368
- --glass: rgba(13, 17, 23, 0.85);
369
- --nav: #cdd7e0;
370
- --copy: #b6c0ca;
371
- --hint: #8b949e;
372
- --label: #a8b2bd;
373
- --kicker: #9ba6b1;
374
- --surface: rgba(240, 246, 252, 0.06);
375
- --surface-strong: rgba(240, 246, 252, 0.12);
376
- --field-bg: rgba(240, 246, 252, 0.05);
377
- --btn-bg: var(--accent);
378
- --btn-fg: #0d1117;
379
- --btn-hover: #79c0ff;
380
- --footer: rgba(230, 237, 243, 0.5);
381
- --page-outer: #0d1117;
382
- --page-bg: linear-gradient(90deg, rgba(13, 17, 23, 0.85) 0%, rgba(13, 17, 23, 0.62) 43%, rgba(13, 17, 23, 0.34) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
383
- --page-tint: linear-gradient(180deg, rgba(13, 17, 23, 0.4), rgba(22, 27, 34, 0.4));
384
- }
385
-
386
- html[data-theme='arena'] {
387
- color-scheme: light;
388
- --paper: #f6efdd;
389
- --paper-2: #ece2c9;
390
- --ink: #2c2419;
391
- --muted: #6b5c42;
392
- --line: rgba(44, 36, 25, 0.16);
393
- --border-strong: rgba(44, 36, 25, 0.35);
394
- --accent: #9c5c22;
395
- --accent-dark: #7e4718;
396
- --glass: rgba(250, 245, 232, 0.75);
397
- --nav: #4c4335;
398
- --copy: #574c3a;
399
- --hint: #77684c;
400
- --label: #5f5544;
401
- --kicker: #6b5c42;
402
- --surface: rgba(250, 245, 232, 0.58);
403
- --surface-strong: rgba(250, 245, 232, 0.8);
404
- --field-bg: rgba(255, 252, 244, 0.72);
405
- --btn-bg: var(--ink);
406
- --btn-fg: #fbf6ea;
407
- --btn-hover: #3c3226;
408
- --footer: rgba(76, 67, 53, 0.62);
409
- --page-outer: #d9d2c2;
410
- --page-bg: linear-gradient(90deg, rgba(250, 245, 232, 0.74) 0%, rgba(250, 245, 232, 0.42) 43%, rgba(250, 245, 232, 0.12) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
411
- --page-tint: linear-gradient(180deg, rgba(246, 239, 221, 0.24), rgba(226, 216, 194, 0.24));
412
- }
413
-
414
- html[data-theme='hielo'] {
415
- color-scheme: light;
416
- --paper: #edf3f7;
417
- --paper-2: #dae6ee;
418
- --ink: #1c2a35;
419
- --muted: #51626e;
420
- --line: rgba(28, 42, 53, 0.16);
421
- --border-strong: rgba(28, 42, 53, 0.35);
422
- --accent: #2b6a8c;
423
- --accent-dark: #1f5470;
424
- --glass: rgba(240, 246, 250, 0.75);
425
- --nav: #35434e;
426
- --copy: #46545e;
427
- --hint: #5b6c78;
428
- --label: #4c5a66;
429
- --kicker: #51626e;
430
- --surface: rgba(240, 246, 250, 0.58);
431
- --surface-strong: rgba(240, 246, 250, 0.8);
432
- --field-bg: rgba(252, 254, 255, 0.72);
433
- --btn-bg: var(--ink);
434
- --btn-fg: #f2f8fc;
435
- --btn-hover: #2c3b46;
436
- --footer: rgba(53, 67, 78, 0.62);
437
- --page-outer: #ccd8e0;
438
- --page-bg: linear-gradient(90deg, rgba(240, 246, 250, 0.74) 0%, rgba(240, 246, 250, 0.42) 43%, rgba(240, 246, 250, 0.12) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
439
- --page-tint: linear-gradient(180deg, rgba(221, 232, 240, 0.24), rgba(202, 218, 230, 0.24));
440
- }
441
-
442
- html[data-theme='mocha'] {
106
+ html[data-theme='mocha'] {
443
107
  color-scheme: dark;
444
108
  --paper: #211912;
445
109
  --paper-2: #2b2116;
@@ -467,35 +131,7 @@
467
131
  --page-tint: linear-gradient(180deg, rgba(33, 25, 18, 0.32), rgba(42, 32, 22, 0.32));
468
132
  }
469
133
 
470
- html[data-theme='ebano'] {
471
- color-scheme: dark;
472
- --paper: #14191f;
473
- --paper-2: #1c242c;
474
- --ink: #e3ebf2;
475
- --muted: #93a2ae;
476
- --line: rgba(227, 235, 242, 0.14);
477
- --border-strong: rgba(227, 235, 242, 0.28);
478
- --accent: #6fa8c9;
479
- --accent-dark: #5489a7;
480
- --glass: rgba(21, 27, 34, 0.8);
481
- --nav: #c3d0da;
482
- --copy: #adbac6;
483
- --hint: #8b9aa6;
484
- --label: #9fadb9;
485
- --kicker: #93a2ae;
486
- --surface: rgba(227, 235, 242, 0.07);
487
- --surface-strong: rgba(227, 235, 242, 0.15);
488
- --field-bg: rgba(227, 235, 242, 0.05);
489
- --btn-bg: var(--accent);
490
- --btn-fg: #10161c;
491
- --btn-hover: #5489a7;
492
- --footer: rgba(215, 226, 235, 0.5);
493
- --page-outer: #0c1014;
494
- --page-bg: linear-gradient(90deg, rgba(12, 16, 20, 0.85) 0%, rgba(12, 16, 20, 0.6) 43%, rgba(12, 16, 20, 0.32) 100%), url("/img/fondo-agentes.webp") center/cover fixed no-repeat;
495
- --page-tint: linear-gradient(180deg, rgba(20, 25, 31, 0.32), rgba(28, 36, 44, 0.32));
496
- }
497
-
498
- * { box-sizing: border-box; }
134
+ * { box-sizing: border-box; }
499
135
 
500
136
  html, body {
501
137
  margin: 0;
@@ -52,6 +52,7 @@ export function registerSession(session, messages = [], tokens = { in: 0, out: 0
52
52
  provider: session.provider || '',
53
53
  model: session.model || '',
54
54
  mode: session.mode || '',
55
+ effort: session.effort || '',
55
56
  working: false,
56
57
  tokens,
57
58
  lastTurn: { prompt: 0, completion: 0 },