@rise-maritime/keelson-js 0.6.0-alpha.245.dev.1 → 0.6.0-alpha.275.dev.1

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 (46) hide show
  1. package/dist/index.d.ts +83 -0
  2. package/dist/index.js +23 -1
  3. package/dist/index.test.js +31 -0
  4. package/dist/interfaces/AlarmAck.d.ts +2 -2
  5. package/dist/interfaces/AlarmAck.js +2 -2
  6. package/dist/interfaces/ContainerControl.d.ts +239 -0
  7. package/dist/interfaces/ContainerControl.js +1053 -0
  8. package/dist/interfaces/ContainerHost.d.ts +403 -0
  9. package/dist/interfaces/ContainerHost.js +1230 -0
  10. package/dist/interfaces/ErrorResponse.d.ts +7 -2
  11. package/dist/interfaces/ErrorResponse.js +12 -2
  12. package/dist/interfaces/Route.d.ts +138 -6
  13. package/dist/interfaces/Route.js +306 -4
  14. package/dist/interfaces/RoutePlanner.d.ts +19 -1
  15. package/dist/interfaces/RoutePlanner.js +23 -1
  16. package/dist/interfaces/ScenarioControl.d.ts +132 -3
  17. package/dist/interfaces/ScenarioControl.js +439 -37
  18. package/dist/interfaces/VehicleNavigation.d.ts +55 -0
  19. package/dist/interfaces/VehicleNavigation.js +233 -1
  20. package/dist/interfaces/serviceRegistry.d.ts +84 -0
  21. package/dist/interfaces/serviceRegistry.js +4 -0
  22. package/dist/interfaces.json +2 -0
  23. package/dist/payloads/AdviceDisposition.d.ts +55 -0
  24. package/dist/payloads/AdviceDisposition.js +242 -0
  25. package/dist/payloads/ChecklistHandover.d.ts +522 -0
  26. package/dist/payloads/ChecklistHandover.js +1735 -0
  27. package/dist/payloads/ContainerHost.d.ts +407 -0
  28. package/dist/payloads/ContainerHost.js +1245 -0
  29. package/dist/payloads/Encounter.d.ts +104 -0
  30. package/dist/payloads/Encounter.js +573 -0
  31. package/dist/payloads/NavigationAdvice.d.ts +94 -0
  32. package/dist/payloads/NavigationAdvice.js +596 -0
  33. package/dist/payloads/NavigationState.d.ts +90 -0
  34. package/dist/payloads/NavigationState.js +377 -0
  35. package/dist/payloads/Route.d.ts +139 -6
  36. package/dist/payloads/Route.js +315 -4
  37. package/dist/payloads/RouteExecution.d.ts +7 -0
  38. package/dist/payloads/ScenarioEvent.d.ts +14 -0
  39. package/dist/payloads/ScenarioEvent.js +16 -0
  40. package/dist/payloads/index.d.ts +1 -1
  41. package/dist/payloads/index.js +2 -2
  42. package/dist/payloads/index.keelson.d.ts +10 -4
  43. package/dist/payloads/index.keelson.js +10 -4
  44. package/dist/qos.json +6 -0
  45. package/dist/subjects.json +20 -1
  46. package/package.json +1 -1
@@ -5,8 +5,8 @@
5
5
  // protoc v6.30.2
6
6
  // source: Route.proto
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.HazardZone = exports.ActionPoint = exports.ActionPoints = exports.ScheduleElement = exports.Schedule = exports.Schedules = exports.Leg = exports.Waypoint = exports.DefaultWaypoint = exports.Waypoints = exports.RouteInfo = exports.Route = exports.Extensions_Entry_AttributesEntry = exports.Extensions_Entry = exports.Extensions = exports.CircleGeometry = exports.RouteRef = exports.schedule_OriginToJSON = exports.schedule_OriginFromJSON = exports.Schedule_Origin = exports.actionPointRequiredActionToJSON = exports.actionPointRequiredActionFromJSON = exports.ActionPointRequiredAction = exports.envelopeBoundToJSON = exports.envelopeBoundFromJSON = exports.EnvelopeBound = exports.routeStatusToJSON = exports.routeStatusFromJSON = exports.RouteStatus = exports.geometryTypeToJSON = exports.geometryTypeFromJSON = exports.GeometryType = exports.colregTrafficIntensityToJSON = exports.colregTrafficIntensityFromJSON = exports.ColregTrafficIntensity = exports.colregSituationToJSON = exports.colregSituationFromJSON = exports.ColregSituation = exports.hazardZoneTypeToJSON = exports.hazardZoneTypeFromJSON = exports.HazardZoneType = exports.routeChallengeTypeToJSON = exports.routeChallengeTypeFromJSON = exports.RouteChallengeType = exports.operationalContextToJSON = exports.operationalContextFromJSON = exports.OperationalContext = exports.autonomyLevelToJSON = exports.autonomyLevelFromJSON = exports.AutonomyLevel = void 0;
9
- exports.RouteStatusUpdate = exports.RouteSignature = exports.RouteSignatures = exports.RouteIssue = exports.RouteChallenge = void 0;
8
+ exports.Leg = exports.Waypoint = exports.DefaultWaypoint = exports.Waypoints = exports.RouteInfo = exports.Route = exports.Extensions_Entry_AttributesEntry = exports.Extensions_Entry = exports.Extensions = exports.CircleGeometry = exports.RouteRef = exports.schedule_OriginToJSON = exports.schedule_OriginFromJSON = exports.Schedule_Origin = exports.actionPointRequiredActionToJSON = exports.actionPointRequiredActionFromJSON = exports.ActionPointRequiredAction = exports.envelopeBoundToJSON = exports.envelopeBoundFromJSON = exports.EnvelopeBound = exports.routeStatusToJSON = exports.routeStatusFromJSON = exports.RouteStatus = exports.routeTopologyToJSON = exports.routeTopologyFromJSON = exports.RouteTopology = exports.xtdCorridorModeToJSON = exports.xtdCorridorModeFromJSON = exports.XtdCorridorMode = exports.geometryTypeToJSON = exports.geometryTypeFromJSON = exports.GeometryType = exports.colregTrafficIntensityToJSON = exports.colregTrafficIntensityFromJSON = exports.ColregTrafficIntensity = exports.colregSituationToJSON = exports.colregSituationFromJSON = exports.ColregSituation = exports.hazardZoneTypeToJSON = exports.hazardZoneTypeFromJSON = exports.HazardZoneType = exports.routeChallengeTypeToJSON = exports.routeChallengeTypeFromJSON = exports.RouteChallengeType = exports.operationalContextToJSON = exports.operationalContextFromJSON = exports.OperationalContext = exports.autonomyLevelToJSON = exports.autonomyLevelFromJSON = exports.AutonomyLevel = void 0;
9
+ exports.RouteStatusUpdate = exports.RouteSignature = exports.RouteSignatures = exports.RouteIssue = exports.RouteChallenge = exports.HazardZone = exports.ActionPoint = exports.ActionPoints = exports.ScheduleElement = exports.Schedule = exports.Schedules = exports.XtdBoundaryPoint = void 0;
10
10
  /* eslint-disable */
11
11
  const wire_1 = require("@bufbuild/protobuf/wire");
12
12
  const Coordinate_1 = require("./Coordinate");
@@ -267,14 +267,25 @@ function hazardZoneTypeToJSON(object) {
267
267
  }
268
268
  }
269
269
  exports.hazardZoneTypeToJSON = hazardZoneTypeToJSON;
270
- /** COLREG encounter situation for an annotated leg. */
270
+ /**
271
+ * COLREG encounter situation, from own ship's side. One vocabulary for the plan and the live
272
+ * picture: a Route leg is annotated with 1-4 only; Encounter.situation may also carry 5-6, which
273
+ * describe a live target and never a planned leg.
274
+ */
271
275
  var ColregSituation;
272
276
  (function (ColregSituation) {
273
277
  ColregSituation[ColregSituation["COLREG_SITUATION_UNSPECIFIED"] = 0] = "COLREG_SITUATION_UNSPECIFIED";
278
+ /** COLREG_SITUATION_OVERTAKING - own ship is overtaking */
274
279
  ColregSituation[ColregSituation["COLREG_SITUATION_OVERTAKING"] = 1] = "COLREG_SITUATION_OVERTAKING";
280
+ /** COLREG_SITUATION_CROSSING_STBD - target crossing from own starboard */
275
281
  ColregSituation[ColregSituation["COLREG_SITUATION_CROSSING_STBD"] = 2] = "COLREG_SITUATION_CROSSING_STBD";
282
+ /** COLREG_SITUATION_CROSSING_PORT - target crossing from own port */
276
283
  ColregSituation[ColregSituation["COLREG_SITUATION_CROSSING_PORT"] = 3] = "COLREG_SITUATION_CROSSING_PORT";
277
284
  ColregSituation[ColregSituation["COLREG_SITUATION_HEAD_ON"] = 4] = "COLREG_SITUATION_HEAD_ON";
285
+ /** COLREG_SITUATION_OVERTAKEN - target is overtaking own ship (Encounter only) */
286
+ ColregSituation[ColregSituation["COLREG_SITUATION_OVERTAKEN"] = 5] = "COLREG_SITUATION_OVERTAKEN";
287
+ /** COLREG_SITUATION_NONE - target not under way, or restricted visibility (Encounter only) */
288
+ ColregSituation[ColregSituation["COLREG_SITUATION_NONE"] = 6] = "COLREG_SITUATION_NONE";
278
289
  ColregSituation[ColregSituation["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
279
290
  })(ColregSituation || (exports.ColregSituation = ColregSituation = {}));
280
291
  function colregSituationFromJSON(object) {
@@ -294,6 +305,12 @@ function colregSituationFromJSON(object) {
294
305
  case 4:
295
306
  case "COLREG_SITUATION_HEAD_ON":
296
307
  return ColregSituation.COLREG_SITUATION_HEAD_ON;
308
+ case 5:
309
+ case "COLREG_SITUATION_OVERTAKEN":
310
+ return ColregSituation.COLREG_SITUATION_OVERTAKEN;
311
+ case 6:
312
+ case "COLREG_SITUATION_NONE":
313
+ return ColregSituation.COLREG_SITUATION_NONE;
297
314
  case -1:
298
315
  case "UNRECOGNIZED":
299
316
  default:
@@ -313,6 +330,10 @@ function colregSituationToJSON(object) {
313
330
  return "COLREG_SITUATION_CROSSING_PORT";
314
331
  case ColregSituation.COLREG_SITUATION_HEAD_ON:
315
332
  return "COLREG_SITUATION_HEAD_ON";
333
+ case ColregSituation.COLREG_SITUATION_OVERTAKEN:
334
+ return "COLREG_SITUATION_OVERTAKEN";
335
+ case ColregSituation.COLREG_SITUATION_NONE:
336
+ return "COLREG_SITUATION_NONE";
316
337
  case ColregSituation.UNRECOGNIZED:
317
338
  default:
318
339
  return "UNRECOGNIZED";
@@ -411,6 +432,120 @@ function geometryTypeToJSON(object) {
411
432
  }
412
433
  }
413
434
  exports.geometryTypeToJSON = geometryTypeToJSON;
435
+ /**
436
+ * How a leg's XTD corridor boundary is defined. UNSPECIFIED MUST be read as
437
+ * OFFSET: every leg published before this field existed is a constant-offset
438
+ * corridor, and reading it any other way would change routes nobody edited.
439
+ */
440
+ var XtdCorridorMode;
441
+ (function (XtdCorridorMode) {
442
+ XtdCorridorMode[XtdCorridorMode["XTD_CORRIDOR_MODE_UNSPECIFIED"] = 0] = "XTD_CORRIDOR_MODE_UNSPECIFIED";
443
+ /** XTD_CORRIDOR_MODE_OFFSET - Parallel lines at xtd_port_m / xtd_starboard_m either side of track. */
444
+ XtdCorridorMode[XtdCorridorMode["XTD_CORRIDOR_MODE_OFFSET"] = 1] = "XTD_CORRIDOR_MODE_OFFSET";
445
+ /**
446
+ * XTD_CORRIDOR_MODE_POLYLINE - A boundary drawn by the planner (Leg.xtd_port_boundary /
447
+ * xtd_starboard_boundary), e.g. a corridor that narrows past a shoal.
448
+ * xtd_port_m / xtd_starboard_m still carry a nominal limit for a monitor
449
+ * that does not evaluate polylines. That fallback is NOT conservative when
450
+ * the drawn corridor is narrower than the nominal one, which is why such a
451
+ * monitor SHOULD report the leg as monitored at reduced fidelity.
452
+ */
453
+ XtdCorridorMode[XtdCorridorMode["XTD_CORRIDOR_MODE_POLYLINE"] = 2] = "XTD_CORRIDOR_MODE_POLYLINE";
454
+ XtdCorridorMode[XtdCorridorMode["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
455
+ })(XtdCorridorMode || (exports.XtdCorridorMode = XtdCorridorMode = {}));
456
+ function xtdCorridorModeFromJSON(object) {
457
+ switch (object) {
458
+ case 0:
459
+ case "XTD_CORRIDOR_MODE_UNSPECIFIED":
460
+ return XtdCorridorMode.XTD_CORRIDOR_MODE_UNSPECIFIED;
461
+ case 1:
462
+ case "XTD_CORRIDOR_MODE_OFFSET":
463
+ return XtdCorridorMode.XTD_CORRIDOR_MODE_OFFSET;
464
+ case 2:
465
+ case "XTD_CORRIDOR_MODE_POLYLINE":
466
+ return XtdCorridorMode.XTD_CORRIDOR_MODE_POLYLINE;
467
+ case -1:
468
+ case "UNRECOGNIZED":
469
+ default:
470
+ return XtdCorridorMode.UNRECOGNIZED;
471
+ }
472
+ }
473
+ exports.xtdCorridorModeFromJSON = xtdCorridorModeFromJSON;
474
+ function xtdCorridorModeToJSON(object) {
475
+ switch (object) {
476
+ case XtdCorridorMode.XTD_CORRIDOR_MODE_UNSPECIFIED:
477
+ return "XTD_CORRIDOR_MODE_UNSPECIFIED";
478
+ case XtdCorridorMode.XTD_CORRIDOR_MODE_OFFSET:
479
+ return "XTD_CORRIDOR_MODE_OFFSET";
480
+ case XtdCorridorMode.XTD_CORRIDOR_MODE_POLYLINE:
481
+ return "XTD_CORRIDOR_MODE_POLYLINE";
482
+ case XtdCorridorMode.UNRECOGNIZED:
483
+ default:
484
+ return "UNRECOGNIZED";
485
+ }
486
+ }
487
+ exports.xtdCorridorModeToJSON = xtdCorridorModeToJSON;
488
+ /**
489
+ * Whether a route's waypoint list closes back on itself. RTZ 1.2 has no such
490
+ * concept, so producers either repeated the first waypoint (breaking id
491
+ * uniqueness) or left closing to consumer convention (silently wrong the first
492
+ * time a consumer chooses not to loop). This field makes the author say.
493
+ *
494
+ * An enum rather than a bool, like every other classification in this file:
495
+ * OPEN says closure was considered and declined, and there is room for a
496
+ * third topology (out-and-back). UNSPECIFIED MUST be read as OPEN; that is
497
+ * the fail-safe direction, since sailing a point-to-point route as a circuit
498
+ * takes the vessel over unplanned water. Terminal behaviour (stop, hold, go
499
+ * round again) is execution policy and belongs on keelson.Voyage, not here.
500
+ * See protocol-specification.md §6.2.1.
501
+ */
502
+ var RouteTopology;
503
+ (function (RouteTopology) {
504
+ RouteTopology[RouteTopology["ROUTE_TOPOLOGY_UNSPECIFIED"] = 0] = "ROUTE_TOPOLOGY_UNSPECIFIED";
505
+ /**
506
+ * ROUTE_TOPOLOGY_OPEN - Runs from the first waypoint to the last and ends there. The last
507
+ * waypoint has no outgoing leg.
508
+ */
509
+ RouteTopology[RouteTopology["ROUTE_TOPOLOGY_OPEN"] = 1] = "ROUTE_TOPOLOGY_OPEN";
510
+ /**
511
+ * ROUTE_TOPOLOGY_CLOSED - A circuit: the last waypoint's outgoing leg terminates at the first
512
+ * waypoint, which is NOT repeated at the end of the list.
513
+ */
514
+ RouteTopology[RouteTopology["ROUTE_TOPOLOGY_CLOSED"] = 2] = "ROUTE_TOPOLOGY_CLOSED";
515
+ RouteTopology[RouteTopology["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
516
+ })(RouteTopology || (exports.RouteTopology = RouteTopology = {}));
517
+ function routeTopologyFromJSON(object) {
518
+ switch (object) {
519
+ case 0:
520
+ case "ROUTE_TOPOLOGY_UNSPECIFIED":
521
+ return RouteTopology.ROUTE_TOPOLOGY_UNSPECIFIED;
522
+ case 1:
523
+ case "ROUTE_TOPOLOGY_OPEN":
524
+ return RouteTopology.ROUTE_TOPOLOGY_OPEN;
525
+ case 2:
526
+ case "ROUTE_TOPOLOGY_CLOSED":
527
+ return RouteTopology.ROUTE_TOPOLOGY_CLOSED;
528
+ case -1:
529
+ case "UNRECOGNIZED":
530
+ default:
531
+ return RouteTopology.UNRECOGNIZED;
532
+ }
533
+ }
534
+ exports.routeTopologyFromJSON = routeTopologyFromJSON;
535
+ function routeTopologyToJSON(object) {
536
+ switch (object) {
537
+ case RouteTopology.ROUTE_TOPOLOGY_UNSPECIFIED:
538
+ return "ROUTE_TOPOLOGY_UNSPECIFIED";
539
+ case RouteTopology.ROUTE_TOPOLOGY_OPEN:
540
+ return "ROUTE_TOPOLOGY_OPEN";
541
+ case RouteTopology.ROUTE_TOPOLOGY_CLOSED:
542
+ return "ROUTE_TOPOLOGY_CLOSED";
543
+ case RouteTopology.UNRECOGNIZED:
544
+ default:
545
+ return "UNRECOGNIZED";
546
+ }
547
+ }
548
+ exports.routeTopologyToJSON = routeTopologyToJSON;
414
549
  /**
415
550
  * Lifecycle status for the route artifact (authoring + quality).
416
551
  * Execution-side state (vessel sailing, paused, completed) lives on
@@ -1730,7 +1865,7 @@ exports.RouteInfo = {
1730
1865
  };
1731
1866
  typeRegistry_1.messageTypeRegistry.set(exports.RouteInfo.$type, exports.RouteInfo);
1732
1867
  function createBaseWaypoints() {
1733
- return { $type: "keelson.Waypoints", defaults: undefined, waypoint: [], extensions: undefined };
1868
+ return { $type: "keelson.Waypoints", defaults: undefined, waypoint: [], topology: 0, extensions: undefined };
1734
1869
  }
1735
1870
  exports.Waypoints = {
1736
1871
  $type: "keelson.Waypoints",
@@ -1741,6 +1876,9 @@ exports.Waypoints = {
1741
1876
  for (const v of message.waypoint) {
1742
1877
  exports.Waypoint.encode(v, writer.uint32(18).fork()).join();
1743
1878
  }
1879
+ if (message.topology !== 0) {
1880
+ writer.uint32(24).int32(message.topology);
1881
+ }
1744
1882
  if (message.extensions !== undefined) {
1745
1883
  exports.Extensions.encode(message.extensions, writer.uint32(794).fork()).join();
1746
1884
  }
@@ -1767,6 +1905,13 @@ exports.Waypoints = {
1767
1905
  message.waypoint.push(exports.Waypoint.decode(reader, reader.uint32()));
1768
1906
  continue;
1769
1907
  }
1908
+ case 3: {
1909
+ if (tag !== 24) {
1910
+ break;
1911
+ }
1912
+ message.topology = reader.int32();
1913
+ continue;
1914
+ }
1770
1915
  case 99: {
1771
1916
  if (tag !== 794) {
1772
1917
  break;
@@ -1787,6 +1932,7 @@ exports.Waypoints = {
1787
1932
  $type: exports.Waypoints.$type,
1788
1933
  defaults: isSet(object.defaults) ? exports.DefaultWaypoint.fromJSON(object.defaults) : undefined,
1789
1934
  waypoint: globalThis.Array.isArray(object?.waypoint) ? object.waypoint.map((e) => exports.Waypoint.fromJSON(e)) : [],
1935
+ topology: isSet(object.topology) ? routeTopologyFromJSON(object.topology) : 0,
1790
1936
  extensions: isSet(object.extensions) ? exports.Extensions.fromJSON(object.extensions) : undefined,
1791
1937
  };
1792
1938
  },
@@ -1798,6 +1944,9 @@ exports.Waypoints = {
1798
1944
  if (message.waypoint?.length) {
1799
1945
  obj.waypoint = message.waypoint.map((e) => exports.Waypoint.toJSON(e));
1800
1946
  }
1947
+ if (message.topology !== 0) {
1948
+ obj.topology = routeTopologyToJSON(message.topology);
1949
+ }
1801
1950
  if (message.extensions !== undefined) {
1802
1951
  obj.extensions = exports.Extensions.toJSON(message.extensions);
1803
1952
  }
@@ -1812,6 +1961,7 @@ exports.Waypoints = {
1812
1961
  ? exports.DefaultWaypoint.fromPartial(object.defaults)
1813
1962
  : undefined;
1814
1963
  message.waypoint = object.waypoint?.map((e) => exports.Waypoint.fromPartial(e)) || [];
1964
+ message.topology = object.topology ?? 0;
1815
1965
  message.extensions = (object.extensions !== undefined && object.extensions !== null)
1816
1966
  ? exports.Extensions.fromPartial(object.extensions)
1817
1967
  : undefined;
@@ -2167,6 +2317,9 @@ function createBaseLeg() {
2167
2317
  xtdStarboardM: undefined,
2168
2318
  xtdMonitoringPortM: undefined,
2169
2319
  xtdMonitoringStarboardM: undefined,
2320
+ xtdCorridorMode: 0,
2321
+ xtdPortBoundary: [],
2322
+ xtdStarboardBoundary: [],
2170
2323
  safetyContourM: undefined,
2171
2324
  safetyDepthM: undefined,
2172
2325
  ukcStaticM: undefined,
@@ -2205,6 +2358,15 @@ exports.Leg = {
2205
2358
  if (message.xtdMonitoringStarboardM !== undefined) {
2206
2359
  writer.uint32(37).float(message.xtdMonitoringStarboardM);
2207
2360
  }
2361
+ if (message.xtdCorridorMode !== 0) {
2362
+ writer.uint32(40).int32(message.xtdCorridorMode);
2363
+ }
2364
+ for (const v of message.xtdPortBoundary) {
2365
+ exports.XtdBoundaryPoint.encode(v, writer.uint32(50).fork()).join();
2366
+ }
2367
+ for (const v of message.xtdStarboardBoundary) {
2368
+ exports.XtdBoundaryPoint.encode(v, writer.uint32(58).fork()).join();
2369
+ }
2208
2370
  if (message.safetyContourM !== undefined) {
2209
2371
  writer.uint32(85).float(message.safetyContourM);
2210
2372
  }
@@ -2305,6 +2467,27 @@ exports.Leg = {
2305
2467
  message.xtdMonitoringStarboardM = reader.float();
2306
2468
  continue;
2307
2469
  }
2470
+ case 5: {
2471
+ if (tag !== 40) {
2472
+ break;
2473
+ }
2474
+ message.xtdCorridorMode = reader.int32();
2475
+ continue;
2476
+ }
2477
+ case 6: {
2478
+ if (tag !== 50) {
2479
+ break;
2480
+ }
2481
+ message.xtdPortBoundary.push(exports.XtdBoundaryPoint.decode(reader, reader.uint32()));
2482
+ continue;
2483
+ }
2484
+ case 7: {
2485
+ if (tag !== 58) {
2486
+ break;
2487
+ }
2488
+ message.xtdStarboardBoundary.push(exports.XtdBoundaryPoint.decode(reader, reader.uint32()));
2489
+ continue;
2490
+ }
2308
2491
  case 10: {
2309
2492
  if (tag !== 85) {
2310
2493
  break;
@@ -2469,6 +2652,13 @@ exports.Leg = {
2469
2652
  xtdMonitoringStarboardM: isSet(object.xtdMonitoringStarboardM)
2470
2653
  ? globalThis.Number(object.xtdMonitoringStarboardM)
2471
2654
  : undefined,
2655
+ xtdCorridorMode: isSet(object.xtdCorridorMode) ? xtdCorridorModeFromJSON(object.xtdCorridorMode) : 0,
2656
+ xtdPortBoundary: globalThis.Array.isArray(object?.xtdPortBoundary)
2657
+ ? object.xtdPortBoundary.map((e) => exports.XtdBoundaryPoint.fromJSON(e))
2658
+ : [],
2659
+ xtdStarboardBoundary: globalThis.Array.isArray(object?.xtdStarboardBoundary)
2660
+ ? object.xtdStarboardBoundary.map((e) => exports.XtdBoundaryPoint.fromJSON(e))
2661
+ : [],
2472
2662
  safetyContourM: isSet(object.safetyContourM) ? globalThis.Number(object.safetyContourM) : undefined,
2473
2663
  safetyDepthM: isSet(object.safetyDepthM) ? globalThis.Number(object.safetyDepthM) : undefined,
2474
2664
  ukcStaticM: isSet(object.ukcStaticM) ? globalThis.Number(object.ukcStaticM) : undefined,
@@ -2508,6 +2698,15 @@ exports.Leg = {
2508
2698
  if (message.xtdMonitoringStarboardM !== undefined) {
2509
2699
  obj.xtdMonitoringStarboardM = message.xtdMonitoringStarboardM;
2510
2700
  }
2701
+ if (message.xtdCorridorMode !== 0) {
2702
+ obj.xtdCorridorMode = xtdCorridorModeToJSON(message.xtdCorridorMode);
2703
+ }
2704
+ if (message.xtdPortBoundary?.length) {
2705
+ obj.xtdPortBoundary = message.xtdPortBoundary.map((e) => exports.XtdBoundaryPoint.toJSON(e));
2706
+ }
2707
+ if (message.xtdStarboardBoundary?.length) {
2708
+ obj.xtdStarboardBoundary = message.xtdStarboardBoundary.map((e) => exports.XtdBoundaryPoint.toJSON(e));
2709
+ }
2511
2710
  if (message.safetyContourM !== undefined) {
2512
2711
  obj.safetyContourM = message.safetyContourM;
2513
2712
  }
@@ -2582,6 +2781,9 @@ exports.Leg = {
2582
2781
  message.xtdStarboardM = object.xtdStarboardM ?? undefined;
2583
2782
  message.xtdMonitoringPortM = object.xtdMonitoringPortM ?? undefined;
2584
2783
  message.xtdMonitoringStarboardM = object.xtdMonitoringStarboardM ?? undefined;
2784
+ message.xtdCorridorMode = object.xtdCorridorMode ?? 0;
2785
+ message.xtdPortBoundary = object.xtdPortBoundary?.map((e) => exports.XtdBoundaryPoint.fromPartial(e)) || [];
2786
+ message.xtdStarboardBoundary = object.xtdStarboardBoundary?.map((e) => exports.XtdBoundaryPoint.fromPartial(e)) || [];
2585
2787
  message.safetyContourM = object.safetyContourM ?? undefined;
2586
2788
  message.safetyDepthM = object.safetyDepthM ?? undefined;
2587
2789
  message.ukcStaticM = object.ukcStaticM ?? undefined;
@@ -2609,6 +2811,115 @@ exports.Leg = {
2609
2811
  },
2610
2812
  };
2611
2813
  typeRegistry_1.messageTypeRegistry.set(exports.Leg.$type, exports.Leg);
2814
+ function createBaseXtdBoundaryPoint() {
2815
+ return {
2816
+ $type: "keelson.XtdBoundaryPoint",
2817
+ position: undefined,
2818
+ alongTrackFraction: undefined,
2819
+ offsetM: undefined,
2820
+ inTurn: false,
2821
+ };
2822
+ }
2823
+ exports.XtdBoundaryPoint = {
2824
+ $type: "keelson.XtdBoundaryPoint",
2825
+ encode(message, writer = new wire_1.BinaryWriter()) {
2826
+ if (message.position !== undefined) {
2827
+ Coordinate_1.Coordinate.encode(message.position, writer.uint32(10).fork()).join();
2828
+ }
2829
+ if (message.alongTrackFraction !== undefined) {
2830
+ writer.uint32(17).double(message.alongTrackFraction);
2831
+ }
2832
+ if (message.offsetM !== undefined) {
2833
+ writer.uint32(29).float(message.offsetM);
2834
+ }
2835
+ if (message.inTurn !== false) {
2836
+ writer.uint32(32).bool(message.inTurn);
2837
+ }
2838
+ return writer;
2839
+ },
2840
+ decode(input, length) {
2841
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
2842
+ let end = length === undefined ? reader.len : reader.pos + length;
2843
+ const message = createBaseXtdBoundaryPoint();
2844
+ while (reader.pos < end) {
2845
+ const tag = reader.uint32();
2846
+ switch (tag >>> 3) {
2847
+ case 1: {
2848
+ if (tag !== 10) {
2849
+ break;
2850
+ }
2851
+ message.position = Coordinate_1.Coordinate.decode(reader, reader.uint32());
2852
+ continue;
2853
+ }
2854
+ case 2: {
2855
+ if (tag !== 17) {
2856
+ break;
2857
+ }
2858
+ message.alongTrackFraction = reader.double();
2859
+ continue;
2860
+ }
2861
+ case 3: {
2862
+ if (tag !== 29) {
2863
+ break;
2864
+ }
2865
+ message.offsetM = reader.float();
2866
+ continue;
2867
+ }
2868
+ case 4: {
2869
+ if (tag !== 32) {
2870
+ break;
2871
+ }
2872
+ message.inTurn = reader.bool();
2873
+ continue;
2874
+ }
2875
+ }
2876
+ if ((tag & 7) === 4 || tag === 0) {
2877
+ break;
2878
+ }
2879
+ reader.skip(tag & 7);
2880
+ }
2881
+ return message;
2882
+ },
2883
+ fromJSON(object) {
2884
+ return {
2885
+ $type: exports.XtdBoundaryPoint.$type,
2886
+ position: isSet(object.position) ? Coordinate_1.Coordinate.fromJSON(object.position) : undefined,
2887
+ alongTrackFraction: isSet(object.alongTrackFraction) ? globalThis.Number(object.alongTrackFraction) : undefined,
2888
+ offsetM: isSet(object.offsetM) ? globalThis.Number(object.offsetM) : undefined,
2889
+ inTurn: isSet(object.inTurn) ? globalThis.Boolean(object.inTurn) : false,
2890
+ };
2891
+ },
2892
+ toJSON(message) {
2893
+ const obj = {};
2894
+ if (message.position !== undefined) {
2895
+ obj.position = Coordinate_1.Coordinate.toJSON(message.position);
2896
+ }
2897
+ if (message.alongTrackFraction !== undefined) {
2898
+ obj.alongTrackFraction = message.alongTrackFraction;
2899
+ }
2900
+ if (message.offsetM !== undefined) {
2901
+ obj.offsetM = message.offsetM;
2902
+ }
2903
+ if (message.inTurn !== false) {
2904
+ obj.inTurn = message.inTurn;
2905
+ }
2906
+ return obj;
2907
+ },
2908
+ create(base) {
2909
+ return exports.XtdBoundaryPoint.fromPartial(base ?? {});
2910
+ },
2911
+ fromPartial(object) {
2912
+ const message = createBaseXtdBoundaryPoint();
2913
+ message.position = (object.position !== undefined && object.position !== null)
2914
+ ? Coordinate_1.Coordinate.fromPartial(object.position)
2915
+ : undefined;
2916
+ message.alongTrackFraction = object.alongTrackFraction ?? undefined;
2917
+ message.offsetM = object.offsetM ?? undefined;
2918
+ message.inTurn = object.inTurn ?? false;
2919
+ return message;
2920
+ },
2921
+ };
2922
+ typeRegistry_1.messageTypeRegistry.set(exports.XtdBoundaryPoint.$type, exports.XtdBoundaryPoint);
2612
2923
  function createBaseSchedules() {
2613
2924
  return { $type: "keelson.Schedules", schedule: [], extensions: undefined };
2614
2925
  }
@@ -11,6 +11,13 @@ export interface RouteExecution {
11
11
  /**
12
12
  * Stable id of the next waypoint to be reached. Unset before departure and
13
13
  * after final arrival.
14
+ *
15
+ * On the closing leg of a route whose Waypoints.topology is CLOSED this
16
+ * wraps: `current_leg_from_waypoint_id` is the last waypoint and this is the
17
+ * FIRST. A consumer MUST NOT derive "next" by incrementing a position in the
18
+ * waypoint list — on a closed route that runs off the end. The distance and
19
+ * bearing fields below are defined against this id and so follow it round
20
+ * the corner unchanged, which is the payoff of the id-not-index rule above.
14
21
  */
15
22
  nextWaypointId?: string | undefined;
16
23
  /** Great-circle distance to the next waypoint (metres). */
@@ -35,6 +35,20 @@ export interface ScenarioEvent {
35
35
  */
36
36
  runId: string;
37
37
  tick: number;
38
+ /**
39
+ * Which scenario was loaded, spelled as ScenarioStatus spells it.
40
+ *
41
+ * run_id above says *which run*; this says *what was being run*, and the two
42
+ * are not recoverable from each other. A reader holding only events has to
43
+ * join them against a ScenarioStatus to learn what the exercise was — which
44
+ * is a join, not a lookup, and one that stops being cheap the moment a
45
+ * recording holds more than one run.
46
+ *
47
+ * Optional in practice: an authority that publishes ScenarioStatus on the
48
+ * same run may leave it empty and lose nothing. It is here so an events-only
49
+ * consumer is not the one paying for that choice.
50
+ */
51
+ scenarioId: string;
38
52
  /**
39
53
  * What was done. A free string rather than an enum, deliberately: the
40
54
  * vocabulary belongs to the scenario format, not to keelson, and a fixed
@@ -16,6 +16,7 @@ function createBaseScenarioEvent() {
16
16
  timestamp: undefined,
17
17
  runId: "",
18
18
  tick: 0,
19
+ scenarioId: "",
19
20
  action: "",
20
21
  entityId: "",
21
22
  parameters: {},
@@ -34,6 +35,9 @@ exports.ScenarioEvent = {
34
35
  if (message.tick !== 0) {
35
36
  writer.uint32(24).uint64(message.tick);
36
37
  }
38
+ if (message.scenarioId !== "") {
39
+ writer.uint32(66).string(message.scenarioId);
40
+ }
37
41
  if (message.action !== "") {
38
42
  writer.uint32(34).string(message.action);
39
43
  }
@@ -76,6 +80,13 @@ exports.ScenarioEvent = {
76
80
  message.tick = longToNumber(reader.uint64());
77
81
  continue;
78
82
  }
83
+ case 8: {
84
+ if (tag !== 66) {
85
+ break;
86
+ }
87
+ message.scenarioId = reader.string();
88
+ continue;
89
+ }
79
90
  case 4: {
80
91
  if (tag !== 34) {
81
92
  break;
@@ -121,6 +132,7 @@ exports.ScenarioEvent = {
121
132
  timestamp: isSet(object.timestamp) ? fromJsonTimestamp(object.timestamp) : undefined,
122
133
  runId: isSet(object.runId) ? globalThis.String(object.runId) : "",
123
134
  tick: isSet(object.tick) ? globalThis.Number(object.tick) : 0,
135
+ scenarioId: isSet(object.scenarioId) ? globalThis.String(object.scenarioId) : "",
124
136
  action: isSet(object.action) ? globalThis.String(object.action) : "",
125
137
  entityId: isSet(object.entityId) ? globalThis.String(object.entityId) : "",
126
138
  parameters: isObject(object.parameters)
@@ -143,6 +155,9 @@ exports.ScenarioEvent = {
143
155
  if (message.tick !== 0) {
144
156
  obj.tick = Math.round(message.tick);
145
157
  }
158
+ if (message.scenarioId !== "") {
159
+ obj.scenarioId = message.scenarioId;
160
+ }
146
161
  if (message.action !== "") {
147
162
  obj.action = message.action;
148
163
  }
@@ -171,6 +186,7 @@ exports.ScenarioEvent = {
171
186
  message.timestamp = object.timestamp ?? undefined;
172
187
  message.runId = object.runId ?? "";
173
188
  message.tick = object.tick ?? 0;
189
+ message.scenarioId = object.scenarioId ?? "";
174
190
  message.action = object.action ?? "";
175
191
  message.entityId = object.entityId ?? "";
176
192
  message.parameters = Object.entries(object.parameters ?? {}).reduce((acc, [key, value]) => {
@@ -1,3 +1,3 @@
1
1
  export * as google from "./index.google";
2
- export * as foxglove from "./index.foxglove";
3
2
  export * as keelson from "./index.keelson";
3
+ export * as foxglove from "./index.foxglove";
@@ -27,8 +27,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
27
27
  return result;
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.keelson = exports.foxglove = exports.google = void 0;
30
+ exports.foxglove = exports.keelson = exports.google = void 0;
31
31
  /* eslint-disable */
32
32
  exports.google = __importStar(require("./index.google"));
33
- exports.foxglove = __importStar(require("./index.foxglove"));
34
33
  exports.keelson = __importStar(require("./index.keelson"));
34
+ exports.foxglove = __importStar(require("./index.foxglove"));
@@ -1,23 +1,29 @@
1
+ export * from "./AdviceDisposition";
1
2
  export * from "./Audio";
2
3
  export * from "./Severity";
3
4
  export * from "./Alarm";
4
5
  export * from "./ChecklistEvidence";
5
6
  export * from "./ChecklistEvent";
6
- export * from "./ChecklistPresence";
7
7
  export * from "./ChecklistProcedure";
8
8
  export * from "./ChecklistState";
9
- export * from "./CommandAuthority";
10
9
  export * from "./Coordinate";
10
+ export * from "./OperationalAuthority";
11
+ export * from "./ChecklistHandover";
12
+ export * from "./ChecklistPresence";
13
+ export * from "./CommandAuthority";
14
+ export * from "./ContainerHost";
11
15
  export * from "./Decomposed3DVector";
12
- export * from "./EntityHealth";
13
16
  export * from "./Route";
17
+ export * from "./Encounter";
18
+ export * from "./EntityHealth";
14
19
  export * from "./EnvelopeExceedance";
15
20
  export * from "./FlagCode";
16
21
  export * from "./Geojson";
17
22
  export * from "./LocationFixQuality";
18
23
  export * from "./Mission";
24
+ export * from "./NavigationAdvice";
25
+ export * from "./NavigationState";
19
26
  export * from "./NetworkStatus";
20
- export * from "./OperationalAuthority";
21
27
  export * from "./Primitives";
22
28
  export * from "./ROCStatus";
23
29
  export * from "./RadarReading";
@@ -19,26 +19,32 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  /* eslint-disable */
22
+ __exportStar(require("./AdviceDisposition"), exports);
22
23
  __exportStar(require("./Audio"), exports);
23
24
  __exportStar(require("./Severity"), exports);
24
25
  __exportStar(require("./Alarm"), exports);
25
26
  __exportStar(require("./ChecklistEvidence"), exports);
26
27
  __exportStar(require("./ChecklistEvent"), exports);
27
- __exportStar(require("./ChecklistPresence"), exports);
28
28
  __exportStar(require("./ChecklistProcedure"), exports);
29
29
  __exportStar(require("./ChecklistState"), exports);
30
- __exportStar(require("./CommandAuthority"), exports);
31
30
  __exportStar(require("./Coordinate"), exports);
31
+ __exportStar(require("./OperationalAuthority"), exports);
32
+ __exportStar(require("./ChecklistHandover"), exports);
33
+ __exportStar(require("./ChecklistPresence"), exports);
34
+ __exportStar(require("./CommandAuthority"), exports);
35
+ __exportStar(require("./ContainerHost"), exports);
32
36
  __exportStar(require("./Decomposed3DVector"), exports);
33
- __exportStar(require("./EntityHealth"), exports);
34
37
  __exportStar(require("./Route"), exports);
38
+ __exportStar(require("./Encounter"), exports);
39
+ __exportStar(require("./EntityHealth"), exports);
35
40
  __exportStar(require("./EnvelopeExceedance"), exports);
36
41
  __exportStar(require("./FlagCode"), exports);
37
42
  __exportStar(require("./Geojson"), exports);
38
43
  __exportStar(require("./LocationFixQuality"), exports);
39
44
  __exportStar(require("./Mission"), exports);
45
+ __exportStar(require("./NavigationAdvice"), exports);
46
+ __exportStar(require("./NavigationState"), exports);
40
47
  __exportStar(require("./NetworkStatus"), exports);
41
- __exportStar(require("./OperationalAuthority"), exports);
42
48
  __exportStar(require("./Primitives"), exports);
43
49
  __exportStar(require("./ROCStatus"), exports);
44
50
  __exportStar(require("./RadarReading"), exports);
package/dist/qos.json CHANGED
@@ -83,12 +83,18 @@
83
83
  "depth_below_transducer_m": "elevated",
84
84
  "depth_below_keel_m": "elevated",
85
85
  "depth_below_surface_m": "elevated",
86
+ "water_level_above_chart_datum_m": "elevated",
86
87
  "envelope_exceedance": "elevated",
87
88
  "route_status": "elevated",
88
89
  "route_execution": "elevated",
90
+ "navigation_state": "elevated",
91
+ "encounter": "elevated",
92
+ "navigation_advice": "elevated",
93
+ "advice_disposition": "elevated",
89
94
  "route_edit_authority": "elevated",
90
95
  "route_edit_request": "elevated",
91
96
  "checklist_event": "elevated",
97
+ "checklist_handover": "elevated",
92
98
  "raw": "background",
93
99
  "raw_json": "background",
94
100
  "raw_nmea0183": "background",