@ghostystudio/cli 0.16.0 → 0.16.1

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 +4 -0
  2. package/dist/index.js +14 -10
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -87,6 +87,10 @@ Exit codes: `0` ok · `1` API error · `2` usage error · `3` not signed in.
87
87
  - `try --replay FILE --out DIR`: replays real conversations from your machine. The report is written after every step, survives Ghosty deploys (it honors `Retry-After`), and `--resume` continues a partial run.
88
88
  - `agents doctor` speaks English like the rest of the CLI; `channels whatsapp ls` returns a full URL.
89
89
 
90
+ ### Changes in 0.16.1
91
+
92
+ - `agents create --like`: `--board same|main|new|NAME` (`new` = its own board with the source's columns, one per number) and `--no-notify` (shared with the same people, no email).
93
+
90
94
  ### Changes in 0.16.0
91
95
 
92
96
  - `agents create --like <agent> [--copy-dbs] [--dry-run]`: a new agent with another's setup (skills and their switches, toolsets, connectors, voice, databases, documents, board, shares), never its prompt, env or channels.
package/dist/index.js CHANGED
@@ -288,7 +288,7 @@ async function postLong(path, body, timeoutMs = 9e5) {
288
288
  const req = httpsRequest(`${base}${path}`, {
289
289
  method: "POST",
290
290
  timeout: timeoutMs,
291
- headers: { authorization: `Bearer ${token}`, "user-agent": `ghosty-cli/${"0.16.0"}`, "content-type": "application/json", "content-length": Buffer.byteLength(data) }
291
+ headers: { authorization: `Bearer ${token}`, "user-agent": `ghosty-cli/${"0.16.1"}`, "content-type": "application/json", "content-length": Buffer.byteLength(data) }
292
292
  }, (res) => {
293
293
  let buf = "";
294
294
  res.on("data", (c) => buf += c);
@@ -330,7 +330,7 @@ async function request(path, opts = {}, retried = false) {
330
330
  method: opts.method ?? (opts.body !== void 0 || opts.raw !== void 0 ? "POST" : "GET"),
331
331
  headers: {
332
332
  authorization: `Bearer ${token}`,
333
- "user-agent": `ghosty-cli/${"0.16.0"}`,
333
+ "user-agent": `ghosty-cli/${"0.16.1"}`,
334
334
  ...opts.body !== void 0 ? { "content-type": "application/json" } : {},
335
335
  ...opts.headers
336
336
  },
@@ -573,8 +573,8 @@ async function agentsCreate(v) {
573
573
  if (v.workspace) body.workspace = v.workspace;
574
574
  const channels = parseChannels(v.channels);
575
575
  if (channels) body.channels = channels;
576
- if (v.like) Object.assign(body, { like: v.like, ...v["copy-dbs"] ? { copyDbs: true } : {}, ...v["dry-run"] ? { dryRun: true } : {} });
577
- else if (v["dry-run"]) throw usage("--dry-run goes with --like (it lists what would be copied).");
576
+ if (v.like) Object.assign(body, { like: v.like, ...v["copy-dbs"] ? { copyDbs: true } : {}, ...v["dry-run"] ? { dryRun: true } : {}, ...v.board ? { board: v.board } : {}, ...v["no-notify"] ? { notify: false } : {} });
577
+ else if (v["dry-run"] || v.board || v["no-notify"]) throw usage("--dry-run, --board and --no-notify go with --like.");
578
578
  if (v.like && v["dry-run"]) {
579
579
  const p = await api("/api/v2/me/agents", { method: "POST", body });
580
580
  return out(p, () => `${dim(`like ${v.like} \xB7 ${p.engine ?? "?"} \xB7 ${p.model ?? "default"}${p.workspace ? ` \xB7 workspace ${p.workspace}` : ""}`)}
@@ -1269,7 +1269,7 @@ async function call(path, v, init = {}) {
1269
1269
  "x-ghosty-ts": ts,
1270
1270
  "x-ghosty-sig": sig,
1271
1271
  "content-type": "application/json",
1272
- "user-agent": `ghosty-cli/${"0.16.0"}`
1272
+ "user-agent": `ghosty-cli/${"0.16.1"}`
1273
1273
  },
1274
1274
  body: method === "GET" ? void 0 : raw
1275
1275
  });
@@ -2059,7 +2059,7 @@ var HELPS = {
2059
2059
  summary: "Create, inspect, change, check and delete agents.",
2060
2060
  usage: [
2061
2061
  "ghosty agents ls",
2062
- "ghosty agents create --name NAME [--engine E] [--model M] [--prompt TEXT | --prompt-file FILE] [--env K=V,\u2026] [--workspace SLUG] [--channels teams=off,\u2026] [--like AGENT [--copy-dbs] [--dry-run]]",
2062
+ "ghosty agents create --name NAME [--engine E] [--model M] [--prompt TEXT | --prompt-file FILE] [--env K=V,\u2026] [--workspace SLUG] [--channels teams=off,\u2026] [--like AGENT [--copy-dbs] [--board same|main|new|NAME] [--no-notify] [--dry-run]]",
2063
2063
  "ghosty agents get <agent-id> [--fields name,model,prompt] [--prompt-out FILE]",
2064
2064
  "ghosty agents set <agent-id> [--name] [--engine] [--model] [--prompt | --prompt-file] [--env K=V,\u2026] [--connect ID,\u2026] [--disconnect ID,\u2026] [--voice E:ID] [--voice-replies auto|off] [--auto-stage on|off] [--toolsets crm,sales | +crm,-sales]",
2065
2065
  "ghosty agents set <agent-id> --prompt-base <base-agent-id> --prompt-overlay overlay.json [--dry-run [--out FILE]] | --prompt-base none",
@@ -2079,6 +2079,8 @@ var HELPS = {
2079
2079
  ["--prompt-out FILE", "get: write the prompt to FILE (edit it and come back with set --prompt-file)"],
2080
2080
  ["--like AGENT", "create: copy that agent's setup (skills and their switches, toolsets, connectors, voice, databases, documents, board, shares) \u2014 not its prompt, env or channels. docs grant: the same documents"],
2081
2081
  ["--copy-dbs", "create --like: duplicate its databases with their rows instead of granting the same ones"],
2082
+ ["--board B", "create --like: same (the source's board, default) \xB7 main \xB7 new (a board named like the agent, with the source's columns: one board per number) \xB7 or an existing board"],
2083
+ ["--no-notify", "create --like: share it with the same people WITHOUT emailing them"],
2082
2084
  ["--workspace SLUG", "create: born in that workspace (you own or administer it), owned by its owner and active in its Teams"],
2083
2085
  ["--channels k=on|off,\u2026", "create/set: turn channels on/off: teams, web, whatsapp, messenger, wa (personal WhatsApp)"],
2084
2086
  ["--toolsets LIST", "set: gs tool groups it gets (crm, sales\u2026): a list replaces; +x / -x add or remove"],
@@ -2120,7 +2122,7 @@ var HELPS = {
2120
2122
  "ghosty agents share <id> ana@empresa.com --role admin",
2121
2123
  "ghosty agents get <id> --prompt-out PROMPT.md",
2122
2124
  "ghosty agents get <id> --fields toolsets,connectors # what it really has: effective toolsets, connectors connected + granted",
2123
- "ghosty agents create --name tania-mkt --like <pia-id> --dry-run",
2125
+ "ghosty agents create --name tania-mkt --like <pia-id> --board new --no-notify --dry-run",
2124
2126
  'ghosty agents docs grant <id> "Cat\xE1logo.pdf" "Precios.xlsx" \xB7 ghosty agents docs grant <id> --like <other-id>',
2125
2127
  "ghosty agents set <pia-id> --prompt-base <tania-id> --prompt-overlay capa.json --dry-run --out /tmp/pia.md",
2126
2128
  'ghosty agents demo <id> --slug guardias --on --vence "2026-10-15T20:00" --starter "Ens\xE9\xF1ame c\xF3mo empezar"',
@@ -2448,7 +2450,7 @@ ${bold("Agents")}
2448
2450
  agents ls List your agents
2449
2451
  agents create Create an agent --name [--engine] [--model] [--prompt | --prompt-file FILE] [--env K=V,\u2026]
2450
2452
  [--workspace SLUG] [--channels teams=off,\u2026] born in a workspace, active in its Teams
2451
- [--like AGENT [--copy-dbs] [--dry-run]] with another agent's setup (not its prompt, env or channels)
2453
+ [--like AGENT [--copy-dbs] [--board same|main|new|NAME] [--no-notify] [--dry-run]] with another agent's setup (not its prompt, env or channels)
2452
2454
  agents get <id> Show an agent's config [--fields name,model,prompt] [--prompt-out FILE]
2453
2455
  agents set <id> Change identity or engine [--name] [--engine] [--model] [--prompt | --prompt-file FILE] [--env K=V,\u2026]
2454
2456
  [--connect google-drive,\u2026] [--disconnect \u2026] give/remove access to your connectors
@@ -2604,6 +2606,8 @@ async function main() {
2604
2606
  "as-formmy": { type: "boolean" },
2605
2607
  like: { type: "string" },
2606
2608
  "copy-dbs": { type: "boolean" },
2609
+ "no-notify": { type: "boolean" },
2610
+ board: { type: "string" },
2607
2611
  only: { type: "string" },
2608
2612
  enable: { type: "string" },
2609
2613
  disable: { type: "string" },
@@ -2650,7 +2654,7 @@ async function main() {
2650
2654
  const tokens = splitTokens(pos, v);
2651
2655
  globals.token = tokens.session;
2652
2656
  globals.profile = v.profile;
2653
- if (v.version) return out({ version: "0.16.0" }, () => "0.16.0");
2657
+ if (v.version) return out({ version: "0.16.1" }, () => "0.16.1");
2654
2658
  const [cmd, sub, a1, a2] = pos;
2655
2659
  if (cmd === "partner" && (v.help || !sub || sub === "help")) return out({ help: PARTNER_HELP }, () => PARTNER_HELP);
2656
2660
  const topic = cmd === "help" ? sub : v.help ? cmd : void 0;
@@ -2738,7 +2742,7 @@ async function main() {
2738
2742
  throw unknown(cmd, cmd, COMMANDS, "ghosty --help");
2739
2743
  }
2740
2744
  }
2741
- var notice = updateNotice("0.16.0").catch(() => null);
2745
+ var notice = updateNotice("0.16.1").catch(() => null);
2742
2746
  main().then(
2743
2747
  async () => {
2744
2748
  const n = await notice;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ghostystudio/cli",
3
- "version": "0.16.0",
3
+ "version": "0.16.1",
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": {