@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.
- package/README.md +25 -0
- package/dist/browser-login.d.ts +8 -0
- package/dist/browser-login.d.ts.map +1 -0
- package/dist/browser-login.js +181 -0
- package/dist/browser-login.js.map +1 -0
- package/dist/credentials.d.ts +28 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +470 -0
- package/dist/credentials.js.map +1 -0
- package/dist/http-client.d.ts +12 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +218 -0
- package/dist/http-client.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3523 -0
- package/dist/index.js.map +1 -0
- package/dist/local-custom-http-column.d.ts +9 -0
- package/dist/local-custom-http-column.d.ts.map +1 -0
- package/dist/local-custom-http-column.js +571 -0
- package/dist/local-custom-http-column.js.map +1 -0
- package/dist/session.d.ts +57 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +194 -0
- package/dist/session.js.map +1 -0
- package/node_modules/@oxygen/recipe-sdk/dist/index.d.ts +136 -0
- package/node_modules/@oxygen/recipe-sdk/dist/index.d.ts.map +1 -0
- package/node_modules/@oxygen/recipe-sdk/dist/index.js +43 -0
- package/node_modules/@oxygen/recipe-sdk/dist/index.js.map +1 -0
- package/node_modules/@oxygen/recipe-sdk/package.json +15 -0
- package/node_modules/@oxygen/shared/dist/billing.d.ts +124 -0
- package/node_modules/@oxygen/shared/dist/billing.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/billing.js +296 -0
- package/node_modules/@oxygen/shared/dist/billing.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/column-types.d.ts +55 -0
- package/node_modules/@oxygen/shared/dist/column-types.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/column-types.js +161 -0
- package/node_modules/@oxygen/shared/dist/column-types.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/credit-guidance.d.ts +15 -0
- package/node_modules/@oxygen/shared/dist/credit-guidance.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/credit-guidance.js +60 -0
- package/node_modules/@oxygen/shared/dist/credit-guidance.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/file-import.d.ts +22 -0
- package/node_modules/@oxygen/shared/dist/file-import.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/file-import.js +232 -0
- package/node_modules/@oxygen/shared/dist/file-import.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/index.d.ts +45 -0
- package/node_modules/@oxygen/shared/dist/index.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/index.js +49 -0
- package/node_modules/@oxygen/shared/dist/index.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/log.d.ts +22 -0
- package/node_modules/@oxygen/shared/dist/log.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/log.js +58 -0
- package/node_modules/@oxygen/shared/dist/log.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/redaction.d.ts +4 -0
- package/node_modules/@oxygen/shared/dist/redaction.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/redaction.js +106 -0
- package/node_modules/@oxygen/shared/dist/redaction.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/telemetry.d.ts +9 -0
- package/node_modules/@oxygen/shared/dist/telemetry.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/telemetry.js +98 -0
- package/node_modules/@oxygen/shared/dist/telemetry.js.map +1 -0
- package/node_modules/@oxygen/shared/dist/version.d.ts +2 -0
- package/node_modules/@oxygen/shared/dist/version.d.ts.map +1 -0
- package/node_modules/@oxygen/shared/dist/version.js +2 -0
- package/node_modules/@oxygen/shared/dist/version.js.map +1 -0
- package/node_modules/@oxygen/shared/package.json +21 -0
- package/node_modules/@oxygen/workflows/dist/index.d.ts +680 -0
- package/node_modules/@oxygen/workflows/dist/index.d.ts.map +1 -0
- package/node_modules/@oxygen/workflows/dist/index.js +983 -0
- package/node_modules/@oxygen/workflows/dist/index.js.map +1 -0
- package/node_modules/@oxygen/workflows/package.json +15 -0
- package/package.json +44 -0
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, chmodSync } from "node:fs";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { promisify } from "node:util";
|
|
6
|
+
import { OxygenError } from "@oxygen/shared";
|
|
7
|
+
const execFileAsync = promisify(execFile);
|
|
8
|
+
const SERVICE_NAME = "oxygen-cli";
|
|
9
|
+
const ACCOUNT_NAME = "default";
|
|
10
|
+
const DEFAULT_API_URL = "https://oxygen-agent.com";
|
|
11
|
+
const DEFAULT_PROFILE_NAME = "default";
|
|
12
|
+
export function defaultApiUrl(env = process.env) {
|
|
13
|
+
return normalizeApiUrl(env.OXYGEN_API_URL ?? DEFAULT_API_URL);
|
|
14
|
+
}
|
|
15
|
+
export async function loadCredentials(env = process.env) {
|
|
16
|
+
const envToken = readEnvToken(env);
|
|
17
|
+
if (envToken) {
|
|
18
|
+
return {
|
|
19
|
+
token: envToken,
|
|
20
|
+
apiUrl: defaultApiUrl(env),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const document = await readSystemCredentialDocument(env);
|
|
24
|
+
if (!document)
|
|
25
|
+
return null;
|
|
26
|
+
const profiles = readProfiles(document);
|
|
27
|
+
const requestedProfile = readEnvProfile(env);
|
|
28
|
+
const activeProfile = requestedProfile ?? readProfileName(document.activeProfile) ?? DEFAULT_PROFILE_NAME;
|
|
29
|
+
const profileCredentials = profiles[activeProfile];
|
|
30
|
+
if (profileCredentials)
|
|
31
|
+
return profileCredentials;
|
|
32
|
+
if (requestedProfile) {
|
|
33
|
+
throw new OxygenError("profile_not_found", `Oxygen CLI profile "${requestedProfile}" is not stored.`, {
|
|
34
|
+
details: { profile: requestedProfile },
|
|
35
|
+
exitCode: 1,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return parseStoredCredentialsObject(document);
|
|
39
|
+
}
|
|
40
|
+
export async function saveCredentials(credentials, env = process.env, options = {}) {
|
|
41
|
+
const normalized = {
|
|
42
|
+
token: credentials.token,
|
|
43
|
+
apiUrl: normalizeApiUrl(credentials.apiUrl),
|
|
44
|
+
};
|
|
45
|
+
const existing = await readSystemCredentialDocument(env);
|
|
46
|
+
const profile = normalizeProfileName(options.profile ?? readEnvProfile(env) ?? existing?.activeProfile ?? DEFAULT_PROFILE_NAME);
|
|
47
|
+
const profiles = existing ? readProfiles(existing) : {};
|
|
48
|
+
profiles[profile] = normalized;
|
|
49
|
+
const activeProfile = options.activate === false
|
|
50
|
+
? readProfileName(existing?.activeProfile) ?? profile
|
|
51
|
+
: profile;
|
|
52
|
+
await writeCredentialDocument({ profiles, activeProfile }, env);
|
|
53
|
+
return profile;
|
|
54
|
+
}
|
|
55
|
+
export async function clearCredentials(env = process.env, options = {}) {
|
|
56
|
+
if (options.all) {
|
|
57
|
+
await deleteSystemCredentialPayload(env);
|
|
58
|
+
return { removedProfile: null, remainingProfiles: 0 };
|
|
59
|
+
}
|
|
60
|
+
const existing = await readSystemCredentialDocument(env);
|
|
61
|
+
if (!existing)
|
|
62
|
+
return { removedProfile: null, remainingProfiles: 0 };
|
|
63
|
+
const profiles = readProfiles(existing);
|
|
64
|
+
const profile = normalizeProfileName(options.profile ?? readEnvProfile(env) ?? existing.activeProfile ?? DEFAULT_PROFILE_NAME);
|
|
65
|
+
if (!profiles[profile]) {
|
|
66
|
+
throw new OxygenError("profile_not_found", `Oxygen CLI profile "${profile}" is not stored.`, {
|
|
67
|
+
details: { profile },
|
|
68
|
+
exitCode: 1,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
delete profiles[profile];
|
|
72
|
+
const names = Object.keys(profiles).sort((a, b) => a.localeCompare(b));
|
|
73
|
+
if (names.length === 0) {
|
|
74
|
+
await deleteSystemCredentialPayload(env);
|
|
75
|
+
return { removedProfile: profile, remainingProfiles: 0 };
|
|
76
|
+
}
|
|
77
|
+
const previousActive = readProfileName(existing.activeProfile) ?? DEFAULT_PROFILE_NAME;
|
|
78
|
+
const activeProfile = previousActive === profile ? names[0] : previousActive;
|
|
79
|
+
if (!activeProfile) {
|
|
80
|
+
await deleteSystemCredentialPayload(env);
|
|
81
|
+
return { removedProfile: profile, remainingProfiles: 0 };
|
|
82
|
+
}
|
|
83
|
+
await writeCredentialDocument({ profiles, activeProfile }, env);
|
|
84
|
+
return { removedProfile: profile, remainingProfiles: names.length };
|
|
85
|
+
}
|
|
86
|
+
export async function listCredentialProfiles(env = process.env) {
|
|
87
|
+
const envToken = readEnvToken(env);
|
|
88
|
+
if (envToken) {
|
|
89
|
+
return {
|
|
90
|
+
activeProfile: readEnvProfile(env) ?? "env",
|
|
91
|
+
profiles: [{
|
|
92
|
+
name: readEnvProfile(env) ?? "env",
|
|
93
|
+
token: envToken,
|
|
94
|
+
apiUrl: defaultApiUrl(env),
|
|
95
|
+
}],
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
const document = await readSystemCredentialDocument(env);
|
|
99
|
+
if (!document)
|
|
100
|
+
return { activeProfile: null, profiles: [] };
|
|
101
|
+
const profiles = readProfiles(document);
|
|
102
|
+
const names = Object.keys(profiles).sort((a, b) => a.localeCompare(b));
|
|
103
|
+
return {
|
|
104
|
+
activeProfile: readProfileName(document.activeProfile) ?? names[0] ?? null,
|
|
105
|
+
profiles: names.map((name) => {
|
|
106
|
+
const credentials = profiles[name];
|
|
107
|
+
if (!credentials) {
|
|
108
|
+
throw new OxygenError("profile_not_found", `Oxygen CLI profile "${name}" is not stored.`, {
|
|
109
|
+
details: { profile: name },
|
|
110
|
+
exitCode: 1,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
return { name, ...credentials };
|
|
114
|
+
}),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
export async function switchCredentialProfile(profile, env = process.env) {
|
|
118
|
+
const document = await readSystemCredentialDocument(env);
|
|
119
|
+
if (!document) {
|
|
120
|
+
throw new OxygenError("not_logged_in", "Run `oxygen login` before switching CLI profiles.", {
|
|
121
|
+
exitCode: 1,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
const profileName = normalizeProfileName(profile);
|
|
125
|
+
const profiles = readProfiles(document);
|
|
126
|
+
const credentials = profiles[profileName];
|
|
127
|
+
if (!credentials) {
|
|
128
|
+
throw new OxygenError("profile_not_found", `Oxygen CLI profile "${profileName}" is not stored.`, {
|
|
129
|
+
details: { profile: profileName },
|
|
130
|
+
exitCode: 1,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
await writeCredentialDocument({ profiles, activeProfile: profileName }, env);
|
|
134
|
+
return { name: profileName, ...credentials };
|
|
135
|
+
}
|
|
136
|
+
export function normalizeApiUrl(value) {
|
|
137
|
+
const trimmed = value.trim();
|
|
138
|
+
if (!trimmed)
|
|
139
|
+
return DEFAULT_API_URL;
|
|
140
|
+
let url;
|
|
141
|
+
try {
|
|
142
|
+
url = new URL(trimmed);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
throw new OxygenError("invalid_api_url", "API URL must be a valid absolute URL.", {
|
|
146
|
+
details: { api_url: value },
|
|
147
|
+
exitCode: 1,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
if (url.protocol !== "https:" && url.hostname !== "localhost" && url.hostname !== "127.0.0.1") {
|
|
151
|
+
throw new OxygenError("invalid_api_url", "API URL must use HTTPS outside local development.", {
|
|
152
|
+
details: { api_url: value },
|
|
153
|
+
exitCode: 1,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
return url.toString().replace(/\/$/, "");
|
|
157
|
+
}
|
|
158
|
+
function normalizeProfileName(value) {
|
|
159
|
+
const profile = value.trim();
|
|
160
|
+
if (!profile) {
|
|
161
|
+
throw new OxygenError("invalid_profile", "Profile name cannot be empty.", {
|
|
162
|
+
exitCode: 1,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
if (!/^[A-Za-z0-9._-]+$/.test(profile)) {
|
|
166
|
+
throw new OxygenError("invalid_profile", "Profile names may only contain letters, numbers, dots, underscores, and dashes.", {
|
|
167
|
+
details: { profile },
|
|
168
|
+
exitCode: 1,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
return profile;
|
|
172
|
+
}
|
|
173
|
+
function readEnvProfile(env) {
|
|
174
|
+
const profile = env.OXYGEN_PROFILE?.trim();
|
|
175
|
+
return profile ? normalizeProfileName(profile) : null;
|
|
176
|
+
}
|
|
177
|
+
function readProfileName(value) {
|
|
178
|
+
return typeof value === "string" && value.trim() ? normalizeProfileName(value) : null;
|
|
179
|
+
}
|
|
180
|
+
async function readSystemCredentialDocument(env) {
|
|
181
|
+
const payload = await readSystemCredentialPayload(env);
|
|
182
|
+
if (!payload)
|
|
183
|
+
return null;
|
|
184
|
+
return parseCredentialDocument(payload);
|
|
185
|
+
}
|
|
186
|
+
async function readSystemCredentialPayload(env) {
|
|
187
|
+
const store = credentialStore(env);
|
|
188
|
+
if (store === "keychain")
|
|
189
|
+
return readMacOSKeychainPayload();
|
|
190
|
+
if (store === "credential-manager")
|
|
191
|
+
return readWindowsCredentialManagerPayload();
|
|
192
|
+
return readFileCredentialPayload(env);
|
|
193
|
+
}
|
|
194
|
+
async function writeSystemCredentialPayload(payload, env) {
|
|
195
|
+
const store = credentialStore(env);
|
|
196
|
+
if (store === "keychain") {
|
|
197
|
+
await writeMacOSKeychainPayload(payload);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (store === "credential-manager") {
|
|
201
|
+
await writeWindowsCredentialManagerPayload(payload);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
writeFileCredentialPayload(payload, env);
|
|
205
|
+
}
|
|
206
|
+
async function deleteSystemCredentialPayload(env) {
|
|
207
|
+
const store = credentialStore(env);
|
|
208
|
+
if (store === "keychain") {
|
|
209
|
+
await deleteMacOSKeychain();
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (store === "credential-manager") {
|
|
213
|
+
await deleteWindowsCredentialManager();
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
deleteFileCredentials(env);
|
|
217
|
+
}
|
|
218
|
+
async function writeCredentialDocument(input, env) {
|
|
219
|
+
const activeCredentials = input.profiles[input.activeProfile];
|
|
220
|
+
if (!activeCredentials) {
|
|
221
|
+
throw new OxygenError("profile_not_found", `Oxygen CLI profile "${input.activeProfile}" is not stored.`, {
|
|
222
|
+
details: { profile: input.activeProfile },
|
|
223
|
+
exitCode: 1,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
const document = {
|
|
227
|
+
token: activeCredentials.token,
|
|
228
|
+
apiUrl: activeCredentials.apiUrl,
|
|
229
|
+
activeProfile: input.activeProfile,
|
|
230
|
+
profiles: input.profiles,
|
|
231
|
+
};
|
|
232
|
+
await writeSystemCredentialPayload(serializeCredentialDocument(document), env);
|
|
233
|
+
}
|
|
234
|
+
function credentialStore(env) {
|
|
235
|
+
const forced = env.OXYGEN_CREDENTIAL_STORE?.trim().toLowerCase();
|
|
236
|
+
if (forced === "file")
|
|
237
|
+
return "file";
|
|
238
|
+
if (forced === "keychain")
|
|
239
|
+
return "keychain";
|
|
240
|
+
if (forced === "credential-manager")
|
|
241
|
+
return "credential-manager";
|
|
242
|
+
if (process.platform === "darwin")
|
|
243
|
+
return "keychain";
|
|
244
|
+
if (process.platform === "win32")
|
|
245
|
+
return "credential-manager";
|
|
246
|
+
return "file";
|
|
247
|
+
}
|
|
248
|
+
function credentialsPath(env) {
|
|
249
|
+
const configDir = env.OXYGEN_CONFIG_DIR?.trim()
|
|
250
|
+
|| (process.platform === "win32"
|
|
251
|
+
? join(env.APPDATA || join(homedir(), "AppData", "Roaming"), "oxygen")
|
|
252
|
+
: join(homedir(), ".config", "oxygen"));
|
|
253
|
+
return join(configDir, "credentials.json");
|
|
254
|
+
}
|
|
255
|
+
function readFileCredentialPayload(env) {
|
|
256
|
+
const path = credentialsPath(env);
|
|
257
|
+
if (!existsSync(path))
|
|
258
|
+
return null;
|
|
259
|
+
return readFileSync(path, "utf8");
|
|
260
|
+
}
|
|
261
|
+
function writeFileCredentialPayload(payload, env) {
|
|
262
|
+
const path = credentialsPath(env);
|
|
263
|
+
mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
|
|
264
|
+
const tempPath = `${path}.${process.pid}.tmp`;
|
|
265
|
+
writeFileSync(tempPath, payload, { mode: 0o600 });
|
|
266
|
+
chmodSync(tempPath, 0o600);
|
|
267
|
+
renameSync(tempPath, path);
|
|
268
|
+
chmodSync(path, 0o600);
|
|
269
|
+
}
|
|
270
|
+
function deleteFileCredentials(env) {
|
|
271
|
+
const path = credentialsPath(env);
|
|
272
|
+
rmSync(path, { force: true });
|
|
273
|
+
}
|
|
274
|
+
async function readMacOSKeychainPayload() {
|
|
275
|
+
try {
|
|
276
|
+
const { stdout } = await execFileAsync("security", [
|
|
277
|
+
"find-generic-password",
|
|
278
|
+
"-a",
|
|
279
|
+
ACCOUNT_NAME,
|
|
280
|
+
"-s",
|
|
281
|
+
SERVICE_NAME,
|
|
282
|
+
"-w",
|
|
283
|
+
]);
|
|
284
|
+
return stdout;
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
async function writeMacOSKeychainPayload(payload) {
|
|
291
|
+
await execFileAsync("security", [
|
|
292
|
+
"add-generic-password",
|
|
293
|
+
"-a",
|
|
294
|
+
ACCOUNT_NAME,
|
|
295
|
+
"-s",
|
|
296
|
+
SERVICE_NAME,
|
|
297
|
+
"-w",
|
|
298
|
+
payload,
|
|
299
|
+
"-U",
|
|
300
|
+
]);
|
|
301
|
+
}
|
|
302
|
+
async function deleteMacOSKeychain() {
|
|
303
|
+
await execFileAsync("security", [
|
|
304
|
+
"delete-generic-password",
|
|
305
|
+
"-a",
|
|
306
|
+
ACCOUNT_NAME,
|
|
307
|
+
"-s",
|
|
308
|
+
SERVICE_NAME,
|
|
309
|
+
]).catch(() => undefined);
|
|
310
|
+
}
|
|
311
|
+
async function readWindowsCredentialManagerPayload() {
|
|
312
|
+
try {
|
|
313
|
+
const { stdout } = await runPowerShell(`${windowsCredentialManagerScript()}
|
|
314
|
+
$ptr = [IntPtr]::Zero
|
|
315
|
+
if (-not [OxygenCredMan]::CredRead("${SERVICE_NAME}", 1, 0, [ref]$ptr)) { exit 2 }
|
|
316
|
+
$cred = [Runtime.InteropServices.Marshal]::PtrToStructure($ptr, [type][OxygenCredMan+CREDENTIAL])
|
|
317
|
+
$secret = [Runtime.InteropServices.Marshal]::PtrToStringUni($cred.CredentialBlob, [int]($cred.CredentialBlobSize / 2))
|
|
318
|
+
[OxygenCredMan]::CredFree($ptr)
|
|
319
|
+
[Console]::Out.Write($secret)
|
|
320
|
+
`);
|
|
321
|
+
return stdout;
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
return null;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
async function writeWindowsCredentialManagerPayload(value) {
|
|
328
|
+
const payload = Buffer.from(value, "utf16le").toString("base64");
|
|
329
|
+
await runPowerShell(`${windowsCredentialManagerScript()}
|
|
330
|
+
$secret = [Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($args[0]))
|
|
331
|
+
$bytes = [Text.Encoding]::Unicode.GetBytes($secret)
|
|
332
|
+
$blob = [Runtime.InteropServices.Marshal]::StringToCoTaskMemUni($secret)
|
|
333
|
+
try {
|
|
334
|
+
$cred = New-Object OxygenCredMan+CREDENTIAL
|
|
335
|
+
$cred.Type = 1
|
|
336
|
+
$cred.TargetName = "${SERVICE_NAME}"
|
|
337
|
+
$cred.UserName = "${ACCOUNT_NAME}"
|
|
338
|
+
$cred.CredentialBlob = $blob
|
|
339
|
+
$cred.CredentialBlobSize = $bytes.Length
|
|
340
|
+
$cred.Persist = 2
|
|
341
|
+
if (-not [OxygenCredMan]::CredWrite([ref]$cred, 0)) { exit 1 }
|
|
342
|
+
} finally {
|
|
343
|
+
[Runtime.InteropServices.Marshal]::FreeCoTaskMem($blob)
|
|
344
|
+
}
|
|
345
|
+
`, [payload]);
|
|
346
|
+
}
|
|
347
|
+
async function deleteWindowsCredentialManager() {
|
|
348
|
+
await runPowerShell(`${windowsCredentialManagerScript()}
|
|
349
|
+
[void][OxygenCredMan]::CredDelete("${SERVICE_NAME}", 1, 0)
|
|
350
|
+
`).catch(() => undefined);
|
|
351
|
+
}
|
|
352
|
+
async function runPowerShell(script, args = []) {
|
|
353
|
+
return execFileAsync("powershell.exe", [
|
|
354
|
+
"-NoProfile",
|
|
355
|
+
"-NonInteractive",
|
|
356
|
+
"-ExecutionPolicy",
|
|
357
|
+
"Bypass",
|
|
358
|
+
"-Command",
|
|
359
|
+
script,
|
|
360
|
+
...args,
|
|
361
|
+
]);
|
|
362
|
+
}
|
|
363
|
+
function windowsCredentialManagerScript() {
|
|
364
|
+
return `
|
|
365
|
+
Add-Type @"
|
|
366
|
+
using System;
|
|
367
|
+
using System.Runtime.InteropServices;
|
|
368
|
+
public static class OxygenCredMan {
|
|
369
|
+
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
|
370
|
+
public struct CREDENTIAL {
|
|
371
|
+
public UInt32 Flags;
|
|
372
|
+
public UInt32 Type;
|
|
373
|
+
public string TargetName;
|
|
374
|
+
public string Comment;
|
|
375
|
+
public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
|
|
376
|
+
public UInt32 CredentialBlobSize;
|
|
377
|
+
public IntPtr CredentialBlob;
|
|
378
|
+
public UInt32 Persist;
|
|
379
|
+
public UInt32 AttributeCount;
|
|
380
|
+
public IntPtr Attributes;
|
|
381
|
+
public string TargetAlias;
|
|
382
|
+
public string UserName;
|
|
383
|
+
}
|
|
384
|
+
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
385
|
+
public static extern bool CredWrite([In] ref CREDENTIAL userCredential, UInt32 flags);
|
|
386
|
+
[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
387
|
+
public static extern bool CredRead(string target, UInt32 type, UInt32 reservedFlag, out IntPtr credentialPtr);
|
|
388
|
+
[DllImport("advapi32.dll", SetLastError = true)]
|
|
389
|
+
public static extern bool CredDelete(string target, UInt32 type, UInt32 flags);
|
|
390
|
+
[DllImport("advapi32.dll", SetLastError = true)]
|
|
391
|
+
public static extern void CredFree([In] IntPtr cred);
|
|
392
|
+
}
|
|
393
|
+
"@
|
|
394
|
+
`;
|
|
395
|
+
}
|
|
396
|
+
function serializeCredentialDocument(document) {
|
|
397
|
+
return JSON.stringify(document);
|
|
398
|
+
}
|
|
399
|
+
function parseCredentialDocument(value) {
|
|
400
|
+
const parsed = parseCredentialJson(value) ?? parseCredentialJson(decodeHexCredentialPayload(value));
|
|
401
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
402
|
+
return null;
|
|
403
|
+
const credentials = parseStoredCredentialsObject(parsed);
|
|
404
|
+
if (!credentials)
|
|
405
|
+
return null;
|
|
406
|
+
const document = { ...credentials };
|
|
407
|
+
const activeProfile = parsed.activeProfile;
|
|
408
|
+
if (typeof activeProfile === "string" && activeProfile.trim()) {
|
|
409
|
+
document.activeProfile = normalizeProfileName(activeProfile);
|
|
410
|
+
}
|
|
411
|
+
const rawProfiles = parsed.profiles;
|
|
412
|
+
if (rawProfiles && typeof rawProfiles === "object" && !Array.isArray(rawProfiles)) {
|
|
413
|
+
document.profiles = {};
|
|
414
|
+
for (const [name, value] of Object.entries(rawProfiles)) {
|
|
415
|
+
const profileCredentials = parseStoredCredentialsObject(value);
|
|
416
|
+
if (profileCredentials) {
|
|
417
|
+
document.profiles[normalizeProfileName(name)] = profileCredentials;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
return document;
|
|
422
|
+
}
|
|
423
|
+
function parseCredentialJson(value) {
|
|
424
|
+
if (!value)
|
|
425
|
+
return null;
|
|
426
|
+
try {
|
|
427
|
+
return JSON.parse(value.trim());
|
|
428
|
+
}
|
|
429
|
+
catch {
|
|
430
|
+
return null;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
function decodeHexCredentialPayload(value) {
|
|
434
|
+
const trimmed = value.trim();
|
|
435
|
+
if (!trimmed || trimmed.length % 2 !== 0 || !/^[0-9a-fA-F]+$/.test(trimmed))
|
|
436
|
+
return null;
|
|
437
|
+
return Buffer.from(trimmed, "hex").toString("utf8");
|
|
438
|
+
}
|
|
439
|
+
function parseStoredCredentialsObject(value) {
|
|
440
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
441
|
+
return null;
|
|
442
|
+
const token = value.token;
|
|
443
|
+
const apiUrl = value.apiUrl;
|
|
444
|
+
if (typeof token !== "string" || !token.trim())
|
|
445
|
+
return null;
|
|
446
|
+
if (typeof apiUrl !== "string" || !apiUrl.trim())
|
|
447
|
+
return null;
|
|
448
|
+
return { token: token.trim(), apiUrl: normalizeApiUrl(apiUrl) };
|
|
449
|
+
}
|
|
450
|
+
function readProfiles(document) {
|
|
451
|
+
const profiles = {};
|
|
452
|
+
const rawProfiles = document.profiles ?? {};
|
|
453
|
+
for (const [name, credentials] of Object.entries(rawProfiles)) {
|
|
454
|
+
profiles[normalizeProfileName(name)] = {
|
|
455
|
+
token: credentials.token,
|
|
456
|
+
apiUrl: normalizeApiUrl(credentials.apiUrl),
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
if (Object.keys(profiles).length === 0) {
|
|
460
|
+
const defaultCredentials = parseStoredCredentialsObject(document);
|
|
461
|
+
if (defaultCredentials)
|
|
462
|
+
profiles[DEFAULT_PROFILE_NAME] = defaultCredentials;
|
|
463
|
+
}
|
|
464
|
+
return profiles;
|
|
465
|
+
}
|
|
466
|
+
function readEnvToken(env) {
|
|
467
|
+
const token = env.OXYGEN_API_KEY ?? env.OXYGEN_TOKEN;
|
|
468
|
+
return token?.trim() || null;
|
|
469
|
+
}
|
|
470
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type StoredCredentials } from "./credentials.js";
|
|
2
|
+
type RequestOptions = {
|
|
3
|
+
method?: "GET" | "POST";
|
|
4
|
+
body?: Record<string, unknown>;
|
|
5
|
+
credentials?: StoredCredentials;
|
|
6
|
+
requireAuth?: boolean;
|
|
7
|
+
timeoutMs?: number;
|
|
8
|
+
fetch?: typeof fetch;
|
|
9
|
+
};
|
|
10
|
+
export declare function requestOxygen<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI1F,KAAK,cAAc,GAAG;IACpB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,CAAC;AAEF,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,CA4EZ"}
|