arch-ops-server 3.0.1__py3-none-any.whl → 3.2.0__py3-none-any.whl

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.
@@ -0,0 +1,646 @@
1
+ # SPDX-License-Identifier: GPL-3.0-only OR MIT
2
+ """
3
+ Tool metadata and relationship definitions.
4
+
5
+ Provides structured information about tool categories, relationships, and workflows
6
+ to improve tool discovery and organization.
7
+ """
8
+
9
+ from typing import List, Literal
10
+ from dataclasses import dataclass, field
11
+
12
+ # Type aliases for clarity
13
+ Category = Literal[
14
+ "discovery",
15
+ "lifecycle",
16
+ "maintenance",
17
+ "organization",
18
+ "security",
19
+ "monitoring",
20
+ "history",
21
+ "mirrors",
22
+ "config"
23
+ ]
24
+
25
+ Platform = Literal["any", "arch", "systemd"]
26
+ Permission = Literal["read", "write"]
27
+
28
+
29
+ @dataclass
30
+ class ToolMetadata:
31
+ """Metadata for a single tool."""
32
+ name: str
33
+ category: Category
34
+ platform: Platform
35
+ permission: Permission
36
+ workflow: str
37
+ related_tools: List[str] = field(default_factory=list)
38
+ prerequisite_tools: List[str] = field(default_factory=list)
39
+
40
+
41
+ # Complete tool metadata definitions for all 41 tools
42
+ TOOL_METADATA = {
43
+ # ========================================================================
44
+ # Discovery & Information (6 tools)
45
+ # ========================================================================
46
+ "search_archwiki": ToolMetadata(
47
+ name="search_archwiki",
48
+ category="discovery",
49
+ platform="any",
50
+ permission="read",
51
+ workflow="research",
52
+ related_tools=["search_aur", "get_official_package_info"],
53
+ prerequisite_tools=[]
54
+ ),
55
+ "search_aur": ToolMetadata(
56
+ name="search_aur",
57
+ category="discovery",
58
+ platform="any",
59
+ permission="read",
60
+ workflow="research",
61
+ related_tools=[
62
+ "get_official_package_info",
63
+ "analyze_package_metadata_risk",
64
+ "analyze_pkgbuild_safety",
65
+ "install_package_secure"
66
+ ],
67
+ prerequisite_tools=[]
68
+ ),
69
+ "get_official_package_info": ToolMetadata(
70
+ name="get_official_package_info",
71
+ category="discovery",
72
+ platform="any",
73
+ permission="read",
74
+ workflow="research",
75
+ related_tools=["search_aur", "install_package_secure"],
76
+ prerequisite_tools=[]
77
+ ),
78
+ "get_latest_news": ToolMetadata(
79
+ name="get_latest_news",
80
+ category="discovery",
81
+ platform="any",
82
+ permission="read",
83
+ workflow="safety",
84
+ related_tools=["check_critical_news", "get_news_since_last_update"],
85
+ prerequisite_tools=[]
86
+ ),
87
+ "check_critical_news": ToolMetadata(
88
+ name="check_critical_news",
89
+ category="discovery",
90
+ platform="any",
91
+ permission="read",
92
+ workflow="safety",
93
+ related_tools=["get_latest_news", "check_updates_dry_run"],
94
+ prerequisite_tools=[]
95
+ ),
96
+ "get_news_since_last_update": ToolMetadata(
97
+ name="get_news_since_last_update",
98
+ category="discovery",
99
+ platform="arch",
100
+ permission="read",
101
+ workflow="safety",
102
+ related_tools=["get_latest_news", "check_critical_news"],
103
+ prerequisite_tools=[]
104
+ ),
105
+
106
+ # ========================================================================
107
+ # Package Lifecycle (4 tools)
108
+ # ========================================================================
109
+ "check_updates_dry_run": ToolMetadata(
110
+ name="check_updates_dry_run",
111
+ category="lifecycle",
112
+ platform="arch",
113
+ permission="read",
114
+ workflow="update",
115
+ related_tools=["check_critical_news", "check_disk_space"],
116
+ prerequisite_tools=[]
117
+ ),
118
+ "install_package_secure": ToolMetadata(
119
+ name="install_package_secure",
120
+ category="lifecycle",
121
+ platform="arch",
122
+ permission="write",
123
+ workflow="installation",
124
+ related_tools=[
125
+ "check_updates_dry_run",
126
+ "verify_package_integrity",
127
+ "get_transaction_history"
128
+ ],
129
+ prerequisite_tools=[
130
+ "get_official_package_info",
131
+ "analyze_pkgbuild_safety",
132
+ "analyze_package_metadata_risk"
133
+ ]
134
+ ),
135
+ "remove_package": ToolMetadata(
136
+ name="remove_package",
137
+ category="lifecycle",
138
+ platform="arch",
139
+ permission="write",
140
+ workflow="removal",
141
+ related_tools=["remove_packages_batch", "list_orphan_packages"],
142
+ prerequisite_tools=[]
143
+ ),
144
+ "remove_packages_batch": ToolMetadata(
145
+ name="remove_packages_batch",
146
+ category="lifecycle",
147
+ platform="arch",
148
+ permission="write",
149
+ workflow="removal",
150
+ related_tools=["remove_package", "remove_orphans"],
151
+ prerequisite_tools=[]
152
+ ),
153
+
154
+ # ========================================================================
155
+ # Package Maintenance (7 tools)
156
+ # ========================================================================
157
+ "list_orphan_packages": ToolMetadata(
158
+ name="list_orphan_packages",
159
+ category="maintenance",
160
+ platform="arch",
161
+ permission="read",
162
+ workflow="cleanup",
163
+ related_tools=["remove_orphans", "mark_as_explicit"],
164
+ prerequisite_tools=[]
165
+ ),
166
+ "remove_orphans": ToolMetadata(
167
+ name="remove_orphans",
168
+ category="maintenance",
169
+ platform="arch",
170
+ permission="write",
171
+ workflow="cleanup",
172
+ related_tools=["list_orphan_packages"],
173
+ prerequisite_tools=["list_orphan_packages"]
174
+ ),
175
+ "verify_package_integrity": ToolMetadata(
176
+ name="verify_package_integrity",
177
+ category="maintenance",
178
+ platform="arch",
179
+ permission="read",
180
+ workflow="verify",
181
+ related_tools=["get_transaction_history", "find_package_owner"],
182
+ prerequisite_tools=[]
183
+ ),
184
+ "list_explicit_packages": ToolMetadata(
185
+ name="list_explicit_packages",
186
+ category="maintenance",
187
+ platform="arch",
188
+ permission="read",
189
+ workflow="audit",
190
+ related_tools=["mark_as_explicit", "mark_as_dependency"],
191
+ prerequisite_tools=[]
192
+ ),
193
+ "mark_as_explicit": ToolMetadata(
194
+ name="mark_as_explicit",
195
+ category="maintenance",
196
+ platform="arch",
197
+ permission="write",
198
+ workflow="organize",
199
+ related_tools=["list_explicit_packages", "list_orphan_packages"],
200
+ prerequisite_tools=[]
201
+ ),
202
+ "mark_as_dependency": ToolMetadata(
203
+ name="mark_as_dependency",
204
+ category="maintenance",
205
+ platform="arch",
206
+ permission="write",
207
+ workflow="organize",
208
+ related_tools=["list_explicit_packages", "list_orphan_packages"],
209
+ prerequisite_tools=[]
210
+ ),
211
+ "check_database_freshness": ToolMetadata(
212
+ name="check_database_freshness",
213
+ category="maintenance",
214
+ platform="arch",
215
+ permission="read",
216
+ workflow="verify",
217
+ related_tools=["get_database_sync_history"],
218
+ prerequisite_tools=[]
219
+ ),
220
+
221
+ # ========================================================================
222
+ # File Organization (5 tools)
223
+ # ========================================================================
224
+ "find_package_owner": ToolMetadata(
225
+ name="find_package_owner",
226
+ category="organization",
227
+ platform="arch",
228
+ permission="read",
229
+ workflow="debug",
230
+ related_tools=["list_package_files", "verify_package_integrity"],
231
+ prerequisite_tools=[]
232
+ ),
233
+ "list_package_files": ToolMetadata(
234
+ name="list_package_files",
235
+ category="organization",
236
+ platform="arch",
237
+ permission="read",
238
+ workflow="explore",
239
+ related_tools=["find_package_owner", "search_package_files"],
240
+ prerequisite_tools=[]
241
+ ),
242
+ "search_package_files": ToolMetadata(
243
+ name="search_package_files",
244
+ category="organization",
245
+ platform="arch",
246
+ permission="read",
247
+ workflow="search",
248
+ related_tools=["list_package_files", "find_package_owner"],
249
+ prerequisite_tools=[]
250
+ ),
251
+ "list_package_groups": ToolMetadata(
252
+ name="list_package_groups",
253
+ category="organization",
254
+ platform="arch",
255
+ permission="read",
256
+ workflow="explore",
257
+ related_tools=["list_group_packages"],
258
+ prerequisite_tools=[]
259
+ ),
260
+ "list_group_packages": ToolMetadata(
261
+ name="list_group_packages",
262
+ category="organization",
263
+ platform="arch",
264
+ permission="read",
265
+ workflow="explore",
266
+ related_tools=["list_package_groups"],
267
+ prerequisite_tools=["list_package_groups"]
268
+ ),
269
+
270
+ # ========================================================================
271
+ # Security Analysis (2 tools)
272
+ # ========================================================================
273
+ "analyze_pkgbuild_safety": ToolMetadata(
274
+ name="analyze_pkgbuild_safety",
275
+ category="security",
276
+ platform="any",
277
+ permission="read",
278
+ workflow="audit",
279
+ related_tools=["analyze_package_metadata_risk", "install_package_secure"],
280
+ prerequisite_tools=[]
281
+ ),
282
+ "analyze_package_metadata_risk": ToolMetadata(
283
+ name="analyze_package_metadata_risk",
284
+ category="security",
285
+ platform="any",
286
+ permission="read",
287
+ workflow="audit",
288
+ related_tools=["analyze_pkgbuild_safety", "install_package_secure"],
289
+ prerequisite_tools=["search_aur"]
290
+ ),
291
+
292
+ # ========================================================================
293
+ # System Monitoring (5 tools)
294
+ # ========================================================================
295
+ "get_system_info": ToolMetadata(
296
+ name="get_system_info",
297
+ category="monitoring",
298
+ platform="any",
299
+ permission="read",
300
+ workflow="diagnose",
301
+ related_tools=["check_disk_space", "check_failed_services"],
302
+ prerequisite_tools=[]
303
+ ),
304
+ "check_disk_space": ToolMetadata(
305
+ name="check_disk_space",
306
+ category="monitoring",
307
+ platform="any",
308
+ permission="read",
309
+ workflow="diagnose",
310
+ related_tools=["get_pacman_cache_stats", "list_orphan_packages"],
311
+ prerequisite_tools=[]
312
+ ),
313
+ "get_pacman_cache_stats": ToolMetadata(
314
+ name="get_pacman_cache_stats",
315
+ category="monitoring",
316
+ platform="arch",
317
+ permission="read",
318
+ workflow="diagnose",
319
+ related_tools=["check_disk_space"],
320
+ prerequisite_tools=[]
321
+ ),
322
+ "check_failed_services": ToolMetadata(
323
+ name="check_failed_services",
324
+ category="monitoring",
325
+ platform="systemd",
326
+ permission="read",
327
+ workflow="diagnose",
328
+ related_tools=["get_boot_logs", "get_system_info"],
329
+ prerequisite_tools=[]
330
+ ),
331
+ "get_boot_logs": ToolMetadata(
332
+ name="get_boot_logs",
333
+ category="monitoring",
334
+ platform="systemd",
335
+ permission="read",
336
+ workflow="diagnose",
337
+ related_tools=["check_failed_services"],
338
+ prerequisite_tools=[]
339
+ ),
340
+
341
+ # ========================================================================
342
+ # Transaction History (4 tools)
343
+ # ========================================================================
344
+ "get_transaction_history": ToolMetadata(
345
+ name="get_transaction_history",
346
+ category="history",
347
+ platform="arch",
348
+ permission="read",
349
+ workflow="audit",
350
+ related_tools=["find_when_installed", "find_failed_transactions"],
351
+ prerequisite_tools=[]
352
+ ),
353
+ "find_when_installed": ToolMetadata(
354
+ name="find_when_installed",
355
+ category="history",
356
+ platform="arch",
357
+ permission="read",
358
+ workflow="audit",
359
+ related_tools=["get_transaction_history"],
360
+ prerequisite_tools=[]
361
+ ),
362
+ "find_failed_transactions": ToolMetadata(
363
+ name="find_failed_transactions",
364
+ category="history",
365
+ platform="arch",
366
+ permission="read",
367
+ workflow="debug",
368
+ related_tools=["get_transaction_history"],
369
+ prerequisite_tools=[]
370
+ ),
371
+ "get_database_sync_history": ToolMetadata(
372
+ name="get_database_sync_history",
373
+ category="history",
374
+ platform="arch",
375
+ permission="read",
376
+ workflow="audit",
377
+ related_tools=["check_database_freshness"],
378
+ prerequisite_tools=[]
379
+ ),
380
+
381
+ # ========================================================================
382
+ # Mirror Management (4 tools)
383
+ # ========================================================================
384
+ "list_active_mirrors": ToolMetadata(
385
+ name="list_active_mirrors",
386
+ category="mirrors",
387
+ platform="arch",
388
+ permission="read",
389
+ workflow="optimize",
390
+ related_tools=["test_mirror_speed", "check_mirrorlist_health"],
391
+ prerequisite_tools=[]
392
+ ),
393
+ "test_mirror_speed": ToolMetadata(
394
+ name="test_mirror_speed",
395
+ category="mirrors",
396
+ platform="arch",
397
+ permission="read",
398
+ workflow="optimize",
399
+ related_tools=["suggest_fastest_mirrors", "list_active_mirrors"],
400
+ prerequisite_tools=["list_active_mirrors"]
401
+ ),
402
+ "suggest_fastest_mirrors": ToolMetadata(
403
+ name="suggest_fastest_mirrors",
404
+ category="mirrors",
405
+ platform="any",
406
+ permission="read",
407
+ workflow="optimize",
408
+ related_tools=["test_mirror_speed"],
409
+ prerequisite_tools=[]
410
+ ),
411
+ "check_mirrorlist_health": ToolMetadata(
412
+ name="check_mirrorlist_health",
413
+ category="mirrors",
414
+ platform="arch",
415
+ permission="read",
416
+ workflow="verify",
417
+ related_tools=["list_active_mirrors", "suggest_fastest_mirrors"],
418
+ prerequisite_tools=[]
419
+ ),
420
+
421
+ # ========================================================================
422
+ # Configuration Management (4 tools)
423
+ # ========================================================================
424
+ "analyze_pacman_conf": ToolMetadata(
425
+ name="analyze_pacman_conf",
426
+ category="config",
427
+ platform="arch",
428
+ permission="read",
429
+ workflow="explore",
430
+ related_tools=["check_ignored_packages", "get_parallel_downloads_setting"],
431
+ prerequisite_tools=[]
432
+ ),
433
+ "analyze_makepkg_conf": ToolMetadata(
434
+ name="analyze_makepkg_conf",
435
+ category="config",
436
+ platform="arch",
437
+ permission="read",
438
+ workflow="explore",
439
+ related_tools=["analyze_pacman_conf"],
440
+ prerequisite_tools=[]
441
+ ),
442
+ "check_ignored_packages": ToolMetadata(
443
+ name="check_ignored_packages",
444
+ category="config",
445
+ platform="arch",
446
+ permission="read",
447
+ workflow="verify",
448
+ related_tools=["analyze_pacman_conf"],
449
+ prerequisite_tools=[]
450
+ ),
451
+ "get_parallel_downloads_setting": ToolMetadata(
452
+ name="get_parallel_downloads_setting",
453
+ category="config",
454
+ platform="arch",
455
+ permission="read",
456
+ workflow="explore",
457
+ related_tools=["analyze_pacman_conf"],
458
+ prerequisite_tools=[]
459
+ ),
460
+ "run_system_health_check": ToolMetadata(
461
+ name="run_system_health_check",
462
+ category="monitoring",
463
+ platform="arch",
464
+ permission="read",
465
+ workflow="diagnose",
466
+ related_tools=[
467
+ "get_system_info",
468
+ "check_disk_space",
469
+ "check_failed_services",
470
+ "get_pacman_cache_stats",
471
+ "check_updates_dry_run",
472
+ "check_critical_news",
473
+ "list_orphan_packages",
474
+ "check_database_freshness",
475
+ "check_mirrorlist_health"
476
+ ],
477
+ prerequisite_tools=[]
478
+ ),
479
+ }
480
+
481
+
482
+ # Category metadata with descriptions and icons
483
+ CATEGORIES = {
484
+ "discovery": {
485
+ "name": "Discovery & Information",
486
+ "icon": "🔍",
487
+ "description": "Search and retrieve package/documentation information",
488
+ "color": "#e1f5ff"
489
+ },
490
+ "lifecycle": {
491
+ "name": "Package Lifecycle",
492
+ "icon": "📦",
493
+ "description": "Install, update, and remove packages",
494
+ "color": "#ffe1e1"
495
+ },
496
+ "maintenance": {
497
+ "name": "Package Maintenance",
498
+ "icon": "🔧",
499
+ "description": "Analyze, verify, and maintain package health",
500
+ "color": "#fff4e1"
501
+ },
502
+ "organization": {
503
+ "name": "File Organization",
504
+ "icon": "📁",
505
+ "description": "Navigate package-file relationships",
506
+ "color": "#e1ffe1"
507
+ },
508
+ "security": {
509
+ "name": "Security Analysis",
510
+ "icon": "🔒",
511
+ "description": "Evaluate package safety before installation",
512
+ "color": "#ffe1f5"
513
+ },
514
+ "monitoring": {
515
+ "name": "System Monitoring",
516
+ "icon": "📊",
517
+ "description": "Monitor system health and diagnostics",
518
+ "color": "#f5e1ff"
519
+ },
520
+ "history": {
521
+ "name": "Transaction History",
522
+ "icon": "📜",
523
+ "description": "Audit package operations",
524
+ "color": "#e1fff5"
525
+ },
526
+ "mirrors": {
527
+ "name": "Mirror Management",
528
+ "icon": "🌐",
529
+ "description": "Optimize repository mirrors",
530
+ "color": "#fffce1"
531
+ },
532
+ "config": {
533
+ "name": "Configuration",
534
+ "icon": "⚙️",
535
+ "description": "Analyze system configuration",
536
+ "color": "#e1e1ff"
537
+ }
538
+ }
539
+
540
+
541
+ # ============================================================================
542
+ # Helper Functions
543
+ # ============================================================================
544
+
545
+ def get_tools_by_category(category: Category) -> List[str]:
546
+ """Get all tool names in a category."""
547
+ return [
548
+ name for name, meta in TOOL_METADATA.items()
549
+ if meta.category == category
550
+ ]
551
+
552
+
553
+ def get_tools_by_platform(platform: Platform) -> List[str]:
554
+ """Get all tool names for a platform."""
555
+ return [
556
+ name for name, meta in TOOL_METADATA.items()
557
+ if meta.platform == platform or meta.platform == "any"
558
+ ]
559
+
560
+
561
+ def get_tools_by_permission(permission: Permission) -> List[str]:
562
+ """Get all tool names by permission level."""
563
+ return [
564
+ name for name, meta in TOOL_METADATA.items()
565
+ if meta.permission == permission
566
+ ]
567
+
568
+
569
+ def get_related_tools(tool_name: str) -> List[str]:
570
+ """Get tools related to a given tool."""
571
+ if tool_name not in TOOL_METADATA:
572
+ return []
573
+ return TOOL_METADATA[tool_name].related_tools
574
+
575
+
576
+ def get_prerequisite_tools(tool_name: str) -> List[str]:
577
+ """Get prerequisite tools for a given tool."""
578
+ if tool_name not in TOOL_METADATA:
579
+ return []
580
+ return TOOL_METADATA[tool_name].prerequisite_tools
581
+
582
+
583
+ def get_workflow_tools(workflow: str) -> List[str]:
584
+ """Get all tools for a specific workflow."""
585
+ return [
586
+ name for name, meta in TOOL_METADATA.items()
587
+ if meta.workflow == workflow
588
+ ]
589
+
590
+
591
+ def get_category_info(category: Category) -> dict:
592
+ """Get metadata about a category."""
593
+ return CATEGORIES.get(category, {})
594
+
595
+
596
+ def get_tool_category_icon(tool_name: str) -> str:
597
+ """Get the category icon for a tool."""
598
+ if tool_name not in TOOL_METADATA:
599
+ return ""
600
+ category = TOOL_METADATA[tool_name].category
601
+ return CATEGORIES.get(category, {}).get("icon", "")
602
+
603
+
604
+ # ============================================================================
605
+ # Statistics Functions
606
+ # ============================================================================
607
+
608
+ def get_tool_statistics() -> dict:
609
+ """Get statistics about tool distribution."""
610
+ category_counts = {}
611
+ platform_counts = {}
612
+ permission_counts = {}
613
+
614
+ for meta in TOOL_METADATA.values():
615
+ # Count by category
616
+ category_counts[meta.category] = category_counts.get(meta.category, 0) + 1
617
+ # Count by platform
618
+ platform_counts[meta.platform] = platform_counts.get(meta.platform, 0) + 1
619
+ # Count by permission
620
+ permission_counts[meta.permission] = permission_counts.get(meta.permission, 0) + 1
621
+
622
+ return {
623
+ "total_tools": len(TOOL_METADATA),
624
+ "by_category": category_counts,
625
+ "by_platform": platform_counts,
626
+ "by_permission": permission_counts
627
+ }
628
+
629
+
630
+ __all__ = [
631
+ "ToolMetadata",
632
+ "TOOL_METADATA",
633
+ "CATEGORIES",
634
+ "Category",
635
+ "Platform",
636
+ "Permission",
637
+ "get_tools_by_category",
638
+ "get_tools_by_platform",
639
+ "get_tools_by_permission",
640
+ "get_related_tools",
641
+ "get_prerequisite_tools",
642
+ "get_workflow_tools",
643
+ "get_category_info",
644
+ "get_tool_category_icon",
645
+ "get_tool_statistics",
646
+ ]