@oxygen-agent/cli 1.45.4

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.
Files changed (73) hide show
  1. package/README.md +25 -0
  2. package/dist/browser-login.d.ts +8 -0
  3. package/dist/browser-login.d.ts.map +1 -0
  4. package/dist/browser-login.js +181 -0
  5. package/dist/browser-login.js.map +1 -0
  6. package/dist/credentials.d.ts +28 -0
  7. package/dist/credentials.d.ts.map +1 -0
  8. package/dist/credentials.js +470 -0
  9. package/dist/credentials.js.map +1 -0
  10. package/dist/http-client.d.ts +12 -0
  11. package/dist/http-client.d.ts.map +1 -0
  12. package/dist/http-client.js +218 -0
  13. package/dist/http-client.js.map +1 -0
  14. package/dist/index.d.ts +4 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +3523 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/local-custom-http-column.d.ts +9 -0
  19. package/dist/local-custom-http-column.d.ts.map +1 -0
  20. package/dist/local-custom-http-column.js +571 -0
  21. package/dist/local-custom-http-column.js.map +1 -0
  22. package/dist/session.d.ts +57 -0
  23. package/dist/session.d.ts.map +1 -0
  24. package/dist/session.js +194 -0
  25. package/dist/session.js.map +1 -0
  26. package/node_modules/@oxygen/recipe-sdk/dist/index.d.ts +136 -0
  27. package/node_modules/@oxygen/recipe-sdk/dist/index.d.ts.map +1 -0
  28. package/node_modules/@oxygen/recipe-sdk/dist/index.js +43 -0
  29. package/node_modules/@oxygen/recipe-sdk/dist/index.js.map +1 -0
  30. package/node_modules/@oxygen/recipe-sdk/package.json +15 -0
  31. package/node_modules/@oxygen/shared/dist/billing.d.ts +124 -0
  32. package/node_modules/@oxygen/shared/dist/billing.d.ts.map +1 -0
  33. package/node_modules/@oxygen/shared/dist/billing.js +296 -0
  34. package/node_modules/@oxygen/shared/dist/billing.js.map +1 -0
  35. package/node_modules/@oxygen/shared/dist/column-types.d.ts +55 -0
  36. package/node_modules/@oxygen/shared/dist/column-types.d.ts.map +1 -0
  37. package/node_modules/@oxygen/shared/dist/column-types.js +161 -0
  38. package/node_modules/@oxygen/shared/dist/column-types.js.map +1 -0
  39. package/node_modules/@oxygen/shared/dist/credit-guidance.d.ts +15 -0
  40. package/node_modules/@oxygen/shared/dist/credit-guidance.d.ts.map +1 -0
  41. package/node_modules/@oxygen/shared/dist/credit-guidance.js +60 -0
  42. package/node_modules/@oxygen/shared/dist/credit-guidance.js.map +1 -0
  43. package/node_modules/@oxygen/shared/dist/file-import.d.ts +22 -0
  44. package/node_modules/@oxygen/shared/dist/file-import.d.ts.map +1 -0
  45. package/node_modules/@oxygen/shared/dist/file-import.js +232 -0
  46. package/node_modules/@oxygen/shared/dist/file-import.js.map +1 -0
  47. package/node_modules/@oxygen/shared/dist/index.d.ts +45 -0
  48. package/node_modules/@oxygen/shared/dist/index.d.ts.map +1 -0
  49. package/node_modules/@oxygen/shared/dist/index.js +49 -0
  50. package/node_modules/@oxygen/shared/dist/index.js.map +1 -0
  51. package/node_modules/@oxygen/shared/dist/log.d.ts +22 -0
  52. package/node_modules/@oxygen/shared/dist/log.d.ts.map +1 -0
  53. package/node_modules/@oxygen/shared/dist/log.js +58 -0
  54. package/node_modules/@oxygen/shared/dist/log.js.map +1 -0
  55. package/node_modules/@oxygen/shared/dist/redaction.d.ts +4 -0
  56. package/node_modules/@oxygen/shared/dist/redaction.d.ts.map +1 -0
  57. package/node_modules/@oxygen/shared/dist/redaction.js +106 -0
  58. package/node_modules/@oxygen/shared/dist/redaction.js.map +1 -0
  59. package/node_modules/@oxygen/shared/dist/telemetry.d.ts +9 -0
  60. package/node_modules/@oxygen/shared/dist/telemetry.d.ts.map +1 -0
  61. package/node_modules/@oxygen/shared/dist/telemetry.js +98 -0
  62. package/node_modules/@oxygen/shared/dist/telemetry.js.map +1 -0
  63. package/node_modules/@oxygen/shared/dist/version.d.ts +2 -0
  64. package/node_modules/@oxygen/shared/dist/version.d.ts.map +1 -0
  65. package/node_modules/@oxygen/shared/dist/version.js +2 -0
  66. package/node_modules/@oxygen/shared/dist/version.js.map +1 -0
  67. package/node_modules/@oxygen/shared/package.json +21 -0
  68. package/node_modules/@oxygen/workflows/dist/index.d.ts +680 -0
  69. package/node_modules/@oxygen/workflows/dist/index.d.ts.map +1 -0
  70. package/node_modules/@oxygen/workflows/dist/index.js +983 -0
  71. package/node_modules/@oxygen/workflows/dist/index.js.map +1 -0
  72. package/node_modules/@oxygen/workflows/package.json +15 -0
  73. package/package.json +44 -0
package/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # OXYGEN CLI
2
+
3
+ OXYGEN is the CLI/API-first GTM engineering workspace for early-stage B2B SaaS teams and GTM agencies.
4
+
5
+ ## Requirements
6
+
7
+ - Node.js >=22.22.0
8
+ - npm >=10.9.0
9
+
10
+ ## Install
11
+
12
+ ```sh
13
+ npm install -g @oxygen-agent/cli
14
+ oxygen login
15
+ ```
16
+
17
+ ## Update
18
+
19
+ ```sh
20
+ oxygen update
21
+ ```
22
+
23
+ For product documentation and support, visit https://oxygen-agent.com.
24
+
25
+ Version: 1.45.4
@@ -0,0 +1,8 @@
1
+ export type BrowserLoginSession = {
2
+ verificationUrl: string;
3
+ waitForToken: () => Promise<string>;
4
+ close: () => Promise<void>;
5
+ };
6
+ export declare function createBrowserLoginSession(apiUrl: string): Promise<BrowserLoginSession>;
7
+ export declare function openBrowser(url: string): boolean;
8
+ //# sourceMappingURL=browser-login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-login.d.ts","sourceRoot":"","sources":["../src/browser-login.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,mBAAmB,GAAG;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA2D5F;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAehD"}
@@ -0,0 +1,181 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import { randomBytes, timingSafeEqual } from "node:crypto";
3
+ import { createServer } from "node:http";
4
+ import { OxygenError } from "@oxygen/shared";
5
+ const CALLBACK_HOST = "127.0.0.1";
6
+ const CALLBACK_PATH = "/cli/login/callback";
7
+ const MAX_CALLBACK_BODY_BYTES = 32_000;
8
+ export async function createBrowserLoginSession(apiUrl) {
9
+ const state = randomBytes(32).toString("base64url");
10
+ let settled = false;
11
+ let resolveToken = () => undefined;
12
+ let rejectToken = () => undefined;
13
+ const tokenPromise = new Promise((resolve, reject) => {
14
+ resolveToken = resolve;
15
+ rejectToken = reject;
16
+ });
17
+ const apiOrigin = new URL(apiUrl).origin;
18
+ const server = createServer((request, response) => {
19
+ void handleCallbackRequest({
20
+ request,
21
+ response,
22
+ apiOrigin,
23
+ state,
24
+ acceptToken: token => {
25
+ if (settled)
26
+ return;
27
+ settled = true;
28
+ resolveToken(token);
29
+ },
30
+ }).catch(error => {
31
+ writeJson(response, 500, { ok: false, error: readErrorMessage(error) });
32
+ });
33
+ });
34
+ await listen(server);
35
+ const address = server.address();
36
+ if (!address || typeof address === "string") {
37
+ throw new OxygenError("browser_login_unavailable", "Unable to bind local browser login callback.", {
38
+ exitCode: 1,
39
+ });
40
+ }
41
+ const callbackUrl = `http://${CALLBACK_HOST}:${address.port}${CALLBACK_PATH}`;
42
+ const redirectParams = new URLSearchParams({
43
+ cli_callback: callbackUrl,
44
+ cli_state: state,
45
+ source: "oxygen_cli",
46
+ });
47
+ const redirectPath = `/settings/api-keys?${redirectParams.toString()}`;
48
+ const verificationUrl = new URL("/auth/sign-in", apiUrl);
49
+ verificationUrl.searchParams.set("redirect_url", redirectPath);
50
+ verificationUrl.searchParams.set("source", "oxygen_cli");
51
+ return {
52
+ verificationUrl: verificationUrl.toString(),
53
+ waitForToken: () => tokenPromise,
54
+ close: async () => {
55
+ if (!settled) {
56
+ settled = true;
57
+ rejectToken(new OxygenError("browser_login_closed", "Browser login callback closed.", {
58
+ exitCode: 1,
59
+ }));
60
+ }
61
+ await closeServer(server);
62
+ },
63
+ };
64
+ }
65
+ export function openBrowser(url) {
66
+ try {
67
+ if (process.platform === "darwin") {
68
+ execFileSync("open", [url], { stdio: "ignore" });
69
+ return true;
70
+ }
71
+ if (process.platform === "win32") {
72
+ execFileSync("cmd", ["/c", "start", "", url], { stdio: "ignore" });
73
+ return true;
74
+ }
75
+ execFileSync("xdg-open", [url], { stdio: "ignore" });
76
+ return true;
77
+ }
78
+ catch {
79
+ return false;
80
+ }
81
+ }
82
+ async function handleCallbackRequest({ request, response, apiOrigin, state, acceptToken, }) {
83
+ writeCorsHeaders(request, response, apiOrigin);
84
+ const url = new URL(request.url ?? "/", `http://${CALLBACK_HOST}`);
85
+ if (request.method === "OPTIONS") {
86
+ response.writeHead(204);
87
+ response.end();
88
+ return;
89
+ }
90
+ if (request.method !== "POST" || url.pathname !== CALLBACK_PATH) {
91
+ writeJson(response, 404, { ok: false, error: "Not found." });
92
+ return;
93
+ }
94
+ const body = await readJsonBody(request);
95
+ const token = typeof body.token === "string" ? body.token.trim() : "";
96
+ const receivedState = typeof body.state === "string" ? body.state : "";
97
+ if (!token) {
98
+ writeJson(response, 400, { ok: false, error: "Token is required." });
99
+ return;
100
+ }
101
+ if (!secureEqual(receivedState, state)) {
102
+ writeJson(response, 403, { ok: false, error: "Invalid login state." });
103
+ return;
104
+ }
105
+ acceptToken(token);
106
+ writeJson(response, 200, { ok: true });
107
+ }
108
+ async function readJsonBody(request) {
109
+ const chunks = [];
110
+ let bytes = 0;
111
+ for await (const chunk of request) {
112
+ const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
113
+ bytes += buffer.byteLength;
114
+ if (bytes > MAX_CALLBACK_BODY_BYTES) {
115
+ throw new OxygenError("browser_login_payload_too_large", "Browser login callback payload is too large.", {
116
+ exitCode: 1,
117
+ });
118
+ }
119
+ chunks.push(buffer);
120
+ }
121
+ let parsed;
122
+ try {
123
+ parsed = JSON.parse(Buffer.concat(chunks).toString("utf8"));
124
+ }
125
+ catch {
126
+ throw new OxygenError("invalid_browser_login_payload", "Browser login callback payload must be JSON.", {
127
+ exitCode: 1,
128
+ });
129
+ }
130
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
131
+ throw new OxygenError("invalid_browser_login_payload", "Browser login callback payload must be an object.", {
132
+ exitCode: 1,
133
+ });
134
+ }
135
+ return parsed;
136
+ }
137
+ function writeCorsHeaders(request, response, apiOrigin) {
138
+ const origin = request.headers.origin;
139
+ const allowedOrigin = typeof origin === "string" && origin === apiOrigin ? origin : apiOrigin;
140
+ response.setHeader("Vary", "Origin");
141
+ response.setHeader("Access-Control-Allow-Origin", allowedOrigin);
142
+ response.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
143
+ response.setHeader("Access-Control-Allow-Headers", "Content-Type");
144
+ response.setHeader("Access-Control-Allow-Private-Network", "true");
145
+ }
146
+ function writeJson(response, status, body) {
147
+ if (response.headersSent)
148
+ return;
149
+ response.writeHead(status, { "Content-Type": "application/json" });
150
+ response.end(JSON.stringify(body));
151
+ }
152
+ function secureEqual(value, expected) {
153
+ const valueBuffer = Buffer.from(value);
154
+ const expectedBuffer = Buffer.from(expected);
155
+ if (valueBuffer.byteLength !== expectedBuffer.byteLength)
156
+ return false;
157
+ return timingSafeEqual(valueBuffer, expectedBuffer);
158
+ }
159
+ function listen(server) {
160
+ return new Promise((resolve, reject) => {
161
+ server.once("error", reject);
162
+ server.listen(0, CALLBACK_HOST, () => {
163
+ server.off("error", reject);
164
+ resolve();
165
+ });
166
+ });
167
+ }
168
+ function closeServer(server) {
169
+ return new Promise((resolve, reject) => {
170
+ server.close(error => {
171
+ if (error)
172
+ reject(error);
173
+ else
174
+ resolve();
175
+ });
176
+ });
177
+ }
178
+ function readErrorMessage(error) {
179
+ return error instanceof Error ? error.message : "unknown error";
180
+ }
181
+ //# sourceMappingURL=browser-login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-login.js","sourceRoot":"","sources":["../src/browser-login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAC5C,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAQvC,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,MAAc;IAC5D,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,YAAY,GAA4B,GAAG,EAAE,CAAC,SAAS,CAAC;IAC5D,IAAI,WAAW,GAA2B,GAAG,EAAE,CAAC,SAAS,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3D,YAAY,GAAG,OAAO,CAAC;QACvB,WAAW,GAAG,MAAM,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;QAChD,KAAK,qBAAqB,CAAC;YACzB,OAAO;YACP,QAAQ;YACR,SAAS;YACT,KAAK;YACL,WAAW,EAAE,KAAK,CAAC,EAAE;gBACnB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;SACF,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACf,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,WAAW,CAAC,2BAA2B,EAAE,8CAA8C,EAAE;YACjG,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,aAAa,IAAI,OAAO,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;IAC9E,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC;QACzC,YAAY,EAAE,WAAW;QACzB,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,YAAY;KACrB,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,sBAAsB,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;IACvE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACzD,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC/D,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAEzD,OAAO;QACL,eAAe,EAAE,eAAe,CAAC,QAAQ,EAAE;QAC3C,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY;QAChC,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC;gBACf,WAAW,CAAC,IAAI,WAAW,CAAC,sBAAsB,EAAE,gCAAgC,EAAE;oBACpF,QAAQ,EAAE,CAAC;iBACZ,CAAC,CAAC,CAAC;YACN,CAAC;YACD,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,YAAY,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,EACnC,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,WAAW,GAOZ;IACC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE/C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,aAAa,EAAE,CAAC,CAAC;IACnE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxB,QAAQ,CAAC,GAAG,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAChE,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,aAAa,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;QACvC,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IAED,WAAW,CAAC,KAAK,CAAC,CAAC;IACnB,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAwB;IAClD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,KAAK,IAAI,MAAM,CAAC,UAAU,CAAC;QAC3B,IAAI,KAAK,GAAG,uBAAuB,EAAE,CAAC;YACpC,MAAM,IAAI,WAAW,CAAC,iCAAiC,EAAE,8CAA8C,EAAE;gBACvG,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,WAAW,CAAC,+BAA+B,EAAE,8CAA8C,EAAE;YACrG,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,WAAW,CAAC,+BAA+B,EAAE,mDAAmD,EAAE;YAC1G,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAwB,EACxB,QAAwB,EACxB,SAAiB;IAEjB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;IACtC,MAAM,aAAa,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9F,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,6BAA6B,EAAE,aAAa,CAAC,CAAC;IACjE,QAAQ,CAAC,SAAS,CAAC,8BAA8B,EAAE,eAAe,CAAC,CAAC;IACpE,QAAQ,CAAC,SAAS,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;IACnE,QAAQ,CAAC,SAAS,CAAC,sCAAsC,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,SAAS,CAAC,QAAwB,EAAE,MAAc,EAAE,IAAa;IACxE,IAAI,QAAQ,CAAC,WAAW;QAAE,OAAO;IACjC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACnE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,QAAgB;IAClD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,WAAW,CAAC,UAAU,KAAK,cAAc,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IACvE,OAAO,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,MAAM,CAAC,MAAuC;IACrD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,MAAuC;IAC1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACnB,IAAI,KAAK;gBAAE,MAAM,CAAC,KAAK,CAAC,CAAC;;gBACpB,OAAO,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AAClE,CAAC"}
@@ -0,0 +1,28 @@
1
+ export type StoredCredentials = {
2
+ token: string;
3
+ apiUrl: string;
4
+ };
5
+ export type CredentialProfile = StoredCredentials & {
6
+ name: string;
7
+ };
8
+ export type CredentialProfilesState = {
9
+ activeProfile: string | null;
10
+ profiles: CredentialProfile[];
11
+ };
12
+ export declare function defaultApiUrl(env?: NodeJS.ProcessEnv): string;
13
+ export declare function loadCredentials(env?: NodeJS.ProcessEnv): Promise<StoredCredentials | null>;
14
+ export declare function saveCredentials(credentials: StoredCredentials, env?: NodeJS.ProcessEnv, options?: {
15
+ profile?: string;
16
+ activate?: boolean;
17
+ }): Promise<string>;
18
+ export declare function clearCredentials(env?: NodeJS.ProcessEnv, options?: {
19
+ profile?: string;
20
+ all?: boolean;
21
+ }): Promise<{
22
+ removedProfile: string | null;
23
+ remainingProfiles: number;
24
+ }>;
25
+ export declare function listCredentialProfiles(env?: NodeJS.ProcessEnv): Promise<CredentialProfilesState>;
26
+ export declare function switchCredentialProfile(profile: string, env?: NodeJS.ProcessEnv): Promise<CredentialProfile>;
27
+ export declare function normalizeApiUrl(value: string): string;
28
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG;IAClD,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B,CAAC;AAOF,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE1E;AAED,wBAAsB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA0B7G;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,iBAAiB,EAC9B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACrD,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAsB,gBAAgB,CACpC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAChD,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC,CAmCvE;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,uBAAuB,CAAC,CA8BlC;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,iBAAiB,CAAC,CAoB5B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsBrD"}