@kingslanding/cli 0.3.2 → 0.5.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.
@@ -1,3 +1,60 @@
1
1
  import type { Command } from "commander";
2
+ import type { LoginPreferences } from "../lib/config.js";
3
+ /**
4
+ * Pick the URL to open: the code-embedded (complete) URL when the server
5
+ * provides it, otherwise the plain verification URI (older server).
6
+ */
7
+ export declare function resolveVerificationTarget(verificationUri: string, verificationUriComplete: string | undefined): string;
8
+ /**
9
+ * A session is "headless" when there's no local browser to open — over SSH,
10
+ * or on Linux with no display server. In that case the QR (scanned from a
11
+ * phone) is the primary path rather than redundant with an auto-opened browser.
12
+ */
13
+ export declare function isHeadlessSession(env: NodeJS.ProcessEnv, platform: NodeJS.Platform): boolean;
14
+ /**
15
+ * Merge command-line flags with persisted config into effective preferences.
16
+ * Precedence: an explicit flag wins, then persisted config, then the default.
17
+ * `--no-browser` (browserFlag=false) and `--qr` (qrFlag=true) are the only
18
+ * flags, so a flag can force the browser off or the QR on; config supplies the
19
+ * default for whichever flag wasn't passed.
20
+ */
21
+ export declare function resolveLoginPreferences(flags: {
22
+ browserFlag: boolean;
23
+ qrFlag: boolean;
24
+ }, config: LoginPreferences): {
25
+ noBrowser: boolean;
26
+ qr: boolean;
27
+ };
28
+ export interface LoginDisplay {
29
+ openBrowser: boolean;
30
+ showQr: boolean;
31
+ }
32
+ /**
33
+ * Decide whether to auto-open a browser and whether to render the QR.
34
+ *
35
+ * We open a browser unless the user opted out (`--no-browser`) or there's
36
+ * none to open (headless). We show the QR whenever we're NOT auto-opening a
37
+ * browser (so the user has a scannable path), or when explicitly forced
38
+ * (`--qr`). On a normal desktop the QR is hidden — it would just duplicate
39
+ * the browser that already opened pre-filled.
40
+ */
41
+ export declare function resolveLoginDisplay(opts: {
42
+ noBrowser: boolean;
43
+ qr: boolean;
44
+ headless: boolean;
45
+ }): LoginDisplay;
46
+ /**
47
+ * Build the login prompt, adapting the wording to what actually happens:
48
+ * automatic framing ("Opening your browser…") when we open it, manual framing
49
+ * ("visit this URL / scan this") when we don't. In browser mode the code isn't
50
+ * repeated — it's already visible in the URL and pre-filled on the page. In
51
+ * manual mode it's shown as a clean token for typing.
52
+ */
53
+ export declare function formatLoginMessage(args: {
54
+ userCode: string;
55
+ target: string;
56
+ openBrowser: boolean;
57
+ qr: string | null;
58
+ }): string;
2
59
  export declare function registerLoginCommand(program: Command): void;
3
60
  //# sourceMappingURL=login.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyD3D"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAezD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,MAAM,EACvB,uBAAuB,EAAE,MAAM,GAAG,SAAS,GAC1C,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAI5F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,EAChD,MAAM,EAAE,gBAAgB,GACvB;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAIrC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,YAAY,CAIf;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACnB,GAAG,MAAM,CA0BT;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgF3D"}
@@ -1,20 +1,101 @@
1
- import { exec } from "node:child_process";
1
+ import { execFile } from "node:child_process";
2
2
  import { ApiClient } from "../lib/api.js";
3
- import { resolveApiUrl, isLocalMode } from "../lib/config.js";
4
- import { getAuthHeader, loadCredentials, isTokenExpiringSoon, } from "../lib/auth.js";
3
+ import { resolveApiUrl, isLocalMode, loadGlobalConfig } from "../lib/config.js";
4
+ import { getAuthHeader, loadCredentials, isTokenExpiringSoon } from "../lib/auth.js";
5
5
  import { createSpinner } from "../lib/output.js";
6
+ import { renderQrCode } from "../lib/qr.js";
6
7
  import { AuthService } from "../services/auth-service.js";
7
8
  function tryOpenBrowser(url) {
8
9
  const cmd = process.platform === "darwin" ? "open" : "xdg-open";
9
- exec(`${cmd} ${JSON.stringify(url)}`, () => {
10
+ // execFile (no shell) passes the URL as a single argv element, so a
11
+ // server-provided URL can't inject shell metacharacters.
12
+ execFile(cmd, [url], () => {
10
13
  // Silent failure — user can copy/paste the URL
11
14
  });
12
15
  }
16
+ /**
17
+ * Pick the URL to open: the code-embedded (complete) URL when the server
18
+ * provides it, otherwise the plain verification URI (older server).
19
+ */
20
+ export function resolveVerificationTarget(verificationUri, verificationUriComplete) {
21
+ return verificationUriComplete ?? verificationUri;
22
+ }
23
+ /**
24
+ * A session is "headless" when there's no local browser to open — over SSH,
25
+ * or on Linux with no display server. In that case the QR (scanned from a
26
+ * phone) is the primary path rather than redundant with an auto-opened browser.
27
+ */
28
+ export function isHeadlessSession(env, platform) {
29
+ if (env.SSH_CONNECTION || env.SSH_TTY)
30
+ return true;
31
+ if (platform === "linux" && !env.DISPLAY && !env.WAYLAND_DISPLAY)
32
+ return true;
33
+ return false;
34
+ }
35
+ /**
36
+ * Merge command-line flags with persisted config into effective preferences.
37
+ * Precedence: an explicit flag wins, then persisted config, then the default.
38
+ * `--no-browser` (browserFlag=false) and `--qr` (qrFlag=true) are the only
39
+ * flags, so a flag can force the browser off or the QR on; config supplies the
40
+ * default for whichever flag wasn't passed.
41
+ */
42
+ export function resolveLoginPreferences(flags, config) {
43
+ const noBrowser = flags.browserFlag === false || config.browser === false;
44
+ const qr = flags.qrFlag || config.qr === true;
45
+ return { noBrowser, qr };
46
+ }
47
+ /**
48
+ * Decide whether to auto-open a browser and whether to render the QR.
49
+ *
50
+ * We open a browser unless the user opted out (`--no-browser`) or there's
51
+ * none to open (headless). We show the QR whenever we're NOT auto-opening a
52
+ * browser (so the user has a scannable path), or when explicitly forced
53
+ * (`--qr`). On a normal desktop the QR is hidden — it would just duplicate
54
+ * the browser that already opened pre-filled.
55
+ */
56
+ export function resolveLoginDisplay(opts) {
57
+ const openBrowser = !opts.noBrowser && !opts.headless;
58
+ const showQr = opts.qr || !openBrowser;
59
+ return { openBrowser, showQr };
60
+ }
61
+ /**
62
+ * Build the login prompt, adapting the wording to what actually happens:
63
+ * automatic framing ("Opening your browser…") when we open it, manual framing
64
+ * ("visit this URL / scan this") when we don't. In browser mode the code isn't
65
+ * repeated — it's already visible in the URL and pre-filled on the page. In
66
+ * manual mode it's shown as a clean token for typing.
67
+ */
68
+ export function formatLoginMessage(args) {
69
+ const { userCode, target, openBrowser, qr } = args;
70
+ const lines = [];
71
+ if (openBrowser) {
72
+ lines.push("Opening your browser to authorize this device…");
73
+ lines.push("");
74
+ lines.push(" Didn't open? Visit:");
75
+ lines.push(" " + target);
76
+ }
77
+ else {
78
+ lines.push("To authorize this device, visit:");
79
+ lines.push(" " + target);
80
+ }
81
+ if (qr) {
82
+ lines.push("");
83
+ lines.push("Or scan with your phone:");
84
+ lines.push(qr);
85
+ }
86
+ if (!openBrowser) {
87
+ lines.push("");
88
+ lines.push(`Verification code: ${userCode}`);
89
+ }
90
+ return lines.join("\n");
91
+ }
13
92
  export function registerLoginCommand(program) {
14
93
  program
15
94
  .command("login")
16
95
  .description("Authenticate with King's Landing")
17
- .action(async () => {
96
+ .option("--no-browser", "Don't open the browser automatically; show a QR to scan instead")
97
+ .option("--qr", "Always show a QR code, even when the browser opens")
98
+ .action(async (options) => {
18
99
  const apiUrl = resolveApiUrl();
19
100
  if (isLocalMode(apiUrl)) {
20
101
  console.log("Local mode — no login required.");
@@ -35,15 +116,30 @@ export function registerLoginCommand(program) {
35
116
  const authHeader = getAuthHeader(apiUrl);
36
117
  const api = new ApiClient(apiUrl, authHeader);
37
118
  const authService = new AuthService(api, apiUrl);
38
- const spinner = createSpinner("Waiting for browser authorization...");
39
- await authService.login((userCode, verificationUrl) => {
40
- console.log();
41
- console.log("Open this URL in your browser:");
42
- console.log(" " + verificationUrl);
119
+ const spinner = createSpinner("Waiting for authorization");
120
+ const prefs = resolveLoginPreferences({ browserFlag: options.browser, qrFlag: options.qr ?? false }, loadGlobalConfig().login ?? {});
121
+ const display = resolveLoginDisplay({
122
+ noBrowser: prefs.noBrowser,
123
+ qr: prefs.qr,
124
+ headless: isHeadlessSession(process.env, process.platform),
125
+ });
126
+ await authService.login((userCode, verificationUri, verificationUriComplete) => {
127
+ const target = resolveVerificationTarget(verificationUri, verificationUriComplete);
128
+ let qr = null;
129
+ if (display.showQr) {
130
+ try {
131
+ qr = renderQrCode(target);
132
+ }
133
+ catch {
134
+ // QR is a convenience — never block login on a render failure
135
+ }
136
+ }
43
137
  console.log();
44
- console.log("Enter code: " + userCode);
138
+ console.log(formatLoginMessage({ userCode, target, openBrowser: display.openBrowser, qr }));
45
139
  console.log();
46
- tryOpenBrowser(verificationUrl);
140
+ if (display.openBrowser) {
141
+ tryOpenBrowser(target);
142
+ }
47
143
  spinner.start();
48
144
  });
49
145
  spinner.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,7 +9,9 @@ import { registerWhoamiCommand } from "./commands/whoami.js";
9
9
  import { registerDeployKeyCommand } from "./commands/deploy-key.js";
10
10
  import { CLIError } from "./lib/errors.js";
11
11
  import { checkCredentialPermissions } from "./lib/auth.js";
12
+ import { migrateLegacyConfigDir } from "./lib/config.js";
12
13
  import { getVersion } from "./lib/version.js";
14
+ migrateLegacyConfigDir();
13
15
  const warning = checkCredentialPermissions();
14
16
  if (warning)
15
17
  console.warn(warning);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;AAC7C,IAAI,OAAO;IAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEnC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AAE9F,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAElC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;IACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,sBAAsB,EAAE,CAAC;AAEzB,MAAM,OAAO,GAAG,0BAA0B,EAAE,CAAC;AAC7C,IAAI,OAAO;IAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEnC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AAE9F,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAElC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;IACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/lib/api.d.ts CHANGED
@@ -60,7 +60,8 @@ export interface DeployKeyStatusResponse {
60
60
  export interface DeviceCodeResponse {
61
61
  device_code: string;
62
62
  user_code: string;
63
- verification_url: string;
63
+ verification_uri: string;
64
+ verification_uri_complete?: string;
64
65
  expires_in: number;
65
66
  }
66
67
  export interface DeviceTokenResponse {
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,40 @@
1
+ /** Pre-XDG location; migrated to {@link KL_DIR} on first run. */
2
+ export declare const LEGACY_KL_DIR: string;
3
+ /**
4
+ * Resolve kl's config/state directory following the XDG Base Directory Spec:
5
+ * `$XDG_CONFIG_HOME/kl`, defaulting to `~/.config/kl`. Per the spec, a
6
+ * non-absolute `$XDG_CONFIG_HOME` is invalid and ignored. Both `config.json`
7
+ * and `credentials.json` live here (single-dir model, like GitHub's `gh`).
8
+ */
9
+ export declare function resolveKlDir(env?: NodeJS.ProcessEnv): string;
1
10
  export declare const KL_DIR: string;
11
+ /**
12
+ * One-time migration of the legacy `~/.kl` directory to {@link KL_DIR}. Runs at
13
+ * CLI startup. No-op if the legacy dir is absent or the new dir already exists,
14
+ * so it never clobbers current config. Best-effort: a failure warns rather than
15
+ * crashing, since the user can always re-authenticate with `kl login`.
16
+ */
17
+ export declare function migrateLegacyConfigDir(legacyDir?: string, newDir?: string): void;
2
18
  export interface ProjectConfig {
3
19
  project: string;
4
20
  directory: string;
5
21
  api_url?: string;
6
22
  }
23
+ export interface LoginPreferences {
24
+ /** Whether `kl login` auto-opens the browser (default true). */
25
+ browser?: boolean;
26
+ /** Whether `kl login` always renders the QR code (default false / auto). */
27
+ qr?: boolean;
28
+ }
29
+ export interface GlobalConfig {
30
+ api_url?: string;
31
+ login?: LoginPreferences;
32
+ }
33
+ /**
34
+ * Load the global config from `<dir>/config.json` (default `~/.config/kl`). Returns an
35
+ * empty object when the file is missing or malformed — config is always optional.
36
+ */
37
+ export declare function loadGlobalConfig(dir?: string): GlobalConfig;
7
38
  export declare function resolveApiUrl(cwd?: string): string;
8
39
  export declare function loadProjectConfig(cwd: string): ProjectConfig | null;
9
40
  export declare function writeProjectConfig(cwd: string, config: Pick<ProjectConfig, "project" | "directory">): void;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM,QAAiC,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBlD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAyBnE;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,WAAW,CAAC,GACnD,IAAI,CAGN;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQnE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAOA,iEAAiE;AACjE,eAAO,MAAM,aAAa,QAAiC,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAIzE;AAED,eAAO,MAAM,MAAM,QAAiB,CAAC;AAErC;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,GAAE,MAAsB,EACjC,MAAM,GAAE,MAAe,GACtB,IAAI,CAmBN;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4EAA4E;IAC5E,EAAE,CAAC,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAe,GAAG,YAAY,CAQnE;AAED,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAalD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAyBnE;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,WAAW,CAAC,GACnD,IAAI,CAGN;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQnE"}
@@ -3,7 +3,62 @@ import * as path from "node:path";
3
3
  import * as os from "node:os";
4
4
  const DEFAULT_API_URL = "https://api.kingslanding.io";
5
5
  const LOCAL_API_URL = "https://api.kl.test";
6
- export const KL_DIR = path.join(os.homedir(), ".kl");
6
+ /** Pre-XDG location; migrated to {@link KL_DIR} on first run. */
7
+ export const LEGACY_KL_DIR = path.join(os.homedir(), ".kl");
8
+ /**
9
+ * Resolve kl's config/state directory following the XDG Base Directory Spec:
10
+ * `$XDG_CONFIG_HOME/kl`, defaulting to `~/.config/kl`. Per the spec, a
11
+ * non-absolute `$XDG_CONFIG_HOME` is invalid and ignored. Both `config.json`
12
+ * and `credentials.json` live here (single-dir model, like GitHub's `gh`).
13
+ */
14
+ export function resolveKlDir(env = process.env) {
15
+ const xdg = env.XDG_CONFIG_HOME;
16
+ const base = xdg && path.isAbsolute(xdg) ? xdg : path.join(os.homedir(), ".config");
17
+ return path.join(base, "kl");
18
+ }
19
+ export const KL_DIR = resolveKlDir();
20
+ /**
21
+ * One-time migration of the legacy `~/.kl` directory to {@link KL_DIR}. Runs at
22
+ * CLI startup. No-op if the legacy dir is absent or the new dir already exists,
23
+ * so it never clobbers current config. Best-effort: a failure warns rather than
24
+ * crashing, since the user can always re-authenticate with `kl login`.
25
+ */
26
+ export function migrateLegacyConfigDir(legacyDir = LEGACY_KL_DIR, newDir = KL_DIR) {
27
+ if (legacyDir === newDir)
28
+ return;
29
+ if (!fs.existsSync(legacyDir) || fs.existsSync(newDir))
30
+ return;
31
+ try {
32
+ fs.mkdirSync(path.dirname(newDir), { recursive: true });
33
+ fs.renameSync(legacyDir, newDir);
34
+ console.warn("Migrated kl config from " + legacyDir + " to " + newDir);
35
+ }
36
+ catch (err) {
37
+ const reason = err instanceof Error ? err.message : String(err);
38
+ console.warn("Warning: could not migrate " +
39
+ legacyDir +
40
+ " to " +
41
+ newDir +
42
+ " (" +
43
+ reason +
44
+ "). Run 'kl login' to re-authenticate.");
45
+ }
46
+ }
47
+ /**
48
+ * Load the global config from `<dir>/config.json` (default `~/.config/kl`). Returns an
49
+ * empty object when the file is missing or malformed — config is always optional.
50
+ */
51
+ export function loadGlobalConfig(dir = KL_DIR) {
52
+ const configPath = path.join(dir, "config.json");
53
+ if (!fs.existsSync(configPath))
54
+ return {};
55
+ try {
56
+ return JSON.parse(fs.readFileSync(configPath, "utf-8"));
57
+ }
58
+ catch {
59
+ return {};
60
+ }
61
+ }
7
62
  export function resolveApiUrl(cwd) {
8
63
  const resolvedCwd = cwd ?? process.cwd();
9
64
  const envUrl = process.env.KL_API_URL;
@@ -12,18 +67,9 @@ export function resolveApiUrl(cwd) {
12
67
  const config = loadProjectConfig(resolvedCwd);
13
68
  if (config?.api_url)
14
69
  return config.api_url;
15
- const globalConfigPath = path.join(KL_DIR, "config.json");
16
- if (fs.existsSync(globalConfigPath)) {
17
- try {
18
- const raw = fs.readFileSync(globalConfigPath, "utf-8");
19
- const globalConfig = JSON.parse(raw);
20
- if (globalConfig.api_url)
21
- return globalConfig.api_url;
22
- }
23
- catch {
24
- // Ignore malformed global config
25
- }
26
- }
70
+ const globalConfig = loadGlobalConfig();
71
+ if (globalConfig.api_url)
72
+ return globalConfig.api_url;
27
73
  return DEFAULT_API_URL;
28
74
  }
29
75
  export function loadProjectConfig(cwd) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Render `text` as a compact ASCII QR code string.
3
+ *
4
+ * qrcode-terminal invokes the callback synchronously, so we capture the
5
+ * output and return it rather than letting the library print directly —
6
+ * this keeps rendering testable and lets the caller control output.
7
+ */
8
+ export declare function renderQrCode(text: string): string;
9
+ //# sourceMappingURL=qr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr.d.ts","sourceRoot":"","sources":["../../src/lib/qr.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjD"}
package/dist/lib/qr.js ADDED
@@ -0,0 +1,16 @@
1
+ import qrcode from "qrcode-terminal";
2
+ /**
3
+ * Render `text` as a compact ASCII QR code string.
4
+ *
5
+ * qrcode-terminal invokes the callback synchronously, so we capture the
6
+ * output and return it rather than letting the library print directly —
7
+ * this keeps rendering testable and lets the caller control output.
8
+ */
9
+ export function renderQrCode(text) {
10
+ let output = "";
11
+ qrcode.generate(text, { small: true }, (qr) => {
12
+ output = qr;
13
+ });
14
+ return output;
15
+ }
16
+ //# sourceMappingURL=qr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr.js","sourceRoot":"","sources":["../../src/lib/qr.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAU,EAAE,EAAE;QACpD,MAAM,GAAG,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -4,7 +4,7 @@ export declare class AuthService {
4
4
  private readonly api;
5
5
  private readonly apiUrl;
6
6
  constructor(api: ApiClient, apiUrl: string);
7
- login(onShowCode: (userCode: string, verificationUrl: string) => void, pollInterval?: number): Promise<{
7
+ login(onShowCode: (userCode: string, verificationUri: string, verificationUriComplete: string | undefined) => void, pollInterval?: number): Promise<{
8
8
  access_token: string;
9
9
  refresh_token: string;
10
10
  id_token: string;
@@ -1 +1 @@
1
- {"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,KAAK,WAAW,EAKjB,MAAM,gBAAgB,CAAC;AAKxB,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM;IAG3B,KAAK,CACT,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,KAAK,IAAI,EAC/D,YAAY,SAAwB,GACnC,OAAO,CAAC;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAgCI,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3C,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CAmBhE"}
1
+ {"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,KAAK,WAAW,EAKjB,MAAM,gBAAgB,CAAC;AAKxB,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM;IAG3B,KAAK,CACT,UAAU,EAAE,CACV,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,uBAAuB,EAAE,MAAM,GAAG,SAAS,KACxC,IAAI,EACT,YAAY,SAAwB,GACnC,OAAO,CAAC;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IA8BI,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3C,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CAmBhE"}
@@ -9,8 +9,8 @@ export class AuthService {
9
9
  this.apiUrl = apiUrl;
10
10
  }
11
11
  async login(onShowCode, pollInterval = DEFAULT_POLL_INTERVAL) {
12
- const { device_code, user_code, verification_url } = await this.api.createDeviceCode();
13
- onShowCode(user_code, verification_url);
12
+ const { device_code, user_code, verification_uri, verification_uri_complete } = await this.api.createDeviceCode();
13
+ onShowCode(user_code, verification_uri, verification_uri_complete);
14
14
  // eslint-disable-next-line no-constant-condition
15
15
  while (true) {
16
16
  if (pollInterval > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"auth-service.js","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,MAAM,OAAO,WAAW;IAEH;IACA;IAFnB,YACmB,GAAc,EACd,MAAc;QADd,QAAG,GAAH,GAAG,CAAW;QACd,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEJ,KAAK,CAAC,KAAK,CACT,UAA+D,EAC/D,YAAY,GAAG,qBAAqB;QAMpC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAChD,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACpC,UAAU,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAExC,iDAAiD;QACjD,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAE3D,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAgB;oBACzB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY;oBACxC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa;oBAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;oBAChC,UAAU,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;iBACvD,CAAC;gBACF,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACpC,OAAO,MAAM,CAAC,MAAM,CAAC;YACvB,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,QAAQ,CAChB,mDAAmD,CACpD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,YAAoB;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;QACD,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAkB;QACtC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChE,MAAM,OAAO,GAAgB;gBAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU;aAC9D,CAAC;YACF,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YAC5D,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,IAAI,SAAS,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"auth-service.js","sourceRoot":"","sources":["../../src/services/auth-service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kingslanding/cli",
3
- "version": "0.3.2",
3
+ "version": "0.5.0",
4
4
  "description": "Deploy static sites to King's Landing from any terminal or CI/CD pipeline",
5
5
  "type": "module",
6
6
  "bin": {
@@ -39,11 +39,13 @@
39
39
  "commander": "^13.0.0",
40
40
  "glob": "^13.0.6",
41
41
  "mime-types": "^2.1.35",
42
- "ora": "^8.0.0"
42
+ "ora": "^8.0.0",
43
+ "qrcode-terminal": "^0.12.0"
43
44
  },
44
45
  "devDependencies": {
45
46
  "@types/mime-types": "^2.1.4",
46
47
  "@types/node": "^22.0.0",
48
+ "@types/qrcode-terminal": "^0.12.2",
47
49
  "@typescript-eslint/eslint-plugin": "^8.0.0",
48
50
  "@typescript-eslint/parser": "^8.0.0",
49
51
  "@vitest/coverage-v8": "^4.1.9",