@dev.sail.money/sailor 1.3.0-210 → 1.3.0-95

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.
@@ -5,7 +5,7 @@
5
5
  * Do not edit manually — run `pnpm build` to regenerate.
6
6
  *
7
7
  * Spec version : 1.2.0
8
- * Generated at : 2026-06-25T14:29:20.609Z
8
+ * Generated at : 2026-06-26T09:46:27.970Z
9
9
  */
10
10
  export declare const SAIL_INTELLIGENCE_BASE_URL = "https://api.sail.money";
11
11
  export declare const SAIL_INTELLIGENCE_DOCS_URL = "https://api.sail.money/docs";
@@ -5,7 +5,7 @@
5
5
  * Do not edit manually — run `pnpm build` to regenerate.
6
6
  *
7
7
  * Spec version : 1.2.0
8
- * Generated at : 2026-06-25T14:29:20.609Z
8
+ * Generated at : 2026-06-26T09:46:27.970Z
9
9
  */
10
10
  export const SAIL_INTELLIGENCE_BASE_URL = "https://api.sail.money";
11
11
  export const SAIL_INTELLIGENCE_DOCS_URL = "https://api.sail.money/docs";
@@ -0,0 +1,21 @@
1
+ // Build the publishable npm package as a .tgz archive — the npm analog of `docker build`.
2
+ // Packs under the canonical published name (@sail.money/sailor) so the artifact installs and
3
+ // resolves exactly like the registry package; CI applies the same rename at publish time.
4
+ // ponytail: .tgz is npm's native archive (install offline with `npm i ./<file>.tgz`). For a
5
+ // literal .zip, unpack the tgz and re-zip — not added until something actually needs it.
6
+ import { execSync } from "node:child_process";
7
+ import { readFileSync, writeFileSync } from "node:fs";
8
+
9
+ const PKG = "package.json";
10
+ const CANONICAL = "@sail.money/sailor";
11
+
12
+ const original = readFileSync(PKG, "utf8");
13
+ try {
14
+ const manifest = JSON.parse(original);
15
+ if (manifest.name !== CANONICAL) {
16
+ writeFileSync(PKG, `${JSON.stringify({ ...manifest, name: CANONICAL }, null, 2)}\n`);
17
+ }
18
+ execSync("npm pack", { stdio: "inherit" }); // emits sail.money-sailor-<version>.tgz
19
+ } finally {
20
+ writeFileSync(PKG, original); // restore the working manifest verbatim
21
+ }
@@ -13,11 +13,13 @@ Two distinct local servers. Both are per-project, both write state under `.sail/
13
13
  sailor ui start # spawns a detached Express server, prints the URL, returns immediately
14
14
  sailor ui status # ● running http://localhost:<port> (pid N)
15
15
  sailor ui stop # SIGTERM via the pid file
16
+ sailor ui start --expose tailscale # also serve it on the tailnet over HTTPS (opt-in)
16
17
  ```
17
18
 
18
- - Port: deterministic per project — `3333 + (hash(projectPath) % 667)`, i.e. somewhere in 3333–3999, bumped to the next free port if taken. **Do not assume 3333** — always use the URL the command prints or read `.sail/runtime/ui.json` (`{ pid, port, startedAt }`).
19
+ - Port: deterministic per project — `3333 + (hash(projectPath) % 667)`, i.e. somewhere in 3333–3999, bumped to the next free port if taken. **Do not assume 3333** — always use the URL the command prints or read `.sail/runtime/ui.json` (`{ pid, port, startedAt, exposed }`).
19
20
  - The server serves the pre-built React app (`SERVE_DIST=1`) and a local `/api` that reads `.sail/` state (`SAIL_DIR` env).
20
21
  - `ui start` does not block — no `&` needed.
22
+ - `--expose tailscale` (optional): proxies the dashboard onto the operator's tailnet over HTTPS via `tailscale serve` (tailnet-private, never `funnel`). Requires `tailscale` installed + logged in, and Serve + HTTPS enabled for the tailnet (else the command prints the enable link). `ui stop` tears the proxy down. To allow extra browser origins, set `SAILOR_CORS_ORIGINS` (comma-separated; the local origin is always allowed).
21
23
 
22
24
  ## Signing station — `sailor station`
23
25