@delta-infra/cli 1.0.72 → 1.0.74

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 (52) hide show
  1. package/README.md +422 -413
  2. package/checksums.txt +7 -5
  3. package/package.json +14 -5
  4. package/scripts/install-wizard.js +599 -582
  5. package/scripts/install.js +410 -410
  6. package/scripts/run.js +65 -65
  7. package/skills/antbo-ldm-guard/SKILL.md +54 -0
  8. package/skills/antbo-ldm-guard/agents/openai.yaml +4 -0
  9. package/skills/antbo-service/SKILL.md +74 -0
  10. package/skills/antbo-service/agents/openai.yaml +4 -0
  11. package/skills/antbo-service/references/operations.md +45 -0
  12. package/skills/delta-bo/SKILL.md +31 -0
  13. package/skills/delta-bo/agents/openai.yaml +4 -0
  14. package/skills/delta-bo/references/endpoints.md +263 -0
  15. package/skills/delta-sandbox/SKILL.md +356 -357
  16. package/skills/delta-sandbox/agents/openai.yaml +4 -0
  17. package/skills/delta-sandbox/references/commands.md +56 -56
  18. package/skills/delta-sandbox/references/lifecycle.md +92 -92
  19. package/skills/delta-sandbox/references/recipes.md +133 -133
  20. package/skills/delta-science/SKILL.md +166 -115
  21. package/skills/delta-science/agents/openai.yaml +4 -4
  22. package/skills/delta-science/references/cli-contract.md +84 -65
  23. package/skills/delta-science/references/operation-contracts.md +137 -0
  24. package/skills/delta-science/references/services.md +112 -85
  25. package/skills/delta-science/references/workflows.md +44 -34
  26. package/skills/delta-science/scripts/invoke.py +329 -189
  27. package/skills/delta-shared/SKILL.md +95 -96
  28. package/skills/delta-shared/agents/openai.yaml +4 -0
  29. package/skills/gsasii/SKILL.md +37 -0
  30. package/skills/gsasii/agents/openai.yaml +4 -0
  31. package/skills/gsasii/references/endpoints.md +130 -0
  32. package/skills/lammps/SKILL.md +34 -0
  33. package/skills/lammps/agents/openai.yaml +4 -0
  34. package/skills/lammps/references/endpoints.md +61 -0
  35. package/skills/ldm-bo/SKILL.md +30 -0
  36. package/skills/ldm-bo/agents/openai.yaml +4 -0
  37. package/skills/ldm-bo/references/endpoints.md +127 -0
  38. package/skills/manifest.json +17 -0
  39. package/skills/pubchem/SKILL.md +88 -0
  40. package/skills/pubchem/agents/openai.yaml +4 -0
  41. package/skills/pubchem/references/endpoints.md +122 -0
  42. package/skills/pubchem/references/operations.md +41 -0
  43. package/skills/pymatgen/SKILL.md +49 -0
  44. package/skills/pymatgen/agents/openai.yaml +4 -0
  45. package/skills/pymatgen/references/endpoints.md +68 -0
  46. package/skills/rdkit/SKILL.md +107 -0
  47. package/skills/rdkit/agents/openai.yaml +4 -0
  48. package/skills/rdkit/references/endpoints.md +133 -0
  49. package/skills/rdkit/references/operations.md +64 -0
  50. package/skills/synbo-service/SKILL.md +31 -0
  51. package/skills/synbo-service/agents/openai.yaml +4 -0
  52. package/skills/synbo-service/references/endpoints.md +157 -0
@@ -0,0 +1,64 @@
1
+ # RDKit operation 契约
2
+
3
+ 所有示例都在 `SKILL.md` 的 wrapper 模板中设置 `endpoint` 和 `payload`。业务结果直接
4
+ 位于 `r["native"]`。只做用户请求所需的一次调用,成功后调用 `step_finish`。
5
+
6
+ ## health
7
+
8
+ - 情景:明确检查 RDKit 服务状态。
9
+ - 代码:`endpoint="health"; payload=None`,调用时省略 `--data-json`。
10
+ - 投影:status、可用性、metadata、limits、warnings 中存在的字段。
11
+
12
+ ## parse
13
+
14
+ - 情景:只校验并规范化一个 SMILES/InChI。
15
+ - 代码:`endpoint="parse"; payload={"input":"CCO","format":"smiles"}`
16
+ - 投影:valid、canonical_smiles、formula、inchi_key、warnings/error。
17
+
18
+ ## descriptors
19
+
20
+ - 情景:只计算一个已知 SMILES 的描述符。
21
+ - 代码:`endpoint="descriptors"; payload={"smiles":"CCO","descriptor_set":"basic","sanitize":True}`
22
+ - 投影:valid 与 descriptors 中实际返回的键。
23
+
24
+ ## batch-descriptors
25
+
26
+ - 情景:对多个已知且无需再次解析的 SMILES 计算同一组描述符。
27
+ - 代码:`endpoint="batch-descriptors"; payload={"smiles":["CCO","c1ccccc1"],"descriptor_set":"basic","sanitize":True}`
28
+ - 投影:results 中每项的输入 SMILES、valid、descriptors、warnings/error。
29
+
30
+ ## batch-parse-describe
31
+
32
+ - 情景:同时校验、规范化并计算一个或多个分子的描述符。
33
+ - 代码:`endpoint="batch-parse-describe"; payload={"molecules":[{"id":"aspirin","smiles":"CC(=O)OC1=CC=CC=C1C(=O)O"}],"descriptor_set":"basic","sanitize":True}`
34
+ - 投影:results 中 id、valid、canonical_smiles、descriptors、warnings/error。
35
+
36
+ ## render
37
+
38
+ - 情景:用户明确要求分子结构图。
39
+ - 代码:`endpoint="render"; payload={"smiles":"CCO","image_format":"png","width":500,"height":400}`
40
+ - 投影:只解码文档指定的 base64 字段;验证 PNG magic bytes 后再保存。
41
+
42
+ ## fingerprint
43
+
44
+ - 情景:明确要求一个分子的 Morgan 指纹。
45
+ - 代码:`endpoint="fingerprint"; payload={"smiles":"CCO","radius":2,"n_bits":2048}`
46
+ - 投影:valid、fingerprint_metadata、on_bits、warnings/error。
47
+
48
+ ## similarity
49
+
50
+ - 情景:比较两个已知 SMILES。
51
+ - 代码:`endpoint="similarity"; payload={"query_smiles":"CCO","target_smiles":"CCN","radius":2,"n_bits":2048}`
52
+ - 投影:native 实际返回的 similarity、metric、fingerprint metadata。
53
+
54
+ ## similarity-matrix
55
+
56
+ - 情景:比较三个及以上分子的所有两两相似度。
57
+ - 代码:`endpoint="similarity-matrix"; payload={"molecules":[{"id":"a","smiles":"CCO"},{"id":"b","smiles":"CCN"}],"fingerprint":{"type":"morgan","radius":2,"n_bits":2048},"sanitize":True}`
58
+ - 投影:matrix 与 `ranked_pairs[{a,b,similarity}]`;禁止 i/j/score。
59
+
60
+ ## substructure
61
+
62
+ - 情景:用 SMARTS 在一个或多个目标 SMILES 中筛选子结构。
63
+ - 代码:`endpoint="substructure"; payload={"query_smarts":"C(=O)O","target_smiles":["CC(=O)O","CCO"],"sanitize":True}`
64
+ - 投影:query、每个目标的 valid/match/matches 与 warnings/error。
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: synbo-service
3
+ description: 当用户需要对分类反应条件空间做初始采样,或基于真实历史反应结果使用 SynBO 推荐下一批催化剂、溶剂、碱等条件时使用。支持 health、initialize、optimize;所有调用只走 Delta CLI,重型 optimize 串行执行且超时不自动重试。
4
+ ---
5
+
6
+ # SynBO 服务
7
+
8
+ ## 强制规则
9
+
10
+ - 只用 `python_repl` 执行 `$SKILLS_ROOT/delta-science/scripts/invoke.py`,
11
+ tool=`synbo`;禁止 Bash、路径探测、字面 CLI、直接 HTTP 和本地 SynBO/GP。
12
+ - `python_repl` 工具参数只能包含 `code`,禁止 `deps/dependencies/packages`。
13
+ - 业务结果直接位于 `r["native"]`,禁止 `native.data`。
14
+ - `health` 无 body;`initialize` 和 `optimize` 使用 `--data-json`。
15
+ - 重型调用串行执行;timeout/断连结果未知,不自动重试。
16
+
17
+ ## operation 选择
18
+
19
+ - `initialize`:没有 measured previous results 时使用。提供 `condition_dict`、
20
+ `opt_metrics`、方向/range/weight 设置、batch_size、sampling_method 和 seed。
21
+ - `optimize`:只有存在真实历史时使用。每一行必须包含全部 condition 列和全部数值
22
+ metric 列;有界 CPU 测试用 `accuracy:"tiny"`、`device:"cpu"`。
23
+ - descriptors 如提供,键必须与 condition_dict 完全一致,index 列存在且其余为数值。
24
+
25
+ 完整成功 payload 见 `references/endpoints.md`。若 optimize 返回数组维度错误、timeout、
26
+ 空 recommendations 或后端失败,报告“未产生推荐”,不得用本地 GP、UCB、响应面、
27
+ 随机采样或人工排序替代。
28
+
29
+ 通过 wrapper 调用一次,显式打印 recommendations/metadata/warnings 或有界错误;成功
30
+ 后立即 `step_finish(status="done", summary=<同一 JSON>)`,失败则
31
+ `step_finish(status="failed", summary=<原始错误短摘要>)`。禁止后续工具。
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "SynBO ??????"
3
+ short_description: "?? Delta CLI ????????????????"
4
+ default_prompt: "?? $synbo-service ??????????????????"
@@ -0,0 +1,157 @@
1
+ # SynBO API Endpoint Reference
2
+
3
+ All paths are relative to `http://111.2.199.31:52317/api/v1`.
4
+
5
+ This reference is for the exposed HTTP gateway. It is not a local SynBO project
6
+ runner.
7
+
8
+ ## Health
9
+
10
+ `GET /chem/synbo/health`
11
+
12
+ Reports SynBO import status, Torch/CUDA runtime availability, service limits,
13
+ default device, and visible CUDA devices.
14
+
15
+ Important fields inside gateway `data`:
16
+
17
+ ```json
18
+ {
19
+ "status": "ok",
20
+ "synbo_available": true,
21
+ "metadata": {
22
+ "service": "synbo-service",
23
+ "engine": "synbo",
24
+ "version": "0.1.0",
25
+ "synbo_version": "0.1.0",
26
+ "default_device": "cpu",
27
+ "cuda_visible_devices": ""
28
+ },
29
+ "limits": {
30
+ "max_batch_size": 128,
31
+ "max_reaction_space_size": 200000,
32
+ "max_previous_rows": 10000
33
+ },
34
+ "runtime": {
35
+ "torch_available": true,
36
+ "cuda_available": false,
37
+ "cuda_device_count": 0,
38
+ "cuda_device_names": []
39
+ },
40
+ "warnings": []
41
+ }
42
+ ```
43
+
44
+ ## Initialize
45
+
46
+ `POST /chem/synbo/initialize`
47
+
48
+ Use for initial condition sampling when no measured previous results exist.
49
+
50
+ Request body:
51
+
52
+ ```json
53
+ {
54
+ "condition_dict": {
55
+ "catalyst": ["Pd(OAc)2", "Pd(PPh3)4", "Pd2(dba)3"],
56
+ "solvent": ["THF", "Dioxane", "Toluene"],
57
+ "base": ["K2CO3", "NaOEt", "DBU"]
58
+ },
59
+ "opt_metrics": ["yield"],
60
+ "opt_metric_settings": [
61
+ {"opt_direct": "max", "opt_range": [0, 100], "metric_weight": 1.0}
62
+ ],
63
+ "batch_size": 3,
64
+ "sampling_method": "random",
65
+ "desc_normalize": "minmax",
66
+ "random_seed": 42
67
+ }
68
+ ```
69
+
70
+ Supported `sampling_method` values: `sobol`, `random`, `lhs`, `kmeans`.
71
+
72
+ ## Optimize
73
+
74
+ `POST /chem/synbo/optimize`
75
+
76
+ Use after measured experiment rows are available. Each previous row must contain
77
+ all condition columns and all objective metric columns.
78
+
79
+ Request body:
80
+
81
+ ```json
82
+ {
83
+ "condition_dict": {
84
+ "catalyst": ["Pd(OAc)2", "Pd(PPh3)4", "Pd2(dba)3"],
85
+ "solvent": ["THF", "Dioxane", "Toluene"],
86
+ "base": ["K2CO3", "NaOEt", "DBU"]
87
+ },
88
+ "opt_metrics": ["yield"],
89
+ "previous_results": [
90
+ {"batch": 0, "catalyst": "Pd(OAc)2", "solvent": "THF", "base": "K2CO3", "yield": 42.0},
91
+ {"batch": 0, "catalyst": "Pd(PPh3)4", "solvent": "Dioxane", "base": "NaOEt", "yield": 55.0},
92
+ {"batch": 0, "catalyst": "Pd2(dba)3", "solvent": "Toluene", "base": "DBU", "yield": 63.0}
93
+ ],
94
+ "batch_size": 2,
95
+ "accuracy": "tiny",
96
+ "device": "cpu",
97
+ "random_seed": 42
98
+ }
99
+ ```
100
+
101
+ Useful optional fields:
102
+
103
+ - `accuracy`: `tiny`, `low`, `medium`, `high`, or `ultra`.
104
+ - `acq_func`: `EHVI`, `UCB`, `ParEGO`, or `NEI`.
105
+ - `surrogate_model`: `GP`, `RF`, `BNN`, or `BayesianLinear`.
106
+ - `device`: `cpu`, `auto`, `cuda`, or `cuda:0`.
107
+ - `cuda_visible_devices`: request-level CUDA visibility hint. Use only when the
108
+ user explicitly asks for it and `/health` indicates a CUDA-capable runtime.
109
+ - `constraints`: map condition type to prohibited values.
110
+
111
+ ## Descriptors
112
+
113
+ If omitted, SynBO uses generated OneHot descriptors. To provide descriptors:
114
+
115
+ ```json
116
+ {
117
+ "descriptors": {
118
+ "solvent": [
119
+ {"name": "THF", "polarity": 0.207, "boiling_point_C": 66.0},
120
+ {"name": "Toluene", "polarity": 0.099, "boiling_point_C": 110.6}
121
+ ]
122
+ },
123
+ "descriptor_index_col": "name"
124
+ }
125
+ ```
126
+
127
+ `descriptors` must contain exactly the same keys as `condition_dict`. Descriptor
128
+ rows must include the configured index column and numeric descriptor columns.
129
+
130
+ ## Error Handling
131
+
132
+ Gateway errors have the standard envelope:
133
+
134
+ ```json
135
+ {
136
+ "code": 1,
137
+ "message": "SynBO service returned HTTP 400",
138
+ "data": {
139
+ "endpoint": "/synbo/optimize",
140
+ "service_url": "http://synbo-service:8897",
141
+ "synbo_response": {
142
+ "detail": "previous_results is missing metric columns: ['yield']"
143
+ }
144
+ }
145
+ }
146
+ ```
147
+
148
+ Common causes are oversized reaction spaces, duplicate condition values,
149
+ non-numeric descriptors, missing previous-result columns, missing numeric metric
150
+ values, and requesting CUDA when no GPU is available.
151
+
152
+ The service also enforces its own per-request time limit that is independent of
153
+ the client HTTP `timeout`. A slow call returns a timeout error such as
154
+ `"SynBO service timed out"`. This is expected for heavy optimizer settings
155
+ (GP + EHVI, higher accuracy) or when a concurrent request is occupying the
156
+ shared GPU. Retry once the service is idle, or lower `accuracy`, narrow the
157
+ reaction space, or use a GPU device.