@ksp-gonogo/sitrep-sdk 1.0.0-rc.21 → 2.0.0-rc.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/__generated__/command-map.d.ts +140 -11
- package/dist/__generated__/command-map.d.ts.map +1 -1
- package/dist/__generated__/command-map.js +6 -3
- package/dist/__generated__/command-map.js.map +1 -1
- package/dist/__generated__/contract.d.ts +591 -425
- package/dist/__generated__/contract.d.ts.map +1 -1
- package/dist/__generated__/contract.js +34 -4
- package/dist/__generated__/contract.js.map +1 -1
- package/dist/__generated__/error-codes.d.ts +46 -55
- package/dist/__generated__/error-codes.d.ts.map +1 -1
- package/dist/__generated__/error-codes.js +76 -69
- package/dist/__generated__/error-codes.js.map +1 -1
- package/dist/__generated__/test-theme.d.ts +3 -0
- package/dist/__generated__/test-theme.d.ts.map +1 -1
- package/dist/__generated__/test-theme.js +3 -0
- package/dist/__generated__/test-theme.js.map +1 -1
- package/dist/__generated__/topic-map.d.ts +90 -2
- package/dist/__generated__/topic-map.d.ts.map +1 -1
- package/dist/__generated__/topic-map.js +2 -0
- package/dist/__generated__/topic-map.js.map +1 -1
- package/dist/__generated__/units.d.ts.map +1 -1
- package/dist/__generated__/units.js +89 -47
- package/dist/__generated__/units.js.map +1 -1
- package/dist/api/alarm-request.d.ts +6 -1
- package/dist/api/alarm-request.d.ts.map +1 -1
- package/dist/api/alarm-request.js +7 -1
- package/dist/api/alarm-request.js.map +1 -1
- package/dist/api/contribution-slots.d.ts +87 -17
- package/dist/api/contribution-slots.d.ts.map +1 -1
- package/dist/api/coverage/CoverageMaskCache.d.ts +1 -1
- package/dist/api/coverage/CoverageMaskCache.js +1 -1
- package/dist/api/coverage-source.d.ts +3 -1
- package/dist/api/coverage-source.d.ts.map +1 -1
- package/dist/api/coverage-source.js +3 -1
- package/dist/api/coverage-source.js.map +1 -1
- package/dist/api/framework-reads.d.ts +20 -0
- package/dist/api/framework-reads.d.ts.map +1 -0
- package/dist/api/framework-reads.js +30 -0
- package/dist/api/framework-reads.js.map +1 -0
- package/dist/api/host.d.ts +8 -5
- package/dist/api/host.d.ts.map +1 -1
- package/dist/api/host.js.map +1 -1
- package/dist/api/index.d.ts +96 -17
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +91 -10
- package/dist/api/index.js.map +1 -1
- package/dist/api/logger.d.ts +14 -2
- package/dist/api/logger.d.ts.map +1 -1
- package/dist/api/logger.js +14 -2
- package/dist/api/logger.js.map +1 -1
- package/dist/api/plot-layers.d.ts +81 -6
- package/dist/api/plot-layers.d.ts.map +1 -1
- package/dist/api/plot-layers.js +4 -3
- package/dist/api/plot-layers.js.map +1 -1
- package/dist/api/plots.d.ts +19 -0
- package/dist/api/plots.d.ts.map +1 -1
- package/dist/api/registry.d.ts +11 -0
- package/dist/api/registry.d.ts.map +1 -1
- package/dist/api/registry.js.map +1 -1
- package/dist/api/settings/SettingsContext.d.ts +5 -4
- package/dist/api/settings/SettingsContext.d.ts.map +1 -1
- package/dist/api/settings/SettingsContext.js +13 -4
- package/dist/api/settings/SettingsContext.js.map +1 -1
- package/dist/api/settings/SettingsService.d.ts +3 -0
- package/dist/api/settings/SettingsService.d.ts.map +1 -1
- package/dist/api/settings/SettingsService.js +3 -0
- package/dist/api/settings/SettingsService.js.map +1 -1
- package/dist/api/settings/store.d.ts +3 -1
- package/dist/api/settings/store.d.ts.map +1 -1
- package/dist/api/settings/store.js +3 -1
- package/dist/api/settings/store.js.map +1 -1
- package/dist/api/slots.d.ts +94 -17
- package/dist/api/slots.d.ts.map +1 -1
- package/dist/api/station-brokers.d.ts +2 -1
- package/dist/api/station-brokers.d.ts.map +1 -1
- package/dist/api/station-brokers.js +2 -1
- package/dist/api/station-brokers.js.map +1 -1
- package/dist/api/stock-bodies.d.ts.map +1 -1
- package/dist/api/stock-bodies.js +6 -0
- package/dist/api/stock-bodies.js.map +1 -1
- package/dist/api/tiny-size.d.ts +2 -0
- package/dist/api/tiny-size.d.ts.map +1 -1
- package/dist/api/tiny-size.js +6 -1
- package/dist/api/tiny-size.js.map +1 -1
- package/dist/api/tone.d.ts +7 -4
- package/dist/api/tone.d.ts.map +1 -1
- package/dist/api/tone.js.map +1 -1
- package/dist/api/transport.d.ts +10 -2
- package/dist/api/transport.d.ts.map +1 -1
- package/dist/api/types.d.ts +179 -120
- package/dist/api/types.d.ts.map +1 -1
- package/dist/binary-frame.d.ts +26 -25
- package/dist/binary-frame.d.ts.map +1 -1
- package/dist/binary-frame.js +25 -25
- package/dist/binary-frame.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -0
- package/dist/client.js.map +1 -1
- package/dist/combine-readings.d.ts +8 -4
- package/dist/combine-readings.d.ts.map +1 -1
- package/dist/combine-readings.js +6 -4
- package/dist/combine-readings.js.map +1 -1
- package/dist/command-delay.d.ts +6 -0
- package/dist/command-delay.d.ts.map +1 -1
- package/dist/command-delay.js.map +1 -1
- package/dist/commands.d.ts +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/compat-versions.d.ts +1 -1
- package/dist/compat-versions.d.ts.map +1 -1
- package/dist/compat-versions.js +2 -2
- package/dist/compat-versions.js.map +1 -1
- package/dist/contract-enum-names.d.ts +2 -3
- package/dist/contract-enum-names.d.ts.map +1 -1
- package/dist/contract-enum-names.js +2 -3
- package/dist/contract-enum-names.js.map +1 -1
- package/dist/enum-names.d.ts +5 -3
- package/dist/enum-names.d.ts.map +1 -1
- package/dist/enum-names.js +5 -3
- package/dist/enum-names.js.map +1 -1
- package/dist/envelope.d.ts +3 -3
- package/dist/envelope.d.ts.map +1 -1
- package/dist/flight/BufferedDataSource.d.ts.map +1 -1
- package/dist/flight/BufferedDataSource.js +4 -2
- package/dist/flight/BufferedDataSource.js.map +1 -1
- package/dist/flight/types.d.ts +3 -2
- package/dist/flight/types.d.ts.map +1 -1
- package/dist/frames/index.d.ts +19 -17
- package/dist/frames/index.d.ts.map +1 -1
- package/dist/frames/index.js +13 -12
- package/dist/frames/index.js.map +1 -1
- package/dist/index.d.ts +20 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -3
- package/dist/index.js.map +1 -1
- package/dist/ksp-enum-names.d.ts +23 -8
- package/dist/ksp-enum-names.d.ts.map +1 -1
- package/dist/ksp-enum-names.js +20 -8
- package/dist/ksp-enum-names.js.map +1 -1
- package/dist/media/radio-support.d.ts +12 -3
- package/dist/media/radio-support.d.ts.map +1 -1
- package/dist/media/radio-support.js +12 -3
- package/dist/media/radio-support.js.map +1 -1
- package/dist/perf/PerfBudget.d.ts +7 -5
- package/dist/perf/PerfBudget.d.ts.map +1 -1
- package/dist/perf/PerfBudget.js +8 -6
- package/dist/perf/PerfBudget.js.map +1 -1
- package/dist/reading.d.ts +12 -2
- package/dist/reading.d.ts.map +1 -1
- package/dist/reading.js +7 -2
- package/dist/reading.js.map +1 -1
- package/dist/reads-index.json +3675 -0
- package/dist/spine/body-pose.d.ts +85 -0
- package/dist/spine/body-pose.d.ts.map +1 -0
- package/dist/spine/body-pose.js +166 -0
- package/dist/spine/body-pose.js.map +1 -0
- package/dist/spine/capability-lock.d.ts +6 -2
- package/dist/spine/capability-lock.d.ts.map +1 -1
- package/dist/spine/capability-lock.js +8 -2
- package/dist/spine/capability-lock.js.map +1 -1
- package/dist/spine/catalogue-elements.d.ts +28 -0
- package/dist/spine/catalogue-elements.d.ts.map +1 -0
- package/dist/spine/catalogue-elements.js +63 -0
- package/dist/spine/catalogue-elements.js.map +1 -0
- package/dist/spine/celestial-facts.d.ts +5 -7
- package/dist/spine/celestial-facts.d.ts.map +1 -1
- package/dist/spine/celestial-facts.js +10 -21
- package/dist/spine/celestial-facts.js.map +1 -1
- package/dist/spine/client-timeline.d.ts +10 -12
- package/dist/spine/client-timeline.d.ts.map +1 -1
- package/dist/spine/client-timeline.js.map +1 -1
- package/dist/spine/client.d.ts +31 -0
- package/dist/spine/client.d.ts.map +1 -1
- package/dist/spine/client.js +97 -19
- package/dist/spine/client.js.map +1 -1
- package/dist/spine/command-gate.d.ts +13 -11
- package/dist/spine/command-gate.d.ts.map +1 -1
- package/dist/spine/command-gate.js +2 -2
- package/dist/spine/command-gate.js.map +1 -1
- package/dist/spine/command-group.d.ts +62 -0
- package/dist/spine/command-group.d.ts.map +1 -0
- package/dist/spine/command-group.js +172 -0
- package/dist/spine/command-group.js.map +1 -0
- package/dist/spine/comms-delay-reckoning.js.map +1 -1
- package/dist/spine/comms-journey.d.ts +9 -0
- package/dist/spine/comms-journey.d.ts.map +1 -1
- package/dist/spine/comms-journey.js +27 -0
- package/dist/spine/comms-journey.js.map +1 -1
- package/dist/spine/comms-path-geometry.d.ts +3 -3
- package/dist/spine/comms-path-geometry.d.ts.map +1 -1
- package/dist/spine/comms-path-geometry.js.map +1 -1
- package/dist/spine/connection-error-warning.d.ts +1 -1
- package/dist/spine/connection-error-warning.js +1 -1
- package/dist/spine/context.d.ts.map +1 -1
- package/dist/spine/context.js +4 -0
- package/dist/spine/context.js.map +1 -1
- package/dist/spine/contributions.d.ts +13 -13
- package/dist/spine/contributions.js +13 -13
- package/dist/spine/core-reckoners.d.ts.map +1 -1
- package/dist/spine/core-reckoners.js +2 -2
- package/dist/spine/core-reckoners.js.map +1 -1
- package/dist/spine/held-command-actions.d.ts +3 -0
- package/dist/spine/held-command-actions.d.ts.map +1 -1
- package/dist/spine/held-command-actions.js +12 -7
- package/dist/spine/held-command-actions.js.map +1 -1
- package/dist/spine/impact-point.d.ts.map +1 -1
- package/dist/spine/impact-point.js +6 -29
- package/dist/spine/impact-point.js.map +1 -1
- package/dist/spine/index.d.ts +5 -0
- package/dist/spine/index.d.ts.map +1 -1
- package/dist/spine/index.js +5 -0
- package/dist/spine/index.js.map +1 -1
- package/dist/spine/kepler-reckoning.d.ts +2 -2
- package/dist/spine/kepler-reckoning.d.ts.map +1 -1
- package/dist/spine/kepler-reckoning.js.map +1 -1
- package/dist/spine/kepler.d.ts +8 -6
- package/dist/spine/kepler.d.ts.map +1 -1
- package/dist/spine/kepler.js +3 -1
- package/dist/spine/kepler.js.map +1 -1
- package/dist/spine/lagrange.d.ts +6 -6
- package/dist/spine/lagrange.d.ts.map +1 -1
- package/dist/spine/lagrange.js.map +1 -1
- package/dist/spine/lifecycle.d.ts +14 -0
- package/dist/spine/lifecycle.d.ts.map +1 -1
- package/dist/spine/lifecycle.js.map +1 -1
- package/dist/spine/lock-scope.d.ts +11 -1
- package/dist/spine/lock-scope.d.ts.map +1 -1
- package/dist/spine/lock-scope.js.map +1 -1
- package/dist/spine/map-command.d.ts +3 -11
- package/dist/spine/map-command.d.ts.map +1 -1
- package/dist/spine/map-command.js +3 -11
- package/dist/spine/map-command.js.map +1 -1
- package/dist/spine/mod-settings.d.ts.map +1 -1
- package/dist/spine/mod-settings.js +1 -0
- package/dist/spine/mod-settings.js.map +1 -1
- package/dist/spine/never-reckonable.d.ts.map +1 -1
- package/dist/spine/never-reckonable.js +8 -6
- package/dist/spine/never-reckonable.js.map +1 -1
- package/dist/spine/orbit-patches.d.ts +16 -4
- package/dist/spine/orbit-patches.d.ts.map +1 -1
- package/dist/spine/orbit-patches.js +12 -5
- package/dist/spine/orbit-patches.js.map +1 -1
- package/dist/spine/orbit-trajectory.d.ts +60 -3
- package/dist/spine/orbit-trajectory.d.ts.map +1 -1
- package/dist/spine/orbit-trajectory.js +133 -40
- package/dist/spine/orbit-trajectory.js.map +1 -1
- package/dist/spine/orbital-solve.js +1 -1
- package/dist/spine/own-craft-vantage.d.ts.map +1 -1
- package/dist/spine/own-craft-vantage.js +1 -0
- package/dist/spine/own-craft-vantage.js.map +1 -1
- package/dist/spine/past-track.d.ts +7 -7
- package/dist/spine/past-track.js +7 -7
- package/dist/spine/phase-angle.d.ts +19 -0
- package/dist/spine/phase-angle.d.ts.map +1 -0
- package/dist/spine/phase-angle.js +47 -0
- package/dist/spine/phase-angle.js.map +1 -0
- package/dist/spine/powered-reckoning.js.map +1 -1
- package/dist/spine/processors.d.ts +4 -1
- package/dist/spine/processors.d.ts.map +1 -1
- package/dist/spine/processors.js.map +1 -1
- package/dist/spine/reckoners.d.ts +3 -6
- package/dist/spine/reckoners.d.ts.map +1 -1
- package/dist/spine/reckoners.js +3 -6
- package/dist/spine/reckoners.js.map +1 -1
- package/dist/spine/reference-frame.d.ts +14 -14
- package/dist/spine/reference-frame.d.ts.map +1 -1
- package/dist/spine/reference-frame.js +3 -64
- package/dist/spine/reference-frame.js.map +1 -1
- package/dist/spine/settings-registry.d.ts +17 -9
- package/dist/spine/settings-registry.d.ts.map +1 -1
- package/dist/spine/settings-registry.js.map +1 -1
- package/dist/spine/settings-tabs.d.ts +4 -3
- package/dist/spine/settings-tabs.d.ts.map +1 -1
- package/dist/spine/settings-tabs.js.map +1 -1
- package/dist/spine/target-range-reckoning.d.ts.map +1 -1
- package/dist/spine/target-range-reckoning.js.map +1 -1
- package/dist/spine/timeline-store.d.ts +3 -1
- package/dist/spine/timeline-store.d.ts.map +1 -1
- package/dist/spine/timeline-store.js +2 -2
- package/dist/spine/timeline-store.js.map +1 -1
- package/dist/spine/topic-ownership.d.ts +2 -2
- package/dist/spine/topic-ownership.js +2 -2
- package/dist/spine/uplink-clients.d.ts +4 -4
- package/dist/spine/uplink-clients.d.ts.map +1 -1
- package/dist/spine/uplink-clients.js +1 -0
- package/dist/spine/uplink-clients.js.map +1 -1
- package/dist/spine/use-body-states.d.ts +3 -7
- package/dist/spine/use-body-states.d.ts.map +1 -1
- package/dist/spine/use-body-states.js +3 -7
- package/dist/spine/use-body-states.js.map +1 -1
- package/dist/spine/use-command.d.ts.map +1 -1
- package/dist/spine/use-command.js +151 -109
- package/dist/spine/use-command.js.map +1 -1
- package/dist/spine/use-data-sources.d.ts +2 -5
- package/dist/spine/use-data-sources.d.ts.map +1 -1
- package/dist/spine/use-data-sources.js.map +1 -1
- package/dist/spine/use-late-telemetry-subscribe.d.ts.map +1 -1
- package/dist/spine/use-late-telemetry-subscribe.js +1 -0
- package/dist/spine/use-late-telemetry-subscribe.js.map +1 -1
- package/dist/spine/use-orbit-curve.d.ts +33 -0
- package/dist/spine/use-orbit-curve.d.ts.map +1 -0
- package/dist/spine/use-orbit-curve.js +28 -0
- package/dist/spine/use-orbit-curve.js.map +1 -0
- package/dist/spine/use-orbit-trajectory.d.ts +6 -1
- package/dist/spine/use-orbit-trajectory.d.ts.map +1 -1
- package/dist/spine/use-orbit-trajectory.js +44 -2
- package/dist/spine/use-orbit-trajectory.js.map +1 -1
- package/dist/spine/use-selected-vantage.d.ts.map +1 -1
- package/dist/spine/use-selected-vantage.js +1 -0
- package/dist/spine/use-selected-vantage.js.map +1 -1
- package/dist/spine/use-system-instant.d.ts +16 -0
- package/dist/spine/use-system-instant.d.ts.map +1 -0
- package/dist/spine/use-system-instant.js +20 -0
- package/dist/spine/use-system-instant.js.map +1 -0
- package/dist/spine/use-transmissions.d.ts.map +1 -1
- package/dist/spine/use-transmissions.js +1 -0
- package/dist/spine/use-transmissions.js.map +1 -1
- package/dist/spine/view-clock.d.ts +1 -1
- package/dist/spine/view-clock.d.ts.map +1 -1
- package/dist/spine/view-clock.js +13 -3
- package/dist/spine/view-clock.js.map +1 -1
- package/dist/system-instant.d.ts +16 -0
- package/dist/system-instant.d.ts.map +1 -0
- package/dist/system-instant.js +20 -0
- package/dist/system-instant.js.map +1 -0
- package/dist/testing/console-logger.d.ts +3 -3
- package/dist/testing/console-logger.js +3 -3
- package/dist/testing/fake-wall-clock.d.ts +4 -2
- package/dist/testing/fake-wall-clock.d.ts.map +1 -1
- package/dist/testing/fake-wall-clock.js +4 -2
- package/dist/testing/fake-wall-clock.js.map +1 -1
- package/dist/testing/install-act-gate-stretch.d.ts +9 -0
- package/dist/testing/install-act-gate-stretch.d.ts.map +1 -1
- package/dist/testing/install-act-gate-stretch.js +9 -0
- package/dist/testing/install-act-gate-stretch.js.map +1 -1
- package/dist/testing/install-real-test-host.d.ts +4 -1
- package/dist/testing/install-real-test-host.d.ts.map +1 -1
- package/dist/testing/install-real-test-host.js +2 -0
- package/dist/testing/install-real-test-host.js.map +1 -1
- package/dist/testing/memory-storage.d.ts +2 -3
- package/dist/testing/memory-storage.d.ts.map +1 -1
- package/dist/testing/memory-storage.js +6 -5
- package/dist/testing/memory-storage.js.map +1 -1
- package/dist/testing/mock-data-source.d.ts +2 -2
- package/dist/testing/render.d.ts +4 -2
- package/dist/testing/render.d.ts.map +1 -1
- package/dist/testing/render.js +4 -2
- package/dist/testing/render.js.map +1 -1
- package/dist/testing/stub-transport.d.ts +6 -0
- package/dist/testing/stub-transport.d.ts.map +1 -1
- package/dist/testing/stub-transport.js +64 -52
- package/dist/testing/stub-transport.js.map +1 -1
- package/dist/timeline.d.ts +14 -6
- package/dist/timeline.d.ts.map +1 -1
- package/dist/topic-fields.d.ts +1 -0
- package/dist/topic-fields.d.ts.map +1 -1
- package/dist/topic-fields.js.map +1 -1
- package/dist/topics.d.ts +42 -2
- package/dist/topics.d.ts.map +1 -1
- package/dist/topics.js +33 -24
- package/dist/topics.js.map +1 -1
- package/dist/unit-system/registry.d.ts +11 -0
- package/dist/unit-system/registry.d.ts.map +1 -1
- package/dist/unit-system/registry.js.map +1 -1
- package/dist/unit-system/value.d.ts +3 -0
- package/dist/unit-system/value.d.ts.map +1 -1
- package/dist/unit-system/value.js.map +1 -1
- package/dist/units.js +1 -1
- package/dist/uplink-externals.d.ts +9 -4
- package/dist/uplink-externals.d.ts.map +1 -1
- package/dist/uplink-externals.js +9 -4
- package/dist/uplink-externals.js.map +1 -1
- package/dist/uplink-manifest.d.ts +62 -16
- package/dist/uplink-manifest.d.ts.map +1 -1
- package/dist/uplink-manifest.js.map +1 -1
- package/package.json +4 -3
- package/src/__generated__/command-map.ts +140 -10
- package/src/__generated__/contract.ts +598 -429
- package/src/__generated__/error-codes.ts +76 -69
- package/src/__generated__/test-theme.ts +3 -0
- package/src/__generated__/topic-map.ts +92 -0
- package/src/__generated__/units.json +630 -52
- package/src/__generated__/units.ts +89 -47
- package/src/api/alarm-request.ts +7 -1
- package/src/api/contribution-slots.ts +95 -20
- package/src/api/coverage/CoverageMaskCache.ts +1 -1
- package/src/api/coverage-source.ts +3 -1
- package/src/api/framework-reads.ts +29 -0
- package/src/api/host.ts +13 -4
- package/src/api/index.ts +113 -14
- package/src/api/logger.ts +14 -2
- package/src/api/plot-layers.ts +72 -6
- package/src/api/plots.ts +19 -0
- package/src/api/registry.ts +11 -0
- package/src/api/settings/SettingsContext.tsx +17 -5
- package/src/api/settings/SettingsService.ts +3 -0
- package/src/api/settings/store.ts +3 -1
- package/src/api/slots.ts +97 -28
- package/src/api/station-brokers.ts +2 -1
- package/src/api/stock-bodies.ts +6 -0
- package/src/api/tiny-size.ts +6 -1
- package/src/api/tone.ts +7 -4
- package/src/api/transport.ts +13 -2
- package/src/api/types.ts +214 -154
- package/src/binary-frame.ts +26 -25
- package/src/client.ts +2 -0
- package/src/combine-readings.ts +8 -4
- package/src/command-delay.ts +6 -0
- package/src/compat-versions.ts +2 -2
- package/src/contract-enum-names.ts +2 -3
- package/src/enum-names.ts +5 -3
- package/src/envelope.ts +9 -1
- package/src/flight/BufferedDataSource.ts +4 -2
- package/src/flight/types.ts +3 -2
- package/src/frames/index.ts +29 -16
- package/src/index.ts +32 -0
- package/src/ksp-enum-names.ts +23 -8
- package/src/media/radio-support.ts +12 -3
- package/src/perf/PerfBudget.ts +8 -6
- package/src/reading.ts +20 -4
- package/src/spine/body-pose.ts +251 -0
- package/src/spine/capability-lock.ts +17 -4
- package/src/spine/catalogue-elements.ts +75 -0
- package/src/spine/celestial-facts.ts +10 -35
- package/src/spine/client-timeline.ts +10 -12
- package/src/spine/client.ts +127 -19
- package/src/spine/command-gate.ts +13 -11
- package/src/spine/command-group.ts +278 -0
- package/src/spine/comms-delay-reckoning.ts +2 -2
- package/src/spine/comms-journey.ts +29 -0
- package/src/spine/comms-path-geometry.ts +4 -4
- package/src/spine/connection-error-warning.ts +1 -1
- package/src/spine/context.tsx +4 -0
- package/src/spine/contributions.ts +13 -13
- package/src/spine/core-reckoners.ts +2 -5
- package/src/spine/held-command-actions.ts +18 -6
- package/src/spine/impact-point.ts +8 -35
- package/src/spine/index.ts +5 -0
- package/src/spine/kepler-reckoning.ts +2 -2
- package/src/spine/kepler.ts +9 -7
- package/src/spine/lagrange.ts +6 -6
- package/src/spine/lifecycle.ts +14 -0
- package/src/spine/lock-scope.ts +11 -1
- package/src/spine/map-command.ts +3 -11
- package/src/spine/mod-settings.ts +1 -0
- package/src/spine/never-reckonable.ts +8 -6
- package/src/spine/orbit-patches.ts +33 -6
- package/src/spine/orbit-trajectory.ts +172 -57
- package/src/spine/orbital-solve.ts +1 -1
- package/src/spine/own-craft-vantage.tsx +1 -0
- package/src/spine/past-track.ts +7 -7
- package/src/spine/phase-angle.ts +51 -0
- package/src/spine/powered-reckoning.ts +16 -16
- package/src/spine/processors.ts +4 -1
- package/src/spine/reckoners.ts +3 -6
- package/src/spine/reference-frame.ts +49 -115
- package/src/spine/settings-registry.ts +17 -9
- package/src/spine/settings-tabs.ts +4 -3
- package/src/spine/target-range-reckoning.ts +3 -3
- package/src/spine/timeline-store.ts +6 -1
- package/src/spine/topic-ownership.ts +2 -2
- package/src/spine/uplink-clients.ts +5 -4
- package/src/spine/use-body-states.ts +3 -7
- package/src/spine/use-command.ts +167 -125
- package/src/spine/use-data-sources.ts +2 -5
- package/src/spine/use-late-telemetry-subscribe.ts +1 -0
- package/src/spine/use-orbit-curve.ts +49 -0
- package/src/spine/use-orbit-trajectory.ts +54 -2
- package/src/spine/use-selected-vantage.ts +1 -0
- package/src/spine/use-system-instant.ts +20 -0
- package/src/spine/use-transmissions.ts +1 -0
- package/src/spine/view-clock.ts +20 -3
- package/src/system-instant.ts +20 -0
- package/src/testing/console-logger.ts +3 -3
- package/src/testing/fake-wall-clock.ts +4 -2
- package/src/testing/install-act-gate-stretch.ts +9 -0
- package/src/testing/install-real-test-host.ts +6 -1
- package/src/testing/memory-storage.ts +6 -5
- package/src/testing/mock-data-source.ts +2 -2
- package/src/testing/render.tsx +4 -2
- package/src/testing/stub-transport.ts +66 -52
- package/src/timeline.ts +14 -6
- package/src/topic-fields.ts +1 -0
- package/src/topics.ts +59 -26
- package/src/unit-system/registry.ts +11 -0
- package/src/unit-system/value.ts +3 -0
- package/src/units.ts +1 -1
- package/src/uplink-externals.ts +9 -4
- package/src/uplink-manifest.ts +62 -16
|
@@ -36,10 +36,11 @@ export interface StreamBinary {
|
|
|
36
36
|
meta: Meta;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* search
|
|
39
|
+
* Ask where a body is at each of a list of instants. Args for
|
|
40
|
+
* `system.bodies.statesAt`: where one body is at each of a list of instants,
|
|
41
|
+
* from the propagation provider in use on this install. The instants are the
|
|
42
|
+
* caller's own, such as the departure and arrival times a transfer search
|
|
43
|
+
* tries.
|
|
43
44
|
*
|
|
44
45
|
* The command centre is the sender's, taken from the connection the command
|
|
45
46
|
* arrives on; there is no field to name another.
|
|
@@ -144,14 +145,15 @@ export interface BodyState {
|
|
|
144
145
|
vz: Value<"m/s">;
|
|
145
146
|
}
|
|
146
147
|
/**
|
|
147
|
-
* `career.strategy.activate`'s
|
|
148
|
-
* fraction to activate it at.
|
|
149
|
-
* `StrategyConfig.Name` (e.g.
|
|
150
|
-
* `career.status` publishes for each
|
|
151
|
-
* client activates using the id it read.
|
|
152
|
-
* 0 to 1 slider fraction the strategy is
|
|
153
|
-
* science and reputation cost scales with
|
|
154
|
-
* slider ignores it and activates at its fixed
|
|
148
|
+
* Activate a strategy at a chosen commitment. `career.strategy.activate`'s
|
|
149
|
+
* args: the strategy's stable id plus the slider fraction to activate it at.
|
|
150
|
+
* `ActivateStrategyArgs.strategyId` is `StrategyConfig.Name` (e.g.
|
|
151
|
+
* `"OutsourceRnDStrategy"`): the same id `career.status` publishes for each
|
|
152
|
+
* strategy as `strategies[].id`, so a client activates using the id it read.
|
|
153
|
+
* `ActivateStrategyArgs.factor` is the 0 to 1 slider fraction the strategy is
|
|
154
|
+
* committed at (its up-front funds, science and reputation cost scales with
|
|
155
|
+
* it); a strategy with no factor slider ignores it and activates at its fixed
|
|
156
|
+
* factor.
|
|
155
157
|
*
|
|
156
158
|
* @category Command arguments
|
|
157
159
|
*/
|
|
@@ -165,8 +167,9 @@ export interface ActivateStrategyArgs {
|
|
|
165
167
|
factor: number;
|
|
166
168
|
}
|
|
167
169
|
/**
|
|
168
|
-
* `career.strategy.deactivate`'s args: the
|
|
169
|
-
* `StrategyConfig.Name` id (see
|
|
170
|
+
* Deactivate an active strategy. `career.strategy.deactivate`'s args: the
|
|
171
|
+
* strategy's stable `StrategyConfig.Name` id (see
|
|
172
|
+
* `ActivateStrategyArgs.strategyId`).
|
|
170
173
|
*
|
|
171
174
|
* @category Command arguments
|
|
172
175
|
*/
|
|
@@ -178,9 +181,9 @@ export interface DeactivateStrategyArgs {
|
|
|
178
181
|
strategyId: string;
|
|
179
182
|
}
|
|
180
183
|
/**
|
|
181
|
-
* `career.tech.unlock`'s args:
|
|
182
|
-
* `career.status` publishes for each
|
|
183
|
-
* deducts the node's science cost.
|
|
184
|
+
* Unlock a tech node, spending its science cost. `career.tech.unlock`'s args:
|
|
185
|
+
* the tech node's `techID`, the same id `career.status` publishes for each
|
|
186
|
+
* tech node as `tech.nodes[].id`. Unlocking deducts the node's science cost.
|
|
184
187
|
*
|
|
185
188
|
* @category Command arguments
|
|
186
189
|
*/
|
|
@@ -192,10 +195,11 @@ export interface UnlockTechArgs {
|
|
|
192
195
|
techId: string;
|
|
193
196
|
}
|
|
194
197
|
/**
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
198
|
+
* Accept, decline or cancel a contract. Args shared by
|
|
199
|
+
* `career.contract.accept`/`decline`/`cancel`: the contract's stable
|
|
200
|
+
* `ContractID` as a string, the same id `career.status` publishes for each
|
|
201
|
+
* contract as `contracts[].id`. Which of the three verbs is valid depends on
|
|
202
|
+
* the contract's current state (accept/decline require an offered contract,
|
|
199
203
|
* cancel an active one); an out-of-state request comes back
|
|
200
204
|
* `CommandErrorCode.ModeUnavailable`.
|
|
201
205
|
*
|
|
@@ -209,8 +213,9 @@ export interface ContractActionArgs {
|
|
|
209
213
|
contractId: string;
|
|
210
214
|
}
|
|
211
215
|
/**
|
|
212
|
-
* `career.facility.upgrade`'s args:
|
|
213
|
-
* name (e.g.
|
|
216
|
+
* Raise a Space Center facility by one tier. `career.facility.upgrade`'s args:
|
|
217
|
+
* the facility's `SpaceCenterFacility` enum name (e.g.
|
|
218
|
+
* `"VehicleAssemblyBuilding"`, `"LaunchPad"`), the same key
|
|
214
219
|
* `CareerFacilities`'s `facilities` map uses on the `career.facilities`
|
|
215
220
|
* channel (the buildings are not on `career.status`). Upgrading raises the
|
|
216
221
|
* facility one tier and deducts its upgrade cost from funds.
|
|
@@ -225,8 +230,9 @@ export interface UpgradeFacilityArgs {
|
|
|
225
230
|
facilityId: string;
|
|
226
231
|
}
|
|
227
232
|
/**
|
|
228
|
-
* `career.crew.hire`'s args: the
|
|
229
|
-
*
|
|
233
|
+
* Hire an applicant into the crew roster. `career.crew.hire`'s args: the
|
|
234
|
+
* applicant's `ProtoCrewMember.name`, the same id
|
|
235
|
+
* `spaceCenter.astronautComplex` publishes for each applicant as
|
|
230
236
|
* `applicants[].name`, so a client hires the applicant it read. Hiring debits
|
|
231
237
|
* the current recruit cost from funds and moves the applicant into the crew
|
|
232
238
|
* roster. An applicant that has left the pool since it was read (someone else
|
|
@@ -245,6 +251,7 @@ export interface HireApplicantArgs {
|
|
|
245
251
|
applicantName: string;
|
|
246
252
|
}
|
|
247
253
|
/**
|
|
254
|
+
* Fire a hired kerbal, returning them to the applicant pool.
|
|
248
255
|
* `career.crew.fire`'s args: a hired kerbal's `ProtoCrewMember.name`, the same
|
|
249
256
|
* id `spaceCenter.crewRoster` publishes for each roster entry. Firing costs
|
|
250
257
|
* nothing and returns the kerbal to the applicant pool, so it is reversible: a
|
|
@@ -293,10 +300,10 @@ export declare enum GameMode {
|
|
|
293
300
|
Unknown = 3
|
|
294
301
|
}
|
|
295
302
|
/**
|
|
296
|
-
* The `career.mode`
|
|
297
|
-
*
|
|
298
|
-
*
|
|
299
|
-
*
|
|
303
|
+
* The `career.mode` Topic payload: the active save's `GameMode`, as `{ "mode":
|
|
304
|
+
* <int> }`. The whole payload is `null` when no game is loaded (main menu, no
|
|
305
|
+
* save). Once a save is loaded the mode is always one of the four `GameMode`
|
|
306
|
+
* members.
|
|
300
307
|
*
|
|
301
308
|
* @category Career
|
|
302
309
|
*/
|
|
@@ -305,10 +312,10 @@ export interface CareerMode {
|
|
|
305
312
|
mode: GameMode;
|
|
306
313
|
}
|
|
307
314
|
/**
|
|
308
|
-
* The `career.status`
|
|
309
|
-
*
|
|
310
|
-
*
|
|
311
|
-
*
|
|
315
|
+
* The `career.status` Topic payload: the KSC and career-mode snapshot, in four
|
|
316
|
+
* groups (balances, contracts, strategies, tech). The space centre's buildings
|
|
317
|
+
* are not here: they are on `CareerFacilities`, which can be held on its own
|
|
318
|
+
* while this channel keeps arriving.
|
|
312
319
|
*
|
|
313
320
|
* **Three states.** The whole payload is `null` in a sandbox save, where there
|
|
314
321
|
* is no career at all. A non-null payload with a sub-group `null` means career
|
|
@@ -361,7 +368,7 @@ export interface CareerStatus {
|
|
|
361
368
|
meta: PayloadMeta;
|
|
362
369
|
}
|
|
363
370
|
/**
|
|
364
|
-
* The `career.facilities`
|
|
371
|
+
* The `career.facilities` Topic payload: the space centre's buildings, each
|
|
365
372
|
* with the tier it stands at and the ladder it stands on.
|
|
366
373
|
*
|
|
367
374
|
* **When it arrives.** A facility's tier count and prices are readable from
|
|
@@ -897,7 +904,7 @@ export interface ChannelEmissionReport {
|
|
|
897
904
|
* CommNet home nodes (KSC, Extra Ground Stations, Kerbal Konstructs sites) and
|
|
898
905
|
* crewed control-source vessels.
|
|
899
906
|
*
|
|
900
|
-
* The
|
|
907
|
+
* The Topic payload is a bare array of these entries, like
|
|
901
908
|
* `SpaceCenterPoiEntry`, one per centre, keyed by `CommandCentreEntry.id`.
|
|
902
909
|
*
|
|
903
910
|
* Each command centre is sent its own roster, the centres it knows of. A
|
|
@@ -993,7 +1000,7 @@ export interface CommandCentreEntry {
|
|
|
993
1000
|
* station whose node went away, a crewed vessel that lost its crew or was
|
|
994
1001
|
* destroyed or recovered.
|
|
995
1002
|
*
|
|
996
|
-
* The
|
|
1003
|
+
* The Topic payload is a bare array of these entries, one per remembered
|
|
997
1004
|
* centre that is currently off the roster, keyed by
|
|
998
1005
|
* `UnreachableCentreEntry.id`. A centre that comes back leaves this channel
|
|
999
1006
|
* and rejoins the roster, and a centre that has not been on the roster since
|
|
@@ -1445,9 +1452,11 @@ export interface CommcastMessageSendArgs {
|
|
|
1445
1452
|
author: CommcastAuthor;
|
|
1446
1453
|
}
|
|
1447
1454
|
/**
|
|
1448
|
-
* What `commcast.message.send
|
|
1449
|
-
*
|
|
1450
|
-
*
|
|
1455
|
+
* What `commcast.message.send`, the command that says a text message to a
|
|
1456
|
+
* group (its args are `CommcastMessageSendArgs`), did with a message: which
|
|
1457
|
+
* command centres it left for, and which it could not leave for. A centre is a
|
|
1458
|
+
* `commandCentre.roster` entry, a place commands are sent from. It says
|
|
1459
|
+
* nothing of arrival, which only each listener's acknowledgement does.
|
|
1451
1460
|
*
|
|
1452
1461
|
* @category Command results
|
|
1453
1462
|
* @categoryDescription Command results
|
|
@@ -1456,14 +1465,15 @@ export interface CommcastMessageSendArgs {
|
|
|
1456
1465
|
*/
|
|
1457
1466
|
export interface CommcastSendReceipt {
|
|
1458
1467
|
/**
|
|
1459
|
-
* Every centre the message left for, the speaker's own included,
|
|
1460
|
-
*
|
|
1468
|
+
* Every centre the message left for, the speaker's own included, sorted by id.
|
|
1469
|
+
* The same list its listeners read as the message's `to`.
|
|
1461
1470
|
*/
|
|
1462
1471
|
addressed: string[];
|
|
1463
1472
|
/**
|
|
1464
1473
|
* Every member it was meant for that no signal from the speaker could reach
|
|
1465
|
-
* when it was said,
|
|
1466
|
-
*
|
|
1474
|
+
* when it was said, sorted by id. The message was never sent to these centres,
|
|
1475
|
+
* so none of them will ever acknowledge it; to reach them, send it again later
|
|
1476
|
+
* naming them in `to`.
|
|
1467
1477
|
*/
|
|
1468
1478
|
unreached: string[];
|
|
1469
1479
|
}
|
|
@@ -1709,8 +1719,9 @@ export interface CommsConnectivity {
|
|
|
1709
1719
|
* The `comms.signal` payload: the active vessel's own reading of its link,
|
|
1710
1720
|
* from the elected comms backend. A strength from 0 to 1 whose meaning depends
|
|
1711
1721
|
* on the backend: stock CommNet reports a coarse fraction of the link's range,
|
|
1712
|
-
* RealAntennas how much headroom the link has over its data rate.
|
|
1713
|
-
*
|
|
1722
|
+
* RealAntennas how much headroom the link has over its data rate.
|
|
1723
|
+
* `CommsSignal.quantity` says which, so a reader names the figure correctly
|
|
1724
|
+
* and never compares two that are different quantities.
|
|
1714
1725
|
*
|
|
1715
1726
|
* Each command centre is sent its own, the newest reading to have reached it.
|
|
1716
1727
|
* A reading is of the vessel's whole path at one instant, so it reaches a
|
|
@@ -1736,6 +1747,13 @@ export interface CommsSignal {
|
|
|
1736
1747
|
*/
|
|
1737
1748
|
strength: Value<"ratio">;
|
|
1738
1749
|
/**
|
|
1750
|
+
* Which quantity `CommsSignal.strength` is: a fraction of the link's range, a
|
|
1751
|
+
* fraction of its data-rate headroom, or a stand-in where no link is modelled.
|
|
1752
|
+
* A strength worked out for a path carries the quantity its hops were stated
|
|
1753
|
+
* in, and `SignalQuantity.Unknown` where they disagree.
|
|
1754
|
+
*/
|
|
1755
|
+
quantity: SignalQuantity;
|
|
1756
|
+
/**
|
|
1739
1757
|
* Whether `CommsSignal.strength` is worked out and not measured. A command
|
|
1740
1758
|
* centre is sent the strength of the path it believes in. Where the active
|
|
1741
1759
|
* vessel's radio last reported on that very path, the reported strength is
|
|
@@ -1767,6 +1785,35 @@ export interface CommsSignal {
|
|
|
1767
1785
|
measuredPath?: CommsMeasuredPath | null;
|
|
1768
1786
|
}
|
|
1769
1787
|
/**
|
|
1788
|
+
* Which quantity a signal strength from 0 to 1 is. Two backends that both
|
|
1789
|
+
* report "0 to 1" are not saying the same thing, and a figure is only
|
|
1790
|
+
* comparable with another of the same quantity.
|
|
1791
|
+
*
|
|
1792
|
+
* @category Comms
|
|
1793
|
+
*/
|
|
1794
|
+
export declare enum SignalQuantity {
|
|
1795
|
+
/**
|
|
1796
|
+
* Nothing says which: the hops of a worked-out path disagree, or a read
|
|
1797
|
+
* failed.
|
|
1798
|
+
*/
|
|
1799
|
+
Unknown = 0,
|
|
1800
|
+
/**
|
|
1801
|
+
* How far inside its range the link is, 0 at the edge of range and 1 at no
|
|
1802
|
+
* distance: stock CommNet's.
|
|
1803
|
+
*/
|
|
1804
|
+
RangeFraction = 1,
|
|
1805
|
+
/**
|
|
1806
|
+
* How much headroom the link has over its data rate, 0 where the lowest rate
|
|
1807
|
+
* fails and 1 at the top of the ladder: RealAntennas'.
|
|
1808
|
+
*/
|
|
1809
|
+
DataRateHeadroom = 2,
|
|
1810
|
+
/**
|
|
1811
|
+
* A stand-in: the save models no comms network, so there is no link to grade
|
|
1812
|
+
* and the figure is 1.
|
|
1813
|
+
*/
|
|
1814
|
+
NoModel = 3
|
|
1815
|
+
}
|
|
1816
|
+
/**
|
|
1770
1817
|
* A path a vessel's radio reported a strength on, as the nodes it runs
|
|
1771
1818
|
* through. It is the path the game had the vessel on when the radio was read,
|
|
1772
1819
|
* which a command centre may not believe in.
|
|
@@ -1898,6 +1945,11 @@ export interface CommsHop {
|
|
|
1898
1945
|
*/
|
|
1899
1946
|
strength?: Value<"ratio"> | null;
|
|
1900
1947
|
/**
|
|
1948
|
+
* Which quantity `CommsHop.strength` is, as the comms backend stated it for
|
|
1949
|
+
* this hop. Null exactly when `CommsHop.strength` is.
|
|
1950
|
+
*/
|
|
1951
|
+
quantity?: SignalQuantity | null;
|
|
1952
|
+
/**
|
|
1901
1953
|
* The provider-namespaced extension bag: how the elected comms backend carries
|
|
1902
1954
|
* per-hop facts this shared shape does not declare (see
|
|
1903
1955
|
* ProviderExtensionBagAttribute for the whole mechanism). A RealAntennas
|
|
@@ -1917,20 +1969,25 @@ export interface CommsHop {
|
|
|
1917
1969
|
extensions?: ProviderExtensions;
|
|
1918
1970
|
}
|
|
1919
1971
|
/**
|
|
1920
|
-
* The `comms.path` payload: the active vessel's
|
|
1921
|
-
*
|
|
1972
|
+
* The `comms.path` payload: the route the active vessel's samples take to the
|
|
1973
|
+
* receiving command centre. Ordered hops from the active vessel to the
|
|
1922
1974
|
* receiving centre itself, or, for the home centre, to whichever ground
|
|
1923
1975
|
* station the signal reaches first. An empty `CommsPath.hops` means the centre
|
|
1924
1976
|
* knows of no path that is open all the way now, which includes a path that
|
|
1925
1977
|
* would have the signal wait at a relay (`comms.route` says where it would
|
|
1926
1978
|
* wait).
|
|
1927
1979
|
*
|
|
1928
|
-
* Each command centre is sent its own, and no other centre's.
|
|
1929
|
-
*
|
|
1930
|
-
*
|
|
1931
|
-
*
|
|
1932
|
-
*
|
|
1933
|
-
*
|
|
1980
|
+
* Each command centre is sent its own, and no other centre's. Where the game
|
|
1981
|
+
* routes the vessel's samples to the centre (at home, the vessel's own path to
|
|
1982
|
+
* the ground), the hops are that route, the one `comms.delay` and the arrival
|
|
1983
|
+
* of every sample are timed over. Where the game states no route, they are
|
|
1984
|
+
* worked out from that centre's contact plan, which is made of what the centre
|
|
1985
|
+
* has heard of each craft, so a hop changes here only once the news of it has
|
|
1986
|
+
* reached the centre: a relay that drops out is still on the path until its
|
|
1987
|
+
* silence has crossed to you. Predictions (`comms.route`, held commands,
|
|
1988
|
+
* cancel deadlines) are always the plan's. Nothing is sent until the centre
|
|
1989
|
+
* has a contact plan or a game route, so the topic is absent, not empty, for
|
|
1990
|
+
* the first moments of a session.
|
|
1934
1991
|
*
|
|
1935
1992
|
* Not reckonable: a route changes in steps (a relay drops below the horizon
|
|
1936
1993
|
* and the whole chain re-solves to different hops), and every reckoning basis
|
|
@@ -2056,13 +2113,14 @@ export declare enum CommsDelaySource {
|
|
|
2056
2113
|
* `connected:true`.
|
|
2057
2114
|
*
|
|
2058
2115
|
* Each command centre is sent its own, and no other centre's. It is the
|
|
2059
|
-
* light-time of the active vessel's path
|
|
2060
|
-
*
|
|
2061
|
-
*
|
|
2062
|
-
*
|
|
2063
|
-
*
|
|
2064
|
-
*
|
|
2065
|
-
*
|
|
2116
|
+
* light-time of the active vessel's path that centre is sent on `comms.path`,
|
|
2117
|
+
* so the two always agree. Where the game routes the vessel's samples to the
|
|
2118
|
+
* centre (at home, the vessel's own path to the ground), that path is the
|
|
2119
|
+
* game's route and this is the delay the samples arrive by. Wherever the game
|
|
2120
|
+
* states no route, it is the path the centre's own plan has, worked out from
|
|
2121
|
+
* what the centre has heard of each craft, so the figure moves only once the
|
|
2122
|
+
* news that moves it has reached the centre. A zero that is a setting (delay
|
|
2123
|
+
* switched off, or a save with no comms network) is sent at once.
|
|
2066
2124
|
*
|
|
2067
2125
|
* @category Comms
|
|
2068
2126
|
*/
|
|
@@ -2207,6 +2265,14 @@ export interface CommsContactPair {
|
|
|
2207
2265
|
*/
|
|
2208
2266
|
windows: CommsContactWindow[];
|
|
2209
2267
|
/**
|
|
2268
|
+
* The stretches in which either end could turn an idle dish to the other and
|
|
2269
|
+
* carry a message, in time order: the dish has no contact on its own aim then,
|
|
2270
|
+
* the turned dish would close the link, and the other end could already
|
|
2271
|
+
* receive. A message held at the turning node may use one; nothing else does.
|
|
2272
|
+
* Empty when no dish would be turned or the backend turns none.
|
|
2273
|
+
*/
|
|
2274
|
+
retargetWindows: CommsRetargetWindow[];
|
|
2275
|
+
/**
|
|
2210
2276
|
* True while either end was last heard of with its orbit still changing. It is
|
|
2211
2277
|
* reckoned on the orbit it reported mid-burn, which it has since left, so
|
|
2212
2278
|
* these windows are a rough guide until its next report.
|
|
@@ -2223,6 +2289,35 @@ export interface CommsContactWindow {
|
|
|
2223
2289
|
openUt?: Value<"ut"> | null;
|
|
2224
2290
|
/** When contact ends, or `null` when it is still open at the pair's horizon. */
|
|
2225
2291
|
closeUt?: Value<"ut"> | null;
|
|
2292
|
+
/**
|
|
2293
|
+
* The dish on the pair's `CommsContactPair.a` end that carries this stretch of
|
|
2294
|
+
* contact, as `"<nodeId>#<partPersistentId>/<ordinal>"`, or absent when that
|
|
2295
|
+
* end has no steered dish on it.
|
|
2296
|
+
*/
|
|
2297
|
+
fromDish?: string;
|
|
2298
|
+
/**
|
|
2299
|
+
* The dish on the pair's `CommsContactPair.b` end that carries this stretch,
|
|
2300
|
+
* or absent.
|
|
2301
|
+
*/
|
|
2302
|
+
toDish?: string;
|
|
2303
|
+
}
|
|
2304
|
+
/**
|
|
2305
|
+
* A stretch in which a node could turn an idle dish to a peer to carry a
|
|
2306
|
+
* message.
|
|
2307
|
+
*
|
|
2308
|
+
* @category Comms
|
|
2309
|
+
*/
|
|
2310
|
+
export interface CommsRetargetWindow {
|
|
2311
|
+
/** The node that would turn, in the `commandCentre.roster` vocabulary. */
|
|
2312
|
+
node: string;
|
|
2313
|
+
/** The dish it would turn, as `"<nodeId>#<partPersistentId>/<ordinal>"`. */
|
|
2314
|
+
dish: string;
|
|
2315
|
+
/** The node it would turn the dish to. */
|
|
2316
|
+
peer: string;
|
|
2317
|
+
/** When the turn may start. */
|
|
2318
|
+
openUt: Value<"ut">;
|
|
2319
|
+
/** When the turned dish must be back on its own aim. */
|
|
2320
|
+
closeUt: Value<"ut">;
|
|
2226
2321
|
}
|
|
2227
2322
|
/**
|
|
2228
2323
|
* The `comms.degrade` payload: how degraded the active vessel's link home is
|
|
@@ -2437,7 +2532,13 @@ export interface UplinkResendRequest {
|
|
|
2437
2532
|
laneSeq: Value<"count">;
|
|
2438
2533
|
}
|
|
2439
2534
|
/**
|
|
2440
|
-
*
|
|
2535
|
+
* The reply to `system.uplink.cancel` (`UplinkCancelRequest`, stop a delayed
|
|
2536
|
+
* command still on its way to the craft) and to `system.uplink.resend`
|
|
2537
|
+
* (`UplinkResendRequest`, send a held or overdue command again). It reports
|
|
2538
|
+
* what the command centre that asked did, not what happened at the craft; that
|
|
2539
|
+
* arrives later as `comms.journey` reports (`CommsJourneyEvent`). A lane is
|
|
2540
|
+
* the ordered run of delayed commands one centre sends to one craft, and a
|
|
2541
|
+
* lane number is a command's place in it (`PendingUplink.laneSeq`).
|
|
2441
2542
|
*
|
|
2442
2543
|
* @category Command results
|
|
2443
2544
|
*/
|
|
@@ -2697,7 +2798,8 @@ export interface ControlFrameOption {
|
|
|
2697
2798
|
targetFrameSelected?: boolean | null;
|
|
2698
2799
|
}
|
|
2699
2800
|
/**
|
|
2700
|
-
* `system.frame.set`'s args: the
|
|
2801
|
+
* Put the view in a different reference frame. `system.frame.set`'s args: the
|
|
2802
|
+
* frame to put the view in.
|
|
2701
2803
|
*
|
|
2702
2804
|
* It names the two head bodies, not the sets: where `ControlFrame` reports
|
|
2703
2805
|
* `PrimaryBodies` and `SecondaryBodies`, the mod that owns the view works out
|
|
@@ -2860,6 +2962,21 @@ export interface CrashFlightStats {
|
|
|
2860
2962
|
liftOff: boolean;
|
|
2861
2963
|
}
|
|
2862
2964
|
/**
|
|
2965
|
+
* The payload for the `crash.hasRecent` channel: one flag saying a notable
|
|
2966
|
+
* crash is on record for the current save, published beside `CrashReport` on
|
|
2967
|
+
* `crash.lastCrash`. It is true from the first crash a flight records and is
|
|
2968
|
+
* not published before one.
|
|
2969
|
+
*
|
|
2970
|
+
* @category Flights
|
|
2971
|
+
*/
|
|
2972
|
+
export interface CrashRecent {
|
|
2973
|
+
/**
|
|
2974
|
+
* True when a notable crash is on record, so `crash.lastCrash` has a report to
|
|
2975
|
+
* read.
|
|
2976
|
+
*/
|
|
2977
|
+
recent: boolean;
|
|
2978
|
+
}
|
|
2979
|
+
/**
|
|
2863
2980
|
* What a kerbal's place on the books is, as the dashboard means it: this
|
|
2864
2981
|
* contract's own vocabulary, not a mirror of any game enum.
|
|
2865
2982
|
*
|
|
@@ -3110,6 +3227,27 @@ export interface CommandRequest<Args> {
|
|
|
3110
3227
|
sentAt: number;
|
|
3111
3228
|
}
|
|
3112
3229
|
/**
|
|
3230
|
+
* Several commands the client sends as one message: they travel together,
|
|
3231
|
+
* arrive whole or not at all, are refused together, and run in order within a
|
|
3232
|
+
* single physics tick. Each member is an ordinary `CommandRequest` with its
|
|
3233
|
+
* own `requestId`, and each is answered under that id as if it had been sent
|
|
3234
|
+
* alone.
|
|
3235
|
+
*
|
|
3236
|
+
* Every member must be a delayed command addressed to the same craft and sent
|
|
3237
|
+
* from the same command centre. A group that breaks either rule, or is empty,
|
|
3238
|
+
* is refused whole. If any member is refused for any reason, none is sent.
|
|
3239
|
+
*
|
|
3240
|
+
* @category Stream messages
|
|
3241
|
+
*/
|
|
3242
|
+
export interface CommandGroupRequest {
|
|
3243
|
+
/** The frame type, always `"command-group"`. */
|
|
3244
|
+
type: "command-group";
|
|
3245
|
+
/** An id the client chooses for the group as a whole. */
|
|
3246
|
+
groupId: string;
|
|
3247
|
+
/** The commands, in the order they run. */
|
|
3248
|
+
members: CommandRequest<unknown>[];
|
|
3249
|
+
}
|
|
3250
|
+
/**
|
|
3113
3251
|
* The server's reply to a `CommandRequest`, matched to it by
|
|
3114
3252
|
* `CommandResponse.requestId`.
|
|
3115
3253
|
*
|
|
@@ -3643,8 +3781,10 @@ export interface FleetSilenceEntry {
|
|
|
3643
3781
|
predictionGraceSeconds?: Value<"s"> | null;
|
|
3644
3782
|
}
|
|
3645
3783
|
/**
|
|
3646
|
-
* The fleet-wide silence roster on `fleet.silence`: every vessel the
|
|
3647
|
-
* holds a reckoning for, in one payload.
|
|
3784
|
+
* The fleet-wide silence roster on `fleet.silence`: every vessel still in the
|
|
3785
|
+
* game that the tracker holds a reckoning for, in one payload. A vessel that
|
|
3786
|
+
* has been destroyed leaves the roster; its last `silence.<guid>.state` says
|
|
3787
|
+
* it was lost as `destroyed`.
|
|
3648
3788
|
*
|
|
3649
3789
|
* A per-vessel topic can only be read by something that already knows which
|
|
3650
3790
|
* vessel to ask for. This one static topic lists every vessel, so a consumer
|
|
@@ -3661,8 +3801,8 @@ export interface FleetSilenceEntry {
|
|
|
3661
3801
|
*/
|
|
3662
3802
|
export interface FleetSilence {
|
|
3663
3803
|
/**
|
|
3664
|
-
* One entry per vessel
|
|
3665
|
-
*
|
|
3804
|
+
* One entry per vessel still in the game, in no guaranteed order. Never null;
|
|
3805
|
+
* empty when there are none.
|
|
3666
3806
|
*/
|
|
3667
3807
|
vessels: FleetSilenceEntry[];
|
|
3668
3808
|
}
|
|
@@ -3692,7 +3832,7 @@ export declare enum FlightEndReason {
|
|
|
3692
3832
|
Destroyed = 3
|
|
3693
3833
|
}
|
|
3694
3834
|
/**
|
|
3695
|
-
* The `flight.current`
|
|
3835
|
+
* The `flight.current` Topic payload: a UT-indexed value, delivered
|
|
3696
3836
|
* latest-wins and delayed like every `vessel.*` channel. It says which flight
|
|
3697
3837
|
* is active and what phase it is in, for the vessel gonogo is reporting as
|
|
3698
3838
|
* active. That is the vessel the game is flying, with one exception: a kerbal
|
|
@@ -3729,9 +3869,9 @@ export interface FlightCurrent {
|
|
|
3729
3869
|
phase: Situation;
|
|
3730
3870
|
}
|
|
3731
3871
|
/**
|
|
3732
|
-
* The `flight.started`
|
|
3733
|
-
*
|
|
3734
|
-
*
|
|
3872
|
+
* The `flight.started` Topic payload: a reliable, ordered, delayed event sent
|
|
3873
|
+
* when a new flight begins. A flight is new when its vessel id has not been
|
|
3874
|
+
* started before in this game session (a launch, or a first switch onto a
|
|
3735
3875
|
* vessel), and every vessel active just after a revert or a quickload starts a
|
|
3736
3876
|
* new flight, even one with the same id.
|
|
3737
3877
|
*
|
|
@@ -3760,7 +3900,7 @@ export interface FlightStarted {
|
|
|
3760
3900
|
ut: Value<"ut">;
|
|
3761
3901
|
}
|
|
3762
3902
|
/**
|
|
3763
|
-
* The `flight.ended`
|
|
3903
|
+
* The `flight.ended` Topic payload: a reliable, ordered, delayed event sent
|
|
3764
3904
|
* once per flight when it stops being trackable: recovered, crashed, destroyed
|
|
3765
3905
|
* or reverted. It shares the delay class of `crash.lastCrash` and
|
|
3766
3906
|
* `recovery.lastSummary`, so an end that a rewind discards before its
|
|
@@ -3792,13 +3932,13 @@ export interface FlightEnded {
|
|
|
3792
3932
|
ut: Value<"ut">;
|
|
3793
3933
|
}
|
|
3794
3934
|
/**
|
|
3795
|
-
* The `flight.vesselChanged`
|
|
3796
|
-
*
|
|
3797
|
-
*
|
|
3798
|
-
*
|
|
3799
|
-
*
|
|
3800
|
-
*
|
|
3801
|
-
*
|
|
3935
|
+
* The `flight.vesselChanged` Topic payload: a reliable, ordered, delayed event
|
|
3936
|
+
* sent whenever the active vessel changes after the first observation of the
|
|
3937
|
+
* session (docking, undocking, a tracking-station reselect). Switching away
|
|
3938
|
+
* from a vessel that is still flying does not end its flight, and switching
|
|
3939
|
+
* back to a known one does not start a new one. Switching onto a vessel for
|
|
3940
|
+
* the first time also sends `FlightStarted`. Going on EVA does not change the
|
|
3941
|
+
* active vessel (see `FlightCurrent`).
|
|
3802
3942
|
*
|
|
3803
3943
|
* @category Flights
|
|
3804
3944
|
*/
|
|
@@ -3818,10 +3958,11 @@ export interface FlightVesselChanged {
|
|
|
3818
3958
|
ut: Value<"ut">;
|
|
3819
3959
|
}
|
|
3820
3960
|
/**
|
|
3821
|
-
* `ksp.revertToEditor`'s args,
|
|
3822
|
-
*
|
|
3823
|
-
* case-insensitive) rather than the
|
|
3824
|
-
*
|
|
3961
|
+
* Revert the flight back into the VAB or SPH. `ksp.revertToEditor`'s args,
|
|
3962
|
+
* which editor the flight reverts back into. `RevertToEditorArgs.editor` is a
|
|
3963
|
+
* small opaque string (`"vab"` or `"sph"`, case-insensitive) rather than the
|
|
3964
|
+
* KSP `EditorFacility` enum; an unrecognised value fails with
|
|
3965
|
+
* `CommandErrorCode.Range` before the game is ever touched.
|
|
3825
3966
|
*
|
|
3826
3967
|
* `ksp.revertToLaunch`, `ksp.toTrackingStation`, `ksp.toSpaceCenter` and
|
|
3827
3968
|
* `ksp.recover` take no args (they operate on the current flight / active
|
|
@@ -3837,9 +3978,10 @@ export interface RevertToEditorArgs {
|
|
|
3837
3978
|
editor: string;
|
|
3838
3979
|
}
|
|
3839
3980
|
/**
|
|
3840
|
-
* `ksp.switchVessel`'s args: the
|
|
3841
|
-
*
|
|
3842
|
-
*
|
|
3981
|
+
* Switch the flight to another tracked vessel. `ksp.switchVessel`'s args: the
|
|
3982
|
+
* stable vessel id (`vessel.id.ToString()`, the same id
|
|
3983
|
+
* `SetTargetArgs.vesselId` uses), never a roster array index. An empty id
|
|
3984
|
+
* fails with `CommandErrorCode.NotFound` before the game is ever touched.
|
|
3843
3985
|
* Works from the flight scene, where it changes the active vessel, and from
|
|
3844
3986
|
* the Space Center and the Tracking Station, where it saves and then loads the
|
|
3845
3987
|
* vessel's flight. Refused with `CommandErrorCode.WrongScene` from the editors
|
|
@@ -3913,6 +4055,7 @@ export interface SetFlyByWireArgs {
|
|
|
3913
4055
|
enabled: boolean;
|
|
3914
4056
|
}
|
|
3915
4057
|
/**
|
|
4058
|
+
* Drive the held control axes of the fly-by-wire override.
|
|
3916
4059
|
* `vessel.control.setAxes`'s args: a partial update of the held fly-by-wire
|
|
3917
4060
|
* override. Every field is nullable, and only the fields you set change their
|
|
3918
4061
|
* held value, so one axis can be driven on its own without disturbing the
|
|
@@ -3962,8 +4105,8 @@ export interface SetControlAxesArgs {
|
|
|
3962
4105
|
rollTrim?: number;
|
|
3963
4106
|
}
|
|
3964
4107
|
/**
|
|
3965
|
-
* The `game.dlc`
|
|
3966
|
-
*
|
|
4108
|
+
* The `game.dlc` Topic payload: which KSP expansions ("DLC") are installed. A
|
|
4109
|
+
* fact about the install, independent of scene, so a widget can tell "the
|
|
3967
4110
|
* player has no DLC" from "the DLC is present but nothing is deployed yet"
|
|
3968
4111
|
* (deployed science, for instance, needs Breaking Ground).
|
|
3969
4112
|
*
|
|
@@ -3977,8 +4120,8 @@ export interface SetControlAxesArgs {
|
|
|
3977
4120
|
*/
|
|
3978
4121
|
export interface GameDlc {
|
|
3979
4122
|
/**
|
|
3980
|
-
* Whether the Breaking Ground expansion
|
|
3981
|
-
*
|
|
4123
|
+
* Whether the Breaking Ground expansion is installed: deployed science,
|
|
4124
|
+
* robotics and surface features.
|
|
3982
4125
|
*/
|
|
3983
4126
|
breakingGround: boolean;
|
|
3984
4127
|
/**
|
|
@@ -4483,8 +4626,8 @@ export interface OrbitPayloadMeta {
|
|
|
4483
4626
|
quality: Quality;
|
|
4484
4627
|
}
|
|
4485
4628
|
/**
|
|
4486
|
-
* Where one Making History mission objective stands
|
|
4487
|
-
*
|
|
4629
|
+
* Where one Making History mission objective stands. Gonogo works this out
|
|
4630
|
+
* from the mission's progress: KSP itself keeps no per-objective state.
|
|
4488
4631
|
*
|
|
4489
4632
|
* On the wire it is an integer ordinal.
|
|
4490
4633
|
*
|
|
@@ -4494,8 +4637,8 @@ export declare enum MissionObjectiveState {
|
|
|
4494
4637
|
/** The mission has not reached this objective yet. */
|
|
4495
4638
|
Pending = 0,
|
|
4496
4639
|
/**
|
|
4497
|
-
* The mission is on this objective now: it is the mission
|
|
4498
|
-
* the mission is still running.
|
|
4640
|
+
* The mission is on this objective now: it is the step the mission is on now
|
|
4641
|
+
* and the mission is still running.
|
|
4499
4642
|
*/
|
|
4500
4643
|
Active = 1,
|
|
4501
4644
|
/**
|
|
@@ -4525,11 +4668,11 @@ export interface MissionObjectiveEntry {
|
|
|
4525
4668
|
state?: MissionObjectiveState | null;
|
|
4526
4669
|
}
|
|
4527
4670
|
/**
|
|
4528
|
-
* The `missions.active`
|
|
4671
|
+
* The `missions.active` Topic payload: the Making History mission that is
|
|
4529
4672
|
* running, or has just ended, in the current game. The whole payload is `null`
|
|
4530
4673
|
* when there is no mission game, when no mission has been set up, or when the
|
|
4531
|
-
* expansion is not installed; read `game.dlc` to tell
|
|
4532
|
-
* others.
|
|
4674
|
+
* expansion is not installed; read the `game.dlc` Topic (`GameDlc`) to tell
|
|
4675
|
+
* the last from the others.
|
|
4533
4676
|
*
|
|
4534
4677
|
* A mission that has ended stays in the payload with `MissionStatus.finished`
|
|
4535
4678
|
* true until the game leaves the mission, so a client can show the outcome.
|
|
@@ -4571,11 +4714,11 @@ export interface MissionStatus {
|
|
|
4571
4714
|
* The mission's objectives in flow order. A node of the mission that nothing
|
|
4572
4715
|
* leads to is left out. Empty when it has none.
|
|
4573
4716
|
*/
|
|
4574
|
-
objectives
|
|
4717
|
+
objectives: MissionObjectiveEntry[];
|
|
4575
4718
|
}
|
|
4576
4719
|
/**
|
|
4577
|
-
* The `settings.<uplink>`
|
|
4578
|
-
*
|
|
4720
|
+
* The `settings.<uplink>` Topic payload: one Uplink's host mod's own settings,
|
|
4721
|
+
* as the Uplink read them.
|
|
4579
4722
|
*
|
|
4580
4723
|
* **One topic per Uplink**, declared only for an Uplink that implements
|
|
4581
4724
|
* IModSettingsSource; its entry on `system.uplinks` says so with
|
|
@@ -4599,7 +4742,11 @@ export interface ModSettingsModel {
|
|
|
4599
4742
|
* `ModSettingsModel.settings` is then empty.
|
|
4600
4743
|
*/
|
|
4601
4744
|
failure?: string | null;
|
|
4602
|
-
/**
|
|
4745
|
+
/**
|
|
4746
|
+
* The payload's provenance. Its `source` is always `"game"`: these settings
|
|
4747
|
+
* describe the game install, never a craft, and like the rest of this Topic
|
|
4748
|
+
* they are always current and never delayed.
|
|
4749
|
+
*/
|
|
4603
4750
|
meta: PayloadMeta;
|
|
4604
4751
|
}
|
|
4605
4752
|
/**
|
|
@@ -4660,10 +4807,11 @@ export interface WriteModSettingArgs {
|
|
|
4660
4807
|
value: string;
|
|
4661
4808
|
}
|
|
4662
4809
|
/**
|
|
4663
|
-
*
|
|
4664
|
-
*
|
|
4665
|
-
*
|
|
4666
|
-
* `
|
|
4810
|
+
* Take no args: stage, clear the target, recover, revert to launch, or go to
|
|
4811
|
+
* the Tracking Station or Space Center. The empty args shape, for the core
|
|
4812
|
+
* commands that operate on the current flight or the active vessel and so take
|
|
4813
|
+
* nothing: `vessel.control.stage`, `vessel.target.clear`, `ksp.recover`,
|
|
4814
|
+
* `ksp.revertToLaunch`, `ksp.toTrackingStation` and `ksp.toSpaceCenter`.
|
|
4667
4815
|
*
|
|
4668
4816
|
* **Send no `args` at all for these six.** The SDK's `send()` takes no second
|
|
4669
4817
|
* argument for a command typed this way, and anything you do put on the wire
|
|
@@ -4692,9 +4840,11 @@ export interface NoCommandArgs {
|
|
|
4692
4840
|
* (`VesselOrbit.referenceBodyIndex` among them). `OrbitPatch.referenceBody`
|
|
4693
4841
|
* and `OrbitPatch.closestEncounterBody` are the body's name, for display.
|
|
4694
4842
|
*
|
|
4695
|
-
*
|
|
4696
|
-
*
|
|
4697
|
-
*
|
|
4843
|
+
* `OrbitPatch.lan`, `OrbitPatch.argPe` and `OrbitPatch.meanAnomalyAtEpoch` are
|
|
4844
|
+
* null when KSP's value for them is undefined, as `VesselOrbit.lan` and
|
|
4845
|
+
* `VesselOrbit.argPe` are, and the patch is still sent. A patch with a null
|
|
4846
|
+
* element cannot be propagated, so a reader that propagates one declines to
|
|
4847
|
+
* rather than substituting a value.
|
|
4698
4848
|
*
|
|
4699
4849
|
* @category Orbits and trajectories
|
|
4700
4850
|
*/
|
|
@@ -4706,20 +4856,20 @@ export interface OrbitPatch {
|
|
|
4706
4856
|
/** Inclination in degrees, KSP's `Orbit.inclination`. */
|
|
4707
4857
|
inc: Value<"°">;
|
|
4708
4858
|
/**
|
|
4709
|
-
* Longitude of the ascending node in degrees, KSP's `Orbit.LAN`.
|
|
4859
|
+
* Longitude of the ascending node in degrees, KSP's `Orbit.LAN`. Null when
|
|
4710
4860
|
* KSP's value is undefined (NaN).
|
|
4711
4861
|
*/
|
|
4712
|
-
lan
|
|
4862
|
+
lan?: Value<"°"> | null;
|
|
4713
4863
|
/**
|
|
4714
|
-
* Argument of periapsis in degrees, KSP's `Orbit.argumentOfPeriapsis`.
|
|
4864
|
+
* Argument of periapsis in degrees, KSP's `Orbit.argumentOfPeriapsis`. Null
|
|
4715
4865
|
* when KSP's value is undefined (NaN).
|
|
4716
4866
|
*/
|
|
4717
|
-
argPe
|
|
4867
|
+
argPe?: Value<"°"> | null;
|
|
4718
4868
|
/**
|
|
4719
4869
|
* Mean anomaly at `OrbitPatch.epoch` in radians, KSP's
|
|
4720
|
-
* `Orbit.meanAnomalyAtEpoch`.
|
|
4870
|
+
* `Orbit.meanAnomalyAtEpoch`. Null when KSP's value is undefined (NaN).
|
|
4721
4871
|
*/
|
|
4722
|
-
meanAnomalyAtEpoch
|
|
4872
|
+
meanAnomalyAtEpoch?: Value<"rad"> | null;
|
|
4723
4873
|
/**
|
|
4724
4874
|
* The universal time at which `OrbitPatch.meanAnomalyAtEpoch` holds, KSP's
|
|
4725
4875
|
* `Orbit.epoch`.
|
|
@@ -4942,154 +5092,24 @@ export interface PartActions {
|
|
|
4942
5092
|
meta: PayloadMeta;
|
|
4943
5093
|
}
|
|
4944
5094
|
/**
|
|
4945
|
-
*
|
|
4946
|
-
*
|
|
4947
|
-
*
|
|
4948
|
-
*
|
|
4949
|
-
*
|
|
4950
|
-
* @category Parts
|
|
4951
|
-
*/
|
|
4952
|
-
export interface SolarPanelEntry {
|
|
4953
|
-
/**
|
|
4954
|
-
* The part's display title (KSP's `Part.partInfo.title`), or its internal name
|
|
4955
|
-
* when it has no part info.
|
|
4956
|
-
*/
|
|
4957
|
-
partName?: string | null;
|
|
4958
|
-
/**
|
|
4959
|
-
* The part's `Part.flightID` as a string: unique per part for the life of the
|
|
4960
|
-
* flight, so it tells apart symmetric parts that share a name. Null when the
|
|
4961
|
-
* part has no flight id yet.
|
|
4962
|
-
*/
|
|
4963
|
-
partId?: string | null;
|
|
4964
|
-
/**
|
|
4965
|
-
* The panel's deploy state, KSP's `ModuleDeployablePart.DeployState` name
|
|
4966
|
-
* as-is: `"RETRACTED"`, `"EXTENDING"`, `"EXTENDED"`, `"RETRACTING"` or
|
|
4967
|
-
* `"BROKEN"`.
|
|
4968
|
-
*/
|
|
4969
|
-
deployState?: string | null;
|
|
4970
|
-
/**
|
|
4971
|
-
* The panel's current electric-charge output (KSP's `flowRate`), in EC per
|
|
4972
|
-
* second. This is what counts toward `PartsPower.totalProductionEc`.
|
|
4973
|
-
*/
|
|
4974
|
-
flowRate?: Value<"units/s"> | null;
|
|
4975
|
-
/**
|
|
4976
|
-
* The panel's rated charge rate from its part configuration (KSP's
|
|
4977
|
-
* `chargeRate`), in EC per second, before sun exposure and distance are
|
|
4978
|
-
* applied.
|
|
4979
|
-
*/
|
|
4980
|
-
chargeRate?: Value<"units/s"> | null;
|
|
4981
|
-
/**
|
|
4982
|
-
* KSP's `ModuleDeployableSolarPanel.sunAOA`: despite the name and the declared
|
|
4983
|
-
* unit, a sun-exposure factor from 0 (no sunlight on the panel) to 1 (facing
|
|
4984
|
-
* the sun squarely), not an angle.
|
|
4985
|
-
*/
|
|
4986
|
-
sunAOA?: Value<"°"> | null;
|
|
4987
|
-
}
|
|
4988
|
-
/**
|
|
4989
|
-
* One electric-charge store in the `parts.power` payload's `batteries` array:
|
|
4990
|
-
* every part with an `ElectricCharge` capacity above zero, so command pods and
|
|
4991
|
-
* probe cores appear here as well as batteries. Every field is `null` when its
|
|
4992
|
-
* value could not be read.
|
|
4993
|
-
*
|
|
4994
|
-
* @category Parts
|
|
4995
|
-
*/
|
|
4996
|
-
export interface BatteryEntry {
|
|
4997
|
-
/**
|
|
4998
|
-
* The part's display title (KSP's `Part.partInfo.title`), or its internal name
|
|
4999
|
-
* when it has no part info.
|
|
5000
|
-
*/
|
|
5001
|
-
partName?: string | null;
|
|
5002
|
-
/**
|
|
5003
|
-
* The part's `Part.flightID` as a string, the same join key as
|
|
5004
|
-
* `SolarPanelEntry.partId`. Null when the part has no flight id yet.
|
|
5005
|
-
*/
|
|
5006
|
-
partId?: string | null;
|
|
5007
|
-
/** Electric charge currently held in this part, in EC. */
|
|
5008
|
-
current?: Value<"units"> | null;
|
|
5009
|
-
/** This part's electric-charge capacity, in EC. */
|
|
5010
|
-
max?: Value<"units"> | null;
|
|
5011
|
-
}
|
|
5012
|
-
/**
|
|
5013
|
-
* One electric-charge-producing converter in the `parts.power` payload's
|
|
5014
|
-
* `fuelCells` array: every `ModuleResourceConverter` whose outputs include
|
|
5015
|
-
* `ElectricCharge`, one entry per module. Every field is `null` when its value
|
|
5016
|
-
* could not be read.
|
|
5017
|
-
*
|
|
5018
|
-
* @category Parts
|
|
5019
|
-
*/
|
|
5020
|
-
export interface FuelCellEntry {
|
|
5021
|
-
/**
|
|
5022
|
-
* The part's display title (KSP's `Part.partInfo.title`), or its internal name
|
|
5023
|
-
* when it has no part info.
|
|
5024
|
-
*/
|
|
5025
|
-
partName?: string | null;
|
|
5026
|
-
/**
|
|
5027
|
-
* The part's `Part.flightID` as a string, the same join key as
|
|
5028
|
-
* `SolarPanelEntry.partId`. Null when the part has no flight id yet.
|
|
5029
|
-
*/
|
|
5030
|
-
partId?: string | null;
|
|
5031
|
-
/** True when the converter is switched on (KSP's `IsActivated`). */
|
|
5032
|
-
active?: boolean | null;
|
|
5033
|
-
/**
|
|
5034
|
-
* The converter's own status text as KSP displays it
|
|
5035
|
-
* (`ModuleResourceConverter.status`). Free text, not a fixed vocabulary.
|
|
5036
|
-
*/
|
|
5037
|
-
status?: string | null;
|
|
5038
|
-
}
|
|
5039
|
-
/**
|
|
5040
|
-
* One engine alternator module in the `parts.power` payload's `alternators`
|
|
5041
|
-
* array. Every field is `null` when its value could not be read.
|
|
5042
|
-
*
|
|
5043
|
-
* @category Parts
|
|
5044
|
-
*/
|
|
5045
|
-
export interface AlternatorEntry {
|
|
5046
|
-
/**
|
|
5047
|
-
* The part's display title (KSP's `Part.partInfo.title`), or its internal name
|
|
5048
|
-
* when it has no part info.
|
|
5049
|
-
*/
|
|
5050
|
-
partName?: string | null;
|
|
5051
|
-
/**
|
|
5052
|
-
* The part's `Part.flightID` as a string, the same join key as
|
|
5053
|
-
* `SolarPanelEntry.partId`. Null when the part has no flight id yet.
|
|
5054
|
-
*/
|
|
5055
|
-
partId?: string | null;
|
|
5056
|
-
/**
|
|
5057
|
-
* The alternator's current electric-charge output (KSP's
|
|
5058
|
-
* `ModuleAlternator.outputRate`), in EC per second.
|
|
5059
|
-
*/
|
|
5060
|
-
outputRate?: Value<"units/s"> | null;
|
|
5061
|
-
}
|
|
5062
|
-
/**
|
|
5063
|
-
* The `parts.power` channel payload: the active vessel's electric-charge
|
|
5064
|
-
* production surface (solar panels, batteries, fuel cells, engine alternators,
|
|
5065
|
-
* and a rolled-up production total). A single object, or `null` when there is
|
|
5066
|
-
* no active vessel or it carries none of the four kinds of part.
|
|
5067
|
-
*
|
|
5068
|
-
* When the payload is present all four arrays are present too, each possibly
|
|
5069
|
-
* empty; they are typed nullable so a client stays safe if one is ever
|
|
5070
|
-
* missing.
|
|
5095
|
+
* The `parts.power` Topic payload: the active vessel's rolled-up
|
|
5096
|
+
* electric-charge production. A single object, or `null` when there is no
|
|
5097
|
+
* active vessel or it carries no solar panel, battery, electric-charge
|
|
5098
|
+
* converter or alternator. The parts themselves are itemised on
|
|
5099
|
+
* `vessel.parts`.
|
|
5071
5100
|
*
|
|
5072
5101
|
* @category Parts
|
|
5073
5102
|
*/
|
|
5074
5103
|
export interface PartsPower {
|
|
5075
|
-
/** Every deployable solar panel module on the vessel. */
|
|
5076
|
-
solarPanels?: SolarPanelEntry[] | null;
|
|
5077
|
-
/** Every part that stores electric charge. */
|
|
5078
|
-
batteries?: BatteryEntry[] | null;
|
|
5079
|
-
/** Every converter module that produces electric charge. */
|
|
5080
|
-
fuelCells?: FuelCellEntry[] | null;
|
|
5081
|
-
/** Every engine alternator module on the vessel. */
|
|
5082
|
-
alternators?: AlternatorEntry[] | null;
|
|
5083
5104
|
/**
|
|
5084
5105
|
* Total electric-charge production in EC per second: the sum of every solar
|
|
5085
|
-
* panel's
|
|
5086
|
-
*
|
|
5087
|
-
* finite total could be read.
|
|
5106
|
+
* panel's live flow rate and every alternator's live output rate. Fuel cells
|
|
5107
|
+
* are not included. Null when no finite total could be read.
|
|
5088
5108
|
*/
|
|
5089
5109
|
totalProductionEc?: Value<"units/s"> | null;
|
|
5090
5110
|
}
|
|
5091
5111
|
/**
|
|
5092
|
-
* One entry in the `robotics.servos`
|
|
5112
|
+
* One entry in the `robotics.servos` Topic payload, a single Breaking Ground
|
|
5093
5113
|
* robotic servo on the active vessel. The payload is a bare array of these, or
|
|
5094
5114
|
* `null` when there is no active vessel or it carries no servo; read
|
|
5095
5115
|
* `robotics.available` to tell those two apart.
|
|
@@ -5190,7 +5210,7 @@ export interface ServoEntry {
|
|
|
5190
5210
|
maxTorque?: Value<"kN"> | null;
|
|
5191
5211
|
}
|
|
5192
5212
|
/**
|
|
5193
|
-
* The `robotics.available`
|
|
5213
|
+
* The `robotics.available` Topic payload: a single object (or `null` when
|
|
5194
5214
|
* there is no active vessel) whose one field states whether the active vessel
|
|
5195
5215
|
* carries any Breaking Ground robotic servo. It is its own Topic because the
|
|
5196
5216
|
* `robotics.servos` array is `null` both when the vessel has no robotic parts
|
|
@@ -5227,6 +5247,11 @@ export interface RoboticsAvailability {
|
|
|
5227
5247
|
* unknown type publishes nothing. The four breakdown lists can be empty while
|
|
5228
5248
|
* the totals are present, if KSP's dialog could not be read for them.
|
|
5229
5249
|
*
|
|
5250
|
+
* A figure the save cannot award is `null`, never 0: funds and science are
|
|
5251
|
+
* null in a Sandbox save (and funds in a Science save). A Sandbox recovery
|
|
5252
|
+
* still produces a record, with the craft, where it came down, its parts and
|
|
5253
|
+
* its crew, and nothing awarded.
|
|
5254
|
+
*
|
|
5230
5255
|
* @category Flights
|
|
5231
5256
|
*/
|
|
5232
5257
|
export interface RecoveryReport {
|
|
@@ -5244,23 +5269,27 @@ export interface RecoveryReport {
|
|
|
5244
5269
|
* multiplier for landing precision.
|
|
5245
5270
|
*/
|
|
5246
5271
|
recoveryFactor: string;
|
|
5247
|
-
/** Science this recovery earned, as KSP's recovery dialog totals it. */
|
|
5248
|
-
scienceEarned: Value<"science">;
|
|
5249
5272
|
/**
|
|
5250
|
-
*
|
|
5251
|
-
* with no science (Sandbox).
|
|
5273
|
+
* Science this recovery earned, as KSP's recovery dialog totals it. Null in a
|
|
5274
|
+
* save with no science (Sandbox).
|
|
5275
|
+
*/
|
|
5276
|
+
scienceEarned?: Value<"science"> | null;
|
|
5277
|
+
/**
|
|
5278
|
+
* The career's science balance as the recovery dialog reports it. Null in a
|
|
5279
|
+
* save with no science (Sandbox).
|
|
5252
5280
|
*/
|
|
5253
|
-
totalScience
|
|
5281
|
+
totalScience?: Value<"science"> | null;
|
|
5254
5282
|
/**
|
|
5255
5283
|
* Funds this recovery earned, after the recovery factor and any strategy
|
|
5256
|
-
* modifiers KSP applies to a recovery.
|
|
5284
|
+
* modifiers KSP applies to a recovery. Null in a save with no funds (Science
|
|
5285
|
+
* or Sandbox).
|
|
5257
5286
|
*/
|
|
5258
|
-
fundsEarned
|
|
5287
|
+
fundsEarned?: Value<"funds"> | null;
|
|
5259
5288
|
/**
|
|
5260
|
-
* The career's funds balance as the recovery dialog reports it.
|
|
5289
|
+
* The career's funds balance as the recovery dialog reports it. Null in a save
|
|
5261
5290
|
* with no funds (Science or Sandbox).
|
|
5262
5291
|
*/
|
|
5263
|
-
totalFunds
|
|
5292
|
+
totalFunds?: Value<"funds"> | null;
|
|
5264
5293
|
/**
|
|
5265
5294
|
* Reputation this recovery earned, after any strategy modifiers KSP applies.
|
|
5266
5295
|
* Show it only when `RecoveryReport.displayReputation` is true.
|
|
@@ -5328,19 +5357,22 @@ export interface RecoveryPartEntry {
|
|
|
5328
5357
|
partTitle: string;
|
|
5329
5358
|
/** How many parts are in this group. At least 1. */
|
|
5330
5359
|
count: Value<"count">;
|
|
5331
|
-
/**
|
|
5332
|
-
|
|
5360
|
+
/**
|
|
5361
|
+
* The recovered dry value of one part in the group, excluding its resources.
|
|
5362
|
+
* Null in a save with no funds.
|
|
5363
|
+
*/
|
|
5364
|
+
partValue?: Value<"funds"> | null;
|
|
5333
5365
|
/**
|
|
5334
5366
|
* The recovered value of the resources the group's parts held, summed over the
|
|
5335
|
-
* group.
|
|
5367
|
+
* group. Null in a save with no funds.
|
|
5336
5368
|
*/
|
|
5337
|
-
resourcesValue
|
|
5369
|
+
resourcesValue?: Value<"funds"> | null;
|
|
5338
5370
|
/**
|
|
5339
5371
|
* The group's recovered dry value: `RecoveryPartEntry.partValue` times
|
|
5340
5372
|
* `RecoveryPartEntry.count`. Does not include
|
|
5341
|
-
* `RecoveryPartEntry.resourcesValue`.
|
|
5373
|
+
* `RecoveryPartEntry.resourcesValue`. Null in a save with no funds.
|
|
5342
5374
|
*/
|
|
5343
|
-
totalValue
|
|
5375
|
+
totalValue?: Value<"funds"> | null;
|
|
5344
5376
|
}
|
|
5345
5377
|
/**
|
|
5346
5378
|
* One recovered-resource group: an entry of
|
|
@@ -5377,17 +5409,35 @@ export interface RecoveryCrewEntry {
|
|
|
5377
5409
|
trait: string;
|
|
5378
5410
|
/** Whether the kerbal is a tourist, who earns no experience. */
|
|
5379
5411
|
isTourist: boolean;
|
|
5380
|
-
/**
|
|
5381
|
-
|
|
5412
|
+
/**
|
|
5413
|
+
* Experience points this flight added. Null in a save that awards no
|
|
5414
|
+
* experience (Sandbox).
|
|
5415
|
+
*/
|
|
5416
|
+
xpGained?: Value<"count"> | null;
|
|
5382
5417
|
/**
|
|
5383
5418
|
* How many experience levels this flight added: `RecoveryCrewEntry.newLevel`
|
|
5384
|
-
* minus the level before.
|
|
5419
|
+
* minus the level before. Null in a save that awards no experience (Sandbox).
|
|
5385
5420
|
*/
|
|
5386
|
-
levelsGained
|
|
5421
|
+
levelsGained?: Value<"count"> | null;
|
|
5387
5422
|
/** The kerbal's experience level after this flight, 0 to 5 in stock. */
|
|
5388
5423
|
newLevel: Value<"count">;
|
|
5389
5424
|
}
|
|
5390
5425
|
/**
|
|
5426
|
+
* The payload for the `recovery.hasRecent` channel: one flag saying a vessel
|
|
5427
|
+
* recovery is on record for the current save, published beside
|
|
5428
|
+
* `RecoveryReport` on `recovery.lastSummary`. It is true from the first
|
|
5429
|
+
* recovery of a real craft and is not published before one.
|
|
5430
|
+
*
|
|
5431
|
+
* @category Flights
|
|
5432
|
+
*/
|
|
5433
|
+
export interface RecoveryRecent {
|
|
5434
|
+
/**
|
|
5435
|
+
* True when a recovery is on record, so `recovery.lastSummary` has a summary
|
|
5436
|
+
* to read.
|
|
5437
|
+
*/
|
|
5438
|
+
recent: boolean;
|
|
5439
|
+
}
|
|
5440
|
+
/**
|
|
5391
5441
|
* The `ksp.revertAvailability` Topic payload: whether the two stock in-flight
|
|
5392
5442
|
* revert actions are available right now, so a widget can enable its Revert to
|
|
5393
5443
|
* Launch and Revert to Editor controls exactly when KSP's own pause menu shows
|
|
@@ -5416,28 +5466,47 @@ export interface RevertAvailability {
|
|
|
5416
5466
|
canRevertToLaunch: boolean;
|
|
5417
5467
|
}
|
|
5418
5468
|
/**
|
|
5419
|
-
*
|
|
5420
|
-
*
|
|
5421
|
-
*
|
|
5469
|
+
* Drive a hinge or rotation servo to an angle. Args for
|
|
5470
|
+
* `robotics.servo.setAngle`: the absolute angle a hinge or rotation servo is
|
|
5471
|
+
* to drive to, keyed by the part's `ServoSetAngleArgs.partId`.
|
|
5472
|
+
* `ServoSetAngleArgs.partId` is the same `flightID` string `parts.robotics`
|
|
5422
5473
|
* publishes on each servo entry, so a widget sends back the exact id it
|
|
5423
|
-
* displays. A
|
|
5424
|
-
*
|
|
5425
|
-
* `CommandErrorCode.
|
|
5474
|
+
* displays. A piston has no angle and a rotor no target: a `setAngle` aimed at
|
|
5475
|
+
* either fails with `CommandResult.errorCode`
|
|
5476
|
+
* `CommandErrorCode.CapabilityMismatch`.
|
|
5426
5477
|
*
|
|
5427
5478
|
* @category Command arguments
|
|
5428
5479
|
*/
|
|
5429
|
-
export interface
|
|
5480
|
+
export interface ServoSetAngleArgs {
|
|
5430
5481
|
/**
|
|
5431
5482
|
* The part's `flightID.ToString()`: the id the read side stamps on each
|
|
5432
5483
|
* `parts.robotics` entry.
|
|
5433
5484
|
*/
|
|
5434
5485
|
partId: string;
|
|
5435
|
-
/**
|
|
5436
|
-
|
|
5486
|
+
/** The absolute target angle. */
|
|
5487
|
+
degrees: number;
|
|
5488
|
+
}
|
|
5489
|
+
/**
|
|
5490
|
+
* Drive a piston to an extension. Args for `robotics.servo.setExtension`: the
|
|
5491
|
+
* absolute extension a piston is to drive to, keyed by the part's
|
|
5492
|
+
* `ServoSetExtensionArgs.partId`. A hinge or rotation servo has no extension
|
|
5493
|
+
* and a rotor no target: a `setExtension` aimed at one fails with
|
|
5494
|
+
* `CommandResult.errorCode` `CommandErrorCode.CapabilityMismatch`.
|
|
5495
|
+
*
|
|
5496
|
+
* @category Command arguments
|
|
5497
|
+
*/
|
|
5498
|
+
export interface ServoSetExtensionArgs {
|
|
5499
|
+
/**
|
|
5500
|
+
* The part's `flightID.ToString()`: the id the read side stamps on each
|
|
5501
|
+
* `parts.robotics` entry.
|
|
5502
|
+
*/
|
|
5503
|
+
partId: string;
|
|
5504
|
+
/** The absolute target extension. */
|
|
5505
|
+
metres: number;
|
|
5437
5506
|
}
|
|
5438
5507
|
/**
|
|
5439
|
-
*
|
|
5440
|
-
* (`robotics.servo.setMotor`/`setLock` and
|
|
5508
|
+
* Switch a robotics servo or rotor motor or lock on or off. Args shared by
|
|
5509
|
+
* every robotics boolean actuation (`robotics.servo.setMotor`/`setLock` and
|
|
5441
5510
|
* `robotics.rotor.setMotor`/`setLock`): an absolute state to apply, never a
|
|
5442
5511
|
* toggle, like every other actuation command (see `SetEnabledArgs`). Keyed by
|
|
5443
5512
|
* `ServoSetEnabledArgs.partId`, the `flightID` string `parts.robotics`
|
|
@@ -5460,25 +5529,51 @@ export interface ServoSetEnabledArgs {
|
|
|
5460
5529
|
enabled: boolean;
|
|
5461
5530
|
}
|
|
5462
5531
|
/**
|
|
5463
|
-
* Args for
|
|
5464
|
-
*
|
|
5465
|
-
* value to apply, keyed by `RotorSetValueArgs.partId`. The bounded ones
|
|
5466
|
-
* (torque 0 to 100, brake 0 to 200) are range-checked; a value out of range
|
|
5467
|
-
* fails with `CommandErrorCode.Range`.
|
|
5532
|
+
* Set a rotor's rpm cap. Args for `robotics.rotor.setRpmLimit`: the absolute
|
|
5533
|
+
* rpm cap to apply, keyed by `RotorSetRpmLimitArgs.partId`.
|
|
5468
5534
|
*
|
|
5469
5535
|
* @category Command arguments
|
|
5470
5536
|
*/
|
|
5471
|
-
export interface
|
|
5537
|
+
export interface RotorSetRpmLimitArgs {
|
|
5472
5538
|
/**
|
|
5473
5539
|
* The part's `flightID.ToString()`: the id the read side stamps on each
|
|
5474
5540
|
* `parts.robotics` entry.
|
|
5475
5541
|
*/
|
|
5476
5542
|
partId: string;
|
|
5543
|
+
/** The rpm cap to apply, in revolutions per minute. */
|
|
5544
|
+
rpm: number;
|
|
5545
|
+
}
|
|
5546
|
+
/**
|
|
5547
|
+
* Set a rotor's torque limit. Args for `robotics.rotor.setTorqueLimit`: the
|
|
5548
|
+
* absolute torque limit to apply, keyed by `RotorSetTorqueLimitArgs.partId`. A
|
|
5549
|
+
* value outside 0 to 100 fails with `CommandErrorCode.Range`.
|
|
5550
|
+
*
|
|
5551
|
+
* @category Command arguments
|
|
5552
|
+
*/
|
|
5553
|
+
export interface RotorSetTorqueLimitArgs {
|
|
5477
5554
|
/**
|
|
5478
|
-
* The
|
|
5479
|
-
*
|
|
5555
|
+
* The part's `flightID.ToString()`: the id the read side stamps on each
|
|
5556
|
+
* `parts.robotics` entry.
|
|
5480
5557
|
*/
|
|
5481
|
-
|
|
5558
|
+
partId: string;
|
|
5559
|
+
/** The torque limit as a percentage of the rotor's maximum torque, 0 to 100. */
|
|
5560
|
+
percent: number;
|
|
5561
|
+
}
|
|
5562
|
+
/**
|
|
5563
|
+
* Set a rotor's brake strength. Args for `robotics.rotor.setBrake`: the
|
|
5564
|
+
* absolute brake strength to apply, keyed by `RotorSetBrakeArgs.partId`. A
|
|
5565
|
+
* value outside 0 to 200 fails with `CommandErrorCode.Range`.
|
|
5566
|
+
*
|
|
5567
|
+
* @category Command arguments
|
|
5568
|
+
*/
|
|
5569
|
+
export interface RotorSetBrakeArgs {
|
|
5570
|
+
/**
|
|
5571
|
+
* The part's `flightID.ToString()`: the id the read side stamps on each
|
|
5572
|
+
* `parts.robotics` entry.
|
|
5573
|
+
*/
|
|
5574
|
+
partId: string;
|
|
5575
|
+
/** The brake strength as KSP's brake percentage, 0 to 200. */
|
|
5576
|
+
percent: number;
|
|
5482
5577
|
}
|
|
5483
5578
|
/**
|
|
5484
5579
|
* Args for `robotics.rotor.reverse`: flips the rotor's spin direction. It is
|
|
@@ -5999,13 +6094,13 @@ export interface ScetAddressableTopic {
|
|
|
5999
6094
|
topic: string;
|
|
6000
6095
|
}
|
|
6001
6096
|
/**
|
|
6002
|
-
*
|
|
6003
|
-
*
|
|
6004
|
-
* experiment is named by
|
|
6005
|
-
* `flightID.ToString()`, the same id
|
|
6006
|
-
* experiment entry. It is looked up
|
|
6007
|
-
* array index. An empty or unknown
|
|
6008
|
-
* `CommandErrorCode.NotFound`.
|
|
6097
|
+
* Deploy or transmit a science experiment on a part. Args shared by every
|
|
6098
|
+
* science-experiment actuation command (`science.experiment.deploy` and
|
|
6099
|
+
* `science.experiment.transmit`): the experiment is named by
|
|
6100
|
+
* `ExperimentActionArgs.partId`, the part's `flightID.ToString()`, the same id
|
|
6101
|
+
* `science.instruments` carries on each experiment entry. It is looked up
|
|
6102
|
+
* among the active vessel's parts, never by array index. An empty or unknown
|
|
6103
|
+
* `ExperimentActionArgs.partId` fails with `CommandErrorCode.NotFound`.
|
|
6009
6104
|
*
|
|
6010
6105
|
* @category Command arguments
|
|
6011
6106
|
*/
|
|
@@ -6052,7 +6147,7 @@ export interface ScienceTransmission {
|
|
|
6052
6147
|
dataAmount: Value<"Mit">;
|
|
6053
6148
|
}
|
|
6054
6149
|
/**
|
|
6055
|
-
* One entry in the `science.experiments`
|
|
6150
|
+
* One entry in the `science.experiments` Topic payload: a single stored
|
|
6056
6151
|
* science result on the active vessel, held either by the science module that
|
|
6057
6152
|
* collected it or by a container part. The channel payload is a bare array of
|
|
6058
6153
|
* these (`ExperimentEntry[]`) or `null`, never a wrapper object. The whole
|
|
@@ -6164,7 +6259,7 @@ export interface ExperimentEntry {
|
|
|
6164
6259
|
extensions?: ProviderExtensions;
|
|
6165
6260
|
}
|
|
6166
6261
|
/**
|
|
6167
|
-
* One entry in the `science.instruments`
|
|
6262
|
+
* One entry in the `science.instruments` Topic payload: a single
|
|
6168
6263
|
* `ModuleScienceExperiment` on the active vessel, as an inventory and status
|
|
6169
6264
|
* row keyed by `InstrumentEntry.partId` (the part's KSP `flightID`).
|
|
6170
6265
|
*
|
|
@@ -6175,8 +6270,8 @@ export interface ExperimentEntry {
|
|
|
6175
6270
|
* rerunnable, resettable, collectable) an operator needs to decide what to run
|
|
6176
6271
|
* next.
|
|
6177
6272
|
*
|
|
6178
|
-
* The
|
|
6179
|
-
*
|
|
6273
|
+
* The Topic payload is a bare array (`InstrumentEntry[]`) or `null` when there
|
|
6274
|
+
* is no active vessel or it carries no experiment module. Every field is
|
|
6180
6275
|
* nullable, and is `null` whenever the raw value is absent.
|
|
6181
6276
|
*
|
|
6182
6277
|
* @category Science
|
|
@@ -6243,11 +6338,11 @@ export interface InstrumentEntry {
|
|
|
6243
6338
|
extensions?: ProviderExtensions;
|
|
6244
6339
|
}
|
|
6245
6340
|
/**
|
|
6246
|
-
* One entry in the `science.lab`
|
|
6247
|
-
*
|
|
6248
|
-
*
|
|
6249
|
-
*
|
|
6250
|
-
*
|
|
6341
|
+
* One entry in the `science.lab` Topic payload: a Mobile Processing Lab (KSP's
|
|
6342
|
+
* `ModuleScienceLab`) on the active vessel. The channel payload is a bare
|
|
6343
|
+
* array (`LabEntry[]`) or `null` when there is no active vessel or it carries
|
|
6344
|
+
* no lab. Every field is nullable, and is `null` whenever the raw value is
|
|
6345
|
+
* absent or non-finite.
|
|
6251
6346
|
*
|
|
6252
6347
|
* @category Science
|
|
6253
6348
|
*/
|
|
@@ -6317,10 +6412,10 @@ export interface LabEntry {
|
|
|
6317
6412
|
extensions?: ProviderExtensions;
|
|
6318
6413
|
}
|
|
6319
6414
|
/**
|
|
6320
|
-
* One entry in the `deployed.bases`
|
|
6321
|
-
* deployed-science experiment (`ModuleGroundExperiment`). The
|
|
6322
|
-
*
|
|
6323
|
-
*
|
|
6415
|
+
* One entry in the `deployed.bases` Topic payload: a Breaking Ground
|
|
6416
|
+
* deployed-science experiment (`ModuleGroundExperiment`). The Topic payload is
|
|
6417
|
+
* a bare array (`DeployedEntry[]`) or `null` when no loaded vessel carries a
|
|
6418
|
+
* deployed experiment (including an install without Breaking Ground).
|
|
6324
6419
|
*
|
|
6325
6420
|
* Unlike the `science.*` channels, `deployed.bases` covers every loaded
|
|
6326
6421
|
* vessel, not just the active one: a deployed cluster is its own ground
|
|
@@ -6469,11 +6564,11 @@ export declare enum DeployedPowerState {
|
|
|
6469
6564
|
NotConnected = 4
|
|
6470
6565
|
}
|
|
6471
6566
|
/**
|
|
6472
|
-
* One entry in the `science.sensors`
|
|
6567
|
+
* One entry in the `science.sensors` Topic payload: a single
|
|
6473
6568
|
* environmental-sensor module (`ModuleEnviroSensor`: thermometer, barometer,
|
|
6474
6569
|
* gravioli detector, accelerometer, and any modded sensor sharing the module)
|
|
6475
|
-
* on the active vessel. The
|
|
6476
|
-
*
|
|
6570
|
+
* on the active vessel. The Topic payload is a bare array (`SensorEntry[]`) or
|
|
6571
|
+
* `null` when there is no active vessel or it carries no sensor module.
|
|
6477
6572
|
*
|
|
6478
6573
|
* One entry per sensor module, with `SensorEntry.type` carrying the raw
|
|
6479
6574
|
* `SensorType` enum name (`TEMP`/`PRES`/`GRAV`/`ACC`/...) as a string, so
|
|
@@ -6509,18 +6604,17 @@ export interface SensorEntry {
|
|
|
6509
6604
|
active?: boolean | null;
|
|
6510
6605
|
}
|
|
6511
6606
|
/**
|
|
6512
|
-
* One entry in the `science.experimentBreakdown`
|
|
6513
|
-
*
|
|
6514
|
-
*
|
|
6515
|
-
*
|
|
6516
|
-
*
|
|
6517
|
-
* summed across them.
|
|
6607
|
+
* One entry in the `science.experimentBreakdown` Topic payload: a per-subject
|
|
6608
|
+
* rollup of the stored science results that `science.experiments` lists one
|
|
6609
|
+
* row per result. One row per distinct subject id: several stored results for
|
|
6610
|
+
* the same subject (for example two crew reports from the same biome) collapse
|
|
6611
|
+
* into one entry with `ExperimentBreakdownEntry.dataMits` summed across them.
|
|
6518
6612
|
*
|
|
6519
|
-
* The
|
|
6520
|
-
*
|
|
6521
|
-
*
|
|
6522
|
-
*
|
|
6523
|
-
*
|
|
6613
|
+
* The Topic payload is a bare array (`ExperimentBreakdownEntry[]`) or `null`,
|
|
6614
|
+
* never a wrapper object. The whole array is `null` when there is no active
|
|
6615
|
+
* vessel or the vessel holds no stored science data; there is no separate
|
|
6616
|
+
* empty-array state. Every field is nullable, and is `null` whenever the raw
|
|
6617
|
+
* value is absent or non-finite.
|
|
6524
6618
|
*
|
|
6525
6619
|
* `ExperimentBreakdownEntry.biome` and `ExperimentBreakdownEntry.situation`
|
|
6526
6620
|
* are parsed from the subject id by KSP's
|
|
@@ -6583,12 +6677,12 @@ export interface ExperimentBreakdownEntry {
|
|
|
6583
6677
|
extensions?: ProviderExtensions;
|
|
6584
6678
|
}
|
|
6585
6679
|
/**
|
|
6586
|
-
* One entry in the `science.archive`
|
|
6680
|
+
* One entry in the `science.archive` Topic payload: a single subject out of
|
|
6587
6681
|
* the whole-career R&D archive (`ResearchAndDevelopment.GetSubjects()`). That
|
|
6588
6682
|
* is every subject the career has ever collected or recovered, across every
|
|
6589
6683
|
* mission and every body, not scoped to the active vessel.
|
|
6590
6684
|
*
|
|
6591
|
-
* The
|
|
6685
|
+
* The Topic payload is a bare array (`ArchiveEntry[]`), or `null` when the
|
|
6592
6686
|
* save has no R&D to walk (Sandbox mode). A save with R&D but nothing
|
|
6593
6687
|
* collected yet emits an empty array, so an empty array and `null` mean
|
|
6594
6688
|
* different things here.
|
|
@@ -6642,7 +6736,7 @@ export interface ArchiveEntry {
|
|
|
6642
6736
|
subjectValue?: Value<"1"> | null;
|
|
6643
6737
|
}
|
|
6644
6738
|
/**
|
|
6645
|
-
* The `settings.gonogo`
|
|
6739
|
+
* The `settings.gonogo` Topic payload: every setting the mod and its Uplinks
|
|
6646
6740
|
* declared, what each holds now, and whether the settings file on the KSP
|
|
6647
6741
|
* machine holds the same.
|
|
6648
6742
|
*
|
|
@@ -6650,8 +6744,9 @@ export interface ArchiveEntry {
|
|
|
6650
6744
|
* row's own description, so a setting an Uplink adds needs no client code of
|
|
6651
6745
|
* its own.
|
|
6652
6746
|
*
|
|
6653
|
-
* It is never delayed by light time
|
|
6654
|
-
*
|
|
6747
|
+
* It is never delayed by light time, the time a signal takes to cross between
|
|
6748
|
+
* a craft and the command centre (the screen an operator sends commands from):
|
|
6749
|
+
* a setting configures the system the operator is sitting at, not a craft.
|
|
6655
6750
|
*
|
|
6656
6751
|
* This is where a client learns whether a save landed. The `settings.save`
|
|
6657
6752
|
* command can time out and still land, so read the outcome here, never from
|
|
@@ -6662,7 +6757,10 @@ export interface ArchiveEntry {
|
|
|
6662
6757
|
* Settings as the stream carries them: Gonogo's own, its Uplinks', and a host
|
|
6663
6758
|
* mod's own settings read through its Uplink. Each row says what it may hold,
|
|
6664
6759
|
* what it holds now and whether it can be written, and the model says whether
|
|
6665
|
-
* the settings file on the KSP machine agrees.
|
|
6760
|
+
* the settings file on the KSP machine agrees. A client reads Gonogo's with
|
|
6761
|
+
* `useTelemetry("settings.gonogo")` and a host mod's with
|
|
6762
|
+
* `useModSettings(uplinkId)`; a setting that lives only in the browser is
|
|
6763
|
+
* declared with `registerSetting` instead.
|
|
6666
6764
|
*/
|
|
6667
6765
|
export interface SettingsModel {
|
|
6668
6766
|
/**
|
|
@@ -6782,8 +6880,9 @@ export interface SettingsDeclarationFailure {
|
|
|
6782
6880
|
reason: string;
|
|
6783
6881
|
}
|
|
6784
6882
|
/**
|
|
6785
|
-
*
|
|
6786
|
-
* to
|
|
6883
|
+
* Apply the settings from one Save press together and write the settings file
|
|
6884
|
+
* once. Arguments to `settings.save`: one Save press, applied together and
|
|
6885
|
+
* written to the settings file once. Never delayed by light time.
|
|
6787
6886
|
*
|
|
6788
6887
|
* Safe to send again. A save sets each row to the value named, so repeating
|
|
6789
6888
|
* one that already landed changes nothing. That matters because a save that
|
|
@@ -6885,7 +6984,7 @@ export interface LaunchSiteEntry {
|
|
|
6885
6984
|
padVesselTitle?: string | null;
|
|
6886
6985
|
}
|
|
6887
6986
|
/**
|
|
6888
|
-
* The `spaceCenter.scene`
|
|
6987
|
+
* The `spaceCenter.scene` Topic payload: the single current KSP game scene.
|
|
6889
6988
|
* `SpaceCenterScene.scene` carries exactly one of the six strings
|
|
6890
6989
|
* `{"Flight","SpaceCenter","Editor","TrackingStation","MainMenu","Other"}`:
|
|
6891
6990
|
* KSP's `GameScenes` enum folded onto that fixed set, with any scene outside
|
|
@@ -7126,9 +7225,9 @@ export interface SavedShipEntry {
|
|
|
7126
7225
|
missingParts?: string[] | null;
|
|
7127
7226
|
}
|
|
7128
7227
|
/**
|
|
7129
|
-
* The `spaceCenter.partsAvailable`
|
|
7130
|
-
*
|
|
7131
|
-
*
|
|
7228
|
+
* The `spaceCenter.partsAvailable` Topic payload: a wrapper carrying the count
|
|
7229
|
+
* of parts the player can place right now (tech-unlocked and purchased in
|
|
7230
|
+
* career; the full `PartLoader` catalogue in sandbox).
|
|
7132
7231
|
*
|
|
7133
7232
|
* A wrapper object, because a bare scalar has no Topic shape: read
|
|
7134
7233
|
* `spaceCenter.partsAvailable.count`. The whole payload is `null` when no
|
|
@@ -7144,8 +7243,8 @@ export interface SpaceCenterPartsAvailable {
|
|
|
7144
7243
|
count?: Value<"count"> | null;
|
|
7145
7244
|
}
|
|
7146
7245
|
/**
|
|
7147
|
-
* The `spaceCenter.astronautComplex`
|
|
7148
|
-
*
|
|
7246
|
+
* The `spaceCenter.astronautComplex` Topic payload: the Astronaut Complex hire
|
|
7247
|
+
* tab, the rolling pool of applicants the operator can recruit, plus the
|
|
7149
7248
|
* roster-cap context a hire is gated on.
|
|
7150
7249
|
*
|
|
7151
7250
|
* A wrapper object, not a bare array, so the applicant list arrives with the
|
|
@@ -7320,7 +7419,7 @@ export interface StageDeltaVEntry {
|
|
|
7320
7419
|
} | null;
|
|
7321
7420
|
}
|
|
7322
7421
|
/**
|
|
7323
|
-
* The `dv.summary`
|
|
7422
|
+
* The `dv.summary` Topic payload: the whole-vessel ΔV rollup KSP's stock
|
|
7324
7423
|
* `VesselDeltaV` exposes alongside the per-stage `StageDeltaVEntry` list: the
|
|
7325
7424
|
* ΔV-producing stage count plus the vacuum, sea-level and current totals and
|
|
7326
7425
|
* total burn time. A single object, or `null` when the stock simulation is not
|
|
@@ -7349,7 +7448,7 @@ export interface StageDeltaVSummary {
|
|
|
7349
7448
|
totalBurnTime?: Value<"s"> | null;
|
|
7350
7449
|
}
|
|
7351
7450
|
/**
|
|
7352
|
-
* The `system.bodies`
|
|
7451
|
+
* The `system.bodies` Topic payload: every celestial body in the game, as a
|
|
7353
7452
|
* tree, wrapped as `{ "bodies": [ ... ] }`. The whole payload is `null`, not
|
|
7354
7453
|
* an empty list, when no sample has been taken yet, so "no data yet" and "zero
|
|
7355
7454
|
* bodies" stay distinct.
|
|
@@ -7594,7 +7693,7 @@ export interface OrbitEntry {
|
|
|
7594
7693
|
epoch?: Value<"ut"> | null;
|
|
7595
7694
|
}
|
|
7596
7695
|
/**
|
|
7597
|
-
* The `system.vessels`
|
|
7696
|
+
* The `system.vessels` Topic payload: every vessel the receiving command
|
|
7598
7697
|
* centre knows of, wrapped as `{ "vessels": [ ... ] }`. Like `SystemBodies`,
|
|
7599
7698
|
* it carries no per-payload `Meta`: that rides the envelope.
|
|
7600
7699
|
*
|
|
@@ -7865,8 +7964,8 @@ export interface TargetListEntry {
|
|
|
7865
7964
|
orbitBodyIndex?: number | null;
|
|
7866
7965
|
}
|
|
7867
7966
|
/**
|
|
7868
|
-
* The `target.available`
|
|
7869
|
-
*
|
|
7967
|
+
* The `target.available` Topic payload: the list of everything targetable from
|
|
7968
|
+
* the active vessel, as the active vessel knows it. Wrapper object `{
|
|
7870
7969
|
* "entries": [ ... ] }`, like `system.vessels`.
|
|
7871
7970
|
*
|
|
7872
7971
|
* A vessel is on the list once the active vessel has come to know of it, by
|
|
@@ -7896,7 +7995,7 @@ export interface TargetAvailable {
|
|
|
7896
7995
|
entries: TargetListEntry[];
|
|
7897
7996
|
}
|
|
7898
7997
|
/**
|
|
7899
|
-
* The `time.calendar`
|
|
7998
|
+
* The `time.calendar` Topic payload: how long a minute, hour, day and year
|
|
7900
7999
|
* are, and what real-world instant UT 0 is (when the game has one), as the
|
|
7901
8000
|
* running game defines them.
|
|
7902
8001
|
*
|
|
@@ -7959,13 +8058,14 @@ export interface TimeCalendar {
|
|
|
7959
8058
|
* deadline can be shown as `14 Mar 1957` rather than `Y3 D122`.
|
|
7960
8059
|
*
|
|
7961
8060
|
* It is read from the date formatter itself. Formatters that model a real
|
|
7962
|
-
* calendar
|
|
7963
|
-
* formatter holds none.
|
|
8061
|
+
* calendar hold an anchor date: RSS installs RSSTimeFormatter, which does, and
|
|
8062
|
+
* Kronometer can. The stock formatter holds none.
|
|
7964
8063
|
*
|
|
7965
8064
|
* `null` is the normal value, and it is not zero. Stock KSP has no real
|
|
7966
|
-
* calendar: its own UI prints Year 1, Day 1, and so should every consumer.
|
|
7967
|
-
*
|
|
7968
|
-
*
|
|
8065
|
+
* calendar: its own UI prints Year 1, Day 1, and so should every consumer. A
|
|
8066
|
+
* planet pack that changes the day length without installing a date-based
|
|
8067
|
+
* formatter has no anchor either. Do not render a default anchor for those
|
|
8068
|
+
* games.
|
|
7969
8069
|
*/
|
|
7970
8070
|
epoch?: string | null;
|
|
7971
8071
|
/**
|
|
@@ -8237,8 +8337,12 @@ export interface PendingUplink {
|
|
|
8237
8337
|
*/
|
|
8238
8338
|
attempts: Value<"count">;
|
|
8239
8339
|
/**
|
|
8240
|
-
* The
|
|
8241
|
-
*
|
|
8340
|
+
* The commands this entry stands for. A command sent alone lists its own
|
|
8341
|
+
* `PendingUplink.id`. A group sent with `command-group` is one entry on one
|
|
8342
|
+
* lane number and lists the `requestId` of each member as the client sent it,
|
|
8343
|
+
* in the order they run, with the first also on
|
|
8344
|
+
* `PendingUplink.clientRequestId`; its `PendingUplink.label` joins the
|
|
8345
|
+
* members' labels.
|
|
8242
8346
|
*/
|
|
8243
8347
|
members: string[];
|
|
8244
8348
|
}
|
|
@@ -8299,9 +8403,9 @@ export interface Vec3 {
|
|
|
8299
8403
|
z: number;
|
|
8300
8404
|
}
|
|
8301
8405
|
/**
|
|
8302
|
-
* The `vessel.attitude`
|
|
8303
|
-
*
|
|
8304
|
-
*
|
|
8406
|
+
* The `vessel.attitude` Topic payload: pitch, heading and roll of the vessel's
|
|
8407
|
+
* control reference (`Vessel.GetTransform()`) against the local surface up and
|
|
8408
|
+
* north, in two named frames.
|
|
8305
8409
|
*
|
|
8306
8410
|
* `VesselAttitude.pitch`, `VesselAttitude.heading` and `VesselAttitude.roll`
|
|
8307
8411
|
* are the primary frame, with up and north measured at `Vessel.CoM` (MechJeb's
|
|
@@ -8339,6 +8443,7 @@ export interface VesselAttitude {
|
|
|
8339
8443
|
meta: PayloadMeta;
|
|
8340
8444
|
}
|
|
8341
8445
|
/**
|
|
8446
|
+
* Switch SAS, RCS, landing gear, brakes, lights or the abort group on or off.
|
|
8342
8447
|
* Args shared by every plain on/off actuation command (`setSas`, `setRcs`,
|
|
8343
8448
|
* `setGear`, `setBrakes`, `setLights`, `setAbort`): an absolute state to
|
|
8344
8449
|
* apply, never a toggle. Under light-time delay a toggle that arrives after
|
|
@@ -8352,7 +8457,8 @@ export interface SetEnabledArgs {
|
|
|
8352
8457
|
enabled: boolean;
|
|
8353
8458
|
}
|
|
8354
8459
|
/**
|
|
8355
|
-
* `vessel.control.setSasMode`'s arguments: the SAS
|
|
8460
|
+
* Set the SAS mode to hold. `vessel.control.setSasMode`'s arguments: the SAS
|
|
8461
|
+
* mode to hold.
|
|
8356
8462
|
*
|
|
8357
8463
|
* @category Command arguments
|
|
8358
8464
|
*/
|
|
@@ -8361,7 +8467,8 @@ export interface SetSasModeArgs {
|
|
|
8361
8467
|
mode: SasMode;
|
|
8362
8468
|
}
|
|
8363
8469
|
/**
|
|
8364
|
-
* `vessel.control.setThrottle`'s arguments: the main
|
|
8470
|
+
* Set the main throttle. `vessel.control.setThrottle`'s arguments: the main
|
|
8471
|
+
* throttle setting.
|
|
8365
8472
|
*
|
|
8366
8473
|
* @category Command arguments
|
|
8367
8474
|
*/
|
|
@@ -8391,9 +8498,9 @@ export interface SetActionGroupArgs {
|
|
|
8391
8498
|
state: boolean;
|
|
8392
8499
|
}
|
|
8393
8500
|
/**
|
|
8394
|
-
* `vessel.maneuver.add`'s args: a new manoeuvre node's
|
|
8395
|
-
* named components in the node's own prograde, normal
|
|
8396
|
-
* the same shape as `ManeuverNode`.
|
|
8501
|
+
* Add a manoeuvre node. `vessel.maneuver.add`'s args: a new manoeuvre node's
|
|
8502
|
+
* time and its delta-v as named components in the node's own prograde, normal
|
|
8503
|
+
* and radial-out frame, the same shape as `ManeuverNode`.
|
|
8397
8504
|
*
|
|
8398
8505
|
* The result is a `CommandResult<string>` whose `Payload` is the new node's
|
|
8399
8506
|
* opaque id, the same id `ManeuverNode.id` carries on `vessel.maneuver`. A
|
|
@@ -8444,7 +8551,8 @@ export interface UpdateManeuverNodeArgs {
|
|
|
8444
8551
|
radialOut: number;
|
|
8445
8552
|
}
|
|
8446
8553
|
/**
|
|
8447
|
-
* `vessel.maneuver.remove`'s arguments: the manoeuvre
|
|
8554
|
+
* Delete a manoeuvre node. `vessel.maneuver.remove`'s arguments: the manoeuvre
|
|
8555
|
+
* node to delete.
|
|
8448
8556
|
*
|
|
8449
8557
|
* @category Command arguments
|
|
8450
8558
|
*/
|
|
@@ -8453,8 +8561,8 @@ export interface RemoveManeuverNodeArgs {
|
|
|
8453
8561
|
nodeId: string;
|
|
8454
8562
|
}
|
|
8455
8563
|
/**
|
|
8456
|
-
* `vessel.target.set`'s args: a discriminated
|
|
8457
|
-
* `SetTargetArgs.kind` plus the fields that kind uses.
|
|
8564
|
+
* Set the active vessel's target. `vessel.target.set`'s args: a discriminated
|
|
8565
|
+
* union, written as `SetTargetArgs.kind` plus the fields that kind uses.
|
|
8458
8566
|
* `SetTargetArgs.vesselId` is the stable vessel id, never an array index, and
|
|
8459
8567
|
* a vessel id and a body index travel in separate fields so they cannot be
|
|
8460
8568
|
* confused.
|
|
@@ -8519,7 +8627,8 @@ export interface SetWarpIndexArgs {
|
|
|
8519
8627
|
index: number;
|
|
8520
8628
|
}
|
|
8521
8629
|
/**
|
|
8522
|
-
* `time.setPaused`'s arguments: whether the game is
|
|
8630
|
+
* Pause or resume the game. `time.setPaused`'s arguments: whether the game is
|
|
8631
|
+
* paused.
|
|
8523
8632
|
*
|
|
8524
8633
|
* @category Command arguments
|
|
8525
8634
|
*/
|
|
@@ -8565,7 +8674,7 @@ export declare enum ControlState {
|
|
|
8565
8674
|
Unknown = 11
|
|
8566
8675
|
}
|
|
8567
8676
|
/**
|
|
8568
|
-
* The `vessel.comms`
|
|
8677
|
+
* The `vessel.comms` Topic payload: the active vessel's own CommNet
|
|
8569
8678
|
* connection, from KSP's `vessel.connection`. The whole payload is null when
|
|
8570
8679
|
* the vessel has no CommNet connection object; there is no zero or
|
|
8571
8680
|
* disconnected placeholder reading.
|
|
@@ -8587,6 +8696,11 @@ export interface VesselComms {
|
|
|
8587
8696
|
*/
|
|
8588
8697
|
signalStrength: Value<"ratio">;
|
|
8589
8698
|
/**
|
|
8699
|
+
* Which quantity `VesselComms.signalStrength` is, as the elected comms backend
|
|
8700
|
+
* declares it: `SignalQuantity.Unknown` while no backend has answered.
|
|
8701
|
+
*/
|
|
8702
|
+
signalQuantity: SignalQuantity;
|
|
8703
|
+
/**
|
|
8590
8704
|
* What is controlling the vessel and how much control it has, from
|
|
8591
8705
|
* `vessel.connection.ControlState`.
|
|
8592
8706
|
*/
|
|
@@ -8662,7 +8776,7 @@ export interface ActionGroupState {
|
|
|
8662
8776
|
state?: boolean | null;
|
|
8663
8777
|
}
|
|
8664
8778
|
/**
|
|
8665
|
-
* The `vessel.control`
|
|
8779
|
+
* The `vessel.control` Topic payload: the active vessel's control state (the
|
|
8666
8780
|
* stock toggles, SAS mode, throttle, the commanded fly-by-wire axes and the
|
|
8667
8781
|
* custom action groups). The payload is present whenever there is an active
|
|
8668
8782
|
* vessel; each field is individually nullable, and `null` means that input
|
|
@@ -8863,12 +8977,12 @@ export interface VesselCrew {
|
|
|
8863
8977
|
meta: PayloadMeta;
|
|
8864
8978
|
}
|
|
8865
8979
|
/**
|
|
8866
|
-
* The `vessel.dock`
|
|
8867
|
-
*
|
|
8868
|
-
*
|
|
8869
|
-
*
|
|
8870
|
-
*
|
|
8871
|
-
*
|
|
8980
|
+
* The `vessel.dock` Topic payload: the relative position, velocity and coarse
|
|
8981
|
+
* orientation between the active vessel's nearest free (undocked) docking port
|
|
8982
|
+
* and the targeted docking port, for docking-alignment widgets. The whole
|
|
8983
|
+
* payload is absent when docking is not relevant right now: nothing is
|
|
8984
|
+
* targeted, the target is not a docking port, or the active vessel has no free
|
|
8985
|
+
* port. It is never an old or zero-distance placeholder record, the same
|
|
8872
8986
|
* convention as `VesselTarget`.
|
|
8873
8987
|
*
|
|
8874
8988
|
* `DockAlignment.forwardDot` is the dot product of the two ports' forward
|
|
@@ -9031,7 +9145,7 @@ export declare enum ManeuverFrame {
|
|
|
9031
9145
|
Unknown = 1
|
|
9032
9146
|
}
|
|
9033
9147
|
/**
|
|
9034
|
-
* The `vessel.flight`
|
|
9148
|
+
* The `vessel.flight` Topic payload: quantities the game measures, either
|
|
9035
9149
|
* because they cannot be derived from orbital elements (terrain height,
|
|
9036
9150
|
* aerodynamic state) or because they are the measured value to check a
|
|
9037
9151
|
* prediction against (speeds). One field per quantity.
|
|
@@ -9106,8 +9220,8 @@ export interface VesselFlight {
|
|
|
9106
9220
|
meta: PayloadMeta;
|
|
9107
9221
|
}
|
|
9108
9222
|
/**
|
|
9109
|
-
* The `vessel.identity`
|
|
9110
|
-
*
|
|
9223
|
+
* The `vessel.identity` Topic payload: who the active vessel is, what kind of
|
|
9224
|
+
* craft it is, and where it is.
|
|
9111
9225
|
*
|
|
9112
9226
|
* There is no mission time field. `VesselIdentity.launchUt` is fixed after
|
|
9113
9227
|
* liftoff, so mission elapsed time is `viewUt - launchUt`, computed by the
|
|
@@ -9238,11 +9352,11 @@ export interface InventoryItem {
|
|
|
9238
9352
|
packedVolume?: Value<"1"> | null;
|
|
9239
9353
|
}
|
|
9240
9354
|
/**
|
|
9241
|
-
* The `vessel.landing`
|
|
9242
|
-
*
|
|
9243
|
-
*
|
|
9244
|
-
*
|
|
9245
|
-
*
|
|
9355
|
+
* The `vessel.landing` Topic payload: landing data for the active vessel that
|
|
9356
|
+
* needs KSP's PQS terrain heightmap (slope, roughness and elevation at the
|
|
9357
|
+
* touchdown site), plus an atmosphere-aware descent estimate built from the
|
|
9358
|
+
* vessel's measured drag. The vacuum ballistic figures (which need no terrain)
|
|
9359
|
+
* are not here; a client solves those itself.
|
|
9246
9360
|
*
|
|
9247
9361
|
* The whole payload is absent unless the vessel is descending toward a solid
|
|
9248
9362
|
* surface: the body must have a solid surface and PQS terrain, and the vessel
|
|
@@ -9336,22 +9450,50 @@ export interface VesselLanding {
|
|
|
9336
9450
|
*/
|
|
9337
9451
|
predictedBiome?: string | null;
|
|
9338
9452
|
/**
|
|
9339
|
-
*
|
|
9340
|
-
*
|
|
9341
|
-
*
|
|
9342
|
-
*
|
|
9453
|
+
* The distance in metres of each `VesselLanding.groundTrackElevations` sample
|
|
9454
|
+
* along the predicted ground track, signed: 0 is the point on the ground
|
|
9455
|
+
* beneath the vessel, positive is toward the predicted site and on past it,
|
|
9456
|
+
* negative is behind the vessel. Ascending, the same length as
|
|
9457
|
+
* `VesselLanding.groundTrackElevations`. The strip always holds the ground
|
|
9458
|
+
* directly beneath the vessel, with at least one vessel height (and never less
|
|
9459
|
+
* than 120 m) of ground behind it, and runs on to the far edge of the
|
|
9460
|
+
* footprint of a cone of 60 degrees either side of the vessel's travel vector:
|
|
9461
|
+
* where the cone's two edges, in the plane of the vessel's motion, meet the
|
|
9462
|
+
* ground. A flat or climbing approach has an edge that never meets it, and
|
|
9463
|
+
* that edge is cut at the horizon. The strip also reaches the predicted site
|
|
9464
|
+
* and a tenth of its distance past it. The number of samples is fixed, so they
|
|
9465
|
+
* are closer together the narrower the strip, which narrows as the vessel
|
|
9466
|
+
* descends. Null when no track could be sampled.
|
|
9343
9467
|
*/
|
|
9344
|
-
|
|
9468
|
+
groundTrackDistances?: Value<"m">[] | null;
|
|
9345
9469
|
/**
|
|
9346
|
-
*
|
|
9347
|
-
*
|
|
9470
|
+
* Terrain elevation in metres at each `VesselLanding.groundTrackDistances`
|
|
9471
|
+
* entry, from the body's terrain model (ocean floor reads negative). Null when
|
|
9472
|
+
* no track could be sampled.
|
|
9348
9473
|
*/
|
|
9349
|
-
|
|
9474
|
+
groundTrackElevations?: Value<"m">[] | null;
|
|
9350
9475
|
/**
|
|
9351
|
-
*
|
|
9352
|
-
*
|
|
9476
|
+
* A square of terrain elevations in metres around the predicted site, for a
|
|
9477
|
+
* top-down view of it: `VesselLanding.siteHeightsSize` by
|
|
9478
|
+
* `VesselLanding.siteHeightsSize` values row by row, the northern row first
|
|
9479
|
+
* and the western column first in each row, so laying them out in that order
|
|
9480
|
+
* puts north at the top. The grid is centred on the site and its width is
|
|
9481
|
+
* `VesselLanding.siteHeightsExtentMeters`: wide enough to hold the ground
|
|
9482
|
+
* between the vessel and the site, and about the vessel's height of it either
|
|
9483
|
+
* side, so it narrows as the vessel descends and closes on the site, and it
|
|
9484
|
+
* may be a second old. Null when no site could be sampled.
|
|
9353
9485
|
*/
|
|
9354
|
-
|
|
9486
|
+
siteHeights?: Value<"m">[] | null;
|
|
9487
|
+
/**
|
|
9488
|
+
* The number of values along each side of `VesselLanding.siteHeights`. Null
|
|
9489
|
+
* when there is no grid.
|
|
9490
|
+
*/
|
|
9491
|
+
siteHeightsSize?: Value<"count"> | null;
|
|
9492
|
+
/**
|
|
9493
|
+
* The full width in metres that `VesselLanding.siteHeights` spans. Null when
|
|
9494
|
+
* there is no grid.
|
|
9495
|
+
*/
|
|
9496
|
+
siteHeightsExtentMeters?: Value<"m"> | null;
|
|
9355
9497
|
/**
|
|
9356
9498
|
* Terminal velocity in m/s at the current altitude and configuration, from the
|
|
9357
9499
|
* measured aggregate drag force against local gravity. An estimate that
|
|
@@ -9393,6 +9535,32 @@ export interface VesselLanding {
|
|
|
9393
9535
|
* outside an atmosphere.
|
|
9394
9536
|
*/
|
|
9395
9537
|
parachuteState?: string | null;
|
|
9538
|
+
/**
|
|
9539
|
+
* How far the craft's parachutes have opened, taken from the one furthest
|
|
9540
|
+
* along: `"none"` (the craft carries no parachute), `"stowed"` (packed, not
|
|
9541
|
+
* yet staged), `"armed"` (staged and waiting for air thick enough to open in),
|
|
9542
|
+
* `"semi-deployed"` (open as a streamer, slowing the craft a little),
|
|
9543
|
+
* `"deployed"` (fully open) or `"cut"` (every one cut away). Unlike
|
|
9544
|
+
* `VesselLanding.parachuteState` it tells semi-deployed from fully deployed,
|
|
9545
|
+
* and a packed parachute from none. Null outside an atmosphere.
|
|
9546
|
+
*/
|
|
9547
|
+
parachuteDeployment?: string | null;
|
|
9548
|
+
/**
|
|
9549
|
+
* Whether opening the parachutes not yet open would survive the current speed
|
|
9550
|
+
* and air, as the game rates it from the heating a canopy would take:
|
|
9551
|
+
* `"safe"`, `"risky"` (the canopy would heat but hold for a few seconds) or
|
|
9552
|
+
* `"unsafe"` (it would burn through). The worst rating among the stowed and
|
|
9553
|
+
* armed parachutes. Null outside an atmosphere, when every parachute is
|
|
9554
|
+
* already open or cut, and for a parachute the game does not rate.
|
|
9555
|
+
*/
|
|
9556
|
+
parachuteDeploySafety?: string | null;
|
|
9557
|
+
/**
|
|
9558
|
+
* The height above the ground or the sea at which an armed or semi-deployed
|
|
9559
|
+
* parachute opens fully, the greatest when there are several, since that one
|
|
9560
|
+
* opens first. Null when none is armed or semi-deployed, outside an
|
|
9561
|
+
* atmosphere, and for a parachute the game does not report one for.
|
|
9562
|
+
*/
|
|
9563
|
+
parachuteFullDeployAltitude?: Value<"m"> | null;
|
|
9396
9564
|
/** The payload's provenance (`"vessel:<guid>"`). */
|
|
9397
9565
|
meta: PayloadMeta;
|
|
9398
9566
|
}
|
|
@@ -9511,7 +9679,7 @@ export interface ManeuverNode {
|
|
|
9511
9679
|
patches: OrbitPatch[];
|
|
9512
9680
|
}
|
|
9513
9681
|
/**
|
|
9514
|
-
* The `vessel.maneuver`
|
|
9682
|
+
* The `vessel.maneuver` Topic payload: the active vessel's planned burns.
|
|
9515
9683
|
* `VesselManeuver.nodes` is always an array, empty when no burn is queued,
|
|
9516
9684
|
* never null.
|
|
9517
9685
|
*
|
|
@@ -9548,7 +9716,7 @@ export interface VesselManeuver {
|
|
|
9548
9716
|
meta: PayloadMeta;
|
|
9549
9717
|
}
|
|
9550
9718
|
/**
|
|
9551
|
-
* The `vessel.orbit`
|
|
9719
|
+
* The `vessel.orbit` Topic payload: the active vessel's orbital elements.
|
|
9552
9720
|
* Elements are the cause; every kinematic quantity (position, velocity,
|
|
9553
9721
|
* apsides, anomalies, period) is derived by the consumer at its view UT
|
|
9554
9722
|
* through the propagation capability, and is not streamed here. The one
|
|
@@ -9809,7 +9977,7 @@ export interface OrbitEncounter {
|
|
|
9809
9977
|
bodyIndex?: number | null;
|
|
9810
9978
|
}
|
|
9811
9979
|
/**
|
|
9812
|
-
* The `vessel.orbit.truth`
|
|
9980
|
+
* The `vessel.orbit.truth` Topic payload: KSP's own maintained state vector
|
|
9813
9981
|
* for the active vessel (`Orbit.pos` and `Orbit.vel`), relative to the body it
|
|
9814
9982
|
* orbits. A development channel for checking element-to-position math against
|
|
9815
9983
|
* KSP's own state, not a source of altitude or velocity for a widget: read
|
|
@@ -9852,7 +10020,7 @@ export interface VesselOrbitTruth {
|
|
|
9852
10020
|
meta: PayloadMeta;
|
|
9853
10021
|
}
|
|
9854
10022
|
/**
|
|
9855
|
-
* The `vessel.parts`
|
|
10023
|
+
* The `vessel.parts` Topic payload: the active vessel's full part tree, with
|
|
9856
10024
|
* each part's position, mass, temperatures, resources, module states and
|
|
9857
10025
|
* action-group bindings. A single object, or `null` when there is no active
|
|
9858
10026
|
* vessel.
|
|
@@ -10192,10 +10360,9 @@ export interface VesselPhysicsMode {
|
|
|
10192
10360
|
meta: PayloadMeta;
|
|
10193
10361
|
}
|
|
10194
10362
|
/**
|
|
10195
|
-
* The `vessel.propulsion`
|
|
10196
|
-
*
|
|
10197
|
-
*
|
|
10198
|
-
* ratio directly.
|
|
10363
|
+
* The `vessel.propulsion` Topic payload: the active vessel's mass and thrust,
|
|
10364
|
+
* the inputs to thrust-to-weight and burn-time figures. Mass is in tonnes and
|
|
10365
|
+
* thrust in kN, so `thrust / (mass · g)` is a thrust-to-weight ratio directly.
|
|
10199
10366
|
*
|
|
10200
10367
|
* TWR, maximum TWR and a vessel-level burn-time estimate are derived by the
|
|
10201
10368
|
* client from these fields, and are not streamed here.
|
|
@@ -10308,7 +10475,7 @@ export interface ResourceAmount {
|
|
|
10308
10475
|
active: boolean;
|
|
10309
10476
|
}
|
|
10310
10477
|
/**
|
|
10311
|
-
* The `vessel.resources`
|
|
10478
|
+
* The `vessel.resources` Topic payload: a keyframed map, keyed by resource
|
|
10312
10479
|
* name. No value is ever a sentinel such as `-1`.
|
|
10313
10480
|
*
|
|
10314
10481
|
* Only these stock resources are reported: `LiquidFuel`, `Oxidizer`,
|
|
@@ -10349,7 +10516,7 @@ export interface VesselResources {
|
|
|
10349
10516
|
meta: PayloadMeta;
|
|
10350
10517
|
}
|
|
10351
10518
|
/**
|
|
10352
|
-
* The `vessel.structure`
|
|
10519
|
+
* The `vessel.structure` Topic payload: the active vessel's stage and part
|
|
10353
10520
|
* counts. Absent when there is no active vessel.
|
|
10354
10521
|
*
|
|
10355
10522
|
* `VesselStructure.currentStage` uses KSP's own staging numbering unchanged,
|
|
@@ -10378,9 +10545,9 @@ export interface VesselStructure {
|
|
|
10378
10545
|
meta: PayloadMeta;
|
|
10379
10546
|
}
|
|
10380
10547
|
/**
|
|
10381
|
-
* The `vessel.surface`
|
|
10382
|
-
*
|
|
10383
|
-
*
|
|
10548
|
+
* The `vessel.surface` Topic payload: surface data a landing widget needs that
|
|
10549
|
+
* `vessel.flight` doesn't already carry. `vessel.flight.AltitudeTerrain` is
|
|
10550
|
+
* the height of the vessel's root part above the terrain;
|
|
10384
10551
|
* `VesselSurface.heightFromTerrain` is the height of the vessel's lowest
|
|
10385
10552
|
* point, the number a landing-gear or suicide-burn readout cares about. The
|
|
10386
10553
|
* two differ by how far the vessel reaches below its root.
|
|
@@ -10477,9 +10644,9 @@ export interface ClosestApproach {
|
|
|
10477
10644
|
distance: Value<"m">;
|
|
10478
10645
|
}
|
|
10479
10646
|
/**
|
|
10480
|
-
* The `vessel.target`
|
|
10481
|
-
*
|
|
10482
|
-
*
|
|
10647
|
+
* The `vessel.target` Topic payload: the active vessel's current target only.
|
|
10648
|
+
* `VesselTarget.relativePosition`/`VesselTarget.relativeVelocity` both use the
|
|
10649
|
+
* one `Vec3` shape.
|
|
10483
10650
|
*
|
|
10484
10651
|
* `VesselTarget.orbit` reuses `VesselOrbit` itself (not a separate "target
|
|
10485
10652
|
* orbit" shape), so the SDK propagates a target with the same code path as the
|
|
@@ -10573,11 +10740,10 @@ export interface ThermalHottestPart {
|
|
|
10573
10740
|
/** The part's current skin temperature, Kelvin (`Part.skinTemperature`). */
|
|
10574
10741
|
skinTemp: Value<"K">;
|
|
10575
10742
|
/**
|
|
10576
|
-
* The part's maximum skin temperature, Kelvin (`Part.skinMaxTemp`)
|
|
10577
|
-
*
|
|
10578
|
-
* that value arrives here unchanged.
|
|
10743
|
+
* The part's maximum skin temperature, Kelvin (`Part.skinMaxTemp`); `null` for
|
|
10744
|
+
* a part with no skin-thermal model, where KSP reports `-1`.
|
|
10579
10745
|
*/
|
|
10580
|
-
skinMaxTemp
|
|
10746
|
+
skinMaxTemp?: Value<"K"> | null;
|
|
10581
10747
|
/**
|
|
10582
10748
|
* Display name of the hottest part (`Part.partInfo.title`, falling back to
|
|
10583
10749
|
* `Part.name`, same convention as `VesselPart.title`). Never null when
|
|
@@ -10593,9 +10759,9 @@ export interface ThermalHottestPart {
|
|
|
10593
10759
|
id?: string | null;
|
|
10594
10760
|
}
|
|
10595
10761
|
/**
|
|
10596
|
-
* The `vessel.thermal`
|
|
10597
|
-
*
|
|
10598
|
-
*
|
|
10762
|
+
* The `vessel.thermal` Topic payload: the active vessel's thermal rollup, its
|
|
10763
|
+
* hottest part, heat shield and engine. Each ratio is null when no part had a
|
|
10764
|
+
* valid maximum temperature this tick, never 0, so "no valid part" and
|
|
10599
10765
|
* "coldest possible part" stay distinct.
|
|
10600
10766
|
*
|
|
10601
10767
|
* The whole payload is null when the vessel has no parts at all, a different,
|
|
@@ -10678,12 +10844,12 @@ export declare enum WarpMode {
|
|
|
10678
10844
|
Unknown = 2
|
|
10679
10845
|
}
|
|
10680
10846
|
/**
|
|
10681
|
-
* The `time.warp`
|
|
10847
|
+
* The `time.warp` Topic payload: the game's time-warp and pause state, as
|
|
10682
10848
|
* separate typed fields.
|
|
10683
10849
|
*
|
|
10684
|
-
* Current UT is not a field here
|
|
10685
|
-
* `meta.validAt` stamps every sample
|
|
10686
|
-
* time is
|
|
10850
|
+
* Current UT is not a field here, nor on any other Topic of the wire contract:
|
|
10851
|
+
* `meta.validAt` stamps every sample with the UT it describes, and a client
|
|
10852
|
+
* asks what time it is with the SDK's `useViewUt`.
|
|
10687
10853
|
*
|
|
10688
10854
|
* Warp and pause are game-wide state, so `WarpState.meta` is stamped `Source =
|
|
10689
10855
|
* "game"`, not `"vessel:<guid>"`, and the channel emits at the Space Center
|
|
@@ -10740,13 +10906,13 @@ export interface WarpState {
|
|
|
10740
10906
|
* seconds, or `null` where the host did not report its physics step.
|
|
10741
10907
|
*
|
|
10742
10908
|
* Equal to `WarpState.sampleIntervalUt` up to 10x warp. Above that the mod
|
|
10743
|
-
* samples at most ten times a real second, so this is
|
|
10744
|
-
*
|
|
10745
|
-
* where a tick advances the game
|
|
10746
|
-
* consecutive samples was observed, so
|
|
10747
|
-
*
|
|
10748
|
-
*
|
|
10749
|
-
* change in between.
|
|
10909
|
+
* samples at most ten times a real second, so this is the game time that
|
|
10910
|
+
* passes in a tenth of a real second at the current rate (0.1 s x 100,000 =
|
|
10911
|
+
* 10,000 s at 100,000x), or one physics tick where a tick advances the game
|
|
10912
|
+
* further than that. Nothing between two consecutive samples was observed, so
|
|
10913
|
+
* a line drawn between two samples that differ asserts a path across this span
|
|
10914
|
+
* that only a model of the value can stand behind. Two samples further apart
|
|
10915
|
+
* than this are a channel that did not change in between.
|
|
10750
10916
|
*
|
|
10751
10917
|
* It changes only when the warp rate does. A client judging a gap reads the
|
|
10752
10918
|
* quantum in force when the later sample was taken.
|