kshana 0.23.0 → 0.25.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,9 +15,9 @@
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>
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>
18
+ <a href="https://github.com/AshfordeOU/kshana#validation-at-a-glance"><img src="https://img.shields.io/badge/validated-56%20external%20oracles-3fb950" alt="56 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.25.0-c79e63" alt="Release v0.25.0"></a>
20
+ <a href="https://kshana.dev"><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>
23
23
  </p>
@@ -32,8 +32,8 @@ 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
36
- > oracles; 47 honestly labelled Modelled, 4 partner-owned.
35
+ > vs scikit-learn · **56 of 102** capabilities validated against independent external
36
+ > oracles; 42 honestly labelled Modelled, 4 partner-owned.
37
37
 
38
38
  <p align="center">
39
39
  <img src="https://raw.githubusercontent.com/AshfordeOU/kshana/main/docs/assets/diagrams/system-overview.png" alt="Kshana system overview: five front doors (CLI, Python wheel, WebAssembly playground, MCP server, JetBrains plugin) converge on a single api::run_toml dispatch, through the engine, to a reproducible result.json + chart.svg" width="840">
@@ -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: 56 Validated, 42 Modelled, 4 Partner-owned" width="780">
55
55
  </p>
56
56
 
57
57
  ## Install
@@ -81,7 +81,7 @@ const { json, svg } = run_full(toml);
81
81
  Beyond `run` / `run_full` / `version`, the module also exports `summary` (the one-line
82
82
  result string), `list_kinds` / `error_kind` (introspection), and
83
83
  `encode_permalink` / `decode_permalink` — the shareable-URL codec the
84
- [playground](https://ashforde.org) uses to round-trip a whole scenario through the
84
+ [playground](https://kshana.dev) uses to round-trip a whole scenario through the
85
85
  address-bar fragment.
86
86
 
87
87
  Every figure of merit is labelled **validated** or **modelled**; optical-clock figures
@@ -92,7 +92,7 @@ navigation is simulation-validated; real-mission deep-space OD is on the roadmap
92
92
  ## Learn more
93
93
 
94
94
  - **Full README & validation matrix** → <https://github.com/AshfordeOU/kshana>
95
- - **Live playground** → <https://ashforde.org>
95
+ - **Live playground** → <https://kshana.dev>
96
96
  - **Capabilities** → [docs/CAPABILITY.md](https://github.com/AshfordeOU/kshana/blob/main/docs/CAPABILITY.md)
97
97
  - **Validation & provenance** → [docs/VALIDATION.md](https://github.com/AshfordeOU/kshana/blob/main/docs/VALIDATION.md) · [docs/PROVENANCE.md](https://github.com/AshfordeOU/kshana/blob/main/docs/PROVENANCE.md)
98
98
 
@@ -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:4fd7e47c-819f-ee15-0566-8651aca3bb00",
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.25.0",
384
+ "purl": "pkg:cargo/kshana@0.25.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.25.0",
9
9
  "license": "AGPL-3.0-only",
10
10
  "repository": {
11
11
  "type": "git",