# `Connector`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `configurator-runtime.d.ts` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

Interface · `import type { Connector } from '@holostep-configurators/runtime-client/contract';` · stable · since 2.0.0 · section 12. Assembly

Authored facts plus derived world positions (computed on read). The stored plane config
([`IMagneticPlaneConfig`](IMagneticPlaneConfig.md)) lies over the GLB's `extras.holostep.connector` (spec section 6.12).

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="ref"></a>[`ref`](Connector.ref.md) | property | Which node and which plane. |
| <a id="type"></a>[`type`](Connector.type.md) | property | `extras.holostep.connector.type`, else the type segment of the plane node's cleaned name (`mp_<type>_…`), else 'default'. |
| <a id="accepts"></a>[`accepts`](Connector.accepts.md) | property | The config's `allowedTypes`, else the GLB's `accepts`. |
| <a id="free"></a>[`free`](Connector.free.md) | property | No connection yet, or the config sets `multi: true`. |
| <a id="enabled"></a>[`enabled`](Connector.enabled.md) | property | The config's, else the GLB's, else true. |
| <a id="priority"></a>[`priority`](Connector.priority.md) | property | The config's, else the GLB's, else 0. |
| <a id="position"></a>[`position`](Connector.position.md) | property | Derived: the plane's centroid, world metres. |
| <a id="normal"></a>[`normal`](Connector.normal.md) | property | Derived: the plane's mean normal, world, unit length: its NORMAL attribute through the inverse-transpose of its world matrix (spec section 6.12). |
| <a id="polygon"></a>[`polygon`](Connector.polygon.md) | property | Derived: the plane's convex hull, world metres. |
| <a id="peer"></a>[`peer`](Connector.peer.md) | property | The connector it is connected to, or null (from `connections()`). |
| <a id="meta"></a>[`meta`](Connector.meta.md) | property | The merged plane config and GLB extras: `connector` (the side), `align`, `frontDir`, `allowRotatedSnap`, `multi` and your app's own keys. |

## Declaration

```ts
export interface Connector {
  readonly ref: ConnectorRef;
  readonly type: string;
  readonly accepts: readonly string[];
  readonly free: boolean;
  readonly enabled: boolean;
  readonly priority: number;
  readonly position: ReadonlyPoint3;
  readonly normal: ReadonlyPoint3;
  readonly polygon: readonly ReadonlyPoint3[];
  readonly peer: ConnectorRef | null;
  readonly meta: Readonly<Record<string, JsonValue>>;
}
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `Connector` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | pass: 4 apps (fleet cross-check: app-04c2774145, app-4762caacdc, app-c1384707fc, app-f9a32142f1) |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
