@operato/twin-kernel 0.7.24 → 0.7.26

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 (2) hide show
  1. package/dist/contract.d.ts +28 -0
  2. package/package.json +1 -1
@@ -131,6 +131,26 @@ levelOfType?: (type: string) => EquipmentLevel | undefined): Hierarchy;
131
131
  * 왜 이제 계약에 넣는가: 지금까지 설비 속성(`speed`)이 **계약 밖으로 흘러** 마스터에서 호스트
132
132
  * 추정기까지 `any` 로 전달됐다. 자원에 붙는 사실이 계약에 자리가 없으면 소비처마다 다르게 읽는다.
133
133
  */
134
+ /**
135
+ * 이 속성 값을 **누가 말했나** — 근거를 값과 함께 나르는 규율의 속성 판(`basis`·`derived` 와 같은 결).
136
+ *
137
+ * ── 두 낱말이 한 축이다 (2026-08-18 확정) ───────────────────────────────────
138
+ * · `reference` — **외부 원천 시스템**이 준 값이다(SCADA·WMS·MES 의 마스터). 우리가 고르지 않았다.
139
+ * · `local` — **이 트윈 쪽에서 정한 값**이다. 원천이 모르는 수(계약전력·요금 단가·축전지 충전율)를
140
+ * 운영 주체가 넣은 것이고, 사람이 넣었든 대리로 AI 가 채웠든 같다 — 축은 「누가 입력
141
+ * 했나」가 아니라 **「권위가 어디 있나」**다.
142
+ *
143
+ * ── 장소 낱말과 섞지 않는다 ────────────────────────────────────────────────
144
+ * 예전 표식은 `'site'` 였다. 그런데 이 코드에서 `site` 는 **외부 시스템이 부르는 사업장**을 뜻한다
145
+ * (SAP 는 `P3`, Oracle 은 `W01` 로 같은 현장을 부른다). 그래서 「원천이 모르는 값」에 `site` 를 달면
146
+ * 이름이 내용과 정반대가 됐다 — 내가 쓴 편지를 「받은 편지함」에 넣어 둔 셈이다. `space`(트윈이 서는
147
+ * 그릇)도 답이 아니다: 그것은 **어디**에 답하는 낱말이고, 이 축은 **누가 말했나**에 답한다.
148
+ *
149
+ * ── 표식이 없으면 ──────────────────────────────────────────────────────────
150
+ * **모델을 그린 쪽이 말한 값**이다 — 참조에서 그린 모델이면 원천이고, 템플릿으로 만든 트윈이면 그
151
+ * 템플릿이다. 즉 「모른다」가 아니라 「원천 쪽」이다. 표식은 그 기본값과 다를 때 달린다.
152
+ */
153
+ export type PropertySource = 'reference' | 'local';
134
154
  export interface ResourceProperty {
135
155
  /** 속성 식별자 — 표준 `ID`. 어휘는 표준이 정하지 않으므로 우리가 한 곳에서 정한다 — 그 자리는 읽는 쪽에 있다
136
156
  * (headless-twin `EQUIPMENT_PROPERTY`·`PROPERTY_EFFECTS`). 커널은 속성을 **나르기만** 한다. */
@@ -146,6 +166,14 @@ export interface ResourceProperty {
146
166
  children?: ResourceProperty[];
147
167
  /** 이 개체 속성이 구체화하는 **등급 속성** — 표준 `<X>ClassPropertyID`. */
148
168
  classPropertyId?: string;
169
+ /**
170
+ * 이 값을 누가 말했나(`PropertySource`) — 없으면 모델을 그린 쪽이다(대개 원천).
171
+ *
172
+ * 커널은 이 표식을 **읽지 않는다**(속성의 뜻은 `id`·`dataType`·`uom` 이 정한다). 나르기만 한다 —
173
+ * 계약에 선언해 두는 이유는, 예전에 이 표식이 **계약에 없는 필드로 얹혀 다녔기** 때문이다. 그러면
174
+ * 소비처가 `any` 로 읽고, 상태에 정말 실리는지 아무도 검사할 수 없다.
175
+ */
176
+ source?: PropertySource;
149
177
  }
150
178
  /**
151
179
  * 자격·적격을 **검증한 시험 명세**들 — 표준 `TestSpecificationID`(`maxOccurs="unbounded"`).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@operato/twin-kernel",
3
- "version": "0.7.24",
3
+ "version": "0.7.26",
4
4
  "type": "module",
5
5
  "description": "Twin Domain Kernel — framework-agnostic, zero-dep (domain + sim + 3-channel contract). WMS/YMS/MES, EPCIS 2.0 · ISA-95.",
6
6
  "publishConfig": {