@rise-maritime/keelson-js 0.5.3 → 0.6.0-pre.3

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 (103) hide show
  1. package/dist/index.d.ts +434 -1
  2. package/dist/index.js +114 -5
  3. package/dist/index.test.js +57 -0
  4. package/dist/interfaces/AlarmAck.d.ts +62 -0
  5. package/dist/interfaces/AlarmAck.js +218 -0
  6. package/dist/interfaces/Configurable.d.ts +24 -18
  7. package/dist/interfaces/Configurable.js +24 -22
  8. package/dist/interfaces/Coordinate.d.ts +38 -0
  9. package/dist/interfaces/Coordinate.js +82 -0
  10. package/dist/interfaces/ErrorResponse.d.ts +1 -1
  11. package/dist/interfaces/ErrorResponse.js +1 -1
  12. package/dist/interfaces/MavlinkCommand.d.ts +24 -18
  13. package/dist/interfaces/MavlinkCommand.js +24 -22
  14. package/dist/interfaces/Mission.d.ts +128 -0
  15. package/dist/interfaces/Mission.js +800 -0
  16. package/dist/interfaces/NetworkPingPong.d.ts +16 -16
  17. package/dist/interfaces/NetworkPingPong.js +16 -16
  18. package/dist/interfaces/ReplayControl.d.ts +72 -30
  19. package/dist/interfaces/ReplayControl.js +72 -58
  20. package/dist/interfaces/Route.d.ts +627 -0
  21. package/dist/interfaces/Route.js +4148 -0
  22. package/dist/interfaces/RoutePlanner.d.ts +152 -0
  23. package/dist/interfaces/RoutePlanner.js +268 -0
  24. package/dist/interfaces/Severity.d.ts +22 -0
  25. package/dist/interfaces/Severity.js +72 -0
  26. package/dist/interfaces/SimulationControl.d.ts +69 -0
  27. package/dist/interfaces/SimulationControl.js +153 -0
  28. package/dist/interfaces/Subscriber.d.ts +24 -18
  29. package/dist/interfaces/Subscriber.js +24 -22
  30. package/dist/interfaces/VehicleCommon.d.ts +1 -32
  31. package/dist/interfaces/VehicleCommon.js +2 -74
  32. package/dist/interfaces/VehicleControl.d.ts +34 -28
  33. package/dist/interfaces/VehicleControl.js +34 -22
  34. package/dist/interfaces/VehicleGeofence.d.ts +26 -19
  35. package/dist/interfaces/VehicleGeofence.js +40 -37
  36. package/dist/interfaces/VehicleLifecycle.d.ts +32 -20
  37. package/dist/interfaces/VehicleLifecycle.js +32 -28
  38. package/dist/interfaces/VehicleMission.d.ts +42 -97
  39. package/dist/interfaces/VehicleMission.js +41 -696
  40. package/dist/interfaces/VehicleNavigation.d.ts +30 -24
  41. package/dist/interfaces/VehicleNavigation.js +30 -22
  42. package/dist/interfaces/VehicleParam.d.ts +48 -24
  43. package/dist/interfaces/VehicleParam.js +48 -40
  44. package/dist/interfaces/VehicleSimulatorControl.d.ts +57 -0
  45. package/dist/interfaces/VehicleSimulatorControl.js +155 -0
  46. package/dist/interfaces/WHEPProxy.d.ts +16 -16
  47. package/dist/interfaces/WHEPProxy.js +16 -16
  48. package/dist/interfaces/foxglove/GeoJSON.d.ts +27 -0
  49. package/dist/interfaces/foxglove/GeoJSON.js +65 -0
  50. package/dist/interfaces/foxglove/LocationFix.d.ts +49 -0
  51. package/dist/interfaces/foxglove/LocationFix.js +246 -0
  52. package/dist/interfaces/google/protobuf/any.d.ts +144 -0
  53. package/dist/interfaces/google/protobuf/any.js +107 -0
  54. package/dist/interfaces/google/protobuf/duration.d.ts +99 -0
  55. package/dist/interfaces/google/protobuf/duration.js +92 -0
  56. package/dist/interfaces/serviceRegistry.d.ts +428 -0
  57. package/dist/interfaces/serviceRegistry.js +36 -0
  58. package/dist/interfaces.json +17 -0
  59. package/dist/payloads/Alarm.d.ts +7 -12
  60. package/dist/payloads/Alarm.js +4 -54
  61. package/dist/payloads/CommandAuthority.d.ts +82 -0
  62. package/dist/payloads/CommandAuthority.js +364 -0
  63. package/dist/payloads/Coordinate.d.ts +39 -0
  64. package/dist/payloads/Coordinate.js +85 -0
  65. package/dist/payloads/EntityHealth.d.ts +9 -0
  66. package/dist/payloads/EntityHealth.js +14 -0
  67. package/dist/payloads/Mission.d.ts +137 -0
  68. package/dist/payloads/Mission.js +826 -0
  69. package/dist/payloads/OperationalAuthority.d.ts +165 -4
  70. package/dist/payloads/OperationalAuthority.js +520 -1
  71. package/dist/payloads/Route.d.ts +649 -0
  72. package/dist/payloads/Route.js +4257 -0
  73. package/dist/payloads/RouteChangeEvent.d.ts +42 -0
  74. package/dist/payloads/RouteChangeEvent.js +223 -0
  75. package/dist/payloads/RouteEditAuthority.d.ts +87 -0
  76. package/dist/payloads/RouteEditAuthority.js +380 -0
  77. package/dist/payloads/RouteExecution.d.ts +64 -0
  78. package/dist/payloads/RouteExecution.js +310 -0
  79. package/dist/payloads/Severity.d.ts +13 -6
  80. package/dist/payloads/Severity.js +30 -18
  81. package/dist/payloads/SimulationStatus.d.ts +3 -4
  82. package/dist/payloads/SimulationStatus.js +12 -18
  83. package/dist/payloads/TestObjectStatus.d.ts +154 -0
  84. package/dist/payloads/TestObjectStatus.js +580 -0
  85. package/dist/payloads/VesselType.d.ts +2 -1
  86. package/dist/payloads/VesselType.js +1 -1
  87. package/dist/payloads/Voyage.d.ts +154 -0
  88. package/dist/payloads/Voyage.js +866 -0
  89. package/dist/payloads/foxglove/CompressedPointCloud.d.ts +37 -0
  90. package/dist/payloads/foxglove/CompressedPointCloud.js +185 -0
  91. package/dist/payloads/google/protobuf/any.d.ts +145 -0
  92. package/dist/payloads/google/protobuf/any.js +110 -0
  93. package/dist/payloads/google/protobuf/empty.d.ts +34 -0
  94. package/dist/payloads/google/protobuf/empty.js +50 -0
  95. package/dist/payloads/index.foxglove.d.ts +1 -0
  96. package/dist/payloads/index.foxglove.js +1 -0
  97. package/dist/payloads/index.google.protobuf.d.ts +2 -0
  98. package/dist/payloads/index.google.protobuf.js +2 -0
  99. package/dist/payloads/index.keelson.d.ts +10 -1
  100. package/dist/payloads/index.keelson.js +10 -1
  101. package/dist/qos.json +88 -0
  102. package/dist/subjects.json +28 -1
  103. package/package.json +2 -1
@@ -159,3 +159,60 @@ describe("get_subject_from_pubsub_key", () => {
159
159
  expect(subject).toBe("heading_true_north_deg");
160
160
  });
161
161
  });
162
+ describe("construct_rpc_key", () => {
163
+ it("builds the interface/version key shape", () => {
164
+ expect((0, index_1.construct_rpc_key)("realm", "boat", "replay_control", "v1", "play", "conn/0"))
165
+ .toBe("realm/@v0/boat/@rpc/replay_control/v1/play/conn/0");
166
+ });
167
+ it("rejects malformed versions", () => {
168
+ expect(() => (0, index_1.construct_rpc_key)("realm", "boat", "replay_control", "1", "play", "c")).toThrow();
169
+ expect(() => (0, index_1.construct_rpc_key)("realm", "boat", "replay_control", "v0", "play", "c")).toThrow();
170
+ expect(() => (0, index_1.construct_rpc_key)("realm", "boat", "replay_control", "v01", "play", "c")).toThrow();
171
+ });
172
+ });
173
+ describe("construct_rpc_interface_liveliness_key", () => {
174
+ it("builds the interface liveliness token key", () => {
175
+ expect((0, index_1.construct_rpc_interface_liveliness_key)("realm", "boat", "whep_proxy", "v1", "mediamtx/0"))
176
+ .toBe("realm/@v0/boat/@rpc/whep_proxy/v1/*/mediamtx/0");
177
+ });
178
+ });
179
+ describe("parse_rpc_key", () => {
180
+ it("parses interface, version, procedure and multi-chunk source", () => {
181
+ expect((0, index_1.parse_rpc_key)("realm/@v0/boat/@rpc/replay_control/v1/play/conn/0")).toEqual({
182
+ base_path: "realm",
183
+ entityId: "boat",
184
+ interface: "replay_control",
185
+ version: "v1",
186
+ procedure: "play",
187
+ sourceId: "conn/0",
188
+ });
189
+ });
190
+ });
191
+ describe("interfaces registry", () => {
192
+ it("knows the bundled well-known interfaces", () => {
193
+ expect((0, index_1.isInterfaceWellKnown)("replay_control/v1")).toBe(true);
194
+ expect((0, index_1.isInterfaceWellKnown)("nope/v1")).toBe(false);
195
+ expect((0, index_1.getInterfaceService)("vehicle_mission/v1"))
196
+ .toBe("keelson.interfaces.vehicle_mission.VehicleMission");
197
+ });
198
+ });
199
+ describe("interface introspection", () => {
200
+ const { listInterfaces, getProcedures, getProcedureCodecs } = require('./index');
201
+ it("lists every bundled interface", () => {
202
+ const interfaces = listInterfaces();
203
+ expect(interfaces).toContain("vehicle_lifecycle/v1");
204
+ expect(interfaces).toContain("replay_control/v1");
205
+ expect(interfaces.length).toBeGreaterThanOrEqual(14);
206
+ });
207
+ it("enumerates procedures", () => {
208
+ expect(getProcedures("vehicle_lifecycle/v1")).toEqual(["arm", "set_mode", "emergency_stop"]);
209
+ expect(() => getProcedures("nope/v1")).toThrow();
210
+ });
211
+ it("resolves procedure codecs that roundtrip", () => {
212
+ const { requestType } = getProcedureCodecs("replay_control/v1", "set_speed");
213
+ const encoded = requestType.encode(requestType.fromPartial({ speed: 2.5 })).finish();
214
+ const decoded = requestType.decode(encoded);
215
+ expect(decoded.speed).toBeCloseTo(2.5);
216
+ expect(() => getProcedureCodecs("replay_control/v1", "warp")).toThrow();
217
+ });
218
+ });
@@ -0,0 +1,62 @@
1
+ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
+ export declare const protobufPackage = "";
3
+ export interface AcknowledgeAlarmRequest {
4
+ /** Client wall-clock at send, so the responder can log round-trip latency. */
5
+ timestamp: Date | undefined;
6
+ /** `Alarm.identifier` of the alarm being acknowledged. */
7
+ identifier: string;
8
+ /**
9
+ * Who is acknowledging — operator or station id. Recorded verbatim in the
10
+ * alarm's `AlarmAcknowledgment.acknowledged_by`, so it should be meaningful
11
+ * to somebody reading the alarm later, not an opaque session id.
12
+ */
13
+ acknowledgedBy: string;
14
+ }
15
+ export interface AcknowledgeAlarmResponse {
16
+ /**
17
+ * True when the owner recorded the acknowledgment. False is a legitimate
18
+ * outcome, not an error: an alarm may have expired, may already have been
19
+ * acknowledged by this party, or may carry ACK_NONE.
20
+ */
21
+ acknowledged: boolean;
22
+ /** Why not, when `acknowledged` is false. Empty otherwise. */
23
+ reason: string;
24
+ /** When the owner recorded it. Set only when `acknowledged` is true. */
25
+ timestampAcknowledged: Date | undefined;
26
+ }
27
+ export declare const AcknowledgeAlarmRequest: MessageFns<AcknowledgeAlarmRequest>;
28
+ export declare const AcknowledgeAlarmResponse: MessageFns<AcknowledgeAlarmResponse>;
29
+ export type AlarmAckDefinition = typeof AlarmAckDefinition;
30
+ export declare const AlarmAckDefinition: {
31
+ readonly name: "AlarmAck";
32
+ readonly fullName: "AlarmAck";
33
+ readonly methods: {
34
+ readonly acknowledge_alarm: {
35
+ readonly name: "acknowledge_alarm";
36
+ readonly requestType: MessageFns<AcknowledgeAlarmRequest>;
37
+ readonly requestStream: false;
38
+ readonly responseType: MessageFns<AcknowledgeAlarmResponse>;
39
+ readonly responseStream: false;
40
+ readonly options: {};
41
+ };
42
+ };
43
+ };
44
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
45
+ export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
46
+ [K in keyof T]?: DeepPartial<T[K]>;
47
+ } : Partial<T>;
48
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
49
+ export type Exact<P, I extends P> = P extends Builtin ? P : P & {
50
+ [K in keyof P]: Exact<P[K], I[K]>;
51
+ } & {
52
+ [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
53
+ };
54
+ export interface MessageFns<T> {
55
+ encode(message: T, writer?: BinaryWriter): BinaryWriter;
56
+ decode(input: BinaryReader | Uint8Array, length?: number): T;
57
+ fromJSON(object: any): T;
58
+ toJSON(message: T): unknown;
59
+ create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
60
+ fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
61
+ }
62
+ export {};
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
3
+ // versions:
4
+ // protoc-gen-ts_proto v2.6.1
5
+ // protoc v6.30.2
6
+ // source: AlarmAck.proto
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.AlarmAckDefinition = exports.AcknowledgeAlarmResponse = exports.AcknowledgeAlarmRequest = exports.protobufPackage = void 0;
9
+ /* eslint-disable */
10
+ const wire_1 = require("@bufbuild/protobuf/wire");
11
+ const timestamp_1 = require("./google/protobuf/timestamp");
12
+ exports.protobufPackage = "";
13
+ function createBaseAcknowledgeAlarmRequest() {
14
+ return { timestamp: undefined, identifier: "", acknowledgedBy: "" };
15
+ }
16
+ exports.AcknowledgeAlarmRequest = {
17
+ encode(message, writer = new wire_1.BinaryWriter()) {
18
+ if (message.timestamp !== undefined) {
19
+ timestamp_1.Timestamp.encode(toTimestamp(message.timestamp), writer.uint32(10).fork()).join();
20
+ }
21
+ if (message.identifier !== "") {
22
+ writer.uint32(18).string(message.identifier);
23
+ }
24
+ if (message.acknowledgedBy !== "") {
25
+ writer.uint32(26).string(message.acknowledgedBy);
26
+ }
27
+ return writer;
28
+ },
29
+ decode(input, length) {
30
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
31
+ let end = length === undefined ? reader.len : reader.pos + length;
32
+ const message = createBaseAcknowledgeAlarmRequest();
33
+ while (reader.pos < end) {
34
+ const tag = reader.uint32();
35
+ switch (tag >>> 3) {
36
+ case 1: {
37
+ if (tag !== 10) {
38
+ break;
39
+ }
40
+ message.timestamp = fromTimestamp(timestamp_1.Timestamp.decode(reader, reader.uint32()));
41
+ continue;
42
+ }
43
+ case 2: {
44
+ if (tag !== 18) {
45
+ break;
46
+ }
47
+ message.identifier = reader.string();
48
+ continue;
49
+ }
50
+ case 3: {
51
+ if (tag !== 26) {
52
+ break;
53
+ }
54
+ message.acknowledgedBy = reader.string();
55
+ continue;
56
+ }
57
+ }
58
+ if ((tag & 7) === 4 || tag === 0) {
59
+ break;
60
+ }
61
+ reader.skip(tag & 7);
62
+ }
63
+ return message;
64
+ },
65
+ fromJSON(object) {
66
+ return {
67
+ timestamp: isSet(object.timestamp) ? fromJsonTimestamp(object.timestamp) : undefined,
68
+ identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : "",
69
+ acknowledgedBy: isSet(object.acknowledgedBy) ? globalThis.String(object.acknowledgedBy) : "",
70
+ };
71
+ },
72
+ toJSON(message) {
73
+ const obj = {};
74
+ if (message.timestamp !== undefined) {
75
+ obj.timestamp = message.timestamp.toISOString();
76
+ }
77
+ if (message.identifier !== "") {
78
+ obj.identifier = message.identifier;
79
+ }
80
+ if (message.acknowledgedBy !== "") {
81
+ obj.acknowledgedBy = message.acknowledgedBy;
82
+ }
83
+ return obj;
84
+ },
85
+ create(base) {
86
+ return exports.AcknowledgeAlarmRequest.fromPartial(base ?? {});
87
+ },
88
+ fromPartial(object) {
89
+ const message = createBaseAcknowledgeAlarmRequest();
90
+ message.timestamp = object.timestamp ?? undefined;
91
+ message.identifier = object.identifier ?? "";
92
+ message.acknowledgedBy = object.acknowledgedBy ?? "";
93
+ return message;
94
+ },
95
+ };
96
+ function createBaseAcknowledgeAlarmResponse() {
97
+ return { acknowledged: false, reason: "", timestampAcknowledged: undefined };
98
+ }
99
+ exports.AcknowledgeAlarmResponse = {
100
+ encode(message, writer = new wire_1.BinaryWriter()) {
101
+ if (message.acknowledged !== false) {
102
+ writer.uint32(8).bool(message.acknowledged);
103
+ }
104
+ if (message.reason !== "") {
105
+ writer.uint32(18).string(message.reason);
106
+ }
107
+ if (message.timestampAcknowledged !== undefined) {
108
+ timestamp_1.Timestamp.encode(toTimestamp(message.timestampAcknowledged), writer.uint32(26).fork()).join();
109
+ }
110
+ return writer;
111
+ },
112
+ decode(input, length) {
113
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
114
+ let end = length === undefined ? reader.len : reader.pos + length;
115
+ const message = createBaseAcknowledgeAlarmResponse();
116
+ while (reader.pos < end) {
117
+ const tag = reader.uint32();
118
+ switch (tag >>> 3) {
119
+ case 1: {
120
+ if (tag !== 8) {
121
+ break;
122
+ }
123
+ message.acknowledged = reader.bool();
124
+ continue;
125
+ }
126
+ case 2: {
127
+ if (tag !== 18) {
128
+ break;
129
+ }
130
+ message.reason = reader.string();
131
+ continue;
132
+ }
133
+ case 3: {
134
+ if (tag !== 26) {
135
+ break;
136
+ }
137
+ message.timestampAcknowledged = fromTimestamp(timestamp_1.Timestamp.decode(reader, reader.uint32()));
138
+ continue;
139
+ }
140
+ }
141
+ if ((tag & 7) === 4 || tag === 0) {
142
+ break;
143
+ }
144
+ reader.skip(tag & 7);
145
+ }
146
+ return message;
147
+ },
148
+ fromJSON(object) {
149
+ return {
150
+ acknowledged: isSet(object.acknowledged) ? globalThis.Boolean(object.acknowledged) : false,
151
+ reason: isSet(object.reason) ? globalThis.String(object.reason) : "",
152
+ timestampAcknowledged: isSet(object.timestampAcknowledged)
153
+ ? fromJsonTimestamp(object.timestampAcknowledged)
154
+ : undefined,
155
+ };
156
+ },
157
+ toJSON(message) {
158
+ const obj = {};
159
+ if (message.acknowledged !== false) {
160
+ obj.acknowledged = message.acknowledged;
161
+ }
162
+ if (message.reason !== "") {
163
+ obj.reason = message.reason;
164
+ }
165
+ if (message.timestampAcknowledged !== undefined) {
166
+ obj.timestampAcknowledged = message.timestampAcknowledged.toISOString();
167
+ }
168
+ return obj;
169
+ },
170
+ create(base) {
171
+ return exports.AcknowledgeAlarmResponse.fromPartial(base ?? {});
172
+ },
173
+ fromPartial(object) {
174
+ const message = createBaseAcknowledgeAlarmResponse();
175
+ message.acknowledged = object.acknowledged ?? false;
176
+ message.reason = object.reason ?? "";
177
+ message.timestampAcknowledged = object.timestampAcknowledged ?? undefined;
178
+ return message;
179
+ },
180
+ };
181
+ exports.AlarmAckDefinition = {
182
+ name: "AlarmAck",
183
+ fullName: "AlarmAck",
184
+ methods: {
185
+ acknowledge_alarm: {
186
+ name: "acknowledge_alarm",
187
+ requestType: exports.AcknowledgeAlarmRequest,
188
+ requestStream: false,
189
+ responseType: exports.AcknowledgeAlarmResponse,
190
+ responseStream: false,
191
+ options: {},
192
+ },
193
+ },
194
+ };
195
+ function toTimestamp(date) {
196
+ const seconds = Math.trunc(date.getTime() / 1000);
197
+ const nanos = (date.getTime() % 1000) * 1000000;
198
+ return { seconds, nanos };
199
+ }
200
+ function fromTimestamp(t) {
201
+ let millis = (t.seconds || 0) * 1000;
202
+ millis += (t.nanos || 0) / 1000000;
203
+ return new globalThis.Date(millis);
204
+ }
205
+ function fromJsonTimestamp(o) {
206
+ if (o instanceof globalThis.Date) {
207
+ return o;
208
+ }
209
+ else if (typeof o === "string") {
210
+ return new globalThis.Date(o);
211
+ }
212
+ else {
213
+ return fromTimestamp(timestamp_1.Timestamp.fromJSON(o));
214
+ }
215
+ }
216
+ function isSet(value) {
217
+ return value !== null && value !== undefined;
218
+ }
@@ -1,6 +1,6 @@
1
1
  import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
2
  import { Empty } from "./google/protobuf/empty";
3
- export declare const protobufPackage = "";
3
+ export declare const protobufPackage = "keelson.interfaces.configurable";
4
4
  /** This represents an actual JSON string, i.e. not a protobuf type! */
5
5
  export interface JSON {
6
6
  }
@@ -8,23 +8,29 @@ export interface ConfigurableSuccessResponse {
8
8
  }
9
9
  export declare const JSON: MessageFns<JSON>;
10
10
  export declare const ConfigurableSuccessResponse: MessageFns<ConfigurableSuccessResponse>;
11
- export interface Configurable {
12
- get_config(request: Empty): Promise<JSON>;
13
- set_config(request: JSON): Promise<ConfigurableSuccessResponse>;
14
- }
15
- export declare const ConfigurableServiceName = "Configurable";
16
- export declare class ConfigurableClientImpl implements Configurable {
17
- private readonly rpc;
18
- private readonly service;
19
- constructor(rpc: Rpc, opts?: {
20
- service?: string;
21
- });
22
- get_config(request: Empty): Promise<JSON>;
23
- set_config(request: JSON): Promise<ConfigurableSuccessResponse>;
24
- }
25
- interface Rpc {
26
- request(service: string, method: string, data: Uint8Array): Promise<Uint8Array>;
27
- }
11
+ export type ConfigurableDefinition = typeof ConfigurableDefinition;
12
+ export declare const ConfigurableDefinition: {
13
+ readonly name: "Configurable";
14
+ readonly fullName: "keelson.interfaces.configurable.Configurable";
15
+ readonly methods: {
16
+ readonly get_config: {
17
+ readonly name: "get_config";
18
+ readonly requestType: import("./google/protobuf/empty").MessageFns<Empty>;
19
+ readonly requestStream: false;
20
+ readonly responseType: MessageFns<JSON>;
21
+ readonly responseStream: false;
22
+ readonly options: {};
23
+ };
24
+ readonly set_config: {
25
+ readonly name: "set_config";
26
+ readonly requestType: MessageFns<JSON>;
27
+ readonly requestStream: false;
28
+ readonly responseType: MessageFns<ConfigurableSuccessResponse>;
29
+ readonly responseStream: false;
30
+ readonly options: {};
31
+ };
32
+ };
33
+ };
28
34
  type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
29
35
  export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
30
36
  [K in keyof T]?: DeepPartial<T[K]>;
@@ -5,11 +5,11 @@
5
5
  // protoc v6.30.2
6
6
  // source: Configurable.proto
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.ConfigurableClientImpl = exports.ConfigurableServiceName = exports.ConfigurableSuccessResponse = exports.JSON = exports.protobufPackage = void 0;
8
+ exports.ConfigurableDefinition = exports.ConfigurableSuccessResponse = exports.JSON = exports.protobufPackage = void 0;
9
9
  /* eslint-disable */
10
10
  const wire_1 = require("@bufbuild/protobuf/wire");
11
11
  const empty_1 = require("./google/protobuf/empty");
12
- exports.protobufPackage = "";
12
+ exports.protobufPackage = "keelson.interfaces.configurable";
13
13
  function createBaseJSON() {
14
14
  return {};
15
15
  }
@@ -84,23 +84,25 @@ exports.ConfigurableSuccessResponse = {
84
84
  return message;
85
85
  },
86
86
  };
87
- exports.ConfigurableServiceName = "Configurable";
88
- class ConfigurableClientImpl {
89
- constructor(rpc, opts) {
90
- this.service = opts?.service || exports.ConfigurableServiceName;
91
- this.rpc = rpc;
92
- this.get_config = this.get_config.bind(this);
93
- this.set_config = this.set_config.bind(this);
94
- }
95
- get_config(request) {
96
- const data = empty_1.Empty.encode(request).finish();
97
- const promise = this.rpc.request(this.service, "get_config", data);
98
- return promise.then((data) => exports.JSON.decode(new wire_1.BinaryReader(data)));
99
- }
100
- set_config(request) {
101
- const data = exports.JSON.encode(request).finish();
102
- const promise = this.rpc.request(this.service, "set_config", data);
103
- return promise.then((data) => exports.ConfigurableSuccessResponse.decode(new wire_1.BinaryReader(data)));
104
- }
105
- }
106
- exports.ConfigurableClientImpl = ConfigurableClientImpl;
87
+ exports.ConfigurableDefinition = {
88
+ name: "Configurable",
89
+ fullName: "keelson.interfaces.configurable.Configurable",
90
+ methods: {
91
+ get_config: {
92
+ name: "get_config",
93
+ requestType: empty_1.Empty,
94
+ requestStream: false,
95
+ responseType: exports.JSON,
96
+ responseStream: false,
97
+ options: {},
98
+ },
99
+ set_config: {
100
+ name: "set_config",
101
+ requestType: exports.JSON,
102
+ requestStream: false,
103
+ responseType: exports.ConfigurableSuccessResponse,
104
+ responseStream: false,
105
+ options: {},
106
+ },
107
+ },
108
+ };
@@ -0,0 +1,38 @@
1
+ import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
+ export declare const protobufPackage = "keelson";
3
+ /**
4
+ * WGS84 latitude/longitude in plain degrees. The canonical coordinate
5
+ * shape for keelson *domain nouns* — mission waypoints, geofence
6
+ * vertices, navigation targets, route legs — shared by RPC interfaces
7
+ * and pub/sub payloads alike so consumers see a single coordinate type
8
+ * rather than each surface picking its own scaling / units.
9
+ *
10
+ * Telemetry position *fixes* (the `location_fix` subject) intentionally
11
+ * remain foxglove.LocationFix: a measured fix carries sensor context
12
+ * (covariance, frame_id) that is meaningful for telemetry but noise for
13
+ * a planned position. Don't swap one for the other.
14
+ */
15
+ export interface Coordinate {
16
+ latitudeDeg: number;
17
+ longitudeDeg: number;
18
+ }
19
+ export declare const Coordinate: MessageFns<Coordinate>;
20
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
21
+ export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
22
+ [K in keyof T]?: DeepPartial<T[K]>;
23
+ } : Partial<T>;
24
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
25
+ export type Exact<P, I extends P> = P extends Builtin ? P : P & {
26
+ [K in keyof P]: Exact<P[K], I[K]>;
27
+ } & {
28
+ [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
29
+ };
30
+ export interface MessageFns<T> {
31
+ encode(message: T, writer?: BinaryWriter): BinaryWriter;
32
+ decode(input: BinaryReader | Uint8Array, length?: number): T;
33
+ fromJSON(object: any): T;
34
+ toJSON(message: T): unknown;
35
+ create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
36
+ fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
37
+ }
38
+ export {};
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
3
+ // versions:
4
+ // protoc-gen-ts_proto v2.6.1
5
+ // protoc v6.30.2
6
+ // source: Coordinate.proto
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.Coordinate = exports.protobufPackage = void 0;
9
+ /* eslint-disable */
10
+ const wire_1 = require("@bufbuild/protobuf/wire");
11
+ exports.protobufPackage = "keelson";
12
+ function createBaseCoordinate() {
13
+ return { latitudeDeg: 0, longitudeDeg: 0 };
14
+ }
15
+ exports.Coordinate = {
16
+ encode(message, writer = new wire_1.BinaryWriter()) {
17
+ if (message.latitudeDeg !== 0) {
18
+ writer.uint32(9).double(message.latitudeDeg);
19
+ }
20
+ if (message.longitudeDeg !== 0) {
21
+ writer.uint32(17).double(message.longitudeDeg);
22
+ }
23
+ return writer;
24
+ },
25
+ decode(input, length) {
26
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
27
+ let end = length === undefined ? reader.len : reader.pos + length;
28
+ const message = createBaseCoordinate();
29
+ while (reader.pos < end) {
30
+ const tag = reader.uint32();
31
+ switch (tag >>> 3) {
32
+ case 1: {
33
+ if (tag !== 9) {
34
+ break;
35
+ }
36
+ message.latitudeDeg = reader.double();
37
+ continue;
38
+ }
39
+ case 2: {
40
+ if (tag !== 17) {
41
+ break;
42
+ }
43
+ message.longitudeDeg = reader.double();
44
+ continue;
45
+ }
46
+ }
47
+ if ((tag & 7) === 4 || tag === 0) {
48
+ break;
49
+ }
50
+ reader.skip(tag & 7);
51
+ }
52
+ return message;
53
+ },
54
+ fromJSON(object) {
55
+ return {
56
+ latitudeDeg: isSet(object.latitudeDeg) ? globalThis.Number(object.latitudeDeg) : 0,
57
+ longitudeDeg: isSet(object.longitudeDeg) ? globalThis.Number(object.longitudeDeg) : 0,
58
+ };
59
+ },
60
+ toJSON(message) {
61
+ const obj = {};
62
+ if (message.latitudeDeg !== 0) {
63
+ obj.latitudeDeg = message.latitudeDeg;
64
+ }
65
+ if (message.longitudeDeg !== 0) {
66
+ obj.longitudeDeg = message.longitudeDeg;
67
+ }
68
+ return obj;
69
+ },
70
+ create(base) {
71
+ return exports.Coordinate.fromPartial(base ?? {});
72
+ },
73
+ fromPartial(object) {
74
+ const message = createBaseCoordinate();
75
+ message.latitudeDeg = object.latitudeDeg ?? 0;
76
+ message.longitudeDeg = object.longitudeDeg ?? 0;
77
+ return message;
78
+ },
79
+ };
80
+ function isSet(value) {
81
+ return value !== null && value !== undefined;
82
+ }
@@ -1,5 +1,5 @@
1
1
  import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
- export declare const protobufPackage = "";
2
+ export declare const protobufPackage = "keelson.interfaces";
3
3
  export interface ErrorResponse {
4
4
  errorDescription: string;
5
5
  code: ErrorResponse_Code;
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.ErrorResponse = exports.errorResponse_CodeToJSON = exports.errorResponse_CodeFromJSON = exports.ErrorResponse_Code = exports.protobufPackage = void 0;
9
9
  /* eslint-disable */
10
10
  const wire_1 = require("@bufbuild/protobuf/wire");
11
- exports.protobufPackage = "";
11
+ exports.protobufPackage = "keelson.interfaces";
12
12
  /**
13
13
  * Typed code so clients can react without parsing the description.
14
14
  * Producers SHOULD emit a specific code when applicable; UNSPECIFIED
@@ -1,6 +1,6 @@
1
1
  import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
2
2
  import { CommandResult } from "./VehicleCommon";
3
- export declare const protobufPackage = "";
3
+ export declare const protobufPackage = "keelson.interfaces.mavlink_command";
4
4
  export interface SetMessageIntervalRequest {
5
5
  /**
6
6
  * Either the symbolic MAVLink message name (e.g. "ATTITUDE") OR the
@@ -45,23 +45,29 @@ export declare const SetMessageIntervalRequest: MessageFns<SetMessageIntervalReq
45
45
  export declare const SetMessageIntervalResponse: MessageFns<SetMessageIntervalResponse>;
46
46
  export declare const CommandLongRequest: MessageFns<CommandLongRequest>;
47
47
  export declare const CommandLongResponse: MessageFns<CommandLongResponse>;
48
- export interface MavlinkCommand {
49
- set_message_interval(request: SetMessageIntervalRequest): Promise<SetMessageIntervalResponse>;
50
- send_command_long(request: CommandLongRequest): Promise<CommandLongResponse>;
51
- }
52
- export declare const MavlinkCommandServiceName = "MavlinkCommand";
53
- export declare class MavlinkCommandClientImpl implements MavlinkCommand {
54
- private readonly rpc;
55
- private readonly service;
56
- constructor(rpc: Rpc, opts?: {
57
- service?: string;
58
- });
59
- set_message_interval(request: SetMessageIntervalRequest): Promise<SetMessageIntervalResponse>;
60
- send_command_long(request: CommandLongRequest): Promise<CommandLongResponse>;
61
- }
62
- interface Rpc {
63
- request(service: string, method: string, data: Uint8Array): Promise<Uint8Array>;
64
- }
48
+ export type MavlinkCommandDefinition = typeof MavlinkCommandDefinition;
49
+ export declare const MavlinkCommandDefinition: {
50
+ readonly name: "MavlinkCommand";
51
+ readonly fullName: "keelson.interfaces.mavlink_command.MavlinkCommand";
52
+ readonly methods: {
53
+ readonly set_message_interval: {
54
+ readonly name: "set_message_interval";
55
+ readonly requestType: MessageFns<SetMessageIntervalRequest>;
56
+ readonly requestStream: false;
57
+ readonly responseType: MessageFns<SetMessageIntervalResponse>;
58
+ readonly responseStream: false;
59
+ readonly options: {};
60
+ };
61
+ readonly send_command_long: {
62
+ readonly name: "send_command_long";
63
+ readonly requestType: MessageFns<CommandLongRequest>;
64
+ readonly requestStream: false;
65
+ readonly responseType: MessageFns<CommandLongResponse>;
66
+ readonly responseStream: false;
67
+ readonly options: {};
68
+ };
69
+ };
70
+ };
65
71
  type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
66
72
  export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
67
73
  [K in keyof T]?: DeepPartial<T[K]>;