@ghostystudio/cli 0.33.1 → 0.35.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 +9 -1
  2. package/dist/index.js +210 -174
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -18,6 +18,7 @@ ghosty usage # plan and usage this week
18
18
  ghosty usage --workspace SLUG [--by agent,day] [--days 14] # a workspace's turns and tokens per agent/day (owner or staff)
19
19
  ghosty engines ls [--models] # valid --engine / --model values and what each model costs
20
20
  ghosty bags ls|create|set|rm <workspace> ["bag"] [--tokens 20M] [--recurring on|off] [--hard-cap on|off] [--note] # token bags (changing: staff)
21
+ ghosty spaces create <slug> [--combo …: staff] [--dry-run] # yours, trial
21
22
  ghosty spaces renew <workspace> --until YYYY-MM-DD [--note] [--dry-run] # staff
22
23
  ghosty spaces rename <old> <new> [--dry-run] # staff, slug only
23
24
  ghosty agents ls [--engine E] [--ids] [--sponsor EMAIL | --owner EMAIL] # --sponsor/--owner: any account (Ghosty staff)
@@ -58,7 +59,7 @@ ghosty boards ls|create|assign|move-cards|rm <workspace|agent> … [--columns-
58
59
  ghosty cards ls <id> [--q TEXT] [--limit 20] # recent cards on its sales board
59
60
  ghosty cards show <id> <folio|phone|id> [--limit 20] # a card's thread, attachments and whether gs kept a copy
60
61
  ghosty cards archive <id> --integration X | --column X | --before 30d [--dry-run]
61
- ghosty mcp get|set <id> [--file servers.json]
62
+ ghosty mcp get|set <id> [--file servers.json] # http headers accept ${turn.token} (per-turn key)
62
63
 
63
64
  ghosty try <id> "message" [--session] [--reset]
64
65
  ghosty try <id> "message" --waba --session PHONE [--media FILE [--as-formmy]] [--history FILE] # real WhatsApp path, nothing sent
@@ -97,6 +98,12 @@ Every command has its own help with examples: `ghosty <command> --help` or `ghos
97
98
 
98
99
  Exit codes: `0` ok · `1` API error · `2` usage error · `3` not signed in.
99
100
 
101
+ ### Changes in 0.35.0
102
+
103
+ - `spaces create <slug> [--dry-run]`: create a workspace of your own from the terminal (trial, same rules as the web form). Then `partner enable <slug>`.
104
+ - `mcp set`: an `http` server's headers accept `${turn.token}`, filled per turn with the `turnToken` that `message-stream`/`turns` receive (one key per end user; the token never reaches the box).
105
+ - `partner --help`: the `gpk_`/`gps_` pair also signs `message-stream` for the normal agents of the partner's workspace.
106
+
100
107
  ### Changes in 0.33.0
101
108
 
102
109
  - Staff: `agents doctor --user EMAIL` (their agents: doctor, latest turns and whether the app picked up each answer, plan/bag, boxes with duplicates flagged), `usage --images [--plan free] [--by user]` (image charges vs deliveries, real cost vs the table), `conversations show <agent> <conv> --tools` (every tool it ran, secrets masked, and the external domains it named).
@@ -135,6 +142,7 @@ Exit codes: `0` ok · `1` API error · `2` usage error · `3` not signed in.
135
142
  - `turns ls --session S`, and on Claude agents a «resumed» column: ✓ when the turn kept its SDK session, ⚠ from scratch (orphan|stale|replaced) when it lost its memory. `turns show` says the same, with the Claude CLI version.
136
143
  - `partner credentials create|rotate --env-file PATH` (mode 600, nothing printed) or `--format env` (pipe to `fly secrets import`). The secret's env var is now `GHOSTY_PARTNER_KEY_SECRET` (`GHOSTY_PARTNER_SECRET` still works).
137
144
  - `partner agent apply --prompt-file prompt.md`; `partner try --verbose` prints each tool's arguments and milliseconds.
145
+ - `partner agent get|apply --agent SLUG` and `partner try --agent SLUG`: several agents per partner (e.g. `nik-admin`, `nik-public`). `channels whatsapp link … --partner-tenant <externalId> --partner-agent <slug>`: a business's WhatsApp Business number answered by that partner agent.
138
146
  - Empty `partner ls|credentials ls|tenants ls` say what to do next. `login --device --profile <client>` explains how to sign in a client's account (they approve the link).
139
147
 
140
148
  ### Changes in 0.27.1
package/dist/index.js CHANGED
@@ -32,9 +32,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
32
32
  mod
33
33
  ));
34
34
 
35
- // ../../node_modules/yaml/dist/nodes/identity.js
35
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/identity.js
36
36
  var require_identity = __commonJS({
37
- "../../node_modules/yaml/dist/nodes/identity.js"(exports) {
37
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/identity.js"(exports) {
38
38
  "use strict";
39
39
  var ALIAS = /* @__PURE__ */ Symbol.for("yaml.alias");
40
40
  var DOC = /* @__PURE__ */ Symbol.for("yaml.document");
@@ -89,9 +89,9 @@ var require_identity = __commonJS({
89
89
  }
90
90
  });
91
91
 
92
- // ../../node_modules/yaml/dist/visit.js
92
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/visit.js
93
93
  var require_visit = __commonJS({
94
- "../../node_modules/yaml/dist/visit.js"(exports) {
94
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/visit.js"(exports) {
95
95
  "use strict";
96
96
  var identity = require_identity();
97
97
  var BREAK = /* @__PURE__ */ Symbol("break visit");
@@ -247,9 +247,9 @@ var require_visit = __commonJS({
247
247
  }
248
248
  });
249
249
 
250
- // ../../node_modules/yaml/dist/doc/directives.js
250
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/directives.js
251
251
  var require_directives = __commonJS({
252
- "../../node_modules/yaml/dist/doc/directives.js"(exports) {
252
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/directives.js"(exports) {
253
253
  "use strict";
254
254
  var identity = require_identity();
255
255
  var visit = require_visit();
@@ -418,9 +418,9 @@ var require_directives = __commonJS({
418
418
  }
419
419
  });
420
420
 
421
- // ../../node_modules/yaml/dist/doc/anchors.js
421
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/anchors.js
422
422
  var require_anchors = __commonJS({
423
- "../../node_modules/yaml/dist/doc/anchors.js"(exports) {
423
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/anchors.js"(exports) {
424
424
  "use strict";
425
425
  var identity = require_identity();
426
426
  var visit = require_visit();
@@ -488,9 +488,9 @@ var require_anchors = __commonJS({
488
488
  }
489
489
  });
490
490
 
491
- // ../../node_modules/yaml/dist/doc/applyReviver.js
491
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/applyReviver.js
492
492
  var require_applyReviver = __commonJS({
493
- "../../node_modules/yaml/dist/doc/applyReviver.js"(exports) {
493
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/applyReviver.js"(exports) {
494
494
  "use strict";
495
495
  function applyReviver(reviver, obj, key, val) {
496
496
  if (val && typeof val === "object") {
@@ -538,9 +538,9 @@ var require_applyReviver = __commonJS({
538
538
  }
539
539
  });
540
540
 
541
- // ../../node_modules/yaml/dist/nodes/toJS.js
541
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/toJS.js
542
542
  var require_toJS = __commonJS({
543
- "../../node_modules/yaml/dist/nodes/toJS.js"(exports) {
543
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/toJS.js"(exports) {
544
544
  "use strict";
545
545
  var identity = require_identity();
546
546
  function toJS(value, arg, ctx) {
@@ -568,9 +568,9 @@ var require_toJS = __commonJS({
568
568
  }
569
569
  });
570
570
 
571
- // ../../node_modules/yaml/dist/nodes/Node.js
571
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Node.js
572
572
  var require_Node = __commonJS({
573
- "../../node_modules/yaml/dist/nodes/Node.js"(exports) {
573
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Node.js"(exports) {
574
574
  "use strict";
575
575
  var applyReviver = require_applyReviver();
576
576
  var identity = require_identity();
@@ -609,9 +609,9 @@ var require_Node = __commonJS({
609
609
  }
610
610
  });
611
611
 
612
- // ../../node_modules/yaml/dist/nodes/Alias.js
612
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Alias.js
613
613
  var require_Alias = __commonJS({
614
- "../../node_modules/yaml/dist/nodes/Alias.js"(exports) {
614
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Alias.js"(exports) {
615
615
  "use strict";
616
616
  var anchors = require_anchors();
617
617
  var visit = require_visit();
@@ -727,9 +727,9 @@ var require_Alias = __commonJS({
727
727
  }
728
728
  });
729
729
 
730
- // ../../node_modules/yaml/dist/nodes/Scalar.js
730
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Scalar.js
731
731
  var require_Scalar = __commonJS({
732
- "../../node_modules/yaml/dist/nodes/Scalar.js"(exports) {
732
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Scalar.js"(exports) {
733
733
  "use strict";
734
734
  var identity = require_identity();
735
735
  var Node = require_Node();
@@ -757,9 +757,9 @@ var require_Scalar = __commonJS({
757
757
  }
758
758
  });
759
759
 
760
- // ../../node_modules/yaml/dist/doc/createNode.js
760
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/createNode.js
761
761
  var require_createNode = __commonJS({
762
- "../../node_modules/yaml/dist/doc/createNode.js"(exports) {
762
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/createNode.js"(exports) {
763
763
  "use strict";
764
764
  var Alias = require_Alias();
765
765
  var identity = require_identity();
@@ -832,9 +832,9 @@ var require_createNode = __commonJS({
832
832
  }
833
833
  });
834
834
 
835
- // ../../node_modules/yaml/dist/nodes/Collection.js
835
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Collection.js
836
836
  var require_Collection = __commonJS({
837
- "../../node_modules/yaml/dist/nodes/Collection.js"(exports) {
837
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Collection.js"(exports) {
838
838
  "use strict";
839
839
  var createNode = require_createNode();
840
840
  var identity = require_identity();
@@ -975,9 +975,9 @@ var require_Collection = __commonJS({
975
975
  }
976
976
  });
977
977
 
978
- // ../../node_modules/yaml/dist/stringify/stringifyComment.js
978
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyComment.js
979
979
  var require_stringifyComment = __commonJS({
980
- "../../node_modules/yaml/dist/stringify/stringifyComment.js"(exports) {
980
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyComment.js"(exports) {
981
981
  "use strict";
982
982
  var stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, "#");
983
983
  function indentComment(comment, indent) {
@@ -992,9 +992,9 @@ var require_stringifyComment = __commonJS({
992
992
  }
993
993
  });
994
994
 
995
- // ../../node_modules/yaml/dist/stringify/foldFlowLines.js
995
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/foldFlowLines.js
996
996
  var require_foldFlowLines = __commonJS({
997
- "../../node_modules/yaml/dist/stringify/foldFlowLines.js"(exports) {
997
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/foldFlowLines.js"(exports) {
998
998
  "use strict";
999
999
  var FOLD_FLOW = "flow";
1000
1000
  var FOLD_BLOCK = "block";
@@ -1128,9 +1128,9 @@ ${indent}${text.slice(fold + 1, end2)}`;
1128
1128
  }
1129
1129
  });
1130
1130
 
1131
- // ../../node_modules/yaml/dist/stringify/stringifyString.js
1131
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyString.js
1132
1132
  var require_stringifyString = __commonJS({
1133
- "../../node_modules/yaml/dist/stringify/stringifyString.js"(exports) {
1133
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyString.js"(exports) {
1134
1134
  "use strict";
1135
1135
  var Scalar = require_Scalar();
1136
1136
  var foldFlowLines = require_foldFlowLines();
@@ -1411,9 +1411,9 @@ ${indent}`);
1411
1411
  }
1412
1412
  });
1413
1413
 
1414
- // ../../node_modules/yaml/dist/stringify/stringify.js
1414
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringify.js
1415
1415
  var require_stringify = __commonJS({
1416
- "../../node_modules/yaml/dist/stringify/stringify.js"(exports) {
1416
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringify.js"(exports) {
1417
1417
  "use strict";
1418
1418
  var anchors = require_anchors();
1419
1419
  var identity = require_identity();
@@ -1535,9 +1535,9 @@ ${ctx.indent}${str}`;
1535
1535
  }
1536
1536
  });
1537
1537
 
1538
- // ../../node_modules/yaml/dist/stringify/stringifyPair.js
1538
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyPair.js
1539
1539
  var require_stringifyPair = __commonJS({
1540
- "../../node_modules/yaml/dist/stringify/stringifyPair.js"(exports) {
1540
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyPair.js"(exports) {
1541
1541
  "use strict";
1542
1542
  var identity = require_identity();
1543
1543
  var Scalar = require_Scalar();
@@ -1668,9 +1668,9 @@ ${ctx.indent}`;
1668
1668
  }
1669
1669
  });
1670
1670
 
1671
- // ../../node_modules/yaml/dist/log.js
1671
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/log.js
1672
1672
  var require_log = __commonJS({
1673
- "../../node_modules/yaml/dist/log.js"(exports) {
1673
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/log.js"(exports) {
1674
1674
  "use strict";
1675
1675
  var node_process = __require("process");
1676
1676
  function debug(logLevel, ...messages) {
@@ -1690,9 +1690,9 @@ var require_log = __commonJS({
1690
1690
  }
1691
1691
  });
1692
1692
 
1693
- // ../../node_modules/yaml/dist/schema/yaml-1.1/merge.js
1693
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/merge.js
1694
1694
  var require_merge = __commonJS({
1695
- "../../node_modules/yaml/dist/schema/yaml-1.1/merge.js"(exports) {
1695
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/merge.js"(exports) {
1696
1696
  "use strict";
1697
1697
  var identity = require_identity();
1698
1698
  var Scalar = require_Scalar();
@@ -1750,9 +1750,9 @@ var require_merge = __commonJS({
1750
1750
  }
1751
1751
  });
1752
1752
 
1753
- // ../../node_modules/yaml/dist/nodes/addPairToJSMap.js
1753
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/addPairToJSMap.js
1754
1754
  var require_addPairToJSMap = __commonJS({
1755
- "../../node_modules/yaml/dist/nodes/addPairToJSMap.js"(exports) {
1755
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/addPairToJSMap.js"(exports) {
1756
1756
  "use strict";
1757
1757
  var log = require_log();
1758
1758
  var merge = require_merge();
@@ -1814,9 +1814,9 @@ var require_addPairToJSMap = __commonJS({
1814
1814
  }
1815
1815
  });
1816
1816
 
1817
- // ../../node_modules/yaml/dist/nodes/Pair.js
1817
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Pair.js
1818
1818
  var require_Pair = __commonJS({
1819
- "../../node_modules/yaml/dist/nodes/Pair.js"(exports) {
1819
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Pair.js"(exports) {
1820
1820
  "use strict";
1821
1821
  var createNode = require_createNode();
1822
1822
  var stringifyPair = require_stringifyPair();
@@ -1854,9 +1854,9 @@ var require_Pair = __commonJS({
1854
1854
  }
1855
1855
  });
1856
1856
 
1857
- // ../../node_modules/yaml/dist/stringify/stringifyCollection.js
1857
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyCollection.js
1858
1858
  var require_stringifyCollection = __commonJS({
1859
- "../../node_modules/yaml/dist/stringify/stringifyCollection.js"(exports) {
1859
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyCollection.js"(exports) {
1860
1860
  "use strict";
1861
1861
  var identity = require_identity();
1862
1862
  var stringify = require_stringify();
@@ -2005,9 +2005,9 @@ ${indent}${end}`;
2005
2005
  }
2006
2006
  });
2007
2007
 
2008
- // ../../node_modules/yaml/dist/nodes/YAMLMap.js
2008
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/YAMLMap.js
2009
2009
  var require_YAMLMap = __commonJS({
2010
- "../../node_modules/yaml/dist/nodes/YAMLMap.js"(exports) {
2010
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/YAMLMap.js"(exports) {
2011
2011
  "use strict";
2012
2012
  var stringifyCollection = require_stringifyCollection();
2013
2013
  var addPairToJSMap = require_addPairToJSMap();
@@ -2149,9 +2149,9 @@ var require_YAMLMap = __commonJS({
2149
2149
  }
2150
2150
  });
2151
2151
 
2152
- // ../../node_modules/yaml/dist/schema/common/map.js
2152
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/map.js
2153
2153
  var require_map = __commonJS({
2154
- "../../node_modules/yaml/dist/schema/common/map.js"(exports) {
2154
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/map.js"(exports) {
2155
2155
  "use strict";
2156
2156
  var identity = require_identity();
2157
2157
  var YAMLMap = require_YAMLMap();
@@ -2171,9 +2171,9 @@ var require_map = __commonJS({
2171
2171
  }
2172
2172
  });
2173
2173
 
2174
- // ../../node_modules/yaml/dist/nodes/YAMLSeq.js
2174
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/YAMLSeq.js
2175
2175
  var require_YAMLSeq = __commonJS({
2176
- "../../node_modules/yaml/dist/nodes/YAMLSeq.js"(exports) {
2176
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/YAMLSeq.js"(exports) {
2177
2177
  "use strict";
2178
2178
  var createNode = require_createNode();
2179
2179
  var stringifyCollection = require_stringifyCollection();
@@ -2287,9 +2287,9 @@ var require_YAMLSeq = __commonJS({
2287
2287
  }
2288
2288
  });
2289
2289
 
2290
- // ../../node_modules/yaml/dist/schema/common/seq.js
2290
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/seq.js
2291
2291
  var require_seq = __commonJS({
2292
- "../../node_modules/yaml/dist/schema/common/seq.js"(exports) {
2292
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/seq.js"(exports) {
2293
2293
  "use strict";
2294
2294
  var identity = require_identity();
2295
2295
  var YAMLSeq = require_YAMLSeq();
@@ -2309,9 +2309,9 @@ var require_seq = __commonJS({
2309
2309
  }
2310
2310
  });
2311
2311
 
2312
- // ../../node_modules/yaml/dist/schema/common/string.js
2312
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/string.js
2313
2313
  var require_string = __commonJS({
2314
- "../../node_modules/yaml/dist/schema/common/string.js"(exports) {
2314
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/string.js"(exports) {
2315
2315
  "use strict";
2316
2316
  var stringifyString = require_stringifyString();
2317
2317
  var string = {
@@ -2328,9 +2328,9 @@ var require_string = __commonJS({
2328
2328
  }
2329
2329
  });
2330
2330
 
2331
- // ../../node_modules/yaml/dist/schema/common/null.js
2331
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/null.js
2332
2332
  var require_null = __commonJS({
2333
- "../../node_modules/yaml/dist/schema/common/null.js"(exports) {
2333
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/null.js"(exports) {
2334
2334
  "use strict";
2335
2335
  var Scalar = require_Scalar();
2336
2336
  var nullTag = {
@@ -2346,9 +2346,9 @@ var require_null = __commonJS({
2346
2346
  }
2347
2347
  });
2348
2348
 
2349
- // ../../node_modules/yaml/dist/schema/core/bool.js
2349
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/bool.js
2350
2350
  var require_bool = __commonJS({
2351
- "../../node_modules/yaml/dist/schema/core/bool.js"(exports) {
2351
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/bool.js"(exports) {
2352
2352
  "use strict";
2353
2353
  var Scalar = require_Scalar();
2354
2354
  var boolTag = {
@@ -2370,9 +2370,9 @@ var require_bool = __commonJS({
2370
2370
  }
2371
2371
  });
2372
2372
 
2373
- // ../../node_modules/yaml/dist/stringify/stringifyNumber.js
2373
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyNumber.js
2374
2374
  var require_stringifyNumber = __commonJS({
2375
- "../../node_modules/yaml/dist/stringify/stringifyNumber.js"(exports) {
2375
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyNumber.js"(exports) {
2376
2376
  "use strict";
2377
2377
  function stringifyNumber({ format, minFractionDigits, tag, value }) {
2378
2378
  if (typeof value === "bigint")
@@ -2397,9 +2397,9 @@ var require_stringifyNumber = __commonJS({
2397
2397
  }
2398
2398
  });
2399
2399
 
2400
- // ../../node_modules/yaml/dist/schema/core/float.js
2400
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/float.js
2401
2401
  var require_float = __commonJS({
2402
- "../../node_modules/yaml/dist/schema/core/float.js"(exports) {
2402
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/float.js"(exports) {
2403
2403
  "use strict";
2404
2404
  var Scalar = require_Scalar();
2405
2405
  var stringifyNumber = require_stringifyNumber();
@@ -2443,9 +2443,9 @@ var require_float = __commonJS({
2443
2443
  }
2444
2444
  });
2445
2445
 
2446
- // ../../node_modules/yaml/dist/schema/core/int.js
2446
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/int.js
2447
2447
  var require_int = __commonJS({
2448
- "../../node_modules/yaml/dist/schema/core/int.js"(exports) {
2448
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/int.js"(exports) {
2449
2449
  "use strict";
2450
2450
  var stringifyNumber = require_stringifyNumber();
2451
2451
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -2488,9 +2488,9 @@ var require_int = __commonJS({
2488
2488
  }
2489
2489
  });
2490
2490
 
2491
- // ../../node_modules/yaml/dist/schema/core/schema.js
2491
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/schema.js
2492
2492
  var require_schema = __commonJS({
2493
- "../../node_modules/yaml/dist/schema/core/schema.js"(exports) {
2493
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/schema.js"(exports) {
2494
2494
  "use strict";
2495
2495
  var map = require_map();
2496
2496
  var _null = require_null();
@@ -2516,9 +2516,9 @@ var require_schema = __commonJS({
2516
2516
  }
2517
2517
  });
2518
2518
 
2519
- // ../../node_modules/yaml/dist/schema/json/schema.js
2519
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/json/schema.js
2520
2520
  var require_schema2 = __commonJS({
2521
- "../../node_modules/yaml/dist/schema/json/schema.js"(exports) {
2521
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/json/schema.js"(exports) {
2522
2522
  "use strict";
2523
2523
  var Scalar = require_Scalar();
2524
2524
  var map = require_map();
@@ -2583,9 +2583,9 @@ var require_schema2 = __commonJS({
2583
2583
  }
2584
2584
  });
2585
2585
 
2586
- // ../../node_modules/yaml/dist/schema/yaml-1.1/binary.js
2586
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/binary.js
2587
2587
  var require_binary = __commonJS({
2588
- "../../node_modules/yaml/dist/schema/yaml-1.1/binary.js"(exports) {
2588
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/binary.js"(exports) {
2589
2589
  "use strict";
2590
2590
  var node_buffer = __require("buffer");
2591
2591
  var Scalar = require_Scalar();
@@ -2649,9 +2649,9 @@ var require_binary = __commonJS({
2649
2649
  }
2650
2650
  });
2651
2651
 
2652
- // ../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js
2652
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
2653
2653
  var require_pairs = __commonJS({
2654
- "../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js"(exports) {
2654
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/pairs.js"(exports) {
2655
2655
  "use strict";
2656
2656
  var identity = require_identity();
2657
2657
  var Pair = require_Pair();
@@ -2727,9 +2727,9 @@ ${cn.comment}` : item.comment;
2727
2727
  }
2728
2728
  });
2729
2729
 
2730
- // ../../node_modules/yaml/dist/schema/yaml-1.1/omap.js
2730
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/omap.js
2731
2731
  var require_omap = __commonJS({
2732
- "../../node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports) {
2732
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports) {
2733
2733
  "use strict";
2734
2734
  var identity = require_identity();
2735
2735
  var toJS = require_toJS();
@@ -2805,9 +2805,9 @@ var require_omap = __commonJS({
2805
2805
  }
2806
2806
  });
2807
2807
 
2808
- // ../../node_modules/yaml/dist/schema/yaml-1.1/bool.js
2808
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/bool.js
2809
2809
  var require_bool2 = __commonJS({
2810
- "../../node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports) {
2810
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports) {
2811
2811
  "use strict";
2812
2812
  var Scalar = require_Scalar();
2813
2813
  function boolStringify({ value, source }, ctx) {
@@ -2837,9 +2837,9 @@ var require_bool2 = __commonJS({
2837
2837
  }
2838
2838
  });
2839
2839
 
2840
- // ../../node_modules/yaml/dist/schema/yaml-1.1/float.js
2840
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/float.js
2841
2841
  var require_float2 = __commonJS({
2842
- "../../node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports) {
2842
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports) {
2843
2843
  "use strict";
2844
2844
  var Scalar = require_Scalar();
2845
2845
  var stringifyNumber = require_stringifyNumber();
@@ -2886,9 +2886,9 @@ var require_float2 = __commonJS({
2886
2886
  }
2887
2887
  });
2888
2888
 
2889
- // ../../node_modules/yaml/dist/schema/yaml-1.1/int.js
2889
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/int.js
2890
2890
  var require_int2 = __commonJS({
2891
- "../../node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports) {
2891
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports) {
2892
2892
  "use strict";
2893
2893
  var stringifyNumber = require_stringifyNumber();
2894
2894
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -2965,9 +2965,9 @@ var require_int2 = __commonJS({
2965
2965
  }
2966
2966
  });
2967
2967
 
2968
- // ../../node_modules/yaml/dist/schema/yaml-1.1/set.js
2968
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/set.js
2969
2969
  var require_set = __commonJS({
2970
- "../../node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports) {
2970
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports) {
2971
2971
  "use strict";
2972
2972
  var identity = require_identity();
2973
2973
  var Pair = require_Pair();
@@ -3054,9 +3054,9 @@ var require_set = __commonJS({
3054
3054
  }
3055
3055
  });
3056
3056
 
3057
- // ../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
3057
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
3058
3058
  var require_timestamp = __commonJS({
3059
- "../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports) {
3059
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports) {
3060
3060
  "use strict";
3061
3061
  var stringifyNumber = require_stringifyNumber();
3062
3062
  function parseSexagesimal(str, asBigInt) {
@@ -3142,9 +3142,9 @@ var require_timestamp = __commonJS({
3142
3142
  }
3143
3143
  });
3144
3144
 
3145
- // ../../node_modules/yaml/dist/schema/yaml-1.1/schema.js
3145
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/schema.js
3146
3146
  var require_schema3 = __commonJS({
3147
- "../../node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports) {
3147
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports) {
3148
3148
  "use strict";
3149
3149
  var map = require_map();
3150
3150
  var _null = require_null();
@@ -3186,9 +3186,9 @@ var require_schema3 = __commonJS({
3186
3186
  }
3187
3187
  });
3188
3188
 
3189
- // ../../node_modules/yaml/dist/schema/tags.js
3189
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/tags.js
3190
3190
  var require_tags = __commonJS({
3191
- "../../node_modules/yaml/dist/schema/tags.js"(exports) {
3191
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/tags.js"(exports) {
3192
3192
  "use strict";
3193
3193
  var map = require_map();
3194
3194
  var _null = require_null();
@@ -3280,9 +3280,9 @@ var require_tags = __commonJS({
3280
3280
  }
3281
3281
  });
3282
3282
 
3283
- // ../../node_modules/yaml/dist/schema/Schema.js
3283
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/Schema.js
3284
3284
  var require_Schema = __commonJS({
3285
- "../../node_modules/yaml/dist/schema/Schema.js"(exports) {
3285
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/Schema.js"(exports) {
3286
3286
  "use strict";
3287
3287
  var identity = require_identity();
3288
3288
  var map = require_map();
@@ -3312,9 +3312,9 @@ var require_Schema = __commonJS({
3312
3312
  }
3313
3313
  });
3314
3314
 
3315
- // ../../node_modules/yaml/dist/stringify/stringifyDocument.js
3315
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyDocument.js
3316
3316
  var require_stringifyDocument = __commonJS({
3317
- "../../node_modules/yaml/dist/stringify/stringifyDocument.js"(exports) {
3317
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyDocument.js"(exports) {
3318
3318
  "use strict";
3319
3319
  var identity = require_identity();
3320
3320
  var stringify = require_stringify();
@@ -3392,9 +3392,9 @@ var require_stringifyDocument = __commonJS({
3392
3392
  }
3393
3393
  });
3394
3394
 
3395
- // ../../node_modules/yaml/dist/doc/Document.js
3395
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/Document.js
3396
3396
  var require_Document = __commonJS({
3397
- "../../node_modules/yaml/dist/doc/Document.js"(exports) {
3397
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/Document.js"(exports) {
3398
3398
  "use strict";
3399
3399
  var Alias = require_Alias();
3400
3400
  var Collection = require_Collection();
@@ -3701,9 +3701,9 @@ var require_Document = __commonJS({
3701
3701
  }
3702
3702
  });
3703
3703
 
3704
- // ../../node_modules/yaml/dist/errors.js
3704
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/errors.js
3705
3705
  var require_errors = __commonJS({
3706
- "../../node_modules/yaml/dist/errors.js"(exports) {
3706
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/errors.js"(exports) {
3707
3707
  "use strict";
3708
3708
  var YAMLError = class extends Error {
3709
3709
  constructor(name, pos, code, message) {
@@ -3766,9 +3766,9 @@ ${pointer}
3766
3766
  }
3767
3767
  });
3768
3768
 
3769
- // ../../node_modules/yaml/dist/compose/resolve-props.js
3769
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-props.js
3770
3770
  var require_resolve_props = __commonJS({
3771
- "../../node_modules/yaml/dist/compose/resolve-props.js"(exports) {
3771
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-props.js"(exports) {
3772
3772
  "use strict";
3773
3773
  function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
3774
3774
  let spaceBefore = false;
@@ -3900,9 +3900,9 @@ var require_resolve_props = __commonJS({
3900
3900
  }
3901
3901
  });
3902
3902
 
3903
- // ../../node_modules/yaml/dist/compose/util-contains-newline.js
3903
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-contains-newline.js
3904
3904
  var require_util_contains_newline = __commonJS({
3905
- "../../node_modules/yaml/dist/compose/util-contains-newline.js"(exports) {
3905
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-contains-newline.js"(exports) {
3906
3906
  "use strict";
3907
3907
  function containsNewline(key) {
3908
3908
  if (!key)
@@ -3942,9 +3942,9 @@ var require_util_contains_newline = __commonJS({
3942
3942
  }
3943
3943
  });
3944
3944
 
3945
- // ../../node_modules/yaml/dist/compose/util-flow-indent-check.js
3945
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-flow-indent-check.js
3946
3946
  var require_util_flow_indent_check = __commonJS({
3947
- "../../node_modules/yaml/dist/compose/util-flow-indent-check.js"(exports) {
3947
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-flow-indent-check.js"(exports) {
3948
3948
  "use strict";
3949
3949
  var utilContainsNewline = require_util_contains_newline();
3950
3950
  function flowIndentCheck(indent, fc, onError) {
@@ -3960,9 +3960,9 @@ var require_util_flow_indent_check = __commonJS({
3960
3960
  }
3961
3961
  });
3962
3962
 
3963
- // ../../node_modules/yaml/dist/compose/util-map-includes.js
3963
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-map-includes.js
3964
3964
  var require_util_map_includes = __commonJS({
3965
- "../../node_modules/yaml/dist/compose/util-map-includes.js"(exports) {
3965
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-map-includes.js"(exports) {
3966
3966
  "use strict";
3967
3967
  var identity = require_identity();
3968
3968
  function mapIncludes(ctx, items, search) {
@@ -3976,9 +3976,9 @@ var require_util_map_includes = __commonJS({
3976
3976
  }
3977
3977
  });
3978
3978
 
3979
- // ../../node_modules/yaml/dist/compose/resolve-block-map.js
3979
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-map.js
3980
3980
  var require_resolve_block_map = __commonJS({
3981
- "../../node_modules/yaml/dist/compose/resolve-block-map.js"(exports) {
3981
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-map.js"(exports) {
3982
3982
  "use strict";
3983
3983
  var Pair = require_Pair();
3984
3984
  var YAMLMap = require_YAMLMap();
@@ -4084,9 +4084,9 @@ var require_resolve_block_map = __commonJS({
4084
4084
  }
4085
4085
  });
4086
4086
 
4087
- // ../../node_modules/yaml/dist/compose/resolve-block-seq.js
4087
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-seq.js
4088
4088
  var require_resolve_block_seq = __commonJS({
4089
- "../../node_modules/yaml/dist/compose/resolve-block-seq.js"(exports) {
4089
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-seq.js"(exports) {
4090
4090
  "use strict";
4091
4091
  var YAMLSeq = require_YAMLSeq();
4092
4092
  var resolveProps = require_resolve_props();
@@ -4135,9 +4135,9 @@ var require_resolve_block_seq = __commonJS({
4135
4135
  }
4136
4136
  });
4137
4137
 
4138
- // ../../node_modules/yaml/dist/compose/resolve-end.js
4138
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-end.js
4139
4139
  var require_resolve_end = __commonJS({
4140
- "../../node_modules/yaml/dist/compose/resolve-end.js"(exports) {
4140
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-end.js"(exports) {
4141
4141
  "use strict";
4142
4142
  function resolveEnd(end, offset, reqSpace, onError) {
4143
4143
  let comment = "";
@@ -4178,9 +4178,9 @@ var require_resolve_end = __commonJS({
4178
4178
  }
4179
4179
  });
4180
4180
 
4181
- // ../../node_modules/yaml/dist/compose/resolve-flow-collection.js
4181
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-collection.js
4182
4182
  var require_resolve_flow_collection = __commonJS({
4183
- "../../node_modules/yaml/dist/compose/resolve-flow-collection.js"(exports) {
4183
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-collection.js"(exports) {
4184
4184
  "use strict";
4185
4185
  var identity = require_identity();
4186
4186
  var Pair = require_Pair();
@@ -4372,9 +4372,9 @@ var require_resolve_flow_collection = __commonJS({
4372
4372
  }
4373
4373
  });
4374
4374
 
4375
- // ../../node_modules/yaml/dist/compose/compose-collection.js
4375
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-collection.js
4376
4376
  var require_compose_collection = __commonJS({
4377
- "../../node_modules/yaml/dist/compose/compose-collection.js"(exports) {
4377
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-collection.js"(exports) {
4378
4378
  "use strict";
4379
4379
  var identity = require_identity();
4380
4380
  var Scalar = require_Scalar();
@@ -4437,9 +4437,9 @@ var require_compose_collection = __commonJS({
4437
4437
  }
4438
4438
  });
4439
4439
 
4440
- // ../../node_modules/yaml/dist/compose/resolve-block-scalar.js
4440
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-scalar.js
4441
4441
  var require_resolve_block_scalar = __commonJS({
4442
- "../../node_modules/yaml/dist/compose/resolve-block-scalar.js"(exports) {
4442
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-scalar.js"(exports) {
4443
4443
  "use strict";
4444
4444
  var Scalar = require_Scalar();
4445
4445
  function resolveBlockScalar(ctx, scalar, onError) {
@@ -4620,9 +4620,9 @@ var require_resolve_block_scalar = __commonJS({
4620
4620
  }
4621
4621
  });
4622
4622
 
4623
- // ../../node_modules/yaml/dist/compose/resolve-flow-scalar.js
4623
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-scalar.js
4624
4624
  var require_resolve_flow_scalar = __commonJS({
4625
- "../../node_modules/yaml/dist/compose/resolve-flow-scalar.js"(exports) {
4625
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-scalar.js"(exports) {
4626
4626
  "use strict";
4627
4627
  var Scalar = require_Scalar();
4628
4628
  var resolveEnd = require_resolve_end();
@@ -4841,9 +4841,9 @@ var require_resolve_flow_scalar = __commonJS({
4841
4841
  }
4842
4842
  });
4843
4843
 
4844
- // ../../node_modules/yaml/dist/compose/compose-scalar.js
4844
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-scalar.js
4845
4845
  var require_compose_scalar = __commonJS({
4846
- "../../node_modules/yaml/dist/compose/compose-scalar.js"(exports) {
4846
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-scalar.js"(exports) {
4847
4847
  "use strict";
4848
4848
  var identity = require_identity();
4849
4849
  var Scalar = require_Scalar();
@@ -4922,9 +4922,9 @@ var require_compose_scalar = __commonJS({
4922
4922
  }
4923
4923
  });
4924
4924
 
4925
- // ../../node_modules/yaml/dist/compose/util-empty-scalar-position.js
4925
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-empty-scalar-position.js
4926
4926
  var require_util_empty_scalar_position = __commonJS({
4927
- "../../node_modules/yaml/dist/compose/util-empty-scalar-position.js"(exports) {
4927
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-empty-scalar-position.js"(exports) {
4928
4928
  "use strict";
4929
4929
  function emptyScalarPosition(offset, before, pos) {
4930
4930
  if (before) {
@@ -4952,9 +4952,9 @@ var require_util_empty_scalar_position = __commonJS({
4952
4952
  }
4953
4953
  });
4954
4954
 
4955
- // ../../node_modules/yaml/dist/compose/compose-node.js
4955
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-node.js
4956
4956
  var require_compose_node = __commonJS({
4957
- "../../node_modules/yaml/dist/compose/compose-node.js"(exports) {
4957
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-node.js"(exports) {
4958
4958
  "use strict";
4959
4959
  var Alias = require_Alias();
4960
4960
  var identity = require_identity();
@@ -5058,9 +5058,9 @@ var require_compose_node = __commonJS({
5058
5058
  }
5059
5059
  });
5060
5060
 
5061
- // ../../node_modules/yaml/dist/compose/compose-doc.js
5061
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-doc.js
5062
5062
  var require_compose_doc = __commonJS({
5063
- "../../node_modules/yaml/dist/compose/compose-doc.js"(exports) {
5063
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-doc.js"(exports) {
5064
5064
  "use strict";
5065
5065
  var Document = require_Document();
5066
5066
  var composeNode = require_compose_node();
@@ -5101,9 +5101,9 @@ var require_compose_doc = __commonJS({
5101
5101
  }
5102
5102
  });
5103
5103
 
5104
- // ../../node_modules/yaml/dist/compose/composer.js
5104
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/composer.js
5105
5105
  var require_composer = __commonJS({
5106
- "../../node_modules/yaml/dist/compose/composer.js"(exports) {
5106
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/composer.js"(exports) {
5107
5107
  "use strict";
5108
5108
  var node_process = __require("process");
5109
5109
  var directives = require_directives();
@@ -5309,9 +5309,9 @@ ${end.comment}` : end.comment;
5309
5309
  }
5310
5310
  });
5311
5311
 
5312
- // ../../node_modules/yaml/dist/parse/cst-scalar.js
5312
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-scalar.js
5313
5313
  var require_cst_scalar = __commonJS({
5314
- "../../node_modules/yaml/dist/parse/cst-scalar.js"(exports) {
5314
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-scalar.js"(exports) {
5315
5315
  "use strict";
5316
5316
  var resolveBlockScalar = require_resolve_block_scalar();
5317
5317
  var resolveFlowScalar = require_resolve_flow_scalar();
@@ -5494,9 +5494,9 @@ var require_cst_scalar = __commonJS({
5494
5494
  }
5495
5495
  });
5496
5496
 
5497
- // ../../node_modules/yaml/dist/parse/cst-stringify.js
5497
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-stringify.js
5498
5498
  var require_cst_stringify = __commonJS({
5499
- "../../node_modules/yaml/dist/parse/cst-stringify.js"(exports) {
5499
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-stringify.js"(exports) {
5500
5500
  "use strict";
5501
5501
  var stringify = (cst) => "type" in cst ? stringifyToken(cst) : stringifyItem(cst);
5502
5502
  function stringifyToken(token) {
@@ -5555,9 +5555,9 @@ var require_cst_stringify = __commonJS({
5555
5555
  }
5556
5556
  });
5557
5557
 
5558
- // ../../node_modules/yaml/dist/parse/cst-visit.js
5558
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-visit.js
5559
5559
  var require_cst_visit = __commonJS({
5560
- "../../node_modules/yaml/dist/parse/cst-visit.js"(exports) {
5560
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-visit.js"(exports) {
5561
5561
  "use strict";
5562
5562
  var BREAK = /* @__PURE__ */ Symbol("break visit");
5563
5563
  var SKIP = /* @__PURE__ */ Symbol("skip children");
@@ -5617,9 +5617,9 @@ var require_cst_visit = __commonJS({
5617
5617
  }
5618
5618
  });
5619
5619
 
5620
- // ../../node_modules/yaml/dist/parse/cst.js
5620
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst.js
5621
5621
  var require_cst = __commonJS({
5622
- "../../node_modules/yaml/dist/parse/cst.js"(exports) {
5622
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst.js"(exports) {
5623
5623
  "use strict";
5624
5624
  var cstScalar = require_cst_scalar();
5625
5625
  var cstStringify = require_cst_stringify();
@@ -5719,9 +5719,9 @@ var require_cst = __commonJS({
5719
5719
  }
5720
5720
  });
5721
5721
 
5722
- // ../../node_modules/yaml/dist/parse/lexer.js
5722
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/lexer.js
5723
5723
  var require_lexer = __commonJS({
5724
- "../../node_modules/yaml/dist/parse/lexer.js"(exports) {
5724
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/lexer.js"(exports) {
5725
5725
  "use strict";
5726
5726
  var cst = require_cst();
5727
5727
  function isEmpty(ch) {
@@ -6308,9 +6308,9 @@ var require_lexer = __commonJS({
6308
6308
  }
6309
6309
  });
6310
6310
 
6311
- // ../../node_modules/yaml/dist/parse/line-counter.js
6311
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/line-counter.js
6312
6312
  var require_line_counter = __commonJS({
6313
- "../../node_modules/yaml/dist/parse/line-counter.js"(exports) {
6313
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/line-counter.js"(exports) {
6314
6314
  "use strict";
6315
6315
  var LineCounter = class {
6316
6316
  constructor() {
@@ -6339,9 +6339,9 @@ var require_line_counter = __commonJS({
6339
6339
  }
6340
6340
  });
6341
6341
 
6342
- // ../../node_modules/yaml/dist/parse/parser.js
6342
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/parser.js
6343
6343
  var require_parser = __commonJS({
6344
- "../../node_modules/yaml/dist/parse/parser.js"(exports) {
6344
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/parser.js"(exports) {
6345
6345
  "use strict";
6346
6346
  var node_process = __require("process");
6347
6347
  var cst = require_cst();
@@ -7213,9 +7213,9 @@ var require_parser = __commonJS({
7213
7213
  }
7214
7214
  });
7215
7215
 
7216
- // ../../node_modules/yaml/dist/public-api.js
7216
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/public-api.js
7217
7217
  var require_public_api = __commonJS({
7218
- "../../node_modules/yaml/dist/public-api.js"(exports) {
7218
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/public-api.js"(exports) {
7219
7219
  "use strict";
7220
7220
  var composer = require_composer();
7221
7221
  var Document = require_Document();
@@ -7310,9 +7310,9 @@ var require_public_api = __commonJS({
7310
7310
  }
7311
7311
  });
7312
7312
 
7313
- // ../../node_modules/yaml/dist/index.js
7313
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/index.js
7314
7314
  var require_dist = __commonJS({
7315
- "../../node_modules/yaml/dist/index.js"(exports) {
7315
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/index.js"(exports) {
7316
7316
  "use strict";
7317
7317
  var composer = require_composer();
7318
7318
  var Document = require_Document();
@@ -8065,6 +8065,18 @@ var SERVER_MESSAGES = [
8065
8065
  ["las memorias s\xF3lo se tocan en el chat personal de la persona", "memories can only be changed in the person's personal chat"],
8066
8066
  ["la persona la ve y la edita en Memorias de su app", "the person sees and edits it in Memories in their app"],
8067
8067
  ["No pude abrir el chat nuevo: {}", "Couldn't open the new chat: {}"],
8068
+ // — Espacios y turnToken por turno (spaces create, mcp set, message-stream)
8069
+ ["combo distinto de teams: s\xF3lo el staff de Ghosty", "a combo other than teams: Ghosty staff only"],
8070
+ ['el espacio "{}" ya existe', 'workspace "{}" already exists'],
8071
+ ["{} ya tiene {} espacio(s) y su plan permite {}", "{} already owns {} workspace(s) and their plan allows {}"],
8072
+ ["no se pudo crear el espacio", "couldn't create the workspace"],
8073
+ ["${turn.token} s\xF3lo funciona en motores del pool (claude-worker y similares), no en ACP", "${turn.token} only works on pool engines (claude-worker and similar), not ACP"],
8074
+ ["servers[{}]: ${turn.token} s\xF3lo va en headers de un MCP http (url)", "servers[{}]: ${turn.token} only goes in the headers of an http MCP (url)"],
8075
+ ["turnToken debe ser un string no vac\xEDo", "turnToken must be a non-empty string"],
8076
+ ["turnToken debe tener al menos {} caracteres", "turnToken must be at least {} characters"],
8077
+ ["turnToken excede {} caracteres", "turnToken exceeds {} characters"],
8078
+ ["turnToken no puede llevar espacios", "turnToken can't contain whitespace"],
8079
+ ["turnToken requerido: los MCP de este agente usan ${turn.token}", "turnToken required: this agent's MCP servers use ${turn.token}"],
8068
8080
  // — Infra interna (casi nunca llega al CLI, pero por si acaso)
8069
8081
  ["SESSION_SECRET ausente en producci\xF3n \u2014 las cookies quedar\xEDan firmadas con un valor p\xFAblico. Inyectarlo con ./scripts/set_gs_secret.sh SESSION_SECRET (openssl rand -hex 32).", "SESSION_SECRET missing in production \u2014 cookies would be signed with a public value. Inject it with ./scripts/set_gs_secret.sh SESSION_SECRET (openssl rand -hex 32)."],
8070
8082
  ["sqld: fetch sin namespace", "sqld: fetch without namespace"],
@@ -8367,7 +8379,7 @@ async function postLong(path, body, timeoutMs = 9e5) {
8367
8379
  const req = httpsRequest(`${base}${path}`, {
8368
8380
  method: "POST",
8369
8381
  timeout: timeoutMs,
8370
- headers: { authorization: `Bearer ${token}`, "user-agent": `ghosty-cli/${"0.33.1"}`, "content-type": "application/json", "content-length": Buffer.byteLength(data) }
8382
+ headers: { authorization: `Bearer ${token}`, "user-agent": `ghosty-cli/${"0.35.0"}`, "content-type": "application/json", "content-length": Buffer.byteLength(data) }
8371
8383
  }, (res) => {
8372
8384
  let buf = "";
8373
8385
  res.on("data", (c) => buf += c);
@@ -8409,7 +8421,7 @@ async function request(path, opts = {}, retried = false) {
8409
8421
  method: opts.method ?? (opts.body !== void 0 || opts.raw !== void 0 ? "POST" : "GET"),
8410
8422
  headers: {
8411
8423
  authorization: `Bearer ${token}`,
8412
- "user-agent": `ghosty-cli/${"0.33.1"}`,
8424
+ "user-agent": `ghosty-cli/${"0.35.0"}`,
8413
8425
  "accept-language": lang(),
8414
8426
  ...opts.body !== void 0 ? { "content-type": "application/json" } : {},
8415
8427
  ...opts.headers
@@ -9495,9 +9507,9 @@ ${bold("Partner space")} ${dim("(you, signed in as the space owner)")}
9495
9507
  partner credentials revoke <keyId> Revoke it (idempotent)
9496
9508
  partner audit Who did what, when
9497
9509
 
9498
- ${bold("Shared agent (solo-MCP)")}
9499
- partner agent get The agent template and its version
9500
- partner agent apply --file agent.json Create or update it (idempotent) [--prompt-file prompt.md]
9510
+ ${bold("Shared agents (solo-MCP)")} ${dim("(--agent SLUG picks another agent of the partner: nik-admin, nik-public\u2026)")}
9511
+ partner agent get [--agent SLUG] The agent template and its version
9512
+ partner agent apply --file agent.json Create or update it (idempotent) [--prompt-file prompt.md] [--agent SLUG]
9501
9513
 
9502
9514
  ${bold("Tenants")} ${dim("(your customers, by externalId \u2014 config only, no box)")}
9503
9515
  partner tenants ls
@@ -9506,7 +9518,7 @@ ${bold("Tenants")} ${dim("(your customers, by externalId \u2014 config only, no
9506
9518
  partner tenants rm <externalId> Deletes its config AND its memory
9507
9519
 
9508
9520
  ${bold("Try it")}
9509
- partner try <externalId> "message" One turn [--group END_USER_ID] [--turn-token SHORT_LIVED_TOKEN] [--verbose: tool args and ms]
9521
+ partner try <externalId> "message" One turn [--agent SLUG] [--group END_USER_ID] [--turn-token SHORT_LIVED_TOKEN] [--verbose: tool args and ms]
9510
9522
  (the turn token goes to YOUR MCP as \${turn.token}; --token also works here)
9511
9523
 
9512
9524
  ${bold("Options")}
@@ -9515,6 +9527,7 @@ ${bold("Options")}
9515
9527
 
9516
9528
  ${bold("Server credential mode")} GHOSTY_PARTNER_KEY=gpk_\u2026 GHOSTY_PARTNER_KEY_SECRET=gps_\u2026 ghosty partner agent get
9517
9529
  ${dim("(GHOSTY_PARTNER_SECRET also works; it is NOT the gs server's global secret)")}
9530
+ ${dim("The same gpk_/gps_ pair signs POST /api/v2/fleet-agents/<id>/message-stream for the normal agents of this space (claude-worker), with turnToken per end user.")}
9518
9531
  ${dim("Docs: https://www.ghosty.studio/docs/cli/partners")}`,
9519
9532
  `${bold("Uso:")} ghosty partner <comando> [opciones]
9520
9533
 
@@ -9527,9 +9540,9 @@ ${bold("Espacio de partner")} ${dim("(t\xFA, con sesi\xF3n como due\xF1a del es
9527
9540
  partner credentials revoke <keyId> La revoca (idempotente)
9528
9541
  partner audit Qui\xE9n hizo qu\xE9 y cu\xE1ndo
9529
9542
 
9530
- ${bold("Agente compartido (solo-MCP)")}
9531
- partner agent get La plantilla del agente y su versi\xF3n
9532
- partner agent apply --file agent.json Lo crea o lo actualiza (idempotente) [--prompt-file prompt.md]
9543
+ ${bold("Agentes compartidos (solo-MCP)")} ${dim("(--agent SLUG elige otro agente del partner: nik-admin, nik-public\u2026)")}
9544
+ partner agent get [--agent SLUG] La plantilla del agente y su versi\xF3n
9545
+ partner agent apply --file agent.json Lo crea o lo actualiza (idempotente) [--prompt-file prompt.md] [--agent SLUG]
9533
9546
 
9534
9547
  ${bold("Tenants")} ${dim("(tus clientes, por externalId \u2014 s\xF3lo config, sin caja)")}
9535
9548
  partner tenants ls
@@ -9538,7 +9551,7 @@ ${bold("Tenants")} ${dim("(tus clientes, por externalId \u2014 s\xF3lo config,
9538
9551
  partner tenants rm <externalId> Borra su config Y su memoria
9539
9552
 
9540
9553
  ${bold("Pru\xE9balo")}
9541
- partner try <externalId> "mensaje" Un turno [--group END_USER_ID] [--turn-token TOKEN_DE_VIDA_CORTA] [--verbose: args y ms de cada tool]
9554
+ partner try <externalId> "mensaje" Un turno [--agent SLUG] [--group END_USER_ID] [--turn-token TOKEN_DE_VIDA_CORTA] [--verbose: args y ms de cada tool]
9542
9555
  (el token del turno llega a TU MCP como \${turn.token}; --token tambi\xE9n sirve aqu\xED)
9543
9556
 
9544
9557
  ${bold("Opciones")}
@@ -9547,6 +9560,7 @@ ${bold("Opciones")}
9547
9560
 
9548
9561
  ${bold("Modo credencial de servidor")} GHOSTY_PARTNER_KEY=gpk_\u2026 GHOSTY_PARTNER_KEY_SECRET=gps_\u2026 ghosty partner agent get
9549
9562
  ${dim("(GHOSTY_PARTNER_SECRET tambi\xE9n vale; NO es el secreto global del servidor de gs)")}
9563
+ ${dim("El mismo par gpk_/gps_ firma POST /api/v2/fleet-agents/<id>/message-stream de los agentes normales de este espacio (claude-worker), con turnToken por usuario final.")}
9550
9564
  ${dim("Docs: https://www.ghosty.studio/docs/cli/partners")}`
9551
9565
  );
9552
9566
  var enc5 = encodeURIComponent;
@@ -9569,7 +9583,7 @@ async function call(path, v, init = {}) {
9569
9583
  "x-ghosty-ts": ts,
9570
9584
  "x-ghosty-sig": sig,
9571
9585
  "content-type": "application/json",
9572
- "user-agent": `ghosty-cli/${"0.33.1"}`
9586
+ "user-agent": `ghosty-cli/${"0.35.0"}`
9573
9587
  },
9574
9588
  body: method === "GET" ? void 0 : raw
9575
9589
  });
@@ -9637,11 +9651,11 @@ async function credentialsCmd(sub, id, v) {
9637
9651
  }
9638
9652
  async function agentCmd(sub, v) {
9639
9653
  if (!sub || sub === "get") {
9640
- const r = await json("/api/v2/partner/agent", v);
9654
+ const r = await json(`/api/v2/partner/agent${v.agent ? `?slug=${enc5(v.agent)}` : ""}`, v);
9641
9655
  return out(r, () => {
9642
9656
  const a = r.agent;
9643
9657
  return [
9644
- `${bold(a.name)} ${dim(`v${a.version} \xB7 solo-MCP \xB7 ${a.engine}/${a.model}`)}`,
9658
+ `${bold(a.name)} ${dim(`${a.slug ? `${a.slug} \xB7 ` : ""}v${a.version} \xB7 solo-MCP \xB7 ${a.engine}/${a.model} \xB7 ${a.id}`)}`,
9645
9659
  `MCP: ${a.mcp.map((m) => `${m.name} (${m.url})`).join(", ") || t("none", "ninguno")}`,
9646
9660
  dim(a.prompt.slice(0, 300))
9647
9661
  ].join("\n");
@@ -9654,6 +9668,7 @@ async function agentCmd(sub, v) {
9654
9668
  body.prompt = await readFile5(v["prompt-file"], "utf8");
9655
9669
  if (body.prompt.length > 6e4) throw usage(t(`The prompt has ${body.prompt.length} chars; the limit is 60,000.`, `El prompt tiene ${body.prompt.length} caracteres; el tope es 60,000.`));
9656
9670
  }
9671
+ if (v.agent) body.slug = v.agent;
9657
9672
  const r = await json("/api/v2/partner/agent", v, { method: "PUT", body });
9658
9673
  return out(r, () => `${lavender("\u2713")} ${r.created ? t("Created", "Creado") : r.changed ? t("Updated", "Actualizado") : t("No changes", "Sin cambios")} \xB7 v${r.agent.version}`);
9659
9674
  }
@@ -9688,7 +9703,7 @@ async function tryCmd(externalId, text, v) {
9688
9703
  if (!externalId || !text) throw usage(t("Missing externalId or message.", "Falta el externalId o el mensaje."), t("Example", "Ejemplo") + ': ghosty partner try org_123 "\xBFqu\xE9 citas tengo hoy?"');
9689
9704
  const res = await call("/api/v2/partner/turns", v, {
9690
9705
  method: "POST",
9691
- body: { tenant: { externalId }, groupId: v.group ?? "cli", text, ...v.token ? { token: v.token } : {} }
9706
+ body: { tenant: { externalId }, groupId: v.group ?? "cli", text, ...v.token ? { token: v.token } : {}, ...v.agent ? { agent: v.agent } : {} }
9692
9707
  });
9693
9708
  const dec = new TextDecoder();
9694
9709
  let buf = "";
@@ -10109,7 +10124,9 @@ function skipReason(r) {
10109
10124
  paused: ["conversation paused on the board", "conversaci\xF3n pausada en el tablero"],
10110
10125
  reaction: ["only a reaction", "s\xF3lo una reacci\xF3n"],
10111
10126
  channel_off: ["WhatsApp channel off for this agent", "canal de WhatsApp apagado en este agente"],
10112
- no_quota: ["out of balance", "sin saldo"]
10127
+ no_quota: ["out of balance", "sin saldo"],
10128
+ partner_token: ["partner did not issue a turn token", "el partner no dio token de turno"],
10129
+ partner_busy: ["partner at its concurrent-turn limit", "el partner lleg\xF3 a su tope de turnos a la vez"]
10113
10130
  };
10114
10131
  const pair = es[r];
10115
10132
  return pair ? t(pair[0], pair[1]) : r;
@@ -10561,8 +10578,11 @@ ${dim(applyHint(`ghosty channels whatsapp link ${id} --integration ${v.integrati
10561
10578
  }
10562
10579
  if (sub === "link" && v.answer !== "on" && v.answer !== "off") throw usage(t("Missing --answer on|off.", "Falta --answer on|off."), t("on = this agent answers real customers \xB7 off = it only records (add --forward so gs still sees the conversations)", "on = este agente contesta a clientes reales \xB7 off = s\xF3lo registra (agrega --forward para que gs siga viendo las conversaciones)"));
10563
10580
  const path = `/api/v2/agents/${enc7(id)}/whatsapp/link`;
10564
- const body = { integrationId: v.integration, ...sub === "unlink" ? { unlink: true } : { answer: v.answer === "on", ...v.forward ? { forward: true } : {}, ...adsOnly !== void 0 ? { adsOnly } : {} } };
10565
- const cmd = `ghosty channels whatsapp ${sub} ${id} --integration ${v.integration}${sub === "link" ? ` --answer ${v.answer}${v.forward ? " --forward" : ""}${v["ads-only"] ? ` --ads-only ${v["ads-only"]}` : ""}` : ""}`;
10581
+ if (v["partner-agent"] && !v["partner-tenant"]) throw usage(t("--partner-agent needs --partner-tenant <externalId>.", "--partner-agent necesita --partner-tenant <externalId>."));
10582
+ const partner = v["partner-tenant"] ? { partnerExternalId: v["partner-tenant"], ...v["partner-agent"] ? { partnerAgentSlug: v["partner-agent"] } : {} } : {};
10583
+ const body = { integrationId: v.integration, ...sub === "unlink" ? { unlink: true } : { answer: v.answer === "on", ...v.forward ? { forward: true } : {}, ...adsOnly !== void 0 ? { adsOnly } : {}, ...partner } };
10584
+ const partnerFlags = v["partner-tenant"] ? ` --partner-tenant ${v["partner-tenant"]}${v["partner-agent"] ? ` --partner-agent ${v["partner-agent"]}` : ""}` : "";
10585
+ const cmd = `ghosty channels whatsapp ${sub} ${id} --integration ${v.integration}${sub === "link" ? ` --answer ${v.answer}${v.forward ? " --forward" : ""}${v["ads-only"] ? ` --ads-only ${v["ads-only"]}` : ""}${partnerFlags}` : ""}`;
10566
10586
  const plan = await api(path, { method: "POST", body: { ...body, dryRun: true } });
10567
10587
  const text = `${plan.plan.map((x) => serverText(x)).join("\n")}
10568
10588
  ${dim(`Formmy: ${plan.formmy.before.url ?? "null"} \u2192 ${plan.formmy.after.url ?? "null"} (${t("as", "como")} ${plan.formmy.by})`)}`;
@@ -10992,6 +11012,7 @@ var HELPS_ES = {
10992
11012
  ["--media", "history: s\xF3lo re-copia los archivos que faltan (fotos, PDF, audios) de las conversaciones ya importadas"],
10993
11013
  ["--answer on|off", "link (obligatorio, sin default): on = este agente contesta a clientes reales; off = s\xF3lo registra"],
10994
11014
  ["--forward", "link --answer off: igual hace que Formmy reenv\xEDe, para que gs vea las conversaciones"],
11015
+ ["--partner-tenant ID / --partner-agent SLUG", "link: el n\xFAmero es de un negocio del partner (externalId); <id> es el agente de ese partner (ghosty partner agent get --agent SLUG) y contesta solo-MCP con un token de turno que gs le pide al partner"],
10995
11016
  ["--from easybits:ID", "import: directo del agente de EasyBits ($EASYBITS_API_KEY del due\xF1o); primero dice si su sesi\xF3n est\xE1 viva, sus llaves y grupos; las llaves s\xF3lo viven en memoria"],
10996
11017
  ["--from-file F", "import: {authCreds, authKeys, phone, groups} exportado de EasyBits"],
10997
11018
  ["--from-dir DIR", "import: una carpeta de auth multi-archivo de Baileys (creds.json + un archivo por llave; p. ej. store/auth de nanoclaw)"],
@@ -11144,16 +11165,16 @@ var HELPS_ES = {
11144
11165
  notes: ["ls dice, de una ya enviada, cu\xE1ntos entreg\xF3 y rechaz\xF3 FCM (del push log, desde el 1-oct).", "--image se publica en img.ghosty.studio (WebP 1200 px). --to vac\xEDo = todos. send sin --at la manda ya (pregunta); --at '' quita la programaci\xF3n.", "--min-version N (versionCode de Android): si la app del tester es m\xE1s vieja, el bot\xF3n dice \xABActualizar\xBB y lanza la actualizaci\xF3n de Play desde la app; '' la quita."]
11145
11166
  },
11146
11167
  spaces: {
11147
- summary: "Espacios: lista los tuyos (o, staff, los de cualquiera) y operaciones del staff de Ghosty \u2014 entrar/salir del espacio de un cliente, cambiar su combo, mover \xABpagado hasta\xBB, renombrar su slug. Cada cambio queda en la bit\xE1cora del espacio.",
11168
+ summary: "Espacios: crea uno a tu nombre (prueba), lista los tuyos (o, staff, los de cualquiera) y operaciones del staff de Ghosty \u2014 entrar/salir del espacio de un cliente, cambiar su combo, mover \xABpagado hasta\xBB, renombrar su slug. Cada cambio queda en la bit\xE1cora del espacio.",
11148
11169
  flags: [
11149
11170
  ["--user EMAIL", "ls (staff): los espacios de esa persona"],
11150
- ["--combo C", "set (staff): teams | sales | both \u2014 sin Ventas sus tableros existen pero nadie los ve"],
11171
+ ["--combo C", "set (staff): teams | sales | both \u2014 sin Ventas sus tableros existen pero nadie los ve; create: distinto de teams, s\xF3lo staff"],
11151
11172
  ["--until DATE", "renew: el nuevo \xABpagado hasta\xBB (AAAA-MM-DD)"],
11152
11173
  ["--note TEXT", "renew: por qu\xE9 (va a la bit\xE1cora)"],
11153
11174
  ["-n, --dry-run", "ense\xF1a qu\xE9 cambia, no cambia nada"],
11154
11175
  ["--yes", "s\xE1ltate la confirmaci\xF3n (obligatorio sin terminal)"]
11155
11176
  ],
11156
- notes: ["Con suscripci\xF3n de Stripe renew se niega: la fecha la mueve la factura pagada.", "rename cambia s\xF3lo el slug (id y namespace se quedan, as\xED que tablero, Stripe y WhatsApp siguen funcionando); las ligas viejas <slug>.sales dejan de servir."]
11177
+ notes: ["create sigue las reglas de la web: queda a tu nombre, nace como prueba de 30 d\xEDas, tu correo debe estar confirmado y tu plan topa cu\xE1ntos tienes. Sigue: ghosty partner enable <slug>.", "Con suscripci\xF3n de Stripe renew se niega: la fecha la mueve la factura pagada.", "rename cambia s\xF3lo el slug (id y namespace se quedan, as\xED que tablero, Stripe y WhatsApp siguen funcionando); las ligas viejas <slug>.sales dejan de servir."]
11157
11178
  }
11158
11179
  };
11159
11180
  var HELP_ALIASES = { creds: "credentials", board: "cards", conversations: "chat", workspaces: "spaces" };
@@ -11499,6 +11520,7 @@ HELPS.channels = {
11499
11520
  ["--media", "history: only re-copy the missing files (photos, PDFs, audio) of conversations already imported"],
11500
11521
  ["--answer on|off", "link (required, no default): on = this agent answers real customers; off = it only records"],
11501
11522
  ["--forward", "link --answer off: still make Formmy forward, so gs sees the conversations"],
11523
+ ["--partner-tenant ID / --partner-agent SLUG", "link: the number belongs to a partner's business (externalId); <id> is that partner's agent (ghosty partner agent get --agent SLUG) and it answers solo-MCP with a turn token gs asks the partner for"],
11502
11524
  ["--from easybits:ID", "import: straight from the EasyBits agent (owner's $EASYBITS_API_KEY); first prints whether its session is alive, its keys and groups; the keys stay in memory"],
11503
11525
  ["--from-file F", "import: {authCreds, authKeys, phone, groups} exported from EasyBits"],
11504
11526
  ["--from-dir DIR", "import: a Baileys multi-file auth folder (creds.json + one file per key; e.g. nanoclaw's store/auth)"],
@@ -11716,18 +11738,18 @@ HELPS.novedades = {
11716
11738
  learn: `${REF}#soporte`
11717
11739
  };
11718
11740
  HELPS.spaces = {
11719
- summary: "Workspaces: list yours (or, staff, anyone's), and Ghosty staff operations \u2014 join/leave a client's workspace, change its combo, move \xABpaid until\xBB, rename its slug. Each change is logged in the workspace's audit.",
11720
- usage: ["ghosty spaces ls [--user EMAIL]", "ghosty spaces join|leave <workspace>", "ghosty spaces set <workspace> --combo teams|sales|both [--dry-run]", "ghosty spaces renew <workspace> --until YYYY-MM-DD [--note TEXT] [--dry-run] [--yes]", "ghosty spaces rename <old> <new> [--dry-run] [--yes]"],
11741
+ summary: "Workspaces: create one of your own (trial), list yours (or, staff, anyone's), and Ghosty staff operations \u2014 join/leave a client's workspace, change its combo, move \xABpaid until\xBB, rename its slug. Each change is logged in the workspace's audit.",
11742
+ usage: ["ghosty spaces ls [--user EMAIL]", "ghosty spaces create <slug> [--combo teams|sales|both] [--dry-run]", "ghosty spaces join|leave <workspace>", "ghosty spaces set <workspace> --combo teams|sales|both [--dry-run]", "ghosty spaces renew <workspace> --until YYYY-MM-DD [--note TEXT] [--dry-run] [--yes]", "ghosty spaces rename <old> <new> [--dry-run] [--yes]"],
11721
11743
  flags: [
11722
11744
  ["--user EMAIL", "ls (staff): that person's workspaces"],
11723
- ["--combo C", "set (staff): teams | sales | both \u2014 without Sales its boards exist but nobody sees them"],
11745
+ ["--combo C", "set (staff): teams | sales | both \u2014 without Sales its boards exist but nobody sees them; create: other than teams, staff only"],
11724
11746
  ["--until DATE", "renew: the new \xABpaid until\xBB (YYYY-MM-DD)"],
11725
11747
  ["--note TEXT", "renew: why (goes into the audit)"],
11726
11748
  ["-n, --dry-run", "show what changes, change nothing"],
11727
11749
  ["--yes", "skip the confirmation (required without a terminal)"]
11728
11750
  ],
11729
- examples: ["ghosty spaces ls", "ghosty spaces ls --user brenda@siiqtec.com", "ghosty spaces join denik", "ghosty spaces set denik --combo sales --dry-run", 'ghosty spaces renew descti --until 2026-11-01 --note "pag\xF3 octubre"', "ghosty spaces rename totequim siiqtec --dry-run"],
11730
- notes: ["With a Stripe subscription renew refuses: the paid invoice moves the date.", "rename changes only the slug (id and namespace stay, so board, Stripe and WhatsApp keep working); old <slug>.sales links stop working."],
11751
+ examples: ["ghosty spaces ls", "ghosty spaces create mailmask --dry-run", "ghosty spaces ls --user brenda@siiqtec.com", "ghosty spaces join denik", "ghosty spaces set denik --combo sales --dry-run", 'ghosty spaces renew descti --until 2026-11-01 --note "pag\xF3 octubre"', "ghosty spaces rename totequim siiqtec --dry-run"],
11752
+ notes: ["create follows the same rules as the web: you own it, it starts as a 30-day trial, your email must be confirmed, and your plan caps how many you own. Next: ghosty partner enable <slug>.", "With a Stripe subscription renew refuses: the paid invoice moves the date.", "rename changes only the slug (id and namespace stay, so board, Stripe and WhatsApp keep working); old <slug>.sales links stop working."],
11731
11753
  learn: `${REF}#espacios`
11732
11754
  };
11733
11755
  HELPS.workspaces = HELPS.spaces;
@@ -12212,12 +12234,21 @@ ${bagsText(r)}`);
12212
12234
  }
12213
12235
  }
12214
12236
  async function spacesCmd(sub, slug, arg, v, context) {
12215
- const ex = "ghosty spaces ls [--user EMAIL] \xB7 join|leave <workspace> \xB7 set <workspace> --combo teams|sales|both \xB7 renew <workspace> --until 2026-11-01 [--note TEXT] \xB7 rename <old> <new> [--dry-run]";
12237
+ const ex = "ghosty spaces ls [--user EMAIL] \xB7 create <slug> [--combo teams|sales|both] [--dry-run] \xB7 join|leave <workspace> \xB7 set <workspace> --combo teams|sales|both \xB7 renew <workspace> --until 2026-11-01 [--note TEXT] \xB7 rename <old> <new> [--dry-run]";
12216
12238
  if (!sub || sub === "ls" || sub === "list") {
12217
12239
  const r = await api(`/api/v2/workspaces${v.user ? `?user=${enc10(v.user)}` : ""}`);
12218
12240
  const rows = r.workspaces.map((w) => ({ workspace: w.slug, role: w.role ?? "", plan: w.plan, combo: w.combo, owner: w.owner ?? "", paid: w.paidUntil ?? "" }));
12219
12241
  return out(r, () => rows.length ? `${bold(r.user)}
12220
12242
  ${table(rows, ["workspace", "role", "plan", "combo", "owner", "paid"])}` : dim(t(`${r.user} has no workspaces.`, `${r.user} no tiene espacios.`)));
12243
+ }
12244
+ if (sub === "create") {
12245
+ slug = needSpace(slug, "ghosty spaces create <slug> [--combo teams|sales|both] [--dry-run]");
12246
+ const r = await api("/api/v2/workspaces", { method: "POST", body: { slug, ...v.combo ? { combo: v.combo } : {}, ...v["dry-run"] ? { dryRun: true } : {} } });
12247
+ const line2 = `${r.workspace} \xB7 ${r.owner} \xB7 ${r.plan} \xB7 ${r.combo}`;
12248
+ if (!r.created) return out(r, () => `${line2}
12249
+ ${dim(t("Dry run: nothing created.", "Simulaci\xF3n: no se cre\xF3 nada."))}`);
12250
+ return out(r, () => `${lavender("\u2713")} ${line2}
12251
+ ${dim(t(`Next: ghosty use ${r.workspace} \xB7 ghosty partner enable ${r.workspace}`, `Sigue: ghosty use ${r.workspace} \xB7 ghosty partner enable ${r.workspace}`))}`);
12221
12252
  }
12222
12253
  if (sub === "join" || sub === "leave") {
12223
12254
  slug = needSpace(slug, `ghosty spaces ${sub} <workspace>`);
@@ -12655,6 +12686,7 @@ ${bold("Session")}
12655
12686
  ${bold("Workspaces")} ${dim("(changing them: Ghosty staff)")}
12656
12687
  bags ls|create|set|rm <workspace> ["bag"] Token bags its agents spend from [--tokens 20M] [--recurring on|off] [--hard-cap on|off] [--note]
12657
12688
  spaces ls Your workspaces (role, plan, combo) [--user EMAIL: someone else's]
12689
+ spaces create <slug> New workspace owned by you (trial) [--combo teams|sales|both: staff] [--dry-run]
12658
12690
  spaces join|leave <workspace> Enter or leave a client's workspace as staff (no seat; logged)
12659
12691
  spaces set <workspace> --combo sales teams | sales | both (without Sales its boards are invisible)
12660
12692
  spaces renew <workspace> --until DATE Move \xABpaid until\xBB (logged) [--note] [--dry-run]
@@ -12700,7 +12732,7 @@ ${bold("Configure an agent")}
12700
12732
  skills templates <id> pdf-doc templates it sees: its own and Ghosty's, and which folder wins
12701
12733
  dbs ls|tables|query|import|rehost|grant|revoke|rename|rm <id> [db] Databases it uses [--write] [--external-write t1,t2] [--external-rows t:col] [--from easybits:ID --dry-run] [--table T --column C]
12702
12734
  dbs photos put <id> <db> --table T --key-column K --dir DIR Loose photos to a catalog (SKU-123.jpg \u2192 its row), permanent links [--column C] [--dry-run]
12703
- mcp get|set <id> MCP servers [--file servers.json]
12735
+ mcp get|set <id> MCP servers [--file servers.json] (http headers accept \${turn.token})
12704
12736
  channels whatsapp ls|enable|disable <id> [number] Which WhatsApp Business numbers it answers [--dry-run]
12705
12737
  channels whatsapp integrations <id> Its owner's WhatsApp Business numbers in Formmy (number, who answers today, Integration id)
12706
12738
  channels whatsapp link|unlink <id> --integration ID --answer on|off Bring a WhatsApp Business number from Formmy/EasyBits to this agent, or send it back [--forward] [--ads-only on|off] [--dry-run]
@@ -12783,6 +12815,7 @@ ${bold("Sesi\xF3n")}
12783
12815
  ${bold("Espacios")} ${dim("(cambiarlos: staff de Ghosty)")}
12784
12816
  bags ls|create|set|rm <espacio> ["bolsa"] Bolsas de tokens de las que gastan sus agentes [--tokens 20M] [--recurring on|off] [--hard-cap on|off] [--note]
12785
12817
  spaces ls Tus espacios (rol, plan, combo) [--user CORREO: los de alguien m\xE1s]
12818
+ spaces create <slug> Espacio nuevo a tu nombre (trial) [--combo teams|sales|both: staff] [--dry-run]
12786
12819
  spaces join|leave <espacio> Entra o sal del espacio de un cliente como staff (sin asiento; queda en bit\xE1cora)
12787
12820
  spaces set <espacio> --combo sales teams | sales | both (sin Ventas sus tableros no se ven)
12788
12821
  spaces renew <espacio> --until FECHA Mueve \xABpagado hasta\xBB (queda en bit\xE1cora) [--note] [--dry-run]
@@ -12828,7 +12861,7 @@ ${bold("Configurar un agente")}
12828
12861
  skills templates <id> Plantillas de pdf-doc que ve: las suyas y las de Ghosty, y qu\xE9 carpeta gana
12829
12862
  dbs ls|tables|query|import|rehost|grant|revoke|rename|rm <id> [db] Bases de datos que usa [--write] [--external-write t1,t2] [--external-rows t:col] [--from easybits:ID --dry-run] [--table T --column C]
12830
12863
  dbs photos put <id> <db> --table T --key-column K --dir DIR Fotos sueltas a un cat\xE1logo (SKU-123.jpg \u2192 su fila), ligas permanentes [--column C] [--dry-run]
12831
- mcp get|set <id> Servidores MCP [--file servers.json]
12864
+ mcp get|set <id> Servidores MCP [--file servers.json] (headers http admiten \${turn.token})
12832
12865
  channels whatsapp ls|enable|disable <id> [n\xFAmero] Qu\xE9 n\xFAmeros de WhatsApp Business contesta [--dry-run]
12833
12866
  channels whatsapp integrations <id> Los n\xFAmeros de WhatsApp Business de su due\xF1o en Formmy (n\xFAmero, qui\xE9n contesta hoy, id de la Integration)
12834
12867
  channels whatsapp link|unlink <id> --integration ID --answer on|off Trae un n\xFAmero de WhatsApp Business de Formmy/EasyBits a este agente, o devu\xE9lvelo [--forward] [--ads-only on|off] [--dry-run]
@@ -13082,6 +13115,8 @@ async function main() {
13082
13115
  publish: { type: "boolean" },
13083
13116
  draft: { type: "boolean" },
13084
13117
  "ads-only": { type: "string" },
13118
+ "partner-tenant": { type: "string" },
13119
+ "partner-agent": { type: "string" },
13085
13120
  list: { type: "boolean" },
13086
13121
  "only-ads": { type: "boolean" },
13087
13122
  phones: { type: "string" },
@@ -13106,13 +13141,14 @@ async function main() {
13106
13141
  const tokens = splitTokens(pos, v);
13107
13142
  globals.token = tokens.session;
13108
13143
  globals.profile = v.profile;
13109
- if (v.version) return out({ version: "0.33.1" }, () => "0.33.1");
13144
+ if (v.version) return out({ version: "0.35.0" }, () => "0.35.0");
13110
13145
  for (const n of normalizeArgs(pos, v)) if (!globals.json) info(dim(n));
13111
13146
  const context = (await readConfig()).workspace;
13112
13147
  if (!explicitToken()?.startsWith("gat_")) {
13113
13148
  const at = agentArgIndex(pos);
13114
13149
  if (at !== null && pos[at]) pos[at] = await resolveAgent(pos[at], context);
13115
13150
  for (const f of ["like", "prompt-base", "agent"]) {
13151
+ if (f === "agent" && pos[0] === "partner") continue;
13116
13152
  const val = v[f];
13117
13153
  if (typeof val === "string" && val !== "none") v[f] = await resolveAgent(val, context);
13118
13154
  }
@@ -13254,7 +13290,7 @@ async function main() {
13254
13290
  throw unknown(cmd, cmd, COMMANDS, "ghosty --help");
13255
13291
  }
13256
13292
  }
13257
- var notice = updateNotice("0.33.1").catch(() => null);
13293
+ var notice = updateNotice("0.35.0").catch(() => null);
13258
13294
  main().then(
13259
13295
  async () => {
13260
13296
  const n = await notice;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ghostystudio/cli",
3
- "version": "0.33.1",
3
+ "version": "0.35.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": {