kshana 0.23.0 → 0.24.0

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 CHANGED
@@ -15,8 +15,8 @@
15
15
 
16
16
  <p align="center">
17
17
  <a href="https://github.com/AshfordeOU/kshana/blob/main/tests/sgp4_verification.rs"><img src="https://img.shields.io/badge/SGP4-666%2F666%20AIAA%20vectors%20%C2%B7%204.12mm-3fb950" alt="SGP4 validated against all 666 AIAA 2006-6753 vectors, worst 4.12 mm"></a>
18
- <a href="https://github.com/AshfordeOU/kshana#validation-at-a-glance"><img src="https://img.shields.io/badge/validated-40%20external%20oracles-3fb950" alt="40 of 91 capabilities validated against independent external oracles"></a>
19
- <a href="https://github.com/AshfordeOU/kshana/releases"><img src="https://img.shields.io/badge/release-v0.23.0-c79e63" alt="Release v0.23.0"></a>
18
+ <a href="https://github.com/AshfordeOU/kshana#validation-at-a-glance"><img src="https://img.shields.io/badge/validated-51%20external%20oracles-3fb950" alt="51 of 102 capabilities validated against independent external oracles"></a>
19
+ <a href="https://github.com/AshfordeOU/kshana/releases"><img src="https://img.shields.io/badge/release-v0.24.0-c79e63" alt="Release v0.24.0"></a>
20
20
  <a href="https://ashforde.org"><img src="https://img.shields.io/badge/playground-try%20in%20browser-c79e63" alt="Live playground — run in your browser, no install"></a>
21
21
  <a href="https://github.com/AshfordeOU/kshana/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-AGPL_v3-blue.svg" alt="License: AGPL-3.0-only"></a>
22
22
  <a href="https://doi.org/10.5281/zenodo.20528627"><img src="https://img.shields.io/badge/DOI-10.5281%2Fzenodo.20528627-blue.svg" alt="DOI 10.5281/zenodo.20528627"></a>
@@ -32,7 +32,7 @@ parameter is traceable to a published source.
32
32
  > ***Validated, not asserted.*** 666/666 AIAA SGP4 vectors to **4.12 mm** · Cowell
33
33
  > force model **0.08 m** vs Orekit 12.2 · Galileo **0.61 m** / Swarm-A **0.10 m** vs
34
34
  > real ESA precise ephemerides · GCRS→ITRS bit-for-bit vs SOFA/ERFA · ML metrics exact
35
- > vs scikit-learn · **40 of 91** capabilities validated against independent external
35
+ > vs scikit-learn · **51 of 102** capabilities validated against independent external
36
36
  > oracles; 47 honestly labelled Modelled, 4 partner-owned.
37
37
 
38
38
  <p align="center">
@@ -51,7 +51,7 @@ parameter is traceable to a published source.
51
51
  | ✅ | GNSS DOP · ML detector metrics | to **1e-6** · to **1e-9** | gnss_lib_py · scikit-learn |
52
52
 
53
53
  <p align="center">
54
- <img src="https://raw.githubusercontent.com/AshfordeOU/kshana/main/docs/assets/figures/validation-breakdown.png" alt="Verification status across all 91 capabilities: 40 Validated, 47 Modelled, 4 Partner-owned" width="780">
54
+ <img src="https://raw.githubusercontent.com/AshfordeOU/kshana/main/docs/assets/figures/validation-breakdown.png" alt="Verification status across all 102 capabilities: 51 Validated, 47 Modelled, 4 Partner-owned" width="780">
55
55
  </p>
56
56
 
57
57
  ## Install
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.5",
4
- "serialNumber": "urn:uuid:f3506096-6207-c524-b45f-4ec432a9ce22",
4
+ "serialNumber": "urn:uuid:5485f132-8a67-22b3-5d4f-0dc6ab6d03b3",
5
5
  "version": 1,
6
6
  "metadata": {
7
7
  "component": {
@@ -380,8 +380,8 @@
380
380
  {
381
381
  "type": "library",
382
382
  "name": "kshana",
383
- "version": "0.23.0",
384
- "purl": "pkg:cargo/kshana@0.23.0",
383
+ "version": "0.24.0",
384
+ "purl": "pkg:cargo/kshana@0.24.0",
385
385
  "licenses": [
386
386
  {
387
387
  "license": {
package/kshana.d.ts CHANGED
@@ -24,6 +24,26 @@ export function encode_permalink(toml: string): string;
24
24
  */
25
25
  export function error_kind(toml: string): string;
26
26
 
27
+ /**
28
+ * Export the velocity-carrying state as a **CCSDS OEM 2.0** ephemeris string for
29
+ * flight-dynamics tools (GMAT / Orekit / STK; the CLI `--export-oem` artifact). Pure
30
+ * client-side.
31
+ */
32
+ export function export_oem(toml: string): string;
33
+
34
+ /**
35
+ * Export a constellation's mean elements as a **CCSDS OMM** catalogue string (one OMM
36
+ * message per TLE-defined satellite; the CLI `--export-omm` artifact). Pure client-side.
37
+ */
38
+ export function export_omm(toml: string): string;
39
+
40
+ /**
41
+ * Export a propagated constellation scenario as an **SP3-c** precise-ephemeris string
42
+ * (the same artifact the CLI `--export-sp3` flag writes). Pure client-side; nothing is
43
+ * uploaded. Throws a JS error if the scenario cannot produce an SP3 (e.g. a non-orbit kind).
44
+ */
45
+ export function export_sp3(toml: string): string;
46
+
27
47
  /**
28
48
  * List the available scenario kinds and their metadata as a JSON array (name,
29
49
  * description, required and optional fields), for programmatic introspection.
@@ -54,6 +74,9 @@ export interface InitOutput {
54
74
  readonly decode_permalink: (a: number, b: number) => [number, number];
55
75
  readonly encode_permalink: (a: number, b: number) => [number, number];
56
76
  readonly error_kind: (a: number, b: number) => [number, number];
77
+ readonly export_oem: (a: number, b: number) => [number, number, number, number];
78
+ readonly export_omm: (a: number, b: number) => [number, number, number, number];
79
+ readonly export_sp3: (a: number, b: number) => [number, number, number, number];
57
80
  readonly list_kinds: () => [number, number];
58
81
  readonly run: (a: number, b: number) => [number, number, number, number];
59
82
  readonly summary: (a: number, b: number) => [number, number, number, number];
package/kshana.js CHANGED
@@ -89,6 +89,89 @@ export function error_kind(toml) {
89
89
  }
90
90
  }
91
91
 
92
+ /**
93
+ * Export the velocity-carrying state as a **CCSDS OEM 2.0** ephemeris string for
94
+ * flight-dynamics tools (GMAT / Orekit / STK; the CLI `--export-oem` artifact). Pure
95
+ * client-side.
96
+ * @param {string} toml
97
+ * @returns {string}
98
+ */
99
+ export function export_oem(toml) {
100
+ let deferred3_0;
101
+ let deferred3_1;
102
+ try {
103
+ const ptr0 = passStringToWasm0(toml, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
104
+ const len0 = WASM_VECTOR_LEN;
105
+ const ret = wasm.export_oem(ptr0, len0);
106
+ var ptr2 = ret[0];
107
+ var len2 = ret[1];
108
+ if (ret[3]) {
109
+ ptr2 = 0; len2 = 0;
110
+ throw takeFromExternrefTable0(ret[2]);
111
+ }
112
+ deferred3_0 = ptr2;
113
+ deferred3_1 = len2;
114
+ return getStringFromWasm0(ptr2, len2);
115
+ } finally {
116
+ wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Export a constellation's mean elements as a **CCSDS OMM** catalogue string (one OMM
122
+ * message per TLE-defined satellite; the CLI `--export-omm` artifact). Pure client-side.
123
+ * @param {string} toml
124
+ * @returns {string}
125
+ */
126
+ export function export_omm(toml) {
127
+ let deferred3_0;
128
+ let deferred3_1;
129
+ try {
130
+ const ptr0 = passStringToWasm0(toml, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
131
+ const len0 = WASM_VECTOR_LEN;
132
+ const ret = wasm.export_omm(ptr0, len0);
133
+ var ptr2 = ret[0];
134
+ var len2 = ret[1];
135
+ if (ret[3]) {
136
+ ptr2 = 0; len2 = 0;
137
+ throw takeFromExternrefTable0(ret[2]);
138
+ }
139
+ deferred3_0 = ptr2;
140
+ deferred3_1 = len2;
141
+ return getStringFromWasm0(ptr2, len2);
142
+ } finally {
143
+ wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
144
+ }
145
+ }
146
+
147
+ /**
148
+ * Export a propagated constellation scenario as an **SP3-c** precise-ephemeris string
149
+ * (the same artifact the CLI `--export-sp3` flag writes). Pure client-side; nothing is
150
+ * uploaded. Throws a JS error if the scenario cannot produce an SP3 (e.g. a non-orbit kind).
151
+ * @param {string} toml
152
+ * @returns {string}
153
+ */
154
+ export function export_sp3(toml) {
155
+ let deferred3_0;
156
+ let deferred3_1;
157
+ try {
158
+ const ptr0 = passStringToWasm0(toml, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
159
+ const len0 = WASM_VECTOR_LEN;
160
+ const ret = wasm.export_sp3(ptr0, len0);
161
+ var ptr2 = ret[0];
162
+ var len2 = ret[1];
163
+ if (ret[3]) {
164
+ ptr2 = 0; len2 = 0;
165
+ throw takeFromExternrefTable0(ret[2]);
166
+ }
167
+ deferred3_0 = ptr2;
168
+ deferred3_1 = len2;
169
+ return getStringFromWasm0(ptr2, len2);
170
+ } finally {
171
+ wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
172
+ }
173
+ }
174
+
92
175
  /**
93
176
  * List the available scenario kinds and their metadata as a JSON array (name,
94
177
  * description, required and optional fields), for programmatic introspection.
package/kshana_bg.wasm CHANGED
Binary file
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "Chakshu Baweja <contact@ashforde.org>"
6
6
  ],
7
7
  "description": "Open, reproducible PNT-resilience simulator with quantum-sensor performance models",
8
- "version": "0.23.0",
8
+ "version": "0.24.0",
9
9
  "license": "AGPL-3.0-only",
10
10
  "repository": {
11
11
  "type": "git",