@praxis.guard/auditor-cli 0.0.42 → 0.0.43
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/cli/login.d.ts.map +1 -1
- package/dist/cli/login.js +58 -22
- package/dist/cli/login.js.map +1 -1
- package/package.json +2 -2
package/dist/cli/login.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"AAQA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAgD9C"}
|
package/dist/cli/login.js
CHANGED
|
@@ -24,50 +24,86 @@ export async function runLogin() {
|
|
|
24
24
|
if (!code || !deviceCode || !expiresAt) {
|
|
25
25
|
throw new Error("Auth server returned an invalid device authorization response.");
|
|
26
26
|
}
|
|
27
|
-
const
|
|
28
|
-
const authUrl = `${appUrl}/app/cli-auth?code=${code}`;
|
|
27
|
+
const authUrl = buildCliAuthUrl(process.env.PRAXIS_APP_URL || "https://app.usepraxis.tech", code);
|
|
29
28
|
process.stdout.write(`\n`);
|
|
30
29
|
process.stdout.write(` Your one-time code: ${code}\n\n`);
|
|
31
30
|
process.stdout.write(` Open this URL to authorize:\n`);
|
|
32
31
|
process.stdout.write(` ${authUrl}\n\n`);
|
|
33
|
-
|
|
34
|
-
const rl = readlinePromises.createInterface({
|
|
35
|
-
input: process.stdin,
|
|
36
|
-
output: process.stdout,
|
|
37
|
-
});
|
|
38
|
-
try {
|
|
39
|
-
await rl.question(" Press ENTER to open in the browser... ");
|
|
40
|
-
}
|
|
41
|
-
finally {
|
|
42
|
-
rl.close();
|
|
43
|
-
}
|
|
44
|
-
process.stdout.write("\n");
|
|
45
|
-
openUrlInBrowser(authUrl);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
process.stdout.write(` (non-interactive session — open the URL in a browser yourself)\n`);
|
|
49
|
-
}
|
|
32
|
+
await promptAndOpenBrowser(authUrl);
|
|
50
33
|
process.stdout.write(` Waiting for authorization... (expires in 10 minutes)\n`);
|
|
51
34
|
const token = await poll(baseUrl, deviceCode, expiresAt);
|
|
52
35
|
saveCredentials(token);
|
|
53
36
|
process.stdout.write(`\n Authenticated! Token saved.\n`);
|
|
54
37
|
process.stdout.write(` Run \`auditor doctor\` to verify.\n`);
|
|
55
38
|
}
|
|
39
|
+
/** Matches server `CLI_CODE_RE` in packages/functions/src/cli-auth.ts */
|
|
40
|
+
const CLI_USER_CODE_PATTERN = /^[A-Z2-9]{6}$/;
|
|
41
|
+
async function promptAndOpenBrowser(authUrl) {
|
|
42
|
+
if (!process.stdin.isTTY) {
|
|
43
|
+
process.stdout.write(` (non-interactive session — open the URL in a browser yourself)\n`);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const rl = readlinePromises.createInterface({ input: process.stdin, output: process.stdout });
|
|
47
|
+
try {
|
|
48
|
+
await rl.question(" Press ENTER to open in the browser... ");
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
rl.close();
|
|
52
|
+
}
|
|
53
|
+
process.stdout.write("\n");
|
|
54
|
+
openUrlInBrowser(authUrl);
|
|
55
|
+
}
|
|
56
|
+
/** Build a fixed-shape CLI auth URL; rejects unsafe user codes and app base URLs. */
|
|
57
|
+
function buildCliAuthUrl(appBase, userCode) {
|
|
58
|
+
if (!CLI_USER_CODE_PATTERN.test(userCode)) {
|
|
59
|
+
throw new Error("Auth server returned an invalid one-time code format.");
|
|
60
|
+
}
|
|
61
|
+
const base = new URL(appBase);
|
|
62
|
+
if (base.protocol !== "https:" && base.protocol !== "http:") {
|
|
63
|
+
throw new Error("PRAXIS_APP_URL must use http or https.");
|
|
64
|
+
}
|
|
65
|
+
if (!base.hostname) {
|
|
66
|
+
throw new Error("PRAXIS_APP_URL must include a hostname.");
|
|
67
|
+
}
|
|
68
|
+
const auth = new URL("/app/cli-auth", base);
|
|
69
|
+
auth.searchParams.set("code", userCode);
|
|
70
|
+
return auth.href;
|
|
71
|
+
}
|
|
56
72
|
function openUrlInBrowser(url) {
|
|
73
|
+
let parsed;
|
|
74
|
+
try {
|
|
75
|
+
parsed = new URL(url);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
process.stdout.write(` Could not launch a browser; open the URL above manually.\n`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (parsed.protocol !== "https:" && parsed.protocol !== "http:") {
|
|
82
|
+
process.stdout.write(` Could not launch a browser; open the URL above manually.\n`);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const userCode = parsed.searchParams.get("code") ?? "";
|
|
86
|
+
if (!parsed.hostname ||
|
|
87
|
+
parsed.pathname !== "/app/cli-auth" ||
|
|
88
|
+
!CLI_USER_CODE_PATTERN.test(userCode)) {
|
|
89
|
+
process.stdout.write(` Could not launch a browser; open the URL above manually.\n`);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const safeHref = parsed.href;
|
|
57
93
|
const { platform } = process;
|
|
58
94
|
let command;
|
|
59
95
|
let args;
|
|
60
96
|
if (platform === "darwin") {
|
|
61
97
|
command = "open";
|
|
62
|
-
args = [
|
|
98
|
+
args = [safeHref];
|
|
63
99
|
}
|
|
64
100
|
else if (platform === "win32") {
|
|
65
101
|
command = "cmd";
|
|
66
|
-
args = ["/c", "start", "",
|
|
102
|
+
args = ["/c", "start", "", safeHref];
|
|
67
103
|
}
|
|
68
104
|
else {
|
|
69
105
|
command = "xdg-open";
|
|
70
|
-
args = [
|
|
106
|
+
args = [safeHref];
|
|
71
107
|
}
|
|
72
108
|
const child = spawn(command, args, { detached: true, stdio: "ignore" });
|
|
73
109
|
child.on("error", () => {
|
package/dist/cli/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxis.guard/auditor-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.43",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
34
|
-
"shell-quote": "^1.8.
|
|
34
|
+
"shell-quote": "^1.8.4",
|
|
35
35
|
"uuid": "^11.1.0",
|
|
36
36
|
"zod": "^4.1.5"
|
|
37
37
|
},
|