authflow-cli 0.5.0 → 0.7.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/README.md +84 -495
- package/dist/brand-mark.d.ts +1 -0
- package/dist/brand-mark.js +6 -0
- package/dist/brand-mark.js.map +1 -0
- package/dist/checks.js.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/client-conformance.js.map +1 -1
- package/dist/commands/account.d.ts +2 -0
- package/dist/commands/account.js +105 -0
- package/dist/commands/account.js.map +1 -0
- package/dist/commands/feedback.d.ts +6 -0
- package/dist/commands/feedback.js +46 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.js +50 -12
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp.js +11 -6
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/plan.js +7 -7
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/probe.js +9 -5
- package/dist/commands/probe.js.map +1 -1
- package/dist/commands/register.js +25 -13
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/rotate-origin-key.js +15 -10
- package/dist/commands/rotate-origin-key.js.map +1 -1
- package/dist/commands/scaffold.js +7 -4
- package/dist/commands/scaffold.js.map +1 -1
- package/dist/commands/set-domain.js.map +1 -1
- package/dist/commands/signup.d.ts +1 -0
- package/dist/commands/signup.js +4 -50
- package/dist/commands/signup.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.js +58 -4
- package/dist/config.js.map +1 -1
- package/dist/credentials.d.ts +31 -0
- package/dist/credentials.js +223 -0
- package/dist/credentials.js.map +1 -0
- package/dist/custom-domain.js.map +1 -1
- package/dist/doctor.d.ts +21 -0
- package/dist/doctor.js +76 -19
- package/dist/doctor.js.map +1 -1
- package/dist/feedback.d.ts +75 -0
- package/dist/feedback.js +82 -0
- package/dist/feedback.js.map +1 -0
- package/dist/google-redirect.js.map +1 -1
- package/dist/integration-plans.json +80 -0
- package/dist/integration.d.ts +17 -23
- package/dist/integration.js +29 -236
- package/dist/integration.js.map +1 -1
- package/dist/login-callback.d.ts +29 -0
- package/dist/login-callback.js +79 -0
- package/dist/login-callback.js.map +1 -0
- package/dist/login.d.ts +26 -0
- package/dist/login.js +227 -0
- package/dist/login.js.map +1 -0
- package/dist/management.d.ts +28 -0
- package/dist/management.js +102 -0
- package/dist/management.js.map +1 -0
- package/dist/mcp/management-server.d.ts +4 -0
- package/dist/mcp/management-server.js +124 -0
- package/dist/mcp/management-server.js.map +1 -0
- package/dist/mcp/server.js +74 -35
- package/dist/mcp/server.js.map +1 -1
- package/dist/program.js +23 -1
- package/dist/program.js.map +1 -1
- package/dist/rail.d.ts +6 -0
- package/dist/rail.js +26 -0
- package/dist/rail.js.map +1 -1
- package/dist/secrets.d.ts +51 -18
- package/dist/secrets.js +234 -89
- package/dist/secrets.js.map +1 -1
- package/dist/status.js +10 -2
- package/dist/status.js.map +1 -1
- package/dist/surface.d.ts +1 -0
- package/dist/surface.js +1 -0
- package/dist/surface.js.map +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +11 -10
package/dist/secrets.d.ts
CHANGED
|
@@ -1,28 +1,61 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Where `register --write-secrets` puts the origin API key.
|
|
3
|
-
*
|
|
4
|
-
* The key is shown exactly once, so the default path of "write the receipt to disk and sort the
|
|
5
|
-
* secret out later" reliably ends with a plaintext credential in a JSON file next to the source —
|
|
6
|
-
* and often in git. Each target below hands it to something built to hold it.
|
|
7
|
-
*/
|
|
8
1
|
export type SecretTarget = "user-secrets" | "env-file" | "keyvault";
|
|
9
2
|
export declare const secretTargets: readonly SecretTarget[];
|
|
10
|
-
/** Config key the .NET verifier and the origin proxy both read the usage-reporting key from. */
|
|
11
3
|
export declare const originApiKeyConfigKey = "Authflow:OriginApiKey";
|
|
12
|
-
/** Environment variable form of the same setting, for non-.NET origins. */
|
|
13
4
|
export declare const originApiKeyEnvVar = "AUTHFLOW_ORIGIN_API_KEY";
|
|
14
|
-
/** Per-tenant admin key used by `init`, `register`, and `authflow mcp`. */
|
|
15
5
|
export declare const adminApiKeyEnvVar = "AUTHFLOW_ADMIN_API_KEY";
|
|
6
|
+
export type SecretResource = {
|
|
7
|
+
issuer: string;
|
|
8
|
+
workspaceId: string;
|
|
9
|
+
slug: string;
|
|
10
|
+
};
|
|
16
11
|
export type WriteSecretRequest = {
|
|
17
12
|
target: SecretTarget;
|
|
18
13
|
value: string;
|
|
19
|
-
/** Project directory
|
|
14
|
+
/** Project directory/file, env-file path, or Azure Key Vault name. */
|
|
20
15
|
destination?: string;
|
|
16
|
+
resource?: SecretResource;
|
|
21
17
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
export type PreparedSecretDestination = {
|
|
19
|
+
description: string;
|
|
20
|
+
write: (value: string) => Promise<void>;
|
|
21
|
+
};
|
|
22
|
+
/** Resolve the destination before a one-time key is issued. Never prints child output or secrets. */
|
|
23
|
+
export declare function prepareOriginApiKey(request: Omit<WriteSecretRequest, "value">): Promise<PreparedSecretDestination>;
|
|
24
|
+
/** Stable across retries; separates resources, workspaces and staging/production issuers. */
|
|
25
|
+
export declare function originSecretName(resource: SecretResource): string;
|
|
26
|
+
/**
|
|
27
|
+
* Destination for the legacy admin-key commands, which keep their historical defaults (`.` for
|
|
28
|
+
* user-secrets, `.env.local` for env-file). It is resolved before the rail issues anything: a key
|
|
29
|
+
* the rail has already rotated cannot be un-rotated when the destination turns out to be unusable.
|
|
30
|
+
* Key Vault secret names are scoped to a workspace, which an admin key does not have, so it is
|
|
31
|
+
* refused here rather than after the mutation.
|
|
32
|
+
*/
|
|
33
|
+
export declare function prepareLegacyOriginApiKey(target: SecretTarget, destination?: string): Promise<PreparedSecretDestination>;
|
|
34
|
+
export declare function prepareAdminApiKey(destination?: string): Promise<PreparedSecretDestination>;
|
|
35
|
+
export type IssuedKeyDelivery = {
|
|
36
|
+
stored: true;
|
|
37
|
+
description: string;
|
|
38
|
+
} | {
|
|
39
|
+
stored: false;
|
|
40
|
+
reason: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Store a key the rail has already issued. A failure here cannot be repaired by retrying the
|
|
44
|
+
* mutation (the previous key may already be revoked), so it is reported to the caller, which then
|
|
45
|
+
* shows the key once rather than losing it. The reason never contains the key itself.
|
|
46
|
+
*/
|
|
47
|
+
export declare function deliverIssuedKey(prepared: PreparedSecretDestination, value: string): Promise<IssuedKeyDelivery>;
|
|
48
|
+
type ProcessResult = {
|
|
49
|
+
code: number | null;
|
|
50
|
+
stdout: string;
|
|
51
|
+
};
|
|
52
|
+
/** One subprocess boundary for destination preflight and stdin delivery; all diagnostics are sanitized. */
|
|
53
|
+
declare function run(command: string, args: readonly string[], stdin?: string): Promise<ProcessResult>;
|
|
54
|
+
export declare const secretProcess: {
|
|
55
|
+
run: typeof run;
|
|
56
|
+
};
|
|
57
|
+
export declare const secretDelivery: {
|
|
58
|
+
prepare: typeof prepareOriginApiKey;
|
|
59
|
+
prepareAdmin: typeof prepareAdminApiKey;
|
|
60
|
+
};
|
|
61
|
+
export {};
|
package/dist/secrets.js
CHANGED
|
@@ -1,117 +1,262 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
3
|
+
import { constants } from "node:fs";
|
|
4
|
+
import { access, appendFile, lstat, readFile, readdir, rename, rm, stat, writeFile } from "node:fs/promises";
|
|
5
|
+
import { basename, dirname, join, resolve } from "node:path";
|
|
4
6
|
export const secretTargets = ["user-secrets", "env-file", "keyvault"];
|
|
5
|
-
/** Config key the .NET verifier and the origin proxy both read the usage-reporting key from. */
|
|
6
7
|
export const originApiKeyConfigKey = "Authflow:OriginApiKey";
|
|
7
|
-
/** Environment variable form of the same setting, for non-.NET origins. */
|
|
8
8
|
export const originApiKeyEnvVar = "AUTHFLOW_ORIGIN_API_KEY";
|
|
9
|
-
/** Per-tenant admin key used by `init`, `register`, and `authflow mcp`. */
|
|
10
9
|
export const adminApiKeyEnvVar = "AUTHFLOW_ADMIN_API_KEY";
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
/** Resolve the destination before a one-time key is issued. Never prints child output or secrets. */
|
|
11
|
+
export async function prepareOriginApiKey(request) {
|
|
12
|
+
if (!secretTargets.includes(request.target))
|
|
13
|
+
throw new Error("Choose user-secrets, env-file, or keyvault.");
|
|
14
|
+
if (!request.destination?.trim())
|
|
15
|
+
throw new Error("Choose an explicit --secret-destination before issuing an origin key.");
|
|
16
|
+
if (request.target === "user-secrets") {
|
|
17
|
+
const path = resolve(request.destination);
|
|
18
|
+
let project = path;
|
|
19
|
+
if ((await stat(path)).isDirectory()) {
|
|
20
|
+
const projects = (await readdir(path)).filter(name => /\.(cs|fs|vb)proj$/i.test(name));
|
|
21
|
+
if (projects.length !== 1)
|
|
22
|
+
throw new Error("The user-secrets destination must identify one .NET project.");
|
|
23
|
+
project = join(path, projects[0]);
|
|
24
|
+
}
|
|
25
|
+
const inspected = await secretProcess.run("dotnet", ["msbuild", project, "-getProperty:UserSecretsId", "-nologo"]);
|
|
26
|
+
if (inspected.code !== 0 || !inspected.stdout.trim() || /[\r\n]/.test(inspected.stdout.trim()))
|
|
27
|
+
throw new Error("The project must have a UserSecretsId. Initialize user-secrets in that project before issuing the key.");
|
|
28
|
+
return {
|
|
29
|
+
description: `dotnet user-secrets (${originApiKeyConfigKey}) in ${project}`,
|
|
30
|
+
write: async (value) => {
|
|
31
|
+
const result = await secretProcess.run("dotnet", ["user-secrets", "set", "--project", project], JSON.stringify({ [originApiKeyConfigKey]: value }));
|
|
32
|
+
if (result.code !== 0)
|
|
33
|
+
throw new Error("The origin key could not be saved to .NET user-secrets.");
|
|
34
|
+
},
|
|
35
|
+
};
|
|
24
36
|
}
|
|
37
|
+
if (request.target === "env-file")
|
|
38
|
+
return prepareEnvFile(originApiKeyEnvVar, request.destination);
|
|
39
|
+
const vault = request.destination.toLowerCase();
|
|
40
|
+
if (!/^[a-z][a-z0-9-]{1,22}[a-z0-9]$/.test(vault) || vault.includes("--"))
|
|
41
|
+
throw new Error("The Key Vault destination must be an Azure vault name, not a URL.");
|
|
42
|
+
if (!request.resource)
|
|
43
|
+
throw new Error("Key Vault delivery requires a workspace-scoped resource command.");
|
|
44
|
+
const name = originSecretName(request.resource);
|
|
45
|
+
const login = await secretProcess.run("az", ["account", "get-access-token", "--resource", "https://vault.azure.net", "--query", "accessToken", "--output", "tsv", "--only-show-errors"]);
|
|
46
|
+
const token = login.stdout.trim();
|
|
47
|
+
if (login.code !== 0 || !token || /\s/.test(token))
|
|
48
|
+
throw new Error("Sign in to the intended Azure account before issuing the origin key.");
|
|
49
|
+
const reference = `https://${vault}.vault.azure.net/secrets/${name}`;
|
|
50
|
+
await preflightVault(reference, token);
|
|
51
|
+
return {
|
|
52
|
+
description: reference,
|
|
53
|
+
write: async (value) => {
|
|
54
|
+
let response;
|
|
55
|
+
try {
|
|
56
|
+
response = await fetch(`${reference}?api-version=7.4`, {
|
|
57
|
+
method: "PUT", redirect: "error", signal: AbortSignal.timeout(30_000),
|
|
58
|
+
headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json" },
|
|
59
|
+
body: JSON.stringify({ value }),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
throw new Error("Key Vault delivery failed. The key may not have been saved; inspect the destination before rotating again.");
|
|
64
|
+
}
|
|
65
|
+
// Key Vault responses can include the secret value. Neither success nor error bodies are printed.
|
|
66
|
+
if (!response.ok)
|
|
67
|
+
throw new Error(`Key Vault refused secret delivery (${response.status}). Check the selected account, vault and secret-write permission.`);
|
|
68
|
+
await response.body?.cancel();
|
|
69
|
+
},
|
|
70
|
+
};
|
|
25
71
|
}
|
|
26
|
-
async function
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
72
|
+
async function preflightVault(reference, token) {
|
|
73
|
+
let response;
|
|
74
|
+
try {
|
|
75
|
+
// Versions list returns metadata only. Never retrieve the existing secret value.
|
|
76
|
+
response = await fetch(`${reference}/versions?api-version=7.4&maxresults=1`, {
|
|
77
|
+
method: "GET", redirect: "error", signal: AbortSignal.timeout(15_000),
|
|
78
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
throw new Error("The selected Key Vault could not be reached. Fix the destination before issuing the origin key.");
|
|
83
|
+
}
|
|
84
|
+
if (response.ok) {
|
|
85
|
+
await response.body?.cancel();
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const codes = [];
|
|
89
|
+
try {
|
|
90
|
+
const reader = response.body?.getReader();
|
|
91
|
+
const chunks = [];
|
|
92
|
+
let length = 0;
|
|
93
|
+
if (reader) {
|
|
94
|
+
try {
|
|
95
|
+
for (;;) {
|
|
96
|
+
const { value, done } = await reader.read();
|
|
97
|
+
if (done)
|
|
98
|
+
break;
|
|
99
|
+
length += value.byteLength;
|
|
100
|
+
if (length > 16_384)
|
|
101
|
+
throw new Error("Oversized metadata error.");
|
|
102
|
+
chunks.push(value);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
await reader.cancel();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
let error = JSON.parse(Buffer.concat(chunks).toString("utf8")).error;
|
|
110
|
+
for (let depth = 0; depth < 4 && error && typeof error === "object"; depth++) {
|
|
111
|
+
const current = error;
|
|
112
|
+
if (typeof current.code === "string")
|
|
113
|
+
codes.push(current.code.toLowerCase());
|
|
114
|
+
error = current.innererror;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
catch { /* No response content or diagnostic message is ever exposed. */ }
|
|
118
|
+
if (codes.some(code => ["vaultnotfound", "forbiddenbyfirewall", "forbiddenbyconnection"].includes(code)))
|
|
119
|
+
throw new Error("The selected Key Vault is unavailable or blocks this connection. Fix the destination before issuing the origin key.");
|
|
120
|
+
if (response.status === 404 && codes.includes("secretnotfound"))
|
|
121
|
+
return;
|
|
122
|
+
// Listing and writing have separate permissions; a valid write-only principal may receive 403.
|
|
123
|
+
// This probe establishes reachability, not secrets/set authorization. Delivery still may fail.
|
|
124
|
+
if (response.status === 403)
|
|
125
|
+
return;
|
|
126
|
+
throw new Error(`Key Vault destination preflight failed (${response.status}). Check the selected account and vault before issuing the origin key.`);
|
|
33
127
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
// Best-effort: a no-op on Windows, which is exactly why this is not the recommended target.
|
|
41
|
-
await chmod(path, 0o600).catch(() => undefined);
|
|
42
|
-
await ensureGitIgnored(path);
|
|
43
|
-
return path;
|
|
128
|
+
/** Stable across retries; separates resources, workspaces and staging/production issuers. */
|
|
129
|
+
export function originSecretName(resource) {
|
|
130
|
+
if (!/^[a-z0-9][a-z0-9-]{0,31}$/.test(resource.slug) || !resource.issuer || !resource.workspaceId)
|
|
131
|
+
throw new Error("A scoped resource is required to name its origin secret.");
|
|
132
|
+
const scope = createHash("sha256").update(JSON.stringify([resource.issuer.replace(/\/+$/, ""), resource.workspaceId, resource.slug])).digest("hex").slice(0, 16);
|
|
133
|
+
return `authflow-${resource.slug}-origin-${scope}`;
|
|
44
134
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
135
|
+
/**
|
|
136
|
+
* Destination for the legacy admin-key commands, which keep their historical defaults (`.` for
|
|
137
|
+
* user-secrets, `.env.local` for env-file). It is resolved before the rail issues anything: a key
|
|
138
|
+
* the rail has already rotated cannot be un-rotated when the destination turns out to be unusable.
|
|
139
|
+
* Key Vault secret names are scoped to a workspace, which an admin key does not have, so it is
|
|
140
|
+
* refused here rather than after the mutation.
|
|
141
|
+
*/
|
|
142
|
+
export async function prepareLegacyOriginApiKey(target, destination) {
|
|
143
|
+
if (target === "keyvault") {
|
|
144
|
+
throw new Error("Key Vault delivery needs a workspace-scoped resource. Run authflow login, then authflow resource rotate-key <slug> --write-secrets keyvault --secret-destination <vault>. Nothing was issued.");
|
|
49
145
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return
|
|
146
|
+
return secretDelivery.prepare({ target, destination: destination ?? (target === "user-secrets" ? "." : ".env.local") });
|
|
147
|
+
}
|
|
148
|
+
export async function prepareAdminApiKey(destination) {
|
|
149
|
+
return prepareEnvFile(adminApiKeyEnvVar, destination ?? ".env.local");
|
|
54
150
|
}
|
|
55
151
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* false-negative here costs one duplicate line and a false-positive leaks a credential.
|
|
152
|
+
* Store a key the rail has already issued. A failure here cannot be repaired by retrying the
|
|
153
|
+
* mutation (the previous key may already be revoked), so it is reported to the caller, which then
|
|
154
|
+
* shows the key once rather than losing it. The reason never contains the key itself.
|
|
60
155
|
*/
|
|
61
|
-
async function
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return;
|
|
156
|
+
export async function deliverIssuedKey(prepared, value) {
|
|
157
|
+
try {
|
|
158
|
+
await prepared.write(value);
|
|
159
|
+
return { stored: true, description: prepared.description };
|
|
66
160
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return;
|
|
161
|
+
catch (error) {
|
|
162
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
163
|
+
return { stored: false, reason: value ? reason.split(value).join("<redacted>") : reason };
|
|
70
164
|
}
|
|
71
|
-
|
|
72
|
-
|
|
165
|
+
}
|
|
166
|
+
async function prepareEnvFile(name, destination) {
|
|
167
|
+
const path = resolve(destination);
|
|
168
|
+
await access(dirname(path), constants.W_OK);
|
|
169
|
+
const existing = await lstat(path).catch((error) => { if (error.code === "ENOENT")
|
|
170
|
+
return undefined; throw error; });
|
|
171
|
+
if (existing && (!existing.isFile() || existing.isSymbolicLink()))
|
|
172
|
+
throw new Error("The env-file destination must be a regular file, not a symbolic link.");
|
|
173
|
+
if (existing)
|
|
174
|
+
await access(path, constants.W_OK);
|
|
175
|
+
// Without git installed nothing on this machine can be tracked: treat it like "not a repository".
|
|
176
|
+
const tracked = await secretProcess.run("git", ["-C", dirname(path), "ls-files", "--error-unmatch", "--", basename(path)])
|
|
177
|
+
.catch((error) => {
|
|
178
|
+
if (error.code === "ENOENT")
|
|
179
|
+
return { code: 128, stdout: "" };
|
|
180
|
+
throw error;
|
|
181
|
+
});
|
|
182
|
+
if (tracked.code === 0)
|
|
183
|
+
throw new Error("The env-file destination is tracked by git. Choose an untracked local secret file.");
|
|
184
|
+
if (tracked.code !== 1 && tracked.code !== 128)
|
|
185
|
+
throw new Error("Could not verify that the env-file destination is untracked.");
|
|
186
|
+
await readFileOrEmpty(path); // Permission/read failures must happen before key issuance where possible.
|
|
187
|
+
return {
|
|
188
|
+
description: path,
|
|
189
|
+
write: async (value) => {
|
|
190
|
+
if (/[\r\n]/.test(value))
|
|
191
|
+
throw new Error("An origin credential must fit on one env-file line.");
|
|
192
|
+
const current = await lstat(path).catch((error) => { if (error.code === "ENOENT")
|
|
193
|
+
return undefined; throw error; });
|
|
194
|
+
if (current && (!current.isFile() || current.isSymbolicLink()))
|
|
195
|
+
throw new Error("The env-file destination changed. Secret delivery stopped.");
|
|
196
|
+
const contents = await readFileOrEmpty(path);
|
|
197
|
+
// Replace every existing assignment, including `export NAME=` and `NAME = value` spellings,
|
|
198
|
+
// so the file never holds a stale key that a loader might read first.
|
|
199
|
+
const assignment = new RegExp(`^\\s*(?:export\\s+)?${name}\\s*=`);
|
|
200
|
+
const kept = contents.split(/\r?\n/).filter(line => !assignment.test(line)).join("\n").replace(/\n+$/, "");
|
|
201
|
+
const next = `${kept ? kept + "\n" : ""}${name}=${value}\n`;
|
|
202
|
+
await ensureGitIgnored(path);
|
|
203
|
+
const temporary = join(dirname(path), `.authflow-secret-${randomBytes(16).toString("hex")}`);
|
|
204
|
+
try {
|
|
205
|
+
await writeFile(temporary, next, { encoding: "utf8", mode: 0o600, flag: "wx" });
|
|
206
|
+
await rename(temporary, path);
|
|
207
|
+
}
|
|
208
|
+
finally {
|
|
209
|
+
await rm(temporary, { force: true });
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
async function ensureGitIgnored(secretPath) {
|
|
215
|
+
const gitignore = join(dirname(secretPath), ".gitignore");
|
|
216
|
+
const pattern = `/${basename(secretPath).replace(/([*?\[\]\\])/g, "\\$1")}`;
|
|
217
|
+
const existing = await readFileOrEmpty(gitignore);
|
|
218
|
+
if (!existing.split(/\r?\n/).some(line => line.trim() === pattern))
|
|
219
|
+
await appendFile(gitignore, `${existing && !existing.endsWith("\n") ? "\n" : ""}${pattern}\n`, "utf8");
|
|
73
220
|
}
|
|
74
221
|
async function readFileOrEmpty(path) {
|
|
75
222
|
try {
|
|
76
223
|
return await readFile(path, "utf8");
|
|
77
224
|
}
|
|
78
|
-
catch {
|
|
79
|
-
|
|
225
|
+
catch (error) {
|
|
226
|
+
if (error.code === "ENOENT")
|
|
227
|
+
return "";
|
|
228
|
+
throw error;
|
|
80
229
|
}
|
|
81
230
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
.split(/\r?\n/)
|
|
85
|
-
.filter((line) => !line.startsWith(`${name}=`))
|
|
86
|
-
.join("\n")
|
|
87
|
-
.replace(/\n+$/, "");
|
|
88
|
-
return kept ? `${kept}\n` : "";
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Runs a tool with the secret in argv.
|
|
92
|
-
*
|
|
93
|
-
* `shell: false` matters: the secret is passed as a discrete argument, so no shell ever parses it
|
|
94
|
-
* and a value containing quotes or `$` cannot turn into a command.
|
|
95
|
-
*/
|
|
96
|
-
function run(command, args) {
|
|
231
|
+
/** One subprocess boundary for destination preflight and stdin delivery; all diagnostics are sanitized. */
|
|
232
|
+
async function run(command, args, stdin) {
|
|
97
233
|
return new Promise((resolvePromise, reject) => {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
if (
|
|
110
|
-
|
|
111
|
-
|
|
234
|
+
// Azure CLI ships az.cmd on Windows. Its only invocation here has fixed, nonsecret arguments.
|
|
235
|
+
const windowsAzure = process.platform === "win32" && command === "az";
|
|
236
|
+
if (windowsAzure && args.some(arg => !/^[a-zA-Z0-9.:/-]+$/.test(arg))) {
|
|
237
|
+
reject(new Error("Unsafe Azure CLI arguments."));
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
const child = spawn(windowsAzure ? (process.env.ComSpec ?? "cmd.exe") : command, windowsAzure ? ["/d", "/s", "/c", "az", ...args] : [...args], { stdio: ["pipe", "pipe", "ignore"], shell: false, windowsHide: true });
|
|
241
|
+
let stdout = "";
|
|
242
|
+
const timeout = setTimeout(() => { child.kill(); reject(new Error(`${command} timed out while preparing or writing the secret destination.`)); }, 60_000);
|
|
243
|
+
child.stdout.on("data", (chunk) => {
|
|
244
|
+
stdout += chunk.toString();
|
|
245
|
+
if (stdout.length > 1_048_576) {
|
|
246
|
+
child.kill();
|
|
247
|
+
reject(new Error(`${command} returned an unexpectedly large response.`));
|
|
112
248
|
}
|
|
113
|
-
reject(new Error(`${command} exited with ${code}: ${stderr.trim().slice(0, 400)}`));
|
|
114
249
|
});
|
|
250
|
+
child.stdin.on("error", () => { });
|
|
251
|
+
child.on("error", (error) => {
|
|
252
|
+
clearTimeout(timeout);
|
|
253
|
+
// Keep only the error code (ENOENT: not installed); the message could echo arguments.
|
|
254
|
+
reject(Object.assign(new Error(`${command} is unavailable. Fix the destination before issuing the key.`), { code: error.code }));
|
|
255
|
+
});
|
|
256
|
+
child.on("close", code => { clearTimeout(timeout); resolvePromise({ code, stdout }); });
|
|
257
|
+
child.stdin.end(stdin);
|
|
115
258
|
});
|
|
116
259
|
}
|
|
260
|
+
export const secretProcess = { run };
|
|
261
|
+
export const secretDelivery = { prepare: prepareOriginApiKey, prepareAdmin: prepareAdminApiKey };
|
|
117
262
|
//# sourceMappingURL=secrets.js.map
|
package/dist/secrets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"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"}
|
package/dist/status.js
CHANGED
|
@@ -78,6 +78,14 @@ export function resourceReadiness(receipt) {
|
|
|
78
78
|
: undefined,
|
|
79
79
|
},
|
|
80
80
|
];
|
|
81
|
+
if (receipt.access_mode === "free")
|
|
82
|
+
steps.splice(2, 2);
|
|
83
|
+
if (blocked("paid_offer"))
|
|
84
|
+
steps.push({
|
|
85
|
+
name: "paid offer configured", done: false,
|
|
86
|
+
detail: "A paid MCP needs a positive price and credit allowance.",
|
|
87
|
+
command: `authflow resource update ${slug} --file offer.json`,
|
|
88
|
+
});
|
|
81
89
|
// A custom host is a requirement of its own: until the tenant's DNS is in place and the edge has
|
|
82
90
|
// a certificate, the resource's URL does not answer, and from the outside that looks exactly like
|
|
83
91
|
// an origin that was never wired up.
|
|
@@ -102,7 +110,7 @@ export function resourceReadiness(receipt) {
|
|
|
102
110
|
// Conformance is recorded on the receipt after POST /origin/v1/conformance. Prompt until
|
|
103
111
|
// a run has passed so it is not silently skipped, and stop prompting after a pass.
|
|
104
112
|
if (receipt.origin_base_uri) {
|
|
105
|
-
const probed = receipt.last_probe_passed === true;
|
|
113
|
+
const probed = receipt.last_probe_passed === true && !blocked("origin_verification");
|
|
106
114
|
const at = receipt.last_probe_at_utc?.trim();
|
|
107
115
|
steps.push({
|
|
108
116
|
name: "conformance probed",
|
|
@@ -117,7 +125,7 @@ export function resourceReadiness(receipt) {
|
|
|
117
125
|
}
|
|
118
126
|
return {
|
|
119
127
|
slug,
|
|
120
|
-
status: receipt.status ??
|
|
128
|
+
status: receipt.status ?? "draft",
|
|
121
129
|
ready: pending.length === 0 && receipt.status === "live",
|
|
122
130
|
gatewayUrl: receipt.gateway_url ?? receipt.resource,
|
|
123
131
|
customDomain,
|
package/dist/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
|
package/dist/surface.d.ts
CHANGED
|
@@ -19,5 +19,6 @@ export declare const mcpToolToCliCommand: {
|
|
|
19
19
|
readonly authflow_probe: "probe";
|
|
20
20
|
readonly authflow_mint_test_header: "mint-header";
|
|
21
21
|
readonly authflow_rotate_origin_key: "rotate-origin-key";
|
|
22
|
+
readonly authflow_send_feedback: "feedback";
|
|
22
23
|
};
|
|
23
24
|
export type McpOnboardingTool = keyof typeof mcpToolToCliCommand;
|
package/dist/surface.js
CHANGED
package/dist/surface.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,eAAe,EAAE,QAAQ;IACzB,eAAe,EAAE,QAAQ;IACzB,0BAA0B,EAAE,UAAU;IACtC,qBAAqB,EAAE,KAAK;IAC5B,uBAAuB,EAAE,MAAM;IAC/B,eAAe,EAAE,QAAQ;IACzB,yBAAyB,EAAE,MAAM;IACjC,6BAA6B,EAAE,SAAS;IACxC,8BAA8B,EAAE,uBAAuB;IACvD,mBAAmB,EAAE,YAAY;IACjC,0BAA0B,EAAE,YAAY;IACxC,cAAc,EAAE,OAAO;IACvB,yBAAyB,EAAE,aAAa;IACxC,0BAA0B,EAAE,mBAAmB;
|
|
1
|
+
{"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,eAAe,EAAE,QAAQ;IACzB,eAAe,EAAE,QAAQ;IACzB,0BAA0B,EAAE,UAAU;IACtC,qBAAqB,EAAE,KAAK;IAC5B,uBAAuB,EAAE,MAAM;IAC/B,eAAe,EAAE,QAAQ;IACzB,yBAAyB,EAAE,MAAM;IACjC,6BAA6B,EAAE,SAAS;IACxC,8BAA8B,EAAE,uBAAuB;IACvD,mBAAmB,EAAE,YAAY;IACjC,0BAA0B,EAAE,YAAY;IACxC,cAAc,EAAE,OAAO;IACvB,yBAAyB,EAAE,aAAa;IACxC,0BAA0B,EAAE,mBAAmB;IAC/C,sBAAsB,EAAE,UAAU;CAC1B,CAAC"}
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAW,cAAc,EAAE,CAAC;AAEnD,SAAS,cAAc;IACrB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAW,cAAc,EAAE,CAAC;AAEnD,SAAS,cAAc;IACrB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7D,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAA2B,CAAC,OAAO,CAAC;IAC1F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,kDAAkD,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "authflow-cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Authflow
|
|
3
|
+
"version": "0.7.0",
|
|
4
|
+
"description": "Authflow creator CLI — browser login, workspace and MCP resource management, Stripe setup, and a local management MCP adapter",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"authflow": "dist/cli.js"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"README.md"
|
|
13
13
|
],
|
|
14
14
|
"scripts": {
|
|
15
|
-
"build": "tsc",
|
|
15
|
+
"build": "tsc && node scripts/copy-integration-plans.mjs",
|
|
16
16
|
"start": "node dist/cli.js",
|
|
17
17
|
"authflow": "tsx src/cli.ts",
|
|
18
18
|
"test": "node --import tsx --test \"test/**/*.test.ts\"",
|
|
@@ -20,17 +20,18 @@
|
|
|
20
20
|
"prepublishOnly": "npm run build"
|
|
21
21
|
},
|
|
22
22
|
"engines": {
|
|
23
|
-
"node": ">=
|
|
23
|
+
"node": ">=22.12.0"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@modelcontextprotocol/sdk": "^1.30.
|
|
27
|
-
"
|
|
28
|
-
"
|
|
26
|
+
"@modelcontextprotocol/sdk": "^1.30.1",
|
|
27
|
+
"@napi-rs/keyring": "2.1.0",
|
|
28
|
+
"commander": "^15.0.0",
|
|
29
|
+
"zod": "^4.6.5"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
|
-
"@types/node": "^22.
|
|
32
|
-
"tsx": "^4.
|
|
33
|
-
"typescript": "^
|
|
32
|
+
"@types/node": "^22.20.4",
|
|
33
|
+
"tsx": "^4.23.15",
|
|
34
|
+
"typescript": "^7.0.2"
|
|
34
35
|
},
|
|
35
36
|
"homepage": "https://docs.authflow.ai/docs/tools/cli",
|
|
36
37
|
"bugs": {
|