@openengio/cli 0.33.0 → 0.36.0

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openengio/cli",
3
- "version": "0.33.0",
3
+ "version": "0.36.0",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "engines": {
@@ -186,8 +186,12 @@ An enum's `members` is a list of strings or finite numbers. A published member c
186
186
 
187
187
  ### number
188
188
 
189
+ A number or integer may declare a unit under schema language version `4`. The value is still
190
+ a number, displayed with that unit. Publication refuses unknown symbols (`unknown-unit`), and
191
+ a later version may add a unit but cannot change or remove it (`changed-unit`).
192
+
189
193
  ```json
190
- {"kind": "number"}
194
+ {"kind": "number", "unit": "kg"}
191
195
  ```
192
196
 
193
197
  ### integer
@@ -251,6 +255,21 @@ one property's bytes.
251
255
  }
252
256
  ```
253
257
 
258
+ ### bound
259
+
260
+ A quantitative constraint on a top-level object property, or an entry in a top-level array of
261
+ bounds, under schema language version `4`. A value such as
262
+ `{"over":"each","quantity":"mass","comparison":"<=","value":100,"unit":"kg"}` compares
263
+ each linked object's mass against 100 kg. `sum`, `min`, `max` and `count` aggregate the linked
264
+ values. A limit may instead be `{ "property": "allocation" }`, read from this object's own
265
+ numeric property. `within` requires a non-negative `tolerance`; other comparisons take none.
266
+ Compatible units are converted for comparison; incompatible units answer `unit-mismatch`.
267
+ Bounds answer independently of review: clearing a suspect link does not make an `out` bound `in`.
268
+
269
+ ```json
270
+ {"kind": "bound"}
271
+ ```
272
+
254
273
  ## 9. Examples
255
274
 
256
275
  These are small type documents to adapt and validate in a change set before accepting it.
@@ -54,6 +54,44 @@ attachment properties, and `openeng attachment get <object> <property> [--out <p
54
54
  project and ref flags to download it. The `get` command uses the descriptor's file name when `--out`
55
55
  is omitted. The accepted classes and file-size limit are in `openeng skill conventions`.
56
56
 
57
+ ## Link review and impact
58
+
59
+ Read `openeng links status <object> --project <id> --ref <ref>` before reviewing a tracked
60
+ link. Review states are `cleared` (reviewed against the current upstream), `suspect` (significant
61
+ upstream content changed), `unreviewed` (never cleared), `not-visible` (the upstream cannot be
62
+ read) and `too-many-links` (the chain exceeds its bound). Bounds have their own states: `in`,
63
+ `out`, `none`, `no-value`, `unit-mismatch` and `not-visible`; clearing does not change them.
64
+ Aggregates also show coverage and hidden or missing counts. Numeric output shows its unit.
65
+
66
+ After reviewing the upstream, run `openeng links clear <link> --version <upstreamVersion>
67
+ --project <id> --ref <ref>`. Take the opaque version from the status answer. For an atomic batch,
68
+ list up to 100 link ids and repeat `--version` once per link in the same order. On
69
+ `upstream-changed`, read status and review before sending its new version; do not replace the
70
+ precondition blindly. `upstream-not-readable` requires upstream read access. There is no
71
+ organisation clearing setting: the edge's write rule decides who may clear. User, run-apply,
72
+ client and service tokens are admitted; run-explore and run-types are refused at admission.
73
+ The object agent has no clearing tool; clear through this CLI or the SDK. Recover an unknown
74
+ outcome by correlation before retrying.
75
+
76
+ Use `openeng branches impact <ref> --base <base> --project <id>` to review changes against
77
+ the merge base: review, bounds and aggregate changes, downstream reach to depth three and
78
+ hidden counts. Added and removed links are marked. `head-moved` requires reading again;
79
+ `over-bound` refuses the entire read. Add `--json` for each complete answer.
80
+
81
+ ## Hosted apps
82
+
83
+ A hosted app is a React bundle that runs inside a project, in a sandbox, with the viewer's authority.
84
+ Export a component that takes `{ client }` and start it by calling the runtime's
85
+ `globalThis.__oe2HostedApp.mount(App)` as the bundle's last statement (the `@openengio/hosted-app`
86
+ package that wraps this call is not published yet). Publish the built bundle with
87
+ `openeng hosted-app publish <bundle> --project <id> --key <app key>`; it creates the app when the
88
+ project has none under that key, and prints the version and its SHA-256. If the app holds the
89
+ one-wall permission, the output also carries a warning: read it to the person and do not hide it.
90
+ `openeng hosted-app list --project <id>` lists the apps, `openeng hosted-app versions <app key>
91
+ --project <id>` lists an app's versions, and `openeng hosted-app revoke <app key | app id | version id>
92
+ --project <id>` revokes a version (an id starting `hav_`) or the whole app by its key or `app_` id. Revoke only when the
93
+ person asks. Hosted apps run only in Google Chrome.
94
+
57
95
  ## Rules that hold for every command
58
96
 
59
97
  - Add `--json` when you read the answer yourself. It prints one JSON value on standard output.
@@ -160,7 +198,10 @@ to understand each part, then design the model with the person before you draft
160
198
  `openeng types list`.
161
199
 
162
200
  Property kinds are `null`, `boolean`, `string`, `number`, `integer`, `person`, `enum`, `array`,
163
- `object`, `datetime` and `attachment`. Use `datetime` for an instant. A value is an RFC 3339 date-time
201
+ `object`, `datetime`, `attachment` and `bound`. Under language version `4`, numeric properties may
202
+ declare a `unit`, such as `kg`; publication refuses an unknown symbol (`unknown-unit`) or a later
203
+ change or removal (`changed-unit`). A `bound` is a top-level object property, or a top-level array
204
+ of bounds, under version `4`. See `openeng skill conventions` for its shape. Use `datetime` for an instant. A value is an RFC 3339 date-time
164
205
  with an explicit offset and zero to three fraction digits, such as `2026-10-19T22:30:00+01:00` or
165
206
  `2026-10-19T21:30:00Z`; a value with no offset, an impossible date or time, or four or more fraction
166
207
  digits is refused. The platform stores it as `YYYY-MM-DDTHH:MM:SS.sssZ`, the same instant in UTC.
@@ -365,6 +406,7 @@ using the type key from the object read. Explore also reads its selected object
365
406
  2. Query the objects you need with `openeng objects-sdk queryObjects --json`. Keep each object's
366
407
  project with its identifier; one set may contain objects of several projects in your organisation.
367
408
  To combine two selections on the same ref, send `{ "kind": "set", "op": "difference", "left": { "kind": "objects", "typeKey": "..." }, "right": { "kind": "objects", "typeKey": "..." }, "limit": 100, "continuation": null }`. `op` may be `union`, `intersection` or `difference`. Each operand may have its own `projects`, `filters` and `steps`; operands cannot be nested set operations.
409
+ To select several object types in one paged query, use `typeKey: null` with a top-level `{ "kind": "type", "op": "in", "values": ["part", "system"] }` filter. The list holds 1 to 100 published type keys; combine it with a text filter to search those types. Follow the returned continuation without changing the selection.
368
410
  `aggregateObjects` also accepts `operation: "average"` with one numeric `property`; the result includes its mean and the count averaged, and omits the mean when that count is zero.
369
411
  3. Call `openeng objects-sdk createObjectSet` with a name and the selected addresses, following its
370
412
  help. Keep the returned set identifier and revision. Retrying with the same idempotency key