@delta-infra/cli 1.1.18 → 1.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +507 -513
  2. package/checksums.txt +5 -5
  3. package/package.json +3 -2
  4. package/scripts/install-wizard.js +689 -701
  5. package/scripts/install.js +442 -442
  6. package/scripts/run.js +65 -65
  7. package/skills/delta-protein/AGENTS.md +73 -0
  8. package/skills/delta-protein/SKILL.md +389 -0
  9. package/skills/delta-protein/agents/openai.yaml +4 -0
  10. package/skills/delta-protein/references/bfitter.md +64 -0
  11. package/skills/delta-protein/references/catapro_predict.md +63 -0
  12. package/skills/delta-protein/references/catpred_predict.md +65 -0
  13. package/skills/delta-protein/references/caver_tunnel_analyze.md +63 -0
  14. package/skills/delta-protein/references/consensus_mutation.md +61 -0
  15. package/skills/delta-protein/references/consurf_predict.md +67 -0
  16. package/skills/delta-protein/references/crop_sequence.md +69 -0
  17. package/skills/delta-protein/references/dock.md +82 -0
  18. package/skills/delta-protein/references/dock_score.md +70 -0
  19. package/skills/delta-protein/references/easifa_predict_active_site.md +70 -0
  20. package/skills/delta-protein/references/ephod_predict_mutation.md +66 -0
  21. package/skills/delta-protein/references/ephod_predict_protein.md +61 -0
  22. package/skills/delta-protein/references/esmfold2_predict.md +67 -0
  23. package/skills/delta-protein/references/evcouplings_mutation.md +64 -0
  24. package/skills/delta-protein/references/fasta_to_sequence.md +59 -0
  25. package/skills/delta-protein/references/foldseek.md +61 -0
  26. package/skills/delta-protein/references/generate_msa.md +61 -0
  27. package/skills/delta-protein/references/interpro_analyze.md +63 -0
  28. package/skills/delta-protein/references/mpnn_design_sequence.md +71 -0
  29. package/skills/delta-protein/references/multievolve.md +73 -0
  30. package/skills/delta-protein/references/pisa_query.md +70 -0
  31. package/skills/delta-protein/references/plip_analyze.md +65 -0
  32. package/skills/delta-protein/references/pocket_prediction.md +63 -0
  33. package/skills/delta-protein/references/protein_design.md +65 -0
  34. package/skills/delta-protein/references/protein_evolution.md +77 -0
  35. package/skills/delta-protein/references/protein_sol_predict_mutation.md +66 -0
  36. package/skills/delta-protein/references/protein_sol_predict_protein.md +61 -0
  37. package/skills/delta-protein/references/protenix.md +66 -0
  38. package/skills/delta-protein/references/protrek_search.md +90 -0
  39. package/skills/delta-protein/references/pubchem_search.md +68 -0
  40. package/skills/delta-protein/references/pubmed_search.md +79 -0
  41. package/skills/delta-protein/references/reap_design_primer.md +69 -0
  42. package/skills/delta-protein/references/rfd3_design.md +65 -0
  43. package/skills/delta-protein/references/structure_to_sequence.md +61 -0
  44. package/skills/delta-protein/references/summarize_result.md +68 -0
  45. package/skills/delta-protein/references/surface_charge.md +84 -0
  46. package/skills/delta-protein/references/uniprot_batch_query.md +63 -0
  47. package/skills/delta-protein/references/uniprot_query.md +64 -0
  48. package/skills/delta-protein/references/zero_shot_mutant_candidates.md +76 -0
  49. package/skills/delta-protein/scripts/gen_references.py +167 -0
  50. package/skills/delta-protein/scripts/output_metadata.json +275 -0
  51. package/skills/delta-sandbox/SKILL.md +388 -388
  52. package/skills/delta-sandbox/agents/openai.yaml +4 -4
  53. package/skills/delta-sandbox/references/commands.md +58 -58
  54. package/skills/delta-sandbox/references/lifecycle.md +100 -100
  55. package/skills/delta-sandbox/references/recipes.md +138 -138
  56. package/skills/delta-science/AGENTS.md +47 -47
  57. package/skills/delta-science/SKILL.md +227 -227
  58. package/skills/delta-science/agents/openai.yaml +4 -4
  59. package/skills/delta-science/references/antbo.md +105 -105
  60. package/skills/delta-science/references/delta-bo.md +92 -92
  61. package/skills/delta-science/references/gsasii.md +118 -118
  62. package/skills/delta-science/references/lammps.md +68 -68
  63. package/skills/delta-science/references/ldm-bo.md +132 -132
  64. package/skills/delta-science/references/materials-design.md +130 -130
  65. package/skills/delta-science/references/pubchem.md +128 -128
  66. package/skills/delta-science/references/pymatgen.md +69 -69
  67. package/skills/delta-science/references/qe.md +134 -134
  68. package/skills/delta-science/references/rdkit.md +141 -141
  69. package/skills/delta-science/references/strbo.md +95 -95
  70. package/skills/delta-science/references/synbo.md +201 -201
  71. package/skills/delta-science/references/xrd.md +688 -197
  72. package/skills/delta-science/scripts/catalog.py +92 -92
  73. package/skills/delta-science/scripts/generated_catalog.py +69 -69
  74. package/skills/delta-science/scripts/invoke.py +346 -346
  75. package/skills/delta-shared/SKILL.md +113 -113
  76. package/skills/delta-shared/agents/openai.yaml +4 -4
  77. package/skills/manifest.json +20 -19
@@ -1,128 +1,128 @@
1
- # PubChem reference
2
-
3
- Call this tool only through `delta-cli science invoke`. Business responses are in the top-level
4
- CLI `data`; read only the fields described here and do not search recursively. URLs in this file
5
- explain the endpoint schema and do not authorise direct HTTP access. For a basic lookup by a
6
- single common name, call `compound-summary` once. For multiple names, call
7
- `compound-batch-summary` once with a default body containing only `identifiers` and
8
- `namespace:"name"`; do not call health or schema first.
9
-
10
- Project results directly from `data`. Batch records are in `data.results[*]`, the original label
11
- is in `input`, and properties are nested under `properties`. Use this fixed SMILES fallback
12
- order: `CanonicalSMILES -> ConnectivitySMILES -> SMILES -> IsomericSMILES`. Do not treat PubChem
13
- `XLogP` and RDKit `MolLogP` as interchangeable; do not fill a `not_found` result with local
14
- calculations.
15
-
16
- Namespaces: `cid`, `name`, `smiles`, `inchi`, `inchikey`, `formula`.
17
-
18
- ## Health
19
-
20
- Operation: `health`; no request body.
21
-
22
- ## Resolve CIDs
23
-
24
- Operation: `compound-resolve-cids`.
25
-
26
- ```json
27
- {"identifier": "aspirin", "namespace": "name", "max_records": 20}
28
- ```
29
-
30
- `max_records`: 1-100.
31
-
32
- ## Properties
33
-
34
- Operation: `compound-properties`.
35
-
36
- ```json
37
- {
38
- "identifier": "2244",
39
- "namespace": "cid",
40
- "properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES", "IUPACName"]
41
- }
42
- ```
43
-
44
- Allowed properties include `MolecularFormula`, `MolecularWeight`,
45
- `CanonicalSMILES`, `IsomericSMILES`, `SMILES`, `ConnectivitySMILES`,
46
- `IUPACName`, `InChI`, `InChIKey`, `XLogP`, `TPSA`, `HBondDonorCount`,
47
- `HBondAcceptorCount`, `RotatableBondCount`, `ExactMass`, `MonoisotopicMass`,
48
- `Charge`, `HeavyAtomCount`, `Complexity`, `CovalentUnitCount`,
49
- `DefinedAtomStereoCount`, `UndefinedAtomStereoCount`, `DefinedBondStereoCount`,
50
- `UndefinedBondStereoCount`, and `IsotopeAtomCount`.
51
-
52
- ## Synonyms
53
-
54
- Operation: `compound-synonyms`.
55
-
56
- ```json
57
- {"identifier": "2244", "namespace": "cid", "max_synonyms": 50}
58
- ```
59
-
60
- `max_synonyms`: 1-500.
61
-
62
- ## Summary
63
-
64
- Operation: `compound-summary`.
65
-
66
- ```json
67
- {
68
- "identifier": "aspirin",
69
- "namespace": "name",
70
- "properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES", "IUPACName"],
71
- "synonym_limit": 20
72
- }
73
- ```
74
-
75
- `synonym_limit`: 0-100. Use this endpoint for general compound lookup because
76
- it resolves CID, selected properties, and synonyms in one call.
77
-
78
- Response fields include `valid`, `cid`, `properties`, `properties_raw`,
79
- `aliases`, `synonyms`, and `metadata`. Numeric properties are coerced to JSON
80
- numbers when possible. Requested SMILES aliases are filled when PubChem returns
81
- an equivalent key such as `ConnectivitySMILES`.
82
-
83
- ## Batch Summary
84
-
85
- Operation: `compound-batch-summary`.
86
-
87
- ```json
88
- {
89
- "identifiers": ["aspirin", "ibuprofen", "caffeine"],
90
- "namespace": "name",
91
- "properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES", "XLogP", "TPSA"],
92
- "synonym_limit": 5
93
- }
94
- ```
95
-
96
- Limits: 1-100 identifiers. The response preserves input order and includes
97
- per-item errors:
98
-
99
- ```json
100
- {
101
- "valid": false,
102
- "namespace": "name",
103
- "properties_requested": ["CanonicalSMILES"],
104
- "results": [
105
- {
106
- "input": "aspirin",
107
- "valid": true,
108
- "cid": 2244,
109
- "properties": {
110
- "CanonicalSMILES": "CC(=O)Oc1ccccc1C(=O)O",
111
- "ConnectivitySMILES": "CC(=O)Oc1ccccc1C(=O)O",
112
- "_aliases": {"CanonicalSMILES": "ConnectivitySMILES"},
113
- "properties_raw": {}
114
- },
115
- "properties_raw": {},
116
- "aliases": {"CanonicalSMILES": "ConnectivitySMILES"},
117
- "synonyms": []
118
- },
119
- {
120
- "input": "bad-name",
121
- "valid": false,
122
- "error": "not found"
123
- }
124
- ],
125
- "count": 2,
126
- "failed_count": 1
127
- }
128
- ```
1
+ # PubChem reference
2
+
3
+ Call this tool only through `delta-cli science invoke`. Business responses are in the top-level
4
+ CLI `data`; read only the fields described here and do not search recursively. URLs in this file
5
+ explain the endpoint schema and do not authorise direct HTTP access. For a basic lookup by a
6
+ single common name, call `compound-summary` once. For multiple names, call
7
+ `compound-batch-summary` once with a default body containing only `identifiers` and
8
+ `namespace:"name"`; do not call health or schema first.
9
+
10
+ Project results directly from `data`. Batch records are in `data.results[*]`, the original label
11
+ is in `input`, and properties are nested under `properties`. Use this fixed SMILES fallback
12
+ order: `CanonicalSMILES -> ConnectivitySMILES -> SMILES -> IsomericSMILES`. Do not treat PubChem
13
+ `XLogP` and RDKit `MolLogP` as interchangeable; do not fill a `not_found` result with local
14
+ calculations.
15
+
16
+ Namespaces: `cid`, `name`, `smiles`, `inchi`, `inchikey`, `formula`.
17
+
18
+ ## Health
19
+
20
+ Operation: `health`; no request body.
21
+
22
+ ## Resolve CIDs
23
+
24
+ Operation: `compound-resolve-cids`.
25
+
26
+ ```json
27
+ {"identifier": "aspirin", "namespace": "name", "max_records": 20}
28
+ ```
29
+
30
+ `max_records`: 1-100.
31
+
32
+ ## Properties
33
+
34
+ Operation: `compound-properties`.
35
+
36
+ ```json
37
+ {
38
+ "identifier": "2244",
39
+ "namespace": "cid",
40
+ "properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES", "IUPACName"]
41
+ }
42
+ ```
43
+
44
+ Allowed properties include `MolecularFormula`, `MolecularWeight`,
45
+ `CanonicalSMILES`, `IsomericSMILES`, `SMILES`, `ConnectivitySMILES`,
46
+ `IUPACName`, `InChI`, `InChIKey`, `XLogP`, `TPSA`, `HBondDonorCount`,
47
+ `HBondAcceptorCount`, `RotatableBondCount`, `ExactMass`, `MonoisotopicMass`,
48
+ `Charge`, `HeavyAtomCount`, `Complexity`, `CovalentUnitCount`,
49
+ `DefinedAtomStereoCount`, `UndefinedAtomStereoCount`, `DefinedBondStereoCount`,
50
+ `UndefinedBondStereoCount`, and `IsotopeAtomCount`.
51
+
52
+ ## Synonyms
53
+
54
+ Operation: `compound-synonyms`.
55
+
56
+ ```json
57
+ {"identifier": "2244", "namespace": "cid", "max_synonyms": 50}
58
+ ```
59
+
60
+ `max_synonyms`: 1-500.
61
+
62
+ ## Summary
63
+
64
+ Operation: `compound-summary`.
65
+
66
+ ```json
67
+ {
68
+ "identifier": "aspirin",
69
+ "namespace": "name",
70
+ "properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES", "IUPACName"],
71
+ "synonym_limit": 20
72
+ }
73
+ ```
74
+
75
+ `synonym_limit`: 0-100. Use this endpoint for general compound lookup because
76
+ it resolves CID, selected properties, and synonyms in one call.
77
+
78
+ Response fields include `valid`, `cid`, `properties`, `properties_raw`,
79
+ `aliases`, `synonyms`, and `metadata`. Numeric properties are coerced to JSON
80
+ numbers when possible. Requested SMILES aliases are filled when PubChem returns
81
+ an equivalent key such as `ConnectivitySMILES`.
82
+
83
+ ## Batch Summary
84
+
85
+ Operation: `compound-batch-summary`.
86
+
87
+ ```json
88
+ {
89
+ "identifiers": ["aspirin", "ibuprofen", "caffeine"],
90
+ "namespace": "name",
91
+ "properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES", "XLogP", "TPSA"],
92
+ "synonym_limit": 5
93
+ }
94
+ ```
95
+
96
+ Limits: 1-100 identifiers. The response preserves input order and includes
97
+ per-item errors:
98
+
99
+ ```json
100
+ {
101
+ "valid": false,
102
+ "namespace": "name",
103
+ "properties_requested": ["CanonicalSMILES"],
104
+ "results": [
105
+ {
106
+ "input": "aspirin",
107
+ "valid": true,
108
+ "cid": 2244,
109
+ "properties": {
110
+ "CanonicalSMILES": "CC(=O)Oc1ccccc1C(=O)O",
111
+ "ConnectivitySMILES": "CC(=O)Oc1ccccc1C(=O)O",
112
+ "_aliases": {"CanonicalSMILES": "ConnectivitySMILES"},
113
+ "properties_raw": {}
114
+ },
115
+ "properties_raw": {},
116
+ "aliases": {"CanonicalSMILES": "ConnectivitySMILES"},
117
+ "synonyms": []
118
+ },
119
+ {
120
+ "input": "bad-name",
121
+ "valid": false,
122
+ "error": "not found"
123
+ }
124
+ ],
125
+ "count": 2,
126
+ "failed_count": 1
127
+ }
128
+ ```
@@ -1,69 +1,69 @@
1
- # pymatgen reference
2
-
3
- Make all calls with `delta-cli science invoke`. Prefer pymatgen for inorganic formulae,
4
- composition and formula weight; do not use PubChem or a local element table as a substitute.
5
- Structure operations require the complete structure text, not a local file path. Supported formats
6
- are `cif`, `poscar`, `json`, `cssr` and `xsf`; LAMMPS data and dump files are not accepted.
7
-
8
- ## Health
9
-
10
- Operation: `health`; no request body.
11
-
12
- ## Composition Parse
13
-
14
- Operation: `composition-parse`.
15
-
16
- ```json
17
- {"formula": "LiFePO4", "format": "formula"}
18
- ```
19
-
20
- Key response fields in `data`: `valid`, `formula`, `reduced_formula`,
21
- `alphabetic_formula`, `anonymous_formula`, `chemical_system`,
22
- `number_of_atoms`, `weight`, `element_amounts`, `atomic_fractions`,
23
- `weight_fractions`, `error`.
24
-
25
- ## Structure Parse / Summary
26
-
27
- Operation: `structure-parse` or `structure-summary`.
28
-
29
- ```json
30
- {"input": "<CIF text>", "format": "cif", "primitive": false}
31
- ```
32
-
33
- Input formats: `cif`, `poscar`, `json`, `cssr`, `xsf`.
34
-
35
- Summary fields include `formula`, `reduced_formula`, `chemical_system`,
36
- `nsites`, `nelements`, `density`, `volume`, `lattice`, `element_amounts`, and
37
- `species`.
38
-
39
- ## Structure Convert
40
-
41
- Operation: `structure-convert`.
42
-
43
- ```json
44
- {
45
- "input": "<CIF text>",
46
- "input_format": "cif",
47
- "output_format": "poscar",
48
- "primitive": false
49
- }
50
- ```
51
-
52
- Output formats: `cif`, `poscar`, `json`, `cssr`, `xsf`.
53
-
54
- ## Symmetry
55
-
56
- Operation: `structure-symmetry`.
57
-
58
- ```json
59
- {
60
- "input": "<CIF text>",
61
- "format": "cif",
62
- "primitive": false,
63
- "symprec": 0.01,
64
- "angle_tolerance": 5.0
65
- }
66
- ```
67
-
68
- Returns `space_group_symbol`, `space_group_number`, `crystal_system`,
69
- `point_group_symbol`, `hall`, and `nsites`.
1
+ # pymatgen reference
2
+
3
+ Make all calls with `delta-cli science invoke`. Prefer pymatgen for inorganic formulae,
4
+ composition and formula weight; do not use PubChem or a local element table as a substitute.
5
+ Structure operations require the complete structure text, not a local file path. Supported formats
6
+ are `cif`, `poscar`, `json`, `cssr` and `xsf`; LAMMPS data and dump files are not accepted.
7
+
8
+ ## Health
9
+
10
+ Operation: `health`; no request body.
11
+
12
+ ## Composition Parse
13
+
14
+ Operation: `composition-parse`.
15
+
16
+ ```json
17
+ {"formula": "LiFePO4", "format": "formula"}
18
+ ```
19
+
20
+ Key response fields in `data`: `valid`, `formula`, `reduced_formula`,
21
+ `alphabetic_formula`, `anonymous_formula`, `chemical_system`,
22
+ `number_of_atoms`, `weight`, `element_amounts`, `atomic_fractions`,
23
+ `weight_fractions`, `error`.
24
+
25
+ ## Structure Parse / Summary
26
+
27
+ Operation: `structure-parse` or `structure-summary`.
28
+
29
+ ```json
30
+ {"input": "<CIF text>", "format": "cif", "primitive": false}
31
+ ```
32
+
33
+ Input formats: `cif`, `poscar`, `json`, `cssr`, `xsf`.
34
+
35
+ Summary fields include `formula`, `reduced_formula`, `chemical_system`,
36
+ `nsites`, `nelements`, `density`, `volume`, `lattice`, `element_amounts`, and
37
+ `species`.
38
+
39
+ ## Structure Convert
40
+
41
+ Operation: `structure-convert`.
42
+
43
+ ```json
44
+ {
45
+ "input": "<CIF text>",
46
+ "input_format": "cif",
47
+ "output_format": "poscar",
48
+ "primitive": false
49
+ }
50
+ ```
51
+
52
+ Output formats: `cif`, `poscar`, `json`, `cssr`, `xsf`.
53
+
54
+ ## Symmetry
55
+
56
+ Operation: `structure-symmetry`.
57
+
58
+ ```json
59
+ {
60
+ "input": "<CIF text>",
61
+ "format": "cif",
62
+ "primitive": false,
63
+ "symprec": 0.01,
64
+ "angle_tolerance": 5.0
65
+ }
66
+ ```
67
+
68
+ Returns `space_group_symbol`, `space_group_number`, `crystal_system`,
69
+ `point_group_symbol`, `hall`, and `nsites`.
@@ -1,134 +1,134 @@
1
- # Quantum ESPRESSO DFT reference
2
-
3
- Use QE to run traceable, asynchronous Quantum ESPRESSO workflows through Chemistry Gateway.
4
- The agent interacts only with the Gateway/Science Server contract: it does not run local `pw.x`,
5
- call internal QE containers, or submit shell commands, scheduler scripts, `pseudo_dir`, `outdir`
6
- or host paths.
7
-
8
- The actual CLI tool for this reference is `qe`. Copy `tools.name` and `tool_endpoints.name`
9
- exactly from the current CLI catalogue. The paths below describe the QE service contract; they
10
- are not URLs to access directly or endpoint aliases that may be rewritten automatically.
11
-
12
- ## Capability groups
13
-
14
- | Service path | Purpose | Type |
15
- | --- | --- | --- |
16
- | `/chem/qe/health`, `/healthz`, `/readyz` | Runtime, scheduler, storage and PP readiness | Read-only |
17
- | `/chem/qe/v1/qe/workflow-types` | Workflow catalogue and support status | Read-only |
18
- | `/chem/qe/v1/pp-sets`, `/pp-locks/{digest}` | Published PP profiles/locks | Read-only |
19
- | `/chem/qe/v1/pp-sets:resolve` | Resolve PP candidates for the complete set of campaign elements | Read-only/validation |
20
- | `/chem/qe/v1/artifacts` | Upload, query and download structure/fixed-coordinate artifacts | File/binary |
21
- | `/chem/qe/v1/qe/jobs` | Submit asynchronous calculations and query jobs | Remote mutation |
22
- | `/chem/qe/v1/qe/jobs/{job_id}/events`, `steps`, `logs`, `artifacts` | Read job progress and results | Read-only |
23
- | `/chem/qe/v1/qe/jobs/{job_id}:cancel`, `:retry`, `:review` | Cancel, retry and scientifically review a job | Remote mutation |
24
-
25
- When selecting a new operation, first run:
26
-
27
- ```text
28
- delta-cli science list
29
- delta-cli science endpoints list <exact tool name>
30
- ```
31
-
32
- Then call it using the exact names returned by the catalogue. If the catalogue has no schema, do
33
- not guess the operation, path parameters, headers or body.
34
-
35
- ## CLI file and idempotency boundaries
36
-
37
- Structure artifact uploads require `application/octet-stream` and query metadata; QE job
38
- submission requires a stable `Idempotency-Key`. `science invoke` remains for JSON/query only;
39
- send files through `science file` and persistent jobs through `science task`:
40
-
41
- - `delta-cli science file invoke --tool qe --endpoint artifact-upload --file <path>` uploads
42
- a structure artifact; for `custom-pp-upload`, also provide `custom_pp_id` in `--data`;
43
- - `delta-cli science task submit --tool qe --operation job-submit --input JSON
44
- --idempotency-key KEY` submits a durable QE job; the worker passes the idempotency key to Gateway;
45
- - `delta-cli science file download --tool qe --endpoint artifact-content --params JSON
46
- --output <path>` downloads a raw artifact;
47
- - Do not send structure text, file paths, base64, `Idempotency-Key` or QE service credentials as
48
- ordinary business fields, and do not call public or private Gateway URLs or `qe-cloud-compute:18020`.
49
-
50
- ## Correct sequence for a new job
51
-
52
- 1. Read health. Read readiness only when diagnosing the deployment, and choose a currently
53
- `supported` task from the workflow catalogue.
54
- 2. Determine the complete `campaign_elements` set and use `pp-sets:resolve` to obtain a profile.
55
- Production jobs must use the returned `pp_set_id` and immutable `lock_id`; do not infer the
56
- lock from the profile name alone.
57
- 3. Ask the service to validate the structure artifact. The job must reference only the returned
58
- `sha256:<digest>` artifact ID.
59
- 4. Submit to `qe/jobs` with stable idempotency semantics. A `202` response means accepted/queued,
60
- not that QE has converged.
61
- 5. Poll the job, events, steps, logs and artifacts; read the `execution`, `solver` and
62
- `scientific` states independently.
63
- 6. Verify each artifact's SHA-256 when downloading results. Report the selected backend, resource
64
- telemetry, solver state, scientific review state and warnings separately.
65
-
66
- The minimum business-data shape for PP resolution is shown below. Values must come from the
67
- current service/catalogue; do not insert a fabricated production lock:
68
-
69
- ```json
70
- {
71
- "campaign_id": "si-bulk-scf-v1",
72
- "campaign_elements": ["Si", "O"],
73
- "workflows": ["qe.pw.scf"],
74
- "explicit_mode": null
75
- }
76
- ```
77
-
78
- The core job structure is shown below. `workflow_inputs` must follow the current task schema:
79
-
80
- ```json
81
- {
82
- "task": "qe.pw.scf",
83
- "schema_version": "1.1",
84
- "campaign_id": "si-bulk-scf-v1",
85
- "campaign_elements": ["Si"],
86
- "structure": {"format": "artifact", "artifact_id": "sha256:<64-hex>"},
87
- "physics": {
88
- "parameter_set": "<approved-parameter-set>",
89
- "pp_policy": {
90
- "mode": "sssp_single",
91
- "pp_set_id": "<approved-pp-set>",
92
- "lock_id": "sha256:<64-hex>"
93
- },
94
- "kpoints": [4, 4, 4]
95
- },
96
- "resources": {
97
- "profile": "standard",
98
- "nodes": 1,
99
- "mpi_ranks_per_node": 1,
100
- "omp_threads_per_rank": 1,
101
- "walltime_seconds": 3600,
102
- "gpu_policy": "cpu"
103
- },
104
- "client_request_id": "si-scf-v1",
105
- "workflow_inputs": {}
106
- }
107
- ```
108
-
109
- ## CPU/GPU and state interpretation
110
-
111
- CPU is the default, particularly for small or medium interactive jobs, PP/structure/audit/archive
112
- jobs, and cost-sensitive work. Use `gpu` only when the user explicitly requests it or the project
113
- already has a GPU budget, and the live catalogue returns `gpu_support_status: "verified"`. Do not
114
- silently fall back to CPU when GPU is required. Claim that GPU was used only when the result
115
- explicitly returns `selected_backend: "gpu"`; `auto` does not prove GPU use.
116
-
117
- Keep the three state channels separate:
118
-
119
- - `execution`: prepared/submitted/queued/running/scheduler completion/cancelled/failed;
120
- - `solver`: not started/running/converged/not converged/failed/unknown;
121
- - `scientific`: unreviewed, scientifically accepted, accepted with limitations, needs
122
- recalculation, not assessable, failed or archived.
123
-
124
- scheduler completion does not mean solver convergence, and solver convergence does not mean
125
- scientific acceptance. Branch on stable error codes rather than messages. Key codes include
126
- `PP_SET_INCOMPLETE`, `PP_POLICY_INCOMPATIBLE`,
127
- `PP_CAPABILITY_UNKNOWN`, `ARTIFACT_MISSING`, `SOLVER_NOT_CONVERGED`,
128
- `SCIENTIFIC_GATE_FAILED`, `RESTART_INCOMPATIBLE`, `IDEMPOTENCY_CONFLICT`,
129
- `EXECUTION_BACKEND_NOT_READY`, `GPU_UNSUPPORTED` and `GPU_UNAVAILABLE`.
130
-
131
- Submission, cancellation, retry and review are remote mutations and require the user's explicit
132
- authorisation. Do not retry when the outcome is unknown. Do not describe a GPU smoke test,
133
- scheduler log or parseable QE output as a scientific conclusion or a customer-level performance
134
- guarantee.
1
+ # Quantum ESPRESSO DFT reference
2
+
3
+ Use QE to run traceable, asynchronous Quantum ESPRESSO workflows through Chemistry Gateway.
4
+ The agent interacts only with the Gateway/Science Server contract: it does not run local `pw.x`,
5
+ call internal QE containers, or submit shell commands, scheduler scripts, `pseudo_dir`, `outdir`
6
+ or host paths.
7
+
8
+ The actual CLI tool for this reference is `qe`. Copy `tools.name` and `tool_endpoints.name`
9
+ exactly from the current CLI catalogue. The paths below describe the QE service contract; they
10
+ are not URLs to access directly or endpoint aliases that may be rewritten automatically.
11
+
12
+ ## Capability groups
13
+
14
+ | Service path | Purpose | Type |
15
+ | --- | --- | --- |
16
+ | `/chem/qe/health`, `/healthz`, `/readyz` | Runtime, scheduler, storage and PP readiness | Read-only |
17
+ | `/chem/qe/v1/qe/workflow-types` | Workflow catalogue and support status | Read-only |
18
+ | `/chem/qe/v1/pp-sets`, `/pp-locks/{digest}` | Published PP profiles/locks | Read-only |
19
+ | `/chem/qe/v1/pp-sets:resolve` | Resolve PP candidates for the complete set of campaign elements | Read-only/validation |
20
+ | `/chem/qe/v1/artifacts` | Upload, query and download structure/fixed-coordinate artifacts | File/binary |
21
+ | `/chem/qe/v1/qe/jobs` | Submit asynchronous calculations and query jobs | Remote mutation |
22
+ | `/chem/qe/v1/qe/jobs/{job_id}/events`, `steps`, `logs`, `artifacts` | Read job progress and results | Read-only |
23
+ | `/chem/qe/v1/qe/jobs/{job_id}:cancel`, `:retry`, `:review` | Cancel, retry and scientifically review a job | Remote mutation |
24
+
25
+ When selecting a new operation, first run:
26
+
27
+ ```text
28
+ delta-cli science list
29
+ delta-cli science endpoints list <exact tool name>
30
+ ```
31
+
32
+ Then call it using the exact names returned by the catalogue. If the catalogue has no schema, do
33
+ not guess the operation, path parameters, headers or body.
34
+
35
+ ## CLI file and idempotency boundaries
36
+
37
+ Structure artifact uploads require `application/octet-stream` and query metadata; QE job
38
+ submission requires a stable `Idempotency-Key`. `science invoke` remains for JSON/query only;
39
+ send files through `science file` and persistent jobs through `science task`:
40
+
41
+ - `delta-cli science file invoke --tool qe --endpoint artifact-upload --file <path>` uploads
42
+ a structure artifact; for `custom-pp-upload`, also provide `custom_pp_id` in `--data`;
43
+ - `delta-cli science task submit --tool qe --operation job-submit --input JSON
44
+ --idempotency-key KEY` submits a durable QE job; the worker passes the idempotency key to Gateway;
45
+ - `delta-cli science file download --tool qe --endpoint artifact-content --params JSON
46
+ --output <path>` downloads a raw artifact;
47
+ - Do not send structure text, file paths, base64, `Idempotency-Key` or QE service credentials as
48
+ ordinary business fields, and do not call public or private Gateway URLs or `qe-cloud-compute:18020`.
49
+
50
+ ## Correct sequence for a new job
51
+
52
+ 1. Read health. Read readiness only when diagnosing the deployment, and choose a currently
53
+ `supported` task from the workflow catalogue.
54
+ 2. Determine the complete `campaign_elements` set and use `pp-sets:resolve` to obtain a profile.
55
+ Production jobs must use the returned `pp_set_id` and immutable `lock_id`; do not infer the
56
+ lock from the profile name alone.
57
+ 3. Ask the service to validate the structure artifact. The job must reference only the returned
58
+ `sha256:<digest>` artifact ID.
59
+ 4. Submit to `qe/jobs` with stable idempotency semantics. A `202` response means accepted/queued,
60
+ not that QE has converged.
61
+ 5. Poll the job, events, steps, logs and artifacts; read the `execution`, `solver` and
62
+ `scientific` states independently.
63
+ 6. Verify each artifact's SHA-256 when downloading results. Report the selected backend, resource
64
+ telemetry, solver state, scientific review state and warnings separately.
65
+
66
+ The minimum business-data shape for PP resolution is shown below. Values must come from the
67
+ current service/catalogue; do not insert a fabricated production lock:
68
+
69
+ ```json
70
+ {
71
+ "campaign_id": "si-bulk-scf-v1",
72
+ "campaign_elements": ["Si", "O"],
73
+ "workflows": ["qe.pw.scf"],
74
+ "explicit_mode": null
75
+ }
76
+ ```
77
+
78
+ The core job structure is shown below. `workflow_inputs` must follow the current task schema:
79
+
80
+ ```json
81
+ {
82
+ "task": "qe.pw.scf",
83
+ "schema_version": "1.1",
84
+ "campaign_id": "si-bulk-scf-v1",
85
+ "campaign_elements": ["Si"],
86
+ "structure": {"format": "artifact", "artifact_id": "sha256:<64-hex>"},
87
+ "physics": {
88
+ "parameter_set": "<approved-parameter-set>",
89
+ "pp_policy": {
90
+ "mode": "sssp_single",
91
+ "pp_set_id": "<approved-pp-set>",
92
+ "lock_id": "sha256:<64-hex>"
93
+ },
94
+ "kpoints": [4, 4, 4]
95
+ },
96
+ "resources": {
97
+ "profile": "standard",
98
+ "nodes": 1,
99
+ "mpi_ranks_per_node": 1,
100
+ "omp_threads_per_rank": 1,
101
+ "walltime_seconds": 3600,
102
+ "gpu_policy": "cpu"
103
+ },
104
+ "client_request_id": "si-scf-v1",
105
+ "workflow_inputs": {}
106
+ }
107
+ ```
108
+
109
+ ## CPU/GPU and state interpretation
110
+
111
+ CPU is the default, particularly for small or medium interactive jobs, PP/structure/audit/archive
112
+ jobs, and cost-sensitive work. Use `gpu` only when the user explicitly requests it or the project
113
+ already has a GPU budget, and the live catalogue returns `gpu_support_status: "verified"`. Do not
114
+ silently fall back to CPU when GPU is required. Claim that GPU was used only when the result
115
+ explicitly returns `selected_backend: "gpu"`; `auto` does not prove GPU use.
116
+
117
+ Keep the three state channels separate:
118
+
119
+ - `execution`: prepared/submitted/queued/running/scheduler completion/cancelled/failed;
120
+ - `solver`: not started/running/converged/not converged/failed/unknown;
121
+ - `scientific`: unreviewed, scientifically accepted, accepted with limitations, needs
122
+ recalculation, not assessable, failed or archived.
123
+
124
+ scheduler completion does not mean solver convergence, and solver convergence does not mean
125
+ scientific acceptance. Branch on stable error codes rather than messages. Key codes include
126
+ `PP_SET_INCOMPLETE`, `PP_POLICY_INCOMPATIBLE`,
127
+ `PP_CAPABILITY_UNKNOWN`, `ARTIFACT_MISSING`, `SOLVER_NOT_CONVERGED`,
128
+ `SCIENTIFIC_GATE_FAILED`, `RESTART_INCOMPATIBLE`, `IDEMPOTENCY_CONFLICT`,
129
+ `EXECUTION_BACKEND_NOT_READY`, `GPU_UNSUPPORTED` and `GPU_UNAVAILABLE`.
130
+
131
+ Submission, cancellation, retry and review are remote mutations and require the user's explicit
132
+ authorisation. Do not retry when the outcome is unknown. Do not describe a GPU smoke test,
133
+ scheduler log or parseable QE output as a scientific conclusion or a customer-level performance
134
+ guarantee.