neoagent 2.4.1-beta.30 → 2.4.1-beta.32
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/flutter_app/assets/branding/onboarding_intro.mp4 +0 -0
- package/flutter_app/lib/features/onboarding/onboarding_chrome.dart +391 -382
- package/flutter_app/lib/features/onboarding/onboarding_companion_step.dart +78 -56
- package/flutter_app/lib/features/onboarding/onboarding_messaging_step.dart +18 -16
- package/flutter_app/lib/features/onboarding/onboarding_model_step.dart +18 -17
- package/flutter_app/lib/features/onboarding/onboarding_shell.dart +2 -1
- package/flutter_app/lib/features/onboarding/onboarding_video_step.dart +16 -13
- package/flutter_app/lib/features/onboarding/onboarding_welcome_step.dart +15 -11
- package/flutter_app/lib/main_account_settings.dart +1 -1
- package/flutter_app/lib/main_admin.dart +1 -1
- package/flutter_app/lib/main_app_shell.dart +190 -191
- package/flutter_app/lib/main_chat.dart +381 -228
- package/flutter_app/lib/main_devices.dart +1 -1
- package/flutter_app/lib/main_launcher.dart +1 -1
- package/flutter_app/lib/main_operations.dart +3 -3
- package/flutter_app/lib/main_shared.dart +336 -340
- package/flutter_app/lib/main_spacing.dart +4 -4
- package/flutter_app/lib/main_theme.dart +20 -14
- package/flutter_app/lib/src/theme/palette.dart +76 -34
- package/flutter_app/pubspec.lock +2 -2
- package/flutter_app/pubspec.yaml +1 -1
- package/package.json +1 -1
- package/server/public/.last_build_id +1 -1
- package/server/public/assets/assets/branding/onboarding_intro.mp4 +0 -0
- package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
- package/server/public/flutter_bootstrap.js +1 -1
- package/server/public/main.dart.js +60738 -60521
- package/server/services/ai/tools.js +51 -7
- package/server/services/messaging/formatting_guides.js +26 -1
- package/server/services/messaging/manager.js +5 -2
- package/server/services/tasks/runtime.js +182 -7
- package/server/services/tasks/task_repository.js +13 -0
|
@@ -23,11 +23,11 @@ abstract class AppBreakpoints {
|
|
|
23
23
|
abstract class AppRadius {
|
|
24
24
|
static const double tag = 8.0;
|
|
25
25
|
static const double card = 14.0;
|
|
26
|
-
static const double input =
|
|
27
|
-
static const double panel =
|
|
26
|
+
static const double input = 14.0;
|
|
27
|
+
static const double panel = 22.0;
|
|
28
28
|
static const double pill = 999.0;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
/// Deep dark color used for QR code modules rendered on a white background.
|
|
32
|
-
/// Matches the dark theme's
|
|
33
|
-
const Color _qrDarkColor = Color(
|
|
32
|
+
/// Matches the dark theme's deep-olive background hue for brand consistency.
|
|
33
|
+
const Color _qrDarkColor = Color(0xFF0E1511);
|
|
@@ -18,8 +18,8 @@ Color get _bgCard => _palette.bgCard;
|
|
|
18
18
|
Color get _textPrimary => _palette.textPrimary;
|
|
19
19
|
Color get _textSecondary => _palette.textSecondary;
|
|
20
20
|
Color get _textMuted => _palette.textMuted;
|
|
21
|
-
const Color _brandAccent = Color(
|
|
22
|
-
const Color _brandAccentAlt = Color(
|
|
21
|
+
const Color _brandAccent = Color(0xFFB07D2B);
|
|
22
|
+
const Color _brandAccentAlt = Color(0xFF5E6B4C);
|
|
23
23
|
Color get _accent => _palette.accent;
|
|
24
24
|
Color get _accentHover => _palette.accentHover;
|
|
25
25
|
Color get _accentAlt => _palette.accentAlt;
|
|
@@ -104,10 +104,12 @@ TextStyle _heroTitleStyle([double size = 24]) => TextStyle(
|
|
|
104
104
|
color: _textPrimary,
|
|
105
105
|
);
|
|
106
106
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
// Eyebrow labels ("CONTROL SURFACE") use the mono typeface for telemetry
|
|
108
|
+
// flavor, matching the design system's `--mono` eyebrow treatment (Geist Mono).
|
|
109
|
+
TextStyle _sectionEyebrowStyle() => GoogleFonts.geistMono(
|
|
110
|
+
fontSize: 11,
|
|
111
|
+
fontWeight: FontWeight.w600,
|
|
112
|
+
letterSpacing: 1.6,
|
|
111
113
|
color: _accentHover,
|
|
112
114
|
);
|
|
113
115
|
|
|
@@ -130,7 +132,9 @@ ThemeData _buildNeoAgentTheme(NeoAgentPalette palette, Brightness brightness) {
|
|
|
130
132
|
onSurface: palette.textPrimary,
|
|
131
133
|
error: palette.danger,
|
|
132
134
|
),
|
|
133
|
-
|
|
135
|
+
// Geist is the Control Surface design system's base typeface.
|
|
136
|
+
// Telemetry / mono runs stay on Geist Mono at the call sites.
|
|
137
|
+
textTheme: GoogleFonts.geistTextTheme(base.textTheme).apply(
|
|
134
138
|
bodyColor: palette.textPrimary,
|
|
135
139
|
displayColor: palette.textPrimary,
|
|
136
140
|
),
|
|
@@ -145,7 +149,7 @@ ThemeData _buildNeoAgentTheme(NeoAgentPalette palette, Brightness brightness) {
|
|
|
145
149
|
elevation: brightness == Brightness.dark ? 8 : 3,
|
|
146
150
|
margin: EdgeInsets.zero,
|
|
147
151
|
shape: RoundedRectangleBorder(
|
|
148
|
-
borderRadius: BorderRadius.circular(
|
|
152
|
+
borderRadius: BorderRadius.circular(AppRadius.panel),
|
|
149
153
|
side: BorderSide(
|
|
150
154
|
color: Colors.white.withValues(
|
|
151
155
|
alpha: brightness == Brightness.dark ? 0.08 : 0.22,
|
|
@@ -159,15 +163,15 @@ ThemeData _buildNeoAgentTheme(NeoAgentPalette palette, Brightness brightness) {
|
|
|
159
163
|
alpha: brightness == Brightness.dark ? 0.82 : 0.84,
|
|
160
164
|
),
|
|
161
165
|
border: OutlineInputBorder(
|
|
162
|
-
borderRadius: BorderRadius.circular(
|
|
166
|
+
borderRadius: BorderRadius.circular(AppRadius.input),
|
|
163
167
|
borderSide: BorderSide(color: palette.borderLight),
|
|
164
168
|
),
|
|
165
169
|
enabledBorder: OutlineInputBorder(
|
|
166
|
-
borderRadius: BorderRadius.circular(
|
|
170
|
+
borderRadius: BorderRadius.circular(AppRadius.input),
|
|
167
171
|
borderSide: BorderSide(color: palette.borderLight),
|
|
168
172
|
),
|
|
169
173
|
focusedBorder: OutlineInputBorder(
|
|
170
|
-
borderRadius: BorderRadius.circular(
|
|
174
|
+
borderRadius: BorderRadius.circular(AppRadius.input),
|
|
171
175
|
borderSide: BorderSide(color: palette.accentHover, width: 1.4),
|
|
172
176
|
),
|
|
173
177
|
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16),
|
|
@@ -193,7 +197,7 @@ ThemeData _buildNeoAgentTheme(NeoAgentPalette palette, Brightness brightness) {
|
|
|
193
197
|
elevation: 0,
|
|
194
198
|
padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 16),
|
|
195
199
|
shape: RoundedRectangleBorder(
|
|
196
|
-
borderRadius: BorderRadius.circular(
|
|
200
|
+
borderRadius: BorderRadius.circular(AppRadius.input),
|
|
197
201
|
side: BorderSide(
|
|
198
202
|
color: Colors.white.withValues(
|
|
199
203
|
alpha: brightness == Brightness.dark ? 0.14 : 0.26,
|
|
@@ -219,7 +223,9 @@ ThemeData _buildNeoAgentTheme(NeoAgentPalette palette, Brightness brightness) {
|
|
|
219
223
|
alpha: brightness == Brightness.dark ? 0.2 : 0.5,
|
|
220
224
|
),
|
|
221
225
|
padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 16),
|
|
222
|
-
shape: RoundedRectangleBorder(
|
|
226
|
+
shape: RoundedRectangleBorder(
|
|
227
|
+
borderRadius: BorderRadius.circular(AppRadius.input),
|
|
228
|
+
),
|
|
223
229
|
textStyle: const TextStyle(fontSize: 15, fontWeight: FontWeight.w700),
|
|
224
230
|
),
|
|
225
231
|
),
|
|
@@ -266,7 +272,7 @@ ThemeData _buildNeoAgentTheme(NeoAgentPalette palette, Brightness brightness) {
|
|
|
266
272
|
backgroundColor: palette.bgCard.withValues(alpha: 0.96),
|
|
267
273
|
surfaceTintColor: Colors.transparent,
|
|
268
274
|
shape: RoundedRectangleBorder(
|
|
269
|
-
borderRadius: BorderRadius.circular(
|
|
275
|
+
borderRadius: BorderRadius.circular(AppRadius.panel),
|
|
270
276
|
side: BorderSide(color: palette.borderLight),
|
|
271
277
|
),
|
|
272
278
|
),
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import 'package:flutter/widgets.dart';
|
|
2
2
|
|
|
3
|
+
/// Resolves the active [NeoAgentPalette] for the given [brightness].
|
|
4
|
+
NeoAgentPalette paletteFor(Brightness brightness) =>
|
|
5
|
+
brightness == Brightness.light ? lightPalette : darkPalette;
|
|
6
|
+
|
|
7
|
+
/// Resolves the active [NeoAgentPalette] from the ambient theme brightness.
|
|
8
|
+
NeoAgentPalette paletteOf(BuildContext context) =>
|
|
9
|
+
paletteFor(MediaQuery.platformBrightnessOf(context));
|
|
10
|
+
|
|
11
|
+
/// Canonical color tokens for the NeoAgent "Control Surface" design system.
|
|
12
|
+
///
|
|
13
|
+
/// Visual language: warm-organic "agent OS" — olive/sage greens paired with
|
|
14
|
+
/// a gold accent, a paper-light day theme and a deep-olive night theme.
|
|
15
|
+
/// Every screen reads its colors from these tokens (via the theme getters in
|
|
16
|
+
/// `main_theme.dart`), so adjusting a value here re-skins the whole app.
|
|
3
17
|
class NeoAgentPalette {
|
|
4
18
|
const NeoAgentPalette({
|
|
5
19
|
required this.bgPrimary,
|
|
@@ -21,61 +35,89 @@ class NeoAgentPalette {
|
|
|
21
35
|
required this.info,
|
|
22
36
|
});
|
|
23
37
|
|
|
38
|
+
/// Page background ("paper" by day, "deep olive" by night).
|
|
24
39
|
final Color bgPrimary;
|
|
40
|
+
|
|
41
|
+
/// Slightly recessed background used for rails and inset wells.
|
|
25
42
|
final Color bgSecondary;
|
|
43
|
+
|
|
44
|
+
/// Tertiary surface for nested wells, track fills and pressed states.
|
|
26
45
|
final Color bgTertiary;
|
|
46
|
+
|
|
47
|
+
/// Raised surface for cards, sheets and bubbles.
|
|
27
48
|
final Color bgCard;
|
|
49
|
+
|
|
50
|
+
/// Primary ink — headings and body text.
|
|
28
51
|
final Color textPrimary;
|
|
52
|
+
|
|
53
|
+
/// Secondary ink — supporting copy and inactive labels.
|
|
29
54
|
final Color textSecondary;
|
|
55
|
+
|
|
56
|
+
/// Muted ink — captions, placeholders and disabled glyphs.
|
|
30
57
|
final Color textMuted;
|
|
58
|
+
|
|
59
|
+
/// Gold accent — primary actions, active nav, focus rings.
|
|
31
60
|
final Color accent;
|
|
61
|
+
|
|
62
|
+
/// Readable gold ("gold-ink") for eyebrows, links and accent text on paper.
|
|
32
63
|
final Color accentHover;
|
|
64
|
+
|
|
65
|
+
/// Sage green companion accent — calls, traces and secondary affordances.
|
|
33
66
|
final Color accentAlt;
|
|
67
|
+
|
|
68
|
+
/// Translucent gold wash for soft fills and selection backgrounds.
|
|
34
69
|
final Color accentMuted;
|
|
70
|
+
|
|
71
|
+
/// Hairline divider color.
|
|
35
72
|
final Color border;
|
|
73
|
+
|
|
74
|
+
/// Stronger hairline for inputs and interactive outlines.
|
|
36
75
|
final Color borderLight;
|
|
76
|
+
|
|
37
77
|
final Color success;
|
|
38
78
|
final Color warning;
|
|
39
79
|
final Color danger;
|
|
40
80
|
final Color info;
|
|
41
81
|
}
|
|
42
82
|
|
|
83
|
+
/// Deep-olive night theme.
|
|
43
84
|
const NeoAgentPalette darkPalette = NeoAgentPalette(
|
|
44
|
-
bgPrimary: Color(
|
|
45
|
-
bgSecondary: Color(
|
|
46
|
-
bgTertiary: Color(
|
|
47
|
-
bgCard: Color(
|
|
48
|
-
textPrimary: Color(
|
|
49
|
-
textSecondary: Color(
|
|
50
|
-
textMuted: Color(
|
|
51
|
-
accent: Color(
|
|
52
|
-
accentHover: Color(
|
|
53
|
-
accentAlt: Color(
|
|
54
|
-
accentMuted: Color(
|
|
55
|
-
border: Color(
|
|
56
|
-
borderLight: Color(
|
|
57
|
-
success: Color(
|
|
58
|
-
warning: Color(
|
|
59
|
-
danger: Color(
|
|
60
|
-
info: Color(
|
|
85
|
+
bgPrimary: Color(0xFF0E1511),
|
|
86
|
+
bgSecondary: Color(0xFF0A0F0C),
|
|
87
|
+
bgTertiary: Color(0xFF252D28),
|
|
88
|
+
bgCard: Color(0xFF171F1A),
|
|
89
|
+
textPrimary: Color(0xFFECEFE5),
|
|
90
|
+
textSecondary: Color(0xFFAEB7A6),
|
|
91
|
+
textMuted: Color(0xFF7E8877),
|
|
92
|
+
accent: Color(0xFFE1B052),
|
|
93
|
+
accentHover: Color(0xFFEAC272),
|
|
94
|
+
accentAlt: Color(0xFF84BA87),
|
|
95
|
+
accentMuted: Color(0x29E1B052),
|
|
96
|
+
border: Color(0x1AE0F0E0),
|
|
97
|
+
borderLight: Color(0x2BE0F0E0),
|
|
98
|
+
success: Color(0xFF74C07C),
|
|
99
|
+
warning: Color(0xFFD9A24B),
|
|
100
|
+
danger: Color(0xFFDE8A78),
|
|
101
|
+
info: Color(0xFF6FB0A4),
|
|
61
102
|
);
|
|
62
103
|
|
|
104
|
+
/// Paper-light day theme.
|
|
63
105
|
const NeoAgentPalette lightPalette = NeoAgentPalette(
|
|
64
|
-
bgPrimary: Color(
|
|
65
|
-
bgSecondary: Color(
|
|
66
|
-
bgTertiary: Color(
|
|
67
|
-
bgCard: Color(
|
|
68
|
-
textPrimary: Color(
|
|
69
|
-
textSecondary: Color(
|
|
70
|
-
textMuted: Color(
|
|
71
|
-
accent: Color(
|
|
72
|
-
accentHover: Color(
|
|
73
|
-
accentAlt: Color(
|
|
74
|
-
accentMuted: Color(
|
|
75
|
-
border: Color(
|
|
76
|
-
borderLight: Color(
|
|
77
|
-
success: Color(
|
|
78
|
-
warning: Color(
|
|
79
|
-
danger: Color(
|
|
80
|
-
info: Color(
|
|
106
|
+
bgPrimary: Color(0xFFF4F1E8),
|
|
107
|
+
bgSecondary: Color(0xFFEDE9DC),
|
|
108
|
+
bgTertiary: Color(0xFFF1EDE1),
|
|
109
|
+
bgCard: Color(0xFFFDFCF8),
|
|
110
|
+
textPrimary: Color(0xFF1C2117),
|
|
111
|
+
textSecondary: Color(0xFF49503F),
|
|
112
|
+
textMuted: Color(0xFF7E8470),
|
|
113
|
+
accent: Color(0xFFB07D2B),
|
|
114
|
+
accentHover: Color(0xFF8A5F1C),
|
|
115
|
+
accentAlt: Color(0xFF5E6B4C),
|
|
116
|
+
accentMuted: Color(0x24B07D2B),
|
|
117
|
+
border: Color(0x171C2117),
|
|
118
|
+
borderLight: Color(0x291C2117),
|
|
119
|
+
success: Color(0xFF527C4F),
|
|
120
|
+
warning: Color(0xFF9A7B33),
|
|
121
|
+
danger: Color(0xFFAE473C),
|
|
122
|
+
info: Color(0xFF2F7D6E),
|
|
81
123
|
);
|
package/flutter_app/pubspec.lock
CHANGED
|
@@ -418,10 +418,10 @@ packages:
|
|
|
418
418
|
dependency: "direct main"
|
|
419
419
|
description:
|
|
420
420
|
name: google_fonts
|
|
421
|
-
sha256:
|
|
421
|
+
sha256: "4e9391085e524954a51e3625b7c9c7e9851dc3f376603208bb45c24b9a66255d"
|
|
422
422
|
url: "https://pub.dev"
|
|
423
423
|
source: hosted
|
|
424
|
-
version: "
|
|
424
|
+
version: "8.1.0"
|
|
425
425
|
hotkey_manager:
|
|
426
426
|
dependency: "direct main"
|
|
427
427
|
description:
|
package/flutter_app/pubspec.yaml
CHANGED
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
bbd16dca2aaed152d1b5cce7dde070a9
|
|
Binary file
|
|
Binary file
|
|
@@ -37,6 +37,6 @@ _flutter.buildConfig = {"engineRevision":"c416acfeb8126e097f758c664aaa3da929e27d
|
|
|
37
37
|
|
|
38
38
|
_flutter.loader.load({
|
|
39
39
|
serviceWorkerSettings: {
|
|
40
|
-
serviceWorkerVersion: "
|
|
40
|
+
serviceWorkerVersion: "15168279" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
|
|
41
41
|
}
|
|
42
42
|
});
|