@shipstatic/ship 2.3.1 → 2.3.3
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/SKILL.md +35 -15
- package/THIRD-PARTY-LICENSES.md +1 -1
- package/dist/browser.d.ts +23 -7
- package/dist/browser.js.map +1 -1
- package/dist/cli.cjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +23 -7
- package/dist/index.d.ts +23 -7
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ship
|
|
3
3
|
description: "Deploy static websites to ShipStatic. Use when the user wants to deploy a site, publish a website, upload to hosting, go live, set up a custom domain, manage deployments, or share a site URL. No account required — instant deployment. CLI (`ship`) and Node.js/browser SDK."
|
|
4
|
-
compatibility: "Node.js >= 20. Run via npx (no install) or install globally: npm install -g @shipstatic/ship"
|
|
4
|
+
compatibility: "Node.js >= 20.19. Run via npx (no install) or install globally: npm install -g @shipstatic/ship"
|
|
5
5
|
metadata:
|
|
6
6
|
openclaw:
|
|
7
7
|
requires:
|
|
@@ -203,6 +203,8 @@ ship domains set www.example.com <dep> --json
|
|
|
203
203
|
}
|
|
204
204
|
```
|
|
205
205
|
|
|
206
|
+
Always show the user the records **from this response**, never values copied out of this document — they come from the platform and can change.
|
|
207
|
+
|
|
206
208
|
```bash
|
|
207
209
|
ship domains records www.example.com --json
|
|
208
210
|
```
|
|
@@ -212,7 +214,7 @@ ship domains records www.example.com --json
|
|
|
212
214
|
"domain": "www.example.com",
|
|
213
215
|
"apex": "example.com",
|
|
214
216
|
"records": [
|
|
215
|
-
{"type": "A", "name": "@", "value": "
|
|
217
|
+
{"type": "A", "name": "@", "value": "15.204.149.253"},
|
|
216
218
|
{"type": "CNAME", "name": "www", "value": "cname.shipstatic.com"}
|
|
217
219
|
]
|
|
218
220
|
}
|
|
@@ -311,16 +313,34 @@ ship tokens delete <token> # Delete (revokes immediately)
|
|
|
311
313
|
|
|
312
314
|
## Errors
|
|
313
315
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
| `
|
|
316
|
+
Exit code is non-zero on failure, and with `--json` the error goes to **stderr** as the platform's wire shape:
|
|
317
|
+
|
|
318
|
+
```json
|
|
319
|
+
{
|
|
320
|
+
"error": "validation_failed",
|
|
321
|
+
"message": "File \"index.html\" too large. Maximum 20 MB allowed.",
|
|
322
|
+
"status": 400
|
|
323
|
+
}
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
**Branch on `error` and `status`, never on `message`.** Messages are written for the human reading them and get reworded; the type tag and the status are the contract.
|
|
327
|
+
|
|
328
|
+
| `error` | `status` | Means | Do |
|
|
329
|
+
|---------|----------|-------|----|
|
|
330
|
+
| `validation_failed` | 400 | Bad input — path, domain name, label, password, ttl | Read `message`, fix the input, retry |
|
|
331
|
+
| `authentication_failed` | 401 | Missing or bad credential | Check `SHIP_TOKEN`; do not retry unchanged |
|
|
332
|
+
| `forbidden` | 403 | Plan cap reached, account terminated, or an action this credential may never take | **Do not retry.** Suggest upgrading if it is a cap |
|
|
333
|
+
| `not_found` | 404 | No such deployment or domain | Verify the identifier |
|
|
334
|
+
| `rate_limit_exceeded` | 429 | Too many requests | Wait — `details.expires` is when it clears. An API key raises the limit |
|
|
335
|
+
| `business_logic_error` | 400 or 422 | Valid request, refused by a state rule (e.g. unlinking a domain, suspended account) | Read `message`; the rule will not change on retry |
|
|
336
|
+
| `maintenance` | 503 | Platform closed on purpose | `message` says when it reopens. Wait; do not retry in a loop |
|
|
337
|
+
|
|
338
|
+
Common cases worth recognising before they happen:
|
|
339
|
+
|
|
340
|
+
| Situation | What you get |
|
|
341
|
+
|-----------|--------------|
|
|
342
|
+
| Deploying a project root (`package.json`, `node_modules`) | `validation_failed` — build first, deploy the output |
|
|
343
|
+
| `--ttl` or `--domain` with no credential | `validation_failed`, refused **before** anything uploads |
|
|
344
|
+
| `--ttl` together with `--domain` | `validation_failed` — a domain must not point at something expiring |
|
|
345
|
+
| DNS commands on an internal `*.shipstatic.com` domain | `validation_failed` — only custom domains have DNS |
|
|
346
|
+
| `domains verify` called again too soon | `rate_limit_exceeded` — verification is already queued |
|
package/THIRD-PARTY-LICENSES.md
CHANGED
package/dist/browser.d.ts
CHANGED
|
@@ -73,12 +73,14 @@ declare const DeploymentVia: {
|
|
|
73
73
|
* A deploy that reached the REST API naming no origin at all — the
|
|
74
74
|
* platform-wide fallback, one altitude below `mcp`'s family fallback.
|
|
75
75
|
*
|
|
76
|
-
* **
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
76
|
+
* **The API stamps it, since 2026-08-15.** A deploy that names no origin —
|
|
77
|
+
* or names one this vocabulary does not know — is stored as `api`, so a
|
|
78
|
+
* stored `null` now means only that the row predates attribution.
|
|
79
|
+
*
|
|
80
|
+
* It was declared one wave ahead of that decision, deliberately: vocabulary
|
|
81
|
+
* must exist before a consumer can adopt it, and adding a member costs a
|
|
82
|
+
* full constellation convoy, so the word shipped first and the server
|
|
83
|
+
* adopted it with no convoy standing between the decision and the deploy.
|
|
82
84
|
*/
|
|
83
85
|
readonly API: "api";
|
|
84
86
|
};
|
|
@@ -104,7 +106,10 @@ interface Deployment {
|
|
|
104
106
|
/** Labels for categorization and filtering (lowercase, alphanumeric with separators). Always present, empty array when none. */
|
|
105
107
|
labels: string[];
|
|
106
108
|
/**
|
|
107
|
-
* The client/tool that created this deployment
|
|
109
|
+
* The client/tool that created this deployment. Every deployment created
|
|
110
|
+
* today names one — {@link DeploymentVia.API} when the caller named nothing
|
|
111
|
+
* the vocabulary knows — so `null` is historical: the row predates
|
|
112
|
+
* attribution.
|
|
108
113
|
*
|
|
109
114
|
* Deliberately wider than {@link DeploymentViaType}: this is stored data,
|
|
110
115
|
* and rows predate the vocabulary being closed. Narrowing the ENTITY would
|
|
@@ -1793,6 +1798,17 @@ interface ActivityMeta {
|
|
|
1793
1798
|
hasConfig?: boolean;
|
|
1794
1799
|
/** Whether deployment has a password set */
|
|
1795
1800
|
hasPassword?: boolean;
|
|
1801
|
+
/**
|
|
1802
|
+
* The client/tool that created the deployment.
|
|
1803
|
+
*
|
|
1804
|
+
* Narrower than {@link Deployment.via}, deliberately: the entity is
|
|
1805
|
+
* `string | null` because stored rows predate the vocabulary, while an
|
|
1806
|
+
* activity is only ever written by code that names one. It is here rather
|
|
1807
|
+
* than read off the deployment because the deployment row is deleted at
|
|
1808
|
+
* expiry or on request and the activity is not — this is where a deploy's
|
|
1809
|
+
* origin stays answerable afterwards.
|
|
1810
|
+
*/
|
|
1811
|
+
via?: DeploymentViaType;
|
|
1796
1812
|
/** Whether this was an update (vs create) */
|
|
1797
1813
|
isUpdate?: boolean;
|
|
1798
1814
|
/** Whether domain was already verified */
|