@nanolink/mirrors 1.1.49 → 1.1.51

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.
@@ -0,0 +1,606 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MirrorAnnotations = void 0;
4
+ exports.exposedMirrors = exposedMirrors;
5
+ exports.draftMirrors = draftMirrors;
6
+ /**
7
+ * Annotation for every predefined mirror.
8
+ *
9
+ * Entries below are seeded from the GraphQL documents and the server schema.
10
+ * Anything not marked `reviewed: true` is a DRAFT and will not be exposed by
11
+ * consumers, regardless of `audience`.
12
+ */
13
+ exports.MirrorAnnotations = {
14
+ // --- core master data ----------------------------------------------------
15
+ references: {
16
+ title: 'References',
17
+ description: 'Master data for everything Nanolink keeps track of. A reference is one of ' +
18
+ 'several kinds, told apart by __typename: Assets (equipment and tools of any ' +
19
+ 'size — a chop saw, a trailer, a wind turbine tip trolley, a 64ft container), ' +
20
+ 'Vehicles (anything that rolls or moves under its own power, including ' +
21
+ 'trailers), Users (people), Sites (customer buildings and locations — ' +
22
+ 'warehouses, workshops, production halls, dispatch centres, wherever tools ' +
23
+ 'live), Projects, Geoareas and Areas. ' +
24
+ 'A reference is ALWAYS in exactly one group, and groupName/groupPath are ' +
25
+ 'usually the most informative thing about what it is. `labels` is a free-text ' +
26
+ 'array the customer uses for shared characteristics — "220V", "400V", ' +
27
+ '"Beton", "VVS" — and for material or trade classification; it varies by ' +
28
+ 'customer, so read the values rather than assuming a taxonomy. ' +
29
+ 'IMPORTANT: a reference can have SEVERAL trackers attached, so it can legitimately ' +
30
+ 'report more than one position or sensor reading at the same time — the trackers ' +
31
+ 'sit in different places on the same object. Do not treat differing positions ' +
32
+ 'for one reference as a contradiction.',
33
+ useWhen: 'Answering what exists, who someone is, or where equipment belongs. Start here ' +
34
+ 'for anything about the objects themselves. Note that Geoarea means a monitored ' +
35
+ 'area someone deliberately configured on the Nanolink server — it is not the ' +
36
+ 'general source of geography — and Area means an indoor, non-geographic zone ' +
37
+ 'used for indoor positioning, which is not in use at present.',
38
+ audience: 'ai',
39
+ reviewed: true,
40
+ summaryFields: [
41
+ '__typename', 'id', 'groupName', 'groupPath', 'labels', 'deleted',
42
+ 'fullName', 'email',
43
+ 'brand', 'model', 'serial', 'description',
44
+ 'registration', 'vin',
45
+ 'name', 'type',
46
+ ],
47
+ cardinality: 'large',
48
+ },
49
+ trackers: {
50
+ title: 'Trackers',
51
+ description: 'Every piece of Nanolink hardware — one row is one physical thing that exists ' +
52
+ 'in the real world. That includes GPS trackers, Bluetooth tags, GPS gates and ' +
53
+ 'mesh gates, and also QR stickers, which count as trackers even though they ' +
54
+ 'only identify something manually rather than reporting a position by radio. ' +
55
+ 'A tracker is attached to AT MOST ONE reference (referenceId). The reverse is ' +
56
+ 'not true: one reference may carry several trackers. `vID` is the visual id ' +
57
+ 'printed on the device and is what people read aloud and search by.',
58
+ useWhen: 'Asked about the devices themselves — what hardware exists, what type it is, ' +
59
+ 'what a particular vID is attached to. For questions about the tracked object ' +
60
+ 'rather than the device, use References instead.',
61
+ audience: 'ai',
62
+ reviewed: true,
63
+ summaryFields: ['vID', 'trackerName', 'type', 'model', 'referenceId', 'deleted'],
64
+ cardinality: 'medium',
65
+ },
66
+ groups: {
67
+ title: 'Groups',
68
+ description: 'The tree that references are organised into, and where access control lives — ' +
69
+ 'most importantly for Users, but grouping other references is meaningful too. ' +
70
+ 'Every reference belongs to exactly one group, and groups nest into subgroups. ' +
71
+ 'What the groups MEAN varies by customer: they may be departments, trades, or ' +
72
+ 'equipment categories, so read the names to understand how this particular ' +
73
+ 'customer has organised things rather than assuming a fixed taxonomy.',
74
+ useWhen: 'Counting or filtering by category — "how many ladders do we have?" means ' +
75
+ 'finding the group whose name matches and counting the references in it. ' +
76
+ 'CRITICAL: groups are a tree. A group named "Stiger" may have subgroups such ' +
77
+ 'as "Jumbostiger", and those references are NOT in the parent group directly. ' +
78
+ 'Decide explicitly whether the question means that group alone or the whole ' +
79
+ 'subtree, and say which you used. groupPath on a reference shows its position ' +
80
+ 'in the tree and is usually the easiest way to match a subtree.',
81
+ audience: 'ai',
82
+ reviewed: true,
83
+ summaryFields: ['id', 'name', 'parentId', 'description', 'level', 'type'],
84
+ cardinality: 'small',
85
+ },
86
+ servicePlans: {
87
+ title: 'Service plans',
88
+ description: 'Maintenance AND monitoring plans, told apart by __typename. Periodic and ' +
89
+ 'Oneshot are real service tasks to be carried out on a schedule or once; KM ' +
90
+ 'triggers on distance travelled; Warranty tracks a guarantee period; Monitor ' +
91
+ 'watches a live value and raises a fault when it goes out of range (speed, or ' +
92
+ 'low pressure in a specific tyre, for example); Cargo tracks what SHOULD be ' +
93
+ 'present — typically in a vehicle — so that a missing item shows up. ' +
94
+ 'A plan is effectively green or red: fine, or in fault/overdue.',
95
+ useWhen: 'Asked what needs servicing, what is overdue, what is being monitored, or what ' +
96
+ 'is missing from a vehicle. This mirror holds the plan DEFINITIONS; the state ' +
97
+ 'of a given reference against them lives on that reference.',
98
+ audience: 'ai',
99
+ reviewed: true,
100
+ summaryFields: ['__typename', 'id', 'name', 'description', 'deleted'],
101
+ cardinality: 'medium',
102
+ },
103
+ // --- links between things ------------------------------------------------
104
+ trackerLinks: {
105
+ title: 'Radio observations between trackers',
106
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
107
+ 'not history. Historic values live in the log API, where a row is there ' +
108
+ 'precisely because something newer replaced it. The raw radio layer: a ' +
109
+ 'receiver picked up a transmitter. A Bluetooth tag, or a tracker with ' +
110
+ 'Bluetooth, broadcasts packets and is the TRANSMITTER; a gateway scanning for ' +
111
+ 'them is the RECEIVER. GPS gateways are both at once - they find tags, and ' +
112
+ 'other gateways can find them in turn. These observations are what eventually ' +
113
+ 'become proximity links between references. `rSSI` is signal strength, a ' +
114
+ 'rough proxy for closeness. ',
115
+ useWhen: 'Only when direction genuinely matters - which device observed which. For the ' +
116
+ 'ordinary "what is near what" question use referenceLinks, which is the same ' +
117
+ 'information expressed between the objects people actually care about. ',
118
+ audience: 'ai',
119
+ reviewed: true,
120
+ summaryFields: ['id', 'receiverVID', 'transmitterVID', 'rSSI', 'createdDateTime'],
121
+ cardinality: 'large',
122
+ },
123
+ referenceLinks: {
124
+ title: 'Reference links',
125
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
126
+ 'not history. Historic values live in the log API, where a row is there ' +
127
+ 'precisely because something newer replaced it. Relationships between two ' +
128
+ 'references, told apart by `type`: proximity means they are near each other, ' +
129
+ 'and is what a radio observation ultimately becomes; responsible means a user ' +
130
+ 'is accountable for something; user means a person is the end user of it, ' +
131
+ 'such as a driver or a craftsman; associated means one reference is attached ' +
132
+ 'to another. `autoGenerated` marks links the system derived rather than a ' +
133
+ 'person recording them. ',
134
+ useWhen: 'Asked who is responsible for something, who is using it, what is attached to ' +
135
+ 'what, or what is near what. This is the right level for relationship ' +
136
+ 'questions. Only drop to trackerLinks if you specifically need which device ' +
137
+ 'saw which - links here carry no direction. ',
138
+ audience: 'ai',
139
+ reviewed: true,
140
+ summaryFields: ['id', 'type', 'referenceId1', 'referenceId2', 'autoGenerated', 'createdDateTime'],
141
+ cardinality: 'large',
142
+ },
143
+ referenceGeoLinks: {
144
+ title: 'References inside monitored areas',
145
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
146
+ 'not history. Historic values live in the log API, where a row is there ' +
147
+ 'precisely because something newer replaced it. Bluetooth tags do NOT have ' +
148
+ 'GPS of their own - a tag only gets a position when a GPS-capable gateway ' +
149
+ 'sees it and contributes its own. This is the most common misunderstanding ' +
150
+ 'about how Nanolink positions things, so never present a tag as if it located ' +
151
+ 'itself. Which references are currently inside a monitored geo area, and when ' +
152
+ 'they entered. A geo area is real monitoring rather than a passive map: a ' +
153
+ 'gateway inside the area finds a Bluetooth tag, and that tag then counts as ' +
154
+ 'inside DIGITALLY until some gateway finds it outside again. Presence here ' +
155
+ 'therefore reflects the last observation, not a live fence crossing. ',
156
+ useWhen: 'Asked what is on a site or inside a monitored area, or when something ' +
157
+ 'arrived. Bear in mind an item stays "inside" until observed elsewhere, so ' +
158
+ 'the absence of an exit is not proof it is still physically there. ',
159
+ audience: 'ai',
160
+ reviewed: true,
161
+ summaryFields: ['id', 'siteId', 'referenceId', 'creationTime'],
162
+ cardinality: 'large',
163
+ },
164
+ lostTransmitters: {
165
+ title: 'Last known position of transmitters',
166
+ description: 'Bluetooth tags do NOT have GPS of their own - a tag only gets a position ' +
167
+ 'when a GPS-capable gateway sees it and contributes its own. This is the most ' +
168
+ 'common misunderstanding about how Nanolink positions things, so never ' +
169
+ 'present a tag as if it located itself. Our best guess at where a tracker or ' +
170
+ 'Bluetooth tag last had a GPS position - `lostBy` names the device that last ' +
171
+ 'saw it. Bluetooth tags are effectively always "lost": left somewhere, with ' +
172
+ 'the only positional evidence being a gateway that caught them and ' +
173
+ 'contributed its own coordinate. That evidence is already slightly out of ' +
174
+ 'date by nature, which is where the name comes from. ',
175
+ useWhen: 'Asked where something is when it has no GPS of its own, typically a ' +
176
+ 'Bluetooth tag. Present the answer as a last known position with its age, ' +
177
+ 'never as a live one. ',
178
+ audience: 'ai',
179
+ reviewed: true,
180
+ summaryFields: ['id', 'lostBy', 'transmitterReferenceType', 'transmitterReferenceGroupPath'],
181
+ cardinality: 'large',
182
+ },
183
+ // --- operational records --------------------------------------------------
184
+ reports: {
185
+ title: 'Reports',
186
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
187
+ 'not history. Real reports that can be generated, printed, or emailed to ' +
188
+ 'users. This mirror holds the report DEFINITIONS - what reports exist and how ' +
189
+ 'they are set up - rather than any generated output. ',
190
+ useWhen: 'Asked what reports are available, or what a particular report covers. ' +
191
+ 'Producing or sending a report is not something this read-only surface can ' +
192
+ 'do; say so rather than implying it can. ',
193
+ audience: 'ai',
194
+ reviewed: true,
195
+ summaryFields: ['id', 'name', 'description'],
196
+ cardinality: 'small',
197
+ },
198
+ jobs: { title: 'Jobs', description: 'DRAFT — scheduled jobs.', audience: 'internal', cardinality: 'medium' },
199
+ cycles: {
200
+ title: 'Production cycles',
201
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
202
+ 'not history. Historic values live in the log API, where a row is there ' +
203
+ 'precisely because something newer replaced it. Production control: process ' +
204
+ 'rules layered on top of ordinary movement. A cycle defines steps and the ' +
205
+ 'constraints between them - a reference may not advance to the next step ' +
206
+ 'before clearing the first, and a step cannot be left until the next has held ' +
207
+ 'it for some minimum time. Progress is usually driven by gates detecting ' +
208
+ 'Bluetooth tags, so the physical movement of a tagged item is what advances ' +
209
+ 'the process. `steps` holds the definition. ',
210
+ useWhen: 'Asked how a production process is set up, or what rules govern it. For what ' +
211
+ 'is running right now, use Active cycles. ',
212
+ audience: 'ai',
213
+ reviewed: true,
214
+ summaryFields: ['id', 'name', 'isActive', 'labelFilter', 'deleted'],
215
+ cardinality: 'small',
216
+ },
217
+ activecycles: {
218
+ title: 'Active cycles',
219
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
220
+ 'not history. Historic values live in the log API, where a row is there ' +
221
+ 'precisely because something newer replaced it. Cycle runs currently in ' +
222
+ 'progress - which reference is going through which cycle, when it started, ' +
223
+ 'and its status. Finished runs carry `finishedAt`. ',
224
+ useWhen: 'Asked what is in production now, or how far a particular item has got. ',
225
+ audience: 'ai',
226
+ reviewed: true,
227
+ summaryFields: ['id', 'cycleId', 'referenceId', 'status', 'startedAt', 'finishedAt'],
228
+ cardinality: 'medium',
229
+ },
230
+ activesteps: {
231
+ title: 'Active cycle steps',
232
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
233
+ 'not history. Historic values live in the log API, where a row is there ' +
234
+ 'precisely because something newer replaced it. The individual steps within ' +
235
+ 'running cycles: when a reference entered a step, when it left, and how long ' +
236
+ 'it spent there. `estimateDurationInSeconds` is what the step was expected to ' +
237
+ 'take, so comparing it with `timeSpentInSeconds` shows what is running late. ',
238
+ useWhen: 'Asked where in a process something is stuck, or which step is taking longer ' +
239
+ 'than planned. ',
240
+ audience: 'ai',
241
+ reviewed: true,
242
+ summaryFields: ['id', 'name', 'cycleStateId', 'enterStamp', 'exitStamp', 'timeSpentInSeconds', 'estimateDurationInSeconds'],
243
+ cardinality: 'medium',
244
+ },
245
+ tasks: {
246
+ title: 'Tasks',
247
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
248
+ 'not history. Historic values live in the log API, where a row is there ' +
249
+ 'precisely because something newer replaced it. Work items. A task may be ' +
250
+ 'attached to a reference through `targetReferenceId`, or stand alone with ' +
251
+ 'none. `status` carries where it has reached, and `fieldValues` holds ' +
252
+ 'whatever the template defined. ',
253
+ useWhen: 'Asked what work is outstanding, what has been done, or what is booked ' +
254
+ 'against a particular piece of equipment. ',
255
+ audience: 'ai',
256
+ reviewed: true,
257
+ summaryFields: ['id', 'title', 'status', 'targetReferenceId', 'templateId', 'createdDateTime', 'deleted'],
258
+ cardinality: 'medium',
259
+ },
260
+ taskTemplates: {
261
+ title: 'Task templates',
262
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
263
+ 'not history. Historic values live in the log API, where a row is there ' +
264
+ 'precisely because something newer replaced it. Definitions that tasks are ' +
265
+ 'created from, including the business rules governing how and by whom they ' +
266
+ 'may be created, processed and finished. `fields` and `statuses` define the ' +
267
+ 'shape and lifecycle that tasks then follow. ',
268
+ useWhen: 'Asked what KINDS of task exist, or why a task has particular fields or ' +
269
+ 'statuses. For the actual work items, use Tasks. ',
270
+ audience: 'ai',
271
+ reviewed: true,
272
+ summaryFields: ['id', 'name', 'description', 'statuses', 'deleted'],
273
+ cardinality: 'small',
274
+ },
275
+ trips: {
276
+ title: 'Trips',
277
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
278
+ 'not history. Historic values live in the log API, where a row is there ' +
279
+ 'precisely because something newer replaced it. Completed journeys, delimited ' +
280
+ 'by engine start and stop - that is how a trip is identified at all. Each row ' +
281
+ 'carries where it began and ended, the route travelled and the distance, so ' +
282
+ 'it answers how far a vehicle went and by which way. Improved variants exist ' +
283
+ 'as trips2, with a trips3 planned; this is the original. ',
284
+ useWhen: 'Asked how far or where a vehicle drove, or about a particular journey. Not ' +
285
+ 'for current position - use the GPS mirror for that. ',
286
+ audience: 'ai',
287
+ reviewed: true,
288
+ summaryFields: ['id', 'vID', 'start', 'stop', 'routeDistanceInMeters', 'referenceType'],
289
+ cardinality: 'large',
290
+ },
291
+ // --- live position and connection state -----------------------------------
292
+ gps: {
293
+ title: 'GPS positions',
294
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
295
+ 'not history. Historic values live in the log API, where a row is there ' +
296
+ 'precisely because something newer replaced it. Bluetooth tags do NOT have ' +
297
+ 'GPS of their own - a tag only gets a position when a GPS-capable gateway ' +
298
+ 'sees it and contributes its own. This is the most common misunderstanding ' +
299
+ 'about how Nanolink positions things, so never present a tag as if it located ' +
300
+ 'itself. Latest known GPS position for trackers that can produce one ' +
301
+ 'themselves, and for trackers configured with a fixed position - a gateway ' +
302
+ 'bolted to a wall in a warehouse, where `isFixed` is set. Positions update as ' +
303
+ 'GPS gateways report in. ',
304
+ useWhen: 'Asked where something is right now. For where it HAS been, use the historic ' +
305
+ 'position tools. A tag with no row here is expected rather than an error: it ' +
306
+ 'means no GPS-capable device has reported a position for it, and ' +
307
+ 'lostTransmitters is then the better source for a best guess. ',
308
+ audience: 'ai',
309
+ reviewed: true,
310
+ summaryFields: ['id', 'stamp', 'isFixed', 'locationInfo', 'referenceType', 'referenceGroupPath'],
311
+ cardinality: 'large',
312
+ },
313
+ connected: {
314
+ title: 'Last contact with the servers',
315
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
316
+ 'not history. Historic values live in the log API, where a row is there ' +
317
+ 'precisely because something newer replaced it. When each tracker last ' +
318
+ 'uploaded or otherwise made contact with the Nanolink servers ITSELF. `when` ' +
319
+ 'is that timestamp. This is about the device reaching us, not about anyone ' +
320
+ 'hearing it over the air - for that, use Link last contact, which records ' +
321
+ 'when a gateway last picked the device up over Bluetooth. ',
322
+ useWhen: 'Asked whether a device is still reporting in, or how long since it last did. ' +
323
+ 'Read it as LAST SEEN, not "online right now": a recent timestamp means it ' +
324
+ 'reported recently, but nothing here says it is connected at this instant, so ' +
325
+ 'compare `when` to now and state the age. Note that a plain Bluetooth tag ' +
326
+ 'cannot contact the servers on its own and so may legitimately have no row ' +
327
+ 'here at all - that is not a fault, and Link last contact is the right place ' +
328
+ 'to look for it. ',
329
+ audience: 'ai',
330
+ reviewed: true,
331
+ summaryFields: ['id', 'when'],
332
+ cardinality: 'large',
333
+ },
334
+ linkconnected: {
335
+ title: 'Last radio contact via a gateway',
336
+ description: 'This is a MIRROR from a core server, so every row is the LATEST known value, ' +
337
+ 'not history. Historic values live in the log API, where a row is there ' +
338
+ 'precisely because something newer replaced it. When a gateway last picked ' +
339
+ 'this tracker or Bluetooth tag up over Bluetooth - the timestamp of the most ' +
340
+ 'recent radio link. This is how a device that cannot talk to the servers ' +
341
+ 'itself still gets seen: a gateway hears its broadcast and reports it on. ' +
342
+ 'Distinct from Last contact, which is the device reaching the servers under ' +
343
+ 'its own steam. ',
344
+ useWhen: 'Asked when a Bluetooth tag was last observed, or whether something is still ' +
345
+ 'within range of any gateway. For a tag this is usually the ONLY evidence it ' +
346
+ 'is still around, since it has no way of contacting the servers itself. ' +
347
+ 'Compare `when` to now and say how old the observation is. ',
348
+ audience: 'ai',
349
+ reviewed: true,
350
+ summaryFields: ['id', 'when'],
351
+ cardinality: 'large',
352
+ },
353
+ // --- telemetry signals ----------------------------------------------------
354
+ alarm: {
355
+ title: 'Alarms',
356
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
357
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
358
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
359
+ 'series - for how a value changed over time, use the historic log tools. The ' +
360
+ 'alarm signal reported by a tracker. ',
361
+ useWhen: 'Asked what is currently alarming. This is the tracker\'s own alarm state; ' +
362
+ 'service plans of the Monitor kind are a separate mechanism that raises ' +
363
+ 'faults when a watched value goes out of range. ',
364
+ audience: 'ai',
365
+ reviewed: true,
366
+ summaryFields: ['id', 'value', 'stamp'],
367
+ cardinality: 'large',
368
+ },
369
+ voltage: {
370
+ title: 'External voltage',
371
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
372
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
373
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
374
+ 'series - for how a value changed over time, use the historic log tools. ' +
375
+ 'Voltage on the tracker\'s external supply - typically the vehicle or machine ' +
376
+ 'it is wired into, rather than its own battery. ',
377
+ useWhen: 'Asked whether something is powered, or about the electrical supply feeding a ' +
378
+ 'tracker. For the tracker\'s own cell, use internal voltage. ',
379
+ audience: 'ai',
380
+ reviewed: true,
381
+ summaryFields: ['id', 'value', 'stamp'],
382
+ cardinality: 'large',
383
+ },
384
+ internalvoltage: {
385
+ title: 'Internal voltage',
386
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
387
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
388
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
389
+ 'series - for how a value changed over time, use the historic log tools. ' +
390
+ 'Voltage of the tracker\'s own internal battery, as opposed to any external ' +
391
+ 'supply. ',
392
+ useWhen: 'Asked about the health of the device itself. Battery percentage is usually ' +
393
+ 'the friendlier answer for a person; this is the raw measurement behind it. ',
394
+ audience: 'ai',
395
+ reviewed: true,
396
+ summaryFields: ['id', 'value', 'stamp'],
397
+ cardinality: 'large',
398
+ },
399
+ batterypercent: {
400
+ title: 'Battery level',
401
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
402
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
403
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
404
+ 'series - for how a value changed over time, use the historic log tools. ' +
405
+ 'Remaining battery on the tracker, as a percentage. ',
406
+ useWhen: 'Asked which devices need their battery changed, or why one stopped ' +
407
+ 'reporting. A low battery is a common explanation for a tracker that has gone ' +
408
+ 'quiet, so it is worth checking alongside last contact. ',
409
+ audience: 'ai',
410
+ reviewed: true,
411
+ summaryFields: ['id', 'value', 'stamp'],
412
+ cardinality: 'large',
413
+ },
414
+ unplug: {
415
+ title: 'Unplug signal',
416
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
417
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
418
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
419
+ 'series - for how a value changed over time, use the historic log tools. ' +
420
+ 'Reports that a tracker was disconnected from its external power - unplugged ' +
421
+ 'from the vehicle or machine it was wired into. ',
422
+ useWhen: 'Asked whether a device has been removed or tampered with, or why something ' +
423
+ 'stopped reporting on external power. ',
424
+ audience: 'ai',
425
+ reviewed: true,
426
+ summaryFields: ['id', 'value', 'stamp'],
427
+ cardinality: 'large',
428
+ },
429
+ temperature: {
430
+ title: 'Temperature',
431
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
432
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
433
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
434
+ 'series - for how a value changed over time, use the historic log tools. ' +
435
+ 'Temperature measured by the tracker, as a whole number. ',
436
+ useWhen: 'Asked how warm or cold something is. Prefer the decimal variant when ' +
437
+ 'precision matters, since this one is rounded. ',
438
+ audience: 'ai',
439
+ reviewed: true,
440
+ summaryFields: ['id', 'value', 'stamp'],
441
+ cardinality: 'large',
442
+ },
443
+ temperaturedecimal: {
444
+ title: 'Temperature (decimal)',
445
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
446
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
447
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
448
+ 'series - for how a value changed over time, use the historic log tools. ' +
449
+ 'Temperature measured by the tracker, at higher precision than the ' +
450
+ 'whole-number variant. ',
451
+ useWhen: 'Asked how warm or cold something is and the fraction matters - cold chain, ' +
452
+ 'process control. Otherwise either variant answers the question. ',
453
+ audience: 'ai',
454
+ reviewed: true,
455
+ summaryFields: ['id', 'value', 'stamp'],
456
+ cardinality: 'large',
457
+ },
458
+ humiditydecimal: {
459
+ title: 'Humidity',
460
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
461
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
462
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
463
+ 'series - for how a value changed over time, use the historic log tools. ' +
464
+ 'Relative humidity measured by the tracker. ',
465
+ useWhen: 'Asked about damp, condensation risk, or storage conditions. ',
466
+ audience: 'ai',
467
+ reviewed: true,
468
+ summaryFields: ['id', 'value', 'stamp'],
469
+ cardinality: 'large',
470
+ },
471
+ activecounter: {
472
+ title: 'Electric motor running seconds (BT30s)',
473
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
474
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
475
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
476
+ 'series - for how a value changed over time, use the historic log tools. ' +
477
+ 'Seconds reported by a BT30s Bluetooth tag. The BT30s carries a Hall sensor ' +
478
+ 'and measures how long an ELECTRIC motor has been running, so this is ' +
479
+ 'hardware-specific: only BT30s tags produce it, and only for electric motors. ',
480
+ useWhen: 'Asked how much an electric motor has run - a pump, a fan, a tool. If the ' +
481
+ 'equipment does not carry a BT30s there will be no reading, which is expected ' +
482
+ 'rather than a fault. For engines and machines generally, Operating seconds ' +
483
+ 'is the broader signal. ',
484
+ audience: 'ai',
485
+ reviewed: true,
486
+ summaryFields: ['id', 'value', 'stamp'],
487
+ cardinality: 'large',
488
+ },
489
+ workseconds: {
490
+ title: 'Operating seconds',
491
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
492
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
493
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
494
+ 'series - for how a value changed over time, use the historic log tools. How ' +
495
+ 'many seconds something has actually been running - an engine, or a machine. ' +
496
+ 'This is run time, not elapsed time: a machine that stood idle all week ' +
497
+ 'accumulates nothing. ',
498
+ useWhen: 'Asked how much a machine or engine has been used, for utilisation, billing ' +
499
+ 'by the hour, or service intervals measured in running time. Do not read it ' +
500
+ 'as how long something has been switched on or present. ',
501
+ audience: 'ai',
502
+ reviewed: true,
503
+ summaryFields: ['id', 'value', 'stamp'],
504
+ cardinality: 'large',
505
+ },
506
+ workignition: {
507
+ title: 'Engine start',
508
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
509
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
510
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
511
+ 'series - for how a value changed over time, use the historic log tools. The ' +
512
+ 'engine or machine actually starting. This is the machine\'s own ignition ' +
513
+ 'event. ',
514
+ useWhen: 'Asked when a machine was last started, or whether it is running. Do NOT ' +
515
+ 'treat this as the start of a journey: a vehicle can be running while ' +
516
+ 'stationary, and Trip ignition is the separate signal that marks a trip ' +
517
+ 'beginning. The two timestamps genuinely differ, so pick the one that matches ' +
518
+ 'the question. ',
519
+ audience: 'ai',
520
+ reviewed: true,
521
+ summaryFields: ['id', 'value', 'stamp'],
522
+ cardinality: 'large',
523
+ },
524
+ tripignition: {
525
+ title: 'Trip start',
526
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
527
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
528
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
529
+ 'series - for how a value changed over time, use the historic log tools. When ' +
530
+ 'a journey started. Deliberately NOT the same thing as the engine starting: ' +
531
+ 'an engine can run for some time - idling, warming up, working in place - ' +
532
+ 'before what counts as a trip begins. ',
533
+ useWhen: 'Asked when driving began. For the engine itself, use Engine start; for the ' +
534
+ 'completed journey with its route and distance, use Trips. Conflating engine ' +
535
+ 'start with trip start will overstate driving time. ',
536
+ audience: 'ai',
537
+ reviewed: true,
538
+ summaryFields: ['id', 'value', 'stamp'],
539
+ cardinality: 'large',
540
+ },
541
+ calculatedodometer: {
542
+ title: 'Calculated odometer',
543
+ description: 'Telemetry from trackers: one row per tracker, keyed by `id`, which here is ' +
544
+ 'the device\'s visual id (vID). `value` is the reading and `stamp` is when it ' +
545
+ 'was recorded. This is a MIRROR, so each row is the LATEST reading, not a ' +
546
+ 'series - for how a value changed over time, use the historic log tools. The ' +
547
+ 'vehicle\'s total distance, combining an initial reading that was entered when ' +
548
+ 'the tracker was fitted with the distance counted since. Fitting a tracker to ' +
549
+ 'a vehicle that has already driven 120,000 km means the raw count starts at ' +
550
+ 'zero, so the initial value is added to give a figure that matches the ' +
551
+ 'dashboard. ',
552
+ useWhen: 'Asked for a vehicle\'s mileage or total distance - this is the number a ' +
553
+ 'person means by \'the odometer\'. For how far a single journey went, use the ' +
554
+ 'distance on that trip instead; these answer different questions and should ' +
555
+ 'not be added together. ',
556
+ audience: 'ai',
557
+ reviewed: true,
558
+ summaryFields: ['id', 'value', 'stamp'],
559
+ cardinality: 'large',
560
+ },
561
+ // --- mesh diagnostics -----------------------------------------------------
562
+ meshDiagnostics: {
563
+ title: 'Mesh diagnostics',
564
+ description: 'Diagnostics for the Bluetooth mesh network - the plumbing that lets gateways ' +
565
+ 'relay for each other. Operational detail for Nanolink, not something a ' +
566
+ 'customer\'s question is usually about. ',
567
+ useWhen: 'Reviewed and deliberately NOT exposed as a tool: this is network ' +
568
+ 'diagnostics. Promote it to audience \'ai\' if support engineers turn out to ' +
569
+ 'want it. ',
570
+ audience: 'internal',
571
+ reviewed: true,
572
+ cardinality: 'medium',
573
+ },
574
+ meshscanner: {
575
+ title: 'Mesh scanner readings',
576
+ description: 'Raw scanner output from mesh nodes. Operational detail rather than an answer ' +
577
+ 'to a customer question. ',
578
+ useWhen: 'Reviewed and deliberately NOT exposed as a tool: this is network ' +
579
+ 'diagnostics. Promote it to audience \'ai\' if support engineers turn out to ' +
580
+ 'want it. ',
581
+ audience: 'internal',
582
+ reviewed: true,
583
+ cardinality: 'large',
584
+ },
585
+ meshdisconnectslasthour: {
586
+ title: 'Mesh disconnects in the last hour',
587
+ description: 'How often mesh nodes dropped in the past hour. A network health signal, ' +
588
+ 'useful for diagnosing coverage rather than for answering questions about ' +
589
+ 'equipment. ',
590
+ useWhen: 'Reviewed and deliberately NOT exposed as a tool: this is network ' +
591
+ 'diagnostics. Promote it to audience \'ai\' if support engineers turn out to ' +
592
+ 'want it. ',
593
+ audience: 'internal',
594
+ reviewed: true,
595
+ cardinality: 'medium',
596
+ },
597
+ };
598
+ /** Mirrors an AI-facing consumer may expose: annotated, reviewed, and marked `ai`. */
599
+ function exposedMirrors() {
600
+ return Object.keys(exports.MirrorAnnotations).filter((name) => exports.MirrorAnnotations[name].audience === 'ai' && exports.MirrorAnnotations[name].reviewed === true);
601
+ }
602
+ /** Names still carrying a draft description, for a build-time report. */
603
+ function draftMirrors() {
604
+ return Object.keys(exports.MirrorAnnotations).filter((name) => exports.MirrorAnnotations[name].reviewed !== true);
605
+ }
606
+ //# sourceMappingURL=annotations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/definitions/annotations.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,7 @@ export declare const Subscriptions: {
38
38
  export declare const OpSubscriptions: {
39
39
  contained: string;
40
40
  stateLinks: string;
41
+ stateRefLinks: string;
41
42
  trips3: string;
42
43
  };
43
44
  export declare const RequiredMirrors: {