@projectqai/proto 0.0.36 → 0.0.42

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/device.ts CHANGED
@@ -321,33 +321,41 @@ export async function attach<S extends SchemaProperties>(opts: AttachOptions<S>)
321
321
  })();
322
322
  };
323
323
 
324
- // Watch for config changes
325
-
326
- const stream = client.watchEntities(
327
- create(ListEntitiesRequestSchema, { filter: create(EntityFilterSchema, { id: entityID }) }),
328
- ...(opts.signal ? [{ signal: opts.signal }] : []),
329
- );
324
+ // Watch for config changes — retry on transient stream errors
330
325
 
331
326
  try {
332
- for await (const event of stream) {
333
- if (!event.entity) continue;
334
-
335
- if (event.t === EntityChange.EntityChangeExpired || event.t === EntityChange.EntityChangeUnobserved) {
327
+ while (!outerAbort.signal.aborted) {
328
+ const stream = client.watchEntities(
329
+ create(ListEntitiesRequestSchema, { filter: create(EntityFilterSchema, { id: entityID }) }),
330
+ ...(opts.signal ? [{ signal: opts.signal }] : []),
331
+ );
332
+
333
+ try {
334
+ for await (const event of stream) {
335
+ if (!event.entity) continue;
336
+
337
+ if (event.t === EntityChange.EntityChangeExpired || event.t === EntityChange.EntityChangeUnobserved) {
338
+ stop();
339
+ continue;
340
+ }
341
+ if (event.t !== EntityChange.EntityChangeUpdated) continue;
342
+
343
+ const e = event.entity;
344
+ if (!e.config) { stop(); continue; }
345
+ if (e.config.version === currentConfigVersion && runningAbort) continue;
346
+
347
+ stop();
348
+ currentConfigVersion = e.config.version;
349
+ start(e);
350
+ }
351
+ break; // clean end of stream
352
+ } catch (err) {
353
+ if (isCanceled(err) || opts.signal?.aborted) break;
354
+ console.error(`watch stream error, reconnecting entity=${entityID}`, err);
336
355
  stop();
337
- continue;
356
+ await sleep(5_000, outerAbort.signal);
338
357
  }
339
- if (event.t !== EntityChange.EntityChangeUpdated) continue;
340
-
341
- const e = event.entity;
342
- if (!e.config) { stop(); continue; }
343
- if (e.config.version === currentConfigVersion && runningAbort) continue;
344
-
345
- stop();
346
- currentConfigVersion = e.config.version;
347
- start(e);
348
358
  }
349
- } catch (err) {
350
- if (!isCanceled(err)) throw err;
351
359
  } finally {
352
360
  stop();
353
361
  outerAbort.abort();
@@ -0,0 +1,133 @@
1
+ // @generated by protoc-gen-es v2.10.2 with parameter "target=js+dts,import_extension=.js"
2
+ // @generated from file artifacts.proto (package world, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
+ import type { Message } from "@bufbuild/protobuf";
7
+ import type { ArtifactComponent } from "./world_pb.js";
8
+
9
+ /**
10
+ * Describes the file artifacts.proto.
11
+ */
12
+ export declare const file_artifacts: GenFile;
13
+
14
+ /**
15
+ * Download artifact data by entity id or content hash
16
+ *
17
+ * @generated from message world.DownloadArtifactRequest
18
+ */
19
+ export declare type DownloadArtifactRequest = Message<"world.DownloadArtifactRequest"> & {
20
+ /**
21
+ * @generated from oneof world.DownloadArtifactRequest.ref
22
+ */
23
+ ref: {
24
+ /**
25
+ * @generated from field: string id = 1;
26
+ */
27
+ value: string;
28
+ case: "id";
29
+ } | {
30
+ /**
31
+ * @generated from field: string sha256 = 2;
32
+ */
33
+ value: string;
34
+ case: "sha256";
35
+ } | { case: undefined; value?: undefined };
36
+ };
37
+
38
+ /**
39
+ * Describes the message world.DownloadArtifactRequest.
40
+ * Use `create(DownloadArtifactRequestSchema)` to create a new message.
41
+ */
42
+ export declare const DownloadArtifactRequestSchema: GenMessage<DownloadArtifactRequest>;
43
+
44
+ /**
45
+ * @generated from message world.DownloadArtifactResponse
46
+ */
47
+ export declare type DownloadArtifactResponse = Message<"world.DownloadArtifactResponse"> & {
48
+ /**
49
+ * set in the first message only
50
+ *
51
+ * @generated from field: optional world.ArtifactComponent meta = 1;
52
+ */
53
+ meta?: ArtifactComponent;
54
+
55
+ /**
56
+ * data chunks
57
+ *
58
+ * @generated from field: optional bytes chunk = 2;
59
+ */
60
+ chunk?: Uint8Array;
61
+ };
62
+
63
+ /**
64
+ * Describes the message world.DownloadArtifactResponse.
65
+ * Use `create(DownloadArtifactResponseSchema)` to create a new message.
66
+ */
67
+ export declare const DownloadArtifactResponseSchema: GenMessage<DownloadArtifactResponse>;
68
+
69
+ /**
70
+ * Upload artifact data for an existing artifact entity
71
+ *
72
+ * @generated from message world.UploadArtifactRequest
73
+ */
74
+ export declare type UploadArtifactRequest = Message<"world.UploadArtifactRequest"> & {
75
+ /**
76
+ * entity id, set in the first message only
77
+ *
78
+ * @generated from field: optional string id = 1;
79
+ */
80
+ id?: string;
81
+
82
+ /**
83
+ * data chunks
84
+ *
85
+ * @generated from field: optional bytes chunk = 2;
86
+ */
87
+ chunk?: Uint8Array;
88
+ };
89
+
90
+ /**
91
+ * Describes the message world.UploadArtifactRequest.
92
+ * Use `create(UploadArtifactRequestSchema)` to create a new message.
93
+ */
94
+ export declare const UploadArtifactRequestSchema: GenMessage<UploadArtifactRequest>;
95
+
96
+ /**
97
+ * @generated from message world.UploadArtifactResponse
98
+ */
99
+ export declare type UploadArtifactResponse = Message<"world.UploadArtifactResponse"> & {
100
+ };
101
+
102
+ /**
103
+ * Describes the message world.UploadArtifactResponse.
104
+ * Use `create(UploadArtifactResponseSchema)` to create a new message.
105
+ */
106
+ export declare const UploadArtifactResponseSchema: GenMessage<UploadArtifactResponse>;
107
+
108
+ /**
109
+ * @generated from service world.ArtifactService
110
+ */
111
+ export declare const ArtifactService: GenService<{
112
+ /**
113
+ * stream artifact data
114
+ *
115
+ * @generated from rpc world.ArtifactService.DownloadArtifact
116
+ */
117
+ downloadArtifact: {
118
+ methodKind: "server_streaming";
119
+ input: typeof DownloadArtifactRequestSchema;
120
+ output: typeof DownloadArtifactResponseSchema;
121
+ },
122
+ /**
123
+ * upload or ingest an artifact
124
+ *
125
+ * @generated from rpc world.ArtifactService.UploadArtifact
126
+ */
127
+ uploadArtifact: {
128
+ methodKind: "client_streaming";
129
+ input: typeof UploadArtifactRequestSchema;
130
+ output: typeof UploadArtifactResponseSchema;
131
+ },
132
+ }>;
133
+
@@ -0,0 +1,47 @@
1
+ // @generated by protoc-gen-es v2.10.2 with parameter "target=js+dts,import_extension=.js"
2
+ // @generated from file artifacts.proto (package world, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_world } from "./world_pb.js";
7
+
8
+ /**
9
+ * Describes the file artifacts.proto.
10
+ */
11
+ export const file_artifacts = /*@__PURE__*/
12
+ fileDesc("Cg9hcnRpZmFjdHMucHJvdG8SBXdvcmxkIkAKF0Rvd25sb2FkQXJ0aWZhY3RSZXF1ZXN0EgwKAmlkGAEgASgJSAASEAoGc2hhMjU2GAIgASgJSABCBQoDcmVmIm4KGERvd25sb2FkQXJ0aWZhY3RSZXNwb25zZRIrCgRtZXRhGAEgASgLMhgud29ybGQuQXJ0aWZhY3RDb21wb25lbnRIAIgBARISCgVjaHVuaxgCIAEoDEgBiAEBQgcKBV9tZXRhQggKBl9jaHVuayJNChVVcGxvYWRBcnRpZmFjdFJlcXVlc3QSDwoCaWQYASABKAlIAIgBARISCgVjaHVuaxgCIAEoDEgBiAEBQgUKA19pZEIICgZfY2h1bmsiGAoWVXBsb2FkQXJ0aWZhY3RSZXNwb25zZTK5AQoPQXJ0aWZhY3RTZXJ2aWNlElUKEERvd25sb2FkQXJ0aWZhY3QSHi53b3JsZC5Eb3dubG9hZEFydGlmYWN0UmVxdWVzdBofLndvcmxkLkRvd25sb2FkQXJ0aWZhY3RSZXNwb25zZTABEk8KDlVwbG9hZEFydGlmYWN0Ehwud29ybGQuVXBsb2FkQXJ0aWZhY3RSZXF1ZXN0Gh0ud29ybGQuVXBsb2FkQXJ0aWZhY3RSZXNwb25zZSgBQiBaHmdpdGh1Yi5jb20vcHJvamVjdHFhaS9wcm90by9nb2IGcHJvdG8z", [file_world]);
13
+
14
+ /**
15
+ * Describes the message world.DownloadArtifactRequest.
16
+ * Use `create(DownloadArtifactRequestSchema)` to create a new message.
17
+ */
18
+ export const DownloadArtifactRequestSchema = /*@__PURE__*/
19
+ messageDesc(file_artifacts, 0);
20
+
21
+ /**
22
+ * Describes the message world.DownloadArtifactResponse.
23
+ * Use `create(DownloadArtifactResponseSchema)` to create a new message.
24
+ */
25
+ export const DownloadArtifactResponseSchema = /*@__PURE__*/
26
+ messageDesc(file_artifacts, 1);
27
+
28
+ /**
29
+ * Describes the message world.UploadArtifactRequest.
30
+ * Use `create(UploadArtifactRequestSchema)` to create a new message.
31
+ */
32
+ export const UploadArtifactRequestSchema = /*@__PURE__*/
33
+ messageDesc(file_artifacts, 2);
34
+
35
+ /**
36
+ * Describes the message world.UploadArtifactResponse.
37
+ * Use `create(UploadArtifactResponseSchema)` to create a new message.
38
+ */
39
+ export const UploadArtifactResponseSchema = /*@__PURE__*/
40
+ messageDesc(file_artifacts, 3);
41
+
42
+ /**
43
+ * @generated from service world.ArtifactService
44
+ */
45
+ export const ArtifactService = /*@__PURE__*/
46
+ serviceDesc(file_artifacts, 0);
47
+
@@ -263,7 +263,17 @@ export enum MetricKind {
263
263
  MetricKindPh = 104,
264
264
 
265
265
  /**
266
- * CBRN hazard categories
266
+ * @generated from enum value: MetricKindRadon = 105;
267
+ */
268
+ MetricKindRadon = 105,
269
+
270
+ /**
271
+ * @generated from enum value: MetricKindOxygen = 106;
272
+ */
273
+ MetricKindOxygen = 106,
274
+
275
+ /**
276
+ * CBRN hazards
267
277
  *
268
278
  * @generated from enum value: MetricKindRadiationHazard = 130;
269
279
  */
@@ -572,7 +582,12 @@ export enum MetricUnit {
572
582
  MetricUnitMicrogramPerCubicMeter = 91,
573
583
 
574
584
  /**
575
- * Radiation dose / dose rate
585
+ * @generated from enum value: MetricUnitBecquerelPerCubicMeter = 92;
586
+ */
587
+ MetricUnitBecquerelPerCubicMeter = 92,
588
+
589
+ /**
590
+ * Radiation — dose equivalent (Sievert)
576
591
  *
577
592
  * @generated from enum value: MetricUnitNanosievert = 130;
578
593
  */
@@ -613,6 +628,60 @@ export enum MetricUnit {
613
628
  */
614
629
  MetricUnitSievertPerHour = 137,
615
630
 
631
+ /**
632
+ * Radiation — absorbed dose (Gray)
633
+ *
634
+ * @generated from enum value: MetricUnitNanogray = 150;
635
+ */
636
+ MetricUnitNanogray = 150,
637
+
638
+ /**
639
+ * @generated from enum value: MetricUnitNanograyPerHour = 151;
640
+ */
641
+ MetricUnitNanograyPerHour = 151,
642
+
643
+ /**
644
+ * @generated from enum value: MetricUnitMicrogray = 152;
645
+ */
646
+ MetricUnitMicrogray = 152,
647
+
648
+ /**
649
+ * @generated from enum value: MetricUnitMicrograyPerHour = 153;
650
+ */
651
+ MetricUnitMicrograyPerHour = 153,
652
+
653
+ /**
654
+ * @generated from enum value: MetricUnitMilligray = 154;
655
+ */
656
+ MetricUnitMilligray = 154,
657
+
658
+ /**
659
+ * @generated from enum value: MetricUnitMilligrayPerHour = 155;
660
+ */
661
+ MetricUnitMilligrayPerHour = 155,
662
+
663
+ /**
664
+ * @generated from enum value: MetricUnitGray = 156;
665
+ */
666
+ MetricUnitGray = 156,
667
+
668
+ /**
669
+ * @generated from enum value: MetricUnitGrayPerHour = 157;
670
+ */
671
+ MetricUnitGrayPerHour = 157,
672
+
673
+ /**
674
+ * @generated from enum value: MetricUnitCentigray = 158;
675
+ */
676
+ MetricUnitCentigray = 158,
677
+
678
+ /**
679
+ * Radiation — detection
680
+ *
681
+ * @generated from enum value: MetricUnitCountsPerSecond = 160;
682
+ */
683
+ MetricUnitCountsPerSecond = 160,
684
+
616
685
  /**
617
686
  * Chemical contamination
618
687
  *
@@ -9,7 +9,7 @@ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
9
9
  * Describes the file metrics.proto.
10
10
  */
11
11
  export const file_metrics = /*@__PURE__*/
12
- fileDesc("Cg1tZXRyaWNzLnByb3RvEgV3b3JsZCKiAgoGTWV0cmljEh8KBHVuaXQYASABKA4yES53b3JsZC5NZXRyaWNVbml0Eg8KAmlkGAIgASgNSAGIAQESJAoEa2luZBgDIAEoDjIRLndvcmxkLk1ldHJpY0tpbmRIAogBARISCgVsYWJlbBgEIAEoCUgDiAEBEjQKC21lYXN1cmVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhAKBmRvdWJsZRgKIAEoAUgAEg8KBWZsb2F0GAsgASgCSAASEAoGc2ludDY0GAwgASgSSAASEAoGdWludDY0GA0gASgESABCBQoDdmFsQgUKA19pZEIHCgVfa2luZEIICgZfbGFiZWxCDgoMX21lYXN1cmVkX2F0IjEKD01ldHJpY0NvbXBvbmVudBIeCgdtZXRyaWNzGAEgAygLMg0ud29ybGQuTWV0cmljKuoHCgpNZXRyaWNLaW5kEhkKFU1ldHJpY0tpbmRVbnNwZWNpZmllZBAAEhkKFU1ldHJpY0tpbmRUZW1wZXJhdHVyZRABEhYKEk1ldHJpY0tpbmRQcmVzc3VyZRACEhYKEk1ldHJpY0tpbmRIdW1pZGl0eRADEhkKFU1ldHJpY0tpbmRJbGx1bWluYW5jZRAEEhgKFE1ldHJpY0tpbmRTb3VuZExldmVsEAUSFwoTTWV0cmljS2luZFdpbmRTcGVlZBAGEhsKF01ldHJpY0tpbmRXaW5kRGlyZWN0aW9uEAcSGwoXTWV0cmljS2luZFByZWNpcGl0YXRpb24QCBIYChRNZXRyaWNLaW5kSXJyYWRpYW5jZRAJEhUKEU1ldHJpY0tpbmRWb2x0YWdlEBQSFQoRTWV0cmljS2luZEN1cnJlbnQQFRITCg9NZXRyaWNLaW5kUG93ZXIQFhIUChBNZXRyaWNLaW5kRW5lcmd5EBcSFwoTTWV0cmljS2luZEZyZXF1ZW5jeRAYEhgKFE1ldHJpY0tpbmRSZXNpc3RhbmNlEBkSFgoSTWV0cmljS2luZFByb2dyZXNzECgSGAoUTWV0cmljS2luZFBlcmNlbnRhZ2UQKRIWChJNZXRyaWNLaW5kRGlzdGFuY2UQPBITCg9NZXRyaWNLaW5kU3BlZWQQPRIaChZNZXRyaWNLaW5kQWNjZWxlcmF0aW9uED4SEwoPTWV0cmljS2luZERlcHRoED8SFgoSTWV0cmljS2luZERhdGFSYXRlEFASFQoRTWV0cmljS2luZExhdGVuY3kQURIWChJNZXRyaWNLaW5kRGF0YVNpemUQUhIRCg1NZXRyaWNLaW5kQ28yEGQSEgoOTWV0cmljS2luZFBtMjUQZRISCg5NZXRyaWNLaW5kUG0xMBBmEhEKDU1ldHJpY0tpbmRBcWkQZxIQCgxNZXRyaWNLaW5kUGgQaBIeChlNZXRyaWNLaW5kUmFkaWF0aW9uSGF6YXJkEIIBEh0KGE1ldHJpY0tpbmRDaGVtaWNhbEhhemFyZBCDARIfChpNZXRyaWNLaW5kQmlvbG9naWNhbEhhemFyZBCEARIcChdNZXRyaWNLaW5kTnVjbGVhckhhemFyZBCFARIUChBNZXRyaWNLaW5kV2VpZ2h0EG4SFAoQTWV0cmljS2luZFZvbHVtZRBwEhwKGE1ldHJpY0tpbmRWb2x1bWVGbG93UmF0ZRBxEhwKGE1ldHJpY0tpbmRTaWduYWxTdHJlbmd0aBBzEhYKEk1ldHJpY0tpbmREdXJhdGlvbhB2EhMKD01ldHJpY0tpbmRDb3VudBB4KqYPCgpNZXRyaWNVbml0EhkKFU1ldHJpY1VuaXRVbnNwZWNpZmllZBAAEhUKEU1ldHJpY1VuaXRDZWxzaXVzEAESGAoUTWV0cmljVW5pdEZhaHJlbmhlaXQQAhIUChBNZXRyaWNVbml0S2VsdmluEAMSGQoVTWV0cmljVW5pdEhlY3RvcGFzY2FsEAoSEQoNTWV0cmljVW5pdFBzaRALEhEKDU1ldHJpY1VuaXRCYXIQDBIWChJNZXRyaWNVbml0TWlsbGliYXIQDRISCg5NZXRyaWNVbml0SW5IZxAOEhUKEU1ldHJpY1VuaXRQZXJjZW50EBQSEwoPTWV0cmljVW5pdFJhdGlvEBUSEgoOTWV0cmljVW5pdFZvbHQQHhIXChNNZXRyaWNVbml0TWlsbGl2b2x0EB8SFAoQTWV0cmljVW5pdEFtcGVyZRAgEhkKFU1ldHJpY1VuaXRNaWxsaWFtcGVyZRAhEhIKDk1ldHJpY1VuaXRXYXR0ECISFgoSTWV0cmljVW5pdEtpbG93YXR0ECMSFgoSTWV0cmljVW5pdFdhdHRIb3VyECQSGgoWTWV0cmljVW5pdEtpbG93YXR0SG91chAlEhMKD01ldHJpY1VuaXRIZXJ0ehAmEhcKE01ldHJpY1VuaXRLaWxvaGVydHoQJxIXChNNZXRyaWNVbml0TWVnYWhlcnR6ECgSEQoNTWV0cmljVW5pdE9obRApEhMKD01ldHJpY1VuaXRNZXRlchAyEhcKE01ldHJpY1VuaXRLaWxvbWV0ZXIQMxISCg5NZXRyaWNVbml0Rm9vdBA0EhoKFk1ldHJpY1VuaXROYXV0aWNhbE1pbGUQNRIcChhNZXRyaWNVbml0TWV0ZXJQZXJTZWNvbmQQNhISCg5NZXRyaWNVbml0S25vdBA3Eh4KGk1ldHJpY1VuaXRLaWxvbWV0ZXJQZXJIb3VyEDgSIwofTWV0cmljVW5pdE1ldGVyUGVyU2Vjb25kU3F1YXJlZBA5EhEKDU1ldHJpY1VuaXRMdXgQPBIVChFNZXRyaWNVbml0RGVjaWJlbBBGEhYKEk1ldHJpY1VuaXREZWNpYmVsQRBHEhoKFk1ldHJpY1VuaXRCaXRQZXJTZWNvbmQQUBIeChpNZXRyaWNVbml0S2lsb2JpdFBlclNlY29uZBBREh4KGk1ldHJpY1VuaXRNZWdhYml0UGVyU2Vjb25kEFISEgoOTWV0cmljVW5pdEJ5dGUQVBIWChJNZXRyaWNVbml0S2lsb2J5dGUQVRIWChJNZXRyaWNVbml0TWVnYWJ5dGUQVhIWChJNZXRyaWNVbml0R2lnYWJ5dGUQVxIdChlNZXRyaWNVbml0UGFydHNQZXJNaWxsaW9uEFoSJAogTWV0cmljVW5pdE1pY3JvZ3JhbVBlckN1YmljTWV0ZXIQWxIaChVNZXRyaWNVbml0TmFub3NpZXZlcnQQggESIQocTWV0cmljVW5pdE5hbm9zaWV2ZXJ0UGVySG91chCDARIbChZNZXRyaWNVbml0TWljcm9zaWV2ZXJ0EIQBEiIKHU1ldHJpY1VuaXRNaWNyb3NpZXZlcnRQZXJIb3VyEIUBEhsKFk1ldHJpY1VuaXRNaWxsaXNpZXZlcnQQhgESIgodTWV0cmljVW5pdE1pbGxpc2lldmVydFBlckhvdXIQhwESFgoRTWV0cmljVW5pdFNpZXZlcnQQiAESHQoYTWV0cmljVW5pdFNpZXZlcnRQZXJIb3VyEIkBEh4KGU1ldHJpY1VuaXRQYXJ0c1BlckJpbGxpb24QigESJQogTWV0cmljVW5pdE1pbGxpZ3JhbVBlckN1YmljTWV0ZXIQiwESJgohTWV0cmljVW5pdE1pY3JvZ3JhbVBlclNxdWFyZU1ldGVyEIwBEhIKDU1ldHJpY1VuaXRCaW4QjQESGAoUTWV0cmljVW5pdE1pbGxpbWV0ZXIQXhIfChtNZXRyaWNVbml0TWlsbGltZXRlclBlckhvdXIQXxIUChBNZXRyaWNVbml0RGVncmVlEGQSFAoQTWV0cmljVW5pdFJhZGlhbhBlEhkKFU1ldHJpY1VuaXRNaWxsaXNlY29uZBBTEhQKEE1ldHJpY1VuaXRTZWNvbmQQbhIUChBNZXRyaWNVbml0TWludXRlEG8SEgoOTWV0cmljVW5pdEhvdXIQcBIWChJNZXRyaWNVbml0S2lsb2dyYW0QcRISCg5NZXRyaWNVbml0R3JhbRByEhMKD01ldHJpY1VuaXRQb3VuZBBzEhMKD01ldHJpY1VuaXRMaXRlchB0EhgKFE1ldHJpY1VuaXRNaWxsaWxpdGVyEHUSGAoUTWV0cmljVW5pdEN1YmljTWV0ZXIQdhIUChBNZXRyaWNVbml0R2FsbG9uEHcSEwoPTWV0cmljVW5pdENvdW50EHgSHAoYTWV0cmljVW5pdExpdGVyUGVyTWludXRlEHkSHwobTWV0cmljVW5pdEN1YmljTWV0ZXJQZXJIb3VyEHoSHgoaTWV0cmljVW5pdERlY2liZWxNaWxsaXdhdHQQexIgChxNZXRyaWNVbml0V2F0dFBlclNxdWFyZU1ldGVyEHxCIFoeZ2l0aHViLmNvbS9wcm9qZWN0cWFpL3Byb3RvL2dvYgZwcm90bzM", [file_google_protobuf_timestamp]);
12
+ fileDesc("Cg1tZXRyaWNzLnByb3RvEgV3b3JsZCKiAgoGTWV0cmljEh8KBHVuaXQYASABKA4yES53b3JsZC5NZXRyaWNVbml0Eg8KAmlkGAIgASgNSAGIAQESJAoEa2luZBgDIAEoDjIRLndvcmxkLk1ldHJpY0tpbmRIAogBARISCgVsYWJlbBgEIAEoCUgDiAEBEjQKC21lYXN1cmVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhAKBmRvdWJsZRgKIAEoAUgAEg8KBWZsb2F0GAsgASgCSAASEAoGc2ludDY0GAwgASgSSAASEAoGdWludDY0GA0gASgESABCBQoDdmFsQgUKA19pZEIHCgVfa2luZEIICgZfbGFiZWxCDgoMX21lYXN1cmVkX2F0IjEKD01ldHJpY0NvbXBvbmVudBIeCgdtZXRyaWNzGAEgAygLMg0ud29ybGQuTWV0cmljKpUICgpNZXRyaWNLaW5kEhkKFU1ldHJpY0tpbmRVbnNwZWNpZmllZBAAEhkKFU1ldHJpY0tpbmRUZW1wZXJhdHVyZRABEhYKEk1ldHJpY0tpbmRQcmVzc3VyZRACEhYKEk1ldHJpY0tpbmRIdW1pZGl0eRADEhkKFU1ldHJpY0tpbmRJbGx1bWluYW5jZRAEEhgKFE1ldHJpY0tpbmRTb3VuZExldmVsEAUSFwoTTWV0cmljS2luZFdpbmRTcGVlZBAGEhsKF01ldHJpY0tpbmRXaW5kRGlyZWN0aW9uEAcSGwoXTWV0cmljS2luZFByZWNpcGl0YXRpb24QCBIYChRNZXRyaWNLaW5kSXJyYWRpYW5jZRAJEhUKEU1ldHJpY0tpbmRWb2x0YWdlEBQSFQoRTWV0cmljS2luZEN1cnJlbnQQFRITCg9NZXRyaWNLaW5kUG93ZXIQFhIUChBNZXRyaWNLaW5kRW5lcmd5EBcSFwoTTWV0cmljS2luZEZyZXF1ZW5jeRAYEhgKFE1ldHJpY0tpbmRSZXNpc3RhbmNlEBkSFgoSTWV0cmljS2luZFByb2dyZXNzECgSGAoUTWV0cmljS2luZFBlcmNlbnRhZ2UQKRIWChJNZXRyaWNLaW5kRGlzdGFuY2UQPBITCg9NZXRyaWNLaW5kU3BlZWQQPRIaChZNZXRyaWNLaW5kQWNjZWxlcmF0aW9uED4SEwoPTWV0cmljS2luZERlcHRoED8SFgoSTWV0cmljS2luZERhdGFSYXRlEFASFQoRTWV0cmljS2luZExhdGVuY3kQURIWChJNZXRyaWNLaW5kRGF0YVNpemUQUhIRCg1NZXRyaWNLaW5kQ28yEGQSEgoOTWV0cmljS2luZFBtMjUQZRISCg5NZXRyaWNLaW5kUG0xMBBmEhEKDU1ldHJpY0tpbmRBcWkQZxIQCgxNZXRyaWNLaW5kUGgQaBITCg9NZXRyaWNLaW5kUmFkb24QaRIUChBNZXRyaWNLaW5kT3h5Z2VuEGoSHgoZTWV0cmljS2luZFJhZGlhdGlvbkhhemFyZBCCARIdChhNZXRyaWNLaW5kQ2hlbWljYWxIYXphcmQQgwESHwoaTWV0cmljS2luZEJpb2xvZ2ljYWxIYXphcmQQhAESHAoXTWV0cmljS2luZE51Y2xlYXJIYXphcmQQhQESFAoQTWV0cmljS2luZFdlaWdodBBuEhQKEE1ldHJpY0tpbmRWb2x1bWUQcBIcChhNZXRyaWNLaW5kVm9sdW1lRmxvd1JhdGUQcRIcChhNZXRyaWNLaW5kU2lnbmFsU3RyZW5ndGgQcxIWChJNZXRyaWNLaW5kRHVyYXRpb24QdhITCg9NZXRyaWNLaW5kQ291bnQQeCrmEQoKTWV0cmljVW5pdBIZChVNZXRyaWNVbml0VW5zcGVjaWZpZWQQABIVChFNZXRyaWNVbml0Q2Vsc2l1cxABEhgKFE1ldHJpY1VuaXRGYWhyZW5oZWl0EAISFAoQTWV0cmljVW5pdEtlbHZpbhADEhkKFU1ldHJpY1VuaXRIZWN0b3Bhc2NhbBAKEhEKDU1ldHJpY1VuaXRQc2kQCxIRCg1NZXRyaWNVbml0QmFyEAwSFgoSTWV0cmljVW5pdE1pbGxpYmFyEA0SEgoOTWV0cmljVW5pdEluSGcQDhIVChFNZXRyaWNVbml0UGVyY2VudBAUEhMKD01ldHJpY1VuaXRSYXRpbxAVEhIKDk1ldHJpY1VuaXRWb2x0EB4SFwoTTWV0cmljVW5pdE1pbGxpdm9sdBAfEhQKEE1ldHJpY1VuaXRBbXBlcmUQIBIZChVNZXRyaWNVbml0TWlsbGlhbXBlcmUQIRISCg5NZXRyaWNVbml0V2F0dBAiEhYKEk1ldHJpY1VuaXRLaWxvd2F0dBAjEhYKEk1ldHJpY1VuaXRXYXR0SG91chAkEhoKFk1ldHJpY1VuaXRLaWxvd2F0dEhvdXIQJRITCg9NZXRyaWNVbml0SGVydHoQJhIXChNNZXRyaWNVbml0S2lsb2hlcnR6ECcSFwoTTWV0cmljVW5pdE1lZ2FoZXJ0ehAoEhEKDU1ldHJpY1VuaXRPaG0QKRITCg9NZXRyaWNVbml0TWV0ZXIQMhIXChNNZXRyaWNVbml0S2lsb21ldGVyEDMSEgoOTWV0cmljVW5pdEZvb3QQNBIaChZNZXRyaWNVbml0TmF1dGljYWxNaWxlEDUSHAoYTWV0cmljVW5pdE1ldGVyUGVyU2Vjb25kEDYSEgoOTWV0cmljVW5pdEtub3QQNxIeChpNZXRyaWNVbml0S2lsb21ldGVyUGVySG91chA4EiMKH01ldHJpY1VuaXRNZXRlclBlclNlY29uZFNxdWFyZWQQORIRCg1NZXRyaWNVbml0THV4EDwSFQoRTWV0cmljVW5pdERlY2liZWwQRhIWChJNZXRyaWNVbml0RGVjaWJlbEEQRxIaChZNZXRyaWNVbml0Qml0UGVyU2Vjb25kEFASHgoaTWV0cmljVW5pdEtpbG9iaXRQZXJTZWNvbmQQURIeChpNZXRyaWNVbml0TWVnYWJpdFBlclNlY29uZBBSEhIKDk1ldHJpY1VuaXRCeXRlEFQSFgoSTWV0cmljVW5pdEtpbG9ieXRlEFUSFgoSTWV0cmljVW5pdE1lZ2FieXRlEFYSFgoSTWV0cmljVW5pdEdpZ2FieXRlEFcSHQoZTWV0cmljVW5pdFBhcnRzUGVyTWlsbGlvbhBaEiQKIE1ldHJpY1VuaXRNaWNyb2dyYW1QZXJDdWJpY01ldGVyEFsSJAogTWV0cmljVW5pdEJlY3F1ZXJlbFBlckN1YmljTWV0ZXIQXBIaChVNZXRyaWNVbml0TmFub3NpZXZlcnQQggESIQocTWV0cmljVW5pdE5hbm9zaWV2ZXJ0UGVySG91chCDARIbChZNZXRyaWNVbml0TWljcm9zaWV2ZXJ0EIQBEiIKHU1ldHJpY1VuaXRNaWNyb3NpZXZlcnRQZXJIb3VyEIUBEhsKFk1ldHJpY1VuaXRNaWxsaXNpZXZlcnQQhgESIgodTWV0cmljVW5pdE1pbGxpc2lldmVydFBlckhvdXIQhwESFgoRTWV0cmljVW5pdFNpZXZlcnQQiAESHQoYTWV0cmljVW5pdFNpZXZlcnRQZXJIb3VyEIkBEhcKEk1ldHJpY1VuaXROYW5vZ3JheRCWARIeChlNZXRyaWNVbml0TmFub2dyYXlQZXJIb3VyEJcBEhgKE01ldHJpY1VuaXRNaWNyb2dyYXkQmAESHwoaTWV0cmljVW5pdE1pY3JvZ3JheVBlckhvdXIQmQESGAoTTWV0cmljVW5pdE1pbGxpZ3JheRCaARIfChpNZXRyaWNVbml0TWlsbGlncmF5UGVySG91chCbARITCg5NZXRyaWNVbml0R3JheRCcARIaChVNZXRyaWNVbml0R3JheVBlckhvdXIQnQESGAoTTWV0cmljVW5pdENlbnRpZ3JheRCeARIeChlNZXRyaWNVbml0Q291bnRzUGVyU2Vjb25kEKABEh4KGU1ldHJpY1VuaXRQYXJ0c1BlckJpbGxpb24QigESJQogTWV0cmljVW5pdE1pbGxpZ3JhbVBlckN1YmljTWV0ZXIQiwESJgohTWV0cmljVW5pdE1pY3JvZ3JhbVBlclNxdWFyZU1ldGVyEIwBEhIKDU1ldHJpY1VuaXRCaW4QjQESGAoUTWV0cmljVW5pdE1pbGxpbWV0ZXIQXhIfChtNZXRyaWNVbml0TWlsbGltZXRlclBlckhvdXIQXxIUChBNZXRyaWNVbml0RGVncmVlEGQSFAoQTWV0cmljVW5pdFJhZGlhbhBlEhkKFU1ldHJpY1VuaXRNaWxsaXNlY29uZBBTEhQKEE1ldHJpY1VuaXRTZWNvbmQQbhIUChBNZXRyaWNVbml0TWludXRlEG8SEgoOTWV0cmljVW5pdEhvdXIQcBIWChJNZXRyaWNVbml0S2lsb2dyYW0QcRISCg5NZXRyaWNVbml0R3JhbRByEhMKD01ldHJpY1VuaXRQb3VuZBBzEhMKD01ldHJpY1VuaXRMaXRlchB0EhgKFE1ldHJpY1VuaXRNaWxsaWxpdGVyEHUSGAoUTWV0cmljVW5pdEN1YmljTWV0ZXIQdhIUChBNZXRyaWNVbml0R2FsbG9uEHcSEwoPTWV0cmljVW5pdENvdW50EHgSHAoYTWV0cmljVW5pdExpdGVyUGVyTWludXRlEHkSHwobTWV0cmljVW5pdEN1YmljTWV0ZXJQZXJIb3VyEHoSHgoaTWV0cmljVW5pdERlY2liZWxNaWxsaXdhdHQQexIgChxNZXRyaWNVbml0V2F0dFBlclNxdWFyZU1ldGVyEHxCIFoeZ2l0aHViLmNvbS9wcm9qZWN0cWFpL3Byb3RvL2dvYgZwcm90bzM", [file_google_protobuf_timestamp]);
13
13
 
14
14
  /**
15
15
  * Describes the message world.Metric.
@@ -196,6 +196,11 @@ export declare type Entity = Message<"world.Entity"> & {
196
196
  */
197
197
  interactivity?: InteractivityComponent;
198
198
 
199
+ /**
200
+ * @generated from field: optional world.ArtifactComponent artifact = 61;
201
+ */
202
+ artifact?: ArtifactComponent;
203
+
199
204
  /**
200
205
  * @generated from field: optional world.TargetPoseComponent target_pose = 62;
201
206
  */
@@ -544,6 +549,60 @@ export declare type CameraComponent = Message<"world.CameraComponent"> & {
544
549
  */
545
550
  export declare const CameraComponentSchema: GenMessage<CameraComponent>;
546
551
 
552
+ /**
553
+ * reference to external system
554
+ *
555
+ * @generated from message world.ArtifactLocation
556
+ */
557
+ export declare type ArtifactLocation = Message<"world.ArtifactLocation"> & {
558
+ /**
559
+ * @generated from field: string url = 1;
560
+ */
561
+ url: string;
562
+ };
563
+
564
+ /**
565
+ * Describes the message world.ArtifactLocation.
566
+ * Use `create(ArtifactLocationSchema)` to create a new message.
567
+ */
568
+ export declare const ArtifactLocationSchema: GenMessage<ArtifactLocation>;
569
+
570
+ /**
571
+ * @generated from message world.ArtifactComponent
572
+ */
573
+ export declare type ArtifactComponent = Message<"world.ArtifactComponent"> & {
574
+ /**
575
+ * @generated from field: string id = 1;
576
+ */
577
+ id: string;
578
+
579
+ /**
580
+ * @generated from field: string content_type = 2;
581
+ */
582
+ contentType: string;
583
+
584
+ /**
585
+ * @generated from field: repeated world.ArtifactLocation location = 3;
586
+ */
587
+ location: ArtifactLocation[];
588
+
589
+ /**
590
+ * @generated from field: optional int64 size_bytes = 4;
591
+ */
592
+ sizeBytes?: bigint;
593
+
594
+ /**
595
+ * @generated from field: optional string sha256 = 5;
596
+ */
597
+ sha256?: string;
598
+ };
599
+
600
+ /**
601
+ * Describes the message world.ArtifactComponent.
602
+ * Use `create(ArtifactComponentSchema)` to create a new message.
603
+ */
604
+ export declare const ArtifactComponentSchema: GenMessage<ArtifactComponent>;
605
+
547
606
  /**
548
607
  * @generated from message world.DetectionComponent
549
608
  */
@@ -562,6 +621,13 @@ export declare type DetectionComponent = Message<"world.DetectionComponent"> & {
562
621
  * @generated from field: optional google.protobuf.Timestamp lastMeasured = 3;
563
622
  */
564
623
  lastMeasured?: Timestamp;
624
+
625
+ /**
626
+ * entity ids of evidence that triggered or supports this detection
627
+ *
628
+ * @generated from field: repeated string evidence = 4;
629
+ */
630
+ evidence: string[];
565
631
  };
566
632
 
567
633
  /**
@@ -1572,6 +1638,13 @@ export declare type CaptureComponent = Message<"world.CaptureComponent"> & {
1572
1638
  * @generated from field: optional google.protobuf.Timestamp captured_at = 5;
1573
1639
  */
1574
1640
  capturedAt?: Timestamp;
1641
+
1642
+ /**
1643
+ * more entities that are captured, such as artifacts when payload is too large
1644
+ *
1645
+ * @generated from field: repeated string content = 6;
1646
+ */
1647
+ content: string[];
1575
1648
  };
1576
1649
 
1577
1650
  /**
@@ -1793,6 +1866,11 @@ export declare type DeviceComponent = Message<"world.DeviceComponent"> & {
1793
1866
  * @generated from field: optional world.MeshtasticDevice meshtastic = 26;
1794
1867
  */
1795
1868
  meshtastic?: MeshtasticDevice;
1869
+
1870
+ /**
1871
+ * @generated from field: optional world.BleDevice ble = 27;
1872
+ */
1873
+ ble?: BleDevice;
1796
1874
  };
1797
1875
 
1798
1876
  /**
@@ -2026,6 +2104,38 @@ export declare type LPWANDevice = Message<"world.LPWANDevice"> & {
2026
2104
  */
2027
2105
  export declare const LPWANDeviceSchema: GenMessage<LPWANDevice>;
2028
2106
 
2107
+ /**
2108
+ * @generated from message world.BleDevice
2109
+ */
2110
+ export declare type BleDevice = Message<"world.BleDevice"> & {
2111
+ /**
2112
+ * MAC address or platform-specific identifier
2113
+ *
2114
+ * @generated from field: optional string address = 1;
2115
+ */
2116
+ address?: string;
2117
+
2118
+ /**
2119
+ * advertised device name
2120
+ *
2121
+ * @generated from field: optional string name = 2;
2122
+ */
2123
+ name?: string;
2124
+
2125
+ /**
2126
+ * advertised GATT service UUIDs
2127
+ *
2128
+ * @generated from field: repeated string service_uuids = 4;
2129
+ */
2130
+ serviceUuids: string[];
2131
+ };
2132
+
2133
+ /**
2134
+ * Describes the message world.BleDevice.
2135
+ * Use `create(BleDeviceSchema)` to create a new message.
2136
+ */
2137
+ export declare const BleDeviceSchema: GenMessage<BleDevice>;
2138
+
2029
2139
  /**
2030
2140
  * Configuration pushed onto an entity. The engine delivers entities with
2031
2141
  * Config to the matching controller via Reconcile.
@@ -2315,6 +2425,27 @@ export declare type DeviceFilter = Message<"world.DeviceFilter"> & {
2315
2425
  * @generated from field: optional string unique_hardware_id = 4;
2316
2426
  */
2317
2427
  uniqueHardwareId?: string;
2428
+
2429
+ /**
2430
+ * match device class string (e.g. "usb_serial", "radio")
2431
+ *
2432
+ * @generated from field: optional string device_class = 5;
2433
+ */
2434
+ deviceClass?: string;
2435
+
2436
+ /**
2437
+ * match BLE device properties
2438
+ *
2439
+ * @generated from field: optional world.BleDeviceFilter ble = 6;
2440
+ */
2441
+ ble?: BleDeviceFilter;
2442
+
2443
+ /**
2444
+ * match USB device properties
2445
+ *
2446
+ * @generated from field: optional world.UsbDeviceFilter usb = 7;
2447
+ */
2448
+ usb?: UsbDeviceFilter;
2318
2449
  };
2319
2450
 
2320
2451
  /**
@@ -2323,6 +2454,87 @@ export declare type DeviceFilter = Message<"world.DeviceFilter"> & {
2323
2454
  */
2324
2455
  export declare const DeviceFilterSchema: GenMessage<DeviceFilter>;
2325
2456
 
2457
+ /**
2458
+ * Matches against BleDevice fields. All set fields must match.
2459
+ *
2460
+ * @generated from message world.BleDeviceFilter
2461
+ */
2462
+ export declare type BleDeviceFilter = Message<"world.BleDeviceFilter"> & {
2463
+ /**
2464
+ * @generated from field: optional string address = 1;
2465
+ */
2466
+ address?: string;
2467
+
2468
+ /**
2469
+ * @generated from field: optional string name = 2;
2470
+ */
2471
+ name?: string;
2472
+
2473
+ /**
2474
+ * @generated from field: repeated string service_uuids = 4;
2475
+ */
2476
+ serviceUuids: string[];
2477
+ };
2478
+
2479
+ /**
2480
+ * Describes the message world.BleDeviceFilter.
2481
+ * Use `create(BleDeviceFilterSchema)` to create a new message.
2482
+ */
2483
+ export declare const BleDeviceFilterSchema: GenMessage<BleDeviceFilter>;
2484
+
2485
+ /**
2486
+ * Matches against UsbDevice fields. All set fields must match.
2487
+ *
2488
+ * @generated from message world.UsbDeviceFilter
2489
+ */
2490
+ export declare type UsbDeviceFilter = Message<"world.UsbDeviceFilter"> & {
2491
+ /**
2492
+ * @generated from field: optional uint32 vendor_id = 1;
2493
+ */
2494
+ vendorId?: number;
2495
+
2496
+ /**
2497
+ * @generated from field: optional uint32 product_id = 2;
2498
+ */
2499
+ productId?: number;
2500
+
2501
+ /**
2502
+ * @generated from field: optional uint32 device_class = 3;
2503
+ */
2504
+ deviceClass?: number;
2505
+
2506
+ /**
2507
+ * @generated from field: optional uint32 device_subclass = 4;
2508
+ */
2509
+ deviceSubclass?: number;
2510
+
2511
+ /**
2512
+ * @generated from field: optional uint32 device_protocol = 5;
2513
+ */
2514
+ deviceProtocol?: number;
2515
+
2516
+ /**
2517
+ * @generated from field: optional string manufacturer_name = 6;
2518
+ */
2519
+ manufacturerName?: string;
2520
+
2521
+ /**
2522
+ * @generated from field: optional string product_name = 7;
2523
+ */
2524
+ productName?: string;
2525
+
2526
+ /**
2527
+ * @generated from field: optional string serial_number = 8;
2528
+ */
2529
+ serialNumber?: string;
2530
+ };
2531
+
2532
+ /**
2533
+ * Describes the message world.UsbDeviceFilter.
2534
+ * Use `create(UsbDeviceFilterSchema)` to create a new message.
2535
+ */
2536
+ export declare const UsbDeviceFilterSchema: GenMessage<UsbDeviceFilter>;
2537
+
2326
2538
  /**
2327
2539
  * @generated from message world.ConfigurationFilter
2328
2540
  */
@@ -3395,6 +3607,11 @@ export enum EntityComponent {
3395
3607
  */
3396
3608
  EntityComponentInteractivity = 60,
3397
3609
 
3610
+ /**
3611
+ * @generated from enum value: EntityComponentArtifact = 61;
3612
+ */
3613
+ EntityComponentArtifact = 61,
3614
+
3398
3615
  /**
3399
3616
  * @generated from enum value: EntityComponentTargetPose = 62;
3400
3617
  */