@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
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import inquirer from 'inquirer';
|
|
3
|
+
import { cliConfig } from '../config.js';
|
|
4
|
+
import { getSDKClientFromParent } from '../sdk.js';
|
|
5
|
+
import { createTable, formatDate, shortId } from '../lib/output.js';
|
|
6
|
+
export function registerWebhookCommands(program) {
|
|
7
|
+
const webhook = program.command('webhook').description('Manage webhook endpoints');
|
|
8
|
+
// ── create ──────────────────────────────────────────────────────────
|
|
9
|
+
webhook.command('create <url>')
|
|
10
|
+
.description('Create a webhook endpoint')
|
|
11
|
+
.requiredOption('--events <events>', 'Comma-separated list of events to subscribe to')
|
|
12
|
+
.option('--description <text>', 'Webhook description')
|
|
13
|
+
.action(async (url, options) => {
|
|
14
|
+
const sdk = getSDKClientFromParent(webhook);
|
|
15
|
+
const events = options.events.split(',').map((e) => e.trim());
|
|
16
|
+
const created = await sdk.webhooks.create({
|
|
17
|
+
url,
|
|
18
|
+
events: events,
|
|
19
|
+
description: options.description,
|
|
20
|
+
});
|
|
21
|
+
console.log(chalk.green(`Webhook created: ${created.id}`));
|
|
22
|
+
console.log(`URL: ${created.url}`);
|
|
23
|
+
console.log(`Events: ${created.events.join(', ')}`);
|
|
24
|
+
if (created.secret) {
|
|
25
|
+
console.log(chalk.yellow.bold(`Secret: ${created.secret}`));
|
|
26
|
+
console.log(chalk.yellow(' Save this secret — it will not be shown again.'));
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
// ── list ────────────────────────────────────────────────────────────
|
|
30
|
+
webhook.command('list')
|
|
31
|
+
.description('List webhook endpoints')
|
|
32
|
+
.action(async () => {
|
|
33
|
+
const sdk = getSDKClientFromParent(webhook);
|
|
34
|
+
const root = webhook.parent || webhook;
|
|
35
|
+
const format = root.opts().format || cliConfig.get('outputFormat');
|
|
36
|
+
const webhooks = await sdk.webhooks.list();
|
|
37
|
+
if (format === 'json') {
|
|
38
|
+
console.log(JSON.stringify(webhooks, null, 2));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (webhooks.length === 0) {
|
|
42
|
+
console.log(chalk.dim('No webhook endpoints found.'));
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const table = createTable(['URL', 'Events', 'Active', 'Failures', 'ID']);
|
|
46
|
+
for (const w of webhooks) {
|
|
47
|
+
table.push([
|
|
48
|
+
w.url.length > 40 ? w.url.slice(0, 39) + '...' : w.url,
|
|
49
|
+
String(w.events.length) + ' event(s)',
|
|
50
|
+
w.active ? chalk.green('Yes') : chalk.red('No'),
|
|
51
|
+
w.failureCount > 0 ? chalk.yellow(String(w.failureCount)) : '0',
|
|
52
|
+
chalk.dim(shortId(w.id)),
|
|
53
|
+
]);
|
|
54
|
+
}
|
|
55
|
+
console.log(table.toString());
|
|
56
|
+
});
|
|
57
|
+
// ── info ────────────────────────────────────────────────────────────
|
|
58
|
+
webhook.command('info <webhook-id>')
|
|
59
|
+
.description('Show webhook endpoint details')
|
|
60
|
+
.action(async (webhookId) => {
|
|
61
|
+
const sdk = getSDKClientFromParent(webhook);
|
|
62
|
+
const root = webhook.parent || webhook;
|
|
63
|
+
const format = root.opts().format || cliConfig.get('outputFormat');
|
|
64
|
+
const w = await sdk.webhooks.get(webhookId);
|
|
65
|
+
if (format === 'json') {
|
|
66
|
+
console.log(JSON.stringify(w, null, 2));
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
console.log(`URL: ${w.url}`);
|
|
70
|
+
console.log(`Active: ${w.active ? chalk.green('Yes') : chalk.red('No')}`);
|
|
71
|
+
console.log(`Events: ${w.events.join(', ')}`);
|
|
72
|
+
console.log(`Description: ${w.description || chalk.dim('(none)')}`);
|
|
73
|
+
console.log(`Failures: ${w.failureCount}`);
|
|
74
|
+
if (w.lastDeliveryAt) {
|
|
75
|
+
console.log(`Last Delivery: ${formatDate(w.lastDeliveryAt)} (${w.lastDeliveryStatus})`);
|
|
76
|
+
}
|
|
77
|
+
console.log(`Created: ${new Date(w.createdAt).toLocaleString()}`);
|
|
78
|
+
console.log(`ID: ${w.id}`);
|
|
79
|
+
});
|
|
80
|
+
// ── update ──────────────────────────────────────────────────────────
|
|
81
|
+
webhook.command('update <webhook-id>')
|
|
82
|
+
.description('Update a webhook endpoint')
|
|
83
|
+
.option('--url <url>', 'New webhook URL')
|
|
84
|
+
.option('--events <events>', 'Comma-separated list of events')
|
|
85
|
+
.option('--active <bool>', 'Enable or disable (true/false)')
|
|
86
|
+
.option('--description <text>', 'New description')
|
|
87
|
+
.action(async (webhookId, options) => {
|
|
88
|
+
const sdk = getSDKClientFromParent(webhook);
|
|
89
|
+
const params = {};
|
|
90
|
+
if (options.url)
|
|
91
|
+
params.url = options.url;
|
|
92
|
+
if (options.events)
|
|
93
|
+
params.events = options.events.split(',').map((e) => e.trim());
|
|
94
|
+
if (options.active !== undefined)
|
|
95
|
+
params.active = options.active === 'true';
|
|
96
|
+
if (options.description)
|
|
97
|
+
params.description = options.description;
|
|
98
|
+
if (Object.keys(params).length === 0) {
|
|
99
|
+
console.error(chalk.red('Provide at least one option to update (--url, --events, --active, --description).'));
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
await sdk.webhooks.update(webhookId, params);
|
|
103
|
+
console.log(chalk.green('Webhook updated.'));
|
|
104
|
+
});
|
|
105
|
+
// ── delete ──────────────────────────────────────────────────────────
|
|
106
|
+
webhook.command('delete <webhook-id>')
|
|
107
|
+
.description('Delete a webhook endpoint')
|
|
108
|
+
.option('--force', 'Skip confirmation prompt')
|
|
109
|
+
.action(async (webhookId, options) => {
|
|
110
|
+
const sdk = getSDKClientFromParent(webhook);
|
|
111
|
+
if (!options.force) {
|
|
112
|
+
const answers = await inquirer.prompt([{
|
|
113
|
+
type: 'confirm',
|
|
114
|
+
name: 'confirm',
|
|
115
|
+
message: 'Delete this webhook endpoint?',
|
|
116
|
+
default: false,
|
|
117
|
+
}]);
|
|
118
|
+
if (!answers.confirm)
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
await sdk.webhooks.delete(webhookId);
|
|
122
|
+
console.log(chalk.green('Webhook deleted.'));
|
|
123
|
+
});
|
|
124
|
+
// ── test ────────────────────────────────────────────────────────────
|
|
125
|
+
webhook.command('test <webhook-id>')
|
|
126
|
+
.description('Send a test delivery to the webhook')
|
|
127
|
+
.action(async (webhookId) => {
|
|
128
|
+
const sdk = getSDKClientFromParent(webhook);
|
|
129
|
+
const delivery = await sdk.webhooks.test(webhookId);
|
|
130
|
+
console.log(chalk.green('Test delivery sent.'));
|
|
131
|
+
console.log(`Delivery ID: ${delivery.id}`);
|
|
132
|
+
console.log(`Event: ${delivery.event}`);
|
|
133
|
+
console.log(`Status: ${delivery.status}`);
|
|
134
|
+
});
|
|
135
|
+
// ── deliveries ──────────────────────────────────────────────────────
|
|
136
|
+
webhook.command('deliveries <webhook-id>')
|
|
137
|
+
.description('List recent webhook deliveries')
|
|
138
|
+
.option('--limit <n>', 'Max results', '20')
|
|
139
|
+
.action(async (webhookId, options) => {
|
|
140
|
+
const sdk = getSDKClientFromParent(webhook);
|
|
141
|
+
const root = webhook.parent || webhook;
|
|
142
|
+
const format = root.opts().format || cliConfig.get('outputFormat');
|
|
143
|
+
const deliveries = await sdk.webhooks.listDeliveries(webhookId, { limit: parseInt(options.limit) });
|
|
144
|
+
if (format === 'json') {
|
|
145
|
+
console.log(JSON.stringify(deliveries, null, 2));
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (deliveries.length === 0) {
|
|
149
|
+
console.log(chalk.dim('No deliveries found.'));
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const table = createTable(['Event', 'Status', 'HTTP', 'Attempts', 'Created', 'ID']);
|
|
153
|
+
const statusColors = {
|
|
154
|
+
success: chalk.green,
|
|
155
|
+
failed: chalk.red,
|
|
156
|
+
pending: chalk.yellow,
|
|
157
|
+
};
|
|
158
|
+
for (const d of deliveries) {
|
|
159
|
+
const sc = statusColors[d.status] || chalk.white;
|
|
160
|
+
table.push([
|
|
161
|
+
d.event,
|
|
162
|
+
sc(d.status),
|
|
163
|
+
d.httpStatus ? String(d.httpStatus) : '-',
|
|
164
|
+
`${d.attempts}/${d.maxAttempts}`,
|
|
165
|
+
formatDate(d.createdAt),
|
|
166
|
+
chalk.dim(shortId(d.id)),
|
|
167
|
+
]);
|
|
168
|
+
}
|
|
169
|
+
console.log(table.toString());
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/commands/webhook.ts"],"names":[],"mappings":"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"}
|
package/dist/src/config.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export interface TuskyDPConfig {
|
|
|
4
4
|
apiKey?: string;
|
|
5
5
|
defaultVault?: string;
|
|
6
6
|
outputFormat: 'table' | 'json' | 'plain';
|
|
7
|
-
|
|
7
|
+
suiPrivateKey?: string;
|
|
8
8
|
}
|
|
9
9
|
export declare const cliConfig: Conf<TuskyDPConfig>;
|
|
10
10
|
export declare function getApiUrl(override?: string): string;
|
|
@@ -12,7 +12,7 @@ export declare function getApiKey(override?: string): string;
|
|
|
12
12
|
export declare function getOutputFormat(override?: string): 'table' | 'json' | 'plain';
|
|
13
13
|
/**
|
|
14
14
|
* Get the Sui private key for SEAL operations on shared vaults.
|
|
15
|
-
*
|
|
15
|
+
* Priority: TUSKYDP_SUI_PRIVATE_KEY env var > stored config key.
|
|
16
16
|
*/
|
|
17
17
|
export declare function getSuiPrivateKey(): string | null;
|
|
18
18
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/src/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACzC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,SAAS,qBAMpB,CAAC;AAEH,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAOnD;AAID,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAG7E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAEhD"}
|
package/dist/src/config.js
CHANGED
|
@@ -4,7 +4,6 @@ export const cliConfig = new Conf({
|
|
|
4
4
|
defaults: {
|
|
5
5
|
apiUrl: 'https://api.tusky.ai',
|
|
6
6
|
outputFormat: 'table',
|
|
7
|
-
encryptionEnabled: true,
|
|
8
7
|
},
|
|
9
8
|
});
|
|
10
9
|
export function getApiUrl(override) {
|
|
@@ -26,9 +25,9 @@ export function getOutputFormat(override) {
|
|
|
26
25
|
}
|
|
27
26
|
/**
|
|
28
27
|
* Get the Sui private key for SEAL operations on shared vaults.
|
|
29
|
-
*
|
|
28
|
+
* Priority: TUSKYDP_SUI_PRIVATE_KEY env var > stored config key.
|
|
30
29
|
*/
|
|
31
30
|
export function getSuiPrivateKey() {
|
|
32
|
-
return process.env.TUSKYDP_SUI_PRIVATE_KEY || null;
|
|
31
|
+
return process.env.TUSKYDP_SUI_PRIVATE_KEY || cliConfig.get('suiPrivateKey') || null;
|
|
33
32
|
}
|
|
34
33
|
//# sourceMappingURL=config.js.map
|
package/dist/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAUxB,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAgB;IAC/C,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE;QACR,MAAM,EAAE,sBAAsB;QAC9B,YAAY,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAUxB,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAgB;IAC/C,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE;QACR,MAAM,EAAE,sBAAsB;QAC9B,YAAY,EAAE,OAAO;KACtB;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS,CAAC,QAAiB;IACzC,OAAO,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAiB;IACzC,MAAM,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/E,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1D,MAAM,UAAU,eAAe,CAAC,QAAiB;IAC/C,IAAI,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAsC,CAAC;IAC3F,OAAO,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC;AACvF,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { registerAuthCommands } from './commands/auth.js';
|
|
4
|
-
import { registerEncryptionCommands } from './commands/encryption.js';
|
|
5
4
|
import { registerVaultCommands } from './commands/vault.js';
|
|
6
5
|
import { registerFileCommands } from './commands/files.js';
|
|
7
6
|
import { registerAccountCommands } from './commands/account.js';
|
|
7
|
+
import { registerFolderCommands } from './commands/folder.js';
|
|
8
|
+
import { registerTrashCommands } from './commands/trash.js';
|
|
9
|
+
import { registerWebhookCommands } from './commands/webhook.js';
|
|
10
|
+
import { registerWalletCommands } from './commands/wallet.js';
|
|
8
11
|
import { uploadCommand } from './commands/upload.js';
|
|
9
12
|
import { downloadCommand } from './commands/download.js';
|
|
10
13
|
import { rehydrateCommand } from './commands/rehydrate.js';
|
|
11
14
|
import { registerTuiCommand } from './commands/tui.js';
|
|
12
15
|
import { registerMcpCommands } from './commands/mcp.js';
|
|
16
|
+
import { registerSuiCommands } from './commands/sui.js';
|
|
13
17
|
import { registerExportCommand } from './commands/export.js';
|
|
14
|
-
import {
|
|
15
|
-
import { createRequire } from 'module';
|
|
16
|
-
const __require = createRequire(import.meta.url);
|
|
17
|
-
const { version: VERSION } = __require('../../package.json');
|
|
18
|
+
import { CLI_VERSION } from './version.js';
|
|
18
19
|
const program = new Command();
|
|
19
20
|
program
|
|
20
21
|
.name('tusky')
|
|
21
22
|
.description('Tusky — Encrypted decentralized storage for developers, apps, and agents')
|
|
22
|
-
.version(
|
|
23
|
+
.version(CLI_VERSION)
|
|
23
24
|
.option('--api-key <key>', 'Override API key')
|
|
24
25
|
.option('--api-url <url>', 'Override API URL')
|
|
25
26
|
.option('--format <fmt>', 'Output format: table, json, plain', 'table')
|
|
@@ -34,31 +35,40 @@ program
|
|
|
34
35
|
}
|
|
35
36
|
});
|
|
36
37
|
registerAuthCommands(program);
|
|
37
|
-
registerEncryptionCommands(program);
|
|
38
38
|
registerVaultCommands(program);
|
|
39
39
|
registerFileCommands(program);
|
|
40
|
+
registerFolderCommands(program);
|
|
41
|
+
registerTrashCommands(program);
|
|
42
|
+
registerWebhookCommands(program);
|
|
43
|
+
registerWalletCommands(program);
|
|
40
44
|
registerAccountCommands(program);
|
|
41
45
|
registerTuiCommand(program);
|
|
42
46
|
registerMcpCommands(program);
|
|
47
|
+
registerSuiCommands(program);
|
|
43
48
|
registerExportCommand(program);
|
|
44
|
-
registerDecryptCommand(program);
|
|
45
49
|
// Direct shortcuts for common operations
|
|
46
|
-
program.command('upload
|
|
50
|
+
program.command('upload [paths...]')
|
|
47
51
|
.description('Upload files')
|
|
48
52
|
.option('--vault <vault>', 'Target vault')
|
|
53
|
+
.option('--folder <folder-id>', 'Target folder ID within the vault')
|
|
49
54
|
.option('--recursive', 'Upload directory contents')
|
|
55
|
+
.option('--content <text>', 'Upload inline text content instead of a file path')
|
|
56
|
+
.option('--stdin', 'Read file content from stdin')
|
|
57
|
+
.option('--name <filename>', 'File name to use (required with --content or --stdin)')
|
|
50
58
|
.action(async (paths, options) => {
|
|
51
59
|
await uploadCommand(paths, options, program);
|
|
52
60
|
});
|
|
53
61
|
program.command('download <file-id>')
|
|
54
62
|
.description('Download a file')
|
|
55
63
|
.option('--output <path>', 'Output path')
|
|
64
|
+
.option('--stdout', 'Write file content to stdout (for sandboxed agents without filesystem access)')
|
|
56
65
|
.action(async (fileId, options) => {
|
|
57
66
|
await downloadCommand(fileId, options, program);
|
|
58
67
|
});
|
|
59
68
|
program.command('rehydrate <blob-id>')
|
|
60
69
|
.description('Download a file directly from Walrus by blob ID')
|
|
61
70
|
.option('--output <path>', 'Output file path')
|
|
71
|
+
.option('--stdout', 'Write blob content to stdout (for sandboxed agents without filesystem access)')
|
|
62
72
|
.action(async (blobId, options) => {
|
|
63
73
|
await rehydrateCommand(blobId, options, program);
|
|
64
74
|
});
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/lib/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,wBAAsB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/lib/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,wBAAsB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBvF"}
|
package/dist/src/lib/resolve.js
CHANGED
|
@@ -5,12 +5,11 @@ export async function resolveVault(sdk, vaultRef) {
|
|
|
5
5
|
const defaultVault = cliConfig.get('defaultVault');
|
|
6
6
|
if (defaultVault)
|
|
7
7
|
return defaultVault;
|
|
8
|
-
// Fall back to the
|
|
8
|
+
// Fall back to the first vault
|
|
9
9
|
const vaults = await sdk.vaults.list();
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
throw new Error('No default vault found. Create one with: tusky vault create <name>');
|
|
10
|
+
if (vaults.length > 0)
|
|
11
|
+
return vaults[0].id;
|
|
12
|
+
throw new Error('No vault found. Create one with: tusky vault create <name>');
|
|
14
13
|
}
|
|
15
14
|
// If it looks like a UUID, use it directly
|
|
16
15
|
if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(vaultRef))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/lib/resolve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAgB,EAAE,QAAiB;IACpE,oDAAoD;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,YAAY;YAAE,OAAO,YAAY,CAAC;QAEtC
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/lib/resolve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAgB,EAAE,QAAiB;IACpE,oDAAoD;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,YAAY;YAAE,OAAO,YAAY,CAAC;QAEtC,+BAA+B;QAC/B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3C,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,2CAA2C;IAC3C,IAAI,iEAAiE,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEtG,+CAA+C;IAC/C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC7E,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,aAAa,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared context for MCP tool handlers.
|
|
3
3
|
*
|
|
4
|
-
* Holds the authenticated SDK client
|
|
5
|
-
* private vault encryption, and the Sui keypair for shared vault
|
|
4
|
+
* Holds the authenticated SDK client and the Sui keypair for shared vault
|
|
6
5
|
* SEAL encryption/decryption.
|
|
7
6
|
*/
|
|
8
7
|
import type { TuskyClient } from '@tuskydp/sdk';
|
|
@@ -10,13 +9,6 @@ import type { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';
|
|
|
10
9
|
export interface McpContext {
|
|
11
10
|
/** Authenticated Tusky SDK client. */
|
|
12
11
|
sdk: TuskyClient;
|
|
13
|
-
/**
|
|
14
|
-
* Returns the in-memory master key, or null if encryption was not
|
|
15
|
-
* unlocked (i.e. TUSKYDP_PASSWORD was not provided or setup is incomplete).
|
|
16
|
-
*/
|
|
17
|
-
getMasterKey(): Buffer | null;
|
|
18
|
-
/** True when the master key is available for encrypt/decrypt operations. */
|
|
19
|
-
isEncryptionReady(): boolean;
|
|
20
12
|
/**
|
|
21
13
|
* Returns the Sui Ed25519 keypair for SEAL operations, or null if
|
|
22
14
|
* TUSKYDP_SUI_PRIVATE_KEY was not provided.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/mcp/context.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/mcp/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,WAAW,UAAU;IACzB,sCAAsC;IACtC,GAAG,EAAE,WAAW,CAAC;IAEjB;;;OAGG;IACH,aAAa,IAAI,cAAc,GAAG,IAAI,CAAC;IAEvC,0EAA0E;IAC1E,WAAW,IAAI,OAAO,CAAC;CACxB"}
|
package/dist/src/mcp/context.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared context for MCP tool handlers.
|
|
3
3
|
*
|
|
4
|
-
* Holds the authenticated SDK client
|
|
5
|
-
* private vault encryption, and the Sui keypair for shared vault
|
|
4
|
+
* Holds the authenticated SDK client and the Sui keypair for shared vault
|
|
6
5
|
* SEAL encryption/decryption.
|
|
7
6
|
*/
|
|
8
7
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/mcp/context.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/mcp/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAqBH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD7E"}
|
package/dist/src/mcp/server.js
CHANGED
|
@@ -8,8 +8,6 @@
|
|
|
8
8
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
9
9
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
10
10
|
import { TuskyClient, TuskyError } from '@tuskydp/sdk';
|
|
11
|
-
import { deriveMasterKey, verifyPassphrase, unwrapMasterKey, } from '../crypto.js';
|
|
12
|
-
import { loadMasterKey } from '../lib/keyring.js';
|
|
13
11
|
import { getSuiKeypair } from '../seal.js';
|
|
14
12
|
// Tool registrars
|
|
15
13
|
import { registerAccountTools } from './tools/account.js';
|
|
@@ -18,51 +16,7 @@ import { registerFolderTools } from './tools/folders.js';
|
|
|
18
16
|
import { registerFileTools } from './tools/files.js';
|
|
19
17
|
import { registerTrashTools } from './tools/trash.js';
|
|
20
18
|
import { registerSharedVaultTools } from './tools/sharedVaults.js';
|
|
21
|
-
|
|
22
|
-
// Encryption bootstrap
|
|
23
|
-
// ---------------------------------------------------------------------------
|
|
24
|
-
/**
|
|
25
|
-
* Attempt to unlock the master key using (in order):
|
|
26
|
-
* 1. TUSKYDP_PASSWORD env var → derive wrapping key → unwrap master key
|
|
27
|
-
* 2. Existing session file (~/.tusky/session.enc)
|
|
28
|
-
*
|
|
29
|
-
* Returns the master key Buffer, or null if neither method works.
|
|
30
|
-
*/
|
|
31
|
-
async function unlockMasterKey(sdk) {
|
|
32
|
-
const password = process.env.TUSKYDP_PASSWORD;
|
|
33
|
-
if (password) {
|
|
34
|
-
try {
|
|
35
|
-
const params = await sdk.account.getEncryptionParams();
|
|
36
|
-
if (!params.setupComplete) {
|
|
37
|
-
console.error('[tusky-mcp] Encryption not set up on this account. Skipping encryption unlock.');
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
const salt = Buffer.from(params.salt, 'base64');
|
|
41
|
-
const verifier = Buffer.from(params.verifier, 'base64');
|
|
42
|
-
const wrappingKey = deriveMasterKey(password, salt);
|
|
43
|
-
if (!verifyPassphrase(wrappingKey, verifier)) {
|
|
44
|
-
console.error('[tusky-mcp] TUSKYDP_PASSWORD is incorrect. Encryption will be unavailable.');
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
if (params.encryptedMasterKey) {
|
|
48
|
-
return unwrapMasterKey(Buffer.from(params.encryptedMasterKey, 'base64'), wrappingKey);
|
|
49
|
-
}
|
|
50
|
-
// Legacy accounts where wrapping key IS the master key
|
|
51
|
-
return wrappingKey;
|
|
52
|
-
}
|
|
53
|
-
catch (err) {
|
|
54
|
-
console.error(`[tusky-mcp] Failed to unlock encryption: ${err.message}`);
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
// Fallback: try existing session file
|
|
59
|
-
const sessionKey = loadMasterKey();
|
|
60
|
-
if (sessionKey) {
|
|
61
|
-
console.error('[tusky-mcp] Using encryption key from existing session.');
|
|
62
|
-
return sessionKey;
|
|
63
|
-
}
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
19
|
+
import { CLI_VERSION } from '../version.js';
|
|
66
20
|
export async function startMcpServer(options) {
|
|
67
21
|
const { apiKey, apiUrl } = options;
|
|
68
22
|
// Create SDK client
|
|
@@ -81,15 +35,6 @@ export async function startMcpServer(options) {
|
|
|
81
35
|
}
|
|
82
36
|
process.exit(1);
|
|
83
37
|
}
|
|
84
|
-
// Unlock encryption (best effort)
|
|
85
|
-
const masterKey = await unlockMasterKey(sdk);
|
|
86
|
-
if (masterKey) {
|
|
87
|
-
console.error('[tusky-mcp] Encryption unlocked — private vault operations are available.');
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
console.error('[tusky-mcp] Encryption not unlocked — private vault encrypt/decrypt unavailable.');
|
|
91
|
-
console.error('[tusky-mcp] Set TUSKYDP_PASSWORD env var or run `tusky encryption unlock` first.');
|
|
92
|
-
}
|
|
93
38
|
// Load Sui keypair for SEAL shared vault operations (best effort)
|
|
94
39
|
const suiKeypair = getSuiKeypair();
|
|
95
40
|
if (suiKeypair) {
|
|
@@ -101,15 +46,13 @@ export async function startMcpServer(options) {
|
|
|
101
46
|
// Build context
|
|
102
47
|
const ctx = {
|
|
103
48
|
sdk,
|
|
104
|
-
getMasterKey: () => masterKey,
|
|
105
|
-
isEncryptionReady: () => masterKey !== null,
|
|
106
49
|
getSuiKeypair: () => suiKeypair,
|
|
107
50
|
isSealReady: () => suiKeypair !== null,
|
|
108
51
|
};
|
|
109
52
|
// Create MCP server
|
|
110
53
|
const server = new McpServer({
|
|
111
54
|
name: 'tusky',
|
|
112
|
-
version:
|
|
55
|
+
version: CLI_VERSION,
|
|
113
56
|
});
|
|
114
57
|
// Register all tools
|
|
115
58
|
registerAccountTools(server, ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/account.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/account.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,QA6BtE"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { wrapToolError } from './helpers.js';
|
|
5
5
|
export function registerAccountTools(server, ctx) {
|
|
6
|
-
server.tool('tusky_account_info', 'Get account information including email, plan, storage usage
|
|
6
|
+
server.tool('tusky_account_info', 'Get account information including email, plan, and storage usage', {}, async () => {
|
|
7
7
|
try {
|
|
8
8
|
const account = await ctx.sdk.account.get();
|
|
9
9
|
const info = {
|
|
@@ -15,8 +15,6 @@ export function registerAccountTools(server, ctx) {
|
|
|
15
15
|
storageLimit: account.storageLimitFormatted,
|
|
16
16
|
storageUsedBytes: account.storageUsedBytes,
|
|
17
17
|
storageLimitBytes: account.storageLimitBytes,
|
|
18
|
-
encryptionSetup: account.encryptionSetupComplete,
|
|
19
|
-
encryptionUnlocked: ctx.isEncryptionReady(),
|
|
20
18
|
createdAt: account.createdAt,
|
|
21
19
|
};
|
|
22
20
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../src/mcp/tools/account.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,GAAe;IACrE,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../src/mcp/tools/account.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,GAAe;IACrE,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,kEAAkE,EAClE,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YAE5C,MAAM,IAAI,GAAG;gBACX,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI,EAAE,OAAO,CAAC,QAAQ;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,WAAW,EAAE,OAAO,CAAC,oBAAoB;gBACzC,YAAY,EAAE,OAAO,CAAC,qBAAqB;gBAC3C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC1E,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP tools — File operations
|
|
3
3
|
*
|
|
4
|
-
* Handles upload with
|
|
5
|
-
*
|
|
6
|
-
* rehydration polling for cold files.
|
|
4
|
+
* Handles upload with SEAL encryption for shared vaults, download
|
|
5
|
+
* with decryption and rehydration polling for cold files.
|
|
7
6
|
*/
|
|
8
7
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
9
8
|
import type { McpContext } from '../context.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/files.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/files.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA0LhD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,QAiQnE"}
|