@delta-infra/cli 1.1.16 → 1.1.18
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 +27 -9
- package/checksums.txt +5 -5
- package/package.json +1 -1
- package/skills/delta-sandbox/SKILL.md +278 -276
- package/skills/delta-sandbox/agents/openai.yaml +3 -3
- package/skills/delta-sandbox/references/commands.md +45 -45
- package/skills/delta-sandbox/references/lifecycle.md +61 -61
- package/skills/delta-sandbox/references/recipes.md +66 -66
- package/skills/delta-science/AGENTS.md +2 -2
- package/skills/delta-science/SKILL.md +181 -139
- package/skills/delta-science/agents/openai.yaml +2 -2
- package/skills/delta-science/references/antbo.md +52 -47
- package/skills/delta-science/references/delta-bo.md +22 -19
- package/skills/delta-science/references/gsasii.md +14 -12
- package/skills/delta-science/references/lammps.md +13 -11
- package/skills/delta-science/references/ldm-bo.md +14 -11
- package/skills/delta-science/references/materials-design.md +80 -68
- package/skills/delta-science/references/pubchem.md +18 -16
- package/skills/delta-science/references/pymatgen.md +10 -9
- package/skills/delta-science/references/qe.md +72 -63
- package/skills/delta-science/references/rdkit.md +22 -19
- package/skills/delta-science/references/strbo.md +44 -36
- package/skills/delta-science/references/synbo.md +30 -27
- package/skills/delta-science/references/xrd.md +197 -186
- package/skills/delta-shared/SKILL.md +60 -58
- package/skills/delta-shared/agents/openai.yaml +3 -3
|
@@ -1,186 +1,197 @@
|
|
|
1
|
-
# XRD Cloud Compute
|
|
2
|
-
|
|
3
|
-
`xrd`
|
|
4
|
-
`delta-cli
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
| `
|
|
24
|
-
| `xmatcher-
|
|
25
|
-
| `xmatcher-
|
|
26
|
-
| `
|
|
27
|
-
| `xmatcher-
|
|
28
|
-
| `
|
|
29
|
-
| `
|
|
30
|
-
| `refinement-
|
|
31
|
-
| `
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
--
|
|
43
|
-
--
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
--
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
`
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
-
|
|
178
|
-
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
1
|
+
# XRD Cloud Compute reference
|
|
2
|
+
|
|
3
|
+
`xrd` is a real tool for accessing XRD cloud compute through the Science tool proxy. Route every
|
|
4
|
+
call through `delta-cli`; do not bypass the CLI with broker URLs, `curl`, `requests`, `httpx`, a
|
|
5
|
+
browser or local XRD libraries. This is a tool reference for `delta-science`, not a second HTTP
|
|
6
|
+
client.
|
|
7
|
+
|
|
8
|
+
## Tool and endpoints
|
|
9
|
+
|
|
10
|
+
Before execution, use the live catalogue to confirm the canonical names and enabled status in the
|
|
11
|
+
current environment:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
delta-cli science list
|
|
15
|
+
delta-cli science endpoints list xrd
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Copy `xrd` endpoint names exactly from the output of the second command. This reference covers
|
|
19
|
+
the following stable contracts:
|
|
20
|
+
|
|
21
|
+
| endpoint | Method/purpose | Request type |
|
|
22
|
+
| --- | --- | --- |
|
|
23
|
+
| `healthz`, `readyz`, `capabilities`, `xmatcher-status` | Readiness, capabilities and database status | Read-only JSON |
|
|
24
|
+
| `xmatcher-artifacts` | Upload an observed pattern, model input, CIF or instrument parameters | `invoke --file` |
|
|
25
|
+
| `xmatcher-artifact`, `xmatcher-artifact-content` | Query/read an artifact | `invoke --path-params` |
|
|
26
|
+
| `xqueryer-predictions` | XQueryer single-phase candidate prediction | JSON |
|
|
27
|
+
| `xmatcher-detect-peaks`, `xmatcher-match` | Peak detection and single-phase matching | JSON |
|
|
28
|
+
| `xmatcher-multiphase-match`, `xdecomposer-predictions` | Multiphase matching and phase decomposition | JSON |
|
|
29
|
+
| `xmatcher-cif-xrd`, `xmatcher-pdf-peaks-xlsx` | CIF simulation and PDF peak-table export | JSON/binary |
|
|
30
|
+
| `xmatcher-refinement-patterns` | Generate refinement inputs and a provenance manifest | JSON |
|
|
31
|
+
| `refinement-fullprof`, `refinement-gsasii`, `refinement-wpem` | Submit a refinement job to the corresponding backend | JSON + header |
|
|
32
|
+
| `refinement-job`, `refinement-job-events`, `refinement-job-artifacts` | Query a refinement job | `invoke --path-params` |
|
|
33
|
+
| `refinement-job-cancel` | Request refinement-job cancellation | `invoke --path-params` |
|
|
34
|
+
| `mp500-cif-exports` | Export an MP500 structure as CIF | JSON |
|
|
35
|
+
|
|
36
|
+
The live catalogue is authoritative. If an endpoint is absent from it, stop and report a
|
|
37
|
+
configuration issue; do not retry under a different name.
|
|
38
|
+
|
|
39
|
+
## CLI argument mapping
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
--data Upstream JSON body
|
|
43
|
+
--params Upstream URL query parameters
|
|
44
|
+
--path-params Replace {artifact_id}/{job_id} in the endpoint path
|
|
45
|
+
--headers Additional upstream headers, such as Idempotency-Key
|
|
46
|
+
--file Send a local file to the tool proxy via file_base64
|
|
47
|
+
--content-type The file's original MIME type
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
`--params` cannot replace `--path-params`. Do not put local paths, base64, path parameters or
|
|
51
|
+
idempotency keys in ordinary business `--data`. `science file` is a separate file interface for
|
|
52
|
+
tools such as QE and Materials Design. XRD's `xmatcher-artifacts` is a tool-proxy endpoint; use
|
|
53
|
+
`science invoke --file` for it.
|
|
54
|
+
|
|
55
|
+
## Call sequence
|
|
56
|
+
|
|
57
|
+
1. When the user explicitly asks for a diagnosis or execution, read `healthz` first; read
|
|
58
|
+
`capabilities` only when you need to select a backend.
|
|
59
|
+
2. Upload real files through `xmatcher-artifacts` and save the returned `artifact_id` and `sha256`.
|
|
60
|
+
3. Use `xmatcher-match`, `xmatcher-multiphase-match` or `xdecomposer-predictions` for observed
|
|
61
|
+
data; XQueryer uses `model_input_pattern`.
|
|
62
|
+
4. Use `xmatcher-cif-xrd` for CIF simulation. For refinement, call
|
|
63
|
+
`xmatcher-refinement-patterns` first, then choose a refinement endpoint matching
|
|
64
|
+
`data.backends`.
|
|
65
|
+
5. After submitting a refinement job, read its status and artifacts with `refinement-job`,
|
|
66
|
+
`refinement-job-events` and `refinement-job-artifacts`.
|
|
67
|
+
|
|
68
|
+
Do not present a returned `queued` state, scheduler completion or backend success as a scientific
|
|
69
|
+
conclusion. For refinement, report the transport/job final state, backend execution state and
|
|
70
|
+
scientific acceptance state separately.
|
|
71
|
+
|
|
72
|
+
## Readiness checks
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
delta-cli science invoke --tool xrd --endpoint healthz
|
|
76
|
+
delta-cli science invoke --tool xrd --endpoint capabilities
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Call readiness/status additionally only when diagnosis requires it or the user explicitly asks.
|
|
80
|
+
Every required component in the capabilities result must have `available` status. For production
|
|
81
|
+
jobs, also check `asset_release_approved`, checksum fields and warnings. `auto` does not prove GPU
|
|
82
|
+
use; report GPU use only when the result explicitly returns a GPU backend.
|
|
83
|
+
|
|
84
|
+
## Artifact upload and identity
|
|
85
|
+
|
|
86
|
+
Upload an observed pattern:
|
|
87
|
+
|
|
88
|
+
```text
|
|
89
|
+
delta-cli science invoke --tool xrd --endpoint xmatcher-artifacts `
|
|
90
|
+
--file observed.csv `
|
|
91
|
+
--params '{"filename":"observed.csv","kind":"observed_pattern","media_type":"text/csv"}' `
|
|
92
|
+
--content-type application/octet-stream
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Allowed `kind` values are `observed_pattern`, `model_input_pattern`, `cif` and
|
|
96
|
+
`instrument_parameters`. Save the successful response's `artifact_id` and `sha256` together and
|
|
97
|
+
pass them to downstream calls unchanged. Pattern files are normalised by the server, so the
|
|
98
|
+
returned digest identifies the normalised artifact and may differ from the digest of the local
|
|
99
|
+
upload bytes.
|
|
100
|
+
|
|
101
|
+
Use path parameters to query an artifact:
|
|
102
|
+
|
|
103
|
+
```text
|
|
104
|
+
delta-cli science invoke --tool xrd --endpoint xmatcher-artifact `
|
|
105
|
+
--path-params '{"artifact_id":"art_<returned-id>"}'
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Binary-content responses may return `data._binary=true`, `content_base64`, `media_type` and
|
|
109
|
+
`content_length`. Decode only when the user asks to save the content or the workflow requires it,
|
|
110
|
+
and verify it against the SHA-256 returned by the service. Do not infer the format from the filename.
|
|
111
|
+
|
|
112
|
+
## Phase identification and matching
|
|
113
|
+
|
|
114
|
+
XQueryer's `model_input_pattern` must contain exactly 3,500 samples over 10 to 90 degrees 2theta,
|
|
115
|
+
with intensities within the service's capability limits:
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
delta-cli science invoke --tool xrd --endpoint xqueryer-predictions `
|
|
119
|
+
--data '{"schema_version":1,"pattern":{"artifact_id":"art_<model>","sha256":"<sha>"},"top_k":10,"radiation_profile":"CuKa"}'
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
XMatcher observed pattern:
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
delta-cli science invoke --tool xrd --endpoint xmatcher-match `
|
|
126
|
+
--data '{"schema_version":1,"pattern":{"artifact_id":"art_<observed>","sha256":"<sha>"},"top_n":10,"element_filter_mode":"contains"}'
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Multiphase matching:
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
delta-cli science invoke --tool xrd --endpoint xmatcher-multiphase-match `
|
|
133
|
+
--data '{"schema_version":1,"pattern":{"artifact_id":"art_<observed>","sha256":"<sha>"},"max_phases":3,"candidate_pool":8}'
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
The `score` from `xqueryer-predictions` is a softmax probability; the XMatcher `score` is
|
|
137
|
+
`raw_score / 100`. Do not average them directly or treat them as the same calibrated probability.
|
|
138
|
+
|
|
139
|
+
## CIF simulation and peak tables
|
|
140
|
+
|
|
141
|
+
Each artifact in `cifs` must provide both `artifact_id` and `sha256`:
|
|
142
|
+
|
|
143
|
+
```text
|
|
144
|
+
delta-cli science invoke --tool xrd --endpoint xmatcher-cif-xrd `
|
|
145
|
+
--data '{"schema_version":1,"cifs":[{"artifact":{"artifact_id":"art_<cif>","sha256":"<sha>"},"name":"phase"}],"two_theta_range":[5.0,90.0],"wavelength":"CuKa"}'
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
`xmatcher-pdf-peaks-xlsx` returns a binary XLSX file; read and save it only when the user asks for an export.
|
|
149
|
+
|
|
150
|
+
## Refinement jobs
|
|
151
|
+
|
|
152
|
+
First generate the corrected pattern and provenance manifest:
|
|
153
|
+
|
|
154
|
+
```text
|
|
155
|
+
delta-cli science invoke --tool xrd --endpoint xmatcher-refinement-patterns `
|
|
156
|
+
--data '{"schema_version":1,"source_pattern":{"artifact_id":"art_<observed>","sha256":"<sha>"}}'
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Then use the endpoint matching `data.backends`. The example below shows the structure; every
|
|
160
|
+
artifact identity must come from the current call chain:
|
|
161
|
+
|
|
162
|
+
```text
|
|
163
|
+
delta-cli science invoke --tool xrd --endpoint refinement-gsasii `
|
|
164
|
+
--data '{"schema_version":1,"radiation_profile":"CuKa","refinement_pattern":{"observed_pattern":{"artifact_id":"art_<obs>","sha256":"<sha>"},"corrected_pattern":{"artifact_id":"art_<corrected>","sha256":"<sha>"},"provenance_manifest":{"artifact_id":"art_<manifest>","sha256":"<sha>"}},"phases":[{"phase_index":0,"name":"phase","cif":{"artifact_id":"art_<cif>","sha256":"<sha>"}}],"wavelengths_angstrom":[1.540593,1.544414],"backends":["gsasii"]}' `
|
|
165
|
+
--headers '{"Idempotency-Key":"<stable-unique-key>"}'
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
`refinement-fullprof`, `refinement-gsasii` and `refinement-wpem` select the billing/backend
|
|
169
|
+
entry point. Do not interchange endpoint names or `backends` merely because they map to the same
|
|
170
|
+
path. Submission, cancellation, retry and review are remote mutations and require the user's
|
|
171
|
+
explicit authorisation. After a timeout or disconnection, do not retry blindly; first check
|
|
172
|
+
whether a job has already been created.
|
|
173
|
+
|
|
174
|
+
To query a job:
|
|
175
|
+
|
|
176
|
+
```text
|
|
177
|
+
delta-cli science invoke --tool xrd --endpoint refinement-job `
|
|
178
|
+
--path-params '{"job_id":"refjob_<returned-id>"}'
|
|
179
|
+
|
|
180
|
+
delta-cli science invoke --tool xrd --endpoint refinement-job-events `
|
|
181
|
+
--path-params '{"job_id":"refjob_<returned-id>"}'
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Results and errors
|
|
185
|
+
|
|
186
|
+
- A call succeeds only when the CLI exits with code 0 and the top-level JSON `ok` is `true`.
|
|
187
|
+
- Preserve the returned `data`, warnings, error detail and stable error codes exactly as returned.
|
|
188
|
+
- `202`, `queued` and `running` describe job acceptance/execution state only; they do not mean the solver converged or the result was scientifically accepted.
|
|
189
|
+
- `TIER_CONCURRENCY_EXCEEDED`, `Endpoint is disabled`, `ARTIFACT_MISSING`,
|
|
190
|
+
`MP500_IDENTITY_MISMATCH` and similar errors should stop the current call chain; report the
|
|
191
|
+
original detail and do not switch endpoints, rename them, guess parameters or substitute a
|
|
192
|
+
local algorithm.
|
|
193
|
+
- Use the live catalogue as the authority for paid endpoint prices and availability; before execution, confirm that the user actually requested the business call.
|
|
194
|
+
|
|
195
|
+
Evidence boundary: business results in the current Delta CLI `data` only.
|
|
196
|
+
Call chain: `delta-cli`.
|
|
197
|
+
Do not add information absent from the response: yes.
|
|
@@ -1,111 +1,113 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: delta-shared
|
|
3
|
-
description: "delta-cli
|
|
3
|
+
description: "delta-cli shared global rules: configuration and authentication checks, security boundaries, error handling, and sandbox destruction."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# delta-cli
|
|
6
|
+
# delta-cli Shared Rules
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
General guidance for AI agents using `delta-cli`. Core principles: **check, do not guess or expose credentials**.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Before any operation
|
|
11
11
|
|
|
12
|
-
1.
|
|
12
|
+
1. Verify the server address:
|
|
13
13
|
```bash
|
|
14
14
|
delta-cli config show
|
|
15
15
|
```
|
|
16
|
-
2.
|
|
16
|
+
2. Inspect the local authentication configuration:
|
|
17
17
|
```bash
|
|
18
18
|
delta-cli auth status
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
-
|
|
22
|
-
-
|
|
21
|
+
- If `auth status` reports `method: token` or `method: apikey`, a credential is configured locally; **run the requested command directly without logging in or initialising configuration again**.
|
|
22
|
+
- `auth status` reads local configuration and environment overrides; it does not validate the credential with the remote server. If it reports `method: none`, follow “Complete configuration” below. If a requested command returns `error.type: auth` or `permission`, follow the matching recovery action below.
|
|
23
23
|
|
|
24
|
-
##
|
|
24
|
+
## Complete configuration
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
If the server address or credentials are missing, **ask the user once**, then initialise with the flag that matches the credential type:
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
29
|
delta-cli config init --base-url <server-url> --token <token>
|
|
30
|
+
# For an API key:
|
|
31
|
+
delta-cli config init --base-url <server-url> --apikey <api-key>
|
|
30
32
|
```
|
|
31
33
|
|
|
32
|
-
|
|
34
|
+
Do not use interactive `config init` (without flags), as it may hang when stdin is unavailable.
|
|
33
35
|
|
|
34
|
-
###
|
|
36
|
+
### Priority of information sources
|
|
35
37
|
|
|
36
|
-
1.
|
|
37
|
-
2. `~/.delta-infra/config.json`
|
|
38
|
-
3.
|
|
39
|
-
4.
|
|
38
|
+
1. Environment variables: `DELTA_INFRA_BASE_URL`, `DELTA_INFRA_TOKEN`, `DELTA_INFRA_API_KEY`
|
|
39
|
+
2. `base_url`, `token`, and `apikey` in `~/.delta-infra/config.json` (environment values override file values)
|
|
40
|
+
3. Default value: only `base_url` has an internal default
|
|
41
|
+
4. If none of the above are available, **you must ask the user**; do not make anything up
|
|
40
42
|
|
|
41
|
-
###
|
|
43
|
+
### Runtime credentials
|
|
42
44
|
|
|
43
|
-
CLI
|
|
45
|
+
The CLI sends the effective credential in the `Authorization: Bearer <credential>` header; an API key takes precedence over a token when both are configured. It adds `X-User-Uid` when it can parse a `uid` from the credential as an unverified JWT.
|
|
44
46
|
|
|
45
|
-
##
|
|
47
|
+
## Querying user information and remaining credits
|
|
46
48
|
|
|
47
49
|
```bash
|
|
48
50
|
delta-cli usage
|
|
49
51
|
```
|
|
50
52
|
|
|
51
|
-
|
|
53
|
+
This returns the current user's information and remaining credits (through the gateway `/infra/api/users/me`; the CLI automatically attaches the configured credentials). Keep only these three fields in the output:
|
|
52
54
|
|
|
53
|
-
- `data.display_name
|
|
54
|
-
- `data.user_id
|
|
55
|
-
- `data.resources.credit
|
|
55
|
+
- `data.display_name`: display name (fall back to `user_id` if missing)
|
|
56
|
+
- `data.user_id`: user ID
|
|
57
|
+
- `data.resources.credit`: remaining balance in credits
|
|
56
58
|
|
|
57
|
-
`username`/`id`/`email`/`role`/`quota`/`group`/`tier`/`status`/`created_at`/`is_admin
|
|
59
|
+
`username`/`id`/`email`/`role`/`quota`/`group`/`tier`/`status`/`created_at`/`is_admin`, `stats` and its `total_consumed_credits` (in the database's original quota units) are internal fields and must not be exposed externally.
|
|
58
60
|
|
|
59
|
-
##
|
|
61
|
+
## Security rules
|
|
60
62
|
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
- `~/.delta-infra/config.json`
|
|
66
|
-
- **sandbox
|
|
63
|
+
- **Never output credentials**: token and API key values must not appear in logs, messages or the terminal.
|
|
64
|
+
- **Never construct URLs or make HTTP requests yourself**: route all requests through `delta-cli`.
|
|
65
|
+
- **Do not install the CLI proactively**: if the user says it is not installed, direct them to the README or `install.sh`; do not choose an installation method yourself.
|
|
66
|
+
- **Confirm intent before write or delete operations**: tell the user what commands such as `sandbox kill`, `sandbox finish` and `sandbox write` will affect.
|
|
67
|
+
- `~/.delta-infra/config.json` must have `0600` permissions; do not loosen them manually.
|
|
68
|
+
- **The sandbox must be destroyed**: after calling `sandbox create`, call `sandbox kill` before the current task ends. The server does not clean up automatically; failure to destroy a sandbox leaves GPU resources occupied indefinitely. Do not skip this, even if an error occurs.
|
|
67
69
|
|
|
68
|
-
## JSON
|
|
70
|
+
## JSON output conventions
|
|
69
71
|
|
|
70
72
|
```json
|
|
71
73
|
{"ok":true,"data":{...}}
|
|
72
74
|
{"ok":false,"error":{"type":"auth","message":"...","hint":"..."}}
|
|
73
75
|
```
|
|
74
76
|
|
|
75
|
-
AI
|
|
76
|
-
-
|
|
77
|
-
- `error.type`
|
|
78
|
-
- `error.hint`
|
|
77
|
+
AI agent parsing rules:
|
|
78
|
+
- Always check `ok`; do not rely on the exit code alone.
|
|
79
|
+
- `error.type` is the stable field for branching on: `auth`, `permission`, `not_found`, `validation`, `network`, `api`, `command_failed`, `internal`.
|
|
80
|
+
- `error.hint` may be shown to the user.
|
|
79
81
|
|
|
80
|
-
##
|
|
82
|
+
## Exit code conventions
|
|
81
83
|
|
|
82
|
-
| Type | Exit Code |
|
|
83
|
-
|
|
84
|
-
| validation | 2 | flag
|
|
85
|
-
| auth | 3 |
|
|
86
|
-
| permission | 4 |
|
|
87
|
-
| not_found | 5 |
|
|
88
|
-
| network | 6 | DNS
|
|
89
|
-
| api | 7 |
|
|
90
|
-
| command_failed | 8 | sandbox
|
|
91
|
-
| internal | 10 |
|
|
84
|
+
| Type | Exit Code | Scenario |
|
|
85
|
+
|------|-----------|----------|
|
|
86
|
+
| validation | 2 | Invalid flag or argument |
|
|
87
|
+
| auth | 3 | Not authenticated or authentication failed |
|
|
88
|
+
| permission | 4 | Insufficient permissions |
|
|
89
|
+
| not_found | 5 | Sandbox or file does not exist |
|
|
90
|
+
| network | 6 | DNS, timeout or connection failure |
|
|
91
|
+
| api | 7 | Server returned a non-2xx response |
|
|
92
|
+
| command_failed | 8 | Command failed inside the sandbox (non-zero `exit_code` or an error); on the SSE path, an error envelope is appended after the `complete` frame, with the stderr tail in `message` for quick reference |
|
|
93
|
+
| internal | 10 | Internal client error |
|
|
92
94
|
|
|
93
|
-
##
|
|
95
|
+
## Upgrade check
|
|
94
96
|
|
|
95
|
-
|
|
97
|
+
After completing the user's request, if the JSON contains `_notice.update`, you may recommend:
|
|
96
98
|
|
|
97
99
|
```bash
|
|
98
100
|
delta-cli upgrade
|
|
99
101
|
```
|
|
100
102
|
|
|
101
|
-
##
|
|
103
|
+
## Common recovery actions
|
|
102
104
|
|
|
103
|
-
|
|
|
105
|
+
| Error / symptom | Recovery action |
|
|
104
106
|
|-------------|----------|
|
|
105
|
-
| `error.type: auth` / `method: none` |
|
|
106
|
-
| `error.type: permission` |
|
|
107
|
-
| `error.type: not_found` |
|
|
108
|
-
| `error.type: network` |
|
|
109
|
-
| `error.type: validation` |
|
|
110
|
-
| `error.type: command_failed` | sandbox
|
|
111
|
-
|
|
|
107
|
+
| `error.type: auth` / `method: none` | Check the server address and local credential configuration. If no credential is configured or the server rejects it, ask the user once for a credential; use `--apikey` for an API key or `--token` for a bearer token, or set the matching `DELTA_INFRA_API_KEY` / `DELTA_INFRA_TOKEN` environment variable. |
|
|
108
|
+
| `error.type: permission` | Check whether the current credential has sufficient permissions; if needed, ask for a credential with the required permissions. |
|
|
109
|
+
| `error.type: not_found` | Check `sandbox_id` / path |
|
|
110
|
+
| `error.type: network` | Check `base_url` and network connectivity |
|
|
111
|
+
| `error.type: validation` | Check required flags and argument formats |
|
|
112
|
+
| `error.type: command_failed` | Command failed inside the sandbox: the envelope's `message` already includes the stderr tail to help locate the issue quickly; the full `stderr` / `result_summary` are in the `complete` frame. Retry or correct the command |
|
|
113
|
+
| Configuration file parsing failed | Check that `~/.delta-infra/config.json` contains valid JSON |
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "Delta CLI
|
|
3
|
-
short_description: "
|
|
4
|
-
default_prompt: "
|
|
2
|
+
display_name: "Delta CLI Shared Rules"
|
|
3
|
+
short_description: "Handle Delta CLI configuration, authentication, errors and security boundaries"
|
|
4
|
+
default_prompt: "Use $delta-shared to check and resolve Delta CLI configuration or authentication issues."
|