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

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 (48) hide show
  1. package/dist/index.d.ts +83 -8
  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 +141 -6
  13. package/dist/interfaces/Route.js +309 -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/VehicleSimulatorControl.d.ts +0 -83
  21. package/dist/interfaces/VehicleSimulatorControl.js +1 -293
  22. package/dist/interfaces/serviceRegistry.d.ts +84 -8
  23. package/dist/interfaces/serviceRegistry.js +4 -0
  24. package/dist/interfaces.json +2 -0
  25. package/dist/payloads/AdviceDisposition.d.ts +55 -0
  26. package/dist/payloads/AdviceDisposition.js +242 -0
  27. package/dist/payloads/ChecklistHandover.d.ts +522 -0
  28. package/dist/payloads/ChecklistHandover.js +1735 -0
  29. package/dist/payloads/ContainerHost.d.ts +407 -0
  30. package/dist/payloads/ContainerHost.js +1245 -0
  31. package/dist/payloads/Encounter.d.ts +104 -0
  32. package/dist/payloads/Encounter.js +573 -0
  33. package/dist/payloads/NavigationAdvice.d.ts +94 -0
  34. package/dist/payloads/NavigationAdvice.js +596 -0
  35. package/dist/payloads/NavigationState.d.ts +90 -0
  36. package/dist/payloads/NavigationState.js +377 -0
  37. package/dist/payloads/Route.d.ts +142 -6
  38. package/dist/payloads/Route.js +318 -4
  39. package/dist/payloads/RouteExecution.d.ts +7 -0
  40. package/dist/payloads/ScenarioEvent.d.ts +14 -0
  41. package/dist/payloads/ScenarioEvent.js +16 -0
  42. package/dist/payloads/index.d.ts +1 -1
  43. package/dist/payloads/index.js +2 -2
  44. package/dist/payloads/index.keelson.d.ts +10 -4
  45. package/dist/payloads/index.keelson.js +10 -4
  46. package/dist/qos.json +6 -0
  47. package/dist/subjects.json +20 -1
  48. 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,123 @@ function geometryTypeToJSON(object) {
411
432
  }
412
433
  }
413
434
  exports.geometryTypeToJSON = geometryTypeToJSON;
435
+ /**
436
+ * How a leg's XTD corridor is shaped. UNSPECIFIED MUST be read as FIXED:
437
+ * every leg published before this field existed is a fixed-width corridor, and
438
+ * 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
+ /**
444
+ * XTD_CORRIDOR_MODE_FIXED - Fixed width: parallel lines at xtd_port_m / xtd_starboard_m either side of
445
+ * track.
446
+ */
447
+ XtdCorridorMode[XtdCorridorMode["XTD_CORRIDOR_MODE_FIXED"] = 1] = "XTD_CORRIDOR_MODE_FIXED";
448
+ /**
449
+ * XTD_CORRIDOR_MODE_VARIABLE - Variable width: a boundary drawn by the planner (Leg.xtd_port_boundary /
450
+ * xtd_starboard_boundary), e.g. a corridor that narrows past a shoal.
451
+ * xtd_port_m / xtd_starboard_m still carry a nominal limit for a monitor
452
+ * that does not evaluate the boundary. That fallback is NOT conservative when
453
+ * the drawn corridor is narrower than the nominal one, which is why such a
454
+ * monitor SHOULD report the leg as monitored at reduced fidelity.
455
+ */
456
+ XtdCorridorMode[XtdCorridorMode["XTD_CORRIDOR_MODE_VARIABLE"] = 2] = "XTD_CORRIDOR_MODE_VARIABLE";
457
+ XtdCorridorMode[XtdCorridorMode["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
458
+ })(XtdCorridorMode || (exports.XtdCorridorMode = XtdCorridorMode = {}));
459
+ function xtdCorridorModeFromJSON(object) {
460
+ switch (object) {
461
+ case 0:
462
+ case "XTD_CORRIDOR_MODE_UNSPECIFIED":
463
+ return XtdCorridorMode.XTD_CORRIDOR_MODE_UNSPECIFIED;
464
+ case 1:
465
+ case "XTD_CORRIDOR_MODE_FIXED":
466
+ return XtdCorridorMode.XTD_CORRIDOR_MODE_FIXED;
467
+ case 2:
468
+ case "XTD_CORRIDOR_MODE_VARIABLE":
469
+ return XtdCorridorMode.XTD_CORRIDOR_MODE_VARIABLE;
470
+ case -1:
471
+ case "UNRECOGNIZED":
472
+ default:
473
+ return XtdCorridorMode.UNRECOGNIZED;
474
+ }
475
+ }
476
+ exports.xtdCorridorModeFromJSON = xtdCorridorModeFromJSON;
477
+ function xtdCorridorModeToJSON(object) {
478
+ switch (object) {
479
+ case XtdCorridorMode.XTD_CORRIDOR_MODE_UNSPECIFIED:
480
+ return "XTD_CORRIDOR_MODE_UNSPECIFIED";
481
+ case XtdCorridorMode.XTD_CORRIDOR_MODE_FIXED:
482
+ return "XTD_CORRIDOR_MODE_FIXED";
483
+ case XtdCorridorMode.XTD_CORRIDOR_MODE_VARIABLE:
484
+ return "XTD_CORRIDOR_MODE_VARIABLE";
485
+ case XtdCorridorMode.UNRECOGNIZED:
486
+ default:
487
+ return "UNRECOGNIZED";
488
+ }
489
+ }
490
+ exports.xtdCorridorModeToJSON = xtdCorridorModeToJSON;
491
+ /**
492
+ * Whether a route's waypoint list closes back on itself. RTZ 1.2 has no such
493
+ * concept, so producers either repeated the first waypoint (breaking id
494
+ * uniqueness) or left closing to consumer convention (silently wrong the first
495
+ * time a consumer chooses not to loop). This field makes the author say.
496
+ *
497
+ * An enum rather than a bool, like every other classification in this file:
498
+ * OPEN says closure was considered and declined, and there is room for a
499
+ * third topology (out-and-back). UNSPECIFIED MUST be read as OPEN; that is
500
+ * the fail-safe direction, since sailing a point-to-point route as a circuit
501
+ * takes the vessel over unplanned water. Terminal behaviour (stop, hold, go
502
+ * round again) is execution policy and belongs on keelson.Voyage, not here.
503
+ * See protocol-specification.md §6.2.1.
504
+ */
505
+ var RouteTopology;
506
+ (function (RouteTopology) {
507
+ RouteTopology[RouteTopology["ROUTE_TOPOLOGY_UNSPECIFIED"] = 0] = "ROUTE_TOPOLOGY_UNSPECIFIED";
508
+ /**
509
+ * ROUTE_TOPOLOGY_OPEN - Runs from the first waypoint to the last and ends there. The last
510
+ * waypoint has no outgoing leg.
511
+ */
512
+ RouteTopology[RouteTopology["ROUTE_TOPOLOGY_OPEN"] = 1] = "ROUTE_TOPOLOGY_OPEN";
513
+ /**
514
+ * ROUTE_TOPOLOGY_CLOSED - A circuit: the last waypoint's outgoing leg terminates at the first
515
+ * waypoint, which is NOT repeated at the end of the list.
516
+ */
517
+ RouteTopology[RouteTopology["ROUTE_TOPOLOGY_CLOSED"] = 2] = "ROUTE_TOPOLOGY_CLOSED";
518
+ RouteTopology[RouteTopology["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
519
+ })(RouteTopology || (exports.RouteTopology = RouteTopology = {}));
520
+ function routeTopologyFromJSON(object) {
521
+ switch (object) {
522
+ case 0:
523
+ case "ROUTE_TOPOLOGY_UNSPECIFIED":
524
+ return RouteTopology.ROUTE_TOPOLOGY_UNSPECIFIED;
525
+ case 1:
526
+ case "ROUTE_TOPOLOGY_OPEN":
527
+ return RouteTopology.ROUTE_TOPOLOGY_OPEN;
528
+ case 2:
529
+ case "ROUTE_TOPOLOGY_CLOSED":
530
+ return RouteTopology.ROUTE_TOPOLOGY_CLOSED;
531
+ case -1:
532
+ case "UNRECOGNIZED":
533
+ default:
534
+ return RouteTopology.UNRECOGNIZED;
535
+ }
536
+ }
537
+ exports.routeTopologyFromJSON = routeTopologyFromJSON;
538
+ function routeTopologyToJSON(object) {
539
+ switch (object) {
540
+ case RouteTopology.ROUTE_TOPOLOGY_UNSPECIFIED:
541
+ return "ROUTE_TOPOLOGY_UNSPECIFIED";
542
+ case RouteTopology.ROUTE_TOPOLOGY_OPEN:
543
+ return "ROUTE_TOPOLOGY_OPEN";
544
+ case RouteTopology.ROUTE_TOPOLOGY_CLOSED:
545
+ return "ROUTE_TOPOLOGY_CLOSED";
546
+ case RouteTopology.UNRECOGNIZED:
547
+ default:
548
+ return "UNRECOGNIZED";
549
+ }
550
+ }
551
+ exports.routeTopologyToJSON = routeTopologyToJSON;
414
552
  /**
415
553
  * Lifecycle status for the route artifact (authoring + quality).
416
554
  * Execution-side state (vessel sailing, paused, completed) lives on
@@ -1730,7 +1868,7 @@ exports.RouteInfo = {
1730
1868
  };
1731
1869
  typeRegistry_1.messageTypeRegistry.set(exports.RouteInfo.$type, exports.RouteInfo);
1732
1870
  function createBaseWaypoints() {
1733
- return { $type: "keelson.Waypoints", defaults: undefined, waypoint: [], extensions: undefined };
1871
+ return { $type: "keelson.Waypoints", defaults: undefined, waypoint: [], topology: 0, extensions: undefined };
1734
1872
  }
1735
1873
  exports.Waypoints = {
1736
1874
  $type: "keelson.Waypoints",
@@ -1741,6 +1879,9 @@ exports.Waypoints = {
1741
1879
  for (const v of message.waypoint) {
1742
1880
  exports.Waypoint.encode(v, writer.uint32(18).fork()).join();
1743
1881
  }
1882
+ if (message.topology !== 0) {
1883
+ writer.uint32(24).int32(message.topology);
1884
+ }
1744
1885
  if (message.extensions !== undefined) {
1745
1886
  exports.Extensions.encode(message.extensions, writer.uint32(794).fork()).join();
1746
1887
  }
@@ -1767,6 +1908,13 @@ exports.Waypoints = {
1767
1908
  message.waypoint.push(exports.Waypoint.decode(reader, reader.uint32()));
1768
1909
  continue;
1769
1910
  }
1911
+ case 3: {
1912
+ if (tag !== 24) {
1913
+ break;
1914
+ }
1915
+ message.topology = reader.int32();
1916
+ continue;
1917
+ }
1770
1918
  case 99: {
1771
1919
  if (tag !== 794) {
1772
1920
  break;
@@ -1787,6 +1935,7 @@ exports.Waypoints = {
1787
1935
  $type: exports.Waypoints.$type,
1788
1936
  defaults: isSet(object.defaults) ? exports.DefaultWaypoint.fromJSON(object.defaults) : undefined,
1789
1937
  waypoint: globalThis.Array.isArray(object?.waypoint) ? object.waypoint.map((e) => exports.Waypoint.fromJSON(e)) : [],
1938
+ topology: isSet(object.topology) ? routeTopologyFromJSON(object.topology) : 0,
1790
1939
  extensions: isSet(object.extensions) ? exports.Extensions.fromJSON(object.extensions) : undefined,
1791
1940
  };
1792
1941
  },
@@ -1798,6 +1947,9 @@ exports.Waypoints = {
1798
1947
  if (message.waypoint?.length) {
1799
1948
  obj.waypoint = message.waypoint.map((e) => exports.Waypoint.toJSON(e));
1800
1949
  }
1950
+ if (message.topology !== 0) {
1951
+ obj.topology = routeTopologyToJSON(message.topology);
1952
+ }
1801
1953
  if (message.extensions !== undefined) {
1802
1954
  obj.extensions = exports.Extensions.toJSON(message.extensions);
1803
1955
  }
@@ -1812,6 +1964,7 @@ exports.Waypoints = {
1812
1964
  ? exports.DefaultWaypoint.fromPartial(object.defaults)
1813
1965
  : undefined;
1814
1966
  message.waypoint = object.waypoint?.map((e) => exports.Waypoint.fromPartial(e)) || [];
1967
+ message.topology = object.topology ?? 0;
1815
1968
  message.extensions = (object.extensions !== undefined && object.extensions !== null)
1816
1969
  ? exports.Extensions.fromPartial(object.extensions)
1817
1970
  : undefined;
@@ -2167,6 +2320,9 @@ function createBaseLeg() {
2167
2320
  xtdStarboardM: undefined,
2168
2321
  xtdMonitoringPortM: undefined,
2169
2322
  xtdMonitoringStarboardM: undefined,
2323
+ xtdCorridorMode: 0,
2324
+ xtdPortBoundary: [],
2325
+ xtdStarboardBoundary: [],
2170
2326
  safetyContourM: undefined,
2171
2327
  safetyDepthM: undefined,
2172
2328
  ukcStaticM: undefined,
@@ -2205,6 +2361,15 @@ exports.Leg = {
2205
2361
  if (message.xtdMonitoringStarboardM !== undefined) {
2206
2362
  writer.uint32(37).float(message.xtdMonitoringStarboardM);
2207
2363
  }
2364
+ if (message.xtdCorridorMode !== 0) {
2365
+ writer.uint32(40).int32(message.xtdCorridorMode);
2366
+ }
2367
+ for (const v of message.xtdPortBoundary) {
2368
+ exports.XtdBoundaryPoint.encode(v, writer.uint32(50).fork()).join();
2369
+ }
2370
+ for (const v of message.xtdStarboardBoundary) {
2371
+ exports.XtdBoundaryPoint.encode(v, writer.uint32(58).fork()).join();
2372
+ }
2208
2373
  if (message.safetyContourM !== undefined) {
2209
2374
  writer.uint32(85).float(message.safetyContourM);
2210
2375
  }
@@ -2305,6 +2470,27 @@ exports.Leg = {
2305
2470
  message.xtdMonitoringStarboardM = reader.float();
2306
2471
  continue;
2307
2472
  }
2473
+ case 5: {
2474
+ if (tag !== 40) {
2475
+ break;
2476
+ }
2477
+ message.xtdCorridorMode = reader.int32();
2478
+ continue;
2479
+ }
2480
+ case 6: {
2481
+ if (tag !== 50) {
2482
+ break;
2483
+ }
2484
+ message.xtdPortBoundary.push(exports.XtdBoundaryPoint.decode(reader, reader.uint32()));
2485
+ continue;
2486
+ }
2487
+ case 7: {
2488
+ if (tag !== 58) {
2489
+ break;
2490
+ }
2491
+ message.xtdStarboardBoundary.push(exports.XtdBoundaryPoint.decode(reader, reader.uint32()));
2492
+ continue;
2493
+ }
2308
2494
  case 10: {
2309
2495
  if (tag !== 85) {
2310
2496
  break;
@@ -2469,6 +2655,13 @@ exports.Leg = {
2469
2655
  xtdMonitoringStarboardM: isSet(object.xtdMonitoringStarboardM)
2470
2656
  ? globalThis.Number(object.xtdMonitoringStarboardM)
2471
2657
  : undefined,
2658
+ xtdCorridorMode: isSet(object.xtdCorridorMode) ? xtdCorridorModeFromJSON(object.xtdCorridorMode) : 0,
2659
+ xtdPortBoundary: globalThis.Array.isArray(object?.xtdPortBoundary)
2660
+ ? object.xtdPortBoundary.map((e) => exports.XtdBoundaryPoint.fromJSON(e))
2661
+ : [],
2662
+ xtdStarboardBoundary: globalThis.Array.isArray(object?.xtdStarboardBoundary)
2663
+ ? object.xtdStarboardBoundary.map((e) => exports.XtdBoundaryPoint.fromJSON(e))
2664
+ : [],
2472
2665
  safetyContourM: isSet(object.safetyContourM) ? globalThis.Number(object.safetyContourM) : undefined,
2473
2666
  safetyDepthM: isSet(object.safetyDepthM) ? globalThis.Number(object.safetyDepthM) : undefined,
2474
2667
  ukcStaticM: isSet(object.ukcStaticM) ? globalThis.Number(object.ukcStaticM) : undefined,
@@ -2508,6 +2701,15 @@ exports.Leg = {
2508
2701
  if (message.xtdMonitoringStarboardM !== undefined) {
2509
2702
  obj.xtdMonitoringStarboardM = message.xtdMonitoringStarboardM;
2510
2703
  }
2704
+ if (message.xtdCorridorMode !== 0) {
2705
+ obj.xtdCorridorMode = xtdCorridorModeToJSON(message.xtdCorridorMode);
2706
+ }
2707
+ if (message.xtdPortBoundary?.length) {
2708
+ obj.xtdPortBoundary = message.xtdPortBoundary.map((e) => exports.XtdBoundaryPoint.toJSON(e));
2709
+ }
2710
+ if (message.xtdStarboardBoundary?.length) {
2711
+ obj.xtdStarboardBoundary = message.xtdStarboardBoundary.map((e) => exports.XtdBoundaryPoint.toJSON(e));
2712
+ }
2511
2713
  if (message.safetyContourM !== undefined) {
2512
2714
  obj.safetyContourM = message.safetyContourM;
2513
2715
  }
@@ -2582,6 +2784,9 @@ exports.Leg = {
2582
2784
  message.xtdStarboardM = object.xtdStarboardM ?? undefined;
2583
2785
  message.xtdMonitoringPortM = object.xtdMonitoringPortM ?? undefined;
2584
2786
  message.xtdMonitoringStarboardM = object.xtdMonitoringStarboardM ?? undefined;
2787
+ message.xtdCorridorMode = object.xtdCorridorMode ?? 0;
2788
+ message.xtdPortBoundary = object.xtdPortBoundary?.map((e) => exports.XtdBoundaryPoint.fromPartial(e)) || [];
2789
+ message.xtdStarboardBoundary = object.xtdStarboardBoundary?.map((e) => exports.XtdBoundaryPoint.fromPartial(e)) || [];
2585
2790
  message.safetyContourM = object.safetyContourM ?? undefined;
2586
2791
  message.safetyDepthM = object.safetyDepthM ?? undefined;
2587
2792
  message.ukcStaticM = object.ukcStaticM ?? undefined;
@@ -2609,6 +2814,115 @@ exports.Leg = {
2609
2814
  },
2610
2815
  };
2611
2816
  typeRegistry_1.messageTypeRegistry.set(exports.Leg.$type, exports.Leg);
2817
+ function createBaseXtdBoundaryPoint() {
2818
+ return {
2819
+ $type: "keelson.XtdBoundaryPoint",
2820
+ position: undefined,
2821
+ alongTrackFraction: undefined,
2822
+ offsetM: undefined,
2823
+ inTurn: false,
2824
+ };
2825
+ }
2826
+ exports.XtdBoundaryPoint = {
2827
+ $type: "keelson.XtdBoundaryPoint",
2828
+ encode(message, writer = new wire_1.BinaryWriter()) {
2829
+ if (message.position !== undefined) {
2830
+ Coordinate_1.Coordinate.encode(message.position, writer.uint32(10).fork()).join();
2831
+ }
2832
+ if (message.alongTrackFraction !== undefined) {
2833
+ writer.uint32(17).double(message.alongTrackFraction);
2834
+ }
2835
+ if (message.offsetM !== undefined) {
2836
+ writer.uint32(29).float(message.offsetM);
2837
+ }
2838
+ if (message.inTurn !== false) {
2839
+ writer.uint32(32).bool(message.inTurn);
2840
+ }
2841
+ return writer;
2842
+ },
2843
+ decode(input, length) {
2844
+ const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);
2845
+ let end = length === undefined ? reader.len : reader.pos + length;
2846
+ const message = createBaseXtdBoundaryPoint();
2847
+ while (reader.pos < end) {
2848
+ const tag = reader.uint32();
2849
+ switch (tag >>> 3) {
2850
+ case 1: {
2851
+ if (tag !== 10) {
2852
+ break;
2853
+ }
2854
+ message.position = Coordinate_1.Coordinate.decode(reader, reader.uint32());
2855
+ continue;
2856
+ }
2857
+ case 2: {
2858
+ if (tag !== 17) {
2859
+ break;
2860
+ }
2861
+ message.alongTrackFraction = reader.double();
2862
+ continue;
2863
+ }
2864
+ case 3: {
2865
+ if (tag !== 29) {
2866
+ break;
2867
+ }
2868
+ message.offsetM = reader.float();
2869
+ continue;
2870
+ }
2871
+ case 4: {
2872
+ if (tag !== 32) {
2873
+ break;
2874
+ }
2875
+ message.inTurn = reader.bool();
2876
+ continue;
2877
+ }
2878
+ }
2879
+ if ((tag & 7) === 4 || tag === 0) {
2880
+ break;
2881
+ }
2882
+ reader.skip(tag & 7);
2883
+ }
2884
+ return message;
2885
+ },
2886
+ fromJSON(object) {
2887
+ return {
2888
+ $type: exports.XtdBoundaryPoint.$type,
2889
+ position: isSet(object.position) ? Coordinate_1.Coordinate.fromJSON(object.position) : undefined,
2890
+ alongTrackFraction: isSet(object.alongTrackFraction) ? globalThis.Number(object.alongTrackFraction) : undefined,
2891
+ offsetM: isSet(object.offsetM) ? globalThis.Number(object.offsetM) : undefined,
2892
+ inTurn: isSet(object.inTurn) ? globalThis.Boolean(object.inTurn) : false,
2893
+ };
2894
+ },
2895
+ toJSON(message) {
2896
+ const obj = {};
2897
+ if (message.position !== undefined) {
2898
+ obj.position = Coordinate_1.Coordinate.toJSON(message.position);
2899
+ }
2900
+ if (message.alongTrackFraction !== undefined) {
2901
+ obj.alongTrackFraction = message.alongTrackFraction;
2902
+ }
2903
+ if (message.offsetM !== undefined) {
2904
+ obj.offsetM = message.offsetM;
2905
+ }
2906
+ if (message.inTurn !== false) {
2907
+ obj.inTurn = message.inTurn;
2908
+ }
2909
+ return obj;
2910
+ },
2911
+ create(base) {
2912
+ return exports.XtdBoundaryPoint.fromPartial(base ?? {});
2913
+ },
2914
+ fromPartial(object) {
2915
+ const message = createBaseXtdBoundaryPoint();
2916
+ message.position = (object.position !== undefined && object.position !== null)
2917
+ ? Coordinate_1.Coordinate.fromPartial(object.position)
2918
+ : undefined;
2919
+ message.alongTrackFraction = object.alongTrackFraction ?? undefined;
2920
+ message.offsetM = object.offsetM ?? undefined;
2921
+ message.inTurn = object.inTurn ?? false;
2922
+ return message;
2923
+ },
2924
+ };
2925
+ typeRegistry_1.messageTypeRegistry.set(exports.XtdBoundaryPoint.$type, exports.XtdBoundaryPoint);
2612
2926
  function createBaseSchedules() {
2613
2927
  return { $type: "keelson.Schedules", schedule: [], extensions: undefined };
2614
2928
  }
@@ -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",