@ghostystudio/cli 0.101.0 → 0.104.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 -3
  2. package/dist/index.js +222 -175
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1190,7 +1190,7 @@ async function postLong(path2, body, timeoutMs = 9e5) {
1190
1190
  const req = httpsRequest(`${base}${path2}`, {
1191
1191
  method: "POST",
1192
1192
  timeout: timeoutMs,
1193
- headers: { authorization: `Bearer ${token}`, "user-agent": `ghosty-cli/${"0.101.0"}`, "content-type": "application/json", "content-length": Buffer.byteLength(data) }
1193
+ headers: { authorization: `Bearer ${token}`, "user-agent": `ghosty-cli/${"0.104.0"}`, "content-type": "application/json", "content-length": Buffer.byteLength(data) }
1194
1194
  }, (res) => {
1195
1195
  let buf = "";
1196
1196
  res.on("data", (c) => buf += c);
@@ -1232,7 +1232,7 @@ async function request(path2, opts = {}, retried = false) {
1232
1232
  method: opts.method ?? (opts.body !== void 0 || opts.raw !== void 0 ? "POST" : "GET"),
1233
1233
  headers: {
1234
1234
  authorization: `Bearer ${token}`,
1235
- "user-agent": `ghosty-cli/${"0.101.0"}`,
1235
+ "user-agent": `ghosty-cli/${"0.104.0"}`,
1236
1236
  "accept-language": lang(),
1237
1237
  ...opts.body !== void 0 ? { "content-type": "application/json" } : {},
1238
1238
  ...opts.headers
@@ -1352,9 +1352,9 @@ var init_mteams = __esm({
1352
1352
  }
1353
1353
  });
1354
1354
 
1355
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/identity.js
1355
+ // ../../node_modules/yaml/dist/nodes/identity.js
1356
1356
  var require_identity = __commonJS({
1357
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/identity.js"(exports) {
1357
+ "../../node_modules/yaml/dist/nodes/identity.js"(exports) {
1358
1358
  "use strict";
1359
1359
  var ALIAS = /* @__PURE__ */ Symbol.for("yaml.alias");
1360
1360
  var DOC = /* @__PURE__ */ Symbol.for("yaml.document");
@@ -1409,9 +1409,9 @@ var require_identity = __commonJS({
1409
1409
  }
1410
1410
  });
1411
1411
 
1412
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/visit.js
1412
+ // ../../node_modules/yaml/dist/visit.js
1413
1413
  var require_visit = __commonJS({
1414
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/visit.js"(exports) {
1414
+ "../../node_modules/yaml/dist/visit.js"(exports) {
1415
1415
  "use strict";
1416
1416
  var identity = require_identity();
1417
1417
  var BREAK = /* @__PURE__ */ Symbol("break visit");
@@ -1567,9 +1567,9 @@ var require_visit = __commonJS({
1567
1567
  }
1568
1568
  });
1569
1569
 
1570
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/directives.js
1570
+ // ../../node_modules/yaml/dist/doc/directives.js
1571
1571
  var require_directives = __commonJS({
1572
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/directives.js"(exports) {
1572
+ "../../node_modules/yaml/dist/doc/directives.js"(exports) {
1573
1573
  "use strict";
1574
1574
  var identity = require_identity();
1575
1575
  var visit = require_visit();
@@ -1738,9 +1738,9 @@ var require_directives = __commonJS({
1738
1738
  }
1739
1739
  });
1740
1740
 
1741
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/anchors.js
1741
+ // ../../node_modules/yaml/dist/doc/anchors.js
1742
1742
  var require_anchors = __commonJS({
1743
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/anchors.js"(exports) {
1743
+ "../../node_modules/yaml/dist/doc/anchors.js"(exports) {
1744
1744
  "use strict";
1745
1745
  var identity = require_identity();
1746
1746
  var visit = require_visit();
@@ -1808,9 +1808,9 @@ var require_anchors = __commonJS({
1808
1808
  }
1809
1809
  });
1810
1810
 
1811
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/applyReviver.js
1811
+ // ../../node_modules/yaml/dist/doc/applyReviver.js
1812
1812
  var require_applyReviver = __commonJS({
1813
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/applyReviver.js"(exports) {
1813
+ "../../node_modules/yaml/dist/doc/applyReviver.js"(exports) {
1814
1814
  "use strict";
1815
1815
  function applyReviver(reviver, obj, key, val) {
1816
1816
  if (val && typeof val === "object") {
@@ -1858,9 +1858,9 @@ var require_applyReviver = __commonJS({
1858
1858
  }
1859
1859
  });
1860
1860
 
1861
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/toJS.js
1861
+ // ../../node_modules/yaml/dist/nodes/toJS.js
1862
1862
  var require_toJS = __commonJS({
1863
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/toJS.js"(exports) {
1863
+ "../../node_modules/yaml/dist/nodes/toJS.js"(exports) {
1864
1864
  "use strict";
1865
1865
  var identity = require_identity();
1866
1866
  function toJS(value, arg, ctx) {
@@ -1888,9 +1888,9 @@ var require_toJS = __commonJS({
1888
1888
  }
1889
1889
  });
1890
1890
 
1891
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Node.js
1891
+ // ../../node_modules/yaml/dist/nodes/Node.js
1892
1892
  var require_Node = __commonJS({
1893
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Node.js"(exports) {
1893
+ "../../node_modules/yaml/dist/nodes/Node.js"(exports) {
1894
1894
  "use strict";
1895
1895
  var applyReviver = require_applyReviver();
1896
1896
  var identity = require_identity();
@@ -1929,9 +1929,9 @@ var require_Node = __commonJS({
1929
1929
  }
1930
1930
  });
1931
1931
 
1932
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Alias.js
1932
+ // ../../node_modules/yaml/dist/nodes/Alias.js
1933
1933
  var require_Alias = __commonJS({
1934
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Alias.js"(exports) {
1934
+ "../../node_modules/yaml/dist/nodes/Alias.js"(exports) {
1935
1935
  "use strict";
1936
1936
  var anchors = require_anchors();
1937
1937
  var visit = require_visit();
@@ -2047,9 +2047,9 @@ var require_Alias = __commonJS({
2047
2047
  }
2048
2048
  });
2049
2049
 
2050
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Scalar.js
2050
+ // ../../node_modules/yaml/dist/nodes/Scalar.js
2051
2051
  var require_Scalar = __commonJS({
2052
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Scalar.js"(exports) {
2052
+ "../../node_modules/yaml/dist/nodes/Scalar.js"(exports) {
2053
2053
  "use strict";
2054
2054
  var identity = require_identity();
2055
2055
  var Node = require_Node();
@@ -2077,9 +2077,9 @@ var require_Scalar = __commonJS({
2077
2077
  }
2078
2078
  });
2079
2079
 
2080
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/createNode.js
2080
+ // ../../node_modules/yaml/dist/doc/createNode.js
2081
2081
  var require_createNode = __commonJS({
2082
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/createNode.js"(exports) {
2082
+ "../../node_modules/yaml/dist/doc/createNode.js"(exports) {
2083
2083
  "use strict";
2084
2084
  var Alias = require_Alias();
2085
2085
  var identity = require_identity();
@@ -2152,9 +2152,9 @@ var require_createNode = __commonJS({
2152
2152
  }
2153
2153
  });
2154
2154
 
2155
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Collection.js
2155
+ // ../../node_modules/yaml/dist/nodes/Collection.js
2156
2156
  var require_Collection = __commonJS({
2157
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Collection.js"(exports) {
2157
+ "../../node_modules/yaml/dist/nodes/Collection.js"(exports) {
2158
2158
  "use strict";
2159
2159
  var createNode = require_createNode();
2160
2160
  var identity = require_identity();
@@ -2295,9 +2295,9 @@ var require_Collection = __commonJS({
2295
2295
  }
2296
2296
  });
2297
2297
 
2298
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyComment.js
2298
+ // ../../node_modules/yaml/dist/stringify/stringifyComment.js
2299
2299
  var require_stringifyComment = __commonJS({
2300
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyComment.js"(exports) {
2300
+ "../../node_modules/yaml/dist/stringify/stringifyComment.js"(exports) {
2301
2301
  "use strict";
2302
2302
  var stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, "#");
2303
2303
  function indentComment(comment, indent) {
@@ -2312,9 +2312,9 @@ var require_stringifyComment = __commonJS({
2312
2312
  }
2313
2313
  });
2314
2314
 
2315
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/foldFlowLines.js
2315
+ // ../../node_modules/yaml/dist/stringify/foldFlowLines.js
2316
2316
  var require_foldFlowLines = __commonJS({
2317
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/foldFlowLines.js"(exports) {
2317
+ "../../node_modules/yaml/dist/stringify/foldFlowLines.js"(exports) {
2318
2318
  "use strict";
2319
2319
  var FOLD_FLOW = "flow";
2320
2320
  var FOLD_BLOCK = "block";
@@ -2448,9 +2448,9 @@ ${indent}${text.slice(fold + 1, end2)}`;
2448
2448
  }
2449
2449
  });
2450
2450
 
2451
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyString.js
2451
+ // ../../node_modules/yaml/dist/stringify/stringifyString.js
2452
2452
  var require_stringifyString = __commonJS({
2453
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyString.js"(exports) {
2453
+ "../../node_modules/yaml/dist/stringify/stringifyString.js"(exports) {
2454
2454
  "use strict";
2455
2455
  var Scalar = require_Scalar();
2456
2456
  var foldFlowLines = require_foldFlowLines();
@@ -2731,9 +2731,9 @@ ${indent}`);
2731
2731
  }
2732
2732
  });
2733
2733
 
2734
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringify.js
2734
+ // ../../node_modules/yaml/dist/stringify/stringify.js
2735
2735
  var require_stringify = __commonJS({
2736
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringify.js"(exports) {
2736
+ "../../node_modules/yaml/dist/stringify/stringify.js"(exports) {
2737
2737
  "use strict";
2738
2738
  var anchors = require_anchors();
2739
2739
  var identity = require_identity();
@@ -2855,9 +2855,9 @@ ${ctx.indent}${str}`;
2855
2855
  }
2856
2856
  });
2857
2857
 
2858
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyPair.js
2858
+ // ../../node_modules/yaml/dist/stringify/stringifyPair.js
2859
2859
  var require_stringifyPair = __commonJS({
2860
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyPair.js"(exports) {
2860
+ "../../node_modules/yaml/dist/stringify/stringifyPair.js"(exports) {
2861
2861
  "use strict";
2862
2862
  var identity = require_identity();
2863
2863
  var Scalar = require_Scalar();
@@ -2988,9 +2988,9 @@ ${ctx.indent}`;
2988
2988
  }
2989
2989
  });
2990
2990
 
2991
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/log.js
2991
+ // ../../node_modules/yaml/dist/log.js
2992
2992
  var require_log = __commonJS({
2993
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/log.js"(exports) {
2993
+ "../../node_modules/yaml/dist/log.js"(exports) {
2994
2994
  "use strict";
2995
2995
  var node_process = __require("process");
2996
2996
  function debug(logLevel, ...messages) {
@@ -3010,9 +3010,9 @@ var require_log = __commonJS({
3010
3010
  }
3011
3011
  });
3012
3012
 
3013
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/merge.js
3013
+ // ../../node_modules/yaml/dist/schema/yaml-1.1/merge.js
3014
3014
  var require_merge = __commonJS({
3015
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/merge.js"(exports) {
3015
+ "../../node_modules/yaml/dist/schema/yaml-1.1/merge.js"(exports) {
3016
3016
  "use strict";
3017
3017
  var identity = require_identity();
3018
3018
  var Scalar = require_Scalar();
@@ -3070,9 +3070,9 @@ var require_merge = __commonJS({
3070
3070
  }
3071
3071
  });
3072
3072
 
3073
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/addPairToJSMap.js
3073
+ // ../../node_modules/yaml/dist/nodes/addPairToJSMap.js
3074
3074
  var require_addPairToJSMap = __commonJS({
3075
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/addPairToJSMap.js"(exports) {
3075
+ "../../node_modules/yaml/dist/nodes/addPairToJSMap.js"(exports) {
3076
3076
  "use strict";
3077
3077
  var log = require_log();
3078
3078
  var merge = require_merge();
@@ -3134,9 +3134,9 @@ var require_addPairToJSMap = __commonJS({
3134
3134
  }
3135
3135
  });
3136
3136
 
3137
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Pair.js
3137
+ // ../../node_modules/yaml/dist/nodes/Pair.js
3138
3138
  var require_Pair = __commonJS({
3139
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Pair.js"(exports) {
3139
+ "../../node_modules/yaml/dist/nodes/Pair.js"(exports) {
3140
3140
  "use strict";
3141
3141
  var createNode = require_createNode();
3142
3142
  var stringifyPair = require_stringifyPair();
@@ -3174,9 +3174,9 @@ var require_Pair = __commonJS({
3174
3174
  }
3175
3175
  });
3176
3176
 
3177
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyCollection.js
3177
+ // ../../node_modules/yaml/dist/stringify/stringifyCollection.js
3178
3178
  var require_stringifyCollection = __commonJS({
3179
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyCollection.js"(exports) {
3179
+ "../../node_modules/yaml/dist/stringify/stringifyCollection.js"(exports) {
3180
3180
  "use strict";
3181
3181
  var identity = require_identity();
3182
3182
  var stringify = require_stringify();
@@ -3325,9 +3325,9 @@ ${indent}${end}`;
3325
3325
  }
3326
3326
  });
3327
3327
 
3328
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/YAMLMap.js
3328
+ // ../../node_modules/yaml/dist/nodes/YAMLMap.js
3329
3329
  var require_YAMLMap = __commonJS({
3330
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/YAMLMap.js"(exports) {
3330
+ "../../node_modules/yaml/dist/nodes/YAMLMap.js"(exports) {
3331
3331
  "use strict";
3332
3332
  var stringifyCollection = require_stringifyCollection();
3333
3333
  var addPairToJSMap = require_addPairToJSMap();
@@ -3469,9 +3469,9 @@ var require_YAMLMap = __commonJS({
3469
3469
  }
3470
3470
  });
3471
3471
 
3472
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/map.js
3472
+ // ../../node_modules/yaml/dist/schema/common/map.js
3473
3473
  var require_map = __commonJS({
3474
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/map.js"(exports) {
3474
+ "../../node_modules/yaml/dist/schema/common/map.js"(exports) {
3475
3475
  "use strict";
3476
3476
  var identity = require_identity();
3477
3477
  var YAMLMap = require_YAMLMap();
@@ -3491,9 +3491,9 @@ var require_map = __commonJS({
3491
3491
  }
3492
3492
  });
3493
3493
 
3494
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/YAMLSeq.js
3494
+ // ../../node_modules/yaml/dist/nodes/YAMLSeq.js
3495
3495
  var require_YAMLSeq = __commonJS({
3496
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/YAMLSeq.js"(exports) {
3496
+ "../../node_modules/yaml/dist/nodes/YAMLSeq.js"(exports) {
3497
3497
  "use strict";
3498
3498
  var createNode = require_createNode();
3499
3499
  var stringifyCollection = require_stringifyCollection();
@@ -3607,9 +3607,9 @@ var require_YAMLSeq = __commonJS({
3607
3607
  }
3608
3608
  });
3609
3609
 
3610
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/seq.js
3610
+ // ../../node_modules/yaml/dist/schema/common/seq.js
3611
3611
  var require_seq = __commonJS({
3612
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/seq.js"(exports) {
3612
+ "../../node_modules/yaml/dist/schema/common/seq.js"(exports) {
3613
3613
  "use strict";
3614
3614
  var identity = require_identity();
3615
3615
  var YAMLSeq = require_YAMLSeq();
@@ -3629,9 +3629,9 @@ var require_seq = __commonJS({
3629
3629
  }
3630
3630
  });
3631
3631
 
3632
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/string.js
3632
+ // ../../node_modules/yaml/dist/schema/common/string.js
3633
3633
  var require_string = __commonJS({
3634
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/string.js"(exports) {
3634
+ "../../node_modules/yaml/dist/schema/common/string.js"(exports) {
3635
3635
  "use strict";
3636
3636
  var stringifyString = require_stringifyString();
3637
3637
  var string = {
@@ -3648,9 +3648,9 @@ var require_string = __commonJS({
3648
3648
  }
3649
3649
  });
3650
3650
 
3651
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/null.js
3651
+ // ../../node_modules/yaml/dist/schema/common/null.js
3652
3652
  var require_null = __commonJS({
3653
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/null.js"(exports) {
3653
+ "../../node_modules/yaml/dist/schema/common/null.js"(exports) {
3654
3654
  "use strict";
3655
3655
  var Scalar = require_Scalar();
3656
3656
  var nullTag = {
@@ -3666,9 +3666,9 @@ var require_null = __commonJS({
3666
3666
  }
3667
3667
  });
3668
3668
 
3669
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/bool.js
3669
+ // ../../node_modules/yaml/dist/schema/core/bool.js
3670
3670
  var require_bool = __commonJS({
3671
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/bool.js"(exports) {
3671
+ "../../node_modules/yaml/dist/schema/core/bool.js"(exports) {
3672
3672
  "use strict";
3673
3673
  var Scalar = require_Scalar();
3674
3674
  var boolTag = {
@@ -3690,9 +3690,9 @@ var require_bool = __commonJS({
3690
3690
  }
3691
3691
  });
3692
3692
 
3693
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyNumber.js
3693
+ // ../../node_modules/yaml/dist/stringify/stringifyNumber.js
3694
3694
  var require_stringifyNumber = __commonJS({
3695
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyNumber.js"(exports) {
3695
+ "../../node_modules/yaml/dist/stringify/stringifyNumber.js"(exports) {
3696
3696
  "use strict";
3697
3697
  function stringifyNumber({ format, minFractionDigits, tag, value }) {
3698
3698
  if (typeof value === "bigint")
@@ -3717,9 +3717,9 @@ var require_stringifyNumber = __commonJS({
3717
3717
  }
3718
3718
  });
3719
3719
 
3720
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/float.js
3720
+ // ../../node_modules/yaml/dist/schema/core/float.js
3721
3721
  var require_float = __commonJS({
3722
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/float.js"(exports) {
3722
+ "../../node_modules/yaml/dist/schema/core/float.js"(exports) {
3723
3723
  "use strict";
3724
3724
  var Scalar = require_Scalar();
3725
3725
  var stringifyNumber = require_stringifyNumber();
@@ -3763,9 +3763,9 @@ var require_float = __commonJS({
3763
3763
  }
3764
3764
  });
3765
3765
 
3766
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/int.js
3766
+ // ../../node_modules/yaml/dist/schema/core/int.js
3767
3767
  var require_int = __commonJS({
3768
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/int.js"(exports) {
3768
+ "../../node_modules/yaml/dist/schema/core/int.js"(exports) {
3769
3769
  "use strict";
3770
3770
  var stringifyNumber = require_stringifyNumber();
3771
3771
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -3808,9 +3808,9 @@ var require_int = __commonJS({
3808
3808
  }
3809
3809
  });
3810
3810
 
3811
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/schema.js
3811
+ // ../../node_modules/yaml/dist/schema/core/schema.js
3812
3812
  var require_schema = __commonJS({
3813
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/schema.js"(exports) {
3813
+ "../../node_modules/yaml/dist/schema/core/schema.js"(exports) {
3814
3814
  "use strict";
3815
3815
  var map = require_map();
3816
3816
  var _null = require_null();
@@ -3836,9 +3836,9 @@ var require_schema = __commonJS({
3836
3836
  }
3837
3837
  });
3838
3838
 
3839
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/json/schema.js
3839
+ // ../../node_modules/yaml/dist/schema/json/schema.js
3840
3840
  var require_schema2 = __commonJS({
3841
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/json/schema.js"(exports) {
3841
+ "../../node_modules/yaml/dist/schema/json/schema.js"(exports) {
3842
3842
  "use strict";
3843
3843
  var Scalar = require_Scalar();
3844
3844
  var map = require_map();
@@ -3903,9 +3903,9 @@ var require_schema2 = __commonJS({
3903
3903
  }
3904
3904
  });
3905
3905
 
3906
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/binary.js
3906
+ // ../../node_modules/yaml/dist/schema/yaml-1.1/binary.js
3907
3907
  var require_binary = __commonJS({
3908
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/binary.js"(exports) {
3908
+ "../../node_modules/yaml/dist/schema/yaml-1.1/binary.js"(exports) {
3909
3909
  "use strict";
3910
3910
  var node_buffer = __require("buffer");
3911
3911
  var Scalar = require_Scalar();
@@ -3969,9 +3969,9 @@ var require_binary = __commonJS({
3969
3969
  }
3970
3970
  });
3971
3971
 
3972
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
3972
+ // ../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js
3973
3973
  var require_pairs = __commonJS({
3974
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/pairs.js"(exports) {
3974
+ "../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js"(exports) {
3975
3975
  "use strict";
3976
3976
  var identity = require_identity();
3977
3977
  var Pair = require_Pair();
@@ -4047,9 +4047,9 @@ ${cn.comment}` : item.comment;
4047
4047
  }
4048
4048
  });
4049
4049
 
4050
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/omap.js
4050
+ // ../../node_modules/yaml/dist/schema/yaml-1.1/omap.js
4051
4051
  var require_omap = __commonJS({
4052
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports) {
4052
+ "../../node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports) {
4053
4053
  "use strict";
4054
4054
  var identity = require_identity();
4055
4055
  var toJS = require_toJS();
@@ -4125,9 +4125,9 @@ var require_omap = __commonJS({
4125
4125
  }
4126
4126
  });
4127
4127
 
4128
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/bool.js
4128
+ // ../../node_modules/yaml/dist/schema/yaml-1.1/bool.js
4129
4129
  var require_bool2 = __commonJS({
4130
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports) {
4130
+ "../../node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports) {
4131
4131
  "use strict";
4132
4132
  var Scalar = require_Scalar();
4133
4133
  function boolStringify({ value, source }, ctx) {
@@ -4157,9 +4157,9 @@ var require_bool2 = __commonJS({
4157
4157
  }
4158
4158
  });
4159
4159
 
4160
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/float.js
4160
+ // ../../node_modules/yaml/dist/schema/yaml-1.1/float.js
4161
4161
  var require_float2 = __commonJS({
4162
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports) {
4162
+ "../../node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports) {
4163
4163
  "use strict";
4164
4164
  var Scalar = require_Scalar();
4165
4165
  var stringifyNumber = require_stringifyNumber();
@@ -4206,9 +4206,9 @@ var require_float2 = __commonJS({
4206
4206
  }
4207
4207
  });
4208
4208
 
4209
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/int.js
4209
+ // ../../node_modules/yaml/dist/schema/yaml-1.1/int.js
4210
4210
  var require_int2 = __commonJS({
4211
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports) {
4211
+ "../../node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports) {
4212
4212
  "use strict";
4213
4213
  var stringifyNumber = require_stringifyNumber();
4214
4214
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -4285,9 +4285,9 @@ var require_int2 = __commonJS({
4285
4285
  }
4286
4286
  });
4287
4287
 
4288
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/set.js
4288
+ // ../../node_modules/yaml/dist/schema/yaml-1.1/set.js
4289
4289
  var require_set = __commonJS({
4290
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports) {
4290
+ "../../node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports) {
4291
4291
  "use strict";
4292
4292
  var identity = require_identity();
4293
4293
  var Pair = require_Pair();
@@ -4374,9 +4374,9 @@ var require_set = __commonJS({
4374
4374
  }
4375
4375
  });
4376
4376
 
4377
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
4377
+ // ../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
4378
4378
  var require_timestamp = __commonJS({
4379
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports) {
4379
+ "../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports) {
4380
4380
  "use strict";
4381
4381
  var stringifyNumber = require_stringifyNumber();
4382
4382
  function parseSexagesimal(str, asBigInt) {
@@ -4462,9 +4462,9 @@ var require_timestamp = __commonJS({
4462
4462
  }
4463
4463
  });
4464
4464
 
4465
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/schema.js
4465
+ // ../../node_modules/yaml/dist/schema/yaml-1.1/schema.js
4466
4466
  var require_schema3 = __commonJS({
4467
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports) {
4467
+ "../../node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports) {
4468
4468
  "use strict";
4469
4469
  var map = require_map();
4470
4470
  var _null = require_null();
@@ -4506,9 +4506,9 @@ var require_schema3 = __commonJS({
4506
4506
  }
4507
4507
  });
4508
4508
 
4509
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/tags.js
4509
+ // ../../node_modules/yaml/dist/schema/tags.js
4510
4510
  var require_tags = __commonJS({
4511
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/tags.js"(exports) {
4511
+ "../../node_modules/yaml/dist/schema/tags.js"(exports) {
4512
4512
  "use strict";
4513
4513
  var map = require_map();
4514
4514
  var _null = require_null();
@@ -4600,9 +4600,9 @@ var require_tags = __commonJS({
4600
4600
  }
4601
4601
  });
4602
4602
 
4603
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/Schema.js
4603
+ // ../../node_modules/yaml/dist/schema/Schema.js
4604
4604
  var require_Schema = __commonJS({
4605
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/Schema.js"(exports) {
4605
+ "../../node_modules/yaml/dist/schema/Schema.js"(exports) {
4606
4606
  "use strict";
4607
4607
  var identity = require_identity();
4608
4608
  var map = require_map();
@@ -4632,9 +4632,9 @@ var require_Schema = __commonJS({
4632
4632
  }
4633
4633
  });
4634
4634
 
4635
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyDocument.js
4635
+ // ../../node_modules/yaml/dist/stringify/stringifyDocument.js
4636
4636
  var require_stringifyDocument = __commonJS({
4637
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyDocument.js"(exports) {
4637
+ "../../node_modules/yaml/dist/stringify/stringifyDocument.js"(exports) {
4638
4638
  "use strict";
4639
4639
  var identity = require_identity();
4640
4640
  var stringify = require_stringify();
@@ -4712,9 +4712,9 @@ var require_stringifyDocument = __commonJS({
4712
4712
  }
4713
4713
  });
4714
4714
 
4715
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/Document.js
4715
+ // ../../node_modules/yaml/dist/doc/Document.js
4716
4716
  var require_Document = __commonJS({
4717
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/Document.js"(exports) {
4717
+ "../../node_modules/yaml/dist/doc/Document.js"(exports) {
4718
4718
  "use strict";
4719
4719
  var Alias = require_Alias();
4720
4720
  var Collection = require_Collection();
@@ -5021,9 +5021,9 @@ var require_Document = __commonJS({
5021
5021
  }
5022
5022
  });
5023
5023
 
5024
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/errors.js
5024
+ // ../../node_modules/yaml/dist/errors.js
5025
5025
  var require_errors = __commonJS({
5026
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/errors.js"(exports) {
5026
+ "../../node_modules/yaml/dist/errors.js"(exports) {
5027
5027
  "use strict";
5028
5028
  var YAMLError = class extends Error {
5029
5029
  constructor(name, pos, code, message) {
@@ -5086,9 +5086,9 @@ ${pointer}
5086
5086
  }
5087
5087
  });
5088
5088
 
5089
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-props.js
5089
+ // ../../node_modules/yaml/dist/compose/resolve-props.js
5090
5090
  var require_resolve_props = __commonJS({
5091
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-props.js"(exports) {
5091
+ "../../node_modules/yaml/dist/compose/resolve-props.js"(exports) {
5092
5092
  "use strict";
5093
5093
  function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
5094
5094
  let spaceBefore = false;
@@ -5220,9 +5220,9 @@ var require_resolve_props = __commonJS({
5220
5220
  }
5221
5221
  });
5222
5222
 
5223
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-contains-newline.js
5223
+ // ../../node_modules/yaml/dist/compose/util-contains-newline.js
5224
5224
  var require_util_contains_newline = __commonJS({
5225
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-contains-newline.js"(exports) {
5225
+ "../../node_modules/yaml/dist/compose/util-contains-newline.js"(exports) {
5226
5226
  "use strict";
5227
5227
  function containsNewline(key) {
5228
5228
  if (!key)
@@ -5262,9 +5262,9 @@ var require_util_contains_newline = __commonJS({
5262
5262
  }
5263
5263
  });
5264
5264
 
5265
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-flow-indent-check.js
5265
+ // ../../node_modules/yaml/dist/compose/util-flow-indent-check.js
5266
5266
  var require_util_flow_indent_check = __commonJS({
5267
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-flow-indent-check.js"(exports) {
5267
+ "../../node_modules/yaml/dist/compose/util-flow-indent-check.js"(exports) {
5268
5268
  "use strict";
5269
5269
  var utilContainsNewline = require_util_contains_newline();
5270
5270
  function flowIndentCheck(indent, fc, onError) {
@@ -5280,9 +5280,9 @@ var require_util_flow_indent_check = __commonJS({
5280
5280
  }
5281
5281
  });
5282
5282
 
5283
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-map-includes.js
5283
+ // ../../node_modules/yaml/dist/compose/util-map-includes.js
5284
5284
  var require_util_map_includes = __commonJS({
5285
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-map-includes.js"(exports) {
5285
+ "../../node_modules/yaml/dist/compose/util-map-includes.js"(exports) {
5286
5286
  "use strict";
5287
5287
  var identity = require_identity();
5288
5288
  function mapIncludes(ctx, items, search) {
@@ -5296,9 +5296,9 @@ var require_util_map_includes = __commonJS({
5296
5296
  }
5297
5297
  });
5298
5298
 
5299
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-map.js
5299
+ // ../../node_modules/yaml/dist/compose/resolve-block-map.js
5300
5300
  var require_resolve_block_map = __commonJS({
5301
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-map.js"(exports) {
5301
+ "../../node_modules/yaml/dist/compose/resolve-block-map.js"(exports) {
5302
5302
  "use strict";
5303
5303
  var Pair = require_Pair();
5304
5304
  var YAMLMap = require_YAMLMap();
@@ -5404,9 +5404,9 @@ var require_resolve_block_map = __commonJS({
5404
5404
  }
5405
5405
  });
5406
5406
 
5407
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-seq.js
5407
+ // ../../node_modules/yaml/dist/compose/resolve-block-seq.js
5408
5408
  var require_resolve_block_seq = __commonJS({
5409
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-seq.js"(exports) {
5409
+ "../../node_modules/yaml/dist/compose/resolve-block-seq.js"(exports) {
5410
5410
  "use strict";
5411
5411
  var YAMLSeq = require_YAMLSeq();
5412
5412
  var resolveProps = require_resolve_props();
@@ -5455,9 +5455,9 @@ var require_resolve_block_seq = __commonJS({
5455
5455
  }
5456
5456
  });
5457
5457
 
5458
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-end.js
5458
+ // ../../node_modules/yaml/dist/compose/resolve-end.js
5459
5459
  var require_resolve_end = __commonJS({
5460
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-end.js"(exports) {
5460
+ "../../node_modules/yaml/dist/compose/resolve-end.js"(exports) {
5461
5461
  "use strict";
5462
5462
  function resolveEnd(end, offset, reqSpace, onError) {
5463
5463
  let comment = "";
@@ -5498,9 +5498,9 @@ var require_resolve_end = __commonJS({
5498
5498
  }
5499
5499
  });
5500
5500
 
5501
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-collection.js
5501
+ // ../../node_modules/yaml/dist/compose/resolve-flow-collection.js
5502
5502
  var require_resolve_flow_collection = __commonJS({
5503
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-collection.js"(exports) {
5503
+ "../../node_modules/yaml/dist/compose/resolve-flow-collection.js"(exports) {
5504
5504
  "use strict";
5505
5505
  var identity = require_identity();
5506
5506
  var Pair = require_Pair();
@@ -5692,9 +5692,9 @@ var require_resolve_flow_collection = __commonJS({
5692
5692
  }
5693
5693
  });
5694
5694
 
5695
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-collection.js
5695
+ // ../../node_modules/yaml/dist/compose/compose-collection.js
5696
5696
  var require_compose_collection = __commonJS({
5697
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-collection.js"(exports) {
5697
+ "../../node_modules/yaml/dist/compose/compose-collection.js"(exports) {
5698
5698
  "use strict";
5699
5699
  var identity = require_identity();
5700
5700
  var Scalar = require_Scalar();
@@ -5757,9 +5757,9 @@ var require_compose_collection = __commonJS({
5757
5757
  }
5758
5758
  });
5759
5759
 
5760
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-scalar.js
5760
+ // ../../node_modules/yaml/dist/compose/resolve-block-scalar.js
5761
5761
  var require_resolve_block_scalar = __commonJS({
5762
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-scalar.js"(exports) {
5762
+ "../../node_modules/yaml/dist/compose/resolve-block-scalar.js"(exports) {
5763
5763
  "use strict";
5764
5764
  var Scalar = require_Scalar();
5765
5765
  function resolveBlockScalar(ctx, scalar, onError) {
@@ -5940,9 +5940,9 @@ var require_resolve_block_scalar = __commonJS({
5940
5940
  }
5941
5941
  });
5942
5942
 
5943
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-scalar.js
5943
+ // ../../node_modules/yaml/dist/compose/resolve-flow-scalar.js
5944
5944
  var require_resolve_flow_scalar = __commonJS({
5945
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-scalar.js"(exports) {
5945
+ "../../node_modules/yaml/dist/compose/resolve-flow-scalar.js"(exports) {
5946
5946
  "use strict";
5947
5947
  var Scalar = require_Scalar();
5948
5948
  var resolveEnd = require_resolve_end();
@@ -6161,9 +6161,9 @@ var require_resolve_flow_scalar = __commonJS({
6161
6161
  }
6162
6162
  });
6163
6163
 
6164
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-scalar.js
6164
+ // ../../node_modules/yaml/dist/compose/compose-scalar.js
6165
6165
  var require_compose_scalar = __commonJS({
6166
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-scalar.js"(exports) {
6166
+ "../../node_modules/yaml/dist/compose/compose-scalar.js"(exports) {
6167
6167
  "use strict";
6168
6168
  var identity = require_identity();
6169
6169
  var Scalar = require_Scalar();
@@ -6242,9 +6242,9 @@ var require_compose_scalar = __commonJS({
6242
6242
  }
6243
6243
  });
6244
6244
 
6245
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-empty-scalar-position.js
6245
+ // ../../node_modules/yaml/dist/compose/util-empty-scalar-position.js
6246
6246
  var require_util_empty_scalar_position = __commonJS({
6247
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-empty-scalar-position.js"(exports) {
6247
+ "../../node_modules/yaml/dist/compose/util-empty-scalar-position.js"(exports) {
6248
6248
  "use strict";
6249
6249
  function emptyScalarPosition(offset, before, pos) {
6250
6250
  if (before) {
@@ -6272,9 +6272,9 @@ var require_util_empty_scalar_position = __commonJS({
6272
6272
  }
6273
6273
  });
6274
6274
 
6275
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-node.js
6275
+ // ../../node_modules/yaml/dist/compose/compose-node.js
6276
6276
  var require_compose_node = __commonJS({
6277
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-node.js"(exports) {
6277
+ "../../node_modules/yaml/dist/compose/compose-node.js"(exports) {
6278
6278
  "use strict";
6279
6279
  var Alias = require_Alias();
6280
6280
  var identity = require_identity();
@@ -6378,9 +6378,9 @@ var require_compose_node = __commonJS({
6378
6378
  }
6379
6379
  });
6380
6380
 
6381
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-doc.js
6381
+ // ../../node_modules/yaml/dist/compose/compose-doc.js
6382
6382
  var require_compose_doc = __commonJS({
6383
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-doc.js"(exports) {
6383
+ "../../node_modules/yaml/dist/compose/compose-doc.js"(exports) {
6384
6384
  "use strict";
6385
6385
  var Document = require_Document();
6386
6386
  var composeNode = require_compose_node();
@@ -6421,9 +6421,9 @@ var require_compose_doc = __commonJS({
6421
6421
  }
6422
6422
  });
6423
6423
 
6424
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/composer.js
6424
+ // ../../node_modules/yaml/dist/compose/composer.js
6425
6425
  var require_composer = __commonJS({
6426
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/composer.js"(exports) {
6426
+ "../../node_modules/yaml/dist/compose/composer.js"(exports) {
6427
6427
  "use strict";
6428
6428
  var node_process = __require("process");
6429
6429
  var directives = require_directives();
@@ -6629,9 +6629,9 @@ ${end.comment}` : end.comment;
6629
6629
  }
6630
6630
  });
6631
6631
 
6632
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-scalar.js
6632
+ // ../../node_modules/yaml/dist/parse/cst-scalar.js
6633
6633
  var require_cst_scalar = __commonJS({
6634
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-scalar.js"(exports) {
6634
+ "../../node_modules/yaml/dist/parse/cst-scalar.js"(exports) {
6635
6635
  "use strict";
6636
6636
  var resolveBlockScalar = require_resolve_block_scalar();
6637
6637
  var resolveFlowScalar = require_resolve_flow_scalar();
@@ -6814,9 +6814,9 @@ var require_cst_scalar = __commonJS({
6814
6814
  }
6815
6815
  });
6816
6816
 
6817
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-stringify.js
6817
+ // ../../node_modules/yaml/dist/parse/cst-stringify.js
6818
6818
  var require_cst_stringify = __commonJS({
6819
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-stringify.js"(exports) {
6819
+ "../../node_modules/yaml/dist/parse/cst-stringify.js"(exports) {
6820
6820
  "use strict";
6821
6821
  var stringify = (cst) => "type" in cst ? stringifyToken(cst) : stringifyItem(cst);
6822
6822
  function stringifyToken(token) {
@@ -6875,9 +6875,9 @@ var require_cst_stringify = __commonJS({
6875
6875
  }
6876
6876
  });
6877
6877
 
6878
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-visit.js
6878
+ // ../../node_modules/yaml/dist/parse/cst-visit.js
6879
6879
  var require_cst_visit = __commonJS({
6880
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-visit.js"(exports) {
6880
+ "../../node_modules/yaml/dist/parse/cst-visit.js"(exports) {
6881
6881
  "use strict";
6882
6882
  var BREAK = /* @__PURE__ */ Symbol("break visit");
6883
6883
  var SKIP2 = /* @__PURE__ */ Symbol("skip children");
@@ -6937,9 +6937,9 @@ var require_cst_visit = __commonJS({
6937
6937
  }
6938
6938
  });
6939
6939
 
6940
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst.js
6940
+ // ../../node_modules/yaml/dist/parse/cst.js
6941
6941
  var require_cst = __commonJS({
6942
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst.js"(exports) {
6942
+ "../../node_modules/yaml/dist/parse/cst.js"(exports) {
6943
6943
  "use strict";
6944
6944
  var cstScalar = require_cst_scalar();
6945
6945
  var cstStringify = require_cst_stringify();
@@ -7039,9 +7039,9 @@ var require_cst = __commonJS({
7039
7039
  }
7040
7040
  });
7041
7041
 
7042
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/lexer.js
7042
+ // ../../node_modules/yaml/dist/parse/lexer.js
7043
7043
  var require_lexer = __commonJS({
7044
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/lexer.js"(exports) {
7044
+ "../../node_modules/yaml/dist/parse/lexer.js"(exports) {
7045
7045
  "use strict";
7046
7046
  var cst = require_cst();
7047
7047
  function isEmpty(ch) {
@@ -7628,9 +7628,9 @@ var require_lexer = __commonJS({
7628
7628
  }
7629
7629
  });
7630
7630
 
7631
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/line-counter.js
7631
+ // ../../node_modules/yaml/dist/parse/line-counter.js
7632
7632
  var require_line_counter = __commonJS({
7633
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/line-counter.js"(exports) {
7633
+ "../../node_modules/yaml/dist/parse/line-counter.js"(exports) {
7634
7634
  "use strict";
7635
7635
  var LineCounter = class {
7636
7636
  constructor() {
@@ -7659,9 +7659,9 @@ var require_line_counter = __commonJS({
7659
7659
  }
7660
7660
  });
7661
7661
 
7662
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/parser.js
7662
+ // ../../node_modules/yaml/dist/parse/parser.js
7663
7663
  var require_parser = __commonJS({
7664
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/parser.js"(exports) {
7664
+ "../../node_modules/yaml/dist/parse/parser.js"(exports) {
7665
7665
  "use strict";
7666
7666
  var node_process = __require("process");
7667
7667
  var cst = require_cst();
@@ -8533,9 +8533,9 @@ var require_parser = __commonJS({
8533
8533
  }
8534
8534
  });
8535
8535
 
8536
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/public-api.js
8536
+ // ../../node_modules/yaml/dist/public-api.js
8537
8537
  var require_public_api = __commonJS({
8538
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/public-api.js"(exports) {
8538
+ "../../node_modules/yaml/dist/public-api.js"(exports) {
8539
8539
  "use strict";
8540
8540
  var composer = require_composer();
8541
8541
  var Document = require_Document();
@@ -8630,9 +8630,9 @@ var require_public_api = __commonJS({
8630
8630
  }
8631
8631
  });
8632
8632
 
8633
- // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/index.js
8633
+ // ../../node_modules/yaml/dist/index.js
8634
8634
  var require_dist = __commonJS({
8635
- "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/index.js"(exports) {
8635
+ "../../node_modules/yaml/dist/index.js"(exports) {
8636
8636
  "use strict";
8637
8637
  var composer = require_composer();
8638
8638
  var Document = require_Document();
@@ -9920,11 +9920,11 @@ ${dim(t(`${r3.beforeChars} \u2192 ${r3.chars} chars. Dry run: nothing changed.`,
9920
9920
  const emailAny = parseSwitch("--email-any", v["email-any"]);
9921
9921
  if (emailAny !== void 0) body.email = { anyFromClients: emailAny };
9922
9922
  if (v.quote) {
9923
- const alias = { iva: "ivaPct", vigencia: "vigenciaDias", prefix: "folioPrefijo", prefijo: "folioPrefijo", currency: "moneda", company: "empresa", phone: "telefono", email: "correo", address: "direccion", notes: "notas", "iva-incluido": "ivaIncluido", "solo-factura": "ivaSoloConFactura" };
9923
+ const alias = { "catalogo-base": "catalogoBase", catalogo_base: "catalogoBase", "catalog-db": "catalogoBase", catalog_db: "catalogoBase", iva: "ivaPct", vigencia: "vigenciaDias", prefix: "folioPrefijo", prefijo: "folioPrefijo", currency: "moneda", company: "empresa", phone: "telefono", email: "correo", address: "direccion", notes: "notas", "iva-incluido": "ivaIncluido", "solo-factura": "ivaSoloConFactura", template: "plantilla", numbers: "numeros", seller: "comercial" };
9924
9924
  const cot = {};
9925
9925
  let cats = null;
9926
- for (const part of v.quote.split(/,(?=\s*[a-zA-Z-]+(?:\.[^=,]+)?=)/)) {
9927
- const m = /^\s*([a-zA-Z-]+)(?:\.([^=]+))?=(.*)$/.exec(part);
9926
+ for (const part of v.quote.split(/,(?=\s*[a-zA-Z_-]+(?:\.[^=,]+)?=)/)) {
9927
+ const m = /^\s*([a-zA-Z_-]+)(?:\.([^=]+))?=(.*)$/.exec(part);
9928
9928
  if (!m) throw usage(t(`Bad --quote: ${part}.`, `--quote inv\xE1lido: ${part}.`), "--quote iva=0,prefix=SFI,vigencia=15");
9929
9929
  const [, rawKey, category, rawVal] = m;
9930
9930
  const val = rawVal.trim().replace(/^"(.*)"$/, "$1");
@@ -9935,6 +9935,10 @@ ${dim(t(`${r3.beforeChars} \u2192 ${r3.chars} chars. Dry run: nothing changed.`,
9935
9935
  continue;
9936
9936
  }
9937
9937
  const key = alias[rawKey] ?? rawKey;
9938
+ if (key === "plantilla" && val.startsWith("@")) {
9939
+ cot[key] = await readFile3(resolve(val.slice(1)), "utf8");
9940
+ continue;
9941
+ }
9938
9942
  cot[key] = key === "ivaPct" || key === "vigenciaDias" ? Number(val) : key === "ivaIncluido" || key === "ivaSoloConFactura" ? /^(true|on|yes|si|sí|1)$/i.test(val) : val;
9939
9943
  }
9940
9944
  if (cats) cot.ivaPorCategoria = cats;
@@ -11293,7 +11297,7 @@ async function call(path2, v, init = {}) {
11293
11297
  "x-ghosty-ts": ts,
11294
11298
  "x-ghosty-sig": sig,
11295
11299
  "content-type": "application/json",
11296
- "user-agent": `ghosty-cli/${"0.101.0"}`
11300
+ "user-agent": `ghosty-cli/${"0.104.0"}`
11297
11301
  },
11298
11302
  body: method === "GET" ? void 0 : raw
11299
11303
  });
@@ -11909,8 +11913,29 @@ ${dim(t("Is the source the right database? Leave those tables out with --tables.
11909
11913
  function planText(plan) {
11910
11914
  return plan.map((p) => p.action === "create" ? t(` + ${p.table} create, ${p.sourceRows} row(s)`, ` + ${p.table} crear, ${p.sourceRows} fila(s)`) : t(` ~ ${p.table} ${p.action} ${p.targetRows} \u2192 ${p.resultRows} row(s)`, ` ~ ${p.table} ${p.action === "replace" ? "reemplazar" : "agregar"} ${p.targetRows} \u2192 ${p.resultRows} fila(s)`)).join("\n");
11911
11915
  }
11916
+ async function dbsImportCsv(id, db, file, v) {
11917
+ const ex = "ghosty dbs import <agent-id> <db> --from csv:products.csv --table products [--append] [--dry-run]";
11918
+ if (!v.table) throw usage(t("Missing --table.", "Falta --table."), `${t("Example", "Ejemplo")}: ${ex}`);
11919
+ const csvText = await readFile6(file, "utf8");
11920
+ const body = { from: "csv", table: v.table, csv: csvText, mode: v.append ? "append" : "replace" };
11921
+ const path2 = agentPath2(id, `/dbs/${enc9(db)}/import`);
11922
+ const dry = await api(path2, { body: { ...body, dryRun: true } });
11923
+ const cols = dim(` ${t("columns", "columnas")}: ${dry.columns.join(", ")}`);
11924
+ if (v["dry-run"]) return out(dry, () => `${dry.db} \u2190 ${basename3(file)}
11925
+ ${planText(dry.plan)}
11926
+ ${cols}
11927
+ ${dim(t("Dry run: nothing changed.", "Simulaci\xF3n: no cambi\xF3 nada."))}`);
11928
+ if (dry.plan.some((p) => p.action === "replace" && p.targetRows > 0)) await confirm(`${planText(dry.plan)}${shrinkWarnings(dry.plan)}
11929
+ ${t(`Replace the rows of ${v.table} in ${dry.db}?`, `\xBFReemplazar las filas de ${v.table} en ${dry.db}?`)}`, { yes: v.yes, retry: ex });
11930
+ const r = await api(path2, { body });
11931
+ return out(r, () => `${planText(r.plan)}
11932
+ ${cols}
11933
+ ${lavender("\u2713")} ${t(`${r.imported} row(s) imported into ${r.db}.${v.table}${r.created ? " (new table)" : ""}.`, `${r.imported} fila(s) importadas en ${r.db}.${v.table}${r.created ? " (tabla nueva)" : ""}.`)}`);
11934
+ }
11912
11935
  async function dbsImport(id, db, v) {
11913
- const ex = "ghosty dbs import <agent-id> <db> --from easybits:<db-id> [--tables a,b] [--dry-run]";
11936
+ const ex = "ghosty dbs import <agent-id> <db> --from easybits:<db-id> [--tables a,b] [--dry-run] | --from csv:file.csv --table T";
11937
+ const csvFile = /^csv:(.+)$/.exec(v.from ?? "");
11938
+ if (csvFile) return dbsImportCsv(id, db, csvFile[1], v);
11914
11939
  const m = /^easybits:(.+)$/.exec(v.from ?? "");
11915
11940
  if (!m) throw usage(t("Missing or bad --from.", "Falta --from o no es v\xE1lido."), `${t("Example", "Ejemplo")}: ${ex}`);
11916
11941
  const easybitsKey = process.env.EASYBITS_API_KEY;
@@ -12029,6 +12054,13 @@ async function dbsCmd(sub, id, db, rest, v) {
12029
12054
  ${dim(`${t("Delete one", "Borrar una")}: ghosty dbs rm ${id} <db> --dry-run`)}` : dim(t("No orphan databases: every one is granted to some agent.", "Sin bases hu\xE9rfanas: todas est\xE1n concedidas a alg\xFAn agente.")));
12030
12055
  return out(dbs, () => rows.length ? table(rows, ["name", "access", "agents", "writes from customers", "own rows", "id"]) : dim(t("This account has no databases yet: create one at /app/dbs.", "Esta cuenta todav\xEDa no tiene bases: crea una en /app/dbs.")));
12031
12056
  }
12057
+ case "create":
12058
+ case "new": {
12059
+ const name = need2(db, t("database name", "el nombre de la base"), "ghosty dbs create <agent-id> <name> [--description TEXT] [--read]");
12060
+ const r = await api(agentPath2(id, "/dbs"), { body: { name, ...v.description ? { description: v.description } : {}, grant: v["no-grant"] ? false : v.read ? "read" : "write" } });
12061
+ return out(r, () => `${lavender("\u2713")} ${t(`Database ${bold(r.name)} created${r.granted ? " and granted to the agent" : ""}.`, `Base ${bold(r.name)} creada${r.granted ? " y concedida al agente" : ""}.`)}
12062
+ ${dim(`${t("Fill it", "Ll\xE9nala")}: ghosty dbs import ${id} ${r.name} --from csv:file.csv --table T`)}`);
12063
+ }
12032
12064
  case "tables": {
12033
12065
  db = need2(db, t("database (id or name)", "la base (id o nombre)"), "ghosty dbs tables <agent-id> <db>");
12034
12066
  const r = await api(agentPath2(id, `/dbs/${enc9(db)}`));
@@ -12800,15 +12832,15 @@ async function groupsCmd(args, v) {
12800
12832
  const sub = rawSub === "enable" || rawSub === "disable" ? "set" : rawSub;
12801
12833
  if (rawSub === "enable") v = { ...v, on: true };
12802
12834
  if (rawSub === "disable") v = { ...v, off: true };
12803
- const ex = 'ghosty channels wa groups ls <agent-id> | set <agent-id> <group> [--role equipo|cliente] [--wake mention|all] [--on|--off] [--name "New name"] | create <agent-id> "Name" | inject <agent-id> <group> --text "\u2026" [--sender NAME]';
12835
+ const ex = 'ghosty channels wa groups ls <agent-id> | set <agent-id> <group> [--role equipo|cliente] [--wake mention|name|all] [--alias "tilin,ghos"] [--on|--off] [--name "New name"] | create <agent-id> "Name" | inject <agent-id> <group> --text "\u2026" [--sender NAME]';
12804
12836
  if (!id) throw usage(t("Missing agent id.", "Falta el id del agente."), `${t("Example", "Ejemplo")}: ${ex}`);
12805
12837
  const path2 = `/api/v2/agents/${enc11(id)}/wa/groups`;
12806
12838
  if (v.role !== void 0 && v.role !== "equipo" && v.role !== "cliente") throw usage(t("--role takes equipo or cliente.", "--role acepta equipo o cliente."));
12807
- if (v.wake !== void 0 && v.wake !== "mention" && v.wake !== "all") throw usage(t("--wake takes mention or all.", "--wake acepta mention o all."));
12839
+ if (v.wake !== void 0 && v.wake !== "mention" && v.wake !== "name" && v.wake !== "all") throw usage(t("--wake takes mention, name or all.", "--wake acepta mention, name o all."));
12808
12840
  if (!sub || sub === "ls" || sub === "list") {
12809
12841
  const r2 = await api(`${path2}${v.cached ? "?live=0" : ""}`);
12810
- const rows = r2.groups.map((g2) => ({ name: g2.name, on: g2.enabled ? lavender("on") : dim("off"), role: g2.role, wake: g2.wake ?? "all", jid: g2.jid }));
12811
- return out(r2, () => rows.length ? table(rows, ["name", "on", "role", "wake", "jid"]) : dim(t('No groups. Pair its personal WhatsApp in the web, or: ghosty channels wa groups create <agent-id> "Name"', 'Sin grupos. Parea su WhatsApp personal en la web, o: ghosty channels wa groups create <agent-id> "Nombre"')));
12842
+ const rows = r2.groups.map((g2) => ({ name: g2.name, on: g2.enabled ? lavender("on") : dim("off"), role: g2.role, wake: g2.wake ?? "all", alias: (g2.alias ?? []).join(", "), jid: g2.jid }));
12843
+ return out(r2, () => rows.length ? table(rows, ["name", "on", "role", "wake", "alias", "jid"]) : dim(t('No groups. Pair its personal WhatsApp in the web, or: ghosty channels wa groups create <agent-id> "Name"', 'Sin grupos. Parea su WhatsApp personal en la web, o: ghosty channels wa groups create <agent-id> "Nombre"')));
12812
12844
  }
12813
12845
  if (sub === "create") {
12814
12846
  const name2 = rest.join(" ").trim();
@@ -12835,16 +12867,18 @@ async function groupsCmd(args, v) {
12835
12867
  const role = v.role ?? g.role;
12836
12868
  const name = v.name?.trim() || void 0;
12837
12869
  const wake = v.wake;
12838
- const changes = [...wake && wake !== g.wake ? [`wake ${g.wake ?? "all"}\u2192${wake}`] : [], ...enabled !== g.enabled ? [`${g.enabled ? "on" : "off"}\u2192${enabled ? "on" : "off"}`] : [], ...role !== g.role ? [`${g.role}\u2192${role}`] : [], ...name && name !== g.name ? [`\xAB${g.name}\xBB\u2192\xAB${name}\xBB`] : []];
12870
+ const alias = v.alias === void 0 ? void 0 : v.alias.split(",").map((x) => x.trim()).filter(Boolean);
12871
+ const aliasChanged = alias !== void 0 && alias.join(",") !== (g.alias ?? []).join(",");
12872
+ const changes = [...aliasChanged ? [`alias [${(g.alias ?? []).join(", ")}]\u2192[${alias.join(", ")}]`] : [], ...wake && wake !== g.wake ? [`wake ${g.wake ?? "all"}\u2192${wake}`] : [], ...enabled !== g.enabled ? [`${g.enabled ? "on" : "off"}\u2192${enabled ? "on" : "off"}`] : [], ...role !== g.role ? [`${g.role}\u2192${role}`] : [], ...name && name !== g.name ? [`\xAB${g.name}\xBB\u2192\xAB${name}\xBB`] : []];
12839
12873
  if (!changes.length) return out({ changed: 0, group: g }, () => dim(t(`Nothing to do: ${g.name} is already ${g.enabled ? "on" : "off"} as ${g.role}.`, `Nada que hacer: ${g.name} ya est\xE1 ${g.enabled ? "encendido" : "apagado"} como ${g.role}.`)));
12840
12874
  const plan = `~ ${g.name}: ${changes.join(", ")}`;
12841
12875
  if (v["dry-run"]) return out({ dryRun: true, plan: [plan] }, () => `${plan}
12842
12876
  ${dim(t("Dry run: nothing changed.", "Simulacro: no se cambi\xF3 nada."))}`);
12843
12877
  if (enabled && !g.enabled) await confirm(`${bold(plan)}
12844
12878
  ${t(`The agent will start answering in this group as ${role}.`, `El agente empezar\xE1 a contestar en este grupo como ${role}.`)}`, { yes: v.yes, retry: `ghosty channels wa groups set ${id} "${ref}"${v.role ? ` --role ${v.role}` : ""} --on` });
12845
- const r = await api(path2, { method: "POST", body: { jid: g.jid, enabled, role, ...wake ? { wake } : {}, ...name ? { name } : {} } });
12879
+ const r = await api(path2, { method: "POST", body: { jid: g.jid, enabled, role, ...wake ? { wake } : {}, ...alias ? { alias } : {}, ...name ? { name } : {} } });
12846
12880
  const now = r.groups.find((x) => x.jid === g.jid);
12847
- return out({ group: now ?? null, plan: [plan] }, () => `${lavender("\u2713")} ${now?.name ?? g.name}: ${now?.enabled ? "on" : "off"} ${t("as", "como")} ${now?.role ?? role} \xB7 wake ${now?.wake ?? wake ?? "all"}`);
12881
+ return out({ group: now ?? null, plan: [plan] }, () => `${lavender("\u2713")} ${now?.name ?? g.name}: ${now?.enabled ? "on" : "off"} ${t("as", "como")} ${now?.role ?? role} \xB7 wake ${now?.wake ?? wake ?? "all"}${now?.alias?.length ? ` \xB7 alias ${now.alias.join(", ")}` : ""}`);
12848
12882
  }
12849
12883
  var EB_EXPORT = (agentId) => `${(process.env.EASYBITS_URL ?? "https://www.easybits.cloud").replace(/\/+$/, "")}/api/v2/fleet-agents/${enc11(agentId)}/baileys/export`;
12850
12884
  async function easybitsSession(agentId, keys) {
@@ -13121,29 +13155,30 @@ ${t(`Cards appear on the team's board (no "new lead" alerts).`, "Las tarjetas ap
13121
13155
  out({ ...sum, conversations: done }, () => `${lavender("\u2713")} ${t(`${sum.newCards} new card(s), ${sum.updatedCards} updated, ${sum.messages} message(s), ${sum.orders} order(s)`, `${sum.newCards} tarjeta(s) nueva(s), ${sum.updatedCards} actualizada(s), ${sum.messages} mensaje(s), ${sum.orders} pedido(s)`)}${files(sum)}${sum.suppressed ? dim(t(` \xB7 ${sum.suppressed} bot draft(s) the customer never saw, skipped`, ` \xB7 se omitieron ${sum.suppressed} borrador(es) del bot que el cliente nunca vio`)) : ""}${pausedLine(sum, id)}`);
13122
13156
  }
13123
13157
  async function contactsCmd(id, v) {
13124
- if (!id || !v.integration) throw usage(t("Missing agent id or --integration.", "Falta el id del agente o --integration."), t("Example", "Ejemplo") + ": ghosty channels whatsapp contacts <agent-id> --integration <id> [--new-only on|off] [--mute PHONE] [--allow PHONE] [--unmute PHONE] [--signature \u{1F47E}|off] [--seed] [--list] [--q TEXT]");
13158
+ if (!id || !v.integration) throw usage(t("Missing agent id or --integration.", "Falta el id del agente o --integration."), t("Example", "Ejemplo") + ": ghosty channels whatsapp contacts <agent-id> --integration <id> [--new-only on|off] [--mute PHONE] [--allow PHONE] [--team PHONE] [--unmute PHONE] [--signature \u{1F47E}|off] [--seed] [--list] [--q TEXT]");
13125
13159
  if (v["new-only"] !== void 0 && v["new-only"] !== "on" && v["new-only"] !== "off") throw usage(t("--new-only takes on or off.", "--new-only acepta on u off."));
13126
- if ([v.mute, v.unmute, v.allow].filter((x) => x !== void 0).length > 1) throw usage(t("Use only one of --mute, --allow or --unmute.", "Usa s\xF3lo uno de --mute, --allow o --unmute."));
13160
+ if ([v.mute, v.unmute, v.allow, v.team].filter((x) => x !== void 0).length > 1) throw usage(t("Use only one of --mute, --allow, --team or --unmute.", "Usa s\xF3lo uno de --mute, --allow, --team o --unmute."));
13127
13161
  const path2 = `/api/v2/agents/${enc11(id)}/whatsapp/contacts`;
13128
13162
  if (v.list || v.q !== void 0) {
13129
13163
  const l = await api(`${path2}?number=${enc11(v.integration)}&list=1&limit=200${v.q ? `&q=${enc11(v.q)}` : ""}`);
13130
13164
  return out(l, () => {
13131
13165
  if (!l.rows.length) return dim(t("No contacts yet (Meta sends the phone contacts within 24 h of connecting).", "Sin contactos todav\xEDa (Meta manda la agenda del tel\xE9fono en las primeras 24 h)."));
13132
- const rule = (r2) => r2.agentOff ? t("never", "nunca") : r2.agentAlways ? t("always", "siempre") : "";
13166
+ const rule = (r2) => r2.agentOff ? t("never", "nunca") : r2.team ? t("team", "equipo") : r2.agentAlways ? t("always", "siempre") : "";
13133
13167
  const lines = l.rows.map((r2) => `${r2.key.padEnd(12)} ${r2.name ?? dim(t("(no name)", "(sin nombre)"))}${rule(r2) ? ` ${lavender(rule(r2))}` : ""}`);
13134
13168
  if (l.next != null) lines.push(dim(t(`\u2026 ${l.counts.all - l.rows.length} more; narrow it with --q`, `\u2026 ${l.counts.all - l.rows.length} m\xE1s; acota con --q`)));
13135
13169
  return lines.join("\n");
13136
13170
  });
13137
13171
  }
13138
- const contact = v.mute ?? v.allow ?? v.unmute;
13172
+ const contact = v.mute ?? v.allow ?? v.team ?? v.unmute;
13139
13173
  const write = v["new-only"] !== void 0 || contact !== void 0 || v.seed || v.signature !== void 0;
13140
- const r = write ? await api(path2, { method: "POST", body: { number: v.integration, ...v["new-only"] !== void 0 ? { newOnly: v["new-only"] === "on" } : {}, ...contact !== void 0 ? v.allow !== void 0 ? { contact, always: true } : { contact, off: !!v.mute } : {}, ...v.seed ? { seed: true } : {}, ...v.signature !== void 0 ? { signature: v.signature === "off" ? null : v.signature } : {} } }) : await api(`${path2}?number=${enc11(v.integration)}`);
13174
+ const r = write ? await api(path2, { method: "POST", body: { number: v.integration, ...v["new-only"] !== void 0 ? { newOnly: v["new-only"] === "on" } : {}, ...contact !== void 0 ? v.allow !== void 0 ? { contact, always: true } : v.team !== void 0 ? { contact, team: true } : { contact, off: !!v.mute } : {}, ...v.seed ? { seed: true } : {}, ...v.signature !== void 0 ? { signature: v.signature === "off" ? null : v.signature } : {} } }) : await api(`${path2}?number=${enc11(v.integration)}`);
13141
13175
  return out(r, () => {
13142
13176
  const lines = [
13143
13177
  `${t("New contacts only", "S\xF3lo contactos nuevos")}: ${r.newOnly ? lavender(t("on", "encendido")) : t("off", "apagado")}${r.newSince ? dim(` (${t("since", "desde")} ${r.newSince})`) : ""}`,
13144
13178
  `${t("Known contacts", "Contactos conocidos")}: ${r.known}${r.seededAt ? dim(` (${t("brought from Formmy", "tra\xEDdos de Formmy")} ${r.seededAt})`) : dim(t(" (still waiting for the WhatsApp history)", " (todav\xEDa esperando el historial de WhatsApp)"))}`,
13145
13179
  `${t("Signature", "Firma")}: ${r.signature ? `${r.signature}:` : dim(t("none", "sin firma"))}`,
13146
13180
  `${t("Always answers", "Siempre le contesta a")}: ${r.always?.length ? r.always.map((o) => o.name ? `${o.name} ${o.key}` : o.key).join(", ") : dim("\u2014")}`,
13181
+ `${t("Team (answers in team mode)", "Equipo (le contesta en modo equipo)")}: ${r.team?.length ? r.team.map((o) => o.name ? `${o.name} ${o.key}` : o.key).join(", ") : dim("\u2014")}`,
13147
13182
  `${t("Never answers", "Nunca le contesta a")}: ${r.off.length ? r.off.map((o) => o.name ? `${o.name} ${o.key}` : o.key).join(", ") : dim("\u2014")}`
13148
13183
  ];
13149
13184
  return lines.join("\n");
@@ -13514,7 +13549,7 @@ var HELPS_ES = {
13514
13549
  ["--channel-roles k=role,\u2026", "set: qui\xE9n habla en teams y en programado (turnos programados): equipo (escribe en bases, tools admin) o cliente. chat siempre es el equipo; WhatsApp Business, Messenger, demo y widget son clientes; el WhatsApp personal va por grupo (channels wa groups set --role)"],
13515
13550
  ["--extensions name=on|off,\u2026", "set: prende o apaga extensiones del config.yaml de su caja (developer, memory\u2026; Ghosty \xB7 Lite y Goose); se funden con lo guardado. L\xEDstalas: get (configuraci\xF3n completa)"],
13516
13551
  ["--email-any on|off", "set: on = enviar_correo puede escribir a CUALQUIER direcci\xF3n desde canales de cliente; off (default) = s\xF3lo a quien escribe. S\xF3lo el due\xF1o"],
13517
- ["--quote k=v,\u2026", "set: config de la tool de casa `cotizar` \u2014 iva (0-100), iva-incluido=true (los precios del cat\xE1logo ya traen IVA), iva.CATEGORIA=16 (IVA de esa categor\xEDa del cat\xE1logo; iva.CATEGORIA= la quita), solo-factura=true (IVA s\xF3lo si el cliente pide factura), vigencia (d\xEDas), prefix (folio), moneda, empresa, rfc, telefono, correo, direccion, notas, color. Vac\xEDo lo borra (rfc=). El contador de folio no se toca"],
13552
+ ["--quote k=v,\u2026", "set: config de la tool de casa `cotizar` \u2014 iva (0-100), iva-incluido=true (los precios del cat\xE1logo ya traen IVA), iva.CATEGORIA=16 (IVA de esa categor\xEDa del cat\xE1logo; iva.CATEGORIA= la quita), solo-factura=true (IVA s\xF3lo si el cliente pide factura), vigencia (d\xEDas), prefix (folio), moneda, empresa, rfc, telefono, correo, direccion, notas, color. Vac\xEDo lo borra (rfc=). El contador de folio no se toca \xB7 plantilla=@cotizacion.html (tu propia plantilla del PDF: {{folio}}, {{cliente}}, {{#items}}\u2026{{/items}}), logo=https://\u2026, comercial=NOMBRE, numeros=es (1.234,56) \xB7 catalogo_base=BASE:TABLA (el cat\xE1logo sale de esa tabla de una base concedida, editable en la web o platicando con el agente; catalogo_base= regresa a la lista de la ficha)"],
13518
13553
  ["--catalog FILE", "set: el cat\xE1logo de la tool de casa `cotizar` desde un CSV (sku,nombre,precio[,unidad,categoria,descripcion]) o una lista JSON; reemplaza al anterior. Su `categoria` decide las reglas de IVA"],
13519
13554
  ["--verbose", "doctor: lista tambi\xE9n las revisiones que pasaron"],
13520
13555
  ["--user EMAIL", "doctor (staff de Ghosty): los agentes de esa persona \u2014 doctor, \xFAltimos turnos (estado, segundos, error y \xABfetched\xBB: si su app pidi\xF3 el hilo despu\xE9s de que termin\xF3 el turno), plan/bolsa y cajas (marca duplicadas); queda en bit\xE1cora"],
@@ -13838,12 +13873,13 @@ var HELPS_ES = {
13838
13873
  ["-n, --dry-run", "imprime el plan (+ empieza a contestar, - deja de contestar) y no cambia nada"],
13839
13874
  ["--yes", "enable / groups enable: se salta la confirmaci\xF3n (obligatorio sin terminal)"],
13840
13875
  ["--role R", "groups: equipo (el equipo: escribe en bases de datos, tools de admin) o cliente (como cualquier cliente)"],
13841
- ["--wake mention|all", "groups set/enable: contesta todo, o s\xF3lo cuando lo mencionan o le responden"],
13876
+ ["--wake mention|name|all", "groups set/enable: contesta todo (all), s\xF3lo si lo mencionan con @, lo nombran o le responden (mention), o s\xF3lo si escriben su nombre o un alias (name: sin @ ni respuestas)"],
13877
+ ['--alias "a,b"', 'groups set: otros nombres que lo despiertan en ese grupo adem\xE1s del suyo (el apodo con que le dicen ah\xED); "" los quita'],
13842
13878
  ["--text T / --sender N", "groups inject (staff): un mensaje que se perdi\xF3 (grupo apagado, deploy) entra como si N lo hubiera escrito ah\xED, y el agente contesta en el grupo"],
13843
13879
  ["--cached", "groups ls: no le pide a WhatsApp la lista en vivo (m\xE1s r\xE1pido; puede faltar alg\xFAn grupo nuevo)"],
13844
13880
  ["--ads-only on|off", "link: s\xF3lo las conversaciones que vienen de un anuncio abren tarjeta (tambi\xE9n solo, para cambiarlo en un n\xFAmero ya ligado)"],
13845
13881
  ["--new-only on|off", "link: el agente s\xF3lo contesta a contactos que escriben por primera vez desde ahora; los de antes quedan en el hilo para ti (tambi\xE9n solo)"],
13846
- ["contacts <id> --integration ID", "s\xF3lo contactos nuevos y contactos sin agente: --new-only on|off, --mute TEL (el agente nunca le contesta a ese n\xFAmero), --allow TEL (el agente le contesta aunque sea contacto conocido), --unmute TEL (vuelve a la regla general), --signature \u{1F47E}|off (los mensajes del agente empiezan con \xAB\u{1F47E}:\xBB para que el cliente lo distinga de ti), --seed (vuelve a traer los contactos conocidos de WhatsApp), --list [--q TEXTO] (la agenda del tel\xE9fono con la regla de cada contacto; --q busca por nombre o n\xFAmero)"],
13882
+ ["contacts <id> --integration ID", "s\xF3lo contactos nuevos y contactos sin agente: --new-only on|off, --mute TEL (el agente nunca le contesta a ese n\xFAmero), --allow TEL (el agente le contesta aunque sea contacto conocido), --team TEL (ese n\xFAmero es de tu equipo: el agente le contesta en modo equipo, sin guion de venta, sin tarjeta de lead y sin campa\xF1as), --unmute TEL (vuelve a la regla general), --signature \u{1F47E}|off (los mensajes del agente empiezan con \xAB\u{1F47E}:\xBB para que el cliente lo distinga de ti), --seed (vuelve a traer los contactos conocidos de WhatsApp), --list [--q TEXTO] (la agenda del tel\xE9fono con la regla de cada contacto; --q busca por nombre o n\xFAmero)"],
13847
13883
  ["--board NAME|agent", "link: este n\xFAmero llena su propio tablero de ventas (nombre, id o main) en vez del del agente; las tools del CRM del agente trabajan ese tablero en los turnos de este n\xFAmero. agent = vuelve al del agente. Tambi\xE9n solo, en un n\xFAmero ya ligado"],
13848
13884
  ["--list", "history --dry-run: CU\xC1LES conversaciones (tel\xE9fono, nombre, primer mensaje, mensajes, si vino de anuncio)"],
13849
13885
  ["--only-ads / --phones a,b", "history: importa (o lista) s\xF3lo las de anuncio y/o esos tel\xE9fonos"],
@@ -14272,7 +14308,7 @@ var HELPS = {
14272
14308
  ["--channel-roles k=role,\u2026", "set: who talks on teams and programado (scheduled turns): equipo (team: writes to databases, admin tools) or cliente (customer). chat is always the team; WhatsApp Business, Messenger, demo and widget are customers; personal WhatsApp goes per group (channels wa groups set --role)"],
14273
14309
  ["--extensions name=on|off,\u2026", "set: turn its box's config.yaml extensions on or off (developer, memory\u2026; Ghosty \xB7 Lite and Goose); merged with what's saved. List them: get (full config)"],
14274
14310
  ["--email-any on|off", "set: on = enviar_correo may write to ANY address from customer channels; off (default) = only to the person writing. Owner only"],
14275
- ["--quote k=v,\u2026", "set: config of the house `cotizar` tool \u2014 iva (0-100), iva-incluido=true (catalog prices already include VAT), iva.CATEGORY=16 (VAT for that catalog category; iva.CATEGORY= removes it), solo-factura=true (VAT only when the customer asks for an invoice), vigencia (days), prefix (folio), moneda, empresa, rfc, telefono, correo, direccion, notas, color. Empty value clears it (rfc=). The folio counter is never touched"],
14311
+ ["--quote k=v,\u2026", "set: config of the house `cotizar` tool \u2014 iva (0-100), iva-incluido=true (catalog prices already include VAT), iva.CATEGORY=16 (VAT for that catalog category; iva.CATEGORY= removes it), solo-factura=true (VAT only when the customer asks for an invoice), vigencia (days), prefix (folio), moneda, empresa, rfc, telefono, correo, direccion, notas, color. Empty value clears it (rfc=). The folio counter is never touched \xB7 plantilla=@quote.html (your own PDF template: {{folio}}, {{cliente}}, {{#items}}\u2026{{/items}}), logo=https://\u2026, comercial=NAME, numeros=es (1.234,56) \xB7 catalogo_base=DB:TABLE (the catalog comes from that table of a granted database, editable on the web or by chatting with the agent; catalogo_base= goes back to the agent's own list)"],
14276
14312
  ["--catalog FILE", "set: the house `cotizar` tool's catalog from a CSV (sku,nombre,precio[,unidad,categoria,descripcion]) or JSON list; replaces the previous one. Its `categoria` drives the VAT rules"],
14277
14313
  ["--verbose", "doctor: also list the checks that passed"],
14278
14314
  ["--user EMAIL", "doctor (Ghosty staff): that person's agents \u2014 doctor, latest turns (state, seconds, error, and \xABfetched\xBB: whether their app asked for the thread after the turn ended), plan/bag and boxes (duplicates flagged); logged"],
@@ -14404,6 +14440,7 @@ var HELPS = {
14404
14440
  summary: "Databases an agent can use, and what it may write from customer channels.",
14405
14441
  usage: [
14406
14442
  "ghosty dbs ls <agent-id> [--orphans]",
14443
+ "ghosty dbs create <agent-id> <name> [--description TEXT] [--read] [--no-grant]",
14407
14444
  "ghosty dbs tables <agent-id> <db>",
14408
14445
  'ghosty dbs query <agent-id> <db> "SQL" [--arg V]\u2026 [--write]',
14409
14446
  "ghosty dbs origin <agent-id> <db> [--table T] [--since 2026-10-10] [--limit N]",
@@ -14411,6 +14448,7 @@ var HELPS = {
14411
14448
  "ghosty dbs restore <agent-id> <db> <checkpoint-id> [--yes]",
14412
14449
  "ghosty dbs export <agent-id> <db> [--table T] [--out FILE]",
14413
14450
  "ghosty dbs import <agent-id> <db> --from easybits:<db-id> [--tables a,b] [--append] [--rehost-images t.col,\u2026] [--dry-run] [--yes]",
14451
+ "ghosty dbs import <agent-id> <db> --from csv:FILE --table T [--append] [--dry-run] [--yes]",
14414
14452
  "ghosty dbs rehost <agent-id> <db> --table T --column C [--dry-run]",
14415
14453
  "ghosty dbs photos put <agent-id> <db> --table T --key-column K --dir DIR [--column C] [--dry-run]",
14416
14454
  "ghosty dbs grant <agent-id> <db> [--external-write t1,t2] [--external-rows t:col+col,\u2026]",
@@ -14762,12 +14800,13 @@ HELPS.channels = {
14762
14800
  ["-n, --dry-run", "print the plan (+ starts answering, - stops) and change nothing"],
14763
14801
  ["--yes", "enable / groups enable: skip the confirmation (required without a terminal)"],
14764
14802
  ["--role R", "groups: equipo (the team: writes to databases, admin tools) or cliente (like any customer)"],
14765
- ["--wake mention|all", "groups set/enable: answer every message, or only when it's mentioned or replied to"],
14803
+ ["--wake mention|name|all", "groups set/enable: answer every message (all), only when it's @-mentioned, named or replied to (mention), or only when its name or an alias is written (name: no @, no replies)"],
14804
+ ['--alias "a,b"', 'groups set: other names that wake it in that group besides its own (the nickname people use there); "" clears them'],
14766
14805
  ["--text T / --sender N", "groups inject (staff): a message that got lost (group off, deploy) enters as if N wrote it there, and the agent answers in the group"],
14767
14806
  ["--cached", "groups ls: don't ask WhatsApp for the live list (faster; may miss new groups)"],
14768
14807
  ["--ads-only on|off", "link: only conversations that come from an ad open a card (also alone, to change it on a linked number)"],
14769
14808
  ["--new-only on|off", "link: the agent answers only contacts writing for the first time from now on; earlier contacts stay in the thread for you (also alone)"],
14770
- ["contacts <id> --integration ID", "new contacts only and contacts without the agent: --new-only on|off, --mute PHONE (the agent never answers that number), --allow PHONE (the agent answers that number even if it's a known contact), --unmute PHONE (back to the general rule), --signature \u{1F47E}|off (the agent's messages start with \u201C\u{1F47E}:\u201D so customers can tell it from you), --seed (bring the known contacts from WhatsApp again), --list [--q TEXT] (the phone contacts with their rule; --q searches by name or number)"],
14809
+ ["contacts <id> --integration ID", "new contacts only and contacts without the agent: --new-only on|off, --mute PHONE (the agent never answers that number), --allow PHONE (the agent answers that number even if it's a known contact), --team PHONE (that number is your team's: the agent answers it in team mode, with no sales script, no lead card and no campaigns), --unmute PHONE (back to the general rule), --signature \u{1F47E}|off (the agent's messages start with \u201C\u{1F47E}:\u201D so customers can tell it from you), --seed (bring the known contacts from WhatsApp again), --list [--q TEXT] (the phone contacts with their rule; --q searches by name or number)"],
14771
14810
  ["--board NAME|agent", "link: this number fills its own sales board (name, id or main) instead of the agent's; the agent's CRM tools work that board on this number's turns. agent = back to the agent's board. Also alone, on a linked number"],
14772
14811
  ["--list", "history --dry-run: WHICH conversations (phone, name, first message, messages, from an ad)"],
14773
14812
  ["--only-ads / --phones a,b", "history: import (or list) only the ones from an ad and/or those phones"],
@@ -17591,6 +17630,8 @@ ${bold("Configure an agent")}
17591
17630
  skills ls|get|add|rm <id> [slug] Skills (add from catalog, --file SKILL.md or --dir FOLDER; get lists, --out DIR saves; rm keeps a copy)
17592
17631
  skills templates <id> pdf-doc templates it sees: its own and Ghosty's, and which folder wins
17593
17632
  dbs ls|tables|query|export|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]
17633
+ dbs create <id> <name> New database in the owner's account, granted to this agent [--description TEXT] [--read] [--no-grant]
17634
+ dbs import <id> <db> --from csv:FILE --table T A CSV (with header) into a table; creates it if missing [--append] [--dry-run]
17594
17635
  dbs export <id> <db> Download a database: whole as .sqlite, or one table as CSV [--table T] [--out FILE]
17595
17636
  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]
17596
17637
  mcp get|set <id> MCP servers [--file servers.json] (http headers accept \${turn.token})
@@ -17604,12 +17645,12 @@ ${bold("Configure an agent")}
17604
17645
  channels messenger on|off <id> <page> Answer a page with this agent, or stop (off keeps logging to the board) [--take --dry-run --yes]
17605
17646
  channels mteams ls|connect|zip|on|off|rm <id> [bot] Microsoft Teams bot (Azure Bot in the client's tenant) [--app-id --tenant --secret|GHOSTY_MTEAMS_SECRET --name --out]
17606
17647
  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] [--new-only on|off] [--board NAME|agent] [--dry-run]
17607
- channels whatsapp contacts <id> --integration ID New contacts only (the agent skips the people you already talk to) and contacts without the agent [--new-only on|off] [--mute PHONE] [--allow PHONE] [--unmute PHONE] [--signature \u{1F47E}|off] [--seed] [--list] [--q TEXT]
17648
+ channels whatsapp contacts <id> --integration ID New contacts only (the agent skips the people you already talk to) and contacts without the agent [--new-only on|off] [--mute PHONE] [--allow PHONE] [--team PHONE] [--unmute PHONE] [--signature \u{1F47E}|off] [--seed] [--list] [--q TEXT]
17608
17649
  channels whatsapp history <id> --integration ID [--days 7] Bring its recent cards, messages, orders and files from Formmy (no duplicates; Formmy keeps files 7 days) [--media] [--dry-run [--list]] [--only-ads] [--phones a,b] [--column NAME]
17609
17650
  channels wa import <id> --from easybits:ID | --from-file F | --from-dir DIR --own-number yes|no Move a personal WhatsApp session here, no QR [--dry-run] [--replace] [--no-connect]
17610
17651
  channels wa pair <id> --phone N Pair a personal WhatsApp by code (no QR)
17611
17652
  channels wa status|pause <id> Personal WhatsApp: how it is / pause it (keeps the session)
17612
- channels wa groups ls|enable|disable|set|create <id> [group] Personal WhatsApp groups it answers, and as whom [--role equipo|cliente] [--wake mention|all] [--name "New name"] [--dry-run]
17653
+ channels wa groups ls|enable|disable|set|create <id> [group] Personal WhatsApp groups it answers, and as whom [--role equipo|cliente] [--wake mention|name|all] [--alias "tilin"] [--name "New name"] [--dry-run]
17613
17654
  boards ls|create|assign|move-cards|access|followups|rm A workspace's boards: create (--columns-from), where an agent sends cards, move cards, who sees each one, quote follow-ups
17614
17655
  cards ls <id> Recent cards on its sales board [--q TEXT] [--paused] [--limit 20]
17615
17656
  cards show <id> <card> A card's thread: who wrote, text, attachments and whether gs kept a copy (folio, phone or id)
@@ -17823,6 +17864,8 @@ ${bold("Configurar un agente")}
17823
17864
  skills ls|get|add|rm <id> [slug] Skills (add del cat\xE1logo, --file SKILL.md o --dir CARPETA; get lista, --out DIR guarda; rm deja copia)
17824
17865
  skills templates <id> Plantillas de pdf-doc que ve: las suyas y las de Ghosty, y qu\xE9 carpeta gana
17825
17866
  dbs ls|tables|query|export|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]
17867
+ dbs create <id> <nombre> Base nueva en la cuenta del due\xF1o, concedida a este agente [--description TEXTO] [--read] [--no-grant]
17868
+ dbs import <id> <db> --from csv:ARCHIVO --table T Un CSV (con encabezado) a una tabla; la crea si no existe [--append] [--dry-run]
17826
17869
  dbs export <id> <db> Descarga una base: entera como .sqlite, o una tabla en CSV [--table T] [--out ARCHIVO]
17827
17870
  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]
17828
17871
  mcp get|set <id> Servidores MCP [--file servers.json] (headers http admiten \${turn.token})
@@ -17836,12 +17879,12 @@ ${bold("Configurar un agente")}
17836
17879
  channels messenger on|off <id> <p\xE1gina> Que este agente conteste una p\xE1gina, o que deje de hacerlo (off sigue registrando en el tablero) [--take --dry-run --yes]
17837
17880
  channels mteams ls|connect|zip|on|off|rm <id> [bot] Bot de Microsoft Teams (Azure Bot en el tenant del cliente) [--app-id --tenant --secret|GHOSTY_MTEAMS_SECRET --name --out]
17838
17881
  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] [--new-only on|off] [--board NOMBRE|agent] [--dry-run]
17839
- channels whatsapp contacts <id> --integration ID S\xF3lo contactos nuevos (el agente no le contesta a tu gente de siempre) y contactos sin agente [--new-only on|off] [--mute TEL] [--allow TEL] [--unmute TEL] [--signature \u{1F47E}|off] [--seed] [--list] [--q TEXT]
17882
+ channels whatsapp contacts <id> --integration ID S\xF3lo contactos nuevos (el agente no le contesta a tu gente de siempre) y contactos sin agente [--new-only on|off] [--mute TEL] [--allow TEL] [--team TEL] [--unmute TEL] [--signature \u{1F47E}|off] [--seed] [--list] [--q TEXT]
17840
17883
  channels whatsapp history <id> --integration ID [--days 7] Trae de Formmy sus tarjetas, mensajes, pedidos y archivos recientes (sin duplicar; Formmy guarda los archivos 7 d\xEDas) [--media] [--dry-run [--list]] [--only-ads] [--phones a,b] [--column NOMBRE]
17841
17884
  channels wa import <id> --from easybits:ID | --from-file F | --from-dir DIR --own-number yes|no Mueve aqu\xED una sesi\xF3n de WhatsApp personal, sin QR [--dry-run] [--replace] [--no-connect]
17842
17885
  channels wa pair <id> --phone N Vincula un WhatsApp personal con c\xF3digo (sin QR)
17843
17886
  channels wa status|pause <id> WhatsApp personal: c\xF3mo est\xE1 / pausarlo (conserva la sesi\xF3n)
17844
- channels wa groups ls|enable|disable|set|create <id> [grupo] Grupos de WhatsApp personal que contesta, y como qui\xE9n [--role equipo|cliente] [--wake mention|all] [--name "Nombre nuevo"] [--dry-run]
17887
+ channels wa groups ls|enable|disable|set|create <id> [grupo] Grupos de WhatsApp personal que contesta, y como qui\xE9n [--role equipo|cliente] [--wake mention|name|all] [--alias "tilin"] [--name "Nombre nuevo"] [--dry-run]
17845
17888
  boards ls|create|assign|move-cards|access|followups|rm Los tableros de un espacio: crear (--columns-from), a d\xF3nde manda tarjetas un agente, mover tarjetas, qui\xE9n ve cada uno, seguimiento de cotizaciones
17846
17889
  cards ls <id> Tarjetas recientes de su tablero de ventas [--q TEXTO] [--paused] [--limit 20]
17847
17890
  cards show <id> <tarjeta> El hilo de una tarjeta: qui\xE9n escribi\xF3, texto, adjuntos y si gs guard\xF3 copia (folio, tel\xE9fono o id)
@@ -18075,6 +18118,8 @@ async function main() {
18075
18118
  dir: { type: "string" },
18076
18119
  arg: { type: "string", multiple: true },
18077
18120
  write: { type: "boolean" },
18121
+ read: { type: "boolean" },
18122
+ "no-grant": { type: "boolean" },
18078
18123
  "external-write": { type: "string" },
18079
18124
  "external-rows": { type: "string" },
18080
18125
  "no-deliver": { type: "boolean" },
@@ -18180,6 +18225,7 @@ async function main() {
18180
18225
  handle: { type: "string" },
18181
18226
  factory: { type: "string" },
18182
18227
  wake: { type: "string" },
18228
+ alias: { type: "string" },
18183
18229
  text: { type: "string" },
18184
18230
  sender: { type: "string" },
18185
18231
  "from-file": { type: "string" },
@@ -18236,6 +18282,7 @@ async function main() {
18236
18282
  mute: { type: "string" },
18237
18283
  unmute: { type: "string" },
18238
18284
  allow: { type: "string" },
18285
+ team: { type: "string" },
18239
18286
  signature: { type: "string" },
18240
18287
  seed: { type: "boolean" },
18241
18288
  "partner-tenant": { type: "string" },
@@ -18280,7 +18327,7 @@ async function main() {
18280
18327
  const tokens = splitTokens(pos, v);
18281
18328
  globals.token = tokens.session;
18282
18329
  globals.profile = v.profile;
18283
- if (v.version) return out({ version: "0.101.0" }, () => "0.101.0");
18330
+ if (v.version) return out({ version: "0.104.0" }, () => "0.104.0");
18284
18331
  for (const n of normalizeArgs(pos, v)) if (!globals.json) info(dim(n));
18285
18332
  const context = (await readConfig()).workspace;
18286
18333
  if (!explicitToken()?.startsWith("gat_")) {
@@ -18490,7 +18537,7 @@ async function main() {
18490
18537
  throw unknown(cmd, cmd, COMMANDS, "ghosty --help");
18491
18538
  }
18492
18539
  }
18493
- var notice = updateNotice("0.101.0").catch(() => null);
18540
+ var notice = updateNotice("0.104.0").catch(() => null);
18494
18541
  main().then(
18495
18542
  async () => {
18496
18543
  const n = process.stderr.isTTY ? await notice : null;