arch-ops-server 3.2.0__tar.gz → 3.3.0__tar.gz
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.
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/PKG-INFO +1 -1
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/pyproject.toml +1 -1
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/__init__.py +1 -1
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/server.py +87 -36
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/README.md +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/aur.py +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/config.py +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/http_server.py +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/logs.py +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/mirrors.py +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/news.py +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/pacman.py +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/py.typed +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/system.py +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/system_health_check.py +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/tool_metadata.py +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/utils.py +0 -0
- {arch_ops_server-3.2.0 → arch_ops_server-3.3.0}/src/arch_ops_server/wiki.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: arch-ops-server
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.3.0
|
|
4
4
|
Summary: MCP server bridging AI assistants with Arch Linux ecosystem (Wiki, AUR, official repos)
|
|
5
5
|
Keywords: arch-linux,mcp,model-context-protocol,aur,pacman,wiki,ai-assistant
|
|
6
6
|
Author: Nihal
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "arch-ops-server"
|
|
3
|
-
version = "3.
|
|
3
|
+
version = "3.3.0"
|
|
4
4
|
description = "MCP server bridging AI assistants with Arch Linux ecosystem (Wiki, AUR, official repos)"
|
|
5
5
|
readme = {file = "README.md", content-type = "text/markdown"}
|
|
6
6
|
license = { text = "GPL-3.0-only OR MIT" }
|
|
@@ -6,7 +6,7 @@ A Model Context Protocol server that bridges AI assistants with the Arch Linux
|
|
|
6
6
|
ecosystem, providing access to the Arch Wiki, AUR, and official repositories.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
__version__ = "3.
|
|
9
|
+
__version__ = "3.3.0"
|
|
10
10
|
|
|
11
11
|
from .wiki import search_wiki, get_wiki_page, get_wiki_page_as_text
|
|
12
12
|
from .aur import (
|
|
@@ -95,6 +95,57 @@ server = Server("arch-ops-server")
|
|
|
95
95
|
# HELPER FUNCTIONS
|
|
96
96
|
# ============================================================================
|
|
97
97
|
|
|
98
|
+
def create_platform_error_message(tool_name: str, current_platform: str = None) -> str:
|
|
99
|
+
"""
|
|
100
|
+
Create an informative error message with recovery hints for platform-specific tools.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
tool_name: Name of the tool that requires Arch Linux
|
|
104
|
+
current_platform: Current platform/OS (auto-detected if not provided)
|
|
105
|
+
|
|
106
|
+
Returns:
|
|
107
|
+
Formatted error message with recovery suggestions
|
|
108
|
+
"""
|
|
109
|
+
import platform
|
|
110
|
+
|
|
111
|
+
if current_platform is None:
|
|
112
|
+
try:
|
|
113
|
+
if IS_ARCH:
|
|
114
|
+
current_platform = "Arch Linux"
|
|
115
|
+
else:
|
|
116
|
+
import distro
|
|
117
|
+
current_platform = f"{distro.name()} {distro.version()}" if distro.name() else platform.system()
|
|
118
|
+
except:
|
|
119
|
+
current_platform = platform.system()
|
|
120
|
+
|
|
121
|
+
error_msg = f"""Error: '{tool_name}' requires Arch Linux
|
|
122
|
+
|
|
123
|
+
Current system: {current_platform}
|
|
124
|
+
|
|
125
|
+
This tool requires a running Arch Linux system to function. However, you can still:
|
|
126
|
+
|
|
127
|
+
Alternative actions:
|
|
128
|
+
1. Use platform-agnostic tools:
|
|
129
|
+
- search_archwiki: Search Arch Wiki documentation (works anywhere)
|
|
130
|
+
- search_aur: Search AUR packages (works anywhere)
|
|
131
|
+
- get_official_package_info: Get package info from archlinux.org (works anywhere)
|
|
132
|
+
- get_latest_news: Check Arch Linux news (works anywhere)
|
|
133
|
+
- check_critical_news: Check for critical Arch news (works anywhere)
|
|
134
|
+
|
|
135
|
+
2. Browse documentation resources:
|
|
136
|
+
- archwiki://<page_title> - Read any Arch Wiki page
|
|
137
|
+
- aur://<package>/info - Get AUR package metadata
|
|
138
|
+
- archrepo://<package> - Get official package details
|
|
139
|
+
|
|
140
|
+
3. If you're planning to use Arch Linux:
|
|
141
|
+
- Visit the Arch Wiki Installation Guide: archwiki://Installation_guide
|
|
142
|
+
- Check latest Arch news before installing: get_latest_news
|
|
143
|
+
|
|
144
|
+
Note: Tools marked with [DISCOVERY], [SECURITY], and news-related tools work on any system."""
|
|
145
|
+
|
|
146
|
+
return error_msg
|
|
147
|
+
|
|
148
|
+
|
|
98
149
|
def create_standard_output_schema(data_schema: dict, description: str = "") -> dict:
|
|
99
150
|
"""
|
|
100
151
|
Create a standard output schema with status, data, error fields.
|
|
@@ -402,7 +453,7 @@ async def read_resource(uri: str) -> str:
|
|
|
402
453
|
|
|
403
454
|
elif scheme == "pacman":
|
|
404
455
|
if not IS_ARCH:
|
|
405
|
-
raise ValueError(
|
|
456
|
+
raise ValueError(create_platform_error_message("pacman:// resources"))
|
|
406
457
|
|
|
407
458
|
resource_path = parsed.netloc or parsed.path.lstrip('/')
|
|
408
459
|
|
|
@@ -523,7 +574,7 @@ async def read_resource(uri: str) -> str:
|
|
|
523
574
|
|
|
524
575
|
elif scheme == "mirrors":
|
|
525
576
|
if not IS_ARCH:
|
|
526
|
-
raise ValueError(
|
|
577
|
+
raise ValueError(create_platform_error_message("mirrors:// resources"))
|
|
527
578
|
|
|
528
579
|
resource_path = parsed.netloc or parsed.path.lstrip('/')
|
|
529
580
|
|
|
@@ -542,7 +593,7 @@ async def read_resource(uri: str) -> str:
|
|
|
542
593
|
|
|
543
594
|
elif scheme == "config":
|
|
544
595
|
if not IS_ARCH:
|
|
545
|
-
raise ValueError(
|
|
596
|
+
raise ValueError(create_platform_error_message("config:// resources"))
|
|
546
597
|
|
|
547
598
|
resource_path = parsed.netloc or parsed.path.lstrip('/')
|
|
548
599
|
|
|
@@ -1259,14 +1310,14 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1259
1310
|
|
|
1260
1311
|
elif name == "check_updates_dry_run":
|
|
1261
1312
|
if not IS_ARCH:
|
|
1262
|
-
return [TextContent(type="text", text="
|
|
1313
|
+
return [TextContent(type="text", text=create_platform_error_message("check_updates_dry_run"))]
|
|
1263
1314
|
|
|
1264
1315
|
result = await check_updates_dry_run()
|
|
1265
1316
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
1266
1317
|
|
|
1267
1318
|
elif name == "install_package_secure":
|
|
1268
1319
|
if not IS_ARCH:
|
|
1269
|
-
return [TextContent(type="text", text="
|
|
1320
|
+
return [TextContent(type="text", text=create_platform_error_message("install_package_secure"))]
|
|
1270
1321
|
|
|
1271
1322
|
package_name = arguments["package_name"]
|
|
1272
1323
|
result = await install_package_secure(package_name)
|
|
@@ -1285,7 +1336,7 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1285
1336
|
# Package Removal Tools
|
|
1286
1337
|
elif name == "remove_package":
|
|
1287
1338
|
if not IS_ARCH:
|
|
1288
|
-
return [TextContent(type="text", text="
|
|
1339
|
+
return [TextContent(type="text", text=create_platform_error_message("remove_package"))]
|
|
1289
1340
|
|
|
1290
1341
|
package_name = arguments["package_name"]
|
|
1291
1342
|
remove_dependencies = arguments.get("remove_dependencies", False)
|
|
@@ -1295,7 +1346,7 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1295
1346
|
|
|
1296
1347
|
elif name == "remove_packages_batch":
|
|
1297
1348
|
if not IS_ARCH:
|
|
1298
|
-
return [TextContent(type="text", text="
|
|
1349
|
+
return [TextContent(type="text", text=create_platform_error_message("remove_packages_batch"))]
|
|
1299
1350
|
|
|
1300
1351
|
package_names = arguments["package_names"]
|
|
1301
1352
|
remove_dependencies = arguments.get("remove_dependencies", False)
|
|
@@ -1305,14 +1356,14 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1305
1356
|
# Orphan Package Management
|
|
1306
1357
|
elif name == "list_orphan_packages":
|
|
1307
1358
|
if not IS_ARCH:
|
|
1308
|
-
return [TextContent(type="text", text="
|
|
1359
|
+
return [TextContent(type="text", text=create_platform_error_message("list_orphan_packages"))]
|
|
1309
1360
|
|
|
1310
1361
|
result = await list_orphan_packages()
|
|
1311
1362
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
1312
1363
|
|
|
1313
1364
|
elif name == "remove_orphans":
|
|
1314
1365
|
if not IS_ARCH:
|
|
1315
|
-
return [TextContent(type="text", text="
|
|
1366
|
+
return [TextContent(type="text", text=create_platform_error_message("remove_orphans"))]
|
|
1316
1367
|
|
|
1317
1368
|
dry_run = arguments.get("dry_run", True)
|
|
1318
1369
|
exclude = arguments.get("exclude", None)
|
|
@@ -1322,7 +1373,7 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1322
1373
|
# Package Ownership Tools
|
|
1323
1374
|
elif name == "find_package_owner":
|
|
1324
1375
|
if not IS_ARCH:
|
|
1325
|
-
return [TextContent(type="text", text="
|
|
1376
|
+
return [TextContent(type="text", text=create_platform_error_message("find_package_owner"))]
|
|
1326
1377
|
|
|
1327
1378
|
file_path = arguments["file_path"]
|
|
1328
1379
|
result = await find_package_owner(file_path)
|
|
@@ -1330,7 +1381,7 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1330
1381
|
|
|
1331
1382
|
elif name == "list_package_files":
|
|
1332
1383
|
if not IS_ARCH:
|
|
1333
|
-
return [TextContent(type="text", text="
|
|
1384
|
+
return [TextContent(type="text", text=create_platform_error_message("list_package_files"))]
|
|
1334
1385
|
|
|
1335
1386
|
package_name = arguments["package_name"]
|
|
1336
1387
|
filter_pattern = arguments.get("filter_pattern", None)
|
|
@@ -1339,7 +1390,7 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1339
1390
|
|
|
1340
1391
|
elif name == "search_package_files":
|
|
1341
1392
|
if not IS_ARCH:
|
|
1342
|
-
return [TextContent(type="text", text="
|
|
1393
|
+
return [TextContent(type="text", text=create_platform_error_message("search_package_files"))]
|
|
1343
1394
|
|
|
1344
1395
|
filename_pattern = arguments["filename_pattern"]
|
|
1345
1396
|
result = await search_package_files(filename_pattern)
|
|
@@ -1348,7 +1399,7 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1348
1399
|
# Package Verification
|
|
1349
1400
|
elif name == "verify_package_integrity":
|
|
1350
1401
|
if not IS_ARCH:
|
|
1351
|
-
return [TextContent(type="text", text="
|
|
1402
|
+
return [TextContent(type="text", text=create_platform_error_message("verify_package_integrity"))]
|
|
1352
1403
|
|
|
1353
1404
|
package_name = arguments["package_name"]
|
|
1354
1405
|
thorough = arguments.get("thorough", False)
|
|
@@ -1358,14 +1409,14 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1358
1409
|
# Package Groups
|
|
1359
1410
|
elif name == "list_package_groups":
|
|
1360
1411
|
if not IS_ARCH:
|
|
1361
|
-
return [TextContent(type="text", text="
|
|
1412
|
+
return [TextContent(type="text", text=create_platform_error_message("list_package_groups"))]
|
|
1362
1413
|
|
|
1363
1414
|
result = await list_package_groups()
|
|
1364
1415
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
1365
1416
|
|
|
1366
1417
|
elif name == "list_group_packages":
|
|
1367
1418
|
if not IS_ARCH:
|
|
1368
|
-
return [TextContent(type="text", text="
|
|
1419
|
+
return [TextContent(type="text", text=create_platform_error_message("list_group_packages"))]
|
|
1369
1420
|
|
|
1370
1421
|
group_name = arguments["group_name"]
|
|
1371
1422
|
result = await list_group_packages(group_name)
|
|
@@ -1374,14 +1425,14 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1374
1425
|
# Install Reason Management
|
|
1375
1426
|
elif name == "list_explicit_packages":
|
|
1376
1427
|
if not IS_ARCH:
|
|
1377
|
-
return [TextContent(type="text", text="
|
|
1428
|
+
return [TextContent(type="text", text=create_platform_error_message("list_explicit_packages"))]
|
|
1378
1429
|
|
|
1379
1430
|
result = await list_explicit_packages()
|
|
1380
1431
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
1381
1432
|
|
|
1382
1433
|
elif name == "mark_as_explicit":
|
|
1383
1434
|
if not IS_ARCH:
|
|
1384
|
-
return [TextContent(type="text", text="
|
|
1435
|
+
return [TextContent(type="text", text=create_platform_error_message("mark_as_explicit"))]
|
|
1385
1436
|
|
|
1386
1437
|
package_name = arguments["package_name"]
|
|
1387
1438
|
result = await mark_as_explicit(package_name)
|
|
@@ -1389,7 +1440,7 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1389
1440
|
|
|
1390
1441
|
elif name == "mark_as_dependency":
|
|
1391
1442
|
if not IS_ARCH:
|
|
1392
|
-
return [TextContent(type="text", text="
|
|
1443
|
+
return [TextContent(type="text", text=create_platform_error_message("mark_as_dependency"))]
|
|
1393
1444
|
|
|
1394
1445
|
package_name = arguments["package_name"]
|
|
1395
1446
|
result = await mark_as_dependency(package_name)
|
|
@@ -1406,7 +1457,7 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1406
1457
|
|
|
1407
1458
|
elif name == "get_pacman_cache_stats":
|
|
1408
1459
|
if not IS_ARCH:
|
|
1409
|
-
return [TextContent(type="text", text="
|
|
1460
|
+
return [TextContent(type="text", text=create_platform_error_message("get_pacman_cache_stats"))]
|
|
1410
1461
|
|
|
1411
1462
|
result = await get_pacman_cache_stats()
|
|
1412
1463
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
@@ -1434,7 +1485,7 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1434
1485
|
|
|
1435
1486
|
elif name == "get_news_since_last_update":
|
|
1436
1487
|
if not IS_ARCH:
|
|
1437
|
-
return [TextContent(type="text", text="
|
|
1488
|
+
return [TextContent(type="text", text=create_platform_error_message("get_news_since_last_update"))]
|
|
1438
1489
|
|
|
1439
1490
|
result = await get_news_since_last_update()
|
|
1440
1491
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
@@ -1442,7 +1493,7 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1442
1493
|
# Transaction log tools
|
|
1443
1494
|
elif name == "get_transaction_history":
|
|
1444
1495
|
if not IS_ARCH:
|
|
1445
|
-
return [TextContent(type="text", text="
|
|
1496
|
+
return [TextContent(type="text", text=create_platform_error_message("get_transaction_history"))]
|
|
1446
1497
|
|
|
1447
1498
|
limit = arguments.get("limit", 50)
|
|
1448
1499
|
transaction_type = arguments.get("transaction_type", "all")
|
|
@@ -1451,7 +1502,7 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1451
1502
|
|
|
1452
1503
|
elif name == "find_when_installed":
|
|
1453
1504
|
if not IS_ARCH:
|
|
1454
|
-
return [TextContent(type="text", text="
|
|
1505
|
+
return [TextContent(type="text", text=create_platform_error_message("find_when_installed"))]
|
|
1455
1506
|
|
|
1456
1507
|
package_name = arguments.get("package_name")
|
|
1457
1508
|
if not package_name:
|
|
@@ -1462,14 +1513,14 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1462
1513
|
|
|
1463
1514
|
elif name == "find_failed_transactions":
|
|
1464
1515
|
if not IS_ARCH:
|
|
1465
|
-
return [TextContent(type="text", text="
|
|
1516
|
+
return [TextContent(type="text", text=create_platform_error_message("find_failed_transactions"))]
|
|
1466
1517
|
|
|
1467
1518
|
result = await find_failed_transactions()
|
|
1468
1519
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
1469
1520
|
|
|
1470
1521
|
elif name == "get_database_sync_history":
|
|
1471
1522
|
if not IS_ARCH:
|
|
1472
|
-
return [TextContent(type="text", text="
|
|
1523
|
+
return [TextContent(type="text", text=create_platform_error_message("get_database_sync_history"))]
|
|
1473
1524
|
|
|
1474
1525
|
limit = arguments.get("limit", 20)
|
|
1475
1526
|
result = await get_database_sync_history(limit=limit)
|
|
@@ -1478,14 +1529,14 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1478
1529
|
# Mirror management tools
|
|
1479
1530
|
elif name == "list_active_mirrors":
|
|
1480
1531
|
if not IS_ARCH:
|
|
1481
|
-
return [TextContent(type="text", text="
|
|
1532
|
+
return [TextContent(type="text", text=create_platform_error_message("list_active_mirrors"))]
|
|
1482
1533
|
|
|
1483
1534
|
result = await list_active_mirrors()
|
|
1484
1535
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
1485
1536
|
|
|
1486
1537
|
elif name == "test_mirror_speed":
|
|
1487
1538
|
if not IS_ARCH:
|
|
1488
|
-
return [TextContent(type="text", text="
|
|
1539
|
+
return [TextContent(type="text", text=create_platform_error_message("test_mirror_speed"))]
|
|
1489
1540
|
|
|
1490
1541
|
mirror_url = arguments.get("mirror_url")
|
|
1491
1542
|
result = await test_mirror_speed(mirror_url=mirror_url)
|
|
@@ -1499,7 +1550,7 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1499
1550
|
|
|
1500
1551
|
elif name == "check_mirrorlist_health":
|
|
1501
1552
|
if not IS_ARCH:
|
|
1502
|
-
return [TextContent(type="text", text="
|
|
1553
|
+
return [TextContent(type="text", text=create_platform_error_message("check_mirrorlist_health"))]
|
|
1503
1554
|
|
|
1504
1555
|
result = await check_mirrorlist_health()
|
|
1505
1556
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
@@ -1507,42 +1558,42 @@ async def call_tool(name: str, arguments: dict[str, Any]) -> list[TextContent |
|
|
|
1507
1558
|
# Configuration tools
|
|
1508
1559
|
elif name == "analyze_pacman_conf":
|
|
1509
1560
|
if not IS_ARCH:
|
|
1510
|
-
return [TextContent(type="text", text="
|
|
1561
|
+
return [TextContent(type="text", text=create_platform_error_message("analyze_pacman_conf"))]
|
|
1511
1562
|
|
|
1512
1563
|
result = await analyze_pacman_conf()
|
|
1513
1564
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
1514
1565
|
|
|
1515
1566
|
elif name == "analyze_makepkg_conf":
|
|
1516
1567
|
if not IS_ARCH:
|
|
1517
|
-
return [TextContent(type="text", text="
|
|
1568
|
+
return [TextContent(type="text", text=create_platform_error_message("analyze_makepkg_conf"))]
|
|
1518
1569
|
|
|
1519
1570
|
result = await analyze_makepkg_conf()
|
|
1520
1571
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
1521
1572
|
|
|
1522
1573
|
elif name == "check_ignored_packages":
|
|
1523
1574
|
if not IS_ARCH:
|
|
1524
|
-
return [TextContent(type="text", text="
|
|
1575
|
+
return [TextContent(type="text", text=create_platform_error_message("check_ignored_packages"))]
|
|
1525
1576
|
|
|
1526
1577
|
result = await check_ignored_packages()
|
|
1527
1578
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
1528
1579
|
|
|
1529
1580
|
elif name == "get_parallel_downloads_setting":
|
|
1530
1581
|
if not IS_ARCH:
|
|
1531
|
-
return [TextContent(type="text", text="
|
|
1582
|
+
return [TextContent(type="text", text=create_platform_error_message("get_parallel_downloads_setting"))]
|
|
1532
1583
|
|
|
1533
1584
|
result = await get_parallel_downloads_setting()
|
|
1534
1585
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
1535
1586
|
|
|
1536
1587
|
elif name == "run_system_health_check":
|
|
1537
1588
|
if not IS_ARCH:
|
|
1538
|
-
return [TextContent(type="text", text="
|
|
1589
|
+
return [TextContent(type="text", text=create_platform_error_message("run_system_health_check"))]
|
|
1539
1590
|
|
|
1540
1591
|
result = await run_system_health_check()
|
|
1541
1592
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
1542
1593
|
|
|
1543
1594
|
elif name == "check_database_freshness":
|
|
1544
1595
|
if not IS_ARCH:
|
|
1545
|
-
return [TextContent(type="text", text="
|
|
1596
|
+
return [TextContent(type="text", text=create_platform_error_message("check_database_freshness"))]
|
|
1546
1597
|
|
|
1547
1598
|
result = await check_database_freshness()
|
|
1548
1599
|
return [TextContent(type="text", text=json.dumps(result, indent=2))]
|
|
@@ -1883,7 +1934,7 @@ paru -S {package_name} # or yay -S {package_name}
|
|
|
1883
1934
|
role="assistant",
|
|
1884
1935
|
content=PromptMessage.TextContent(
|
|
1885
1936
|
type="text",
|
|
1886
|
-
text="
|
|
1937
|
+
text=create_platform_error_message("safe_system_update prompt")
|
|
1887
1938
|
)
|
|
1888
1939
|
)
|
|
1889
1940
|
]
|
|
@@ -2038,7 +2089,7 @@ paru -S {package_name} # or yay -S {package_name}
|
|
|
2038
2089
|
role="assistant",
|
|
2039
2090
|
content=PromptMessage.TextContent(
|
|
2040
2091
|
type="text",
|
|
2041
|
-
text="
|
|
2092
|
+
text=create_platform_error_message("cleanup_system prompt")
|
|
2042
2093
|
)
|
|
2043
2094
|
)
|
|
2044
2095
|
]
|
|
@@ -2214,7 +2265,7 @@ Be detailed and provide specific mirror URLs and configuration commands."""
|
|
|
2214
2265
|
role="assistant",
|
|
2215
2266
|
content=PromptMessage.TextContent(
|
|
2216
2267
|
type="text",
|
|
2217
|
-
text="
|
|
2268
|
+
text=create_platform_error_message("system_health_check prompt")
|
|
2218
2269
|
)
|
|
2219
2270
|
)
|
|
2220
2271
|
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|