@sendly/cli 2.3.0 → 3.0.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/dist/lib/auth.js CHANGED
@@ -82,6 +82,13 @@ export async function browserLogin() {
82
82
  spin.succeed("Logged in successfully!");
83
83
  // Store tokens
84
84
  setAuthTokens(tokens.accessToken, tokens.refreshToken, tokens.expiresIn, tokens.userId, tokens.email);
85
+ // Check if new user needs quick-start (only for CLI sessions)
86
+ if (tokens.accessToken.startsWith("cli_")) {
87
+ const { shouldOfferQuickStart, offerQuickStart } = await import("./onboarding.js");
88
+ if (await shouldOfferQuickStart()) {
89
+ await offerQuickStart();
90
+ }
91
+ }
85
92
  return tokens;
86
93
  }
87
94
  const errorData = (await tokenResponse.json().catch(() => ({})));
@@ -168,4 +175,4 @@ export async function getAuthInfo() {
168
175
  function sleep(ms) {
169
176
  return new Promise((resolve) => setTimeout(resolve, ms));
170
177
  }
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEIsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUNMLGFBQWEsRUFDYixTQUFTLEVBQ1QsU0FBUyxFQUNULGNBQWMsRUFDZCxlQUFlLEVBQ2YsWUFBWSxHQUNiLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVk7QUFDeEMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0I7QUFrQi9DOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzdELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsTUFBTSxLQUFLLEdBQUcsa0NBQWtDLENBQUMsQ0FBQywwQkFBMEI7SUFDNUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzVDLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6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O0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dGhlbnRpY2F0aW9uIHV0aWxpdGllcyBmb3IgQ0xJXG4gKiBIYW5kbGVzIGJyb3dzZXItYmFzZWQgbG9naW4gZmxvdyBhbmQgQVBJIGtleSBhdXRoZW50aWNhdGlvblxuICovXG5cbmltcG9ydCBvcGVuIGZyb20gXCJvcGVuXCI7XG5pbXBvcnQgKiBhcyBodHRwIGZyb20gXCJub2RlOmh0dHBcIjtcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7XG4gIHNldEF1dGhUb2tlbnMsXG4gIHNldEFwaUtleSxcbiAgY2xlYXJBdXRoLFxuICBnZXRDb25maWdWYWx1ZSxcbiAgaXNBdXRoZW50aWNhdGVkLFxuICBnZXRBdXRoVG9rZW4sXG59IGZyb20gXCIuL2NvbmZpZy5qc1wiO1xuaW1wb3J0IHsgY29sb3JzLCBzcGlubmVyIH0gZnJvbSBcIi4vb3V0cHV0LmpzXCI7XG5cbmNvbnN0IERFVklDRV9DT0RFX0xFTkdUSCA9IDg7XG5jb25zdCBQT0xMX0lOVEVSVkFMID0gMjAwMDsgLy8gMiBzZWNvbmRzXG5jb25zdCBNQVhfUE9MTF9BVFRFTVBUUyA9IDE1MDsgLy8gNSBtaW51dGVzIG1heFxuXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUNvZGVSZXNwb25zZSB7XG4gIGRldmljZUNvZGU6IHN0cmluZztcbiAgdXNlckNvZGU6IHN0cmluZztcbiAgdmVyaWZpY2F0aW9uVXJsOiBzdHJpbmc7XG4gIGV4cGlyZXNJbjogbnVtYmVyO1xuICBpbnRlcnZhbDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuUmVzcG9uc2Uge1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgZXhwaXJlc0luOiBudW1iZXI7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgZGV2aWNlIGNvZGUgZm9yIGJyb3dzZXItYmFzZWQgYXV0aGVudGljYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRGV2aWNlQ29kZSgpOiBzdHJpbmcge1xuICByZXR1cm4gY3J5cHRvLnJhbmRvbUJ5dGVzKDQpLnRvU3RyaW5nKFwiaGV4XCIpLnRvVXBwZXJDYXNlKCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZWN1cmUgZGV2aWNlIGNvZGUgZm9yIHRoZSBhdXRoIGZsb3dcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlU2VjdXJlQ29kZSgpOiBzdHJpbmcge1xuICBjb25zdCBjaGFycyA9IFwiQUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaMjM0NTY3ODlcIjsgLy8gRXhjbHVkZSBjb25mdXNpbmcgY2hhcnNcbiAgbGV0IGNvZGUgPSBcIlwiO1xuICBjb25zdCBieXRlcyA9IGNyeXB0by5yYW5kb21CeXRlcyhERVZJQ0VfQ09ERV9MRU5HVEgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IERFVklDRV9DT0RFX0xFTkdUSDsgaSsrKSB7XG4gICAgY29kZSArPSBjaGFyc1tieXRlc1tpXSAlIGNoYXJzLmxlbmd0aF07XG4gIH1cbiAgcmV0dXJuIGNvZGU7XG59XG5cbi8qKlxuICogU3RhcnQgdGhlIGJyb3dzZXItYmFzZWQgbG9naW4gZmxvd1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnJvd3NlckxvZ2luKCk6IFByb21pc2U8VG9rZW5SZXNwb25zZT4ge1xuICBjb25zdCBiYXNlVXJsID0gZ2V0Q29uZmlnVmFsdWUoXCJiYXNlVXJsXCIpIHx8IFwiaHR0cHM6Ly9zZW5kbHkubGl2ZVwiO1xuICBjb25zdCBkZXZpY2VDb2RlID0gZ2VuZXJhdGVTZWN1cmVDb2RlKCk7XG4gIGNvbnN0IHVzZXJDb2RlID0gYCR7ZGV2aWNlQ29kZS5zbGljZSgwLCA0KX0tJHtkZXZpY2VDb2RlLnNsaWNlKDQpfWA7XG5cbiAgLy8gUmVxdWVzdCBkZXZpY2UgY29kZSBmcm9tIHNlcnZlclxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2Jhc2VVcmx9L2FwaS9jbGkvYXV0aC9kZXZpY2UtY29kZWAsIHtcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGRldmljZUNvZGUgfSksXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICBjb25zdCBlcnJvciA9IChhd2FpdCByZXNwb25zZS5qc29uKCkuY2F0Y2goKCkgPT4gKHt9KSkpIGFzIHtcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSB8fCBcIkZhaWxlZCB0byBpbml0aWF0ZSBsb2dpblwiKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyBEZXZpY2VDb2RlUmVzcG9uc2U7XG5cbiAgLy8gRGlzcGxheSBpbnN0cnVjdGlvbnMgdG8gdXNlclxuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChcIkxvZ2luIHRvIFNlbmRseVwiKSk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKGBPcGVuIHRoaXMgVVJMIGluIHlvdXIgYnJvd3NlcjpgKTtcbiAgY29uc29sZS5sb2coY29sb3JzLnByaW1hcnkoYCAgJHtkYXRhLnZlcmlmaWNhdGlvblVybH1gKSk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKGBBbmQgZW50ZXIgdGhpcyBjb2RlOmApO1xuICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChjb2xvcnMucHJpbWFyeShgICAke3VzZXJDb2RlfWApKSk7XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgLy8gVHJ5IHRvIG9wZW4gYnJvd3NlciBhdXRvbWF0aWNhbGx5XG4gIHRyeSB7XG4gICAgYXdhaXQgb3BlbihkYXRhLnZlcmlmaWNhdGlvblVybCk7XG4gICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIkJyb3dzZXIgb3BlbmVkIGF1dG9tYXRpY2FsbHlcIikpO1xuICB9IGNhdGNoIHtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiUGxlYXNlIG9wZW4gdGhlIFVSTCBtYW51YWxseVwiKSk7XG4gIH1cblxuICBjb25zb2xlLmxvZygpO1xuXG4gIC8vIFBvbGwgZm9yIHRva2VuXG4gIGNvbnN0IHNwaW4gPSBzcGlubmVyKFwiV2FpdGluZyBmb3IgYXV0aG9yaXphdGlvbi4uLlwiKTtcbiAgc3Bpbi5zdGFydCgpO1xuXG4gIGxldCBhdHRlbXB0cyA9IDA7XG4gIHdoaWxlIChhdHRlbXB0cyA8IE1BWF9QT0xMX0FUVEVNUFRTKSB7XG4gICAgYXdhaXQgc2xlZXAoZGF0YS5pbnRlcnZhbCAqIDEwMDAgfHwgUE9MTF9JTlRFUlZBTCk7XG4gICAgYXR0ZW1wdHMrKztcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0b2tlblJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YmFzZVVybH0vYXBpL2NsaS9hdXRoL3Rva2VuYCwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZGV2aWNlQ29kZSB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodG9rZW5SZXNwb25zZS5vaykge1xuICAgICAgICBjb25zdCB0b2tlbnMgPSAoYXdhaXQgdG9rZW5SZXNwb25zZS5qc29uKCkpIGFzIFRva2VuUmVzcG9uc2U7XG4gICAgICAgIHNwaW4uc3VjY2VlZChcIkxvZ2dlZCBpbiBzdWNjZXNzZnVsbHkhXCIpO1xuXG4gICAgICAgIC8vIFN0b3JlIHRva2Vuc1xuICAgICAgICBzZXRBdXRoVG9rZW5zKFxuICAgICAgICAgIHRva2Vucy5hY2Nlc3NUb2tlbixcbiAgICAgICAgICB0b2tlbnMucmVmcmVzaFRva2VuLFxuICAgICAgICAgIHRva2Vucy5leHBpcmVzSW4sXG4gICAgICAgICAgdG9rZW5zLnVzZXJJZCxcbiAgICAgICAgICB0b2tlbnMuZW1haWwsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRva2VucztcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXJyb3JEYXRhID0gKGF3YWl0IHRva2VuUmVzcG9uc2UuanNvbigpLmNhdGNoKCgpID0+ICh7fSkpKSBhcyB7XG4gICAgICAgIGVycm9yPzogc3RyaW5nO1xuICAgICAgfTtcblxuICAgICAgaWYgKGVycm9yRGF0YS5lcnJvciA9PT0gXCJhdXRob3JpemF0aW9uX3BlbmRpbmdcIikge1xuICAgICAgICAvLyBTdGlsbCB3YWl0aW5nLCBjb250aW51ZSBwb2xsaW5nXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3JEYXRhLmVycm9yID09PSBcImV4cGlyZWRfdG9rZW5cIikge1xuICAgICAgICBzcGluLmZhaWwoXCJMb2dpbiByZXF1ZXN0IGV4cGlyZWQuIFBsZWFzZSB0cnkgYWdhaW4uXCIpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2dpbiByZXF1ZXN0IGV4cGlyZWRcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChlcnJvckRhdGEuZXJyb3IgPT09IFwiYWNjZXNzX2RlbmllZFwiKSB7XG4gICAgICAgIHNwaW4uZmFpbChcIkxvZ2luIHdhcyBkZW5pZWRcIik7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvZ2luIHdhcyBkZW5pZWRcIik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlLmluY2x1ZGVzKFwiZXhwaXJlZFwiKSB8fFxuICAgICAgICAoZXJyb3IgYXMgRXJyb3IpLm1lc3NhZ2UuaW5jbHVkZXMoXCJkZW5pZWRcIilcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIC8vIE5ldHdvcmsgZXJyb3IsIGNvbnRpbnVlIHBvbGxpbmdcbiAgICB9XG4gIH1cblxuICBzcGluLmZhaWwoXCJMb2dpbiB0aW1lZCBvdXQuIFBsZWFzZSB0cnkgYWdhaW4uXCIpO1xuICB0aHJvdyBuZXcgRXJyb3IoXCJMb2dpbiB0aW1lZCBvdXRcIik7XG59XG5cbi8qKlxuICogTG9naW4gd2l0aCBhbiBBUEkga2V5IGRpcmVjdGx5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcGlLZXlMb2dpbihhcGlLZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBiYXNlVXJsID0gZ2V0Q29uZmlnVmFsdWUoXCJiYXNlVXJsXCIpIHx8IFwiaHR0cHM6Ly9zZW5kbHkubGl2ZVwiO1xuXG4gIC8vIFZhbGlkYXRlIHRoZSBBUEkga2V5IHdpdGggdGhlIHNlcnZlclxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2Jhc2VVcmx9L2FwaS9jbGkvYXV0aC92ZXJpZnkta2V5YCwge1xuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgaGVhZGVyczoge1xuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YXBpS2V5fWAsXG4gICAgfSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIGNvbnN0IGVycm9yID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKS5jYXRjaCgoKSA9PiAoe30pKSkgYXMge1xuICAgICAgbWVzc2FnZT86IHN0cmluZztcbiAgICB9O1xuICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlIHx8IFwiSW52YWxpZCBBUEkga2V5XCIpO1xuICB9XG5cbiAgLy8gU3RvcmUgdGhlIEFQSSBrZXlcbiAgc2V0QXBpS2V5KGFwaUtleSk7XG59XG5cbi8qKlxuICogTG9nb3V0IC0gY2xlYXIgYWxsIHN0b3JlZCBjcmVkZW50aWFsc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nb3V0KCk6IHZvaWQge1xuICBjbGVhckF1dGgoKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBjdXJyZW50bHkgYXV0aGVudGljYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tBdXRoKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNBdXRoZW50aWNhdGVkKCk7XG59XG5cbi8qKlxuICogR2V0IGN1cnJlbnQgYXV0aCBpbmZvIGZvciBkaXNwbGF5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdXRoSW5mbygpOiBQcm9taXNlPHtcbiAgYXV0aGVudGljYXRlZDogYm9vbGVhbjtcbiAgZW1haWw/OiBzdHJpbmc7XG4gIHVzZXJJZD86IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAga2V5VHlwZT86IHN0cmluZztcbn0+IHtcbiAgY29uc3QgdG9rZW4gPSBnZXRBdXRoVG9rZW4oKTtcbiAgY29uc3QgZW1haWwgPSBnZXRDb25maWdWYWx1ZShcImVtYWlsXCIpO1xuICBjb25zdCB1c2VySWQgPSBnZXRDb25maWdWYWx1ZShcInVzZXJJZFwiKTtcbiAgY29uc3QgYXBpS2V5ID0gZ2V0Q29uZmlnVmFsdWUoXCJhcGlLZXlcIik7XG4gIGNvbnN0IGVudmlyb25tZW50ID0gZ2V0Q29uZmlnVmFsdWUoXCJlbnZpcm9ubWVudFwiKTtcblxuICBpZiAoIXRva2VuICYmICFhcGlLZXkpIHtcbiAgICByZXR1cm4geyBhdXRoZW50aWNhdGVkOiBmYWxzZSwgZW52aXJvbm1lbnQgfTtcbiAgfVxuXG4gIGxldCBrZXlUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmIChhcGlLZXkpIHtcbiAgICBrZXlUeXBlID0gYXBpS2V5LnN0YXJ0c1dpdGgoXCJza190ZXN0X1wiKSA/IFwidGVzdFwiIDogXCJsaXZlXCI7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGF1dGhlbnRpY2F0ZWQ6IHRydWUsXG4gICAgZW1haWwsXG4gICAgdXNlcklkLFxuICAgIGVudmlyb25tZW50LFxuICAgIGtleVR5cGUsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG4iXX0=
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEIsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUNMLGFBQWEsRUFDYixTQUFTLEVBQ1QsU0FBUyxFQUNULGNBQWMsRUFDZCxlQUFlLEVBQ2YsWUFBWSxHQUNiLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDLFlBQVk7QUFDeEMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0I7QUFrQi9DOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzdELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsTUFBTSxLQUFLLEdBQUcsa0NBQWtDLENBQUMsQ0FBQywwQkFBMEI7SUFDNUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzVDLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6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QUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM1RCxDQUFDO0lBRUQsT0FBTztRQUNMLGFBQWEsRUFBRSxJQUFJO1FBQ25CLEtBQUs7UUFDTCxNQUFNO1FBQ04sV0FBVztRQUNYLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsS0FBSyxDQUFDLEVBQVU7SUFDdkIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dGhlbnRpY2F0aW9uIHV0aWxpdGllcyBmb3IgQ0xJXG4gKiBIYW5kbGVzIGJyb3dzZXItYmFzZWQgbG9naW4gZmxvdyBhbmQgQVBJIGtleSBhdXRoZW50aWNhdGlvblxuICovXG5cbmltcG9ydCBvcGVuIGZyb20gXCJvcGVuXCI7XG5pbXBvcnQgKiBhcyBodHRwIGZyb20gXCJub2RlOmh0dHBcIjtcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7XG4gIHNldEF1dGhUb2tlbnMsXG4gIHNldEFwaUtleSxcbiAgY2xlYXJBdXRoLFxuICBnZXRDb25maWdWYWx1ZSxcbiAgaXNBdXRoZW50aWNhdGVkLFxuICBnZXRBdXRoVG9rZW4sXG59IGZyb20gXCIuL2NvbmZpZy5qc1wiO1xuaW1wb3J0IHsgY29sb3JzLCBzcGlubmVyIH0gZnJvbSBcIi4vb3V0cHV0LmpzXCI7XG5cbmNvbnN0IERFVklDRV9DT0RFX0xFTkdUSCA9IDg7XG5jb25zdCBQT0xMX0lOVEVSVkFMID0gMjAwMDsgLy8gMiBzZWNvbmRzXG5jb25zdCBNQVhfUE9MTF9BVFRFTVBUUyA9IDE1MDsgLy8gNSBtaW51dGVzIG1heFxuXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUNvZGVSZXNwb25zZSB7XG4gIGRldmljZUNvZGU6IHN0cmluZztcbiAgdXNlckNvZGU6IHN0cmluZztcbiAgdmVyaWZpY2F0aW9uVXJsOiBzdHJpbmc7XG4gIGV4cGlyZXNJbjogbnVtYmVyO1xuICBpbnRlcnZhbDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuUmVzcG9uc2Uge1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgZXhwaXJlc0luOiBudW1iZXI7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgZGV2aWNlIGNvZGUgZm9yIGJyb3dzZXItYmFzZWQgYXV0aGVudGljYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRGV2aWNlQ29kZSgpOiBzdHJpbmcge1xuICByZXR1cm4gY3J5cHRvLnJhbmRvbUJ5dGVzKDQpLnRvU3RyaW5nKFwiaGV4XCIpLnRvVXBwZXJDYXNlKCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzZWN1cmUgZGV2aWNlIGNvZGUgZm9yIHRoZSBhdXRoIGZsb3dcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlU2VjdXJlQ29kZSgpOiBzdHJpbmcge1xuICBjb25zdCBjaGFycyA9IFwiQUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaMjM0NTY3ODlcIjsgLy8gRXhjbHVkZSBjb25mdXNpbmcgY2hhcnNcbiAgbGV0IGNvZGUgPSBcIlwiO1xuICBjb25zdCBieXRlcyA9IGNyeXB0by5yYW5kb21CeXRlcyhERVZJQ0VfQ09ERV9MRU5HVEgpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IERFVklDRV9DT0RFX0xFTkdUSDsgaSsrKSB7XG4gICAgY29kZSArPSBjaGFyc1tieXRlc1tpXSAlIGNoYXJzLmxlbmd0aF07XG4gIH1cbiAgcmV0dXJuIGNvZGU7XG59XG5cbi8qKlxuICogU3RhcnQgdGhlIGJyb3dzZXItYmFzZWQgbG9naW4gZmxvd1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnJvd3NlckxvZ2luKCk6IFByb21pc2U8VG9rZW5SZXNwb25zZT4ge1xuICBjb25zdCBiYXNlVXJsID0gZ2V0Q29uZmlnVmFsdWUoXCJiYXNlVXJsXCIpIHx8IFwiaHR0cHM6Ly9zZW5kbHkubGl2ZVwiO1xuICBjb25zdCBkZXZpY2VDb2RlID0gZ2VuZXJhdGVTZWN1cmVDb2RlKCk7XG4gIGNvbnN0IHVzZXJDb2RlID0gYCR7ZGV2aWNlQ29kZS5zbGljZSgwLCA0KX0tJHtkZXZpY2VDb2RlLnNsaWNlKDQpfWA7XG5cbiAgLy8gUmVxdWVzdCBkZXZpY2UgY29kZSBmcm9tIHNlcnZlclxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2Jhc2VVcmx9L2FwaS9jbGkvYXV0aC9kZXZpY2UtY29kZWAsIHtcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGRldmljZUNvZGUgfSksXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICBjb25zdCBlcnJvciA9IChhd2FpdCByZXNwb25zZS5qc29uKCkuY2F0Y2goKCkgPT4gKHt9KSkpIGFzIHtcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSB8fCBcIkZhaWxlZCB0byBpbml0aWF0ZSBsb2dpblwiKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyBEZXZpY2VDb2RlUmVzcG9uc2U7XG5cbiAgLy8gRGlzcGxheSBpbnN0cnVjdGlvbnMgdG8gdXNlclxuICBjb25zb2xlLmxvZygpO1xuICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChcIkxvZ2luIHRvIFNlbmRseVwiKSk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKGBPcGVuIHRoaXMgVVJMIGluIHlvdXIgYnJvd3NlcjpgKTtcbiAgY29uc29sZS5sb2coY29sb3JzLnByaW1hcnkoYCAgJHtkYXRhLnZlcmlmaWNhdGlvblVybH1gKSk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKGBBbmQgZW50ZXIgdGhpcyBjb2RlOmApO1xuICBjb25zb2xlLmxvZyhjb2xvcnMuYm9sZChjb2xvcnMucHJpbWFyeShgICAke3VzZXJDb2RlfWApKSk7XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgLy8gVHJ5IHRvIG9wZW4gYnJvd3NlciBhdXRvbWF0aWNhbGx5XG4gIHRyeSB7XG4gICAgYXdhaXQgb3BlbihkYXRhLnZlcmlmaWNhdGlvblVybCk7XG4gICAgY29uc29sZS5sb2coY29sb3JzLmRpbShcIkJyb3dzZXIgb3BlbmVkIGF1dG9tYXRpY2FsbHlcIikpO1xuICB9IGNhdGNoIHtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMuZGltKFwiUGxlYXNlIG9wZW4gdGhlIFVSTCBtYW51YWxseVwiKSk7XG4gIH1cblxuICBjb25zb2xlLmxvZygpO1xuXG4gIC8vIFBvbGwgZm9yIHRva2VuXG4gIGNvbnN0IHNwaW4gPSBzcGlubmVyKFwiV2FpdGluZyBmb3IgYXV0aG9yaXphdGlvbi4uLlwiKTtcbiAgc3Bpbi5zdGFydCgpO1xuXG4gIGxldCBhdHRlbXB0cyA9IDA7XG4gIHdoaWxlIChhdHRlbXB0cyA8IE1BWF9QT0xMX0FUVEVNUFRTKSB7XG4gICAgYXdhaXQgc2xlZXAoZGF0YS5pbnRlcnZhbCAqIDEwMDAgfHwgUE9MTF9JTlRFUlZBTCk7XG4gICAgYXR0ZW1wdHMrKztcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0b2tlblJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YmFzZVVybH0vYXBpL2NsaS9hdXRoL3Rva2VuYCwge1xuICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZGV2aWNlQ29kZSB9KSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodG9rZW5SZXNwb25zZS5vaykge1xuICAgICAgICBjb25zdCB0b2tlbnMgPSAoYXdhaXQgdG9rZW5SZXNwb25zZS5qc29uKCkpIGFzIFRva2VuUmVzcG9uc2U7XG4gICAgICAgIHNwaW4uc3VjY2VlZChcIkxvZ2dlZCBpbiBzdWNjZXNzZnVsbHkhXCIpO1xuXG4gICAgICAgIC8vIFN0b3JlIHRva2Vuc1xuICAgICAgICBzZXRBdXRoVG9rZW5zKFxuICAgICAgICAgIHRva2Vucy5hY2Nlc3NUb2tlbixcbiAgICAgICAgICB0b2tlbnMucmVmcmVzaFRva2VuLFxuICAgICAgICAgIHRva2Vucy5leHBpcmVzSW4sXG4gICAgICAgICAgdG9rZW5zLnVzZXJJZCxcbiAgICAgICAgICB0b2tlbnMuZW1haWwsXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgbmV3IHVzZXIgbmVlZHMgcXVpY2stc3RhcnQgKG9ubHkgZm9yIENMSSBzZXNzaW9ucylcbiAgICAgICAgaWYgKHRva2Vucy5hY2Nlc3NUb2tlbi5zdGFydHNXaXRoKFwiY2xpX1wiKSkge1xuICAgICAgICAgIGNvbnN0IHsgc2hvdWxkT2ZmZXJRdWlja1N0YXJ0LCBvZmZlclF1aWNrU3RhcnQgfSA9IGF3YWl0IGltcG9ydChcIi4vb25ib2FyZGluZy5qc1wiKTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoYXdhaXQgc2hvdWxkT2ZmZXJRdWlja1N0YXJ0KCkpIHtcbiAgICAgICAgICAgIGF3YWl0IG9mZmVyUXVpY2tTdGFydCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b2tlbnM7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVycm9yRGF0YSA9IChhd2FpdCB0b2tlblJlc3BvbnNlLmpzb24oKS5jYXRjaCgoKSA9PiAoe30pKSkgYXMge1xuICAgICAgICBlcnJvcj86IHN0cmluZztcbiAgICAgIH07XG5cbiAgICAgIGlmIChlcnJvckRhdGEuZXJyb3IgPT09IFwiYXV0aG9yaXphdGlvbl9wZW5kaW5nXCIpIHtcbiAgICAgICAgLy8gU3RpbGwgd2FpdGluZywgY29udGludWUgcG9sbGluZ1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVycm9yRGF0YS5lcnJvciA9PT0gXCJleHBpcmVkX3Rva2VuXCIpIHtcbiAgICAgICAgc3Bpbi5mYWlsKFwiTG9naW4gcmVxdWVzdCBleHBpcmVkLiBQbGVhc2UgdHJ5IGFnYWluLlwiKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTG9naW4gcmVxdWVzdCBleHBpcmVkXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3JEYXRhLmVycm9yID09PSBcImFjY2Vzc19kZW5pZWRcIikge1xuICAgICAgICBzcGluLmZhaWwoXCJMb2dpbiB3YXMgZGVuaWVkXCIpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMb2dpbiB3YXMgZGVuaWVkXCIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChlcnJvciBhcyBFcnJvcikubWVzc2FnZS5pbmNsdWRlcyhcImV4cGlyZWRcIikgfHxcbiAgICAgICAgKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlLmluY2x1ZGVzKFwiZGVuaWVkXCIpXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICAvLyBOZXR3b3JrIGVycm9yLCBjb250aW51ZSBwb2xsaW5nXG4gICAgfVxuICB9XG5cbiAgc3Bpbi5mYWlsKFwiTG9naW4gdGltZWQgb3V0LiBQbGVhc2UgdHJ5IGFnYWluLlwiKTtcbiAgdGhyb3cgbmV3IEVycm9yKFwiTG9naW4gdGltZWQgb3V0XCIpO1xufVxuXG4vKipcbiAqIExvZ2luIHdpdGggYW4gQVBJIGtleSBkaXJlY3RseVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBpS2V5TG9naW4oYXBpS2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYmFzZVVybCA9IGdldENvbmZpZ1ZhbHVlKFwiYmFzZVVybFwiKSB8fCBcImh0dHBzOi8vc2VuZGx5LmxpdmVcIjtcblxuICAvLyBWYWxpZGF0ZSB0aGUgQVBJIGtleSB3aXRoIHRoZSBzZXJ2ZXJcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfS9hcGkvY2xpL2F1dGgvdmVyaWZ5LWtleWAsIHtcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FwaUtleX1gLFxuICAgIH0sXG4gIH0pO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICBjb25zdCBlcnJvciA9IChhd2FpdCByZXNwb25zZS5qc29uKCkuY2F0Y2goKCkgPT4gKHt9KSkpIGFzIHtcbiAgICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSB8fCBcIkludmFsaWQgQVBJIGtleVwiKTtcbiAgfVxuXG4gIC8vIFN0b3JlIHRoZSBBUEkga2V5XG4gIHNldEFwaUtleShhcGlLZXkpO1xufVxuXG4vKipcbiAqIExvZ291dCAtIGNsZWFyIGFsbCBzdG9yZWQgY3JlZGVudGlhbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvZ291dCgpOiB2b2lkIHtcbiAgY2xlYXJBdXRoKCk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgY3VycmVudGx5IGF1dGhlbnRpY2F0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQXV0aCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzQXV0aGVudGljYXRlZCgpO1xufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IGF1dGggaW5mbyBmb3IgZGlzcGxheVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXV0aEluZm8oKTogUHJvbWlzZTx7XG4gIGF1dGhlbnRpY2F0ZWQ6IGJvb2xlYW47XG4gIGVtYWlsPzogc3RyaW5nO1xuICB1c2VySWQ/OiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIGtleVR5cGU/OiBzdHJpbmc7XG59PiB7XG4gIGNvbnN0IHRva2VuID0gZ2V0QXV0aFRva2VuKCk7XG4gIGNvbnN0IGVtYWlsID0gZ2V0Q29uZmlnVmFsdWUoXCJlbWFpbFwiKTtcbiAgY29uc3QgdXNlcklkID0gZ2V0Q29uZmlnVmFsdWUoXCJ1c2VySWRcIik7XG4gIGNvbnN0IGFwaUtleSA9IGdldENvbmZpZ1ZhbHVlKFwiYXBpS2V5XCIpO1xuICBjb25zdCBlbnZpcm9ubWVudCA9IGdldENvbmZpZ1ZhbHVlKFwiZW52aXJvbm1lbnRcIik7XG5cbiAgaWYgKCF0b2tlbiAmJiAhYXBpS2V5KSB7XG4gICAgcmV0dXJuIHsgYXV0aGVudGljYXRlZDogZmFsc2UsIGVudmlyb25tZW50IH07XG4gIH1cblxuICBsZXQga2V5VHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAoYXBpS2V5KSB7XG4gICAga2V5VHlwZSA9IGFwaUtleS5zdGFydHNXaXRoKFwic2tfdGVzdF9cIikgPyBcInRlc3RcIiA6IFwibGl2ZVwiO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhdXRoZW50aWNhdGVkOiB0cnVlLFxuICAgIGVtYWlsLFxuICAgIHVzZXJJZCxcbiAgICBlbnZpcm9ubWVudCxcbiAgICBrZXlUeXBlLFxuICB9O1xufVxuXG5mdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuIl19
@@ -0,0 +1,43 @@
1
+ /**
2
+ * CLI Onboarding utilities
3
+ * Handles quick-start flow for new users
4
+ */
5
+ export interface OnboardingStatus {
6
+ needsOnboarding: boolean;
7
+ onboardingCompleted: boolean;
8
+ cliOnboardingCompleted?: boolean;
9
+ hasApiKeys: boolean;
10
+ hasTestKey: boolean;
11
+ hasLiveKey: boolean;
12
+ hasVerification: boolean;
13
+ recommendedRoute: string;
14
+ }
15
+ export interface QuickStartResponse {
16
+ success: boolean;
17
+ type: string;
18
+ apiKey: {
19
+ id: string;
20
+ key: string;
21
+ name: string;
22
+ type: "test" | "live";
23
+ };
24
+ message: string;
25
+ testNumbers: Array<{
26
+ number: string;
27
+ behavior: string;
28
+ }>;
29
+ nextSteps: string[];
30
+ warning: string;
31
+ }
32
+ /**
33
+ * Check if user should be offered CLI quick-start
34
+ */
35
+ export declare function shouldOfferQuickStart(): Promise<boolean>;
36
+ /**
37
+ * Offer CLI quick-start to new users
38
+ */
39
+ export declare function offerQuickStart(): Promise<boolean>;
40
+ /**
41
+ * Check if user needs upgrade from CLI session to API key
42
+ */
43
+ export declare function checkUpgradeNeeded(missingScopes: string[]): Promise<void>;
@@ -0,0 +1,158 @@
1
+ /**
2
+ * CLI Onboarding utilities
3
+ * Handles quick-start flow for new users
4
+ */
5
+ import { apiClient } from "./api-client.js";
6
+ import { setApiKey, getConfigValue } from "./config.js";
7
+ import { success, info, error, colors, spinner } from "./output.js";
8
+ import inquirer from "inquirer";
9
+ /**
10
+ * Check if user should be offered CLI quick-start
11
+ */
12
+ export async function shouldOfferQuickStart() {
13
+ try {
14
+ const status = await apiClient.get("/api/onboarding/status");
15
+ // Only offer quick-start if user has done NOTHING yet
16
+ return !status.onboardingCompleted &&
17
+ !status.cliOnboardingCompleted &&
18
+ !status.hasApiKeys &&
19
+ !status.hasVerification;
20
+ }
21
+ catch (err) {
22
+ // If we can't check status, don't offer quick-start
23
+ console.error("Failed to check onboarding status:", err);
24
+ return false;
25
+ }
26
+ }
27
+ /**
28
+ * Offer CLI quick-start to new users
29
+ */
30
+ export async function offerQuickStart() {
31
+ console.log();
32
+ console.log(colors.bold("🎉 Welcome to Sendly!"));
33
+ console.log("Let's get you started with SMS messaging.");
34
+ console.log();
35
+ const { choice } = await inquirer.prompt([
36
+ {
37
+ type: "list",
38
+ name: "choice",
39
+ message: "What would you like to do?",
40
+ choices: [
41
+ {
42
+ name: "🧪 Set up development environment (2 minutes)",
43
+ value: "development",
44
+ short: "Development setup",
45
+ },
46
+ {
47
+ name: "🌍 Set up production messaging (full verification)",
48
+ value: "production",
49
+ short: "Production setup",
50
+ },
51
+ {
52
+ name: "⏭ Skip for now",
53
+ value: "skip",
54
+ short: "Skip",
55
+ },
56
+ ],
57
+ },
58
+ ]);
59
+ switch (choice) {
60
+ case "development":
61
+ return await runQuickStart();
62
+ case "production":
63
+ return await openProductionOnboarding();
64
+ case "skip":
65
+ info("You can run 'sendly onboarding' anytime to set up your account.");
66
+ return false;
67
+ default:
68
+ return false;
69
+ }
70
+ }
71
+ /**
72
+ * Run the CLI quick-start flow
73
+ */
74
+ async function runQuickStart() {
75
+ const quickStartSpinner = spinner("Creating your development environment...");
76
+ quickStartSpinner.start();
77
+ try {
78
+ const result = await apiClient.post("/api/cli/quick-start", {
79
+ intent: "development",
80
+ });
81
+ quickStartSpinner.succeed("Development environment created!");
82
+ // Store the API key for immediate use
83
+ setApiKey(result.apiKey.key);
84
+ console.log();
85
+ success("Ready to code! 🚀", {
86
+ "API Key": result.apiKey.name,
87
+ "Environment": colors.warning("test"),
88
+ "Key Type": result.apiKey.type,
89
+ });
90
+ console.log();
91
+ console.log(colors.bold("Test Numbers:"));
92
+ result.testNumbers.forEach(({ number, behavior }) => {
93
+ console.log(` ${colors.primary(number)} - ${colors.dim(behavior)}`);
94
+ });
95
+ console.log();
96
+ console.log(colors.bold("Next Steps:"));
97
+ result.nextSteps.forEach((step, i) => {
98
+ console.log(` ${i + 1}. ${step}`);
99
+ });
100
+ console.log();
101
+ console.log(colors.warning("⚠️ " + result.warning));
102
+ return true;
103
+ }
104
+ catch (err) {
105
+ quickStartSpinner.fail("Failed to create development environment");
106
+ if (err instanceof Error) {
107
+ error(err.message);
108
+ }
109
+ else {
110
+ error("Unknown error occurred during setup");
111
+ }
112
+ return false;
113
+ }
114
+ }
115
+ /**
116
+ * Open browser for production onboarding
117
+ */
118
+ async function openProductionOnboarding() {
119
+ try {
120
+ const baseUrl = getConfigValue("baseUrl") || "https://sendly.live";
121
+ const onboardingUrl = `${baseUrl}/onboarding`;
122
+ console.log();
123
+ console.log(colors.bold("Opening browser for production setup..."));
124
+ console.log(`If it doesn't open automatically, visit: ${colors.primary(onboardingUrl)}`);
125
+ const open = (await import("open")).default;
126
+ await open(onboardingUrl);
127
+ info("Complete the verification in your browser, then run 'sendly whoami' to check status.");
128
+ return false; // Don't continue CLI flow
129
+ }
130
+ catch (err) {
131
+ error("Failed to open browser. Please visit https://sendly.live/onboarding manually.");
132
+ return false;
133
+ }
134
+ }
135
+ /**
136
+ * Check if user needs upgrade from CLI session to API key
137
+ */
138
+ export async function checkUpgradeNeeded(missingScopes) {
139
+ if (missingScopes.includes("sms:send")) {
140
+ console.log();
141
+ console.log(colors.warning("🔒 SMS messaging requires an API key."));
142
+ const { upgrade } = await inquirer.prompt([
143
+ {
144
+ type: "confirm",
145
+ name: "upgrade",
146
+ message: "Would you like to set up a development API key now?",
147
+ default: true,
148
+ },
149
+ ]);
150
+ if (upgrade) {
151
+ await runQuickStart();
152
+ }
153
+ else {
154
+ info("You can run 'sendly onboarding' anytime to set up messaging.");
155
+ }
156
+ }
157
+ }
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25ib2FyZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvb25ib2FyZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDO0FBK0JoQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCO0lBQ3pDLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBbUIsd0JBQXdCLENBQUMsQ0FBQztRQUUvRSxzREFBc0Q7UUFDdEQsT0FBTyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUI7WUFDM0IsQ0FBQyxNQUFNLENBQUMsc0JBQXNCO1lBQzlCLENBQUMsTUFBTSxDQUFDLFVBQVU7WUFDbEIsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQ2pDLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2Isb0RBQW9EO1FBQ3BELE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlO0lBQ25DLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7SUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQ0FB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QUM7UUFDYixLQUFLLENBQUMsK0VBQStFLENBQUMsQ0FBQztRQUN2RixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQixDQUFDLGFBQXVCO0lBQzlELElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUM7UUFFckUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUN4QztnQkFDRSxJQUFJLEVBQUUsU0FBUztnQkFDZixJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUscURBQXFEO2dCQUM5RCxPQUFPLEVBQUUsSUFBSTthQUNkO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sYUFBYSxFQUFFLENBQUM7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsOERBQThELENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENMSSBPbmJvYXJkaW5nIHV0aWxpdGllc1xuICogSGFuZGxlcyBxdWljay1zdGFydCBmbG93IGZvciBuZXcgdXNlcnNcbiAqL1xuXG5pbXBvcnQgeyBhcGlDbGllbnQgfSBmcm9tIFwiLi9hcGktY2xpZW50LmpzXCI7XG5pbXBvcnQgeyBzZXRBcGlLZXksIGdldENvbmZpZ1ZhbHVlIH0gZnJvbSBcIi4vY29uZmlnLmpzXCI7XG5pbXBvcnQgeyBzdWNjZXNzLCBpbmZvLCBlcnJvciwgY29sb3JzLCBzcGlubmVyIH0gZnJvbSBcIi4vb3V0cHV0LmpzXCI7XG5pbXBvcnQgaW5xdWlyZXIgZnJvbSBcImlucXVpcmVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25ib2FyZGluZ1N0YXR1cyB7XG4gIG5lZWRzT25ib2FyZGluZzogYm9vbGVhbjtcbiAgb25ib2FyZGluZ0NvbXBsZXRlZDogYm9vbGVhbjtcbiAgY2xpT25ib2FyZGluZ0NvbXBsZXRlZD86IGJvb2xlYW47XG4gIGhhc0FwaUtleXM6IGJvb2xlYW47XG4gIGhhc1Rlc3RLZXk6IGJvb2xlYW47XG4gIGhhc0xpdmVLZXk6IGJvb2xlYW47XG4gIGhhc1ZlcmlmaWNhdGlvbjogYm9vbGVhbjtcbiAgcmVjb21tZW5kZWRSb3V0ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1aWNrU3RhcnRSZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIHR5cGU6IHN0cmluZztcbiAgYXBpS2V5OiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBrZXk6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdHlwZTogXCJ0ZXN0XCIgfCBcImxpdmVcIjtcbiAgfTtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB0ZXN0TnVtYmVyczogQXJyYXk8e1xuICAgIG51bWJlcjogc3RyaW5nO1xuICAgIGJlaGF2aW9yOiBzdHJpbmc7XG4gIH0+O1xuICBuZXh0U3RlcHM6IHN0cmluZ1tdO1xuICB3YXJuaW5nOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdXNlciBzaG91bGQgYmUgb2ZmZXJlZCBDTEkgcXVpY2stc3RhcnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3VsZE9mZmVyUXVpY2tTdGFydCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCBhcGlDbGllbnQuZ2V0PE9uYm9hcmRpbmdTdGF0dXM+KFwiL2FwaS9vbmJvYXJkaW5nL3N0YXR1c1wiKTtcbiAgICBcbiAgICAvLyBPbmx5IG9mZmVyIHF1aWNrLXN0YXJ0IGlmIHVzZXIgaGFzIGRvbmUgTk9USElORyB5ZXRcbiAgICByZXR1cm4gIXN0YXR1cy5vbmJvYXJkaW5nQ29tcGxldGVkICYmIFxuICAgICAgICAgICAhc3RhdHVzLmNsaU9uYm9hcmRpbmdDb21wbGV0ZWQgJiYgXG4gICAgICAgICAgICFzdGF0dXMuaGFzQXBpS2V5cyAmJiBcbiAgICAgICAgICAgIXN0YXR1cy5oYXNWZXJpZmljYXRpb247XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIElmIHdlIGNhbid0IGNoZWNrIHN0YXR1cywgZG9uJ3Qgb2ZmZXIgcXVpY2stc3RhcnRcbiAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGNoZWNrIG9uYm9hcmRpbmcgc3RhdHVzOlwiLCBlcnIpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIE9mZmVyIENMSSBxdWljay1zdGFydCB0byBuZXcgdXNlcnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9mZmVyUXVpY2tTdGFydCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoXCLwn46JIFdlbGNvbWUgdG8gU2VuZGx5IVwiKSk7XG4gIGNvbnNvbGUubG9nKFwiTGV0J3MgZ2V0IHlvdSBzdGFydGVkIHdpdGggU01TIG1lc3NhZ2luZy5cIik7XG4gIGNvbnNvbGUubG9nKCk7XG5cbiAgY29uc3QgeyBjaG9pY2UgfSA9IGF3YWl0IGlucXVpcmVyLnByb21wdChbXG4gICAge1xuICAgICAgdHlwZTogXCJsaXN0XCIsXG4gICAgICBuYW1lOiBcImNob2ljZVwiLFxuICAgICAgbWVzc2FnZTogXCJXaGF0IHdvdWxkIHlvdSBsaWtlIHRvIGRvP1wiLFxuICAgICAgY2hvaWNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCLwn6eqIFNldCB1cCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCAoMiBtaW51dGVzKVwiLFxuICAgICAgICAgIHZhbHVlOiBcImRldmVsb3BtZW50XCIsXG4gICAgICAgICAgc2hvcnQ6IFwiRGV2ZWxvcG1lbnQgc2V0dXBcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwi8J+MjSBTZXQgdXAgcHJvZHVjdGlvbiBtZXNzYWdpbmcgKGZ1bGwgdmVyaWZpY2F0aW9uKVwiLFxuICAgICAgICAgIHZhbHVlOiBcInByb2R1Y3Rpb25cIiwgXG4gICAgICAgICAgc2hvcnQ6IFwiUHJvZHVjdGlvbiBzZXR1cFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCLij60gIFNraXAgZm9yIG5vd1wiLFxuICAgICAgICAgIHZhbHVlOiBcInNraXBcIixcbiAgICAgICAgICBzaG9ydDogXCJTa2lwXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF0pO1xuXG4gIHN3aXRjaCAoY2hvaWNlKSB7XG4gICAgY2FzZSBcImRldmVsb3BtZW50XCI6XG4gICAgICByZXR1cm4gYXdhaXQgcnVuUXVpY2tTdGFydCgpO1xuICAgIGNhc2UgXCJwcm9kdWN0aW9uXCI6XG4gICAgICByZXR1cm4gYXdhaXQgb3BlblByb2R1Y3Rpb25PbmJvYXJkaW5nKCk7XG4gICAgY2FzZSBcInNraXBcIjpcbiAgICAgIGluZm8oXCJZb3UgY2FuIHJ1biAnc2VuZGx5IG9uYm9hcmRpbmcnIGFueXRpbWUgdG8gc2V0IHVwIHlvdXIgYWNjb3VudC5cIik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJ1biB0aGUgQ0xJIHF1aWNrLXN0YXJ0IGZsb3dcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcnVuUXVpY2tTdGFydCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgcXVpY2tTdGFydFNwaW5uZXIgPSBzcGlubmVyKFwiQ3JlYXRpbmcgeW91ciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4uLlwiKTtcbiAgcXVpY2tTdGFydFNwaW5uZXIuc3RhcnQoKTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwaUNsaWVudC5wb3N0PFF1aWNrU3RhcnRSZXNwb25zZT4oXCIvYXBpL2NsaS9xdWljay1zdGFydFwiLCB7XG4gICAgICBpbnRlbnQ6IFwiZGV2ZWxvcG1lbnRcIixcbiAgICB9KTtcblxuICAgIHF1aWNrU3RhcnRTcGlubmVyLnN1Y2NlZWQoXCJEZXZlbG9wbWVudCBlbnZpcm9ubWVudCBjcmVhdGVkIVwiKTtcblxuICAgIC8vIFN0b3JlIHRoZSBBUEkga2V5IGZvciBpbW1lZGlhdGUgdXNlXG4gICAgc2V0QXBpS2V5KHJlc3VsdC5hcGlLZXkua2V5KTtcblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgc3VjY2VzcyhcIlJlYWR5IHRvIGNvZGUhIPCfmoBcIiwge1xuICAgICAgXCJBUEkgS2V5XCI6IHJlc3VsdC5hcGlLZXkubmFtZSxcbiAgICAgIFwiRW52aXJvbm1lbnRcIjogY29sb3JzLndhcm5pbmcoXCJ0ZXN0XCIpLFxuICAgICAgXCJLZXkgVHlwZVwiOiByZXN1bHQuYXBpS2V5LnR5cGUsXG4gICAgfSk7XG5cbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKFwiVGVzdCBOdW1iZXJzOlwiKSk7XG4gICAgcmVzdWx0LnRlc3ROdW1iZXJzLmZvckVhY2goKHsgbnVtYmVyLCBiZWhhdmlvciB9KSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhgICAke2NvbG9ycy5wcmltYXJ5KG51bWJlcil9IC0gJHtjb2xvcnMuZGltKGJlaGF2aW9yKX1gKTtcbiAgICB9KTtcblxuICAgIGNvbnNvbGUubG9nKCk7XG4gICAgY29uc29sZS5sb2coY29sb3JzLmJvbGQoXCJOZXh0IFN0ZXBzOlwiKSk7XG4gICAgcmVzdWx0Lm5leHRTdGVwcy5mb3JFYWNoKChzdGVwLCBpKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhgICAke2kgKyAxfS4gJHtzdGVwfWApO1xuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMud2FybmluZyhcIuKaoO+4jyBcIiArIHJlc3VsdC53YXJuaW5nKSk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcXVpY2tTdGFydFNwaW5uZXIuZmFpbChcIkZhaWxlZCB0byBjcmVhdGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRcIik7XG4gICAgXG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBlcnJvcihlcnIubWVzc2FnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVycm9yKFwiVW5rbm93biBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc2V0dXBcIik7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIE9wZW4gYnJvd3NlciBmb3IgcHJvZHVjdGlvbiBvbmJvYXJkaW5nXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG9wZW5Qcm9kdWN0aW9uT25ib2FyZGluZygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBiYXNlVXJsID0gZ2V0Q29uZmlnVmFsdWUoXCJiYXNlVXJsXCIpIHx8IFwiaHR0cHM6Ly9zZW5kbHkubGl2ZVwiO1xuICAgIGNvbnN0IG9uYm9hcmRpbmdVcmwgPSBgJHtiYXNlVXJsfS9vbmJvYXJkaW5nYDtcbiAgICBcbiAgICBjb25zb2xlLmxvZygpO1xuICAgIGNvbnNvbGUubG9nKGNvbG9ycy5ib2xkKFwiT3BlbmluZyBicm93c2VyIGZvciBwcm9kdWN0aW9uIHNldHVwLi4uXCIpKTtcbiAgICBjb25zb2xlLmxvZyhgSWYgaXQgZG9lc24ndCBvcGVuIGF1dG9tYXRpY2FsbHksIHZpc2l0OiAke2NvbG9ycy5wcmltYXJ5KG9uYm9hcmRpbmdVcmwpfWApO1xuICAgIFxuICAgIGNvbnN0IG9wZW4gPSAoYXdhaXQgaW1wb3J0KFwib3BlblwiKSkuZGVmYXVsdDtcbiAgICBhd2FpdCBvcGVuKG9uYm9hcmRpbmdVcmwpO1xuICAgIFxuICAgIGluZm8oXCJDb21wbGV0ZSB0aGUgdmVyaWZpY2F0aW9uIGluIHlvdXIgYnJvd3NlciwgdGhlbiBydW4gJ3NlbmRseSB3aG9hbWknIHRvIGNoZWNrIHN0YXR1cy5cIik7XG4gICAgcmV0dXJuIGZhbHNlOyAvLyBEb24ndCBjb250aW51ZSBDTEkgZmxvd1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnJvcihcIkZhaWxlZCB0byBvcGVuIGJyb3dzZXIuIFBsZWFzZSB2aXNpdCBodHRwczovL3NlbmRseS5saXZlL29uYm9hcmRpbmcgbWFudWFsbHkuXCIpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHVzZXIgbmVlZHMgdXBncmFkZSBmcm9tIENMSSBzZXNzaW9uIHRvIEFQSSBrZXlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrVXBncmFkZU5lZWRlZChtaXNzaW5nU2NvcGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAobWlzc2luZ1Njb3Blcy5pbmNsdWRlcyhcInNtczpzZW5kXCIpKSB7XG4gICAgY29uc29sZS5sb2coKTtcbiAgICBjb25zb2xlLmxvZyhjb2xvcnMud2FybmluZyhcIvCflJIgU01TIG1lc3NhZ2luZyByZXF1aXJlcyBhbiBBUEkga2V5LlwiKSk7XG4gICAgXG4gICAgY29uc3QgeyB1cGdyYWRlIH0gPSBhd2FpdCBpbnF1aXJlci5wcm9tcHQoW1xuICAgICAge1xuICAgICAgICB0eXBlOiBcImNvbmZpcm1cIixcbiAgICAgICAgbmFtZTogXCJ1cGdyYWRlXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiV291bGQgeW91IGxpa2UgdG8gc2V0IHVwIGEgZGV2ZWxvcG1lbnQgQVBJIGtleSBub3c/XCIsXG4gICAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgaWYgKHVwZ3JhZGUpIHtcbiAgICAgIGF3YWl0IHJ1blF1aWNrU3RhcnQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5mbyhcIllvdSBjYW4gcnVuICdzZW5kbHkgb25ib2FyZGluZycgYW55dGltZSB0byBzZXQgdXAgbWVzc2FnaW5nLlwiKTtcbiAgICB9XG4gIH1cbn0iXX0=
@@ -1539,5 +1539,5 @@
1539
1539
  ]
1540
1540
  }
1541
1541
  },
1542
- "version": "2.3.0"
1542
+ "version": "3.0.0"
1543
1543
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendly/cli",
3
- "version": "2.3.0",
3
+ "version": "3.0.0",
4
4
  "type": "module",
5
5
  "description": "Sendly CLI - Send SMS from your terminal",
6
6
  "author": "Sendly <support@sendly.live>",