@tuskydp/cli 0.2.1 → 0.4.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/CHANGELOG.md +39 -0
- package/dist/src/commands/account.d.ts.map +1 -1
- package/dist/src/commands/account.js +0 -1
- package/dist/src/commands/account.js.map +1 -1
- package/dist/src/commands/auth.d.ts.map +1 -1
- package/dist/src/commands/auth.js +8 -5
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/download.d.ts +1 -0
- package/dist/src/commands/download.d.ts.map +1 -1
- package/dist/src/commands/download.js +35 -22
- package/dist/src/commands/download.js.map +1 -1
- package/dist/src/commands/export.d.ts +9 -24
- package/dist/src/commands/export.d.ts.map +1 -1
- package/dist/src/commands/export.js +31 -59
- package/dist/src/commands/export.js.map +1 -1
- package/dist/src/commands/files.d.ts.map +1 -1
- package/dist/src/commands/files.js +91 -12
- package/dist/src/commands/files.js.map +1 -1
- package/dist/src/commands/folder.d.ts +3 -0
- package/dist/src/commands/folder.d.ts.map +1 -0
- package/dist/src/commands/folder.js +151 -0
- package/dist/src/commands/folder.js.map +1 -0
- package/dist/src/commands/mcp.d.ts.map +1 -1
- package/dist/src/commands/mcp.js +15 -9
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/rehydrate.d.ts +1 -0
- package/dist/src/commands/rehydrate.d.ts.map +1 -1
- package/dist/src/commands/rehydrate.js +15 -7
- package/dist/src/commands/rehydrate.js.map +1 -1
- package/dist/src/commands/sui.d.ts +3 -0
- package/dist/src/commands/sui.d.ts.map +1 -0
- package/dist/src/commands/sui.js +64 -0
- package/dist/src/commands/sui.js.map +1 -0
- package/dist/src/commands/trash.d.ts +3 -0
- package/dist/src/commands/trash.d.ts.map +1 -0
- package/dist/src/commands/trash.js +109 -0
- package/dist/src/commands/trash.js.map +1 -0
- package/dist/src/commands/upload.d.ts +4 -0
- package/dist/src/commands/upload.d.ts.map +1 -1
- package/dist/src/commands/upload.js +82 -27
- package/dist/src/commands/upload.js.map +1 -1
- package/dist/src/commands/vault.d.ts.map +1 -1
- package/dist/src/commands/vault.js +2 -24
- package/dist/src/commands/vault.js.map +1 -1
- package/dist/src/commands/wallet.d.ts +3 -0
- package/dist/src/commands/wallet.d.ts.map +1 -0
- package/dist/src/commands/wallet.js +126 -0
- package/dist/src/commands/wallet.js.map +1 -0
- package/dist/src/commands/webhook.d.ts +3 -0
- package/dist/src/commands/webhook.d.ts.map +1 -0
- package/dist/src/commands/webhook.js +172 -0
- package/dist/src/commands/webhook.js.map +1 -0
- package/dist/src/config.d.ts +2 -2
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +2 -3
- package/dist/src/config.js.map +1 -1
- package/dist/src/index.js +19 -9
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/resolve.d.ts.map +1 -1
- package/dist/src/lib/resolve.js +4 -5
- package/dist/src/lib/resolve.js.map +1 -1
- package/dist/src/mcp/context.d.ts +1 -9
- package/dist/src/mcp/context.d.ts.map +1 -1
- package/dist/src/mcp/context.js +1 -2
- package/dist/src/mcp/context.js.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +2 -59
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/account.d.ts.map +1 -1
- package/dist/src/mcp/tools/account.js +1 -3
- package/dist/src/mcp/tools/account.js.map +1 -1
- package/dist/src/mcp/tools/files.d.ts +2 -3
- package/dist/src/mcp/tools/files.d.ts.map +1 -1
- package/dist/src/mcp/tools/files.js +46 -49
- package/dist/src/mcp/tools/files.js.map +1 -1
- package/dist/src/mcp/tools/vaults.js +2 -2
- package/dist/src/mcp/tools/vaults.js.map +1 -1
- package/dist/src/seal.d.ts +16 -0
- package/dist/src/seal.d.ts.map +1 -1
- package/dist/src/seal.js +23 -0
- package/dist/src/seal.js.map +1 -1
- package/dist/src/tui/files-panel.d.ts +31 -2
- package/dist/src/tui/files-panel.d.ts.map +1 -1
- package/dist/src/tui/files-panel.js +119 -13
- package/dist/src/tui/files-panel.js.map +1 -1
- package/dist/src/tui/index.d.ts.map +1 -1
- package/dist/src/tui/index.js +252 -48
- package/dist/src/tui/index.js.map +1 -1
- package/dist/src/tui/overview.d.ts.map +1 -1
- package/dist/src/tui/overview.js +21 -9
- package/dist/src/tui/overview.js.map +1 -1
- package/dist/src/tui/trash-screen.d.ts +4 -0
- package/dist/src/tui/trash-screen.d.ts.map +1 -0
- package/dist/src/tui/trash-screen.js +190 -0
- package/dist/src/tui/trash-screen.js.map +1 -0
- package/dist/src/tui/vaults-panel.d.ts +8 -0
- package/dist/src/tui/vaults-panel.d.ts.map +1 -1
- package/dist/src/tui/vaults-panel.js +45 -6
- package/dist/src/tui/vaults-panel.js.map +1 -1
- package/dist/src/version.d.ts +2 -0
- package/dist/src/version.d.ts.map +1 -0
- package/dist/src/version.js +21 -0
- package/dist/src/version.js.map +1 -0
- package/package.json +3 -3
- package/src/__tests__/seal.test.ts +7 -54
- package/src/commands/account.ts +0 -1
- package/src/commands/auth.ts +7 -5
- package/src/commands/download.ts +38 -28
- package/src/commands/export.ts +37 -81
- package/src/commands/files.ts +95 -11
- package/src/commands/folder.ts +169 -0
- package/src/commands/mcp.ts +16 -10
- package/src/commands/rehydrate.ts +15 -8
- package/src/commands/sui.ts +69 -0
- package/src/commands/trash.ts +121 -0
- package/src/commands/upload.ts +98 -31
- package/src/commands/vault.ts +2 -23
- package/src/commands/wallet.ts +183 -0
- package/src/commands/webhook.ts +193 -0
- package/src/config.ts +3 -4
- package/src/index.ts +19 -10
- package/src/lib/resolve.ts +3 -4
- package/src/mcp/context.ts +1 -11
- package/src/mcp/server.ts +2 -70
- package/src/mcp/tools/account.ts +1 -3
- package/src/mcp/tools/files.ts +50 -63
- package/src/mcp/tools/vaults.ts +3 -3
- package/src/seal.ts +34 -1
- package/src/tui/files-panel.ts +140 -14
- package/src/tui/index.ts +264 -52
- package/src/tui/overview.ts +20 -9
- package/src/tui/trash-screen.ts +203 -0
- package/src/tui/vaults-panel.ts +55 -6
- package/src/version.ts +21 -0
- package/vitest.config.ts +1 -0
- package/dist/src/client.d.ts +0 -120
- package/dist/src/client.d.ts.map +0 -1
- package/dist/src/client.js +0 -152
- package/dist/src/client.js.map +0 -1
- package/dist/src/commands/decrypt.d.ts +0 -15
- package/dist/src/commands/decrypt.d.ts.map +0 -1
- package/dist/src/commands/decrypt.js +0 -224
- package/dist/src/commands/decrypt.js.map +0 -1
- package/dist/src/commands/encryption.d.ts +0 -3
- package/dist/src/commands/encryption.d.ts.map +0 -1
- package/dist/src/commands/encryption.js +0 -254
- package/dist/src/commands/encryption.js.map +0 -1
- package/dist/src/crypto.d.ts +0 -16
- package/dist/src/crypto.d.ts.map +0 -1
- package/dist/src/crypto.js +0 -95
- package/dist/src/crypto.js.map +0 -1
- package/dist/src/lib/keyring.d.ts +0 -4
- package/dist/src/lib/keyring.d.ts.map +0 -1
- package/dist/src/lib/keyring.js +0 -49
- package/dist/src/lib/keyring.js.map +0 -1
- package/src/__tests__/crypto.test.ts +0 -315
- package/src/commands/decrypt.ts +0 -276
- package/src/commands/encryption.ts +0 -305
- package/src/crypto.ts +0 -130
- package/src/lib/keyring.ts +0 -50
package/dist/src/tui/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import blessed from 'blessed';
|
|
2
|
-
import { readFileSync, statSync, readdirSync } from 'fs';
|
|
2
|
+
import { readFileSync, writeFileSync, statSync, readdirSync } from 'fs';
|
|
3
|
+
import { randomUUID } from 'crypto';
|
|
3
4
|
import { basename, join } from 'path';
|
|
4
5
|
function collectFiles(dir) {
|
|
5
6
|
const results = [];
|
|
@@ -16,18 +17,18 @@ function collectFiles(dir) {
|
|
|
16
17
|
import { lookup } from 'mime-types';
|
|
17
18
|
import { createSDKClient } from '../sdk.js';
|
|
18
19
|
import { cliConfig, getApiUrl } from '../config.js';
|
|
19
|
-
import {
|
|
20
|
-
import { loadMasterKey } from '../lib/keyring.js';
|
|
20
|
+
import { isSealConfigured, sealEncrypt, sealDecrypt, getSuiKeypair } from '../seal.js';
|
|
21
21
|
import { showAuthScreen } from './auth-screen.js';
|
|
22
22
|
import { VaultsPanel } from './vaults-panel.js';
|
|
23
23
|
import { FilesPanel } from './files-panel.js';
|
|
24
24
|
import { StatusBar } from './status-bar.js';
|
|
25
25
|
import { showOverview } from './overview.js';
|
|
26
|
+
import { showTrashScreen } from './trash-screen.js';
|
|
26
27
|
import { confirmDialog, textInputDialog, selectDialog, detailPopup, fileBrowserDialog } from './dialogs.js';
|
|
27
28
|
import { formatBytes, formatDate, showError, showMessage, statusColor, statusColorClose, cycleTheme } from './helpers.js';
|
|
28
29
|
function formatDetailTable(rows) {
|
|
29
30
|
const labelW = Math.max(...rows.map(([l]) => l.length));
|
|
30
|
-
return rows.map(([label, value]) => ` {bold}${label.padEnd(labelW)}{/bold}
|
|
31
|
+
return rows.map(([label, value]) => ` {bold}${label.padEnd(labelW)}{/bold} | ${value}`).join('\n');
|
|
31
32
|
}
|
|
32
33
|
export async function launchTui() {
|
|
33
34
|
const screen = blessed.screen({
|
|
@@ -65,6 +66,7 @@ export async function launchTui() {
|
|
|
65
66
|
});
|
|
66
67
|
const statusBar = new StatusBar(screen);
|
|
67
68
|
const vaultsPanel = new VaultsPanel(screen, sdk, leftBox, (vault) => {
|
|
69
|
+
filesPanel.resetFolderNav();
|
|
68
70
|
filesPanel.loadForVault(vault.id, vault.name);
|
|
69
71
|
});
|
|
70
72
|
const filesPanel = new FilesPanel(screen, sdk, rightBox);
|
|
@@ -74,12 +76,12 @@ export async function launchTui() {
|
|
|
74
76
|
if (target === 'vaults') {
|
|
75
77
|
vaultsPanel.focus();
|
|
76
78
|
filesPanel.blur();
|
|
77
|
-
statusBar.setHints('n:new
|
|
79
|
+
statusBar.setHints('n:new <->:switch u:upload o:overview T:trash ?:help');
|
|
78
80
|
}
|
|
79
81
|
else {
|
|
80
82
|
filesPanel.focus();
|
|
81
83
|
vaultsPanel.blur();
|
|
82
|
-
statusBar.setHints('u:upload
|
|
84
|
+
statusBar.setHints('d:download u:upload f:folder R:remove r:retry T:trash ?:help');
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
// Load account info for status bar
|
|
@@ -105,28 +107,72 @@ export async function launchTui() {
|
|
|
105
107
|
setFocus('files');
|
|
106
108
|
}
|
|
107
109
|
});
|
|
110
|
+
// ── Create vault (n) — now with shared option ──────────────────────
|
|
108
111
|
screen.key(['n'], async () => {
|
|
109
112
|
const name = await textInputDialog(screen, 'Vault name');
|
|
110
113
|
if (!name) {
|
|
111
114
|
setFocus(currentFocus);
|
|
112
115
|
return;
|
|
113
116
|
}
|
|
114
|
-
const visIdx = await selectDialog(screen, 'Visibility', ['
|
|
117
|
+
const visIdx = await selectDialog(screen, 'Visibility', ['public', 'shared']);
|
|
115
118
|
if (visIdx < 0) {
|
|
116
119
|
setFocus(currentFocus);
|
|
117
120
|
return;
|
|
118
121
|
}
|
|
119
|
-
const
|
|
122
|
+
const visMap = ['public', 'shared'];
|
|
123
|
+
const visibility = visMap[visIdx];
|
|
120
124
|
try {
|
|
121
|
-
|
|
125
|
+
if (visibility === 'shared') {
|
|
126
|
+
// Validate Sui address is linked
|
|
127
|
+
const acct = await sdk.account.get();
|
|
128
|
+
if (!acct.suiAddress) {
|
|
129
|
+
showError(screen, 'Link a Sui address first: tusky account link-sui <addr>');
|
|
130
|
+
setFocus(currentFocus);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const created = await sdk.vaults.create({ name, visibility });
|
|
122
135
|
await vaultsPanel.load();
|
|
123
|
-
|
|
136
|
+
let msg = `Vault "${name}" created [${visibility}]`;
|
|
137
|
+
if (visibility === 'shared' && created.sealAllowlistObjectId) {
|
|
138
|
+
msg += `\nSEAL allowlist: ${created.sealAllowlistObjectId}`;
|
|
139
|
+
}
|
|
140
|
+
showMessage(screen, msg);
|
|
124
141
|
}
|
|
125
142
|
catch (err) {
|
|
126
143
|
showError(screen, err.message);
|
|
127
144
|
}
|
|
128
145
|
setFocus(currentFocus);
|
|
129
146
|
});
|
|
147
|
+
// ── Create folder (f) ──────────────────────────────────────────────
|
|
148
|
+
screen.key(['f'], async () => {
|
|
149
|
+
if (currentFocus !== 'files')
|
|
150
|
+
return;
|
|
151
|
+
const vaultId = filesPanel.getCurrentVaultId();
|
|
152
|
+
if (!vaultId) {
|
|
153
|
+
showError(screen, 'Select a vault first');
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const name = await textInputDialog(screen, 'Folder name');
|
|
157
|
+
if (!name) {
|
|
158
|
+
setFocus(currentFocus);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
await sdk.folders.create({
|
|
163
|
+
vaultId,
|
|
164
|
+
parentId: filesPanel.getCurrentFolderId() || undefined,
|
|
165
|
+
name,
|
|
166
|
+
});
|
|
167
|
+
await filesPanel.loadForVault(vaultId, filesPanel.getCurrentVaultName());
|
|
168
|
+
showMessage(screen, `Folder "${name}" created`);
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
showError(screen, err.message);
|
|
172
|
+
}
|
|
173
|
+
setFocus(currentFocus);
|
|
174
|
+
});
|
|
175
|
+
// ── Upload (u) — with SEAL support and folder awareness ────────────
|
|
130
176
|
screen.key(['u'], async () => {
|
|
131
177
|
const vaultId = filesPanel.getCurrentVaultId();
|
|
132
178
|
if (!vaultId) {
|
|
@@ -154,18 +200,18 @@ export async function launchTui() {
|
|
|
154
200
|
}
|
|
155
201
|
try {
|
|
156
202
|
const vault = await sdk.vaults.get(vaultId);
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
showError(screen, 'Encryption session not unlocked. Run: tusky encryption unlock');
|
|
203
|
+
const isShared = vault.visibility === 'shared' && isSealConfigured(vault);
|
|
204
|
+
if (isShared) {
|
|
205
|
+
const keypair = getSuiKeypair();
|
|
206
|
+
if (!keypair) {
|
|
207
|
+
showError(screen, 'TUSKYDP_SUI_PRIVATE_KEY env var required for shared vault uploads');
|
|
163
208
|
setFocus(currentFocus);
|
|
164
209
|
return;
|
|
165
210
|
}
|
|
166
211
|
}
|
|
167
212
|
let successCount = 0;
|
|
168
213
|
const total = filePaths.length;
|
|
214
|
+
const currentFolderId = filesPanel.getCurrentFolderId();
|
|
169
215
|
for (const filePath of filePaths) {
|
|
170
216
|
const fileName = basename(filePath);
|
|
171
217
|
statusBar.setHints(`Uploading ${successCount + 1}/${total}: ${fileName}...`);
|
|
@@ -175,14 +221,15 @@ export async function launchTui() {
|
|
|
175
221
|
const mimeType = lookup(filePath) || 'application/octet-stream';
|
|
176
222
|
let uploadBody;
|
|
177
223
|
let encryptionMeta = {};
|
|
178
|
-
if (
|
|
179
|
-
|
|
180
|
-
|
|
224
|
+
if (isShared) {
|
|
225
|
+
statusBar.setHints(`SEAL encrypting ${successCount + 1}/${total}: ${fileName}...`);
|
|
226
|
+
screen.render();
|
|
227
|
+
const fileNonce = randomUUID();
|
|
228
|
+
const sealResult = await sealEncrypt(new Uint8Array(fileBuffer), vault, fileNonce);
|
|
229
|
+
uploadBody = Buffer.from(sealResult.encryptedData);
|
|
181
230
|
encryptionMeta = {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
plaintextSizeBytes: stat.size,
|
|
185
|
-
plaintextChecksumSha256: plaintextChecksum,
|
|
231
|
+
sealIdentity: sealResult.sealIdentity,
|
|
232
|
+
sealEncryptedObject: sealResult.sealEncryptedObject,
|
|
186
233
|
};
|
|
187
234
|
}
|
|
188
235
|
else {
|
|
@@ -193,6 +240,7 @@ export async function launchTui() {
|
|
|
193
240
|
mimeType,
|
|
194
241
|
sizeBytes: uploadBody.length,
|
|
195
242
|
vaultId,
|
|
243
|
+
...(currentFolderId ? { folderId: currentFolderId } : {}),
|
|
196
244
|
...encryptionMeta,
|
|
197
245
|
});
|
|
198
246
|
const uploadResponse = await fetch(uploadUrl, {
|
|
@@ -205,7 +253,8 @@ export async function launchTui() {
|
|
|
205
253
|
await sdk.files.confirmUpload(fileId);
|
|
206
254
|
successCount++;
|
|
207
255
|
}
|
|
208
|
-
|
|
256
|
+
const label = isShared ? 'shared/SEAL' : 'public';
|
|
257
|
+
showMessage(screen, `Uploaded ${successCount} file(s) [${label}]`);
|
|
209
258
|
await filesPanel.loadForVault(vaultId, filesPanel.getCurrentVaultName());
|
|
210
259
|
await vaultsPanel.load();
|
|
211
260
|
}
|
|
@@ -214,11 +263,93 @@ export async function launchTui() {
|
|
|
214
263
|
}
|
|
215
264
|
setFocus(currentFocus);
|
|
216
265
|
});
|
|
217
|
-
|
|
266
|
+
// ── Download (d) — download selected file to local disk ─────────────
|
|
267
|
+
screen.key(['d'], async () => {
|
|
268
|
+
if (currentFocus !== 'files')
|
|
269
|
+
return;
|
|
270
|
+
const file = filesPanel.getSelected();
|
|
271
|
+
if (!file) {
|
|
272
|
+
showError(screen, 'Select a file to download');
|
|
273
|
+
setFocus(currentFocus);
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
statusBar.setHints(`Downloading "${file.name}"...`);
|
|
277
|
+
screen.render();
|
|
278
|
+
try {
|
|
279
|
+
// Get download URL + encryption info
|
|
280
|
+
let dlResponse = await sdk.files.getDownloadUrl(file.id);
|
|
281
|
+
let { downloadUrl, status: dlStatus, encryption } = dlResponse;
|
|
282
|
+
// Poll if rehydrating from cold storage
|
|
283
|
+
if (dlStatus === 'rehydrating') {
|
|
284
|
+
statusBar.setHints(`Rehydrating "${file.name}" from Walrus...`);
|
|
285
|
+
screen.render();
|
|
286
|
+
for (let i = 0; i < 30; i++) {
|
|
287
|
+
await new Promise(r => setTimeout(r, 2000));
|
|
288
|
+
const check = await sdk.files.getDownloadUrl(file.id);
|
|
289
|
+
if (check.status === 'ready') {
|
|
290
|
+
downloadUrl = check.downloadUrl;
|
|
291
|
+
encryption = check.encryption;
|
|
292
|
+
dlStatus = 'ready';
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
if (dlStatus !== 'ready') {
|
|
297
|
+
showError(screen, 'File rehydration timed out. Try again later.');
|
|
298
|
+
setFocus(currentFocus);
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
if (!downloadUrl) {
|
|
303
|
+
showError(screen, 'No download URL available.');
|
|
304
|
+
setFocus(currentFocus);
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
// Download the bytes
|
|
308
|
+
statusBar.setHints(`Downloading "${file.name}"...`);
|
|
309
|
+
screen.render();
|
|
310
|
+
const response = await fetch(downloadUrl);
|
|
311
|
+
if (!response.ok)
|
|
312
|
+
throw new Error(`Download failed: ${response.status}`);
|
|
313
|
+
const arrayBuf = await response.arrayBuffer();
|
|
314
|
+
let fileBuffer = Buffer.from(new Uint8Array(arrayBuf));
|
|
315
|
+
// Decrypt if needed — SEAL-encrypted (shared vault)
|
|
316
|
+
if (encryption?.encrypted) {
|
|
317
|
+
if ('type' in encryption && encryption.type === 'seal') {
|
|
318
|
+
statusBar.setHints(`SEAL decrypting "${file.name}"...`);
|
|
319
|
+
screen.render();
|
|
320
|
+
const keypair = getSuiKeypair();
|
|
321
|
+
if (!keypair) {
|
|
322
|
+
showError(screen, 'TUSKYDP_SUI_PRIVATE_KEY env var required for shared vault files');
|
|
323
|
+
setFocus(currentFocus);
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
const fileInfo = await sdk.files.get(file.id);
|
|
327
|
+
const vault = await sdk.vaults.get(fileInfo.vaultId);
|
|
328
|
+
const decrypted = await sealDecrypt(new Uint8Array(fileBuffer), vault, keypair);
|
|
329
|
+
fileBuffer = Buffer.from(decrypted);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
// Write to disk
|
|
333
|
+
const outputPath = join(process.cwd(), file.name);
|
|
334
|
+
writeFileSync(outputPath, fileBuffer);
|
|
335
|
+
showMessage(screen, `Downloaded "${file.name}" (${formatBytes(fileBuffer.length)})\n-> ${outputPath}`);
|
|
336
|
+
}
|
|
337
|
+
catch (err) {
|
|
338
|
+
showError(screen, err.message);
|
|
339
|
+
}
|
|
340
|
+
setFocus(currentFocus);
|
|
341
|
+
});
|
|
342
|
+
// ── Remove (R = Shift+r) — delete selected item ───────────────────
|
|
343
|
+
screen.key(['S-r'], async () => {
|
|
218
344
|
if (currentFocus === 'vaults') {
|
|
219
345
|
const vault = vaultsPanel.getSelected();
|
|
220
346
|
if (!vault)
|
|
221
347
|
return;
|
|
348
|
+
if (vault.isSharedMembership) {
|
|
349
|
+
showError(screen, 'Cannot delete a vault you are a member of (not owner)');
|
|
350
|
+
setFocus(currentFocus);
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
222
353
|
const confirmed = await confirmDialog(screen, `Delete vault "${vault.name}" and ALL its files?`);
|
|
223
354
|
if (confirmed) {
|
|
224
355
|
try {
|
|
@@ -234,28 +365,47 @@ export async function launchTui() {
|
|
|
234
365
|
setFocus(currentFocus);
|
|
235
366
|
}
|
|
236
367
|
else {
|
|
237
|
-
const
|
|
238
|
-
if (!
|
|
368
|
+
const item = filesPanel.getSelectedItem();
|
|
369
|
+
if (!item)
|
|
239
370
|
return;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
371
|
+
if (item.type === 'folder') {
|
|
372
|
+
const confirmed = await confirmDialog(screen, `Delete folder "${item.folder.name}"?`);
|
|
373
|
+
if (confirmed) {
|
|
374
|
+
try {
|
|
375
|
+
await sdk.folders.delete(item.folder.id);
|
|
376
|
+
const vaultId = filesPanel.getCurrentVaultId();
|
|
377
|
+
if (vaultId) {
|
|
378
|
+
await filesPanel.loadForVault(vaultId, filesPanel.getCurrentVaultName());
|
|
379
|
+
}
|
|
380
|
+
showMessage(screen, `Folder "${item.folder.name}" deleted`);
|
|
381
|
+
}
|
|
382
|
+
catch (err) {
|
|
383
|
+
showError(screen, err.message);
|
|
248
384
|
}
|
|
249
|
-
showMessage(screen, `File "${file.name}" deleted`);
|
|
250
385
|
}
|
|
251
|
-
|
|
252
|
-
|
|
386
|
+
}
|
|
387
|
+
else if (item.type === 'file') {
|
|
388
|
+
const confirmed = await confirmDialog(screen, `Delete file "${item.file.name}"?`);
|
|
389
|
+
if (confirmed) {
|
|
390
|
+
try {
|
|
391
|
+
await sdk.files.delete(item.file.id);
|
|
392
|
+
const vaultId = filesPanel.getCurrentVaultId();
|
|
393
|
+
if (vaultId) {
|
|
394
|
+
await filesPanel.loadForVault(vaultId, filesPanel.getCurrentVaultName());
|
|
395
|
+
await vaultsPanel.load();
|
|
396
|
+
}
|
|
397
|
+
showMessage(screen, `File "${item.file.name}" moved to trash`);
|
|
398
|
+
}
|
|
399
|
+
catch (err) {
|
|
400
|
+
showError(screen, err.message);
|
|
401
|
+
}
|
|
253
402
|
}
|
|
254
403
|
}
|
|
255
404
|
setFocus(currentFocus);
|
|
256
405
|
}
|
|
257
406
|
});
|
|
258
|
-
|
|
407
|
+
// ── Enter / Space — detail popup or folder navigation ──────────────
|
|
408
|
+
screen.key(['enter', 'space'], async () => {
|
|
259
409
|
if (currentFocus === 'vaults') {
|
|
260
410
|
const vault = vaultsPanel.getSelected();
|
|
261
411
|
if (vault) {
|
|
@@ -267,29 +417,71 @@ export async function launchTui() {
|
|
|
267
417
|
['Files', String(vault.fileCount)],
|
|
268
418
|
['Size', formatBytes(vault.totalSizeBytes)],
|
|
269
419
|
];
|
|
420
|
+
if (vault.description) {
|
|
421
|
+
rows.push(['Description', vault.description]);
|
|
422
|
+
}
|
|
423
|
+
if (vault.createdAt) {
|
|
424
|
+
rows.push(['Created', formatDate(vault.createdAt)]);
|
|
425
|
+
}
|
|
426
|
+
if (vault.isSharedMembership) {
|
|
427
|
+
rows.push(['Your Role', vault.memberRole || 'member']);
|
|
428
|
+
}
|
|
429
|
+
if (vault.visibility === 'shared') {
|
|
430
|
+
rows.push(['', '']);
|
|
431
|
+
rows.push(['{cyan-fg}SEAL Config{/cyan-fg}', '']);
|
|
432
|
+
rows.push(['Allowlist', vault.sealAllowlistObjectId || 'N/A']);
|
|
433
|
+
rows.push(['Package', vault.sealPackageId || 'N/A']);
|
|
434
|
+
rows.push(['Threshold', String(vault.sealThreshold ?? 'N/A')]);
|
|
435
|
+
rows.push(['Key Servers', String(vault.sealKeyServerIds?.length ?? 0)]);
|
|
436
|
+
}
|
|
270
437
|
detailPopup(screen, vault.name, formatDetailTable(rows));
|
|
271
438
|
}
|
|
272
439
|
}
|
|
273
440
|
else {
|
|
274
|
-
const
|
|
275
|
-
if (
|
|
441
|
+
const item = filesPanel.getSelectedItem();
|
|
442
|
+
if (!item)
|
|
443
|
+
return;
|
|
444
|
+
if (item.type === 'parent') {
|
|
445
|
+
// Navigate up
|
|
446
|
+
await filesPanel.navigateUp();
|
|
447
|
+
setFocus(currentFocus);
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
if (item.type === 'folder') {
|
|
451
|
+
// Navigate into folder
|
|
452
|
+
await filesPanel.navigateToFolder(item.folder.id, item.folder.name);
|
|
453
|
+
setFocus(currentFocus);
|
|
454
|
+
return;
|
|
455
|
+
}
|
|
456
|
+
if (item.type === 'file') {
|
|
457
|
+
const file = item.file;
|
|
276
458
|
const open = statusColor(file.status);
|
|
277
459
|
const close = statusColorClose(file.status);
|
|
278
460
|
const rows = [
|
|
279
461
|
['Name', file.name],
|
|
280
462
|
['ID', file.id],
|
|
281
463
|
['MIME', file.mimeType],
|
|
282
|
-
['Size', formatBytes(file.
|
|
464
|
+
['Size', formatBytes(file.sizeBytes)],
|
|
283
465
|
['Status', `${open}${file.status}${close}`],
|
|
284
466
|
['Encrypted', file.encrypted ? 'Yes' : 'No'],
|
|
285
467
|
['Uploaded', file.createdAt ? formatDate(file.createdAt) : 'N/A'],
|
|
286
468
|
['Blob ID', file.walrusBlobId || 'N/A'],
|
|
287
469
|
['Blob Object', file.walrusBlobObjectId || 'N/A'],
|
|
288
470
|
];
|
|
471
|
+
if (file.folderId) {
|
|
472
|
+
rows.push(['Folder ID', file.folderId]);
|
|
473
|
+
}
|
|
474
|
+
if (file.autoRenew) {
|
|
475
|
+
rows.push(['Auto-Renew', '{green-fg}On{/green-fg}']);
|
|
476
|
+
}
|
|
477
|
+
if (file.ppuEpochEnd) {
|
|
478
|
+
rows.push(['PPU Epoch', formatDate(file.ppuEpochEnd)]);
|
|
479
|
+
}
|
|
289
480
|
detailPopup(screen, file.name, formatDetailTable(rows));
|
|
290
481
|
}
|
|
291
482
|
}
|
|
292
483
|
});
|
|
484
|
+
// ── Retry (r) ──────────────────────────────────────────────────────
|
|
293
485
|
screen.key(['r'], async () => {
|
|
294
486
|
if (currentFocus === 'files') {
|
|
295
487
|
const file = filesPanel.getSelected();
|
|
@@ -313,10 +505,19 @@ export async function launchTui() {
|
|
|
313
505
|
setFocus(currentFocus);
|
|
314
506
|
}
|
|
315
507
|
});
|
|
508
|
+
// ── Overview (o) ───────────────────────────────────────────────────
|
|
316
509
|
screen.key(['o'], async () => {
|
|
317
510
|
await showOverview(screen, sdk);
|
|
318
511
|
setFocus(currentFocus);
|
|
319
512
|
});
|
|
513
|
+
// ── Trash (T = Shift+t) ───────────────────────────────────────────
|
|
514
|
+
screen.key(['S-t'], async () => {
|
|
515
|
+
await showTrashScreen(screen, sdk);
|
|
516
|
+
// Reload vaults panel in case restores happened
|
|
517
|
+
await vaultsPanel.load();
|
|
518
|
+
setFocus(currentFocus);
|
|
519
|
+
});
|
|
520
|
+
// ── Logout (L = Shift+l) ──────────────────────────────────────────
|
|
320
521
|
screen.key(['S-l'], async () => {
|
|
321
522
|
const confirmed = await confirmDialog(screen, 'Log out?');
|
|
322
523
|
if (confirmed) {
|
|
@@ -351,19 +552,22 @@ export async function launchTui() {
|
|
|
351
552
|
'{bold}{cyan-fg}Tusky TUI — Keyboard Shortcuts{/cyan-fg}{/bold}',
|
|
352
553
|
'',
|
|
353
554
|
'{bold}Navigation{/bold}',
|
|
354
|
-
'
|
|
555
|
+
' <-/-> Switch between vaults/files',
|
|
355
556
|
' Tab Switch between vaults/files',
|
|
356
557
|
' Up/Down Navigate list',
|
|
558
|
+
' Enter Open folder / view details',
|
|
357
559
|
'',
|
|
358
560
|
'{bold}Actions{/bold}',
|
|
359
|
-
' n Create new vault',
|
|
360
|
-
'
|
|
361
|
-
'
|
|
362
|
-
'
|
|
363
|
-
'
|
|
561
|
+
' n Create new vault (public/shared)',
|
|
562
|
+
' f Create folder in current vault',
|
|
563
|
+
' u Upload file to current vault/folder',
|
|
564
|
+
' d Download selected file',
|
|
565
|
+
' R Remove selected item (trash for files)',
|
|
566
|
+
' r Retry failed file sync',
|
|
364
567
|
'',
|
|
365
568
|
'{bold}Screens{/bold}',
|
|
366
569
|
' o Overview (account, storage, files)',
|
|
570
|
+
' T Trash management (list, restore, delete)',
|
|
367
571
|
' t Cycle theme',
|
|
368
572
|
' L Logout',
|
|
369
573
|
' ? This help',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tui/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tui/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../../src/tui/overview.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,wBAAsB,YAAY,CAChC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAC9B,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../../src/tui/overview.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,wBAAsB,YAAY,CAChC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAC9B,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,IAAI,CAAC,CA8Jf"}
|
package/dist/src/tui/overview.js
CHANGED
|
@@ -61,13 +61,25 @@ export async function showOverview(screen, sdk) {
|
|
|
61
61
|
content += `{bold}{cyan-fg}Vaults (${vaults.length}){/cyan-fg}{/bold}\n`;
|
|
62
62
|
if (vaults.length > 0) {
|
|
63
63
|
// Calculate column widths for vaults table
|
|
64
|
-
const vaultRows = vaults.map((v) =>
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
64
|
+
const vaultRows = vaults.map((v) => {
|
|
65
|
+
let vis;
|
|
66
|
+
let visTag;
|
|
67
|
+
if (v.visibility === 'shared') {
|
|
68
|
+
vis = 'shared';
|
|
69
|
+
visTag = '{magenta-fg}shared{/magenta-fg}';
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
vis = 'public';
|
|
73
|
+
visTag = '{green-fg}public{/green-fg}';
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
name: v.name || '',
|
|
77
|
+
vis,
|
|
78
|
+
visTag,
|
|
79
|
+
files: String(v.fileCount || 0),
|
|
80
|
+
size: formatBytes(v.totalSizeBytes || 0),
|
|
81
|
+
};
|
|
82
|
+
});
|
|
71
83
|
const vNameW = Math.max(4, ...vaultRows.map((r) => r.name.length));
|
|
72
84
|
const vVisW = 7; // "private" is longest
|
|
73
85
|
const vFilesW = Math.max(5, ...vaultRows.map((r) => r.files.length));
|
|
@@ -90,7 +102,7 @@ export async function showOverview(screen, sdk) {
|
|
|
90
102
|
// Calculate column widths for files table
|
|
91
103
|
const fileRows = files.map((f) => ({
|
|
92
104
|
name: f.name || '',
|
|
93
|
-
size: formatBytes(f.
|
|
105
|
+
size: formatBytes(f.sizeBytes ?? 0),
|
|
94
106
|
status: f.status || '',
|
|
95
107
|
statusTag: `${statusColor(f.status)}${f.status}${statusColorClose(f.status)}`,
|
|
96
108
|
date: f.createdAt ? formatDate(f.createdAt) : 'N/A',
|
|
@@ -105,7 +117,7 @@ export async function showOverview(screen, sdk) {
|
|
|
105
117
|
content += ` ${'Name'.padEnd(maxNameW)} ${'Size'.padStart(fSizeW)} ${'Status'.padEnd(fStatW)} ${'Date'.padEnd(fDateW)}\n`;
|
|
106
118
|
content += ` ${'─'.repeat(maxNameW)} ${'─'.repeat(fSizeW)} ${'─'.repeat(fStatW)} ${'─'.repeat(fDateW)}\n`;
|
|
107
119
|
for (const r of fileRows) {
|
|
108
|
-
const truncName = r.name.length > maxNameW ? r.name.slice(0, maxNameW - 1) + '
|
|
120
|
+
const truncName = r.name.length > maxNameW ? r.name.slice(0, maxNameW - 1) + '...' : r.name;
|
|
109
121
|
const statusPad = ' '.repeat(Math.max(0, fStatW - r.status.length));
|
|
110
122
|
content += ` ${truncName.padEnd(maxNameW)} ${r.size.padStart(fSizeW)} ${r.statusTag}${statusPad} ${r.date}\n`;
|
|
111
123
|
}
|