letfixit 0.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.
Files changed (46) hide show
  1. package/.env.example +33 -0
  2. package/README.md +226 -0
  3. package/adapters/android/build.gradle +28 -0
  4. package/adapters/android/src/main/kotlin/dev/perfanalyzer/ChoreographerAdapter.kt +43 -0
  5. package/adapters/android/src/main/kotlin/dev/perfanalyzer/LogcatReader.kt +64 -0
  6. package/adapters/android/src/main/kotlin/dev/perfanalyzer/MemoryObserver.kt +46 -0
  7. package/adapters/android/src/main/kotlin/dev/perfanalyzer/OkHttpInterceptor.kt +53 -0
  8. package/adapters/android/src/main/kotlin/dev/perfanalyzer/PerfAnalyzer.kt +100 -0
  9. package/adapters/flutter/lib/perf_analyzer.dart +73 -0
  10. package/adapters/flutter/lib/src/frame_observer.dart +45 -0
  11. package/adapters/flutter/lib/src/network_observer.dart +72 -0
  12. package/adapters/flutter/lib/src/rebuild_observer.dart +57 -0
  13. package/adapters/flutter/lib/src/universal_event.dart +50 -0
  14. package/adapters/flutter/lib/src/vm_service_adapter.dart +81 -0
  15. package/adapters/flutter/pubspec.lock +184 -0
  16. package/adapters/flutter/pubspec.yaml +13 -0
  17. package/config/model.manifest.example.json +108 -0
  18. package/config/model.manifest.json +108 -0
  19. package/core/schema/universal_event.dart +63 -0
  20. package/dashboard/dist/assets/index-D5TCSsvB.js +107 -0
  21. package/dashboard/dist/index.html +118 -0
  22. package/package.json +62 -0
  23. package/scripts/encrypt-model.js +86 -0
  24. package/scripts/fill-manifest.js +67 -0
  25. package/scripts/load-env.js +20 -0
  26. package/scripts/model_crypto.js +14 -0
  27. package/scripts/setup-model.js +269 -0
  28. package/server/adb_bridge.js +201 -0
  29. package/server/adb_score.js +77 -0
  30. package/server/ai_proxy.js +373 -0
  31. package/server/analysis_engine.js +222 -0
  32. package/server/android_bridge.js +124 -0
  33. package/server/android_live.js +167 -0
  34. package/server/data/device_gpu_db.json +465 -0
  35. package/server/device_db.js +94 -0
  36. package/server/device_review.js +146 -0
  37. package/server/finding_generator.js +56 -0
  38. package/server/flutter_bridge.js +414 -0
  39. package/server/index.js +619 -0
  40. package/server/ios_bridge.js +181 -0
  41. package/server/model_config.js +54 -0
  42. package/server/report_template.js +169 -0
  43. package/server/session_manager.js +370 -0
  44. package/server/widget_gpu_classifier.js +77 -0
  45. package/server/widget_triage.js +78 -0
  46. package/setup.sh +160 -0
@@ -0,0 +1,45 @@
1
+ import 'dart:async';
2
+ import 'universal_event.dart';
3
+ import 'vm_service_adapter.dart';
4
+
5
+ class FrameObserver {
6
+ final VMServiceAdapter _adapter;
7
+ final _controller = StreamController<UniversalEvent>.broadcast();
8
+ final List<double> _frameBuffer = [];
9
+ int _jankCount = 0;
10
+
11
+ Stream<UniversalEvent> get events => _controller.stream;
12
+ int get jankCount => _jankCount;
13
+
14
+ FrameObserver(this._adapter) {
15
+ _adapter.eventStream
16
+ .where((e) => e.event == 'frame')
17
+ .listen(_process);
18
+ }
19
+
20
+ void _process(UniversalEvent e) {
21
+ final ms = (e.metric['value'] as num).toDouble();
22
+ _frameBuffer.add(ms);
23
+ if (_frameBuffer.length > 60) _frameBuffer.removeAt(0);
24
+ if (ms > 16.6) _jankCount++;
25
+
26
+ final avg = _frameBuffer.reduce((a, b) => a + b) / _frameBuffer.length;
27
+ final fps = (1000.0 / avg).clamp(0.0, 120.0);
28
+
29
+ _controller.add(UniversalEvent(
30
+ platform: e.platform,
31
+ event: 'frame',
32
+ timestamp: e.timestamp,
33
+ severity: e.severity,
34
+ metric: {
35
+ ...e.metric,
36
+ 'fps': double.parse(fps.toStringAsFixed(1)),
37
+ 'jankCount': _jankCount,
38
+ },
39
+ context: e.context,
40
+ raw: e.raw,
41
+ ));
42
+ }
43
+
44
+ void dispose() => _controller.close();
45
+ }
@@ -0,0 +1,72 @@
1
+ import 'dart:async';
2
+ import 'package:http/http.dart' as http;
3
+ import 'universal_event.dart';
4
+
5
+ class PerfHttpClient extends http.BaseClient {
6
+ final http.Client _inner;
7
+ final void Function(UniversalEvent) _onEvent;
8
+
9
+ PerfHttpClient({http.Client? inner, required void Function(UniversalEvent) onEvent})
10
+ : _inner = inner ?? http.Client(),
11
+ _onEvent = onEvent;
12
+
13
+ @override
14
+ Future<http.StreamedResponse> send(http.BaseRequest request) async {
15
+ final start = DateTime.now().millisecondsSinceEpoch;
16
+ final streamed = await _inner.send(request);
17
+ final bytes = await streamed.stream.toBytes();
18
+ final duration = DateTime.now().millisecondsSinceEpoch - start;
19
+ final size = bytes.length;
20
+
21
+ _onEvent(UniversalEvent(
22
+ platform: 'flutter',
23
+ event: 'api',
24
+ timestamp: DateTime.now().millisecondsSinceEpoch,
25
+ severity: size > 512000 ? 'high' : duration > 500 ? 'medium' : 'low',
26
+ metric: {
27
+ 'value': size,
28
+ 'unit': 'bytes',
29
+ 'budget': 512000,
30
+ 'exceededBy': size > 512000 ? size - 512000 : 0,
31
+ 'durationMs': duration,
32
+ 'url': request.url.toString(),
33
+ 'method': request.method,
34
+ 'status': streamed.statusCode,
35
+ },
36
+ context: {},
37
+ ));
38
+
39
+ return http.StreamedResponse(
40
+ Stream.value(bytes),
41
+ streamed.statusCode,
42
+ contentLength: bytes.length,
43
+ request: streamed.request,
44
+ headers: streamed.headers,
45
+ isRedirect: streamed.isRedirect,
46
+ persistentConnection: streamed.persistentConnection,
47
+ reasonPhrase: streamed.reasonPhrase,
48
+ );
49
+ }
50
+
51
+ @override
52
+ void close() {
53
+ _inner.close();
54
+ super.close();
55
+ }
56
+ }
57
+
58
+ class NetworkObserver {
59
+ final _controller = StreamController<UniversalEvent>.broadcast();
60
+ late final PerfHttpClient client;
61
+
62
+ Stream<UniversalEvent> get events => _controller.stream;
63
+
64
+ NetworkObserver() {
65
+ client = PerfHttpClient(onEvent: (e) => _controller.add(e));
66
+ }
67
+
68
+ void dispose() {
69
+ client.close();
70
+ _controller.close();
71
+ }
72
+ }
@@ -0,0 +1,57 @@
1
+ import 'dart:async';
2
+ import 'universal_event.dart';
3
+ import 'vm_service_adapter.dart';
4
+
5
+ class RebuildObserver {
6
+ final VMServiceAdapter _adapter;
7
+ final _controller = StreamController<UniversalEvent>.broadcast();
8
+ final Map<String, int> _counts = {};
9
+ Timer? _flushTimer;
10
+
11
+ Stream<UniversalEvent> get events => _controller.stream;
12
+
13
+ RebuildObserver(this._adapter) {
14
+ _adapter.eventStream
15
+ .where((e) => e.event == 'rebuild')
16
+ .listen(_process);
17
+ _flushTimer = Timer.periodic(const Duration(seconds: 1), (_) => _flush());
18
+ }
19
+
20
+ void _process(UniversalEvent e) {
21
+ final widget = e.widget ?? 'Unknown';
22
+ _counts[widget] = (_counts[widget] ?? 0) + 1;
23
+ }
24
+
25
+ void _flush() {
26
+ if (_counts.isEmpty) return;
27
+ _counts.forEach((widget, count) {
28
+ final severity = count > 30
29
+ ? 'critical'
30
+ : count > 15
31
+ ? 'high'
32
+ : count > 10
33
+ ? 'medium'
34
+ : 'low';
35
+ _controller.add(UniversalEvent(
36
+ platform: 'flutter',
37
+ event: 'rebuild',
38
+ timestamp: DateTime.now().millisecondsSinceEpoch,
39
+ severity: severity,
40
+ widget: widget,
41
+ metric: {
42
+ 'value': count,
43
+ 'unit': 'rebuilds/s',
44
+ 'budget': 10,
45
+ 'exceededBy': count > 10 ? count - 10 : 0,
46
+ },
47
+ context: {},
48
+ ));
49
+ });
50
+ _counts.clear();
51
+ }
52
+
53
+ void dispose() {
54
+ _flushTimer?.cancel();
55
+ _controller.close();
56
+ }
57
+ }
@@ -0,0 +1,50 @@
1
+ class UniversalEvent {
2
+ final String platform;
3
+ final String event;
4
+ final int timestamp;
5
+ final String severity;
6
+ final String? widget;
7
+ final Map<String, dynamic> metric;
8
+ final Map<String, dynamic> context;
9
+ final Map<String, dynamic>? raw;
10
+
11
+ UniversalEvent({
12
+ required this.platform,
13
+ required this.event,
14
+ required this.timestamp,
15
+ required this.severity,
16
+ this.widget,
17
+ required this.metric,
18
+ required this.context,
19
+ this.raw,
20
+ });
21
+
22
+ Map<String, dynamic> toJson() => {
23
+ 'platform': platform,
24
+ 'event': event,
25
+ 'timestamp': timestamp,
26
+ 'severity': severity,
27
+ 'widget': widget,
28
+ 'metric': metric,
29
+ 'context': context,
30
+ if (raw != null) 'raw': raw,
31
+ };
32
+ }
33
+
34
+ class PerfConfig {
35
+ final String? groqKey;
36
+ final String? geminiKey;
37
+ final String? claudeKey;
38
+ final int port;
39
+ final bool enableLocalAI;
40
+ final int localAIPort;
41
+
42
+ const PerfConfig({
43
+ this.groqKey,
44
+ this.geminiKey,
45
+ this.claudeKey,
46
+ this.port = 8081,
47
+ this.enableLocalAI = true,
48
+ this.localAIPort = 8080,
49
+ });
50
+ }
@@ -0,0 +1,81 @@
1
+ import 'dart:async';
2
+ import 'package:vm_service/vm_service.dart';
3
+ import 'package:vm_service/vm_service_io.dart';
4
+ import 'universal_event.dart';
5
+
6
+ class VMServiceAdapter {
7
+ VmService? _service;
8
+ final _controller = StreamController<UniversalEvent>.broadcast();
9
+
10
+ Stream<UniversalEvent> get eventStream => _controller.stream;
11
+
12
+ Future<void> connect({String uri = 'ws://127.0.0.1:8181/ws'}) async {
13
+ _service = await vmServiceConnectUri(uri);
14
+
15
+ await _service!.streamListen(EventStreams.kExtension);
16
+ await _service!.streamListen(EventStreams.kTimeline);
17
+ await _service!.streamListen(EventStreams.kIsolate);
18
+
19
+ _service!.onExtensionEvent.listen(_handleExtensionEvent);
20
+ _service!.onTimelineEvent.listen(_handleTimelineEvent);
21
+
22
+ try {
23
+ await _service!.setVMTimelineFlags(['Dart', 'Embedder']);
24
+ } catch (_) {}
25
+ }
26
+
27
+ void _handleExtensionEvent(Event event) {
28
+ if (event.extensionKind != '_Flutter.FrameEnd') return;
29
+ final d = event.extensionData?.data ?? {};
30
+ final buildUs = (d['build'] as num?)?.toDouble() ?? 0.0;
31
+ final layoutUs = (d['layout'] as num?)?.toDouble() ?? 0.0;
32
+ final paintUs = (d['paint'] as num?)?.toDouble() ?? 0.0;
33
+ final totalMs = (buildUs + layoutUs + paintUs) / 1000.0;
34
+
35
+ _controller.add(UniversalEvent(
36
+ platform: 'flutter',
37
+ event: 'frame',
38
+ timestamp: DateTime.now().millisecondsSinceEpoch,
39
+ severity: totalMs > 33 ? 'critical' : totalMs > 16.6 ? 'high' : 'low',
40
+ metric: {
41
+ 'value': double.parse(totalMs.toStringAsFixed(2)),
42
+ 'unit': 'ms',
43
+ 'budget': 16.6,
44
+ 'exceededBy': totalMs > 16.6 ? double.parse((totalMs - 16.6).toStringAsFixed(2)) : 0,
45
+ 'build': double.parse((buildUs / 1000).toStringAsFixed(2)),
46
+ 'layout': double.parse((layoutUs / 1000).toStringAsFixed(2)),
47
+ 'paint': double.parse((paintUs / 1000).toStringAsFixed(2)),
48
+ },
49
+ context: {},
50
+ raw: Map<String, dynamic>.from(d),
51
+ ));
52
+ }
53
+
54
+ void _handleTimelineEvent(Event event) {
55
+ final events = event.timelineEvents;
56
+ if (events == null) return;
57
+ for (final e in events) {
58
+ final json = e.json ?? {};
59
+ final name = json['name'] as String? ?? '';
60
+ final phase = json['ph'] as String? ?? '';
61
+ if (!name.startsWith('BUILD') || phase != 'B') continue;
62
+ final args = json['args'] as Map<String, dynamic>? ?? {};
63
+ final widgetName = args['type']?.toString() ?? name.replaceFirst('BUILD', '').trim();
64
+ if (widgetName.isEmpty) continue;
65
+ _controller.add(UniversalEvent(
66
+ platform: 'flutter',
67
+ event: 'rebuild',
68
+ timestamp: DateTime.now().millisecondsSinceEpoch,
69
+ severity: 'medium',
70
+ widget: widgetName,
71
+ metric: {'value': 1, 'unit': 'rebuild', 'budget': 10},
72
+ context: {},
73
+ ));
74
+ }
75
+ }
76
+
77
+ Future<void> dispose() async {
78
+ await _service?.dispose();
79
+ await _controller.close();
80
+ }
81
+ }
@@ -0,0 +1,184 @@
1
+ # Generated by pub
2
+ # See https://dart.dev/tools/pub/glossary#lockfile
3
+ packages:
4
+ async:
5
+ dependency: transitive
6
+ description:
7
+ name: async
8
+ sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37
9
+ url: "https://pub.dev"
10
+ source: hosted
11
+ version: "2.13.1"
12
+ characters:
13
+ dependency: transitive
14
+ description:
15
+ name: characters
16
+ sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
17
+ url: "https://pub.dev"
18
+ source: hosted
19
+ version: "1.4.0"
20
+ collection:
21
+ dependency: transitive
22
+ description:
23
+ name: collection
24
+ sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
25
+ url: "https://pub.dev"
26
+ source: hosted
27
+ version: "1.19.1"
28
+ crypto:
29
+ dependency: transitive
30
+ description:
31
+ name: crypto
32
+ sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf
33
+ url: "https://pub.dev"
34
+ source: hosted
35
+ version: "3.0.7"
36
+ flutter:
37
+ dependency: "direct main"
38
+ description: flutter
39
+ source: sdk
40
+ version: "0.0.0"
41
+ http:
42
+ dependency: "direct main"
43
+ description:
44
+ name: http
45
+ sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412"
46
+ url: "https://pub.dev"
47
+ source: hosted
48
+ version: "1.6.0"
49
+ http_parser:
50
+ dependency: transitive
51
+ description:
52
+ name: http_parser
53
+ sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
54
+ url: "https://pub.dev"
55
+ source: hosted
56
+ version: "4.1.2"
57
+ material_color_utilities:
58
+ dependency: transitive
59
+ description:
60
+ name: material_color_utilities
61
+ sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
62
+ url: "https://pub.dev"
63
+ source: hosted
64
+ version: "0.11.1"
65
+ meta:
66
+ dependency: transitive
67
+ description:
68
+ name: meta
69
+ sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
70
+ url: "https://pub.dev"
71
+ source: hosted
72
+ version: "1.17.0"
73
+ path:
74
+ dependency: transitive
75
+ description:
76
+ name: path
77
+ sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
78
+ url: "https://pub.dev"
79
+ source: hosted
80
+ version: "1.9.1"
81
+ shelf:
82
+ dependency: "direct main"
83
+ description:
84
+ name: shelf
85
+ sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
86
+ url: "https://pub.dev"
87
+ source: hosted
88
+ version: "1.4.2"
89
+ shelf_web_socket:
90
+ dependency: "direct main"
91
+ description:
92
+ name: shelf_web_socket
93
+ sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
94
+ url: "https://pub.dev"
95
+ source: hosted
96
+ version: "1.0.4"
97
+ sky_engine:
98
+ dependency: transitive
99
+ description: flutter
100
+ source: sdk
101
+ version: "0.0.0"
102
+ source_span:
103
+ dependency: transitive
104
+ description:
105
+ name: source_span
106
+ sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab"
107
+ url: "https://pub.dev"
108
+ source: hosted
109
+ version: "1.10.2"
110
+ stack_trace:
111
+ dependency: transitive
112
+ description:
113
+ name: stack_trace
114
+ sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
115
+ url: "https://pub.dev"
116
+ source: hosted
117
+ version: "1.12.1"
118
+ stream_channel:
119
+ dependency: transitive
120
+ description:
121
+ name: stream_channel
122
+ sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
123
+ url: "https://pub.dev"
124
+ source: hosted
125
+ version: "2.1.4"
126
+ string_scanner:
127
+ dependency: transitive
128
+ description:
129
+ name: string_scanner
130
+ sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
131
+ url: "https://pub.dev"
132
+ source: hosted
133
+ version: "1.4.1"
134
+ term_glyph:
135
+ dependency: transitive
136
+ description:
137
+ name: term_glyph
138
+ sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
139
+ url: "https://pub.dev"
140
+ source: hosted
141
+ version: "1.2.2"
142
+ typed_data:
143
+ dependency: transitive
144
+ description:
145
+ name: typed_data
146
+ sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
147
+ url: "https://pub.dev"
148
+ source: hosted
149
+ version: "1.4.0"
150
+ vector_math:
151
+ dependency: transitive
152
+ description:
153
+ name: vector_math
154
+ sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
155
+ url: "https://pub.dev"
156
+ source: hosted
157
+ version: "2.2.0"
158
+ vm_service:
159
+ dependency: "direct main"
160
+ description:
161
+ name: vm_service
162
+ sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
163
+ url: "https://pub.dev"
164
+ source: hosted
165
+ version: "14.3.1"
166
+ web:
167
+ dependency: transitive
168
+ description:
169
+ name: web
170
+ sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
171
+ url: "https://pub.dev"
172
+ source: hosted
173
+ version: "0.5.1"
174
+ web_socket_channel:
175
+ dependency: "direct main"
176
+ description:
177
+ name: web_socket_channel
178
+ sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42"
179
+ url: "https://pub.dev"
180
+ source: hosted
181
+ version: "2.4.5"
182
+ sdks:
183
+ dart: ">=3.8.0-0 <4.0.0"
184
+ flutter: ">=3.10.0"
@@ -0,0 +1,13 @@
1
+ name: perf_analyzer
2
+ description: Flutter performance analyzer with AI suggestions
3
+ version: 0.1.0
4
+ environment:
5
+ sdk: '>=3.0.0 <4.0.0'
6
+ flutter: '>=3.10.0'
7
+ dependencies:
8
+ flutter: { sdk: flutter }
9
+ vm_service: ^14.0.0
10
+ shelf: ^1.4.0
11
+ shelf_web_socket: ^1.0.0
12
+ web_socket_channel: ^2.4.0
13
+ http: ^1.0.0
@@ -0,0 +1,108 @@
1
+ {
2
+ "name": "Ultron n0-beta",
3
+ "algorithm": "aes-256-gcm",
4
+ "salt": "31e4e3752dc130fdb06d1cd414c95fe6",
5
+ "sha256": "67514959734347b17cce57ab75e9e91cd469e57830acbd8ee2a4363060431741",
6
+ "chunks": [
7
+ {
8
+ "index": 0,
9
+ "file": "chunk.00.enc",
10
+ "url": "https://github.com/JahidDev24/ultron-LLM-Coder/releases/download/model-v0/chunk.00.enc",
11
+ "mirrors": [],
12
+ "iv": "fcd6ee403d8f8473e23ce821",
13
+ "authTag": "df00715413757710dccfa596c10b8622",
14
+ "sha256": "f22507109a4ac95316fb6cc7766d6c204699b7f5cb922b30194959820f3564dc",
15
+ "bytes": 283707303
16
+ },
17
+ {
18
+ "index": 1,
19
+ "file": "chunk.01.enc",
20
+ "url": "https://github.com/JahidDev24/ultron-LLM-Coder/releases/download/model-v0/chunk.01.enc",
21
+ "mirrors": [],
22
+ "iv": "76cf80f7e08f16c0756ea832",
23
+ "authTag": "ab448e19883f295a4642aa0aad402f5d",
24
+ "sha256": "1d519c69732bcfdea0b1c13418446166b3b86ce0faf983f8397bac4618e2a481",
25
+ "bytes": 283707303
26
+ },
27
+ {
28
+ "index": 2,
29
+ "file": "chunk.02.enc",
30
+ "url": "https://github.com/JahidDev24/ultron-LLM-Coder/releases/download/model-v0/chunk.02.enc",
31
+ "mirrors": [],
32
+ "iv": "2e60c9812f262867f8e69ba2",
33
+ "authTag": "381826635520ea6d3a518d9fd2dfc736",
34
+ "sha256": "f30d25c7f6407fbf8b1596cf8a378b663269597507b22992d86643ceba305051",
35
+ "bytes": 283707303
36
+ },
37
+ {
38
+ "index": 3,
39
+ "file": "chunk.03.enc",
40
+ "url": "https://github.com/JahidDev24/ultron-LLM-Coder/releases/download/model-v0/chunk.03.enc",
41
+ "mirrors": [],
42
+ "iv": "06d919628e95861a7aa0d822",
43
+ "authTag": "082d1e84bc3f604257cb0114fea8ddac",
44
+ "sha256": "c03f4b03f675c8fe84ac66dd8f1d4ffc2e582e1fb58c6d25e40c2be3a5abb55f",
45
+ "bytes": 283707303
46
+ },
47
+ {
48
+ "index": 4,
49
+ "file": "chunk.04.enc",
50
+ "url": "https://github.com/JahidDev24/ultron-LLM-Coder/releases/download/model-v0/chunk.04.enc",
51
+ "mirrors": [],
52
+ "iv": "76b1c96051d6bb614aded2c2",
53
+ "authTag": "6d7c8b0a946cf3916e94072236d1efa3",
54
+ "sha256": "42f0cf97147b7ed833a42fbc323fbfe61dadcdab67272c0056f7f50fe9eabe92",
55
+ "bytes": 283707302
56
+ },
57
+ {
58
+ "index": 5,
59
+ "file": "chunk.05.enc",
60
+ "url": "https://github.com/JahidDev24/ultron-LLM-Coder/releases/download/model-v0-2/chunk.05.enc",
61
+ "mirrors": [],
62
+ "iv": "a1e775f8617e40eb7efcc79f",
63
+ "authTag": "f29086a6954538f942e8f387d19545c4",
64
+ "sha256": "0918b34baf837ce8e6b13c43430b1a5b4cc09597084180be12fb433ee02371e7",
65
+ "bytes": 283707302
66
+ },
67
+ {
68
+ "index": 6,
69
+ "file": "chunk.06.enc",
70
+ "url": "https://github.com/JahidDev24/ultron-LLM-Coder/releases/download/model-v0-2/chunk.06.enc",
71
+ "mirrors": [],
72
+ "iv": "83e4b0edf971f8a567f09351",
73
+ "authTag": "b803d7b5df6c5354567eae445b608b92",
74
+ "sha256": "bc38aa59ddcb4c62553208abc6cfa39a9f8a45b0fd15579be421c743e662562c",
75
+ "bytes": 283707302
76
+ },
77
+ {
78
+ "index": 7,
79
+ "file": "chunk.07.enc",
80
+ "url": "https://github.com/JahidDev24/ultron-LLM-Coder/releases/download/model-v0-2/chunk.07.enc",
81
+ "mirrors": [],
82
+ "iv": "fbbfe0890b073377a505f000",
83
+ "authTag": "eed74a1fe67710a254dc92997d239ec5",
84
+ "sha256": "2f824e82f9059e244dd448a0eb9521de87918f3da2ae2622caf5ef4fbfeb2f5d",
85
+ "bytes": 283707302
86
+ },
87
+ {
88
+ "index": 8,
89
+ "file": "chunk.08.enc",
90
+ "url": "https://github.com/JahidDev24/ultron-LLM-Coder/releases/download/model-v0-2/chunk.08.enc",
91
+ "mirrors": [],
92
+ "iv": "e21a61b235abb6cb538085d8",
93
+ "authTag": "93f0d09f3f1835aced4a3f34f2cacf93",
94
+ "sha256": "1d73745269c8979b4320196139e14076c6bb6db517de7b1051e381d11f92bcaa",
95
+ "bytes": 283707302
96
+ },
97
+ {
98
+ "index": 9,
99
+ "file": "chunk.09.enc",
100
+ "url": "https://github.com/JahidDev24/ultron-LLM-Coder/releases/download/model-v0-2/chunk.09.enc",
101
+ "mirrors": [],
102
+ "iv": "c5eba14c26399d45801f7e8b",
103
+ "authTag": "d2456e0981d60058c34cd71ec4f57f09",
104
+ "sha256": "f46e49ae0c6ac159c1f76aa608893cc1448deb23134617b4dbf37adffda55e35",
105
+ "bytes": 283707302
106
+ }
107
+ ]
108
+ }