@delta-infra/cli 1.1.19 → 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 -520
  2. package/checksums.txt +5 -5
  3. package/package.json +1 -1
  4. package/scripts/install-wizard.js +689 -688
  5. package/scripts/install.js +442 -442
  6. package/scripts/run.js +65 -65
  7. package/skills/delta-protein/AGENTS.md +72 -72
  8. package/skills/delta-protein/SKILL.md +388 -388
  9. package/skills/delta-protein/agents/openai.yaml +3 -3
  10. package/skills/delta-protein/references/bfitter.md +63 -63
  11. package/skills/delta-protein/references/catapro_predict.md +62 -62
  12. package/skills/delta-protein/references/catpred_predict.md +64 -64
  13. package/skills/delta-protein/references/caver_tunnel_analyze.md +62 -62
  14. package/skills/delta-protein/references/consensus_mutation.md +60 -60
  15. package/skills/delta-protein/references/consurf_predict.md +66 -66
  16. package/skills/delta-protein/references/crop_sequence.md +68 -68
  17. package/skills/delta-protein/references/dock.md +81 -81
  18. package/skills/delta-protein/references/dock_score.md +69 -69
  19. package/skills/delta-protein/references/easifa_predict_active_site.md +69 -69
  20. package/skills/delta-protein/references/ephod_predict_mutation.md +65 -65
  21. package/skills/delta-protein/references/ephod_predict_protein.md +60 -60
  22. package/skills/delta-protein/references/esmfold2_predict.md +66 -66
  23. package/skills/delta-protein/references/evcouplings_mutation.md +63 -63
  24. package/skills/delta-protein/references/fasta_to_sequence.md +58 -58
  25. package/skills/delta-protein/references/foldseek.md +60 -60
  26. package/skills/delta-protein/references/generate_msa.md +60 -60
  27. package/skills/delta-protein/references/interpro_analyze.md +62 -62
  28. package/skills/delta-protein/references/mpnn_design_sequence.md +70 -70
  29. package/skills/delta-protein/references/multievolve.md +72 -72
  30. package/skills/delta-protein/references/pisa_query.md +69 -69
  31. package/skills/delta-protein/references/plip_analyze.md +64 -64
  32. package/skills/delta-protein/references/pocket_prediction.md +62 -62
  33. package/skills/delta-protein/references/protein_design.md +64 -64
  34. package/skills/delta-protein/references/protein_evolution.md +76 -76
  35. package/skills/delta-protein/references/protein_sol_predict_mutation.md +65 -65
  36. package/skills/delta-protein/references/protein_sol_predict_protein.md +60 -60
  37. package/skills/delta-protein/references/protenix.md +65 -65
  38. package/skills/delta-protein/references/protrek_search.md +89 -89
  39. package/skills/delta-protein/references/pubchem_search.md +67 -67
  40. package/skills/delta-protein/references/pubmed_search.md +78 -78
  41. package/skills/delta-protein/references/reap_design_primer.md +68 -68
  42. package/skills/delta-protein/references/rfd3_design.md +64 -64
  43. package/skills/delta-protein/references/structure_to_sequence.md +60 -60
  44. package/skills/delta-protein/references/summarize_result.md +67 -67
  45. package/skills/delta-protein/references/surface_charge.md +83 -83
  46. package/skills/delta-protein/references/uniprot_batch_query.md +62 -62
  47. package/skills/delta-protein/references/uniprot_query.md +63 -63
  48. package/skills/delta-protein/references/zero_shot_mutant_candidates.md +75 -75
  49. package/skills/delta-protein/scripts/gen_references.py +166 -166
  50. package/skills/delta-protein/scripts/output_metadata.json +274 -274
  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 +154 -170
  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 -20
@@ -1,138 +1,138 @@
1
- # Standard task request patterns
2
-
3
- This file provides recommended request patterns for common tasks handled by `delta-sandbox`. The examples are language-agnostic templates; the actual code is generated or written by the skill inside the sandbox.
4
-
5
- ## `required_outputs` when the Planner calls this skill
6
-
7
- Every plan step that directly calls `delta-sandbox` should declare that it will write a `.json` file to disk. This allows the host to validate the deliverable in Phase-10B when the skill writes the sandbox `log_file` to the local `result.json` after running the command.
8
-
9
- ```yaml
10
- required_outputs:
11
- - kind: file
12
- extensions: [".json"]
13
- ```
14
-
15
- > This declares that the skill will create a `.json` result file; it does not require `.json` to appear in the user's request. Keep the user's request neutral in its wording, following the templates below.
16
-
17
- ## General script output template
18
-
19
- To let the skill generate `RESULT:` consistently and avoid asking an LLM to summarise long logs, we recommend that every sandbox script print one line of structured JSON **at the end of execution**:
20
-
21
- ```json
22
- {"status":"ok","key_metric_1":"value_1","key_metric_2":123}
23
- ```
24
-
25
- > On the SSE path, the **complete frame for `sandbox run` / `run-bg --wait` already includes `result_summary`** (the CLI detects a valid JSON object in the last 50 lines of stdout and injects it, so there is no need to read and parse it manually). The script author only needs to ensure that the last line of stdout is valid JSON; the skill can then take `result_summary` directly from the complete frame. Only if the complete frame lacks this field (because there is no valid JSON at the end) should it fall back to `sandbox read` to read the `log_file` and scan backwards. `--summary` enrichment (including hints) still takes effect only on the legacy-server fallback path.
26
-
27
- The skill extracts this as the `summary` in `result.json`, then generates `result_summary` and the final `RESULT:` line.
28
-
29
- **Do not** output marker lines such as `FINAL_ANSWER: ...` or use a `final_answer` field in the JSON. Semantic fields in the summary (such as `output`, `result`, `generated_text` and `final_accuracy`) are enough to express the result.
30
-
31
- Examples of key fields for different tasks:
32
-
33
- - **CUDA check**: `status`, `torch_version`, `cuda_available`, `device_name`
34
- - **Training task**: `status`, `epochs`, `final_loss`, `final_accuracy`, `model_file`
35
- - **Inference task**: `status`, `input_samples`, `output_file`, `avg_latency_ms`
36
- - **Data processing**: `status`, `input_rows`, `output_rows`, `output_file`
37
- - **Compilation/build**: `status`, `build_time_s`, `output_binary`, `tests_passed`
38
-
39
- ## 1. GPU / CUDA availability check
40
-
41
- Example user request:
42
-
43
- ```text
44
- Run the standard PyTorch CUDA self-check script in a GPU sandbox; return exit_code, the torch version, whether CUDA is available, CUDA/cuDNN versions, the GPU name and memory information.
45
- ```
46
-
47
- Notes:
48
-
49
- - Do not include full code expressions such as `torch.cuda.is_available()` in the request; the host may mistake them for a `.cuda` file commitment. The corresponding plan step should still declare `.json` output using the template above.
50
- - We recommend that the script print one line of structured JSON at the end of `stdout`, for example:
51
- ```json
52
- {"torch_version":"2.7.0+cu128","cuda_available":true,"device_count":1,
53
- "device_name":"NVIDIA GeForce RTX 3090","tensor_op":"[101.0]",
54
- "memory_before_mb":{"allocated":0,"reserved":0,"max_allocated":0},
55
- "memory_after_mb":{"allocated":0.0005,"reserved":2.0,"max_allocated":0.001}}
56
- ```
57
- - The skill extracts this JSON from `log_file` as the `summary` in the local `result.json`, then outputs only one `RESULT: ...` line.
58
- - The full raw `nvidia-smi` output remains in the sandbox `log_file`.
59
-
60
- ## 2. Run a script the user already has
61
-
62
- ```text
63
- In sandbox <sandbox_id>, run <wd>/train.py with the arguments --epochs 10 --batch-size 32.
64
- ```
65
-
66
- > `<wd>` is this sandbox's working directory (`/workspace/{user_id}/{sandbox_id}`; first check it with `delta-cli sandbox working-directory <id>`).
67
-
68
- Notes: the file already exists, so use the neutral verb `run` rather than a commitment verb such as `create`.
69
-
70
- ## 3. Install dependencies and run a command
71
-
72
- ```text
73
- In the sandbox, run pip install -r <wd>/requirements.txt, then run python <wd>/app.py.
74
- ```
75
-
76
- Notes: neither dependency installation nor command execution creates a new deliverable file, so describe them with neutral verbs.
77
-
78
- ## 4. Train and write metrics to disk
79
-
80
- ```text
81
- In a GPU sandbox, run a training script (for example, PyTorch-based MNIST training). When training finishes, print structured JSON at the end of stdout containing epochs, final_loss, final_accuracy and model_file.
82
- ```
83
-
84
- Notes:
85
-
86
- - Training logs can be long; do not have the skill read the entire log and then summarise it. Have the script output the key metrics itself.
87
- - We recommend that the script finish by printing: `{"status":"ok","epochs":10,"final_loss":0.023,"final_accuracy":0.992,"model_file":"<wd>/model.pt"}`
88
- - The skill extracts this as the `summary` in `result.json`, then outputs `RESULT: exit_code=0, status=ok, epochs=10, ...`.
89
- - To save the complete model file, use `sandbox read` or `sandbox upload` as needed; the model file is outside the scope of the `result.json` summary.
90
-
91
- ## 5. General data processing
92
-
93
- ```text
94
- In the sandbox, run a data-processing command that reads <wd>/input.csv and writes <wd>/output.csv, then prints structured JSON at the end of stdout containing input_rows, output_rows and output_file.
95
- ```
96
-
97
- Notes:
98
-
99
- - We recommend that the script finish by printing: `{"status":"ok","input_rows":10000,"output_rows":9876,"output_file":"<wd>/output.csv"}`
100
- - The skill extracts this as the `summary` in `result.json`, then outputs `RESULT: exit_code=0, status=ok, input_rows=10000, output_rows=9876, output_file=<wd>/output.csv`.
101
-
102
- ## 6. Model inference (Qwen / LLM / vision, etc.)
103
-
104
- Example user request:
105
-
106
- ```text
107
- Run one inference in a GPU sandbox using Qwen/Qwen2.5-0.5B-Instruct from ModelScope, with "100+10" as input; return the model's output and a summary of CUDA availability.
108
- ```
109
-
110
- Notes:
111
-
112
- - Do not paste complete Python code into the request or specify a host file path (such as `@ROOT/inference.py` or a local absolute path), and do not ask the script to output a `FINAL_ANSWER:` marker line. The skill writes the script, downloads the model and sets the execution path inside the sandbox using `delta-cli sandbox write`.
113
- - We recommend that the script print one line of structured JSON at the end of `stdout`, for example:
114
- ```json
115
- {"status":"ok","cuda_available":true,"device":"cuda","model":"Qwen/Qwen2.5-0.5B-Instruct","input":"100+10","generated_text":"110"}
116
- ```
117
- - The skill extracts this as the `summary` in `result.json`, then outputs `RESULT: exit_code=0, status=ok, cuda_available=True, generated_text=110, ...`.
118
-
119
- > **Match GPU memory to the model:** The `--gpu-mem` value (in MiB) used to create the sandbox must match the model being run. Larger models and higher precision require more memory; putting a large model in a sandbox with too little `--gpu-mem` will cause OOM directly. The example above uses `Qwen2.5-0.5B` (a small 0.5B model); **do not use it as a memory reference for larger models such as 7B/9B/13B**. Before running a larger model, assess its memory requirements, increase `--gpu-mem` as appropriate, and consider verifying the workflow with a smaller model first.
120
-
121
- ## Notes
122
-
123
- - Describe tasks in natural language where possible; the skill handles the full code internally.
124
- - Mention extensions such as `*.py` / `*.json` / `*.csv` explicitly in the request only when the skill will actually create a file.
125
- - Do not use phrasing such as `The script should output...` that puts a code fragment immediately after a commitment verb.
126
- - **Task completion is determined by the execution result, not by the presence of a script file.** The Planner and skill should both treat the creation of the local `result.json` as the completion criterion. `required_outputs` must declare `.json`; do not declare only `{"kind": "file"}`.
127
- - **Do not include complete code blocks or host-file-path concepts in `skill_request`** (such as `@ROOT/...` or `/Users/...`). The script should be written to the sandbox working directory (`/workspace/{user_id}/{sandbox_id}/...`) with `delta-cli sandbox write <id> --source <filename>`.
128
-
129
- ## Local `result.json` content contract
130
-
131
- - **Preferred SSE path (recommended, one step):** The **complete frame for `sandbox run` / `run-bg --wait` includes `result_summary` directly** (the CLI injects detected trailing JSON from stdout), so the skill can extract it from the complete frame without reading and parsing the log.
132
- - **SSE fallback path:** If the complete frame lacks `result_summary` (there is no valid JSON at the end of stdout), `delta-cli sandbox read <id> --path <log_file>` reads the run-envelope log file, then scans backwards through stdout to extract trailing JSON. The `log_file` path comes from the SSE `complete` frame (the CLI fills it in if needed) or the `sandbox logs` snapshot (after `finished=true`).
133
- - **Legacy-server fallback path:** When `run` / `run-bg --wait` falls back to polling, it returns a `CommandResult` envelope whose `data.result_summary` field can be reused directly.
134
- - The local `result.json` is a **concise summary** for host deliverable validation, not a complete log archive.
135
- - It must include the `result_summary` field, with content matching the final `RESULT:` line, so the Runner can read the conclusion directly.
136
- - Write only the key fields (`exit_code`, `finished`, `summary`, `result_summary`, `error`). **Do not** add fields such as `final_answer`.
137
- - Do not put the full raw `stdout` in `result.json`; the host's `read_file` preview would be truncated, and the Runner might mistake this for a truncated file.
138
- - Keep the full raw output in the sandbox `log_file` and use `sandbox read` to inspect it when needed.
1
+ # Standard task request patterns
2
+
3
+ This file provides recommended request patterns for common tasks handled by `delta-sandbox`. The examples are language-agnostic templates; the actual code is generated or written by the skill inside the sandbox.
4
+
5
+ ## `required_outputs` when the Planner calls this skill
6
+
7
+ Every plan step that directly calls `delta-sandbox` should declare that it will write a `.json` file to disk. This allows the host to validate the deliverable in Phase-10B when the skill writes the sandbox `log_file` to the local `result.json` after running the command.
8
+
9
+ ```yaml
10
+ required_outputs:
11
+ - kind: file
12
+ extensions: [".json"]
13
+ ```
14
+
15
+ > This declares that the skill will create a `.json` result file; it does not require `.json` to appear in the user's request. Keep the user's request neutral in its wording, following the templates below.
16
+
17
+ ## General script output template
18
+
19
+ To let the skill generate `RESULT:` consistently and avoid asking an LLM to summarise long logs, we recommend that every sandbox script print one line of structured JSON **at the end of execution**:
20
+
21
+ ```json
22
+ {"status":"ok","key_metric_1":"value_1","key_metric_2":123}
23
+ ```
24
+
25
+ > On the SSE path, the **complete frame for `sandbox run` / `run-bg --wait` already includes `result_summary`** (the CLI detects a valid JSON object in the last 50 lines of stdout and injects it, so there is no need to read and parse it manually). The script author only needs to ensure that the last line of stdout is valid JSON; the skill can then take `result_summary` directly from the complete frame. Only if the complete frame lacks this field (because there is no valid JSON at the end) should it fall back to `sandbox read` to read the `log_file` and scan backwards. `--summary` enrichment (including hints) still takes effect only on the legacy-server fallback path.
26
+
27
+ The skill extracts this as the `summary` in `result.json`, then generates `result_summary` and the final `RESULT:` line.
28
+
29
+ **Do not** output marker lines such as `FINAL_ANSWER: ...` or use a `final_answer` field in the JSON. Semantic fields in the summary (such as `output`, `result`, `generated_text` and `final_accuracy`) are enough to express the result.
30
+
31
+ Examples of key fields for different tasks:
32
+
33
+ - **CUDA check**: `status`, `torch_version`, `cuda_available`, `device_name`
34
+ - **Training task**: `status`, `epochs`, `final_loss`, `final_accuracy`, `model_file`
35
+ - **Inference task**: `status`, `input_samples`, `output_file`, `avg_latency_ms`
36
+ - **Data processing**: `status`, `input_rows`, `output_rows`, `output_file`
37
+ - **Compilation/build**: `status`, `build_time_s`, `output_binary`, `tests_passed`
38
+
39
+ ## 1. GPU / CUDA availability check
40
+
41
+ Example user request:
42
+
43
+ ```text
44
+ Run the standard PyTorch CUDA self-check script in a GPU sandbox; return exit_code, the torch version, whether CUDA is available, CUDA/cuDNN versions, the GPU name and memory information.
45
+ ```
46
+
47
+ Notes:
48
+
49
+ - Do not include full code expressions such as `torch.cuda.is_available()` in the request; the host may mistake them for a `.cuda` file commitment. The corresponding plan step should still declare `.json` output using the template above.
50
+ - We recommend that the script print one line of structured JSON at the end of `stdout`, for example:
51
+ ```json
52
+ {"torch_version":"2.7.0+cu128","cuda_available":true,"device_count":1,
53
+ "device_name":"NVIDIA GeForce RTX 3090","tensor_op":"[101.0]",
54
+ "memory_before_mb":{"allocated":0,"reserved":0,"max_allocated":0},
55
+ "memory_after_mb":{"allocated":0.0005,"reserved":2.0,"max_allocated":0.001}}
56
+ ```
57
+ - The skill extracts this JSON from `log_file` as the `summary` in the local `result.json`, then outputs only one `RESULT: ...` line.
58
+ - The full raw `nvidia-smi` output remains in the sandbox `log_file`.
59
+
60
+ ## 2. Run a script the user already has
61
+
62
+ ```text
63
+ In sandbox <sandbox_id>, run <wd>/train.py with the arguments --epochs 10 --batch-size 32.
64
+ ```
65
+
66
+ > `<wd>` is this sandbox's working directory (`/workspace/{user_id}/{sandbox_id}`; first check it with `delta-cli sandbox working-directory <id>`).
67
+
68
+ Notes: the file already exists, so use the neutral verb `run` rather than a commitment verb such as `create`.
69
+
70
+ ## 3. Install dependencies and run a command
71
+
72
+ ```text
73
+ In the sandbox, run pip install -r <wd>/requirements.txt, then run python <wd>/app.py.
74
+ ```
75
+
76
+ Notes: neither dependency installation nor command execution creates a new deliverable file, so describe them with neutral verbs.
77
+
78
+ ## 4. Train and write metrics to disk
79
+
80
+ ```text
81
+ In a GPU sandbox, run a training script (for example, PyTorch-based MNIST training). When training finishes, print structured JSON at the end of stdout containing epochs, final_loss, final_accuracy and model_file.
82
+ ```
83
+
84
+ Notes:
85
+
86
+ - Training logs can be long; do not have the skill read the entire log and then summarise it. Have the script output the key metrics itself.
87
+ - We recommend that the script finish by printing: `{"status":"ok","epochs":10,"final_loss":0.023,"final_accuracy":0.992,"model_file":"<wd>/model.pt"}`
88
+ - The skill extracts this as the `summary` in `result.json`, then outputs `RESULT: exit_code=0, status=ok, epochs=10, ...`.
89
+ - To save the complete model file, use `sandbox read` or `sandbox upload` as needed; the model file is outside the scope of the `result.json` summary.
90
+
91
+ ## 5. General data processing
92
+
93
+ ```text
94
+ In the sandbox, run a data-processing command that reads <wd>/input.csv and writes <wd>/output.csv, then prints structured JSON at the end of stdout containing input_rows, output_rows and output_file.
95
+ ```
96
+
97
+ Notes:
98
+
99
+ - We recommend that the script finish by printing: `{"status":"ok","input_rows":10000,"output_rows":9876,"output_file":"<wd>/output.csv"}`
100
+ - The skill extracts this as the `summary` in `result.json`, then outputs `RESULT: exit_code=0, status=ok, input_rows=10000, output_rows=9876, output_file=<wd>/output.csv`.
101
+
102
+ ## 6. Model inference (Qwen / LLM / vision, etc.)
103
+
104
+ Example user request:
105
+
106
+ ```text
107
+ Run one inference in a GPU sandbox using Qwen/Qwen2.5-0.5B-Instruct from ModelScope, with "100+10" as input; return the model's output and a summary of CUDA availability.
108
+ ```
109
+
110
+ Notes:
111
+
112
+ - Do not paste complete Python code into the request or specify a host file path (such as `@ROOT/inference.py` or a local absolute path), and do not ask the script to output a `FINAL_ANSWER:` marker line. The skill writes the script, downloads the model and sets the execution path inside the sandbox using `delta-cli sandbox write`.
113
+ - We recommend that the script print one line of structured JSON at the end of `stdout`, for example:
114
+ ```json
115
+ {"status":"ok","cuda_available":true,"device":"cuda","model":"Qwen/Qwen2.5-0.5B-Instruct","input":"100+10","generated_text":"110"}
116
+ ```
117
+ - The skill extracts this as the `summary` in `result.json`, then outputs `RESULT: exit_code=0, status=ok, cuda_available=True, generated_text=110, ...`.
118
+
119
+ > **Match GPU memory to the model:** The `--gpu-mem` value (in MiB) used to create the sandbox must match the model being run. Larger models and higher precision require more memory; putting a large model in a sandbox with too little `--gpu-mem` will cause OOM directly. The example above uses `Qwen2.5-0.5B` (a small 0.5B model); **do not use it as a memory reference for larger models such as 7B/9B/13B**. Before running a larger model, assess its memory requirements, increase `--gpu-mem` as appropriate, and consider verifying the workflow with a smaller model first.
120
+
121
+ ## Notes
122
+
123
+ - Describe tasks in natural language where possible; the skill handles the full code internally.
124
+ - Mention extensions such as `*.py` / `*.json` / `*.csv` explicitly in the request only when the skill will actually create a file.
125
+ - Do not use phrasing such as `The script should output...` that puts a code fragment immediately after a commitment verb.
126
+ - **Task completion is determined by the execution result, not by the presence of a script file.** The Planner and skill should both treat the creation of the local `result.json` as the completion criterion. `required_outputs` must declare `.json`; do not declare only `{"kind": "file"}`.
127
+ - **Do not include complete code blocks or host-file-path concepts in `skill_request`** (such as `@ROOT/...` or `/Users/...`). The script should be written to the sandbox working directory (`/workspace/{user_id}/{sandbox_id}/...`) with `delta-cli sandbox write <id> --source <filename>`.
128
+
129
+ ## Local `result.json` content contract
130
+
131
+ - **Preferred SSE path (recommended, one step):** The **complete frame for `sandbox run` / `run-bg --wait` includes `result_summary` directly** (the CLI injects detected trailing JSON from stdout), so the skill can extract it from the complete frame without reading and parsing the log.
132
+ - **SSE fallback path:** If the complete frame lacks `result_summary` (there is no valid JSON at the end of stdout), `delta-cli sandbox read <id> --path <log_file>` reads the run-envelope log file, then scans backwards through stdout to extract trailing JSON. The `log_file` path comes from the SSE `complete` frame (the CLI fills it in if needed) or the `sandbox logs` snapshot (after `finished=true`).
133
+ - **Legacy-server fallback path:** When `run` / `run-bg --wait` falls back to polling, it returns a `CommandResult` envelope whose `data.result_summary` field can be reused directly.
134
+ - The local `result.json` is a **concise summary** for host deliverable validation, not a complete log archive.
135
+ - It must include the `result_summary` field, with content matching the final `RESULT:` line, so the Runner can read the conclusion directly.
136
+ - Write only the key fields (`exit_code`, `finished`, `summary`, `result_summary`, `error`). **Do not** add fields such as `final_answer`.
137
+ - Do not put the full raw `stdout` in `result.json`; the host's `read_file` preview would be truncated, and the Runner might mistake this for a truncated file.
138
+ - Keep the full raw output in the sandbox `log_file` and use `sandbox read` to inspect it when needed.
@@ -1,47 +1,47 @@
1
- # skills/delta-science — Science Skill Package
2
-
3
- **Generated:** 2026-09-07
4
- **Parent:** `../AGENTS.md`
5
-
6
- ## OVERVIEW
7
-
8
- Single public `delta-science` skill: the company online-Science unified entrypoint. It is host-neutral and routed exclusively through Delta CLI (`science invoke`, durable `science task`, or controlled `science file`) to the Science Server. Per-tool operation contracts live in `references/` and are loaded on demand; there are no separate planner-visible per-tool skills.
9
-
10
- ## STRUCTURE
11
-
12
- ```
13
- delta-science/
14
- ├── SKILL.md # single entrypoint: routing, CLI-only execution, cross-tool handoff
15
- ├── agents/
16
- │ └── openai.yaml # host agent registration
17
- └── references/
18
- └── <tool>.md # one real tool's operation contract (pubchem, rdkit, pymatgen,
19
- # gsasii, lammps, delta-bo, ldm-bo, materials-design, qe,
20
- # strbo, synbo, antbo, xrd)
21
- ```
22
-
23
- ## WHERE TO LOOK
24
-
25
- | Path | Content |
26
- |------|---------|
27
- | `SKILL.md` | Service boundary, security guardrails (no curl/requests/httpx/browser direct gateway), invoke/task/file templates, cross-tool handoff |
28
- | `references/<tool>.md` | One real tool's authoritative operation, request-field, response and failure schema |
29
-
30
- ## CONVENTIONS
31
-
32
- - JSON endpoint operations go through `delta-cli science invoke`; durable jobs go through `delta-cli science task`; raw/multipart operations go through `delta-cli science file`; no direct HTTP alternate routes
33
- - Tool/endpoint names are exact contracts from the server DB — read the matching reference first; never invent fields/enums from memory
34
- - Success is reported only when subprocess exit is 0 AND top-level JSON `ok` is `true`; `data` holds the service response
35
- - `references/` contains only one real tool per file; routing, service maps, catalogs and workflows belong in `SKILL.md` or live CLI discovery, not here
36
- - `retired_skills` (old per-tool skills) are removed, not referenced
37
- - Host-neutral: `delta-cli` is the sole service boundary; no host-specific tool/env dependencies
38
- - Discover newly-deployed tools via `delta-cli science list` / `delta-cli science endpoints list <tool>`; do not copy the server registry into the Skill
39
-
40
- ## ANTI-PATTERNS
41
-
42
- - Do not call `curl`/`requests`/`httpx`/browser/PowerShell web directly against the gateway
43
- - Do not bypass delta-cli via the legacy `large-discovery-model` Skill or gateway scripts
44
- - Do not fabricate science data or mislabel local-tool (RDKit/pymatgen/LAMMPS/etc.) results as Science results
45
- - Do not create extra JSON/CSV/report/image artifacts unless the user explicitly asks to save/export/plot
46
- - Do not embed realistic credentials or API keys in examples
47
- - Do not break relative links between SKILL.md and `references/`
1
+ # skills/delta-science — Science Skill Package
2
+
3
+ **Generated:** 2026-09-07
4
+ **Parent:** `../AGENTS.md`
5
+
6
+ ## OVERVIEW
7
+
8
+ Single public `delta-science` skill: the company online-Science unified entrypoint. It is host-neutral and routed exclusively through Delta CLI (`science invoke`, durable `science task`, or controlled `science file`) to the Science Server. Per-tool operation contracts live in `references/` and are loaded on demand; there are no separate planner-visible per-tool skills.
9
+
10
+ ## STRUCTURE
11
+
12
+ ```
13
+ delta-science/
14
+ ├── SKILL.md # single entrypoint: routing, CLI-only execution, cross-tool handoff
15
+ ├── agents/
16
+ │ └── openai.yaml # host agent registration
17
+ └── references/
18
+ └── <tool>.md # one real tool's operation contract (pubchem, rdkit, pymatgen,
19
+ # gsasii, lammps, delta-bo, ldm-bo, materials-design, qe,
20
+ # strbo, synbo, antbo, xrd)
21
+ ```
22
+
23
+ ## WHERE TO LOOK
24
+
25
+ | Path | Content |
26
+ |------|---------|
27
+ | `SKILL.md` | Service boundary, security guardrails (no curl/requests/httpx/browser direct gateway), invoke/task/file templates, cross-tool handoff |
28
+ | `references/<tool>.md` | One real tool's authoritative operation, request-field, response and failure schema |
29
+
30
+ ## CONVENTIONS
31
+
32
+ - JSON endpoint operations go through `delta-cli science invoke`; durable jobs go through `delta-cli science task`; raw/multipart operations go through `delta-cli science file`; no direct HTTP alternate routes
33
+ - Tool/endpoint names are exact contracts from the server DB — read the matching reference first; never invent fields/enums from memory
34
+ - Success is reported only when subprocess exit is 0 AND top-level JSON `ok` is `true`; `data` holds the service response
35
+ - `references/` contains only one real tool per file; routing, service maps, catalogs and workflows belong in `SKILL.md` or live CLI discovery, not here
36
+ - `retired_skills` (old per-tool skills) are removed, not referenced
37
+ - Host-neutral: `delta-cli` is the sole service boundary; no host-specific tool/env dependencies
38
+ - Discover newly-deployed tools via `delta-cli science list` / `delta-cli science endpoints list <tool>`; do not copy the server registry into the Skill
39
+
40
+ ## ANTI-PATTERNS
41
+
42
+ - Do not call `curl`/`requests`/`httpx`/browser/PowerShell web directly against the gateway
43
+ - Do not bypass delta-cli via the legacy `large-discovery-model` Skill or gateway scripts
44
+ - Do not fabricate science data or mislabel local-tool (RDKit/pymatgen/LAMMPS/etc.) results as Science results
45
+ - Do not create extra JSON/CSV/report/image artifacts unless the user explicitly asks to save/export/plot
46
+ - Do not embed realistic credentials or API keys in examples
47
+ - Do not break relative links between SKILL.md and `references/`