@ghostystudio/cli 0.99.0 → 0.101.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 +6 -0
  2. package/dist/index.js +248 -156
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -124,6 +124,7 @@ ghosty turns stats [--since 14d] [--all] · push log --user EMAIL [--since 2d]
124
124
  ghosty support ls|show|reply --all [--status open|waiting_customer|resolved] · support resolve|reopen <id> · support link <id> <issue|PR>
125
125
  ghosty staff ls [staff] [client] [--all] · staff assign|unassign <staff> <client> [--reason] # staff on client accounts (logged)
126
126
  ghosty settings ls|set|unset <KEY> [value] # platform switches (+id/-id edits a list)
127
+ ghosty app ls · app suggest <build> · app min <build> --yes [--platform ios|android|notch] # app version gates: the "update" notice and the minimum build
127
128
  ghosty ads watch [ls] · ads watch run [--dry-run] # campaign watch: paused campaigns, billing, token, numbers without ad leads
128
129
  ghosty agents doctor --user EMAIL [agent] [--turns 8] · usage --images [--plan free] [--by user]
129
130
  ghosty novedades ls|create|set|test|send|rm [--title] [--body] [--image FILE] [--link] [--to] [--publish] [--at]
@@ -156,6 +157,10 @@ Every command has its own help with examples: `ghosty <command> --help` or `ghos
156
157
 
157
158
  Exit codes: `0` ok · `1` API error · `2` usage error · `3` not signed in.
158
159
 
160
+ ### Changes in 0.100.0
161
+
162
+ - `app ls | suggest <build> | min <build> --yes [--platform ios|android|notch]` (staff): the apps' version gates without opening /admin/settings. `suggest` raises the dismissible "update" notice (do it once the build is live in the store); `min` stops older builds and asks for confirmation; `min` can never be above `suggest`. Only that number changes; the emergency flags stay in the panel. Logged as `platform.app-config`.
163
+
159
164
  ### Changes in 0.99.0
160
165
 
161
166
  - `channels whatsapp connect <id>` now starts or resumes the connection and gives a link that works on any screen for 1 hour, in case the phone doesn't finish the Meta sign-in. Running it again never opens a second one and tells you whether it finished. Connecting needs no balance and doesn't turn the agent on.
@@ -292,6 +297,7 @@ Exit codes: `0` ok · `1` API error · `2` usage error · `3` not signed in.
292
297
 
293
298
  ### Changes in 0.57.1 (0.57.0 + the 0.56.1 factory fix)
294
299
 
300
+ - `sites rm <slug> [--yes]`: delete one of your sites (stops being served, files removed, slot freed if pinned; can't be undone).
295
301
  - `sites pin <slug>` / `sites unpin <slug>` / `sites pins [--cancel|--resume]`: «Pinned sites» — $49 USD/yr or $5 USD/mo ($990 / $99 MXN), includes up to 3 sites per pack; a pinned site never pauses and has no banner. `--interval year|month`, `--currency usd|mxn`, `--add-pack`.
296
302
  - `sites ls` shows each site's state (pinned, paused, pauses on…).
297
303
 
package/dist/index.js CHANGED
@@ -593,6 +593,13 @@ var init_server_messages = __esm({
593
593
  ["flags.{} tiene que ser true o false", "flags.{} must be true or false"],
594
594
  ["minBuild tiene que ser un entero \u2265 0", "minBuild must be an integer \u2265 0"],
595
595
  ["suggestBuild tiene que ser un entero \u2265 0", "suggestBuild must be an integer \u2265 0"],
596
+ ["La build tiene que ser un entero \u2265 0", "The build must be an integer \u2265 0"],
597
+ ["La config guardada no es v\xE1lida ({}); arr\xE9glala en /admin/settings", "The saved config is invalid ({}); fix it in /admin/settings"],
598
+ ["field tiene que ser minBuild o suggestBuild", "field must be minBuild or suggestBuild"],
599
+ ["minBuild ({}) no puede pasar a suggestBuild ({}): sube primero suggestBuild", "minBuild ({}) can't be above suggestBuild ({}): raise suggestBuild first"],
600
+ ["platform tiene que ser ios, android o notch", "platform must be ios, android or notch"],
601
+ ["{} tiene que ser un objeto {minBuild, suggestBuild}", "{} must be an object {minBuild, suggestBuild}"],
602
+ ["{}.minBuild y {}.suggestBuild tienen que ser enteros \u2265 0", "{}.minBuild and {}.suggestBuild must be integers \u2265 0"],
596
603
  ["\xAB{}\xBB no parece correo.", `"{}" doesn't look like an email.`],
597
604
  // — Tools del agente (tools/dispatch): los lee el modelo, pero también pueden salir por el CLI
598
605
  ["Pon en tu respuesta: [Nota de voz]({})", "Put in your reply: [Nota de voz]({})"],
@@ -1183,7 +1190,7 @@ async function postLong(path2, body, timeoutMs = 9e5) {
1183
1190
  const req = httpsRequest(`${base}${path2}`, {
1184
1191
  method: "POST",
1185
1192
  timeout: timeoutMs,
1186
- headers: { authorization: `Bearer ${token}`, "user-agent": `ghosty-cli/${"0.99.0"}`, "content-type": "application/json", "content-length": Buffer.byteLength(data) }
1193
+ headers: { authorization: `Bearer ${token}`, "user-agent": `ghosty-cli/${"0.101.0"}`, "content-type": "application/json", "content-length": Buffer.byteLength(data) }
1187
1194
  }, (res) => {
1188
1195
  let buf = "";
1189
1196
  res.on("data", (c) => buf += c);
@@ -1225,7 +1232,7 @@ async function request(path2, opts = {}, retried = false) {
1225
1232
  method: opts.method ?? (opts.body !== void 0 || opts.raw !== void 0 ? "POST" : "GET"),
1226
1233
  headers: {
1227
1234
  authorization: `Bearer ${token}`,
1228
- "user-agent": `ghosty-cli/${"0.99.0"}`,
1235
+ "user-agent": `ghosty-cli/${"0.101.0"}`,
1229
1236
  "accept-language": lang(),
1230
1237
  ...opts.body !== void 0 ? { "content-type": "application/json" } : {},
1231
1238
  ...opts.headers
@@ -1345,9 +1352,9 @@ var init_mteams = __esm({
1345
1352
  }
1346
1353
  });
1347
1354
 
1348
- // ../../../ghosty-studio/node_modules/yaml/dist/nodes/identity.js
1355
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/identity.js
1349
1356
  var require_identity = __commonJS({
1350
- "../../../ghosty-studio/node_modules/yaml/dist/nodes/identity.js"(exports) {
1357
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/identity.js"(exports) {
1351
1358
  "use strict";
1352
1359
  var ALIAS = /* @__PURE__ */ Symbol.for("yaml.alias");
1353
1360
  var DOC = /* @__PURE__ */ Symbol.for("yaml.document");
@@ -1402,9 +1409,9 @@ var require_identity = __commonJS({
1402
1409
  }
1403
1410
  });
1404
1411
 
1405
- // ../../../ghosty-studio/node_modules/yaml/dist/visit.js
1412
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/visit.js
1406
1413
  var require_visit = __commonJS({
1407
- "../../../ghosty-studio/node_modules/yaml/dist/visit.js"(exports) {
1414
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/visit.js"(exports) {
1408
1415
  "use strict";
1409
1416
  var identity = require_identity();
1410
1417
  var BREAK = /* @__PURE__ */ Symbol("break visit");
@@ -1560,9 +1567,9 @@ var require_visit = __commonJS({
1560
1567
  }
1561
1568
  });
1562
1569
 
1563
- // ../../../ghosty-studio/node_modules/yaml/dist/doc/directives.js
1570
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/directives.js
1564
1571
  var require_directives = __commonJS({
1565
- "../../../ghosty-studio/node_modules/yaml/dist/doc/directives.js"(exports) {
1572
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/directives.js"(exports) {
1566
1573
  "use strict";
1567
1574
  var identity = require_identity();
1568
1575
  var visit = require_visit();
@@ -1731,9 +1738,9 @@ var require_directives = __commonJS({
1731
1738
  }
1732
1739
  });
1733
1740
 
1734
- // ../../../ghosty-studio/node_modules/yaml/dist/doc/anchors.js
1741
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/anchors.js
1735
1742
  var require_anchors = __commonJS({
1736
- "../../../ghosty-studio/node_modules/yaml/dist/doc/anchors.js"(exports) {
1743
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/anchors.js"(exports) {
1737
1744
  "use strict";
1738
1745
  var identity = require_identity();
1739
1746
  var visit = require_visit();
@@ -1801,9 +1808,9 @@ var require_anchors = __commonJS({
1801
1808
  }
1802
1809
  });
1803
1810
 
1804
- // ../../../ghosty-studio/node_modules/yaml/dist/doc/applyReviver.js
1811
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/applyReviver.js
1805
1812
  var require_applyReviver = __commonJS({
1806
- "../../../ghosty-studio/node_modules/yaml/dist/doc/applyReviver.js"(exports) {
1813
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/applyReviver.js"(exports) {
1807
1814
  "use strict";
1808
1815
  function applyReviver(reviver, obj, key, val) {
1809
1816
  if (val && typeof val === "object") {
@@ -1851,9 +1858,9 @@ var require_applyReviver = __commonJS({
1851
1858
  }
1852
1859
  });
1853
1860
 
1854
- // ../../../ghosty-studio/node_modules/yaml/dist/nodes/toJS.js
1861
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/toJS.js
1855
1862
  var require_toJS = __commonJS({
1856
- "../../../ghosty-studio/node_modules/yaml/dist/nodes/toJS.js"(exports) {
1863
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/toJS.js"(exports) {
1857
1864
  "use strict";
1858
1865
  var identity = require_identity();
1859
1866
  function toJS(value, arg, ctx) {
@@ -1881,9 +1888,9 @@ var require_toJS = __commonJS({
1881
1888
  }
1882
1889
  });
1883
1890
 
1884
- // ../../../ghosty-studio/node_modules/yaml/dist/nodes/Node.js
1891
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Node.js
1885
1892
  var require_Node = __commonJS({
1886
- "../../../ghosty-studio/node_modules/yaml/dist/nodes/Node.js"(exports) {
1893
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Node.js"(exports) {
1887
1894
  "use strict";
1888
1895
  var applyReviver = require_applyReviver();
1889
1896
  var identity = require_identity();
@@ -1922,9 +1929,9 @@ var require_Node = __commonJS({
1922
1929
  }
1923
1930
  });
1924
1931
 
1925
- // ../../../ghosty-studio/node_modules/yaml/dist/nodes/Alias.js
1932
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Alias.js
1926
1933
  var require_Alias = __commonJS({
1927
- "../../../ghosty-studio/node_modules/yaml/dist/nodes/Alias.js"(exports) {
1934
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Alias.js"(exports) {
1928
1935
  "use strict";
1929
1936
  var anchors = require_anchors();
1930
1937
  var visit = require_visit();
@@ -2040,9 +2047,9 @@ var require_Alias = __commonJS({
2040
2047
  }
2041
2048
  });
2042
2049
 
2043
- // ../../../ghosty-studio/node_modules/yaml/dist/nodes/Scalar.js
2050
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Scalar.js
2044
2051
  var require_Scalar = __commonJS({
2045
- "../../../ghosty-studio/node_modules/yaml/dist/nodes/Scalar.js"(exports) {
2052
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Scalar.js"(exports) {
2046
2053
  "use strict";
2047
2054
  var identity = require_identity();
2048
2055
  var Node = require_Node();
@@ -2070,9 +2077,9 @@ var require_Scalar = __commonJS({
2070
2077
  }
2071
2078
  });
2072
2079
 
2073
- // ../../../ghosty-studio/node_modules/yaml/dist/doc/createNode.js
2080
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/createNode.js
2074
2081
  var require_createNode = __commonJS({
2075
- "../../../ghosty-studio/node_modules/yaml/dist/doc/createNode.js"(exports) {
2082
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/createNode.js"(exports) {
2076
2083
  "use strict";
2077
2084
  var Alias = require_Alias();
2078
2085
  var identity = require_identity();
@@ -2145,9 +2152,9 @@ var require_createNode = __commonJS({
2145
2152
  }
2146
2153
  });
2147
2154
 
2148
- // ../../../ghosty-studio/node_modules/yaml/dist/nodes/Collection.js
2155
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Collection.js
2149
2156
  var require_Collection = __commonJS({
2150
- "../../../ghosty-studio/node_modules/yaml/dist/nodes/Collection.js"(exports) {
2157
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Collection.js"(exports) {
2151
2158
  "use strict";
2152
2159
  var createNode = require_createNode();
2153
2160
  var identity = require_identity();
@@ -2288,9 +2295,9 @@ var require_Collection = __commonJS({
2288
2295
  }
2289
2296
  });
2290
2297
 
2291
- // ../../../ghosty-studio/node_modules/yaml/dist/stringify/stringifyComment.js
2298
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyComment.js
2292
2299
  var require_stringifyComment = __commonJS({
2293
- "../../../ghosty-studio/node_modules/yaml/dist/stringify/stringifyComment.js"(exports) {
2300
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyComment.js"(exports) {
2294
2301
  "use strict";
2295
2302
  var stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, "#");
2296
2303
  function indentComment(comment, indent) {
@@ -2305,9 +2312,9 @@ var require_stringifyComment = __commonJS({
2305
2312
  }
2306
2313
  });
2307
2314
 
2308
- // ../../../ghosty-studio/node_modules/yaml/dist/stringify/foldFlowLines.js
2315
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/foldFlowLines.js
2309
2316
  var require_foldFlowLines = __commonJS({
2310
- "../../../ghosty-studio/node_modules/yaml/dist/stringify/foldFlowLines.js"(exports) {
2317
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/foldFlowLines.js"(exports) {
2311
2318
  "use strict";
2312
2319
  var FOLD_FLOW = "flow";
2313
2320
  var FOLD_BLOCK = "block";
@@ -2441,9 +2448,9 @@ ${indent}${text.slice(fold + 1, end2)}`;
2441
2448
  }
2442
2449
  });
2443
2450
 
2444
- // ../../../ghosty-studio/node_modules/yaml/dist/stringify/stringifyString.js
2451
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyString.js
2445
2452
  var require_stringifyString = __commonJS({
2446
- "../../../ghosty-studio/node_modules/yaml/dist/stringify/stringifyString.js"(exports) {
2453
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyString.js"(exports) {
2447
2454
  "use strict";
2448
2455
  var Scalar = require_Scalar();
2449
2456
  var foldFlowLines = require_foldFlowLines();
@@ -2724,9 +2731,9 @@ ${indent}`);
2724
2731
  }
2725
2732
  });
2726
2733
 
2727
- // ../../../ghosty-studio/node_modules/yaml/dist/stringify/stringify.js
2734
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringify.js
2728
2735
  var require_stringify = __commonJS({
2729
- "../../../ghosty-studio/node_modules/yaml/dist/stringify/stringify.js"(exports) {
2736
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringify.js"(exports) {
2730
2737
  "use strict";
2731
2738
  var anchors = require_anchors();
2732
2739
  var identity = require_identity();
@@ -2848,9 +2855,9 @@ ${ctx.indent}${str}`;
2848
2855
  }
2849
2856
  });
2850
2857
 
2851
- // ../../../ghosty-studio/node_modules/yaml/dist/stringify/stringifyPair.js
2858
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyPair.js
2852
2859
  var require_stringifyPair = __commonJS({
2853
- "../../../ghosty-studio/node_modules/yaml/dist/stringify/stringifyPair.js"(exports) {
2860
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyPair.js"(exports) {
2854
2861
  "use strict";
2855
2862
  var identity = require_identity();
2856
2863
  var Scalar = require_Scalar();
@@ -2981,9 +2988,9 @@ ${ctx.indent}`;
2981
2988
  }
2982
2989
  });
2983
2990
 
2984
- // ../../../ghosty-studio/node_modules/yaml/dist/log.js
2991
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/log.js
2985
2992
  var require_log = __commonJS({
2986
- "../../../ghosty-studio/node_modules/yaml/dist/log.js"(exports) {
2993
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/log.js"(exports) {
2987
2994
  "use strict";
2988
2995
  var node_process = __require("process");
2989
2996
  function debug(logLevel, ...messages) {
@@ -3003,9 +3010,9 @@ var require_log = __commonJS({
3003
3010
  }
3004
3011
  });
3005
3012
 
3006
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/merge.js
3013
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/merge.js
3007
3014
  var require_merge = __commonJS({
3008
- "../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/merge.js"(exports) {
3015
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/merge.js"(exports) {
3009
3016
  "use strict";
3010
3017
  var identity = require_identity();
3011
3018
  var Scalar = require_Scalar();
@@ -3063,9 +3070,9 @@ var require_merge = __commonJS({
3063
3070
  }
3064
3071
  });
3065
3072
 
3066
- // ../../../ghosty-studio/node_modules/yaml/dist/nodes/addPairToJSMap.js
3073
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/addPairToJSMap.js
3067
3074
  var require_addPairToJSMap = __commonJS({
3068
- "../../../ghosty-studio/node_modules/yaml/dist/nodes/addPairToJSMap.js"(exports) {
3075
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/addPairToJSMap.js"(exports) {
3069
3076
  "use strict";
3070
3077
  var log = require_log();
3071
3078
  var merge = require_merge();
@@ -3127,9 +3134,9 @@ var require_addPairToJSMap = __commonJS({
3127
3134
  }
3128
3135
  });
3129
3136
 
3130
- // ../../../ghosty-studio/node_modules/yaml/dist/nodes/Pair.js
3137
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Pair.js
3131
3138
  var require_Pair = __commonJS({
3132
- "../../../ghosty-studio/node_modules/yaml/dist/nodes/Pair.js"(exports) {
3139
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/Pair.js"(exports) {
3133
3140
  "use strict";
3134
3141
  var createNode = require_createNode();
3135
3142
  var stringifyPair = require_stringifyPair();
@@ -3167,9 +3174,9 @@ var require_Pair = __commonJS({
3167
3174
  }
3168
3175
  });
3169
3176
 
3170
- // ../../../ghosty-studio/node_modules/yaml/dist/stringify/stringifyCollection.js
3177
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyCollection.js
3171
3178
  var require_stringifyCollection = __commonJS({
3172
- "../../../ghosty-studio/node_modules/yaml/dist/stringify/stringifyCollection.js"(exports) {
3179
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyCollection.js"(exports) {
3173
3180
  "use strict";
3174
3181
  var identity = require_identity();
3175
3182
  var stringify = require_stringify();
@@ -3318,9 +3325,9 @@ ${indent}${end}`;
3318
3325
  }
3319
3326
  });
3320
3327
 
3321
- // ../../../ghosty-studio/node_modules/yaml/dist/nodes/YAMLMap.js
3328
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/YAMLMap.js
3322
3329
  var require_YAMLMap = __commonJS({
3323
- "../../../ghosty-studio/node_modules/yaml/dist/nodes/YAMLMap.js"(exports) {
3330
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/YAMLMap.js"(exports) {
3324
3331
  "use strict";
3325
3332
  var stringifyCollection = require_stringifyCollection();
3326
3333
  var addPairToJSMap = require_addPairToJSMap();
@@ -3462,9 +3469,9 @@ var require_YAMLMap = __commonJS({
3462
3469
  }
3463
3470
  });
3464
3471
 
3465
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/common/map.js
3472
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/map.js
3466
3473
  var require_map = __commonJS({
3467
- "../../../ghosty-studio/node_modules/yaml/dist/schema/common/map.js"(exports) {
3474
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/map.js"(exports) {
3468
3475
  "use strict";
3469
3476
  var identity = require_identity();
3470
3477
  var YAMLMap = require_YAMLMap();
@@ -3484,9 +3491,9 @@ var require_map = __commonJS({
3484
3491
  }
3485
3492
  });
3486
3493
 
3487
- // ../../../ghosty-studio/node_modules/yaml/dist/nodes/YAMLSeq.js
3494
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/YAMLSeq.js
3488
3495
  var require_YAMLSeq = __commonJS({
3489
- "../../../ghosty-studio/node_modules/yaml/dist/nodes/YAMLSeq.js"(exports) {
3496
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/nodes/YAMLSeq.js"(exports) {
3490
3497
  "use strict";
3491
3498
  var createNode = require_createNode();
3492
3499
  var stringifyCollection = require_stringifyCollection();
@@ -3600,9 +3607,9 @@ var require_YAMLSeq = __commonJS({
3600
3607
  }
3601
3608
  });
3602
3609
 
3603
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/common/seq.js
3610
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/seq.js
3604
3611
  var require_seq = __commonJS({
3605
- "../../../ghosty-studio/node_modules/yaml/dist/schema/common/seq.js"(exports) {
3612
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/seq.js"(exports) {
3606
3613
  "use strict";
3607
3614
  var identity = require_identity();
3608
3615
  var YAMLSeq = require_YAMLSeq();
@@ -3622,9 +3629,9 @@ var require_seq = __commonJS({
3622
3629
  }
3623
3630
  });
3624
3631
 
3625
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/common/string.js
3632
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/string.js
3626
3633
  var require_string = __commonJS({
3627
- "../../../ghosty-studio/node_modules/yaml/dist/schema/common/string.js"(exports) {
3634
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/string.js"(exports) {
3628
3635
  "use strict";
3629
3636
  var stringifyString = require_stringifyString();
3630
3637
  var string = {
@@ -3641,9 +3648,9 @@ var require_string = __commonJS({
3641
3648
  }
3642
3649
  });
3643
3650
 
3644
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/common/null.js
3651
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/null.js
3645
3652
  var require_null = __commonJS({
3646
- "../../../ghosty-studio/node_modules/yaml/dist/schema/common/null.js"(exports) {
3653
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/common/null.js"(exports) {
3647
3654
  "use strict";
3648
3655
  var Scalar = require_Scalar();
3649
3656
  var nullTag = {
@@ -3659,9 +3666,9 @@ var require_null = __commonJS({
3659
3666
  }
3660
3667
  });
3661
3668
 
3662
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/core/bool.js
3669
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/bool.js
3663
3670
  var require_bool = __commonJS({
3664
- "../../../ghosty-studio/node_modules/yaml/dist/schema/core/bool.js"(exports) {
3671
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/bool.js"(exports) {
3665
3672
  "use strict";
3666
3673
  var Scalar = require_Scalar();
3667
3674
  var boolTag = {
@@ -3683,9 +3690,9 @@ var require_bool = __commonJS({
3683
3690
  }
3684
3691
  });
3685
3692
 
3686
- // ../../../ghosty-studio/node_modules/yaml/dist/stringify/stringifyNumber.js
3693
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyNumber.js
3687
3694
  var require_stringifyNumber = __commonJS({
3688
- "../../../ghosty-studio/node_modules/yaml/dist/stringify/stringifyNumber.js"(exports) {
3695
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyNumber.js"(exports) {
3689
3696
  "use strict";
3690
3697
  function stringifyNumber({ format, minFractionDigits, tag, value }) {
3691
3698
  if (typeof value === "bigint")
@@ -3710,9 +3717,9 @@ var require_stringifyNumber = __commonJS({
3710
3717
  }
3711
3718
  });
3712
3719
 
3713
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/core/float.js
3720
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/float.js
3714
3721
  var require_float = __commonJS({
3715
- "../../../ghosty-studio/node_modules/yaml/dist/schema/core/float.js"(exports) {
3722
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/float.js"(exports) {
3716
3723
  "use strict";
3717
3724
  var Scalar = require_Scalar();
3718
3725
  var stringifyNumber = require_stringifyNumber();
@@ -3756,9 +3763,9 @@ var require_float = __commonJS({
3756
3763
  }
3757
3764
  });
3758
3765
 
3759
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/core/int.js
3766
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/int.js
3760
3767
  var require_int = __commonJS({
3761
- "../../../ghosty-studio/node_modules/yaml/dist/schema/core/int.js"(exports) {
3768
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/int.js"(exports) {
3762
3769
  "use strict";
3763
3770
  var stringifyNumber = require_stringifyNumber();
3764
3771
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -3801,9 +3808,9 @@ var require_int = __commonJS({
3801
3808
  }
3802
3809
  });
3803
3810
 
3804
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/core/schema.js
3811
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/schema.js
3805
3812
  var require_schema = __commonJS({
3806
- "../../../ghosty-studio/node_modules/yaml/dist/schema/core/schema.js"(exports) {
3813
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/core/schema.js"(exports) {
3807
3814
  "use strict";
3808
3815
  var map = require_map();
3809
3816
  var _null = require_null();
@@ -3829,9 +3836,9 @@ var require_schema = __commonJS({
3829
3836
  }
3830
3837
  });
3831
3838
 
3832
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/json/schema.js
3839
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/json/schema.js
3833
3840
  var require_schema2 = __commonJS({
3834
- "../../../ghosty-studio/node_modules/yaml/dist/schema/json/schema.js"(exports) {
3841
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/json/schema.js"(exports) {
3835
3842
  "use strict";
3836
3843
  var Scalar = require_Scalar();
3837
3844
  var map = require_map();
@@ -3896,9 +3903,9 @@ var require_schema2 = __commonJS({
3896
3903
  }
3897
3904
  });
3898
3905
 
3899
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/binary.js
3906
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/binary.js
3900
3907
  var require_binary = __commonJS({
3901
- "../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/binary.js"(exports) {
3908
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/binary.js"(exports) {
3902
3909
  "use strict";
3903
3910
  var node_buffer = __require("buffer");
3904
3911
  var Scalar = require_Scalar();
@@ -3962,9 +3969,9 @@ var require_binary = __commonJS({
3962
3969
  }
3963
3970
  });
3964
3971
 
3965
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
3972
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
3966
3973
  var require_pairs = __commonJS({
3967
- "../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/pairs.js"(exports) {
3974
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/pairs.js"(exports) {
3968
3975
  "use strict";
3969
3976
  var identity = require_identity();
3970
3977
  var Pair = require_Pair();
@@ -4040,9 +4047,9 @@ ${cn.comment}` : item.comment;
4040
4047
  }
4041
4048
  });
4042
4049
 
4043
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/omap.js
4050
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/omap.js
4044
4051
  var require_omap = __commonJS({
4045
- "../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports) {
4052
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports) {
4046
4053
  "use strict";
4047
4054
  var identity = require_identity();
4048
4055
  var toJS = require_toJS();
@@ -4118,9 +4125,9 @@ var require_omap = __commonJS({
4118
4125
  }
4119
4126
  });
4120
4127
 
4121
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/bool.js
4128
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/bool.js
4122
4129
  var require_bool2 = __commonJS({
4123
- "../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports) {
4130
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports) {
4124
4131
  "use strict";
4125
4132
  var Scalar = require_Scalar();
4126
4133
  function boolStringify({ value, source }, ctx) {
@@ -4150,9 +4157,9 @@ var require_bool2 = __commonJS({
4150
4157
  }
4151
4158
  });
4152
4159
 
4153
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/float.js
4160
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/float.js
4154
4161
  var require_float2 = __commonJS({
4155
- "../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports) {
4162
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports) {
4156
4163
  "use strict";
4157
4164
  var Scalar = require_Scalar();
4158
4165
  var stringifyNumber = require_stringifyNumber();
@@ -4199,9 +4206,9 @@ var require_float2 = __commonJS({
4199
4206
  }
4200
4207
  });
4201
4208
 
4202
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/int.js
4209
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/int.js
4203
4210
  var require_int2 = __commonJS({
4204
- "../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports) {
4211
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports) {
4205
4212
  "use strict";
4206
4213
  var stringifyNumber = require_stringifyNumber();
4207
4214
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -4278,9 +4285,9 @@ var require_int2 = __commonJS({
4278
4285
  }
4279
4286
  });
4280
4287
 
4281
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/set.js
4288
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/set.js
4282
4289
  var require_set = __commonJS({
4283
- "../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports) {
4290
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports) {
4284
4291
  "use strict";
4285
4292
  var identity = require_identity();
4286
4293
  var Pair = require_Pair();
@@ -4367,9 +4374,9 @@ var require_set = __commonJS({
4367
4374
  }
4368
4375
  });
4369
4376
 
4370
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
4377
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
4371
4378
  var require_timestamp = __commonJS({
4372
- "../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports) {
4379
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports) {
4373
4380
  "use strict";
4374
4381
  var stringifyNumber = require_stringifyNumber();
4375
4382
  function parseSexagesimal(str, asBigInt) {
@@ -4455,9 +4462,9 @@ var require_timestamp = __commonJS({
4455
4462
  }
4456
4463
  });
4457
4464
 
4458
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/schema.js
4465
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/schema.js
4459
4466
  var require_schema3 = __commonJS({
4460
- "../../../ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports) {
4467
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports) {
4461
4468
  "use strict";
4462
4469
  var map = require_map();
4463
4470
  var _null = require_null();
@@ -4499,9 +4506,9 @@ var require_schema3 = __commonJS({
4499
4506
  }
4500
4507
  });
4501
4508
 
4502
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/tags.js
4509
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/tags.js
4503
4510
  var require_tags = __commonJS({
4504
- "../../../ghosty-studio/node_modules/yaml/dist/schema/tags.js"(exports) {
4511
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/tags.js"(exports) {
4505
4512
  "use strict";
4506
4513
  var map = require_map();
4507
4514
  var _null = require_null();
@@ -4593,9 +4600,9 @@ var require_tags = __commonJS({
4593
4600
  }
4594
4601
  });
4595
4602
 
4596
- // ../../../ghosty-studio/node_modules/yaml/dist/schema/Schema.js
4603
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/Schema.js
4597
4604
  var require_Schema = __commonJS({
4598
- "../../../ghosty-studio/node_modules/yaml/dist/schema/Schema.js"(exports) {
4605
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/schema/Schema.js"(exports) {
4599
4606
  "use strict";
4600
4607
  var identity = require_identity();
4601
4608
  var map = require_map();
@@ -4625,9 +4632,9 @@ var require_Schema = __commonJS({
4625
4632
  }
4626
4633
  });
4627
4634
 
4628
- // ../../../ghosty-studio/node_modules/yaml/dist/stringify/stringifyDocument.js
4635
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyDocument.js
4629
4636
  var require_stringifyDocument = __commonJS({
4630
- "../../../ghosty-studio/node_modules/yaml/dist/stringify/stringifyDocument.js"(exports) {
4637
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/stringify/stringifyDocument.js"(exports) {
4631
4638
  "use strict";
4632
4639
  var identity = require_identity();
4633
4640
  var stringify = require_stringify();
@@ -4705,9 +4712,9 @@ var require_stringifyDocument = __commonJS({
4705
4712
  }
4706
4713
  });
4707
4714
 
4708
- // ../../../ghosty-studio/node_modules/yaml/dist/doc/Document.js
4715
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/Document.js
4709
4716
  var require_Document = __commonJS({
4710
- "../../../ghosty-studio/node_modules/yaml/dist/doc/Document.js"(exports) {
4717
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/doc/Document.js"(exports) {
4711
4718
  "use strict";
4712
4719
  var Alias = require_Alias();
4713
4720
  var Collection = require_Collection();
@@ -5014,9 +5021,9 @@ var require_Document = __commonJS({
5014
5021
  }
5015
5022
  });
5016
5023
 
5017
- // ../../../ghosty-studio/node_modules/yaml/dist/errors.js
5024
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/errors.js
5018
5025
  var require_errors = __commonJS({
5019
- "../../../ghosty-studio/node_modules/yaml/dist/errors.js"(exports) {
5026
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/errors.js"(exports) {
5020
5027
  "use strict";
5021
5028
  var YAMLError = class extends Error {
5022
5029
  constructor(name, pos, code, message) {
@@ -5079,9 +5086,9 @@ ${pointer}
5079
5086
  }
5080
5087
  });
5081
5088
 
5082
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-props.js
5089
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-props.js
5083
5090
  var require_resolve_props = __commonJS({
5084
- "../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-props.js"(exports) {
5091
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-props.js"(exports) {
5085
5092
  "use strict";
5086
5093
  function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
5087
5094
  let spaceBefore = false;
@@ -5213,9 +5220,9 @@ var require_resolve_props = __commonJS({
5213
5220
  }
5214
5221
  });
5215
5222
 
5216
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/util-contains-newline.js
5223
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-contains-newline.js
5217
5224
  var require_util_contains_newline = __commonJS({
5218
- "../../../ghosty-studio/node_modules/yaml/dist/compose/util-contains-newline.js"(exports) {
5225
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-contains-newline.js"(exports) {
5219
5226
  "use strict";
5220
5227
  function containsNewline(key) {
5221
5228
  if (!key)
@@ -5255,9 +5262,9 @@ var require_util_contains_newline = __commonJS({
5255
5262
  }
5256
5263
  });
5257
5264
 
5258
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/util-flow-indent-check.js
5265
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-flow-indent-check.js
5259
5266
  var require_util_flow_indent_check = __commonJS({
5260
- "../../../ghosty-studio/node_modules/yaml/dist/compose/util-flow-indent-check.js"(exports) {
5267
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-flow-indent-check.js"(exports) {
5261
5268
  "use strict";
5262
5269
  var utilContainsNewline = require_util_contains_newline();
5263
5270
  function flowIndentCheck(indent, fc, onError) {
@@ -5273,9 +5280,9 @@ var require_util_flow_indent_check = __commonJS({
5273
5280
  }
5274
5281
  });
5275
5282
 
5276
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/util-map-includes.js
5283
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-map-includes.js
5277
5284
  var require_util_map_includes = __commonJS({
5278
- "../../../ghosty-studio/node_modules/yaml/dist/compose/util-map-includes.js"(exports) {
5285
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-map-includes.js"(exports) {
5279
5286
  "use strict";
5280
5287
  var identity = require_identity();
5281
5288
  function mapIncludes(ctx, items, search) {
@@ -5289,9 +5296,9 @@ var require_util_map_includes = __commonJS({
5289
5296
  }
5290
5297
  });
5291
5298
 
5292
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-block-map.js
5299
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-map.js
5293
5300
  var require_resolve_block_map = __commonJS({
5294
- "../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-block-map.js"(exports) {
5301
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-map.js"(exports) {
5295
5302
  "use strict";
5296
5303
  var Pair = require_Pair();
5297
5304
  var YAMLMap = require_YAMLMap();
@@ -5397,9 +5404,9 @@ var require_resolve_block_map = __commonJS({
5397
5404
  }
5398
5405
  });
5399
5406
 
5400
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-block-seq.js
5407
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-seq.js
5401
5408
  var require_resolve_block_seq = __commonJS({
5402
- "../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-block-seq.js"(exports) {
5409
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-seq.js"(exports) {
5403
5410
  "use strict";
5404
5411
  var YAMLSeq = require_YAMLSeq();
5405
5412
  var resolveProps = require_resolve_props();
@@ -5448,9 +5455,9 @@ var require_resolve_block_seq = __commonJS({
5448
5455
  }
5449
5456
  });
5450
5457
 
5451
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-end.js
5458
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-end.js
5452
5459
  var require_resolve_end = __commonJS({
5453
- "../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-end.js"(exports) {
5460
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-end.js"(exports) {
5454
5461
  "use strict";
5455
5462
  function resolveEnd(end, offset, reqSpace, onError) {
5456
5463
  let comment = "";
@@ -5491,9 +5498,9 @@ var require_resolve_end = __commonJS({
5491
5498
  }
5492
5499
  });
5493
5500
 
5494
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-collection.js
5501
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-collection.js
5495
5502
  var require_resolve_flow_collection = __commonJS({
5496
- "../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-collection.js"(exports) {
5503
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-collection.js"(exports) {
5497
5504
  "use strict";
5498
5505
  var identity = require_identity();
5499
5506
  var Pair = require_Pair();
@@ -5685,9 +5692,9 @@ var require_resolve_flow_collection = __commonJS({
5685
5692
  }
5686
5693
  });
5687
5694
 
5688
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/compose-collection.js
5695
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-collection.js
5689
5696
  var require_compose_collection = __commonJS({
5690
- "../../../ghosty-studio/node_modules/yaml/dist/compose/compose-collection.js"(exports) {
5697
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-collection.js"(exports) {
5691
5698
  "use strict";
5692
5699
  var identity = require_identity();
5693
5700
  var Scalar = require_Scalar();
@@ -5750,9 +5757,9 @@ var require_compose_collection = __commonJS({
5750
5757
  }
5751
5758
  });
5752
5759
 
5753
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-block-scalar.js
5760
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-scalar.js
5754
5761
  var require_resolve_block_scalar = __commonJS({
5755
- "../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-block-scalar.js"(exports) {
5762
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-block-scalar.js"(exports) {
5756
5763
  "use strict";
5757
5764
  var Scalar = require_Scalar();
5758
5765
  function resolveBlockScalar(ctx, scalar, onError) {
@@ -5933,9 +5940,9 @@ var require_resolve_block_scalar = __commonJS({
5933
5940
  }
5934
5941
  });
5935
5942
 
5936
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-scalar.js
5943
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-scalar.js
5937
5944
  var require_resolve_flow_scalar = __commonJS({
5938
- "../../../ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-scalar.js"(exports) {
5945
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/resolve-flow-scalar.js"(exports) {
5939
5946
  "use strict";
5940
5947
  var Scalar = require_Scalar();
5941
5948
  var resolveEnd = require_resolve_end();
@@ -6154,9 +6161,9 @@ var require_resolve_flow_scalar = __commonJS({
6154
6161
  }
6155
6162
  });
6156
6163
 
6157
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/compose-scalar.js
6164
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-scalar.js
6158
6165
  var require_compose_scalar = __commonJS({
6159
- "../../../ghosty-studio/node_modules/yaml/dist/compose/compose-scalar.js"(exports) {
6166
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-scalar.js"(exports) {
6160
6167
  "use strict";
6161
6168
  var identity = require_identity();
6162
6169
  var Scalar = require_Scalar();
@@ -6235,9 +6242,9 @@ var require_compose_scalar = __commonJS({
6235
6242
  }
6236
6243
  });
6237
6244
 
6238
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/util-empty-scalar-position.js
6245
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-empty-scalar-position.js
6239
6246
  var require_util_empty_scalar_position = __commonJS({
6240
- "../../../ghosty-studio/node_modules/yaml/dist/compose/util-empty-scalar-position.js"(exports) {
6247
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/util-empty-scalar-position.js"(exports) {
6241
6248
  "use strict";
6242
6249
  function emptyScalarPosition(offset, before, pos) {
6243
6250
  if (before) {
@@ -6265,9 +6272,9 @@ var require_util_empty_scalar_position = __commonJS({
6265
6272
  }
6266
6273
  });
6267
6274
 
6268
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/compose-node.js
6275
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-node.js
6269
6276
  var require_compose_node = __commonJS({
6270
- "../../../ghosty-studio/node_modules/yaml/dist/compose/compose-node.js"(exports) {
6277
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-node.js"(exports) {
6271
6278
  "use strict";
6272
6279
  var Alias = require_Alias();
6273
6280
  var identity = require_identity();
@@ -6371,9 +6378,9 @@ var require_compose_node = __commonJS({
6371
6378
  }
6372
6379
  });
6373
6380
 
6374
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/compose-doc.js
6381
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-doc.js
6375
6382
  var require_compose_doc = __commonJS({
6376
- "../../../ghosty-studio/node_modules/yaml/dist/compose/compose-doc.js"(exports) {
6383
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/compose-doc.js"(exports) {
6377
6384
  "use strict";
6378
6385
  var Document = require_Document();
6379
6386
  var composeNode = require_compose_node();
@@ -6414,9 +6421,9 @@ var require_compose_doc = __commonJS({
6414
6421
  }
6415
6422
  });
6416
6423
 
6417
- // ../../../ghosty-studio/node_modules/yaml/dist/compose/composer.js
6424
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/composer.js
6418
6425
  var require_composer = __commonJS({
6419
- "../../../ghosty-studio/node_modules/yaml/dist/compose/composer.js"(exports) {
6426
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/compose/composer.js"(exports) {
6420
6427
  "use strict";
6421
6428
  var node_process = __require("process");
6422
6429
  var directives = require_directives();
@@ -6622,9 +6629,9 @@ ${end.comment}` : end.comment;
6622
6629
  }
6623
6630
  });
6624
6631
 
6625
- // ../../../ghosty-studio/node_modules/yaml/dist/parse/cst-scalar.js
6632
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-scalar.js
6626
6633
  var require_cst_scalar = __commonJS({
6627
- "../../../ghosty-studio/node_modules/yaml/dist/parse/cst-scalar.js"(exports) {
6634
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-scalar.js"(exports) {
6628
6635
  "use strict";
6629
6636
  var resolveBlockScalar = require_resolve_block_scalar();
6630
6637
  var resolveFlowScalar = require_resolve_flow_scalar();
@@ -6807,9 +6814,9 @@ var require_cst_scalar = __commonJS({
6807
6814
  }
6808
6815
  });
6809
6816
 
6810
- // ../../../ghosty-studio/node_modules/yaml/dist/parse/cst-stringify.js
6817
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-stringify.js
6811
6818
  var require_cst_stringify = __commonJS({
6812
- "../../../ghosty-studio/node_modules/yaml/dist/parse/cst-stringify.js"(exports) {
6819
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-stringify.js"(exports) {
6813
6820
  "use strict";
6814
6821
  var stringify = (cst) => "type" in cst ? stringifyToken(cst) : stringifyItem(cst);
6815
6822
  function stringifyToken(token) {
@@ -6868,9 +6875,9 @@ var require_cst_stringify = __commonJS({
6868
6875
  }
6869
6876
  });
6870
6877
 
6871
- // ../../../ghosty-studio/node_modules/yaml/dist/parse/cst-visit.js
6878
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-visit.js
6872
6879
  var require_cst_visit = __commonJS({
6873
- "../../../ghosty-studio/node_modules/yaml/dist/parse/cst-visit.js"(exports) {
6880
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst-visit.js"(exports) {
6874
6881
  "use strict";
6875
6882
  var BREAK = /* @__PURE__ */ Symbol("break visit");
6876
6883
  var SKIP2 = /* @__PURE__ */ Symbol("skip children");
@@ -6930,9 +6937,9 @@ var require_cst_visit = __commonJS({
6930
6937
  }
6931
6938
  });
6932
6939
 
6933
- // ../../../ghosty-studio/node_modules/yaml/dist/parse/cst.js
6940
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst.js
6934
6941
  var require_cst = __commonJS({
6935
- "../../../ghosty-studio/node_modules/yaml/dist/parse/cst.js"(exports) {
6942
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/cst.js"(exports) {
6936
6943
  "use strict";
6937
6944
  var cstScalar = require_cst_scalar();
6938
6945
  var cstStringify = require_cst_stringify();
@@ -7032,9 +7039,9 @@ var require_cst = __commonJS({
7032
7039
  }
7033
7040
  });
7034
7041
 
7035
- // ../../../ghosty-studio/node_modules/yaml/dist/parse/lexer.js
7042
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/lexer.js
7036
7043
  var require_lexer = __commonJS({
7037
- "../../../ghosty-studio/node_modules/yaml/dist/parse/lexer.js"(exports) {
7044
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/lexer.js"(exports) {
7038
7045
  "use strict";
7039
7046
  var cst = require_cst();
7040
7047
  function isEmpty(ch) {
@@ -7621,9 +7628,9 @@ var require_lexer = __commonJS({
7621
7628
  }
7622
7629
  });
7623
7630
 
7624
- // ../../../ghosty-studio/node_modules/yaml/dist/parse/line-counter.js
7631
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/line-counter.js
7625
7632
  var require_line_counter = __commonJS({
7626
- "../../../ghosty-studio/node_modules/yaml/dist/parse/line-counter.js"(exports) {
7633
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/line-counter.js"(exports) {
7627
7634
  "use strict";
7628
7635
  var LineCounter = class {
7629
7636
  constructor() {
@@ -7652,9 +7659,9 @@ var require_line_counter = __commonJS({
7652
7659
  }
7653
7660
  });
7654
7661
 
7655
- // ../../../ghosty-studio/node_modules/yaml/dist/parse/parser.js
7662
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/parser.js
7656
7663
  var require_parser = __commonJS({
7657
- "../../../ghosty-studio/node_modules/yaml/dist/parse/parser.js"(exports) {
7664
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/parse/parser.js"(exports) {
7658
7665
  "use strict";
7659
7666
  var node_process = __require("process");
7660
7667
  var cst = require_cst();
@@ -8526,9 +8533,9 @@ var require_parser = __commonJS({
8526
8533
  }
8527
8534
  });
8528
8535
 
8529
- // ../../../ghosty-studio/node_modules/yaml/dist/public-api.js
8536
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/public-api.js
8530
8537
  var require_public_api = __commonJS({
8531
- "../../../ghosty-studio/node_modules/yaml/dist/public-api.js"(exports) {
8538
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/public-api.js"(exports) {
8532
8539
  "use strict";
8533
8540
  var composer = require_composer();
8534
8541
  var Document = require_Document();
@@ -8623,9 +8630,9 @@ var require_public_api = __commonJS({
8623
8630
  }
8624
8631
  });
8625
8632
 
8626
- // ../../../ghosty-studio/node_modules/yaml/dist/index.js
8633
+ // ../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/index.js
8627
8634
  var require_dist = __commonJS({
8628
- "../../../ghosty-studio/node_modules/yaml/dist/index.js"(exports) {
8635
+ "../../../../../../../../../Users/bliss/ghosty-studio/node_modules/yaml/dist/index.js"(exports) {
8629
8636
  "use strict";
8630
8637
  var composer = require_composer();
8631
8638
  var Document = require_Document();
@@ -9064,9 +9071,9 @@ ${dim(t(`Next: ghosty use ${r.workspace} \xB7 ghosty partner enable ${r.workspac
9064
9071
  if (v.combo) steps.push({ label: "combo", path: wsPath(slug, "/combo"), body: { combo: v.combo } });
9065
9072
  if (cap !== void 0) steps.push({ label: "model-cap", path: wsPath(slug, "/model-cap"), body: { cap } });
9066
9073
  if (house !== void 0) steps.push({ label: "house-claude", path: wsPath(slug, "/house-claude"), body: { on: house } });
9067
- const show2 = (x) => x === null ? t("plan's", "el del plan") : x === true ? "on" : x === false ? "off" : String(x);
9074
+ const show3 = (x) => x === null ? t("plan's", "el del plan") : x === true ? "on" : x === false ? "off" : String(x);
9068
9075
  const plans = await Promise.all(steps.map(async (st) => ({ ...st, plan: await api(st.path, { method: "POST", body: { ...st.body, dryRun: true } }) })));
9069
- const lines = plans.map((p) => `${p.plan.workspace}: ${p.label} ${show2(p.plan.from)} \u2192 ${show2(p.plan.to)}`);
9076
+ const lines = plans.map((p) => `${p.plan.workspace}: ${p.label} ${show3(p.plan.from)} \u2192 ${show3(p.plan.to)}`);
9070
9077
  const pending = plans.filter((p) => p.plan.changed);
9071
9078
  if (!pending.length) return out(plans.map((p) => p.plan), () => dim(t(`Nothing to do: ${slug} already has that.`, `Nada que hacer: ${slug} ya lo tiene.`)));
9072
9079
  if (v["dry-run"]) return out(plans.map((p) => p.plan), () => `${lines.join("\n")}
@@ -9077,7 +9084,7 @@ ${dim(t("Dry run: nothing changed.", "Simulaci\xF3n: no cambi\xF3 nada."))}`);
9077
9084
  ${t("Change it?", "\xBFCambiarlo?")}`, { yes: v.yes, retry });
9078
9085
  const done = [];
9079
9086
  for (const p of pending) done.push(await api(p.path, { method: "POST", body: p.body }));
9080
- return out(done, () => done.map((r, i) => `${lavender("\u2713")} ${r.workspace}: ${pending[i].label} ${show2(r.to)}`).join("\n"));
9087
+ return out(done, () => done.map((r, i) => `${lavender("\u2713")} ${r.workspace}: ${pending[i].label} ${show3(r.to)}`).join("\n"));
9081
9088
  }
9082
9089
  if (sub === "renew") {
9083
9090
  slug = needSpace(slug ?? context, ex);
@@ -11286,7 +11293,7 @@ async function call(path2, v, init = {}) {
11286
11293
  "x-ghosty-ts": ts,
11287
11294
  "x-ghosty-sig": sig,
11288
11295
  "content-type": "application/json",
11289
- "user-agent": `ghosty-cli/${"0.99.0"}`
11296
+ "user-agent": `ghosty-cli/${"0.101.0"}`
11290
11297
  },
11291
11298
  body: method === "GET" ? void 0 : raw
11292
11299
  });
@@ -14038,6 +14045,7 @@ var HELPS_ES = {
14038
14045
  ["--interval I", "pin: year (default, 2 meses gratis) o month \u2014 el periodo del cobro si hay que pagar"],
14039
14046
  ["--currency C", "pin: usd (default) o mxn \u2014 la moneda del cobro si hay que pagar"],
14040
14047
  ["--add-pack", "pin: ya usas tus lugares \u2014 suma 3 m\xE1s (mismo periodo y moneda de tu suscripci\xF3n) y fija \xE9ste"],
14048
+ ["--yes", "rm: sin confirmaci\xF3n (obligatorio sin terminal)"],
14041
14049
  ["--cancel / --resume", "pins: cancela al final del periodo (los sitios vuelven a Gratis con aviso), o lo deshace"],
14042
14050
  ["--days N", "search: la ventana de Search Console en d\xEDas (default 28; Google reporta con 2\u20133 d\xEDas de retraso)"],
14043
14051
  ["--since S / --kind K / --req-id ID", "errors: ventana (30m, 6h, 7d; default 24h), un tipo de evento, o todo lo de una petici\xF3n (su x-request-id)"],
@@ -14113,6 +14121,14 @@ var HELPS_ES = {
14113
14121
  "unset borra la fila: vuelve a mandar el env o el default del c\xF3digo."
14114
14122
  ]
14115
14123
  },
14124
+ app: {
14125
+ summary: "Compuertas de versi\xF3n de las apps (staff de Ghosty): suggestBuild le ense\xF1a a las builds menores un aviso de \xABactualiza\xBB que se puede cerrar; minBuild deja sin entrar a las builds menores hasta que actualicen. iOS por default; Android y Notch con --platform. Cada cambio queda en la bit\xE1cora; los flags de emergencia siguen en /admin/settings.",
14126
+ flags: [["--platform P", "ios (default), android o notch"], ["--yes", "min: sin confirmaci\xF3n (obligatorio sin terminal)"]],
14127
+ notes: [
14128
+ "Sube suggestBuild s\xF3lo cuando esa build ya est\xE1 en la tienda: el aviso manda a la gente all\xE1.",
14129
+ "minBuild nunca puede pasar de suggestBuild; sube primero el aviso."
14130
+ ]
14131
+ },
14116
14132
  audit: {
14117
14133
  summary: "La bit\xE1cora (AuditEvent): qui\xE9n entr\xF3 \xABcomo\xBB qui\xE9n, qu\xE9 cambi\xF3 en la ficha y en los canales de un agente, pausas y respuestas desde el CLI, traspasos, staff que entra o sale. El staff de Ghosty ve todo; cualquier otra cuenta, s\xF3lo lo de sus espacios y agentes.",
14118
14134
  flags: [
@@ -15068,6 +15084,7 @@ HELPS.sites = {
15068
15084
  "ghosty sites agent <slug> [create] [--agent id] [--model m] [--prompt p]",
15069
15085
  "ghosty sites pin <slug|id> [--interval year|month] [--currency usd|mxn] [--add-pack]",
15070
15086
  "ghosty sites unpin <slug|id>",
15087
+ "ghosty sites rm <slug|id> [--yes]",
15071
15088
  "ghosty sites pins [--cancel | --resume]",
15072
15089
  "ghosty sites search <slug|id> [--days 28]",
15073
15090
  "ghosty sites publish <file.html|folder> [--title T] [--slug S] [--site <slug|id>]",
@@ -15078,6 +15095,7 @@ HELPS.sites = {
15078
15095
  ["--interval I", "pin: year (default, 2 months free) or month \u2014 the billing period if you need to pay"],
15079
15096
  ["--currency C", "pin: usd (default) or mxn \u2014 the currency charged if you need to pay"],
15080
15097
  ["--add-pack", "pin: you already use your slots \u2014 add 3 more (same period and currency as your subscription) and pin this one"],
15098
+ ["--yes", "rm: skip the confirmation (required without a terminal)"],
15081
15099
  ["--cancel / --resume", "pins: cancel at period end (sites go back to Free with notice), or undo it"],
15082
15100
  ["--days N", "search: Search Console window in days (default 28; Google reports 2\u20133 days late)"],
15083
15101
  ["--since S / --kind K / --req-id ID", "errors: window (30m, 6h, 7d; default 24h), one event kind, or everything from one request (its x-request-id)"],
@@ -15086,7 +15104,7 @@ HELPS.sites = {
15086
15104
  ["--slug S", "publish: the slug for a NEW site (a-z, 0-9 and hyphens, 3\u201360, not reserved)"],
15087
15105
  ["--site X", "publish: update that house site (slug, id or URL) instead of creating one"]
15088
15106
  ],
15089
- examples: ["ghosty sites show agenda-perdix", "ghosty sites env set agenda-perdix STRIPE_SECRET_KEY=sk_live_\u2026", "ghosty sites cron pause agenda-perdix cm123", "ghosty sites agent agenda-perdix create", "ghosty sites agent agenda-perdix --model claude-sonnet-5-5", "ghosty sites pin tacos-don-pepe", "ghosty sites pin tacos-don-pepe --interval month --currency mxn", "ghosty sites unpin landing-vieja", "ghosty sites pins --cancel", "ghosty sites publish ./landing/ --site gelatina-de-sandia"],
15107
+ examples: ["ghosty sites show agenda-perdix", "ghosty sites env set agenda-perdix STRIPE_SECRET_KEY=sk_live_\u2026", "ghosty sites cron pause agenda-perdix cm123", "ghosty sites agent agenda-perdix create", "ghosty sites agent agenda-perdix --model claude-sonnet-5-5", "ghosty sites pin tacos-don-pepe", "ghosty sites pin tacos-don-pepe --interval month --currency mxn", "ghosty sites unpin landing-vieja", "ghosty sites rm landing-de-prueba --yes", "ghosty sites pins --cancel", "ghosty sites publish ./landing/ --site gelatina-de-sandia"],
15090
15108
  notes: [
15091
15109
  "pin: with a free slot it pins right away; without a subscription it prints a card-payment link (the site is pinned when you pay); with every slot used it answers needs_pack (repeat with --add-pack).",
15092
15110
  "unpin, cancelling, or a failed payment never pause a site at once: it goes back to the Free rule (30 days since its last change, at least 8 from today, notice 7 days before).",
@@ -15140,6 +15158,22 @@ HELPS.settings = {
15140
15158
  ],
15141
15159
  learn: `${REF}#ajustes`
15142
15160
  };
15161
+ HELPS.app = {
15162
+ summary: 'App version gates (Ghosty staff): suggestBuild shows a dismissible "update" notice to older builds; minBuild stops older builds until they update. iOS by default; Android and Notch with --platform. Every change is logged; the emergency flags stay in /admin/settings.',
15163
+ usage: ["ghosty app ls", "ghosty app suggest <build> [--platform ios|android|notch]", "ghosty app min <build> [--platform ios|android|notch] --yes"],
15164
+ flags: [["--platform P", "ios (default), android or notch"], ["--yes", "min: skip the confirmation (required without a terminal)"]],
15165
+ examples: [
15166
+ "ghosty app ls",
15167
+ "ghosty app suggest 106",
15168
+ "ghosty app suggest 14 --platform android",
15169
+ "ghosty app min 95 --yes"
15170
+ ],
15171
+ notes: [
15172
+ "Raise suggestBuild only once that build is live in the store: the notice sends people there.",
15173
+ "minBuild can never be above suggestBuild; raise the notice first."
15174
+ ],
15175
+ learn: `${REF}#versiones-de-las-apps`
15176
+ };
15143
15177
  HELPS.audit = {
15144
15178
  summary: "The audit log (AuditEvent): who logged in \xABas\xBB whom, what changed on an agent's page and channels, pauses and replies from the CLI, transfers, staff in and out. Ghosty staff see everything; anyone else, only the events of their own workspaces and agents.",
15145
15179
  usage: ["ghosty audit ls [--workspace SLUG] [--agent ID] [--actor EMAIL] [--action A] [--since 7d] [--limit 50] [--full]"],
@@ -15738,10 +15772,10 @@ async function demosCmd(sub, a1, rest, v) {
15738
15772
 
15739
15773
  // src/commands/sites.ts
15740
15774
  init_api();
15741
- init_i18n();
15742
- init_util();
15743
15775
  import { readdir as readdir5, readFile as readFile13, stat as stat3 } from "node:fs/promises";
15744
15776
  import { basename as basename4, join as join11, relative as relative2, sep } from "node:path";
15777
+ init_i18n();
15778
+ init_util();
15745
15779
  var TEXT_EXT = /* @__PURE__ */ new Set(["html", "htm", "css", "js", "mjs", "json", "txt", "xml", "svg", "webmanifest", "md"]);
15746
15780
  var SKIP = /* @__PURE__ */ new Set(["node_modules", ".git", ".DS_Store"]);
15747
15781
  async function collectSiteFiles(target) {
@@ -15781,7 +15815,7 @@ var packPrice = (c, i, lang2) => `$${(PACK[i]?.[c] ?? 0).toLocaleString("en-US")
15781
15815
  var kb = (n) => n ? `${Math.max(1, Math.round(n / 1024))} KB` : "";
15782
15816
  var day = (iso) => iso ? iso.slice(0, 10) : "";
15783
15817
  async function sitesCmd(sub, a1, a2, v, a3, rest = []) {
15784
- const ex = "ghosty sites ls [--house] \xB7 show <slug|id> \xB7 env|cron|files \u2026 \xB7 errors <slug> [--since 24h] [--kind K] [--req-id ID] \xB7 agent <slug> [--agent id] [--model m] \xB7 pin|unpin <slug|id> \xB7 pins [--cancel|--resume] \xB7 search <slug|id> [--days 28] \xB7 domain [ls|add|verify|rm] <slug> [domain] \xB7 publish <file.html|folder> [--title T] [--slug S] [--site <slug|id>] \xB7 slug <slug|id> <new-slug>";
15818
+ const ex = "ghosty sites ls [--house] \xB7 show <slug|id> \xB7 env|cron|files \u2026 \xB7 errors <slug> [--since 24h] [--kind K] [--req-id ID] \xB7 agent <slug> [--agent id] [--model m] \xB7 pin|unpin|rm <slug|id> \xB7 pins [--cancel|--resume] \xB7 search <slug|id> [--days 28] \xB7 domain [ls|add|verify|rm] <slug> [domain] \xB7 publish <file.html|folder> [--title T] [--slug S] [--site <slug|id>] \xB7 slug <slug|id> <new-slug>";
15785
15819
  switch (sub ?? "ls") {
15786
15820
  case "ls":
15787
15821
  case "list": {
@@ -15810,6 +15844,15 @@ ${dim(t("or release one: ghosty sites unpin <slug>", "o suelta uno: ghosty sites
15810
15844
  return out(r, () => `${lavender("\u2713")} ${t("Released", "Suelto")} ${bold(r.url)}
15811
15845
  ${dim(r.expiresAt ? t(`Free rule: pauses ${day(r.expiresAt)} unless it changes (notice 7 days before).`, `Regla Gratis: se pausa el ${day(r.expiresAt)} si no cambia (aviso 7 d\xEDas antes).`) : t("Your plan keeps it published.", "Tu plan lo mantiene publicado."))}`);
15812
15846
  }
15847
+ case "rm":
15848
+ case "delete": {
15849
+ if (!a1) throw usage(t("Missing the site (slug, id or URL).", "Falta el sitio (slug, id o URL)."), "ghosty sites rm <slug|id> [--yes]");
15850
+ const retry = `ghosty sites rm ${a1}`;
15851
+ requireYesIfHeadless(v.yes, retry);
15852
+ await confirm(t(`Delete ${a1}? It stops being served and its files go away. This can't be undone.`, `\xBFBorrar ${a1}? Deja de servirse y sus archivos se van. No se puede deshacer.`), { yes: v.yes, retry });
15853
+ const r = await api(`/api/v2/sites/${encodeURIComponent(a1)}`, { method: "DELETE" });
15854
+ return out(r, () => `${lavender("\u2713")} ${t("Deleted", "Borrado")} ${bold(a1)}`);
15855
+ }
15813
15856
  case "pins": {
15814
15857
  if (v.cancel || v.resume) {
15815
15858
  const r2 = await api("/api/v2/sites/pins", { method: "POST", body: { cancel: Boolean(v.cancel) } });
@@ -17026,6 +17069,48 @@ async function settingsCmd(sub, key, value) {
17026
17069
  throw usage(t(`Unknown settings subcommand: ${sub}.`, `Subcomando de settings desconocido: ${sub}.`), "ghosty settings ls|set|unset <KEY> [value]");
17027
17070
  }
17028
17071
 
17072
+ // src/commands/app.ts
17073
+ init_api();
17074
+ init_util();
17075
+ init_i18n();
17076
+ var PLATFORMS = ["ios", "android", "notch"];
17077
+ var gateOf = (c, p) => p === "ios" ? { minBuild: c.minBuild, suggestBuild: c.suggestBuild } : c[p] ?? { minBuild: 0, suggestBuild: 0 };
17078
+ var show2 = (c) => {
17079
+ const rows = PLATFORMS.map((p) => ({ platform: p, minBuild: gateOf(c, p).minBuild, suggestBuild: gateOf(c, p).suggestBuild }));
17080
+ const flags = Object.entries(c.flags ?? {}).map(([k, v]) => `${k}=${v}`).join(" ");
17081
+ return `${table(rows, ["platform", "minBuild", "suggestBuild"])}
17082
+ ${dim(t("flags (edit them in /admin/settings): ", "flags (se cambian en /admin/settings): "))}${flags || dim(t("(none)", "(ninguno)"))}`;
17083
+ };
17084
+ async function appCmd(sub, build, v) {
17085
+ if (!sub || sub === "ls" || sub === "list") {
17086
+ const r = await api("/api/v2/staff/app-config");
17087
+ return out(r, () => show2(r.config));
17088
+ }
17089
+ if (sub === "suggest" || sub === "min") {
17090
+ const line2 = `ghosty app ${sub} <build> [--platform ios|android|notch]${sub === "min" ? " --yes" : ""}`;
17091
+ const value = Number(build);
17092
+ if (!build || !Number.isInteger(value) || value < 0) throw usage(t("Missing the build number.", "Falta el n\xFAmero de build."), line2);
17093
+ const platform = v.platform ?? "ios";
17094
+ if (!PLATFORMS.includes(platform)) throw usage(t("--platform is ios, android or notch.", "--platform es ios, android o notch."), line2);
17095
+ const field = sub === "suggest" ? "suggestBuild" : "minBuild";
17096
+ if (sub === "min") {
17097
+ const retry = `ghosty app min ${value} --platform ${platform}`;
17098
+ requireYesIfHeadless(v.yes, retry);
17099
+ await confirm(
17100
+ t(
17101
+ `Builds below ${value} on ${platform} will stop working and must update. Continue?`,
17102
+ `Las builds menores a ${value} en ${platform} dejar\xE1n de funcionar y tendr\xE1n que actualizar. \xBFSeguir?`
17103
+ ),
17104
+ { yes: v.yes, retry }
17105
+ );
17106
+ }
17107
+ const r = await api("/api/v2/staff/app-config", { method: "POST", body: { platform, field, value } });
17108
+ const lower = r.to < r.from ? ` ${dim(t("(lower than before)", "(menor que antes)"))}` : "";
17109
+ return out(r, () => `${lavender("\u2713")} ${r.platform} ${r.field}: ${r.from} \u2192 ${r.to}${lower}`);
17110
+ }
17111
+ throw usage(t(`Unknown app subcommand: ${sub}.`, `Subcomando de app desconocido: ${sub}.`), "ghosty app ls|suggest|min <build> [--platform ios|android|notch]");
17112
+ }
17113
+
17029
17114
  // src/commands/coupons.ts
17030
17115
  init_api();
17031
17116
  init_i18n();
@@ -17436,6 +17521,7 @@ ${bold("Workspaces")} ${dim("(changing them: Ghosty staff)")}
17436
17521
  staff ls [staff-email] [client-email] Ghosty staff assigned to client accounts (staff) [--all: also revoked]
17437
17522
  staff assign|unassign <staff> <client> Staff sees and runs that account's agents, documents, databases and boards as themselves (no keys, billing or transfers; logged) [--reason]
17438
17523
  settings ls|set|unset <KEY> [value] Platform switches (staff): who answers /c without an account, native subagents\u2026 [+id/-id edits a list]
17524
+ app ls|suggest|min <build> App version gates (staff): the "update" notice and the minimum build [--platform ios|android|notch] [--yes]
17439
17525
  coupons ls|create|set <CODE> Redeemable coupons (staff): balance in cost pesos and an optional lent plan until a date; created as a draft [--credit 50] [--plan pro|power|max --until 2026-11-13] [--max 100] [--eligibility hackathon:<event>: accepted people only] [--agent ID: each account gets its own copy] [--from DATE: the lent plan starts then] [--redeem-by DATE: last day to redeem] [--convert-promo STRIPE_CODE: offered when the plan ends] [--on|--off] [--note]
17440
17526
  coupons show <CODE> Who redeemed it: plan window (pending/active/ended) and who converted to a paid plan (staff)
17441
17527
  coupons redeem <CODE> Redeem a coupon for your account (also /canjear?codigo=CODE)
@@ -17546,6 +17632,7 @@ ${bold("Sites")} ${dim("(sites your agents publish at <slug>.ghosty.page)")}
17546
17632
  sites ls Sites your agents published (live and paused) [--house: Ghosty's own demos and landings (staff)]
17547
17633
  sites pin <slug|id> Pin it: never pauses, no banner ($49 USD/yr or $5/mo, includes up to 3 sites) [--interval year|month] [--currency usd|mxn] [--add-pack: 3 more]
17548
17634
  sites unpin <slug|id> Release its slot (back to the Free rule: 30 days + notice)
17635
+ sites rm <slug|id> Delete one of your sites (stops being served; can't be undone) [--yes]
17549
17636
  sites search <slug|id> How Google finds it: clicks, impressions, searches, indexed or not [--days 28]
17550
17637
  sites domain add|verify|rm <slug> <dom> Custom domain for a site or app (DNS record \u2192 verify \u2192 HTTPS) [ls <slug>: list]
17551
17638
  sites show <slug|id> Everything about a site or app: status, domains, variable names, data, files, tasks
@@ -17666,6 +17753,7 @@ ${bold("Espacios")} ${dim("(cambiarlos: staff de Ghosty)")}
17666
17753
  staff ls [correo-staff] [correo-cliente] Staff de Ghosty asignado a cuentas cliente (staff) [--all: tambi\xE9n revocadas]
17667
17754
  staff assign|unassign <staff> <cliente> El staff ve y opera agentes, documentos, bases y tableros de esa cuenta como s\xED mismo (sin llaves, cobro ni traspasos; queda en bit\xE1cora) [--reason]
17668
17755
  settings ls|set|unset <CLAVE> [valor] Perillas de la plataforma (staff): qui\xE9n atiende /c sin cuenta, subagentes nativos\u2026 [+id/-id edita una lista]
17756
+ app ls|suggest|min <build> Compuertas de versi\xF3n de las apps (staff): el aviso de \xABactualiza\xBB y la build m\xEDnima [--platform ios|android|notch] [--yes]
17669
17757
  coupons ls|create|set <C\xD3DIGO> Cupones canjeables (staff): saldo en pesos de costo y un plan prestado opcional hasta una fecha; nacen como borrador [--credit 50] [--plan pro|power|max --until 2026-11-13] [--max 100] [--eligibility hackathon:<evento>: s\xF3lo aceptados] [--agent ID: cada cuenta recibe su copia] [--from FECHA: el plan prestado arranca ah\xED] [--redeem-by FECHA: \xFAltimo d\xEDa para canjear] [--convert-promo C\xD3DIGO_STRIPE: se ofrece al terminar el plan] [--on|--off] [--note]
17670
17758
  coupons show <C\xD3DIGO> Qui\xE9n lo canje\xF3: ventana del plan (por empezar/activo/termin\xF3) y qui\xE9n ya paga un plan (staff)
17671
17759
  coupons redeem <C\xD3DIGO> Canjea un cup\xF3n para tu cuenta (tambi\xE9n /canjear?codigo=C\xD3DIGO)
@@ -17776,6 +17864,7 @@ ${bold("Sitios")} ${dim("(los sitios que publican tus agentes en <slug>.ghosty.
17776
17864
  sites ls Sitios que publicaron tus agentes (vivos y en pausa) [--house: demos y landings de Ghosty (staff)]
17777
17865
  sites pin <slug|id> F\xEDjalo: no se pausa y va sin franja ($49 USD al a\xF1o o $5 al mes, incluye hasta 3 sitios) [--interval year|month] [--currency usd|mxn] [--add-pack: 3 m\xE1s]
17778
17866
  sites unpin <slug|id> Suelta su lugar (vuelve a la regla Gratis: 30 d\xEDas + aviso)
17867
+ sites rm <slug|id> Borra uno de tus sitios (deja de servirse; no se deshace) [--yes]
17779
17868
  sites pins Tu suscripci\xF3n de Sitios fijos y sus lugares [--cancel | --resume]
17780
17869
  sites domain add|verify|rm <slug> <dom> Dominio propio para un sitio o app (registro DNS \u2192 verificar \u2192 HTTPS) [ls <slug>: lista]
17781
17870
  sites show <slug|id> Todo de un sitio o app: estado, dominios, nombres de variables, datos, archivos, tareas
@@ -18135,6 +18224,7 @@ async function main() {
18135
18224
  user: { type: "string" },
18136
18225
  why: { type: "boolean" },
18137
18226
  surface: { type: "string" },
18227
+ platform: { type: "string" },
18138
18228
  image: { type: "string" },
18139
18229
  link: { type: "string" },
18140
18230
  button: { type: "string" },
@@ -18190,7 +18280,7 @@ async function main() {
18190
18280
  const tokens = splitTokens(pos, v);
18191
18281
  globals.token = tokens.session;
18192
18282
  globals.profile = v.profile;
18193
- if (v.version) return out({ version: "0.99.0" }, () => "0.99.0");
18283
+ if (v.version) return out({ version: "0.101.0" }, () => "0.101.0");
18194
18284
  for (const n of normalizeArgs(pos, v)) if (!globals.json) info(dim(n));
18195
18285
  const context = (await readConfig()).workspace;
18196
18286
  if (!explicitToken()?.startsWith("gat_")) {
@@ -18366,6 +18456,8 @@ async function main() {
18366
18456
  return staffCmd(sub, a1, a2, v);
18367
18457
  case "settings":
18368
18458
  return settingsCmd(sub, a1, a2);
18459
+ case "app":
18460
+ return appCmd(sub, a1, v);
18369
18461
  case "coupons":
18370
18462
  return couponsCmd(sub, a1, v);
18371
18463
  case "ads":
@@ -18398,7 +18490,7 @@ async function main() {
18398
18490
  throw unknown(cmd, cmd, COMMANDS, "ghosty --help");
18399
18491
  }
18400
18492
  }
18401
- var notice = updateNotice("0.99.0").catch(() => null);
18493
+ var notice = updateNotice("0.101.0").catch(() => null);
18402
18494
  main().then(
18403
18495
  async () => {
18404
18496
  const n = process.stderr.isTTY ? await notice : null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ghostystudio/cli",
3
- "version": "0.99.0",
3
+ "version": "0.101.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": {