@ghostystudio/cli 0.57.0 → 0.58.0
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 +2 -2
- package/dist/index.js +17 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -109,7 +109,7 @@ Every command has its own help with examples: `ghosty <command> --help` or `ghos
|
|
|
109
109
|
|
|
110
110
|
Exit codes: `0` ok · `1` API error · `2` usage error · `3` not signed in.
|
|
111
111
|
|
|
112
|
-
### Changes in 0.57.0
|
|
112
|
+
### Changes in 0.57.1 (0.57.0 + the 0.56.1 factory fix)
|
|
113
113
|
|
|
114
114
|
- `sites pin <slug>` / `sites unpin <slug>` / `sites pins [--cancel|--resume]`: «Pinned sites» — $49 USD/yr or $5 USD/mo ($990 / $99 MXN), includes up to 3 sites per pack; a pinned site never pauses and has no banner. `--interval year|month`, `--currency usd|mxn`, `--add-pack`.
|
|
115
115
|
- `sites ls` shows each site's state (pinned, paused, pauses on…).
|
|
@@ -136,7 +136,7 @@ Exit codes: `0` ok · `1` API error · `2` usage error · `3` not signed in.
|
|
|
136
136
|
### Changes in 0.52.0
|
|
137
137
|
|
|
138
138
|
- `agents embed <id>` customizes the web widget: `--title`, `--subtitle`, `--avatar URL|none`, `--icon chat|avatar|ghost`, `--placeholder`, `--position right|left`, `--offset X[,Y]`, `--theme light|dark|auto`, `--bubble-text`, `--auto-open S|off`, `--starters "a|b"` (up to 4 of yours; Ghosty's never show). The pasted `<script>` doesn't change.
|
|
139
|
-
- Fine style without free CSS: `--style '{json}'|none` (fontFamily from a Google Fonts allow-list, radius 0–24, header/bubble/input/send/launcher colors, titleUppercase, statusDot, sendArrow), shortcuts `--font` and `--
|
|
139
|
+
- Fine style without free CSS: `--style '{json}'|none` (fontFamily from a Google Fonts allow-list, radius 0–24, header/bubble/input/send/launcher colors, titleUppercase, statusDot, sendArrow, typing, typingColor), shortcuts `--font`, `--radius`, `--typing bounce|flow|flashing|shimmer` and `--typing-color`.
|
|
140
140
|
- Theme source: `--theme-source teams` (your Ghosty Teams workspace brand, `--workspace SLUG`) or `--theme-source site --site-url URL` (your site's CSS colors), imported as editable values. `agents embed <id> theme` exports it as JSON; `--style-file theme.json` applies it back.
|
|
141
141
|
|
|
142
142
|
### Changes in 0.51.0
|
package/dist/index.js
CHANGED
|
@@ -8468,7 +8468,7 @@ async function postLong(path, body, timeoutMs = 9e5) {
|
|
|
8468
8468
|
const req = httpsRequest(`${base}${path}`, {
|
|
8469
8469
|
method: "POST",
|
|
8470
8470
|
timeout: timeoutMs,
|
|
8471
|
-
headers: { authorization: `Bearer ${token}`, "user-agent": `ghosty-cli/${"0.
|
|
8471
|
+
headers: { authorization: `Bearer ${token}`, "user-agent": `ghosty-cli/${"0.58.0"}`, "content-type": "application/json", "content-length": Buffer.byteLength(data) }
|
|
8472
8472
|
}, (res) => {
|
|
8473
8473
|
let buf = "";
|
|
8474
8474
|
res.on("data", (c) => buf += c);
|
|
@@ -8510,7 +8510,7 @@ async function request(path, opts = {}, retried = false) {
|
|
|
8510
8510
|
method: opts.method ?? (opts.body !== void 0 || opts.raw !== void 0 ? "POST" : "GET"),
|
|
8511
8511
|
headers: {
|
|
8512
8512
|
authorization: `Bearer ${token}`,
|
|
8513
|
-
"user-agent": `ghosty-cli/${"0.
|
|
8513
|
+
"user-agent": `ghosty-cli/${"0.58.0"}`,
|
|
8514
8514
|
"accept-language": lang(),
|
|
8515
8515
|
...opts.body !== void 0 ? { "content-type": "application/json" } : {},
|
|
8516
8516
|
...opts.headers
|
|
@@ -9731,10 +9731,12 @@ async function agentsEmbed(id, v, action) {
|
|
|
9731
9731
|
if (body.themeSource === void 0) body.themeSource = "site";
|
|
9732
9732
|
}
|
|
9733
9733
|
if (body.themeSource === "teams" && v.workspace) body.teamsWorkspace = v.workspace;
|
|
9734
|
-
if (v.font !== void 0 || v.radius !== void 0) {
|
|
9734
|
+
if (v.font !== void 0 || v.radius !== void 0 || v.typing !== void 0 || v["typing-color"] !== void 0) {
|
|
9735
9735
|
const st = body.style && typeof body.style === "object" ? body.style : {};
|
|
9736
9736
|
if (v.font !== void 0) st.fontFamily = clear(v.font);
|
|
9737
9737
|
if (v.radius !== void 0) st.radius = v.radius === "" || v.radius === "none" ? null : Number(v.radius);
|
|
9738
|
+
if (v.typing !== void 0) st.typing = clear(v.typing);
|
|
9739
|
+
if (v["typing-color"] !== void 0) st.typingColor = clear(v["typing-color"]);
|
|
9738
9740
|
body.style = st;
|
|
9739
9741
|
}
|
|
9740
9742
|
if (v.rotate) body.rotate = true;
|
|
@@ -10404,7 +10406,7 @@ async function call(path, v, init = {}) {
|
|
|
10404
10406
|
"x-ghosty-ts": ts,
|
|
10405
10407
|
"x-ghosty-sig": sig,
|
|
10406
10408
|
"content-type": "application/json",
|
|
10407
|
-
"user-agent": `ghosty-cli/${"0.
|
|
10409
|
+
"user-agent": `ghosty-cli/${"0.58.0"}`
|
|
10408
10410
|
},
|
|
10409
10411
|
body: method === "GET" ? void 0 : raw
|
|
10410
10412
|
});
|
|
@@ -12079,8 +12081,9 @@ var HELPS_ES = {
|
|
|
12079
12081
|
["--bubble-text T", "embed: etiqueta junto al bot\xF3n (\xAB\xBFDudas?\xBB)"],
|
|
12080
12082
|
["--auto-open S|off", "embed: se abre solo a los S segundos (1-120), una vez por visita, nunca en el tel\xE9fono"],
|
|
12081
12083
|
['--starters "a|b|c"', 'embed: hasta 4 sugerencias TUYAS ("" las quita; nunca salen las de Ghosty)'],
|
|
12082
|
-
["--style '{json}'|none", "embed: estilo fino, s\xF3lo llaves conocidas: fontFamily, radius, headerBg, headerText, titleUppercase, statusDot, headerAvatar, panelBg, userBubbleBg/Text, agentBubbleBg/Text, inputBg, sendBg, sendIcon, sendArrow (up|right), launcherBg, launcherIcon. PATCH por llave (null resetea una); none resetea todo"],
|
|
12084
|
+
["--style '{json}'|none", "embed: estilo fino, s\xF3lo llaves conocidas: fontFamily, radius, headerBg, headerText, titleUppercase, statusDot, headerAvatar, panelBg, userBubbleBg/Text, agentBubbleBg/Text, inputBg, sendBg, sendIcon, sendArrow (up|right), launcherBg, launcherIcon, typing (bounce|flow|flashing|shimmer), typingColor. PATCH por llave (null resetea una); none resetea todo"],
|
|
12083
12085
|
["--font NAME / --radius 0-24", "embed: atajos de style.fontFamily (lista de Google Fonts: Barlow, Inter, Poppins\u2026) y style.radius"],
|
|
12086
|
+
["--typing STYLE / --typing-color #rrggbb|none", "embed: el indicador de \xABescribiendo\xBB mientras responde: bounce (el de siempre), flow, flashing o shimmer (\xABPensando\u2026\xBB con brillo), y su color (por defecto, el de la marca)"],
|
|
12084
12087
|
["--theme-source custom|teams|site", "embed: importa el tema de la marca de tu espacio de Ghosty Teams (--workspace SLUG para elegir) o de tu sitio (--site-url); queda editable"],
|
|
12085
12088
|
["--site-url URL", "embed: el sitio del que se sacan los colores (implica --theme-source site)"],
|
|
12086
12089
|
["--style-file FILE", "embed: aplica un tema exportado con `agents embed <id> theme` (o s\xF3lo el objeto style)"],
|
|
@@ -12566,7 +12569,7 @@ var HELPS = {
|
|
|
12566
12569
|
"ghosty agents embed enable|disable <agent-id> [--domains a.com,*.b.com] # web widget: chat bubble on your site, only on those domains",
|
|
12567
12570
|
"ghosty agents embed <agent-id> [--domains \u2026] [--per-visitor N] [--per-ip N] [--welcome TEXT] [--color #hex] [--rotate] # state + the <script> to paste",
|
|
12568
12571
|
'ghosty agents embed <agent-id> [--title T] [--subtitle T] [--avatar URL] [--icon chat|avatar|ghost] [--placeholder T] [--position right|left] [--offset X,Y] [--theme light|dark|auto] [--bubble-text T] [--auto-open S] [--starters "a|b"] # its look',
|
|
12569
|
-
"ghosty agents embed <agent-id> [--theme-source custom|teams|site] [--site-url URL] [--style '{json}'] [--style-file theme.json] [--font NAME] [--radius 0-24] # its theme",
|
|
12572
|
+
"ghosty agents embed <agent-id> [--theme-source custom|teams|site] [--site-url URL] [--style '{json}'] [--style-file theme.json] [--font NAME] [--radius 0-24] [--typing flow] [--typing-color #rrggbb] # its theme",
|
|
12570
12573
|
"ghosty agents embed <agent-id> [--copy '{json}'|none] [--copy-file texts.json] # what it says while it works",
|
|
12571
12574
|
"ghosty agents embed <agent-id> theme # export the theme as JSON (edit it, apply it back with --style-file)",
|
|
12572
12575
|
"ghosty agents embed <agent-id> --out src/components/GhostyChat.tsx [--force] # your own React component, token and theme baked in",
|
|
@@ -12624,8 +12627,9 @@ var HELPS = {
|
|
|
12624
12627
|
["--bubble-text T", 'embed: label next to the button ("Questions?")'],
|
|
12625
12628
|
["--auto-open S|off", "embed: open by itself after S seconds (1-120), once per visit, never on phones"],
|
|
12626
12629
|
['--starters "a|b|c"', `embed: up to 4 of YOUR suggestions ("" removes them; Ghosty's are never shown)`],
|
|
12627
|
-
["--style '{json}'|none", "embed: fine style, only known keys: fontFamily, radius, headerBg, headerText, titleUppercase, statusDot, headerAvatar, panelBg, userBubbleBg/Text, agentBubbleBg/Text, inputBg, sendBg, sendIcon, sendArrow (up|right), launcherBg, launcherIcon. Patch per key (null resets one); none resets all"],
|
|
12630
|
+
["--style '{json}'|none", "embed: fine style, only known keys: fontFamily, radius, headerBg, headerText, titleUppercase, statusDot, headerAvatar, panelBg, userBubbleBg/Text, agentBubbleBg/Text, inputBg, sendBg, sendIcon, sendArrow (up|right), launcherBg, launcherIcon, typing (bounce|flow|flashing|shimmer), typingColor. Patch per key (null resets one); none resets all"],
|
|
12628
12631
|
["--font NAME / --radius 0-24", "embed: shortcuts for style.fontFamily (Google Fonts allow-list: Barlow, Inter, Poppins\u2026) and style.radius"],
|
|
12632
|
+
["--typing STYLE / --typing-color #rrggbb|none", 'embed: the "typing" indicator while the agent replies: bounce (default), flow, flashing or shimmer (glowing "Thinking\u2026" text), and its color (default: the brand color)'],
|
|
12629
12633
|
["--theme-source custom|teams|site", "embed: import the theme from the brand of your Ghosty Teams workspace (--workspace SLUG to pick one) or from your site (--site-url); it stays editable"],
|
|
12630
12634
|
["--site-url URL", "embed: the site to take colors from (implies --theme-source site)"],
|
|
12631
12635
|
["--style-file FILE", "embed: apply a theme exported with `agents embed <id> theme` (or a plain style object)"],
|
|
@@ -14623,7 +14627,7 @@ ${bold("Agents")}
|
|
|
14623
14627
|
agents demo <id> Public demo link /p/<slug>: anyone tries it without an account, "Keep it" clones it to theirs
|
|
14624
14628
|
agents embed enable|disable <id> Web widget: a chat bubble on YOUR site (one <script>), only on the domains you list [--domains a.com,*.b.com] [--per-visitor N] [--per-ip N] [--welcome T] [--color #hex] [--rotate]
|
|
14625
14629
|
look: [--title T] [--subtitle T] [--avatar URL|none] [--icon chat|avatar|ghost] [--placeholder T] [--position right|left] [--offset X[,Y]]
|
|
14626
|
-
[--theme light|dark|auto] [--bubble-text T] [--auto-open SECONDS|off] [--starters "a|b|c"] [--font NAME] [--radius 0-24] [--style '{json}'|none]
|
|
14630
|
+
[--theme light|dark|auto] [--bubble-text T] [--auto-open SECONDS|off] [--starters "a|b|c"] [--font NAME] [--radius 0-24] [--typing bounce|flow|flashing|shimmer] [--typing-color #rrggbb|none] [--style '{json}'|none]
|
|
14627
14631
|
theme: [--theme-source custom|teams|site] [--workspace SLUG] [--site-url URL] [--style-file theme.json]
|
|
14628
14632
|
texts while it works: [--copy '{"waking":"One moment, please","thinking":["Reviewing your question\u2026"]}'|none] [--copy-file copy.json]
|
|
14629
14633
|
agents embed <id> theme Export the widget theme + texts as JSON (edit it and apply it back with --style-file)
|
|
@@ -14790,7 +14794,7 @@ ${bold("Agentes")}
|
|
|
14790
14794
|
agents demo <id> Liga p\xFAblica de demo /p/<slug>: cualquiera lo prueba sin cuenta y \xABQued\xE1rmelo\xBB lo clona a la suya
|
|
14791
14795
|
agents embed enable|disable <id> Widget web: burbuja de chat en TU sitio (un <script>), s\xF3lo en los dominios que pongas [--domains a.com,*.b.com] [--per-visitor N] [--per-ip N] [--welcome T] [--color #hex] [--rotate]
|
|
14792
14796
|
look: [--title T] [--subtitle T] [--avatar URL|none] [--icon chat|avatar|ghost] [--placeholder T] [--position right|left] [--offset X[,Y]]
|
|
14793
|
-
[--theme light|dark|auto] [--bubble-text T] [--auto-open SEGUNDOS|off] [--starters "a|b|c"] [--font NOMBRE] [--radius 0-24] [--style '{json}'|none]
|
|
14797
|
+
[--theme light|dark|auto] [--bubble-text T] [--auto-open SEGUNDOS|off] [--starters "a|b|c"] [--font NOMBRE] [--radius 0-24] [--typing bounce|flow|flashing|shimmer] [--typing-color #rrggbb|none] [--style '{json}'|none]
|
|
14794
14798
|
tema: [--theme-source custom|teams|site] [--workspace SLUG] [--site-url URL] [--style-file tema.json]
|
|
14795
14799
|
textos mientras trabaja: [--copy '{"waking":"Un momento, por favor","thinking":["Revisando su consulta\u2026"]}'|none] [--copy-file textos.json]
|
|
14796
14800
|
agents embed <id> theme Exporta el tema y los textos del widget en JSON (ed\xEDtalo y vuelve a aplicarlo con --style-file)
|
|
@@ -14997,6 +15001,8 @@ async function main() {
|
|
|
14997
15001
|
style: { type: "string" },
|
|
14998
15002
|
font: { type: "string" },
|
|
14999
15003
|
radius: { type: "string" },
|
|
15004
|
+
typing: { type: "string" },
|
|
15005
|
+
"typing-color": { type: "string" },
|
|
15000
15006
|
"style-file": { type: "string" },
|
|
15001
15007
|
copy: { type: "string" },
|
|
15002
15008
|
"copy-file": { type: "string" },
|
|
@@ -15157,7 +15163,7 @@ async function main() {
|
|
|
15157
15163
|
const tokens = splitTokens(pos, v);
|
|
15158
15164
|
globals.token = tokens.session;
|
|
15159
15165
|
globals.profile = v.profile;
|
|
15160
|
-
if (v.version) return out({ version: "0.
|
|
15166
|
+
if (v.version) return out({ version: "0.58.0" }, () => "0.58.0");
|
|
15161
15167
|
for (const n of normalizeArgs(pos, v)) if (!globals.json) info(dim(n));
|
|
15162
15168
|
const context = (await readConfig()).workspace;
|
|
15163
15169
|
if (!explicitToken()?.startsWith("gat_")) {
|
|
@@ -15323,7 +15329,7 @@ async function main() {
|
|
|
15323
15329
|
throw unknown(cmd, cmd, COMMANDS, "ghosty --help");
|
|
15324
15330
|
}
|
|
15325
15331
|
}
|
|
15326
|
-
var notice = updateNotice("0.
|
|
15332
|
+
var notice = updateNotice("0.58.0").catch(() => null);
|
|
15327
15333
|
main().then(
|
|
15328
15334
|
async () => {
|
|
15329
15335
|
const n = await notice;
|
package/package.json
CHANGED