rom-manager 3.3.2__tar.gz → 3.3.4__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.
Files changed (100) hide show
  1. {rom_manager-3.3.2/rom_manager.egg-info → rom_manager-3.3.4}/PKG-INFO +4 -4
  2. {rom_manager-3.3.2 → rom_manager-3.3.4}/README.md +1 -1
  3. {rom_manager-3.3.2 → rom_manager-3.3.4}/pyproject.toml +7 -3
  4. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/connectors/tool_schema_fingerprints.json +1 -1
  5. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/kg_ingest.py +1 -1
  6. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/kg_media.py +1 -1
  7. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/mcp_server.py +1 -1
  8. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/ontology/certification.json +3 -3
  9. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/version.py +1 -1
  10. {rom_manager-3.3.2 → rom_manager-3.3.4/rom_manager.egg-info}/PKG-INFO +4 -4
  11. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager.egg-info/SOURCES.txt +2 -0
  12. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager.egg-info/entry_points.txt +3 -0
  13. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager.egg-info/requires.txt +2 -2
  14. rom_manager-3.3.4/tests/test_default_content_surfaces.py +43 -0
  15. rom_manager-3.3.4/tests/test_fleet_name.py +53 -0
  16. {rom_manager-3.3.2 → rom_manager-3.3.4}/LICENSE +0 -0
  17. {rom_manager-3.3.2 → rom_manager-3.3.4}/MANIFEST.in +0 -0
  18. {rom_manager-3.3.2 → rom_manager-3.3.4}/requirements.txt +0 -0
  19. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/__init__.py +0 -0
  20. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/__main__.py +0 -0
  21. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/adapters/__init__.py +0 -0
  22. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/adapters/api_client.py +0 -0
  23. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/api_client.py +0 -0
  24. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/archives.py +0 -0
  25. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/auth.py +0 -0
  26. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/connectors/__init__.py +0 -0
  27. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/connectors/mcp_source_presets.json +0 -0
  28. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/conversion.py +0 -0
  29. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/core/__init__.py +0 -0
  30. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/core/archives.py +0 -0
  31. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/core/conversion.py +0 -0
  32. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/core/naming.py +0 -0
  33. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/game_codes.py +0 -0
  34. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/mcp/__init__.py +0 -0
  35. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/mcp/mcp_conversion.py +0 -0
  36. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/mcp/mcp_game_codes.py +0 -0
  37. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/mcp/mcp_ingest.py +0 -0
  38. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/mcp/mcp_romm.py +0 -0
  39. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/mcp_config.json +0 -0
  40. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/models/__init__.py +0 -0
  41. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/models/schemas.py +0 -0
  42. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/naming.py +0 -0
  43. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/ontology/__init__.py +0 -0
  44. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/ontology/fixtures/records.json +0 -0
  45. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/ontology/mappings/source.yaml +0 -0
  46. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/ontology/migrations/manifest.json +0 -0
  47. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/ontology/rom.ttl +0 -0
  48. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/ontology/shapes/connector.shacl.ttl +0 -0
  49. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/prompts/__init__.py +0 -0
  50. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/prompts/convert_rom.md +0 -0
  51. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/prompts/librarian_specialist.json +0 -0
  52. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/rom_manager.py +0 -0
  53. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/__init__.py +0 -0
  54. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/__init__.py +0 -0
  55. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client.py +0 -0
  56. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_base.py +0 -0
  57. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_collections.py +0 -0
  58. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_config.py +0 -0
  59. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_devices.py +0 -0
  60. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_feeds.py +0 -0
  61. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_firmware.py +0 -0
  62. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_platforms.py +0 -0
  63. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_roms.py +0 -0
  64. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_saves.py +0 -0
  65. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_screenshots.py +0 -0
  66. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_search.py +0 -0
  67. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_states.py +0 -0
  68. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_system.py +0 -0
  69. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_tasks.py +0 -0
  70. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/api/api_client_users.py +0 -0
  71. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/auth.py +0 -0
  72. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/cli.py +0 -0
  73. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/romm/openapi.json +0 -0
  74. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/skills/__init__.py +0 -0
  75. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/skills/rom-manager-conversion/SKILL.md +0 -0
  76. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/skills/rom-manager-conversion/WORKFLOW.md +0 -0
  77. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/skills/rom-manager-game-codes/SKILL.md +0 -0
  78. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/skills/rom-manager-game-codes/WORKFLOW.md +0 -0
  79. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/skills/rom-manager-library-sync/SKILL.md +0 -0
  80. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/skills/rom-manager-library-sync/WORKFLOW.md +0 -0
  81. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/skills/rom-manager-operations/SKILL.md +0 -0
  82. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/skills/rom-manager-operations/agents/openai.yaml +0 -0
  83. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager/skills/rom-manager-operations/references/catalog.md +0 -0
  84. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager.egg-info/dependency_links.txt +0 -0
  85. {rom_manager-3.3.2 → rom_manager-3.3.4}/rom_manager.egg-info/top_level.txt +0 -0
  86. {rom_manager-3.3.2 → rom_manager-3.3.4}/setup.cfg +0 -0
  87. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_archives.py +0 -0
  88. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_bridge_concepts.py +0 -0
  89. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_conversion.py +0 -0
  90. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_game_codes.py +0 -0
  91. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_init_dynamics.py +0 -0
  92. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_kg_ingest.py +0 -0
  93. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_kg_media.py +0 -0
  94. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_mcp_registration.py +0 -0
  95. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_naming.py +0 -0
  96. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_romm_cli.py +0 -0
  97. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_romm_client.py +0 -0
  98. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_romm_coverage.py +0 -0
  99. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_romm_mcp_registration.py +0 -0
  100. {rom_manager-3.3.2 → rom_manager-3.3.4}/tests/test_startup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rom-manager
3
- Version: 3.3.2
3
+ Version: 3.3.4
4
4
  Summary: ROM Converter/Organizer (CHD/RVZ) + MCP Server
5
5
  Author-email: Project Maintainers <maintainers@users.noreply.github.com>
6
6
  License: MIT
@@ -12,12 +12,12 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: <3.15,>=3.12
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.5
15
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18
16
16
  Requires-Dist: python-dotenv>=1.2.4
17
17
  Requires-Dist: tqdm>=4.70.1
18
18
  Requires-Dist: requests>=2.34.2
19
19
  Provides-Extra: mcp
20
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.5; extra == "mcp"
20
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18; extra == "mcp"
21
21
  Provides-Extra: native
22
22
  Requires-Dist: patool>=4.1.0; extra == "native"
23
23
  Provides-Extra: convert
@@ -50,7 +50,7 @@ Dynamic: license-file
50
50
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/rom-manager)
51
51
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/rom-manager)
52
52
 
53
- *Version: 3.3.2*
53
+ *Version: 3.3.4*
54
54
 
55
55
  > **Documentation** — Installation, deployment, and usage across the API, CLI, and
56
56
  > [official documentation](https://knuckles-team.github.io/rom-manager/).
@@ -17,7 +17,7 @@
17
17
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/rom-manager)
18
18
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/rom-manager)
19
19
 
20
- *Version: 3.3.2*
20
+ *Version: 3.3.4*
21
21
 
22
22
  > **Documentation** — Installation, deployment, and usage across the API, CLI, and
23
23
  > [official documentation](https://knuckles-team.github.io/rom-manager/).
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "rom-manager"
7
- version = "3.3.2"
7
+ version = "3.3.4"
8
8
  description = "ROM Converter/Organizer (CHD/RVZ) + MCP Server"
9
9
  readme = "README.md"
10
10
  classifiers = [ "Development Status :: 5 - Production/Stable", "License :: Public Domain", "Environment :: Console", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3",]
11
11
  requires-python = ">=3.12, <3.15"
12
- dependencies = [ "agent-connector-sdk[mcp]>=0.3.5,<1.0.0", "python-dotenv>=1.2.4", "tqdm>=4.70.1", "requests>=2.34.2",]
12
+ dependencies = [ "agent-connector-sdk[mcp]>=0.3.18,<1.0.0", "python-dotenv>=1.2.4", "tqdm>=4.70.1", "requests>=2.34.2",]
13
13
  [[project.authors]]
14
14
  name = "Project Maintainers"
15
15
  email = "maintainers@users.noreply.github.com"
@@ -18,7 +18,7 @@ email = "maintainers@users.noreply.github.com"
18
18
  text = "MIT"
19
19
 
20
20
  [project.optional-dependencies]
21
- mcp = [ "agent-connector-sdk[mcp]>=0.3.5,<1.0.0",]
21
+ mcp = [ "agent-connector-sdk[mcp]>=0.3.18,<1.0.0",]
22
22
  native = [ "patool>=4.1.0",]
23
23
  convert = [ "patool>=4.1.0",]
24
24
  all = [ "rom-manager[mcp,native]>=2.0.0",]
@@ -41,6 +41,10 @@ rom-manager = "rom_manager.connectors"
41
41
  [project.entry-points."agent_connector_sdk.prompt_providers"]
42
42
  rom-manager = "rom_manager.prompts"
43
43
 
44
+ # The one declared connector identity: the fleet name (SDK-CONNECTOR-CONTROL-R071).
45
+ [project.entry-points."agent_connector_sdk.connector"]
46
+ rom-manager-mcp = "rom_manager"
47
+
44
48
  [tool.uv.workspace]
45
49
  members = ["."]
46
50
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "algorithm": "agent-connector-sdk:mcp-tool-contract-compat:v2",
3
- "connector": "rom-manager",
3
+ "connector": "rom-manager-mcp",
4
4
  "schema_version": "1",
5
5
  "tools": {
6
6
  "romm_list_platforms": "1e1d60bb79222aa9b40130a6def179f8df377f2137c74627010e859d66faa554",
@@ -29,7 +29,7 @@ from agent_connector_sdk.ingest import (
29
29
 
30
30
  logger = logging.getLogger("rom_manager.kg")
31
31
 
32
- _BINDING = IngestBinding(connector="rom-manager", stream="rom")
32
+ _BINDING = IngestBinding(connector="rom-manager-mcp", stream="rom")
33
33
 
34
34
  _ENTITY_RESERVED_KEYS = frozenset({"id", "node_type"})
35
35
  _RELATIONSHIP_RESERVED_KEYS = frozenset({"source", "target", "relationship"})
@@ -30,7 +30,7 @@ from agent_connector_sdk.ingest import (
30
30
 
31
31
  logger = logging.getLogger("rom_manager.kg.media")
32
32
 
33
- _BINDING = IngestBinding(connector="rom-manager", stream="rom")
33
+ _BINDING = IngestBinding(connector="rom-manager-mcp", stream="rom")
34
34
 
35
35
 
36
36
  async def _store(
@@ -41,7 +41,7 @@ from rom_manager.api_client import Api
41
41
  from rom_manager.auth import get_client
42
42
  from rom_manager.romm import RommApi, get_romm_client
43
43
 
44
- __version__ = "3.3.2"
44
+ __version__ = "3.3.4"
45
45
  print(f"ROM Manager MCP v{__version__}", file=sys.stderr)
46
46
 
47
47
  logger = get_logger(name="mcp_server")
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "api_version": "arbora.io/v1",
3
3
  "artifacts": {
4
- "connector_manifest.yml": "84a15e7f037bba749d4706085c2d47f28d8ae73971a756eb731e837cab3446ba",
4
+ "connector_manifest.yml": "1d9b28b4d4f2a727e91d2d78f4c79ca94cb8472e62431212ef48f3505b174c01",
5
5
  "rom_manager/connectors/mcp_source_presets.json": "67d9b7bd5d67ded36310d59c75f8e2b1659180e65dbd2b40528c198af2d0eacc",
6
- "rom_manager/connectors/tool_schema_fingerprints.json": "1896628dca1369429fb799eccf62c84a7a0737320cb77d38b6a1b319701dc3e9",
6
+ "rom_manager/connectors/tool_schema_fingerprints.json": "ac7e2338afa615151e207a701e9494d8f26d2cf84fefafc0b5412f254a83a97d",
7
7
  "rom_manager/ontology/fixtures/records.json": "16e329cbb3875df819f48c6c3c28a9a08c721486ba82cbe16afe8cf269af411e",
8
8
  "rom_manager/ontology/mappings/source.yaml": "73fa61fedbbbecfdb538b6f86700d4cacedb0f5082f92342bd9a2637a4462d8a",
9
9
  "rom_manager/ontology/migrations/manifest.json": "afbc56fc66f2965bc52b701dd3f1e745d619b596d21f6cc51471fa0e85214442",
@@ -22,7 +22,7 @@
22
22
  "bundle_schema": "2",
23
23
  "epistemic_graph": ">=2.27.0,<3"
24
24
  },
25
- "connector": "rom-manager",
25
+ "connector": "rom-manager-mcp",
26
26
  "kind": "ConnectorSourceAttestation",
27
27
  "live_certified": false,
28
28
  "mode": "offline-source",
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env python
2
2
 
3
- __version__ = "3.3.2"
3
+ __version__ = "3.3.4"
4
4
  __author__ = "Project Maintainers"
5
5
  __credits__ = "Project Maintainers"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rom-manager
3
- Version: 3.3.2
3
+ Version: 3.3.4
4
4
  Summary: ROM Converter/Organizer (CHD/RVZ) + MCP Server
5
5
  Author-email: Project Maintainers <maintainers@users.noreply.github.com>
6
6
  License: MIT
@@ -12,12 +12,12 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: <3.15,>=3.12
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.5
15
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18
16
16
  Requires-Dist: python-dotenv>=1.2.4
17
17
  Requires-Dist: tqdm>=4.70.1
18
18
  Requires-Dist: requests>=2.34.2
19
19
  Provides-Extra: mcp
20
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.5; extra == "mcp"
20
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.18; extra == "mcp"
21
21
  Provides-Extra: native
22
22
  Requires-Dist: patool>=4.1.0; extra == "native"
23
23
  Provides-Extra: convert
@@ -50,7 +50,7 @@ Dynamic: license-file
50
50
  ![PyPI - Wheel](https://img.shields.io/pypi/wheel/rom-manager)
51
51
  ![PyPI - Implementation](https://img.shields.io/pypi/implementation/rom-manager)
52
52
 
53
- *Version: 3.3.2*
53
+ *Version: 3.3.4*
54
54
 
55
55
  > **Documentation** — Installation, deployment, and usage across the API, CLI, and
56
56
  > [official documentation](https://knuckles-team.github.io/rom-manager/).
@@ -83,6 +83,8 @@ rom_manager/skills/rom-manager-operations/references/catalog.md
83
83
  tests/test_archives.py
84
84
  tests/test_bridge_concepts.py
85
85
  tests/test_conversion.py
86
+ tests/test_default_content_surfaces.py
87
+ tests/test_fleet_name.py
86
88
  tests/test_game_codes.py
87
89
  tests/test_init_dynamics.py
88
90
  tests/test_kg_ingest.py
@@ -1,3 +1,6 @@
1
+ [agent_connector_sdk.connector]
2
+ rom-manager-mcp = rom_manager
3
+
1
4
  [agent_connector_sdk.ontology_providers]
2
5
  rom-manager = rom_manager.ontology
3
6
 
@@ -1,4 +1,4 @@
1
- agent-connector-sdk[mcp]<1.0.0,>=0.3.5
1
+ agent-connector-sdk[mcp]<1.0.0,>=0.3.18
2
2
  python-dotenv>=1.2.4
3
3
  tqdm>=4.70.1
4
4
  requests>=2.34.2
@@ -10,7 +10,7 @@ rom-manager[mcp,native]>=2.0.0
10
10
  patool>=4.1.0
11
11
 
12
12
  [mcp]
13
- agent-connector-sdk[mcp]<1.0.0,>=0.3.5
13
+ agent-connector-sdk[mcp]<1.0.0,>=0.3.18
14
14
 
15
15
  [native]
16
16
  patool>=4.1.0
@@ -0,0 +1,43 @@
1
+ """CONN-ROM-MANAGER-CONNECTOR-CONTENT-R001: the server lists its packaged skills, ontology and prompts by default."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import asyncio
6
+ import importlib
7
+ from pathlib import Path
8
+
9
+ import pytest
10
+ from fastmcp import Client
11
+
12
+ PACKAGE = "rom_manager"
13
+ ROOT = Path(list(importlib.import_module(PACKAGE).__path__)[0])
14
+
15
+ pytestmark = pytest.mark.spec("CONN-ROM-MANAGER-CONNECTOR-CONTENT-R001")
16
+
17
+
18
+ def _server():
19
+ namespace = {"__name__": PACKAGE + ".mcp_server"}
20
+ exec(
21
+ "from agent_connector_sdk.mcp.server import create_mcp_server\n"
22
+ "result = create_mcp_server('rom-manager-mcp', version='0', command_args=[])",
23
+ namespace,
24
+ )
25
+ return namespace["result"][1]
26
+
27
+
28
+ async def _listings():
29
+ async with Client(_server()) as client:
30
+ resources = {str(r.uri) for r in await client.list_resources()}
31
+ prompts = {p.name for p in await client.list_prompts()}
32
+ return resources, prompts
33
+
34
+
35
+ def test_default_content_surfaces() -> None:
36
+ resources, prompts = asyncio.run(_listings())
37
+ if list(ROOT.glob("skills/*/SKILL.md")):
38
+ assert any(u.startswith("skill://") for u in resources)
39
+ if list(ROOT.glob("ontology/*.ttl")):
40
+ assert any(u.startswith("ontology://rom-manager-mcp/") for u in resources)
41
+ for path in ROOT.glob("prompts/*.json"):
42
+ if not path.name.startswith("_"):
43
+ assert path.stem in prompts
@@ -0,0 +1,53 @@
1
+ """CONN-ROM-MANAGER-CONNECTOR-IDENTITY-R001: the connector is filed under its fleet name, rom-manager-mcp."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import ast
6
+ import json
7
+ import re
8
+ import tomllib
9
+ from pathlib import Path
10
+
11
+ import pytest
12
+
13
+ ROOT = Path(__file__).resolve().parents[1]
14
+ PACKAGE = ROOT / "rom_manager"
15
+ FLEET = "rom-manager-mcp"
16
+
17
+
18
+ def _call_connectors(path: Path) -> list[str]:
19
+ names = []
20
+ for node in ast.walk(ast.parse(path.read_text(encoding="utf-8"))):
21
+ if isinstance(node, ast.Call) and getattr(
22
+ node.func, "id", getattr(node.func, "attr", "")
23
+ ) in {
24
+ "IngestBinding",
25
+ "ConnectorContent",
26
+ }:
27
+ names += [
28
+ str(k.value.value)
29
+ for k in node.keywords
30
+ if k.arg == "connector" and isinstance(k.value, ast.Constant)
31
+ ]
32
+ return names
33
+
34
+
35
+ @pytest.mark.spec("CONN-ROM-MANAGER-CONNECTOR-IDENTITY-R001")
36
+ def test_connector_name_is_the_fleet_name() -> None:
37
+ pyproject = tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8"))
38
+ assert pyproject["project"]["entry-points"]["agent_connector_sdk.connector"] == {
39
+ FLEET: "rom_manager"
40
+ }
41
+ manifest_path = PACKAGE / "connector_manifest.yml"
42
+ if not manifest_path.is_file():
43
+ manifest_path = ROOT / "connector_manifest.yml"
44
+ manifest = manifest_path.read_text(encoding="utf-8")
45
+ match = re.search(r'^\s*"?connector"?\s*:\s*"?([^"\s,]+)', manifest, re.MULTILINE)
46
+ assert match is not None and match.group(1) == FLEET
47
+ fingerprints = PACKAGE / "connectors" / "tool_schema_fingerprints.json"
48
+ if fingerprints.is_file():
49
+ assert (
50
+ json.loads(fingerprints.read_text(encoding="utf-8"))["connector"] == FLEET
51
+ )
52
+ for module in sorted(PACKAGE.glob("*.py")):
53
+ assert all(name == FLEET for name in _call_connectors(module)), module.name
File without changes
File without changes
File without changes