@claudeskill/cli 0.1.1 → 0.1.3
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/dist/onboarding.d.ts.map +1 -1
- package/dist/onboarding.js +145 -96
- package/dist/onboarding.js.map +1 -1
- package/package.json +2 -2
package/dist/onboarding.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../src/onboarding.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH;;GAEG;AACH,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../src/onboarding.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH;;GAEG;AACH,eAAO,MAAM,aAAa,qBAwVzB,CAAC"}
|
package/dist/onboarding.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import * as p from "@clack/prompts";
|
|
5
5
|
import { generateSalt, generateMasterKey, generateRecoveryKey, deriveKeyFromPassphrase, encryptMasterKey, formatRecoveryKey, toBase64, listAllSkills, } from "@claudeskill/core";
|
|
6
6
|
import { saveConfig, getDefaultConfig, getConfigDir } from "./config.js";
|
|
7
|
-
import { saveCredentials } from "./credentials.js";
|
|
7
|
+
import { saveCredentials, loadCredentials } from "./credentials.js";
|
|
8
8
|
import * as api from "./api.js";
|
|
9
9
|
import { pushSkills } from "./sync.js";
|
|
10
10
|
/**
|
|
@@ -125,65 +125,113 @@ export const runOnboarding = async () => {
|
|
|
125
125
|
}
|
|
126
126
|
spinner.stop("Verified!");
|
|
127
127
|
const { accessToken, refreshToken, user } = verifyResult.data;
|
|
128
|
-
//
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
encryptedMasterKeyFull.set(encryptedMaster.encrypted, encryptedMaster.iv.length + encryptedMaster.tag.length);
|
|
169
|
-
// Save credentials first so API calls have the access token
|
|
170
|
-
await saveCredentials({
|
|
171
|
-
accessToken,
|
|
172
|
-
refreshToken,
|
|
173
|
-
encryptedMasterKey: toBase64(encryptedMasterKeyFull),
|
|
174
|
-
salt: toBase64(salt),
|
|
175
|
-
});
|
|
176
|
-
// Upload salt to server
|
|
177
|
-
const saltResult = await api.setSalt(toBase64(salt));
|
|
178
|
-
if (!saltResult.ok) {
|
|
179
|
-
spinner.stop("Failed to save encryption settings");
|
|
180
|
-
p.log.error(saltResult.error);
|
|
181
|
-
process.exit(1);
|
|
128
|
+
// Check if this is an existing user (already has encryption set up)
|
|
129
|
+
if (!user.isNewUser) {
|
|
130
|
+
// Existing user - redirect to login flow
|
|
131
|
+
p.log.info("Welcome back! Enter your passphrase to unlock.");
|
|
132
|
+
// Get salt from server
|
|
133
|
+
// First save tokens temporarily so API calls work
|
|
134
|
+
await saveCredentials({
|
|
135
|
+
accessToken,
|
|
136
|
+
refreshToken,
|
|
137
|
+
encryptedMasterKey: "",
|
|
138
|
+
salt: "",
|
|
139
|
+
});
|
|
140
|
+
const saltResult = await api.getSalt();
|
|
141
|
+
if (!saltResult.ok) {
|
|
142
|
+
p.log.error(`Failed to get encryption settings: ${saltResult.error}`);
|
|
143
|
+
process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
const passphrase = await p.password({
|
|
146
|
+
message: "Vault passphrase:",
|
|
147
|
+
mask: "*",
|
|
148
|
+
});
|
|
149
|
+
if (p.isCancel(passphrase)) {
|
|
150
|
+
p.cancel("Setup cancelled.");
|
|
151
|
+
process.exit(0);
|
|
152
|
+
}
|
|
153
|
+
// Get master key from server
|
|
154
|
+
const existingCreds = await loadCredentials();
|
|
155
|
+
let encryptedMasterKey = existingCreds?.encryptedMasterKey ?? "";
|
|
156
|
+
const masterKeyResult = await api.getMasterKey();
|
|
157
|
+
if (masterKeyResult.ok && masterKeyResult.data.encryptedMasterKey) {
|
|
158
|
+
encryptedMasterKey = masterKeyResult.data.encryptedMasterKey;
|
|
159
|
+
}
|
|
160
|
+
// Save credentials
|
|
161
|
+
await saveCredentials({
|
|
162
|
+
accessToken,
|
|
163
|
+
refreshToken,
|
|
164
|
+
encryptedMasterKey,
|
|
165
|
+
salt: saltResult.data.salt,
|
|
166
|
+
});
|
|
167
|
+
p.log.success("Logged in successfully!");
|
|
182
168
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
169
|
+
else {
|
|
170
|
+
// New user - create passphrase and encryption keys
|
|
171
|
+
const passphrase = await p.password({
|
|
172
|
+
message: "Create a vault passphrase:",
|
|
173
|
+
mask: "*",
|
|
174
|
+
validate: (value) => {
|
|
175
|
+
if (!value)
|
|
176
|
+
return "Passphrase is required";
|
|
177
|
+
if (value.length < 8)
|
|
178
|
+
return "Passphrase must be at least 8 characters";
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
if (p.isCancel(passphrase)) {
|
|
182
|
+
p.cancel("Setup cancelled.");
|
|
183
|
+
process.exit(0);
|
|
184
|
+
}
|
|
185
|
+
const confirmPassphrase = await p.password({
|
|
186
|
+
message: "Confirm passphrase:",
|
|
187
|
+
mask: "*",
|
|
188
|
+
validate: (value) => {
|
|
189
|
+
if (value !== passphrase)
|
|
190
|
+
return "Passphrases do not match";
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
if (p.isCancel(confirmPassphrase)) {
|
|
194
|
+
p.cancel("Setup cancelled.");
|
|
195
|
+
process.exit(0);
|
|
196
|
+
}
|
|
197
|
+
// Generate encryption keys
|
|
198
|
+
spinner.start("Generating encryption keys...");
|
|
199
|
+
const salt = generateSalt();
|
|
200
|
+
const masterKey = generateMasterKey();
|
|
201
|
+
const recoveryKey = generateRecoveryKey();
|
|
202
|
+
const derivedKey = deriveKeyFromPassphrase(passphrase, salt);
|
|
203
|
+
const encryptedMaster = encryptMasterKey(masterKey, derivedKey.key);
|
|
204
|
+
// Combine IV + tag + ciphertext for storage
|
|
205
|
+
const encryptedMasterKeyFull = new Uint8Array(encryptedMaster.iv.length +
|
|
206
|
+
encryptedMaster.tag.length +
|
|
207
|
+
encryptedMaster.encrypted.length);
|
|
208
|
+
encryptedMasterKeyFull.set(encryptedMaster.iv, 0);
|
|
209
|
+
encryptedMasterKeyFull.set(encryptedMaster.tag, encryptedMaster.iv.length);
|
|
210
|
+
encryptedMasterKeyFull.set(encryptedMaster.encrypted, encryptedMaster.iv.length + encryptedMaster.tag.length);
|
|
211
|
+
// Save credentials first so API calls have the access token
|
|
212
|
+
await saveCredentials({
|
|
213
|
+
accessToken,
|
|
214
|
+
refreshToken,
|
|
215
|
+
encryptedMasterKey: toBase64(encryptedMasterKeyFull),
|
|
216
|
+
salt: toBase64(salt),
|
|
217
|
+
});
|
|
218
|
+
// Upload salt to server
|
|
219
|
+
const saltResult = await api.setSalt(toBase64(salt));
|
|
220
|
+
if (!saltResult.ok) {
|
|
221
|
+
spinner.stop("Failed to save encryption settings");
|
|
222
|
+
p.log.error(saltResult.error);
|
|
223
|
+
process.exit(1);
|
|
224
|
+
}
|
|
225
|
+
// Upload encrypted master key to server (for web dashboard decryption)
|
|
226
|
+
const masterKeyUploadResult = await api.setMasterKey(toBase64(encryptedMasterKeyFull));
|
|
227
|
+
if (!masterKeyUploadResult.ok) {
|
|
228
|
+
// Non-fatal - dashboard decryption won't work but CLI will
|
|
229
|
+
p.log.warn("Could not sync master key for web dashboard");
|
|
230
|
+
}
|
|
231
|
+
spinner.stop("Encryption keys generated");
|
|
232
|
+
// Show recovery key
|
|
233
|
+
const formattedRecoveryKey = formatRecoveryKey(recoveryKey);
|
|
234
|
+
p.note(`
|
|
187
235
|
${formattedRecoveryKey}
|
|
188
236
|
|
|
189
237
|
This is the ONLY way to recover your skills if you
|
|
@@ -191,46 +239,47 @@ export const runOnboarding = async () => {
|
|
|
191
239
|
(password manager, printed paper, etc).
|
|
192
240
|
|
|
193
241
|
We cannot recover your data.
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
message: "I have saved my recovery key",
|
|
197
|
-
});
|
|
198
|
-
if (p.isCancel(savedRecoveryKey) || !savedRecoveryKey) {
|
|
199
|
-
const showAgain = await p.confirm({
|
|
200
|
-
message: "Show recovery key again?",
|
|
201
|
-
});
|
|
202
|
-
if (showAgain) {
|
|
203
|
-
p.note(formattedRecoveryKey, "RECOVERY KEY");
|
|
204
|
-
}
|
|
205
|
-
const reallySaved = await p.confirm({
|
|
242
|
+
`.trim(), "SAVE YOUR RECOVERY KEY");
|
|
243
|
+
const savedRecoveryKey = await p.confirm({
|
|
206
244
|
message: "I have saved my recovery key",
|
|
207
245
|
});
|
|
208
|
-
if (p.isCancel(
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
// Step 10: Check for existing skills and offer to sync
|
|
215
|
-
const skills = await listAllSkills();
|
|
216
|
-
if (skills.length > 0) {
|
|
217
|
-
const syncNow = await p.confirm({
|
|
218
|
-
message: `Found ${skills.length} item${skills.length === 1 ? "" : "s"} (skills, commands, agents). Push them now?`,
|
|
219
|
-
});
|
|
220
|
-
if (!p.isCancel(syncNow) && syncNow) {
|
|
221
|
-
spinner.start("Pushing skills...");
|
|
222
|
-
const { pushed, errors } = await pushSkills(masterKey, (msg) => {
|
|
223
|
-
spinner.message(msg);
|
|
224
|
-
}, undefined);
|
|
225
|
-
spinner.stop("Push complete");
|
|
226
|
-
if (pushed > 0) {
|
|
227
|
-
p.log.success(`Pushed ${pushed} skill${pushed === 1 ? "" : "s"}`);
|
|
246
|
+
if (p.isCancel(savedRecoveryKey) || !savedRecoveryKey) {
|
|
247
|
+
const showAgain = await p.confirm({
|
|
248
|
+
message: "Show recovery key again?",
|
|
249
|
+
});
|
|
250
|
+
if (showAgain) {
|
|
251
|
+
p.note(formattedRecoveryKey, "RECOVERY KEY");
|
|
228
252
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
253
|
+
const reallySaved = await p.confirm({
|
|
254
|
+
message: "I have saved my recovery key",
|
|
255
|
+
});
|
|
256
|
+
if (p.isCancel(reallySaved) || !reallySaved) {
|
|
257
|
+
p.cancel("You must save your recovery key to continue.");
|
|
258
|
+
process.exit(0);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
p.log.success("Encryption configured");
|
|
262
|
+
// Check for existing skills and offer to sync
|
|
263
|
+
const skills = await listAllSkills();
|
|
264
|
+
if (skills.length > 0) {
|
|
265
|
+
const syncNow = await p.confirm({
|
|
266
|
+
message: `Found ${skills.length} item${skills.length === 1 ? "" : "s"} (skills, commands, agents). Push them now?`,
|
|
267
|
+
});
|
|
268
|
+
if (!p.isCancel(syncNow) && syncNow) {
|
|
269
|
+
spinner.start("Pushing skills...");
|
|
270
|
+
const { pushed, errors } = await pushSkills(masterKey, (msg) => {
|
|
271
|
+
spinner.message(msg);
|
|
272
|
+
}, undefined);
|
|
273
|
+
spinner.stop("Push complete");
|
|
274
|
+
if (pushed > 0) {
|
|
275
|
+
p.log.success(`Pushed ${pushed} skill${pushed === 1 ? "" : "s"}`);
|
|
276
|
+
}
|
|
277
|
+
if (errors.length > 0) {
|
|
278
|
+
p.log.warning("Some skills failed:");
|
|
279
|
+
errors.forEach((error) => {
|
|
280
|
+
p.log.error(` ${error}`);
|
|
281
|
+
});
|
|
282
|
+
}
|
|
234
283
|
}
|
|
235
284
|
}
|
|
236
285
|
}
|
package/dist/onboarding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../src/onboarding.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../src/onboarding.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudeskill/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Sync your Claude Code skills across devices with zero-knowledge encryption",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"license": "MIT",
|
|
45
45
|
"repository": {
|
|
46
46
|
"type": "git",
|
|
47
|
-
"url": "https://github.com/
|
|
47
|
+
"url": "https://github.com/a14a-org/claudeskill-manager"
|
|
48
48
|
},
|
|
49
49
|
"homepage": "https://claudeskill.io"
|
|
50
50
|
}
|