neoagent 2.4.1-beta.5 → 2.4.1-beta.6
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/lib/main_controller.dart +7 -0
- package/flutter_app/lib/main_settings.dart +43 -0
- package/package.json +1 -1
- package/server/public/.last_build_id +1 -1
- package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
- package/server/public/flutter_bootstrap.js +1 -1
- package/server/public/main.dart.js +23702 -23622
|
@@ -4574,6 +4574,7 @@ class NeoAgentController extends ChangeNotifier {
|
|
|
4574
4574
|
Future<void> saveSettings({
|
|
4575
4575
|
required String browserBackend,
|
|
4576
4576
|
required String cliBackend,
|
|
4577
|
+
String? cliDesktopDeviceId,
|
|
4577
4578
|
required bool smarterSelector,
|
|
4578
4579
|
required List<String> enabledModels,
|
|
4579
4580
|
required String defaultChatModel,
|
|
@@ -4603,6 +4604,7 @@ class NeoAgentController extends ChangeNotifier {
|
|
|
4603
4604
|
'headless_browser': true,
|
|
4604
4605
|
'browser_backend': browserBackend,
|
|
4605
4606
|
'cli_backend': cliBackend,
|
|
4607
|
+
if (cliDesktopDeviceId != null) 'cli_desktop_device_id': cliDesktopDeviceId,
|
|
4606
4608
|
'smarter_model_selector': smarterSelector,
|
|
4607
4609
|
'enabled_models': enabledModels,
|
|
4608
4610
|
'default_chat_model': defaultChatModel,
|
|
@@ -6140,6 +6142,11 @@ class NeoAgentController extends ChangeNotifier {
|
|
|
6140
6142
|
String get cliBackend =>
|
|
6141
6143
|
settings['cli_backend']?.toString().trim().toLowerCase() ?? 'vm';
|
|
6142
6144
|
|
|
6145
|
+
String? get cliDesktopDeviceId {
|
|
6146
|
+
final v = settings['cli_desktop_device_id']?.toString().trim();
|
|
6147
|
+
return (v == null || v.isEmpty) ? null : v;
|
|
6148
|
+
}
|
|
6149
|
+
|
|
6143
6150
|
String get cloudBrowserBackend {
|
|
6144
6151
|
final browser = browserBackend;
|
|
6145
6152
|
final profile = settings['runtime_profile']
|
|
@@ -171,6 +171,7 @@ class _SettingsPanelState extends State<SettingsPanel> {
|
|
|
171
171
|
late final TextEditingController _searchController;
|
|
172
172
|
late String _browserBackend;
|
|
173
173
|
late String _cliBackend;
|
|
174
|
+
String? _cliDesktopDeviceId;
|
|
174
175
|
late bool _smarterSelector;
|
|
175
176
|
late Set<String> _enabledModels;
|
|
176
177
|
late String _defaultChatModel;
|
|
@@ -233,6 +234,7 @@ class _SettingsPanelState extends State<SettingsPanel> {
|
|
|
233
234
|
.toSet();
|
|
234
235
|
_browserBackend = _normalizeBrowserBackend(controller.browserBackend);
|
|
235
236
|
_cliBackend = _normalizeCliBackend(controller.cliBackend);
|
|
237
|
+
_cliDesktopDeviceId = controller.cliDesktopDeviceId;
|
|
236
238
|
_smarterSelector = controller.smarterSelector;
|
|
237
239
|
_enabledModels = controller.enabledModelIds
|
|
238
240
|
.where((id) => knownModels.contains(id))
|
|
@@ -475,6 +477,7 @@ class _SettingsPanelState extends State<SettingsPanel> {
|
|
|
475
477
|
? 'extension'
|
|
476
478
|
: 'vm',
|
|
477
479
|
cliBackend: _cliBackend == 'desktop' ? 'desktop' : 'vm',
|
|
480
|
+
cliDesktopDeviceId: _cliDesktopDeviceId,
|
|
478
481
|
smarterSelector: _smarterSelector,
|
|
479
482
|
enabledModels: _enabledModels.toList(),
|
|
480
483
|
defaultChatModel: _defaultChatModel,
|
|
@@ -714,6 +717,46 @@ class _SettingsPanelState extends State<SettingsPanel> {
|
|
|
714
717
|
}
|
|
715
718
|
},
|
|
716
719
|
),
|
|
720
|
+
if (_cliBackend == 'desktop' && controller.desktopDevices.length > 1) ...<Widget>[
|
|
721
|
+
const SizedBox(height: 12),
|
|
722
|
+
DropdownButtonFormField<String>(
|
|
723
|
+
initialValue: controller.desktopDevices.any(
|
|
724
|
+
(d) => d['deviceId']?.toString() == _cliDesktopDeviceId,
|
|
725
|
+
)
|
|
726
|
+
? _cliDesktopDeviceId
|
|
727
|
+
: null,
|
|
728
|
+
decoration: const InputDecoration(
|
|
729
|
+
labelText: 'Desktop device',
|
|
730
|
+
helperText: 'Choose which desktop companion runs CLI commands.',
|
|
731
|
+
),
|
|
732
|
+
items: controller.desktopDevices.map((device) {
|
|
733
|
+
final deviceId = device['deviceId']?.toString() ?? '';
|
|
734
|
+
final label = device['hostname']?.toString().isNotEmpty == true
|
|
735
|
+
? device['hostname']!.toString()
|
|
736
|
+
: deviceId;
|
|
737
|
+
final online = device['online'] == true;
|
|
738
|
+
return DropdownMenuItem<String>(
|
|
739
|
+
value: deviceId,
|
|
740
|
+
child: Row(
|
|
741
|
+
children: <Widget>[
|
|
742
|
+
Icon(
|
|
743
|
+
online ? Icons.circle : Icons.circle_outlined,
|
|
744
|
+
size: 10,
|
|
745
|
+
color: online ? Colors.green : Colors.grey,
|
|
746
|
+
),
|
|
747
|
+
const SizedBox(width: 8),
|
|
748
|
+
Text(label),
|
|
749
|
+
],
|
|
750
|
+
),
|
|
751
|
+
);
|
|
752
|
+
}).toList(),
|
|
753
|
+
onChanged: (value) {
|
|
754
|
+
if (value != null) {
|
|
755
|
+
setState(() => _cliDesktopDeviceId = value);
|
|
756
|
+
}
|
|
757
|
+
},
|
|
758
|
+
),
|
|
759
|
+
],
|
|
717
760
|
const SizedBox(height: 10),
|
|
718
761
|
_buildInlineTestRow(
|
|
719
762
|
label: 'CLI',
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
9647cb1542fc26ae38d596b749b42002
|
|
Binary file
|
|
@@ -37,6 +37,6 @@ _flutter.buildConfig = {"engineRevision":"4c525dac5ebe5971c5708ef73558ed8edcf4a3
|
|
|
37
37
|
|
|
38
38
|
_flutter.loader.load({
|
|
39
39
|
serviceWorkerSettings: {
|
|
40
|
-
serviceWorkerVersion: "
|
|
40
|
+
serviceWorkerVersion: "14317349" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
|
|
41
41
|
}
|
|
42
42
|
});
|