@ghostystudio/cli 0.101.0 → 0.103.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.
- package/README.md +9 -3
- package/dist/index.js +211 -166
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -64,7 +64,7 @@ ghosty files ls|get|put|rm <id> [path] [--file LOCAL] [--out LOCAL]
|
|
|
64
64
|
ghosty skills ls|get|add|rm <id> [slug] [--file SKILL.md | --dir FOLDER] [--out DIR] # get without --out only lists
|
|
65
65
|
ghosty skills enable|disable <id> <slug> # turn one of its skills (or one of Ghosty's) on or off
|
|
66
66
|
ghosty skills templates <id> # pdf-doc templates: its own and Ghosty's, and which folder wins
|
|
67
|
-
ghosty dbs ls|tables|query|export|import|grant|revoke <id> [db] [--write] [--arg V]… [--external-write t1,t2] [--external-rows t:col+col] [--from easybits:ID --tables a,b --append --dry-run]
|
|
67
|
+
ghosty dbs ls|create|tables|query|export|import|grant|revoke <id> [db] [--write] [--arg V]… [--external-write t1,t2] [--external-rows t:col+col] [--from easybits:ID --tables a,b --append --dry-run]
|
|
68
68
|
ghosty turns ls <id> [--errors | --status running|done|stopped|error] [--since 1h] [--limit N]
|
|
69
69
|
ghosty turns ls --workspace SLUG --quota-hits [--days 14] # messages that got no turn because the balance ran out
|
|
70
70
|
ghosty turns show <id> [turn-id|last] # what came in, what it answered, where the time went [--full]
|
|
@@ -79,7 +79,7 @@ ghosty channels messenger on|off <id> <page> [--take] # this agent answers the
|
|
|
79
79
|
ghosty channels mteams connect <id> --app-id <guid> --tenant <guid> # Microsoft Teams bot (secret in GHOSTY_MTEAMS_SECRET); ls shows endpoint and last problem
|
|
80
80
|
ghosty channels wa import <id> --from-file F | --from-dir DIR --own-number yes|no [--dry-run] # personal WhatsApp session, no QR
|
|
81
81
|
ghosty channels wa pair|status|pause <id> [--phone N]
|
|
82
|
-
ghosty channels wa groups ls|enable|disable|set|create <id> [group] [--role equipo|cliente] [--wake mention|all] [--dry-run] # personal WhatsApp groups
|
|
82
|
+
ghosty channels wa groups ls|enable|disable|set|create <id> [group] [--role equipo|cliente] [--wake mention|name|all] [--dry-run] # personal WhatsApp groups
|
|
83
83
|
ghosty boards ls|create|assign|move-cards|access|rm <workspace|agent> … [--columns-from main] [--from A --to B --integration X --dry-run] [--add|--remove EMAIL --until 14d]
|
|
84
84
|
ghosty spaces members ls|add|rm <workspace> [email] [--role member|admin] [--until 2026-10-28|14d]
|
|
85
85
|
ghosty access why <email> <agent-id> | --workspace W --board B
|
|
@@ -157,6 +157,12 @@ Every command has its own help with examples: `ghosty <command> --help` or `ghos
|
|
|
157
157
|
|
|
158
158
|
Exit codes: `0` ok · `1` API error · `2` usage error · `3` not signed in.
|
|
159
159
|
|
|
160
|
+
### Changes in 0.103.0
|
|
161
|
+
|
|
162
|
+
- `agents set --quote catalogo_base=DB:TABLE`: the house `cotizar` tool reads its catalog from a table of a granted database, so the owner edits prices on the web, by CSV or by chatting with the agent (`catalogo_base=` goes back to the `--catalog` list, which stays as the fallback).
|
|
163
|
+
- New `dbs create <id> <name> [--description] [--read] [--no-grant]` and `dbs import <id> <db> --from csv:FILE --table T [--append] [--dry-run]`.
|
|
164
|
+
- `agents set --quote plantilla=@quote.html,logo=…,comercial=…,numeros=es`: your own PDF template for quotes.
|
|
165
|
+
|
|
160
166
|
### Changes in 0.100.0
|
|
161
167
|
|
|
162
168
|
- `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`.
|
|
@@ -408,7 +414,7 @@ Exit codes: `0` ok · `1` API error · `2` usage error · `3` not signed in.
|
|
|
408
414
|
- `agents ls --user --app` also lists their phones with the app build. `novedades ls` shows how many FCM delivered and rejected; announcement pushes show up in `push log`.
|
|
409
415
|
- `novedades create|set --min-version N`: if the app is older, its button reads «Actualizar». `turns stats` breaks down by channel (Teams and A2A included).
|
|
410
416
|
- `schedule add --conversation wa:<jid>` answers in that WhatsApp group/chat. `channels wa pair` warns that in Mexico `52…` and `521…` are different accounts.
|
|
411
|
-
- `channels wa groups set <agent> <group> --wake mention|all`: in `mention` (default when you turn a group on) the agent only answers when @-mentioned, named or replied to; the rest reaches it as context. `ls` shows the column.
|
|
417
|
+
- `channels wa groups set <agent> <group> --wake mention|name|all`: in `mention` (default when you turn a group on) the agent only answers when @-mentioned, named or replied to; the rest reaches it as context. `ls` shows the column. `--alias "tilin"` adds other names that wake it in that group (comma-separated, `""` clears).
|
|
412
418
|
- `channels wa groups enable|disable` now work (they were in the help but got rejected).
|
|
413
419
|
|
|
414
420
|
### Changes in 0.31.0
|
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.
|
|
1193
|
+
headers: { authorization: `Bearer ${token}`, "user-agent": `ghosty-cli/${"0.103.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.
|
|
1235
|
+
"user-agent": `ghosty-cli/${"0.103.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
|
-
//
|
|
1355
|
+
// ../../node_modules/yaml/dist/nodes/identity.js
|
|
1356
1356
|
var require_identity = __commonJS({
|
|
1357
|
-
"
|
|
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
|
-
//
|
|
1412
|
+
// ../../node_modules/yaml/dist/visit.js
|
|
1413
1413
|
var require_visit = __commonJS({
|
|
1414
|
-
"
|
|
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
|
-
//
|
|
1570
|
+
// ../../node_modules/yaml/dist/doc/directives.js
|
|
1571
1571
|
var require_directives = __commonJS({
|
|
1572
|
-
"
|
|
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
|
-
//
|
|
1741
|
+
// ../../node_modules/yaml/dist/doc/anchors.js
|
|
1742
1742
|
var require_anchors = __commonJS({
|
|
1743
|
-
"
|
|
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
|
-
//
|
|
1811
|
+
// ../../node_modules/yaml/dist/doc/applyReviver.js
|
|
1812
1812
|
var require_applyReviver = __commonJS({
|
|
1813
|
-
"
|
|
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
|
-
//
|
|
1861
|
+
// ../../node_modules/yaml/dist/nodes/toJS.js
|
|
1862
1862
|
var require_toJS = __commonJS({
|
|
1863
|
-
"
|
|
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
|
-
//
|
|
1891
|
+
// ../../node_modules/yaml/dist/nodes/Node.js
|
|
1892
1892
|
var require_Node = __commonJS({
|
|
1893
|
-
"
|
|
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
|
-
//
|
|
1932
|
+
// ../../node_modules/yaml/dist/nodes/Alias.js
|
|
1933
1933
|
var require_Alias = __commonJS({
|
|
1934
|
-
"
|
|
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
|
-
//
|
|
2050
|
+
// ../../node_modules/yaml/dist/nodes/Scalar.js
|
|
2051
2051
|
var require_Scalar = __commonJS({
|
|
2052
|
-
"
|
|
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
|
-
//
|
|
2080
|
+
// ../../node_modules/yaml/dist/doc/createNode.js
|
|
2081
2081
|
var require_createNode = __commonJS({
|
|
2082
|
-
"
|
|
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
|
-
//
|
|
2155
|
+
// ../../node_modules/yaml/dist/nodes/Collection.js
|
|
2156
2156
|
var require_Collection = __commonJS({
|
|
2157
|
-
"
|
|
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
|
-
//
|
|
2298
|
+
// ../../node_modules/yaml/dist/stringify/stringifyComment.js
|
|
2299
2299
|
var require_stringifyComment = __commonJS({
|
|
2300
|
-
"
|
|
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
|
-
//
|
|
2315
|
+
// ../../node_modules/yaml/dist/stringify/foldFlowLines.js
|
|
2316
2316
|
var require_foldFlowLines = __commonJS({
|
|
2317
|
-
"
|
|
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
|
-
//
|
|
2451
|
+
// ../../node_modules/yaml/dist/stringify/stringifyString.js
|
|
2452
2452
|
var require_stringifyString = __commonJS({
|
|
2453
|
-
"
|
|
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
|
-
//
|
|
2734
|
+
// ../../node_modules/yaml/dist/stringify/stringify.js
|
|
2735
2735
|
var require_stringify = __commonJS({
|
|
2736
|
-
"
|
|
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
|
-
//
|
|
2858
|
+
// ../../node_modules/yaml/dist/stringify/stringifyPair.js
|
|
2859
2859
|
var require_stringifyPair = __commonJS({
|
|
2860
|
-
"
|
|
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
|
-
//
|
|
2991
|
+
// ../../node_modules/yaml/dist/log.js
|
|
2992
2992
|
var require_log = __commonJS({
|
|
2993
|
-
"
|
|
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
|
-
//
|
|
3013
|
+
// ../../node_modules/yaml/dist/schema/yaml-1.1/merge.js
|
|
3014
3014
|
var require_merge = __commonJS({
|
|
3015
|
-
"
|
|
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
|
-
//
|
|
3073
|
+
// ../../node_modules/yaml/dist/nodes/addPairToJSMap.js
|
|
3074
3074
|
var require_addPairToJSMap = __commonJS({
|
|
3075
|
-
"
|
|
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
|
-
//
|
|
3137
|
+
// ../../node_modules/yaml/dist/nodes/Pair.js
|
|
3138
3138
|
var require_Pair = __commonJS({
|
|
3139
|
-
"
|
|
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
|
-
//
|
|
3177
|
+
// ../../node_modules/yaml/dist/stringify/stringifyCollection.js
|
|
3178
3178
|
var require_stringifyCollection = __commonJS({
|
|
3179
|
-
"
|
|
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
|
-
//
|
|
3328
|
+
// ../../node_modules/yaml/dist/nodes/YAMLMap.js
|
|
3329
3329
|
var require_YAMLMap = __commonJS({
|
|
3330
|
-
"
|
|
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
|
-
//
|
|
3472
|
+
// ../../node_modules/yaml/dist/schema/common/map.js
|
|
3473
3473
|
var require_map = __commonJS({
|
|
3474
|
-
"
|
|
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
|
-
//
|
|
3494
|
+
// ../../node_modules/yaml/dist/nodes/YAMLSeq.js
|
|
3495
3495
|
var require_YAMLSeq = __commonJS({
|
|
3496
|
-
"
|
|
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
|
-
//
|
|
3610
|
+
// ../../node_modules/yaml/dist/schema/common/seq.js
|
|
3611
3611
|
var require_seq = __commonJS({
|
|
3612
|
-
"
|
|
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
|
-
//
|
|
3632
|
+
// ../../node_modules/yaml/dist/schema/common/string.js
|
|
3633
3633
|
var require_string = __commonJS({
|
|
3634
|
-
"
|
|
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
|
-
//
|
|
3651
|
+
// ../../node_modules/yaml/dist/schema/common/null.js
|
|
3652
3652
|
var require_null = __commonJS({
|
|
3653
|
-
"
|
|
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
|
-
//
|
|
3669
|
+
// ../../node_modules/yaml/dist/schema/core/bool.js
|
|
3670
3670
|
var require_bool = __commonJS({
|
|
3671
|
-
"
|
|
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
|
-
//
|
|
3693
|
+
// ../../node_modules/yaml/dist/stringify/stringifyNumber.js
|
|
3694
3694
|
var require_stringifyNumber = __commonJS({
|
|
3695
|
-
"
|
|
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
|
-
//
|
|
3720
|
+
// ../../node_modules/yaml/dist/schema/core/float.js
|
|
3721
3721
|
var require_float = __commonJS({
|
|
3722
|
-
"
|
|
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
|
-
//
|
|
3766
|
+
// ../../node_modules/yaml/dist/schema/core/int.js
|
|
3767
3767
|
var require_int = __commonJS({
|
|
3768
|
-
"
|
|
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
|
-
//
|
|
3811
|
+
// ../../node_modules/yaml/dist/schema/core/schema.js
|
|
3812
3812
|
var require_schema = __commonJS({
|
|
3813
|
-
"
|
|
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
|
-
//
|
|
3839
|
+
// ../../node_modules/yaml/dist/schema/json/schema.js
|
|
3840
3840
|
var require_schema2 = __commonJS({
|
|
3841
|
-
"
|
|
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
|
-
//
|
|
3906
|
+
// ../../node_modules/yaml/dist/schema/yaml-1.1/binary.js
|
|
3907
3907
|
var require_binary = __commonJS({
|
|
3908
|
-
"
|
|
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
|
-
//
|
|
3972
|
+
// ../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js
|
|
3973
3973
|
var require_pairs = __commonJS({
|
|
3974
|
-
"
|
|
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
|
-
//
|
|
4050
|
+
// ../../node_modules/yaml/dist/schema/yaml-1.1/omap.js
|
|
4051
4051
|
var require_omap = __commonJS({
|
|
4052
|
-
"
|
|
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
|
-
//
|
|
4128
|
+
// ../../node_modules/yaml/dist/schema/yaml-1.1/bool.js
|
|
4129
4129
|
var require_bool2 = __commonJS({
|
|
4130
|
-
"
|
|
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
|
-
//
|
|
4160
|
+
// ../../node_modules/yaml/dist/schema/yaml-1.1/float.js
|
|
4161
4161
|
var require_float2 = __commonJS({
|
|
4162
|
-
"
|
|
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
|
-
//
|
|
4209
|
+
// ../../node_modules/yaml/dist/schema/yaml-1.1/int.js
|
|
4210
4210
|
var require_int2 = __commonJS({
|
|
4211
|
-
"
|
|
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
|
-
//
|
|
4288
|
+
// ../../node_modules/yaml/dist/schema/yaml-1.1/set.js
|
|
4289
4289
|
var require_set = __commonJS({
|
|
4290
|
-
"
|
|
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
|
-
//
|
|
4377
|
+
// ../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
|
|
4378
4378
|
var require_timestamp = __commonJS({
|
|
4379
|
-
"
|
|
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
|
-
//
|
|
4465
|
+
// ../../node_modules/yaml/dist/schema/yaml-1.1/schema.js
|
|
4466
4466
|
var require_schema3 = __commonJS({
|
|
4467
|
-
"
|
|
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
|
-
//
|
|
4509
|
+
// ../../node_modules/yaml/dist/schema/tags.js
|
|
4510
4510
|
var require_tags = __commonJS({
|
|
4511
|
-
"
|
|
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
|
-
//
|
|
4603
|
+
// ../../node_modules/yaml/dist/schema/Schema.js
|
|
4604
4604
|
var require_Schema = __commonJS({
|
|
4605
|
-
"
|
|
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
|
-
//
|
|
4635
|
+
// ../../node_modules/yaml/dist/stringify/stringifyDocument.js
|
|
4636
4636
|
var require_stringifyDocument = __commonJS({
|
|
4637
|
-
"
|
|
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
|
-
//
|
|
4715
|
+
// ../../node_modules/yaml/dist/doc/Document.js
|
|
4716
4716
|
var require_Document = __commonJS({
|
|
4717
|
-
"
|
|
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
|
-
//
|
|
5024
|
+
// ../../node_modules/yaml/dist/errors.js
|
|
5025
5025
|
var require_errors = __commonJS({
|
|
5026
|
-
"
|
|
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
|
-
//
|
|
5089
|
+
// ../../node_modules/yaml/dist/compose/resolve-props.js
|
|
5090
5090
|
var require_resolve_props = __commonJS({
|
|
5091
|
-
"
|
|
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
|
-
//
|
|
5223
|
+
// ../../node_modules/yaml/dist/compose/util-contains-newline.js
|
|
5224
5224
|
var require_util_contains_newline = __commonJS({
|
|
5225
|
-
"
|
|
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
|
-
//
|
|
5265
|
+
// ../../node_modules/yaml/dist/compose/util-flow-indent-check.js
|
|
5266
5266
|
var require_util_flow_indent_check = __commonJS({
|
|
5267
|
-
"
|
|
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
|
-
//
|
|
5283
|
+
// ../../node_modules/yaml/dist/compose/util-map-includes.js
|
|
5284
5284
|
var require_util_map_includes = __commonJS({
|
|
5285
|
-
"
|
|
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
|
-
//
|
|
5299
|
+
// ../../node_modules/yaml/dist/compose/resolve-block-map.js
|
|
5300
5300
|
var require_resolve_block_map = __commonJS({
|
|
5301
|
-
"
|
|
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
|
-
//
|
|
5407
|
+
// ../../node_modules/yaml/dist/compose/resolve-block-seq.js
|
|
5408
5408
|
var require_resolve_block_seq = __commonJS({
|
|
5409
|
-
"
|
|
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
|
-
//
|
|
5458
|
+
// ../../node_modules/yaml/dist/compose/resolve-end.js
|
|
5459
5459
|
var require_resolve_end = __commonJS({
|
|
5460
|
-
"
|
|
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
|
-
//
|
|
5501
|
+
// ../../node_modules/yaml/dist/compose/resolve-flow-collection.js
|
|
5502
5502
|
var require_resolve_flow_collection = __commonJS({
|
|
5503
|
-
"
|
|
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
|
-
//
|
|
5695
|
+
// ../../node_modules/yaml/dist/compose/compose-collection.js
|
|
5696
5696
|
var require_compose_collection = __commonJS({
|
|
5697
|
-
"
|
|
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
|
-
//
|
|
5760
|
+
// ../../node_modules/yaml/dist/compose/resolve-block-scalar.js
|
|
5761
5761
|
var require_resolve_block_scalar = __commonJS({
|
|
5762
|
-
"
|
|
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
|
-
//
|
|
5943
|
+
// ../../node_modules/yaml/dist/compose/resolve-flow-scalar.js
|
|
5944
5944
|
var require_resolve_flow_scalar = __commonJS({
|
|
5945
|
-
"
|
|
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
|
-
//
|
|
6164
|
+
// ../../node_modules/yaml/dist/compose/compose-scalar.js
|
|
6165
6165
|
var require_compose_scalar = __commonJS({
|
|
6166
|
-
"
|
|
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
|
-
//
|
|
6245
|
+
// ../../node_modules/yaml/dist/compose/util-empty-scalar-position.js
|
|
6246
6246
|
var require_util_empty_scalar_position = __commonJS({
|
|
6247
|
-
"
|
|
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
|
-
//
|
|
6275
|
+
// ../../node_modules/yaml/dist/compose/compose-node.js
|
|
6276
6276
|
var require_compose_node = __commonJS({
|
|
6277
|
-
"
|
|
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
|
-
//
|
|
6381
|
+
// ../../node_modules/yaml/dist/compose/compose-doc.js
|
|
6382
6382
|
var require_compose_doc = __commonJS({
|
|
6383
|
-
"
|
|
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
|
-
//
|
|
6424
|
+
// ../../node_modules/yaml/dist/compose/composer.js
|
|
6425
6425
|
var require_composer = __commonJS({
|
|
6426
|
-
"
|
|
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
|
-
//
|
|
6632
|
+
// ../../node_modules/yaml/dist/parse/cst-scalar.js
|
|
6633
6633
|
var require_cst_scalar = __commonJS({
|
|
6634
|
-
"
|
|
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
|
-
//
|
|
6817
|
+
// ../../node_modules/yaml/dist/parse/cst-stringify.js
|
|
6818
6818
|
var require_cst_stringify = __commonJS({
|
|
6819
|
-
"
|
|
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
|
-
//
|
|
6878
|
+
// ../../node_modules/yaml/dist/parse/cst-visit.js
|
|
6879
6879
|
var require_cst_visit = __commonJS({
|
|
6880
|
-
"
|
|
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
|
-
//
|
|
6940
|
+
// ../../node_modules/yaml/dist/parse/cst.js
|
|
6941
6941
|
var require_cst = __commonJS({
|
|
6942
|
-
"
|
|
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
|
-
//
|
|
7042
|
+
// ../../node_modules/yaml/dist/parse/lexer.js
|
|
7043
7043
|
var require_lexer = __commonJS({
|
|
7044
|
-
"
|
|
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
|
-
//
|
|
7631
|
+
// ../../node_modules/yaml/dist/parse/line-counter.js
|
|
7632
7632
|
var require_line_counter = __commonJS({
|
|
7633
|
-
"
|
|
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
|
-
//
|
|
7662
|
+
// ../../node_modules/yaml/dist/parse/parser.js
|
|
7663
7663
|
var require_parser = __commonJS({
|
|
7664
|
-
"
|
|
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
|
-
//
|
|
8536
|
+
// ../../node_modules/yaml/dist/public-api.js
|
|
8537
8537
|
var require_public_api = __commonJS({
|
|
8538
|
-
"
|
|
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
|
-
//
|
|
8633
|
+
// ../../node_modules/yaml/dist/index.js
|
|
8634
8634
|
var require_dist = __commonJS({
|
|
8635
|
-
"
|
|
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-
|
|
9927
|
-
const m = /^\s*([a-zA-
|
|
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.
|
|
11300
|
+
"user-agent": `ghosty-cli/${"0.103.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
|
|
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) {
|
|
@@ -13514,7 +13548,7 @@ var HELPS_ES = {
|
|
|
13514
13548
|
["--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
13549
|
["--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
13550
|
["--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"],
|
|
13551
|
+
["--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
13552
|
["--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
13553
|
["--verbose", "doctor: lista tambi\xE9n las revisiones que pasaron"],
|
|
13520
13554
|
["--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,7 +13872,8 @@ var HELPS_ES = {
|
|
|
13838
13872
|
["-n, --dry-run", "imprime el plan (+ empieza a contestar, - deja de contestar) y no cambia nada"],
|
|
13839
13873
|
["--yes", "enable / groups enable: se salta la confirmaci\xF3n (obligatorio sin terminal)"],
|
|
13840
13874
|
["--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,
|
|
13875
|
+
["--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)"],
|
|
13876
|
+
['--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
13877
|
["--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
13878
|
["--cached", "groups ls: no le pide a WhatsApp la lista en vivo (m\xE1s r\xE1pido; puede faltar alg\xFAn grupo nuevo)"],
|
|
13844
13879
|
["--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)"],
|
|
@@ -14272,7 +14307,7 @@ var HELPS = {
|
|
|
14272
14307
|
["--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
14308
|
["--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
14309
|
["--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"],
|
|
14310
|
+
["--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
14311
|
["--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
14312
|
["--verbose", "doctor: also list the checks that passed"],
|
|
14278
14313
|
["--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 +14439,7 @@ var HELPS = {
|
|
|
14404
14439
|
summary: "Databases an agent can use, and what it may write from customer channels.",
|
|
14405
14440
|
usage: [
|
|
14406
14441
|
"ghosty dbs ls <agent-id> [--orphans]",
|
|
14442
|
+
"ghosty dbs create <agent-id> <name> [--description TEXT] [--read] [--no-grant]",
|
|
14407
14443
|
"ghosty dbs tables <agent-id> <db>",
|
|
14408
14444
|
'ghosty dbs query <agent-id> <db> "SQL" [--arg V]\u2026 [--write]',
|
|
14409
14445
|
"ghosty dbs origin <agent-id> <db> [--table T] [--since 2026-10-10] [--limit N]",
|
|
@@ -14411,6 +14447,7 @@ var HELPS = {
|
|
|
14411
14447
|
"ghosty dbs restore <agent-id> <db> <checkpoint-id> [--yes]",
|
|
14412
14448
|
"ghosty dbs export <agent-id> <db> [--table T] [--out FILE]",
|
|
14413
14449
|
"ghosty dbs import <agent-id> <db> --from easybits:<db-id> [--tables a,b] [--append] [--rehost-images t.col,\u2026] [--dry-run] [--yes]",
|
|
14450
|
+
"ghosty dbs import <agent-id> <db> --from csv:FILE --table T [--append] [--dry-run] [--yes]",
|
|
14414
14451
|
"ghosty dbs rehost <agent-id> <db> --table T --column C [--dry-run]",
|
|
14415
14452
|
"ghosty dbs photos put <agent-id> <db> --table T --key-column K --dir DIR [--column C] [--dry-run]",
|
|
14416
14453
|
"ghosty dbs grant <agent-id> <db> [--external-write t1,t2] [--external-rows t:col+col,\u2026]",
|
|
@@ -14762,7 +14799,8 @@ HELPS.channels = {
|
|
|
14762
14799
|
["-n, --dry-run", "print the plan (+ starts answering, - stops) and change nothing"],
|
|
14763
14800
|
["--yes", "enable / groups enable: skip the confirmation (required without a terminal)"],
|
|
14764
14801
|
["--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,
|
|
14802
|
+
["--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)"],
|
|
14803
|
+
['--alias "a,b"', 'groups set: other names that wake it in that group besides its own (the nickname people use there); "" clears them'],
|
|
14766
14804
|
["--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
14805
|
["--cached", "groups ls: don't ask WhatsApp for the live list (faster; may miss new groups)"],
|
|
14768
14806
|
["--ads-only on|off", "link: only conversations that come from an ad open a card (also alone, to change it on a linked number)"],
|
|
@@ -17591,6 +17629,8 @@ ${bold("Configure an agent")}
|
|
|
17591
17629
|
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
17630
|
skills templates <id> pdf-doc templates it sees: its own and Ghosty's, and which folder wins
|
|
17593
17631
|
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]
|
|
17632
|
+
dbs create <id> <name> New database in the owner's account, granted to this agent [--description TEXT] [--read] [--no-grant]
|
|
17633
|
+
dbs import <id> <db> --from csv:FILE --table T A CSV (with header) into a table; creates it if missing [--append] [--dry-run]
|
|
17594
17634
|
dbs export <id> <db> Download a database: whole as .sqlite, or one table as CSV [--table T] [--out FILE]
|
|
17595
17635
|
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
17636
|
mcp get|set <id> MCP servers [--file servers.json] (http headers accept \${turn.token})
|
|
@@ -17609,7 +17649,7 @@ ${bold("Configure an agent")}
|
|
|
17609
17649
|
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
17650
|
channels wa pair <id> --phone N Pair a personal WhatsApp by code (no QR)
|
|
17611
17651
|
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]
|
|
17652
|
+
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
17653
|
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
17654
|
cards ls <id> Recent cards on its sales board [--q TEXT] [--paused] [--limit 20]
|
|
17615
17655
|
cards show <id> <card> A card's thread: who wrote, text, attachments and whether gs kept a copy (folio, phone or id)
|
|
@@ -17823,6 +17863,8 @@ ${bold("Configurar un agente")}
|
|
|
17823
17863
|
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
17864
|
skills templates <id> Plantillas de pdf-doc que ve: las suyas y las de Ghosty, y qu\xE9 carpeta gana
|
|
17825
17865
|
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]
|
|
17866
|
+
dbs create <id> <nombre> Base nueva en la cuenta del due\xF1o, concedida a este agente [--description TEXTO] [--read] [--no-grant]
|
|
17867
|
+
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
17868
|
dbs export <id> <db> Descarga una base: entera como .sqlite, o una tabla en CSV [--table T] [--out ARCHIVO]
|
|
17827
17869
|
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
17870
|
mcp get|set <id> Servidores MCP [--file servers.json] (headers http admiten \${turn.token})
|
|
@@ -17841,7 +17883,7 @@ ${bold("Configurar un agente")}
|
|
|
17841
17883
|
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
17884
|
channels wa pair <id> --phone N Vincula un WhatsApp personal con c\xF3digo (sin QR)
|
|
17843
17885
|
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]
|
|
17886
|
+
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
17887
|
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
17888
|
cards ls <id> Tarjetas recientes de su tablero de ventas [--q TEXTO] [--paused] [--limit 20]
|
|
17847
17889
|
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 +18117,8 @@ async function main() {
|
|
|
18075
18117
|
dir: { type: "string" },
|
|
18076
18118
|
arg: { type: "string", multiple: true },
|
|
18077
18119
|
write: { type: "boolean" },
|
|
18120
|
+
read: { type: "boolean" },
|
|
18121
|
+
"no-grant": { type: "boolean" },
|
|
18078
18122
|
"external-write": { type: "string" },
|
|
18079
18123
|
"external-rows": { type: "string" },
|
|
18080
18124
|
"no-deliver": { type: "boolean" },
|
|
@@ -18180,6 +18224,7 @@ async function main() {
|
|
|
18180
18224
|
handle: { type: "string" },
|
|
18181
18225
|
factory: { type: "string" },
|
|
18182
18226
|
wake: { type: "string" },
|
|
18227
|
+
alias: { type: "string" },
|
|
18183
18228
|
text: { type: "string" },
|
|
18184
18229
|
sender: { type: "string" },
|
|
18185
18230
|
"from-file": { type: "string" },
|
|
@@ -18280,7 +18325,7 @@ async function main() {
|
|
|
18280
18325
|
const tokens = splitTokens(pos, v);
|
|
18281
18326
|
globals.token = tokens.session;
|
|
18282
18327
|
globals.profile = v.profile;
|
|
18283
|
-
if (v.version) return out({ version: "0.
|
|
18328
|
+
if (v.version) return out({ version: "0.103.0" }, () => "0.103.0");
|
|
18284
18329
|
for (const n of normalizeArgs(pos, v)) if (!globals.json) info(dim(n));
|
|
18285
18330
|
const context = (await readConfig()).workspace;
|
|
18286
18331
|
if (!explicitToken()?.startsWith("gat_")) {
|
|
@@ -18490,7 +18535,7 @@ async function main() {
|
|
|
18490
18535
|
throw unknown(cmd, cmd, COMMANDS, "ghosty --help");
|
|
18491
18536
|
}
|
|
18492
18537
|
}
|
|
18493
|
-
var notice = updateNotice("0.
|
|
18538
|
+
var notice = updateNotice("0.103.0").catch(() => null);
|
|
18494
18539
|
main().then(
|
|
18495
18540
|
async () => {
|
|
18496
18541
|
const n = process.stderr.isTTY ? await notice : null;
|
package/package.json
CHANGED