nds-mcp 0.1.0 → 0.2.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 +281 -81
- package/bin/nds-mcp.js +1 -1
- package/dist/constants.d.ts +17 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +16 -0
- package/dist/constants.js.map +1 -1
- package/dist/db/chargeRadii.d.ts +19 -1
- package/dist/db/chargeRadii.d.ts.map +1 -1
- package/dist/db/chargeRadii.js +159 -2
- package/dist/db/chargeRadii.js.map +1 -1
- package/dist/db/codata.d.ts +13 -0
- package/dist/db/codata.d.ts.map +1 -0
- package/dist/db/codata.js +71 -0
- package/dist/db/codata.js.map +1 -0
- package/dist/db/dbPathCommon.d.ts +10 -0
- package/dist/db/dbPathCommon.d.ts.map +1 -0
- package/dist/db/dbPathCommon.js +48 -0
- package/dist/db/dbPathCommon.js.map +1 -0
- package/dist/db/ddep.d.ts +10 -0
- package/dist/db/ddep.d.ts.map +1 -0
- package/dist/db/ddep.js +73 -0
- package/dist/db/ddep.js.map +1 -0
- package/dist/db/ddepDb.d.ts +11 -0
- package/dist/db/ddepDb.d.ts.map +1 -0
- package/dist/db/ddepDb.js +71 -0
- package/dist/db/ddepDb.js.map +1 -0
- package/dist/db/download.d.ts +6 -0
- package/dist/db/download.d.ts.map +1 -0
- package/dist/db/download.js +114 -0
- package/dist/db/download.js.map +1 -0
- package/dist/db/ensureDb.d.ts +1 -2
- package/dist/db/ensureDb.d.ts.map +1 -1
- package/dist/db/ensureDb.js +12 -80
- package/dist/db/ensureDb.js.map +1 -1
- package/dist/db/exfor.d.ts +19 -0
- package/dist/db/exfor.d.ts.map +1 -0
- package/dist/db/exfor.js +164 -0
- package/dist/db/exfor.js.map +1 -0
- package/dist/db/exforDb.d.ts +11 -0
- package/dist/db/exforDb.d.ts.map +1 -0
- package/dist/db/exforDb.js +74 -0
- package/dist/db/exforDb.js.map +1 -0
- package/dist/db/fendlDb.d.ts +11 -0
- package/dist/db/fendlDb.d.ts.map +1 -0
- package/dist/db/fendlDb.js +71 -0
- package/dist/db/fendlDb.js.map +1 -0
- package/dist/db/irdffDb.d.ts +11 -0
- package/dist/db/irdffDb.d.ts.map +1 -0
- package/dist/db/irdffDb.js +71 -0
- package/dist/db/irdffDb.js.map +1 -0
- package/dist/db/jendl5CrossSection.d.ts +36 -0
- package/dist/db/jendl5CrossSection.d.ts.map +1 -0
- package/dist/db/jendl5CrossSection.js +351 -0
- package/dist/db/jendl5CrossSection.js.map +1 -0
- package/dist/db/jendl5Db.d.ts +11 -0
- package/dist/db/jendl5Db.d.ts.map +1 -0
- package/dist/db/jendl5Db.js +74 -0
- package/dist/db/jendl5Db.js.map +1 -0
- package/dist/db/jendl5Interpolation.d.ts +15 -0
- package/dist/db/jendl5Interpolation.d.ts.map +1 -0
- package/dist/db/jendl5Interpolation.js +84 -0
- package/dist/db/jendl5Interpolation.js.map +1 -0
- package/dist/db/jendl5RadiationSpec.d.ts +11 -0
- package/dist/db/jendl5RadiationSpec.d.ts.map +1 -0
- package/dist/db/jendl5RadiationSpec.js +96 -0
- package/dist/db/jendl5RadiationSpec.js.map +1 -0
- package/dist/db/ndsDb.d.ts +4 -0
- package/dist/db/ndsDb.d.ts.map +1 -1
- package/dist/db/ndsDb.js +11 -17
- package/dist/db/ndsDb.js.map +1 -1
- package/dist/db/sqliteFileValidation.d.ts +3 -0
- package/dist/db/sqliteFileValidation.d.ts.map +1 -0
- package/dist/db/sqliteFileValidation.js +23 -0
- package/dist/db/sqliteFileValidation.js.map +1 -0
- package/dist/db/universalQuery.d.ts +43 -0
- package/dist/db/universalQuery.d.ts.map +1 -0
- package/dist/db/universalQuery.js +126 -0
- package/dist/db/universalQuery.js.map +1 -0
- package/dist/index.js +117 -3
- package/dist/index.js.map +1 -1
- package/dist/ingest/buildCodataDb.d.ts +9 -0
- package/dist/ingest/buildCodataDb.d.ts.map +1 -0
- package/dist/ingest/buildCodataDb.js +147 -0
- package/dist/ingest/buildCodataDb.js.map +1 -0
- package/dist/ingest/buildDb.d.ts +3 -2
- package/dist/ingest/buildDb.d.ts.map +1 -1
- package/dist/ingest/buildDb.js +45 -6
- package/dist/ingest/buildDb.js.map +1 -1
- package/dist/ingest/buildDdepDb.d.ts +5 -0
- package/dist/ingest/buildDdepDb.d.ts.map +1 -0
- package/dist/ingest/buildDdepDb.js +183 -0
- package/dist/ingest/buildDdepDb.js.map +1 -0
- package/dist/ingest/buildExforDb.d.ts +4 -0
- package/dist/ingest/buildExforDb.d.ts.map +1 -0
- package/dist/ingest/buildExforDb.js +129 -0
- package/dist/ingest/buildExforDb.js.map +1 -0
- package/dist/ingest/buildFendlDb.d.ts +6 -0
- package/dist/ingest/buildFendlDb.d.ts.map +1 -0
- package/dist/ingest/buildFendlDb.js +239 -0
- package/dist/ingest/buildFendlDb.js.map +1 -0
- package/dist/ingest/buildIrdffDb.d.ts +6 -0
- package/dist/ingest/buildIrdffDb.d.ts.map +1 -0
- package/dist/ingest/buildIrdffDb.js +217 -0
- package/dist/ingest/buildIrdffDb.js.map +1 -0
- package/dist/ingest/buildJendl5Db.d.ts +8 -0
- package/dist/ingest/buildJendl5Db.d.ts.map +1 -0
- package/dist/ingest/buildJendl5Db.js +170 -0
- package/dist/ingest/buildJendl5Db.js.map +1 -0
- package/dist/ingest/cli.d.ts +2 -0
- package/dist/ingest/cli.d.ts.map +1 -0
- package/dist/ingest/cli.js +168 -0
- package/dist/ingest/cli.js.map +1 -0
- package/dist/ingest/jendl5DbCore.d.ts +10 -0
- package/dist/ingest/jendl5DbCore.d.ts.map +1 -0
- package/dist/ingest/jendl5DbCore.js +153 -0
- package/dist/ingest/jendl5DbCore.js.map +1 -0
- package/dist/ingest/metaContract.d.ts +12 -0
- package/dist/ingest/metaContract.d.ts.map +1 -0
- package/dist/ingest/metaContract.js +61 -0
- package/dist/ingest/metaContract.js.map +1 -0
- package/dist/ingest/parseJendl5Dec.d.ts +29 -0
- package/dist/ingest/parseJendl5Dec.d.ts.map +1 -0
- package/dist/ingest/parseJendl5Dec.js +54 -0
- package/dist/ingest/parseJendl5Dec.js.map +1 -0
- package/dist/ingest/parseJendl5Xs.d.ts +36 -0
- package/dist/ingest/parseJendl5Xs.d.ts.map +1 -0
- package/dist/ingest/parseJendl5Xs.js +429 -0
- package/dist/ingest/parseJendl5Xs.js.map +1 -0
- package/dist/selfUpdate.d.ts +32 -0
- package/dist/selfUpdate.d.ts.map +1 -0
- package/dist/selfUpdate.js +116 -0
- package/dist/selfUpdate.js.map +1 -0
- package/dist/shared/sqlite3Cli.d.ts +3 -1
- package/dist/shared/sqlite3Cli.d.ts.map +1 -1
- package/dist/shared/sqlite3Cli.js +101 -45
- package/dist/shared/sqlite3Cli.js.map +1 -1
- package/dist/tools/dispatcher.js +1 -1
- package/dist/tools/dispatcher.js.map +1 -1
- package/dist/tools/registry.d.ts +1 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +904 -10
- package/dist/tools/registry.js.map +1 -1
- package/package.json +10 -4
package/README.md
CHANGED
|
@@ -2,89 +2,158 @@
|
|
|
2
2
|
|
|
3
3
|
Nuclear Data Services MCP server — offline SQLite-backed nuclear physics data for AI agents.
|
|
4
4
|
|
|
5
|
-
Provides
|
|
5
|
+
Provides standard-mode tools covering atomic masses (AME2020), nuclear properties (NUBASE2020), charge radii (IAEA + laser spectroscopy), energy levels and gamma transitions (ENSDF), light nuclei resonance data (TUNL, A=3–20), bibliographic references, JENDL-5 decay/cross-section data, EXFOR experimental data, CODATA fundamental constants, update checks, plus discovery/query helpers (`nds_catalog`, `nds_schema`, `nds_query`).
|
|
6
6
|
|
|
7
7
|
## Quick Start
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npx nds-mcp
|
|
10
|
+
npx -y nds-mcp
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
The pre-built SQLite database (~85 MB) is automatically downloaded to `~/.nds-mcp/nds.sqlite` on first launch.
|
|
13
|
+
The pre-built SQLite database (~85 MB) is automatically downloaded to `~/.nds-mcp/nds.sqlite` on first launch.
|
|
14
|
+
By default it downloads from this repo's GitHub Releases (override via `NDS_DB_DOWNLOAD_URL`).
|
|
15
|
+
Release assets use a single compressed format: `*.sqlite.gz` (auto-decompressed after download).
|
|
16
|
+
|
|
17
|
+
Optional tools `JENDL-5` / `EXFOR` use separate SQLite files and are auto-downloaded on demand.
|
|
18
|
+
Maintainer ingest support also includes `FENDL-3.2c` and `IRDFF-II` optional SQLite files.
|
|
19
|
+
`CODATA` is bundled inside `nds.sqlite`.
|
|
20
|
+
|
|
21
|
+
## Databases
|
|
22
|
+
|
|
23
|
+
| SQLite file | Default path | Download behavior | Includes |
|
|
24
|
+
|-------------|--------------|-------------------|----------|
|
|
25
|
+
| `nds.sqlite` | `~/.nds-mcp/nds.sqlite` | Auto-download on server startup *(required)* | AME2020 masses + reaction Q-values; NUBASE2020 nuclear properties; charge radii (IAEA + Li2021 laser spectroscopy); ENSDF (levels, gammas, decay feedings, references); TUNL light-nuclei resonance/level data (A=3–20); CODATA fundamental constants |
|
|
26
|
+
| `jendl5.sqlite` *(optional)* | `~/.nds-mcp/jendl5.sqlite` | Auto-download on first call to JENDL-5 tools | JENDL-5 decay data + radiation spectra; JENDL-5 pointwise cross sections + ENDF-6 interpolation laws |
|
|
27
|
+
| `exfor.sqlite` *(optional)* | `~/.nds-mcp/exfor.sqlite` | Auto-download on first call to EXFOR tools | EXFOR experimental data points (SIG/MACS/...) + per-entry metadata |
|
|
28
|
+
| `fendl32c.sqlite` *(optional, maintainer ingest)* | `~/.nds-mcp/fendl32c.sqlite` | Built via `nds-mcp ingest --fendl` (status visible in `nds_info`) | FENDL-3.2c evaluated ENDF-6 data for transport applications (photo-atomic, neutron, proton, deuteron) + embedded upstream zip archives (raw ENDF retained for MF/MT beyond what is normalized into tables) |
|
|
29
|
+
| `irdff2.sqlite` *(optional, maintainer ingest)* | `~/.nds-mcp/irdff2.sqlite` | Built via `nds-mcp ingest --irdff` (status visible in `nds_info`) | IRDFF-II evaluated ENDF-6 dosimetry neutron data + embedded upstream zip archives (raw ENDF retained for MF/MT beyond what is normalized into tables) |
|
|
30
|
+
|
|
31
|
+
You can always bring your own files by setting `NDS_DB_PATH` / `NDS_JENDL5_DB_PATH` / `NDS_EXFOR_DB_PATH` / `NDS_FENDL_DB_PATH` / `NDS_IRDFF_DB_PATH`.
|
|
32
|
+
|
|
33
|
+
## Glossary (Acronyms & Jargon)
|
|
34
|
+
|
|
35
|
+
- **MCP**: Model Context Protocol (the tool interface used by agents/LLMs).
|
|
36
|
+
- **IAEA**: International Atomic Energy Agency (many upstream nuclear-data sources and portals).
|
|
37
|
+
- **AME2020**: Atomic Mass Evaluation 2020 (atomic masses, separation energies, Q-values).
|
|
38
|
+
- **NUBASE2020**: Nuclear properties/decay evaluation (half-lives, spins, decay modes, isomers).
|
|
39
|
+
- **ENSDF**: Evaluated Nuclear Structure Data File (levels, gamma transitions, decay feedings).
|
|
40
|
+
- **TUNL**: Triangle Universities Nuclear Laboratory (light nuclei level/resonance tables, A=3–20).
|
|
41
|
+
- **JENDL-5**: Japanese Evaluated Nuclear Data Library v5 (evaluated nuclear data).
|
|
42
|
+
- **EXFOR**: Experimental Nuclear Reaction Data (experimental points + metadata).
|
|
43
|
+
- **FENDL-3.2c**: Fusion Evaluated Nuclear Data Library (transport-focused evaluated ENDF-6 sets).
|
|
44
|
+
- **IRDFF-II**: International Reactor Dosimetry and Fusion File (dosimetry-focused evaluated ENDF-6 sets).
|
|
45
|
+
- **CODATA**: Recommended fundamental constants (Committee on Data for Science and Technology).
|
|
46
|
+
- **ENDF-6**: *Evaluated Nuclear Data File* format (plain-text evaluated nuclear data, organized into sections).
|
|
47
|
+
- **MAT / MF / MT**: ENDF section identifiers: **MAT** (material id), **MF** (“file number”, data category), **MT** (reaction/quantity id). Example: **MF=3** = pointwise cross sections; **MT=1** = total; **MT=2** = elastic; **MT=102** = (n,γ) capture.
|
|
48
|
+
- **XS**: cross section.
|
|
49
|
+
- **BLOB**: SQLite “binary large object” column storing raw bytes. This project embeds some upstream zip archives as BLOBs for completeness; `nds_query` never returns BLOBs and forbids selecting them.
|
|
50
|
+
- **SIG / MACS**: EXFOR quantity codes: **SIG** = cross section; **MACS** = Maxwellian-averaged cross section.
|
|
51
|
+
|
|
52
|
+
### Optional DB auto-download trigger
|
|
53
|
+
|
|
54
|
+
- `jendl5.sqlite` is downloaded when calling `nds_get_radiation_spectrum`, `nds_list_available_targets`, `nds_get_reaction_info`, `nds_get_cross_section_table`, or `nds_interpolate_cross_section`.
|
|
55
|
+
- `exfor.sqlite` is downloaded when calling `nds_search_exfor` or `nds_get_exfor_entry`.
|
|
56
|
+
- These optional SQLite assets are published on this repo's GitHub Releases page (latest release assets).
|
|
57
|
+
- Download URL can point to either plain `.sqlite` or compressed `.sqlite.gz`; server auto-gunzips when needed.
|
|
58
|
+
- For maintainers, `jendl5.sqlite` should include both decay tables and XS tables (`jendl5_xs_meta` / `jendl5_xs_points` / `jendl5_xs_interp`) before release upload.
|
|
59
|
+
|
|
60
|
+
## Install (Optional)
|
|
61
|
+
|
|
62
|
+
Global install (lets you use `command: "nds-mcp"` in configs):
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm install -g nds-mcp
|
|
66
|
+
nds-mcp
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
From source:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
git clone https://github.com/fkguo/nds-mcp.git
|
|
73
|
+
cd nds-mcp
|
|
74
|
+
pnpm install
|
|
75
|
+
pnpm build
|
|
76
|
+
node dist/index.js
|
|
77
|
+
```
|
|
14
78
|
|
|
15
79
|
## Configuration
|
|
16
80
|
|
|
17
|
-
|
|
81
|
+
This is a **local stdio MCP server**. Launch options:
|
|
18
82
|
|
|
19
|
-
|
|
83
|
+
- `npx` (no install): `command: "npx"`, `args: ["-y", "nds-mcp"]`
|
|
84
|
+
- global install: `command: "nds-mcp"`, `args: []`
|
|
20
85
|
|
|
21
|
-
|
|
86
|
+
### Clients using `mcpServers` (same JSON)
|
|
87
|
+
|
|
88
|
+
Claude Code (`./.mcp.json`), Cursor (`./.cursor/mcp.json` or `~/.cursor/mcp.json`), Cline (`cline_mcp_settings.json`),
|
|
89
|
+
Kimi Code CLI (`~/.kimi/mcp.json`), Qwen Code CLI (`./.qwen/settings.json` or `~/.qwen/settings.json`).
|
|
22
90
|
|
|
23
91
|
```json
|
|
24
92
|
{
|
|
25
93
|
"mcpServers": {
|
|
26
94
|
"nds-mcp": {
|
|
27
95
|
"command": "npx",
|
|
28
|
-
"args": ["nds-mcp"]
|
|
96
|
+
"args": ["-y", "nds-mcp"],
|
|
97
|
+
"env": {}
|
|
29
98
|
}
|
|
30
99
|
}
|
|
31
100
|
}
|
|
32
101
|
```
|
|
33
102
|
|
|
34
|
-
| Client | Config location |
|
|
35
|
-
|--------|-----------------|
|
|
36
|
-
| Claude Desktop | `claude_desktop_config.json` |
|
|
37
|
-
| Claude Code | `.mcp.json` (project) or `~/.claude/mcp.json` (global) |
|
|
38
|
-
| Cursor | Settings → MCP → + Add new MCP server |
|
|
39
|
-
| Cherry Studio | Settings → MCP Servers → + Add |
|
|
40
|
-
| Chatbox | Settings → MCP → + Add |
|
|
41
|
-
|
|
42
103
|
### VS Code (Copilot)
|
|
43
104
|
|
|
44
|
-
VS Code uses
|
|
105
|
+
VS Code uses `.vscode/mcp.json` and a `servers` key:
|
|
45
106
|
|
|
46
107
|
```json
|
|
47
108
|
{
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
"args": ["nds-mcp"]
|
|
53
|
-
}
|
|
109
|
+
"servers": {
|
|
110
|
+
"nds-mcp": {
|
|
111
|
+
"command": "npx",
|
|
112
|
+
"args": ["-y", "nds-mcp"]
|
|
54
113
|
}
|
|
55
114
|
}
|
|
56
115
|
}
|
|
57
116
|
```
|
|
58
117
|
|
|
59
|
-
### Codex CLI
|
|
118
|
+
### Codex CLI
|
|
60
119
|
|
|
61
120
|
Add to `~/.codex/config.toml`:
|
|
62
121
|
|
|
63
122
|
```toml
|
|
64
123
|
[mcp_servers.nds-mcp]
|
|
65
124
|
command = "npx"
|
|
66
|
-
args = ["nds-mcp"]
|
|
125
|
+
args = ["-y", "nds-mcp"]
|
|
67
126
|
```
|
|
68
127
|
|
|
69
128
|
### OpenCode
|
|
70
129
|
|
|
71
|
-
Add to `opencode.json
|
|
130
|
+
Add to `opencode.json` (project) or `~/.config/opencode/opencode.json` (global):
|
|
72
131
|
|
|
73
132
|
```json
|
|
74
133
|
{
|
|
75
134
|
"mcp": {
|
|
76
135
|
"nds-mcp": {
|
|
77
|
-
"
|
|
78
|
-
"
|
|
136
|
+
"type": "local",
|
|
137
|
+
"command": ["npx", "-y", "nds-mcp"],
|
|
138
|
+
"enabled": true,
|
|
139
|
+
"environment": {}
|
|
79
140
|
}
|
|
80
141
|
}
|
|
81
142
|
}
|
|
82
143
|
```
|
|
83
144
|
|
|
84
|
-
###
|
|
145
|
+
### Cherry Studio
|
|
146
|
+
|
|
147
|
+
Settings → MCP Server → Add server:
|
|
148
|
+
|
|
149
|
+
- Type: `STDIO`
|
|
150
|
+
- Command: `npx`
|
|
151
|
+
- Parameters: `-y nds-mcp`
|
|
152
|
+
|
|
153
|
+
### Generic stdio (manual)
|
|
85
154
|
|
|
86
155
|
```bash
|
|
87
|
-
npx nds-mcp
|
|
156
|
+
npx -y nds-mcp
|
|
88
157
|
```
|
|
89
158
|
|
|
90
159
|
The server communicates over stdin/stdout (MCP protocol). Diagnostic messages go to stderr.
|
|
@@ -98,88 +167,219 @@ The server communicates over stdin/stdout (MCP protocol). Diagnostic messages go
|
|
|
98
167
|
| IAEA (Angeli & Marinova 2013) | `charge_radii` | RMS charge radii |
|
|
99
168
|
| Li et al. 2021 | `laser_radii`, `laser_radii_refs` | Laser spectroscopy charge radii with per-isotope references |
|
|
100
169
|
| ENSDF | `ensdf_levels`, `ensdf_gammas`, `ensdf_decay_feedings`, `ensdf_datasets`, `ensdf_references` | Nuclear structure: levels, gamma transitions, decay feedings |
|
|
170
|
+
| TUNL | `tunl_levels` | Light nuclei (A=3–20) energy levels, resonance widths, isospin, decay modes (59 nuclides, 2512 levels) |
|
|
171
|
+
| JENDL-5 Decay *(optional, `jendl5.sqlite`)* | `jendl5_decays`, `jendl5_decay_modes`, `jendl5_radiation` | Decay data + radiation spectra |
|
|
172
|
+
| JENDL-5 XS *(optional, `jendl5.sqlite`)* | `jendl5_xs_meta`, `jendl5_xs_points`, `jendl5_xs_interp` | Pointwise cross sections + ENDF-6 interpolation laws |
|
|
173
|
+
| EXFOR *(optional, `exfor.sqlite`)* | `exfor_entries`, `exfor_points` | Experimental data points (SIG/MACS/...) |
|
|
174
|
+
| CODATA 2022 | `codata_constants`, `codata_meta` | Fundamental constants (value/uncertainty/unit, exact/truncated flags) |
|
|
175
|
+
|
|
176
|
+
## Masses, Thresholds, and Near-Threshold Resonances (Important)
|
|
177
|
+
|
|
178
|
+
- `nds_get_mass` returns **AME atomic masses** (neutral atoms; electrons included). This is standard: many Q-values/threshold
|
|
179
|
+
computations can be done directly with atomic masses because electron masses largely cancel for reactions with the same total Z.
|
|
180
|
+
- If you need **nuclear masses**, convert via `M_nuc = M_atom - Z*m_e + B_e/c^2` (electron binding energies `B_e` are eV-scale for
|
|
181
|
+
light nuclei; include them only if you need sub-keV precision).
|
|
182
|
+
- For **unbound nuclei / broad resonances** (e.g. `5He`, `5Li`), a single real-number “ground-state energy/mass” depends on the
|
|
183
|
+
*resonance-parameter convention* (S-matrix pole vs eigenphase centroid vs cross-section peak). Mixing AME masses with level
|
|
184
|
+
energies from ENSDF/TUNL/evaluations can yield O(10–100 keV) shifts and even “threshold-above vs threshold-below” sign flips.
|
|
185
|
+
When doing threshold comparisons for such systems, use a single self-consistent evaluation/convention.
|
|
101
186
|
|
|
102
187
|
## Tools
|
|
103
188
|
|
|
104
189
|
| Tool | Description |
|
|
105
190
|
|------|-------------|
|
|
106
|
-
| `nds_info` | Database metadata: data versions, nuclide counts, file hash |
|
|
191
|
+
| `nds_info` | Database metadata: data versions, nuclide counts, file hash, optional DB status, and build/source metadata |
|
|
192
|
+
| `nds_catalog` | Catalog installed libraries and query entrypoints (what exists, where to query, and which tools to use) |
|
|
193
|
+
| `nds_schema` | Inspect SQLite schema for an installed library (tables/columns/foreign keys; indexes optional) |
|
|
194
|
+
| `nds_query` | Safe structured table query builder (filter/sort/paginate; no raw SQL). Enforces BLOB exclusion + `*_points` guardrails |
|
|
195
|
+
| `nds_list_raw_archives` | List embedded upstream ENDF-6 zip archive metadata for FENDL/IRDFF (never returns BLOB payloads) |
|
|
196
|
+
| `nds_check_update` | Check npm registry for newer `nds-mcp` version (read-only; no update performed) |
|
|
107
197
|
| `nds_find_nuclide` | Find nuclides by element, Z, and/or A (NUBASE2020) |
|
|
108
198
|
| `nds_get_mass` | Atomic mass data: mass excess, binding energy/A, atomic mass (AME2020) |
|
|
109
199
|
| `nds_get_separation_energy` | Nucleon separation energies: Sn, Sp, S2n, S2p (AME2020) |
|
|
110
200
|
| `nds_get_q_value` | Reaction Q-values: Qa, Q2bm, Qep, Qbn, etc. (AME2020) |
|
|
111
201
|
| `nds_get_decay` | Decay info: half-life, spin/parity, decay modes (NUBASE2020) |
|
|
112
|
-
| `nds_get_charge_radius` | Nuclear charge radii with
|
|
202
|
+
| `nds_get_charge_radius` | Nuclear charge radii with cross-source comparison (`mode=best|all|compare`) |
|
|
113
203
|
| `nds_search` | Search nuclides by property range (half-life, mass excess) |
|
|
114
|
-
| `nds_query_levels` | Nuclear energy levels from ENSDF |
|
|
204
|
+
| `nds_query_levels` | Nuclear energy levels from ENSDF + TUNL (auto-merged for A ≤ 20, with `source` discriminator) |
|
|
115
205
|
| `nds_query_gammas` | Gamma-ray transitions from ENSDF |
|
|
116
206
|
| `nds_query_decay_feedings` | Beta/EC decay feeding patterns from ENSDF |
|
|
117
207
|
| `nds_lookup_reference` | ENSDF/NSR bibliographic references |
|
|
208
|
+
| `nds_get_radiation_spectrum` | JENDL-5 decay radiation spectra (discrete lines + continuous summaries) |
|
|
209
|
+
| `nds_list_available_targets` | List available JENDL-5 XS targets (A/state) for a given Z/projectile |
|
|
210
|
+
| `nds_get_reaction_info` | List available JENDL-5 reaction channels for one target (mt/reaction/e-range/point-count) |
|
|
211
|
+
| `nds_get_cross_section_table` | JENDL-5 cross-section tables (`mode=raw|sampled`) |
|
|
212
|
+
| `nds_interpolate_cross_section` | ENDF-6 NBT/INT interpolation at one incident energy |
|
|
213
|
+
| `nds_search_exfor` | Search EXFOR data points (supports `quantity=SIG|MACS|...`) |
|
|
214
|
+
| `nds_get_exfor_entry` | Load full EXFOR entry payload by `entry_id` |
|
|
215
|
+
| `nds_get_constant` | Get one CODATA fundamental constant by name |
|
|
216
|
+
| `nds_list_constants` | List CODATA constants with filter and pagination |
|
|
217
|
+
|
|
218
|
+
## Universal Query (Schema + Structured Queries)
|
|
219
|
+
|
|
220
|
+
Use `nds_schema` to discover tables/columns, then `nds_query` to query them safely.
|
|
221
|
+
|
|
222
|
+
Safety rules enforced by `nds_query`:
|
|
223
|
+
|
|
224
|
+
- BLOB columns are never returned and cannot be explicitly selected (e.g. raw archive `content` fields).
|
|
225
|
+
- For big `*_points` tables, you must include a high-selectivity equality filter:
|
|
226
|
+
- `where.eq.xs_id` (evaluated XS tables), or
|
|
227
|
+
- `where.eq.entry_id` (EXFOR points)
|
|
228
|
+
- For embedded raw archives tables, you can query metadata columns (e.g. `rel_path`, `sha256`, `size_bytes`) but not the BLOB payload itself.
|
|
229
|
+
- For convenience, use `nds_list_raw_archives` to list raw-archive metadata (FENDL/IRDFF) without dealing with table names.
|
|
230
|
+
|
|
231
|
+
## Cross-Source Rule
|
|
232
|
+
|
|
233
|
+
For the same physical observable that exists in multiple sources/databases, tools return source-tagged values from each source by default. Any `recommended` / `best` value is an additional field and does not replace or hide other source values.
|
|
234
|
+
|
|
235
|
+
## Example: Charge Radii (new source-tagged output)
|
|
236
|
+
|
|
237
|
+
Use `mode=compare` to get all source-tagged values plus an explicit comparison summary:
|
|
238
|
+
|
|
239
|
+
```json
|
|
240
|
+
[
|
|
241
|
+
{
|
|
242
|
+
"Z": 4,
|
|
243
|
+
"A": 10,
|
|
244
|
+
"mode": "compare",
|
|
245
|
+
"source_values": [
|
|
246
|
+
{
|
|
247
|
+
"source_name": "Li et al. laser spectroscopy",
|
|
248
|
+
"value_fm": 2.355,
|
|
249
|
+
"uncertainty_fm": 0.017,
|
|
250
|
+
"unit": "fm"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"source_name": "IAEA charge radii",
|
|
254
|
+
"value_fm": 2.355,
|
|
255
|
+
"uncertainty_fm": 0.017,
|
|
256
|
+
"unit": "fm"
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
"recommended_source": "Li et al. laser spectroscopy",
|
|
260
|
+
"recommended_r_charge_fm": 2.355,
|
|
261
|
+
"recommended_r_charge_unc_fm": 0.017,
|
|
262
|
+
"max_source_diff_fm": 0
|
|
263
|
+
}
|
|
264
|
+
]
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
This reflects the current cross-source contract: return source-tagged values by default, and keep `recommended`/`best` as an additional field.
|
|
268
|
+
|
|
269
|
+
## Example: JENDL-5 Pb-208 `n,gamma`
|
|
270
|
+
|
|
271
|
+
Raw points table:
|
|
118
272
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"tool": "nds_get_cross_section_table",
|
|
276
|
+
"args": {
|
|
277
|
+
"Z": 82,
|
|
278
|
+
"A": 208,
|
|
279
|
+
"projectile": "n",
|
|
280
|
+
"mt": 102,
|
|
281
|
+
"mode": "raw",
|
|
282
|
+
"limit": 20
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Single-energy interpolation:
|
|
288
|
+
|
|
289
|
+
```json
|
|
290
|
+
{
|
|
291
|
+
"tool": "nds_interpolate_cross_section",
|
|
292
|
+
"args": {
|
|
293
|
+
"Z": 82,
|
|
294
|
+
"A": 208,
|
|
295
|
+
"projectile": "n",
|
|
296
|
+
"mt": 102,
|
|
297
|
+
"energy_eV": 0.0253
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Optional clamped interpolation (instead of out-of-range error):
|
|
303
|
+
|
|
304
|
+
```json
|
|
305
|
+
{
|
|
306
|
+
"tool": "nds_interpolate_cross_section",
|
|
307
|
+
"args": {
|
|
308
|
+
"Z": 82,
|
|
309
|
+
"A": 208,
|
|
310
|
+
"projectile": "n",
|
|
311
|
+
"mt": 102,
|
|
312
|
+
"energy_eV": 1000000000000,
|
|
313
|
+
"on_out_of_range": "clamp"
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Reaction channel discovery for one target:
|
|
319
|
+
|
|
320
|
+
```json
|
|
321
|
+
{
|
|
322
|
+
"tool": "nds_get_reaction_info",
|
|
323
|
+
"args": {
|
|
324
|
+
"Z": 82,
|
|
325
|
+
"A": 208,
|
|
326
|
+
"state": 0,
|
|
327
|
+
"projectile": "n"
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
If requested `mt`/`reaction` is absent for the nuclide, the server returns `INVALID_PARAMS` with `available_mts` and `available_reactions`.
|
|
333
|
+
If `Z` exists but requested `A/state` has no XS rows, server returns `INVALID_PARAMS` with `available_targets` (instead of generic not-found).
|
|
334
|
+
For common naming confusion (e.g., Li-6 `n,a` vs ENDF/JENDL `n,t` MT=105), error payload may include `suggested_reaction`.
|
|
335
|
+
`nds_interpolate_cross_section` defaults to `on_out_of_range="error"` (current behavior). With `on_out_of_range="clamp"`, response includes `clamped`, `requested_energy_eV`, `effective_energy_eV`, `tabulated_e_min_eV`, and `tabulated_e_max_eV`.
|
|
336
|
+
For `nds_search_exfor` INVALID_PARAMS, payload includes structured guidance: parameter dependency/mutual-exclusion rules, copyable example calls, and `available_for_Z` overview (`projectiles`/`quantities`/`A_values`) when available.
|
|
337
|
+
Cross-section responses include explicit context fields: `energy_unit="eV"`, `cross_section_unit="b"`, `jendl5_xs_version`.
|
|
338
|
+
Cross-section responses also include both `mt` (ENDF MT number) and a human-meaningful `reaction` label plus `reaction_description`
|
|
339
|
+
so users/agents don't need to memorize MT codes.
|
|
157
340
|
|
|
158
341
|
## Environment Variables
|
|
159
342
|
|
|
160
343
|
| Variable | Default | Description |
|
|
161
344
|
|----------|---------|-------------|
|
|
162
345
|
| `NDS_DB_PATH` | `~/.nds-mcp/nds.sqlite` | Database path. Set to skip auto-download. |
|
|
346
|
+
| `NDS_JENDL5_DB_PATH` | `~/.nds-mcp/jendl5.sqlite` | Optional JENDL-5 database path (auto-downloaded on first use if unset). |
|
|
347
|
+
| `NDS_JENDL5_DB_DOWNLOAD_URL` | GitHub Releases latest | Override auto-download URL for `jendl5.sqlite`. |
|
|
348
|
+
| `NDS_EXFOR_DB_PATH` | `~/.nds-mcp/exfor.sqlite` | Optional EXFOR database path (auto-downloaded on first use if unset). |
|
|
349
|
+
| `NDS_EXFOR_DB_DOWNLOAD_URL` | GitHub Releases latest | Override auto-download URL for `exfor.sqlite`. |
|
|
350
|
+
| `NDS_FENDL_DB_PATH` | `~/.nds-mcp/fendl32c.sqlite` | Optional FENDL-3.2c DB path (maintainer ingest / status in `nds_info`). |
|
|
351
|
+
| `NDS_FENDL_DB_DOWNLOAD_URL` | GitHub Releases latest | Override auto-download URL for `fendl32c.sqlite`. |
|
|
352
|
+
| `NDS_IRDFF_DB_PATH` | `~/.nds-mcp/irdff2.sqlite` | Optional IRDFF-II DB path (maintainer ingest / status in `nds_info`). |
|
|
353
|
+
| `NDS_IRDFF_DB_DOWNLOAD_URL` | GitHub Releases latest | Override auto-download URL for `irdff2.sqlite`. |
|
|
163
354
|
| `NDS_DB_DOWNLOAD_URL` | GitHub Releases latest | Custom download URL for the SQLite file. |
|
|
164
|
-
| `NDS_TOOL_MODE` | `standard` | Set to `full` to expose all tools. |
|
|
165
355
|
|
|
166
356
|
## Building the Database from Source
|
|
167
357
|
|
|
168
|
-
|
|
358
|
+
Maintainer-only: MCP clients never call these commands.
|
|
359
|
+
|
|
360
|
+
See `RUNBOOK.md` (repo only) for full SOP and raw input requirements. Minimal JENDL-5 build:
|
|
169
361
|
|
|
170
362
|
```bash
|
|
171
|
-
|
|
363
|
+
# Decay sublibrary
|
|
364
|
+
scripts/download-jendl5-dec.sh ~/.nds-mcp/raw/jendl5-dec_upd5.tar.gz
|
|
365
|
+
pnpm run ingest:jendl5-dec -- --source ~/.nds-mcp/raw/jendl5-dec_upd5.tar.gz --output ~/.nds-mcp/jendl5.sqlite
|
|
366
|
+
|
|
367
|
+
# Neutron pointwise XS sublibrary (300K, full archive)
|
|
368
|
+
scripts/download-jendl5-xs.sh ~/.nds-mcp/raw/jendl5-n-300K.tar.gz
|
|
369
|
+
pnpm run ingest:jendl5-xs -- --source ~/.nds-mcp/raw/jendl5-n-300K.tar.gz --output ~/.nds-mcp/jendl5.sqlite
|
|
172
370
|
```
|
|
173
371
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
-
|
|
372
|
+
`--jendl5-xs` accepts tar/tgz/zip archives, extracted directories, single ENDF text files (`.dat` / `.endf` / `.txt`, including `.gz`), and json/jsonl sources.
|
|
373
|
+
Zip extraction uses system `unzip`; install it on hosts that run ingest jobs.
|
|
374
|
+
|
|
375
|
+
Release upload flow for optional DBs:
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
scripts/check-db.sh --only main,jendl5
|
|
379
|
+
scripts/release-phase2-dbs.sh --tag <tag> --repo fkguo/nds-mcp --jendl5 ~/.nds-mcp/jendl5.sqlite
|
|
380
|
+
```
|
|
181
381
|
|
|
182
|
-
|
|
382
|
+
Rule: build sqlite first, verify it locally, then upload release asset.
|
|
183
383
|
|
|
184
384
|
## License
|
|
185
385
|
|
package/bin/nds-mcp.js
CHANGED
|
@@ -12,7 +12,7 @@ const distEntry = path.resolve(__dirname, '..', 'dist', 'index.js');
|
|
|
12
12
|
|
|
13
13
|
if (!existsSync(distEntry)) {
|
|
14
14
|
console.error(`[nds-mcp] Build output missing: ${distEntry}`);
|
|
15
|
-
console.error('[nds-mcp] Run: pnpm
|
|
15
|
+
console.error('[nds-mcp] Run: pnpm build');
|
|
16
16
|
process.exitCode = 1;
|
|
17
17
|
process.exit();
|
|
18
18
|
}
|
package/dist/constants.d.ts
CHANGED
|
@@ -6,9 +6,25 @@ export declare const NDS_GET_DECAY: "nds_get_decay";
|
|
|
6
6
|
export declare const NDS_GET_CHARGE_RADIUS: "nds_get_charge_radius";
|
|
7
7
|
export declare const NDS_SEARCH: "nds_search";
|
|
8
8
|
export declare const NDS_INFO: "nds_info";
|
|
9
|
+
export declare const NDS_CATALOG: "nds_catalog";
|
|
10
|
+
export declare const NDS_SCHEMA: "nds_schema";
|
|
11
|
+
export declare const NDS_QUERY: "nds_query";
|
|
12
|
+
export declare const NDS_LIST_RAW_ARCHIVES: "nds_list_raw_archives";
|
|
13
|
+
export declare const NDS_CHECK_UPDATE: "nds_check_update";
|
|
14
|
+
export declare const NDS_SELF_UPDATE: "nds_self_update";
|
|
9
15
|
export declare const NDS_QUERY_LEVELS: "nds_query_levels";
|
|
10
16
|
export declare const NDS_QUERY_GAMMAS: "nds_query_gammas";
|
|
11
17
|
export declare const NDS_QUERY_DECAY_FEEDINGS: "nds_query_decay_feedings";
|
|
12
18
|
export declare const NDS_LOOKUP_REFERENCE: "nds_lookup_reference";
|
|
13
|
-
export
|
|
19
|
+
export declare const NDS_GET_RADIATION_SPECTRUM: "nds_get_radiation_spectrum";
|
|
20
|
+
export declare const NDS_LIST_AVAILABLE_TARGETS: "nds_list_available_targets";
|
|
21
|
+
export declare const NDS_GET_REACTION_INFO: "nds_get_reaction_info";
|
|
22
|
+
export declare const NDS_GET_CROSS_SECTION_TABLE: "nds_get_cross_section_table";
|
|
23
|
+
export declare const NDS_INTERPOLATE_CROSS_SECTION: "nds_interpolate_cross_section";
|
|
24
|
+
export declare const NDS_SEARCH_EXFOR: "nds_search_exfor";
|
|
25
|
+
export declare const NDS_GET_EXFOR_ENTRY: "nds_get_exfor_entry";
|
|
26
|
+
export declare const NDS_GET_CONSTANT: "nds_get_constant";
|
|
27
|
+
export declare const NDS_LIST_CONSTANTS: "nds_list_constants";
|
|
28
|
+
export declare const NDS_GET_DDEP_DECAY: "nds_get_ddep_decay";
|
|
29
|
+
export type NdsToolName = typeof NDS_FIND_NUCLIDE | typeof NDS_GET_MASS | typeof NDS_GET_SEPARATION_ENERGY | typeof NDS_GET_Q_VALUE | typeof NDS_GET_DECAY | typeof NDS_GET_CHARGE_RADIUS | typeof NDS_SEARCH | typeof NDS_INFO | typeof NDS_CATALOG | typeof NDS_SCHEMA | typeof NDS_QUERY | typeof NDS_LIST_RAW_ARCHIVES | typeof NDS_CHECK_UPDATE | typeof NDS_SELF_UPDATE | typeof NDS_QUERY_LEVELS | typeof NDS_QUERY_GAMMAS | typeof NDS_QUERY_DECAY_FEEDINGS | typeof NDS_LOOKUP_REFERENCE | typeof NDS_GET_RADIATION_SPECTRUM | typeof NDS_LIST_AVAILABLE_TARGETS | typeof NDS_GET_REACTION_INFO | typeof NDS_GET_CROSS_SECTION_TABLE | typeof NDS_INTERPOLATE_CROSS_SECTION | typeof NDS_SEARCH_EXFOR | typeof NDS_GET_EXFOR_ENTRY | typeof NDS_GET_CONSTANT | typeof NDS_LIST_CONSTANTS | typeof NDS_GET_DDEP_DECAY;
|
|
14
30
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAG,kBAA2B,CAAC;AAC5D,eAAO,MAAM,YAAY,EAAG,cAAuB,CAAC;AACpD,eAAO,MAAM,yBAAyB,EAAG,2BAAoC,CAAC;AAC9E,eAAO,MAAM,eAAe,EAAG,iBAA0B,CAAC;AAC1D,eAAO,MAAM,aAAa,EAAG,eAAwB,CAAC;AACtD,eAAO,MAAM,qBAAqB,EAAG,uBAAgC,CAAC;AACtE,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAC;AAChD,eAAO,MAAM,QAAQ,EAAG,UAAmB,CAAC;AAC5C,eAAO,MAAM,gBAAgB,EAAG,kBAA2B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,EAAG,kBAA2B,CAAC;AAC5D,eAAO,MAAM,wBAAwB,EAAG,0BAAmC,CAAC;AAC5E,eAAO,MAAM,oBAAoB,EAAG,sBAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAG,kBAA2B,CAAC;AAC5D,eAAO,MAAM,YAAY,EAAG,cAAuB,CAAC;AACpD,eAAO,MAAM,yBAAyB,EAAG,2BAAoC,CAAC;AAC9E,eAAO,MAAM,eAAe,EAAG,iBAA0B,CAAC;AAC1D,eAAO,MAAM,aAAa,EAAG,eAAwB,CAAC;AACtD,eAAO,MAAM,qBAAqB,EAAG,uBAAgC,CAAC;AACtE,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAC;AAChD,eAAO,MAAM,QAAQ,EAAG,UAAmB,CAAC;AAC5C,eAAO,MAAM,WAAW,EAAG,aAAsB,CAAC;AAClD,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAC;AAChD,eAAO,MAAM,SAAS,EAAG,WAAoB,CAAC;AAC9C,eAAO,MAAM,qBAAqB,EAAG,uBAAgC,CAAC;AACtE,eAAO,MAAM,gBAAgB,EAAG,kBAA2B,CAAC;AAC5D,eAAO,MAAM,eAAe,EAAG,iBAA0B,CAAC;AAC1D,eAAO,MAAM,gBAAgB,EAAG,kBAA2B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,EAAG,kBAA2B,CAAC;AAC5D,eAAO,MAAM,wBAAwB,EAAG,0BAAmC,CAAC;AAC5E,eAAO,MAAM,oBAAoB,EAAG,sBAA+B,CAAC;AACpE,eAAO,MAAM,0BAA0B,EAAG,4BAAqC,CAAC;AAChF,eAAO,MAAM,0BAA0B,EAAG,4BAAqC,CAAC;AAChF,eAAO,MAAM,qBAAqB,EAAG,uBAAgC,CAAC;AACtE,eAAO,MAAM,2BAA2B,EAAG,6BAAsC,CAAC;AAClF,eAAO,MAAM,6BAA6B,EAAG,+BAAwC,CAAC;AACtF,eAAO,MAAM,gBAAgB,EAAG,kBAA2B,CAAC;AAC5D,eAAO,MAAM,mBAAmB,EAAG,qBAA8B,CAAC;AAClE,eAAO,MAAM,gBAAgB,EAAG,kBAA2B,CAAC;AAC5D,eAAO,MAAM,kBAAkB,EAAG,oBAA6B,CAAC;AAChE,eAAO,MAAM,kBAAkB,EAAG,oBAA6B,CAAC;AAEhE,MAAM,MAAM,WAAW,GACnB,OAAO,gBAAgB,GACvB,OAAO,YAAY,GACnB,OAAO,yBAAyB,GAChC,OAAO,eAAe,GACtB,OAAO,aAAa,GACpB,OAAO,qBAAqB,GAC5B,OAAO,UAAU,GACjB,OAAO,QAAQ,GACf,OAAO,WAAW,GAClB,OAAO,UAAU,GACjB,OAAO,SAAS,GAChB,OAAO,qBAAqB,GAC5B,OAAO,gBAAgB,GACvB,OAAO,eAAe,GACtB,OAAO,gBAAgB,GACvB,OAAO,gBAAgB,GACvB,OAAO,wBAAwB,GAC/B,OAAO,oBAAoB,GAC3B,OAAO,0BAA0B,GACjC,OAAO,0BAA0B,GACjC,OAAO,qBAAqB,GAC5B,OAAO,2BAA2B,GAClC,OAAO,6BAA6B,GACpC,OAAO,gBAAgB,GACvB,OAAO,mBAAmB,GAC1B,OAAO,gBAAgB,GACvB,OAAO,kBAAkB,GACzB,OAAO,kBAAkB,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -6,8 +6,24 @@ export const NDS_GET_DECAY = 'nds_get_decay';
|
|
|
6
6
|
export const NDS_GET_CHARGE_RADIUS = 'nds_get_charge_radius';
|
|
7
7
|
export const NDS_SEARCH = 'nds_search';
|
|
8
8
|
export const NDS_INFO = 'nds_info';
|
|
9
|
+
export const NDS_CATALOG = 'nds_catalog';
|
|
10
|
+
export const NDS_SCHEMA = 'nds_schema';
|
|
11
|
+
export const NDS_QUERY = 'nds_query';
|
|
12
|
+
export const NDS_LIST_RAW_ARCHIVES = 'nds_list_raw_archives';
|
|
13
|
+
export const NDS_CHECK_UPDATE = 'nds_check_update';
|
|
14
|
+
export const NDS_SELF_UPDATE = 'nds_self_update';
|
|
9
15
|
export const NDS_QUERY_LEVELS = 'nds_query_levels';
|
|
10
16
|
export const NDS_QUERY_GAMMAS = 'nds_query_gammas';
|
|
11
17
|
export const NDS_QUERY_DECAY_FEEDINGS = 'nds_query_decay_feedings';
|
|
12
18
|
export const NDS_LOOKUP_REFERENCE = 'nds_lookup_reference';
|
|
19
|
+
export const NDS_GET_RADIATION_SPECTRUM = 'nds_get_radiation_spectrum';
|
|
20
|
+
export const NDS_LIST_AVAILABLE_TARGETS = 'nds_list_available_targets';
|
|
21
|
+
export const NDS_GET_REACTION_INFO = 'nds_get_reaction_info';
|
|
22
|
+
export const NDS_GET_CROSS_SECTION_TABLE = 'nds_get_cross_section_table';
|
|
23
|
+
export const NDS_INTERPOLATE_CROSS_SECTION = 'nds_interpolate_cross_section';
|
|
24
|
+
export const NDS_SEARCH_EXFOR = 'nds_search_exfor';
|
|
25
|
+
export const NDS_GET_EXFOR_ENTRY = 'nds_get_exfor_entry';
|
|
26
|
+
export const NDS_GET_CONSTANT = 'nds_get_constant';
|
|
27
|
+
export const NDS_LIST_CONSTANTS = 'nds_list_constants';
|
|
28
|
+
export const NDS_GET_DDEP_DECAY = 'nds_get_ddep_decay';
|
|
13
29
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,YAAY,GAAG,cAAuB,CAAC;AACpD,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAAoC,CAAC;AAC9E,MAAM,CAAC,MAAM,eAAe,GAAG,iBAA0B,CAAC;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,eAAwB,CAAC;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAgC,CAAC;AACtE,MAAM,CAAC,MAAM,UAAU,GAAG,YAAqB,CAAC;AAChD,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAmB,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAAmC,CAAC;AAC5E,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,YAAY,GAAG,cAAuB,CAAC;AACpD,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAAoC,CAAC;AAC9E,MAAM,CAAC,MAAM,eAAe,GAAG,iBAA0B,CAAC;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,eAAwB,CAAC;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAgC,CAAC;AACtE,MAAM,CAAC,MAAM,UAAU,GAAG,YAAqB,CAAC;AAChD,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAmB,CAAC;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAsB,CAAC;AAClD,MAAM,CAAC,MAAM,UAAU,GAAG,YAAqB,CAAC;AAChD,MAAM,CAAC,MAAM,SAAS,GAAG,WAAoB,CAAC;AAC9C,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAgC,CAAC;AACtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,iBAA0B,CAAC;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAAmC,CAAC;AAC5E,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAA+B,CAAC;AACpE,MAAM,CAAC,MAAM,0BAA0B,GAAG,4BAAqC,CAAC;AAChF,MAAM,CAAC,MAAM,0BAA0B,GAAG,4BAAqC,CAAC;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAgC,CAAC;AACtE,MAAM,CAAC,MAAM,2BAA2B,GAAG,6BAAsC,CAAC;AAClF,MAAM,CAAC,MAAM,6BAA6B,GAAG,+BAAwC,CAAC;AACtF,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAA8B,CAAC;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAA6B,CAAC;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAA6B,CAAC"}
|
package/dist/db/chargeRadii.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export type ChargeRadiusMode = 'best' | 'all' | 'compare';
|
|
1
2
|
export interface LaserSourceInfo {
|
|
2
3
|
delta_r2_fm2: number;
|
|
3
4
|
delta_r2_unc_fm2: number | null;
|
|
@@ -17,6 +18,23 @@ export interface ChargeRadiusResult {
|
|
|
17
18
|
r_charge_preliminary_fm: number | null;
|
|
18
19
|
r_charge_preliminary_unc_fm: number | null;
|
|
19
20
|
laser_spectroscopy: LaserSourceInfo | null;
|
|
21
|
+
observable_id: string;
|
|
22
|
+
mode: ChargeRadiusMode;
|
|
23
|
+
recommended_source: string | null;
|
|
24
|
+
recommended_source_version: string | null;
|
|
25
|
+
recommended_r_charge_fm: number | null;
|
|
26
|
+
recommended_r_charge_unc_fm: number | null;
|
|
27
|
+
source_values: RadiusSourceValue[];
|
|
28
|
+
max_source_diff_fm: number | null;
|
|
20
29
|
}
|
|
21
|
-
export
|
|
30
|
+
export interface RadiusSourceValue {
|
|
31
|
+
source_name: string;
|
|
32
|
+
source_version: string;
|
|
33
|
+
as_of: string;
|
|
34
|
+
method: string;
|
|
35
|
+
value_fm: number | null;
|
|
36
|
+
uncertainty_fm: number | null;
|
|
37
|
+
unit: 'fm';
|
|
38
|
+
}
|
|
39
|
+
export declare function getChargeRadius(dbPath: string, Z: number, A?: number, mode?: ChargeRadiusMode): Promise<ChargeRadiusResult[]>;
|
|
22
40
|
//# sourceMappingURL=chargeRadii.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chargeRadii.d.ts","sourceRoot":"","sources":["../../src/db/chargeRadii.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,kBAAkB,EAAE,eAAe,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"chargeRadii.d.ts","sourceRoot":"","sources":["../../src/db/chargeRadii.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,kBAAkB,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,gBAAgB,CAAC;IACvB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAkDD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC;CACZ;AAkJD,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,MAAM,EACT,CAAC,CAAC,EAAE,MAAM,EACV,IAAI,GAAE,gBAAyB,GAC9B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAsF/B"}
|