@l4yercak3/cli 2.0.0-alpha.1 → 2.0.0-alpha.2

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.
@@ -16,8 +16,11 @@ const setup_1 = require("../commands/app/setup");
16
16
  const sync_1 = require("../commands/app/sync");
17
17
  const target_1 = require("../commands/doctor/target");
18
18
  const list_1 = require("../commands/env/list");
19
+ const pick_1 = require("../commands/env/pick");
19
20
  const set_1 = require("../commands/env/set");
20
21
  const use_1 = require("../commands/env/use");
22
+ const login_1 = require("../commands/auth/login");
23
+ const list_2 = require("../commands/org/list");
21
24
  const connect_2 = require("../commands/legacy/connect");
22
25
  const pages_2 = require("../commands/legacy/pages");
23
26
  const spread_1 = require("../commands/legacy/spread");
@@ -41,7 +44,10 @@ function printHelp() {
41
44
  console.log((0, colors_1.colorOrange)("Usage: sevenlayers <command> [options]"));
42
45
  console.log("");
43
46
  console.log("Core commands:");
47
+ console.log(" auth login Store auth token/backend for interactive org wiring");
48
+ console.log(" org list List organizations for the authenticated account");
44
49
  console.log(" env list List configured target profiles");
50
+ console.log(" env pick Interactive profile+organization selection");
45
51
  console.log(" env use <profile> Set active profile");
46
52
  console.log(" env set <profile> Configure profile endpoints/default targets");
47
53
  console.log(" doctor target Validate resolved profile/org/app target context");
@@ -102,6 +108,15 @@ async function run() {
102
108
  if (second === "set") {
103
109
  return (0, set_1.handleEnvSet)(parsed);
104
110
  }
111
+ if (second === "pick") {
112
+ return (0, pick_1.handleEnvPick)(parsed);
113
+ }
114
+ }
115
+ if (first === "auth" && second === "login") {
116
+ return (0, login_1.handleAuthLogin)(parsed);
117
+ }
118
+ if (first === "org" && (!second || second === "list")) {
119
+ return (0, list_2.handleOrgList)(parsed);
105
120
  }
106
121
  if (first === "doctor" && second === "target") {
107
122
  return (0, target_1.handleDoctorTarget)(parsed);
@@ -1 +1 @@
1
- {"version":3,"file":"sevenlayers.js","sourceRoot":"","sources":["../../src/bin/sevenlayers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sevenlayers.js","sourceRoot":"","sources":["../../src/bin/sevenlayers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../src/commands/app/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAqC,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAErF,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;CAC1B;AA0BD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAqBhC"}
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../src/commands/app/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAqC,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAGrF,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;CAC1B;AA+BD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAqBhC"}
@@ -4,7 +4,8 @@ exports.resolveRemoteCommand = resolveRemoteCommand;
4
4
  const args_1 = require("../../core/args");
5
5
  const platform_1 = require("../../api/platform");
6
6
  const target_guard_1 = require("../../safety/target-guard");
7
- function resolveApiToken(parsed) {
7
+ const auth_store_1 = require("../../config/auth-store");
8
+ async function resolveApiToken(parsed) {
8
9
  const explicit = (0, args_1.getOptionString)(parsed, "token") ??
9
10
  (0, args_1.getOptionString)(parsed, "api-token") ??
10
11
  (0, args_1.getOptionString)(parsed, "api-key");
@@ -21,6 +22,10 @@ function resolveApiToken(parsed) {
21
22
  return candidate.trim();
22
23
  }
23
24
  }
25
+ const authStore = await (0, auth_store_1.loadAuthStore)();
26
+ if (authStore.token && authStore.token.trim().length > 0) {
27
+ return authStore.token.trim();
28
+ }
24
29
  return undefined;
25
30
  }
26
31
  async function resolveRemoteCommand(parsed, options) {
@@ -28,9 +33,9 @@ async function resolveRemoteCommand(parsed, options) {
28
33
  requireOrgApp: options.requireOrgApp,
29
34
  mutatingCommand: options.mutatingCommand
30
35
  });
31
- const token = resolveApiToken(parsed);
36
+ const token = await resolveApiToken(parsed);
32
37
  if (!token) {
33
- throw new Error("Missing API token. Provide --token <value> or set SEVENLAYERS_API_TOKEN/L4YERCAK3_API_KEY.");
38
+ throw new Error("Missing API token. Provide --token <value>, set SEVENLAYERS_API_TOKEN/L4YERCAK3_API_KEY, or run 'sevenlayers auth login'.");
34
39
  }
35
40
  return {
36
41
  target,
@@ -1 +1 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../src/commands/app/remote.ts"],"names":[],"mappings":";;AAuCA,oDAwBC;AA/DD,0CAAqF;AACrF,iDAA6D;AAC7D,4DAAqF;AAarF,SAAS,eAAe,CAAC,MAAkB;IACzC,MAAM,QAAQ,GACZ,IAAA,sBAAe,EAAC,MAAM,EAAE,OAAO,CAAC;QAChC,IAAA,sBAAe,EAAC,MAAM,EAAE,WAAW,CAAC;QACpC,IAAA,sBAAe,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,kBAAkB,GAAG;QACzB,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC/B,OAAO,CAAC,GAAG,CAAC,iBAAiB;KAC9B,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;QAC3C,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,MAAkB,EAClB,OAAoC;IAEpC,MAAM,MAAM,GAAG,MAAM,IAAA,mCAAoB,EAAC,MAAM,EAAE;QAChD,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM;QACN,IAAI,EAAE,IAAA,uBAAgB,EAAC,MAAM,EAAE,MAAM,CAAC;QACtC,GAAG,EAAE,IAAA,kCAAuB,EAAC;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK;SACN,CAAC;KACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../src/commands/app/remote.ts"],"names":[],"mappings":";;AA6CA,oDAwBC;AArED,0CAAqF;AACrF,iDAA6D;AAC7D,4DAAqF;AACrF,wDAAwD;AAaxD,KAAK,UAAU,eAAe,CAAC,MAAkB;IAC/C,MAAM,QAAQ,GACZ,IAAA,sBAAe,EAAC,MAAM,EAAE,OAAO,CAAC;QAChC,IAAA,sBAAe,EAAC,MAAM,EAAE,WAAW,CAAC;QACpC,IAAA,sBAAe,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,kBAAkB,GAAG;QACzB,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC/B,OAAO,CAAC,GAAG,CAAC,iBAAiB;KAC9B,CAAC;IAEF,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;QAC3C,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,IAAA,0BAAa,GAAE,CAAC;IACxC,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,MAAkB,EAClB,OAAoC;IAEpC,MAAM,MAAM,GAAG,MAAM,IAAA,mCAAoB,EAAC,MAAM,EAAE;QAChD,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,2HAA2H,CAC5H,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM;QACN,IAAI,EAAE,IAAA,uBAAgB,EAAC,MAAM,EAAE,MAAM,CAAC;QACtC,GAAG,EAAE,IAAA,kCAAuB,EAAC;YAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK;SACN,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ParsedArgs } from "../../core/args";
2
+ export declare function handleAuthLogin(parsed: ParsedArgs): Promise<number>;
3
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAqC,MAAM,iBAAiB,CAAC;AAyBrF,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAkDzE"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.handleAuthLogin = handleAuthLogin;
7
+ const promises_1 = __importDefault(require("node:readline/promises"));
8
+ const node_process_1 = require("node:process");
9
+ const profile_store_1 = require("../../config/profile-store");
10
+ const auth_store_1 = require("../../config/auth-store");
11
+ const args_1 = require("../../core/args");
12
+ const colors_1 = require("../../core/colors");
13
+ const shared_1 = require("../org/shared");
14
+ function printUsage() {
15
+ console.log((0, colors_1.colorOrange)("Usage: sevenlayers auth login [options]"));
16
+ console.log("");
17
+ console.log("Options:");
18
+ console.log(" --token <value> API token (or use env vars)");
19
+ console.log(" --backend-url <url> Backend URL to persist for auth/org commands");
20
+ console.log(" --skip-verify Skip organization list verification probe");
21
+ console.log(" --json Output deterministic JSON");
22
+ console.log(" --help Show this help");
23
+ }
24
+ async function promptForToken() {
25
+ const terminal = promises_1.default.createInterface({ input: node_process_1.stdin, output: node_process_1.stdout });
26
+ try {
27
+ const token = await terminal.question("API token: ");
28
+ return token.trim();
29
+ }
30
+ finally {
31
+ terminal.close();
32
+ }
33
+ }
34
+ async function handleAuthLogin(parsed) {
35
+ if ((0, args_1.getOptionBoolean)(parsed, "help")) {
36
+ printUsage();
37
+ return 0;
38
+ }
39
+ const explicitToken = (0, shared_1.resolveApiToken)(parsed);
40
+ const token = explicitToken ?? await promptForToken();
41
+ if (!token) {
42
+ throw new Error("No token provided. Re-run with --token <value>.");
43
+ }
44
+ const backendUrl = ((0, args_1.getOptionString)(parsed, "backend-url") ?? "").trim()
45
+ || (0, profile_store_1.getBootstrapProfileDefaults)("staging").backendUrl;
46
+ let verified = false;
47
+ if (!(0, args_1.getOptionBoolean)(parsed, "skip-verify")) {
48
+ const { organizations } = await (0, shared_1.fetchOrganizations)({
49
+ backendUrl,
50
+ token,
51
+ limit: 1
52
+ });
53
+ verified = organizations.length >= 0;
54
+ }
55
+ const saved = await (0, auth_store_1.saveAuthStore)({ token, backendUrl });
56
+ if ((0, args_1.getOptionBoolean)(parsed, "json")) {
57
+ console.log(JSON.stringify({
58
+ success: true,
59
+ backendUrl: saved.backendUrl,
60
+ tokenStored: Boolean(saved.token),
61
+ verified
62
+ }, null, 2));
63
+ return 0;
64
+ }
65
+ console.log((0, colors_1.colorGreen)("Authentication saved."));
66
+ console.log((0, colors_1.colorGray)(`Backend URL: ${saved.backendUrl ?? "<unset>"}`));
67
+ console.log((0, colors_1.colorGray)(`Token stored: ${saved.token ? "yes" : "no"}`));
68
+ console.log((0, colors_1.colorGray)(`Verified: ${verified ? "yes" : "no (skipped)"}`));
69
+ console.log("");
70
+ console.log((0, colors_1.colorOrange)("Next: sevenlayers org list"));
71
+ return 0;
72
+ }
73
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type ParsedArgs } from "../../core/args";
2
+ export declare function handleEnvPick(parsed: ParsedArgs): Promise<number>;
3
+ //# sourceMappingURL=pick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../../src/commands/env/pick.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,UAAU,EAGhB,MAAM,iBAAiB,CAAC;AA4CzB,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA4HvE"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.handleEnvPick = handleEnvPick;
7
+ const promises_1 = __importDefault(require("node:readline/promises"));
8
+ const node_process_1 = require("node:process");
9
+ const args_1 = require("../../core/args");
10
+ const colors_1 = require("../../core/colors");
11
+ const profile_store_1 = require("../../config/profile-store");
12
+ const shared_1 = require("../org/shared");
13
+ function printUsage() {
14
+ console.log((0, colors_1.colorOrange)("Usage: sevenlayers env pick [options]"));
15
+ console.log("");
16
+ console.log("Options:");
17
+ console.log(" --env <profile> Profile to configure (default: active)");
18
+ console.log(" --org-id <id> Organization id (skip picker)");
19
+ console.log(" --app-id <id> Default app id to persist");
20
+ console.log(" --backend-url <url> Backend URL override");
21
+ console.log(" --token <value> API token override");
22
+ console.log(" --yes Non-interactive mode (auto-pick first org)");
23
+ console.log(" --json Output deterministic JSON");
24
+ console.log(" --help Show this help");
25
+ }
26
+ async function promptLine(question) {
27
+ const terminal = promises_1.default.createInterface({ input: node_process_1.stdin, output: node_process_1.stdout });
28
+ try {
29
+ const answer = await terminal.question(question);
30
+ return answer.trim();
31
+ }
32
+ finally {
33
+ terminal.close();
34
+ }
35
+ }
36
+ async function promptRequiredLine(question, fallback) {
37
+ while (true) {
38
+ const answer = await promptLine(question);
39
+ const value = answer.length > 0 ? answer : fallback;
40
+ if (value.trim().length > 0) {
41
+ return value.trim();
42
+ }
43
+ }
44
+ }
45
+ async function handleEnvPick(parsed) {
46
+ if ((0, args_1.getOptionBoolean)(parsed, "help")) {
47
+ printUsage();
48
+ return 0;
49
+ }
50
+ const store = await (0, profile_store_1.loadProfileStore)();
51
+ const profileName = (0, args_1.getOptionString)(parsed, "env")
52
+ ?? (0, args_1.getOptionString)(parsed, "profile")
53
+ ?? store.activeProfile;
54
+ const existing = store.profiles[profileName];
55
+ const defaults = (0, profile_store_1.getBootstrapProfileDefaults)(profileName);
56
+ const authContext = await (0, shared_1.resolveAuthContext)(parsed);
57
+ const backendUrl = (0, args_1.getOptionString)(parsed, "backend-url")
58
+ ?? existing?.backendUrl
59
+ ?? authContext.backendUrl
60
+ ?? defaults.backendUrl;
61
+ let selectedOrgId = (0, args_1.getOptionString)(parsed, "org-id") ?? existing?.defaultOrgId;
62
+ if (!selectedOrgId) {
63
+ let result = await (0, shared_1.fetchOrganizations)({
64
+ backendUrl,
65
+ token: authContext.token,
66
+ limit: 50
67
+ });
68
+ if (!process.stdin.isTTY && !(0, args_1.getOptionBoolean)(parsed, "yes")) {
69
+ throw new Error("Non-interactive mode requires --org-id or --yes.");
70
+ }
71
+ if (result.organizations.length === 0) {
72
+ if (!process.stdin.isTTY) {
73
+ throw new Error("No organizations found and terminal is non-interactive.");
74
+ }
75
+ const orgName = await promptRequiredLine("Organization name to create: ", "My Organization");
76
+ const created = await (0, shared_1.createOrganization)({
77
+ backendUrl,
78
+ token: authContext.token,
79
+ name: orgName
80
+ });
81
+ result = {
82
+ organizations: [created],
83
+ total: 1
84
+ };
85
+ console.log((0, colors_1.colorGray)(`Created organization: ${created.name} (${created.id})`));
86
+ }
87
+ if ((0, args_1.getOptionBoolean)(parsed, "yes")) {
88
+ selectedOrgId = result.organizations[0]?.id;
89
+ }
90
+ else {
91
+ console.log((0, colors_1.colorOrange)("Select organization:"));
92
+ for (const [index, organization] of result.organizations.entries()) {
93
+ console.log(`${index + 1}. ${organization.name} (${organization.id})`);
94
+ }
95
+ console.log(`${result.organizations.length + 1}. Create new organization`);
96
+ const raw = await promptLine("Organization number: ");
97
+ const selection = Number.parseInt(raw, 10);
98
+ if (!Number.isInteger(selection) || selection < 1 || selection > result.organizations.length + 1) {
99
+ throw new Error("Invalid selection. Re-run and choose a valid organization number.");
100
+ }
101
+ if (selection === result.organizations.length + 1) {
102
+ const orgName = await promptRequiredLine("Organization name: ", "My Organization");
103
+ const created = await (0, shared_1.createOrganization)({
104
+ backendUrl,
105
+ token: authContext.token,
106
+ name: orgName
107
+ });
108
+ selectedOrgId = created.id;
109
+ console.log((0, colors_1.colorGray)(`Created organization: ${created.name} (${created.id})`));
110
+ }
111
+ else {
112
+ selectedOrgId = result.organizations[selection - 1]?.id;
113
+ }
114
+ }
115
+ }
116
+ if (!selectedOrgId) {
117
+ throw new Error("Could not resolve organization id.");
118
+ }
119
+ let appId = (0, args_1.getOptionString)(parsed, "app-id") ?? existing?.defaultAppId;
120
+ if (!(0, args_1.getOptionString)(parsed, "app-id") && process.stdin.isTTY && !(0, args_1.getOptionBoolean)(parsed, "yes")) {
121
+ const suggested = existing?.defaultAppId ?? "";
122
+ const prompt = suggested.length > 0
123
+ ? `Default app id [${suggested}] (optional): `
124
+ : "Default app id (optional): ";
125
+ const answer = await promptLine(prompt);
126
+ if (answer.length > 0) {
127
+ appId = answer;
128
+ }
129
+ }
130
+ await (0, profile_store_1.upsertProfile)({
131
+ name: profileName,
132
+ backendUrl,
133
+ appUrl: existing?.appUrl ?? defaults.appUrl,
134
+ defaultOrgId: selectedOrgId,
135
+ defaultAppId: appId,
136
+ requiresConfirmation: existing?.requiresConfirmation ?? defaults.requiresConfirmation
137
+ });
138
+ await (0, profile_store_1.setActiveProfile)(profileName);
139
+ if ((0, args_1.getOptionBoolean)(parsed, "json")) {
140
+ console.log(JSON.stringify({
141
+ success: true,
142
+ profile: profileName,
143
+ backendUrl,
144
+ defaultOrgId: selectedOrgId,
145
+ defaultAppId: appId ?? null
146
+ }, null, 2));
147
+ return 0;
148
+ }
149
+ console.log((0, colors_1.colorGreen)(`Profile '${profileName}' updated.`));
150
+ console.log((0, colors_1.colorGray)(`Backend URL: ${backendUrl}`));
151
+ console.log((0, colors_1.colorGray)(`Default org: ${selectedOrgId}`));
152
+ console.log((0, colors_1.colorGray)(`Default app: ${appId ?? "<unset>"}`));
153
+ return 0;
154
+ }
155
+ //# sourceMappingURL=pick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick.js","sourceRoot":"","sources":["../../../src/commands/env/pick.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type ParsedArgs } from "../../core/args";
2
+ export declare function handleOrgList(parsed: ParsedArgs): Promise<number>;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/org/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAqC,MAAM,iBAAiB,CAAC;AAerF,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCvE"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleOrgList = handleOrgList;
4
+ const args_1 = require("../../core/args");
5
+ const colors_1 = require("../../core/colors");
6
+ const shared_1 = require("./shared");
7
+ function printUsage() {
8
+ console.log((0, colors_1.colorOrange)("Usage: sevenlayers org list [options]"));
9
+ console.log("");
10
+ console.log("Options:");
11
+ console.log(" --backend-url <url> Backend URL override");
12
+ console.log(" --token <value> API token override");
13
+ console.log(" --limit <n> Max organizations to fetch (default: 25)");
14
+ console.log(" --json Output deterministic JSON");
15
+ console.log(" --help Show this help");
16
+ }
17
+ async function handleOrgList(parsed) {
18
+ if ((0, args_1.getOptionBoolean)(parsed, "help")) {
19
+ printUsage();
20
+ return 0;
21
+ }
22
+ const context = await (0, shared_1.resolveAuthContext)(parsed);
23
+ const limitRaw = (0, args_1.getOptionString)(parsed, "limit");
24
+ const parsedLimit = limitRaw ? Number.parseInt(limitRaw, 10) : Number.NaN;
25
+ const limit = Number.isFinite(parsedLimit) && parsedLimit > 0 ? parsedLimit : 25;
26
+ const result = await (0, shared_1.fetchOrganizations)({
27
+ backendUrl: context.backendUrl,
28
+ token: context.token,
29
+ limit
30
+ });
31
+ if ((0, args_1.getOptionBoolean)(parsed, "json")) {
32
+ console.log(JSON.stringify({
33
+ success: true,
34
+ backendUrl: context.backendUrl,
35
+ total: result.total,
36
+ organizations: result.organizations
37
+ }, null, 2));
38
+ return 0;
39
+ }
40
+ console.log((0, colors_1.colorOrange)(`Organizations (${result.organizations.length}/${result.total}):`));
41
+ for (const [index, organization] of result.organizations.entries()) {
42
+ const slug = organization.slug ? ` slug=${organization.slug}` : "";
43
+ console.log(`${index + 1}. ${organization.name}`);
44
+ console.log((0, colors_1.colorGray)(` id=${organization.id}${slug}`));
45
+ }
46
+ return 0;
47
+ }
48
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/org/list.ts"],"names":[],"mappings":";;AAeA,sCAuCC;AAtDD,0CAAqF;AACrF,8CAA2D;AAC3D,qCAAkE;AAElE,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC,IAAA,oBAAW,EAAC,uCAAuC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;AAC9D,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,MAAkB;IACpD,IAAI,IAAA,uBAAgB,EAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QACrC,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAkB,EAAC,MAAM,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAA,sBAAe,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAkB,EAAC;QACtC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK;KACN,CAAC,CAAC;IAEH,IAAI,IAAA,uBAAgB,EAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;YACE,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,IAAA,oBAAW,EAAC,kBAAkB,MAAM,CAAC,aAAa,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAC5F,KAAK,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QACnE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,IAAA,kBAAS,EAAC,UAAU,YAAY,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { type ParsedArgs } from "../../core/args";
2
+ import { type AuthStore } from "../../config/auth-store";
3
+ export interface OrganizationSummary {
4
+ id: string;
5
+ name: string;
6
+ slug?: string;
7
+ }
8
+ export declare function resolveApiToken(parsed: ParsedArgs, authStore?: AuthStore): string | undefined;
9
+ export declare function resolveBackendUrl(parsed: ParsedArgs, authStore?: AuthStore): Promise<string | undefined>;
10
+ export declare function fetchOrganizations(args: {
11
+ backendUrl: string;
12
+ token: string;
13
+ limit?: number;
14
+ }): Promise<{
15
+ organizations: OrganizationSummary[];
16
+ total: number;
17
+ }>;
18
+ export declare function createOrganization(args: {
19
+ backendUrl: string;
20
+ token: string;
21
+ name: string;
22
+ }): Promise<OrganizationSummary>;
23
+ export declare function resolveAuthContext(parsed: ParsedArgs): Promise<{
24
+ authStore: AuthStore;
25
+ backendUrl: string;
26
+ token: string;
27
+ }>;
28
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/commands/org/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,KAAK,SAAS,EAAiB,MAAM,yBAAyB,CAAC;AAGxE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAyB7F;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoB9G;AA4DD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBnE;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmB/B;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IACpE,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAiBD"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveApiToken = resolveApiToken;
4
+ exports.resolveBackendUrl = resolveBackendUrl;
5
+ exports.fetchOrganizations = fetchOrganizations;
6
+ exports.createOrganization = createOrganization;
7
+ exports.resolveAuthContext = resolveAuthContext;
8
+ const client_1 = require("../../api/client");
9
+ const args_1 = require("../../core/args");
10
+ const auth_store_1 = require("../../config/auth-store");
11
+ const profile_store_1 = require("../../config/profile-store");
12
+ function resolveApiToken(parsed, authStore) {
13
+ const explicit = (0, args_1.getOptionString)(parsed, "token") ??
14
+ (0, args_1.getOptionString)(parsed, "api-token") ??
15
+ (0, args_1.getOptionString)(parsed, "api-key");
16
+ if (explicit && explicit.trim().length > 0) {
17
+ return explicit.trim();
18
+ }
19
+ const envTokenCandidates = [
20
+ process.env.SEVENLAYERS_API_TOKEN,
21
+ process.env.L4YERCAK3_API_TOKEN,
22
+ process.env.L4YERCAK3_API_KEY
23
+ ];
24
+ for (const candidate of envTokenCandidates) {
25
+ if (candidate && candidate.trim().length > 0) {
26
+ return candidate.trim();
27
+ }
28
+ }
29
+ if (authStore?.token && authStore.token.trim().length > 0) {
30
+ return authStore.token.trim();
31
+ }
32
+ return undefined;
33
+ }
34
+ async function resolveBackendUrl(parsed, authStore) {
35
+ const explicit = (0, args_1.getOptionString)(parsed, "backend-url");
36
+ if (explicit && explicit.trim().length > 0) {
37
+ return explicit.trim();
38
+ }
39
+ if (authStore?.backendUrl && authStore.backendUrl.trim().length > 0) {
40
+ return authStore.backendUrl.trim();
41
+ }
42
+ try {
43
+ const profile = await (0, profile_store_1.getActiveProfile)();
44
+ if (profile.backendUrl && profile.backendUrl.trim().length > 0) {
45
+ return profile.backendUrl.trim();
46
+ }
47
+ }
48
+ catch {
49
+ return undefined;
50
+ }
51
+ return undefined;
52
+ }
53
+ function normalizeOptionalString(value) {
54
+ if (typeof value !== "string") {
55
+ return undefined;
56
+ }
57
+ const normalized = value.trim();
58
+ return normalized.length > 0 ? normalized : undefined;
59
+ }
60
+ function normalizeOrganization(candidate) {
61
+ if (!candidate || typeof candidate !== "object") {
62
+ return null;
63
+ }
64
+ const record = candidate;
65
+ const id = normalizeOptionalString(record.id)
66
+ ?? normalizeOptionalString(record._id)
67
+ ?? normalizeOptionalString(record.organizationId);
68
+ if (!id) {
69
+ return null;
70
+ }
71
+ const name = normalizeOptionalString(record.name)
72
+ ?? normalizeOptionalString(record.displayName)
73
+ ?? normalizeOptionalString(record.slug)
74
+ ?? id;
75
+ const slug = normalizeOptionalString(record.slug);
76
+ return { id, name, slug };
77
+ }
78
+ function parseOrganizationsResponse(payload) {
79
+ if (Array.isArray(payload)) {
80
+ const organizations = payload.map(normalizeOrganization).filter((entry) => Boolean(entry));
81
+ return { organizations, total: organizations.length };
82
+ }
83
+ if (!payload || typeof payload !== "object") {
84
+ return { organizations: [], total: 0 };
85
+ }
86
+ const record = payload;
87
+ const rawItems = Array.isArray(record.items)
88
+ ? record.items
89
+ : Array.isArray(record.organizations)
90
+ ? record.organizations
91
+ : Array.isArray(record.data)
92
+ ? record.data
93
+ : [];
94
+ const organizations = rawItems
95
+ .map(normalizeOrganization)
96
+ .filter((entry) => Boolean(entry));
97
+ const total = typeof record.total === "number" ? record.total : organizations.length;
98
+ return { organizations, total };
99
+ }
100
+ async function fetchOrganizations(args) {
101
+ const limit = args.limit && args.limit > 0 ? args.limit : 25;
102
+ const client = (0, client_1.createApiClient)({
103
+ backendUrl: args.backendUrl,
104
+ token: args.token
105
+ });
106
+ try {
107
+ const response = await client.request("GET", "/api/v1/auth/cli/organizations");
108
+ const parsed = parseOrganizationsResponse(response);
109
+ if (parsed.organizations.length > 0 || parsed.total > 0) {
110
+ return parsed;
111
+ }
112
+ }
113
+ catch {
114
+ // Fallback to CRM organizations endpoint.
115
+ }
116
+ const fallback = await client.request("GET", `/api/v1/crm/organizations?limit=${encodeURIComponent(String(limit))}`);
117
+ return parseOrganizationsResponse(fallback);
118
+ }
119
+ async function createOrganization(args) {
120
+ const client = (0, client_1.createApiClient)({
121
+ backendUrl: args.backendUrl,
122
+ token: args.token
123
+ });
124
+ const response = await client.request("POST", "/api/v1/auth/cli/organizations", {
125
+ name: args.name
126
+ });
127
+ const parsed = parseOrganizationsResponse(response);
128
+ if (parsed.organizations.length > 0) {
129
+ return parsed.organizations[0];
130
+ }
131
+ const normalized = normalizeOrganization(response);
132
+ if (!normalized) {
133
+ throw new Error("Organization create response did not contain a valid organization id.");
134
+ }
135
+ return normalized;
136
+ }
137
+ async function resolveAuthContext(parsed) {
138
+ const authStore = await (0, auth_store_1.loadAuthStore)();
139
+ const backendUrl = await resolveBackendUrl(parsed, authStore);
140
+ if (!backendUrl) {
141
+ throw new Error("Missing backend URL. Provide --backend-url <url>, run 'sevenlayers auth login', or set a profile backend via 'sevenlayers env set'.");
142
+ }
143
+ const token = resolveApiToken(parsed, authStore);
144
+ if (!token) {
145
+ throw new Error("Missing API token. Provide --token <value>, set L4YERCAK3_API_KEY, or run 'sevenlayers auth login'.");
146
+ }
147
+ return { authStore, backendUrl, token };
148
+ }
149
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/org/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface AuthStore {
2
+ token?: string;
3
+ backendUrl?: string;
4
+ updatedAt: number;
5
+ }
6
+ interface AuthStoreOptions {
7
+ filePath?: string;
8
+ }
9
+ export declare function loadAuthStore(options?: AuthStoreOptions): Promise<AuthStore>;
10
+ export declare function saveAuthStore(store: Pick<AuthStore, "token" | "backendUrl">, options?: AuthStoreOptions): Promise<AuthStore>;
11
+ export {};
12
+ //# sourceMappingURL=auth-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-store.d.ts","sourceRoot":"","sources":["../../src/config/auth-store.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA2DD,wBAAsB,aAAa,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CAkBtF;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,YAAY,CAAC,EAC9C,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,SAAS,CAAC,CASpB"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.loadAuthStore = loadAuthStore;
7
+ exports.saveAuthStore = saveAuthStore;
8
+ const promises_1 = __importDefault(require("node:fs/promises"));
9
+ const node_os_1 = __importDefault(require("node:os"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ function now() {
12
+ return Date.now();
13
+ }
14
+ function resolveStorePath(filePath) {
15
+ if (filePath) {
16
+ return node_path_1.default.resolve(filePath);
17
+ }
18
+ const override = process.env.SEVENLAYERS_AUTH_STORE_PATH;
19
+ if (override && override.trim().length > 0) {
20
+ return node_path_1.default.resolve(override);
21
+ }
22
+ return node_path_1.default.join(node_os_1.default.homedir(), ".sevenlayers", "auth.json");
23
+ }
24
+ function fallbackStorePath() {
25
+ return node_path_1.default.join(node_os_1.default.tmpdir(), "sevenlayers-auth.json");
26
+ }
27
+ function isPermissionError(error) {
28
+ const ioError = error;
29
+ return ioError.code === "EPERM" || ioError.code === "EACCES";
30
+ }
31
+ function normalizeOptionalString(value) {
32
+ if (typeof value !== "string") {
33
+ return undefined;
34
+ }
35
+ const normalized = value.trim();
36
+ return normalized.length > 0 ? normalized : undefined;
37
+ }
38
+ async function writeStoreFile(filePath, store) {
39
+ await promises_1.default.mkdir(node_path_1.default.dirname(filePath), { recursive: true });
40
+ await promises_1.default.writeFile(filePath, `${JSON.stringify(store, null, 2)}\n`, "utf8");
41
+ }
42
+ async function writeWithFallback(filePath, store, explicitPath) {
43
+ try {
44
+ await writeStoreFile(filePath, store);
45
+ }
46
+ catch (error) {
47
+ if (explicitPath || !isPermissionError(error)) {
48
+ throw error;
49
+ }
50
+ const fallback = fallbackStorePath();
51
+ await writeStoreFile(fallback, store);
52
+ process.env.SEVENLAYERS_AUTH_STORE_PATH = fallback;
53
+ }
54
+ }
55
+ async function loadAuthStore(options = {}) {
56
+ const filePath = resolveStorePath(options.filePath);
57
+ try {
58
+ const raw = await promises_1.default.readFile(filePath, "utf8");
59
+ const parsed = JSON.parse(raw);
60
+ return {
61
+ token: normalizeOptionalString(parsed.token),
62
+ backendUrl: normalizeOptionalString(parsed.backendUrl),
63
+ updatedAt: typeof parsed.updatedAt === "number" ? parsed.updatedAt : now()
64
+ };
65
+ }
66
+ catch (error) {
67
+ const readError = error;
68
+ if (readError.code !== "ENOENT") {
69
+ throw readError;
70
+ }
71
+ return { updatedAt: now() };
72
+ }
73
+ }
74
+ async function saveAuthStore(store, options = {}) {
75
+ const normalized = {
76
+ token: normalizeOptionalString(store.token),
77
+ backendUrl: normalizeOptionalString(store.backendUrl),
78
+ updatedAt: now()
79
+ };
80
+ const filePath = resolveStorePath(options.filePath);
81
+ await writeWithFallback(filePath, normalized, Boolean(options.filePath));
82
+ return normalized;
83
+ }
84
+ //# sourceMappingURL=auth-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-store.js","sourceRoot":"","sources":["../../src/config/auth-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auth-org-env.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-org-env.test.d.ts","sourceRoot":"","sources":["../../src/tests/auth-org-env.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = __importDefault(require("node:test"));
7
+ const strict_1 = __importDefault(require("node:assert/strict"));
8
+ const promises_1 = __importDefault(require("node:fs/promises"));
9
+ const node_os_1 = __importDefault(require("node:os"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const args_1 = require("../core/args");
12
+ const profile_store_1 = require("../config/profile-store");
13
+ const auth_store_1 = require("../config/auth-store");
14
+ const login_1 = require("../commands/auth/login");
15
+ const list_1 = require("../commands/org/list");
16
+ const pick_1 = require("../commands/env/pick");
17
+ async function withTempDir(run) {
18
+ const directory = await promises_1.default.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), "sevenlayers-auth-org-env-"));
19
+ try {
20
+ await run(directory);
21
+ }
22
+ finally {
23
+ await promises_1.default.rm(directory, { recursive: true, force: true });
24
+ }
25
+ }
26
+ async function withMockFetch(handler, run) {
27
+ const original = globalThis.fetch;
28
+ globalThis.fetch = handler;
29
+ try {
30
+ await run();
31
+ }
32
+ finally {
33
+ globalThis.fetch = original;
34
+ }
35
+ }
36
+ async function captureOutput(run) {
37
+ const stdoutLines = [];
38
+ const stderrLines = [];
39
+ const originalLog = console.log;
40
+ const originalError = console.error;
41
+ console.log = (...args) => {
42
+ stdoutLines.push(args.map((arg) => String(arg)).join(" "));
43
+ };
44
+ console.error = (...args) => {
45
+ stderrLines.push(args.map((arg) => String(arg)).join(" "));
46
+ };
47
+ try {
48
+ const exitCode = await run();
49
+ return {
50
+ exitCode,
51
+ stdout: stdoutLines.join("\n"),
52
+ stderr: stderrLines.join("\n")
53
+ };
54
+ }
55
+ finally {
56
+ console.log = originalLog;
57
+ console.error = originalError;
58
+ }
59
+ }
60
+ function jsonResponse(payload, status = 200) {
61
+ return new Response(JSON.stringify(payload), {
62
+ status,
63
+ headers: { "Content-Type": "application/json" }
64
+ });
65
+ }
66
+ (0, node_test_1.default)("auth login persists token/backend and verifies organization access", async () => {
67
+ await withTempDir(async (directory) => {
68
+ const authStorePath = node_path_1.default.join(directory, "auth.json");
69
+ const previousAuth = process.env.SEVENLAYERS_AUTH_STORE_PATH;
70
+ process.env.SEVENLAYERS_AUTH_STORE_PATH = authStorePath;
71
+ try {
72
+ await withMockFetch(async (input, init) => {
73
+ strict_1.default.equal(String(input), "https://example.convex.site/api/v1/auth/cli/organizations");
74
+ strict_1.default.equal(init?.method, "GET");
75
+ strict_1.default.equal(init?.headers?.Authorization, "Bearer tok_login");
76
+ return jsonResponse([{ id: "org_1", name: "Org One" }]);
77
+ }, async () => {
78
+ const parsed = (0, args_1.parseArgv)([
79
+ "auth",
80
+ "login",
81
+ "--token",
82
+ "tok_login",
83
+ "--backend-url",
84
+ "https://example.convex.site",
85
+ "--json"
86
+ ]);
87
+ const output = await captureOutput(() => (0, login_1.handleAuthLogin)(parsed));
88
+ strict_1.default.equal(output.exitCode, 0);
89
+ const payload = JSON.parse(output.stdout);
90
+ strict_1.default.equal(payload.success, true);
91
+ strict_1.default.equal(payload.backendUrl, "https://example.convex.site");
92
+ strict_1.default.equal(payload.tokenStored, true);
93
+ strict_1.default.equal(payload.verified, true);
94
+ });
95
+ const stored = await (0, auth_store_1.loadAuthStore)({ filePath: authStorePath });
96
+ strict_1.default.equal(stored.token, "tok_login");
97
+ strict_1.default.equal(stored.backendUrl, "https://example.convex.site");
98
+ }
99
+ finally {
100
+ if (previousAuth === undefined) {
101
+ delete process.env.SEVENLAYERS_AUTH_STORE_PATH;
102
+ }
103
+ else {
104
+ process.env.SEVENLAYERS_AUTH_STORE_PATH = previousAuth;
105
+ }
106
+ }
107
+ });
108
+ });
109
+ (0, node_test_1.default)("org list can resolve token from auth store and emits deterministic JSON", async () => {
110
+ await withTempDir(async (directory) => {
111
+ const authStorePath = node_path_1.default.join(directory, "auth.json");
112
+ await promises_1.default.writeFile(authStorePath, JSON.stringify({
113
+ token: "tok_saved",
114
+ backendUrl: "https://example.convex.site",
115
+ updatedAt: Date.now()
116
+ }, null, 2), "utf8");
117
+ const previousAuth = process.env.SEVENLAYERS_AUTH_STORE_PATH;
118
+ process.env.SEVENLAYERS_AUTH_STORE_PATH = authStorePath;
119
+ try {
120
+ await withMockFetch(async (input, init) => {
121
+ strict_1.default.equal(String(input), "https://example.convex.site/api/v1/auth/cli/organizations");
122
+ strict_1.default.equal(init?.headers?.Authorization, "Bearer tok_saved");
123
+ return jsonResponse({
124
+ organizations: [{ id: "org_a", name: "Alpha Org", slug: "alpha" }]
125
+ });
126
+ }, async () => {
127
+ const parsed = (0, args_1.parseArgv)(["org", "list", "--json"]);
128
+ const output = await captureOutput(() => (0, list_1.handleOrgList)(parsed));
129
+ strict_1.default.equal(output.exitCode, 0);
130
+ const payload = JSON.parse(output.stdout);
131
+ strict_1.default.equal(payload.backendUrl, "https://example.convex.site");
132
+ strict_1.default.equal(payload.total, 1);
133
+ strict_1.default.equal(payload.organizations[0]?.id, "org_a");
134
+ });
135
+ }
136
+ finally {
137
+ if (previousAuth === undefined) {
138
+ delete process.env.SEVENLAYERS_AUTH_STORE_PATH;
139
+ }
140
+ else {
141
+ process.env.SEVENLAYERS_AUTH_STORE_PATH = previousAuth;
142
+ }
143
+ }
144
+ });
145
+ });
146
+ (0, node_test_1.default)("env pick updates profile defaults using explicit org/app values", async () => {
147
+ await withTempDir(async (directory) => {
148
+ const storePath = node_path_1.default.join(directory, "profiles.json");
149
+ const authStorePath = node_path_1.default.join(directory, "auth.json");
150
+ await (0, profile_store_1.upsertProfile)({
151
+ name: "staging",
152
+ backendUrl: "https://example.convex.site",
153
+ appUrl: "http://127.0.0.1:3000",
154
+ defaultOrgId: "org_old",
155
+ defaultAppId: "app_old",
156
+ requiresConfirmation: false
157
+ }, { filePath: storePath });
158
+ await promises_1.default.writeFile(authStorePath, JSON.stringify({
159
+ token: "tok_saved",
160
+ backendUrl: "https://example.convex.site",
161
+ updatedAt: Date.now()
162
+ }, null, 2), "utf8");
163
+ const previousProfile = process.env.SEVENLAYERS_PROFILE_STORE_PATH;
164
+ const previousAuth = process.env.SEVENLAYERS_AUTH_STORE_PATH;
165
+ process.env.SEVENLAYERS_PROFILE_STORE_PATH = storePath;
166
+ process.env.SEVENLAYERS_AUTH_STORE_PATH = authStorePath;
167
+ try {
168
+ const parsed = (0, args_1.parseArgv)([
169
+ "env",
170
+ "pick",
171
+ "--env",
172
+ "staging",
173
+ "--org-id",
174
+ "org_new",
175
+ "--app-id",
176
+ "app_new",
177
+ "--json"
178
+ ]);
179
+ const output = await captureOutput(() => (0, pick_1.handleEnvPick)(parsed));
180
+ strict_1.default.equal(output.exitCode, 0);
181
+ const payload = JSON.parse(output.stdout);
182
+ strict_1.default.equal(payload.profile, "staging");
183
+ strict_1.default.equal(payload.defaultOrgId, "org_new");
184
+ strict_1.default.equal(payload.defaultAppId, "app_new");
185
+ const persisted = JSON.parse(await promises_1.default.readFile(storePath, "utf8"));
186
+ strict_1.default.equal(persisted.activeProfile, "staging");
187
+ strict_1.default.equal(persisted.profiles.staging.defaultOrgId, "org_new");
188
+ strict_1.default.equal(persisted.profiles.staging.defaultAppId, "app_new");
189
+ }
190
+ finally {
191
+ if (previousProfile === undefined) {
192
+ delete process.env.SEVENLAYERS_PROFILE_STORE_PATH;
193
+ }
194
+ else {
195
+ process.env.SEVENLAYERS_PROFILE_STORE_PATH = previousProfile;
196
+ }
197
+ if (previousAuth === undefined) {
198
+ delete process.env.SEVENLAYERS_AUTH_STORE_PATH;
199
+ }
200
+ else {
201
+ process.env.SEVENLAYERS_AUTH_STORE_PATH = previousAuth;
202
+ }
203
+ }
204
+ });
205
+ });
206
+ //# sourceMappingURL=auth-org-env.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-org-env.test.js","sourceRoot":"","sources":["../../src/tests/auth-org-env.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@l4yercak3/cli",
3
- "version": "2.0.0-alpha.1",
3
+ "version": "2.0.0-alpha.2",
4
4
  "description": "SevenLayers CLI for app wiring, CMS, booking, and agent setup",
5
5
  "author": "SevenLayers",
6
6
  "license": "MIT",