volute 0.34.0 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -6
- package/dist/accept-ZBDVVCEU.js +42 -0
- package/dist/{activity-events-BN7V6KCC.js → activity-events-ZW4SDL2C.js} +4 -4
- package/dist/{ai-service-PSILB5WD.js → ai-service-LURBEDDB.js} +5 -5
- package/dist/{api-client-XUXOB7LI.js → api-client-3A77HMH7.js} +1 -1
- package/dist/api.d.ts +1 -5618
- package/dist/{archive-C2VEMQOR.js → archive-ESU2FUN4.js} +3 -3
- package/dist/{auth-ZFZXJZDQ.js → auth-WX4TESEI.js} +5 -5
- package/dist/bridge-PXIO6PS2.js +206 -0
- package/dist/chat-QXAJF3FU.js +51 -0
- package/dist/{chunk-7F2SW2KD.js → chunk-2TGZJFAT.js} +3 -3
- package/dist/{chunk-6LXAAQ43.js → chunk-33ODGMFZ.js} +1 -1
- package/dist/{chunk-4JSR7YO7.js → chunk-5N7Y5WAM.js} +1 -1
- package/dist/{chunk-FYCALD4Q.js → chunk-5T5YMX6S.js} +1 -1
- package/dist/{chunk-B2BVAIZ4.js → chunk-5XJYUFZH.js} +21 -15
- package/dist/{chunk-M3K5AARV.js → chunk-A2ZLHBHG.js} +2 -2
- package/dist/{chunk-U5BTYSAL.js → chunk-AN2W47GW.js} +2 -2
- package/dist/{chunk-G53F3JA4.js → chunk-AOB6GVRM.js} +1 -1
- package/dist/{chunk-N7BLAHNE.js → chunk-BDYXIWA5.js} +5 -5
- package/dist/{chunk-YUIHSKR6.js → chunk-BKF4WQCY.js} +2 -2
- package/dist/{chunk-6OWJXUAR.js → chunk-BMZQYACC.js} +2 -2
- package/dist/{chunk-NAOW2CLO.js → chunk-BTY4WNFE.js} +1 -1
- package/dist/{chunk-MLOQKQNB.js → chunk-BV65KRHM.js} +2 -2
- package/dist/{chunk-XWXBJQBE.js → chunk-CORXD635.js} +4 -4
- package/dist/{chunk-PVY5W6QN.js → chunk-F7ZNLYKZ.js} +2 -2
- package/dist/{chunk-BFWHBQK4.js → chunk-FT5KETXZ.js} +3 -3
- package/dist/{chunk-N3DNFPVA.js → chunk-IJHIXLVN.js} +8 -8
- package/dist/{chunk-V6ZCNULL.js → chunk-J6CJQDWI.js} +37 -28
- package/dist/{chunk-4RQBJWQX.js → chunk-LOPXTW6H.js} +1 -1
- package/dist/{chunk-47ZPNLF4.js → chunk-MDJGMOSD.js} +8 -137
- package/dist/{chunk-BTWAGDV5.js → chunk-N446KRP7.js} +3 -3
- package/dist/{chunk-6WAWMWR5.js → chunk-N5LMGYXX.js} +2 -2
- package/dist/{chunk-G6BSYHPK.js → chunk-NJK5SDGR.js} +1 -1
- package/dist/{chunk-D424ZQGI.js → chunk-O7IGP7ZW.js} +11 -3
- package/dist/{chunk-2IOP6PHB.js → chunk-OTC67N2Z.js} +2 -2
- package/dist/{chunk-V45JXOWY.js → chunk-PWQ2ITYG.js} +4 -4
- package/dist/{chunk-KTLFDYPT.js → chunk-QCH6K235.js} +1 -1
- package/dist/chunk-QHG4OMZL.js +145 -0
- package/dist/{chunk-IS7WJ56Q.js → chunk-QWTR6AWZ.js} +3 -3
- package/dist/chunk-TXSA4Q3V.js +116 -0
- package/dist/{chunk-BDK73LK6.js → chunk-VHJRZM2S.js} +2 -2
- package/dist/{chunk-SSI47XP2.js → chunk-VHWGEJ4V.js} +1 -1
- package/dist/chunk-VY3RB2V7.js +164 -0
- package/dist/chunk-WJPROOU5.js +8314 -0
- package/dist/{chunk-E5C7OWZ2.js → chunk-WZRZFFCL.js} +8 -8
- package/dist/{chunk-BM474GX6.js → chunk-XRQSAMX2.js} +4 -4
- package/dist/{chunk-OYAKCAVY.js → chunk-ZSR72JB3.js} +1 -1
- package/dist/{chunk-PLDWHR4D.js → chunk-ZX7EAV5J.js} +17 -7
- package/dist/cli.js +90 -29
- package/dist/clock-HSEKS5AR.js +289 -0
- package/dist/{cloud-sync-TG3TIX5H.js → cloud-sync-6JL4C24T.js} +21 -22
- package/dist/config-UTS7QULS.js +76 -0
- package/dist/connectors/discord-bridge.js +3 -3
- package/dist/connectors/slack-bridge.js +3 -3
- package/dist/connectors/telegram-bridge.js +3 -3
- package/dist/{conversations-HL2JP5GI.js → conversations-2PW57WO2.js} +5 -5
- package/dist/create-5BPOOJAN.js +75 -0
- package/dist/create-UVCK2CS6.js +50 -0
- package/dist/daemon-client-RVIKXGFQ.js +12 -0
- package/dist/daemon-restart-HSZ3BCX5.js +65 -0
- package/dist/daemon.js +845 -1766
- package/dist/{db-PLEDCBHZ.js → db-BDMH4SZ2.js} +7 -3
- package/dist/{db-RYX3SS2W.js → db-BVBJ57TU.js} +2 -2
- package/dist/delete-L5PAVDGQ.js +42 -0
- package/dist/delivery-manager-H5ZVBMCQ.js +31 -0
- package/dist/{delivery-router-D5ELDMS2.js → delivery-router-HEJSJAHQ.js} +4 -4
- package/dist/down-74VXM45A.js +17 -0
- package/dist/env-E4XHO2BI.js +223 -0
- package/dist/{exec-DVLXKRIO.js → exec-PY7THYH4.js} +4 -4
- package/dist/export-OAS6QVBN.js +113 -0
- package/dist/{extension-PM42QCID.js → extension-D74CNM7G.js} +25 -33
- package/dist/{extensions-BBGVL5JC.js → extensions-XDDFY72A.js} +22 -11
- package/dist/files-CWTK6V3H.js +53 -0
- package/dist/import-5A3T7QV4.js +143 -0
- package/dist/{isolation-62MKDZN3.js → isolation-TK5RX2WM.js} +3 -3
- package/dist/join-DF5XSJAC.js +67 -0
- package/dist/list-PDMQM7ZV.js +53 -0
- package/dist/login-7TE6CIZF.js +60 -0
- package/dist/login-GOTAYLXP.js +51 -0
- package/dist/logout-6KIA74EV.js +29 -0
- package/dist/logout-T4XS6LRU.js +50 -0
- package/dist/message-delivery-GRC4W6P7.js +41 -0
- package/dist/mind-5IEYKV7I.js +97 -0
- package/dist/{mind-activity-tracker-2ACNHA7B.js → mind-activity-tracker-QBLIV7ZJ.js} +5 -5
- package/dist/{mind-history-WOYFLQAI.js → mind-history-IE2QH7U5.js} +82 -71
- package/dist/mind-list-GEWHWAL4.js +38 -0
- package/dist/mind-manager-HFLB5653.js +31 -0
- package/dist/mind-profile-DCBDVF5B.js +53 -0
- package/dist/mind-service-X2CAA6W6.js +37 -0
- package/dist/mind-sleep-ITCF6OQA.js +47 -0
- package/dist/mind-status-X4SX3YUG.js +65 -0
- package/dist/mind-wake-KXMKMGWX.js +42 -0
- package/dist/{package-V2WHWVG6.js → package-D2FSVFAX.js} +5 -5
- package/dist/read-67VRP2DO.js +91 -0
- package/dist/{read-stdin-PIRM6A2Y.js → read-stdin-3X5VYKNS.js} +1 -1
- package/dist/register-SB7NXCOE.js +51 -0
- package/dist/{registry-UYV5S6QT.js → registry-GBSNW3HG.js} +2 -2
- package/dist/reject-MUR2KWJ4.js +40 -0
- package/dist/restart-5EGG4JXU.js +42 -0
- package/dist/{sandbox-SI5HMBP3.js → sandbox-R37VIU36.js} +5 -5
- package/dist/scheduler-Y7O4CJXL.js +31 -0
- package/dist/{schema-ETMABTW4.js → schema-XVZ2CLKW.js} +1 -1
- package/dist/{seed-WNGI6PNW.js → seed-EQORWX77.js} +2 -2
- package/dist/seed-check-KJNTL72M.js +35 -0
- package/dist/seed-cmd-ZM2XGVU2.js +30 -0
- package/dist/seed-create-DRWGGHEI.js +113 -0
- package/dist/seed-sprout-JYXGXOP3.js +148 -0
- package/dist/send-JBJJQ7CA.js +409 -0
- package/dist/service-WNPCNHOX.js +121 -0
- package/dist/{setup-Z3DEVWV7.js → setup-BJ4YAY26.js} +153 -127
- package/dist/{setup-GGMKENLN.js → setup-RHJRFURI.js} +3 -3
- package/dist/skill-TAAKEYBV.js +389 -0
- package/dist/skills/volute-mind/SKILL.md +3 -7
- package/dist/skills/volute-mind/references/extensions.md +8 -11
- package/dist/{skills-Q6VZ2UGD.js → skills-EKMCQ46K.js} +7 -7
- package/dist/sleep-manager-7KFK3USC.js +35 -0
- package/dist/spirit-ZFRDXMG7.js +23 -0
- package/dist/split-AWVOYOPZ.js +64 -0
- package/dist/{sprout-E3HJIV2Z.js → sprout-HE4TITMK.js} +2 -2
- package/dist/start-3UXOPXQG.js +39 -0
- package/dist/status-ZK34WYIM.js +125 -0
- package/dist/stop-3XYIBGFM.js +41 -0
- package/dist/system-chat-IDPHYHY4.js +35 -0
- package/dist/systems-O43WGQY6.js +52 -0
- package/dist/{tailscale-ZEUK7GKZ.js → tailscale-ZIZ2HWJ5.js} +4 -4
- package/dist/{template-hash-EJRTKE36.js → template-hash-A7FNHTB7.js} +2 -2
- package/dist/up-77ICEDEW.js +19 -0
- package/dist/update-ANE5ZM7F.js +225 -0
- package/dist/{update-check-X3YG4WVP.js → update-check-UV55CBEP.js} +3 -3
- package/dist/upgrade-ZMDGC7M2.js +74 -0
- package/dist/variant-QWL2WSRI.js +62 -0
- package/dist/{version-notify-YCH4UVQ2.js → version-notify-FXSEMXWW.js} +28 -27
- package/dist/{volute-config-WBKYJGYQ.js → volute-config-D2XVS2YI.js} +1 -1
- package/dist/web-assets/assets/index-BhxWKvbB.css +1 -0
- package/dist/web-assets/assets/index-CHVKJ9II.js +75 -0
- package/dist/web-assets/index.html +2 -2
- package/dist/web-assets/sw.js +117 -0
- package/package.json +5 -5
- package/packages/extensions/pages/dist/ui/assets/index-DKZLNMED.js +2 -0
- package/packages/extensions/pages/dist/ui/index.html +1 -1
- package/packages/extensions/pages/skills/pages/SKILL.md +84 -9
- package/templates/_base/src/lib/auto-commit.ts +8 -8
- package/templates/_base/src/lib/volute-server.ts +6 -0
- package/templates/claude/src/agent.ts +8 -1
- package/dist/accept-TW6V4WI4.js +0 -42
- package/dist/bridge-O753D5F4.js +0 -207
- package/dist/chat-BHYX7DJ4.js +0 -68
- package/dist/chunk-47XDEWWV.js +0 -156
- package/dist/chunk-CVL5IGIR.js +0 -2084
- package/dist/chunk-PB65JZK2.js +0 -85
- package/dist/chunk-TAHX36HZ.js +0 -3679
- package/dist/clock-3X4DSC2N.js +0 -281
- package/dist/config-OROA5DUA.js +0 -72
- package/dist/create-3SEKKI6P.js +0 -71
- package/dist/create-UOSOQ2HN.js +0 -44
- package/dist/daemon-client-WOAQXXBM.js +0 -12
- package/dist/daemon-restart-5ABHNXJZ.js +0 -52
- package/dist/delete-KYOVWR23.js +0 -35
- package/dist/delivery-manager-2BR5NZKF.js +0 -32
- package/dist/down-QVFN4UPK.js +0 -15
- package/dist/env-R34DT7XL.js +0 -195
- package/dist/export-6ZXAXATG.js +0 -112
- package/dist/files-VQV2VZQO.js +0 -47
- package/dist/import-MK2I2T6F.js +0 -23
- package/dist/join-DGYHTJUH.js +0 -66
- package/dist/list-C644WTHV.js +0 -49
- package/dist/login-IIGEQPHL.js +0 -47
- package/dist/login-KZQLMAWE.js +0 -47
- package/dist/logout-AGTZVRGP.js +0 -40
- package/dist/logout-KD6GXIJJ.js +0 -21
- package/dist/message-delivery-V3R6NXJP.js +0 -42
- package/dist/mind-BI4EPBVZ.js +0 -108
- package/dist/mind-list-6VPM7GUQ.js +0 -30
- package/dist/mind-manager-MWW3BTS4.js +0 -32
- package/dist/mind-profile-WPG42U5Y.js +0 -47
- package/dist/mind-service-VIKZJK2M.js +0 -38
- package/dist/mind-sleep-XDISJY74.js +0 -42
- package/dist/mind-status-7FTZWPZF.js +0 -56
- package/dist/mind-wake-KIIKEI3A.js +0 -37
- package/dist/read-H5C26YO7.js +0 -85
- package/dist/register-J27WP33N.js +0 -47
- package/dist/reject-OEANJYIA.js +0 -40
- package/dist/restart-V5EGYBJG.js +0 -33
- package/dist/scheduler-AGG3L2FO.js +0 -32
- package/dist/seed-check-PXTH7YXS.js +0 -32
- package/dist/seed-cmd-VENFTGS3.js +0 -36
- package/dist/seed-create-663ALOKH.js +0 -112
- package/dist/seed-sprout-EH3AGKAI.js +0 -132
- package/dist/send-7FUUUZZH.js +0 -386
- package/dist/skill-DKNYJS4P.js +0 -362
- package/dist/skills/shared-files/SKILL.md +0 -44
- package/dist/skills/shared-files/scripts/merge.ts +0 -72
- package/dist/skills/shared-files/scripts/pull.ts +0 -52
- package/dist/sleep-manager-BJK2ROPX.js +0 -36
- package/dist/spirit-4JP4TY4C.js +0 -23
- package/dist/split-3YPMS2CL.js +0 -63
- package/dist/start-W3TPKX4D.js +0 -33
- package/dist/status-4OVFXFEJ.js +0 -115
- package/dist/stop-GTT6YWYO.js +0 -32
- package/dist/system-channel-DXD2JBOU.js +0 -36
- package/dist/system-chat-TYLOL7SX.js +0 -36
- package/dist/systems-AYLO727G.js +0 -61
- package/dist/up-PA7F2CXE.js +0 -18
- package/dist/update-HG4LCUSG.js +0 -215
- package/dist/upgrade-YGNIDICG.js +0 -67
- package/dist/variant-MZUMRTQO.js +0 -41
- package/dist/web-assets/assets/index-DiiwC-CZ.css +0 -1
- package/dist/web-assets/assets/index-d6y5b9Ij.js +0 -75
- package/packages/extensions/pages/dist/ui/assets/index-tLTROSk5.js +0 -2
|
@@ -3,14 +3,18 @@ import {
|
|
|
3
3
|
getAllSites,
|
|
4
4
|
getPublishedPages,
|
|
5
5
|
getRecentPages,
|
|
6
|
+
getSystemPages,
|
|
6
7
|
initDb,
|
|
7
|
-
syncPublishedPages
|
|
8
|
-
|
|
8
|
+
syncPublishedPages,
|
|
9
|
+
syncSystemPages
|
|
10
|
+
} from "./chunk-QHG4OMZL.js";
|
|
9
11
|
import "./chunk-7KJOFUNN.js";
|
|
10
12
|
export {
|
|
11
13
|
getAllSites,
|
|
12
14
|
getPublishedPages,
|
|
13
15
|
getRecentPages,
|
|
16
|
+
getSystemPages,
|
|
14
17
|
initDb,
|
|
15
|
-
syncPublishedPages
|
|
18
|
+
syncPublishedPages,
|
|
19
|
+
syncSystemPages
|
|
16
20
|
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
resolveMindName
|
|
4
|
+
} from "./chunk-BTY4WNFE.js";
|
|
5
|
+
import {
|
|
6
|
+
command
|
|
7
|
+
} from "./chunk-TXSA4Q3V.js";
|
|
8
|
+
import "./chunk-O7IGP7ZW.js";
|
|
9
|
+
import "./chunk-7KJOFUNN.js";
|
|
10
|
+
|
|
11
|
+
// packages/cli/src/commands/delete.ts
|
|
12
|
+
var cmd = command({
|
|
13
|
+
name: "volute mind delete",
|
|
14
|
+
description: "Delete a mind from the registry",
|
|
15
|
+
args: [{ name: "name", description: "Mind to delete (or use VOLUTE_MIND)" }],
|
|
16
|
+
flags: {
|
|
17
|
+
force: { type: "boolean", description: "Also delete the mind's directory" }
|
|
18
|
+
},
|
|
19
|
+
async run({ args, flags }) {
|
|
20
|
+
const name = resolveMindName({ mind: args.name });
|
|
21
|
+
const { daemonFetch } = await import("./daemon-client-RVIKXGFQ.js");
|
|
22
|
+
const { getClient, urlOf } = await import("./api-client-3A77HMH7.js");
|
|
23
|
+
const client = getClient();
|
|
24
|
+
const url = urlOf(client.api.minds[":name"].$url({ param: { name } })) + (flags.force ? "?force=true" : "");
|
|
25
|
+
const res = await daemonFetch(url, { method: "DELETE" });
|
|
26
|
+
const data = await res.json();
|
|
27
|
+
if (!res.ok) {
|
|
28
|
+
console.error(data.error ?? "Failed to delete mind");
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
console.log(`Removed ${name}.`);
|
|
32
|
+
if (flags.force) {
|
|
33
|
+
console.log("Deleted mind directory.");
|
|
34
|
+
} else {
|
|
35
|
+
console.log("Use --force to also delete the mind directory.");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
var run = cmd.execute;
|
|
40
|
+
export {
|
|
41
|
+
run
|
|
42
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
DeliveryManager,
|
|
4
|
+
getDeliveryManager,
|
|
5
|
+
initDeliveryManager
|
|
6
|
+
} from "./chunk-WJPROOU5.js";
|
|
7
|
+
import "./chunk-5XJYUFZH.js";
|
|
8
|
+
import "./chunk-AOB6GVRM.js";
|
|
9
|
+
import "./chunk-IJHIXLVN.js";
|
|
10
|
+
import "./chunk-QWTR6AWZ.js";
|
|
11
|
+
import "./chunk-N446KRP7.js";
|
|
12
|
+
import "./chunk-QHG4OMZL.js";
|
|
13
|
+
import "./chunk-XRQSAMX2.js";
|
|
14
|
+
import "./chunk-WZRZFFCL.js";
|
|
15
|
+
import "./chunk-CORXD635.js";
|
|
16
|
+
import "./chunk-ZSR72JB3.js";
|
|
17
|
+
import "./chunk-PWQ2ITYG.js";
|
|
18
|
+
import "./chunk-A2ZLHBHG.js";
|
|
19
|
+
import "./chunk-FT5KETXZ.js";
|
|
20
|
+
import "./chunk-BKF4WQCY.js";
|
|
21
|
+
import "./chunk-AN2W47GW.js";
|
|
22
|
+
import "./chunk-VHJRZM2S.js";
|
|
23
|
+
import "./chunk-BMZQYACC.js";
|
|
24
|
+
import "./chunk-BDYXIWA5.js";
|
|
25
|
+
import "./chunk-5N7Y5WAM.js";
|
|
26
|
+
import "./chunk-7KJOFUNN.js";
|
|
27
|
+
export {
|
|
28
|
+
DeliveryManager,
|
|
29
|
+
getDeliveryManager,
|
|
30
|
+
initDeliveryManager
|
|
31
|
+
};
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
registerMindDir,
|
|
7
7
|
resolveDeliveryMode,
|
|
8
8
|
resolveRoute
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-QWTR6AWZ.js";
|
|
10
|
+
import "./chunk-BKF4WQCY.js";
|
|
11
|
+
import "./chunk-BDYXIWA5.js";
|
|
12
|
+
import "./chunk-5N7Y5WAM.js";
|
|
13
13
|
import "./chunk-7KJOFUNN.js";
|
|
14
14
|
export {
|
|
15
15
|
clearConfigCache,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
run,
|
|
4
|
+
stopDaemon
|
|
5
|
+
} from "./chunk-J6CJQDWI.js";
|
|
6
|
+
import "./chunk-2TGZJFAT.js";
|
|
7
|
+
import "./chunk-TXSA4Q3V.js";
|
|
8
|
+
import "./chunk-O7IGP7ZW.js";
|
|
9
|
+
import "./chunk-AN2W47GW.js";
|
|
10
|
+
import "./chunk-VHJRZM2S.js";
|
|
11
|
+
import "./chunk-BDYXIWA5.js";
|
|
12
|
+
import "./chunk-5N7Y5WAM.js";
|
|
13
|
+
import "./chunk-7KJOFUNN.js";
|
|
14
|
+
export {
|
|
15
|
+
run,
|
|
16
|
+
stopDaemon
|
|
17
|
+
};
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
isCompact
|
|
4
|
+
} from "./chunk-5T5YMX6S.js";
|
|
5
|
+
import {
|
|
6
|
+
promptLine
|
|
7
|
+
} from "./chunk-VHWGEJ4V.js";
|
|
8
|
+
import {
|
|
9
|
+
command,
|
|
10
|
+
subcommands
|
|
11
|
+
} from "./chunk-TXSA4Q3V.js";
|
|
12
|
+
import "./chunk-O7IGP7ZW.js";
|
|
13
|
+
import {
|
|
14
|
+
daemonFetch
|
|
15
|
+
} from "./chunk-ZX7EAV5J.js";
|
|
16
|
+
import {
|
|
17
|
+
getClient,
|
|
18
|
+
urlOf
|
|
19
|
+
} from "./chunk-LOPXTW6H.js";
|
|
20
|
+
import "./chunk-7KJOFUNN.js";
|
|
21
|
+
|
|
22
|
+
// packages/cli/src/commands/env.ts
|
|
23
|
+
function maskValue(value) {
|
|
24
|
+
if (value.length <= 6) return "***";
|
|
25
|
+
return `${value.slice(0, 3)}...${value.slice(-3)}`;
|
|
26
|
+
}
|
|
27
|
+
var envSetCmd = command({
|
|
28
|
+
name: "volute env set",
|
|
29
|
+
description: "Set an environment variable",
|
|
30
|
+
args: [
|
|
31
|
+
{ name: "key", required: true, description: "Variable name" },
|
|
32
|
+
{ name: "value", description: "Variable value (prompts if omitted)" }
|
|
33
|
+
],
|
|
34
|
+
flags: {
|
|
35
|
+
mind: { type: "string", description: "Mind name" }
|
|
36
|
+
},
|
|
37
|
+
run: async ({ args, flags }) => {
|
|
38
|
+
const client = getClient();
|
|
39
|
+
const key = args.key;
|
|
40
|
+
const value = args.value ?? await promptLine(`Enter value for ${key}: `);
|
|
41
|
+
let res;
|
|
42
|
+
if (flags.mind) {
|
|
43
|
+
res = await daemonFetch(
|
|
44
|
+
urlOf(
|
|
45
|
+
client.api.minds[":name"].env[":key"].$url({
|
|
46
|
+
param: { name: flags.mind, key }
|
|
47
|
+
})
|
|
48
|
+
),
|
|
49
|
+
{
|
|
50
|
+
method: "PUT",
|
|
51
|
+
headers: { "Content-Type": "application/json" },
|
|
52
|
+
body: JSON.stringify({ value })
|
|
53
|
+
}
|
|
54
|
+
);
|
|
55
|
+
} else {
|
|
56
|
+
res = await daemonFetch(urlOf(client.api.env[":key"].$url({ param: { key } })), {
|
|
57
|
+
method: "PUT",
|
|
58
|
+
headers: { "Content-Type": "application/json" },
|
|
59
|
+
body: JSON.stringify({ value })
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if (!res.ok) {
|
|
63
|
+
const body = await res.json().catch(() => ({}));
|
|
64
|
+
console.error(body.error ?? `Failed to set ${key}`);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
const scope = flags.mind ? `mind:${flags.mind}` : "shared";
|
|
68
|
+
console.log(`Set ${key} [${scope}]`);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
var envGetCmd = command({
|
|
72
|
+
name: "volute env get",
|
|
73
|
+
description: "Get an environment variable value",
|
|
74
|
+
args: [{ name: "key", required: true, description: "Variable name" }],
|
|
75
|
+
flags: {
|
|
76
|
+
mind: { type: "string", description: "Mind name" }
|
|
77
|
+
},
|
|
78
|
+
run: async ({ args, flags }) => {
|
|
79
|
+
const client = getClient();
|
|
80
|
+
const key = args.key;
|
|
81
|
+
if (flags.mind) {
|
|
82
|
+
const res = await daemonFetch(
|
|
83
|
+
urlOf(
|
|
84
|
+
client.api.minds[":name"].env[":key"].$url({
|
|
85
|
+
param: { name: flags.mind, key }
|
|
86
|
+
})
|
|
87
|
+
)
|
|
88
|
+
);
|
|
89
|
+
if (!res.ok) {
|
|
90
|
+
const body = await res.json().catch(() => ({}));
|
|
91
|
+
console.error(body.error ?? `${key} not set`);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
const data = await res.json();
|
|
95
|
+
console.log(data.value);
|
|
96
|
+
} else {
|
|
97
|
+
const res = await daemonFetch(urlOf(client.api.env.$url()));
|
|
98
|
+
if (!res.ok) {
|
|
99
|
+
console.error(`Failed to read shared env`);
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
const env = await res.json();
|
|
103
|
+
if (key in env) {
|
|
104
|
+
console.log(env[key]);
|
|
105
|
+
} else {
|
|
106
|
+
console.error(`${key} not set`);
|
|
107
|
+
process.exit(1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
var envListCmd = command({
|
|
113
|
+
name: "volute env list",
|
|
114
|
+
description: "List environment variables",
|
|
115
|
+
args: [],
|
|
116
|
+
flags: {
|
|
117
|
+
mind: { type: "string", description: "Mind name" },
|
|
118
|
+
reveal: { type: "boolean", description: "Show values unmasked" }
|
|
119
|
+
},
|
|
120
|
+
run: async ({ flags }) => {
|
|
121
|
+
const client = getClient();
|
|
122
|
+
const compact = isCompact();
|
|
123
|
+
if (flags.mind) {
|
|
124
|
+
const res = await daemonFetch(
|
|
125
|
+
urlOf(client.api.minds[":name"].env.$url({ param: { name: flags.mind } }))
|
|
126
|
+
);
|
|
127
|
+
if (!res.ok) {
|
|
128
|
+
const body = await res.json().catch(() => ({}));
|
|
129
|
+
console.error(body.error ?? "Failed to list env");
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
const data = await res.json();
|
|
133
|
+
const allKeys = /* @__PURE__ */ new Set([...Object.keys(data.shared), ...Object.keys(data.mind)]);
|
|
134
|
+
if (allKeys.size === 0) {
|
|
135
|
+
console.log("No environment variables set.");
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
for (const key of [...allKeys].sort()) {
|
|
139
|
+
const scope = key in data.mind ? "mind" : "shared";
|
|
140
|
+
const raw = key in data.mind ? data.mind[key] : data.shared[key];
|
|
141
|
+
const value = flags.reveal ? raw : maskValue(raw);
|
|
142
|
+
console.log(compact ? `${key}=${value}` : `${key}=${value} [${scope}]`);
|
|
143
|
+
}
|
|
144
|
+
} else {
|
|
145
|
+
const res = await daemonFetch(urlOf(client.api.env.$url()));
|
|
146
|
+
if (!res.ok) {
|
|
147
|
+
console.error("Failed to list shared env");
|
|
148
|
+
process.exit(1);
|
|
149
|
+
}
|
|
150
|
+
const env = await res.json();
|
|
151
|
+
const keys = Object.keys(env);
|
|
152
|
+
if (keys.length === 0) {
|
|
153
|
+
console.log("No shared environment variables set.");
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
for (const key of keys.sort()) {
|
|
157
|
+
const value = flags.reveal ? env[key] : maskValue(env[key]);
|
|
158
|
+
console.log(compact ? `${key}=${value}` : `${key}=${value} [shared]`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
var envRemoveCmd = command({
|
|
164
|
+
name: "volute env remove",
|
|
165
|
+
description: "Remove an environment variable",
|
|
166
|
+
args: [{ name: "key", required: true, description: "Variable name" }],
|
|
167
|
+
flags: {
|
|
168
|
+
mind: { type: "string", description: "Mind name" }
|
|
169
|
+
},
|
|
170
|
+
run: async ({ args, flags }) => {
|
|
171
|
+
const client = getClient();
|
|
172
|
+
const key = args.key;
|
|
173
|
+
let res;
|
|
174
|
+
if (flags.mind) {
|
|
175
|
+
res = await daemonFetch(
|
|
176
|
+
urlOf(
|
|
177
|
+
client.api.minds[":name"].env[":key"].$url({
|
|
178
|
+
param: { name: flags.mind, key }
|
|
179
|
+
})
|
|
180
|
+
),
|
|
181
|
+
{ method: "DELETE" }
|
|
182
|
+
);
|
|
183
|
+
} else {
|
|
184
|
+
res = await daemonFetch(urlOf(client.api.env[":key"].$url({ param: { key } })), {
|
|
185
|
+
method: "DELETE"
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
if (!res.ok) {
|
|
189
|
+
const scope2 = flags.mind ? `mind:${flags.mind}` : "shared";
|
|
190
|
+
console.error(`${key} not set in ${scope2} scope`);
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
193
|
+
const scope = flags.mind ? `mind:${flags.mind}` : "shared";
|
|
194
|
+
console.log(`Removed ${key} [${scope}]`);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
var cmd = subcommands({
|
|
198
|
+
name: "volute env",
|
|
199
|
+
description: "Manage environment variables",
|
|
200
|
+
commands: {
|
|
201
|
+
set: {
|
|
202
|
+
description: "Set an environment variable",
|
|
203
|
+
run: envSetCmd.execute
|
|
204
|
+
},
|
|
205
|
+
get: {
|
|
206
|
+
description: "Get an environment variable",
|
|
207
|
+
run: envGetCmd.execute
|
|
208
|
+
},
|
|
209
|
+
list: {
|
|
210
|
+
description: "List environment variables",
|
|
211
|
+
run: envListCmd.execute
|
|
212
|
+
},
|
|
213
|
+
remove: {
|
|
214
|
+
description: "Remove an environment variable",
|
|
215
|
+
run: envRemoveCmd.execute
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
footer: "Use --mind <name> or VOLUTE_MIND for mind-scoped variables."
|
|
219
|
+
});
|
|
220
|
+
var run = cmd.execute;
|
|
221
|
+
export {
|
|
222
|
+
run
|
|
223
|
+
};
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
execInherit,
|
|
5
5
|
gitExec,
|
|
6
6
|
resolveVoluteBin
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-AN2W47GW.js";
|
|
8
|
+
import "./chunk-VHJRZM2S.js";
|
|
9
|
+
import "./chunk-BDYXIWA5.js";
|
|
10
|
+
import "./chunk-5N7Y5WAM.js";
|
|
11
11
|
import "./chunk-7KJOFUNN.js";
|
|
12
12
|
export {
|
|
13
13
|
exec,
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
command
|
|
4
|
+
} from "./chunk-TXSA4Q3V.js";
|
|
5
|
+
import "./chunk-O7IGP7ZW.js";
|
|
6
|
+
import {
|
|
7
|
+
addHistoryToArchive,
|
|
8
|
+
createExportArchive
|
|
9
|
+
} from "./chunk-N5LMGYXX.js";
|
|
10
|
+
import {
|
|
11
|
+
findMind,
|
|
12
|
+
mindDir
|
|
13
|
+
} from "./chunk-BDYXIWA5.js";
|
|
14
|
+
import "./chunk-5N7Y5WAM.js";
|
|
15
|
+
import "./chunk-7KJOFUNN.js";
|
|
16
|
+
|
|
17
|
+
// packages/cli/src/commands/export.ts
|
|
18
|
+
import { existsSync, writeFileSync } from "fs";
|
|
19
|
+
import { resolve } from "path";
|
|
20
|
+
var cmd = command({
|
|
21
|
+
name: "volute mind export",
|
|
22
|
+
description: "Export a mind to an archive",
|
|
23
|
+
args: [{ name: "name", required: true, description: "Mind to export" }],
|
|
24
|
+
flags: {
|
|
25
|
+
"include-env": { type: "boolean", description: "Include environment variables" },
|
|
26
|
+
"include-identity": { type: "boolean", description: "Include identity keys" },
|
|
27
|
+
"include-connectors": { type: "boolean", description: "Include connector configs" },
|
|
28
|
+
"include-history": { type: "boolean", description: "Include message history" },
|
|
29
|
+
"include-sessions": { type: "boolean", description: "Include session data" },
|
|
30
|
+
"include-src": { type: "boolean", description: "Include source code" },
|
|
31
|
+
all: { type: "boolean", description: "Include everything" },
|
|
32
|
+
output: { type: "string", description: "Output file path" }
|
|
33
|
+
},
|
|
34
|
+
run: async ({ args, flags }) => {
|
|
35
|
+
const name = args.name;
|
|
36
|
+
const entry = await findMind(name);
|
|
37
|
+
if (!entry) {
|
|
38
|
+
console.error(`Unknown mind: ${name}`);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
const dir = mindDir(name);
|
|
42
|
+
if (!existsSync(dir)) {
|
|
43
|
+
console.error(`Mind directory missing: ${dir}`);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
const includeAll = flags.all;
|
|
47
|
+
const includeEnv = includeAll || flags["include-env"];
|
|
48
|
+
const includeIdentity = includeAll || flags["include-identity"];
|
|
49
|
+
const includeConnectors = includeAll || flags["include-connectors"];
|
|
50
|
+
const includeHistory = includeAll || flags["include-history"];
|
|
51
|
+
const includeSessions = includeAll || flags["include-sessions"];
|
|
52
|
+
const includeSrc = includeAll || flags["include-src"];
|
|
53
|
+
const zip = createExportArchive({
|
|
54
|
+
name,
|
|
55
|
+
template: entry.template ?? "claude",
|
|
56
|
+
stage: entry.stage,
|
|
57
|
+
includeSrc,
|
|
58
|
+
includeEnv,
|
|
59
|
+
includeIdentity,
|
|
60
|
+
includeConnectors,
|
|
61
|
+
includeHistory,
|
|
62
|
+
includeSessions
|
|
63
|
+
});
|
|
64
|
+
if (includeHistory) {
|
|
65
|
+
try {
|
|
66
|
+
const { daemonFetch } = await import("./daemon-client-RVIKXGFQ.js");
|
|
67
|
+
const { getClient, urlOf } = await import("./api-client-3A77HMH7.js");
|
|
68
|
+
const client = getClient();
|
|
69
|
+
const res = await daemonFetch(
|
|
70
|
+
urlOf(client.api.minds[":name"].history.export.$url({ param: { name } }))
|
|
71
|
+
);
|
|
72
|
+
if (!res.ok) {
|
|
73
|
+
const text = await res.text().catch(() => "");
|
|
74
|
+
throw new Error(`Failed to fetch history: HTTP ${res.status}${text ? ` - ${text}` : ""}`);
|
|
75
|
+
}
|
|
76
|
+
const rows = await res.json();
|
|
77
|
+
addHistoryToArchive(zip, rows);
|
|
78
|
+
} catch (err) {
|
|
79
|
+
console.error(`Error: could not export history: ${err.message}`);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const outputPath = resolve(flags.output ?? `${name}.volute`);
|
|
84
|
+
const buf = zip.toBuffer();
|
|
85
|
+
try {
|
|
86
|
+
writeFileSync(outputPath, buf);
|
|
87
|
+
} catch (err) {
|
|
88
|
+
console.error(`Failed to write archive to ${outputPath}: ${err.message}`);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
const sizeMB = (buf.length / 1024 / 1024).toFixed(2);
|
|
92
|
+
console.log(`
|
|
93
|
+
Exported ${name} \u2192 ${outputPath} (${sizeMB} MB)`);
|
|
94
|
+
const included = [];
|
|
95
|
+
const excluded = [];
|
|
96
|
+
for (const [key, val] of [
|
|
97
|
+
["src", includeSrc],
|
|
98
|
+
["env", includeEnv],
|
|
99
|
+
["identity", includeIdentity],
|
|
100
|
+
["connectors", includeConnectors],
|
|
101
|
+
["history", includeHistory],
|
|
102
|
+
["sessions", includeSessions]
|
|
103
|
+
]) {
|
|
104
|
+
(val ? included : excluded).push(key);
|
|
105
|
+
}
|
|
106
|
+
if (included.length > 0) console.log(` Included: ${included.join(", ")}`);
|
|
107
|
+
if (excluded.length > 0) console.log(` Excluded: ${excluded.join(", ")}`);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
var run = cmd.execute;
|
|
111
|
+
export {
|
|
112
|
+
run
|
|
113
|
+
};
|
|
@@ -1,41 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
subcommands
|
|
4
|
+
} from "./chunk-TXSA4Q3V.js";
|
|
5
|
+
import "./chunk-O7IGP7ZW.js";
|
|
2
6
|
import {
|
|
3
7
|
daemonFetch
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-N7BLAHNE.js";
|
|
6
|
-
import "./chunk-4JSR7YO7.js";
|
|
8
|
+
} from "./chunk-ZX7EAV5J.js";
|
|
7
9
|
import "./chunk-7KJOFUNN.js";
|
|
8
10
|
|
|
9
|
-
// src/commands/extension.ts
|
|
10
|
-
async function run(args) {
|
|
11
|
-
const subcommand = args[0];
|
|
12
|
-
switch (subcommand) {
|
|
13
|
-
case "list":
|
|
14
|
-
await listExtensions();
|
|
15
|
-
break;
|
|
16
|
-
case "install":
|
|
17
|
-
await installExtension(args.slice(1));
|
|
18
|
-
break;
|
|
19
|
-
case "uninstall":
|
|
20
|
-
await uninstallExtension(args.slice(1));
|
|
21
|
-
break;
|
|
22
|
-
case "--help":
|
|
23
|
-
case "-h":
|
|
24
|
-
case void 0:
|
|
25
|
-
printUsage();
|
|
26
|
-
break;
|
|
27
|
-
default:
|
|
28
|
-
console.error(`Unknown subcommand: ${subcommand}`);
|
|
29
|
-
printUsage();
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function printUsage() {
|
|
34
|
-
console.log(`Usage:
|
|
35
|
-
volute extension list List installed extensions
|
|
36
|
-
volute extension install <package> Install a third-party extension
|
|
37
|
-
volute extension uninstall <package> Uninstall a third-party extension`);
|
|
38
|
-
}
|
|
11
|
+
// packages/cli/src/commands/extension.ts
|
|
39
12
|
async function listExtensions() {
|
|
40
13
|
const res = await daemonFetch("/api/extensions/all");
|
|
41
14
|
if (!res.ok) {
|
|
@@ -92,6 +65,25 @@ async function uninstallExtension(args) {
|
|
|
92
65
|
console.log(`Removed "${pkg}".`);
|
|
93
66
|
console.log("Restart the daemon (`volute restart`) to unload the extension.");
|
|
94
67
|
}
|
|
68
|
+
var cmd = subcommands({
|
|
69
|
+
name: "volute extension",
|
|
70
|
+
description: "Manage extensions",
|
|
71
|
+
commands: {
|
|
72
|
+
list: {
|
|
73
|
+
description: "List installed extensions",
|
|
74
|
+
run: async () => listExtensions()
|
|
75
|
+
},
|
|
76
|
+
install: {
|
|
77
|
+
description: "Install a third-party extension",
|
|
78
|
+
run: installExtension
|
|
79
|
+
},
|
|
80
|
+
uninstall: {
|
|
81
|
+
description: "Uninstall a third-party extension",
|
|
82
|
+
run: uninstallExtension
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
var run = cmd.execute;
|
|
95
87
|
export {
|
|
96
88
|
run
|
|
97
89
|
};
|
|
@@ -9,19 +9,29 @@ import {
|
|
|
9
9
|
notifyExtensionsDaemonStop,
|
|
10
10
|
notifyExtensionsMindStart,
|
|
11
11
|
notifyExtensionsMindStop,
|
|
12
|
+
parseCommandArgs,
|
|
12
13
|
setExtensionEnabled,
|
|
13
14
|
uninstallNpmExtension
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-WJPROOU5.js";
|
|
16
|
+
import "./chunk-5XJYUFZH.js";
|
|
17
|
+
import "./chunk-AOB6GVRM.js";
|
|
18
|
+
import "./chunk-IJHIXLVN.js";
|
|
19
|
+
import "./chunk-QWTR6AWZ.js";
|
|
20
|
+
import "./chunk-N446KRP7.js";
|
|
21
|
+
import "./chunk-QHG4OMZL.js";
|
|
22
|
+
import "./chunk-XRQSAMX2.js";
|
|
23
|
+
import "./chunk-WZRZFFCL.js";
|
|
24
|
+
import "./chunk-CORXD635.js";
|
|
25
|
+
import "./chunk-ZSR72JB3.js";
|
|
26
|
+
import "./chunk-PWQ2ITYG.js";
|
|
27
|
+
import "./chunk-A2ZLHBHG.js";
|
|
28
|
+
import "./chunk-FT5KETXZ.js";
|
|
29
|
+
import "./chunk-BKF4WQCY.js";
|
|
30
|
+
import "./chunk-AN2W47GW.js";
|
|
31
|
+
import "./chunk-VHJRZM2S.js";
|
|
32
|
+
import "./chunk-BMZQYACC.js";
|
|
33
|
+
import "./chunk-BDYXIWA5.js";
|
|
34
|
+
import "./chunk-5N7Y5WAM.js";
|
|
25
35
|
import "./chunk-7KJOFUNN.js";
|
|
26
36
|
export {
|
|
27
37
|
getAllDiscoveredExtensions,
|
|
@@ -33,6 +43,7 @@ export {
|
|
|
33
43
|
notifyExtensionsDaemonStop,
|
|
34
44
|
notifyExtensionsMindStart,
|
|
35
45
|
notifyExtensionsMindStop,
|
|
46
|
+
parseCommandArgs,
|
|
36
47
|
setExtensionEnabled,
|
|
37
48
|
uninstallNpmExtension
|
|
38
49
|
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
resolveMindName
|
|
4
|
+
} from "./chunk-BTY4WNFE.js";
|
|
5
|
+
import {
|
|
6
|
+
command
|
|
7
|
+
} from "./chunk-TXSA4Q3V.js";
|
|
8
|
+
import "./chunk-O7IGP7ZW.js";
|
|
9
|
+
import {
|
|
10
|
+
daemonFetch
|
|
11
|
+
} from "./chunk-ZX7EAV5J.js";
|
|
12
|
+
import {
|
|
13
|
+
formatFileSize
|
|
14
|
+
} from "./chunk-BV65KRHM.js";
|
|
15
|
+
import "./chunk-BDYXIWA5.js";
|
|
16
|
+
import "./chunk-5N7Y5WAM.js";
|
|
17
|
+
import "./chunk-7KJOFUNN.js";
|
|
18
|
+
|
|
19
|
+
// packages/cli/src/commands/chat/files.ts
|
|
20
|
+
var cmd = command({
|
|
21
|
+
name: "volute chat files",
|
|
22
|
+
description: "List pending incoming files",
|
|
23
|
+
flags: {
|
|
24
|
+
mind: { type: "string", description: "Mind name" }
|
|
25
|
+
},
|
|
26
|
+
async run({ flags }) {
|
|
27
|
+
const mind = resolveMindName(flags);
|
|
28
|
+
const res = await daemonFetch(`/api/minds/${encodeURIComponent(mind)}/files/pending`);
|
|
29
|
+
if (!res.ok) {
|
|
30
|
+
const data = await res.json();
|
|
31
|
+
console.error(data.error ?? `Failed to list pending files: ${res.status}`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
const pending = await res.json();
|
|
35
|
+
if (pending.length === 0) {
|
|
36
|
+
console.log("No pending files.");
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const idW = Math.max(2, ...pending.map((p) => p.id.length));
|
|
40
|
+
const senderW = Math.max(6, ...pending.map((p) => p.sender.length));
|
|
41
|
+
const fileW = Math.max(4, ...pending.map((p) => p.filename.length));
|
|
42
|
+
console.log(`${"ID".padEnd(idW)} ${"SENDER".padEnd(senderW)} ${"FILE".padEnd(fileW)} SIZE`);
|
|
43
|
+
for (const p of pending) {
|
|
44
|
+
console.log(
|
|
45
|
+
`${p.id.padEnd(idW)} ${p.sender.padEnd(senderW)} ${p.filename.padEnd(fileW)} ${formatFileSize(p.size)}`
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
var run = cmd.execute;
|
|
51
|
+
export {
|
|
52
|
+
run
|
|
53
|
+
};
|