Metadata-Version: 2.4
Name: plm-connector-sdk
Version: 1.3.1
Summary: Decorator-based authoring surface for read-only connectors against external PLM systems (Teamcenter / 3DEXPERIENCE / Windchill / ERP / ALM). Ships the @connector and @read_method decorators, five frozen Pydantic v2 wire shapes, a process-local registry, a CR_* error catalogue, an evidence factory, a connector-agnostic conformance harness and the plm-new-connector generator. Read-only by design, and carries no transport of its own.
Author: TracePulse
License: Proprietary
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: pydantic>=2.5.0
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-asyncio; extra == "test"
Requires-Dist: mypy>=1.8; extra == "test"
Requires-Dist: ruff>=0.3; extra == "test"
Requires-Dist: import-linter; extra == "test"
Provides-Extra: docs
Requires-Dist: pdoc>=14.0; extra == "docs"

# plm-connector-sdk

Wave 5 Conv D (FTR-605 V1 head) — decorator-based authoring surface for
read-only connectors against external PLM systems.

## Quick start

```python
from plm_connector_sdk import (
    ConnectorContext,
    ConnectorReadRequest,
    ConnectorReadResult,
    connector,
    read_method,
)


@connector(id="teamcenter", version="1.0.0", description="Teamcenter ref")
class TeamcenterConnector:
    @read_method(name="get_item", evidence_ref_type="tc.item")
    async def get_item(
        self, request: ConnectorReadRequest, ctx: ConnectorContext
    ) -> ConnectorReadResult:
        ...
```

## Federation with standalone MCP repos

Wave 5 Conv D ships the in-tree reference (`teamcenter`) only. Real
production connectors for 3DEXPERIENCE / PTC Windchill live in standalone
MCP-spec repos and federate at V1.1+ via the same `ConnectorRuntime`
Protocol consumed by the engine-core dispatcher (no Python-level
coupling — the dispatcher routes by `connector_id` to either an
in-tree decorator-registered runtime OR an external MCP server URL once
the wire protocol surface lands).

## Authoring a new connector

See [`.federation/authoring-a-connector.md`](../.federation/authoring-a-connector.md)
for the full generate → fill → verify workflow.

## Import-linter contracts

* `plm_connector_sdk` MUST NOT import `plm_engine_core`.
* `plm_connector_sdk` MUST NOT import `plm_skill_kernel`.
* `plm_connector_sdk` MUST NOT import `plm_accelerators` (Workbench).
