terse-cli 0.1.51 → 0.1.53
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/api.js +2 -2
- package/dist/api.js.map +1 -1
- package/dist/commands/attach.d.ts.map +1 -1
- package/dist/commands/attach.js +33 -8
- package/dist/commands/attach.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +175 -30
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/authOrg.d.ts +12 -0
- package/dist/commands/authOrg.d.ts.map +1 -0
- package/dist/commands/authOrg.js +120 -0
- package/dist/commands/authOrg.js.map +1 -0
- package/dist/commands/authStatus.d.ts +2 -0
- package/dist/commands/authStatus.d.ts.map +1 -0
- package/dist/commands/authStatus.js +27 -0
- package/dist/commands/authStatus.js.map +1 -0
- package/dist/commands/deploy.js +1 -1
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/deployTheme.d.ts +28 -0
- package/dist/commands/deployTheme.d.ts.map +1 -0
- package/dist/commands/deployTheme.js +68 -0
- package/dist/commands/deployTheme.js.map +1 -0
- package/dist/commands/dev.d.ts +3 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +47 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/generate.d.ts +3 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +7 -6
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/integrate.d.ts +2 -0
- package/dist/commands/integrate.d.ts.map +1 -1
- package/dist/commands/integrate.js +5 -5
- package/dist/commands/integrate.js.map +1 -1
- package/dist/commands/listen.js +2 -2
- package/dist/commands/listen.js.map +1 -1
- package/dist/commands/run.js +1 -1
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/secrets.d.ts +15 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +181 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/serve.d.ts +1 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +2 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/terseCliTheme.d.ts +28 -0
- package/dist/commands/terseCliTheme.d.ts.map +1 -0
- package/dist/commands/terseCliTheme.js +68 -0
- package/dist/commands/terseCliTheme.js.map +1 -0
- package/dist/commands/test.js +1 -1
- package/dist/commands/test.js.map +1 -1
- package/dist/dotenv.d.ts +2 -0
- package/dist/dotenv.d.ts.map +1 -0
- package/dist/dotenv.js +14 -0
- package/dist/dotenv.js.map +1 -0
- package/dist/index.js +28 -5
- package/dist/index.js.map +1 -1
- package/dist/nonInteractive.d.ts +4 -2
- package/dist/nonInteractive.d.ts.map +1 -1
- package/dist/nonInteractive.js +5 -2
- package/dist/nonInteractive.js.map +1 -1
- package/dist/perf.d.ts +9 -0
- package/dist/perf.d.ts.map +1 -0
- package/dist/perf.js +59 -0
- package/dist/perf.js.map +1 -0
- package/dist/providers/codegen.test.d.ts +2 -0
- package/dist/providers/codegen.test.d.ts.map +1 -0
- package/dist/providers/codegen.test.js +45 -0
- package/dist/providers/codegen.test.js.map +1 -0
- package/dist/providers/python/PythonProvider.js +1 -0
- package/dist/providers/python/PythonProvider.js.map +1 -1
- package/dist/providers/python/PythonProvider.test.d.ts +2 -0
- package/dist/providers/python/PythonProvider.test.d.ts.map +1 -0
- package/dist/providers/python/PythonProvider.test.js +169 -0
- package/dist/providers/python/PythonProvider.test.js.map +1 -0
- package/dist/providers/shared/sessionStream.js +1 -1
- package/dist/providers/shared/sessionStream.js.map +1 -1
- package/dist/providers/typescript/prepareCodegenData.test.d.ts +2 -0
- package/dist/providers/typescript/prepareCodegenData.test.d.ts.map +1 -0
- package/dist/providers/typescript/prepareCodegenData.test.js +54 -0
- package/dist/providers/typescript/prepareCodegenData.test.js.map +1 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +36 -12
- package/dist/run.js.map +1 -1
- package/dist/sampleEventId.d.ts +0 -4
- package/dist/sampleEventId.d.ts.map +1 -1
- package/dist/sampleEventId.js +0 -4
- package/dist/sampleEventId.js.map +1 -1
- package/dist/shared/ToolDisplayUtils.js +1 -1
- package/dist/shared/ToolDisplayUtils.js.map +1 -1
- package/dist/userConfig.d.ts +5 -1
- package/dist/userConfig.d.ts.map +1 -1
- package/dist/userConfig.js +43 -10
- package/dist/userConfig.js.map +1 -1
- package/package.json +4 -3
- package/dist/jsonOutput.d.ts +0 -19
- package/dist/jsonOutput.d.ts.map +0 -1
- package/dist/jsonOutput.js +0 -25
- package/dist/jsonOutput.js.map +0 -1
- package/dist/replay.d.ts +0 -3
- package/dist/replay.d.ts.map +0 -1
- package/dist/replay.js +0 -20
- package/dist/replay.js.map +0 -1
- package/dist/urls.d.ts +0 -3
- package/dist/urls.d.ts.map +0 -1
- package/dist/urls.js +0 -27
- package/dist/urls.js.map +0 -1
package/dist/api.js
CHANGED
|
@@ -56,8 +56,8 @@ export function readApiKeyOrBail(options) {
|
|
|
56
56
|
const apiKey = readApiKey();
|
|
57
57
|
if (apiKey)
|
|
58
58
|
return apiKey;
|
|
59
|
-
throw new CliError("not_authenticated", options?.title?.trim() || "Not authenticated. Run `terse login` first.", {
|
|
60
|
-
detail: options?.detail?.trim() || "Run `terse login` to authenticate, or set TERSE_API_KEY in your environment.",
|
|
59
|
+
throw new CliError("not_authenticated", options?.title?.trim() || "Not authenticated. Run `terse auth login` first.", {
|
|
60
|
+
detail: options?.detail?.trim() || "Run `terse auth login` to authenticate, or set TERSE_API_KEY in your environment.",
|
|
61
61
|
actionRequired: true,
|
|
62
62
|
exitCode: ErrorCode.BAD_ARGUMENTS
|
|
63
63
|
});
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAA;AAGrF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,iIAAiI;AACjI,MAAM,OAAO,QAAS,SAAQ,KAAK;IAElB;IACA;IAFb,YACa,MAAc,EACd,IAA6B;QAEtC,KAAK,CAAC,QAAQ,MAAM,MAAM,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAHtD,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAyB;QAGtC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IAC1B,CAAC;CACJ;AAED,IAAI,eAAe,GAAkB,IAAI,CAAA;AAEzC,SAAS,kBAAkB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACnD,IAAI,eAAe,KAAK,GAAG;QAAE,OAAM;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACzC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;IACD,eAAe,GAAG,GAAG,CAAA;AACzB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC5B,kBAAkB,EAAE,CAAA;IACpB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;AACpC,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,IAAY;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;IACrD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,UAAU;IACtB,kBAAkB,EAAE,CAAA;IAEpB,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAA;IAChD,IAAI,cAAc;QAAE,OAAO,cAAc,CAAA;IAEzC,MAAM,cAAc,GAAG,eAAe,EAAE,CAAA;IACxC,IAAI,cAAc,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,cAAc,CAAA;QAC1C,OAAO,cAAc,CAAA;IACzB,CAAC;IAED,OAAO,IAAI,CAAA;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IACzC,OAAO,iBAAiB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAA6C;IAC1E,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,IAAI,QAAQ,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../src/commands/attach.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../src/commands/attach.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,kBAAkB,EAAoB,MAAM,kBAAkB,CAAA;AAG5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAQxE,wBAAsB,MAAM,CAAC,QAAQ,GAAE,gBAAoC,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkFrH"}
|
package/dist/commands/attach.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { intro, log, outro } from "@clack/prompts";
|
|
2
|
+
import { select } from "@inquirer/prompts";
|
|
2
3
|
import chalk from "chalk";
|
|
3
4
|
import fs from "node:fs";
|
|
4
5
|
import path from "node:path";
|
|
6
|
+
import { fetchWithAuth } from "../api.js";
|
|
5
7
|
import { isNonInteractive } from "../cliHelpers.js";
|
|
6
8
|
import { createSpinner, logNextSteps } from "../cliUi.js";
|
|
7
9
|
import { PROJECT_CONFIG_FILENAME, createRemoteProject, readProjectConfig, writeProjectConfig } from "../projectConfig.js";
|
|
8
10
|
import { resolveProvider } from "../providers/resolveProvider.js";
|
|
9
|
-
import { setStoredApiKey } from "../userConfig.js";
|
|
10
11
|
import { getProjectAttachedUserName, loginAndPersist } from "./auth.js";
|
|
12
|
+
import { resolveApiKeyForOrg } from "./authOrg.js";
|
|
11
13
|
import { generate } from "./generate.js";
|
|
12
14
|
import { listAndPromptIntegrations } from "./integrate.js";
|
|
13
15
|
export async function attach(provider = resolveProvider(), opts) {
|
|
@@ -30,19 +32,20 @@ export async function attach(provider = resolveProvider(), opts) {
|
|
|
30
32
|
log.info(`Attaching Terse to existing project ${chalk.bold(projectName)}`);
|
|
31
33
|
log.info("Self-hosted mode keeps your jobs on your own infrastructure via TERSE_REMOTE_SERVER_URL. No source code is uploaded to Terse.");
|
|
32
34
|
const result = await loginAndPersist(opts);
|
|
35
|
+
let attachApiKey = result?.apiKey ?? null;
|
|
33
36
|
if (result?.apiKey) {
|
|
34
|
-
|
|
37
|
+
attachApiKey = await pickOrgForAttach(result.apiKey, nonInteractive);
|
|
35
38
|
log.info(`Add ${chalk.cyan("TERSE_API_KEY")} to your server environment so your app can authenticate at runtime.`);
|
|
36
|
-
log.step(`TERSE_API_KEY=${
|
|
39
|
+
log.step(`TERSE_API_KEY=${attachApiKey}`);
|
|
37
40
|
}
|
|
38
41
|
else {
|
|
39
|
-
log.info("You can run `terse login` later to authenticate.");
|
|
42
|
+
log.info("You can run `terse auth login` later to authenticate.");
|
|
40
43
|
}
|
|
41
|
-
if (
|
|
44
|
+
if (attachApiKey && !readProjectConfig(cwd)) {
|
|
42
45
|
const s = createSpinner();
|
|
43
46
|
s.start("Creating Terse project");
|
|
44
47
|
try {
|
|
45
|
-
const config = await createRemoteProject(
|
|
48
|
+
const config = await createRemoteProject(attachApiKey, projectName);
|
|
46
49
|
const selfHostedConfig = { ...config, selfHosted: true, remoteServerUrl: "" };
|
|
47
50
|
writeProjectConfig(cwd, selfHostedConfig);
|
|
48
51
|
s.stop(`Created Terse project (${config.projectId})`);
|
|
@@ -55,12 +58,16 @@ export async function attach(provider = resolveProvider(), opts) {
|
|
|
55
58
|
}
|
|
56
59
|
}
|
|
57
60
|
log.info("Reviewing integrations");
|
|
58
|
-
await listAndPromptIntegrations({
|
|
61
|
+
await listAndPromptIntegrations({
|
|
62
|
+
showLifecycle: false,
|
|
63
|
+
nonInteractive,
|
|
64
|
+
...(attachApiKey ? { apiKey: attachApiKey } : {})
|
|
65
|
+
});
|
|
59
66
|
if (canGenerateFromCurrentDirectory(provider, cwd)) {
|
|
60
67
|
const s = createSpinner();
|
|
61
68
|
s.start("Generating code");
|
|
62
69
|
try {
|
|
63
|
-
await generate(provider);
|
|
70
|
+
await generate(provider, attachApiKey ? { apiKey: attachApiKey } : undefined);
|
|
64
71
|
s.stop("Generated code");
|
|
65
72
|
}
|
|
66
73
|
catch {
|
|
@@ -81,6 +88,24 @@ export async function attach(provider = resolveProvider(), opts) {
|
|
|
81
88
|
log.info(chalk.dim(`If your self-hosted app keeps jobs in another file, use ${chalk.cyan("--entry-file")} with terse test and terse deploy.`));
|
|
82
89
|
outro("Done");
|
|
83
90
|
}
|
|
91
|
+
async function pickOrgForAttach(currentApiKey, nonInteractive) {
|
|
92
|
+
const orgsData = await fetchWithAuth("/sdk/me/organizations", currentApiKey);
|
|
93
|
+
if (orgsData.organizations.length <= 1 || nonInteractive)
|
|
94
|
+
return currentApiKey;
|
|
95
|
+
const activeId = orgsData.activeOrganizationId;
|
|
96
|
+
const chosenId = await select({
|
|
97
|
+
message: "Attach this project to which organization?",
|
|
98
|
+
choices: orgsData.organizations.map(o => ({
|
|
99
|
+
name: o.id === activeId ? `${o.name} ${chalk.dim("(active)")}` : o.name,
|
|
100
|
+
value: o.id
|
|
101
|
+
})),
|
|
102
|
+
default: activeId
|
|
103
|
+
});
|
|
104
|
+
if (chosenId === activeId)
|
|
105
|
+
return currentApiKey;
|
|
106
|
+
const chosen = orgsData.organizations.find(o => o.id === chosenId);
|
|
107
|
+
return resolveApiKeyForOrg(chosen.id, chosen.name, currentApiKey);
|
|
108
|
+
}
|
|
84
109
|
function canGenerateFromCurrentDirectory(provider, cwd) {
|
|
85
110
|
return provider.detectionMarkers.requiredFiles.every(relativePath => fs.existsSync(path.join(cwd, relativePath)));
|
|
86
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attach.js","sourceRoot":"","sources":["../../src/commands/attach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"attach.js","sourceRoot":"","sources":["../../src/commands/attach.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAoB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,kBAAkB,EAAoB,MAAM,kBAAkB,CAAA;AA0Q5E,wBAAsB,eAAe,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAAC,CA0D/H;AAED,wBAAgB,MAAM,IAAI,OAAO,CAEhC;AAwBD,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAK1F"}
|
package/dist/commands/auth.js
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { log } from "@clack/prompts";
|
|
2
|
-
import { confirm } from "@inquirer/prompts";
|
|
2
|
+
import { confirm, select } from "@inquirer/prompts";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { fetchWithAuth, readApiKeyFromDir } from "../api.js";
|
|
5
5
|
import { CliError, ErrorCode } from "../cliError.js";
|
|
6
6
|
import { isNonInteractive } from "../cliHelpers.js";
|
|
7
7
|
import { createSpinner } from "../cliUi.js";
|
|
8
|
-
import { BACKEND_URL, WORKOS_CLIENT_ID } from "../config.js";
|
|
8
|
+
import { BACKEND_URL, FRONTEND_URL, WORKOS_CLIENT_ID } from "../config.js";
|
|
9
9
|
import { openUrlInBrowser } from "../openBrowser.js";
|
|
10
|
-
import { clearStoredApiKey, getAuthFilePath, getStoredApiKey,
|
|
10
|
+
import { clearStoredApiKey, getAuthFilePath, getStoredApiKey, setActiveOrgToken } from "../userConfig.js";
|
|
11
|
+
import { resolveApiKeyForOrg } from "./authOrg.js";
|
|
11
12
|
const DEVICE_AUTH_URL = "https://api.workos.com/user_management/authorize/device";
|
|
12
13
|
const TOKEN_URL = "https://api.workos.com/user_management/authenticate";
|
|
13
14
|
const DEVICE_CODE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
|
|
15
|
+
const ORG_CREATE_PATH = "/app/organizations/create";
|
|
16
|
+
const IDENTIFY_POLL_INTERVAL_MS = 3000;
|
|
14
17
|
function sleep(ms) {
|
|
15
18
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
16
19
|
}
|
|
@@ -60,18 +63,55 @@ async function pollForTokens(deviceCode, expiresIn, interval) {
|
|
|
60
63
|
}
|
|
61
64
|
throw new Error("Authorization timed out — please try again");
|
|
62
65
|
}
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
class JwtRejectedError extends Error {
|
|
67
|
+
constructor() {
|
|
68
|
+
super("WorkOS session expired");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function identifyWithJwt(accessToken) {
|
|
72
|
+
const res = await fetch(`${BACKEND_URL}/sdk/auth/identify`, {
|
|
65
73
|
method: "POST",
|
|
66
74
|
headers: { "Content-Type": "application/json" },
|
|
67
75
|
body: JSON.stringify({ accessToken })
|
|
68
76
|
});
|
|
77
|
+
if (res.status === 401) {
|
|
78
|
+
throw new JwtRejectedError();
|
|
79
|
+
}
|
|
80
|
+
if (!res.ok) {
|
|
81
|
+
const body = (await res.json().catch(() => ({})));
|
|
82
|
+
throw new Error(`${res.status} — ${body.error || "Failed to identify"}`);
|
|
83
|
+
}
|
|
84
|
+
return res.json();
|
|
85
|
+
}
|
|
86
|
+
async function waitForOrganizationCreation(accessToken, deadline) {
|
|
87
|
+
while (Date.now() < deadline) {
|
|
88
|
+
await sleep(IDENTIFY_POLL_INTERVAL_MS);
|
|
89
|
+
const result = await identifyWithJwt(accessToken);
|
|
90
|
+
if (result.organizations.length > 0)
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
throw new Error("Timed out waiting for organization creation. Run `terse auth login` again once your organization is set up.");
|
|
94
|
+
}
|
|
95
|
+
async function exchangeForApiKey(accessToken, organizationId) {
|
|
96
|
+
const res = await fetch(`${BACKEND_URL}/sdk/auth/device-token-exchange`, {
|
|
97
|
+
method: "POST",
|
|
98
|
+
headers: { "Content-Type": "application/json" },
|
|
99
|
+
body: JSON.stringify({ accessToken, organizationId })
|
|
100
|
+
});
|
|
69
101
|
if (!res.ok) {
|
|
70
102
|
const body = (await res.json().catch(() => ({})));
|
|
71
103
|
throw new Error(`${res.status} — ${body.error || "Failed to exchange token"}`);
|
|
72
104
|
}
|
|
73
105
|
return res.json();
|
|
74
106
|
}
|
|
107
|
+
async function pickOrganization(orgs) {
|
|
108
|
+
if (orgs.length === 1)
|
|
109
|
+
return orgs[0].id;
|
|
110
|
+
return select({
|
|
111
|
+
message: "Select an organization for this CLI session",
|
|
112
|
+
choices: orgs.map(o => ({ name: `${o.name} ${chalk.dim(o.id)}`, value: o.id }))
|
|
113
|
+
});
|
|
114
|
+
}
|
|
75
115
|
async function login() {
|
|
76
116
|
const s = createSpinner();
|
|
77
117
|
s.start("Requesting login code");
|
|
@@ -92,17 +132,68 @@ async function login() {
|
|
|
92
132
|
let tokenData;
|
|
93
133
|
try {
|
|
94
134
|
tokenData = await pollForTokens(deviceData.device_code, deviceData.expires_in, deviceData.interval);
|
|
95
|
-
s.message("Exchanging token");
|
|
96
135
|
}
|
|
97
136
|
catch (err) {
|
|
98
137
|
s.stop("Login failed");
|
|
99
138
|
console.error(chalk.red(` ${err.message}`));
|
|
100
139
|
return null;
|
|
101
140
|
}
|
|
141
|
+
const jwtDeadline = Date.now() + 5 * 60 * 1000;
|
|
142
|
+
s.message("Loading your organizations");
|
|
143
|
+
let identity;
|
|
144
|
+
try {
|
|
145
|
+
identity = await identifyWithJwt(tokenData.access_token);
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
s.stop("Login failed");
|
|
149
|
+
if (err instanceof JwtRejectedError) {
|
|
150
|
+
console.error(chalk.red(" WorkOS session expired before we could load your account. Run `terse auth login` again."));
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
console.error(chalk.red(` ${err.message}`));
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
if (identity.organizations.length === 0) {
|
|
158
|
+
s.stop("Account ready — finish setup in your browser");
|
|
159
|
+
const orgCreateUrl = `${FRONTEND_URL}${ORG_CREATE_PATH}`;
|
|
160
|
+
openUrlInBrowser(orgCreateUrl);
|
|
161
|
+
log.info("Finish creating your organization in the browser. If the tab didn't open, visit:");
|
|
162
|
+
log.info(` ${chalk.cyan(orgCreateUrl)}`);
|
|
163
|
+
s.start("Waiting for organization creation");
|
|
164
|
+
try {
|
|
165
|
+
identity = await waitForOrganizationCreation(tokenData.access_token, jwtDeadline);
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
s.stop("Login failed");
|
|
169
|
+
if (err instanceof JwtRejectedError) {
|
|
170
|
+
console.error(chalk.red(" WorkOS session expired before your organization was ready. Run `terse auth login` again."));
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
console.error(chalk.red(` ${err.message}`));
|
|
174
|
+
}
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
let organizationId;
|
|
179
|
+
try {
|
|
180
|
+
s.stop("Organizations loaded");
|
|
181
|
+
organizationId = await pickOrganization(identity.organizations);
|
|
182
|
+
s.start("Issuing API key");
|
|
183
|
+
}
|
|
184
|
+
catch (err) {
|
|
185
|
+
console.error(chalk.red(` ${err.message}`));
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
102
188
|
try {
|
|
103
|
-
const exchangeData = await exchangeForApiKey(tokenData.access_token);
|
|
104
|
-
s.stop(`Logged in as ${exchangeData.user.displayName || exchangeData.user.email}`);
|
|
105
|
-
return {
|
|
189
|
+
const exchangeData = await exchangeForApiKey(tokenData.access_token, organizationId);
|
|
190
|
+
s.stop(`Logged in as ${exchangeData.user.displayName || exchangeData.user.email} · ${exchangeData.organization.name}`);
|
|
191
|
+
return {
|
|
192
|
+
apiKey: exchangeData.apiKey,
|
|
193
|
+
displayName: exchangeData.user.displayName,
|
|
194
|
+
organizationId: exchangeData.organization.id,
|
|
195
|
+
organizationName: exchangeData.organization.name
|
|
196
|
+
};
|
|
106
197
|
}
|
|
107
198
|
catch (err) {
|
|
108
199
|
s.stop("Failed to create API key");
|
|
@@ -110,6 +201,49 @@ async function login() {
|
|
|
110
201
|
return null;
|
|
111
202
|
}
|
|
112
203
|
}
|
|
204
|
+
async function promptAlreadyLoggedInChoice(currentApiKey, me) {
|
|
205
|
+
let allOrgs = null;
|
|
206
|
+
try {
|
|
207
|
+
allOrgs = await fetchWithAuth("/sdk/me/organizations", currentApiKey);
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
// Fall back to the simple confirm path below.
|
|
211
|
+
}
|
|
212
|
+
const activeId = allOrgs?.activeOrganizationId ?? null;
|
|
213
|
+
const orgs = allOrgs?.organizations ?? [];
|
|
214
|
+
if (orgs.length <= 1) {
|
|
215
|
+
const shouldReauth = await confirm({ message: "Log in again with a different account?", default: false });
|
|
216
|
+
return shouldReauth ? { kind: "reauth" } : { kind: "keep" };
|
|
217
|
+
}
|
|
218
|
+
const choice = await select({
|
|
219
|
+
message: "Which organization?",
|
|
220
|
+
choices: [
|
|
221
|
+
...orgs.map(o => ({
|
|
222
|
+
name: o.id === activeId ? `${o.name} ${chalk.dim("(current)")}` : o.name,
|
|
223
|
+
value: o.id
|
|
224
|
+
})),
|
|
225
|
+
{ name: "Log in with a different account", value: "__reauth__" }
|
|
226
|
+
],
|
|
227
|
+
default: activeId ?? orgs[0].id
|
|
228
|
+
});
|
|
229
|
+
if (choice === "__reauth__")
|
|
230
|
+
return { kind: "reauth" };
|
|
231
|
+
if (choice === activeId)
|
|
232
|
+
return { kind: "keep" };
|
|
233
|
+
const picked = orgs.find(o => o.id === choice);
|
|
234
|
+
const s = createSpinner();
|
|
235
|
+
s.start(`Switching to ${picked.name}`);
|
|
236
|
+
try {
|
|
237
|
+
const newKey = await resolveApiKeyForOrg(picked.id, picked.name, currentApiKey);
|
|
238
|
+
setActiveOrgToken(picked.id, newKey, picked.name);
|
|
239
|
+
s.stop(`Switched to ${picked.name}`);
|
|
240
|
+
return { kind: "switch", apiKey: newKey };
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
s.stop(`Failed to switch: ${err.message}`);
|
|
244
|
+
return { kind: "failed" };
|
|
245
|
+
}
|
|
246
|
+
}
|
|
113
247
|
export async function loginAndPersist(opts) {
|
|
114
248
|
const skipPrompts = isNonInteractive(opts);
|
|
115
249
|
const canFallToDeviceLogin = !opts?.nonInteractive;
|
|
@@ -117,20 +251,33 @@ export async function loginAndPersist(opts) {
|
|
|
117
251
|
if (stored) {
|
|
118
252
|
const s = createSpinner();
|
|
119
253
|
s.start("Checking existing API key");
|
|
120
|
-
const
|
|
121
|
-
if (
|
|
122
|
-
|
|
254
|
+
const me = await fetchMeForKey(stored);
|
|
255
|
+
if (me) {
|
|
256
|
+
const orgLabel = me.organization?.name ?? "(no organization)";
|
|
257
|
+
s.stop(`Already logged in as ${me.displayName} · ${orgLabel}`);
|
|
123
258
|
if (skipPrompts)
|
|
124
|
-
return { apiKey: stored, displayName:
|
|
125
|
-
const
|
|
126
|
-
if (
|
|
127
|
-
return { apiKey: stored, displayName:
|
|
259
|
+
return { apiKey: stored, displayName: me.displayName };
|
|
260
|
+
const next = await promptAlreadyLoggedInChoice(stored, me);
|
|
261
|
+
if (next.kind === "keep") {
|
|
262
|
+
return { apiKey: stored, displayName: me.displayName };
|
|
263
|
+
}
|
|
264
|
+
if (next.kind === "switch") {
|
|
265
|
+
return { apiKey: next.apiKey, displayName: me.displayName };
|
|
266
|
+
}
|
|
267
|
+
if (next.kind === "failed") {
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
// next.kind === "reauth" — drop every cached per-org token before
|
|
271
|
+
// logging in again. Otherwise the new user inherits the previous
|
|
272
|
+
// user's tokens for any org they both belong to, and a later
|
|
273
|
+
// `terse auth org switch` would silently reuse the prior token.
|
|
274
|
+
clearStoredApiKey();
|
|
128
275
|
}
|
|
129
276
|
else {
|
|
130
277
|
s.stop("Existing API key is invalid or expired");
|
|
131
278
|
if (!canFallToDeviceLogin) {
|
|
132
279
|
throw new CliError("not_authenticated", "Stored credentials are invalid or expired.", {
|
|
133
|
-
detail: 'Run "terse login" to refresh them.',
|
|
280
|
+
detail: 'Run "terse auth login" to refresh them.',
|
|
134
281
|
actionRequired: true,
|
|
135
282
|
exitCode: ErrorCode.BAD_ARGUMENTS
|
|
136
283
|
});
|
|
@@ -139,33 +286,30 @@ export async function loginAndPersist(opts) {
|
|
|
139
286
|
}
|
|
140
287
|
else if (!canFallToDeviceLogin) {
|
|
141
288
|
throw new CliError("not_authenticated", "Not authenticated.", {
|
|
142
|
-
detail: 'Run "terse login" first, then retry.',
|
|
289
|
+
detail: 'Run "terse auth login" first, then retry.',
|
|
143
290
|
actionRequired: true,
|
|
144
291
|
exitCode: ErrorCode.BAD_ARGUMENTS
|
|
145
292
|
});
|
|
146
293
|
}
|
|
147
294
|
const result = await login();
|
|
148
295
|
if (!result?.apiKey) {
|
|
149
|
-
log.info("You can run `terse login` later to authenticate.");
|
|
296
|
+
log.info("You can run `terse auth login` later to authenticate.");
|
|
150
297
|
return null;
|
|
151
298
|
}
|
|
152
|
-
|
|
299
|
+
setActiveOrgToken(result.organizationId, result.apiKey, result.organizationName);
|
|
153
300
|
log.info(chalk.dim(`Saved credentials to ${getAuthFilePath()}`));
|
|
154
|
-
return result;
|
|
155
|
-
}
|
|
156
|
-
async function getExistingAuthenticatedUserName() {
|
|
157
|
-
const stored = getStoredApiKey();
|
|
158
|
-
if (!stored)
|
|
159
|
-
return null;
|
|
160
|
-
return fetchDisplayNameForKey(stored);
|
|
301
|
+
return { apiKey: result.apiKey, displayName: result.displayName };
|
|
161
302
|
}
|
|
162
303
|
export function logout() {
|
|
163
304
|
return clearStoredApiKey();
|
|
164
305
|
}
|
|
165
|
-
async function
|
|
306
|
+
async function fetchMeForKey(apiKey) {
|
|
166
307
|
try {
|
|
167
308
|
const me = await fetchWithAuth("/sdk/me", apiKey);
|
|
168
|
-
return
|
|
309
|
+
return {
|
|
310
|
+
displayName: me.displayName || me.firstName || me.email || "Unknown user",
|
|
311
|
+
organization: me.organization ?? null
|
|
312
|
+
};
|
|
169
313
|
}
|
|
170
314
|
catch {
|
|
171
315
|
return null;
|
|
@@ -175,6 +319,7 @@ export async function getProjectAttachedUserName(targetDir) {
|
|
|
175
319
|
const projectKey = readApiKeyFromDir(targetDir);
|
|
176
320
|
if (!projectKey)
|
|
177
321
|
return null;
|
|
178
|
-
|
|
322
|
+
const me = await fetchMeForKey(projectKey);
|
|
323
|
+
return me?.displayName ?? null;
|
|
179
324
|
}
|
|
180
325
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get an API key scoped to `orgId`, reusing a cached one if we have it and
|
|
3
|
+
* otherwise minting a fresh one via `/sdk/auth/switch-organization`. Does NOT
|
|
4
|
+
* change the user's active org — callers that want to flip active should use
|
|
5
|
+
* `setActiveOrgToken` directly.
|
|
6
|
+
*/
|
|
7
|
+
export declare function resolveApiKeyForOrg(orgId: string, orgName: string, currentApiKey: string): Promise<string>;
|
|
8
|
+
export declare function authOrgList(opts: {
|
|
9
|
+
json?: boolean;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
export declare function authOrgSwitch(orgIdArg: string | undefined): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=authOrg.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authOrg.d.ts","sourceRoot":"","sources":["../../src/commands/authOrg.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhH;AAuBD,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBzE;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE/E"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { select } from "@inquirer/prompts";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { ApiError, fetchWithAuth } from "../api.js";
|
|
4
|
+
import { isNonInteractive } from "../cliHelpers.js";
|
|
5
|
+
import { cacheOrgToken, getStoredApiKey, getStoredApiKeyForOrg, setActiveOrg, setActiveOrgToken } from "../userConfig.js";
|
|
6
|
+
/**
|
|
7
|
+
* Get an API key scoped to `orgId`, reusing a cached one if we have it and
|
|
8
|
+
* otherwise minting a fresh one via `/sdk/auth/switch-organization`. Does NOT
|
|
9
|
+
* change the user's active org — callers that want to flip active should use
|
|
10
|
+
* `setActiveOrgToken` directly.
|
|
11
|
+
*/
|
|
12
|
+
export async function resolveApiKeyForOrg(orgId, orgName, currentApiKey) {
|
|
13
|
+
const cached = getStoredApiKeyForOrg(orgId);
|
|
14
|
+
if (cached)
|
|
15
|
+
return cached;
|
|
16
|
+
const minted = await fetchWithAuth("/sdk/auth/switch-organization", currentApiKey, { organizationId: orgId }, "POST");
|
|
17
|
+
cacheOrgToken(minted.organization.id, minted.apiKey, orgName);
|
|
18
|
+
return minted.apiKey;
|
|
19
|
+
}
|
|
20
|
+
function readApiKeyOrExit() {
|
|
21
|
+
const apiKey = getStoredApiKey();
|
|
22
|
+
if (!apiKey) {
|
|
23
|
+
console.log("Not logged in. Run `terse auth login`.");
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
return apiKey;
|
|
27
|
+
}
|
|
28
|
+
async function loadOrganizations(apiKey) {
|
|
29
|
+
try {
|
|
30
|
+
return await fetchWithAuth("/sdk/me/organizations", apiKey);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
if (err instanceof ApiError && err.status === 401) {
|
|
34
|
+
console.log("Credentials expired. Run `terse auth login`.");
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
throw err;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export async function authOrgList(opts) {
|
|
41
|
+
const apiKey = readApiKeyOrExit();
|
|
42
|
+
const data = await loadOrganizations(apiKey);
|
|
43
|
+
if (opts.json) {
|
|
44
|
+
process.stdout.write(JSON.stringify(data, null, 2) + "\n");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (data.organizations.length === 0) {
|
|
48
|
+
console.log("No organizations.");
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
for (const org of data.organizations) {
|
|
52
|
+
const active = org.id === data.activeOrganizationId;
|
|
53
|
+
const marker = active ? chalk.green("*") : " ";
|
|
54
|
+
console.log(`${marker} ${org.name} ${chalk.dim(org.id)}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export async function authOrgSwitch(orgIdArg) {
|
|
58
|
+
const apiKey = readApiKeyOrExit();
|
|
59
|
+
const data = await loadOrganizations(apiKey);
|
|
60
|
+
if (data.organizations.length === 0) {
|
|
61
|
+
console.log("No organizations.");
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
if (data.organizations.length === 1) {
|
|
65
|
+
console.log("Only one organization, nothing to switch to.");
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
let targetId;
|
|
69
|
+
if (orgIdArg) {
|
|
70
|
+
const match = data.organizations.find(o => o.id === orgIdArg);
|
|
71
|
+
if (!match) {
|
|
72
|
+
console.error(`Unknown organization id "${orgIdArg}". Valid ids:`);
|
|
73
|
+
for (const o of data.organizations)
|
|
74
|
+
console.error(` ${o.id} ${chalk.dim(o.name)}`);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
if (match.id === data.activeOrganizationId) {
|
|
78
|
+
console.log(`Already on ${match.name}.`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
targetId = match.id;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
if (isNonInteractive()) {
|
|
85
|
+
console.error("Org id required in non-interactive mode. Pass it as an argument: `terse auth org switch <org-id>`.");
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
targetId = await select({
|
|
89
|
+
message: "Switch to which organization?",
|
|
90
|
+
choices: data.organizations.map(o => {
|
|
91
|
+
const isCurrent = o.id === data.activeOrganizationId;
|
|
92
|
+
return {
|
|
93
|
+
name: isCurrent ? o.name : `${o.name} ${chalk.dim(o.id)}`,
|
|
94
|
+
value: o.id,
|
|
95
|
+
disabled: isCurrent ? chalk.dim("(current)") : false
|
|
96
|
+
};
|
|
97
|
+
})
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
const targetOrg = data.organizations.find(o => o.id === targetId);
|
|
101
|
+
if (getStoredApiKeyForOrg(targetId)) {
|
|
102
|
+
setActiveOrg(targetId);
|
|
103
|
+
console.log(`Switched to ${targetOrg.name}.`);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
let response;
|
|
107
|
+
try {
|
|
108
|
+
response = await fetchWithAuth("/sdk/auth/switch-organization", apiKey, { organizationId: targetId }, "POST");
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
if (err instanceof ApiError && err.status === 401) {
|
|
112
|
+
console.log("Credentials expired. Run `terse auth login`.");
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
throw err;
|
|
116
|
+
}
|
|
117
|
+
setActiveOrgToken(response.organization.id, response.apiKey, response.organization.name);
|
|
118
|
+
console.log(`Switched to ${response.organization.name}.`);
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=authOrg.js.map
|