@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.
Files changed (3) hide show
  1. package/README.md +2 -2
  2. package/dist/index.js +17 -11
  3. 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 `--radius`.
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.57.0"}`, "content-type": "application/json", "content-length": Buffer.byteLength(data) }
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.57.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.57.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.57.0" }, () => "0.57.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.57.0").catch(() => null);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ghostystudio/cli",
3
- "version": "0.57.0",
3
+ "version": "0.58.0",
4
4
  "description": "Official Ghosty Studio CLI — configure, test and chat with your agents from the terminal. Built for humans and coding agents.",
5
5
  "type": "module",
6
6
  "bin": {